Add: two clear funcs

master
Coder12a 2021-02-11 18:44:48 -06:00
parent 10dffcd88a
commit 482edc49d7
5 changed files with 80 additions and 240 deletions

175
api.lua
View File

@ -11,12 +11,15 @@ local new = vector.new
local floor = math.floor
local y = 0
-- Drops an item at the player's position.
-- Drops an item at the given or player's position.
function pvp_revamped.drop(player, item, pos)
-- Check if the param is true or not.
if not pos then
-- Get the player's position.
pos = player:get_pos()
end
-- Create the item.
local obj = add_item(pos, item)
if obj then
@ -26,6 +29,7 @@ end
-- Get or create player data.
function pvp_revamped.get_player_data(name)
-- Get or set the table.
local data = player_data[name] or {}
if not player_data[name] then
@ -37,6 +41,7 @@ end
local get_player_data = pvp_revamped.get_player_data
-- Create the wield shield entity and attach it to the player.
function pvp_revamped.create_wield_shield(player, name, bone, itemname, groups)
local object = add_entity(player:get_pos(), "pvp_revamped:shield", name)
@ -120,6 +125,51 @@ local function remove_hits(player, name)
hit_data = nil
end
function pvp_revamped.clear_blockdata(block, player, name)
if block then
local on_block_deactivated = block.on_block_deactivated
-- Invoke deactivate block function if any.
if on_block_deactivated then
on_block_deactivated(player)
end
if not name then
name = player:get_player_name()
end
-- Remove block data.
player_data[name].block = nil
-- Remove un-used hud element.
remove_text_center(player, "pvp_revamped:block_pool")
end
end
function pvp_revamped.clear_shielddata(shield, player, name)
if shield then
on_block_deactivated = shield.on_block_deactivated
-- Invoke deactivate block function if any.
if on_block_deactivated then
on_block_deactivated(player)
end
if not name then
name = player:get_player_name()
end
-- Remove shield block data.
player_data[name].shield = nil
-- Remove un-used hud element.
remove_text_center(player, "pvp_revamped:shield_pool")
end
end
local clear_blockdata = pvp_revamped.clear_blockdata
local clear_shielddata = pvp_revamped.clear_shielddata
-- Helper function to check and set the dodge cooldown.
function pvp_revamped.dodge(name, player, number)
local dodge_data = get_player_data(name)
@ -129,32 +179,9 @@ function pvp_revamped.dodge(name, player, number)
player:set_properties{damage_texture_modifier = ""}
-- Clear out any hit data on dodge.
remove_hits(player, name)
clear_blockdata(dodge_data.block, player, name)
clear_shielddata(dodge_data.shield, player, name)
if dodge_data.block then
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
end
if dodge_data.shield then
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
end
-- Remove un-used hud element.
remove_text_center(player, "pvp_revamped:block_pool")
remove_text_center(player, "pvp_revamped:shield_pool")
-- Display words invincible to player.
create_hud_text_center(player, "pvp_revamped:dodge", "INVINCIBLE")
elseif dodge_data.dodge and not dodge_data.dodge[number] then
@ -162,33 +189,9 @@ function pvp_revamped.dodge(name, player, number)
player:set_properties{damage_texture_modifier = ""}
-- Clear out any hit data on dodge.
remove_hits(player, name)
clear_blockdata(dodge_data.block, player, name)
clear_shielddata(dodge_data.shield, player, name)
if dodge_data.block then
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
end
if dodge_data.shield then
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
end
-- Remove un-used hud element.
remove_text_center(player, "pvp_revamped:block_pool")
remove_text_center(player, "pvp_revamped:shield_pool")
-- Display words invincible to player.
create_hud_text_center(player, "pvp_revamped:dodge", "INVINCIBLE")
end
@ -203,32 +206,9 @@ function pvp_revamped.barrel_roll(name, player, number, x, z)
player:set_properties{damage_texture_modifier = ""}
-- Clear out any hit data on barrel roll.
remove_hits(player, name)
-- Remove shield and block.
if barrel_roll_data.block then
local on_block_deactivated = barrel_roll_data.block.on_block_deactivated
clear_blockdata(barrel_roll_data.block, player, name)
clear_shielddata(barrel_roll_data.shield, player, name)
-- Invoke deactivate block function if any.
if on_block_deactivated then
on_block_deactivated(player)
end
barrel_roll_data.block = nil
end
if barrel_roll_data.shield then
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
end
-- Remove un-used hud element.
remove_text_center(player, "pvp_revamped:block_pool")
remove_text_center(player, "pvp_revamped:shield_pool")
-- Display words invincible to player.
create_hud_text_center(player, "pvp_revamped:barrel_roll", "INVINCIBLE")
elseif barrel_roll_data.barrel_roll and not barrel_roll_data.barrel_roll[number] then
@ -236,33 +216,9 @@ function pvp_revamped.barrel_roll(name, player, number, x, z)
player:set_properties{damage_texture_modifier = ""}
-- Clear out any hit data on barrel roll.
remove_hits(player, name)
-- Remove shield and block.
if barrel_roll_data.block then
local on_block_deactivated = barrel_roll_data.block.on_block_deactivated
clear_blockdata(barrel_roll_data.block, player, name)
clear_shielddata(barrel_roll_data.shield, player, name)
-- Invoke deactivate block function if any.
if on_block_deactivated then
on_block_deactivated(player)
end
barrel_roll_data.block = nil
end
if barrel_roll_data.shield then
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
end
-- Remove un-used hud element.
remove_text_center(player, "pvp_revamped:block_pool")
remove_text_center(player, "pvp_revamped:shield_pool")
-- Display words invincible to player.
create_hud_text_center(player, "pvp_revamped:barrel_roll", "INVINCIBLE")
else
@ -326,23 +282,12 @@ function pvp_revamped.shield_inv(user, name, player_pdata, data)
on_hasty_guard = data_shield.on_hasty_guard
}
if data.block then
local on_block_deactivated = data.block.on_block_deactivated
clear_blockdata(data.block, user, name)
-- Invoke deactivate block function if any.
if on_block_deactivated then
on_block_deactivated(user)
end
data.block = nil
end
player_data[name] = data
user:set_properties{damage_texture_modifier = ""}
-- Remove un-used hud element.
remove_text_center(user, "pvp_revamped:block_pool")
-- Run user func if any.
if on_block_activate then
on_block_activate(user)

