From 6557348eb902df5c30981048d2fea95b453a6e16 Mon Sep 17 00:00:00 2001 From: Coder12a <38924418+Coder12a@users.noreply.github.com> Date: Thu, 24 Sep 2020 14:08:05 -0500 Subject: [PATCH] Rename: stagger to immobilize --- README.md | 28 +++--- config.lua | 6 +- globalstep.lua | 10 +-- knockback.lua | 4 +- punch.lua | 44 +++++----- settingtypes.txt | 8 +- sscsm.lua | 216 ++++++++++++++++++++++++----------------------- 7 files changed, 159 insertions(+), 157 deletions(-) diff --git a/README.md b/README.md index d4b6a81..b5e48d3 100644 --- a/README.md +++ b/README.md @@ -88,8 +88,8 @@ Damage to the: 1. *Head* gives a damage multipliable. 2. *Torso* gives a damage multipliable. **(Also vector related)** 3. *Arm* gives a damage multipliable, and chance to disarm item. **(Also vector related)** -4. *Leg* gives a damage multipliable, and staggers player. -5. Kneecaps stagger the player. **(Slows them down for a short amount of time)** +4. *Leg* gives a damage multipliable, and immobilizes player. +5. Kneecaps immobilize the player. **(Slows them down for a short amount of time)** #### side related damage. When hitting another player at an angle. @@ -142,8 +142,8 @@ If enabled full punches can only kill a player. Spam punches will only bring the #### disarming Hitting a player in the arms gives a random chance to cause them to drop whatever item they are holding. The chance to disarm is affected by what item they are holding and the player health. Lesser health means better chance at disarming. -#### staggering -The stagger effect makes a player move slow. To stagger a player hit them in the legs or kneecaps. +#### immobilizeing +The immobilize effect makes a player move slow. To immobilize a player hit them in the legs or kneecaps. ### maneuvers Explaining in detail the different evasive maneuvers you can pull off in-game. @@ -371,15 +371,15 @@ pvp_revamped.disarm_chance_mul = 2 ``` Value multiplies damage subtracted by health to set the new walk speed. ``` lua -pvp_revamped.knee_stagger_mul = 1.5 +pvp_revamped.knee_immobilize_mul = 1.5 ``` Value multiplies damage subtracted by health to set the new walk speed. ``` lua -pvp_revamped.leg_stagger_mul = 0.8 +pvp_revamped.leg_immobilize_mul = 0.8 ``` -Multiplies the stagger duration In microseconds. +Multiplies the immobilize duration In microseconds. ``` lua -pvp_revamped.stagger_mul = 100000 +pvp_revamped.immobilize_mul = 100000 ``` #### projectile @@ -451,12 +451,12 @@ tool_capabilities = { block_duration = 100000, -- See disarm_chance_mul in config. disarm_chance_mul = 2, - -- See leg_stagger_mul in config. - leg_stagger_mul = 0.8, - -- See knee_stagger_mul in config. - knee_stagger_mul = 1.5, - -- See stagger_mul in config. - stagger_mul = 100000, + -- See leg_immobilize_mul in config. + leg_immobilize_mul = 0.8, + -- See knee_immobilize_mul in config. + knee_immobilize_mul = 1.5, + -- See immobilize_mul in config. + immobilize_mul = 100000, -- See block_duration_mul in config. block_duration_mul = 100000, -- See block_interval_mul in config. diff --git a/config.lua b/config.lua index ae29923..10a71e4 100644 --- a/config.lua +++ b/config.lua @@ -15,9 +15,9 @@ pvp_revamped.config.dash_aerial_cooldown = tonumber(minetest.settings:get("pvp_r pvp_revamped.config.dash_speed = tonumber(minetest.settings:get("pvp_revamped.dash_speed")) or 9.2 pvp_revamped.config.barrel_roll_speed = tonumber(minetest.settings:get("pvp_revamped.barrel_roll_speed")) or 1 pvp_revamped.config.disarm_chance_mul = tonumber(minetest.settings:get("pvp_revamped.disarm_chance_mul")) or 2 -pvp_revamped.config.leg_stagger_mul = tonumber(minetest.settings:get("pvp_revamped.leg_stagger_mul")) or 0.8 -pvp_revamped.config.knee_stagger_mul = tonumber(minetest.settings:get("pvp_revamped.knee_stagger_mul")) or 1.5 -pvp_revamped.config.stagger_mul = tonumber(minetest.settings:get("pvp_revamped.stagger_mul")) or 100000 +pvp_revamped.config.leg_immobilize_mul = tonumber(minetest.settings:get("pvp_revamped.leg_immobilize_mul")) or 0.8 +pvp_revamped.config.knee_immobilize_mul = tonumber(minetest.settings:get("pvp_revamped.knee_immobilize_mul")) or 1.5 +pvp_revamped.config.immobilize_mul = tonumber(minetest.settings:get("pvp_revamped.immobilize_mul")) or 100000 pvp_revamped.config.block_duration_mul = tonumber(minetest.settings:get("pvp_revamped.block_duration_mul")) or 100000 pvp_revamped.config.block_interval_mul = tonumber(minetest.settings:get("pvp_revamped.block_interval_mul")) or 0.15 pvp_revamped.config.block_pool_mul = tonumber(minetest.settings:get("pvp_revamped.block_pool_mul")) or 2 diff --git a/globalstep.lua b/globalstep.lua index bead1f0..55e69d5 100644 --- a/globalstep.lua +++ b/globalstep.lua @@ -171,14 +171,14 @@ minetest.register_globalstep(function(dtime) active = true end - if v.stagger then - local stagger = v.stagger + if v.immobilize then + local immobilize = v.immobilize - -- Check if the stagger duration expired. - if stagger.time + stagger.value + server_lag < time then + -- Check if the immobilize duration expired. + if immobilize.time + immobilize.value + server_lag < time then -- Restore the player's physics. get_player_by_name(k):set_physics_override({speed = 1, jump = 1}) - v.stagger = nil + v.immobilize = nil end active = true diff --git a/knockback.lua b/knockback.lua index d251d89..7276c2f 100644 --- a/knockback.lua +++ b/knockback.lua @@ -1,11 +1,11 @@ local player_data = pvp_revamped.player_data local calculate_knockback = minetest.calculate_knockback ---Disable knockback on stagger. +--Disable knockback on immobilize. function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool_capabilities, dir, distance, damage) local pdata = player_data[player:get_player_name()] - if pdata and pdata.stagger then + if pdata and pdata.immobilize then return 0.0 end diff --git a/punch.lua b/punch.lua index 4d5850e..39c7d18 100644 --- a/punch.lua +++ b/punch.lua @@ -3,9 +3,9 @@ local torso_height = pvp_revamped.config.torso_height local leg_height = pvp_revamped.config.leg_height local knee_height = pvp_revamped.config.knee_height local disarm_chance_mul = pvp_revamped.config.disarm_chance_mul -local leg_stagger_mul = pvp_revamped.config.leg_stagger_mul -local knee_stagger_mul = pvp_revamped.config.knee_stagger_mul -local stagger_mul = pvp_revamped.config.stagger_mul +local leg_immobilize_mul = pvp_revamped.config.leg_immobilize_mul +local knee_immobilize_mul = pvp_revamped.config.knee_immobilize_mul +local immobilize_mul = pvp_revamped.config.immobilize_mul local block_wear_mul = pvp_revamped.config.block_wear_mul local head_dmg_mul = pvp_revamped.config.head_dmg_mul local torso_dmg_mul = pvp_revamped.config.torso_dmg_mul @@ -499,37 +499,37 @@ local function punch(player, hitter, time_from_last_punch, tool_capabilities, di end end - local function set_stagger_data(speed) + local function set_immobilize_data(speed) player:set_physics_override({speed = speed, jump = speed}) - local stagger_mul = tool_capabilities.stagger_mul or stagger_mul + local immobilize_mul = tool_capabilities.immobilize_mul or immobilize_mul - victim_data.stagger = {time = get_us_time(), value = (1 / speed) * stagger_mul} + victim_data.immobilize = {time = get_us_time(), value = (1 / speed) * immobilize_mul} end -- Process if the player was hit in the leg. if leg then - -- Stagger the player. - local leg_stagger_mul = tool_capabilities.leg_stagger_mul or leg_stagger_mul - local speed = min(1 / max(damage - hp, 1) * leg_stagger_mul, 0.1) - local data_stagger = victim_data.stagger + -- immobilize the player. + local leg_immobilize_mul = tool_capabilities.leg_immobilize_mul or leg_immobilize_mul + local speed = min(1 / max(damage - hp, 1) * leg_immobilize_mul, 0.1) + local data_immobilize = victim_data.immobilize - if not data_stagger or data_stagger.value > speed then - set_stagger_data(speed) + if not data_immobilize or data_immobilize.value > speed then + set_immobilize_data(speed) end elseif knee then - -- Stagger the player. - local knee_stagger_mul = tool_capabilities.knee_stagger_mul or knee_stagger_mul - local speed = min(1 / max(damage - hp, 1.5) * knee_stagger_mul, 0.1) - local data_stagger = victim_data.stagger + -- immobilize the player. + local knee_immobilize_mul = tool_capabilities.knee_immobilize_mul or knee_immobilize_mul + local speed = min(1 / max(damage - hp, 1.5) * knee_immobilize_mul, 0.1) + local data_immobilize = victim_data.immobilize - if data_stagger then - -- Add the original value and update all stagger data. - speed = min(abs(speed - data_stagger.value), 0.1) + if data_immobilize then + -- Add the original value and update all immobilize data. + speed = min(abs(speed - data_immobilize.value), 0.1) - set_stagger_data(speed) + set_immobilize_data(speed) else - set_stagger_data(speed) + set_immobilize_data(speed) end end @@ -599,7 +599,7 @@ local function punch(player, hitter, time_from_last_punch, tool_capabilities, di return true end --- This needs to be the first punch function to prevent knockback on a staggered player. +-- This needs to be the first punch function to prevent knockback on a immobilizeed player. insert(minetest.registered_on_punchplayers, 1, punch) minetest.callback_origins[punch] = { diff --git a/settingtypes.txt b/settingtypes.txt index 01e7f1b..200065c 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -110,11 +110,11 @@ pvp_revamped.hasty_shield_mul (Hasty shield multiplier) float 1000 # Value is used to decrease the chance of disarming another player. pvp_revamped.disarm_chance_mul (Disarm chance multiplier) float 2 # Value multiplies damage subtracted by health to set the new walk speed. -pvp_revamped.knee_stagger_mul (Knee stagger multiplier) float 1.5 +pvp_revamped.knee_immobilize_mul (Knee immobilize multiplier) float 1.5 # Value multiplies damage subtracted by health to set the new walk speed. -pvp_revamped.leg_stagger_mul (Leg stagger multiplier) float 0.8 -# Multiplies the stagger duration In microseconds. -pvp_revamped.stagger_mul (Stagger multiplier) float 100000 +pvp_revamped.leg_immobilize_mul (Leg immobilize multiplier) float 0.8 +# Multiplies the immobilize duration In microseconds. +pvp_revamped.immobilize_mul (immobilize multiplier) float 100000 [Projectile] # This value multiplies full_punch_interval to create the time need to fully throw a tool at max speed and damage. diff --git a/sscsm.lua b/sscsm.lua index 6b27b56..2c8f00c 100644 --- a/sscsm.lua +++ b/sscsm.lua @@ -1,108 +1,110 @@ -if sscsm then - local dash_speed = pvp_revamped.config.dash_speed - local barrel_roll_speed = pvp_revamped.config.barrel_roll_speed - 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 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"}) - - -- Channel for dodge request. - sscsm.register_on_com_receive("pvp_revamped:dodge", function(name, msg) - if msg and type(msg) == "string" and msg == "dodge" then - local player = get_player_by_name(name) - local velocity = player:get_player_velocity().y - local aerial_points = 0 - - if velocity < 0.0 or velocity > 0.0 then - aerial_points = 1 - end - - dodge(name, player, 1 + aerial_points) - end - end) - - -- Channel for barrel_roll request. - sscsm.register_on_com_receive("pvp_revamped:barrel_roll", function(name, msg) - if msg and type(msg) == "string" then - local player = get_player_by_name(name) - local yaw = player:get_look_horizontal() - local velocity = player:get_player_velocity().y - local aerial_points = 0 - - if velocity < 0.0 or velocity > 0.0 then - aerial_points = 4 - end - - if msg == "barrel_roll_l" then - barrel_roll(name, player, 1 + aerial_points, -barrel_roll_speed, 0) - elseif msg == "barrel_roll_u" then - barrel_roll(name, player, 2 + aerial_points, 0, barrel_roll_speed) - elseif msg == "barrel_roll_r" then - barrel_roll(name, player, 3 + aerial_points, barrel_roll_speed, 0) - elseif msg == "barrel_roll_d" then - barrel_roll(name, player, 4 + aerial_points, 0, -barrel_roll_speed) - else - return false - end - end - end) - - -- Channel for dash request. - sscsm.register_on_com_receive("pvp_revamped:dash", function(name, msg) - if msg and type(msg) == "string" then - local player = get_player_by_name(name) - local y = dash_speed * 0.5 - local aerial_points = 0 - local velocity = player:get_player_velocity().y - - if velocity < 0.0 or velocity > 0.0 then - aerial_points = 4 - end - - if msg == "dash_l" then - dash(player, name, 1 + aerial_points, -dash_speed, y, 0) - elseif msg == "dash_u" then - dash(player, name, 2 + aerial_points, 0, y, dash_speed) - elseif msg == "dash_r" then - dash(player, name, 3 + aerial_points, dash_speed, y, 0) - elseif msg == "dash_d" then - dash(player, name, 4 + aerial_points, 0, y, -dash_speed) - else - return false - end - end - end) - - -- Channel for shield_block request. - if minetest.global_exists("armor") then - sscsm.register_on_com_receive("pvp_revamped:shield_block", function(name, msg) - if msg and type(msg) == "string" then - local data = get_player_data(name) - local player = get_player_by_name(name) - local player_pdata = player_persistent_data[name] - - shield_inv(player, name, player_pdata, data) - end - end) - end +if not sscsm then + return +end + +local dash_speed = pvp_revamped.config.dash_speed +local barrel_roll_speed = pvp_revamped.config.barrel_roll_speed +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 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"}) + +-- Channel for dodge request. +sscsm.register_on_com_receive("pvp_revamped:dodge", function(name, msg) + if msg and type(msg) == "string" and msg == "dodge" then + local player = get_player_by_name(name) + local velocity = player:get_player_velocity().y + local aerial_points = 0 + + if velocity < 0.0 or velocity > 0.0 then + aerial_points = 1 + end + + dodge(name, player, 1 + aerial_points) + end +end) + +-- Channel for barrel_roll request. +sscsm.register_on_com_receive("pvp_revamped:barrel_roll", function(name, msg) + if msg and type(msg) == "string" then + local player = get_player_by_name(name) + local yaw = player:get_look_horizontal() + local velocity = player:get_player_velocity().y + local aerial_points = 0 + + if velocity < 0.0 or velocity > 0.0 then + aerial_points = 4 + end + + if msg == "barrel_roll_l" then + barrel_roll(name, player, 1 + aerial_points, -barrel_roll_speed, 0) + elseif msg == "barrel_roll_u" then + barrel_roll(name, player, 2 + aerial_points, 0, barrel_roll_speed) + elseif msg == "barrel_roll_r" then + barrel_roll(name, player, 3 + aerial_points, barrel_roll_speed, 0) + elseif msg == "barrel_roll_d" then + barrel_roll(name, player, 4 + aerial_points, 0, -barrel_roll_speed) + else + return false + end + end +end) + +-- Channel for dash request. +sscsm.register_on_com_receive("pvp_revamped:dash", function(name, msg) + if msg and type(msg) == "string" then + local player = get_player_by_name(name) + local y = dash_speed * 0.5 + local aerial_points = 0 + local velocity = player:get_player_velocity().y + + if velocity < 0.0 or velocity > 0.0 then + aerial_points = 4 + end + + if msg == "dash_l" then + dash(player, name, 1 + aerial_points, -dash_speed, y, 0) + elseif msg == "dash_u" then + dash(player, name, 2 + aerial_points, 0, y, dash_speed) + elseif msg == "dash_r" then + dash(player, name, 3 + aerial_points, dash_speed, y, 0) + elseif msg == "dash_d" then + dash(player, name, 4 + aerial_points, 0, y, -dash_speed) + else + return false + end + end +end) + +-- Channel for shield_block request. +if minetest.global_exists("armor") then + sscsm.register_on_com_receive("pvp_revamped:shield_block", function(name, msg) + if msg and type(msg) == "string" then + local data = get_player_data(name) + local player = get_player_by_name(name) + local player_pdata = player_persistent_data[name] + + shield_inv(player, name, player_pdata, data) + end + end) end