forked from Mirrorlandia_minetest/portalgun
my first changes
This commit is contained in:
parent
034489359d
commit
15640770f3
@ -1,4 +1,8 @@
|
|||||||
# portalgun
|
# portalgun
|
||||||
|
original repo:https://github.com/AiTechEye/portalgun
|
||||||
|
Licenses: code: LGPL-2.1, media: CC BY-SA-4.0
|
||||||
|
For changes check git or compare to original repo
|
||||||
|
Remixed by: BRNSystems
|
||||||
|
|
||||||
https://forum.minetest.net/viewtopic.php?f=11&t=12772
|
https://forum.minetest.net/viewtopic.php?f=11&t=12772
|
||||||
|
|
||||||
|
285
craft.lua
285
craft.lua
@ -1,285 +0,0 @@
|
|||||||
minetest.register_craft({
|
|
||||||
output = "portalgun:gun1_placed",
|
|
||||||
recipe = {{"portalgun:gun1"}}})
|
|
||||||
minetest.register_craft({
|
|
||||||
output = "portalgun:gun2_placed",
|
|
||||||
recipe = {{"portalgun:gun2"}}})
|
|
||||||
minetest.register_craft({
|
|
||||||
output = "portalgun:gun_placed",
|
|
||||||
recipe = {{"portalgun:gun"}}})
|
|
||||||
|
|
||||||
|
|
||||||
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"},
|
|
||||||
},
|
|
||||||
})
|
|
BIN
craft2.JPG
BIN
craft2.JPG
Binary file not shown.
Before Width: | Height: | Size: 273 KiB |
@ -42,7 +42,7 @@ minetest.register_entity("portalgun:power",{
|
|||||||
spritediv = {x=1, y=1},
|
spritediv = {x=1, y=1},
|
||||||
is_visible = true,
|
is_visible = true,
|
||||||
makes_footstep_sound = false,
|
makes_footstep_sound = false,
|
||||||
automatic_rotate = false,
|
automatic_rotate = 0,
|
||||||
timer=0,
|
timer=0,
|
||||||
time=0.1,
|
time=0.1,
|
||||||
portalgun_power=1,
|
portalgun_power=1,
|
||||||
@ -62,7 +62,6 @@ on_punch=function(self, puncher, time_from_last_punch, tool_capabilities, dir)
|
|||||||
if self.target and self.target:get_attach() then
|
if self.target and self.target:get_attach() then
|
||||||
self.target:set_detach()
|
self.target:set_detach()
|
||||||
self.target:set_hp(0)
|
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
|
||||||
|
|
||||||
end,
|
end,
|
||||||
@ -72,7 +71,6 @@ on_step= function(self, dtime)
|
|||||||
self.timer=0
|
self.timer=0
|
||||||
if self.target==nil or (not self.target:get_attach()) then
|
if self.target==nil or (not self.target:get_attach()) then
|
||||||
self.object:set_hp(0)
|
self.object:set_hp(0)
|
||||||
self.object:punch(self.object, {full_punch_interval=1.0,damage_groups={fleshy=4}}, "default:bronze_pick", nil)
|
|
||||||
if self.sound then minetest.sound_stop(self.sound) end
|
if self.sound then minetest.sound_stop(self.sound) end
|
||||||
end
|
end
|
||||||
if self.player then
|
if self.player then
|
||||||
@ -106,7 +104,7 @@ minetest.register_entity("portalgun:power2",{
|
|||||||
spritediv = {x=1, y=1},
|
spritediv = {x=1, y=1},
|
||||||
is_visible = true,
|
is_visible = true,
|
||||||
makes_footstep_sound = false,
|
makes_footstep_sound = false,
|
||||||
automatic_rotate = false,
|
automatic_rotate = 0,
|
||||||
timer=0,
|
timer=0,
|
||||||
time=0.025,
|
time=0.025,
|
||||||
portalgun_power=1,
|
portalgun_power=1,
|
||||||
@ -152,7 +150,6 @@ on_step= function(self, dtime)
|
|||||||
|
|
||||||
if self.target==nil or (not self.target:get_attach()) then
|
if self.target==nil or (not self.target:get_attach()) then
|
||||||
self.object:set_hp(0)
|
self.object:set_hp(0)
|
||||||
self.object:punch(self.object, {full_punch_interval=1.0,damage_groups={fleshy=4}}, "default:bronze_pick", nil)
|
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
return self
|
return self
|
||||||
|
230
init.lua
230
init.lua
@ -4,7 +4,6 @@ proportal_group_only = false
|
|||||||
|
|
||||||
portalgun={new=0,checkpoints={}}
|
portalgun={new=0,checkpoints={}}
|
||||||
dofile(minetest.get_modpath("portalgun") .. "/gravityuse.lua") -- the gravity part of portalgun
|
dofile(minetest.get_modpath("portalgun") .. "/gravityuse.lua") -- the gravity part of portalgun
|
||||||
dofile(minetest.get_modpath("portalgun") .. "/craft.lua")
|
|
||||||
dofile(minetest.get_modpath("portalgun") .. "/stuff.lua") -- security cam
|
dofile(minetest.get_modpath("portalgun") .. "/stuff.lua") -- security cam
|
||||||
if disable_portal_stuff==false and minetest.get_modpath("mesecons")~=nil then
|
if disable_portal_stuff==false and minetest.get_modpath("mesecons")~=nil then
|
||||||
dofile(minetest.get_modpath("portalgun") .. "/weightedstoragecube.lua") -- weighted storage cube
|
dofile(minetest.get_modpath("portalgun") .. "/weightedstoragecube.lua") -- weighted storage cube
|
||||||
@ -58,7 +57,6 @@ function portal_delete(name,n) -- using set_hp & :punch instand of :remove ... n
|
|||||||
end
|
end
|
||||||
portalgun_portal[name].portal1_active=false
|
portalgun_portal[name].portal1_active=false
|
||||||
portalgun_portal[name].portal1:set_hp(0)
|
portalgun_portal[name].portal1:set_hp(0)
|
||||||
portalgun_portal[name].portal1:punch(portalgun_portal[name].portal1, {full_punch_interval=1.0,damage_groups={fleshy=9000}}, "default:bronze_pick", nil)
|
|
||||||
end
|
end
|
||||||
if (n==2 or n==0) and portalgun_portal[name].portal2~=nil then
|
if (n==2 or n==0) and portalgun_portal[name].portal2~=nil then
|
||||||
if n==0 then
|
if n==0 then
|
||||||
@ -67,7 +65,6 @@ function portal_delete(name,n) -- using set_hp & :punch instand of :remove ... n
|
|||||||
end
|
end
|
||||||
portalgun_portal[name].portal2_active=false
|
portalgun_portal[name].portal2_active=false
|
||||||
portalgun_portal[name].portal2:set_hp(0)
|
portalgun_portal[name].portal2:set_hp(0)
|
||||||
portalgun_portal[name].portal2:punch(portalgun_portal[name].portal2, {full_punch_interval=1.0,damage_groups={fleshy=9000}}, "default:bronze_pick", nil)
|
|
||||||
end
|
end
|
||||||
if n==0 then portalgun_portal[name]=nil end
|
if n==0 then portalgun_portal[name]=nil end
|
||||||
end
|
end
|
||||||
@ -340,157 +337,85 @@ on_activate= function(self, staticdata)
|
|||||||
end,
|
end,
|
||||||
on_step=portalgun_on_step,
|
on_step=portalgun_on_step,
|
||||||
})
|
})
|
||||||
|
minetest.register_craftitem("portalgun:gun", {
|
||||||
|
|
||||||
minetest.register_node("portalgun:gun1", {
|
|
||||||
description = "Portalgun (blue)",
|
|
||||||
range = 5,
|
|
||||||
tiles={"portalgun_gun1.png"},
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {
|
|
||||||
{-0.3, -0.5, -0.3, 0.3, -0.1,0.3},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
drawtype="mesh",
|
|
||||||
mesh="portalgun_gun_wearing.obj",
|
|
||||||
groups = {not_in_creative_inventory=1},
|
|
||||||
sunlight_propagates = true,
|
|
||||||
paramtype="light",
|
|
||||||
paramtype2="facedir",
|
|
||||||
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_node("portalgun:gun2", {
|
|
||||||
description = "Portalgun (orange)",
|
|
||||||
range = 5,
|
|
||||||
tiles={"portalgun_gun2.png"},
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {
|
|
||||||
{-0.3, -0.5, -0.3, 0.3, -0.1,0.3},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
drawtype="mesh",
|
|
||||||
mesh="portalgun_gun_wearing.obj",
|
|
||||||
groups = {not_in_creative_inventory=1},
|
|
||||||
sunlight_propagates = true,
|
|
||||||
paramtype="light",
|
|
||||||
paramtype2="facedir",
|
|
||||||
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_node("portalgun:gun", {
|
|
||||||
description = "Portalgun",
|
description = "Portalgun",
|
||||||
range = 5,
|
range = 100,
|
||||||
tiles={"portalgun_gun0.png"},
|
inventory_image = "portalgun_gun0_rndr.png",
|
||||||
selection_box = {
|
wield_image = "portalgun_gun0_rndr.png",
|
||||||
type = "fixed",
|
tool_capabilities = {
|
||||||
fixed = {
|
full_punch_interval = 0.5,
|
||||||
{-0.3, -0.5, -0.3, 0.3, -0.1,0.3},
|
max_drop_level = 3,
|
||||||
}
|
groupcaps = {
|
||||||
|
fleshy = {times={[2]=0.80, [3]=0.40}, uses=100, maxlevel=3},
|
||||||
|
oddly_breakable_by_hand = {times={[1]=1}, uses=100, maxlevel=1},
|
||||||
|
},
|
||||||
|
damage_groups = {fleshy=1},
|
||||||
},
|
},
|
||||||
drawtype="mesh",
|
on_place=function(itemstack, user, pointed_thing)
|
||||||
mesh="portalgun_gun_wearing.obj",
|
portalgun_setmode(itemstack, user, pointed_thing, 2)
|
||||||
sunlight_propagates = true,
|
portalgun_onuse(itemstack, user, pointed_thing)
|
||||||
paramtype="light",
|
return itemstack
|
||||||
paramtype2="facedir",
|
end,
|
||||||
on_place=function(itemstack, user, pointed_thing)
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
portalgun_mode(itemstack, user, pointed_thing)
|
portalgun_setmode(itemstack, user, pointed_thing, 1)
|
||||||
|
portalgun_onuse(itemstack, user, pointed_thing)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("portalgun:gun1", {
|
||||||
|
description = "Portalgun (blue)",
|
||||||
|
range = 100,
|
||||||
|
groups = {not_in_creative_inventory=1},
|
||||||
|
inventory_image = "portalgun_gun1_rndr.png",
|
||||||
|
wield_image = "portalgun_gun1_rndr.png",
|
||||||
|
tool_capabilities = {
|
||||||
|
full_punch_interval = 0.5,
|
||||||
|
max_drop_level = 3,
|
||||||
|
groupcaps = {
|
||||||
|
fleshy = {times={[2]=0.80, [3]=0.40}, uses=100, maxlevel=3},
|
||||||
|
oddly_breakable_by_hand = {times={[1]=1}, uses=100, maxlevel=1},
|
||||||
|
},
|
||||||
|
damage_groups = {fleshy=1},
|
||||||
|
},
|
||||||
|
on_place=function(itemstack, user, pointed_thing)
|
||||||
|
portalgun_setmode(itemstack, user, pointed_thing, 2)
|
||||||
|
portalgun_onuse(itemstack, user, pointed_thing)
|
||||||
return itemstack
|
return itemstack
|
||||||
end,
|
end,
|
||||||
on_use = function(itemstack, user, pointed_thing)
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
|
portalgun_setmode(itemstack, user, pointed_thing, 1)
|
||||||
portalgun_onuse(itemstack, user, pointed_thing)
|
portalgun_onuse(itemstack, user, pointed_thing)
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
minetest.register_craftitem("portalgun:gun2", {
|
||||||
minetest.register_node("portalgun:gun1_placed", {
|
|
||||||
description = "Portalgun (blue)",
|
|
||||||
range = 5,
|
|
||||||
tiles={"portalgun_gun1.png"},
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {
|
|
||||||
{-0.3, -0.5, -0.3, 0.3, -0.1,0.3},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
drawtype="mesh",
|
|
||||||
mesh="portalgun_gun.obj",
|
|
||||||
sunlight_propagates = true,
|
|
||||||
paramtype="light",
|
|
||||||
paramtype2="facedir",
|
|
||||||
visual_scale=0.4,
|
|
||||||
groups = {not_in_creative_inventory=1,dig_immediate = 3},
|
|
||||||
on_use = function(itemstack, user, pointed_thing)
|
|
||||||
portalgun_onuse(itemstack, user, pointed_thing)
|
|
||||||
return itemstack
|
|
||||||
end
|
|
||||||
})
|
|
||||||
minetest.register_node("portalgun:gun2_placed", {
|
|
||||||
description = "Portalgun (orange)",
|
description = "Portalgun (orange)",
|
||||||
range = 5,
|
range = 100,
|
||||||
tiles={"portalgun_gun2.png"},
|
inventory_image = "portalgun_gun2_rndr.png",
|
||||||
selection_box = {
|
wield_image = "portalgun_gun2_rndr.png",
|
||||||
type = "fixed",
|
tool_capabilities = {
|
||||||
fixed = {
|
full_punch_interval = 0.5,
|
||||||
{-0.3, -0.5, -0.3, 0.3, -0.1,0.3},
|
max_drop_level = 3,
|
||||||
}
|
groupcaps = {
|
||||||
|
fleshy = {times={[2]=0.80, [3]=0.40}, uses=100, maxlevel=3},
|
||||||
|
oddly_breakable_by_hand = {times={[1]=1}, uses=100, maxlevel=1},
|
||||||
|
},
|
||||||
|
damage_groups = {fleshy=1},
|
||||||
},
|
},
|
||||||
drawtype="mesh",
|
groups = {not_in_creative_inventory=1},
|
||||||
mesh="portalgun_gun.obj",
|
on_place=function(itemstack, user, pointed_thing)
|
||||||
sunlight_propagates = true,
|
portalgun_setmode(itemstack, user, pointed_thing, 2)
|
||||||
paramtype="light",
|
portalgun_onuse(itemstack, user, pointed_thing)
|
||||||
paramtype2="facedir",
|
return itemstack
|
||||||
visual_scale=0.4,
|
end,
|
||||||
groups = {not_in_creative_inventory=1,dig_immediate = 3},
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
on_use = function(itemstack, user, pointed_thing)
|
portalgun_setmode(itemstack, user, pointed_thing, 1)
|
||||||
portalgun_onuse(itemstack, user, pointed_thing)
|
portalgun_onuse(itemstack, user, pointed_thing)
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("portalgun:gun_placed", {
|
|
||||||
description = "Portalgun",
|
|
||||||
range = 5,
|
|
||||||
tiles={"portalgun_gun0.png"},
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = {
|
|
||||||
{-0.3, -0.5, -0.3, 0.3, -0.1,0.3},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
drawtype="mesh",
|
|
||||||
mesh="portalgun_gun.obj",
|
|
||||||
sunlight_propagates = true,
|
|
||||||
paramtype="light",
|
|
||||||
paramtype2="facedir",
|
|
||||||
visual_scale=0.4,
|
|
||||||
groups = {not_in_creative_inventory=1,dig_immediate = 3},
|
|
||||||
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
|
function portalgun_mode(itemstack, user, pointed_thing) -- change modes
|
||||||
local item=itemstack:to_table()
|
local item=itemstack:to_table()
|
||||||
local meta=minetest.deserialize(item["metadata"])
|
local meta=minetest.deserialize(item["metadata"])
|
||||||
@ -516,6 +441,23 @@ function portalgun_mode(itemstack, user, pointed_thing) -- change modes
|
|||||||
minetest.sound_play("portalgun_mode", {pos=user:get_pos(),max_hear_distance = 5, gain = 1})
|
minetest.sound_play("portalgun_mode", {pos=user:get_pos(),max_hear_distance = 5, gain = 1})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function portalgun_setmode(itemstack, user, pointed_thing, mode) -- change modes
|
||||||
|
local item=itemstack:to_table()
|
||||||
|
local meta=minetest.deserialize(item["metadata"])
|
||||||
|
if meta==nil then
|
||||||
|
meta={}
|
||||||
|
mode=1
|
||||||
|
minetest.chat_send_player(user:get_player_name(), "<Portalgun> PLACE to change portal mode (or LEFT+RIGHTCLICK to use the other)")
|
||||||
|
minetest.chat_send_player(user:get_player_name(), "<Portalgun> LEFTCLICK on an object to carry it, CLICK AGAIN to release")
|
||||||
|
minetest.chat_send_player(user:get_player_name(), "<Portalgun> SHIFT+LEFTCLICK to close both portals (or wait 40sec until it removes it self)")
|
||||||
|
end
|
||||||
|
if meta.mode==nil then meta.mode=2 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)
|
local function rnd(r)
|
||||||
return math.floor(r+ 0.5)
|
return math.floor(r+ 0.5)
|
||||||
@ -558,12 +500,6 @@ function portalgun_onuse(itemstack, user, pointed_thing) -- using the gun
|
|||||||
portalgun_portal[name]={lifelime=portalgun_lifelime,project=1,timer=0,portal1_active=false,portal2_active=false,portal1_use=0,portal2_use=0}
|
portalgun_portal[name]={lifelime=portalgun_lifelime,project=1,timer=0,portal1_active=false,portal2_active=false,portal1_use=0,portal2_use=0}
|
||||||
end
|
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
|
if key.sneak then
|
||||||
portal_delete(name,0)
|
portal_delete(name,0)
|
||||||
return itemstack
|
return itemstack
|
||||||
|
2
mod.conf
2
mod.conf
@ -1,4 +1,2 @@
|
|||||||
name = portalgun
|
name = portalgun
|
||||||
description = Portals and stuff
|
description = Portals and stuff
|
||||||
depends = default
|
|
||||||
optional_depends = mesecons
|
|
BIN
models/prtl_0.blend
Normal file
BIN
models/prtl_0.blend
Normal file
Binary file not shown.
BIN
models/prtl_0.blend1
Normal file
BIN
models/prtl_0.blend1
Normal file
Binary file not shown.
@ -470,7 +470,6 @@ minetest.register_node("portalgun:door_1", {
|
|||||||
description = "Mesecon Door",
|
description = "Mesecon Door",
|
||||||
drop="portalgun:door_1",
|
drop="portalgun:door_1",
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@ -512,7 +511,6 @@ minetest.register_node("portalgun:door_2", {
|
|||||||
description = "Door 2-1",
|
description = "Door 2-1",
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
drop="portalgun:door_1",
|
drop="portalgun:door_1",
|
||||||
paramtype = "light",
|
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@ -544,7 +542,6 @@ minetest.register_node("portalgun:door_open_1", {
|
|||||||
description = "Door (open) 2-o-1",
|
description = "Door (open) 2-o-1",
|
||||||
drop="portalgun:door_1",
|
drop="portalgun:door_1",
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@ -575,7 +572,6 @@ minetest.register_node("portalgun:door_open_2", {
|
|||||||
description = "Door (open) 2-o-1",
|
description = "Door (open) 2-o-1",
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
drop="portalgun:door_1",
|
drop="portalgun:door_1",
|
||||||
paramtype = "light",
|
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
|
@ -66,7 +66,7 @@ minetest.register_entity("portalgun:powerball",{
|
|||||||
initial_sprite_basepos = {x=0, y=0},
|
initial_sprite_basepos = {x=0, y=0},
|
||||||
is_visible = true,
|
is_visible = true,
|
||||||
makes_footstep_sound = false,
|
makes_footstep_sound = false,
|
||||||
automatic_rotate = false,
|
automatic_rotate = 0,
|
||||||
portalgun=2,
|
portalgun=2,
|
||||||
powerball=1,
|
powerball=1,
|
||||||
on_activate= function(self, staticdata)
|
on_activate= function(self, staticdata)
|
||||||
@ -87,8 +87,6 @@ on_step= function(self, dtime)
|
|||||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, 2)) do
|
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
|
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:set_hp(0)
|
||||||
ob:punch(ob, {full_punch_interval=1.0,damage_groups={fleshy=9000}}, "default:bronze_pick", nil)
|
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
self.timer2=self.timer2+1
|
self.timer2=self.timer2+1
|
||||||
@ -101,7 +99,6 @@ on_step= function(self, dtime)
|
|||||||
if self.timer2>40 then
|
if self.timer2>40 then
|
||||||
minetest.sound_stop(self.sound)
|
minetest.sound_stop(self.sound)
|
||||||
self.object:set_hp(0)
|
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
|
return self
|
||||||
end
|
end
|
||||||
local v=self.object:get_velocity()
|
local v=self.object:get_velocity()
|
||||||
|
14
stuff.lua
14
stuff.lua
@ -231,7 +231,6 @@ minetest.register_node("portalgun:toxwater_1", {
|
|||||||
description = "Toxic water",
|
description = "Toxic water",
|
||||||
drawtype = "liquid",
|
drawtype = "liquid",
|
||||||
tiles = {"portalgun_toxwat.png"},
|
tiles = {"portalgun_toxwat.png"},
|
||||||
post_effect_color = {a = 200, r = 119, g = 70, b = 16},
|
|
||||||
alpha = 190,
|
alpha = 190,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
walkable = false,
|
walkable = false,
|
||||||
@ -256,7 +255,6 @@ minetest.register_node("portalgun:toxwater_1", {
|
|||||||
minetest.register_node("portalgun:toxwater_2", {
|
minetest.register_node("portalgun:toxwater_2", {
|
||||||
description = "Toxic water 2",
|
description = "Toxic water 2",
|
||||||
drawtype = "flowingliquid",
|
drawtype = "flowingliquid",
|
||||||
tiles = {"portalgun_toxwat.png"},
|
|
||||||
tiles = {name = "portalgun_toxwat.png",backface_culling=false},
|
tiles = {name = "portalgun_toxwat.png",backface_culling=false},
|
||||||
special_tiles = {{name = "portalgun_toxwat.png",backface_culling=true},{name = "portalgun_toxwat.png",backface_culling=false}},
|
special_tiles = {{name = "portalgun_toxwat.png",backface_culling=true},{name = "portalgun_toxwat.png",backface_culling=false}},
|
||||||
alpha = 190,
|
alpha = 190,
|
||||||
@ -301,7 +299,6 @@ on_use = function(itemstack, user, pointed_thing)
|
|||||||
for ii, ob in pairs(minetest.get_objects_inside_radius(pos, 7)) do
|
for ii, ob in pairs(minetest.get_objects_inside_radius(pos, 7)) do
|
||||||
if ob:get_luaentity() then
|
if ob:get_luaentity() then
|
||||||
ob:set_hp(0)
|
ob:set_hp(0)
|
||||||
ob:punch(ob, {full_punch_interval=1.0,damage_groups={fleshy=9000}}, "default:bronze_pick", nil)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return itemstack
|
return itemstack
|
||||||
@ -506,12 +503,15 @@ on_step= function(self, dtime)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do
|
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
|
if ob:is_player() then
|
||||||
ob:set_hp(ob:get_hp()-7)
|
if ob:get_hp() > 2 then
|
||||||
ob:punch(self.object, 1,{full_punch_interval=1.0,damage_groups={fleshy=4}}, "default:bronze_pick", nil)
|
ob:set_hp(ob:get_hp()-2)
|
||||||
|
else
|
||||||
|
ob:set_hp(0)
|
||||||
|
end
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
timer=0,
|
timer=0,
|
||||||
|
BIN
textures/portalgun_gun0_rndr.png
Normal file
BIN
textures/portalgun_gun0_rndr.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.5 KiB |
BIN
textures/portalgun_gun1_rndr.png
Normal file
BIN
textures/portalgun_gun1_rndr.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.5 KiB |
BIN
textures/portalgun_gun2_rndr.png
Normal file
BIN
textures/portalgun_gun2_rndr.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.5 KiB |
@ -28,11 +28,10 @@ minetest.register_node("portalgun:wscspawner2_" .. ii, {
|
|||||||
description = "Weighted storage cube spawner2 " ..ptgwsc[ii][3],
|
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]},
|
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},
|
groups = {cracky=2,mesecon_receptor_off = 1, mesecon_effector_off = 1},
|
||||||
mesecons = {receptor = {state = "off"}},
|
|
||||||
sounds = default.node_sound_glass_defaults(),
|
sounds = default.node_sound_glass_defaults(),
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
mesecons = {effector = {
|
mesecons = {receptor = {state = "off"}, effector = {
|
||||||
action_on = function (pos, node)
|
action_on = function (pos, node)
|
||||||
local dir=minetest.get_node(pos).param2
|
local dir=minetest.get_node(pos).param2
|
||||||
local v={x=0, y=0, z=0}
|
local v={x=0, y=0, z=0}
|
||||||
@ -62,7 +61,7 @@ minetest.register_entity("portalgun:wsc" ..ii,{
|
|||||||
initial_sprite_basepos = {x=0, y=0},
|
initial_sprite_basepos = {x=0, y=0},
|
||||||
is_visible = true,
|
is_visible = true,
|
||||||
makes_footstep_sound = true,
|
makes_footstep_sound = true,
|
||||||
automatic_rotate = false,
|
automatic_rotate = 0,
|
||||||
portalgun=2,
|
portalgun=2,
|
||||||
wsc=ii,
|
wsc=ii,
|
||||||
on_activate= function(self, staticdata)
|
on_activate= function(self, staticdata)
|
||||||
@ -78,7 +77,7 @@ on_step= function(self, dtime)
|
|||||||
self.timer=0
|
self.timer=0
|
||||||
self.object:set_acceleration({x=0, y=-10, z=0})
|
self.object:set_acceleration({x=0, y=-10, z=0})
|
||||||
self.timer2=self.timer2+1
|
self.timer2=self.timer2+1
|
||||||
if self.timer2>10 then
|
if self.timer2>4 then
|
||||||
self.timer2=0
|
self.timer2=0
|
||||||
for i, ob in pairs(minetest.get_objects_inside_radius(self.object:get_pos(), 20)) do
|
for i, ob in pairs(minetest.get_objects_inside_radius(self.object:get_pos(), 20)) do
|
||||||
if ob:is_player() then
|
if ob:is_player() then
|
||||||
@ -86,7 +85,6 @@ on_step= function(self, dtime)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
self.object:set_hp(0)
|
self.object:set_hp(0)
|
||||||
self.object:punch(self.object, 1, "default:bronze_pick", nil)
|
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
timer=0,
|
timer=0,
|
||||||
@ -333,7 +331,6 @@ minetest.register_node("portalgun:objdestroyer_1", {
|
|||||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, 5)) do
|
for i, ob in pairs(minetest.get_objects_inside_radius(pos, 5)) do
|
||||||
if ob:get_luaentity() then
|
if ob:get_luaentity() then
|
||||||
ob:set_hp(0)
|
ob:set_hp(0)
|
||||||
ob:punch(ob, {full_punch_interval=1.0,damage_groups={fleshy=9000}}, "default:bronze_pick", nil)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user