View File

@ -18,6 +18,8 @@ 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 clear_blockdata = pvp_revamped.clear_blockdata
local clear_shielddata = pvp_revamped.clear_shielddata
local get_player_information = minetest.get_player_information
local get_player_by_name = minetest.get_player_by_name
local get_us_time = minetest.get_us_time
@ -59,16 +61,7 @@ minetest.register_globalstep(function(dtime)
-- 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")
clear_blockdata(v.block, player, k)
end
active = true
@ -96,16 +89,7 @@ minetest.register_globalstep(function(dtime)
-- 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")
clear_shielddata(v.shield, player, k)
end
local entity = v.entity
@ -217,8 +201,7 @@ minetest.register_globalstep(function(dtime)
elseif j < 5 and l.time + barrel_roll_cooldown + player_lag < time then
v.barrel_roll[j] = nil
elseif l.time + barrel_roll_duration + player_lag > time then
local re_x, re_z = rotate_point(player:get_look_horizontal(), x, z)
local re_x, re_z = rotate_point(player:get_look_horizontal(), l.x, l.z)
player:add_player_velocity({x = re_x, y = 0, z = re_z})
active_barrel_rolls = true

View File

@ -22,6 +22,8 @@ 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 clear_blockdata = pvp_revamped.clear_blockdata
local clear_shielddata = pvp_revamped.clear_shielddata
local shield_inv = pvp_revamped.shield_inv
local registered_tools = minetest.registered_tools
local get_us_time = minetest.get_us_time
@ -160,19 +162,7 @@ minetest.register_on_mods_loaded(function()
-- Write pool to hud.
create_hud_text_center(user, "pvp_revamped:block_pool", block_pool)
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
-- Remove un-used hud element.
remove_text_center(user, "pvp_revamped:shield_pool")
end
clear_shielddata(data.shield, user, name)
-- Run user on_block_activate function.
if on_block_activate then
@ -236,33 +226,11 @@ minetest.register_on_mods_loaded(function()
return old_on_drop(itemstack, dropper, pos)
end
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
-- Remove un-used block hud element.
remove_text_center(dropper, "pvp_revamped:block_pool")
end
clear_blockdata(data.block, dropper, name)
-- 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")
clear_shielddata(data.shield, dropper, name)
end
-- Tell the player that a toss is being charged up.
@ -363,19 +331,7 @@ minetest.register_on_mods_loaded(function()
on_hasty_guard = on_hasty_guard
}
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
-- Remove un-used hud element.
remove_text_center(user, "pvp_revamped:block_pool")
end
clear_blockdata(data.block, user, name)
player_data[name] = data

View File

@ -1,6 +1,8 @@
local player_data = pvp_revamped.player_data
local player_persistent_data = pvp_revamped.player_persistent_data
local remove_text_center = pvp_revamped.remove_text_center
local clear_blockdata = pvp_revamped.clear_blockdata
local clear_shielddata = pvp_revamped.clear_shielddata
local drop = pvp_revamped.drop
local get_player_by_name = minetest.get_player_by_name
local new = vector.new
@ -141,33 +143,10 @@ local function break_guard(player, name)
local pdata = player_data[name]
if pdata.shield then
local on_block_deactivated = pdata.shield.on_block_deactivated
clear_shielddata(pdata.shield, player, name)
clear_blockdata(pdata.block, player, name)
-- Invoke deactivate block function if any.
if on_block_deactivated then
on_block_deactivated(player)
end
player_data[name].shield = nil
-- Remove hud element.
remove_text_center(player, "pvp_revamped:shield_pool")
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.
remove_text_center(player, "pvp_revamped:block_pool")
end
player_data[name] = pdata
end
minetest.register_on_placenode(function(pos, newnode, placer)

View File

@ -32,6 +32,8 @@ 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
local point_arm = pvp_revamped.point_arm
local clear_blockdata = pvp_revamped.clear_blockdata
local clear_shielddata = pvp_revamped.clear_shielddata
local registered_tools = minetest.registered_tools
local raycast = minetest.raycast
local get_us_time = minetest.get_us_time
@ -775,33 +777,8 @@ local function punch(player, hitter, time_from_last_punch, tool_capabilities, di
end
end
if victim_data.block then
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
victim_data.block = nil
-- Remove un-used hud element.
remove_text_center(player, "pvp_revamped:block_pool")
end
if victim_data.shield then
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.shield = nil
-- Remove un-used hud element.
remove_text_center(player, "pvp_revamped:shield_pool")
end
clear_shielddata(victim_data.shield, player, name)
clear_blockdata(victim_data.block, player, name)
-- Save new player data to the table.
player_data[name] = victim_data