Fix visuals /w blocking with shield
parent
12de38ed9a
commit
7c3d7065cc
|
@ -2,4 +2,3 @@ pvp_revamped.projectile_throw_style_dip = 1
|
||||||
pvp_revamped.projectile_throw_style_spinning = 2
|
pvp_revamped.projectile_throw_style_spinning = 2
|
||||||
pvp_revamped.point_torso = 0
|
pvp_revamped.point_torso = 0
|
||||||
pvp_revamped.point_arm = 1
|
pvp_revamped.point_arm = 1
|
||||||
pvp_revamped.use_player_api = minetest.global_exists("player_api")
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
pvp_revamped.lag = 0
|
pvp_revamped.lag = 0
|
||||||
pvp_revamped.projectile_data = nil
|
pvp_revamped.projectile_data = nil
|
||||||
pvp_revamped.armor_3d = minetest.global_exists("armor")
|
|
||||||
pvp_revamped.player_data = {}
|
pvp_revamped.player_data = {}
|
||||||
pvp_revamped.player_persistent_data = {}
|
pvp_revamped.player_persistent_data = {}
|
||||||
pvp_revamped.hit_points = {{x = 0.3, y = 1.2, z = 0, part = 1},
|
pvp_revamped.hit_points = {{x = 0.3, y = 1.2, z = 0, part = 1},
|
||||||
|
|
|
@ -102,8 +102,6 @@ minetest.register_globalstep(function(dtime)
|
||||||
local entity = v.entity
|
local entity = v.entity
|
||||||
-- Drop arms.
|
-- Drop arms.
|
||||||
player:set_bone_position(entity.bone, entity.position, new(-180, 0, 0))
|
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.object:remove()
|
||||||
v.entity = nil
|
v.entity = nil
|
||||||
|
|
18
helper.lua
18
helper.lua
|
@ -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_rotate = pvp_revamped.config.shield_entity_rotate
|
||||||
local shield_entity_scale = pvp_revamped.config.shield_entity_scale
|
local shield_entity_scale = pvp_revamped.config.shield_entity_scale
|
||||||
local hudkit = pvp_revamped.hudkit
|
local hudkit = pvp_revamped.hudkit
|
||||||
local armor_3d = pvp_revamped.armor_3d
|
local armor_3d = minetest.global_exists("armor")
|
||||||
local maxn = table.maxn
|
local maxn = table.maxn
|
||||||
local new = vector.new
|
local new = vector.new
|
||||||
local cos = math.cos
|
local cos = math.cos
|
||||||
|
@ -101,12 +101,6 @@ end
|
||||||
local create_wield_shield = pvp_revamped.create_wield_shield
|
local create_wield_shield = pvp_revamped.create_wield_shield
|
||||||
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
||||||
local remove_text_center = pvp_revamped.remove_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 function remove_hits(name)
|
||||||
local hit_data = get_player_data(name).hit
|
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 un-used hud element.
|
||||||
remove_text_center(user, "pvp_revamped:block_pool")
|
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
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
1
init.lua
1
init.lua
|
@ -11,6 +11,7 @@ dofile(format("%s/helper.lua", modpath))
|
||||||
dofile(format("%s/projectile_entity.lua", modpath))
|
dofile(format("%s/projectile_entity.lua", modpath))
|
||||||
dofile(format("%s/shield_entity.lua", modpath))
|
dofile(format("%s/shield_entity.lua", modpath))
|
||||||
dofile(format("%s/overrides.lua", modpath))
|
dofile(format("%s/overrides.lua", modpath))
|
||||||
|
dofile(format("%s/override_wieldview.lua", modpath))
|
||||||
dofile(format("%s/globalstep.lua", modpath))
|
dofile(format("%s/globalstep.lua", modpath))
|
||||||
dofile(format("%s/sscsm.lua", modpath))
|
dofile(format("%s/sscsm.lua", modpath))
|
||||||
dofile(format("%s/player_events.lua", modpath))
|
dofile(format("%s/player_events.lua", modpath))
|
||||||
|
|
2
mod.conf
2
mod.conf
|
@ -1,3 +1,3 @@
|
||||||
name = pvp_revamped
|
name = pvp_revamped
|
||||||
description = Adds an extra layer to pvp.
|
description = Adds an extra layer to pvp.
|
||||||
optional_depends = sscsm, shields, player_api
|
optional_depends = sscsm, shields, wieldview
|
||||||
|
|
|
@ -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
|
|
@ -15,14 +15,12 @@ local block_duration = pvp_revamped.config.block_duration
|
||||||
local counter_duration = pvp_revamped.config.counter_duration
|
local counter_duration = pvp_revamped.config.counter_duration
|
||||||
local parry_dmg_mul = pvp_revamped.config.parry_dmg_mul
|
local parry_dmg_mul = pvp_revamped.config.parry_dmg_mul
|
||||||
local counter_dmg_mul = pvp_revamped.config.counter_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 get_player_data = pvp_revamped.get_player_data
|
||||||
local create_wield_shield = pvp_revamped.create_wield_shield
|
local create_wield_shield = pvp_revamped.create_wield_shield
|
||||||
local player_data = pvp_revamped.player_data
|
local player_data = pvp_revamped.player_data
|
||||||
local player_persistent_data = pvp_revamped.player_persistent_data
|
local player_persistent_data = pvp_revamped.player_persistent_data
|
||||||
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
||||||
local remove_text_center = pvp_revamped.remove_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 shield_inv = pvp_revamped.shield_inv
|
||||||
local registered_tools = minetest.registered_tools
|
local registered_tools = minetest.registered_tools
|
||||||
local get_item_group = minetest.get_item_group
|
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 new = vector.new
|
||||||
local max = math.max
|
local max = math.max
|
||||||
local floor = math.floor
|
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()
|
minetest.register_on_mods_loaded(function()
|
||||||
local max_armor_use
|
local max_armor_use
|
||||||
|
@ -264,16 +257,6 @@ minetest.register_on_mods_loaded(function()
|
||||||
|
|
||||||
-- Remove un-used hud element.
|
-- Remove un-used hud element.
|
||||||
remove_text_center(user, "pvp_revamped:block_pool")
|
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
|
end
|
||||||
|
|
||||||
minetest.override_item(k, {on_secondary_use = function(itemstack, user, pointed_thing)
|
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
|
if armor_shield > 0 then
|
||||||
local def = stack:get_definition()
|
local def = stack:get_definition()
|
||||||
local groups = def.groups
|
local groups = def.groups
|
||||||
local texture = def.texture or name:gsub("%:", "_")
|
|
||||||
texture = texture:gsub(".png$", "")
|
|
||||||
|
|
||||||
player_persistent_data[playername].inventory_armor_shield = {
|
player_persistent_data[playername].inventory_armor_shield = {
|
||||||
name = name,
|
name = name,
|
||||||
|
@ -318,8 +299,7 @@ if minetest.global_exists("armor") then
|
||||||
block_pool = groups.block_pool,
|
block_pool = groups.block_pool,
|
||||||
duration = groups.duration,
|
duration = groups.duration,
|
||||||
hasty_guard_duration = groups.hasty_guard_duration,
|
hasty_guard_duration = groups.hasty_guard_duration,
|
||||||
groups = groups,
|
groups = groups
|
||||||
texture = texture
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return old_save_armor_inventory(self, player)
|
return old_save_armor_inventory(self, player)
|
||||||
|
@ -355,8 +335,6 @@ if minetest.global_exists("armor") then
|
||||||
if armor_shield > 0 then
|
if armor_shield > 0 then
|
||||||
local def = stack:get_definition()
|
local def = stack:get_definition()
|
||||||
local groups = def.groups
|
local groups = def.groups
|
||||||
local texture = def.texture or name:gsub("%:", "_")
|
|
||||||
texture = texture:gsub(".png$", "")
|
|
||||||
|
|
||||||
player_persistent_data[playername].inventory_armor_shield = {
|
player_persistent_data[playername].inventory_armor_shield = {
|
||||||
name = name,
|
name = name,
|
||||||
|
@ -364,8 +342,7 @@ if minetest.global_exists("armor") then
|
||||||
block_pool = groups.block_pool,
|
block_pool = groups.block_pool,
|
||||||
duration = groups.duration,
|
duration = groups.duration,
|
||||||
hasty_guard_duration = groups.hasty_guard_duration,
|
hasty_guard_duration = groups.hasty_guard_duration,
|
||||||
groups = groups,
|
groups = groups
|
||||||
texture = texture
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
@ -385,36 +362,4 @@ if minetest.global_exists("armor") then
|
||||||
|
|
||||||
return results
|
return results
|
||||||
end
|
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
|
end
|
||||||
|
|
|
@ -27,7 +27,7 @@ local counter_duration = pvp_revamped.config.counter_duration
|
||||||
local get_player_data = pvp_revamped.get_player_data
|
local get_player_data = pvp_revamped.get_player_data
|
||||||
local player_data = pvp_revamped.player_data
|
local player_data = pvp_revamped.player_data
|
||||||
local player_persistent_data = pvp_revamped.player_persistent_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 hit_points = pvp_revamped.hit_points
|
||||||
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
||||||
local remove_text_center = pvp_revamped.remove_text_center
|
local remove_text_center = pvp_revamped.remove_text_center
|
||||||
|
|
|
@ -10,21 +10,15 @@ local player_persistent_data = pvp_revamped.player_persistent_data
|
||||||
local create_wield_shield = pvp_revamped.create_wield_shield
|
local create_wield_shield = pvp_revamped.create_wield_shield
|
||||||
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
local create_hud_text_center = pvp_revamped.create_hud_text_center
|
||||||
local remove_text_center = pvp_revamped.remove_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 shield_inv = pvp_revamped.shield_inv
|
||||||
local dash = pvp_revamped.dash
|
local dash = pvp_revamped.dash
|
||||||
local barrel_roll = pvp_revamped.barrel_roll
|
local barrel_roll = pvp_revamped.barrel_roll
|
||||||
local dodge = pvp_revamped.dodge
|
local dodge = pvp_revamped.dodge
|
||||||
local get_us_time = minetest.get_us_time
|
local get_us_time = minetest.get_us_time
|
||||||
local get_player_by_name = minetest.get_player_by_name
|
local get_player_by_name = minetest.get_player_by_name
|
||||||
local set_textures
|
|
||||||
local cos = math.cos
|
local cos = math.cos
|
||||||
local sin = math.sin
|
local sin = math.sin
|
||||||
|
|
||||||
if use_player_api then
|
|
||||||
set_textures = player_api.set_textures
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Register a sscsm for dodging and dashing.
|
-- Register a sscsm for dodging and dashing.
|
||||||
sscsm.register({name = "pvp_revamped:movement",
|
sscsm.register({name = "pvp_revamped:movement",
|
||||||
file = minetest.get_modpath("pvp_revamped") .. "/movement.lua"})
|
file = minetest.get_modpath("pvp_revamped") .. "/movement.lua"})
|
||||||
|
|
Loading…
Reference in New Issue