1
0
mirror of https://github.com/sys4-fr/server-nalc.git synced 2025-02-24 15:00:26 +01:00

add bow damage

This commit is contained in:
crabman77 2016-05-04 15:20:02 +02:00
parent 7f7e6f0fa7
commit e9d29dc779
9 changed files with 30 additions and 2 deletions

View File

@ -41,6 +41,7 @@ local THROWING_ARROW_ENTITY={
player = "",
inventory = false,
stack = false,
bow_damage = 0,
}
THROWING_ARROW_ENTITY.on_step = function(self, dtime)

View File

@ -38,6 +38,7 @@ local THROWING_ARROW_ENTITY={
lastpos={},
collisionbox = {0,0,0,0,0,0},
player = "",
bow_damage = 0,
}
@ -55,6 +56,9 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime)
puncher = minetest.get_player_by_name(self.player)
end
local damage = 1.5
if self.bow_damage and self.bow_damage > 0 then
damage = damage + (self.bow_damage/12)
end
obj:punch(puncher, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=damage},

View File

@ -37,6 +37,7 @@ local THROWING_ARROW_ENTITY={
lastpos={},
collisionbox = {0,0,0,0,0,0},
player = "",
bow_damage = 0,
}
THROWING_ARROW_ENTITY.on_step = function(self, dtime)
@ -54,6 +55,9 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime)
puncher = minetest.get_player_by_name(self.player)
end
local damage = 4
if self.bow_damage and self.bow_damage > 0 then
damage = damage + (self.bow_damage/12)
end
obj:punch(puncher, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=damage},

View File

@ -39,6 +39,7 @@ local function throwing_register_fireworks(color, desc)
lastpos={},
collisionbox = {0,0,0,0,0,0},
player = "",
bow_damage = 0,
}
local radius = 0.5
@ -100,6 +101,9 @@ local function throwing_register_fireworks(color, desc)
for k, obj in pairs(objs) do
if throwing_is_player(self.player, obj) or throwing_is_entity(obj) then
local damage = 2
if self.bow_damage and self.bow_damage > 0 then
damage = damage + (self.bow_damage/12)
end
obj:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=damage},

View File

@ -49,7 +49,7 @@ function throwing_touch(pos, objpos)
local rx = pos.x - objpos.x
local ry = pos.y - (objpos.y+1)
local rz = pos.z - objpos.z
if (ry < 1 and ry > -1) and (rx < 0.4 and rx > -0.4) and (rz < 0.4 and rz > -0.4) then
if (ry < 1 and ry > -1) and (rx < 1 and rx > -1) and (rz < 1 and rz > -1) then
return true
end
return false
@ -77,6 +77,7 @@ function throwing_shoot_arrow (itemstack, player, stiffness, is_cross)
obj:get_luaentity().inventory = player:get_inventory()
obj:get_luaentity().stack = player:get_inventory():get_stack("main", player:get_wield_index()-1)
obj:get_luaentity().lastpos = {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}
obj:get_luaentity().bow_damage = stiffness
end
return true
end

View File

@ -38,6 +38,7 @@ local THROWING_ARROW_ENTITY={
lastpos={},
collisionbox = {0,0,0,0,0,0},
player = "",
bow_damage = 0,
}
local radius = 1
@ -80,6 +81,9 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime)
if throwing_is_player(self.player, obj) or throwing_is_entity(obj) then
local speed = vector.length(self.object:getvelocity())
local damage = ((speed + 5)^1.2)/10 + 12
if self.bow_damage and self.bow_damage > 0 then
damage = damage + (self.bow_damage/12)
end
obj:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=damage},

View File

@ -39,6 +39,7 @@ function throwing_register_arrow_standard (kind, desc, eq, toughness, craft)
lastpos={},
collisionbox = {0,0,0,0,0,0},
player = "",
bow_damage = 0,
}
THROWING_ARROW_ENTITY.on_step = function(self, dtime)
@ -55,9 +56,13 @@ function throwing_register_arrow_standard (kind, desc, eq, toughness, craft)
if self.player and minetest.get_player_by_name(self.player) then
puncher = minetest.get_player_by_name(self.player)
end
local damage = eq
if self.bow_damage and self.bow_damage > 0 then
damage = damage + (self.bow_damage/12)
end
obj:punch(puncher, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=eq},
damage_groups={fleshy=damage},
}, nil)
if math.random() < toughness then
if math.random(0,100) % 2 == 0 then

View File

@ -37,6 +37,7 @@ local THROWING_ARROW_ENTITY={
lastpos={},
collisionbox = {0,0,0,0,0,0},
player = "",
bow_damage = 0,
}
THROWING_ARROW_ENTITY.on_step = function(self, dtime)

View File

@ -38,6 +38,7 @@ local THROWING_ARROW_ENTITY={
collisionbox = {0,0,0,0,0,0},
node = "",
player = "",
bow_damage = 0,
}
THROWING_ARROW_ENTITY.on_step = function(self, dtime)
@ -55,6 +56,9 @@ THROWING_ARROW_ENTITY.on_step = function(self, dtime)
puncher = minetest.get_player_by_name(self.player)
end
local damage = 0.5
if self.bow_damage and self.bow_damage > 0 then
damage = damage + (self.bow_damage/12)
end
obj:punch(puncher, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=damage},