diff --git a/craft.lua b/craft.lua new file mode 100644 index 0000000..984c482 --- /dev/null +++ b/craft.lua @@ -0,0 +1,274 @@ +minetest.register_craft({ + output = "portalgun:turretgun", + recipe = { + {"", "portalgun:secam_off", ""}, + {"", "default:mese_crystal",""}, + {"default:steel_ingot", "dye:white", "default:steel_ingot"}, + } +}) + + +minetest.register_craft({ + output = "portalgun:cplps1", + recipe = {{"default:mese_crystal_fragment","dye:grey","dye:grey"}, + {"portalgun:apb","dye:grey","dye:grey"}, + {"default:mese_crystal_fragment","dye:grey","dye:grey"}, + } +}) + +minetest.register_craft({ + output = "portalgun:sign_numa1 3", + recipe = {{"dye:black","dye:black","dye:white"}, + {"portalgun:testblock","dye:black","dye:white"}, + {"dye:white","dye:black","dye:white"}, + } +}) + + + +minetest.register_craft({ + output = "portalgun:sign_x 2", + recipe = {{"dye:blue","portalgun:testblock","dye:blue"}, + {"default:glass","dye:blue","default:glass"}, + {"dye:blue","default:mese_crystal_fragment","dye:blue"}, + } +}) + +minetest.register_craft({ + output = "portalgun:warntape 3", + recipe = {{"dye:black","dye:yellow","dye:black"}, + {"default:stick","default:stick","default:stick"}, + } +}) + +minetest.register_craft({ + output = "portalgun:door_1", + recipe = {{"","portalgun:testblock","portalgun:testblock"}, + {"","portalgun:testblock","portalgun:testblock"}, + {"default:mese_crystal_fragment","portalgun:testblock","portalgun:testblock"}, + } +}) + +minetest.register_craft({ + output = "portalgun:toxwater_1 9", + recipe = {{"default:dirt","default:dirt","default:dirt"}, + {"default:dirt","bucket:bucket_lava","default:dirt"}, + {"default:dirt","default:dirt","default:dirt"}, + } +}) + +minetest.register_craft({ + output = "portalgun:portaltarget_1", + recipe = {{"","portalgun:testblock",""}, + {"default:mese_crystal_fragment","dye:blue","default:mese_crystal_fragment"}, + } +}) +minetest.register_craft({ + output = "portalgun:portaltarget_2", + recipe = {{"","portalgun:testblock",""}, + {"default:mese_crystal_fragment","dye:orange","default:mese_crystal_fragment"}, + } +}) +minetest.register_craft({ + output = "portalgun:sign2", + recipe = {{"","portalgun:testblock",""}, + {"dye:white","dye:black","dye:orange"}, + } +}) +minetest.register_craft({ + output = "portalgun:sign1", + recipe = {{"","portalgun:testblock",""}, + {"dye:white","dye:black","dye:blue"}, + } +}) +minetest.register_craft({ + output = "portalgun:planthole", + recipe = { + {"portalgun:testblock", "portalgun:testblock", "portalgun:testblock"}, + {"portalgun:testblock", "portalgun:plantform1_1", "portalgun:testblock"}, + {"portalgun:testblock", "portalgun:testblock", "portalgun:testblock"} + } +}) + +minetest.register_craft({ + output = "portalgun:delayer", + recipe = { + {"dye:yellow", "default:mese_crystal", "dye:yellow"}, + {"default:stone", "portalgun:testblock", "default:stone"}, + {"dye:yellow", "default:steel_ingot", "dye:yellow"}, + } +}) + +minetest.register_craft({ + output = "portalgun:testblocks 2", + recipe = { + {"portalgun:testblock", "default:mese_crystal"}, + } +}) + +minetest.register_craft({ + output = "portalgun:hard_glass", + recipe = { + {"default:glass", "default:glass"}, + {"default:glass", "default:glass"}, + } +}) + +minetest.register_craft({ + output = "portalgun:apg", + recipe = { + {"default:glass", "dye:white"}, + } +}) + +minetest.register_craft({ + output = "portalgun:powerballspawner2", + recipe = { + {"portalgun:powerballspawner", "default:mese_crystal"}, + } +}) + +minetest.register_craft({ + output = "portalgun:objdestroyer_1", + recipe = { + {"default:obsidian_glass", "default:obsidian_glass", "portalgun:dmgblock_1"}, + {"default:obsidian_glass", "default:obsidian_glass", ""}, + } +}) + +minetest.register_craft({ + output = "portalgun:dmgblock_1", + recipe = { + {"default:obsidian_glass", "default:obsidian_glass", "default:mese_crystal"}, + {"default:obsidian_glass", "default:obsidian_glass", ""}, + } +}) + +minetest.register_craft({ + output = "portalgun:button", + recipe = { + {"", "dye:red", ""}, + {"", "portalgun:testblock", ""}, + {"", "portalgun:testblock", ""}, + } +}) + +minetest.register_craft({ + output = "portalgun:cake", + recipe = { + {"dye:red", "portalgun:testblock", "dye:red"}, + {"default:dirt", "default:torch", "default:dirt"}, + {"dye:red", "default:dirt", "dye:red"}, + } +}) + +minetest.register_craft({ + output = "portalgun:powerdoor1_1", + recipe = { + {"default:obsidian_glass", "default:mese_crystal", "default:obsidian_glass"}, + {"default:obsidian_glass", "default:obsidian", "default:obsidian_glass"}, + {"default:obsidian_glass", "default:mese_crystal", "default:obsidian_glass"}, + } +}) + +minetest.register_craft({ + output = "portalgun:autocheckpoint", + recipe = { + {"default:mese_crystal", "default:mese_crystal","default:mese_crystal"}, + } +}) + +minetest.register_craft({ + output = "portalgun:testblock 3", + recipe = { + {"default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "dye:white"}, + } +}) + +minetest.register_craft({ + output = "portalgun:apb", + recipe = { + {"default:stonebrick", "dye:white"}, + } +}) + +minetest.register_craft({ + output = "portalgun:secam_off", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"dye:black", "default:glass", "dye:black"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + } +}) + +minetest.register_craft({ + output = "portalgun:powerballspawner", + recipe = { + {"default:steel_ingot", "", "default:steel_ingot"}, + {"dye:yellow", "default:mese_crystal", "dye:yellow"}, + {"default:steel_ingot", "", "default:steel_ingot"}, + } +}) +minetest.register_craft({ + output = "portalgun:powerballtarget", + recipe = { + {"portalgun:powerballspawner"}, + } +}) + +minetest.register_craft({output = "portalgun:wscspawner2", + recipe = {{"portalgun:wscspawner1"}}}) +minetest.register_craft({output = "portalgun:wscspawner3", + recipe = {{"portalgun:wscspawner2"}}}) +minetest.register_craft({output = "portalgun:wscspawner4", + recipe = {{"portalgun:wscspawner3"}}}) +minetest.register_craft({output = "portalgun:wscspawner1", + recipe = {{"portalgun:wscspawner4"}}}) +minetest.register_craft({ + output = "portalgun:wscspawner1", + recipe = { + {"", "default:steel_ingot", ""}, + {"default:steel_ingot", "default:mese_crystal", "default:steel_ingot"}, + {"", "default:steel_ingot", ""},}}) + +minetest.register_craft({output = "portalgun:wscspawner2_2", + recipe = {{"portalgun:wscspawner2_1"}}}) +minetest.register_craft({output = "portalgun:wscspawner2_3", + recipe = {{"portalgun:wscspawner2_2"}}}) +minetest.register_craft({output = "portalgun:wscspawner2_4", + recipe = {{"portalgun:wscspawner2_3"}}}) +minetest.register_craft({output = "portalgun:wscspawner2_1", + recipe = {{"portalgun:wscspawner2_4"}}}) +minetest.register_craft({ + output = "portalgun:wscspawner2_1", + recipe = { + {"", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:mese_crystal", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},}}) + +minetest.register_craft({ + output = "portalgun:plantform1_1", + recipe = { + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:mese_crystal", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},}}) +minetest.register_craft({output = "portalgun:plantform1_2", + recipe = {{"portalgun:plantform1_1"}}}) +minetest.register_craft({output = "portalgun:plantform1_3", + recipe = {{"portalgun:plantform1_2"}}}) +minetest.register_craft({output = "portalgun:plantform1_4", + recipe = {{"portalgun:plantform1_3"}}}) +minetest.register_craft({output = "portalgun:plantform_nu1", + recipe = {{"portalgun:plantform1_4"}}}) +minetest.register_craft({output = "portalgun:plantform1_1", + recipe = {{"portalgun:plantform_nu1"}}}) + +minetest.register_craft({ + output = "portalgun:gun", + recipe = { + {"", "default:diamond", ""}, + {"default:diamond", "default:mese", "default:mese"}, + {"", "default:steel_ingot", "default:steel_ingot"}, + }, +}) \ No newline at end of file diff --git a/craft2.JPG b/craft2.JPG new file mode 100644 index 0000000..e78a447 Binary files /dev/null and b/craft2.JPG differ diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..f729773 --- /dev/null +++ b/depends.txt @@ -0,0 +1,2 @@ +default +mesecons? diff --git a/description.txt b/description.txt new file mode 100644 index 0000000..32ec78c --- /dev/null +++ b/description.txt @@ -0,0 +1 @@ +Portals and stuff \ No newline at end of file diff --git a/gravityuse.lua b/gravityuse.lua new file mode 100644 index 0000000..a997104 --- /dev/null +++ b/gravityuse.lua @@ -0,0 +1,153 @@ +-- Code by UjEdwin + +portalgun_power={} +portalgun_power_tmp_power=0 + +function portalgun_gravity(itemstack, user, pointed_thing) + local ob=pointed_thing.ref + if ob:get_luaentity() and ob:get_luaentity().portalgun_power then + ob:get_luaentity().target:set_detach() + if ob:get_luaentity().target:get_luaentity() and (ob:get_luaentity().target:get_luaentity().itemstring or ob:get_luaentity().target:get_luaentity().wsc) then + ob:get_luaentity().target:set_velocity({x=0, y=-1, z=0}) + ob:get_luaentity().target:set_acceleration({x=0, y=-8, z=0}) + end + return itemstack + end + if not ob:get_attach() and (ob:is_player() or (ob:get_luaentity() and ob:get_luaentity().powerball~=1)) then + portalgun_power.user=user + portalgun_power.target=ob + if ob:is_player() then portalgun_power.player=1 end + local m=minetest.add_entity(ob:get_pos(), "portalgun:power") + ob:set_attach(m, "", {x=0,y=0,z=0}, {x=0,y=0,z=0}) + return itemstack + end + return itemstack +end + +minetest.register_entity("portalgun:power",{ + hp_max = 100, + physical = false, + weight = 0, + collisionbox = {-0.2,-0.2,-0.2, 0.2,0.2,0.2}, + visual = "sprite", + visual_size = {x=1, y=1}, + textures = {"portalgun_gravity.png"}, + spritediv = {x=1, y=1}, + is_visible = true, + makes_footstep_sound = false, + automatic_rotate = false, + timer=0, + time=0.1, + portalgun_power=1, + portalgun=1, + lifelime=100, +on_activate=function(self, staticdata) + if portalgun_power.user then + self.user=portalgun_power.user + self.target=portalgun_power.target + self.player=portalgun_power.player + portalgun_power={} + else + self.object:remove() + end + end, +on_punch=function(self, puncher, time_from_last_punch, tool_capabilities, dir) + if self.target and self.target:get_attach() then + self.target:set_detach() + self.target:set_hp(0) + self.target:punch(self.object, {full_punch_interval=1.0,damage_groups={fleshy=4}}, "default:bronze_pick", nil) + end + +end, +on_step= function(self, dtime) + self.timer=self.timer+dtime + if self.timer-0.5 then v2.x=0 end + if v2.y<0.5 and v2.y>-0.5 then v2.y=0 end + if v2.z<0.5 and v2.z>-0.5 then v2.z=0 end + + self.object:set_velocity(v2) + self.ltime=self.ltime-self.v + + if self.ltime0 then -- makes teleported stuff wont move back at same time (bug fix) + portalgun_portal[name].timer=portalgun_portal[name].timer-dtime + return self + end + + + + + if self.portal_max_use>0 then -- makes teleported stuff wont move back at same time (bug fix) + self.portal_max_use_time=self.portal_max_use_time+dtime + if self.portal_max_use>=portalgun_max_use_per_secund then + portal_delete(name,self.project) + return self + elseif self.portal_max_use_time>=portalgun_max_use_per_secund_time then + self.portal_max_use_time=0 + self.portal_max_use=0 + end + end + + local pos1=0 + local pos2=0 + local d1=0 + local d2=0 + + if self.project==1 then + pos1=portalgun_portal[name].portal1_pos + pos2=portalgun_portal[name].portal2_pos + d1=portalgun_portal[name].portal1_dir + d2=portalgun_portal[name].portal2_dir + else + pos1=portalgun_portal[name].portal2_pos + pos2=portalgun_portal[name].portal1_pos + d1=portalgun_portal[name].portal2_dir + d2=portalgun_portal[name].portal1_dir + end + + + if pos2~=0 and pos1~=0 then + for ii, ob in pairs(minetest.get_objects_inside_radius(pos1, self.area)) do + if pos2~=0 then + if (ob:is_player() ) or (ob:get_luaentity() and ob:get_luaentity().portalgun~=1 and ob:get_luaentity().name:find(":text",4)==nil) then + + + if ob:get_attach() then + ob:set_detach() + ob:set_acceleration({x=0, y=-10, z=0}) + end + --set velocity then teleport + local p=pos2 + local x=0 + local y=0 + local z=0 + local dis=2 + if p==nil or p.x==nil then + return self + end + + + if ob:is_player() then + local v=ob:get_player_velocity() + local player_name=ob:get_player_name() + portalgun_power.user=player_name + portalgun_power.target=ob + local vv={x=v.x,y=v.y,z=v.z} + -- get the highest velocity + dis=2 + if vv.x+vv.y+vv.z<=0.3 then + if self.small==true then + vv.x=1.4 + else + vv.x=2 + end + end + if vv.x+vv.y+vv.z==0 then vv.x=2 end + if vv.x<0 then vv.x=vv.x*-1 end + if vv.y<0 then vv.y=vv.y*-1 end + if vv.z<0 then vv.z=vv.z*-1 end + if vv.x>vv.z then vv.a=vv.x else vv.a=vv.z end + if vv.av.z then vv=v.x else vv=v.z end + if vv8 then + pos1.y=pos1.y+1 + end + if portalgun_portal[self.user].y>12 then + pos1.y=pos1.y+1 + end + if self.project==1 then + portalgun_portal[self.user].portal1_pos=pos1 + else + portalgun_portal[self.user].portal2_pos=pos1 + end + elseif string.find(d,"y",1)==nil and (portalgun_portal[self.user].x+portalgun_portal[self.user].z<2.5) then + self.area=1.2 + self.small=true + self.object:set_properties({visual_size = {x=0.7, y=0.7},}) + end + end, +on_step=portalgun_on_step, +}) + + +minetest.register_tool("portalgun:gun1", { + description = "Portalgun (blue)", + inventory_image = "portalgun_gun_blue.png", + range = 5, + wield_image = "portalgun_gun_blue.png", + groups = {not_in_creative_inventory=1}, +on_place=function(itemstack, user, pointed_thing) + portalgun_mode(itemstack, user, pointed_thing) + return itemstack +end, +on_use = function(itemstack, user, pointed_thing) + portalgun_onuse(itemstack, user, pointed_thing) + return itemstack +end +}) +minetest.register_tool("portalgun:gun2", { + description = "Portalgun (orange)", + inventory_image = "portalgun_gun_orange.png", + range = 5, + wield_image = "portalgun_gun_orange.png", + groups = {not_in_creative_inventory=1}, +on_place=function(itemstack, user, pointed_thing) + portalgun_mode(itemstack, user, pointed_thing) + return itemstack +end, +on_use = function(itemstack, user, pointed_thing) + portalgun_onuse(itemstack, user, pointed_thing) + return itemstack +end +}) + +minetest.register_tool("portalgun:gun", { + description = "Portalgun", + inventory_image = "portalgun_gun.png", + range = 5, + wield_image = "portalgun_gun.png", + groups = {not_in_creative_inventory=0}, +on_place=function(itemstack, user, pointed_thing) + portalgun_mode(itemstack, user, pointed_thing) + return itemstack +end, +on_use = function(itemstack, user, pointed_thing) + portalgun_onuse(itemstack, user, pointed_thing) + return itemstack +end +}) + + +function portalgun_mode(itemstack, user, pointed_thing) -- change modes + local item=itemstack:to_table() + local meta=minetest.deserialize(item["metadata"]) + local mode=0 + if meta==nil then + meta={} + mode=1 + minetest.chat_send_player(user:get_player_name(), " PLACE to change portal mode (or LEFT+RIGHTCLICK to use the other)") + minetest.chat_send_player(user:get_player_name(), " LEFTCLICK on an object to carry it, CLICK AGAIN to release") + minetest.chat_send_player(user:get_player_name(), " SHIFT+LEFTCLICK to close both portals (or wait 40sec until it removes it self)") + end + if meta.mode==nil then meta.mode=2 end + mode=(meta.mode) + if mode==1 then + mode=2 + else + mode=1 + end + meta.mode=mode + item.name="portalgun:gun"..mode + item.metadata=minetest.serialize(meta) + itemstack:replace(item) + minetest.sound_play("portalgun_mode", {pos=user:get_pos(),max_hear_distance = 5, gain = 1}) +end + + +local function rnd(r) +return math.floor(r+ 0.5) +end + +function portalgun_onuse(itemstack, user, pointed_thing) -- using the gun + + if pointed_thing.type=="object" then + portalgun_gravity(itemstack, user, pointed_thing) + return itemstack + end + + local pos = user:get_pos() + local dir = user:get_look_dir() + local key = user:get_player_control() + local name=user:get_player_name() + local exist=0 + + local item=itemstack:to_table() + local mode=minetest.deserialize(item["metadata"]) + if mode==nil then + portalgun_mode(itemstack, user, pointed_thing) + return itemstack + else + mode=mode.mode + end + + local ob={} + ob.project=1 + ob.lifelime=portalgun_lifelime + ob.portal1=0 + ob.portal2=0 + ob.portal1_dir=0 + ob.portal2_dir=0 + ob.portal2_pos=0 + ob.portal1_pos=0 + ob.user = user:get_player_name() + + if portalgun_portal[name]==nil then -- new portal profile + portalgun_portal[name]={lifelime=portalgun_lifelime,project=1,timer=0,portal1_active=false,portal2_active=false,portal1_use=0,portal2_use=0} + end + + if key.RMB and mode==2 then -- hold rmbutton to use the other one (like diplazer) + mode=1 + elseif key.RMB and mode==1 then + mode=2 + end + + if key.sneak then + portal_delete(name,0) + return itemstack + end + + pos.y=pos.y+1.5 + +-- the project + + for i=1, portalgun_max_rage,0.5 do + local nname=minetest.get_node({x=pos.x+(dir.x*i), y=pos.y+(dir.y*i), z=pos.z+(dir.z*i)}).name + if minetest.registered_nodes[nname].walkable then + portalgun_portal[name].lifelime=portalgun_lifelime + + + + if minetest.get_node_group(nname, "antiportal")>0 then + minetest.sound_play("portalgun_error", {pos=pos,max_hear_distance = 5, gain = 3}) + return itemstack + end + + if minetest.registered_nodes[minetest.get_node({x=rnd(pos.x+(dir.x*i)), y=rnd(pos.y+(dir.y*i)+1), z=rnd(pos.z+(dir.z*i))}).name].walkable==false and rnd(user:get_pos().y)>rnd(pos.y+(dir.y*i)) then + portalgun_setportal(pos,name,dir,i,mode,"y+") + return itemstack + elseif minetest.registered_nodes[minetest.get_node({x=rnd(pos.x+(dir.x*i)), y=rnd(pos.y+(dir.y*i)-1), z=rnd(pos.z+(dir.z*i))}).name].walkable==false and rnd(user:get_pos().y)rnd(pos.x+(dir.x*i)) then + portalgun_setportal(pos,name,dir,i,mode,"x+") + return itemstack + elseif minetest.registered_nodes[minetest.get_node({x=rnd(pos.x+(dir.x*i)), y=rnd(pos.y+(dir.y*i)), z=rnd(pos.z+(dir.z*i)-1)}).name].walkable==false and rnd(user:get_pos().z)rnd(pos.z+(dir.z*i)) then + portalgun_setportal(pos,name,dir,i,mode,"z+") + return itemstack + end + minetest.sound_play("portalgun_error", {pos=pos,max_hear_distance = 20, gain = 3}) + return itemstack + end + end + return itemstack +end + + + +function portalgun_setportal(pos,name,dir,i,mode,portal_dir) + local lpos={x=pos.x+(dir.x*(i-1)), y=pos.y+(dir.y*(i-1)), z=pos.z+(dir.z*(i-1))} -- last pos + local cpos={x=pos.x+(dir.x*i), y=pos.y+(dir.y*i), z=pos.z+(dir.z*i)} -- corrent poss + + if portal_dir=="y+" then cpos.y=(math.floor(cpos.y+ 0.5))+0.524 + elseif portal_dir=="y-" then cpos.y=(math.floor(cpos.y+ 0.5))-0.524 + elseif portal_dir=="z+" then cpos.z=(math.floor(cpos.z+ 0.5))+0.524 + elseif portal_dir=="z-" then cpos.z=(math.floor(cpos.z+ 0.5))-0.524 + elseif portal_dir=="x+" then cpos.x=(math.floor(cpos.x+ 0.5))+0.524 + elseif portal_dir=="x-" then cpos.x=(math.floor(cpos.x+ 0.5))-0.524 + end + + if portal_dir=="x+" or portal_dir=="x-" then -- auto correct (place in center) + cpos.y=(math.floor(cpos.y+ 0.5)) + cpos.z=(math.floor(cpos.z+ 0.5)) + elseif portal_dir=="y+" or portal_dir=="y-" then + cpos.x=(math.floor(cpos.x+ 0.5)) + cpos.z=(math.floor(cpos.z+ 0.5)) + elseif portal_dir=="z+" or portal_dir=="z-" then + cpos.x=(math.floor(cpos.x+ 0.5)) + cpos.y=(math.floor(cpos.y+ 0.5)) + end + + if minetest.registered_nodes[minetest.get_node(cpos).name].walkable then + minetest.sound_play("portalgun_error", {pos=pos,max_hear_distance = 5, gain = 3}) + return false + end + + if string.find(portal_dir,"x",1) or string.find(portal_dir,"z",1) then-- auto correct (move from bottom / top) + local testpos1={x=cpos.x,y=cpos.y-1,z=cpos.z} + local testpos2={x=cpos.x,y=cpos.y+1,z=cpos.z} + if minetest.registered_nodes[minetest.get_node(testpos1).name].walkable + and minetest.registered_nodes[minetest.get_node(testpos2).name].walkable==false then + cpos.y=cpos.y+0.5 + elseif minetest.registered_nodes[minetest.get_node(testpos2).name].walkable + and minetest.registered_nodes[minetest.get_node(testpos1).name].walkable==false then + cpos.y=cpos.y-0.5 + end + end + + portalgun_portal_tmp_user=name + portalgun_portal[name].x=pos.x-lpos.x + portalgun_portal[name].y=pos.y-lpos.y + portalgun_portal[name].z=pos.z-lpos.z + portalgun_portal[name].project=mode + + if portalgun_portal[name].x<0 then + portalgun_portal[name].x=portalgun_portal[name].x*-1 + end + if portalgun_portal[name].z<0 then + portalgun_portal[name].z=portalgun_portal[name].z*-1 + end + + if mode==1 then + portal_delete(name,1) + portalgun_portal[name].portal1_use=portalgun_portal[name].portal1_use+1 + portalgun_portal[name].portal1_dir=portal_dir + portalgun_portal[name].portal1_pos=cpos + portalgun_portal[name].portal1=minetest.add_entity(cpos, "portalgun:portal") + portalgun_portal[name].portal1_active=true + minetest.sound_play("portalgun_portalblue", {pos=cpos, max_hear_distance = 20, gain = 1}) + else + portal_delete(name,2) + portalgun_portal[name].portal2_use=portalgun_portal[name].portal2_use+1 + portalgun_portal[name].portal2_dir=portal_dir + portalgun_portal[name].portal2_pos=cpos + portalgun_portal[name].portal2=minetest.add_entity(cpos, "portalgun:portal") + portalgun_portal[name].portal2_active=true + minetest.sound_play("portalgun_portalorange", {pos=cpos,max_hear_distance = 20, gain = 1}) + end +end diff --git a/models/portalgun_portal_xp.obj b/models/portalgun_portal_xp.obj new file mode 100644 index 0000000..1833b60 --- /dev/null +++ b/models/portalgun_portal_xp.obj @@ -0,0 +1,233 @@ +# Blender v2.78 (sub 0) OBJ File: 'portalgun_portal_ym.blend' +# www.blender.org +mtllib portalgun_portal_ym.mtl +o Plane +v 0.000000 0.000000 0.000000 +v -0.000000 1.652609 0.000000 +v -0.000000 3.305217 0.000000 +v -0.000000 4.957826 0.000000 +v -0.000000 0.000000 -1.652609 +v -0.000000 0.000000 -3.305217 +v -0.000000 0.000000 -4.957826 +v 0.000000 -1.652609 -0.000000 +v 0.000000 -3.305217 -0.000000 +v 0.000000 -4.957826 -0.000000 +v 0.000000 -0.000000 1.652609 +v 0.000000 -0.000000 3.305217 +v 0.000000 -0.000000 4.957826 +v 0.000000 1.624598 1.624598 +v -0.000000 3.249197 1.554573 +v -0.000000 4.873795 1.456536 +v 0.000000 1.554573 3.249197 +v 0.000000 3.102143 3.102143 +v -0.000000 4.635707 2.885062 +v 0.000000 1.456536 4.873795 +v 0.000000 2.885062 4.635707 +v 0.000000 4.257568 4.257568 +v -0.000000 1.624598 -1.624598 +v -0.000000 1.554573 -3.249197 +v -0.000000 1.456536 -4.873795 +v -0.000000 3.249197 -1.554573 +v -0.000000 3.102143 -3.102143 +v -0.000000 2.885062 -4.635707 +v -0.000000 4.873795 -1.456536 +v -0.000000 4.635707 -2.885062 +v -0.000000 4.257568 -4.257568 +v 0.000000 -1.624598 -1.624598 +v 0.000000 -3.249197 -1.554573 +v 0.000000 -4.873795 -1.456536 +v -0.000000 -1.554573 -3.249197 +v 0.000000 -3.102143 -3.102143 +v 0.000000 -4.635707 -2.885062 +v -0.000000 -1.456536 -4.873795 +v -0.000000 -2.885062 -4.635707 +v 0.000000 -4.257568 -4.257568 +v 0.000000 -1.624598 1.624598 +v 0.000000 -1.554573 3.249197 +v 0.000000 -1.456536 4.873795 +v 0.000000 -3.249197 1.554573 +v 0.000000 -3.102143 3.102143 +v 0.000000 -2.885062 4.635707 +v 0.000000 -4.873795 1.456536 +v 0.000000 -4.635707 2.885062 +v 0.000000 -4.257568 4.257568 +v 0.000000 -3.809403 5.602063 +v 0.000000 -2.632970 6.162270 +v 0.000000 -1.344495 6.498394 +v 0.000000 -0.000000 6.610435 +v 0.000000 1.344495 6.498394 +v 0.000000 2.632970 6.162270 +v 0.000000 3.809403 5.602063 +v -0.000000 5.602063 3.809403 +v -0.000000 6.162270 2.632970 +v -0.000000 6.498394 1.344495 +v -0.000000 6.610435 0.000000 +v -0.000000 6.498394 -1.344495 +v -0.000000 6.162270 -2.632970 +v -0.000000 5.602063 -3.809403 +v -0.000000 3.809403 -5.602063 +v -0.000000 2.632970 -6.162270 +v -0.000000 1.344495 -6.498394 +v -0.000000 0.000000 -6.610435 +v -0.000000 -1.344495 -6.498394 +v -0.000000 -2.632970 -6.162270 +v -0.000000 -3.809403 -5.602063 +v 0.000000 -5.602063 -3.809403 +v 0.000000 -6.162270 -2.632970 +v 0.000000 -6.498394 -1.344495 +v 0.000000 -6.610435 -0.000000 +v 0.000000 -6.498394 1.344495 +v 0.000000 -6.162270 2.632970 +v 0.000000 -5.602063 3.809403 +v 0.000000 4.817774 4.817774 +v -0.000000 4.817774 -4.817774 +v 0.000000 -4.817774 4.817774 +v 0.000000 -4.817774 -4.817774 +vt 0.5000 0.5000 +vt 0.3757 0.5000 +vt 0.3778 0.3778 +vt 0.5000 0.3757 +vt 0.3831 0.2556 +vt 0.5000 0.2514 +vt 0.3904 0.1334 +vt 0.5000 0.1270 +vt 0.3989 0.0111 +vt 0.5000 0.0027 +vt 0.2514 0.5000 +vt 0.2556 0.3831 +vt 0.2666 0.2666 +vt 0.2830 0.1513 +vt 0.3019 0.0364 +vt 0.1270 0.5000 +vt 0.1334 0.3904 +vt 0.1513 0.2830 +vt 0.1797 0.1797 +vt 0.2134 0.0786 +vt 0.0027 0.5000 +vt 0.0111 0.3989 +vt 0.0364 0.3019 +vt 0.0786 0.2134 +vt 0.1376 0.1376 +vt 0.6222 0.3778 +vt 0.6243 0.5000 +vt 0.7444 0.3831 +vt 0.7486 0.5000 +vt 0.8666 0.3904 +vt 0.8730 0.5000 +vt 0.9889 0.3989 +vt 0.9973 0.5000 +vt 0.6169 0.2556 +vt 0.7334 0.2666 +vt 0.8487 0.2830 +vt 0.9636 0.3019 +vt 0.6096 0.1334 +vt 0.7170 0.1513 +vt 0.8203 0.1797 +vt 0.9214 0.2134 +vt 0.6011 0.0111 +vt 0.6981 0.0364 +vt 0.7866 0.0786 +vt 0.8624 0.1376 +vt 0.6222 0.6222 +vt 0.5000 0.6243 +vt 0.6169 0.7444 +vt 0.5000 0.7486 +vt 0.6096 0.8666 +vt 0.5000 0.8730 +vt 0.6011 0.9889 +vt 0.5000 0.9973 +vt 0.7444 0.6169 +vt 0.7334 0.7334 +vt 0.7170 0.8487 +vt 0.6981 0.9636 +vt 0.8666 0.6096 +vt 0.8487 0.7170 +vt 0.8203 0.8203 +vt 0.7866 0.9214 +vt 0.9889 0.6011 +vt 0.9636 0.6981 +vt 0.9214 0.7866 +vt 0.8624 0.8624 +vt 0.3778 0.6222 +vt 0.2556 0.6169 +vt 0.1334 0.6096 +vt 0.0111 0.6011 +vt 0.3831 0.7444 +vt 0.2666 0.7334 +vt 0.1513 0.7170 +vt 0.0364 0.6981 +vt 0.3904 0.8666 +vt 0.2830 0.8487 +vt 0.1797 0.8203 +vt 0.0786 0.7866 +vt 0.3989 0.9889 +vt 0.3019 0.9636 +vt 0.2134 0.9214 +vt 0.1376 0.8624 +vn -1.0000 0.0000 0.0000 +usemtl None +s 1 +f 1/1/1 11/2/1 14/3/1 2/4/1 +f 2/4/1 14/3/1 15/5/1 3/6/1 +f 3/6/1 15/5/1 16/7/1 4/8/1 +f 4/8/1 16/7/1 59/9/1 60/10/1 +f 11/2/1 12/11/1 17/12/1 14/3/1 +f 14/3/1 17/12/1 18/13/1 15/5/1 +f 15/5/1 18/13/1 19/14/1 16/7/1 +f 16/7/1 19/14/1 58/15/1 59/9/1 +f 12/11/1 13/16/1 20/17/1 17/12/1 +f 17/12/1 20/17/1 21/18/1 18/13/1 +f 18/13/1 21/18/1 22/19/1 19/14/1 +f 19/14/1 22/19/1 57/20/1 58/15/1 +f 13/16/1 53/21/1 54/22/1 20/17/1 +f 20/17/1 54/22/1 55/23/1 21/18/1 +f 21/18/1 55/23/1 56/24/1 22/19/1 +f 22/19/1 56/24/1 78/25/1 57/20/1 +f 1/1/1 2/4/1 23/26/1 5/27/1 +f 5/27/1 23/26/1 24/28/1 6/29/1 +f 6/29/1 24/28/1 25/30/1 7/31/1 +f 7/31/1 25/30/1 66/32/1 67/33/1 +f 2/4/1 3/6/1 26/34/1 23/26/1 +f 23/26/1 26/34/1 27/35/1 24/28/1 +f 24/28/1 27/35/1 28/36/1 25/30/1 +f 25/30/1 28/36/1 65/37/1 66/32/1 +f 3/6/1 4/8/1 29/38/1 26/34/1 +f 26/34/1 29/38/1 30/39/1 27/35/1 +f 27/35/1 30/39/1 31/40/1 28/36/1 +f 28/36/1 31/40/1 64/41/1 65/37/1 +f 4/8/1 60/10/1 61/42/1 29/38/1 +f 29/38/1 61/42/1 62/43/1 30/39/1 +f 30/39/1 62/43/1 63/44/1 31/40/1 +f 31/40/1 63/44/1 79/45/1 64/41/1 +f 1/1/1 5/27/1 32/46/1 8/47/1 +f 8/47/1 32/46/1 33/48/1 9/49/1 +f 9/49/1 33/48/1 34/50/1 10/51/1 +f 10/51/1 34/50/1 73/52/1 74/53/1 +f 5/27/1 6/29/1 35/54/1 32/46/1 +f 32/46/1 35/54/1 36/55/1 33/48/1 +f 33/48/1 36/55/1 37/56/1 34/50/1 +f 34/50/1 37/56/1 72/57/1 73/52/1 +f 6/29/1 7/31/1 38/58/1 35/54/1 +f 35/54/1 38/58/1 39/59/1 36/55/1 +f 36/55/1 39/59/1 40/60/1 37/56/1 +f 37/56/1 40/60/1 71/61/1 72/57/1 +f 7/31/1 67/33/1 68/62/1 38/58/1 +f 38/58/1 68/62/1 69/63/1 39/59/1 +f 39/59/1 69/63/1 70/64/1 40/60/1 +f 40/60/1 70/64/1 81/65/1 71/61/1 +f 1/1/1 8/47/1 41/66/1 11/2/1 +f 11/2/1 41/66/1 42/67/1 12/11/1 +f 12/11/1 42/67/1 43/68/1 13/16/1 +f 13/16/1 43/68/1 52/69/1 53/21/1 +f 8/47/1 9/49/1 44/70/1 41/66/1 +f 41/66/1 44/70/1 45/71/1 42/67/1 +f 42/67/1 45/71/1 46/72/1 43/68/1 +f 43/68/1 46/72/1 51/73/1 52/69/1 +f 9/49/1 10/51/1 47/74/1 44/70/1 +f 44/70/1 47/74/1 48/75/1 45/71/1 +f 45/71/1 48/75/1 49/76/1 46/72/1 +f 46/72/1 49/76/1 50/77/1 51/73/1 +f 10/51/1 74/53/1 75/78/1 47/74/1 +f 47/74/1 75/78/1 76/79/1 48/75/1 +f 48/75/1 76/79/1 77/80/1 49/76/1 +f 49/76/1 77/80/1 80/81/1 50/77/1 diff --git a/models/portalgun_portal_ym.obj b/models/portalgun_portal_ym.obj new file mode 100644 index 0000000..69f9e30 --- /dev/null +++ b/models/portalgun_portal_ym.obj @@ -0,0 +1,233 @@ +# Blender v2.78 (sub 0) OBJ File: 'portalgun_portal_ym.blend' +# www.blender.org +mtllib portalgun_portal_ym.mtl +o Plane +v 0.000000 0.000000 0.000000 +v -0.000000 -0.000000 1.652609 +v -0.000000 -0.000001 3.305217 +v -0.000000 -0.000001 4.957826 +v -1.652609 0.000000 0.000000 +v -3.305217 0.000000 0.000000 +v -4.957826 0.000001 0.000000 +v 0.000000 0.000000 -1.652609 +v 0.000000 0.000001 -3.305217 +v 0.000000 0.000001 -4.957826 +v 1.652609 -0.000000 -0.000000 +v 3.305217 -0.000000 -0.000000 +v 4.957826 -0.000001 -0.000000 +v 1.624598 -0.000001 1.624598 +v 1.554573 -0.000001 3.249197 +v 1.456536 -0.000002 4.873795 +v 3.249197 -0.000001 1.554573 +v 3.102143 -0.000001 3.102143 +v 2.885062 -0.000002 4.635707 +v 4.873795 -0.000001 1.456536 +v 4.635707 -0.000001 2.885062 +v 4.257568 -0.000002 4.257568 +v -1.624598 -0.000000 1.624598 +v -3.249197 0.000000 1.554573 +v -4.873795 0.000000 1.456536 +v -1.554573 -0.000001 3.249197 +v -3.102143 -0.000000 3.102143 +v -4.635707 -0.000000 2.885062 +v -1.456536 -0.000001 4.873795 +v -2.885062 -0.000001 4.635707 +v -4.257568 -0.000001 4.257568 +v -1.624598 0.000001 -1.624598 +v -1.554573 0.000001 -3.249197 +v -1.456536 0.000002 -4.873795 +v -3.249197 0.000001 -1.554573 +v -3.102143 0.000001 -3.102143 +v -2.885062 0.000002 -4.635707 +v -4.873795 0.000001 -1.456536 +v -4.635707 0.000001 -2.885062 +v -4.257568 0.000002 -4.257568 +v 1.624598 0.000000 -1.624598 +v 3.249197 -0.000000 -1.554573 +v 4.873795 -0.000000 -1.456536 +v 1.554573 0.000001 -3.249197 +v 3.102143 0.000000 -3.102143 +v 4.635707 0.000000 -2.885062 +v 1.456536 0.000001 -4.873795 +v 2.885062 0.000001 -4.635707 +v 4.257568 0.000001 -4.257568 +v 5.602063 0.000000 -3.809403 +v 6.162270 -0.000000 -2.632970 +v 6.498394 -0.000001 -1.344495 +v 6.610435 -0.000001 -0.000000 +v 6.498394 -0.000001 1.344495 +v 6.162270 -0.000002 2.632970 +v 5.602063 -0.000002 3.809403 +v 3.809403 -0.000002 5.602063 +v 2.632970 -0.000002 6.162270 +v 1.344495 -0.000002 6.498394 +v -0.000000 -0.000002 6.610435 +v -1.344495 -0.000002 6.498394 +v -2.632970 -0.000001 6.162270 +v -3.809403 -0.000001 5.602063 +v -5.602063 -0.000000 3.809403 +v -6.162270 0.000000 2.632970 +v -6.498394 0.000001 1.344495 +v -6.610435 0.000001 0.000000 +v -6.498394 0.000001 -1.344495 +v -6.162270 0.000002 -2.632970 +v -5.602063 0.000002 -3.809403 +v -3.809403 0.000002 -5.602063 +v -2.632970 0.000002 -6.162270 +v -1.344495 0.000002 -6.498394 +v 0.000000 0.000002 -6.610435 +v 1.344495 0.000002 -6.498394 +v 2.632970 0.000001 -6.162270 +v 3.809403 0.000001 -5.602063 +v 4.817774 -0.000002 4.817774 +v -4.817774 -0.000001 4.817774 +v 4.817774 0.000001 -4.817774 +v -4.817774 0.000002 -4.817774 +vt 0.5000 0.5000 +vt 0.3757 0.5000 +vt 0.3778 0.3778 +vt 0.5000 0.3757 +vt 0.3831 0.2556 +vt 0.5000 0.2514 +vt 0.3904 0.1334 +vt 0.5000 0.1270 +vt 0.3989 0.0111 +vt 0.5000 0.0027 +vt 0.2514 0.5000 +vt 0.2556 0.3831 +vt 0.2666 0.2666 +vt 0.2830 0.1513 +vt 0.3019 0.0364 +vt 0.1270 0.5000 +vt 0.1334 0.3904 +vt 0.1513 0.2830 +vt 0.1797 0.1797 +vt 0.2134 0.0786 +vt 0.0027 0.5000 +vt 0.0111 0.3989 +vt 0.0364 0.3019 +vt 0.0786 0.2134 +vt 0.1376 0.1376 +vt 0.6222 0.3778 +vt 0.6243 0.5000 +vt 0.7444 0.3831 +vt 0.7486 0.5000 +vt 0.8666 0.3904 +vt 0.8730 0.5000 +vt 0.9889 0.3989 +vt 0.9973 0.5000 +vt 0.6169 0.2556 +vt 0.7334 0.2666 +vt 0.8487 0.2830 +vt 0.9636 0.3019 +vt 0.6096 0.1334 +vt 0.7170 0.1513 +vt 0.8203 0.1797 +vt 0.9214 0.2134 +vt 0.6011 0.0111 +vt 0.6981 0.0364 +vt 0.7866 0.0786 +vt 0.8624 0.1376 +vt 0.6222 0.6222 +vt 0.5000 0.6243 +vt 0.6169 0.7444 +vt 0.5000 0.7486 +vt 0.6096 0.8666 +vt 0.5000 0.8730 +vt 0.6011 0.9889 +vt 0.5000 0.9973 +vt 0.7444 0.6169 +vt 0.7334 0.7334 +vt 0.7170 0.8487 +vt 0.6981 0.9636 +vt 0.8666 0.6096 +vt 0.8487 0.7170 +vt 0.8203 0.8203 +vt 0.7866 0.9214 +vt 0.9889 0.6011 +vt 0.9636 0.6981 +vt 0.9214 0.7866 +vt 0.8624 0.8624 +vt 0.3778 0.6222 +vt 0.2556 0.6169 +vt 0.1334 0.6096 +vt 0.0111 0.6011 +vt 0.3831 0.7444 +vt 0.2666 0.7334 +vt 0.1513 0.7170 +vt 0.0364 0.6981 +vt 0.3904 0.8666 +vt 0.2830 0.8487 +vt 0.1797 0.8203 +vt 0.0786 0.7866 +vt 0.3989 0.9889 +vt 0.3019 0.9636 +vt 0.2134 0.9214 +vt 0.1376 0.8624 +vn 0.0000 -1.0000 0.0000 +usemtl None +s 1 +f 1/1/1 11/2/1 14/3/1 2/4/1 +f 2/4/1 14/3/1 15/5/1 3/6/1 +f 3/6/1 15/5/1 16/7/1 4/8/1 +f 4/8/1 16/7/1 59/9/1 60/10/1 +f 11/2/1 12/11/1 17/12/1 14/3/1 +f 14/3/1 17/12/1 18/13/1 15/5/1 +f 15/5/1 18/13/1 19/14/1 16/7/1 +f 16/7/1 19/14/1 58/15/1 59/9/1 +f 12/11/1 13/16/1 20/17/1 17/12/1 +f 17/12/1 20/17/1 21/18/1 18/13/1 +f 18/13/1 21/18/1 22/19/1 19/14/1 +f 19/14/1 22/19/1 57/20/1 58/15/1 +f 13/16/1 53/21/1 54/22/1 20/17/1 +f 20/17/1 54/22/1 55/23/1 21/18/1 +f 21/18/1 55/23/1 56/24/1 22/19/1 +f 22/19/1 56/24/1 78/25/1 57/20/1 +f 1/1/1 2/4/1 23/26/1 5/27/1 +f 5/27/1 23/26/1 24/28/1 6/29/1 +f 6/29/1 24/28/1 25/30/1 7/31/1 +f 7/31/1 25/30/1 66/32/1 67/33/1 +f 2/4/1 3/6/1 26/34/1 23/26/1 +f 23/26/1 26/34/1 27/35/1 24/28/1 +f 24/28/1 27/35/1 28/36/1 25/30/1 +f 25/30/1 28/36/1 65/37/1 66/32/1 +f 3/6/1 4/8/1 29/38/1 26/34/1 +f 26/34/1 29/38/1 30/39/1 27/35/1 +f 27/35/1 30/39/1 31/40/1 28/36/1 +f 28/36/1 31/40/1 64/41/1 65/37/1 +f 4/8/1 60/10/1 61/42/1 29/38/1 +f 29/38/1 61/42/1 62/43/1 30/39/1 +f 30/39/1 62/43/1 63/44/1 31/40/1 +f 31/40/1 63/44/1 79/45/1 64/41/1 +f 1/1/1 5/27/1 32/46/1 8/47/1 +f 8/47/1 32/46/1 33/48/1 9/49/1 +f 9/49/1 33/48/1 34/50/1 10/51/1 +f 10/51/1 34/50/1 73/52/1 74/53/1 +f 5/27/1 6/29/1 35/54/1 32/46/1 +f 32/46/1 35/54/1 36/55/1 33/48/1 +f 33/48/1 36/55/1 37/56/1 34/50/1 +f 34/50/1 37/56/1 72/57/1 73/52/1 +f 6/29/1 7/31/1 38/58/1 35/54/1 +f 35/54/1 38/58/1 39/59/1 36/55/1 +f 36/55/1 39/59/1 40/60/1 37/56/1 +f 37/56/1 40/60/1 71/61/1 72/57/1 +f 7/31/1 67/33/1 68/62/1 38/58/1 +f 38/58/1 68/62/1 69/63/1 39/59/1 +f 39/59/1 69/63/1 70/64/1 40/60/1 +f 40/60/1 70/64/1 81/65/1 71/61/1 +f 1/1/1 8/47/1 41/66/1 11/2/1 +f 11/2/1 41/66/1 42/67/1 12/11/1 +f 12/11/1 42/67/1 43/68/1 13/16/1 +f 13/16/1 43/68/1 52/69/1 53/21/1 +f 8/47/1 9/49/1 44/70/1 41/66/1 +f 41/66/1 44/70/1 45/71/1 42/67/1 +f 42/67/1 45/71/1 46/72/1 43/68/1 +f 43/68/1 46/72/1 51/73/1 52/69/1 +f 9/49/1 10/51/1 47/74/1 44/70/1 +f 44/70/1 47/74/1 48/75/1 45/71/1 +f 45/71/1 48/75/1 49/76/1 46/72/1 +f 46/72/1 49/76/1 50/77/1 51/73/1 +f 10/51/1 74/53/1 75/78/1 47/74/1 +f 47/74/1 75/78/1 76/79/1 48/75/1 +f 48/75/1 76/79/1 77/80/1 49/76/1 +f 49/76/1 77/80/1 80/81/1 50/77/1 diff --git a/models/portalgun_portal_yp.obj b/models/portalgun_portal_yp.obj new file mode 100644 index 0000000..e024a44 --- /dev/null +++ b/models/portalgun_portal_yp.obj @@ -0,0 +1,233 @@ +# Blender v2.78 (sub 0) OBJ File: 'portalgun_portal_ym.blend' +# www.blender.org +mtllib portalgun_portal_ym.mtl +o Plane +v 0.000000 0.000000 0.000000 +v 0.000000 0.000000 1.652609 +v 0.000000 0.000000 3.305217 +v 0.000000 0.000000 4.957826 +v 1.652609 0.000000 0.000000 +v 3.305217 0.000000 0.000000 +v 4.957826 0.000000 0.000000 +v 0.000000 0.000000 -1.652609 +v 0.000000 0.000000 -3.305217 +v 0.000000 0.000000 -4.957826 +v -1.652609 0.000000 0.000000 +v -3.305217 0.000000 0.000000 +v -4.957826 0.000000 0.000000 +v -1.624598 0.000000 1.624598 +v -1.554573 0.000000 3.249197 +v -1.456536 0.000000 4.873795 +v -3.249197 0.000000 1.554573 +v -3.102143 0.000000 3.102143 +v -2.885062 0.000000 4.635707 +v -4.873795 0.000000 1.456536 +v -4.635707 0.000000 2.885062 +v -4.257568 0.000000 4.257568 +v 1.624598 0.000000 1.624598 +v 3.249197 0.000000 1.554573 +v 4.873795 0.000000 1.456536 +v 1.554573 0.000000 3.249197 +v 3.102143 0.000000 3.102143 +v 4.635707 0.000000 2.885062 +v 1.456536 0.000000 4.873795 +v 2.885062 0.000000 4.635707 +v 4.257568 0.000000 4.257568 +v 1.624598 0.000000 -1.624598 +v 1.554573 0.000000 -3.249197 +v 1.456536 0.000000 -4.873795 +v 3.249197 0.000000 -1.554573 +v 3.102143 0.000000 -3.102143 +v 2.885062 0.000000 -4.635707 +v 4.873795 0.000000 -1.456536 +v 4.635707 0.000000 -2.885062 +v 4.257568 0.000000 -4.257568 +v -1.624598 0.000000 -1.624598 +v -3.249197 0.000000 -1.554573 +v -4.873795 0.000000 -1.456536 +v -1.554573 0.000000 -3.249197 +v -3.102143 0.000000 -3.102143 +v -4.635707 0.000000 -2.885062 +v -1.456536 0.000000 -4.873795 +v -2.885062 0.000000 -4.635707 +v -4.257568 0.000000 -4.257568 +v -5.602063 0.000000 -3.809403 +v -6.162270 0.000000 -2.632970 +v -6.498394 0.000000 -1.344495 +v -6.610435 0.000000 0.000000 +v -6.498394 0.000000 1.344495 +v -6.162270 0.000000 2.632970 +v -5.602063 0.000000 3.809403 +v -3.809403 0.000000 5.602063 +v -2.632970 0.000000 6.162270 +v -1.344495 0.000000 6.498394 +v 0.000000 0.000000 6.610435 +v 1.344495 0.000000 6.498394 +v 2.632970 0.000000 6.162270 +v 3.809403 0.000000 5.602063 +v 5.602063 0.000000 3.809403 +v 6.162270 0.000000 2.632970 +v 6.498394 0.000000 1.344495 +v 6.610435 0.000000 0.000000 +v 6.498394 0.000000 -1.344495 +v 6.162270 0.000000 -2.632970 +v 5.602063 0.000000 -3.809403 +v 3.809403 0.000000 -5.602063 +v 2.632970 0.000000 -6.162270 +v 1.344495 0.000000 -6.498394 +v 0.000000 0.000000 -6.610435 +v -1.344495 0.000000 -6.498394 +v -2.632970 0.000000 -6.162270 +v -3.809403 0.000000 -5.602063 +v -4.817774 0.000000 4.817774 +v 4.817774 0.000000 4.817774 +v -4.817774 0.000000 -4.817774 +v 4.817774 0.000000 -4.817774 +vt 0.5000 0.5000 +vt 0.3757 0.5000 +vt 0.3778 0.3778 +vt 0.5000 0.3757 +vt 0.3831 0.2556 +vt 0.5000 0.2514 +vt 0.3904 0.1334 +vt 0.5000 0.1270 +vt 0.3989 0.0111 +vt 0.5000 0.0027 +vt 0.2514 0.5000 +vt 0.2556 0.3831 +vt 0.2666 0.2666 +vt 0.2830 0.1513 +vt 0.3019 0.0364 +vt 0.1270 0.5000 +vt 0.1334 0.3904 +vt 0.1513 0.2830 +vt 0.1797 0.1797 +vt 0.2134 0.0786 +vt 0.0027 0.5000 +vt 0.0111 0.3989 +vt 0.0364 0.3019 +vt 0.0786 0.2134 +vt 0.1376 0.1376 +vt 0.6222 0.3778 +vt 0.6243 0.5000 +vt 0.7444 0.3831 +vt 0.7486 0.5000 +vt 0.8666 0.3904 +vt 0.8730 0.5000 +vt 0.9889 0.3989 +vt 0.9973 0.5000 +vt 0.6169 0.2556 +vt 0.7334 0.2666 +vt 0.8487 0.2830 +vt 0.9636 0.3019 +vt 0.6096 0.1334 +vt 0.7170 0.1513 +vt 0.8203 0.1797 +vt 0.9214 0.2134 +vt 0.6011 0.0111 +vt 0.6981 0.0364 +vt 0.7866 0.0786 +vt 0.8624 0.1376 +vt 0.6222 0.6222 +vt 0.5000 0.6243 +vt 0.6169 0.7444 +vt 0.5000 0.7486 +vt 0.6096 0.8666 +vt 0.5000 0.8730 +vt 0.6011 0.9889 +vt 0.5000 0.9973 +vt 0.7444 0.6169 +vt 0.7334 0.7334 +vt 0.7170 0.8487 +vt 0.6981 0.9636 +vt 0.8666 0.6096 +vt 0.8487 0.7170 +vt 0.8203 0.8203 +vt 0.7866 0.9214 +vt 0.9889 0.6011 +vt 0.9636 0.6981 +vt 0.9214 0.7866 +vt 0.8624 0.8624 +vt 0.3778 0.6222 +vt 0.2556 0.6169 +vt 0.1334 0.6096 +vt 0.0111 0.6011 +vt 0.3831 0.7444 +vt 0.2666 0.7334 +vt 0.1513 0.7170 +vt 0.0364 0.6981 +vt 0.3904 0.8666 +vt 0.2830 0.8487 +vt 0.1797 0.8203 +vt 0.0786 0.7866 +vt 0.3989 0.9889 +vt 0.3019 0.9636 +vt 0.2134 0.9214 +vt 0.1376 0.8624 +vn 0.0000 1.0000 0.0000 +usemtl None +s 1 +f 1/1/1 11/2/1 14/3/1 2/4/1 +f 2/4/1 14/3/1 15/5/1 3/6/1 +f 3/6/1 15/5/1 16/7/1 4/8/1 +f 4/8/1 16/7/1 59/9/1 60/10/1 +f 11/2/1 12/11/1 17/12/1 14/3/1 +f 14/3/1 17/12/1 18/13/1 15/5/1 +f 15/5/1 18/13/1 19/14/1 16/7/1 +f 16/7/1 19/14/1 58/15/1 59/9/1 +f 12/11/1 13/16/1 20/17/1 17/12/1 +f 17/12/1 20/17/1 21/18/1 18/13/1 +f 18/13/1 21/18/1 22/19/1 19/14/1 +f 19/14/1 22/19/1 57/20/1 58/15/1 +f 13/16/1 53/21/1 54/22/1 20/17/1 +f 20/17/1 54/22/1 55/23/1 21/18/1 +f 21/18/1 55/23/1 56/24/1 22/19/1 +f 22/19/1 56/24/1 78/25/1 57/20/1 +f 1/1/1 2/4/1 23/26/1 5/27/1 +f 5/27/1 23/26/1 24/28/1 6/29/1 +f 6/29/1 24/28/1 25/30/1 7/31/1 +f 7/31/1 25/30/1 66/32/1 67/33/1 +f 2/4/1 3/6/1 26/34/1 23/26/1 +f 23/26/1 26/34/1 27/35/1 24/28/1 +f 24/28/1 27/35/1 28/36/1 25/30/1 +f 25/30/1 28/36/1 65/37/1 66/32/1 +f 3/6/1 4/8/1 29/38/1 26/34/1 +f 26/34/1 29/38/1 30/39/1 27/35/1 +f 27/35/1 30/39/1 31/40/1 28/36/1 +f 28/36/1 31/40/1 64/41/1 65/37/1 +f 4/8/1 60/10/1 61/42/1 29/38/1 +f 29/38/1 61/42/1 62/43/1 30/39/1 +f 30/39/1 62/43/1 63/44/1 31/40/1 +f 31/40/1 63/44/1 79/45/1 64/41/1 +f 1/1/1 5/27/1 32/46/1 8/47/1 +f 8/47/1 32/46/1 33/48/1 9/49/1 +f 9/49/1 33/48/1 34/50/1 10/51/1 +f 10/51/1 34/50/1 73/52/1 74/53/1 +f 5/27/1 6/29/1 35/54/1 32/46/1 +f 32/46/1 35/54/1 36/55/1 33/48/1 +f 33/48/1 36/55/1 37/56/1 34/50/1 +f 34/50/1 37/56/1 72/57/1 73/52/1 +f 6/29/1 7/31/1 38/58/1 35/54/1 +f 35/54/1 38/58/1 39/59/1 36/55/1 +f 36/55/1 39/59/1 40/60/1 37/56/1 +f 37/56/1 40/60/1 71/61/1 72/57/1 +f 7/31/1 67/33/1 68/62/1 38/58/1 +f 38/58/1 68/62/1 69/63/1 39/59/1 +f 39/59/1 69/63/1 70/64/1 40/60/1 +f 40/60/1 70/64/1 81/65/1 71/61/1 +f 1/1/1 8/47/1 41/66/1 11/2/1 +f 11/2/1 41/66/1 42/67/1 12/11/1 +f 12/11/1 42/67/1 43/68/1 13/16/1 +f 13/16/1 43/68/1 52/69/1 53/21/1 +f 8/47/1 9/49/1 44/70/1 41/66/1 +f 41/66/1 44/70/1 45/71/1 42/67/1 +f 42/67/1 45/71/1 46/72/1 43/68/1 +f 43/68/1 46/72/1 51/73/1 52/69/1 +f 9/49/1 10/51/1 47/74/1 44/70/1 +f 44/70/1 47/74/1 48/75/1 45/71/1 +f 45/71/1 48/75/1 49/76/1 46/72/1 +f 46/72/1 49/76/1 50/77/1 51/73/1 +f 10/51/1 74/53/1 75/78/1 47/74/1 +f 47/74/1 75/78/1 76/79/1 48/75/1 +f 48/75/1 76/79/1 77/80/1 49/76/1 +f 49/76/1 77/80/1 80/81/1 50/77/1 diff --git a/models/torret.blend b/models/torret.blend new file mode 100644 index 0000000..b6674d4 Binary files /dev/null and b/models/torret.blend differ diff --git a/models/torret1.obj b/models/torret1.obj new file mode 100644 index 0000000..a5e306d --- /dev/null +++ b/models/torret1.obj @@ -0,0 +1,792 @@ +# Blender v2.79 (sub 0) OBJ File: 'torret2.blend' +# www.blender.org +mtllib torret1.mtl +o Cube.003_Cube.006 +v 0.189895 0.163143 -0.372653 +v 0.189895 0.201097 -0.378580 +v 0.080336 0.159674 -0.394870 +v 0.080336 0.197628 -0.400796 +v 0.242297 0.123751 -0.624923 +v 0.242297 0.161705 -0.630850 +v 0.132738 0.120282 -0.647140 +v 0.132738 0.158236 -0.653066 +v -0.132041 0.120282 -0.647140 +v -0.241600 0.161705 -0.630850 +v -0.241600 0.123751 -0.624923 +v -0.079638 0.197628 -0.400796 +v -0.079638 0.159674 -0.394870 +v -0.189198 0.201097 -0.378580 +v -0.189198 0.163143 -0.372653 +v -0.132041 0.158236 -0.653066 +v 0.063142 0.001380 0.512074 +v 0.063142 0.035815 0.538953 +v -0.064046 0.001380 0.512074 +v -0.064046 0.035815 0.538953 +v 0.063142 0.183763 0.278415 +v 0.063142 0.218199 0.305294 +v -0.064046 0.183763 0.278415 +v -0.064046 0.218199 0.305294 +v -0.132739 0.274292 0.122505 +v -0.132738 0.815413 0.122505 +v -0.194069 0.274292 0.122505 +v -0.194069 0.815413 0.122505 +v -0.132739 0.274292 -0.191426 +v -0.132739 0.815413 -0.191426 +v -0.194069 0.274292 -0.191426 +v -0.194069 0.815413 -0.191426 +v 0.128914 0.144853 0.197599 +v 0.128914 0.944853 0.197599 +v -0.133743 0.144853 0.197599 +v -0.133743 0.944853 0.197599 +v 0.128913 0.144853 -0.266520 +v 0.128914 0.944853 -0.266520 +v -0.133743 0.144853 -0.266520 +v -0.133743 0.944853 -0.266520 +v 0.189656 0.274292 0.122505 +v 0.189656 0.815413 0.122505 +v 0.128325 0.274292 0.122505 +v 0.128325 0.815413 0.122505 +v 0.189656 0.274292 -0.191426 +v 0.189656 0.815413 -0.191426 +v 0.128325 0.274292 -0.191426 +v 0.128325 0.815413 -0.191426 +v -0.058777 0.548149 -0.265845 +v -0.058777 0.548149 -0.273879 +v -0.043146 0.510413 -0.265845 +v -0.043146 0.510413 -0.273879 +v -0.005410 0.494783 -0.265845 +v -0.005410 0.494783 -0.273879 +v 0.032325 0.510413 -0.265845 +v 0.032325 0.510413 -0.273879 +v 0.047956 0.548149 -0.265845 +v 0.047956 0.548149 -0.273879 +v 0.032325 0.585884 -0.265845 +v 0.032325 0.585884 -0.273879 +v -0.005410 0.601515 -0.265845 +v -0.005410 0.601515 -0.273879 +v -0.043146 0.585884 -0.265845 +v -0.043146 0.585884 -0.273879 +v -0.000109 0.149264 -0.268848 +v -0.000109 0.940441 -0.268848 +v -0.004799 0.149264 -0.268848 +v -0.004799 0.940441 -0.268848 +v -0.000109 0.149264 -0.260088 +v -0.000109 0.940441 -0.260088 +v -0.004799 0.149264 -0.260088 +v -0.004799 0.940441 -0.260088 +v 0.119911 0.086846 -0.114011 +v 0.111512 0.130445 -0.112341 +v 0.038877 0.064643 -0.136101 +v 0.030478 0.108242 -0.134431 +v 0.209056 0.123944 -0.552177 +v 0.200657 0.167543 -0.550507 +v 0.128022 0.101741 -0.574268 +v 0.138016 0.145340 -0.572597 +v 0.048662 0.033870 0.495340 +v 0.048662 0.022144 0.452483 +v -0.053491 0.033870 0.495340 +v -0.053491 0.022144 0.452483 +v 0.048662 -0.476361 0.634943 +v 0.048662 -0.488087 0.592086 +v -0.053491 -0.476361 0.634943 +v -0.053491 -0.488087 0.592086 +v 0.209056 0.123944 -0.552177 +v 0.128022 0.101741 -0.574268 +v 0.219790 0.123944 -0.595985 +v 0.211391 0.167543 -0.594315 +v 0.157149 0.101741 -0.618075 +v 0.148750 0.145340 -0.616405 +v 0.312716 -0.500601 -0.680111 +v 0.231681 -0.496988 -0.702201 +v 0.323449 -0.500601 -0.723919 +v 0.242415 -0.496988 -0.746009 +v 0.080352 0.075744 -0.125056 +v 0.094276 0.014385 -0.314219 +v 0.169496 0.112843 -0.563222 +v 0.175310 0.036588 -0.292129 +v 0.135751 0.025487 -0.303174 +v 0.071953 0.119343 -0.123386 +v 0.085877 0.057984 -0.312549 +v 0.161097 0.156442 -0.561552 +v 0.166911 0.080187 -0.290458 +v 0.127351 0.069086 -0.301503 +v -0.124589 0.086846 -0.114011 +v -0.116189 0.130445 -0.112341 +v -0.043554 0.064643 -0.136101 +v -0.035155 0.108242 -0.134431 +v -0.213733 0.123944 -0.552177 +v -0.205334 0.167543 -0.550507 +v -0.132699 0.101741 -0.574268 +v -0.124300 0.145340 -0.572597 +v -0.213733 0.123944 -0.552177 +v -0.132699 0.101741 -0.574268 +v -0.224467 0.123944 -0.595985 +v -0.216068 0.167543 -0.594315 +v -0.143433 0.101741 -0.618075 +v -0.135034 0.145340 -0.616405 +v -0.317393 -0.500601 -0.680111 +v -0.236359 -0.496988 -0.702201 +v -0.328127 -0.500601 -0.723919 +v -0.247093 -0.496988 -0.746009 +v -0.085029 0.075744 -0.125056 +v -0.098953 0.014385 -0.314219 +v -0.174174 0.112843 -0.563222 +v -0.179988 0.036588 -0.292129 +v -0.140428 0.025487 -0.303174 +v -0.076630 0.119343 -0.123386 +v -0.090554 0.057984 -0.312549 +v -0.165774 0.156442 -0.561552 +v -0.171588 0.080187 -0.290458 +v -0.132029 0.069086 -0.301504 +v 0.048662 0.269229 0.190763 +v 0.048662 0.257503 0.147906 +v -0.053491 0.269229 0.190763 +v -0.053491 0.257503 0.147906 +v 0.119911 0.086846 -0.114011 +v 0.111512 0.130445 -0.112341 +v 0.038877 0.064643 -0.136101 +v 0.030478 0.108242 -0.134431 +v -0.124589 0.086846 -0.114011 +v -0.116189 0.130445 -0.112341 +v -0.043554 0.064643 -0.136101 +v -0.035155 0.108242 -0.134431 +v 0.080352 0.075744 -0.125056 +v 0.071953 0.119343 -0.123386 +v -0.085029 0.075744 -0.125056 +v -0.076630 0.119343 -0.123386 +v 0.119911 0.086846 -0.114011 +v 0.111512 0.130445 -0.112341 +v 0.038877 0.064643 -0.136101 +v 0.030478 0.108242 -0.134431 +v -0.124589 0.086846 -0.114011 +v -0.116189 0.130445 -0.112341 +v -0.043554 0.064643 -0.136101 +v -0.035155 0.108242 -0.134431 +v -0.124589 0.171454 -0.009180 +v -0.116189 0.215053 -0.007510 +v -0.043554 0.149251 -0.031270 +v -0.035155 0.192850 -0.029600 +v -0.085029 0.160352 -0.020225 +v -0.076630 0.203951 -0.018555 +v 0.119911 0.157397 -0.053308 +v 0.111512 0.200996 -0.051637 +v 0.038877 0.135194 -0.075398 +v 0.030478 0.178793 -0.073728 +v 0.080352 0.146295 -0.064353 +v 0.071953 0.189894 -0.062682 +vt 0.489132 0.748949 +vt 0.489132 0.718137 +vt 0.519717 0.718145 +vt 0.519717 0.748957 +vt 0.090171 0.693043 +vt 0.090171 0.723854 +vt 0.061402 0.723899 +vt 0.061402 0.693087 +vt 0.210985 0.718395 +vt 0.210985 0.749207 +vt 0.180404 0.749215 +vt 0.180404 0.718403 +vt 0.246514 0.722337 +vt 0.246514 0.753149 +vt 0.217065 0.753184 +vt 0.217065 0.722372 +vt 0.000000 0.693043 +vt 0.030701 0.693043 +vt 0.030701 0.723855 +vt 0.000000 0.723855 +vt 0.030701 0.693043 +vt 0.061402 0.693043 +vt 0.061402 0.723855 +vt 0.030701 0.723855 +vt 0.113868 0.693092 +vt 0.144569 0.693034 +vt 0.144569 0.729449 +vt 0.113868 0.729507 +vt 0.028567 0.723863 +vt 0.028567 0.754674 +vt 0.000000 0.754666 +vt 0.000000 0.723855 +vt 0.057131 0.723855 +vt 0.057131 0.754666 +vt 0.028567 0.754674 +vt 0.028567 0.723863 +vt 0.144569 0.693102 +vt 0.175270 0.693034 +vt 0.175270 0.728196 +vt 0.144569 0.728264 +vt 0.113868 0.693034 +vt 0.113868 0.733059 +vt 0.090234 0.749387 +vt 0.090234 0.709362 +vt 0.453595 0.706535 +vt 0.429961 0.690207 +vt 0.429961 0.730233 +vt 0.453595 0.746561 +vt 0.491495 0.718137 +vt 0.489132 0.694236 +vt 0.523439 0.692892 +vt 0.525802 0.716793 +vt 0.690895 0.620228 +vt 0.683350 0.597128 +vt 0.683350 0.421757 +vt 0.690895 0.444858 +vt 0.180404 0.543450 +vt 0.182758 0.519548 +vt 0.217065 0.520887 +vt 0.214711 0.544789 +vt 0.797976 0.023111 +vt 0.805454 0.000000 +vt 0.805454 0.175364 +vt 0.797976 0.198475 +vt 0.182758 0.717056 +vt 0.217065 0.718395 +vt 0.525802 0.519284 +vt 0.491495 0.520628 +vt 0.666799 0.889843 +vt 0.653710 0.461156 +vt 0.670262 0.460793 +vt 0.683350 0.889480 +vt 0.573487 0.421757 +vt 0.573487 0.850735 +vt 0.533024 0.888570 +vt 0.533024 0.459592 +vt 0.292521 0.928144 +vt 0.305565 0.499455 +vt 0.322117 0.499817 +vt 0.309072 0.928506 +vt 0.613599 0.850721 +vt 0.613599 0.421757 +vt 0.653710 0.459650 +vt 0.653710 0.888614 +vt 0.305565 0.967176 +vt 0.322117 0.967538 +vt 0.683350 0.421757 +vt 0.666799 0.422120 +vt 0.019350 0.693043 +vt 0.000000 0.059266 +vt 0.070884 0.057711 +vt 0.090234 0.691487 +vt 0.348156 0.690141 +vt 0.348156 0.055936 +vt 0.407978 0.000000 +vt 0.407978 0.634205 +vt 0.090234 0.633779 +vt 0.109519 0.000000 +vt 0.180404 0.001550 +vt 0.161119 0.635328 +vt 0.407978 0.634186 +vt 0.407978 0.000000 +vt 0.467279 0.056021 +vt 0.467279 0.690207 +vt 0.109519 0.691484 +vt 0.180404 0.693034 +vt 0.090234 0.000000 +vt 0.019350 0.001555 +vt 0.927182 0.678965 +vt 0.914094 0.250278 +vt 0.930645 0.249915 +vt 0.943734 0.678602 +vt 0.863881 0.210879 +vt 0.863881 0.639856 +vt 0.823417 0.677691 +vt 0.823417 0.248714 +vt 0.262925 0.928144 +vt 0.275969 0.499455 +vt 0.292521 0.499817 +vt 0.279476 0.928506 +vt 0.573487 0.850721 +vt 0.573487 0.421757 +vt 0.613599 0.459650 +vt 0.613599 0.888614 +vt 0.275969 0.967176 +vt 0.292521 0.967538 +vt 0.943734 0.210879 +vt 0.927182 0.211242 +vt 0.526837 0.561436 +vt 0.525802 0.562405 +vt 0.526922 0.532534 +vt 0.527957 0.531566 +vt 0.529626 0.520252 +vt 0.530662 0.519284 +vt 0.261228 0.519548 +vt 0.262254 0.520518 +vt 0.260242 0.532918 +vt 0.259216 0.531948 +vt 0.259409 0.562836 +vt 0.258382 0.561866 +vt 0.260242 0.592746 +vt 0.259216 0.591777 +vt 0.262254 0.605128 +vt 0.261228 0.604158 +vt 0.737396 0.137634 +vt 0.745741 0.166619 +vt 0.745741 0.196863 +vt 0.737396 0.210649 +vt 0.725595 0.199902 +vt 0.717250 0.170917 +vt 0.717250 0.140673 +vt 0.725595 0.126887 +vt 0.530662 0.603896 +vt 0.529626 0.604865 +vt 0.526922 0.592365 +vt 0.527957 0.591397 +vt 0.401848 0.734172 +vt 0.393503 0.763157 +vt 0.381702 0.773903 +vt 0.373357 0.760116 +vt 0.373357 0.729872 +vt 0.381702 0.700888 +vt 0.393503 0.690141 +vt 0.401848 0.703928 +vt 0.994427 0.211965 +vt 0.996089 0.839044 +vt 0.994823 0.839036 +vt 0.993161 0.211957 +vt 0.998881 0.838070 +vt 0.998881 0.210879 +vt 1.000000 0.211936 +vt 1.000000 0.839128 +vt 0.997751 0.210879 +vt 0.997355 0.837960 +vt 0.996089 0.837970 +vt 0.996485 0.210889 +vt 0.998881 0.210879 +vt 0.998881 0.838089 +vt 0.997751 0.839145 +vt 0.997751 0.211935 +vt 0.993557 0.210879 +vt 0.994823 0.210887 +vt 0.997751 0.839037 +vt 0.996485 0.839048 +vt 0.419228 0.746897 +vt 0.407978 0.755091 +vt 0.407978 0.706561 +vt 0.419228 0.698367 +vt 0.698133 0.347193 +vt 0.699215 0.312870 +vt 0.717830 0.331470 +vt 0.749646 0.231355 +vt 0.749881 0.265758 +vt 0.716748 0.365793 +vt 0.527891 0.514099 +vt 0.526949 0.479752 +vt 0.532082 0.484937 +vt 0.533024 0.519284 +vt 0.494398 0.414124 +vt 0.474975 0.432859 +vt 0.474033 0.398513 +vt 0.493456 0.379778 +vt 0.729140 0.108574 +vt 0.729140 0.007234 +vt 0.740514 0.000000 +vt 0.740514 0.101340 +vt 0.714070 0.736164 +vt 0.691363 0.739897 +vt 0.691363 0.728510 +vt 0.714070 0.724777 +vt 0.889098 0.635769 +vt 0.894914 0.632147 +vt 0.914094 0.858058 +vt 0.908277 0.861681 +vt 0.863881 0.436785 +vt 0.869749 0.440407 +vt 0.889098 0.861661 +vt 0.883230 0.858039 +vt 0.531090 0.632539 +vt 0.525802 0.634527 +vt 0.525802 0.606852 +vt 0.531090 0.604865 +vt 0.908277 0.214502 +vt 0.914094 0.210879 +vt 0.782198 0.435213 +vt 0.789035 0.856782 +vt 0.761467 0.857408 +vt 0.754630 0.435839 +vt 0.823417 0.211502 +vt 0.816603 0.633071 +vt 0.789035 0.632448 +vt 0.795849 0.210879 +vt 0.717250 0.014459 +vt 0.717250 0.014459 +vt 0.740514 0.000000 +vt 0.974576 0.259453 +vt 0.973975 0.225057 +vt 0.992560 0.210879 +vt 0.993161 0.245275 +vt 0.753548 0.260468 +vt 0.754630 0.719567 +vt 0.749646 0.724777 +vt 0.746721 0.223758 +vt 0.742617 0.216089 +vt 0.747601 0.210879 +vt 0.754630 0.226145 +vt 0.992000 0.730186 +vt 0.969399 0.723737 +vt 0.970561 0.718371 +vt 0.993161 0.724820 +vt 0.527891 0.000000 +vt 0.533024 0.005185 +vt 0.345667 0.978998 +vt 0.334150 0.971992 +vt 0.322117 0.965006 +vt 0.323063 0.505903 +vt 0.345667 0.499455 +vt 0.061471 0.735801 +vt 0.084178 0.739534 +vt 0.084178 0.750921 +vt 0.061471 0.747188 +vt 0.061402 0.723899 +vt 0.084109 0.727632 +vt 0.717250 0.115799 +vt 0.756487 0.007782 +vt 0.751525 0.109002 +vt 0.740514 0.101220 +vt 0.745477 0.000000 +vt 0.763052 0.015426 +vt 0.763052 0.116800 +vt 0.714001 0.748065 +vt 0.691294 0.751799 +vt 0.217065 0.543224 +vt 0.229350 0.547359 +vt 0.239504 0.600770 +vt 0.227219 0.596635 +vt 0.273697 0.117994 +vt 0.274601 0.083610 +vt 0.300568 0.103478 +vt 0.341486 0.004919 +vt 0.340582 0.039303 +vt 0.299664 0.137862 +vt 0.256530 0.514540 +vt 0.255685 0.480181 +vt 0.262080 0.485189 +vt 0.262925 0.519548 +vt 0.217130 0.415552 +vt 0.192246 0.435023 +vt 0.191402 0.400664 +vt 0.216286 0.381193 +vt 0.788994 0.009371 +vt 0.788994 0.112674 +vt 0.780519 0.121944 +vt 0.780519 0.018640 +vt 0.244691 0.719359 +vt 0.229677 0.694175 +vt 0.241808 0.691006 +vt 0.256822 0.716189 +vt 0.797976 0.103304 +vt 0.797976 0.103304 +vt 0.780519 0.121944 +vt 0.947478 0.258507 +vt 0.947551 0.224056 +vt 0.969399 0.210879 +vt 0.969325 0.245330 +vt 0.347253 0.034384 +vt 0.348156 0.494536 +vt 0.341486 0.499455 +vt 0.256822 0.663851 +vt 0.256859 0.653076 +vt 0.256822 0.642815 +vt 0.262650 0.638760 +vt 0.262651 0.659797 +vt 0.348156 0.000000 +vt 0.964146 0.731052 +vt 0.943734 0.723818 +vt 0.948987 0.718813 +vt 0.969399 0.726048 +vt 0.256530 0.000000 +vt 0.262925 0.005008 +vt 0.489132 1.000000 +vt 0.478463 0.993392 +vt 0.467279 0.986825 +vt 0.468717 0.526520 +vt 0.489132 0.519284 +vt 0.246593 0.523683 +vt 0.258382 0.527964 +vt 0.241139 0.551640 +vt 0.234309 0.519548 +vt 0.797976 0.000000 +vt 0.772039 0.112663 +vt 0.772039 0.009368 +vt 0.780519 0.018635 +vt 0.780519 0.121930 +vt 0.763052 0.103295 +vt 0.763052 0.000000 +vt 0.232080 0.722337 +vt 0.217065 0.697153 +vt 0.531090 0.664189 +vt 0.525802 0.662201 +vt 0.525802 0.634527 +vt 0.531090 0.636514 +vt 0.823417 0.857402 +vt 0.795849 0.856779 +vt 0.761467 0.211505 +vt 0.789035 0.210879 +vt 0.883230 0.210879 +vt 0.889098 0.214501 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.251293 0.605051 +vt 0.258382 0.638760 +vt 0.246593 0.634479 +vt 0.234309 0.630343 +vt 0.262925 0.062943 +vt 0.263829 0.028558 +vt 0.181248 0.489979 +vt 0.180404 0.455620 +vt 0.244691 0.641929 +vt 0.256822 0.638760 +vt 0.232080 0.644908 +vt 0.348156 0.724456 +vt 0.350583 0.690141 +vt 0.361712 0.697753 +vt 0.373357 0.705372 +vt 0.370930 0.739687 +vt 0.359285 0.732067 +vt 0.361712 0.780537 +vt 0.350583 0.772925 +vt 0.429961 0.738737 +vt 0.429961 0.690207 +vt 0.691294 0.298430 +vt 0.692376 0.264107 +vt 0.468221 0.481611 +vt 0.467279 0.447264 +vt 0.373357 0.788156 +vn -0.2010 0.1511 0.9679 +vn -0.9796 -0.0310 -0.1986 +vn 0.2010 -0.1511 -0.9679 +vn 0.9796 0.0310 0.1986 +vn -0.0000 -0.9880 0.1543 +vn -0.0000 0.9880 -0.1543 +vn -0.9796 0.0310 0.1986 +vn -0.2010 -0.1511 -0.9679 +vn 0.2010 0.1511 0.9679 +vn 0.9796 -0.0310 -0.1986 +vn 0.0000 -0.6153 0.7883 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 0.6153 -0.7883 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 -0.7883 -0.6153 +vn 0.0000 0.7883 0.6153 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.0000 -1.0000 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 0.0000 +vn -0.9239 -0.3827 -0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.3827 -0.9239 -0.0000 +vn 0.9239 -0.3827 -0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 -0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.0273 0.6520 -0.7577 +vn -0.9793 -0.0575 -0.1940 +vn 0.9562 0.1752 0.2343 +vn 0.9614 0.1771 0.2106 +vn 0.3279 -0.9076 -0.2623 +vn -0.1732 0.9325 -0.3170 +vn 0.0000 -0.9645 0.2639 +vn -0.0000 0.2639 0.9645 +vn 0.0000 -0.2639 -0.9645 +vn 0.0000 0.7053 -0.7089 +vn 0.3012 0.0944 -0.9489 +vn -0.9088 -0.0550 -0.4135 +vn -0.3003 0.9484 -0.1018 +vn -0.9097 0.0325 -0.4139 +vn -0.0418 -0.9991 -0.0102 +vn 0.9652 0.1118 0.2365 +vn -0.2303 -0.2363 0.9440 +vn 0.2576 0.2358 -0.9370 +vn 0.1732 -0.9325 0.3170 +vn 0.1661 -0.9343 0.3153 +vn 0.3146 -0.9114 -0.2653 +vn -0.3279 0.9076 0.2623 +vn -0.3872 0.8914 0.2355 +vn -0.1661 0.9343 -0.3153 +vn 0.0410 0.7775 -0.6275 +vn -0.9614 0.1771 0.2106 +vn 0.9562 -0.1752 -0.2343 +vn 0.9614 -0.1771 -0.2106 +vn 0.3279 0.9076 0.2623 +vn -0.1732 -0.9325 0.3170 +vn -0.0001 -0.7054 0.7089 +vn 0.2407 -0.0834 0.9670 +vn -0.9647 0.1165 0.2364 +vn -0.2490 -0.9668 0.0583 +vn -0.9562 0.1752 0.2343 +vn -0.0418 0.9991 0.0102 +vn 0.9652 -0.1118 -0.2365 +vn -0.2303 0.2363 -0.9440 +vn 0.2302 -0.2365 0.9440 +vn 0.1732 0.9325 -0.3170 +vn 0.1661 0.9343 -0.3153 +vn 0.3146 0.9114 0.2653 +vn -0.3279 -0.9076 -0.2623 +vn -0.3146 -0.9114 -0.2653 +vn -0.1661 -0.9343 0.3153 +vn 0.0000 0.9645 -0.2639 +vn 0.0000 -0.7913 -0.6115 +vn -0.0000 0.7913 0.6115 +vn -0.2407 0.0834 -0.9670 +vn -0.9689 0.1926 -0.1555 +vn 0.9689 -0.1926 0.1555 +vn -0.0430 -0.7775 0.6275 +vn -0.0410 -0.7775 0.6275 +vn 0.0430 0.7775 -0.6275 +vn -0.2407 -0.0834 0.9670 +vn -0.0286 -0.6520 0.7577 +vn 0.0286 0.6520 -0.7577 +vn -0.9554 -0.1926 0.2239 +vn 0.9554 0.1926 -0.2239 +vn -0.0273 -0.6520 0.7577 +usemtl Material.001 +s off +f 1/1/1 2/2/1 4/3/1 3/4/1 +f 3/5/2 4/6/2 8/7/2 7/8/2 +f 7/9/3 8/10/3 6/11/3 5/12/3 +f 5/13/4 6/14/4 2/15/4 1/16/4 +f 3/17/5 7/18/5 5/19/5 1/20/5 +f 8/21/6 4/22/6 2/23/6 6/24/6 +f 13/25/7 12/26/7 16/27/7 9/28/7 +f 15/29/8 14/30/8 12/31/8 13/32/8 +f 9/33/9 16/34/9 10/35/9 11/36/9 +f 11/37/10 10/38/10 14/39/10 15/40/10 +f 13/41/6 9/42/6 11/43/6 15/44/6 +f 16/45/6 10/46/6 14/47/6 12/48/6 +f 17/49/11 18/50/11 20/51/11 19/52/11 +f 19/53/12 20/54/12 24/55/12 23/56/12 +f 23/57/13 24/58/13 22/59/13 21/60/13 +f 21/61/14 22/62/14 18/63/14 17/64/14 +f 19/65/15 23/57/15 21/60/15 17/66/15 +f 24/67/16 20/51/16 18/50/16 22/68/16 +f 25/69/17 26/70/17 28/71/17 27/72/17 +f 27/73/12 28/74/12 32/75/12 31/76/12 +f 31/77/18 32/78/18 30/79/18 29/80/18 +f 29/81/14 30/82/14 26/83/14 25/84/14 +f 27/85/19 31/77/19 29/80/19 25/86/19 +f 32/87/20 28/71/20 26/70/20 30/88/20 +f 33/89/17 34/90/17 36/91/17 35/92/17 +f 35/93/12 36/94/12 40/95/12 39/96/12 +f 39/97/18 40/98/18 38/99/18 37/100/18 +f 37/101/14 38/102/14 34/103/14 33/104/14 +f 35/105/19 39/97/19 37/100/19 33/106/19 +f 40/107/20 36/91/20 34/90/20 38/108/20 +f 41/109/17 42/110/17 44/111/17 43/112/17 +f 43/113/12 44/114/12 48/115/12 47/116/12 +f 47/117/18 48/118/18 46/119/18 45/120/18 +f 45/121/14 46/122/14 42/123/14 41/124/14 +f 43/125/19 47/117/19 45/120/19 41/126/19 +f 48/127/20 44/111/20 42/110/20 46/128/20 +f 49/129/21 50/130/21 52/131/21 51/132/21 +f 51/132/22 52/131/22 54/133/22 53/134/22 +f 53/135/23 54/136/23 56/137/23 55/138/23 +f 55/138/24 56/137/24 58/139/24 57/140/24 +f 57/140/25 58/139/25 60/141/25 59/142/25 +f 59/142/26 60/141/26 62/143/26 61/144/26 +f 52/145/18 50/146/18 64/147/18 62/148/18 60/149/18 58/150/18 56/151/18 54/152/18 +f 61/153/27 62/154/27 64/155/27 63/156/27 +f 63/156/28 64/155/28 50/130/28 49/129/28 +f 49/157/17 51/158/17 53/159/17 55/160/17 57/161/17 59/162/17 61/163/17 63/164/17 +f 65/165/17 66/166/17 68/167/17 67/168/17 +f 67/169/14 68/170/14 72/171/14 71/172/14 +f 71/173/18 72/174/18 70/175/18 69/176/18 +f 69/177/12 70/178/12 66/179/12 65/180/12 +f 67/168/20 71/181/20 69/182/20 65/165/20 +f 72/174/19 68/183/19 66/184/19 70/175/19 +f 104/185/29 76/186/29 170/187/29 172/188/29 +f 75/189/30 76/190/30 105/191/30 80/192/30 79/193/30 100/194/30 +f 78/195/31 77/196/31 91/197/31 92/198/31 +f 77/196/32 78/195/32 107/199/32 74/200/32 73/201/32 102/202/32 +f 103/203/33 101/204/33 77/205/33 102/206/33 +f 108/207/34 104/208/34 74/209/34 107/210/34 +f 81/211/14 82/212/14 138/213/14 137/214/14 +f 83/215/12 84/216/12 88/217/12 87/218/12 +f 87/219/35 88/220/35 86/221/35 85/222/35 +f 85/223/14 86/224/14 82/212/14 81/211/14 +f 83/225/36 87/226/36 85/227/36 81/228/36 +f 88/229/37 84/230/37 82/231/37 86/232/37 +f 77/205/38 101/204/38 79/233/38 90/234/38 89/235/38 +f 93/236/39 94/237/39 92/238/39 91/239/39 +f 79/193/40 93/240/40 98/241/40 96/242/40 +f 80/192/41 106/243/41 78/244/41 92/245/41 94/246/41 +f 79/193/42 80/192/42 94/246/42 93/240/42 +f 95/247/43 96/248/43 98/249/43 97/250/43 +f 91/197/44 77/196/44 95/251/44 97/252/44 +f 77/253/45 101/254/45 79/255/45 96/256/45 95/257/45 +f 93/236/46 91/239/46 97/250/46 98/249/46 +f 99/258/47 103/259/47 102/260/47 73/261/47 +f 75/262/48 100/263/48 103/259/48 99/258/48 +f 100/264/49 79/233/49 101/204/49 103/203/49 +f 106/265/50 108/266/50 107/267/50 78/268/50 +f 80/269/51 105/270/51 108/266/51 106/265/51 +f 105/271/52 76/272/52 104/208/52 108/207/52 +f 111/273/53 127/274/53 165/275/53 163/276/53 +f 111/277/54 112/278/54 133/279/54 116/280/54 115/281/54 128/282/54 +f 114/283/55 113/284/55 119/285/55 120/286/55 +f 113/284/56 114/283/56 135/287/56 110/288/56 109/289/56 130/290/56 +f 131/291/57 129/292/57 113/293/57 130/294/57 +f 136/295/58 132/296/58 110/297/58 135/298/58 +f 113/293/59 129/292/59 115/299/59 118/300/59 117/301/59 +f 121/302/60 122/303/60 120/304/60 119/305/60 +f 115/281/61 121/306/61 126/307/61 124/308/61 +f 116/309/62 134/310/62 114/311/62 120/312/62 122/313/62 +f 115/281/63 116/280/63 122/314/63 121/306/63 +f 123/315/64 124/316/64 126/317/64 125/318/64 +f 119/285/65 113/284/65 123/319/65 125/320/65 +f 113/321/66 129/322/66 115/323/66 124/324/66 123/325/66 +f 121/302/67 119/305/67 125/318/67 126/317/67 +f 127/274/68 131/326/68 130/327/68 109/328/68 +f 111/273/69 128/329/69 131/326/69 127/274/69 +f 128/330/70 115/299/70 129/292/70 131/291/70 +f 134/331/71 136/332/71 135/333/71 114/334/71 +f 116/335/72 133/336/72 136/332/72 134/331/72 +f 133/337/73 112/338/73 132/296/73 136/295/73 +f 137/339/74 138/340/74 140/341/74 139/342/74 +f 82/231/75 84/230/75 140/343/75 138/344/75 +f 83/225/76 81/228/76 137/345/76 139/346/76 +f 84/216/12 83/215/12 139/347/12 140/348/12 +f 112/349/17 111/350/17 147/351/17 148/352/17 +f 109/353/17 110/354/17 146/355/17 145/356/17 +f 76/357/17 75/358/17 143/359/17 144/360/17 +f 73/361/17 74/362/17 142/363/17 141/364/17 +f 148/352/17 147/351/17 159/365/17 160/366/17 +f 144/360/17 143/359/17 155/367/17 156/368/17 +f 145/356/17 146/355/17 158/369/17 157/370/17 +f 141/364/17 142/363/17 154/371/17 153/372/17 +f 161/373/77 162/374/77 166/375/77 164/376/77 163/276/77 165/275/77 +f 112/278/78 111/277/78 163/377/78 164/378/78 +f 109/289/79 110/288/79 162/379/79 161/380/79 +f 110/297/80 132/296/80 166/381/80 162/382/80 +f 132/296/81 112/338/81 164/383/81 166/381/81 +f 127/274/82 109/328/82 161/373/82 165/275/82 +f 167/384/83 168/385/83 172/386/83 170/387/83 169/388/83 171/389/83 +f 99/390/84 73/391/84 167/384/84 171/389/84 +f 74/392/85 104/185/85 172/188/85 168/393/85 +f 76/190/86 75/189/86 169/394/86 170/395/86 +f 73/201/87 74/200/87 168/396/87 167/397/87 +f 75/398/88 99/390/88 171/389/88 169/388/88 +l 132 152 +l 104 150 +l 127 151 +l 99 149 diff --git a/models/torret2.obj b/models/torret2.obj new file mode 100644 index 0000000..0afe90d --- /dev/null +++ b/models/torret2.obj @@ -0,0 +1,826 @@ +# Blender v2.79 (sub 0) OBJ File: 'torret2.blend' +# www.blender.org +mtllib torret2.mtl +o Cube.003_Cube.006 +v 0.189895 0.163143 -0.372653 +v 0.189895 0.201097 -0.378580 +v 0.080336 0.159674 -0.394870 +v 0.080336 0.197628 -0.400796 +v 0.242297 0.123751 -0.624923 +v 0.242297 0.161705 -0.630850 +v 0.132738 0.120282 -0.647140 +v 0.132738 0.158236 -0.653066 +v -0.132041 0.120282 -0.647140 +v -0.241600 0.161705 -0.630850 +v -0.241600 0.123751 -0.624923 +v -0.079638 0.197628 -0.400796 +v -0.079638 0.159674 -0.394870 +v -0.189198 0.201097 -0.378580 +v -0.189198 0.163143 -0.372653 +v -0.132041 0.158236 -0.653066 +v 0.063142 0.001380 0.512074 +v 0.063142 0.035815 0.538953 +v -0.064046 0.001380 0.512074 +v -0.064046 0.035815 0.538953 +v 0.063142 0.183763 0.278415 +v 0.063142 0.218199 0.305294 +v -0.064046 0.183763 0.278415 +v -0.064046 0.218199 0.305294 +v -0.286162 0.274292 0.122505 +v -0.286162 0.815413 0.122505 +v -0.347493 0.274292 0.122505 +v -0.347493 0.815413 0.122505 +v -0.286162 0.274292 -0.191426 +v -0.286162 0.815413 -0.191426 +v -0.347493 0.274292 -0.191426 +v -0.347493 0.815413 -0.191426 +v 0.128914 0.144853 0.197599 +v 0.128914 0.944853 0.197599 +v -0.133743 0.144853 0.197599 +v -0.133743 0.944853 0.197599 +v 0.128913 0.144853 -0.266520 +v 0.128914 0.944853 -0.266520 +v -0.133743 0.144853 -0.266520 +v -0.133743 0.944853 -0.266520 +v 0.339758 0.274292 0.122505 +v 0.339758 0.815413 0.122505 +v 0.278427 0.274292 0.122505 +v 0.278427 0.815413 0.122505 +v 0.339758 0.274292 -0.191426 +v 0.339758 0.815413 -0.191426 +v 0.278427 0.274292 -0.191426 +v 0.278427 0.815413 -0.191426 +v 0.282464 0.419685 0.016073 +v 0.282464 0.670021 0.016073 +v -0.287293 0.419685 0.016073 +v -0.287293 0.670021 0.016073 +v 0.282464 0.419685 -0.084994 +v 0.282464 0.670021 -0.084994 +v -0.287293 0.419685 -0.084994 +v -0.287293 0.670021 -0.084994 +v -0.058777 0.548149 -0.265845 +v -0.058777 0.548149 -0.273879 +v -0.043146 0.510413 -0.265845 +v -0.043146 0.510413 -0.273879 +v -0.005410 0.494783 -0.265845 +v -0.005410 0.494783 -0.273879 +v 0.032325 0.510413 -0.265845 +v 0.032325 0.510413 -0.273879 +v 0.047956 0.548149 -0.265845 +v 0.047956 0.548149 -0.273879 +v 0.032325 0.585884 -0.265845 +v 0.032325 0.585884 -0.273879 +v -0.005410 0.601515 -0.265845 +v -0.005410 0.601515 -0.273879 +v -0.043146 0.585884 -0.265845 +v -0.043146 0.585884 -0.273879 +v -0.000109 0.149264 -0.268848 +v -0.000109 0.940441 -0.268848 +v -0.004799 0.149264 -0.268848 +v -0.004799 0.940441 -0.268848 +v -0.000109 0.149264 -0.260088 +v -0.000109 0.940441 -0.260088 +v -0.004799 0.149264 -0.260088 +v -0.004799 0.940441 -0.260088 +v 0.119911 0.086846 -0.114011 +v 0.111512 0.130445 -0.112341 +v 0.038877 0.064643 -0.136101 +v 0.030478 0.108242 -0.134431 +v 0.209056 0.123944 -0.552177 +v 0.200657 0.167543 -0.550507 +v 0.128022 0.101741 -0.574268 +v 0.138016 0.145340 -0.572597 +v 0.048662 0.033870 0.495340 +v 0.048662 0.022144 0.452483 +v -0.053491 0.033870 0.495340 +v -0.053491 0.022144 0.452483 +v 0.048662 -0.476361 0.634943 +v 0.048662 -0.488087 0.592086 +v -0.053491 -0.476361 0.634943 +v -0.053491 -0.488087 0.592086 +v 0.209056 0.123944 -0.552177 +v 0.128022 0.101741 -0.574268 +v 0.219790 0.123944 -0.595985 +v 0.211391 0.167543 -0.594315 +v 0.157149 0.101741 -0.618075 +v 0.148750 0.145340 -0.616405 +v 0.312716 -0.500601 -0.680111 +v 0.231681 -0.496988 -0.702201 +v 0.323449 -0.500601 -0.723919 +v 0.242415 -0.496988 -0.746009 +v 0.080352 0.075744 -0.125056 +v 0.094276 0.014385 -0.314219 +v 0.169496 0.112843 -0.563222 +v 0.175310 0.036588 -0.292129 +v 0.135751 0.025487 -0.303174 +v 0.071953 0.119343 -0.123386 +v 0.085877 0.057984 -0.312549 +v 0.161097 0.156442 -0.561552 +v 0.166911 0.080187 -0.290458 +v 0.127351 0.069086 -0.301503 +v -0.124589 0.086846 -0.114011 +v -0.116189 0.130445 -0.112341 +v -0.043554 0.064643 -0.136101 +v -0.035155 0.108242 -0.134431 +v -0.213733 0.123944 -0.552177 +v -0.205334 0.167543 -0.550507 +v -0.132699 0.101741 -0.574268 +v -0.124300 0.145340 -0.572597 +v -0.213733 0.123944 -0.552177 +v -0.132699 0.101741 -0.574268 +v -0.224467 0.123944 -0.595985 +v -0.216068 0.167543 -0.594315 +v -0.143433 0.101741 -0.618075 +v -0.135034 0.145340 -0.616405 +v -0.317393 -0.500601 -0.680111 +v -0.236359 -0.496988 -0.702201 +v -0.328127 -0.500601 -0.723919 +v -0.247093 -0.496988 -0.746009 +v -0.085029 0.075744 -0.125056 +v -0.098953 0.014385 -0.314219 +v -0.174174 0.112843 -0.563222 +v -0.179988 0.036588 -0.292129 +v -0.140428 0.025487 -0.303174 +v -0.076630 0.119343 -0.123386 +v -0.090554 0.057984 -0.312549 +v -0.165774 0.156442 -0.561552 +v -0.171588 0.080187 -0.290458 +v -0.132029 0.069086 -0.301504 +v 0.048662 0.269229 0.190763 +v 0.048662 0.257503 0.147906 +v -0.053491 0.269229 0.190763 +v -0.053491 0.257503 0.147906 +v 0.119911 0.086846 -0.114011 +v 0.111512 0.130445 -0.112341 +v 0.038877 0.064643 -0.136101 +v 0.030478 0.108242 -0.134431 +v -0.124589 0.086846 -0.114011 +v -0.116189 0.130445 -0.112341 +v -0.043554 0.064643 -0.136101 +v -0.035155 0.108242 -0.134431 +v 0.080352 0.075744 -0.125056 +v 0.071953 0.119343 -0.123386 +v -0.085029 0.075744 -0.125056 +v -0.076630 0.119343 -0.123386 +v 0.119911 0.086846 -0.114011 +v 0.111512 0.130445 -0.112341 +v 0.038877 0.064643 -0.136101 +v 0.030478 0.108242 -0.134431 +v -0.124589 0.086846 -0.114011 +v -0.116189 0.130445 -0.112341 +v -0.043554 0.064643 -0.136101 +v -0.035155 0.108242 -0.134431 +v -0.124589 0.171454 -0.009180 +v -0.116189 0.215053 -0.007510 +v -0.043554 0.149251 -0.031270 +v -0.035155 0.192850 -0.029600 +v -0.085029 0.160352 -0.020225 +v -0.076630 0.203951 -0.018555 +v 0.119911 0.157397 -0.053308 +v 0.111512 0.200996 -0.051637 +v 0.038877 0.135194 -0.075398 +v 0.030478 0.178793 -0.073728 +v 0.080352 0.146295 -0.064353 +v 0.071953 0.189894 -0.062682 +vt 0.489132 0.748949 +vt 0.489132 0.718137 +vt 0.519717 0.718145 +vt 0.519717 0.748957 +vt 0.090171 0.693043 +vt 0.090171 0.723854 +vt 0.061402 0.723899 +vt 0.061402 0.693087 +vt 0.210985 0.718395 +vt 0.210985 0.749207 +vt 0.180404 0.749215 +vt 0.180404 0.718403 +vt 0.246514 0.722337 +vt 0.246514 0.753149 +vt 0.217065 0.753184 +vt 0.217065 0.722372 +vt 0.000000 0.693043 +vt 0.030701 0.693043 +vt 0.030701 0.723855 +vt 0.000000 0.723855 +vt 0.030701 0.693043 +vt 0.061402 0.693043 +vt 0.061402 0.723855 +vt 0.030701 0.723855 +vt 0.113868 0.693092 +vt 0.144569 0.693034 +vt 0.144569 0.729449 +vt 0.113868 0.729507 +vt 0.028567 0.723863 +vt 0.028567 0.754674 +vt 0.000000 0.754666 +vt 0.000000 0.723855 +vt 0.057131 0.723855 +vt 0.057131 0.754666 +vt 0.028567 0.754674 +vt 0.028567 0.723863 +vt 0.144569 0.693102 +vt 0.175270 0.693034 +vt 0.175270 0.728196 +vt 0.144569 0.728264 +vt 0.113868 0.693034 +vt 0.113868 0.733059 +vt 0.090234 0.749387 +vt 0.090234 0.709362 +vt 0.453595 0.706535 +vt 0.429961 0.690207 +vt 0.429961 0.730233 +vt 0.453595 0.746561 +vt 0.491495 0.718137 +vt 0.489132 0.694236 +vt 0.523439 0.692892 +vt 0.525802 0.716793 +vt 0.690895 0.620228 +vt 0.683350 0.597128 +vt 0.683350 0.421757 +vt 0.690895 0.444858 +vt 0.180404 0.543450 +vt 0.182758 0.519548 +vt 0.217065 0.520887 +vt 0.214711 0.544789 +vt 0.797976 0.023111 +vt 0.805454 0.000000 +vt 0.805454 0.175364 +vt 0.797976 0.198475 +vt 0.182758 0.717056 +vt 0.217065 0.718395 +vt 0.525802 0.519284 +vt 0.491495 0.520628 +vt 0.666799 0.889843 +vt 0.653710 0.461156 +vt 0.670262 0.460793 +vt 0.683350 0.889480 +vt 0.573487 0.421757 +vt 0.573487 0.850735 +vt 0.533024 0.888570 +vt 0.533024 0.459592 +vt 0.292521 0.928144 +vt 0.305565 0.499455 +vt 0.322117 0.499817 +vt 0.309072 0.928506 +vt 0.613599 0.850721 +vt 0.613599 0.421757 +vt 0.653710 0.459650 +vt 0.653710 0.888614 +vt 0.305565 0.967176 +vt 0.322117 0.967538 +vt 0.683350 0.421757 +vt 0.666799 0.422120 +vt 0.019350 0.693043 +vt 0.000000 0.059266 +vt 0.070884 0.057711 +vt 0.090234 0.691487 +vt 0.348156 0.690141 +vt 0.348156 0.055936 +vt 0.407978 0.000000 +vt 0.407978 0.634205 +vt 0.090234 0.633779 +vt 0.109519 0.000000 +vt 0.180404 0.001550 +vt 0.161119 0.635328 +vt 0.407978 0.634186 +vt 0.407978 0.000000 +vt 0.467279 0.056021 +vt 0.467279 0.690207 +vt 0.109519 0.691484 +vt 0.180404 0.693034 +vt 0.090234 0.000000 +vt 0.019350 0.001555 +vt 0.927182 0.678965 +vt 0.914094 0.250278 +vt 0.930645 0.249915 +vt 0.943734 0.678602 +vt 0.863881 0.210879 +vt 0.863881 0.639856 +vt 0.823417 0.677691 +vt 0.823417 0.248714 +vt 0.262925 0.928144 +vt 0.275969 0.499455 +vt 0.292521 0.499817 +vt 0.279476 0.928506 +vt 0.573487 0.850721 +vt 0.573487 0.421757 +vt 0.613599 0.459650 +vt 0.613599 0.888614 +vt 0.275969 0.967176 +vt 0.292521 0.967538 +vt 0.943734 0.210879 +vt 0.927182 0.211242 +vt 0.534758 0.210879 +vt 0.533024 0.012472 +vt 0.686823 0.012472 +vt 0.688558 0.210879 +vt 0.704336 0.000000 +vt 0.704336 0.198456 +vt 0.691310 0.210636 +vt 0.691310 0.012181 +vt 0.691294 0.223350 +vt 0.689565 0.421757 +vt 0.535765 0.421757 +vt 0.537495 0.223350 +vt 0.717250 0.012199 +vt 0.717250 0.210649 +vt 0.704336 0.198450 +vt 0.704336 0.000000 +vt 0.686823 0.210879 +vt 0.533024 0.210879 +vt 0.691310 0.000000 +vt 0.537510 0.000000 +vt 0.526837 0.561436 +vt 0.525802 0.562405 +vt 0.526922 0.532534 +vt 0.527957 0.531566 +vt 0.529626 0.520252 +vt 0.530662 0.519284 +vt 0.261228 0.519548 +vt 0.262254 0.520518 +vt 0.260242 0.532918 +vt 0.259216 0.531948 +vt 0.259409 0.562836 +vt 0.258382 0.561866 +vt 0.260242 0.592746 +vt 0.259216 0.591777 +vt 0.262254 0.605128 +vt 0.261228 0.604158 +vt 0.737396 0.137634 +vt 0.745741 0.166619 +vt 0.745741 0.196863 +vt 0.737396 0.210649 +vt 0.725595 0.199902 +vt 0.717250 0.170917 +vt 0.717250 0.140673 +vt 0.725595 0.126887 +vt 0.530662 0.603896 +vt 0.529626 0.604865 +vt 0.526922 0.592365 +vt 0.527957 0.591397 +vt 0.401848 0.734172 +vt 0.393503 0.763157 +vt 0.381702 0.773903 +vt 0.373357 0.760116 +vt 0.373357 0.729872 +vt 0.381702 0.700888 +vt 0.393503 0.690141 +vt 0.401848 0.703928 +vt 0.994427 0.211965 +vt 0.996089 0.839044 +vt 0.994823 0.839036 +vt 0.993161 0.211957 +vt 0.998881 0.838070 +vt 0.998881 0.210879 +vt 1.000000 0.211936 +vt 1.000000 0.839128 +vt 0.997751 0.210879 +vt 0.997355 0.837960 +vt 0.996089 0.837970 +vt 0.996485 0.210889 +vt 0.998881 0.210879 +vt 0.998881 0.838089 +vt 0.997751 0.839145 +vt 0.997751 0.211935 +vt 0.993557 0.210879 +vt 0.994823 0.210887 +vt 0.997751 0.839037 +vt 0.996485 0.839048 +vt 0.419228 0.746897 +vt 0.407978 0.755091 +vt 0.407978 0.706561 +vt 0.419228 0.698367 +vt 0.698133 0.347193 +vt 0.699215 0.312870 +vt 0.717830 0.331470 +vt 0.749646 0.231355 +vt 0.749881 0.265758 +vt 0.716748 0.365793 +vt 0.527891 0.514099 +vt 0.526949 0.479752 +vt 0.532082 0.484937 +vt 0.533024 0.519284 +vt 0.494398 0.414124 +vt 0.474975 0.432859 +vt 0.474033 0.398513 +vt 0.493456 0.379778 +vt 0.729140 0.108574 +vt 0.729140 0.007234 +vt 0.740514 0.000000 +vt 0.740514 0.101340 +vt 0.714070 0.736164 +vt 0.691363 0.739897 +vt 0.691363 0.728510 +vt 0.714070 0.724777 +vt 0.889098 0.635769 +vt 0.894914 0.632147 +vt 0.914094 0.858058 +vt 0.908277 0.861681 +vt 0.863881 0.436785 +vt 0.869749 0.440407 +vt 0.889098 0.861661 +vt 0.883230 0.858039 +vt 0.531090 0.632539 +vt 0.525802 0.634527 +vt 0.525802 0.606852 +vt 0.531090 0.604865 +vt 0.908277 0.214502 +vt 0.914094 0.210879 +vt 0.782198 0.435213 +vt 0.789035 0.856782 +vt 0.761467 0.857408 +vt 0.754630 0.435839 +vt 0.823417 0.211502 +vt 0.816603 0.633071 +vt 0.789035 0.632448 +vt 0.795849 0.210879 +vt 0.717250 0.014459 +vt 0.717250 0.014459 +vt 0.740514 0.000000 +vt 0.974576 0.259453 +vt 0.973975 0.225057 +vt 0.992560 0.210879 +vt 0.993161 0.245275 +vt 0.753548 0.260468 +vt 0.754630 0.719567 +vt 0.749646 0.724777 +vt 0.746721 0.223758 +vt 0.742617 0.216089 +vt 0.747601 0.210879 +vt 0.754630 0.226145 +vt 0.992000 0.730186 +vt 0.969399 0.723737 +vt 0.970561 0.718371 +vt 0.993161 0.724820 +vt 0.527891 0.000000 +vt 0.533024 0.005185 +vt 0.345667 0.978998 +vt 0.334150 0.971992 +vt 0.322117 0.965006 +vt 0.323063 0.505903 +vt 0.345667 0.499455 +vt 0.061471 0.735801 +vt 0.084178 0.739534 +vt 0.084178 0.750921 +vt 0.061471 0.747188 +vt 0.061402 0.723899 +vt 0.084109 0.727632 +vt 0.717250 0.115799 +vt 0.756487 0.007782 +vt 0.751525 0.109002 +vt 0.740514 0.101220 +vt 0.745477 0.000000 +vt 0.763052 0.015426 +vt 0.763052 0.116800 +vt 0.714001 0.748065 +vt 0.691294 0.751799 +vt 0.217065 0.543224 +vt 0.229350 0.547359 +vt 0.239504 0.600770 +vt 0.227219 0.596635 +vt 0.273697 0.117994 +vt 0.274601 0.083610 +vt 0.300568 0.103478 +vt 0.341486 0.004919 +vt 0.340582 0.039303 +vt 0.299664 0.137862 +vt 0.256530 0.514540 +vt 0.255685 0.480181 +vt 0.262080 0.485189 +vt 0.262925 0.519548 +vt 0.217130 0.415552 +vt 0.192246 0.435023 +vt 0.191402 0.400664 +vt 0.216286 0.381193 +vt 0.788994 0.009371 +vt 0.788994 0.112674 +vt 0.780519 0.121944 +vt 0.780519 0.018640 +vt 0.244691 0.719359 +vt 0.229677 0.694175 +vt 0.241808 0.691006 +vt 0.256822 0.716189 +vt 0.797976 0.103304 +vt 0.797976 0.103304 +vt 0.780519 0.121944 +vt 0.947478 0.258507 +vt 0.947551 0.224056 +vt 0.969399 0.210879 +vt 0.969325 0.245330 +vt 0.347253 0.034384 +vt 0.348156 0.494536 +vt 0.341486 0.499455 +vt 0.256822 0.663851 +vt 0.256859 0.653076 +vt 0.256822 0.642815 +vt 0.262650 0.638760 +vt 0.262651 0.659797 +vt 0.348156 0.000000 +vt 0.964146 0.731052 +vt 0.943734 0.723818 +vt 0.948987 0.718813 +vt 0.969399 0.726048 +vt 0.256530 0.000000 +vt 0.262925 0.005008 +vt 0.489132 1.000000 +vt 0.478463 0.993392 +vt 0.467279 0.986825 +vt 0.468717 0.526520 +vt 0.489132 0.519284 +vt 0.246593 0.523683 +vt 0.258382 0.527964 +vt 0.241139 0.551640 +vt 0.234309 0.519548 +vt 0.797976 0.000000 +vt 0.772039 0.112663 +vt 0.772039 0.009368 +vt 0.780519 0.018635 +vt 0.780519 0.121930 +vt 0.763052 0.103295 +vt 0.763052 0.000000 +vt 0.232080 0.722337 +vt 0.217065 0.697153 +vt 0.531090 0.664189 +vt 0.525802 0.662201 +vt 0.525802 0.634527 +vt 0.531090 0.636514 +vt 0.823417 0.857402 +vt 0.795849 0.856779 +vt 0.761467 0.211505 +vt 0.789035 0.210879 +vt 0.883230 0.210879 +vt 0.889098 0.214501 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.251293 0.605051 +vt 0.258382 0.638760 +vt 0.246593 0.634479 +vt 0.234309 0.630343 +vt 0.262925 0.062943 +vt 0.263829 0.028558 +vt 0.181248 0.489979 +vt 0.180404 0.455620 +vt 0.244691 0.641929 +vt 0.256822 0.638760 +vt 0.232080 0.644908 +vt 0.348156 0.724456 +vt 0.350583 0.690141 +vt 0.361712 0.697753 +vt 0.373357 0.705372 +vt 0.370930 0.739687 +vt 0.359285 0.732067 +vt 0.361712 0.780537 +vt 0.350583 0.772925 +vt 0.429961 0.738737 +vt 0.429961 0.690207 +vt 0.691294 0.298430 +vt 0.692376 0.264107 +vt 0.468221 0.481611 +vt 0.467279 0.447264 +vt 0.373357 0.788156 +vn -0.2010 0.1511 0.9679 +vn -0.9796 -0.0310 -0.1986 +vn 0.2010 -0.1511 -0.9679 +vn 0.9796 0.0310 0.1986 +vn -0.0000 -0.9880 0.1543 +vn -0.0000 0.9880 -0.1543 +vn -0.9796 0.0310 0.1986 +vn -0.2010 -0.1511 -0.9679 +vn 0.2010 0.1511 0.9679 +vn 0.9796 -0.0310 -0.1986 +vn 0.0000 -0.6153 0.7883 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 0.6153 -0.7883 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 -0.7883 -0.6153 +vn 0.0000 0.7883 0.6153 +vn -0.0000 0.0000 1.0000 +vn 0.0000 -0.0000 -1.0000 +vn 0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 0.0000 +vn -0.9239 -0.3827 -0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.3827 -0.9239 -0.0000 +vn 0.9239 -0.3827 -0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 -0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.0273 0.6520 -0.7577 +vn -0.9793 -0.0575 -0.1940 +vn 0.9562 0.1752 0.2343 +vn 0.9614 0.1771 0.2106 +vn 0.3279 -0.9076 -0.2623 +vn -0.1732 0.9325 -0.3170 +vn 0.0000 -0.9645 0.2639 +vn -0.0000 0.2639 0.9645 +vn 0.0000 -0.2639 -0.9645 +vn 0.0000 0.7053 -0.7089 +vn 0.3012 0.0944 -0.9489 +vn -0.9088 -0.0550 -0.4135 +vn -0.3003 0.9484 -0.1018 +vn -0.9097 0.0325 -0.4139 +vn -0.0418 -0.9991 -0.0102 +vn 0.9652 0.1118 0.2365 +vn -0.2303 -0.2363 0.9440 +vn 0.2576 0.2358 -0.9370 +vn 0.1732 -0.9325 0.3170 +vn 0.1661 -0.9343 0.3153 +vn 0.3146 -0.9114 -0.2653 +vn -0.3279 0.9076 0.2623 +vn -0.3872 0.8914 0.2355 +vn -0.1661 0.9343 -0.3153 +vn 0.0410 0.7775 -0.6275 +vn -0.9614 0.1771 0.2106 +vn 0.9562 -0.1752 -0.2343 +vn 0.9614 -0.1771 -0.2106 +vn 0.3279 0.9076 0.2623 +vn -0.1732 -0.9325 0.3170 +vn -0.0001 -0.7054 0.7089 +vn 0.2407 -0.0834 0.9670 +vn -0.9647 0.1165 0.2364 +vn -0.2490 -0.9668 0.0583 +vn -0.9562 0.1752 0.2343 +vn -0.0418 0.9991 0.0102 +vn 0.9652 -0.1118 -0.2365 +vn -0.2303 0.2363 -0.9440 +vn 0.2302 -0.2365 0.9440 +vn 0.1732 0.9325 -0.3170 +vn 0.1661 0.9343 -0.3153 +vn 0.3146 0.9114 0.2653 +vn -0.3279 -0.9076 -0.2623 +vn -0.3146 -0.9114 -0.2653 +vn -0.1661 -0.9343 0.3153 +vn 0.0000 0.9645 -0.2639 +vn 0.0000 -0.7913 -0.6115 +vn -0.0000 0.7913 0.6115 +vn -0.2407 0.0834 -0.9670 +vn -0.9689 0.1926 -0.1555 +vn 0.9689 -0.1926 0.1555 +vn -0.0430 -0.7775 0.6275 +vn -0.0410 -0.7775 0.6275 +vn 0.0430 0.7775 -0.6275 +vn -0.2407 -0.0834 0.9670 +vn -0.0286 -0.6520 0.7577 +vn 0.0286 0.6520 -0.7577 +vn -0.9554 -0.1926 0.2239 +vn 0.9554 0.1926 -0.2239 +vn -0.0273 -0.6520 0.7577 +usemtl Material.001 +s off +f 1/1/1 2/2/1 4/3/1 3/4/1 +f 3/5/2 4/6/2 8/7/2 7/8/2 +f 7/9/3 8/10/3 6/11/3 5/12/3 +f 5/13/4 6/14/4 2/15/4 1/16/4 +f 3/17/5 7/18/5 5/19/5 1/20/5 +f 8/21/6 4/22/6 2/23/6 6/24/6 +f 13/25/7 12/26/7 16/27/7 9/28/7 +f 15/29/8 14/30/8 12/31/8 13/32/8 +f 9/33/9 16/34/9 10/35/9 11/36/9 +f 11/37/10 10/38/10 14/39/10 15/40/10 +f 13/41/6 9/42/6 11/43/6 15/44/6 +f 16/45/6 10/46/6 14/47/6 12/48/6 +f 17/49/11 18/50/11 20/51/11 19/52/11 +f 19/53/12 20/54/12 24/55/12 23/56/12 +f 23/57/13 24/58/13 22/59/13 21/60/13 +f 21/61/14 22/62/14 18/63/14 17/64/14 +f 19/65/15 23/57/15 21/60/15 17/66/15 +f 24/67/16 20/51/16 18/50/16 22/68/16 +f 25/69/17 26/70/17 28/71/17 27/72/17 +f 27/73/12 28/74/12 32/75/12 31/76/12 +f 31/77/18 32/78/18 30/79/18 29/80/18 +f 29/81/14 30/82/14 26/83/14 25/84/14 +f 27/85/19 31/77/19 29/80/19 25/86/19 +f 32/87/20 28/71/20 26/70/20 30/88/20 +f 33/89/17 34/90/17 36/91/17 35/92/17 +f 35/93/12 36/94/12 40/95/12 39/96/12 +f 39/97/18 40/98/18 38/99/18 37/100/18 +f 37/101/14 38/102/14 34/103/14 33/104/14 +f 35/105/19 39/97/19 37/100/19 33/106/19 +f 40/107/20 36/91/20 34/90/20 38/108/20 +f 41/109/17 42/110/17 44/111/17 43/112/17 +f 43/113/12 44/114/12 48/115/12 47/116/12 +f 47/117/18 48/118/18 46/119/18 45/120/18 +f 45/121/14 46/122/14 42/123/14 41/124/14 +f 43/125/19 47/117/19 45/120/19 41/126/19 +f 48/127/20 44/111/20 42/110/20 46/128/20 +f 49/129/17 50/130/17 52/131/17 51/132/17 +f 51/133/12 52/134/12 56/135/12 55/136/12 +f 55/137/18 56/138/18 54/139/18 53/140/18 +f 53/141/14 54/142/14 50/143/14 49/144/14 +f 51/145/19 55/137/19 53/140/19 49/146/19 +f 56/147/20 52/131/20 50/130/20 54/148/20 +f 57/149/21 58/150/21 60/151/21 59/152/21 +f 59/152/22 60/151/22 62/153/22 61/154/22 +f 61/155/23 62/156/23 64/157/23 63/158/23 +f 63/158/24 64/157/24 66/159/24 65/160/24 +f 65/160/25 66/159/25 68/161/25 67/162/25 +f 67/162/26 68/161/26 70/163/26 69/164/26 +f 60/165/18 58/166/18 72/167/18 70/168/18 68/169/18 66/170/18 64/171/18 62/172/18 +f 69/173/27 70/174/27 72/175/27 71/176/27 +f 71/176/28 72/175/28 58/150/28 57/149/28 +f 57/177/17 59/178/17 61/179/17 63/180/17 65/181/17 67/182/17 69/183/17 71/184/17 +f 73/185/17 74/186/17 76/187/17 75/188/17 +f 75/189/14 76/190/14 80/191/14 79/192/14 +f 79/193/18 80/194/18 78/195/18 77/196/18 +f 77/197/12 78/198/12 74/199/12 73/200/12 +f 75/188/20 79/201/20 77/202/20 73/185/20 +f 80/194/19 76/203/19 74/204/19 78/195/19 +f 112/205/29 84/206/29 178/207/29 180/208/29 +f 83/209/30 84/210/30 113/211/30 88/212/30 87/213/30 108/214/30 +f 86/215/31 85/216/31 99/217/31 100/218/31 +f 85/216/32 86/215/32 115/219/32 82/220/32 81/221/32 110/222/32 +f 111/223/33 109/224/33 85/225/33 110/226/33 +f 116/227/34 112/228/34 82/229/34 115/230/34 +f 89/231/14 90/232/14 146/233/14 145/234/14 +f 91/235/12 92/236/12 96/237/12 95/238/12 +f 95/239/35 96/240/35 94/241/35 93/242/35 +f 93/243/14 94/244/14 90/232/14 89/231/14 +f 91/245/36 95/246/36 93/247/36 89/248/36 +f 96/249/37 92/250/37 90/251/37 94/252/37 +f 85/225/38 109/224/38 87/253/38 98/254/38 97/255/38 +f 101/256/39 102/257/39 100/258/39 99/259/39 +f 87/213/40 101/260/40 106/261/40 104/262/40 +f 88/212/41 114/263/41 86/264/41 100/265/41 102/266/41 +f 87/213/42 88/212/42 102/266/42 101/260/42 +f 103/267/43 104/268/43 106/269/43 105/270/43 +f 99/217/44 85/216/44 103/271/44 105/272/44 +f 85/273/45 109/274/45 87/275/45 104/276/45 103/277/45 +f 101/256/46 99/259/46 105/270/46 106/269/46 +f 107/278/47 111/279/47 110/280/47 81/281/47 +f 83/282/48 108/283/48 111/279/48 107/278/48 +f 108/284/49 87/253/49 109/224/49 111/223/49 +f 114/285/50 116/286/50 115/287/50 86/288/50 +f 88/289/51 113/290/51 116/286/51 114/285/51 +f 113/291/52 84/292/52 112/228/52 116/227/52 +f 119/293/53 135/294/53 173/295/53 171/296/53 +f 119/297/54 120/298/54 141/299/54 124/300/54 123/301/54 136/302/54 +f 122/303/55 121/304/55 127/305/55 128/306/55 +f 121/304/56 122/303/56 143/307/56 118/308/56 117/309/56 138/310/56 +f 139/311/57 137/312/57 121/313/57 138/314/57 +f 144/315/58 140/316/58 118/317/58 143/318/58 +f 121/313/59 137/312/59 123/319/59 126/320/59 125/321/59 +f 129/322/60 130/323/60 128/324/60 127/325/60 +f 123/301/61 129/326/61 134/327/61 132/328/61 +f 124/329/62 142/330/62 122/331/62 128/332/62 130/333/62 +f 123/301/63 124/300/63 130/334/63 129/326/63 +f 131/335/64 132/336/64 134/337/64 133/338/64 +f 127/305/65 121/304/65 131/339/65 133/340/65 +f 121/341/66 137/342/66 123/343/66 132/344/66 131/345/66 +f 129/322/67 127/325/67 133/338/67 134/337/67 +f 135/294/68 139/346/68 138/347/68 117/348/68 +f 119/293/69 136/349/69 139/346/69 135/294/69 +f 136/350/70 123/319/70 137/312/70 139/311/70 +f 142/351/71 144/352/71 143/353/71 122/354/71 +f 124/355/72 141/356/72 144/352/72 142/351/72 +f 141/357/73 120/358/73 140/316/73 144/315/73 +f 145/359/74 146/360/74 148/361/74 147/362/74 +f 90/251/75 92/250/75 148/363/75 146/364/75 +f 91/245/76 89/248/76 145/365/76 147/366/76 +f 92/236/12 91/235/12 147/367/12 148/368/12 +f 120/369/17 119/370/17 155/371/17 156/372/17 +f 117/373/17 118/374/17 154/375/17 153/376/17 +f 84/377/17 83/378/17 151/379/17 152/380/17 +f 81/381/17 82/382/17 150/383/17 149/384/17 +f 156/372/17 155/371/17 167/385/17 168/386/17 +f 152/380/17 151/379/17 163/387/17 164/388/17 +f 153/376/17 154/375/17 166/389/17 165/390/17 +f 149/384/17 150/383/17 162/391/17 161/392/17 +f 169/393/77 170/394/77 174/395/77 172/396/77 171/296/77 173/295/77 +f 120/298/78 119/297/78 171/397/78 172/398/78 +f 117/309/79 118/308/79 170/399/79 169/400/79 +f 118/317/80 140/316/80 174/401/80 170/402/80 +f 140/316/81 120/358/81 172/403/81 174/401/81 +f 135/294/82 117/348/82 169/393/82 173/295/82 +f 175/404/83 176/405/83 180/406/83 178/407/83 177/408/83 179/409/83 +f 107/410/84 81/411/84 175/404/84 179/409/84 +f 82/412/85 112/205/85 180/208/85 176/413/85 +f 84/210/86 83/209/86 177/414/86 178/415/86 +f 81/221/87 82/220/87 176/416/87 175/417/87 +f 83/418/88 107/410/88 179/409/88 177/408/88 +l 140 160 +l 112 158 +l 135 159 +l 107 157 diff --git a/other.lua b/other.lua new file mode 100644 index 0000000..27933f8 --- /dev/null +++ b/other.lua @@ -0,0 +1,603 @@ +local pgad_rules={{x = 1, y = 0, z = 0},{x =-1, y = 0, z = 0},{x = 0, y = 1, z = 0},{x = 0, y =-1, z = 0},{x = 0, y = 0, z = 1},{x = 0, y = 0, z =-1}} + + +minetest.register_node("portalgun:cplps1", { + description = "Close player portal", + tiles = {"portalgun_gray.png"}, + groups = {mesecon=2,snappy = 3, not_in_creative_inventory=0}, + sounds = default.node_sound_stone_defaults(), + is_ground_content = false, + mesecons = {effector = { + action_on = function (pos, node) + for i, ob in pairs(minetest.get_objects_inside_radius(pos, 6)) do + if ob and ob:is_player() then + portal_delete(ob:get_player_name(),0) + end + end + minetest.swap_node(pos, {name="portalgun:cplps2"}) + minetest.after((2), function(pos) + minetest.swap_node(pos, {name="portalgun:cplps1"}) + end, pos) + + + return false + end, + }} +}) + + + +minetest.register_node("portalgun:cplps2", { + description = "Close player portal", + tiles = {"portalgun_gray.png^[colorize:#ffe85977"}, + groups = {mesecon=2,snappy = 3, not_in_creative_inventory=1}, + sounds = default.node_sound_stone_defaults(), + is_ground_content = false, + paramtype = "light", + light_source = 4, +}) + + + +minetest.register_node("portalgun:sign_v", { + description = "Sign V", + tiles = {"portalgun_v.png"}, + inventory_image = "portalgun_v.png", + drop="portalgun:sign_x", + drawtype = "nodebox", + groups = {mesecon=2,snappy = 3, not_in_creative_inventory=1}, + sounds = default.node_sound_wood_defaults(), + is_ground_content = false, + paramtype2 = "facedir", + paramtype = "light", + light_source = 5, + node_box = { + type="fixed", + fixed={-0.5,-0.5,0.45,0.5,0.5,0.5}}, + mesecons = {effector = { + action_off = function (pos, node) + minetest.swap_node(pos, {name="portalgun:sign_x", param2=minetest.get_node(pos).param2}) + end, + }} +}) + + +minetest.register_node("portalgun:sign_x", { + description = "Sign X", + tiles = {"portalgun_x.png"}, + inventory_image = "portalgun_x.png", + drawtype = "nodebox", + groups = {mesecon=2,snappy = 3, not_in_creative_inventory=0}, + sounds = default.node_sound_wood_defaults(), + is_ground_content = false, + paramtype2 = "facedir", + paramtype = "light", + light_source = 3, + node_box = { + type="fixed", + fixed={-0.5,-0.5,0.45,0.5,0.5,0.5}}, + mesecons = {effector = { + action_on = function (pos, node) + minetest.swap_node(pos, {name="portalgun:sign_v", param2=minetest.get_node(pos).param2}) + end, + }} +}) + + +local portaltarget_sig={ +{1,"portalgun_blue.png"}, +{2,"portalgun_orange.png"}, +} + +for ii = 1, #portaltarget_sig, 1 do + +minetest.register_node("portalgun:portaltarget_" .. portaltarget_sig[ii][1], { + description = "Portal target " .. portaltarget_sig[ii][1] , + tiles = {"portalgun_testblock.png^" .. portaltarget_sig[ii][2]}, + groups = {mesecon = 2,cracky=2}, + mesecons = {receptor = {state = "off"}}, + sounds = default.node_sound_stone_defaults(), + is_ground_content = false, + paramtype2 = "facedir", + paramtype = "light", + on_timer = function (pos, elapsed) + for i, ob in pairs(minetest.get_objects_inside_radius(pos, 2)) do + if ob:get_luaentity() and ob:get_luaentity().portalgun and ob:get_luaentity().project==portaltarget_sig[ii][1] then + mesecon.receptor_on(pos) + + return true + end + end + mesecon.receptor_off(pos) + return true + end, + on_construct = function(pos) + if not mesecon then return false end + minetest.get_node_timer(pos):start(2) + end, +}) +end + + + +minetest.register_node("portalgun:button", { + description = "Button", + tiles = {"portalgun_bu.png"}, + groups = {cracky = 3,mesecon=1}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + selection_box = {type = "fixed",fixed = { -0.2, -0.5, -0.2, 0.2, 0.85, 0.2 }}, + sounds = default.node_sound_defaults(), + mesecons = {receptor = {state = "off"}}, + on_rightclick = function(pos, node, clicker) + mesecon.receptor_on(pos) + minetest.get_node_timer(pos):start(2) + minetest.sound_play("default_dig_dig_immediate", {pos=pos,max_hear_distance = 10, gain = 1}) + end, + on_timer = function (pos, elapsed) + mesecon.receptor_off(pos) + end, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, 0.7, 0.25}, + {-0.125, 0.5, -0.125, 0.125, 0.77, 0.125}, + }} + + + +}) + +minetest.register_node("portalgun:dmgblock_1", { + description = "Damage block (hurts when not active)", + tiles = {"portalgun_powerwall.png"}, + groups = {cracky = 1,mesecon=2}, + drawtype="glasslike", + paramtype="light", + alpha = 50, + sunlight_propagates = true, + sounds = default.node_sound_stone_defaults(), + walkable=false, + damage_per_second = 5, + mesecons = {conductor = { + state = mesecon.state.off, + onstate = "portalgun:dmgblock_2", + rules = pgad_rules + }}, +}) +minetest.register_node("portalgun:dmgblock_2", { + description = "Damage block", + tiles = {"portalgun_gravity.png"}, + groups = {mesecon=2,not_in_creative_inventory=1}, + drawtype="airlike", + pointable=false, + sunlight_propagates = true, + drop="portalgun:dmgblock_1", + paramtype="light", + walkable=false, + mesecons = {conductor = { + state = mesecon.state.on, + offstate = "portalgun:dmgblock_1", + rules = pgad_rules + }}, +}) + + + + + + + + + + + + + +minetest.register_on_respawnplayer(function(player) + local name=player:get_player_name() + minetest.after(1, function(name) + if portalgun.checkpoints[name]~=nil then + player:move_to(portalgun.checkpoints[name]) + end + end, name) + +end) +minetest.register_on_leaveplayer(function(player) + local name=player:get_player_name() + if portalgun.checkpoints[name]~=nil then + portalgun.checkpoints[name]=nil + end +end) +minetest.register_node("portalgun:autocheckpoint", { + description = "Checkpoint (teleports to here on death)", + tiles = {"portalgun_checkpoint.png"}, + groups = {cracky = 3,not_in_creative_inventory=0}, + paramtype = "light", + sunlight_propagates = true, + light_source = 5, + sounds = default.node_sound_stone_defaults(), + drawtype="nodebox", + node_box = { + type="fixed", + fixed={-0.5,-0.5,-0.5,0.5,-0.4,0.5}}, + on_construct = function(pos) + minetest.get_meta(pos):set_string("infotext","Checkpoint") + minetest.get_node_timer(pos):start(2) + end, + on_timer = function (pos, elapsed) + for i, ob in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do + if ob:is_player() then + local name=ob:get_player_name() + if portalgun.checkpoints[name]~=nil then + local cp=portalgun.checkpoints[name] + if cp.x==pos.x and cp.y==pos.y and cp.z==pos.z then + return true + end + end + portal_delete(name,0) + portalgun_portal[name]=nil + portalgun.checkpoints[name]=pos + minetest.sound_play("portalgun_checkpoint", {pos=pos,max_hear_distance = 5, gain = 1}) + minetest.chat_send_player(name, " You will spawn here next time you die") + end + end + return true + end, +}) + +minetest.register_node("portalgun:powerdoor1_1", { + description = "Power door", + inventory_image = "portalgun_powerwall.png", + wield_image = "portalgun_powerwall.png", + groups = {mesecon=1,unbreakable = 1,not_in_creative_inventory=0}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + sounds = default.node_sound_stone_defaults(), + drawtype="nodebox", + alpha = 160, + node_box = { + type="fixed", + fixed={-0.5,-0.5,0.4,0.5,0.5,0.5}}, + tiles = { + { + name = "portalgun_powerwall1.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 0.2, + }, + }, + }, +after_place_node = function(pos, placer, itemstack) + local name=placer:get_player_name() + minetest.get_meta(pos):set_string("owner",name) + local p2=minetest.get_node(pos) + pos.y=pos.y+1 + local n=minetest.get_node(pos) + if n.name=="air" then + minetest.set_node(pos,{name="portalgun:powerdoor1_2",param2=p2.param2}) + minetest.get_meta(pos):set_string("owner",name) + end + end, +on_punch = function(pos, node, player, pointed_thing) + local meta = minetest.get_meta(pos); + if meta:get_string("owner")==player:get_player_name() then + minetest.node_dig(pos,minetest.get_node(pos),player) + pos.y=pos.y+1 + local un=minetest.get_node(pos).name + if un=="portalgun:powerdoor1_2" then + minetest.set_node(pos,{name="air"}) + end + pos.y=pos.y-1 + return true + end + end, + mesecons = {conductor = { + state = mesecon.state.off, + onstate = "portalgun:powerdoor2_1", + rules = pgad_rules + }}, +}) + +minetest.register_node("portalgun:powerdoor1_2", { + description = "Power door", + inventory_image = "portalgun_powerwall.png", + groups = {mesecon=1,unbreakable = 1,not_in_creative_inventory=1}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + sounds = default.node_sound_stone_defaults(), + drawtype="nodebox", + alpha = 160, + node_box = { + type="fixed", + fixed={-0.5,-0.5,0.4,0.5,0.5,0.5}}, + tiles = { + { + name = "portalgun_powerwall1.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 0.2, + }, + }, + }, +on_punch = function(pos, node, player, pointed_thing) + local meta = minetest.get_meta(pos); + if meta:get_string("owner")==player:get_player_name() then + minetest.set_node(pos,{name="air"}) + pos.y=pos.y-1 + local un=minetest.get_node(pos).name + if un=="portalgun:powerdoor1_1" then + minetest.node_dig(pos,minetest.get_node(pos),player) + end + pos.y=pos.y+1 + return true + end + end, + mesecons = {conductor = { + state = mesecon.state.off, + onstate = "portalgun:powerdoor2_2", + rules = pgad_rules + }}, +}) + +minetest.register_node("portalgun:powerdoor2_1", { + description = "Power door", + inventory_image = "portalgun_powerwall.png", + groups = {unbreakable=1,mesecon=1,not_in_creative_inventory=1}, + paramtype = "light", + sunlight_propagates = true, + drawtype="airlike", + walkable = false, + pointable = false, + diggable = false, + mesecons = {conductor = { + state = mesecon.state.on, + offstate = "portalgun:powerdoor1_1", + rules = pgad_rules + }}, +}) + +minetest.register_node("portalgun:powerdoor2_2", { + description = "Power door", + inventory_image = "portalgun_powerwall.png", + groups = {unbreakable=1,mesecon=1,not_in_creative_inventory=1}, + paramtype = "light", + sunlight_propagates = true, + drawtype="airlike", + walkable = false, + pointable = false, + diggable = false, + mesecons = {conductor = { + state = mesecon.state.on, + offstate = "portalgun:powerdoor1_2", + rules = pgad_rules + }}, +}) + + +minetest.register_node("portalgun:delayer", { + description = "Delayer (Punsh to change time)", + tiles = {"portalgun_delayer.png","portalgun_testblock.png"}, + groups = {dig_immediate = 2,mesecon=1}, + sounds = default.node_sound_stone_defaults(), + paramtype = "light", + sunlight_propagates = true, + drawtype="nodebox", + node_box = { + type="fixed", + fixed={-0.5,-0.5,-0.5,0.5,-0.4,0.5}}, +on_punch = function(pos, node, player, pointed_thing) + if minetest.is_protected(pos, player:get_player_name())==false then + local meta = minetest.get_meta(pos) + local time=meta:get_int("time") + if time>=10 then time=0 end + meta:set_int("time",time+1) + meta:set_string("infotext","Delayer (" .. (time+1) ..")") + end + end, + + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_int("time",1) + meta:set_string("infotext","Delayer (1)") + meta:set_int("case",0) + end, + on_timer = function (pos, elapsed) + local meta = minetest.get_meta(pos) + if meta:get_int("case")==2 then + meta:set_int("case",0) + mesecon.receptor_off(pos) + end + if meta:get_int("case")==1 then + meta:set_int("case",2) + mesecon.receptor_on(pos) + minetest.get_node_timer(pos):start(meta:get_int("time")) + end + return false + end, + + mesecons = {effector = { + action_on = function (pos, node) + local meta = minetest.get_meta(pos) + if meta:get_int("case")==0 then + meta:set_int("case",1) + minetest.get_node_timer(pos):start(meta:get_int("time")) + end + + end, + }} +}) + + +minetest.register_node("portalgun:testblocks", { + description = "Trapblock", + tiles = {"portalgun_testblock.png"}, + groups = {cracky = 1,mesecon=2}, + sounds = default.node_sound_stone_defaults(), + mesecons = {conductor = { + state = mesecon.state.off, + onstate = "portalgun:testblocks2", + rules = pgad_rules + }}, +}) +minetest.register_node("portalgun:testblocks2", { + description = "Damage block", + tiles = {"portalgun_gravity.png"}, + groups = {mesecon=2,not_in_creative_inventory=1}, + drawtype="airlike", + pointable=false, + sunlight_propagates = true, + drop="portalgun:testblocks", + paramtype="light", + walkable=false, + mesecons = {conductor = { + state = mesecon.state.on, + offstate = "portalgun:testblocks", + rules = pgad_rules + }}, +}) + +minetest.register_node("portalgun:door_1", { + description = "Mesecon Door", + drop="portalgun:door_1", + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.125, 0.5, 0.5, 0.125}, + } + }, + tiles = {"portalgun_testblock.png"}, + groups = {mesecon=1,cracky = 1, level = 2, not_in_creative_inventory=0}, + sounds = default.node_sound_stone_defaults(), + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = false, +after_place_node = function(pos, placer, itemstack, pointed_thing) + local p={x=pos.x,y=pos.y+1,z=pos.z} + if minetest.registered_nodes[minetest.get_node(p).name].walkable then + return false + else + minetest.set_node(p, {name = "portalgun:door_2",param2=minetest.get_node(pos).param2}) + end + end, + + + + mesecons = {effector = { + action_on = function (pos, node) + local p={x=pos.x,y=pos.y+1,z=pos.z} + minetest.swap_node(p, {name="portalgun:door_open_2", param2=minetest.get_node(pos).param2}) + minetest.swap_node(pos, {name="portalgun:door_open_1", param2=minetest.get_node(pos).param2}) + minetest.sound_play("portalgun_door", {pos=pos, gain = 1, max_hear_distance = 5}) + end, + }}, +after_dig_node = function (pos, name, digger) + minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name = "air"}) + end, +}) + +minetest.register_node("portalgun:door_2", { + description = "Door 2-1", + drawtype = "nodebox", + drop="portalgun:door_1", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.125, 0.5, 0.5, 0.125}, + } + }, + tiles = {"portalgun_testblock.png"}, + groups = {mesecon=1,cracky = 1, level = 2, not_in_creative_inventory=1}, + sounds = default.node_sound_wood_defaults(), + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = false, + mesecons = {effector = { + action_on = function (pos, node) + local p={x=pos.x,y=pos.y-1,z=pos.z} + minetest.swap_node(p, {name="portalgun:door_open_1", param2=minetest.get_node(pos).param2}) + minetest.swap_node(pos, {name="portalgun:door_open_2", param2=minetest.get_node(pos).param2}) + minetest.sound_play("portalgun_door", {pos=pos, gain = 1, max_hear_distance = 5}) + + end, + }}, +after_dig_node = function (pos, name, digger) + minetest.set_node({x=pos.x,y=pos.y-1,z=pos.z}, {name = "air"}) + end, +}) + +minetest.register_node("portalgun:door_open_1", { + description = "Door (open) 2-o-1", + drop="portalgun:door_1", + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {0.41, -0.5, -0.124, 1.41, 0.5, 0.125}, + } + }, + tiles = {"portalgun_testblock.png"}, + groups = {mesecon=1,cracky = 1, level = 2, not_in_creative_inventory=1}, + sounds = default.node_sound_wood_defaults(), + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = false, +after_dig_node = function (pos, name, digger) + minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name = "air"}) + end, + mesecons = {effector = { + action_off = function (pos, node) + local p={x=pos.x,y=pos.y+1,z=pos.z} + minetest.sound_play("portalgun_door", {pos=pos, gain = 1, max_hear_distance = 5}) + minetest.swap_node(p, {name="portalgun:door_2", param2=minetest.get_node(pos).param2}) + minetest.swap_node(pos, {name="portalgun:door_1", param2=minetest.get_node(pos).param2}) + end, + }} +}) + +minetest.register_node("portalgun:door_open_2", { + description = "Door (open) 2-o-1", + drawtype = "nodebox", + drop="portalgun:door_1", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {0.41, -0.5, -0.124, 1.41, 0.5, 0.125}, + } + }, + tiles = {"portalgun_testblock.png"}, + groups = {mesecon=1,cracky = 1, level = 2, not_in_creative_inventory=1}, + sounds = default.node_sound_wood_defaults(), + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = false, +after_dig_node = function (pos, name, digger) + minetest.set_node({x=pos.x,y=pos.y-1,z=pos.z}, {name = "air"}) + end, + mesecons = {effector = { + action_off = function (pos, node) + local p={x=pos.x,y=pos.y-1,z=pos.z} + minetest.sound_play("portalgun_door", {pos=pos, gain = 1, max_hear_distance = 5}) + minetest.swap_node(p, {name="portalgun:door_1", param2=minetest.get_node(pos).param2}) + minetest.swap_node(pos, {name="portalgun:door_2", param2=minetest.get_node(pos).param2}) + end, + }} +}) diff --git a/powerball.lua b/powerball.lua new file mode 100644 index 0000000..58fd8c3 --- /dev/null +++ b/powerball.lua @@ -0,0 +1,137 @@ +minetest.register_node("portalgun:powerballspawner", { + description = "Power ball spawner" , + tiles = {"default_steel_block.png","default_steel_block.png","default_steel_block.png","default_steel_block.png","default_steel_block.png","portalgun_powerballspawner.png"}, + groups = {cracky=2}, + sounds = default.node_sound_glass_defaults(), + is_ground_content = false, + paramtype2 = "facedir", + on_place = minetest.rotate_node, + on_construct = function(pos) + minetest.get_node_timer(pos):start(10) + end, + on_timer = function (pos, elapsed) + local dir=minetest.get_node(pos).param2 + local v={x=0, y=0, z=0} + if dir==0 then v.z=-1 + elseif dir==1 then v.x=-1 + elseif dir==2 then v.z=1 + elseif dir==3 then v.x=1 + elseif dir==8 then v.y=-1 + elseif dir==4 then v.y=1 + end + local pv={x=pos.x+v.x, y=pos.y+v.y, z=pos.z+v.z} + portalgun.new=1 + local m=minetest.add_entity(pv, "portalgun:powerball") + m:set_velocity({x=v.x*4, y=v.y*4, z=v.z*4}) + return true + end, +}) + +minetest.register_node("portalgun:powerballspawner2", { + description = "Power ball spawner (spawn on activate)" , + tiles = {"default_steel_block.png","default_steel_block.png","default_steel_block.png","default_steel_block.png","default_steel_block.png","portalgun_powerballspawner.png^[colorize:#aaaa0055"}, + groups = {cracky=2,mesecon=1}, + sounds = default.node_sound_glass_defaults(), + is_ground_content = false, + paramtype2 = "facedir", + on_place = minetest.rotate_node, + mesecons = {effector = { + action_on = function (pos, node) + local dir=minetest.get_node(pos).param2 + local v={x=0, y=0, z=0} + if dir==0 then v.z=-1 + elseif dir==1 then v.x=-1 + elseif dir==2 then v.z=1 + elseif dir==3 then v.x=1 + elseif dir==8 then v.y=-1 + elseif dir==4 then v.y=1 + end + local pv={x=pos.x+v.x, y=pos.y+v.y, z=pos.z+v.z} + portalgun.new=1 + local m=minetest.add_entity(pv, "portalgun:powerball") + m:set_velocity({x=v.x*4, y=v.y*4, z=v.z*4}) + end + }} +}) + + +minetest.register_entity("portalgun:powerball",{ + hp_max = 1000, + physical = true, + weight = 0, + collisionbox = {-0.4,-0.4,-0.4, 0.4,0.4,0.4}, + visual = "sprite", + visual_size = {x=1.1, y=1.1}, + textures = {"portalgun_powrball.png"}, + initial_sprite_basepos = {x=0, y=0}, + is_visible = true, + makes_footstep_sound = false, + automatic_rotate = false, + portalgun=2, + powerball=1, +on_activate= function(self, staticdata) + if portalgun.new==0 then + self.object:remove() + return self + end + portalgun.new=0 + local pos=self.object:get_pos() + self.sound=minetest.sound_play("portalgun_powerball", {pos=pos,max_hear_distance = 10, gain = 0.5}) + minetest.sound_play("portalgun_powerballbonce", {pos=pos,max_hear_distance = 10, gain = 1}) +end, +on_step= function(self, dtime) + self.timer=self.timer+dtime + if self.timer<0.2 then return self end + self.timer=0 + local pos=self.object:get_pos() + for i, ob in pairs(minetest.get_objects_inside_radius(pos, 2)) do + if ob:is_player() or (ob:get_luaentity() and ob:get_luaentity().portalgun~=1 and ob:get_luaentity().wsc==nil and ob:get_luaentity().powerball~=1) then + ob:set_hp(0) + ob:punch(ob, {full_punch_interval=1.0,damage_groups={fleshy=9000}}, "default:bronze_pick", nil) + + end + end + self.timer2=self.timer2+1 + self.timer3=self.timer3+1 + if self.timer3>=9 then + self.timer3=0 + minetest.sound_stop(self.sound) + self.sound=minetest.sound_play("portalgun_powerball", {pos=pos,max_hear_distance = 10, gain = 0.5}) + end + if self.timer2>40 then + minetest.sound_stop(self.sound) + self.object:set_hp(0) + self.object:punch(self.object, {full_punch_interval=1.0,damage_groups={fleshy=9000}}, "default:bronze_pick", nil) + return self + end + local v=self.object:get_velocity() + local nextn={x=pos.x+(v.x)/3, y=pos.y+(v.y)/3, z=pos.z+(v.z)/3} + local nname=minetest.get_node(nextn).name + if minetest.registered_nodes[nname].walkable then + + if nname=="portalgun:powerballtarget" and mesecon then + mesecon.receptor_on(nextn) + minetest.get_node_timer(nextn):start(5) + end + self.object:set_velocity({x=v.x*-1, y=v.y*-1, z=v.z*-1}) + minetest.sound_play("portalgun_powerballbonce", {pos=pos,max_hear_distance = 10, gain = 1}) + end + end, + timer=0, + timer2=0, + timer3=0, + sound={} +}) + +minetest.register_node("portalgun:powerballtarget", { + description = "Power ball target" , + tiles = {"portalgun_powerballstarget.png"}, + groups = {mesecon = 2,cracky=2}, + mesecons = {receptor = {state = "off"}}, + sounds = default.node_sound_stone_defaults(), + is_ground_content = false, + on_timer = function (pos, elapsed) + mesecon.receptor_off(pos) + return false + end, +}) diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..345de3a Binary files /dev/null and b/screenshot.png differ diff --git a/sounds/portalgun_bullet1.ogg b/sounds/portalgun_bullet1.ogg new file mode 100644 index 0000000..18741d9 Binary files /dev/null and b/sounds/portalgun_bullet1.ogg differ diff --git a/sounds/portalgun_checkpoint.ogg b/sounds/portalgun_checkpoint.ogg new file mode 100644 index 0000000..1675ac9 Binary files /dev/null and b/sounds/portalgun_checkpoint.ogg differ diff --git a/sounds/portalgun_closeportals.ogg b/sounds/portalgun_closeportals.ogg new file mode 100644 index 0000000..19c90ef Binary files /dev/null and b/sounds/portalgun_closeportals.ogg differ diff --git a/sounds/portalgun_door.ogg b/sounds/portalgun_door.ogg new file mode 100644 index 0000000..d8eb0f7 Binary files /dev/null and b/sounds/portalgun_door.ogg differ diff --git a/sounds/portalgun_error.ogg b/sounds/portalgun_error.ogg new file mode 100644 index 0000000..636514e Binary files /dev/null and b/sounds/portalgun_error.ogg differ diff --git a/sounds/portalgun_mode.ogg b/sounds/portalgun_mode.ogg new file mode 100644 index 0000000..fe30e0b Binary files /dev/null and b/sounds/portalgun_mode.ogg differ diff --git a/sounds/portalgun_portalblue.ogg b/sounds/portalgun_portalblue.ogg new file mode 100644 index 0000000..201370d Binary files /dev/null and b/sounds/portalgun_portalblue.ogg differ diff --git a/sounds/portalgun_portalorange.ogg b/sounds/portalgun_portalorange.ogg new file mode 100644 index 0000000..1b0f688 Binary files /dev/null and b/sounds/portalgun_portalorange.ogg differ diff --git a/sounds/portalgun_powerball.ogg b/sounds/portalgun_powerball.ogg new file mode 100644 index 0000000..a0c4898 Binary files /dev/null and b/sounds/portalgun_powerball.ogg differ diff --git a/sounds/portalgun_powerballbonce.ogg b/sounds/portalgun_powerballbonce.ogg new file mode 100644 index 0000000..eed316d Binary files /dev/null and b/sounds/portalgun_powerballbonce.ogg differ diff --git a/sounds/portalgun_teleport.ogg b/sounds/portalgun_teleport.ogg new file mode 100644 index 0000000..6e1e26b Binary files /dev/null and b/sounds/portalgun_teleport.ogg differ diff --git a/stuff.lua b/stuff.lua new file mode 100644 index 0000000..5349654 --- /dev/null +++ b/stuff.lua @@ -0,0 +1,549 @@ +local snuma=1 +for ii = 0, 9, 1 do +if ii==1 then snuma=0 end +minetest.register_node("portalgun:sign_numa".. ii, { + description = "Sign number (" .. ii ..")", + tiles = {"portalgun_snum" .. ii ..".png"}, + drop="portalgun:sign_numa1", + drawtype = "nodebox", + groups = {mesecon=2,portalnuma=1,dig_immediate = 3, not_in_creative_inventory=snuma}, + sounds = default.node_sound_wood_defaults(), + is_ground_content = false, + paramtype2 = "facedir", + paramtype = "light", + light_source = 3, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.4375, 0, 0.5, 0.5}, + } + }, +after_place_node = function(pos, placer, itemstack) + local param2=minetest.get_node(pos).param2 + local pos2=portalgun_param2(pos,param2) + if minetest.get_node(pos2) and minetest.get_node(pos2).name=="air" then + minetest.set_node(pos2,{name="portalgun:sign_numb1",param2=param2}) + minetest.swap_node(pos, {name="portalgun:sign_numa0", param2=minetest.get_node(pos).param2}) + end + end, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + if not minetest.is_protected(pos,clicker:get_player_name()) then + local iin=ii+1 + if iin==10 then iin=0 end + minetest.swap_node(pos, {name="portalgun:sign_numa".. iin, param2=minetest.get_node(pos).param2}) + end + end, + on_punch = function(pos, node, player, pointed_thing) + local param2=minetest.get_node(pos).param2 + local pos2=portalgun_param2(pos,param2) + local node=minetest.get_node(pos2) + if node and minetest.get_node_group(node.name, "portalnumb")>0 then + minetest.set_node(pos2, {name = "air"}) + end + end, + + +}) +if snuma==0 then snuma=1 end +minetest.register_node("portalgun:sign_numb".. ii, { + description = "Sign number", + tiles = {"portalgun_snum" .. ii ..".png"}, + drop="portalgun:sign_numa1", + drawtype = "nodebox", + groups = {mesecon=2,portalnumb=1,dig_immediate = 3, not_in_creative_inventory=1}, + sounds = default.node_sound_wood_defaults(), + is_ground_content = false, + paramtype2 = "facedir", + paramtype = "light", + light_source = 3, + node_box = { + type = "fixed", + fixed = { + {-1, -0.5, 0.4375, -0.5, 0.5, 0.5}, + } + }, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + if not minetest.is_protected(pos,clicker:get_player_name()) then + local iin=ii+1 + if iin==10 then iin=0 end + minetest.swap_node(pos, {name="portalgun:sign_numb".. iin, param2=minetest.get_node(pos).param2}) + end + end, + on_punch = function(pos, node, player, pointed_thing) + local param2=minetest.get_node(pos).param2 + local pos2=portalgun_param2(pos,param2,true) + local node=minetest.get_node(pos2) + if node and minetest.get_node_group(node.name, "portalnuma")>0 then + minetest.set_node(pos2, {name = "air"}) + end + end, +}) +end + +minetest.register_node("portalgun:turretgun2", { + description = "Sentry turret", + groups = {cracky=3,not_in_creative_inventory=1}, + drop="portalgun:turretgun", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + sounds = default.node_sound_defaults(), + tiles = {"portalgun_sentry_turret.png"}, + drawtype = "mesh", + mesh="torret2.obj", + selection_box = { + type = "fixed", + fixed = { + {-0.3, -0.5, -0.3, 0.3, 1,0.3}, + } + }, + on_timer=function(pos, elapsed) + local p=minetest.get_node(pos).param2 + local pos1={x=pos.x,y=pos.y+0.5,z=pos.z} + local d + for i, ob in pairs(minetest.get_objects_inside_radius(pos, 10)) do + if portalgun_visiable(pos1,ob) and (ob:is_player() or (ob:get_luaentity() and (ob:get_luaentity().type or ob:get_luaentity().portalgun==nil))) then + local a=ob:get_pos() + if a.ypos.y-1 then + a={x=math.floor(a.x),y=math.floor(a.y),z=math.floor(a.z)} + if p==3 and a.x>pos.x and a.z==pos.z then + d={x=20,y=0,z=0} + break + elseif p==1 and a.xpos.z and a.x==pos.x then + d={x=0,y=0,z=20} + break + elseif p==0 and a.zpos.y-1 then + a={x=math.floor(a.x),y=math.floor(a.y),z=math.floor(a.z)} + if p==3 and a.x>pos.x and a.z==pos.z then + d={x=20,y=0,z=0} + break + elseif p==1 and a.xpos.z and a.x==pos.x then + d={x=0,y=0,z=20} + break + elseif p==0 and a.z=pos.z then + return true + end + if z==-1 and oz==pos.z and ox<=pos.x then + return true + end + if z==1 and oz==pos.z and ox>=pos.x then + return true + end + return false +end + +minetest.register_node("portalgun:secam_off", { + description = "Security cam (off)" , + tiles = {"portalgun_scam.png"}, + drawtype = "nodebox", + walkable=false, + groups = {dig_immediate = 3}, + sounds = default.node_sound_glass_defaults(), + is_ground_content = false, + paramtype = "light", + paramtype2 = "facedir", + node_box = {type="fixed", + fixed={ {-0.2, -0.5, -0.2, 0.2, -0.4, 0.2}, + {-0.1, -0.2, -0.1, 0.1, -0.4, 0.1}} + }, + on_place = minetest.rotate_node, + on_construct = function(pos) + minetest.get_meta(pos):set_string("infotext","click to activate") + end, +on_rightclick = function(pos, node, player, itemstack, pointed_thing) + minetest.set_node(pos, {name ="portalgun:secam", param1 = node.param1, param2 = node.param2}) + minetest.get_node_timer(pos):start(1) +end, +}) + +minetest.register_node("portalgun:secam", { + description = "Security cam", + tiles = {"portalgun_scam.png"}, + drawtype = "nodebox", + walkable=false, + groups = {dig_immediate = 3,stone=1,not_in_creative_inventory=1}, + sounds = default.node_sound_glass_defaults(), + is_ground_content = false, + paramtype = "light", + paramtype2 = "facedir", + drop="portalgun:secam_off", + node_box = {type="fixed", + fixed={ {-0.2, -0.5, -0.2, 0.2, -0.4, 0.2}, + {-0.1, -0.2, -0.1, 0.1, -0.4, 0.1}} + }, +on_timer=function(pos, elapsed) + for i, ob in pairs(minetest.get_objects_inside_radius(pos, 10)) do + if ob:is_player() or (ob:get_luaentity() and ob:get_luaentity().itemstring==nil and ob:get_luaentity().portalgun==nil) then + if portalgun_visiable(pos,ob) then + local v=ob:get_pos() + if not ob:get_luaentity() then v.y=v.y+1 end + local s={x=(v.x-pos.x)*3,y=(v.y-pos.y)*3,z=(v.z-pos.z)*3} + local m=minetest.add_entity(pos, "portalgun:bullet1") + m:set_velocity(s) + m:set_acceleration(s) + minetest.sound_play("portalgun_bullet1", {pos=pos, gain = 1, max_hear_distance = 15,}) + minetest.after((math.random(1,9)*0.1), function(pos,s,v) + local m=minetest.add_entity(pos, "portalgun:bullet1") + m:set_velocity(s) + m:set_acceleration(s) + minetest.sound_play("portalgun_bullet1", {pos=pos, gain = 1, max_hear_distance = 15,}) + end, pos,s,v) + end + end + end + return true + end, +}) + +minetest.register_entity("portalgun:bullet1",{ + hp_max = 1, + --physical = true, + --collisionbox={-0.01,-0.01,-0.01,0.01,0.01,0.01}, + pointable=false, + visual = "sprite", + visual_size = {x=0.1, y=0.1}, + textures = {"default_mese_block.png"}, + initial_sprite_basepos = {x=0, y=0}, + portalgun=2, + bullet=1, +on_step= function(self, dtime) + self.timer=self.timer+dtime + self.timer2=self.timer2+dtime + local pos=self.object:get_pos() + local n=minetest.registered_nodes[minetest.get_node(self.object:get_pos()).name] + if self.timer>1 or (n and n.walkable) then + self.object:remove() + return + end + for i, ob in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do + if ob:is_player() or (ob:get_luaentity() and ob:get_luaentity().bullet~=1) then + ob:set_hp(ob:get_hp()-7) + ob:punch(self.object, 1,{full_punch_interval=1.0,damage_groups={fleshy=4}}, "default:bronze_pick", nil) + self.object:remove() + return + end + end + end, + timer=0, + timer2=0, +}) + +minetest.register_node("portalgun:sign1", { + description = "Portal sign blue", + tiles = {"portalgun_testblock.png^portalgun_sign1.png"}, + inventory_image = "portalgun_testblock.png^portalgun_sign1.png", + drawtype = "nodebox", + groups = {snappy = 3, not_in_creative_inventory=0}, + sounds = default.node_sound_wood_defaults(), + is_ground_content = false, + paramtype2 = "facedir", + paramtype = "light", + node_box = { + type="fixed", + fixed={-0.5,-0.5,0.45,0.5,0.5,0.5}}, +}) + +minetest.register_node("portalgun:sign2", { + description = "Portal sign orange", + tiles = {"portalgun_testblock.png^portalgun_sign2.png"}, + inventory_image = "portalgun_testblock.png^portalgun_sign2.png", + drawtype = "nodebox", + groups = {snappy = 3, not_in_creative_inventory=0}, + sounds = default.node_sound_wood_defaults(), + is_ground_content = false, + paramtype2 = "facedir", + paramtype = "light", + node_box = { + type="fixed", + fixed={-0.5,-0.5,0.45,0.5,0.5,0.5}}, +}) diff --git a/textures/portalgun_blue.png b/textures/portalgun_blue.png new file mode 100644 index 0000000..18d55b7 Binary files /dev/null and b/textures/portalgun_blue.png differ diff --git a/textures/portalgun_bu.png b/textures/portalgun_bu.png new file mode 100644 index 0000000..586a39d Binary files /dev/null and b/textures/portalgun_bu.png differ diff --git a/textures/portalgun_cake1.png b/textures/portalgun_cake1.png new file mode 100644 index 0000000..b2d4cf3 Binary files /dev/null and b/textures/portalgun_cake1.png differ diff --git a/textures/portalgun_cake2.png b/textures/portalgun_cake2.png new file mode 100644 index 0000000..f30b831 Binary files /dev/null and b/textures/portalgun_cake2.png differ diff --git a/textures/portalgun_checkpoint.png b/textures/portalgun_checkpoint.png new file mode 100644 index 0000000..abd410a Binary files /dev/null and b/textures/portalgun_checkpoint.png differ diff --git a/textures/portalgun_delayer.png b/textures/portalgun_delayer.png new file mode 100644 index 0000000..80c9629 Binary files /dev/null and b/textures/portalgun_delayer.png differ diff --git a/textures/portalgun_edestroyer.png b/textures/portalgun_edestroyer.png new file mode 100644 index 0000000..c66715e Binary files /dev/null and b/textures/portalgun_edestroyer.png differ diff --git a/textures/portalgun_gravity.png b/textures/portalgun_gravity.png new file mode 100644 index 0000000..518ed5d Binary files /dev/null and b/textures/portalgun_gravity.png differ diff --git a/textures/portalgun_gray.png b/textures/portalgun_gray.png new file mode 100644 index 0000000..aa73d3c Binary files /dev/null and b/textures/portalgun_gray.png differ diff --git a/textures/portalgun_gun.png b/textures/portalgun_gun.png new file mode 100644 index 0000000..ce3d8f5 Binary files /dev/null and b/textures/portalgun_gun.png differ diff --git a/textures/portalgun_gun_blue.png b/textures/portalgun_gun_blue.png new file mode 100644 index 0000000..7b5747f Binary files /dev/null and b/textures/portalgun_gun_blue.png differ diff --git a/textures/portalgun_gun_orange.png b/textures/portalgun_gun_orange.png new file mode 100644 index 0000000..b9ad104 Binary files /dev/null and b/textures/portalgun_gun_orange.png differ diff --git a/textures/portalgun_orange.png b/textures/portalgun_orange.png new file mode 100644 index 0000000..8542fcf Binary files /dev/null and b/textures/portalgun_orange.png differ diff --git a/textures/portalgun_powerballspawner.png b/textures/portalgun_powerballspawner.png new file mode 100644 index 0000000..0e4d197 Binary files /dev/null and b/textures/portalgun_powerballspawner.png differ diff --git a/textures/portalgun_powerballstarget.png b/textures/portalgun_powerballstarget.png new file mode 100644 index 0000000..b2a9e4e Binary files /dev/null and b/textures/portalgun_powerballstarget.png differ diff --git a/textures/portalgun_powerwall.png b/textures/portalgun_powerwall.png new file mode 100644 index 0000000..70a3b3d Binary files /dev/null and b/textures/portalgun_powerwall.png differ diff --git a/textures/portalgun_powerwall1.png b/textures/portalgun_powerwall1.png new file mode 100644 index 0000000..b4e5110 Binary files /dev/null and b/textures/portalgun_powerwall1.png differ diff --git a/textures/portalgun_powrball.png b/textures/portalgun_powrball.png new file mode 100644 index 0000000..0a83c77 Binary files /dev/null and b/textures/portalgun_powrball.png differ diff --git a/textures/portalgun_presplat.png b/textures/portalgun_presplat.png new file mode 100644 index 0000000..0f43fd2 Binary files /dev/null and b/textures/portalgun_presplat.png differ diff --git a/textures/portalgun_presplat2.png b/textures/portalgun_presplat2.png new file mode 100644 index 0000000..69e7ca0 Binary files /dev/null and b/textures/portalgun_presplat2.png differ diff --git a/textures/portalgun_presplat3.png b/textures/portalgun_presplat3.png new file mode 100644 index 0000000..36e99f4 Binary files /dev/null and b/textures/portalgun_presplat3.png differ diff --git a/textures/portalgun_presplat4.png b/textures/portalgun_presplat4.png new file mode 100644 index 0000000..2bf94d0 Binary files /dev/null and b/textures/portalgun_presplat4.png differ diff --git a/textures/portalgun_presplat5.png b/textures/portalgun_presplat5.png new file mode 100644 index 0000000..46550d3 Binary files /dev/null and b/textures/portalgun_presplat5.png differ diff --git a/textures/portalgun_scam.png b/textures/portalgun_scam.png new file mode 100644 index 0000000..862487b Binary files /dev/null and b/textures/portalgun_scam.png differ diff --git a/textures/portalgun_sentry_turret.png b/textures/portalgun_sentry_turret.png new file mode 100644 index 0000000..47fb6f5 Binary files /dev/null and b/textures/portalgun_sentry_turret.png differ diff --git a/textures/portalgun_sign1.png b/textures/portalgun_sign1.png new file mode 100644 index 0000000..1766d08 Binary files /dev/null and b/textures/portalgun_sign1.png differ diff --git a/textures/portalgun_sign2.png b/textures/portalgun_sign2.png new file mode 100644 index 0000000..7aaef71 Binary files /dev/null and b/textures/portalgun_sign2.png differ diff --git a/textures/portalgun_snum0.png b/textures/portalgun_snum0.png new file mode 100644 index 0000000..5c71501 Binary files /dev/null and b/textures/portalgun_snum0.png differ diff --git a/textures/portalgun_snum1.png b/textures/portalgun_snum1.png new file mode 100644 index 0000000..c88c79a Binary files /dev/null and b/textures/portalgun_snum1.png differ diff --git a/textures/portalgun_snum2.png b/textures/portalgun_snum2.png new file mode 100644 index 0000000..b998094 Binary files /dev/null and b/textures/portalgun_snum2.png differ diff --git a/textures/portalgun_snum3.png b/textures/portalgun_snum3.png new file mode 100644 index 0000000..bba2cc4 Binary files /dev/null and b/textures/portalgun_snum3.png differ diff --git a/textures/portalgun_snum4.png b/textures/portalgun_snum4.png new file mode 100644 index 0000000..5490292 Binary files /dev/null and b/textures/portalgun_snum4.png differ diff --git a/textures/portalgun_snum5.png b/textures/portalgun_snum5.png new file mode 100644 index 0000000..aa59c81 Binary files /dev/null and b/textures/portalgun_snum5.png differ diff --git a/textures/portalgun_snum6.png b/textures/portalgun_snum6.png new file mode 100644 index 0000000..397d969 Binary files /dev/null and b/textures/portalgun_snum6.png differ diff --git a/textures/portalgun_snum7.png b/textures/portalgun_snum7.png new file mode 100644 index 0000000..62bbb64 Binary files /dev/null and b/textures/portalgun_snum7.png differ diff --git a/textures/portalgun_snum8.png b/textures/portalgun_snum8.png new file mode 100644 index 0000000..42517e1 Binary files /dev/null and b/textures/portalgun_snum8.png differ diff --git a/textures/portalgun_snum9.png b/textures/portalgun_snum9.png new file mode 100644 index 0000000..704bf42 Binary files /dev/null and b/textures/portalgun_snum9.png differ diff --git a/textures/portalgun_testblock.png b/textures/portalgun_testblock.png new file mode 100644 index 0000000..5de0e59 Binary files /dev/null and b/textures/portalgun_testblock.png differ diff --git a/textures/portalgun_toxwat.png b/textures/portalgun_toxwat.png new file mode 100644 index 0000000..d708f3a Binary files /dev/null and b/textures/portalgun_toxwat.png differ diff --git a/textures/portalgun_turret.png b/textures/portalgun_turret.png new file mode 100644 index 0000000..69bd7c7 Binary files /dev/null and b/textures/portalgun_turret.png differ diff --git a/textures/portalgun_v.png b/textures/portalgun_v.png new file mode 100644 index 0000000..38de55b Binary files /dev/null and b/textures/portalgun_v.png differ diff --git a/textures/portalgun_warntape.png b/textures/portalgun_warntape.png new file mode 100644 index 0000000..549b467 Binary files /dev/null and b/textures/portalgun_warntape.png differ diff --git a/textures/portalgun_x.png b/textures/portalgun_x.png new file mode 100644 index 0000000..4779672 Binary files /dev/null and b/textures/portalgun_x.png differ diff --git a/textures/weightedstoragecube.png b/textures/weightedstoragecube.png new file mode 100644 index 0000000..994bc3d Binary files /dev/null and b/textures/weightedstoragecube.png differ diff --git a/textures/weightedstoragecube2.png b/textures/weightedstoragecube2.png new file mode 100644 index 0000000..c7c92d7 Binary files /dev/null and b/textures/weightedstoragecube2.png differ diff --git a/textures/weightedstoragecube3.png b/textures/weightedstoragecube3.png new file mode 100644 index 0000000..5fe417c Binary files /dev/null and b/textures/weightedstoragecube3.png differ diff --git a/textures/weightedstoragecube4.png b/textures/weightedstoragecube4.png new file mode 100644 index 0000000..c357522 Binary files /dev/null and b/textures/weightedstoragecube4.png differ diff --git a/weightedstoragecube.lua b/weightedstoragecube.lua new file mode 100644 index 0000000..b3d9679 --- /dev/null +++ b/weightedstoragecube.lua @@ -0,0 +1,354 @@ + +local ptgwsc={ +{"weightedstoragecube.png","portalgun_presplat.png","(blue)"}, +{"weightedstoragecube2.png","portalgun_presplat2.png","(orange)"}, +{"weightedstoragecube3.png","portalgun_presplat3.png","(yellow)"}, +{"weightedstoragecube4.png","portalgun_presplat4.png","(green)"}, +} + + +for ii = 1, #ptgwsc, 1 do + + +minetest.register_craftitem("portalgun:wscube" ..ii, { + description = "Weighted storage cube " .. ptgwsc[ii][3], + inventory_image = minetest.inventorycube(ptgwsc[ii][1]), +on_place=function(itemstack, user, pointed_thing) + if pointed_thing.type=="node" then + portalgun.new=1 + local m=minetest.add_entity(pointed_thing.above, "portalgun:wsc"..ii) + m:set_acceleration({x=0,y=-10,z=0}) + itemstack:take_item() + end + return itemstack +end, +}) + +minetest.register_node("portalgun:wscspawner2_" .. ii, { + description = "Weighted storage cube spawner2 " ..ptgwsc[ii][3], + tiles = {"default_steel_block.png","default_steel_block.png","default_steel_block.png","default_steel_block.png","default_steel_block.png",ptgwsc[ii][1]}, + groups = {cracky=2,mesecon_receptor_off = 1, mesecon_effector_off = 1}, + mesecons = {receptor = {state = "off"}}, + sounds = default.node_sound_glass_defaults(), + is_ground_content = false, + paramtype2 = "facedir", + mesecons = {effector = { + action_on = function (pos, node) + local dir=minetest.get_node(pos).param2 + local v={x=0, y=0, z=0} + if dir==0 then v.z=-1 + elseif dir==1 then v.x=-1.2 + elseif dir==2 then v.z=1.2 + elseif dir==3 then v.x=1.2 + elseif dir==8 then v.y=-1.2 + elseif dir==4 then v.y=1.2 + end + local pv={x=pos.x+v.x, y=pos.y+v.y, z=pos.z+v.z} + portalgun.new=1 + local m=minetest.add_entity(pv, "portalgun:wsc" ..ii) + m:set_acceleration({x=0, y=-10, z=0}) + end + }} +}) + +minetest.register_entity("portalgun:wsc" ..ii,{ + hp_max = 100, + physical = true, + weight = 5, + collisionbox = {-0.6,-0.6,-0.6, 0.6,0.6,0.6}, + visual = "cube", + visual_size = {x=1.1, y=1.1}, + textures = {ptgwsc[ii][1],ptgwsc[ii][1],ptgwsc[ii][1],ptgwsc[ii][1],ptgwsc[ii][1],ptgwsc[ii][1]}, + initial_sprite_basepos = {x=0, y=0}, + is_visible = true, + makes_footstep_sound = true, + automatic_rotate = false, + portalgun=2, + wsc=ii, +on_activate= function(self, staticdata) + if portalgun.new==0 then + self.object:remove() + return self + end + portalgun.new=0 +end, +on_step= function(self, dtime) + self.timer=self.timer+dtime + if self.timer<1 then return self end + self.timer=0 + self.object:set_acceleration({x=0, y=-10, z=0}) + self.timer2=self.timer2+1 + if self.timer2>10 then + self.timer2=0 + for i, ob in pairs(minetest.get_objects_inside_radius(self.object:get_pos(), 20)) do + if ob:is_player() then + return true + end + end + self.object:set_hp(0) + self.object:punch(self.object, 1, "default:bronze_pick", nil) + end + end, + timer=0, + timer2=0, +}) + +minetest.register_node("portalgun:wscspawner"..ii, { + description = "Weighted storage cube spawner " ..ptgwsc[ii][3], + tiles = {ptgwsc[ii][1]}, + groups = {cracky = 1, not_in_creative_inventory=0}, + paramtype = "light", + paramtype2="facedir", + sunlight_propagates = true, + light_source = default.LIGHT_MAX - 1, + sounds = default.node_sound_stone_defaults(), + drawtype="nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.7, -0.5, -0.7, 0.7, -0.375, 0.7}, + {0.7, -0.5, -0.1875, 0.9, -0.4375, 0.1875}, + {-0.9, -0.5, -0.1875, -0.7, -0.4375, 0.1875}, + {-0.1875, -0.5, -0.9, 0.1875, -0.4375, -0.7}, + {-0.1875, -0.5, 0.7, 0.1875, -0.4375, 0.9}, + } + }, + on_construct = function(pos) + minetest.get_node_timer(pos):start(5) + end, + on_timer = function (pos, elapsed) + for i, ob in pairs(minetest.get_objects_inside_radius(pos, 40)) do + if ob:get_luaentity() and ob:get_luaentity().wsc==ii then + return true + end + end + portalgun.new=1 + local m=minetest.add_entity(pos, "portalgun:wsc" ..ii) + m:set_acceleration({x=0,y=-10,z=0}) + return true + end, +}) + +minetest.register_node("portalgun:plantform1_" ..ii, { + description = "Pressure platform " .. ptgwsc[ii][3], + tiles = {ptgwsc[ii][2],"default_cloud.png","default_cloud.png","default_cloud.png","default_cloud.png","default_cloud.png"}, + groups = {mesecon = 2,cracky = 1, not_in_creative_inventory=0}, + mesecons = {receptor = {state = "off"}}, + paramtype = "light", + sunlight_propagates = true, + sounds = default.node_sound_stone_defaults(), + drawtype="nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.7, -0.5, -0.7, 0.7, -0.375, 0.7}, + {0.7, -0.5, -0.1875, 0.9, -0.4375, 0.1875}, + {-0.9, -0.5, -0.1875, -0.7, -0.4375, 0.1875}, + {-0.1875, -0.5, -0.9, 0.1875, -0.4375, -0.7}, + {-0.1875, -0.5, 0.7, 0.1875, -0.4375, 0.9}, + {-0.5, -0.5, -0.5, 0.5, -0.3125, 0.5}, + } + }, + on_construct = function(pos) + minetest.get_node_timer(pos):start(2) + end, + on_timer = function (pos, elapsed) + if not mesecon then return false end + for i, ob in pairs(minetest.get_objects_inside_radius(pos, 1)) do + if ob:get_luaentity() and ob:get_luaentity().wsc==ii then + local node=minetest.get_node(pos) + mesecon.receptor_on(pos) + minetest.set_node(pos, {name ="portalgun:plantform2_"..ii, param1 = node.param1, param2 = node.param2}) + end + return true + end + return true + end, +}) + +minetest.register_node("portalgun:plantform2_"..ii, { + description = "Pressure platform", + tiles = {ptgwsc[ii][2],"default_cloud.png","default_cloud.png","default_cloud.png","default_cloud.png","default_cloud.png"}, + drop="portalgun:plantform1_"..ii, + groups = {mesecon = 2,cracky = 1, not_in_creative_inventory=1}, + mesecons = {receptor = {state = "on"}}, + paramtype = "light", + sunlight_propagates = true, + light_source = default.LIGHT_MAX - 1, + sounds = default.node_sound_stone_defaults(), + drawtype="nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.7, -0.5, -0.7, 0.7, -0.375, 0.7}, + {0.7, -0.5, -0.1875, 0.9, -0.4375, 0.1875}, + {-0.9, -0.5, -0.1875, -0.7, -0.4375, 0.1875}, + {-0.1875, -0.5, -0.9, 0.1875, -0.4375, -0.7}, + {-0.1875, -0.5, 0.7, 0.1875, -0.4375, 0.9}, + } + }, + on_construct = function(pos) + minetest.get_node_timer(pos):start(2) + end, + on_timer = function (pos, elapsed) + for i, ob in pairs(minetest.get_objects_inside_radius(pos, 1)) do + if ob:get_luaentity() and ob:get_luaentity().wsc==ii then + return true + end + end + mesecon.receptor_off(pos) + local node=minetest.get_node(pos) + minetest.set_node(pos, {name ="portalgun:plantform1_"..ii, param1 = node.param1, param2 = node.param2}) + return true + end, +}) + + +end -- of for # + + +minetest.register_node("portalgun:plantform_nu1", { + description = "Pressure platform (player or cube)", + tiles = {"portalgun_presplat5.png","default_cloud.png","default_cloud.png","default_cloud.png","default_cloud.png","default_cloud.png"}, + groups = {mesecon = 2,cracky = 1, not_in_creative_inventory=0}, + mesecons = {receptor = {state = "off"}}, + paramtype = "light", + sunlight_propagates = true, + sounds = default.node_sound_stone_defaults(), + drawtype="nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.7, -0.5, -0.7, 0.7, -0.375, 0.7}, + {0.7, -0.5, -0.1875, 0.9, -0.4375, 0.1875}, + {-0.9, -0.5, -0.1875, -0.7, -0.4375, 0.1875}, + {-0.1875, -0.5, -0.9, 0.1875, -0.4375, -0.7}, + {-0.1875, -0.5, 0.7, 0.1875, -0.4375, 0.9}, + {-0.5, -0.5, -0.5, 0.5, -0.3125, 0.5}, + } + }, + on_construct = function(pos) + minetest.get_node_timer(pos):start(2) + end, + on_timer = function (pos, elapsed) + if not mesecon then return false end + for i, ob in pairs(minetest.get_objects_inside_radius(pos, 1)) do + if ob:is_player() or (ob:get_luaentity() and ob:get_luaentity().wsc) then + local node=minetest.get_node(pos) + mesecon.receptor_on(pos) + minetest.set_node(pos, {name ="portalgun:plantform_nu2", param1 = node.param1, param2 = node.param2}) + end + return true + end + return true + end, +}) + +minetest.register_node("portalgun:plantform_nu2", { + description = "Pressure platform", + tiles = {"portalgun_presplat5.png","default_cloud.png","default_cloud.png","default_cloud.png","default_cloud.png","default_cloud.png"}, + drop="portalgun:plantform_nu1", + groups = {mesecon = 2,cracky = 1, not_in_creative_inventory=1}, + mesecons = {receptor = {state = "on"}}, + paramtype = "light", + sunlight_propagates = true, + light_source = default.LIGHT_MAX - 1, + sounds = default.node_sound_stone_defaults(), + drawtype="nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.7, -0.5, -0.7, 0.7, -0.375, 0.7}, + {0.7, -0.5, -0.1875, 0.9, -0.4375, 0.1875}, + {-0.9, -0.5, -0.1875, -0.7, -0.4375, 0.1875}, + {-0.1875, -0.5, -0.9, 0.1875, -0.4375, -0.7}, + {-0.1875, -0.5, 0.7, 0.1875, -0.4375, 0.9}, + } + }, + on_construct = function(pos) + minetest.get_node_timer(pos):start(2) + end, + on_timer = function (pos, elapsed) + for i, ob in pairs(minetest.get_objects_inside_radius(pos, 1)) do + if ob:is_player() or (ob:get_luaentity() and ob:get_luaentity().wsc) then + return true + end + end + mesecon.receptor_off(pos) + local node=minetest.get_node(pos) + minetest.set_node(pos, {name ="portalgun:plantform_nu1", param1 = node.param1, param2 = node.param2}) + return true + end, +}) + + +minetest.register_node("portalgun:planthole", { + description = "Plathole (activate by any cube, 2 blocks under)", + tiles = {"default_cloud.png"}, + groups = {mesecon = 2,cracky = 1}, + mesecons = {receptor = {state = "off"}}, + paramtype = "light", + sunlight_propagates = true, + sounds = default.node_sound_stone_defaults(), + drawtype="nodebox", + node_box = { + type = "fixed", + fixed = { + {-1.5, -0.5, -1.5, 0.5, -0.25, -1.3}, + {-1.5, -0.5, 0.3, 0.5, -0.25, 0.5}, + {0.3, -0.5, -1.5, 0.5, -0.25, 0.5}, + {-1.5, -0.5, -1.5, -1.3, -0.25, 0.5}, + {0.5, -0.5, -0.9, 0.7, -0.375, -0.0625}, + {-1.7, -0.5, -0.9, -1.5, -0.3125, -0.0625}, + {-0.9, -0.5, -1.7, -0.0625, -0.375, -1.5}, + {-1, -0.5, 0.5, -0.0625, -0.375, 0.7}, + } + }, + on_construct = function(pos) + minetest.get_node_timer(pos):start(5) + end, + on_timer = function (pos, elapsed) + local pos2={x=pos.x,y=pos.y-2,z=pos.z} + for i, ob in pairs(minetest.get_objects_inside_radius(pos2, 1)) do + if ob:get_luaentity() and ob:get_luaentity().wsc then + mesecon.receptor_on(pos) + return true + end + end + mesecon.receptor_off(pos) + return true + end, +}) + + + +minetest.register_node("portalgun:objdestroyer_1", { + description = "Object destroyer (destroys on active)", + tiles = {"portalgun_testblock.png^[colorize:#FF0000aa"}, + groups = {cracky = 2,mesecon=1}, + sounds = default.node_sound_stone_defaults(), + mesecons = {effector = { + action_on = function (pos, node) + minetest.set_node(pos, {name ="portalgun:objdestroyer_2"}) + for i, ob in pairs(minetest.get_objects_inside_radius(pos, 5)) do + if ob:get_luaentity() then + ob:set_hp(0) + ob:punch(ob, {full_punch_interval=1.0,damage_groups={fleshy=9000}}, "default:bronze_pick", nil) + end + end + end + }} +}) +minetest.register_node("portalgun:objdestroyer_2", { + description = "Obj destroyer", + tiles = {"portalgun_testblock.png^[colorize:#FF0000cc"}, + groups = {cracky=2,mesecon=1,not_in_creative_inventory=1}, + sunlight_propagates = true, + drop="portalgun:objdestroyer_1", + paramtype="light", + light_source = default.LIGHT_MAX - 1, + mesecons = {conductor = { + state = mesecon.state.on, + offstate = "portalgun:objdestroyer_1", + }}, +})