Add: new user hook functions
on_block_deactivated on_block_damage on_guard_breakmaster
parent
03af48aeaf
commit
31dada114f
15
README.md
15
README.md
|
@ -534,7 +534,7 @@ tool_capabilities = {
|
|||
|
||||
### shield groups only
|
||||
``` lua
|
||||
armor:register_tool("test:shield_test", {
|
||||
minetest.register_tool("test:shield_test", {
|
||||
groups = {
|
||||
-- See shield_pool_mul in config.
|
||||
shield_pool_mul = 4,
|
||||
|
@ -557,10 +557,19 @@ armor:register_tool("test:shield_test", {
|
|||
})
|
||||
```
|
||||
|
||||
### tool
|
||||
### tool functions
|
||||
``` lua
|
||||
minetest.register_tool("pvp_shields:shield_steel", {
|
||||
minetest.register_tool("test:tool", {
|
||||
on_block_activate = function(player)
|
||||
-- Invokes when the player activates the tool's block ability.
|
||||
end,
|
||||
on_block_deactivated = function(player)
|
||||
-- Invokes when the player's block ability is deactivated.
|
||||
end,
|
||||
on_block_damage = function(player, damage)
|
||||
-- Invokes when the player blocks damage.
|
||||
end,
|
||||
on_guard_break = function(player)
|
||||
-- Invokes when the player's guard pool is zero or below.
|
||||
end
|
||||
```
|
||||
|
|
|
@ -12,8 +12,6 @@ local projectile_dmg_mul = pvp_revamped.config.projectile_dmg_mul
|
|||
local projectile_spinning_gravity_mul = pvp_revamped.config.projectile_spinning_gravity_mul
|
||||
local projectile_dip_gravity_mul = pvp_revamped.config.projectile_dip_gravity_mul
|
||||
local clash_duration = pvp_revamped.config.clash_duration
|
||||
local dash_cooldown = pvp_revamped.config.dash_cooldown
|
||||
local dash_cooldown = pvp_revamped.config.dash_cooldown
|
||||
local hasty_guard_duration = pvp_revamped.config.hasty_guard_duration
|
||||
local takedown = pvp_revamped.config.takedown
|
||||
local projectile_throw_style_dip = pvp_revamped.projectile_throw_style_dip
|
||||
|
@ -65,6 +63,14 @@ minetest.register_globalstep(function(dtime)
|
|||
(check_item and player:get_wielded_item():get_name() ~= block.name) then
|
||||
-- Revert the damage texture modifier.
|
||||
player:set_properties{damage_texture_modifier = pp_data.damage_texture_modifier}
|
||||
|
||||
local on_block_deactivated = block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
v.block = nil
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:block_pool")
|
||||
|
@ -94,6 +100,14 @@ minetest.register_globalstep(function(dtime)
|
|||
(check_item and not shield.armor_inv and player:get_wielded_item():get_name() ~= shield.name) then
|
||||
-- Revert the damage texture modifier.
|
||||
player:set_properties{damage_texture_modifier = pp_data.damage_texture_modifier}
|
||||
|
||||
local on_block_deactivated = shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
v.shield = nil
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:shield_pool")
|
||||
|
|
75
helper.lua
75
helper.lua
|
@ -128,8 +128,24 @@ function pvp_revamped.dodge(name, player, number)
|
|||
player:set_properties{damage_texture_modifier = ""}
|
||||
-- Clear out any hit data on dodge.
|
||||
remove_hits(name)
|
||||
|
||||
local on_block_deactivated = dodge_data.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
-- Remove shield and block.
|
||||
dodge_data.block = nil
|
||||
|
||||
on_block_deactivated = dodge_data.shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
dodge_data.shield = nil
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:block_pool")
|
||||
|
@ -141,8 +157,24 @@ function pvp_revamped.dodge(name, player, number)
|
|||
player:set_properties{damage_texture_modifier = ""}
|
||||
-- Clear out any hit data on dodge.
|
||||
remove_hits(name)
|
||||
|
||||
local on_block_deactivated = dodge_data.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
-- Remove shield and block.
|
||||
dodge_data.block = nil
|
||||
|
||||
on_block_deactivated = dodge_data.shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
dodge_data.shield = nil
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:block_pool")
|
||||
|
@ -162,7 +194,22 @@ function pvp_revamped.barrel_roll(name, player, number, x, z)
|
|||
-- Clear out any hit data on barrel roll.
|
||||
remove_hits(name)
|
||||
-- Remove shield and block.
|
||||
local on_block_deactivated = barrel_roll_data.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
barrel_roll_data.block = nil
|
||||
|
||||
on_block_deactivated = barrel_roll_data.shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
barrel_roll_data.shield = nil
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:block_pool")
|
||||
|
@ -175,7 +222,22 @@ function pvp_revamped.barrel_roll(name, player, number, x, z)
|
|||
-- Clear out any hit data on barrel roll.
|
||||
remove_hits(name)
|
||||
-- Remove shield and block.
|
||||
local on_block_deactivated = barrel_roll_data.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
barrel_roll_data.block = nil
|
||||
|
||||
on_block_deactivated = barrel_roll_data.shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
barrel_roll_data.shield = nil
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(player, "pvp_revamped:block_pool")
|
||||
|
@ -236,9 +298,20 @@ function pvp_revamped.shield_inv(user, name, player_pdata, data)
|
|||
time = time,
|
||||
duration = data_shield.duration,
|
||||
hasty_guard_duration = data_shield.hasty_guard_duration,
|
||||
armor_inv = true
|
||||
armor_inv = true,
|
||||
on_block_activate = data_shield.on_block_activate,
|
||||
on_block_deactivated = data_shield.on_block_deactivated,
|
||||
on_block_damage = data_shield.on_block_damage,
|
||||
on_guard_break = data_shield.on_guard_break
|
||||
}
|
||||
|
||||
local on_block_deactivated = data.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(user)
|
||||
end
|
||||
|
||||
data.block = nil
|
||||
player_data[name] = data
|
||||
|
||||
|
|
|
@ -34,7 +34,10 @@ armor.save_armor_inventory = function(self, player)
|
|||
duration = groups.duration,
|
||||
hasty_guard_duration = groups.hasty_guard_duration,
|
||||
groups = groups,
|
||||
on_block_activate = def.on_block_activate
|
||||
on_block_activate = def.on_block_activate,
|
||||
on_block_deactivated = def.on_block_deactivated,
|
||||
on_block_damage = def.on_block_damage,
|
||||
on_guard_break = def.on_guard_break
|
||||
}
|
||||
|
||||
return old_save_armor_inventory(self, player)
|
||||
|
@ -78,7 +81,10 @@ armor.load_armor_inventory = function(self, player)
|
|||
duration = groups.duration,
|
||||
hasty_guard_duration = groups.hasty_guard_duration,
|
||||
groups = groups,
|
||||
on_block_activate = def.on_block_activate
|
||||
on_block_activate = def.on_block_activate,
|
||||
on_block_deactivated = def.on_block_deactivated,
|
||||
on_block_damage = def.on_block_damage,
|
||||
on_guard_break = def.on_guard_break
|
||||
}
|
||||
|
||||
return results
|
||||
|
|
|
@ -11,10 +11,12 @@ function wieldview.update_wielded_item(self, player)
|
|||
|
||||
local name = player:get_player_name()
|
||||
local stack = player:get_wielded_item()
|
||||
local item = stack:get_name()
|
||||
local item = stack:get_name()
|
||||
|
||||
if not item then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
if self.wielded_item[name] then
|
||||
local pdata = player_data[name]
|
||||
|
||||
|
@ -30,6 +32,7 @@ function wieldview.update_wielded_item(self, player)
|
|||
|
||||
armor.textures[name].wielditem = self:get_item_texture(item)
|
||||
armor:update_player_visuals(player)
|
||||
end
|
||||
end
|
||||
|
||||
self.wielded_item[name] = item
|
||||
end
|
||||
|
|
|
@ -133,7 +133,16 @@ minetest.register_on_mods_loaded(function()
|
|||
-- Write pool to hud.
|
||||
create_hud_text_center(user, "pvp_revamped:block_pool", block_pool)
|
||||
|
||||
data.shield = nil
|
||||
if data.shield then
|
||||
local on_block_deactivated = data.shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(user)
|
||||
end
|
||||
|
||||
data.shield = nil
|
||||
end
|
||||
|
||||
-- Remove un-used hud element.
|
||||
remove_text_center(user, "pvp_revamped:shield_pool")
|
||||
|
@ -176,13 +185,29 @@ minetest.register_on_mods_loaded(function()
|
|||
return old_on_drop(itemstack, dropper, pos)
|
||||
end
|
||||
|
||||
data.block = nil
|
||||
if data.block then
|
||||
local on_block_deactivated = data.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(dropper)
|
||||
end
|
||||
|
||||
data.block = nil
|
||||
end
|
||||
|
||||
-- Remove un-used block hud element.
|
||||
remove_text_center(dropper, "pvp_revamped:block_pool")
|
||||
|
||||
-- Only clear shield if it is not from the armor inv.
|
||||
if shield_data and not shield_data.armor_inv then
|
||||
local on_block_deactivated = shield_data.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(dropper)
|
||||
end
|
||||
|
||||
data.shield = nil
|
||||
-- Remove shield pool hud element.
|
||||
remove_text_center(dropper, "pvp_revamped:shield_pool")
|
||||
|
@ -220,6 +245,10 @@ minetest.register_on_mods_loaded(function()
|
|||
local duration = groups.duration or shield_duration + (armor_use + value) * shield_duration_mul
|
||||
local hasty_shield_mul = groups.hasty_shield_mul or hasty_shield_mul
|
||||
local hasty_guard_duration = hasty_guard_duration
|
||||
local on_block_activate = v.on_block_activate
|
||||
local on_block_deactivated = v.on_block_deactivated
|
||||
local on_block_damage = v.on_block_damage
|
||||
local on_guard_break = v.on_guard_break
|
||||
|
||||
if max_armor_use then
|
||||
block_pool = groups.block_pool or max_armor_use - armor_use + value * shield_pool_mul
|
||||
|
@ -267,10 +296,23 @@ minetest.register_on_mods_loaded(function()
|
|||
initial_time = time,
|
||||
time = time,
|
||||
duration = duration,
|
||||
hasty_guard_duration = hasty_guard_duration
|
||||
hasty_guard_duration = hasty_guard_duration,
|
||||
on_block_activate = on_block_activate,
|
||||
on_block_deactivated = on_block_deactivated,
|
||||
on_block_damage = on_block_damage,
|
||||
on_guard_break = on_guard_break
|
||||
}
|
||||
|
||||
data.block = nil
|
||||
|
||||
if data.block then
|
||||
local on_block_deactivated = data.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(user)
|
||||
end
|
||||
|
||||
data.block = nil
|
||||
end
|
||||
|
||||
player_data[name] = data
|
||||
|
||||
|
|
|
@ -114,6 +114,13 @@ local function break_guard(player, name)
|
|||
local pdata = player_data[name]
|
||||
|
||||
if pdata.shield then
|
||||
local on_block_deactivated = pdata.shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
player_data[name].shield = nil
|
||||
|
||||
-- Remove hud element.
|
||||
|
@ -121,6 +128,13 @@ local function break_guard(player, name)
|
|||
end
|
||||
|
||||
if pdata.block then
|
||||
local on_block_deactivated = pdata.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
player_data[name].block = nil
|
||||
|
||||
-- Remove hud element.
|
||||
|
|
71
punch.lua
71
punch.lua
|
@ -346,7 +346,22 @@ local function punch(player, hitter, time_from_last_punch, tool_capabilities, di
|
|||
|
||||
if not projectile then
|
||||
-- Remove the hitter's blocking data.
|
||||
local on_block_deactivated = hitter_data.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
hitter_data.block = nil
|
||||
|
||||
on_block_deactivated = hitter_data.shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
hitter_data.shield = nil
|
||||
player_data[hitter_name] = hitter_data
|
||||
|
||||
|
@ -372,6 +387,13 @@ local function punch(player, hitter, time_from_last_punch, tool_capabilities, di
|
|||
|
||||
-- Remove block table if pool is zero or below.
|
||||
if pool <= 0 then
|
||||
local on_guard_break = data_block.on_guard_break
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_guard_break then
|
||||
on_guard_break(player)
|
||||
end
|
||||
|
||||
victim_data.block = nil
|
||||
|
||||
-- Remove un-used hud element.
|
||||
|
@ -380,6 +402,13 @@ local function punch(player, hitter, time_from_last_punch, tool_capabilities, di
|
|||
return true
|
||||
end
|
||||
|
||||
local on_block_damage = data_block.on_block_damage
|
||||
|
||||
-- Run damage blocked function.
|
||||
if on_block_damage then
|
||||
on_block_damage(player, damage)
|
||||
end
|
||||
|
||||
-- Update block pool text.
|
||||
create_hud_text_center(player, "pvp_revamped:block_pool", pool)
|
||||
|
||||
|
@ -409,6 +438,13 @@ local function punch(player, hitter, time_from_last_punch, tool_capabilities, di
|
|||
|
||||
-- Remove shield table if pool is zero or below.
|
||||
if pool <= 0 then
|
||||
local on_guard_break = data_shield.on_guard_break
|
||||
|
||||
-- Invoke guard break function if any.
|
||||
if on_guard_break then
|
||||
on_guard_break(player)
|
||||
end
|
||||
|
||||
victim_data.shield = nil
|
||||
|
||||
-- Remove un-used hud element.
|
||||
|
@ -417,6 +453,13 @@ local function punch(player, hitter, time_from_last_punch, tool_capabilities, di
|
|||
return true
|
||||
end
|
||||
|
||||
local on_block_damage = data_shield.on_block_damage
|
||||
|
||||
-- Run damage blocked function.
|
||||
if on_block_damage then
|
||||
on_block_damage(player, damage)
|
||||
end
|
||||
|
||||
-- Update shield pool text.
|
||||
create_hud_text_center(player, "pvp_revamped:shield_pool", pool)
|
||||
|
||||
|
@ -448,6 +491,13 @@ local function punch(player, hitter, time_from_last_punch, tool_capabilities, di
|
|||
|
||||
-- Remove shield table if pool is zero or below.
|
||||
if pool <= 0 then
|
||||
local on_guard_break = data_shield.on_guard_break
|
||||
|
||||
-- Invoke guard break function if any.
|
||||
if on_guard_break then
|
||||
on_guard_break(player)
|
||||
end
|
||||
|
||||
victim_data.shield = nil
|
||||
|
||||
-- Remove un-used hud element.
|
||||
|
@ -456,6 +506,13 @@ local function punch(player, hitter, time_from_last_punch, tool_capabilities, di
|
|||
return true
|
||||
end
|
||||
|
||||
local on_block_damage = data_shield.on_block_damage
|
||||
|
||||
-- Run damage blocked function.
|
||||
if on_block_damage then
|
||||
on_block_damage(player, damage)
|
||||
end
|
||||
|
||||
-- Update shield pool text.
|
||||
create_hud_text_center(player, "pvp_revamped:shield_pool", pool)
|
||||
|
||||
|
@ -589,6 +646,20 @@ local function punch(player, hitter, time_from_last_punch, tool_capabilities, di
|
|||
victim_data.hit = {{name = hitter_name, damage = damage, full_punch = full_punch, time = get_us_time()}}
|
||||
end
|
||||
|
||||
local on_block_deactivated = victim_data.block.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
on_block_deactivated = victim_data.shield.on_block_deactivated
|
||||
|
||||
-- Invoke deactivate block function if any.
|
||||
if on_block_deactivated then
|
||||
on_block_deactivated(player)
|
||||
end
|
||||
|
||||
victim_data.block = nil
|
||||
victim_data.shield = nil
|
||||
|
||||
|
|
Loading…
Reference in New Issue