Fix visuals /w blocking with shield

master
Coder12a 2020-10-29 22:31:31 -05:00
parent 12de38ed9a
commit 7c3d7065cc
10 changed files with 41 additions and 86 deletions

View File

@ -2,4 +2,3 @@ pvp_revamped.projectile_throw_style_dip = 1
pvp_revamped.projectile_throw_style_spinning = 2
pvp_revamped.point_torso = 0
pvp_revamped.point_arm = 1
pvp_revamped.use_player_api = minetest.global_exists("player_api")

View File

@ -1,6 +1,5 @@
pvp_revamped.lag = 0
pvp_revamped.projectile_data = nil
pvp_revamped.armor_3d = minetest.global_exists("armor")
pvp_revamped.player_data = {}
pvp_revamped.player_persistent_data = {}
pvp_revamped.hit_points = {{x = 0.3, y = 1.2, z = 0, part = 1},

View File

@ -102,8 +102,6 @@ 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

View File

@ -6,7 +6,7 @@ local shield_entity_pos = pvp_revamped.config.shield_entity_pos
local shield_entity_rotate = pvp_revamped.config.shield_entity_rotate
local shield_entity_scale = pvp_revamped.config.shield_entity_scale
local hudkit = pvp_revamped.hudkit
local armor_3d = pvp_revamped.armor_3d
local armor_3d = minetest.global_exists("armor")
local maxn = table.maxn
local new = vector.new
local cos = math.cos
@ -101,12 +101,6 @@ end
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 set_textures
if use_player_api then
set_textures = player_api.set_textures
end
local function remove_hits(name)
local hit_data = get_player_data(name).hit
@ -252,16 +246,6 @@ function pvp_revamped.shield_inv(user, name, player_pdata, data)
-- 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 true
end

View File

@ -11,6 +11,7 @@ dofile(format("%s/helper.lua", modpath))
dofile(format("%s/projectile_entity.lua", modpath))
dofile(format("%s/shield_entity.lua", modpath))
dofile(format("%s/overrides.lua", modpath))
dofile(format("%s/override_wieldview.lua", modpath))
dofile(format("%s/globalstep.lua", modpath))
dofile(format("%s/sscsm.lua", modpath))
dofile(format("%s/player_events.lua", modpath))

View File

@ -1,3 +1,3 @@
name = pvp_revamped
description = Adds an extra layer to pvp.
optional_depends = sscsm, shields, player_api
optional_depends = sscsm, shields, wieldview

35
override_wieldview.lua Normal file
View File

@ -0,0 +1,35 @@
if not wieldview then
return
end
local player_data = pvp_revamped.player_data
function wieldview.update_wielded_item(self, player)
if not player then
return
end
local name = player:get_player_name()
local stack = player:get_wielded_item()
local item = stack:get_name()
if not item then
return
end
if self.wielded_item[name] then
local pdata = player_data[name]
if pdata and pdata.shield then
armor.textures[name].wielditem = "3d_armor_trans.png"
armor:update_player_visuals(player)
return
end
if self.wielded_item[name] == item then
return
end
armor.textures[name].wielditem = self:get_item_texture(item)
armor:update_player_visuals(player)
end
self.wielded_item[name] = item
end

View File

@ -15,14 +15,12 @@ local block_duration = pvp_revamped.config.block_duration
local counter_duration = pvp_revamped.config.counter_duration
local parry_dmg_mul = pvp_revamped.config.parry_dmg_mul
local counter_dmg_mul = pvp_revamped.config.counter_dmg_mul
local armor_3d = pvp_revamped.armor_3d
local get_player_data = pvp_revamped.get_player_data
local create_wield_shield = pvp_revamped.create_wield_shield
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 shield_inv = pvp_revamped.shield_inv
local registered_tools = minetest.registered_tools
local get_item_group = minetest.get_item_group
@ -30,11 +28,6 @@ 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
@ -264,16 +257,6 @@ 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)
@ -309,8 +292,6 @@ if minetest.global_exists("armor") then
if armor_shield > 0 then
local def = stack:get_definition()
local groups = def.groups
local texture = def.texture or name:gsub("%:", "_")
texture = texture:gsub(".png$", "")
player_persistent_data[playername].inventory_armor_shield = {
name = name,
@ -318,8 +299,7 @@ if minetest.global_exists("armor") then
block_pool = groups.block_pool,
duration = groups.duration,
hasty_guard_duration = groups.hasty_guard_duration,
groups = groups,
texture = texture
groups = groups
}
return old_save_armor_inventory(self, player)
@ -355,8 +335,6 @@ if minetest.global_exists("armor") then
if armor_shield > 0 then
local def = stack:get_definition()
local groups = def.groups
local texture = def.texture or name:gsub("%:", "_")
texture = texture:gsub(".png$", "")
player_persistent_data[playername].inventory_armor_shield = {
name = name,
@ -364,8 +342,7 @@ if minetest.global_exists("armor") then
block_pool = groups.block_pool,
duration = groups.duration,
hasty_guard_duration = groups.hasty_guard_duration,
groups = groups,
texture = texture
groups = groups
}
return results
@ -385,36 +362,4 @@ if minetest.global_exists("armor") then
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

View File

@ -27,7 +27,7 @@ local counter_duration = pvp_revamped.config.counter_duration
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 armor_3d = minetest.global_exists("armor")
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

View File

@ -10,21 +10,15 @@ local player_persistent_data = pvp_revamped.player_persistent_data
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 shield_inv = pvp_revamped.shield_inv
local dash = pvp_revamped.dash
local barrel_roll = pvp_revamped.barrel_roll
local dodge = pvp_revamped.dodge
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"})