diff --git a/jRandomSkills - SRC Files/src/player/skills/BladeMaster.cs b/jRandomSkills - SRC Files/src/player/skills/BladeMaster.cs index 857914a..0f91f24 100644 --- a/jRandomSkills - SRC Files/src/player/skills/BladeMaster.cs +++ b/jRandomSkills - SRC Files/src/player/skills/BladeMaster.cs @@ -9,7 +9,7 @@ namespace jRandomSkills public class BladeMaster : ISkill { private const Skills skillName = Skills.BladeMaster; - private static string[] noReflectionWeapon = { "inferno", "flashbang", "smokegrenade", "decoy", "hegrenade", "knife" }; + private static string[] noReflectionWeapon = { "inferno", "flashbang", "smokegrenade", "decoy", "hegrenade", "knife", "taser" }; private static float torseReflectionChance = Config.GetValue(skillName, "torseReflectionChance") * 100; private static float legReflectionChance = Config.GetValue(skillName, "legReflectionChance") * 100; diff --git a/jRandomSkills - SRC Files/src/player/skills/Chicken.cs b/jRandomSkills - SRC Files/src/player/skills/Chicken.cs index 73de410..97c1bd1 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Chicken.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Chicken.cs @@ -12,6 +12,7 @@ namespace jRandomSkills public class Chicken : ISkill { private const Skills skillName = Skills.Chicken; + private static bool roundEnd = false; private static string[] disabledWeapons = { "weapon_ak47", @@ -48,12 +49,12 @@ namespace jRandomSkills Instance.RegisterEventHandler((@event, info) => { + roundEnd = false; Instance.AddTimer(0.1f, () => { foreach (var player in Utilities.GetPlayers()) { if (!Instance.IsPlayerValid(player)) continue; - var playerInfo = Instance.skillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill != skillName) continue; EnableSkill(player); @@ -73,7 +74,7 @@ namespace jRandomSkills if (playerInfo?.Skill != skillName) continue; DisableSkill(player); } - + roundEnd = true; return HookResult.Continue; }); @@ -160,6 +161,7 @@ namespace jRandomSkills private static void SetWeaponAttack(CCSPlayerController player, bool disableWeapon) { + if (roundEnd) return; foreach (var weapon in player.Pawn.Value.WeaponServices?.MyWeapons) if (weapon != null && weapon.IsValid && weapon.Value != null && weapon.Value.IsValid) if (disabledWeapons.Contains(weapon?.Value?.DesignerName)) diff --git a/jRandomSkills - SRC Files/src/player/skills/Ghost.cs b/jRandomSkills - SRC Files/src/player/skills/Ghost.cs index 52677a0..046bfa5 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Ghost.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Ghost.cs @@ -12,6 +12,7 @@ namespace jRandomSkills public class Ghost : ISkill { private const Skills skillName = Skills.Ghost; + private static bool roundEnd = false; private static string[] disabledWeapons = { "weapon_deagle", @@ -60,12 +61,12 @@ namespace jRandomSkills Instance.RegisterEventHandler((@event, info) => { + roundEnd = false; Instance.AddTimer(0.1f, () => { foreach (var player in Utilities.GetPlayers()) { if (!Instance.IsPlayerValid(player)) continue; - var playerInfo = Instance.skillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); if (playerInfo?.Skill == skillName) EnableSkill(player); @@ -84,6 +85,7 @@ namespace jRandomSkills if (playerInfo?.Skill == skillName) DisableSkill(player); } + roundEnd = true; return HookResult.Continue; }); @@ -180,6 +182,7 @@ namespace jRandomSkills private static void SetWeaponAttack(CCSPlayerController player, bool disableWeapon) { + if (roundEnd) return; foreach (var weapon in player.Pawn.Value.WeaponServices?.MyWeapons) if (weapon != null && weapon.IsValid && weapon.Value != null && weapon.Value.IsValid) if (disabledWeapons.Contains(weapon?.Value?.DesignerName)) diff --git a/jRandomSkills - SRC Files/src/player/skills/Poison.cs b/jRandomSkills - SRC Files/src/player/skills/Poison.cs index d27e1f0..7adfe29 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Poison.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Poison.cs @@ -10,7 +10,7 @@ namespace jRandomSkills public class Poison : ISkill { private const Skills skillName = Skills.Poison; - private static int cooldown = Config.GetValue(skillName, "Cooldown"); + private static float cooldown = Config.GetValue(skillName, "Cooldown"); private static int healthToDamage = Config.GetValue(skillName, "Damage"); private static HashSet poisonedPlayers = new HashSet(); @@ -46,7 +46,7 @@ namespace jRandomSkills private static void OnTick() { - if (Server.TickCount % (64 * cooldown) != 0) return; + if (Server.TickCount % (int)(64 * cooldown) != 0) return; foreach (var player in poisonedPlayers) { var pawn = player.PlayerPawn.Value; @@ -109,8 +109,8 @@ namespace jRandomSkills public class SkillConfig : Config.DefaultSkillInfo { public int Damage { get; set; } - public int Cooldown { get; set; } - public SkillConfig(Skills skill = skillName, bool active = true, string color = "#902eff", CsTeam onlyTeam = CsTeam.None, bool needsTeammates = false, int cooldown = 2, int damage = 1) : base(skill, active, color, onlyTeam, needsTeammates) + public float Cooldown { get; set; } + public SkillConfig(Skills skill = skillName, bool active = true, string color = "#902eff", CsTeam onlyTeam = CsTeam.None, bool needsTeammates = false, float cooldown = 1, int damage = 1) : base(skill, active, color, onlyTeam, needsTeammates) { Damage = damage; Cooldown = cooldown; diff --git a/jRandomSkills - SRC Files/src/player/skills/ReZombie.cs b/jRandomSkills - SRC Files/src/player/skills/ReZombie.cs index 7fb18a5..9fca7f0 100644 --- a/jRandomSkills - SRC Files/src/player/skills/ReZombie.cs +++ b/jRandomSkills - SRC Files/src/player/skills/ReZombie.cs @@ -51,10 +51,11 @@ namespace jRandomSkills Instance.AddTimer(.2f, () => { player.Respawn(); zombies.Add(player); - player.ExecuteClientCommand("slot3"); SetPlayerColor(pawn, false); SkillUtils.AddHealth(pawn, zombieHealth - 100, zombieHealth); pawn.Teleport(deadPosition, deadRotation); + player.ExecuteClientCommand("slot3"); + Instance.AddTimer(1, () => player.ExecuteClientCommand("slot3")); }); return HookResult.Continue; diff --git a/jRandomSkills - SRC Files/src/player/skills/Regeneration.cs b/jRandomSkills - SRC Files/src/player/skills/Regeneration.cs index a64a642..269418b 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Regeneration.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Regeneration.cs @@ -9,7 +9,7 @@ namespace jRandomSkills public class Regeneration : ISkill { private const Skills skillName = Skills.Regeneration; - private static int cooldown = Config.GetValue(skillName, "cooldown"); + private static float cooldown = Config.GetValue(skillName, "cooldown"); private static int healthToAdd = Config.GetValue(skillName, "healthToAdd"); public static void LoadSkill() @@ -20,7 +20,7 @@ namespace jRandomSkills private static void OnTick() { - if (Server.TickCount % (64 * cooldown) != 0) return; + if (Server.TickCount % (int)(64 * cooldown) != 0) return; foreach (var player in Utilities.GetPlayers()) { var playerInfo = Instance.skillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID); @@ -35,8 +35,8 @@ namespace jRandomSkills public class SkillConfig : Config.DefaultSkillInfo { public int HealthToAdd { get; set; } - public int Cooldown { get; set; } - public SkillConfig(Skills skill = skillName, bool active = true, string color = "#ff462e", CsTeam onlyTeam = CsTeam.None, bool needsTeammates = false, int healthToAdd = 1, int cooldown = 1) : base(skill, active, color, onlyTeam, needsTeammates) + public float Cooldown { get; set; } + public SkillConfig(Skills skill = skillName, bool active = true, string color = "#ff462e", CsTeam onlyTeam = CsTeam.None, bool needsTeammates = false, int healthToAdd = 1, float cooldown = .25f) : base(skill, active, color, onlyTeam, needsTeammates) { HealthToAdd = healthToAdd; Cooldown = cooldown; diff --git a/jRandomSkills - SRC Files/src/player/skills/WeaponsSwap.cs b/jRandomSkills - SRC Files/src/player/skills/WeaponsSwap.cs index fdba592..dfc7c27 100644 --- a/jRandomSkills - SRC Files/src/player/skills/WeaponsSwap.cs +++ b/jRandomSkills - SRC Files/src/player/skills/WeaponsSwap.cs @@ -173,7 +173,8 @@ namespace jRandomSkills { List playerWeapons = new List(); foreach (var weapon in player.PlayerPawn.Value.WeaponServices.MyWeapons) - playerWeapons.Add(weapon?.Value?.DesignerName); + if (weapon.Value != null && weapon.Value.IsValid) + playerWeapons.Add(SkillUtils.GetDesignerName(weapon.Value)); return playerWeapons.Count == 0 ? null : playerWeapons.ToArray(); } diff --git a/jRandomSkills - SRC Files/src/utils/SkillUtils.cs b/jRandomSkills - SRC Files/src/utils/SkillUtils.cs index 62e6b85..1c655fb 100644 --- a/jRandomSkills - SRC Files/src/utils/SkillUtils.cs +++ b/jRandomSkills - SRC Files/src/utils/SkillUtils.cs @@ -91,6 +91,23 @@ namespace jRandomSkills Utilities.SetStateChanged(pawn, "CBaseEntity", "m_iMaxHealth"); } + public static string GetDesignerName(CBasePlayerWeapon weapon) + { + string designerName = weapon.DesignerName; + ushort index = weapon.AttributeManager.Item.ItemDefinitionIndex; + + designerName = (designerName, index) switch + { + var (name, _) when name.Contains("bayonet") => "weapon_knife", + ("weapon_m4a1", 60) => "weapon_m4a1_silencer", + ("weapon_hkp2000", 61) => "weapon_usp_silencer", + ("weapon_deagle", 64) => "weapon_revolver", + _ => designerName + }; + + return designerName; + } + public static void SetTeamScores(short ctScore, short tScore, RoundEndReason roundEndReason) { UpdateServerTeamScores(ctScore, tScore); diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll b/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll index 725ff5c..bfa95c8 100644 Binary files a/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll and b/jRandomSkills - Server Files/plugins/jRandomSkills/jRandomSkills.dll differ