Updates & Fixes

# Updates & Fixes
- New Commands: Added `!health` and `!plantedbomb` for testing and server management.
- Config: Client commands are now fully registerable via configuration files.
- Jester (Rework):
    - Refactored from a global mode to a per-player system.
    - Improved timer logic to prevent crashes during round resets.
    - Added special handling for bomb planting and defusing.
- SkillUtils: `AddHealth` now supports an optional `maxHealth` parameter.
- KillerFlash, LongKnife & LongZeus: Added `friendlyFire` options to skill configs.
This commit is contained in:
Juzlus 2026-04-03 04:09:30 +02:00
parent 97887118bf
commit 8634665983
12 changed files with 219 additions and 62 deletions

View file

@ -170,6 +170,8 @@ namespace src.utils
SkillsListCommand = new NormalCommand("supermoc, skille, listamocy, supermoce, skills, listaHabilidades, habilidades, 技能列表, 超能力列表", "@jRandomSkills/admin"),
UseSkillCommand = new NormalCommand("t, useSkill, usarHabilidade, 技能使用, 使用技能", "@jRandomSkills/admin"),
HealCommand = new NormalCommand("heal, ulecz, curar, tratar, 治疗, 治愈", "@jRandomSkills/admin"),
HealthCommand = new NormalCommand("sethealth, health", "@jRandomSkills/admin"),
PlantedBomb = new NormalCommand("plantedbomb, bomb", "@jRandomSkills/admin"),
ConsoleCommand = new NormalCommand("console, sv, 控制台, 服务器", "@jRandomSkills/owner"),
HudCommand = new NormalCommand("hud, hood", ""),
SetStaticSkillCommand = new NormalCommand("ustawstatycznyskill, ustaw_statyczny_skill, setstaticskill, set_static_skill", "@jRandomSkills/admin"),
@ -246,6 +248,8 @@ namespace src.utils
public required NormalCommand SkillsListCommand { get; set; }
public required NormalCommand UseSkillCommand { get; set; }
public required NormalCommand HealCommand { get; set; }
public required NormalCommand HealthCommand { get; set; }
public required NormalCommand PlantedBomb { get; set; }
public required NormalCommand ConsoleCommand { get; set; }
public required NormalCommand HudCommand { get; set; }
public required NormalCommand SetStaticSkillCommand { get; set; }

View file

@ -155,7 +155,7 @@ namespace src.utils
output = output.Replace("css_useSkill", $"css_useSkill/{Config.LoadedConfig.AlternativeSkillButton}");
if (Illiterate.CheckIlliterateSkill(player))
return Illiterate.GetRandomText(output);
return Illiterate.GetRandomText(output)!;
return output;
}

View file

@ -187,12 +187,16 @@ namespace src.utils
if (pawn == null || !pawn.IsValid || pawn.LifeState != (byte)LifeState_t.LIFE_ALIVE)
return;
if (pawn.Controller.Value != null && pawn.Controller.Value.IsValid)
var player = pawn.Controller.Value;
if (player != null && player.IsValid && player.SteamID != 0)
{
var playerInfo = jRandomSkills.Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == pawn.Controller.Value.SteamID);
ulong steamId = player.SteamID;
var playerInfo = jRandomSkills.Instance.SkillPlayer.FirstOrDefault(p => p.SteamID == steamId);
if (playerInfo == null) return;
if (playerInfo.Skill == Skills.Jester && Jester.GetJesterMode())
return;
var jester = Jester.GetJesterInfo(steamId);
if (jester?.Active == true) return;
}
int newHealth = (int)(pawn.Health - damage);
@ -245,16 +249,18 @@ namespace src.utils
return trigger;
}
public static void AddHealth(CCSPlayerPawn? pawn, int extraHealth, int maxHealth = 100)
public static void AddHealth(CCSPlayerPawn? pawn, int extraHealth, int? maxHealth = null)
{
if (pawn == null || !pawn.IsValid || pawn.LifeState != (byte)LifeState_t.LIFE_ALIVE)
return;
maxHealth ??= pawn.MaxHealth;
int newHealth = (int)(pawn.Health + extraHealth);
pawn.Health = Math.Min(newHealth, maxHealth);
pawn.Health = Math.Min(newHealth, (int)maxHealth);
Utilities.SetStateChanged(pawn, "CBaseEntity", "m_iHealth");
pawn.MaxHealth = maxHealth;
pawn.MaxHealth = (int)maxHealth;
Utilities.SetStateChanged(pawn, "CBaseEntity", "m_iMaxHealth");
}