diff --git a/classes/init.lua b/classes/init.lua index 7866b8b..e6144f5 100644 --- a/classes/init.lua +++ b/classes/init.lua @@ -1,3 +1,12 @@ +--dofile(minetest.get_modpath("classes").."/ac.lua") +--dofile(minetest.get_modpath("classes").."/admin.lua") +--dofile(minetest.get_modpath("classes").."/armorinit.lua") +dofile(minetest.get_modpath("classes").."/change-privs.lua") +--dofile(minetest.get_modpath("classes").."/armor.lua") +dofile(minetest.get_modpath("classes").."/wizard.lua") +dofile(minetest.get_modpath("classes").."/fighter.lua") +dofile(minetest.get_modpath("classes").."/experience.lua") + minetest.register_tool("classes:staff_wood", { description = "Wooden Staff", inventory_image = "classes_staff_wood_wield.png", @@ -14,7 +23,7 @@ minetest.register_tool("classes:staff_wood", { }) minetest.register_craft({ - output = 'classes_weapons:staff_wood', + output = 'classes:staff_wood', recipe = { {'default:wood'}, {'default:stick'}, @@ -22,1419 +31,24 @@ minetest.register_craft({ } }) -minetest.register_entity("classes:fireball", { - textures = {"fireball.png"}, - velocity = 15, - light_source = 200, - on_step = function (self, pos, node, dtime) - local pos = self.object:getpos() - local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) - for k, obj in pairs(objs) do - obj:set_hp(obj:get_hp()-15) - if obj:is_player() then - return - else - obj:set_hp(obj:get_hp()-70) - if obj:get_entity_name() ~= "classes:fireball" then - if obj:get_hp()<=0 then - obj:remove() - end - self.object:remove() - end - end - end - - for dx=-1,1 do - for dy=-1,1 do - for dz=-1,1 do - local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz} - local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} - local n = minetest.env:get_node(p).name --- if n ~= "classes:fireball" and n ~="hackersheep:hackersheep" and n ~="prohackersheep:prohackersheep" then --- if minetest.registered_nodes[n].groups.noobhackersheep then --[[or math.random(1, 100) <= 0]] --- minetest.env:set_node(t, {name=""..n}) --- else --- minetest.env:set_node(t, {name=""..n}) --- end --- else -if minetest.registered_nodes[n].groups.flammable or minetest.registered_nodes[n].groups.choppy or minetest.registered_nodes[n].groups.oddly_breakable_by_hand or minetest.registered_nodes[n].groups.cracky or minetest.registered_nodes[n].groups.crumbly or n =="default:desert_stone" then - self.hit_node(self, pos, node) - self.object:remove() - return - end - end - end - end - end, - - - hit_node = function(self, pos, node) - local pos = self.object:getpos() --- for dx=-4,4 do --- for dy=-4,4 do --- for dz=-4,4 do --- local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} --- local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} --- local n = minetest.env:get_node(pos).name --- if math.random(1, 50) <= 0 then --- minetest.env:remove_node(p) --- end --- if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) >=500 then --- minetest.env:set_node(t, {name="air"}) --- end - local objects = minetest.env:get_objects_inside_radius(pos, 10) - for _,obj in ipairs(objects) do - if obj:is_player() or (obj:get_luaentity() and obj:get_luaentity().name ~= "__builtin:item") then - local obj_p = obj:getpos() - local vec = {x=obj_p.x-pos.x, y=obj_p.y-pos.y, z=obj_p.z-pos.z} - local dist = (vec.x^2+vec.y^2+vec.z^2)^0.5 - local damage = ((80*0.5^dist)*2)+3 - obj:punch(obj, 1.0, { - full_punch_interval=1.0, - damage_groups={fleshy=damage}, - }, vec) - end - end - - minetest.add_particlespawner( - 10, --amount - 0.1, --time - {x=pos.x-3, y=pos.y-3, z=pos.z-3}, --minpos - {x=pos.x+3, y=pos.y+3, z=pos.z+3}, --maxpos - {x=-0, y=-0, z=-0}, --minvel - {x=0, y=0, z=0}, --maxvel - {x=-0.5,y=5,z=-0.5}, --minacc - {x=0.5,y=5,z=0.5}, --maxacc - 0.1, --minexptime - 1, --maxexptime - 50, --minsize - 90, --maxsize - false, --collisiondetection - "flame_pillar.png" --texture - ) - --- end --- end --- end - end +minetest.register_craftitem("classes:wizardstuff", { + inventory_image = "stuff.png" }) -minetest.register_craftitem("classes:firestaff", { - description = "Staff of Fire", - inventory_image = "firestaff.png", - wield_scale = {x=2.5,y=5.5,z=1.5}, - stackable = false, - on_use = function (itemstack, placer, pointed_thing) - local dir = placer:get_look_dir(); - local playerpos = placer:getpos(); - local obj = minetest.env:add_entity({x=playerpos.x+0+dir.x,y=playerpos.y+2+dir.y,z=playerpos.z+0+dir.z}, "classes:fireball") - local vec = {x=dir.x*6,y=dir.y*6,z=dir.z*6} - obj:setvelocity(vec) - return itemstack - end, - light_source = 15, + +minetest.register_craftitem("classes:fighterstuff", { + inventory_image = "stuff.png" }) -local addvectors = function (v1, v2) - return {x=v1.x+v2.x, y=v1.y+v2.y, z=v1.z+v2.z} -end ---...............................................................................................................................-- ---...............................................................................................................................-- ---...............................................................................................................................-- ---...............................................................................................................................-- ---...............................................................................................................................-- ---...............................................................................................................................-- ---...............................................................................................................................-- -level1 = 1 -level1w_drop = "classes:staff_wood" -level1f_drop = "classes:staff_wood" -level1a_drop = "classes:staff_wood" -level1t_drop = "classes:staff_wood" -level2 = 10 -level2w_drop = "classes:apprentice_staff" -level2f_drop = "" -level2t_drop = "" -level2a_drop = "" +minetest.register_craftitem("classes:daytheifstuff", { + inventory_image = "stuff.png" +}) -level3 = 50 -level3w_drop = "" -level3f_drop = "" -level3t_drop = "" -level3a_drop = "" - -level4 = 100 -level4w_drop = "" -level4f_drop = "" -level4t_drop = "" -level4a_drop = "" - -level5 = 500 -level5w_drop = "classes:lightning" -level5f_drop = "" -level5t_drop = "" -level5a_drop = "" - -level6 = 1000 -level6w_drop = "" -level6f_drop = "" -level6t_drop = "" -level6a_drop = "" - -level7 = 1500 -level7w_drop = "" -level7f_drop = "" -level7t_drop = "" -level7a_drop = "" - -level8 = 2000 -level8w_drop = "" -level8f_drop = "" -level8t_drop = "" -level8a_drop = "" - -level9 = 2500 -level9w_drop = "" -level9f_drop = "" -level9t_drop = "" -level9a_drop = "" - -level10 = 5000 -level10w_drop = "classes:firestaff" -level10f_drop = "" -level10t_drop = "" -level10a_drop = "" - -level11 = 10000 -level11w_drop = "classes:apprentice" -level11f_drop = "" -level11a_drop = "" -level11t_drop = "" - -level12 = 15000 -level12w_drop = "" -level12f_drop = "" -level12t_drop = "" -level12a_drop = "" - -level13 = 20000 -level13w_drop = "" -level13f_drop = "" -level13t_drop = "" -level13a_drop = "" - -level14 = 30000 -level14w_drop = "" -level14f_drop = "" -level14t_drop = "" -level14a_drop = "" - -level15 = 40000 -level15w_drop = "" -level15f_drop = "" -level15t_drop = "" -level15a_drop = "" - -level16 = 50000 -level16w_drop = "" -level16f_drop = "" -level16t_drop = "" -level16a_drop = "" - -level17 = 100000 -level17w_drop = "" -level17f_drop = "" -level17t_drop = "" -level17a_drop = "" - -level18 = 250000 -level18w_drop = "" -level18f_drop = "" -level18t_drop = "" -level18a_drop = "" - -level19 = 500000 -level19w_drop = "" -level19f_drop = "" -level19t_drop = "" -level19a_drop = "" - -level20 = 1000000 -level20w_drop = "" -level20f_drop = "" -level20t_drop = "" -level20a_drop = "" - - ---add an experience orb if player digs node from xp group -minetest.register_on_dignode(function(pos, oldnode, digger) - namer = oldnode.name - see_if_mineral = minetest.get_item_group(namer, "xp") - if see_if_mineral > 0 then - minetest.env:add_entity(pos, "classes:orb") - end -end) ---give a new player some xp -minetest.register_on_newplayer(function(player) - file = io.open(minetest.get_worldpath().."/"..player:get_player_name().."_experience", "w") - file:write("0") - file:close() -end) ---set player's xp level to 0 if they die ---minetest.register_on_dieplayer(function(player) --- file = io.open(minetest.get_worldpath().."/"..player:get_player_name().."_experience", "w") --- file:write("0") --- file:close() ---end) - ---Allow people to collect orbs -minetest.register_globalstep(function(dtime,player_name) - for _,player in ipairs(minetest.get_connected_players()) do - local pos = player:getpos() - pos.y = pos.y+0.5 - for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 1)) do - if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "classes:orb" then - --RIGHT HERE ADD IN THE CODE TO UPGRADE PLAYERS - object:setvelocity({x=0,y=0,z=0}) - object:get_luaentity().name = "STOP" - minetest.sound_play("orb", { - to_player = player:get_player_name(), - }) - xp = io.open(minetest.get_worldpath().."/"..player:get_player_name().."_experience", "r") - experience = nil - - if xp == nil then - xp = io.open (minetest.get_worldpath().."/"..player:get_player_name().."_experience", "w") - xp:write("0") - xp:close() - - xp = io.open (minetest.get_worldpath().."/"..player:get_player_name().."_experience", "r") - if xp ~= nil then - experience = xp:read ("*l") - xp:close() - end - end - - if experience ~= nil then - new_xp = experience + 1 - xp_write = io.open(minetest.get_worldpath().."/"..player:get_player_name().."_experience", "w") - xp_write:write(new_xp) - xp_write:close() - if new_xp == level1 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level1w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level1f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level1t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level1a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - - if new_xp == level2 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level2w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level2f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level2t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level2a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - - if new_xp == level3 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level3w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level3f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level3t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level3a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - - if new_xp == level4 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level4w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level4f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level4t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level4a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - - if new_xp == level5 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level5w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level5f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level5t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level5a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - - if new_xp == level6 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level6w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level6f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level6t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level6a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - - if new_xp == level7 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level7w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level7f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level7t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level7a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - - if new_xp == level8 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level8w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level8f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level8t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level8a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - - if new_xp == level9 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level9w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level9f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level9t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level9a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - - if new_xp == level10 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level10w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level10f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level10t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level10a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - if new_xp == level11 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level11w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level11f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level11t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level11a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - if new_xp == level12 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level12w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level12f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level12t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level12a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - if new_xp == level13 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level13w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level13f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level13t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level13a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - if new_xp == level14 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level14w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level14f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level14t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level14a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - if new_xp == level9 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level14w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level14f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level14t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level14a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - if new_xp == level15 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level15w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level15f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level15t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level15a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - if new_xp == level16 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level17w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level17f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level17t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level17a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - if new_xp == level18 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level18w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level18f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level18t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level18a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - if new_xp == level19 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level19w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level19f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level19t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level19a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - if new_xp == level20 then - if minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) then - minetest.env:add_item(pos, level20w_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - minetest.env:add_item(pos, level20f_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - if not minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) then - if minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) then - minetest.env:add_item(pos, level20t_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - end - else if minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) then - minetest.env:add_item(pos, level20a_drop) - minetest.sound_play("level_up", { - to_player = player:get_player_name(), - }) - if not minetest.check_player_privs(player:get_player_name(),{GAMEarcher=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEthief=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEwizard=true}) - or minetest.check_player_privs(player:get_player_name(),{GAMEfighter=true}) - then - minetest.get_modpath("classes") - local path = minetest.get_modpath("classes") - dofile(path .. "/init.lua") - minetest.show_formspec(name, "race_selector", race_chooser) - end - end - end - end - end - object:remove() - end - end - for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 3)) do - if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "classes:orb" then - if object:get_luaentity().collect then - local pos1 = pos - pos1.y = pos1.y+0.2 - local pos2 = object:getpos() - local vec = {x=pos1.x-pos2.x, y=pos1.y-pos2.y, z=pos1.z-pos2.z} - vec.x = vec.x*3 - vec.y = vec.y*3 - vec.z = vec.z*3 - object:setvelocity(vec) - end - end - end - end -end) - -minetest.register_entity("classes:orb", { - physical = true, - timer = 0, - textures = {"orb.png"}, - visual_size = {x=0.3, y=0.3}, - collisionbox = {-0.17,-0.17,-0.17,0.17,0.17,0.17}, - on_activate = function(self, staticdata) - self.object:set_armor_groups({immortal=1}) - self.object:setvelocity({x=0, y=1, z=0}) - self.object:setacceleration({x=0, y=-10, z=0}) - end, - collect = true, - on_step = function(self, dtime) - self.timer = self.timer + dtime - if (self.timer > 300) then - self.object:remove() - end - local p = self.object:getpos() - local nn = minetest.env:get_node(p).name - noder = minetest.env:get_node(p).name - p.y = p.y - 0.3 - local nn = minetest.env:get_node(p).name - if not minetest.registered_nodes[nn] or minetest.registered_nodes[nn].walkable then - if self.physical_state then - self.object:setvelocity({x=0, y=0, z=0}) - self.object:setacceleration({x=0, y=0, z=0}) - self.physical_state = false - self.object:set_properties({ - physical = false - }) - end - else - if not self.physical_state then - self.object:setvelocity({x=0,y=0,z=0}) - self.object:setacceleration({x=0, y=-10, z=0}) - self.physical_state = true - self.object:set_properties({ - physical = true - }) - end - end - end, +minetest.register_craftitem("classes:nighttheifstuff", { + inventory_image = "stuff.png" }) - - - - - - - - - - - - - - - - - - - - - - - - -minetest.register_entity("classes:magicmissile", { - textures = {"magicmissile.png"}, - velocity = 15, - light_source = 200, - on_step = function (self, pos, node, dtime) - local pos = self.object:getpos() - local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) - for k, obj in pairs(objs) do - obj:set_hp(obj:get_hp()-5) - if obj:is_player() then - return - else - obj:set_hp(obj:get_hp()-10) - if obj:get_entity_name() ~= "classes:magicmissile" then - if obj:get_hp()<=0 then - obj:remove() - end - self.object:remove() - end - end - end - - for dx=-1,1 do - for dy=-1,1 do - for dz=-1,1 do - local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz} - local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} - local n = minetest.env:get_node(p).name --- if n ~= "classes:fireball" and n ~="hackersheep:hackersheep" and n ~="prohackersheep:prohackersheep" then --- if minetest.registered_nodes[n].groups.noobhackersheep then --[[or math.random(1, 100) <= 0]] --- minetest.env:set_node(t, {name=""..n}) --- else --- minetest.env:set_node(t, {name=""..n}) --- end --- else -if minetest.registered_nodes[n].groups.flammable or minetest.registered_nodes[n].groups.choppy or minetest.registered_nodes[n].groups.oddly_breakable_by_hand or minetest.registered_nodes[n].groups.cracky or minetest.registered_nodes[n].groups.crumbly or n =="default:desert_stone" then - self.hit_node(self, pos, node) - self.object:remove() - return - end - end - end - end - end, - - - hit_node = function(self, pos, node) - local pos = self.object:getpos() --- for dx=-4,4 do --- for dy=-4,4 do --- for dz=-4,4 do --- local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} --- local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} --- local n = minetest.env:get_node(pos).name --- if math.random(1, 50) <= 0 then --- minetest.env:remove_node(p) --- end --- if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) >=500 then --- minetest.env:set_node(t, {name="air"}) --- end - local objects = minetest.env:get_objects_inside_radius(pos, 2) - for _,obj in ipairs(objects) do - if obj:is_player() or (obj:get_luaentity() and obj:get_luaentity().name ~= "__builtin:item") then - local obj_p = obj:getpos() - local vec = {x=obj_p.x-pos.x, y=obj_p.y-pos.y, z=obj_p.z-pos.z} - local dist = (vec.x^2+vec.y^2+vec.z^2)^0.5 - local damage = (10*0.5^dist)*1 - obj:punch(obj, 1.0, { - full_punch_interval=1.0, - damage_groups={fleshy=damage}, - }, vec) - end - end - - minetest.add_particlespawner( - 2, --amount - 0.1, --time - {x=pos.x-3, y=pos.y-3, z=pos.z-3}, --minpos - {x=pos.x+3, y=pos.y+3, z=pos.z+3}, --maxpos - {x=-0, y=-0, z=-0}, --minvel - {x=0, y=0, z=0}, --maxvel - {x=-0.5,y=5,z=-0.5}, --minacc - {x=0.5,y=5,z=0.5}, --maxacc - 0.1, --minexptime - 1, --maxexptime - 50, --minsize - 90, --maxsize - false, --collisiondetection - "magicmissileburst.png" --texture - ) - --- end --- end --- end - end -}) -minetest.register_craftitem("classes:apprentice_staff", { - description = "Staff of the Apprenti", - inventory_image = "apprentice.png", - wield_scale = {x=2.5,y=5.5,z=1.5}, - stackable = false, - on_use = function (itemstack, placer, pointed_thing) - local dir = placer:get_look_dir(); - local playerpos = placer:getpos(); - local obj = minetest.env:add_entity({x=playerpos.x+0+dir.x,y=playerpos.y+2+dir.y,z=playerpos.z+0+dir.z}, "classes:magicmissile") - local vec = {x=dir.x*8,y=dir.y*8,z=dir.z*8} - obj:setvelocity(vec) - return itemstack - end, - light_source = 15, -}) -local addvectors = function (v1, v2) - return {x=v1.x+v2.x, y=v1.y+v2.y, z=v1.z+v2.z} -end - - -minetest.register_entity("classes:lightning", { - textures = {"lightningball.png"}, - velocity = 15, - light_source = 200, - on_step = function (self, pos, node, dtime) - local pos = self.object:getpos() - local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) - for k, obj in pairs(objs) do - obj:set_hp(obj:get_hp()-10) - if obj:is_player() then - return - else - obj:set_hp(obj:get_hp()-20) - if obj:get_entity_name() ~= "classes:lightning" then - if obj:get_hp()<=0 then - obj:remove() - end - self.object:remove() - end - end - end - - for dx=-1,1 do - for dy=-1,1 do - for dz=-1,1 do - local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz} - local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} - local n = minetest.env:get_node(p).name --- if n ~= "classes:fireball" and n ~="hackersheep:hackersheep" and n ~="prohackersheep:prohackersheep" then --- if minetest.registered_nodes[n].groups.noobhackersheep then --[[or math.random(1, 100) <= 0]] --- minetest.env:set_node(t, {name=""..n}) --- else --- minetest.env:set_node(t, {name=""..n}) --- end --- else -if minetest.registered_nodes[n].groups.flammable or minetest.registered_nodes[n].groups.choppy or minetest.registered_nodes[n].groups.oddly_breakable_by_hand or minetest.registered_nodes[n].groups.cracky or minetest.registered_nodes[n].groups.crumbly or n =="default:desert_stone" then - self.hit_node(self, pos, node) - self.object:remove() - return - end - end - end - end - end, - - - hit_node = function(self, pos, node) - local pos = self.object:getpos() --- for dx=-4,4 do --- for dy=-4,4 do --- for dz=-4,4 do --- local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} --- local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} --- local n = minetest.env:get_node(pos).name --- if math.random(1, 50) <= 0 then --- minetest.env:remove_node(p) --- end --- if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) >=500 then --- minetest.env:set_node(t, {name="air"}) --- end - local objects = minetest.env:get_objects_inside_radius(pos, 4) - for _,obj in ipairs(objects) do - if obj:is_player() or (obj:get_luaentity() and obj:get_luaentity().name ~= "__builtin:item") then - local obj_p = obj:getpos() - local vec = {x=obj_p.x-pos.x, y=obj_p.y-pos.y, z=obj_p.z-pos.z} - local dist = (vec.x^2+vec.y^2+vec.z^2)^0.5 - local damage = (80*0.5^dist)*2 - obj:punch(obj, 1.0, { - full_punch_interval=1.0, - damage_groups={fleshy=damage}, - }, vec) - end - end - - minetest.add_particlespawner( - 4, --amount - 0.1, --time - {x=pos.x-3, y=pos.y-3, z=pos.z-3}, --minpos - {x=pos.x+3, y=pos.y+3, z=pos.z+3}, --maxpos - {x=-0, y=-0, z=-0}, --minvel - {x=0, y=0, z=0}, --maxvel - {x=-0.0,y=0,z=-0.0}, --minacc - {x=0.1,y=-1,z=0.1}, --maxacc - 0.1, --minexptime - 1, --maxexptime - 300, --minsize - 350, --maxsize - false, --collisiondetection - "lightningbolt.png" --texture - ) - --- end --- end --- end - end -}) -minetest.register_craftitem("classes:lightning_staff", { - description = "Staff of the Vengeful Skies", - inventory_image = "lightningstaff.png", - wield_scale = {x=2.5,y=5.5,z=1.5}, - stackable = false, - on_use = function (itemstack, placer, pointed_thing) - local dir = placer:get_look_dir(); - local playerpos = placer:getpos(); - local obj = minetest.env:add_entity({x=playerpos.x+0+dir.x,y=playerpos.y+2+dir.y,z=playerpos.z+0+dir.z}, "classes:lightning") - local vec = {x=dir.x*12,y=dir.y*12,z=dir.z*12} - obj:setvelocity(vec) - return itemstack - end, - light_source = 15, -}) -local addvectors = function (v1, v2) - return {x=v1.x+v2.x, y=v1.y+v2.y, z=v1.z+v2.z} -end ---...............................................................................................................................-- ---...............................................................................................................................-- ---...............................................................................................................................-- ---...............................................................................................................................-- ---...............................................................................................................................-- ---...............................................................................................................................-- ---...............................................................................................................................-- classes = {} minetest.register_privilege("GAMEwizard", { @@ -1691,4 +305,3 @@ minetest.register_chatcommand("class", { -