Various additions and fixes

This commit is contained in:
npx 2017-04-02 23:49:06 +02:00
parent 1aa6415843
commit ef07daf266
5 changed files with 147 additions and 18 deletions

View File

@ -236,6 +236,7 @@ function explosion_thickweb(pos)
end end
-- arrow=>phoenix arrow -- arrow=>phoenix arrow
--[[
mobs:register_arrow("nssm:phoenix_arrow", { mobs:register_arrow("nssm:phoenix_arrow", {
visual = "sprite", visual = "sprite",
visual_size = {x = 1, y = 1}, visual_size = {x = 1, y = 1},
@ -276,7 +277,7 @@ mobs:register_arrow("nssm:phoenix_arrow", {
end, end,
}) })
]]
mobs:register_arrow("nssm:super_gas", { mobs:register_arrow("nssm:super_gas", {
visual = "sprite", visual = "sprite",
visual_size = {x = 1, y = 1}, visual_size = {x = 1, y = 1},
@ -399,7 +400,7 @@ mobs:register_arrow("nssm:lava_block_bomb", {
end end
}) })
-- --[[
mobs:register_arrow("nssm:roar_of_the_dragon", { mobs:register_arrow("nssm:roar_of_the_dragon", {
visual = "sprite", visual = "sprite",
visual_size = {x = 1, y = 1}, visual_size = {x = 1, y = 1},
@ -442,7 +443,7 @@ mobs:register_arrow("nssm:roar_of_the_dragon", {
minetest.env:set_node(p, {name="air"}) minetest.env:set_node(p, {name="air"})
end end
end end
}) })]]
mobs:register_arrow("nssm:lava_arrow", { mobs:register_arrow("nssm:lava_arrow", {

View File

@ -2,11 +2,11 @@ mobs:register_mob("nssm:mese_dragon", {
type = "monster", type = "monster",
hp_max = 666, hp_max = 666,
hp_min = 666, hp_min = 666,
collisionbox = {-1, 0, -1, 1, 5, 1}, collisionbox = {-0.8, 0, -0.8, 0.8, 4, 0.8},
visual = "mesh", visual = "mesh",
mesh = "mese_dragon.x", mesh = "mese_dragon.x",
textures = {{"mese_dragon.png"}}, textures = {{"mese_dragon.png"}},
visual_size = {x=12, y=12}, visual_size = {x=8, y=8},
makes_footstep_sound = true, makes_footstep_sound = true,
view_range = 45, view_range = 45,
rotate = 270, rotate = 270,
@ -37,8 +37,7 @@ mobs:register_mob("nssm:mese_dragon", {
lava_damage = 0, lava_damage = 0,
light_damage = 0, light_damage = 0,
on_rightclick = nil, on_rightclick = nil,
attack_type = "dogshoot", attack_type = "dogfight",
dogshoot_switch = true,
blood_texture="mese_blood.png", blood_texture="mese_blood.png",
blood_amount=30, blood_amount=30,
stepheight=3.1, stepheight=3.1,
@ -46,7 +45,7 @@ mobs:register_mob("nssm:mese_dragon", {
jump_height=12, jump_height=12,
dogshoot_count_max = 9, dogshoot_count_max = 9,
arrow = "nssm:roar_of_the_dragon", arrow = "nssm:roar_of_the_dragon",
reach = 5, reach = 25,
shoot_interval = 3, shoot_interval = 3,
shoot_offset = -1, shoot_offset = -1,
animation = { animation = {
@ -62,13 +61,15 @@ mobs:register_mob("nssm:mese_dragon", {
punch_end = 275, punch_end = 275,
punch2_start = 330, punch2_start = 330,
punch2_end = 370, punch2_end = 370,
dattack_start = 120, shoot_start = 120,
dattack_end = 160, shoot_end = 160,
}, },
--[[
do_custom = function(self) do_custom = function(self)
midas_ability(self, "default:mese_block", self.run_velocity,2, 3) --midas_ability(self, "default:mese_block", self.run_velocity,2, 3)
end, end,
custom_attack = function(self) custom_attack = function(self)
if self.timer > 1 then if self.timer > 1 then
self.timer = 0 self.timer = 0
@ -109,5 +110,96 @@ mobs:register_mob("nssm:mese_dragon", {
end end
end end
end end
end,
]]
custom_attack = function(self)
local p = self.attack:getpos()
local s = self.object:getpos()
s.y = s.y + 5;
local vel = vector.subtract(p,s)
set_animation(self, "shoot")
minetest.add_particlespawner(
125, --amount
0.5, --time
s, --minpos
s, --maxpos
vector.multiply(vel, 0.5), --minvel
vector.multiply(vel, 1.4), --maxvel
{x=0,y=0,z=0}, --minacc
{x=0,y=0,z=0}, --maxacc
2, --minexptime
4, --maxexptime
1, --minsize
2, --maxsize
true, --collisiondetection
"phoenix_fire.png" --texture
)
local obj = minetest.add_entity(s, "nssm:mese_dart")
local ran = math.random(7,14)/10
local vec = vector.multiply(vel, ran)
obj:setvelocity(vec)
minetest.after(0.5, function()
if self.attack then
local p = self.attack:getpos()
local vel = vector.subtract(p,s)
local obj = minetest.add_entity(s, "nssm:mese_dart")
local ran = math.random(7,14)/10
local vec = vector.multiply(vel, ran)
obj:setvelocity(vec)
end end
end)
end,
--[[
do_custom = function (self)
--minetest.chat_send_all(s.y.."-"..p.y.."="..(s.y-p.y))
if self.state == "attack" then
if self.attack then
local s = self.object:getpos()
local p = self.attack:getpos()
if (s.y - p.y ) < 10 then
local v = self.object:getvelocity()
v.y = 10
self.object:setvelocity(v)
end
end
end
end,]]
})
minetest.register_entity("nssm:mese_dart", {
textures = {"transparent.png"},
on_step = function(self, dtime)
self.timer = (self.timer) or os.time()
self.attack = (self.attack) or os.time()
if os.time() - self.timer > 4 then
self.object:remove()
end
local p = self.object:getpos()
local all_objects = minetest.get_objects_inside_radius(p, 1)
local players = {}
local _,obj
for _,obj in ipairs(all_objects) do
if obj:is_player() then
obj:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 10}
}, nil)
self.object:remove()
end
end
local n = minetest.get_node(p).name
if n ~= "air" then
minetest.set_node(p, {name="default:mese_block"})
self.object:remove();
end
local node = minetest.get_node(p).name
if node ~= "air" then
self.object:remove()
end
end,
}) })

View File

@ -681,13 +681,13 @@ local function calc_velocity(pos1, pos2, old_vel, power)
return vel return vel
end end
local function entity_physics(pos, radius, drops) local function entity_physics(pos, radius, drops, damage_all)
local objs = minetest.get_objects_inside_radius(pos, radius) local objs = minetest.get_objects_inside_radius(pos, radius)
for _, obj in pairs(objs) do for _, obj in pairs(objs) do
local obj_pos = obj:getpos() local obj_pos = obj:getpos()
local dist = math.max(1, vector.distance(pos, obj_pos)) local dist = math.max(1, vector.distance(pos, obj_pos))
local damage = (4 / dist) * radius local damage = (8 / (dist+1)) * radius
if obj:is_player() then if obj:is_player() then
-- currently the engine has no method to set -- currently the engine has no method to set
-- player velocity. See #2960 -- player velocity. See #2960
@ -708,7 +708,7 @@ local function entity_physics(pos, radius, drops)
local name = luaobj.name local name = luaobj.name
if objdef and objdef.on_blast then if objdef and objdef.on_blast then
if ((name == "nssm:pumpking") or (name == "nssm:morvalar0") or (name== "nssm:morvalar5")) then if ((not damage_all) and ((name == "nssm:pumpking") or (name == "nssm:morvalar0") or (name== "nssm:morvalar5"))) then
do_damage = false do_damage = false
do_knockback = false do_knockback = false
else else
@ -882,7 +882,11 @@ function tnt_boom_nssm(pos, def, block, effects)
local drops, radius = tnt_explode(pos, def.radius, def.ignore_protection, def.ignore_on_blast, block) local drops, radius = tnt_explode(pos, def.radius, def.ignore_protection, def.ignore_on_blast, block)
-- append entity drops -- append entity drops
local damage_radius = (radius / def.radius) * def.damage_radius local damage_radius = (radius / def.radius) * def.damage_radius
if def.damage_all then
entity_physics(pos, damage_radius, drops, def.damage_all)
else
entity_physics(pos, damage_radius, drops) entity_physics(pos, damage_radius, drops)
end
if not def.disable_drops then if not def.disable_drops then
eject_drops(drops, pos, radius) eject_drops(drops, pos, radius)
end end

View File

@ -57,7 +57,25 @@ local function search_on_step2(
local obj_p = nil local obj_p = nil
local vec_min = nil local vec_min = nil
for _,obj in ipairs(objects) do for _,obj in ipairs(objects) do
if (obj:is_player()) then if ((obj:is_player()) or (obj:get_luaentity() and (
(obj:get_luaentity().name == "mese_dart") or
(obj:get_luaentity().name == "phoenix_dart") or
(obj:get_luaentity().name == "duck_father") or
(obj:get_luaentity().name == "thickwebball") or
(obj:get_luaentity().name == "webball") or
(obj:get_luaentity().name == "super_gas") or
(obj:get_luaentity().name == "lava_arrow") or
(obj:get_luaentity().name == "snow_arrow") or
(obj:get_luaentity().name == "spine") or
(obj:get_luaentity().name == "mese_dart") or
(obj:get_luaentity().name == "morarrow") or
(obj:get_luaentity().name == "lava_block_bomb") or
(obj:get_luaentity().name == "crystal_gas_arrow") or
(obj:get_luaentity().name == "pumpkid_bomb"))
)) then
if (obj:get_luaentity()) then
minetest.chat_send_all(""..obj:get_luaentity().name)
end
elseif (obj:get_luaentity() and obj:get_luaentity().name ~= "__builtin:item" and obj:get_luaentity().name ~= self.object:get_luaentity().name) then elseif (obj:get_luaentity() and obj:get_luaentity().name ~= "__builtin:item" and obj:get_luaentity().name ~= self.object:get_luaentity().name) then
obj_p = obj:getpos() obj_p = obj:getpos()
local vec = {x=obj_p.x-pos.x, y=obj_p.y-pos.y, z=obj_p.z-pos.z} local vec = {x=obj_p.x-pos.x, y=obj_p.y-pos.y, z=obj_p.z-pos.z}
@ -99,6 +117,10 @@ local function search_on_step2(
--hit(pos,self) --hit(pos,self)
elseif min_dist<=1 and self.move==1 then elseif min_dist<=1 and self.move==1 then
obj_min:punch(obj_min, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 20},
}, nil)
hit(pos,self) hit(pos,self)
else else
self.object:setvelocity(vec_min) self.object:setvelocity(vec_min)
@ -178,6 +200,12 @@ local function search_on_step(
obj_p = obj_min:getpos() obj_p = obj_min:getpos()
if min_dist < 1 then if min_dist < 1 then
local node = node_ok(pos).name local node = node_ok(pos).name
obj_min:punch(obj_min, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 30},
}, nil)
self.hit_node(self, pos, node) self.hit_node(self, pos, node)
self.object:remove() self.object:remove()
return return
@ -387,7 +415,8 @@ nssm_register_weapon("spirit_ball", {
search_on_step(self, dtime, 5, 30, 25) search_on_step(self, dtime, 5, 30, 25)
end, end,
hit_node = function(self, pos, node) hit_node = function(self, pos, node)
tnt.boom(pos, {damage_radius=8,radius=4,ignore_protection=false}) --tnt.boom(pos, {damage_radius=8,radius=4,ignore_protection=false})
tnt_boom_nssm(pos, {damage_radius=4,radius=3,ignore_protection=false, damage_all = true})
end, end,
material = "default:goldblock", material = "default:goldblock",

View File

@ -13,6 +13,9 @@ Codice:
- Spawn mostri nuovi - Spawn mostri nuovi
- Danno River Lord e Sandonisc - Danno River Lord e Sandonisc
- Silversand Dragon (?) - Silversand Dragon (?)
- togliere le chat (hp_num -> envy sword)
- ascia esplosiva
Emmo vorrebbe: Emmo vorrebbe:
-Nuove armature dei nuovi mostri -Nuove armature dei nuovi mostri