Fix: wielded items covering entity
And remove shield texture when blocking with inv shield.master
parent
792f5a635d
commit
d126745563
|
@ -1,2 +1,3 @@
|
|||
pvp_revamped.projectile_throw_style_dip = 1
|
||||
pvp_revamped.projectile_throw_style_spinning = 2
|
||||
pvp_revamped.use_player_api = minetest.global_exists("player_api")
|
||||
|
|
|
@ -19,7 +19,6 @@ local projectile_throw_style_dip = pvp_revamped.projectile_throw_style_dip
|
|||
local projectile_throw_style_spinning = pvp_revamped.projectile_throw_style_spinning
|
||||
local player_data = pvp_revamped.player_data
|
||||
local player_persistent_data = pvp_revamped.player_persistent_data
|
||||
local lag = pvp_revamped.lag
|
||||
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
||||
local remove_text_center = pvp_revamped.remove_text_center
|
||||
local get_player_information = minetest.get_player_information
|
||||
|
@ -34,7 +33,8 @@ local max = math.max
|
|||
local floor = math.floor
|
||||
|
||||
minetest.register_globalstep(function(dtime)
|
||||
lag = dtime * 1000000
|
||||
local lag = dtime * 1000000
|
||||
pvp_revamped.lag = lag
|
||||
|
||||
for k, v in pairs(player_data) do
|
||||
local server_lag = lag + get_player_information(k).avg_jitter * 1000000
|
||||
|
@ -321,6 +321,8 @@ minetest.register_globalstep(function(dtime)
|
|||
local entity = v.entity
|
||||
-- Drop arms.
|
||||
player:set_bone_position(entity.bone, entity.position, new(-180, 0, 0))
|
||||
-- Update player's armor visual.
|
||||
armor:update_player_visuals(player)
|
||||
|
||||
v.entity.object:remove()
|
||||
v.entity = nil
|
||||
|
|
2
mod.conf
2
mod.conf
|
@ -1,3 +1,3 @@
|
|||
name = pvp_revamped
|
||||
description = Adds an extra layer to pvp.
|
||||
optional_depends = sscsm, shields
|
||||
optional_depends = sscsm, shields, player_api
|
||||
|
|
152
overrides.lua
152
overrides.lua
|
@ -22,12 +22,18 @@ local player_data = pvp_revamped.player_data
|
|||
local player_persistent_data = pvp_revamped.player_persistent_data
|
||||
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
||||
local remove_text_center = pvp_revamped.remove_text_center
|
||||
local use_player_api = pvp_revamped.use_player_api
|
||||
local registered_tools = minetest.registered_tools
|
||||
local get_item_group = minetest.get_item_group
|
||||
local get_us_time = minetest.get_us_time
|
||||
local new = vector.new
|
||||
local max = math.max
|
||||
local floor = math.floor
|
||||
local set_textures
|
||||
|
||||
if use_player_api then
|
||||
set_textures = player_api.set_textures
|
||||
end
|
||||
|
||||
minetest.register_on_mods_loaded(function()
|
||||
local max_armor_use
|
||||
|
@ -124,7 +130,17 @@ minetest.register_on_mods_loaded(function()
|
|||
-- Write pool to hud.
|
||||
create_hud_text_center(user, "pvp_revamped:shield_pool", block_pool)
|
||||
|
||||
data.shield = {pool = block_pool, bone = "Arm_Left", name = data_shield.name, index = data_shield.index, initial_time = time, time = time, duration = data_shield.duration, hasty_guard_duration = data_shield.hasty_guard_duration, armor_inv = true}
|
||||
data.shield = {
|
||||
pool = block_pool,
|
||||
name = data_shield.name,
|
||||
index = data_shield.index,
|
||||
initial_time = time,
|
||||
time = time,
|
||||
duration = data_shield.duration,
|
||||
hasty_guard_duration = data_shield.hasty_guard_duration,
|
||||
armor_inv = true
|
||||
}
|
||||
|
||||
data.block = nil
|
||||
player_data[name] = data
|
||||
|
||||
|
@ -133,6 +149,16 @@ minetest.register_on_mods_loaded(function()
|
|||
-- Remove un-used hud element.
|
||||
remove_text_center(user, "pvp_revamped:block_pool")
|
||||
|
||||
if use_player_api then
|
||||
local tex_data = armor.textures[name]
|
||||
-- Remove shield from left arm.
|
||||
set_textures(user, {
|
||||
tex_data.skin,
|
||||
tex_data.armor:gsub("%^" .. data_shield.texture .. ".png", ""),
|
||||
tex_data.wielditem
|
||||
})
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -257,7 +283,17 @@ minetest.register_on_mods_loaded(function()
|
|||
-- Write pool to hud.
|
||||
create_hud_text_center(user, "pvp_revamped:shield_pool", block_pool)
|
||||
|
||||
data.shield = {pool = block_pool, bone = "Arm_Left", name = data_shield.name, index = data_shield.index, initial_time = time, time = time, duration = data_shield.duration, hasty_guard_duration = data_shield.hasty_guard_duration, armor_inv = true}
|
||||
data.shield = {
|
||||
pool = block_pool,
|
||||
name = data_shield.name,
|
||||
index = data_shield.index,
|
||||
initial_time = time,
|
||||
time = time,
|
||||
duration = data_shield.duration,
|
||||
hasty_guard_duration = data_shield.hasty_guard_duration,
|
||||
armor_inv = true
|
||||
}
|
||||
|
||||
data.block = nil
|
||||
player_data[name] = data
|
||||
|
||||
|
@ -266,6 +302,16 @@ minetest.register_on_mods_loaded(function()
|
|||
-- Remove un-used hud element.
|
||||
remove_text_center(user, "pvp_revamped:block_pool")
|
||||
|
||||
if use_player_api then
|
||||
local tex_data = armor.textures[name]
|
||||
-- Remove shield from left arm.
|
||||
set_textures(user, {
|
||||
tex_data.skin,
|
||||
tex_data.armor:gsub("%^" .. data_shield.texture .. ".png", ""),
|
||||
tex_data.wielditem
|
||||
})
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -281,7 +327,15 @@ minetest.register_on_mods_loaded(function()
|
|||
-- Write pool to hud.
|
||||
create_hud_text_center(user, "pvp_revamped:shield_pool", block_pool)
|
||||
|
||||
data.shield = {pool = block_pool, bone = "Arm_Left", name = k, initial_time = time, time = time, duration = duration, hasty_guard_duration = hasty_guard_duration}
|
||||
data.shield = {
|
||||
pool = block_pool,
|
||||
name = k,
|
||||
initial_time = time,
|
||||
time = time,
|
||||
duration = duration,
|
||||
hasty_guard_duration = hasty_guard_duration
|
||||
}
|
||||
|
||||
data.block = nil
|
||||
|
||||
player_data[name] = data
|
||||
|
@ -291,6 +345,16 @@ minetest.register_on_mods_loaded(function()
|
|||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(user, "pvp_revamped:block_pool")
|
||||
|
||||
if use_player_api then
|
||||
local tex_data = armor.textures[name]
|
||||
-- Remove shield from right arm.
|
||||
set_textures(user, {
|
||||
tex_data.skin,
|
||||
tex_data.armor,
|
||||
"3d_armor_trans.png"
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
minetest.override_item(k, {on_secondary_use = function(itemstack, user, pointed_thing)
|
||||
|
@ -316,6 +380,7 @@ if minetest.global_exists("armor") then
|
|||
|
||||
armor.save_armor_inventory = function(self, player)
|
||||
local _, inv = self:get_valid_player(player)
|
||||
local playername = player:get_player_name()
|
||||
|
||||
-- Create new shield inv data.
|
||||
if inv then
|
||||
|
@ -325,9 +390,20 @@ if minetest.global_exists("armor") then
|
|||
local armor_shield = get_item_group(name, "armor_shield") or 0
|
||||
|
||||
if armor_shield > 0 then
|
||||
local groups = stack:get_definition().groups
|
||||
local def = stack:get_definition()
|
||||
local groups = def.groups
|
||||
local texture = def.texture or name:gsub("%:", "_")
|
||||
texture = texture:gsub(".png$", "")
|
||||
|
||||
player_persistent_data[player:get_player_name()].inventory_armor_shield = {name = name, index = i, block_pool = groups.block_pool, duration = groups.duration, hasty_guard_duration = groups.hasty_guard_duration, groups = groups}
|
||||
player_persistent_data[playername].inventory_armor_shield = {
|
||||
name = name,
|
||||
index = i,
|
||||
block_pool = groups.block_pool,
|
||||
duration = groups.duration,
|
||||
hasty_guard_duration = groups.hasty_guard_duration,
|
||||
groups = groups,
|
||||
texture = texture
|
||||
}
|
||||
|
||||
return old_save_armor_inventory(self, player)
|
||||
end
|
||||
|
@ -335,7 +411,14 @@ if minetest.global_exists("armor") then
|
|||
end
|
||||
end
|
||||
|
||||
player_persistent_data[player:get_player_name()].inventory_armor_shield = nil
|
||||
local data = get_player_data(playername)
|
||||
|
||||
data.shield = nil
|
||||
player_data[playername] = data
|
||||
player_persistent_data[playername].inventory_armor_shield = nil
|
||||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:shield_pool")
|
||||
|
||||
return old_save_armor_inventory(self, player)
|
||||
end
|
||||
|
@ -343,6 +426,7 @@ if minetest.global_exists("armor") then
|
|||
armor.load_armor_inventory = function(self, player)
|
||||
local _, inv = self:get_valid_player(player)
|
||||
local results = old_load_armor_inventory(self, player)
|
||||
local playername = player:get_player_name()
|
||||
|
||||
-- Create new shield inv data.
|
||||
if inv then
|
||||
|
@ -352,9 +436,20 @@ if minetest.global_exists("armor") then
|
|||
local armor_shield = get_item_group(name, "armor_shield") or 0
|
||||
|
||||
if armor_shield > 0 then
|
||||
local groups = stack:get_definition().groups
|
||||
local def = stack:get_definition()
|
||||
local groups = def.groups
|
||||
local texture = def.texture or name:gsub("%:", "_")
|
||||
texture = texture:gsub(".png$", "")
|
||||
|
||||
player_persistent_data[player:get_player_name()].inventory_armor_shield = {name = name, index = i, block_pool = groups.block_pool, duration = groups.duration, hasty_guard_duration = groups.hasty_guard_duration, groups = groups}
|
||||
player_persistent_data[playername].inventory_armor_shield = {
|
||||
name = name,
|
||||
index = i,
|
||||
block_pool = groups.block_pool,
|
||||
duration = groups.duration,
|
||||
hasty_guard_duration = groups.hasty_guard_duration,
|
||||
groups = groups,
|
||||
texture = texture
|
||||
}
|
||||
|
||||
return results
|
||||
end
|
||||
|
@ -362,8 +457,47 @@ if minetest.global_exists("armor") then
|
|||
end
|
||||
end
|
||||
|
||||
player_persistent_data[player:get_player_name()].inventory_armor_shield = nil
|
||||
local data = get_player_data(playername)
|
||||
|
||||
data.shield = nil
|
||||
player_data[playername] = data
|
||||
player_persistent_data[playername].inventory_armor_shield = nil
|
||||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:shield_pool")
|
||||
|
||||
return results
|
||||
end
|
||||
|
||||
armor.update_player_visuals = function(self, player)
|
||||
if not player then
|
||||
return
|
||||
end
|
||||
|
||||
local name = player:get_player_name()
|
||||
local tex_data = self.textures[name]
|
||||
|
||||
if tex_data then
|
||||
local tex_armor = tex_data.armor
|
||||
local wielditem = tex_data.wielditem
|
||||
local shield_data = get_player_data(name).shield
|
||||
local inventory_armor_shield = player_persistent_data[name].inventory_armor_shield
|
||||
|
||||
if inventory_armor_shield and shield_data and shield_data.armor_inv then
|
||||
tex_armor = tex_armor:gsub("%^" .. inventory_armor_shield.texture .. ".png", "")
|
||||
end
|
||||
|
||||
if shield_data and not shield_data.armor_inv then
|
||||
wielditem = "3d_armor_trans.png"
|
||||
end
|
||||
|
||||
set_textures(player, {
|
||||
tex_data.skin,
|
||||
tex_armor,
|
||||
wielditem
|
||||
})
|
||||
end
|
||||
|
||||
self:run_callbacks("on_update", player)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -28,7 +28,6 @@ local get_player_data = pvp_revamped.get_player_data
|
|||
local player_data = pvp_revamped.player_data
|
||||
local player_persistent_data = pvp_revamped.player_persistent_data
|
||||
local armor_3d = pvp_revamped.armor_3d
|
||||
local lag = pvp_revamped.lag
|
||||
local hit_points = pvp_revamped.hit_points
|
||||
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
||||
local remove_text_center = pvp_revamped.remove_text_center
|
||||
|
@ -554,7 +553,7 @@ local function punch(player, hitter, time_from_last_punch, tool_capabilities, di
|
|||
local c_damage = damage * clash_def_mul
|
||||
|
||||
hd.damage = max(hd.damage - (damage + c_damage) * parry_dmg_mul, 0)
|
||||
elseif full_punch and tool_capabilities.counter_duration and hd.time + tool_capabilities.counter_duration + lag + get_player_information(hitter_name).avg_jitter * 1000000 > get_us_time() then
|
||||
elseif full_punch and tool_capabilities.counter_duration and hd.time + tool_capabilities.counter_duration + pvp_revamped.lag + get_player_information(hitter_name).avg_jitter * 1000000 > get_us_time() then
|
||||
-- All damage gets reversed on counter.
|
||||
-- Current damage gets added to it plus the damage multipliable.
|
||||
local counter_dmg_mul = tool_capabilities.counter_dmg_mul or counter_dmg_mul
|
||||
|
|
28
sscsm.lua
28
sscsm.lua
|
@ -7,11 +7,17 @@ if sscsm then
|
|||
local create_wield_shield = pvp_revamped.create_wield_shield
|
||||
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
||||
local remove_text_center = pvp_revamped.remove_text_center
|
||||
local use_player_api = pvp_revamped.use_player_api
|
||||
local get_us_time = minetest.get_us_time
|
||||
local get_player_by_name = minetest.get_player_by_name
|
||||
local set_textures
|
||||
local cos = math.cos
|
||||
local sin = math.sin
|
||||
|
||||
if use_player_api then
|
||||
set_textures = player_api.set_textures
|
||||
end
|
||||
|
||||
-- Register a sscsm for dodging and dashing.
|
||||
sscsm.register({name = "pvp_revamped:movement",
|
||||
file = minetest.get_modpath("pvp_revamped") .. "/movement.lua"})
|
||||
|
@ -217,7 +223,17 @@ if sscsm then
|
|||
-- Write pool to hud.
|
||||
create_hud_text_center(player, "pvp_revamped:shield_pool", block_pool)
|
||||
|
||||
data.shield = {pool = block_pool, bone = "Arm_Left", name = data_shield.name, index = data_shield.index, initial_time = time, time = time, duration = data_shield.duration, hasty_guard_duration = data_shield.hasty_guard_duration, armor_inv = true}
|
||||
data.shield = {
|
||||
pool = block_pool,
|
||||
name = data_shield.name,
|
||||
index = data_shield.index,
|
||||
initial_time = time,
|
||||
time = time,
|
||||
duration = data_shield.duration,
|
||||
hasty_guard_duration = data_shield.hasty_guard_duration,
|
||||
armor_inv = true
|
||||
}
|
||||
|
||||
data.block = nil
|
||||
player_data[name] = data
|
||||
|
||||
|
@ -225,6 +241,16 @@ if sscsm then
|
|||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:block_pool")
|
||||
|
||||
if use_player_api then
|
||||
local tex_data = armor.textures[name]
|
||||
-- Remove shield from left arm.
|
||||
set_textures(player, {
|
||||
tex_data.skin,
|
||||
tex_data.armor:gsub("%^" .. data_shield.texture .. ".png", ""),
|
||||
tex_data.wielditem
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
|
Loading…
Reference in New Issue