From 98f6e65b016ab54b882d7053b1f75b3f4dc50c03 Mon Sep 17 00:00:00 2001 From: ByDexter Date: Thu, 30 Jul 2026 01:15:32 +0300 Subject: [PATCH] 1.2.3.b2 --- .github/en.md | 38 ++- .github/pl.md | 29 +- .gitignore | 2 + README-PL.md | 29 +- README.md | 38 ++- .../src/jRandomSkills.cs | 8 +- jRandomSkills - SRC Files/src/lang/de.json | 42 +++ jRandomSkills - SRC Files/src/lang/en.json | 42 +++ jRandomSkills - SRC Files/src/lang/fr.json | 43 ++- jRandomSkills - SRC Files/src/lang/pl.json | 43 ++- jRandomSkills - SRC Files/src/lang/pt-br.json | 42 +++ jRandomSkills - SRC Files/src/lang/ru.json | 44 ++- jRandomSkills - SRC Files/src/lang/tr.json | 44 ++- jRandomSkills - SRC Files/src/lang/zh.json | Bin 27920 -> 21614 bytes jRandomSkills - SRC Files/src/player/Debug.cs | 23 +- .../src/player/ISkill.cs | 9 + .../src/player/PlayerEvents.cs | 241 +++++++++++++-- .../src/player/PlayerOnTick.cs | 20 +- .../src/player/skills/AntyHead.cs | 12 +- .../src/player/skills/Assassin.cs | 45 ++- .../src/player/skills/Bankrupt.cs | 3 +- .../src/player/skills/Baseball.cs | 17 +- .../src/player/skills/BladeMaster.cs | 16 +- .../src/player/skills/BunnyHop.cs | 10 + .../src/player/skills/C4Camouflage.cs | 2 + .../src/player/skills/CarefulBullets.cs | 26 +- .../src/player/skills/Chicken.cs | 4 +- .../src/player/skills/ChillOut.cs | 28 +- .../src/player/skills/Cutter.cs | 36 ++- .../src/player/skills/Darkness.cs | 5 +- .../src/player/skills/Deactivator.cs | 5 +- .../src/player/skills/Deaf.cs | 5 +- .../src/player/skills/DeathBomb.cs | 53 +++- .../src/player/skills/Dracula.cs | 35 ++- .../src/player/skills/Duplicator.cs | 5 +- .../src/player/skills/ExpensiveAmmo.cs | 171 +++++++++++ .../src/player/skills/ExplodingBarrel.cs | 276 ++++++++++++++++++ .../src/player/skills/FalconEye.cs | 4 +- .../src/player/skills/Ghost.cs | 2 + .../src/player/skills/Giant.cs | 194 ++++++++++++ .../src/player/skills/Glaz.cs | 2 + .../src/player/skills/Glitch.cs | 5 +- .../src/player/skills/GodMode.cs | 33 ++- .../src/player/skills/Hermit.cs | 10 +- .../src/player/skills/HotBomb.cs | 24 +- .../src/player/skills/Iana.cs | 31 +- .../src/player/skills/Illiterate.cs | 34 ++- .../src/player/skills/Illusionist.cs | 22 +- .../src/player/skills/Jammer.cs | 7 +- .../src/player/skills/Jester.cs | 34 +-- .../src/player/skills/JumpBan.cs | 5 +- .../src/player/skills/JumpCurse.cs | 186 ++++++++++++ .../src/player/skills/KillerFlash.cs | 2 +- .../src/player/skills/Knockback.cs | 55 ++++ .../src/player/skills/LifeSwap.cs | 5 +- .../src/player/skills/LongKnife.cs | 2 +- .../src/player/skills/LongZeus.cs | 2 +- .../src/player/skills/Magnifier.cs | 5 +- .../src/player/skills/MoneySwap.cs | 5 +- .../src/player/skills/Nightmare.cs | 247 ++++++++++++++++ .../src/player/skills/Ninja.cs | 2 + .../src/player/skills/NoNades.cs | 17 +- .../src/player/skills/NoRecoil.cs | 7 +- .../src/player/skills/OnlyHead.cs | 15 +- .../src/player/skills/Phoenix.cs | 16 + .../src/player/skills/Poison.cs | 29 +- .../src/player/skills/PrimaryBan.cs | 5 +- .../src/player/skills/Prosthesis.cs | 17 +- .../src/player/skills/ReZombie.cs | 22 +- .../src/player/skills/ReactiveArmor.cs | 23 +- .../src/player/skills/Replicator.cs | 23 +- .../src/player/skills/Saper.cs | 12 +- .../src/player/skills/Shade.cs | 2 + .../src/player/skills/Spectator.cs | 4 +- .../src/player/skills/ThirdEye.cs | 4 +- .../src/player/skills/Thorns.cs | 2 +- .../src/player/skills/ThrowingKnife.cs | 41 ++- .../src/player/skills/ToxicSmoke.cs | 15 +- .../src/player/skills/Tripwire.cs | 256 ++++++++++++++++ .../src/player/skills/Wallhack.cs | 197 +++++++------ .../src/player/skills/WeaponsSwap.cs | 58 ++++ .../src/player/skills/WildThrow.cs | 5 +- .../src/utils/EntityManager.cs | 6 + .../src/utils/Localization.cs | 67 ++++- .../src/utils/PlayerManager.cs | 52 +--- .../src/utils/SkillUtils.cs | 53 +++- .../plugins/jRandomSkills/WASDMenuAPI.dll | Bin 15872 -> 15872 bytes .../jRandomSkills/configs/skillsInfo.json | 117 ++++++++ .../plugins/jRandomSkills/jRandomSkills.dll | Bin 543744 -> 590848 bytes .../plugins/jRandomSkills/languages/de.json | 42 +++ .../plugins/jRandomSkills/languages/en.json | 42 +++ .../plugins/jRandomSkills/languages/fr.json | 43 ++- .../plugins/jRandomSkills/languages/pl.json | 43 ++- .../jRandomSkills/languages/pt-br.json | 42 +++ .../plugins/jRandomSkills/languages/ru.json | 44 ++- .../plugins/jRandomSkills/languages/tr.json | 44 ++- .../plugins/jRandomSkills/languages/zh.json | Bin 27920 -> 21614 bytes updater.json | 14 +- 98 files changed, 3391 insertions(+), 397 deletions(-) create mode 100644 jRandomSkills - SRC Files/src/player/skills/ExpensiveAmmo.cs create mode 100644 jRandomSkills - SRC Files/src/player/skills/ExplodingBarrel.cs create mode 100644 jRandomSkills - SRC Files/src/player/skills/Giant.cs create mode 100644 jRandomSkills - SRC Files/src/player/skills/JumpCurse.cs create mode 100644 jRandomSkills - SRC Files/src/player/skills/Knockback.cs create mode 100644 jRandomSkills - SRC Files/src/player/skills/Nightmare.cs create mode 100644 jRandomSkills - SRC Files/src/player/skills/Tripwire.cs diff --git a/.github/en.md b/.github/en.md index 3da2cb6..cedda4b 100644 --- a/.github/en.md +++ b/.github/en.md @@ -48,7 +48,7 @@ Join the 3v3 test server and try out the jRandomSkills plugin: Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus.html). -## ✨ Current Skills (124) +## ✨ Current Skills (131)
The table below lists all available skills in the game, along with their descriptions. @@ -86,6 +86,8 @@ Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus. | Duplicator | Choose a player to copy their skill | - | | Dwarf | Random character size at the start of the round | (60 - 95)% | | Enemy Spawn | Click [css_useSkill] to teleport to the enemy spawn | 15 s | +| Expensive Ammo | A chosen enemy loses money with every shot | - | +| Exploding Barrel | Place a barrel that explodes when shot | - | | Explosive Shot | Random chance to fire an explosive bullet while shooting | (15 - 30)% | | Falcon Eye | Click [css_useSkill] to activate a bird's-eye view camera| - | | Fastreload | Click [css_useSkill] to reload the weapon you are currently holding | - | @@ -96,6 +98,7 @@ Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus. | Freezing Decoy | Your decoy freezes all nearby players | - | | Gambler | Select a skill from the list provided | - | | Ghost | You are completely invisible | - | +| Giant | Enlarges a chosen enemy | (110 - 140)% | | Glaz | You can see through smoke grenades | - | | Glitch | Disables the radar for a chosen enemy | - | | Glue | Your grenades stick to walls | - | @@ -115,8 +118,10 @@ Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus. | Jammer | Choose a player to disable their crosshair | - | | Jester | In jester mode, you cannot get or take any damage. This mode changes every few seconds | (10 - 25) s | | Legless | Choose a player who cannot jump | - | +| Jump Curse | A chosen enemy jumps whenever their teammates jump | - | | Jumping Jack | Jumping restores health | - | | Killer Flash | Anyone fully blinded by your flashbang dies (including you) | - | +| Knockback | Firing while airborne pushes you backwards | - | | Life Swap | Choose a player to swap health with | - | | Long Knife | A primary knife attack deals damage regardless of distance | - | | Long Zeus | Zeus deals damage regardless of distance | - | @@ -126,6 +131,7 @@ Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus. | Medic | Click [css_useSkill] to use a healing charge that restores 50 health | 1 s | | Bomb Miner | Your HE grenade only explode when there is an enemy nearby | - | | Taxman | Choose a player to swap money with | - | +| Nightmare | Gives a chosen enemy a nightmarish vision | - | | Ninja | Standing still increases your invisibility by 33%, crouching by 33%, and holding a knife by 33% | - | | No-Nades | Grenades deal no damage to you | - | | Focus | No recoil while shooting | - | @@ -172,6 +178,7 @@ Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus. | Thorns | Your opponent will receive a portion of the damage that they inflicted on you | - | | Throwing Knife | Click [css_useSkill] to throw a knife. But watch out for others | - | | Toxic Smoke | Your smoke grenades deal damage | - | +| Tripwire | String a wire between two walls; enemies touching it show on your radar | - | | Wallhack | You can see enemies through walls | - | | Watchmaker | Every grenade throw alters the round time | - | | Weapon Swap | Click [css_useSkill] to swap weapons with a random enemy | 30 s | @@ -366,6 +373,33 @@ This plugin uses content from the following projects: ## 📋 Changelog +
+v1.2.3.b1 + +- #### General (Performance and Stability) + - ###### `CServerSideClient.ForceFullUpdate` now bails on a null client handle. + - ###### Added a per-tick player/bomb cache. + - ###### Migrated 82 skills from per-skill `Utilities.GetPlayers()` to the one shared per-tick scan, and the HUD loop reuses it. Much lower per-tick cost at high player counts (verified 10v10). + - ###### Print a single notice when the RayTrace is not installed. + +- #### Skill improvements: + - ###### Second Chance / Phoenix / Re-Zombie: + - ###### Intercept the lethal hit before it is applied. Previously they reacted after the death was already committed, so one-shots, fall damage and skill-based kills were missed. + - ###### Killer Flash: + - ###### Kills through real damage instead of forcing a suicide, so revive skills can intercept. + - ###### Baseball: + - ###### Fixed a rare server crash from decoy grenades (decoy's entity index could be reused by another entity). + - ###### Aimbot: + - ###### Guard the hit-group native pointer before writing (avoids writing to freed/null memory). + - ###### Wallhack: + - ###### Detach the glow when the target dies or disconnects. + - ###### Spectator / Cypher / FalconEye / ThirdEye: + - ###### null-guard the camera SceneNode walk and re-validate the target before teleport/parent. + +**Full update contributed by [@ByDexterTR](https://github.com/ByDexterTR) in pull request [#44](https://github.com/Juzlus/jRandomSkills/pull/44). Thanks to ByDexterTR!** + +
+
v1.2.2.b9 @@ -399,7 +433,7 @@ This plugin uses content from the following projects: - ###### Ghost / Ninja / C4 Camouflage: - ###### Improved hidden-player processing for better performance. -**Full update contributed by @ByDexterTR in pull request #41. Thanks to ByDexterTR!** +**Full update contributed by [@ByDexterTR](https://github.com/ByDexterTR) in pull request [#41](https://github.com/Juzlus/jRandomSkills/pull/41). Thanks to ByDexterTR!**
diff --git a/.github/pl.md b/.github/pl.md index dbb8624..acf143a 100644 --- a/.github/pl.md +++ b/.github/pl.md @@ -364,6 +364,33 @@ Plugin korzysta z zawartości następujących projektów: ## 📋 Lista Zmian +
+v1.2.3.b1 + +- #### Ogólne (Wydajność i stabilność) + - ###### `CServerSideClient.ForceFullUpdate` przerywa teraz działanie, jeśli klient handle jest pusty. + - ###### Dodano współdzieloną pamięć podręczną graczy i bomby odświeżaną co tick. + - ###### 82 moce zostały przeniesione z własnych wywołań `Utilities.GetPlayers()` na jedno współdzielone skanowanie wykonywane raz na tick. Pętla HUD również z niego korzysta, co znacznie zmniejsza obciążenie serwera przy większej liczbie graczy (potwierdzone w 10v10). + - ###### Wyświetlanie informacji o braku zainstalowanego RayTrace. + +- #### Poprawki mocy: + - ###### Druga Szansa / Feniks / Re-Zombie: + - ###### Przechwytują śmiertelne obrażenia przed ich zastosowaniem. Wcześniej reagowały dopiero po śmierci gracza, przez co nie działały przy natychmiastowych zabójstwach, obrażeniach od upadku oraz zabójstwach zadawanych przez moce. + - ###### Zabójczy Flash: + - ###### Zabija teraz poprzez zadanie rzeczywistych obrażeń zamiast wymuszania samobójstwa, dzięki czemu moce wskrzeszające mogą zadziałać. + - ###### Bejsbolista: + - ###### Naprawiono rzadki crash serwera związany z granatem wabikiem (indeks encji wabika mógł zostać ponownie wykorzystany przez inną encję). + - ###### Aimbot: + - ###### Dodano sprawdzanie poprawności wskaźnika hit-group przed zapisem, co zapobiega zapisywaniu do zwolnionej lub pustej pamięci. + - ###### Wallhack: + - ###### Efekt poświaty jest teraz usuwany, gdy cel zginie lub opuści serwer. + - ###### Obserwator / Kamera / Oko Sokoła / Trzecie Oko: + - ###### Dodano zabezpieczenia przed pustymi wskaźnikami kamery oraz ponowną weryfikację celu przed teleportacją lub przypisaniem kamery. + +**Pełna aktualizacja została przygotowana przez [@ByDexterTR](https://github.com/ByDexterTR) w ramach pull requesta [#44](https://github.com/Juzlus/jRandomSkills/pull/44). Dziękujemy ByDexterTR!** + +
+
v1.2.2.b8 @@ -397,7 +424,7 @@ Plugin korzysta z zawartości następujących projektów: - ###### Duszek / Ninja / C4 Kamuflaż: - ###### Zoptymalizowano przetwarzanie ukrytych graczy, poprawiając wydajność. -**Pełna aktualizacja została przygotowana przez @ByDexterTR w ramach pull requesta #41. Dziękujemy ByDexterTR!** +**Pełna aktualizacja została przygotowana przez [@ByDexterTR](https://github.com/ByDexterTR) w ramach pull requesta [#44](https://github.com/Juzlus/jRandomSkills/pull/44). Dziękujemy ByDexterTR!**
diff --git a/.gitignore b/.gitignore index 543ae5a..1841365 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,8 @@ project.fragment.lock.json # Logs, caches, temp *.log +debug_*.txt +perf_*.txt *.cache *.tmp *.temp diff --git a/README-PL.md b/README-PL.md index e5ee118..cae1b43 100644 --- a/README-PL.md +++ b/README-PL.md @@ -381,6 +381,33 @@ Plugin korzysta z zawartości następujących projektów: ## 📋 Lista Zmian +
+v1.2.3.b1 + +- #### Ogólne (Wydajność i stabilność) + - ###### `CServerSideClient.ForceFullUpdate` przerywa teraz działanie, jeśli klient handle jest pusty. + - ###### Dodano współdzieloną pamięć podręczną graczy i bomby odświeżaną co tick. + - ###### 82 moce zostały przeniesione z własnych wywołań `Utilities.GetPlayers()` na jedno współdzielone skanowanie wykonywane raz na tick. Pętla HUD również z niego korzysta, co znacznie zmniejsza obciążenie serwera przy większej liczbie graczy (potwierdzone w 10v10). + - ###### Wyświetlanie informacji o braku zainstalowanego RayTrace. + +- #### Poprawki mocy: + - ###### Druga Szansa / Feniks / Re-Zombie: + - ###### Przechwytują śmiertelne obrażenia przed ich zastosowaniem. Wcześniej reagowały dopiero po śmierci gracza, przez co nie działały przy natychmiastowych zabójstwach, obrażeniach od upadku oraz zabójstwach zadawanych przez moce. + - ###### Zabójczy Flash: + - ###### Zabija teraz poprzez zadanie rzeczywistych obrażeń zamiast wymuszania samobójstwa, dzięki czemu moce wskrzeszające mogą zadziałać. + - ###### Bejsbolista: + - ###### Naprawiono rzadki crash serwera związany z granatem wabikiem (indeks encji wabika mógł zostać ponownie wykorzystany przez inną encję). + - ###### Aimbot: + - ###### Dodano sprawdzanie poprawności wskaźnika hit-group przed zapisem, co zapobiega zapisywaniu do zwolnionej lub pustej pamięci. + - ###### Wallhack: + - ###### Efekt poświaty jest teraz usuwany, gdy cel zginie lub opuści serwer. + - ###### Obserwator / Kamera / Oko Sokoła / Trzecie Oko: + - ###### Dodano zabezpieczenia przed pustymi wskaźnikami kamery oraz ponowną weryfikację celu przed teleportacją lub przypisaniem kamery. + +**Pełna aktualizacja została przygotowana przez [@ByDexterTR](https://github.com/ByDexterTR) w ramach pull requesta [#44](https://github.com/Juzlus/jRandomSkills/pull/44). Dziękujemy ByDexterTR!** + +
+
v1.2.2.b8 @@ -414,7 +441,7 @@ Plugin korzysta z zawartości następujących projektów: - ###### Duszek / Ninja / C4 Kamuflaż: - ###### Zoptymalizowano przetwarzanie ukrytych graczy, poprawiając wydajność. -**Pełna aktualizacja została przygotowana przez @ByDexterTR w ramach pull requesta #41. Dziękujemy ByDexterTR!** +**Pełna aktualizacja została przygotowana przez [@ByDexterTR](https://github.com/ByDexterTR) w ramach pull requesta [#44](https://github.com/Juzlus/jRandomSkills/pull/44). Dziękujemy ByDexterTR!**
diff --git a/README.md b/README.md index c7f1aae..f514555 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Join the 3v3 test server and try out the jRandomSkills plugin: Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus.html). -## ✨ Current Skills (124) +## ✨ Current Skills (131)
The table below lists all available skills in the game, along with their descriptions. @@ -86,6 +86,8 @@ Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus. | Duplicator | Choose a player to copy their skill | - | | Dwarf | Random character size at the start of the round | (60 - 95)% | | Enemy Spawn | Click [css_useSkill] to teleport to the enemy spawn | 15 s | +| Expensive Ammo | A chosen enemy loses money with every shot | - | +| Exploding Barrel | Place a barrel that explodes when shot | - | | Explosive Shot | Random chance to fire an explosive bullet while shooting | (15 - 30)% | | Falcon Eye | Click [css_useSkill] to activate a bird's-eye view camera| - | | Fastreload | Click [css_useSkill] to reload the weapon you are currently holding | - | @@ -96,6 +98,7 @@ Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus. | Freezing Decoy | Your decoy freezes all nearby players | - | | Gambler | Select a skill from the list provided | - | | Ghost | You are completely invisible | - | +| Giant | Enlarges a chosen enemy | (110 - 140)% | | Glaz | You can see through smoke grenades | - | | Glitch | Disables the radar for a chosen enemy | - | | Glue | Your grenades stick to walls | - | @@ -115,8 +118,10 @@ Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus. | Jammer | Choose a player to disable their crosshair | - | | Jester | In jester mode, you cannot get or take any damage. This mode changes every few seconds | (10 - 25) s | | Legless | Choose a player who cannot jump | - | +| Jump Curse | A chosen enemy jumps whenever their teammates jump | - | | Jumping Jack | Jumping restores health | - | | Killer Flash | Anyone fully blinded by your flashbang dies (including you) | - | +| Knockback | Firing while airborne pushes you backwards | - | | Life Swap | Choose a player to swap health with | - | | Long Knife | A primary knife attack deals damage regardless of distance | - | | Long Zeus | Zeus deals damage regardless of distance | - | @@ -126,6 +131,7 @@ Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus. | Medic | Click [css_useSkill] to use a healing charge that restores 50 health | 1 s | | Bomb Miner | Your HE grenade only explode when there is an enemy nearby | - | | Taxman | Choose a player to swap money with | - | +| Nightmare | Gives a chosen enemy a nightmarish vision | - | | Ninja | Standing still increases your invisibility by 33%, crouching by 33%, and holding a knife by 33% | - | | No-Nades | Grenades deal no damage to you | - | | Focus | No recoil while shooting | - | @@ -172,6 +178,7 @@ Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus. | Thorns | Your opponent will receive a portion of the damage that they inflicted on you | - | | Throwing Knife | Click [css_useSkill] to throw a knife. But watch out for others | - | | Toxic Smoke | Your smoke grenades deal damage | - | +| Tripwire | String a wire between two walls; enemies touching it show on your radar | - | | Wallhack | You can see enemies through walls | - | | Watchmaker | Every grenade throw alters the round time | - | | Weapon Swap | Click [css_useSkill] to swap weapons with a random enemy | 30 s | @@ -383,6 +390,33 @@ This plugin uses content from the following projects: ## 📋 Changelog +
+v1.2.3.b1 + +- #### General (Performance and Stability) + - ###### `CServerSideClient.ForceFullUpdate` now bails on a null client handle. + - ###### Added a per-tick player/bomb cache. + - ###### Migrated 82 skills from per-skill `Utilities.GetPlayers()` to the one shared per-tick scan, and the HUD loop reuses it. Much lower per-tick cost at high player counts (verified 10v10). + - ###### Print a single notice when the RayTrace is not installed. + +- #### Skill improvements: + - ###### Second Chance / Phoenix / Re-Zombie: + - ###### Intercept the lethal hit before it is applied. Previously they reacted after the death was already committed, so one-shots, fall damage and skill-based kills were missed. + - ###### Killer Flash: + - ###### Kills through real damage instead of forcing a suicide, so revive skills can intercept. + - ###### Baseball: + - ###### Fixed a rare server crash from decoy grenades (decoy's entity index could be reused by another entity). + - ###### Aimbot: + - ###### Guard the hit-group native pointer before writing (avoids writing to freed/null memory). + - ###### Wallhack: + - ###### Detach the glow when the target dies or disconnects. + - ###### Spectator / Cypher / FalconEye / ThirdEye: + - ###### null-guard the camera SceneNode walk and re-validate the target before teleport/parent. + +**Full update contributed by [@ByDexterTR](https://github.com/ByDexterTR) in pull request [#44](https://github.com/Juzlus/jRandomSkills/pull/44). Thanks to ByDexterTR!** + +
+
v1.2.2.b9 @@ -416,7 +450,7 @@ This plugin uses content from the following projects: - ###### Ghost / Ninja / C4 Camouflage: - ###### Improved hidden-player processing for better performance. -**Full update contributed by @ByDexterTR in pull request #41. Thanks to ByDexterTR!** +**Full update contributed by [@ByDexterTR](https://github.com/ByDexterTR) in pull request [#41](https://github.com/Juzlus/jRandomSkills/pull/41). Thanks to ByDexterTR!**
diff --git a/jRandomSkills - SRC Files/src/jRandomSkills.cs b/jRandomSkills - SRC Files/src/jRandomSkills.cs index f24938e..0349dab 100644 --- a/jRandomSkills - SRC Files/src/jRandomSkills.cs +++ b/jRandomSkills - SRC Files/src/jRandomSkills.cs @@ -31,7 +31,7 @@ namespace src public override string ModuleName => "[CS2] [ jRandomSkills ]"; public override string ModuleAuthor => "D3X (Original), Juzlus (Modifier), ByDexterTR (Contributor)"; public override string ModuleDescription => "Plugin adds random skills every round for CS2 by D3X. Modified by Juzlus."; - public override string ModuleVersion => "1.2.3.b1"; + public override string ModuleVersion => "1.2.3.b2"; public override void Load(bool hotReload) { @@ -61,6 +61,10 @@ namespace src { src.player.PerfLog.Info("===== PLUGIN UNLOAD (clean shutdown/reload) ====="); Debug.WriteToDebug("===== PLUGIN UNLOAD (clean shutdown/reload) ====="); + + Event.Unload(); + Debug.Unload(); + base.Unload(hotReload); } @@ -333,9 +337,11 @@ namespace src public bool IsDrawing { get; set; } public DateTime SkillHudExpired { get; set; } public DateTime SkillDescriptionHudExpired { get; set; } + public DateTime HudSuppressedUntil { get; set; } public string? PrintHTML { get; set; } public bool DisplayHUD { get; set; } public bool SkillUsed = false; + public bool? HudOnDeathBlocked { get; set; } } public class jSkill_SkillInfo(Skills skill, string color, bool display) diff --git a/jRandomSkills - SRC Files/src/lang/de.json b/jRandomSkills - SRC Files/src/lang/de.json index a300f14..0d0d15f 100644 --- a/jRandomSkills - SRC Files/src/lang/de.json +++ b/jRandomSkills - SRC Files/src/lang/de.json @@ -129,6 +129,16 @@ "enemyspawn": "Feindes-Spawn", "enemyspawn_desc": "Klicke auf [css_useSkill], um zum Feindes-Spawn zu teleportieren", + "expensiveammo": "expensiveammo", + "expensiveammo_desc": "expensiveammo_desc", + "expensiveammo_disable_info": "expensiveammo_disable_info", + "expensiveammo_enemy_info": "expensiveammo_enemy_info: {0}", + "expensiveammo_player_info": "expensiveammo_player_info: {0}", + "expensiveammo_select_info": "expensiveammo_select_info", + + "explodingbarrel": "explodingbarrel", + "explodingbarrel_desc": "explodingbarrel_desc", + "explosiveshot": "Explosiver Schuss", "explosiveshot_desc": "Zufällige Chance, beim Schießen eine explosive Kugel abzufeuern", "explosiveshot_desc2": "Deine Chance, eine explosive Kugel abzufeuern: {0} %", @@ -165,6 +175,14 @@ "ghost": "Geist", "ghost_desc": "Du bist vollständig unsichtbar", + "giant": "giant", + "giant_desc": "giant_desc", + "giant_desc2": "giant_desc2: {0}x", + "giant_disable_info": "giant_disable_info", + "giant_enemy_info": "giant_enemy_info: {0}x", + "giant_player_info": "giant_player_info: {0} {1}", + "giant_select_info": "giant_select_info", + "glaz": "Glaz", "glaz_desc": "Du kannst durch Rauchgranaten hindurchsehen", @@ -241,12 +259,22 @@ "jumpban_player_info": "Der Spieler ‚{0}‘ kann nicht mehr springen.", "jumpban_select_info": "Spieler vom Springen ausschließen:", + "jumpcurse": "jumpcurse", + "jumpcurse_desc": "jumpcurse_desc", + "jumpcurse_disable_info": "jumpcurse_disable_info", + "jumpcurse_enemy_info": "jumpcurse_enemy_info", + "jumpcurse_player_info": "jumpcurse_player_info: {0}", + "jumpcurse_select_info": "jumpcurse_select_info", + "jumpingjack": "Jumping Jack", "jumpingjack_desc": "Durch Springen wird die Gesundheit wiederhergestellt", "killerflash": "Killer Flash", "killerflash_desc": "Jeder, der durch deine Blendgranate vollständig geblendet wird, stirbt (einschließlich dir selbst)", + "knockback": "knockback", + "knockback_desc": "knockback_desc", + "lifeswap": "Lebensaustausch", "lifeswap_desc": "Wähle einen Spieler aus, mit dem du deine Gesundheit austauschen möchtest", "lifeswap_enemy_info": "Jemand hat sich deine Gesundheit ausgeliehen", @@ -288,6 +316,13 @@ "deathbomb_desc": "Du explodierst beim Tod und tötest Spieler in deiner Nähe", "deathbomb_explosion": "Kaboom!", + "nightmare": "nightmare", + "nightmare_desc": "nightmare_desc", + "nightmare_disable_info": "nightmare_disable_info", + "nightmare_enemy_info": "nightmare_enemy_info", + "nightmare_player_info": "nightmare_player_info: {0}", + "nightmare_select_info": "nightmare_select_info", + "ninja": "Ninja", "ninja_desc": "Wenn du stillstehst, erhöht sich deine Unsichtbarkeit um 33 %, wenn du dich duckst um 33 % und wenn du ein Messer hältst um 33 %", @@ -450,6 +485,13 @@ "toxicsmoke": "Giftiger Rauch", "toxicsmoke_desc": "Deine Rauchgranaten verursachen Schaden", + "tripwire": "tripwire", + "tripwire_desc": "tripwire_desc", + "tripwire_limit_info": "tripwire_limit_info: {0}", + "tripwire_no_wall_info": "tripwire_no_wall_info", + "tripwire_placed_info": "tripwire_placed_info", + "tripwire_triggered_info": "tripwire_triggered_info: {0}", + "wallhack": "Wallhack", "wallhack_desc": "Du kannst Feinde durch Wände hindurch sehen", diff --git a/jRandomSkills - SRC Files/src/lang/en.json b/jRandomSkills - SRC Files/src/lang/en.json index 54d6f6c..8663de9 100644 --- a/jRandomSkills - SRC Files/src/lang/en.json +++ b/jRandomSkills - SRC Files/src/lang/en.json @@ -129,6 +129,16 @@ "enemyspawn": "Enemy Spawn", "enemyspawn_desc": "Click [css_useSkill] to teleport to the enemy spawn", + "expensiveammo": "Expensive Ammo", + "expensiveammo_desc": "A chosen enemy loses money with every shot", + "expensiveammo_disable_info": "Your bullets are free again.", + "expensiveammo_enemy_info": "Every shot you fire now costs you {0}$.", + "expensiveammo_player_info": "Player '{0}' now pays for every bullet.", + "expensiveammo_select_info": "Select player whose ammo becomes expensive:", + + "explodingbarrel": "Exploding Barrel", + "explodingbarrel_desc": "Click [css_useSkill] to place a barrel that explodes when shot", + "explosiveshot": "Explosive Shot", "explosiveshot_desc": "Random chance to fire an explosive bullet while shooting", "explosiveshot_desc2": "Your chance to fire an explosive bullet: {0}%", @@ -165,6 +175,14 @@ "ghost": "Ghost", "ghost_desc": "You are completely invisible", + "giant": "Giant", + "giant_desc": "Enlarge an enemy of your choice", + "giant_desc2": "Enlarge an enemy of your choice to {0}x", + "giant_disable_info": "You are back to your normal size.", + "giant_enemy_info": "You have been enlarged to {0}x.", + "giant_player_info": "You enlarged player '{0}' to {1}x.", + "giant_select_info": "Enlarge player:", + "glaz": "Glaz", "glaz_desc": "You can see through smoke grenades", @@ -241,12 +259,22 @@ "jumpban_player_info": "Player '{0}' can no longer jump.", "jumpban_select_info": "Ban player from jumping:", + "jumpcurse": "Jump Curse", + "jumpcurse_desc": "A chosen enemy jumps whenever their teammates jump", + "jumpcurse_disable_info": "Your legs are your own again.", + "jumpcurse_enemy_info": "You now jump whenever your teammates jump.", + "jumpcurse_player_info": "Player '{0}' now jumps with their team.", + "jumpcurse_select_info": "Select player for the jump curse:", + "jumpingjack": "Jumping Jack", "jumpingjack_desc": "Jumping restores health", "killerflash": "Killer Flash", "killerflash_desc": "Anyone fully blinded by your flashbang dies (including you)", + "knockback": "Knockback", + "knockback_desc": "Firing while airborne pushes you backwards", + "lifeswap": "Life Swap", "lifeswap_desc": "Choose a player to swap health with", "lifeswap_enemy_info": "Someone borrowed your health.", @@ -288,6 +316,13 @@ "deathbomb_desc": "You explode upon death, killing nearby players", "deathbomb_explosion": "Kaboom!", + "nightmare": "Nightmare", + "nightmare_desc": "Give a chosen enemy a nightmarish vision", + "nightmare_disable_info": "The nightmare has faded.", + "nightmare_enemy_info": "A nightmare clouds your vision.", + "nightmare_player_info": "You cast a nightmare on player '{0}'.", + "nightmare_select_info": "Select player for the nightmare:", + "ninja": "Ninja", "ninja_desc": "Standing still increases your invisibility by 33%, crouching by 33%, and holding a knife by 33%", @@ -450,6 +485,13 @@ "toxicsmoke": "Toxic Smoke", "toxicsmoke_desc": "Your smoke grenades deal damage", + "tripwire": "Tripwire", + "tripwire_desc": "Click [css_useSkill] to string a wire between two walls. Enemies touching it show on your radar", + "tripwire_limit_info": "You can only have {0} tripwires at a time.", + "tripwire_no_wall_info": "No walls close enough on both sides.", + "tripwire_placed_info": "Tripwire placed.", + "tripwire_triggered_info": "'{0}' tripped your wire.", + "wallhack": "Wallhack", "wallhack_desc": "You can see enemies through walls", diff --git a/jRandomSkills - SRC Files/src/lang/fr.json b/jRandomSkills - SRC Files/src/lang/fr.json index e916741..64fa588 100644 --- a/jRandomSkills - SRC Files/src/lang/fr.json +++ b/jRandomSkills - SRC Files/src/lang/fr.json @@ -129,6 +129,16 @@ "enemyspawn": "Spawn Ennemi", "enemyspawn_desc": "Appuyez sur [css_useSkill] pour vous téléporter au spawn ennemi", + "expensiveammo": "expensiveammo", + "expensiveammo_desc": "expensiveammo_desc", + "expensiveammo_disable_info": "expensiveammo_disable_info", + "expensiveammo_enemy_info": "expensiveammo_enemy_info: {0}", + "expensiveammo_player_info": "expensiveammo_player_info: {0}", + "expensiveammo_select_info": "expensiveammo_select_info", + + "explodingbarrel": "explodingbarrel", + "explodingbarrel_desc": "explodingbarrel_desc", + "explosiveshot": "Tir Explosif", "explosiveshot_desc": "Chance aléatoire de tirer une balle explosive en tirant", "explosiveshot_desc2": "Votre chance de tirer une balle explosive est : {0}%", @@ -165,6 +175,14 @@ "ghost": "Fantôme", "ghost_desc": "Vous êtes complètement invisible", + "giant": "giant", + "giant_desc": "giant_desc", + "giant_desc2": "giant_desc2: {0}x", + "giant_disable_info": "giant_disable_info", + "giant_enemy_info": "giant_enemy_info: {0}x", + "giant_player_info": "giant_player_info: {0} {1}", + "giant_select_info": "giant_select_info", + "glaz": "Glaz", "glaz_desc": "Vous pouvez voir à travers les fumigènes", @@ -241,12 +259,21 @@ "jumpban_player_info": "Le joueur « {0} » ne peut plus sauter.", "jumpban_select_info": "Interdire de sauter au joueur :", + "jumpcurse": "jumpcurse", + "jumpcurse_desc": "jumpcurse_desc", + "jumpcurse_disable_info": "jumpcurse_disable_info", + "jumpcurse_enemy_info": "jumpcurse_enemy_info", + "jumpcurse_player_info": "jumpcurse_player_info: {0}", + "jumpcurse_select_info": "jumpcurse_select_info", + "jumpingjack": "Sauteur", "jumpingjack_desc": "Sauter vous rend de la vie", "killerflash": "Flash Mortel", "killerflash_desc": "Toute personne totalement aveuglée par votre flashbang meurt (y compris vous)", + "knockback": "knockback", + "knockback_desc": "knockback_desc", "lifeswap": "Échange de Vie", "lifeswap_desc": "Choisissez un joueur avec qui échanger votre santé", "lifeswap_enemy_info": "Quelqu’un a emprunté votre santé.", @@ -288,6 +315,13 @@ "deathbomb_desc": "Vous explosez à votre mort, tuant les joueurs proches", "deathbomb_explosion": "Kaboom!", + "nightmare": "nightmare", + "nightmare_desc": "nightmare_desc", + "nightmare_disable_info": "nightmare_disable_info", + "nightmare_enemy_info": "nightmare_enemy_info", + "nightmare_player_info": "nightmare_player_info: {0}", + "nightmare_select_info": "nightmare_select_info", + "ninja": "Ninja", "ninja_desc": "Rester immobile augmente votre invisibilité de 33%, s’accroupir de 33%, et tenir un couteau de 33%", @@ -450,6 +484,13 @@ "toxicsmoke": "Fumée Toxique", "toxicsmoke_desc": "Vos grenades fumigènes infligent des dégâts", + "tripwire": "tripwire", + "tripwire_desc": "tripwire_desc", + "tripwire_limit_info": "tripwire_limit_info: {0}", + "tripwire_no_wall_info": "tripwire_no_wall_info", + "tripwire_placed_info": "tripwire_placed_info", + "tripwire_triggered_info": "tripwire_triggered_info: {0}", + "wallhack": "Wallhack", "wallhack_desc": "Vous pouvez voir les ennemis à travers les murs", @@ -529,4 +570,4 @@ "menu_controlls_scroll": "W/S - Défilement", "menu_controlls_padding": " | ", "menu_controlls_select": "E - Sélectionner" -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/lang/pl.json b/jRandomSkills - SRC Files/src/lang/pl.json index 16d4bbf..9dd510d 100644 --- a/jRandomSkills - SRC Files/src/lang/pl.json +++ b/jRandomSkills - SRC Files/src/lang/pl.json @@ -129,6 +129,16 @@ "enemyspawn": "Resp Wroga", "enemyspawn_desc": "Kliknij [css_useSkill], aby teleportować się na resp wroga", + "expensiveammo": "expensiveammo", + "expensiveammo_desc": "expensiveammo_desc", + "expensiveammo_disable_info": "expensiveammo_disable_info", + "expensiveammo_enemy_info": "expensiveammo_enemy_info: {0}", + "expensiveammo_player_info": "expensiveammo_player_info: {0}", + "expensiveammo_select_info": "expensiveammo_select_info", + + "explodingbarrel": "explodingbarrel", + "explodingbarrel_desc": "explodingbarrel_desc", + "explosiveshot": "Strzał Wybuchowy", "explosiveshot_desc": "Losowa szansa wystrzelenia pocisku wybuchowego podczas strzelania", "explosiveshot_desc2": "Twoja szansa na wystrzelenie pocisku wybuchowego: {0}%", @@ -165,6 +175,14 @@ "ghost": "Duszek", "ghost_desc": "Jesteś całkowicie niewidzialny", + "giant": "giant", + "giant_desc": "giant_desc", + "giant_desc2": "giant_desc2: {0}x", + "giant_disable_info": "giant_disable_info", + "giant_enemy_info": "giant_enemy_info: {0}x", + "giant_player_info": "giant_player_info: {0} {1}", + "giant_select_info": "giant_select_info", + "glaz": "Glaz", "glaz_desc": "Nie widzisz granatów dymnych", @@ -241,12 +259,21 @@ "jumpban_player_info": "Gracz '{0}' nie może teraz skakać.", "jumpban_select_info": "Zablokuj skok dla gracza:", + "jumpcurse": "jumpcurse", + "jumpcurse_desc": "jumpcurse_desc", + "jumpcurse_disable_info": "jumpcurse_disable_info", + "jumpcurse_enemy_info": "jumpcurse_enemy_info", + "jumpcurse_player_info": "jumpcurse_player_info: {0}", + "jumpcurse_select_info": "jumpcurse_select_info", + "jumpingjack": "Pajacyk", "jumpingjack_desc": "Skakanie przywraca zdrowie", "killerflash": "Zabójczy Flash", "killerflash_desc": "Każdy całkowicie oślepiony twoim granatem umiera (również ty)", + "knockback": "knockback", + "knockback_desc": "knockback_desc", "lifeswap": "Zamiana Żyć", "lifeswap_desc": "Wybierasz gracza, z którym chcesz wymienić się zdrowiem", "lifeswap_enemy_info": "Ktoś pożyczył sobie twoje zdrowie.", @@ -288,6 +315,13 @@ "deathbomb_desc": "Po śmierci eksplodujesz i zabijasz graczy znajdujących się w zasięgu", "deathbomb_explosion": "Kaboom!", + "nightmare": "nightmare", + "nightmare_desc": "nightmare_desc", + "nightmare_disable_info": "nightmare_disable_info", + "nightmare_enemy_info": "nightmare_enemy_info", + "nightmare_player_info": "nightmare_player_info: {0}", + "nightmare_select_info": "nightmare_select_info", + "ninja": "Ninja", "ninja_desc": "Stojąc nieruchomo zwiększasz swoją niewidzialność o 33%, kucając o 33%, a trzymając nóż o 33%", @@ -450,6 +484,13 @@ "toxicsmoke": "Toksyczny Dym", "toxicsmoke_desc": "Twoje granaty dymny zadają obrażenia", + "tripwire": "tripwire", + "tripwire_desc": "tripwire_desc", + "tripwire_limit_info": "tripwire_limit_info: {0}", + "tripwire_no_wall_info": "tripwire_no_wall_info", + "tripwire_placed_info": "tripwire_placed_info", + "tripwire_triggered_info": "tripwire_triggered_info: {0}", + "wallhack": "Wallhack", "wallhack_desc": "Widzisz wrogów przez ściany", @@ -529,4 +570,4 @@ "menu_controlls_scroll": "W/S – Przewijanie", "menu_controlls_padding": " | ", "menu_controlls_select": "E - Wybierz" -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/lang/pt-br.json b/jRandomSkills - SRC Files/src/lang/pt-br.json index c2cddfd..e3b4a3b 100644 --- a/jRandomSkills - SRC Files/src/lang/pt-br.json +++ b/jRandomSkills - SRC Files/src/lang/pt-br.json @@ -129,6 +129,16 @@ "enemyspawn": "Spawn Inimigo", "enemyspawn_desc": "Clique em [css_useSkill] para se teletransportar para a base inimiga", + "expensiveammo": "expensiveammo", + "expensiveammo_desc": "expensiveammo_desc", + "expensiveammo_disable_info": "expensiveammo_disable_info", + "expensiveammo_enemy_info": "expensiveammo_enemy_info: {0}", + "expensiveammo_player_info": "expensiveammo_player_info: {0}", + "expensiveammo_select_info": "expensiveammo_select_info", + + "explodingbarrel": "explodingbarrel", + "explodingbarrel_desc": "explodingbarrel_desc", + "explosiveshot": "Tiro Explosivo", "explosiveshot_desc": "Chance aleatória de disparar uma bala explosiva enquanto atira", "explosiveshot_desc2": "Sua chance de disparar uma bala explosiva: {0}%", @@ -165,6 +175,14 @@ "ghost": "Fantasma", "ghost_desc": "Você é completamente invisível", + "giant": "giant", + "giant_desc": "giant_desc", + "giant_desc2": "giant_desc2: {0}x", + "giant_disable_info": "giant_disable_info", + "giant_enemy_info": "giant_enemy_info: {0}x", + "giant_player_info": "giant_player_info: {0} {1}", + "giant_select_info": "giant_select_info", + "glaz": "Smoke Transparente", "glaz_desc": "Smokes tornam-se transparentes para você", @@ -241,12 +259,22 @@ "jumpban_player_info": "O jogador '{0}' não pode mais pular.", "jumpban_select_info": "Banir pulo do jogador:", + "jumpcurse": "jumpcurse", + "jumpcurse_desc": "jumpcurse_desc", + "jumpcurse_disable_info": "jumpcurse_disable_info", + "jumpcurse_enemy_info": "jumpcurse_enemy_info", + "jumpcurse_player_info": "jumpcurse_player_info: {0}", + "jumpcurse_select_info": "jumpcurse_select_info", + "jumpingjack": "Pula-Pula", "jumpingjack_desc": "Pular restaura vida", "killerflash": "Flash Mortal", "killerflash_desc": "Qualquer pessoa cega pela sua flash morre (incluindo você)", + "knockback": "knockback", + "knockback_desc": "knockback_desc", + "lifeswap": "Troca de Vida", "lifeswap_desc": "Escolha um jogador para trocar de vida", "lifeswap_enemy_info": "Alguém pegou sua vida emprestada.", @@ -288,6 +316,13 @@ "deathbomb_desc": "Você explode ao morrer, matando os jogadores próximos", "deathbomb_explosion": "Kaboom!", + "nightmare": "nightmare", + "nightmare_desc": "nightmare_desc", + "nightmare_disable_info": "nightmare_disable_info", + "nightmare_enemy_info": "nightmare_enemy_info", + "nightmare_player_info": "nightmare_player_info: {0}", + "nightmare_select_info": "nightmare_select_info", + "ninja": "Ninja", "ninja_desc": "Ficar parado aumenta sua invisibilidade em 33%, agachar em 33%, e segurar uma faca em 33%", @@ -450,6 +485,13 @@ "toxicsmoke": "Smoke Tóxica", "toxicsmoke_desc": "Suas smokes causam dano", + "tripwire": "tripwire", + "tripwire_desc": "tripwire_desc", + "tripwire_limit_info": "tripwire_limit_info: {0}", + "tripwire_no_wall_info": "tripwire_no_wall_info", + "tripwire_placed_info": "tripwire_placed_info", + "tripwire_triggered_info": "tripwire_triggered_info: {0}", + "wallhack": "Wallhack", "wallhack_desc": "Você pode ver inimigos através das paredes", diff --git a/jRandomSkills - SRC Files/src/lang/ru.json b/jRandomSkills - SRC Files/src/lang/ru.json index dd0196c..57f0118 100644 --- a/jRandomSkills - SRC Files/src/lang/ru.json +++ b/jRandomSkills - SRC Files/src/lang/ru.json @@ -129,6 +129,16 @@ "enemyspawn": "Спавн врагов", "enemyspawn_desc": "Нажмите [css_useSkill], чтобы телепортироваться на спавн врагов", + "expensiveammo": "expensiveammo", + "expensiveammo_desc": "expensiveammo_desc", + "expensiveammo_disable_info": "expensiveammo_disable_info", + "expensiveammo_enemy_info": "expensiveammo_enemy_info: {0}", + "expensiveammo_player_info": "expensiveammo_player_info: {0}", + "expensiveammo_select_info": "expensiveammo_select_info", + + "explodingbarrel": "explodingbarrel", + "explodingbarrel_desc": "explodingbarrel_desc", + "explosiveshot": "Взрывной выстрел", "explosiveshot_desc": "Случайный шанс выстрелить взрывной пулей при стрельбе", "explosiveshot_desc2": "Ваш шанс выстрелить взрывной пулей: {0}%", @@ -165,6 +175,14 @@ "ghost": "Призрак", "ghost_desc": "Вы полностью невидимы", + "giant": "giant", + "giant_desc": "giant_desc", + "giant_desc2": "giant_desc2: {0}x", + "giant_disable_info": "giant_disable_info", + "giant_enemy_info": "giant_enemy_info: {0}x", + "giant_player_info": "giant_player_info: {0} {1}", + "giant_select_info": "giant_select_info", + "glaz": "Глаз", "glaz_desc": "Вы видите сквозь дымовые гранаты", @@ -241,12 +259,22 @@ "jumpban_player_info": "Игрок '{0}' больше не может прыгать.", "jumpban_select_info": "Запретить прыжки игроку:", + "jumpcurse": "jumpcurse", + "jumpcurse_desc": "jumpcurse_desc", + "jumpcurse_disable_info": "jumpcurse_disable_info", + "jumpcurse_enemy_info": "jumpcurse_enemy_info", + "jumpcurse_player_info": "jumpcurse_player_info: {0}", + "jumpcurse_select_info": "jumpcurse_select_info", + "jumpingjack": "Прыгающий Джек", "jumpingjack_desc": "Прыжки восстанавливают здоровье", "killerflash": "Смертельная флешка", "killerflash_desc": "Любой, полностью ослеплённый вашей флешкой, погибает (включая вас)", + "knockback": "knockback", + "knockback_desc": "knockback_desc", + "lifeswap": "Обмен жизнями", "lifeswap_desc": "Выберите игрока для обмена здоровьем", "lifeswap_enemy_info": "Кто-то занял ваше здоровье.", @@ -288,6 +316,13 @@ "deathbomb_desc": "Вы взрываетесь при смерти, убивая ближайших игроков", "deathbomb_explosion": "АЛЛАХУ АКБАР!!!", + "nightmare": "nightmare", + "nightmare_desc": "nightmare_desc", + "nightmare_disable_info": "nightmare_disable_info", + "nightmare_enemy_info": "nightmare_enemy_info", + "nightmare_player_info": "nightmare_player_info: {0}", + "nightmare_select_info": "nightmare_select_info", + "ninja": "Ниндзя", "ninja_desc": "Стоя на месте, ваша невидимость увеличивается на 33%, в приседе на 33%, с ножом на 33%", @@ -450,6 +485,13 @@ "toxicsmoke": "Токсичный дым", "toxicsmoke_desc": "Ваши дымовые гранаты наносят урон", + "tripwire": "tripwire", + "tripwire_desc": "tripwire_desc", + "tripwire_limit_info": "tripwire_limit_info: {0}", + "tripwire_no_wall_info": "tripwire_no_wall_info", + "tripwire_placed_info": "tripwire_placed_info", + "tripwire_triggered_info": "tripwire_triggered_info: {0}", + "wallhack": "Воллхак", "wallhack_desc": "Вы видите врагов сквозь стены", @@ -529,4 +571,4 @@ "menu_controlls_scroll": "W/S — Прокрутка", "menu_controlls_padding": " | ", "menu_controlls_select": "E — Выбрать" -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/lang/tr.json b/jRandomSkills - SRC Files/src/lang/tr.json index e8697da..6ccf3a3 100644 --- a/jRandomSkills - SRC Files/src/lang/tr.json +++ b/jRandomSkills - SRC Files/src/lang/tr.json @@ -129,6 +129,16 @@ "enemyspawn": "Base Baskını", "enemyspawn_desc": "[css_useSkill] tuşuna basarak düşman doğma noktasına ışınlan", + "expensiveammo": "Pahalı Mermi", + "expensiveammo_desc": "Seçtiğin rakip her ateş ettiğinde para kaybeder", + "expensiveammo_disable_info": "Mermilerin yeniden bedava.", + "expensiveammo_enemy_info": "Artık her atışın sana {0}$ mal oluyor.", + "expensiveammo_player_info": "'{0}' artık her mermisinin parasını ödüyor.", + "expensiveammo_select_info": "Mermisi pahalanacak oyuncu:", + + "explodingbarrel": "Patlayan Varil", + "explodingbarrel_desc": "[css_useSkill] ile vurulunca patlayan bir varil koyarsın", + "explosiveshot": "Patlayıcı Mermi", "explosiveshot_desc": "Ateş ederken rastgele mermilerin patlayabilir", "explosiveshot_desc2": "Patlayan mermi şansı: %{0}", @@ -159,12 +169,20 @@ "gambler": "Kumarbaz", "gambler_desc": "Sunulan listeden bir yetenek seç.", "gambler_select_info": "Yeteneğini seç:", - "gambler_more": "#00FF00|${0} karşılığında yeni yetenekler", + "gambler_more": "#00FF00|${0} yenile", "gambler_no_money": "Yeterli para yok.", "ghost": "Hayalet", "ghost_desc": "Tamamen görünmezsin", + "giant": "Dev", + "giant_desc": "Seçtiğin bir rakibi büyütür", + "giant_desc2": "Seçtiğin bir rakibi {0}x büyütür", + "giant_disable_info": "Normal boyutuna geri döndün.", + "giant_enemy_info": "{0}x boyutuna büyütüldün.", + "giant_player_info": "'{0}' oyuncusunu {1}x büyüttün.", + "giant_select_info": "Büyütülecek oyuncu:", + "glaz": "Glaz", "glaz_desc": "Sis bombalarının içini görebilirsin", @@ -241,12 +259,22 @@ "jumpban_player_info": "'{0}' artık zıplayamaz.", "jumpban_select_info": "Zıplaması yasaklanacak oyuncu:", + "jumpcurse": "Zıplama Laneti", + "jumpcurse_desc": "Seçtiğin rakip, takım arkadaşları her zıpladığında zıplar", + "jumpcurse_disable_info": "Bacakların yeniden senin.", + "jumpcurse_enemy_info": "Artık takım arkadaşların zıpladıkça sen de zıplıyorsun.", + "jumpcurse_player_info": "'{0}' artık takımıyla birlikte zıplıyor.", + "jumpcurse_select_info": "Zıplama laneti verilecek oyuncu:", + "jumpingjack": "Zıpzıp Jack", "jumpingjack_desc": "Zıplamak canını yeniler", "killerflash": "Ölümcül Flaş", "killerflash_desc": "Flaşına tamamen kör olan herkes ölür (sen dahil)", + "knockback": "Savurma", + "knockback_desc": "Havadayken ateş etmek seni geriye savurur", + "lifeswap": "Can Takası", "lifeswap_desc": "Can değerlerini takas etmek için bir oyuncu seç", "lifeswap_enemy_info": "Birisi canını çaldı", @@ -288,6 +316,13 @@ "deathbomb_desc": "Öldüğünde patlayarak etraftaki oyuncuları öldürürsün", "deathbomb_explosion": "BOOM!!!", + "nightmare": "Kabus", + "nightmare_desc": "Seçtiğin bir rakibe kabus görüntüsü verir", + "nightmare_disable_info": "Kabus sona erdi.", + "nightmare_enemy_info": "Gözlerini bir kabus bürüdü.", + "nightmare_player_info": "'{0}' oyuncusuna kabus gördürdün.", + "nightmare_select_info": "Kabus görecek oyuncu:", + "ninja": "Ninja", "ninja_desc": "Görünmezliğini sabit durmak %33, eğilmek %33 ve bıçak tutmak %33 artırır", @@ -450,6 +485,13 @@ "toxicsmoke": "Zehirli Sis", "toxicsmoke_desc": "Sis bombaların hasar verir", + "tripwire": "Tel Tuzağı", + "tripwire_desc": "[css_useSkill] ile iki duvar arasına tel ger. Tele değen düşman radarında görünür", + "tripwire_limit_info": "Aynı anda en fazla {0} tel gerebilirsin.", + "tripwire_no_wall_info": "İki yanında da yeterince yakın duvar yok.", + "tripwire_placed_info": "Tel gerildi.", + "tripwire_triggered_info": "'{0}' teline takıldı.", + "wallhack": "Wallhack", "wallhack_desc": "Düşmanları duvarların arkasından görebilirsin", diff --git a/jRandomSkills - SRC Files/src/lang/zh.json b/jRandomSkills - SRC Files/src/lang/zh.json index c922535d0ec8d6dc541c05f4055f353734981d8b..bb094675255974126ebb1bd9ea32cb7a8bf90f6d 100644 GIT binary patch literal 21614 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 literal 27920 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, skill {PlayerManager.GetPlayerByIndex(victim.Index)?.Skill}" + + $"->{PlayerManager.GetPlayerByIndex(routedIndex)?.Skill}, controllingBot={victim.ControllingBot})"; + } + private static HookResult OnTakeDamage(DynamicHook h) { CEntityInstance param = h.GetParam(0); @@ -129,7 +147,10 @@ namespace src.player var playerInfo = PlayerManager.GetPlayerByIndex(attacker!.Index); if (playerInfo == null) return HookResult.Continue; - WriteToDebug($"{(victim.IsBot ? "Bot" : "Player")} {victim.PlayerName} took damage from {(attacker.IsBot ? "bot" : "player")} {attacker.PlayerName}."); + WriteToDebug($"{(victim.IsBot ? "Bot" : "Player")} {victim.PlayerName} took damage from {(attacker.IsBot ? "bot" : "player")} {attacker.PlayerName}. " + + $"[dmg={param2.Damage:0.#} hp={victimPawn.Health}/{victimPawn.MaxHealth} armor={victimPawn.ArmorValue} hitgroup={SkillUtils.GetHitGroup(param2)} " + + $"takes={victimPawn.TakesDamage} vskill={PlayerManager.GetPlayerByIndex(victim.Index)?.Skill} askill={playerInfo.Skill}" + + $"{DescribeIdentitySplit(victim)}]"); return HookResult.Continue; } diff --git a/jRandomSkills - SRC Files/src/player/ISkill.cs b/jRandomSkills - SRC Files/src/player/ISkill.cs index 6b2019a..7cc9a65 100644 --- a/jRandomSkills - SRC Files/src/player/ISkill.cs +++ b/jRandomSkills - SRC Files/src/player/ISkill.cs @@ -19,9 +19,11 @@ public interface ISkill public static void CheckTransmit([CastFrom(typeof(nint))] CCheckTransmitInfoList _) { } public static void NewRound() { } + public static void RoundEnd() { } public static void PlayerMakeSound(UserMessage _) { } public static void PlayerBlind(EventPlayerBlind _) { } public static void PlayerHurt(EventPlayerHurt _) { } + public static bool PlayerHurtPre(EventPlayerHurt _) { return false; } public static void PlayerDeath(EventPlayerDeath _) { } public static void PlayerJump(EventPlayerJump _) { } public static void SwitchTeam(EventSwitchTeam _, GameEventInfo __) { } @@ -88,6 +90,8 @@ public enum Skills Duplicator, Dwarf, EnemySpawn, + ExpensiveAmmo, + ExplodingBarrel, ExplosiveShot, FalconEye, FastReload, @@ -98,6 +102,7 @@ public enum Skills FrozenDecoy, Gambler, Ghost, + Giant, Glaz, Glitch, Glue, @@ -117,8 +122,10 @@ public enum Skills Jammer, Jester, JumpBan, + JumpCurse, JumpingJack, KillerFlash, + Knockback, LifeSwap, LongKnife, LongZeus, @@ -128,6 +135,7 @@ public enum Skills Medic, Miner, MoneySwap, + Nightmare, Ninja, NoNades, NoRecoil, @@ -174,6 +182,7 @@ public enum Skills Thorns, ThrowingKnife, ToxicSmoke, + Tripwire, Wallhack, Watchmaker, WeaponsSwap, diff --git a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs index c119c53..e5e4ca0 100644 --- a/jRandomSkills - SRC Files/src/player/PlayerEvents.cs +++ b/jRandomSkills - SRC Files/src/player/PlayerEvents.cs @@ -47,8 +47,10 @@ namespace src.player Instance.RegisterEventHandler(RoundStart); Instance.RegisterEventHandler(RoundEnd); + Instance.RegisterEventHandler(PlayerDeathPre, HookMode.Pre); Instance.RegisterEventHandler(PlayerDeath); Instance.RegisterEventHandler(PlayerBlind); + Instance.RegisterEventHandler(PlayerHurtPre, HookMode.Pre); Instance.RegisterEventHandler(PlayerHurt); Instance.RegisterEventHandler(PlayerJump); Instance.RegisterEventHandler(BotTakeover); @@ -89,6 +91,22 @@ namespace src.player // Keeping the plugin alive is safer than installing a stale global hook at load time. } + public static void Unload() + { + TryUnhook(() => VirtualFunctions.CBaseEntity_TakeDamageOldFunc.Unhook(OnTakeDamage, HookMode.Pre)); + TryUnhook(() => VirtualFunctions.CBaseTrigger_StartTouchFunc.Unhook(OnTriggerEnter, HookMode.Post)); + TryUnhook(() => VirtualFunctions.CBaseTrigger_EndTouchFunc.Unhook(OnTriggerExit, HookMode.Pre)); + TryUnhook(() => VirtualFunctions.CCSPlayer_ItemServices_CanAcquireFunc.Unhook(OnWeaponCanAcquire, HookMode.Pre)); + TryUnhook(() => Instance.UnhookUserMessage(208, PlayerMakeSound)); + TryUnhook(() => Instance.RemoveListener(CheckTransmit)); + } + + private static void TryUnhook(Action unhook) + { + try { unhook(); } + catch (Exception ex) { Server.PrintToConsole($"[jRandomSkills] unhook failed: {ex.Message}"); } + } + private static jSkill_SkillInfo ChooseSkillByRarityAndMax(List candidates, Dictionary assignmentCounts, Config.GameModes gameMode) { if (candidates == null || candidates.Count == 0) return noneSkill; @@ -180,12 +198,53 @@ namespace src.player continue; } - InvokeSkill(p.Skill, "OnTakeDamage", args); + InvokeOnTakeDamage(p.Skill, h, args); } if (deferred == null) return; foreach (var skill in deferred) + InvokeOnTakeDamage(skill, h, args); + } + + private static void InvokeOnTakeDamage(Skills skill, DynamicHook h, object[] args) + { + if (Config.LoadedConfig.DebugMode != true) + { InvokeSkill(skill, "OnTakeDamage", args); + return; + } + + var info = h.GetParam(1); + float before = info == null ? 0f : info.Damage; + + InvokeSkill(skill, "OnTakeDamage", args); + + float after = info == null ? 0f : info.Damage; + if (Math.Abs(before - after) > 0.01f) + Debug.WriteToDebug($"[DMG] {skill} changed damage {before:0.#} -> {after:0.#}{DescribeDamageTarget(h)}"); + } + + private static string DescribeDamageTarget(DynamicHook h) + { + try + { + var victimEntity = h.GetParam(0); + if (victimEntity == null || !victimEntity.IsValid) return string.Empty; + + var pawn = victimEntity.As(); + if (pawn == null || !pawn.IsValid || pawn.DesignerName != "player") return string.Empty; + + var controller = pawn.Controller.Value?.As(); + if (controller == null || !controller.IsValid) return string.Empty; + + uint routedIndex = PlayerManager.GetPlayerEvent(controller)?.Index ?? controller.Index; + return $" on {controller.PlayerName} [idx={controller.Index} skill={PlayerManager.GetPlayerByIndex(controller.Index)?.Skill}" + + $" routedIdx={routedIndex} routedSkill={PlayerManager.GetPlayerByIndex(routedIndex)?.Skill}]"; + } + catch + { + return string.Empty; + } } private static HookResult PlayerMakeSound(UserMessage um) @@ -314,6 +373,63 @@ namespace src.player } } + private static HookResult PlayerHurtPre(EventPlayerHurt @event, GameEventInfo info) + { + lock (setLock) + { + try + { + if (@event.DmgHealth <= 0 && @event.DmgArmor <= 0) return HookResult.Continue; + + var victim = PlayerManager.GetPlayerEvent(@event.Userid); + if (victim == null || !victim.IsValid) return HookResult.Continue; + + var victimInfo = PlayerManager.GetPlayerByIndex(victim.Index); + if (victimInfo == null || victimInfo.IsDrawing) return HookResult.Continue; + + bool suppressed = AskSkillSuppressesHit(victimInfo.Skill, @event); + + if (!suppressed) + { + var attacker = PlayerManager.GetPlayerEvent(@event.Attacker); + if (attacker != null && attacker.IsValid && attacker.Index != victim.Index) + { + var attackerInfo = PlayerManager.GetPlayerByIndex(attacker.Index); + if (attackerInfo != null && !attackerInfo.IsDrawing && attackerInfo.Skill != victimInfo.Skill) + suppressed = AskSkillSuppressesHit(attackerInfo.Skill, @event); + } + } + + if (!suppressed) return HookResult.Continue; + + if (@event.DmgArmor > 0) + { + var pawn = victim.PlayerPawn?.Value; + if (pawn != null && pawn.IsValid) + { + pawn.ArmorValue += @event.DmgArmor; + Utilities.SetStateChanged(pawn, "CCSPlayerPawn", "m_ArmorValue"); + } + } + + @event.DmgHealth = 0; + @event.DmgArmor = 0; + } + catch (Exception ex) + { + Debug.WriteToDebug($"PlayerHurtPre failed: {ex.Message}"); + } + + return HookResult.Continue; + } + } + + private static bool AskSkillSuppressesHit(Skills skill, EventPlayerHurt @event) + { + if (skill == Skills.None) return false; + return (bool?)Instance.SkillAction(skill.ToString(), "PlayerHurtPre", [@event]) == true; + } + private static HookResult PlayerHurt(EventPlayerHurt @event, GameEventInfo info) { lock (setLock) @@ -546,6 +662,9 @@ namespace src.player DisplayHUD = true, SkillUsed = false, }; + + UpdateSkillHudExpired(playerInfo, Skills.None); + PlayerManager.Register(playerInfo); } } @@ -609,14 +728,7 @@ namespace src.player var skillPlayer = PlayerManager.GetPlayerByIndex(player!.Index); if (skillPlayer == null) return HookResult.Continue; - var temp = skillPlayer.SkillHudExpired; - skillPlayer.SkillHudExpired = DateTime.MinValue; - - Instance.AddTimer(5f, () => - { - if (skillPlayer.SkillHudExpired == DateTime.MinValue) - skillPlayer.SkillHudExpired = temp; - }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); + skillPlayer.HudSuppressedUntil = DateTime.Now.AddSeconds(5); return HookResult.Continue; } @@ -653,6 +765,7 @@ namespace src.player { bool isWarmup = Instance.GameRules == null || Instance.GameRules.WarmupPeriod == true; isTransmitRegistered = false; + SkillUtils.ClearKillCredits(); Instance.AddTimer(.1f, () => DisableAll(), CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); foreach (var player in Utilities.GetPlayers().Where(p => p != null && p.IsValid && !p.IsHLTV && p.Team is CsTeam.CounterTerrorist or CsTeam.Terrorist)) @@ -785,6 +898,7 @@ namespace src.player private static HookResult RoundEnd(EventRoundEnd @event, GameEventInfo info) { Illiterate.Disable(); + DispatchToActiveSkills("RoundEnd"); lock (setLock) { @@ -833,6 +947,40 @@ namespace src.player } } + private static HookResult PlayerDeathPre(EventPlayerDeath @event, GameEventInfo info) + { + try + { + var victim = @event.Userid; + if (victim == null || !victim.IsValid) return HookResult.Continue; + + if (!SkillUtils.TryConsumeKillCredit(victim.Index, out uint attackerIndex, out string? weapon)) + return HookResult.Continue; + + var attacker = Utilities.GetPlayerFromIndex((int)attackerIndex); + if (attacker == null || !attacker.IsValid || attacker.Index == victim.Index) + return HookResult.Continue; + + @event.Attacker = attacker; + + if (!string.IsNullOrEmpty(weapon)) + @event.Weapon = weapon; + + var matchStats = attacker.ActionTrackingServices?.MatchStats; + if (matchStats != null) + { + matchStats.Kills++; + Utilities.SetStateChanged(attacker, "CCSPlayerController", "m_pActionTrackingServices"); + } + } + catch (Exception ex) + { + Debug.WriteToDebug($"PlayerDeathPre kill credit failed: {ex.Message}"); + } + + return HookResult.Continue; + } + private static HookResult PlayerDeath(EventPlayerDeath @event, GameEventInfo info) { long perfStart = PerfLog.Start(); @@ -955,26 +1103,65 @@ namespace src.player private static readonly Dictionary nextRoundPicks = []; - private static jSkill_SkillInfo PickSkillForPlayer(CCSPlayerController player, jSkill_PlayerInfo skillPlayer, List validPlayers, Dictionary assignmentCounts, Config.GameModes gameMode) + private sealed class PickContext { - List skillList = [.. SkillData.Skills]; - skillList.RemoveAll(s => s?.Skill == Skills.None); - if (!player.IsBot) - skillList.RemoveAll(s => !string.IsNullOrEmpty(SkillsInfo.GetValue(s.Skill, "requiredPermission")) && !AdminManager.PlayerHasPermissions(player, SkillsInfo.GetValue(s.Skill, "requiredPermission"))); + public required List BaseList { get; init; } + public required Dictionary RequiredPermissions { get; init; } + public required HashSet NeedsTeammates { get; init; } + public required HashSet CtOnly { get; init; } + public required HashSet TOnly { get; init; } + public required int TerroristCount { get; init; } + public required int CounterTerroristCount { get; init; } + } + + private static PickContext BuildPickContext(List validPlayers) + { + Dictionary perms = []; + foreach (var s in SkillData.Skills) + { + if (s == null || s.Skill == Skills.None) continue; + string perm = SkillsInfo.GetValue(s.Skill, "requiredPermission"); + if (!string.IsNullOrEmpty(perm)) perms[s.Skill] = perm; + } + + return new PickContext + { + BaseList = [.. SkillData.Skills.Where(s => s != null && s.Skill != Skills.None)], + RequiredPermissions = perms, + NeedsTeammates = ToSkillSet(SkillsInfo.LoadedConfig.Where(s => s.NeedsTeammates).Select(s => s.Name)), + CtOnly = ToSkillSet(counterterroristSkills.Select(s => s.Name)), + TOnly = ToSkillSet(terroristSkills.Select(s => s.Name)), + TerroristCount = validPlayers.Count(p => p.Team == CsTeam.Terrorist), + CounterTerroristCount = validPlayers.Count(p => p.Team == CsTeam.CounterTerrorist), + }; + } + + private static HashSet ToSkillSet(IEnumerable names) + { + HashSet set = []; + foreach (var name in names) + if (Enum.TryParse(name, out var skill)) set.Add(skill); + return set; + } + + private static jSkill_SkillInfo PickSkillForPlayer(CCSPlayerController player, jSkill_PlayerInfo skillPlayer, PickContext ctx, Dictionary assignmentCounts, Config.GameModes gameMode) + { + List skillList = [.. ctx.BaseList]; + + if (!player.IsBot && ctx.RequiredPermissions.Count != 0) + skillList.RemoveAll(s => ctx.RequiredPermissions.TryGetValue(s.Skill, out var perm) && !AdminManager.PlayerHasPermissions(player, perm)); if (gameMode != Config.GameModes.FullRandom) skillList.RemoveAll(s => s?.Skill == skillPlayer?.Skill || s?.Skill == skillPlayer?.SpecialSkill); - if (validPlayers.Count(p => p.Team == player.Team) == 1) - { - SkillsInfo.DefaultSkillInfo[] skillsNeedsTeammates = [.. SkillsInfo.LoadedConfig.Where(s => s.NeedsTeammates)]; - skillList.RemoveAll(s => skillsNeedsTeammates.Any(s2 => s2.Name == s.Skill.ToString())); - } + int teamCount = player.Team == CsTeam.Terrorist ? ctx.TerroristCount : ctx.CounterTerroristCount; + if (teamCount == 1) + skillList.RemoveAll(s => ctx.NeedsTeammates.Contains(s.Skill)); if (player.Team == CsTeam.Terrorist) - skillList.RemoveAll(s => counterterroristSkills.Any(s2 => s2.Name == s.Skill.ToString())); + skillList.RemoveAll(s => ctx.CtOnly.Contains(s.Skill)); else - skillList.RemoveAll(s => terroristSkills.Any(s2 => s2.Name == s.Skill.ToString())); + skillList.RemoveAll(s => ctx.TOnly.Contains(s.Skill)); if (gameMode == Config.GameModes.NoRepeat && playersSkills.TryGetValue(player.Index, out ConcurrentBag? skills)) { @@ -1029,13 +1216,15 @@ namespace src.player .Where(p => p != null && p.IsValid && !p.IsHLTV) .Where(p => { try { return p.Team is CsTeam.CounterTerrorist or CsTeam.Terrorist; } catch { return false; } }).ToList(); + var ctx = BuildPickContext(validPlayers); + Dictionary assignmentCounts = []; foreach (var player in validPlayers) { var skillPlayer = PlayerManager.GetPlayerByIndex(player.Index); if (skillPlayer == null) continue; - var pick = PickSkillForPlayer(player, skillPlayer, validPlayers, assignmentCounts, gameMode); + var pick = PickSkillForPlayer(player, skillPlayer, ctx, assignmentCounts, gameMode); nextRoundPicks[player.Index] = pick; if (pick.Skill != Skills.None) @@ -1116,6 +1305,8 @@ namespace src.player else assignmentCounts[sp.Skill] = 1; } + PickContext? pickContext = null; + foreach (var player in validPlayers) { if (player == null) continue; @@ -1126,6 +1317,7 @@ namespace src.player if (skillPlayer == null) continue; skillPlayer.IsDrawing = false; + skillPlayer.HudOnDeathBlocked = null; if (player.PlayerPawn.Value == null || !player.PlayerPawn.IsValid) { skillPlayer.Skill = Skills.None; @@ -1142,7 +1334,10 @@ namespace src.player if (nextRoundPicks.TryGetValue(player.Index, out var pre) && IsPickStillValid(pre, player, validPlayers, assignmentCounts)) randomSkill = pre; else - randomSkill = PickSkillForPlayer(player, skillPlayer, validPlayers, assignmentCounts, gameMode); + { + pickContext ??= BuildPickContext(validPlayers); + randomSkill = PickSkillForPlayer(player, skillPlayer, pickContext, assignmentCounts, gameMode); + } } else if (gameMode == Config.GameModes.TeamSkills) randomSkill = player.Team == CsTeam.Terrorist ? tSkill : ctSkill; diff --git a/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs b/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs index 520b593..cb960bd 100644 --- a/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs +++ b/jRandomSkills - SRC Files/src/player/PlayerOnTick.cs @@ -27,10 +27,11 @@ namespace src.player long perfStart = PerfLog.Start(); // Shared per-tick controller snapshot: the skill OnTick loop already scans the // player list this frame, so reuse that native scan instead of running a second one. + var now = DateTime.Now; foreach (var player in PlayerManager.GetTickPlayers()) { if (player != null && player.IsValid) - UpdatePlayerHud(player); + UpdatePlayerHud(player, now); } PerfLog.Sample("OnTick(hud)", perfStart); }); @@ -70,7 +71,7 @@ namespace src.player Instance.GameRules.GameRestart = Instance.GameRules.RestartRoundTime < Server.CurrentTime; } - private static void UpdatePlayerHud(CCSPlayerController player) + private static void UpdatePlayerHud(CCSPlayerController player, DateTime now) { if (player == null || !player.IsValid || player.IsBot) return; @@ -81,9 +82,11 @@ namespace src.player var skillPlayer = PlayerManager.GetPlayerByIndex(PlayerManager.GetPlayerEvent(player)?.Index ?? player.Index); if (skillPlayer == null || !skillPlayer.DisplayHUD) return; - var now = DateTime.Now; + if (skillPlayer.HudSuppressedUntil > now) return; - if (player.PawnIsAlive && skillPlayer.SkillHudExpired < now) return; + if (player.PawnIsAlive && skillPlayer.SkillHudExpired < now && string.IsNullOrEmpty(skillPlayer.PrintHTML)) return; + + if (SkillUtils.HasMenu(player)) return; string infoLine = string.Empty; string skillLine = string.Empty; @@ -135,17 +138,19 @@ namespace src.player } else { - if ((player.Team is CsTeam.Spectator or CsTeam.None && Config.LoadedConfig.DisableSpectateHUD) - || AdminManager.PlayerHasPermissions(player, Config.LoadedConfig.DisableHUDOnDeathPermission)) + if (player.Team is CsTeam.Spectator or CsTeam.None && Config.LoadedConfig.DisableSpectateHUD) return; + skillPlayer.HudOnDeathBlocked ??= AdminManager.PlayerHasPermissions(player, Config.LoadedConfig.DisableHUDOnDeathPermission); + if (skillPlayer.HudOnDeathBlocked == true) return; + var pawn = player.Pawn.Value; if (pawn?.ObserverServices == null) return; var observerTarget = pawn.ObserverServices.ObserverTarget?.Value; if (observerTarget == null || !observerTarget.IsValid) return; - var observedPlayer = Utilities.GetPlayers().FirstOrDefault(p => + var observedPlayer = PlayerManager.GetTickPlayers().FirstOrDefault(p => p != null && p.IsValid && p.Pawn?.Value?.Handle == observerTarget.Handle); if (observedPlayer == null) return; @@ -185,7 +190,6 @@ namespace src.player } if (string.IsNullOrEmpty(skillLine)) return; - if (SkillUtils.HasMenu(player)) return; Event.UpdateSkillHUD(player, infoLine, skillLine, remainingLine, isDescription); } diff --git a/jRandomSkills - SRC Files/src/player/skills/AntyHead.cs b/jRandomSkills - SRC Files/src/player/skills/AntyHead.cs index 6fb1900..7a70a4d 100644 --- a/jRandomSkills - SRC Files/src/player/skills/AntyHead.cs +++ b/jRandomSkills - SRC Files/src/player/skills/AntyHead.cs @@ -13,17 +13,17 @@ namespace src.player.skills SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); } - public static void PlayerHurt(EventPlayerHurt @event) + public static bool PlayerHurtPre(EventPlayerHurt @event) { var attacker = PlayerManager.GetPlayerEvent(@event.Attacker); var victim = PlayerManager.GetPlayerEvent(@event.Userid); - int hitgroup = @event.Hitgroup; - if (victim == null || !victim.IsValid || attacker == null || !attacker.IsValid || attacker == victim) return; + if (victim == null || !victim.IsValid || attacker == null || !attacker.IsValid || attacker == victim) return false; + if (@event.Hitgroup != (int)HitGroup_t.HITGROUP_HEAD) return false; + if (PlayerManager.GetPlayerByIndex(victim.Index)?.Skill != skillName) return false; - var playerInfo = PlayerManager.GetPlayerByIndex(victim.Index); - if (playerInfo?.Skill == skillName && hitgroup == (int)HitGroup_t.HITGROUP_HEAD) - SkillUtils.RestoreHealth(victim); + SkillUtils.RestoreHealth(victim); + return true; } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#8B4513", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) diff --git a/jRandomSkills - SRC Files/src/player/skills/Assassin.cs b/jRandomSkills - SRC Files/src/player/skills/Assassin.cs index 4b2f08f..fb170c3 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Assassin.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Assassin.cs @@ -1,4 +1,5 @@ using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions; using CounterStrikeSharp.API.Modules.Utils; using src.utils; @@ -7,32 +8,48 @@ namespace src.player.skills public class Assassin : ISkill { private const Skills skillName = Skills.Assassin; - private static readonly string[] nades = ["inferno", "flashbang", "smokegrenade", "decoy", "hegrenade"]; + private static readonly string[] nadeWeapons = + [ + "weapon_inferno", "weapon_molotov", "weapon_incgrenade", "weapon_flashbang", + "weapon_smokegrenade", "weapon_decoy", "weapon_hegrenade" + ]; public static void LoadSkill() { SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); } - public static void PlayerHurt(EventPlayerHurt @event) + public static void OnTakeDamage(DynamicHook h) { - var damage = @event.DmgHealth; - var victim = PlayerManager.GetPlayerEvent(@event.Userid); - var attacker = PlayerManager.GetPlayerEvent(@event.Attacker); - var weapon = @event.Weapon; + CEntityInstance param = h.GetParam(0); + CTakeDamageInfo param2 = h.GetParam(1); - if (victim == null || !victim.IsValid || attacker == null || !attacker.IsValid || attacker == victim) return; - if (string.IsNullOrEmpty(weapon) || nades.Contains(weapon)) return; + if (param == null || param.Entity == null || param2 == null || param2.Attacker == null || param2.Attacker.Value == null) + return; - var playerInfo = PlayerManager.GetPlayerByIndex(attacker!.Index); + CCSPlayerPawn attackerPawn = new(param2.Attacker.Value.Handle); + CCSPlayerPawn victimPawn = new(param.Handle); + + if (attackerPawn.DesignerName != "player" || victimPawn.DesignerName != "player") + return; + + if (attackerPawn.Controller?.Value == null || victimPawn.Controller?.Value == null) + return; + + var attacker = PlayerManager.GetPlayerEvent(attackerPawn.Controller.Value.As()); + var victim = PlayerManager.GetPlayerEvent(victimPawn.Controller.Value.As()); + if (attacker == null || !attacker.IsValid || victim == null || !victim.IsValid) return; + if (attacker.Index == victim.Index) return; + + var playerInfo = PlayerManager.GetPlayerByIndex(attacker.Index); if (playerInfo?.Skill != skillName) return; + var weapon = param2.Ability?.Value; + if (weapon == null || !weapon.IsValid) return; + if (nadeWeapons.Contains(weapon.DesignerName)) return; + if (IsBehind(attacker, victim)) - { - var victimPawn = victim.PlayerPawn.Value; - if (victimPawn != null && victimPawn.IsValid) - SkillUtils.TakeHealth(victimPawn, (int)(damage * (SkillsInfo.GetValue(skillName, "damageMultiplier") - 1))); - } + param2.Damage *= SkillsInfo.GetValue(skillName, "damageMultiplier"); } private static bool IsBehind(CCSPlayerController attacker, CCSPlayerController victim) diff --git a/jRandomSkills - SRC Files/src/player/skills/Bankrupt.cs b/jRandomSkills - SRC Files/src/player/skills/Bankrupt.cs index 67b009d..aeffe90 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Bankrupt.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Bankrupt.cs @@ -30,10 +30,11 @@ namespace src.player.skills foreach (var player in PlayerManager.GetTickPlayers()) { - if (player == null || !player.IsValid || !SkillUtils.HasMenu(player)) continue; + if (player == null || !player.IsValid) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; var enemies = PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = []; diff --git a/jRandomSkills - SRC Files/src/player/skills/Baseball.cs b/jRandomSkills - SRC Files/src/player/skills/Baseball.cs index 774343c..9551ecf 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Baseball.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Baseball.cs @@ -20,10 +20,22 @@ namespace src.player.skills public static void NewRound() { - decoys.Clear(); + KillAllDecoys(); playersWithSkill.Clear(); } + private static void KillAllDecoys() + { + foreach (var decoyIndex in decoys.Keys.ToArray()) + { + var decoy = Utilities.GetEntityFromIndex((int)decoyIndex); + if (decoy != null && decoy.IsValid && decoy.DesignerName == "decoy_projectile") + decoy.AddEntityIOEvent("Kill", decoy, delay: 0.1f); + } + + decoys.Clear(); + } + public static void PlayerHurt(EventPlayerHurt @event) { var victim = PlayerManager.GetPlayerEvent(@event.Userid); @@ -45,7 +57,7 @@ namespace src.player.skills var attackerInfo = PlayerManager.GetPlayerByIndex((PlayerManager.GetPlayerEvent(attacker)?.Index ?? attacker.Index)); if (attackerInfo?.Skill != skillName) return; - SkillUtils.TakeHealth(victim!.PlayerPawn.Value, SkillsInfo.GetValue(skillName, "damageDeal")); + SkillUtils.TakeHealth(victim!.PlayerPawn.Value, SkillsInfo.GetValue(skillName, "damageDeal"), attacker, "decoy"); } public static void OnEntitySpawned(CEntityInstance entity) @@ -94,6 +106,7 @@ namespace src.player.skills if (Server.TickCount % 8 != 0) return; var keys = decoys.Keys.ToArray(); + if (keys.Length == 0) return; foreach (var decoyIndex in keys) { diff --git a/jRandomSkills - SRC Files/src/player/skills/BladeMaster.cs b/jRandomSkills - SRC Files/src/player/skills/BladeMaster.cs index b828798..96143d5 100644 --- a/jRandomSkills - SRC Files/src/player/skills/BladeMaster.cs +++ b/jRandomSkills - SRC Files/src/player/skills/BladeMaster.cs @@ -45,20 +45,19 @@ namespace src.player.skills } } - public static void PlayerHurt(EventPlayerHurt @event) + public static bool PlayerHurtPre(EventPlayerHurt @event) { - var damage = @event.DmgHealth; var attacker = PlayerManager.GetPlayerEvent(@event.Attacker); var victim = PlayerManager.GetPlayerEvent(@event.Userid); var weapon = @event.Weapon; int hitgroup = @event.Hitgroup; - if (victim == null || !victim.IsValid || attacker == null || !attacker.IsValid || attacker == victim) return; + if (victim == null || !victim.IsValid || attacker == null || !attacker.IsValid || attacker == victim) return false; var playerInfo = PlayerManager.GetPlayerByIndex(victim.Index); - if (playerInfo?.Skill != skillName) return; + if (playerInfo?.Skill != skillName) return false; - if (string.IsNullOrEmpty(weapon) || noReflectionWeapon.Contains(weapon)) return; + if (string.IsNullOrEmpty(weapon) || noReflectionWeapon.Contains(weapon)) return false; float chance = (hitgroup == (int)HitGroup_t.HITGROUP_LEFTLEG || hitgroup == (int)HitGroup_t.HITGROUP_RIGHTLEG) ? SkillsInfo.GetValue(skillName, "legReflectionChance") @@ -66,10 +65,10 @@ namespace src.player.skills var victimPawn = victim.PlayerPawn?.Value; if (victimPawn == null || !victimPawn.IsValid || Instance.Random.NextDouble() > chance) - return; + return false; var weaponServices = victimPawn.WeaponServices; - if (weaponServices == null) return; + if (weaponServices == null) return false; if (weaponServices.ActiveWeapon == null || !weaponServices.ActiveWeapon.IsValid @@ -77,9 +76,10 @@ namespace src.player.skills || !weaponServices.ActiveWeapon.Value.IsValid || (weaponServices.ActiveWeapon.Value.DesignerName != "weapon_knife" && weaponServices.ActiveWeapon.Value.DesignerName != "weapon_bayonet")) - return; + return false; SkillUtils.RestoreHealth(victim); + return true; } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#cc7504", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common, float torseReflectionChance = .95f, float legReflectionChance = .70f, float velocityModifier = .85f) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) diff --git a/jRandomSkills - SRC Files/src/player/skills/BunnyHop.cs b/jRandomSkills - SRC Files/src/player/skills/BunnyHop.cs index a096b1c..904c04e 100644 --- a/jRandomSkills - SRC Files/src/player/skills/BunnyHop.cs +++ b/jRandomSkills - SRC Files/src/player/skills/BunnyHop.cs @@ -11,6 +11,16 @@ namespace src.player.skills private const Skills skillName = Skills.BunnyHop; private static readonly ConcurrentDictionary playersLastJump = []; + public static void NewRound() + { + playersLastJump.Clear(); + } + + public static void PlayerDisconnect(uint playerIndex) + { + playersLastJump.TryRemove(playerIndex, out _); + } + public static void LoadSkill() { SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); diff --git a/jRandomSkills - SRC Files/src/player/skills/C4Camouflage.cs b/jRandomSkills - SRC Files/src/player/skills/C4Camouflage.cs index f76803b..3a6ab09 100644 --- a/jRandomSkills - SRC Files/src/player/skills/C4Camouflage.cs +++ b/jRandomSkills - SRC Files/src/player/skills/C4Camouflage.cs @@ -133,6 +133,8 @@ namespace src.player.skills if (info.TransmitEntities.Contains(entity.Index)) info.TransmitEntities.Remove(entity.Index); + SkillUtils.HideCarriedEntities(info, playerPawn); + if (bomb == null) continue; if (info.TransmitEntities.Contains(bomb.Index)) diff --git a/jRandomSkills - SRC Files/src/player/skills/CarefulBullets.cs b/jRandomSkills - SRC Files/src/player/skills/CarefulBullets.cs index 89a5c09..a89fe09 100644 --- a/jRandomSkills - SRC Files/src/player/skills/CarefulBullets.cs +++ b/jRandomSkills - SRC Files/src/player/skills/CarefulBullets.cs @@ -15,6 +15,7 @@ namespace src.player.skills private static readonly ConcurrentDictionary lastShot = []; private static readonly ConcurrentDictionary hitPlayer = []; private static readonly ConcurrentDictionary playersToTarget = []; + private static readonly ConcurrentDictionary targetToPlayer = []; private static readonly object setLock = new(); public static void LoadSkill() @@ -36,6 +37,7 @@ namespace src.player.skills lastShot.Clear(); hitPlayer.Clear(); playersToTarget.Clear(); + targetToPlayer.Clear(); } } @@ -44,10 +46,11 @@ namespace src.player.skills if (Server.TickCount % 32 != 0) return; foreach (var player in PlayerManager.GetTickPlayers()) { - if (!SkillUtils.HasMenu(player)) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + var enemies = PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => (e.PlayerName, e.Index.ToString()))]; @@ -88,6 +91,7 @@ namespace src.player.skills targetPlayers.TryAdd(enemy.Index, 0); playersToTarget[player.Index] = enemy.Index; + targetToPlayer[enemy.Index] = player.Index; playerInfo.SkillUsed = true; var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); @@ -131,13 +135,14 @@ namespace src.player.skills return; uint playerIndex = player.Index; + int impactTick = Server.TickCount; Server.NextFrame(() => { if (player == null || !player.IsValid) return; if (playerPawn == null || !playerPawn.IsValid) return; - bool ishitPlayer = hitPlayer.TryGetValue(playerIndex, out int tick) && tick + 10 >= Server.TickCount; + bool ishitPlayer = hitPlayer.TryGetValue(playerIndex, out int tick) && tick + 1 >= impactTick; if (!lastShot.ContainsKey(playerIndex)) { @@ -148,7 +153,8 @@ namespace src.player.skills if (lastShot.TryRemove(playerIndex, out bool didHit) && !didHit) { eventPlayer.ExecuteClientCommand($"play player/player_damagebody_0{Instance.Random.Next(4, 8)}"); - SkillUtils.TakeHealth(playerPawn, SkillsInfo.GetValue(skillName, "damageAfterMiss")); + + SkillUtils.TakeHealth(playerPawn, SkillsInfo.GetValue(skillName, "damageAfterMiss"), GetSkillOwner(playerIndex), "planted_c4"); } lastShot.TryRemove(playerIndex, out _); }); @@ -158,6 +164,14 @@ namespace src.player.skills }); } + private static CCSPlayerController? GetSkillOwner(uint targetIndex) + { + if (!targetToPlayer.TryGetValue(targetIndex, out uint ownerIndex)) return null; + + var owner = Utilities.GetPlayerFromIndex((int)ownerIndex); + return owner != null && owner.IsValid ? owner : null; + } + public static void OnTakeDamage(DynamicHook h) { CEntityInstance param = h.GetParam(0); @@ -188,12 +202,14 @@ namespace src.player.skills targetPlayers.TryRemove(player.Index, out _); lastShot.TryRemove(player.Index, out _); hitPlayer.TryRemove(player.Index, out _); + targetToPlayer.TryRemove(player.Index, out _); if (playersToTarget.TryRemove(player.Index, out uint targetIndex)) { targetPlayers.TryRemove(targetIndex, out _); lastShot.TryRemove(targetIndex, out _); hitPlayer.TryRemove(targetIndex, out _); + targetToPlayer.TryRemove(targetIndex, out _); var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); if (target != null && target.IsValid && target.PawnIsAlive && !SkillUtils.IsFreezeTime()) @@ -212,6 +228,8 @@ namespace src.player.skills lastShot.TryRemove(player.Index, out _); hitPlayer.TryRemove(player.Index, out _); + targetToPlayer.TryRemove(player.Index, out _); + SkillUtils.CloseMenu(player); } @@ -220,4 +238,4 @@ namespace src.player.skills public int DamageAfterMiss { get; set; } = damageAfterMiss; } } -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/player/skills/Chicken.cs b/jRandomSkills - SRC Files/src/player/skills/Chicken.cs index c90be66..e999b17 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Chicken.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Chicken.cs @@ -20,11 +20,13 @@ namespace src.player.skills "weapon_xm1014", "weapon_mag7", "weapon_sawedoff", "weapon_m249", "weapon_negev", "weapon_sg556" ]; + private const string chickenModelPath = "models/chicken/chicken.vmdl"; private static readonly ConcurrentDictionary chickens = []; public static void LoadSkill() { SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + jRandomSkills.Instance.AddToManifest(chickenModelPath); } public static void NewRound() @@ -127,7 +129,7 @@ namespace src.player.skills return; chickenModel.CBodyComponent!.SceneNode!.Owner!.Entity!.Flags = (uint)(chickenModel.CBodyComponent!.SceneNode!.Owner!.Entity!.Flags & ~(1 << 2)); - chickenModel.SetModel("models/chicken/chicken.vmdl"); + chickenModel.SetModel(chickenModelPath); chickenModel.Render = Color.FromArgb(255, 255, 255, 255); chickenModel.Teleport(playerPawn.AbsOrigin, playerPawn.AbsRotation, null); chickenModel.DispatchSpawn(); diff --git a/jRandomSkills - SRC Files/src/player/skills/ChillOut.cs b/jRandomSkills - SRC Files/src/player/skills/ChillOut.cs index 1c88ed1..5bd73a8 100644 --- a/jRandomSkills - SRC Files/src/player/skills/ChillOut.cs +++ b/jRandomSkills - SRC Files/src/player/skills/ChillOut.cs @@ -46,17 +46,25 @@ namespace src.player.skills plantingPlayers.TryAdd(player!.Index, Server.CurrentTime); - var anyChillOut = PlayerManager.GetAllPlayers().FirstOrDefault(p => p.Skill == skillName); - if (anyChillOut != null) + if (!IsAnyOwnerAlive()) return; + + var bomb = PlayerManager.GetTickBomb(); + if (bomb == null || !bomb.IsValid) return; + + bomb.ArmedTime = Server.CurrentTime + SkillsInfo.GetValue(skillName, "bombArmedTime"); + } + + private static bool IsAnyOwnerAlive() + { + foreach (var player in PlayerManager.GetTickPlayers()) { - var bombEntities = Utilities.FindAllEntitiesByDesignerName("weapon_c4").ToList(); - if (bombEntities.Count != 0) - { - var bomb = bombEntities.FirstOrDefault(); - if (bomb != null) - bomb.ArmedTime = Server.CurrentTime + SkillsInfo.GetValue(skillName, "bombArmedTime"); - } + if (player == null || !player.IsValid || !player.PawnIsAlive) continue; + + var playerInfo = PlayerManager.GetPlayerByIndex(PlayerManager.GetPlayerEvent(player)?.Index ?? player.Index); + if (playerInfo?.Skill == skillName) return true; } + + return false; } public static void BombPlanted(EventBombPlanted @event) @@ -70,6 +78,8 @@ namespace src.player.skills public static void OnTick() { + if (plantingPlayers.IsEmpty) return; + float currentTime = Server.CurrentTime; float extraTime = SkillsInfo.GetValue(skillName, "bombArmedTime"); diff --git a/jRandomSkills - SRC Files/src/player/skills/Cutter.cs b/jRandomSkills - SRC Files/src/player/skills/Cutter.cs index 24e5816..32d1d06 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Cutter.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Cutter.cs @@ -1,7 +1,7 @@ using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions; using CounterStrikeSharp.API.Modules.Utils; using src.utils; -using static src.jRandomSkills; namespace src.player.skills { @@ -14,19 +14,35 @@ namespace src.player.skills SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); } - public static void PlayerHurt(EventPlayerHurt @event) + public static void OnTakeDamage(DynamicHook h) { - var damage = @event.DmgHealth; - var attacker = PlayerManager.GetPlayerEvent(@event.Attacker); - var victim = PlayerManager.GetPlayerEvent(@event.Userid); - var weapon = @event.Weapon; + CEntityInstance param = h.GetParam(0); + CTakeDamageInfo param2 = h.GetParam(1); - if (!Instance.IsPlayerValid(attacker) || !Instance.IsPlayerValid(victim) || attacker == victim) return; - var playerInfo = PlayerManager.GetPlayerByIndex(attacker!.Index); + if (param == null || param.Entity == null || param2 == null || param2.Attacker == null || param2.Attacker.Value == null) + return; + + CCSPlayerPawn attackerPawn = new(param2.Attacker.Value.Handle); + CCSPlayerPawn victimPawn = new(param.Handle); + + if (attackerPawn.DesignerName != "player" || victimPawn.DesignerName != "player") + return; + + if (attackerPawn.Controller?.Value == null || victimPawn.Controller?.Value == null) + return; + + var attacker = PlayerManager.GetPlayerEvent(attackerPawn.Controller.Value.As()); + if (attacker == null || !attacker.IsValid) return; + if (attacker.Index == victimPawn.Controller.Value.Index) return; + + var playerInfo = PlayerManager.GetPlayerByIndex(attacker.Index); if (playerInfo?.Skill != skillName) return; - if (weapon == "knife" || weapon == "bayonet") - SkillUtils.TakeHealth(victim!.PlayerPawn.Value, 9999); + var weapon = param2.Ability?.Value; + if (weapon == null || !weapon.IsValid) return; + if (weapon.DesignerName != "weapon_knife" && weapon.DesignerName != "weapon_bayonet") return; + + param2.Damage = 9999f; } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#88a31a", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) diff --git a/jRandomSkills - SRC Files/src/player/skills/Darkness.cs b/jRandomSkills - SRC Files/src/player/skills/Darkness.cs index 5c6bde7..84aa377 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Darkness.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Darkness.cs @@ -54,10 +54,11 @@ namespace src.player.skills if (Server.TickCount % 32 != 0) return; foreach (var player in PlayerManager.GetTickPlayers()) { - if (!SkillUtils.HasMenu(player)) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + var enemies = PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => (e.PlayerName, e.Index.ToString()))]; @@ -230,4 +231,4 @@ namespace src.player.skills public int A { get; set; } = a; } } -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/player/skills/Deactivator.cs b/jRandomSkills - SRC Files/src/player/skills/Deactivator.cs index 6817938..66e04a3 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Deactivator.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Deactivator.cs @@ -27,10 +27,11 @@ namespace src.player.skills if (Server.TickCount % 32 != 0) return; foreach (var player in PlayerManager.GetTickPlayers()) { - if (!SkillUtils.HasMenu(player)) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + var enemies = PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = []; @@ -144,4 +145,4 @@ namespace src.player.skills { } } -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/player/skills/Deaf.cs b/jRandomSkills - SRC Files/src/player/skills/Deaf.cs index 6b57b6e..d0a9d4c 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Deaf.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Deaf.cs @@ -59,10 +59,11 @@ namespace src.player.skills if (Server.TickCount % 32 != 0) return; foreach (var player in PlayerManager.GetTickPlayers()) { - if (!SkillUtils.HasMenu(player)) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + var enemies = PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => (e.PlayerName, e.Index.ToString()))]; @@ -158,4 +159,4 @@ namespace src.player.skills { } } -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/player/skills/DeathBomb.cs b/jRandomSkills - SRC Files/src/player/skills/DeathBomb.cs index 425c028..11c723e 100644 --- a/jRandomSkills - SRC Files/src/player/skills/DeathBomb.cs +++ b/jRandomSkills - SRC Files/src/player/skills/DeathBomb.cs @@ -1,5 +1,6 @@ using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Cvars; using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions; using CounterStrikeSharp.API.Modules.Utils; using src.utils; @@ -12,7 +13,7 @@ namespace src.player.skills { private const Skills skillName = Skills.DeathBomb; private static readonly QAngle angle = new(10, -5, 9); - private static readonly ConcurrentDictionary nades = []; + private static readonly ConcurrentDictionary nades = []; public static void LoadSkill() { @@ -63,7 +64,7 @@ namespace src.player.skills var randomFile = fileNames[new Random().Next(fileNames.Length)]; player.ExecuteClientCommand($"play vo/agents/balkan/{randomFile}.vsnd"); - nades.AddOrUpdate(Server.TickCount, player.TeamNum, (_, _) => player.TeamNum); + nades.AddOrUpdate(Server.TickCount, (player.TeamNum, player.Index), (_, _) => (player.TeamNum, player.Index)); } public static void OnEntitySpawned(CEntityInstance entity) @@ -86,8 +87,8 @@ namespace src.player.skills heProjectile.DmgRadius = SkillsInfo.GetValue(skillName, "explosionRadius"); heProjectile.DetonateTime = 0; - if (nades.TryRemove(lastTick, out byte teamNum)) - heProjectile.Globalname = $"deathbomb_team_{teamNum}_{heProjectile.Index}"; + if (nades.TryRemove(lastTick, out var source)) + heProjectile.Globalname = $"deathbomb_team_{source.Team}_{source.Owner}_{heProjectile.Index}"; }); } @@ -104,16 +105,48 @@ namespace src.player.skills if (nade.DesignerName != "hegrenade_projectile") return; if (string.IsNullOrEmpty(nade.Globalname) || !nade.Globalname.StartsWith("deathbomb_team_")) return; - if (!int.TryParse(nade.Globalname.Split('_')[2], out int nadeTeam)) return; + var parts = nade.Globalname.Split('_'); + if (parts.Length < 4) return; + if (!int.TryParse(parts[2], out int nadeTeam)) return; + if (!uint.TryParse(parts[3], out uint ownerIndex)) return; CCSPlayerPawn victimPawn = new(param.Handle); if (victimPawn.DesignerName != "player") return; - if (victimPawn == null || victimPawn.Controller?.Value == null) return; - if (victimPawn.TeamNum != nadeTeam) return; + if (victimPawn.Controller?.Value == null) return; - float reduction = SkillsInfo.GetValue(skillName, "dmgReductionForTeamates"); - param2.Damage *= 1f - Math.Clamp(reduction, 0f, 1f); + var victim = victimPawn.Controller.Value.As(); + if (victim == null || !victim.IsValid || victim.Index == ownerIndex) return; + + var owner = Utilities.GetPlayerFromIndex((int)ownerIndex); + if (owner != null && !owner.IsValid) owner = null; + + if (victimPawn.TeamNum == nadeTeam) + { + float reduction = SkillsInfo.GetValue(skillName, "dmgReductionForTeamates"); + param2.Damage *= 1f - Math.Clamp(reduction, 0f, 1f); + + if (IsFriendlyFireOff()) + { + int teamDamage = (int)param2.Damage; + param2.Damage = 0; + + if (teamDamage > 0) + SkillUtils.TakeHealth(victimPawn, teamDamage, owner, "hegrenade"); + + return; + } + } + + if (owner != null && param2.Damage >= victimPawn.Health) + SkillUtils.RegisterKillCredit(victim.Index, owner.Index, "hegrenade"); + } + + private static bool IsFriendlyFireOff() + { + bool ff = ConVar.Find("mp_friendlyfire")?.GetPrimitiveValue() ?? false; + bool tae = ConVar.Find("mp_teammates_are_enemies")?.GetPrimitiveValue() ?? false; + return !ff && !tae; } private static bool NearlyEquals(float a, float b, float epsilon = 0.001f) => Math.Abs(a - b) < epsilon; @@ -123,7 +156,7 @@ namespace src.player.skills return player != null && player.IsValid && player.PlayerPawn?.Value != null; } - public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#F5CB42", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common, float explosionRadius = 500.0f, int explosionDamage = 999, float dmgReductionForTeamates = .5f) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#F5CB42", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common, float explosionRadius = 500.0f, int explosionDamage = 999, float dmgReductionForTeamates = 0.5f) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) { public float ExplosionRadius { get; set; } = explosionRadius; public int ExplosionDamage { get; set; } = explosionDamage; diff --git a/jRandomSkills - SRC Files/src/player/skills/Dracula.cs b/jRandomSkills - SRC Files/src/player/skills/Dracula.cs index 47e9264..4f082ba 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Dracula.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Dracula.cs @@ -27,18 +27,41 @@ namespace src.player.skills HealAttacker(attacker!, @event.DmgHealth); } + public static void DisableSkill(CCSPlayerController player) + { + if (player == null || !player.IsValid) return; + + var pawn = player.PlayerPawn?.Value; + if (pawn == null || !pawn.IsValid) return; + + pawn.MaxHealth = 100; + Utilities.SetStateChanged(pawn, "CBaseEntity", "m_iMaxHealth"); + + if (pawn.Health > 100) + { + pawn.Health = 100; + Utilities.SetStateChanged(pawn, "CBaseEntity", "m_iHealth"); + } + } + private static void HealAttacker(CCSPlayerController attacker, float damage) { - var attackerPawn = attacker.PlayerPawn.Value; - if (attackerPawn == null) return; + var attackerPawn = attacker.PlayerPawn?.Value; + if (attackerPawn == null || !attackerPawn.IsValid) return; - int newHealth = (int)(attackerPawn.Health + (damage * SkillsInfo.GetValue(skillName, "healthRegainScale"))); + if (attackerPawn.LifeState != (byte)LifeState_t.LIFE_ALIVE || attackerPawn.Health <= 0) return; - attackerPawn.MaxHealth = Math.Max(newHealth, 100); - Utilities.SetStateChanged(attackerPawn, "CBaseEntity", "m_iMaxHealth"); + int extraHealth = (int)(damage * SkillsInfo.GetValue(skillName, "healthRegainScale")); + if (extraHealth <= 0) return; - attackerPawn.Health = newHealth; + attackerPawn.Health += extraHealth; Utilities.SetStateChanged(attackerPawn, "CBaseEntity", "m_iHealth"); + + if (attackerPawn.MaxHealth < attackerPawn.Health) + { + attackerPawn.MaxHealth = attackerPawn.Health; + Utilities.SetStateChanged(attackerPawn, "CBaseEntity", "m_iMaxHealth"); + } } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#FA050D", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common, float healthRegainScale = .3f) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) diff --git a/jRandomSkills - SRC Files/src/player/skills/Duplicator.cs b/jRandomSkills - SRC Files/src/player/skills/Duplicator.cs index 7d01917..a9623ba 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Duplicator.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Duplicator.cs @@ -27,10 +27,11 @@ namespace src.player.skills if (Server.TickCount % 32 != 0) return; foreach (var player in PlayerManager.GetTickPlayers()) { - if (!SkillUtils.HasMenu(player)) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + var enemies = PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p => p != null && p.IsValid && p.Index != player.Index && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = []; @@ -179,4 +180,4 @@ namespace src.player.skills { } } -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/player/skills/ExpensiveAmmo.cs b/jRandomSkills - SRC Files/src/player/skills/ExpensiveAmmo.cs new file mode 100644 index 0000000..5571b14 --- /dev/null +++ b/jRandomSkills - SRC Files/src/player/skills/ExpensiveAmmo.cs @@ -0,0 +1,171 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using src.utils; +using System.Collections.Concurrent; + +namespace src.player.skills +{ + public class ExpensiveAmmo : ISkill + { + private const Skills skillName = Skills.ExpensiveAmmo; + private static readonly ConcurrentDictionary cursedPlayers = []; + private static readonly ConcurrentDictionary playersToTarget = []; + + public static void LoadSkill() + { + SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + } + + public static void PlayerDisconnect(uint playerIndex) + { + cursedPlayers.TryRemove(playerIndex, out _); + playersToTarget.TryRemove(playerIndex, out _); + + foreach (var kvp in playersToTarget) + if (kvp.Value == playerIndex) + playersToTarget.TryRemove(kvp.Key, out _); + } + + public static void NewRound() + { + cursedPlayers.Clear(); + playersToTarget.Clear(); + + foreach (var player in PlayerManager.GetTickPlayers()) + SkillUtils.CloseMenu(player); + } + + public static void WeaponFire(EventWeaponFire @event) + { + var player = PlayerManager.GetPlayerEvent(@event.Userid); + if (player == null || !player.IsValid) return; + if (!cursedPlayers.ContainsKey(player.Index)) return; + + var moneyServices = player.InGameMoneyServices; + if (moneyServices == null) return; + + int cost = SkillsInfo.GetValue(skillName, "moneyPerShot"); + if (cost <= 0) return; + + moneyServices.Account = Math.Max(moneyServices.Account - cost, 0); + Utilities.SetStateChanged(player, "CCSPlayerController", "m_pInGameMoneyServices"); + } + + public static void OnTick() + { + if (Server.TickCount % 32 != 0) return; + foreach (var player in PlayerManager.GetTickPlayers()) + { + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); + if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + + var enemies = GetSelectableEnemies(player); + + ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => (e.PlayerName, e.Index.ToString()))]; + SkillUtils.UpdateMenu(player, menuItems); + } + } + + public static void TypeSkill(CCSPlayerController player, string[] commands) + { + if (player == null || !player.IsValid || player.LifeState != (byte)LifeState_t.LIFE_ALIVE) return; + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); + if (playerInfo?.Skill != skillName) return; + + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + + if (playerInfo.SkillUsed) + { + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); + return; + } + + string enemyId = commands[0]; + + if (!uint.TryParse(enemyId, out uint enemyIndex)) + { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); + + if (enemy == null || !enemy.IsValid || enemy.PlayerPawn.Value == null || !enemy.PlayerPawn.Value.IsValid) + { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + + cursedPlayers.TryAdd(enemy.Index, 0); + playersToTarget[player.Index] = enemy.Index; + playerInfo.SkillUsed = true; + + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent == null || !enemyEvent.IsValid) return; + + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("expensiveammo_player_info", enemy.PlayerName)); + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("expensiveammo_enemy_info", SkillsInfo.GetValue(skillName, "moneyPerShot"))); + } + + public static void EnableSkill(CCSPlayerController player) + { + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); + if (playerInfo == null) return; + playerInfo.SkillUsed = false; + + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + + var enemies = GetSelectableEnemies(player); + if (enemies.Length > 0) + { + ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => (e.PlayerName, e.Index.ToString()))]; + SkillUtils.CreateMenu(player, menuItems); + } + else + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + } + + public static void DisableSkill(CCSPlayerController player) + { + if (player == null || !player.IsValid) return; + + if (playersToTarget.TryRemove(player.Index, out uint targetIndex)) + { + cursedPlayers.TryRemove(targetIndex, out _); + + var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); + if (target != null && target.IsValid && target.PawnIsAlive && !SkillUtils.IsFreezeTime()) + target.PrintToChat($" {ChatColors.Green}" + target.GetTranslation("expensiveammo_disable_info")); + } + + SkillUtils.CloseMenu(player); + } + + public static void PlayerDeath(EventPlayerDeath @event) + { + var player = @event.Userid; + if (player == null || !player.IsValid) return; + + cursedPlayers.TryRemove(player.Index, out _); + SkillUtils.CloseMenu(player); + } + + private static CCSPlayerController[] GetSelectableEnemies(CCSPlayerController player) + { + return [.. PlayerManager.GetTickPlayers() + .Where(p => p != null && p.IsValid) + .Select(PlayerManager.GetPlayerEvent) + .Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None) + .Cast()]; + } + + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#e0c341", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common, int moneyPerShot = 50) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) + { + public int MoneyPerShot { get; set; } = moneyPerShot; + } + } +} diff --git a/jRandomSkills - SRC Files/src/player/skills/ExplodingBarrel.cs b/jRandomSkills - SRC Files/src/player/skills/ExplodingBarrel.cs new file mode 100644 index 0000000..0c7df63 --- /dev/null +++ b/jRandomSkills - SRC Files/src/player/skills/ExplodingBarrel.cs @@ -0,0 +1,276 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Cvars; +using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions; +using CounterStrikeSharp.API.Modules.Utils; +using src.utils; +using System.Collections.Concurrent; + +namespace src.player.skills +{ + public class ExplodingBarrel : ISkill + { + private const Skills skillName = Skills.ExplodingBarrel; + private static readonly QAngle angle = new(7, -3, 11); + private static readonly ConcurrentDictionary SkillPlayerInfo = []; + private static readonly ConcurrentDictionary consumedBarrels = []; + private static readonly ConcurrentDictionary nades = []; + private static readonly object setLock = new(); + + public static void LoadSkill() + { + SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + jRandomSkills.Instance.AddToManifest(SkillsInfo.GetValue(skillName, "propModel")); + } + + public static void NewRound() + { + ClearAllBarrels(); + lock (setLock) + { + SkillPlayerInfo.Clear(); + consumedBarrels.Clear(); + nades.Clear(); + } + } + + private static void ClearAllBarrels() + { + var entities = Utilities.FindAllEntitiesByDesignerName("prop_dynamic_override"); + foreach (var entity in entities) + if (entity != null && entity.IsValid && entity.Entity != null && (entity.Entity.Name?.StartsWith("Barrel_") ?? false)) + EntityManager.DestroyEntity(entity.Index); + } + + public static void OnTick() + { + if (SkillPlayerInfo.IsEmpty || Server.TickCount % 8 != 0) return; + + foreach (var player in PlayerManager.GetTickPlayers()) + { + if (player == null || !player.IsValid) continue; + if (!SkillPlayerInfo.TryGetValue(player.Index, out var skillInfo)) continue; + + if (PlayerManager.GetPlayerByIndex(player.Index)?.Skill == skillName) + UpdateHUD(player, skillInfo); + } + } + + public static void EnableSkill(CCSPlayerController player) + { + SkillPlayerInfo.TryAdd(player.Index, new PlayerSkillInfo + { + SteamID = player.Index, + CanUse = true, + Cooldown = DateTime.MinValue, + }); + } + + public static void DisableSkill(CCSPlayerController player) + { + if (player == null) return; + SkillPlayerInfo.TryRemove(player.Index, out _); + EntityManager.DestroyPlayerEntities(player.Index); + SkillUtils.ResetPrintHTML(player); + } + + private static void UpdateHUD(CCSPlayerController player, PlayerSkillInfo skillInfo) + { + float cooldown = 0; + if (skillInfo != null) + { + float time = (int)Math.Ceiling((skillInfo.Cooldown.AddSeconds(SkillsInfo.GetValue(skillName, "cooldown")) - DateTime.Now).TotalSeconds); + cooldown = Math.Max(time, 0); + + if (cooldown == 0 && skillInfo?.CanUse == false) + skillInfo.CanUse = true; + } + + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); + if (playerInfo == null) return; + + if (cooldown == 0) + playerInfo.PrintHTML = null; + else + playerInfo.PrintHTML = $"{player.GetTranslation("hud_info", $"{cooldown}")}"; + } + + public static void UseSkill(CCSPlayerController player) + { + if (player == null || !player.IsValid || player.LifeState != (byte)LifeState_t.LIFE_ALIVE) return; + + var playerPawn = player.PlayerPawn?.Value; + if (playerPawn?.CBodyComponent == null) return; + + if (SkillPlayerInfo.TryGetValue(player.Index, out var skillInfo) && skillInfo.CanUse) + { + skillInfo.CanUse = false; + skillInfo.Cooldown = DateTime.Now; + CreateBarrel(player); + } + } + + private static void CreateBarrel(CCSPlayerController player) + { + var playerPawn = player.PlayerPawn?.Value; + if (playerPawn == null || !playerPawn.IsValid || playerPawn.AbsOrigin == null || playerPawn.AbsRotation == null) + return; + + var barrel = EntityManager.CreateTrackedPropOverride(player.Index); + if (barrel == null || !barrel.IsValid) + return; + + consumedBarrels.TryRemove(barrel.Index, out _); + + float distance = 50; + Vector pos = playerPawn.AbsOrigin + SkillUtils.GetForwardVector(playerPawn.AbsRotation) * distance; + QAngle rotation = new(playerPawn.AbsRotation.X, playerPawn.AbsRotation.Y, playerPawn.AbsRotation.Z); + + barrel.Entity!.Name = barrel.Globalname = $"Barrel_{Server.TickCount}_{player.TeamNum}_{player.Index}"; + barrel.Collision.SolidType = SolidType_t.SOLID_VPHYSICS; + barrel.CBodyComponent!.SceneNode!.Owner!.Entity!.Flags = (uint)(barrel.CBodyComponent!.SceneNode!.Owner!.Entity!.Flags & ~(1 << 2)); + barrel.DispatchSpawn(); + + Server.NextFrame(() => + { + if (barrel == null || !barrel.IsValid) return; + barrel.SetModel(SkillsInfo.GetValue(skillName, "propModel")); + barrel.Teleport(pos, rotation, null); + }); + } + + public static void OnEntitySpawned(CEntityInstance entity) + { + if (entity.DesignerName != "hegrenade_projectile") return; + + var heProjectile = entity.As(); + if (heProjectile == null || !heProjectile.IsValid || heProjectile.AbsRotation == null) return; + + int lastTick = Server.TickCount; + + Server.NextFrame(() => + { + if (heProjectile == null || !heProjectile.IsValid) return; + if (!(NearlyEquals(angle.X, heProjectile.AbsRotation.X) && NearlyEquals(angle.Y, heProjectile.AbsRotation.Y) && NearlyEquals(angle.Z, heProjectile.AbsRotation.Z))) + return; + + heProjectile.TicksAtZeroVelocity = 100; + heProjectile.Damage = SkillsInfo.GetValue(skillName, "explosionDamage"); + heProjectile.DmgRadius = SkillsInfo.GetValue(skillName, "explosionRadius"); + heProjectile.DetonateTime = 0; + + if (nades.TryRemove(lastTick, out var source)) + heProjectile.Globalname = $"barrel_team_{source.Team}_{source.Owner}_{heProjectile.Index}"; + }); + } + + public static void OnTakeDamage(DynamicHook h) + { + CEntityInstance param = h.GetParam(0); + CTakeDamageInfo param2 = h.GetParam(1); + + if (param == null || param.Entity == null || param2 == null) return; + + if (HandleBarrelHit(param)) return; + HandleNadeDamage(param, param2); + } + + private static bool HandleBarrelHit(CEntityInstance param) + { + if (string.IsNullOrEmpty(param.Entity!.Name)) return false; + if (!param.Entity.Name.StartsWith("Barrel_")) return false; + + var barrel = param.As(); + if (barrel == null || !barrel.IsValid) return true; + if (!consumedBarrels.TryAdd(barrel.Index, 0)) return true; + + var nameParts = param.Entity.Name.Split('_'); + if (nameParts.Length < 4) return true; + if (!int.TryParse(nameParts[2], out int teamNum)) return true; + if (!uint.TryParse(nameParts[3], out uint ownerIndex)) return true; + + if (barrel.AbsOrigin == null) return true; + + float x = barrel.AbsOrigin.X; + float y = barrel.AbsOrigin.Y; + float z = barrel.AbsOrigin.Z + 32; + + EntityManager.DestroyEntity(barrel.Index, 0f); + + jRandomSkills.Instance.AddTickTimer(4, () => + { + SkillUtils.CreateHEGrenadeProjectile(new Vector(x, y, z), angle, new Vector(0, 0, -10), teamNum); + nades.AddOrUpdate(Server.TickCount, ((byte)teamNum, ownerIndex), (_, _) => ((byte)teamNum, ownerIndex)); + }); + + return true; + } + + private static void HandleNadeDamage(CEntityInstance param, CTakeDamageInfo param2) + { + var nade = param2.Attacker?.Value; + if (nade == null || !nade.IsValid) return; + if (nade.DesignerName != "hegrenade_projectile") return; + if (string.IsNullOrEmpty(nade.Globalname) || !nade.Globalname.StartsWith("barrel_team_")) return; + + var parts = nade.Globalname.Split('_'); + if (parts.Length < 4) return; + if (!int.TryParse(parts[2], out int nadeTeam)) return; + if (!uint.TryParse(parts[3], out uint ownerIndex)) return; + + CCSPlayerPawn victimPawn = new(param.Handle); + if (victimPawn.DesignerName != "player" || victimPawn.Controller?.Value == null) return; + + var victim = victimPawn.Controller.Value.As(); + if (victim == null || !victim.IsValid || victim.Index == ownerIndex) return; + + var owner = Utilities.GetPlayerFromIndex((int)ownerIndex); + if (owner != null && !owner.IsValid) owner = null; + + if (victimPawn.TeamNum == nadeTeam) + { + float reduction = SkillsInfo.GetValue(skillName, "dmgReductionForTeamates"); + param2.Damage *= 1f - Math.Clamp(reduction, 0f, 1f); + + if (IsFriendlyFireOff()) + { + int teamDamage = (int)param2.Damage; + param2.Damage = 0; + + if (teamDamage > 0) + SkillUtils.TakeHealth(victimPawn, teamDamage, owner, "planted_c4"); + + return; + } + } + + if (owner != null && param2.Damage >= victimPawn.Health) + SkillUtils.RegisterKillCredit(victim.Index, owner.Index, "planted_c4"); + } + + private static bool IsFriendlyFireOff() + { + bool ff = ConVar.Find("mp_friendlyfire")?.GetPrimitiveValue() ?? false; + bool tae = ConVar.Find("mp_teammates_are_enemies")?.GetPrimitiveValue() ?? false; + return !ff && !tae; + } + + private static bool NearlyEquals(float a, float b, float epsilon = 0.001f) => Math.Abs(a - b) < epsilon; + + public class PlayerSkillInfo + { + public ulong SteamID { get; set; } + public bool CanUse { get; set; } + public DateTime Cooldown { get; set; } + } + + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#c0392b", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = true, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = 2, Rarity rarity = Rarity.Common, float cooldown = 20f, float explosionRadius = 210f, int explosionDamage = 50, string propModel = "models/props/de_train/hr_t/barrel_a/barrel_a.vmdl", float dmgReductionForTeamates = 0.5f) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) + { + public float Cooldown { get; set; } = cooldown; + public float ExplosionRadius { get; set; } = explosionRadius; + public int ExplosionDamage { get; set; } = explosionDamage; + public string PropModel { get; set; } = propModel; + public float DmgReductionForTeamates { get; set; } = dmgReductionForTeamates; + } + } +} diff --git a/jRandomSkills - SRC Files/src/player/skills/FalconEye.cs b/jRandomSkills - SRC Files/src/player/skills/FalconEye.cs index 68d29f2..f08078b 100644 --- a/jRandomSkills - SRC Files/src/player/skills/FalconEye.cs +++ b/jRandomSkills - SRC Files/src/player/skills/FalconEye.cs @@ -11,11 +11,13 @@ namespace src.player.skills public class FalconEye : ISkill { private const Skills skillName = Skills.FalconEye; + private const string cameraViewModel = "models/sprays/spray_plane.vmdl"; private static readonly ConcurrentDictionary cameras = []; public static void LoadSkill() { SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + Instance.AddToManifest(cameraViewModel); } public static void NewRound() @@ -127,7 +129,7 @@ namespace src.player.skills if (camNode != null) camNode.Flags = (uint)(camNode.Flags & ~(1 << 2)); - camera.SetModel("models/sprays/spray_plane.vmdl"); + camera.SetModel(cameraViewModel); camera.Render = Color.FromArgb(0, 255, 255, 255); camera.Teleport(pos, new QAngle(90, 0, 0)); camera.DispatchSpawn(); diff --git a/jRandomSkills - SRC Files/src/player/skills/Ghost.cs b/jRandomSkills - SRC Files/src/player/skills/Ghost.cs index 7d5079a..46f7900 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Ghost.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Ghost.cs @@ -89,6 +89,8 @@ namespace src.player.skills if (info.TransmitEntities.Contains(entity.Index)) info.TransmitEntities.Remove(entity.Index); + SkillUtils.HideCarriedEntities(info, playerPawn); + // Hide the bomb as well, but only while this hidden player is the one holding it. if (bomb == null || bombOwnerIndex != playerController.Index) continue; diff --git a/jRandomSkills - SRC Files/src/player/skills/Giant.cs b/jRandomSkills - SRC Files/src/player/skills/Giant.cs new file mode 100644 index 0000000..f58ee6d --- /dev/null +++ b/jRandomSkills - SRC Files/src/player/skills/Giant.cs @@ -0,0 +1,194 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using src.utils; +using System.Collections.Concurrent; +using static src.jRandomSkills; + +namespace src.player.skills +{ + public class Giant : ISkill + { + private const Skills skillName = Skills.Giant; + private static readonly ConcurrentDictionary enlargedEnemies = []; + private static readonly object setLock = new(); + + public static void LoadSkill() + { + SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + } + + public static void NewRound() + { + lock (setLock) + { + foreach (var targetIndex in enlargedEnemies.Values.ToArray()) + ResetScale(targetIndex); + + enlargedEnemies.Clear(); + + foreach (var player in PlayerManager.GetTickPlayers()) + SkillUtils.CloseMenu(player); + } + } + + public static void PlayerDisconnect(uint playerIndex) + { + lock (setLock) + { + if (enlargedEnemies.TryRemove(playerIndex, out uint targetIndex)) + ResetScale(targetIndex); + + foreach (var kvp in enlargedEnemies) + if (kvp.Value == playerIndex) + enlargedEnemies.TryRemove(kvp.Key, out _); + } + } + + public static void EnableSkill(CCSPlayerController player) + { + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); + if (playerInfo == null) return; + playerInfo.SkillUsed = false; + + float minScale = SkillsInfo.GetValue(skillName, "minScale"); + float maxScale = SkillsInfo.GetValue(skillName, "maxScale"); + playerInfo.SkillChance = (float)Math.Round((float)Instance.Random.NextDouble() * (maxScale - minScale) + minScale, 2); + + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + + var enemies = GetSelectableEnemies(player); + if (enemies.Length > 0) + { + ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => (e.PlayerName, e.Index.ToString()))]; + SkillUtils.CreateMenu(player, menuItems); + } + else + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + } + + public static void OnTick() + { + if (Server.TickCount % 32 != 0) return; + + foreach (var player in PlayerManager.GetTickPlayers()) + { + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); + if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + + + var enemies = GetSelectableEnemies(player); + ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => (e.PlayerName, e.Index.ToString()))]; + SkillUtils.UpdateMenu(player, menuItems); + } + } + + public static void TypeSkill(CCSPlayerController player, string[] commands) + { + if (player == null || !player.IsValid || player.LifeState != (byte)LifeState_t.LIFE_ALIVE) return; + + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); + if (playerInfo?.Skill != skillName) return; + + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + + if (playerInfo.SkillUsed) + { + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); + return; + } + + if (commands.Length == 0 || !uint.TryParse(commands[0], out uint enemyIndex)) + { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); + if (enemy == null || !enemy.IsValid || enemy.Team == player.Team) + { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + + if (PlayerManager.GetPlayerByIndex(enemy.Index)?.Skill == Skills.Chicken) + { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + + float newSize = playerInfo.SkillChance ?? 1f; + + lock (setLock) + { + if (enlargedEnemies.TryRemove(player.Index, out uint previousTarget)) + ResetScale(previousTarget, notify: true); + + SkillUtils.ChangePlayerScale(enemy, newSize); + enlargedEnemies[player.Index] = enemy.Index; + } + + playerInfo.SkillUsed = true; + SkillUtils.CloseMenu(player); + + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("giant_player_info", enemy.PlayerName, newSize)); + + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent == null || !enemyEvent.IsValid) return; + + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("giant_enemy_info", newSize)); + } + + public static void DisableSkill(CCSPlayerController player) + { + if (player == null || !player.IsValid) return; + + lock (setLock) + { + if (enlargedEnemies.TryRemove(player.Index, out uint targetIndex)) + ResetScale(targetIndex, notify: true); + + SkillUtils.CloseMenu(player); + } + } + + private static void ResetScale(uint targetIndex, bool notify = false) + { + var target = Utilities.GetPlayerFromIndex((int)targetIndex); + if (target == null || !target.IsValid) return; + + var pawn = target.PlayerPawn?.Value; + if (pawn == null || !pawn.IsValid || pawn.CBodyComponent == null) return; + + SkillUtils.ChangePlayerScale(target, 1); + Utilities.SetStateChanged(pawn, "CBaseEntity", "m_CBodyComponent"); + + if (!notify) return; + + var targetEvent = PlayerManager.GetPlayerFromEvent(target); + if (targetEvent != null && targetEvent.IsValid && targetEvent.PawnIsAlive && !SkillUtils.IsFreezeTime()) + targetEvent.PrintToChat($" {ChatColors.Green}" + targetEvent.GetTranslation("giant_disable_info")); + } + + private static CCSPlayerController[] GetSelectableEnemies(CCSPlayerController player) + { + return [.. PlayerManager.GetTickPlayers() + .Where(p => p != null && p.IsValid) + .Select(PlayerManager.GetPlayerEvent) + .Where(p => p != null && p.IsValid && p.Team != player.Team && !p.IsHLTV + && p.Team != CsTeam.Spectator && p.Team != CsTeam.None + && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 + && PlayerManager.GetPlayerByIndex(p.Index)?.Skill != Skills.Chicken) + .Cast()]; + } + + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#8ad3ff", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common, float minScale = 1.1f, float maxScale = 1.4f) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) + { + public float MinScale { get; set; } = minScale; + public float MaxScale { get; set; } = maxScale; + } + } +} diff --git a/jRandomSkills - SRC Files/src/player/skills/Glaz.cs b/jRandomSkills - SRC Files/src/player/skills/Glaz.cs index 37bb474..45ebcb8 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Glaz.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Glaz.cs @@ -39,6 +39,8 @@ namespace src.player.skills public static void CheckTransmit([CastFrom(typeof(nint))] CCheckTransmitInfoList infoList) { + if (smokes.IsEmpty || playersWithSkill.IsEmpty) return; + foreach (var (info, player) in infoList) { if (player == null || !player.IsValid) continue; diff --git a/jRandomSkills - SRC Files/src/player/skills/Glitch.cs b/jRandomSkills - SRC Files/src/player/skills/Glitch.cs index 6cf7b34..becc4e4 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Glitch.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Glitch.cs @@ -51,10 +51,11 @@ namespace src.player.skills if (Server.TickCount % 32 != 0) return; foreach (var player in PlayerManager.GetTickPlayers()) { - if (!SkillUtils.HasMenu(player)) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + var enemies = PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = new(enemies.Select(e => (e.PlayerName, e.Index.ToString()))); @@ -169,4 +170,4 @@ namespace src.player.skills { } } -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/player/skills/GodMode.cs b/jRandomSkills - SRC Files/src/player/skills/GodMode.cs index 1206331..4087bbd 100644 --- a/jRandomSkills - SRC Files/src/player/skills/GodMode.cs +++ b/jRandomSkills - SRC Files/src/player/skills/GodMode.cs @@ -3,6 +3,7 @@ using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Modules.Utils; using src.utils; using System.Collections.Concurrent; +using System.Drawing; using static src.jRandomSkills; namespace src.player.skills @@ -53,12 +54,34 @@ namespace src.player.skills public static void DisableSkill(CCSPlayerController player) { - SkillPlayerInfo.TryRemove(player.Index, out _); + SkillPlayerInfo.TryRemove(player.Index, out var skillInfo); SkillUtils.ResetPrintHTML(player); var playerPawn = player.PlayerPawn.Value; if (playerPawn != null && playerPawn.IsValid) + { playerPawn.TakesDamage = true; + RestoreRender(playerPawn, skillInfo?.OriginalRender); + } + } + + private static void SetGodModeRender(CCSPlayerPawn pawn, PlayerSkillInfo skillInfo) + { + if (pawn == null || !pawn.IsValid) return; + + var current = pawn.Render; + skillInfo.OriginalRender ??= current; + + pawn.Render = Color.FromArgb(current.A, 255, 255, 0); + Utilities.SetStateChanged(pawn, "CBaseModelEntity", "m_clrRender"); + } + + private static void RestoreRender(CCSPlayerPawn? pawn, Color? originalRender) + { + if (pawn == null || !pawn.IsValid || originalRender == null) return; + + pawn.Render = originalRender.Value; + Utilities.SetStateChanged(pawn, "CBaseModelEntity", "m_clrRender"); } private static void UpdateHUD(CCSPlayerController player, PlayerSkillInfo skillInfo) @@ -100,11 +123,17 @@ namespace src.player.skills PlayerManager.GetPlayerFromEvent(player)?.PrintToChat($" {ChatColors.Green} {player.GetTranslation("godmode_on")}"); player.PlayerPawn.Value.TakesDamage = false; + SetGodModeRender(player.PlayerPawn.Value, skillInfo); Instance.AddTimer(SkillsInfo.GetValue(skillName, "duration"), () => { + Color? originalRender = null; if (SkillPlayerInfo.TryGetValue(playerIndex, out var skillInfo)) + { skillInfo.HaveGodMode = false; + originalRender = skillInfo.OriginalRender; + skillInfo.OriginalRender = null; + } var player = Utilities.GetPlayerFromIndex((int)playerIndex); if (player != null && player.IsValid) @@ -112,6 +141,7 @@ namespace src.player.skills if (player.PlayerPawn == null || player.PlayerPawn.Value == null || !player.PlayerPawn.Value.IsValid) return; player.PlayerPawn.Value.TakesDamage = true; + RestoreRender(player.PlayerPawn.Value, originalRender); PlayerManager.GetPlayerFromEvent(player)?.PrintToChat($" {ChatColors.Red} {player.GetTranslation("godmode_off")}"); if (player.PlayerPawn.Value.Health <= 0) @@ -128,6 +158,7 @@ namespace src.player.skills public bool CanUse { get; set; } public bool HaveGodMode { get; set; } public DateTime Cooldown { get; set; } + public Color? OriginalRender { get; set; } } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#e0d83a", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = true, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common, float cooldown = 30f, float duration = 2f) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) diff --git a/jRandomSkills - SRC Files/src/player/skills/Hermit.cs b/jRandomSkills - SRC Files/src/player/skills/Hermit.cs index eaba3d4..c8430de 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Hermit.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Hermit.cs @@ -50,11 +50,19 @@ namespace src.player.skills Utilities.SetStateChanged(weapon, "CBasePlayerWeapon", "m_iClip1"); Utilities.SetStateChanged(weapon, "CBasePlayerWeapon", "m_pReserveAmmo"); SkillUtils.AddHealth(pawn, SkillsInfo.GetValue(skillName, "healthToAdd")); + + float effectDuration = SkillsInfo.GetValue(skillName, "effectDuration"); + if (effectDuration > 0) + { + pawn.HealthShotBoostExpirationTime = Server.CurrentTime + effectDuration; + Utilities.SetStateChanged(pawn, "CCSPlayerPawn", "m_flHealthShotBoostExpirationTime"); + } } - public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#ded678", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common, int healthToAdd = 100) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#ded678", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common, int healthToAdd = 100, float effectDuration = 1.0f) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) { public int HealthToAdd { get; set; } = healthToAdd; + public float EffectDuration { get; set; } = effectDuration; } } } \ No newline at end of file diff --git a/jRandomSkills - SRC Files/src/player/skills/HotBomb.cs b/jRandomSkills - SRC Files/src/player/skills/HotBomb.cs index 28bd3fa..1ca4069 100644 --- a/jRandomSkills - SRC Files/src/player/skills/HotBomb.cs +++ b/jRandomSkills - SRC Files/src/player/skills/HotBomb.cs @@ -26,6 +26,8 @@ namespace src.player.skills if (players.IsEmpty || jRandomSkills.Instance.GameRules?.FreezePeriod == true) return; int damage = SkillsInfo.GetValue(skillName, "damage"); + var owner = GetSkillOwner(); + foreach (var player in PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid && p.Team == CsTeam.Terrorist && p.PlayerPawn?.Value?.Health > 0)) { var playerEvent = PlayerManager.GetPlayerFromEvent(player); @@ -37,11 +39,22 @@ namespace src.player.skills bool hasC4 = pawn.WeaponServices.MyWeapons.Any(w => w.Value?.DesignerName == "weapon_c4"); if (!hasC4) continue; - SkillUtils.TakeHealth(pawn, damage); + SkillUtils.TakeHealth(pawn, damage, owner, "planted_c4"); playerEvent?.ExecuteClientCommand($"play player/player_damagebody_0{jRandomSkills.Instance.Random.Next(4, 8)}"); } } + private static CCSPlayerController? GetSkillOwner() + { + foreach (var ownerIndex in players.Keys) + { + var owner = Utilities.GetPlayerFromIndex((int)ownerIndex); + if (owner != null && owner.IsValid) return owner; + } + + return null; + } + public static void WeaponPickup(EventItemPickup @event) { var weapon = @event.Item; @@ -49,7 +62,7 @@ namespace src.player.skills // Gate on the bomb being hot (red), not on `players`: the fresh round's C4 is // handed out before NewRound clears `players`, but a new C4 spawns white, so colour is race-free. - var bomb = Utilities.FindAllEntitiesByDesignerName("weapon_c4").FirstOrDefault(); + var bomb = PlayerManager.GetTickBomb(); if (bomb == null || !bomb.IsValid) return; if (bomb.Render.R != 255 || bomb.Render.G != 0 || bomb.Render.B != 0) return; @@ -63,11 +76,8 @@ namespace src.player.skills { Server.NextFrame(() => { - var bombEntities = Utilities.FindAllEntitiesByDesignerName("weapon_c4").ToList(); - if (bombEntities.Count == 0) return; - - var bomb = bombEntities.FirstOrDefault(); - if (bomb == null) return; + var bomb = PlayerManager.GetTickBomb(); + if (bomb == null || !bomb.IsValid) return; bomb.Render = color; Utilities.SetStateChanged(bomb, "CBaseModelEntity", "m_clrRender"); diff --git a/jRandomSkills - SRC Files/src/player/skills/Iana.cs b/jRandomSkills - SRC Files/src/player/skills/Iana.cs index 432f323..ae7d758 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Iana.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Iana.cs @@ -14,6 +14,7 @@ namespace src.player.skills { private const Skills skillName = Skills.Iana; private static readonly ConcurrentDictionary playersInfo = []; + private static readonly ConcurrentDictionary consumedClones = []; private static readonly object setLock = new(); public static void LoadSkill() @@ -27,7 +28,10 @@ namespace src.player.skills KillClone(playerSkill); lock (setLock) + { playersInfo.Clear(); + consumedClones.Clear(); + } } public static void WeaponPickup(EventItemPickup @event) @@ -68,7 +72,7 @@ namespace src.player.skills public static void EnableSkill(CCSPlayerController player) { - if (player.PlayerPawn.Value == null || player.PlayerPawn.Value.CameraServices == null) return; + if (player == null || !player.IsValid) return; playersInfo.TryAdd(player.Index, new PlayerSkill { PlayerIndex = player.Index, @@ -203,6 +207,8 @@ namespace src.player.skills playerSkill.NextUse = Server.TickCount + 64000; playerSkill.CloneProp = clone.Index; + consumedClones.TryRemove(clone.Index, out _); + jRandomSkills.Instance.AddTimer(SkillsInfo.GetValue(skillName, "Duration"), () => { if (playerSkill.CloneProp != null) @@ -283,6 +289,19 @@ namespace src.player.skills return calculatedDamage; } + private static CCSPlayerController? GetShooter(CTakeDamageInfo info) + { + var attackerEnt = info.Attacker?.Value; + if (attackerEnt == null || !attackerEnt.IsValid) return null; + + var attackerPawn = new CCSPlayerPawn(attackerEnt.Handle); + if (!attackerPawn.IsValid || attackerPawn.DesignerName != "player") return null; + if (attackerPawn.Controller?.Value == null) return null; + + var shooter = PlayerManager.GetPlayerEvent(attackerPawn.Controller.Value.As()); + return shooter != null && shooter.IsValid ? shooter : null; + } + public static void OnTakeDamage(DynamicHook h) { CEntityInstance param = h.GetParam(0); @@ -327,11 +346,14 @@ namespace src.player.skills dealDamage = CalculateDamage(player, weapon, damage, isHead); } + if (playerSkill.CloneProp != null && !consumedClones.TryAdd(playerSkill.CloneProp.Value, 0)) + return; + KillClone(playerSkill); var playerPawn = player.PlayerPawn.Value; if (playerPawn != null) - SkillUtils.TakeHealth(playerPawn, (int)dealDamage); + SkillUtils.TakeHealth(playerPawn, (int)dealDamage, GetShooter(param2), param2.Ability?.Value?.DesignerName); } } @@ -408,9 +430,8 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return false; - if (playersInfo.TryGetValue(player.Index, out var playerSkill)) - if (playerSkill.CloneProp == null || playerSkill.Weapons.Contains(econItem.ItemID)) - return false; + if (!playersInfo.TryGetValue(player.Index, out var playerSkill)) return false; + if (playerSkill.CloneProp == null || playerSkill.Weapons.Contains(econItem.ItemID)) return false; hook.SetReturn(AcquireResult.InvalidItem); return true; diff --git a/jRandomSkills - SRC Files/src/player/skills/Illiterate.cs b/jRandomSkills - SRC Files/src/player/skills/Illiterate.cs index 9704203..9e23579 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Illiterate.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Illiterate.cs @@ -13,6 +13,9 @@ namespace src.player.skills private static int lastChange = 0; private static readonly object offsetLock = new(); + private static int holdersTick = int.MinValue; + private static readonly HashSet holders = []; + public static void LoadSkill() { SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); @@ -49,17 +52,28 @@ namespace src.player.skills if (!isActive || player == null || !player.IsValid) return false; if (player.Team == CsTeam.Spectator) return false; - var playersWithSkill = jRandomSkills.Instance.SkillPlayer.Where(p => p.Skill == skillName).Select(p => p.PlayerIndex).ToHashSet(); - if (playersWithSkill.Count == 0) return false; + int tick = Server.TickCount; + if (tick != holdersTick) + { + holdersTick = tick; + holders.Clear(); + foreach (var p in jRandomSkills.Instance.SkillPlayer) + if (p.Skill == skillName) holders.Add(p.PlayerIndex); + } - return PlayerManager.GetTickPlayers().Any( - p => p != null && - p.IsValid && - p.Pawn?.Value != null && - p.PlayerPawn?.Value != null && - p.PlayerPawn.Value.Health > 0 && - p.Team != player.Team && - playersWithSkill.Contains(p.Index)); + if (holders.Count == 0) return false; + + foreach (var p in PlayerManager.GetTickPlayers()) + { + if (p == null || !p.IsValid) continue; + if (p.Team == player.Team || !holders.Contains(p.Index)) continue; + if (p.Pawn?.Value == null) continue; + + var pawn = p.PlayerPawn?.Value; + if (pawn != null && pawn.Health > 0) return true; + } + + return false; } public static string? GetRandomText(string? input) diff --git a/jRandomSkills - SRC Files/src/player/skills/Illusionist.cs b/jRandomSkills - SRC Files/src/player/skills/Illusionist.cs index ac68ad7..c541ce8 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Illusionist.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Illusionist.cs @@ -15,6 +15,7 @@ namespace src.player.skills private const Skills skillName = Skills.Illusionist; private static readonly ConcurrentDictionary SkillPlayerInfo = []; private static readonly ConcurrentDictionary ActiveTimers = []; + private static readonly ConcurrentDictionary consumedReplicas = []; private static readonly object setLock = new(); public static void LoadSkill() @@ -26,7 +27,10 @@ namespace src.player.skills { ClearAllReplicas(); lock (setLock) + { SkillPlayerInfo.Clear(); + consumedReplicas.Clear(); + } } private static void ClearAllReplicas() @@ -113,6 +117,8 @@ namespace src.player.skills var replica = EntityManager.CreateTrackedPropOverride(player.Index); if (replica == null || !replica.IsValid) return; + consumedReplicas.TryRemove(replica.Index, out _); + replica.Collision.SolidType = SolidType_t.SOLID_VPHYSICS; replica.CBodyComponent!.SceneNode!.Owner!.Entity!.Flags = (uint)(replica.CBodyComponent!.SceneNode!.Owner!.Entity!.Flags & ~(1 << 2)); @@ -189,8 +195,12 @@ namespace src.player.skills var replica = param.As(); if (replica == null || !replica.IsValid) return; + if (!consumedReplicas.TryAdd(replica.Index, 0)) return; + replica.EmitSound("GlassBottle.BulletImpact", volume: 1f); if (ActiveTimers.TryRemove((int)replica.Index, out var timer)) timer?.Kill(); + + var owner = GetReplicaOwner(replica.Index); EntityManager.DestroyEntity(replica.Index); CCSPlayerPawn attackerPawn = new(param2.Attacker.Value.Handle); @@ -198,7 +208,17 @@ namespace src.player.skills var attackerTeam = attackerPawn.TeamNum; var replicaTeam = replica.Globalname.EndsWith("CT") ? 3 : 2; - SkillUtils.TakeHealth(attackerPawn, attackerTeam != replicaTeam ? SkillsInfo.GetValue(skillName, "EnemyTeamDamage") : SkillsInfo.GetValue(skillName, "YourTeamDamage")); + + SkillUtils.TakeHealth(attackerPawn, attackerTeam != replicaTeam ? SkillsInfo.GetValue(skillName, "EnemyTeamDamage") : SkillsInfo.GetValue(skillName, "YourTeamDamage"), owner, "planted_c4"); + } + + private static CCSPlayerController? GetReplicaOwner(uint replicaIndex) + { + var ownerIndex = EntityManager.GetEntityOwner(replicaIndex); + if (ownerIndex == null) return null; + + var owner = Utilities.GetPlayerFromIndex((int)ownerIndex.Value); + return owner != null && owner.IsValid ? owner : null; } public class PlayerSkillInfo diff --git a/jRandomSkills - SRC Files/src/player/skills/Jammer.cs b/jRandomSkills - SRC Files/src/player/skills/Jammer.cs index 3471ab7..458f878 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Jammer.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Jammer.cs @@ -59,10 +59,11 @@ namespace src.player.skills if (Server.TickCount % 32 != 0) return; foreach (var player in PlayerManager.GetTickPlayers()) { - if (!SkillUtils.HasMenu(player)) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + var enemies = PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = new(enemies.Select(e => (e.PlayerName, e.Index.ToString()))); @@ -111,7 +112,7 @@ namespace src.player.skills SetCrosshair(enemyEvent, false); playerInfo.SkillUsed = true; - playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("jammer_player_info", player.PlayerName)); + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("jammer_player_info", enemy.PlayerName)); enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("jammer_enemy_info")); } @@ -199,4 +200,4 @@ namespace src.player.skills { } } -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/player/skills/Jester.cs b/jRandomSkills - SRC Files/src/player/skills/Jester.cs index ed4aa7d..6851cae 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Jester.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Jester.cs @@ -120,28 +120,19 @@ namespace src.player.skills }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); } - public static void PlayerHurt(EventPlayerHurt @event) + public static bool PlayerHurtPre(EventPlayerHurt @event) { - var attacker = PlayerManager.GetPlayerEvent(@event.Attacker); var victim = PlayerManager.GetPlayerEvent(@event.Userid); + if (!Instance.IsPlayerValid(victim)) return false; - if (!Instance.IsPlayerValid(victim)) return; - - if (!Instance.IsPlayerValid(attacker)) + if (!IsActiveJester(victim!.Index)) { - if (IsActiveJester(victim!.Index)) - { - SkillUtils.RestoreHealth(victim); - RestoreArmor(victim, @event.DmgArmor); - } - return; + var attacker = PlayerManager.GetPlayerEvent(@event.Attacker); + if (!Instance.IsPlayerValid(attacker) || !IsActiveJester(attacker!.Index)) return false; } - if (IsActiveJester(victim!.Index) || IsActiveJester(attacker!.Index)) - { - SkillUtils.RestoreHealth(victim); - RestoreArmor(victim, @event.DmgArmor); - } + SkillUtils.RestoreHealth(victim); + return true; } public static bool IsActiveJester(uint playerIndex) @@ -150,17 +141,6 @@ namespace src.player.skills return PlayerManager.GetPlayerByIndex(playerIndex)?.Skill == skillName; } - private static void RestoreArmor(CCSPlayerController? victim, int dmgArmor) - { - if (victim == null || !victim.IsValid || dmgArmor <= 0) return; - - var pawn = victim.PlayerPawn?.Value; - if (pawn == null || !pawn.IsValid) return; - - pawn.ArmorValue += dmgArmor; - Utilities.SetStateChanged(pawn, "CCSPlayerPawn", "m_ArmorValue"); - } - public static void EnableSkill(CCSPlayerController player) { var minTime = SkillsInfo.GetValue(skillName, "minTime"); diff --git a/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs b/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs index 7dd38ed..c485922 100644 --- a/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs +++ b/jRandomSkills - SRC Files/src/player/skills/JumpBan.cs @@ -64,10 +64,11 @@ namespace src.player.skills if (Server.TickCount % 32 != 0) return; foreach (var player in PlayerManager.GetTickPlayers()) { - if (!SkillUtils.HasMenu(player)) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + var enemies = PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => (e.PlayerName, e.Index.ToString()))]; @@ -166,4 +167,4 @@ namespace src.player.skills { } } -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/player/skills/JumpCurse.cs b/jRandomSkills - SRC Files/src/player/skills/JumpCurse.cs new file mode 100644 index 0000000..e3de2ca --- /dev/null +++ b/jRandomSkills - SRC Files/src/player/skills/JumpCurse.cs @@ -0,0 +1,186 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using src.utils; +using System.Collections.Concurrent; + +namespace src.player.skills +{ + public class JumpCurse : ISkill + { + private const Skills skillName = Skills.JumpCurse; + private static readonly ConcurrentDictionary cursedPlayers = []; + private static readonly ConcurrentDictionary playersToTarget = []; + + public static void LoadSkill() + { + SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + } + + public static void PlayerDisconnect(uint playerIndex) + { + cursedPlayers.TryRemove(playerIndex, out _); + playersToTarget.TryRemove(playerIndex, out _); + + foreach (var kvp in playersToTarget) + if (kvp.Value == playerIndex) + playersToTarget.TryRemove(kvp.Key, out _); + } + + public static void NewRound() + { + cursedPlayers.Clear(); + playersToTarget.Clear(); + + foreach (var player in PlayerManager.GetTickPlayers()) + SkillUtils.CloseMenu(player); + } + + public static void PlayerJump(EventPlayerJump @event) + { + if (cursedPlayers.IsEmpty) return; + + var jumper = PlayerManager.GetPlayerEvent(@event.Userid); + if (jumper == null || !jumper.IsValid) return; + if (jumper.Team != CsTeam.Terrorist && jumper.Team != CsTeam.CounterTerrorist) return; + + var jumperPawn = jumper.PlayerPawn?.Value; + if (jumperPawn == null || !jumperPawn.IsValid) return; + if (jumperPawn.LifeState != (byte)LifeState_t.LIFE_ALIVE || jumperPawn.Health <= 0) return; + + float jumpVelocity = SkillsInfo.GetValue(skillName, "jumpVelocity"); + + foreach (var cursedIndex in cursedPlayers.Keys) + { + if (cursedIndex == jumper.Index) continue; + + var cursed = PlayerManager.GetPlayerEvent(Utilities.GetPlayerFromIndex((int)cursedIndex)); + if (cursed == null || !cursed.IsValid) continue; + if (cursed.Index == jumper.Index || cursed.Team != jumper.Team) continue; + + var pawn = cursed.PlayerPawn?.Value; + if (pawn == null || !pawn.IsValid) continue; + if (pawn.LifeState != (byte)LifeState_t.LIFE_ALIVE || pawn.Health <= 0) continue; + if ((pawn.Flags & (uint)PlayerFlags.FL_ONGROUND) == 0) continue; + + pawn.AbsVelocity.Z = jumpVelocity; + } + } + + public static void OnTick() + { + if (Server.TickCount % 32 != 0) return; + foreach (var player in PlayerManager.GetTickPlayers()) + { + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); + if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + + var enemies = GetSelectableEnemies(player); + + ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => (e.PlayerName, e.Index.ToString()))]; + SkillUtils.UpdateMenu(player, menuItems); + } + } + + public static void TypeSkill(CCSPlayerController player, string[] commands) + { + if (player == null || !player.IsValid || player.LifeState != (byte)LifeState_t.LIFE_ALIVE) return; + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); + if (playerInfo?.Skill != skillName) return; + + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + + if (playerInfo.SkillUsed) + { + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); + return; + } + + string enemyId = commands[0]; + + if (!uint.TryParse(enemyId, out uint enemyIndex)) + { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); + + if (enemy == null || !enemy.IsValid || enemy.PlayerPawn.Value == null || !enemy.PlayerPawn.Value.IsValid) + { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + + cursedPlayers.TryAdd(enemy.Index, 0); + playersToTarget[player.Index] = enemy.Index; + playerInfo.SkillUsed = true; + + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + if (enemyEvent == null || !enemyEvent.IsValid) return; + + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("jumpcurse_player_info", enemy.PlayerName)); + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("jumpcurse_enemy_info")); + } + + public static void EnableSkill(CCSPlayerController player) + { + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); + if (playerInfo == null) return; + playerInfo.SkillUsed = false; + + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + + var enemies = GetSelectableEnemies(player); + if (enemies.Length > 0) + { + ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => (e.PlayerName, e.Index.ToString()))]; + SkillUtils.CreateMenu(player, menuItems); + } + else + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + } + + public static void DisableSkill(CCSPlayerController player) + { + if (player == null || !player.IsValid) return; + + if (playersToTarget.TryRemove(player.Index, out uint targetIndex)) + { + cursedPlayers.TryRemove(targetIndex, out _); + + var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); + if (target != null && target.IsValid && target.PawnIsAlive && !SkillUtils.IsFreezeTime()) + target.PrintToChat($" {ChatColors.Green}" + target.GetTranslation("jumpcurse_disable_info")); + } + + SkillUtils.CloseMenu(player); + } + + public static void PlayerDeath(EventPlayerDeath @event) + { + var player = @event.Userid; + if (player == null || !player.IsValid) return; + + cursedPlayers.TryRemove(player.Index, out _); + SkillUtils.CloseMenu(player); + } + + private static CCSPlayerController[] GetSelectableEnemies(CCSPlayerController player) + { + return [.. PlayerManager.GetTickPlayers() + .Where(p => p != null && p.IsValid) + .Select(PlayerManager.GetPlayerEvent) + .Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None) + .Cast()]; + } + + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#7ad1c4", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common, float jumpVelocity = 301f) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) + { + public float JumpVelocity { get; set; } = jumpVelocity; + } + } +} diff --git a/jRandomSkills - SRC Files/src/player/skills/KillerFlash.cs b/jRandomSkills - SRC Files/src/player/skills/KillerFlash.cs index c88d8d5..44cf795 100644 --- a/jRandomSkills - SRC Files/src/player/skills/KillerFlash.cs +++ b/jRandomSkills - SRC Files/src/player/skills/KillerFlash.cs @@ -30,7 +30,7 @@ namespace src.player.skills if (!SkillsInfo.GetValue(skillName, "friendlyFire") && player!.Team == attacker!.Team) return; if (attackerInfo?.Skill == skillName && playerInfo?.Skill != Skills.AntyFlash && player!.PlayerPawn.Value!.FlashDuration >= SkillsInfo.GetValue(skillName, "flashDuration")) - SkillUtils.TakeHealth(player.PlayerPawn.Value, 9999); + SkillUtils.TakeHealth(player.PlayerPawn.Value, 9999, attacker, "weapon_flashbang"); } public static void GrenadeThrown(EventGrenadeThrown @event) diff --git a/jRandomSkills - SRC Files/src/player/skills/Knockback.cs b/jRandomSkills - SRC Files/src/player/skills/Knockback.cs new file mode 100644 index 0000000..2e53c29 --- /dev/null +++ b/jRandomSkills - SRC Files/src/player/skills/Knockback.cs @@ -0,0 +1,55 @@ +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using src.utils; + +namespace src.player.skills +{ + public class Knockback : ISkill + { + private const Skills skillName = Skills.Knockback; + + public static void LoadSkill() + { + SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + } + + public static void WeaponFire(EventWeaponFire @event) + { + var player = PlayerManager.GetPlayerEvent(@event.Userid); + if (player == null || !player.IsValid) return; + + var playerInfo = PlayerManager.GetPlayerByIndex(player.Index); + if (playerInfo?.Skill != skillName) return; + + var pawn = player.PlayerPawn?.Value; + if (pawn == null || !pawn.IsValid || pawn.Health <= 0) return; + if ((pawn.Flags & (uint)PlayerFlags.FL_ONGROUND) != 0) return; + + float force = SkillsInfo.GetValue(skillName, "knockbackUnits"); + if (force <= 0) return; + + Vector push = SkillUtils.GetForwardVector(pawn.EyeAngles) * -force; + + pawn.AbsVelocity.X += push.X; + pawn.AbsVelocity.Y += push.Y; + pawn.AbsVelocity.Z += push.Z; + + float maxSpeed = SkillsInfo.GetValue(skillName, "maxSpeed"); + if (maxSpeed <= 0) return; + + float speed = pawn.AbsVelocity.Length(); + if (speed <= maxSpeed) return; + + float scale = maxSpeed / speed; + pawn.AbsVelocity.X *= scale; + pawn.AbsVelocity.Y *= scale; + pawn.AbsVelocity.Z *= scale; + } + + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#ff8c42", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common, float knockbackUnits = 120f, float maxSpeed = 1200f) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) + { + public float KnockbackUnits { get; set; } = knockbackUnits; + public float MaxSpeed { get; set; } = maxSpeed; + } + } +} diff --git a/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs b/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs index eed8587..d7a104e 100644 --- a/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs +++ b/jRandomSkills - SRC Files/src/player/skills/LifeSwap.cs @@ -26,10 +26,11 @@ namespace src.player.skills if (Server.TickCount % 32 != 0) return; foreach (var player in PlayerManager.GetTickPlayers()) { - if (!SkillUtils.HasMenu(player)) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + var enemies = PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = new(enemies.Select(e => ($"\u202A{e.PlayerName}\u202C : {e?.PlayerPawn?.Value?.Health ?? 0} HP", e.Index.ToString()))); @@ -117,4 +118,4 @@ namespace src.player.skills { } } -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/player/skills/LongKnife.cs b/jRandomSkills - SRC Files/src/player/skills/LongKnife.cs index c0ecbf8..32d128f 100644 --- a/jRandomSkills - SRC Files/src/player/skills/LongKnife.cs +++ b/jRandomSkills - SRC Files/src/player/skills/LongKnife.cs @@ -119,7 +119,7 @@ namespace src.player.skills if (!SkillsInfo.GetValue(skillName, "friendlyFire") && player.Team == target.Team) return; target.PlayerPawn.Value.EmitSound("Player.DamageBody.Onlooker"); - SkillUtils.TakeHealth(target.PlayerPawn.Value, heavyHit ? Instance.Random.Next(45, 55) : Instance.Random.Next(21, 34)); + SkillUtils.TakeHealth(target.PlayerPawn.Value, heavyHit ? Instance.Random.Next(45, 55) : Instance.Random.Next(21, 34), player, "weapon_knife"); } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#c9f8ff", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common, float maxDistance = 4096f, bool friendlyFire = true) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) diff --git a/jRandomSkills - SRC Files/src/player/skills/LongZeus.cs b/jRandomSkills - SRC Files/src/player/skills/LongZeus.cs index c3dbe8c..77b26d0 100644 --- a/jRandomSkills - SRC Files/src/player/skills/LongZeus.cs +++ b/jRandomSkills - SRC Files/src/player/skills/LongZeus.cs @@ -39,7 +39,7 @@ namespace src.player.skills if (target.Handle == player.Handle) return; if (!SkillsInfo.GetValue(skillName, "friendlyFire") && player.Team == target.Team) return; - SkillUtils.TakeHealth(target.PlayerPawn.Value, 9999); + SkillUtils.TakeHealth(target.PlayerPawn.Value, 9999, player, "weapon_taser"); } public static void EnableSkill(CCSPlayerController player) diff --git a/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs b/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs index 6cf331d..0f772cc 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Magnifier.cs @@ -48,10 +48,11 @@ namespace src.player.skills if (Server.TickCount % 32 != 0) return; foreach (var player in PlayerManager.GetTickPlayers()) { - if (!SkillUtils.HasMenu(player)) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + var enemies = PlayerManager.GetTickPlayers().Where(p => p.PawnIsAlive && p.Team != player.Team && p.IsValid && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = new(enemies.Select(e => (e.PlayerName, e.Index.ToString()))); @@ -176,4 +177,4 @@ namespace src.player.skills public uint CustomFOV { get; set; } = customFOV; } } -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs b/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs index ef811af..8583415 100644 --- a/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs +++ b/jRandomSkills - SRC Files/src/player/skills/MoneySwap.cs @@ -26,10 +26,11 @@ namespace src.player.skills if (Server.TickCount % 32 != 0) return; foreach (var player in PlayerManager.GetTickPlayers()) { - if (!SkillUtils.HasMenu(player)) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + var enemies = PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => ($"\u202A{e.PlayerName}\u202C : {(e.InGameMoneyServices == null ? 0 : e.InGameMoneyServices.Account + e.InGameMoneyServices.CashSpentThisRound)}$", e.Index.ToString()))]; @@ -119,4 +120,4 @@ namespace src.player.skills { } } -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/player/skills/Nightmare.cs b/jRandomSkills - SRC Files/src/player/skills/Nightmare.cs new file mode 100644 index 0000000..11c0b2d --- /dev/null +++ b/jRandomSkills - SRC Files/src/player/skills/Nightmare.cs @@ -0,0 +1,247 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Core.Attributes; +using CounterStrikeSharp.API.Modules.Utils; +using src.utils; +using System.Collections.Concurrent; + +namespace src.player.skills +{ + public class Nightmare : ISkill + { + private const Skills skillName = Skills.Nightmare; + private static readonly ConcurrentDictionary playersToTarget = []; + private static readonly ConcurrentDictionary targetVolumes = []; + private static readonly object setLock = new(); + + public static void LoadSkill() + { + SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + jRandomSkills.Instance.AddToManifest(SkillsInfo.GetValue(skillName, "postProcessing")); + } + + public static void PlayerDisconnect(uint playerIndex) + { + lock (setLock) + { + RemoveVolume(playerIndex); + playersToTarget.TryRemove(playerIndex, out _); + + foreach (var kvp in playersToTarget) + if (kvp.Value == playerIndex) + playersToTarget.TryRemove(kvp.Key, out _); + } + } + + public static void NewRound() + { + lock (setLock) + { + foreach (var targetIndex in targetVolumes.Keys.ToArray()) + RemoveVolume(targetIndex); + + foreach (var player in PlayerManager.GetTickPlayers()) + SkillUtils.CloseMenu(player); + + targetVolumes.Clear(); + playersToTarget.Clear(); + } + } + + public static void OnTick() + { + if (Server.TickCount % 32 != 0) return; + foreach (var player in PlayerManager.GetTickPlayers()) + { + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); + if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + + var enemies = GetSelectableEnemies(player); + ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => (e.PlayerName, e.Index.ToString()))]; + SkillUtils.UpdateMenu(player, menuItems); + } + } + + public static void EnableSkill(CCSPlayerController player) + { + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); + if (playerInfo == null) return; + playerInfo.SkillUsed = false; + + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + + var enemies = GetSelectableEnemies(player); + if (enemies.Length > 0) + { + ConcurrentBag<(string, string)> menuItems = [.. enemies.Select(e => (e.PlayerName, e.Index.ToString()))]; + SkillUtils.CreateMenu(player, menuItems); + } + else + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); + } + + public static void TypeSkill(CCSPlayerController player, string[] commands) + { + if (player == null || !player.IsValid || player.LifeState != (byte)LifeState_t.LIFE_ALIVE) return; + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); + if (playerInfo?.Skill != skillName) return; + + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + + if (playerInfo.SkillUsed) + { + playerEvent.PrintToChat($" {ChatColors.Red}{playerEvent.GetTranslation("areareaper_used_info")}"); + return; + } + + if (!uint.TryParse(commands[0], out uint enemyIndex)) + { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + + var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); + if (enemy == null || !enemy.IsValid) + { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + + lock (setLock) + { + if (!ApplyVolume(player.Index, enemy)) + { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("selectplayerskill_incorrect_enemy_index")); + return; + } + + playersToTarget[player.Index] = enemy.Index; + } + + playerInfo.SkillUsed = true; + + var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("nightmare_player_info", enemy.PlayerName)); + + if (enemyEvent != null && enemyEvent.IsValid) + enemyEvent.PrintToChat($" {ChatColors.Red}" + enemyEvent.GetTranslation("nightmare_enemy_info")); + } + + public static void DisableSkill(CCSPlayerController player) + { + if (player == null || !player.IsValid) return; + + lock (setLock) + { + if (playersToTarget.TryRemove(player.Index, out uint targetIndex)) + { + RemoveVolume(targetIndex); + + var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); + if (target != null && target.IsValid && target.PawnIsAlive && !SkillUtils.IsFreezeTime()) + target.PrintToChat($" {ChatColors.Green}" + target.GetTranslation("nightmare_disable_info")); + } + + SkillUtils.CloseMenu(player); + } + } + + public static void PlayerDeath(EventPlayerDeath @event) + { + var player = @event.Userid; + if (player == null || !player.IsValid) return; + + lock (setLock) + RemoveVolume(player.Index); + } + + public static void CheckTransmit([CastFrom(typeof(nint))] CCheckTransmitInfoList infoList) + { + if (targetVolumes.IsEmpty) return; + + foreach (var (info, viewer) in infoList) + { + if (viewer == null || !viewer.IsValid) continue; + + foreach (var kvp in targetVolumes) + { + if (kvp.Key == viewer.Index) continue; + if (info.TransmitEntities.Contains(kvp.Value)) + info.TransmitEntities.Remove(kvp.Value); + } + } + } + + private static bool ApplyVolume(uint ownerIndex, CCSPlayerController target) + { + RemoveVolume(target.Index); + + var targetPawn = target.PlayerPawn?.Value; + if (targetPawn == null || !targetPawn.IsValid || targetPawn.AbsOrigin == null) return false; + + if (EntityManager.OverBudget()) return false; + + var volume = Utilities.CreateEntityByName("post_processing_volume"); + if (volume == null || !volume.IsValid || volume.Entity == null) return false; + + var keys = new CEntityKeyValues(); + try + { + keys.SetString("targetname", $"Nightmare_{target.Index}"); + keys.SetString("postprocessing", SkillsInfo.GetValue(skillName, "postProcessing")); + keys.SetBool("master", true); + keys.SetBool("enableexposure", true); + keys.SetFloat("fadetime", SkillsInfo.GetValue(skillName, "fadeTime")); + keys.SetFloat("minexposure", SkillsInfo.GetValue(skillName, "minExposure")); + keys.SetFloat("maxexposure", SkillsInfo.GetValue(skillName, "maxExposure")); + keys.SetFloat("exposurespeedup", 1f); + keys.SetFloat("exposurespeeddown", 1f); + keys.SetBool("startdisabled", false); + keys.SetInt("spawnflags", 4097); + keys.SetVector("origin", targetPawn.AbsOrigin); + + volume.DispatchSpawn(keys); + } + finally + { + keys.Dispose(); + } + + if (!volume.IsValid) return false; + + volume.AcceptInput("SetParent", targetPawn, null, "!activator"); + + EntityManager.RegisterExisting(volume, ownerIndex, "post_processing_volume"); + targetVolumes[target.Index] = volume.Index; + return true; + } + + private static void RemoveVolume(uint targetIndex) + { + if (!targetVolumes.TryRemove(targetIndex, out uint volumeIndex)) return; + EntityManager.DestroyEntity(volumeIndex); + } + + private static CCSPlayerController[] GetSelectableEnemies(CCSPlayerController player) + { + return [.. PlayerManager.GetTickPlayers() + .Where(p => p != null && p.IsValid) + .Select(PlayerManager.GetPlayerEvent) + .Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null + && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV + && p.Team != CsTeam.Spectator && p.Team != CsTeam.None) + .Select(p => p!)]; + } + + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#5b2c6f", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Rare, string postProcessing = "lighting/postprocessing/effects/death_cam_phase1_low_violence.vpost", float fadeTime = .25f, float minExposure = .5f, float maxExposure = 2f) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) + { + public string PostProcessing { get; set; } = postProcessing; + public float FadeTime { get; set; } = fadeTime; + public float MinExposure { get; set; } = minExposure; + public float MaxExposure { get; set; } = maxExposure; + } + } +} diff --git a/jRandomSkills - SRC Files/src/player/skills/Ninja.cs b/jRandomSkills - SRC Files/src/player/skills/Ninja.cs index 1144946..604c32a 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Ninja.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Ninja.cs @@ -91,6 +91,8 @@ namespace src.player.skills if (info.TransmitEntities.Contains(entity.Index)) info.TransmitEntities.Remove(entity.Index); + SkillUtils.HideCarriedEntities(info, playerPawn); + if (bomb == null || bombOwnerIndex != playerController.Index) continue; if (info.TransmitEntities.Contains(bomb.Index)) diff --git a/jRandomSkills - SRC Files/src/player/skills/NoNades.cs b/jRandomSkills - SRC Files/src/player/skills/NoNades.cs index 68d0707..ead6b21 100644 --- a/jRandomSkills - SRC Files/src/player/skills/NoNades.cs +++ b/jRandomSkills - SRC Files/src/player/skills/NoNades.cs @@ -15,18 +15,19 @@ namespace src.player.skills SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); } - public static void PlayerHurt(EventPlayerHurt @event) + private static readonly HashSet blockedWeapons = + ["hegrenade", "inferno", "decoy", "flashbang", "smokegrenade", "molotov"]; + + public static bool PlayerHurtPre(EventPlayerHurt @event) { - var damage = @event.DmgHealth; var player = PlayerManager.GetPlayerEvent(@event.Userid); - var weapon = @event.Weapon; + if (!Instance.IsPlayerValid(player)) return false; - if (!Instance.IsPlayerValid(player)) return; - var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); - if (playerInfo?.Skill != skillName) return; + if (!blockedWeapons.Contains(@event.Weapon)) return false; + if (PlayerManager.GetPlayerByIndex(player!.Index)?.Skill != skillName) return false; - if (weapon == "hegrenade" || weapon == "inferno" || weapon == "decoy" || weapon == "flashbang" || weapon == "smokegrenade" || weapon == "molotov") - SkillUtils.RestoreHealth(player); + SkillUtils.RestoreHealth(player); + return true; } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#a38c1a", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) diff --git a/jRandomSkills - SRC Files/src/player/skills/NoRecoil.cs b/jRandomSkills - SRC Files/src/player/skills/NoRecoil.cs index 8c47cc5..90ddde7 100644 --- a/jRandomSkills - SRC Files/src/player/skills/NoRecoil.cs +++ b/jRandomSkills - SRC Files/src/player/skills/NoRecoil.cs @@ -1,5 +1,6 @@ using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Cvars; using CounterStrikeSharp.API.Modules.Utils; using src.utils; using System.Collections.Concurrent; @@ -14,9 +15,12 @@ namespace src.player.skills private static readonly ConcurrentDictionary holders = []; private static bool noSpreadActive; + private static bool defaultNoSpread; + public static void LoadSkill() { SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + defaultNoSpread = ConVar.Find("weapon_accuracy_nospread")?.GetPrimitiveValue() ?? false; } public static void NewRound() @@ -47,7 +51,8 @@ namespace src.player.skills if (noSpreadActive == enabled) return; noSpreadActive = enabled; - Server.ExecuteCommand($"weapon_accuracy_nospread {(enabled ? 1 : 0)}"); + bool value = enabled || defaultNoSpread; + Server.ExecuteCommand($"weapon_accuracy_nospread {(value ? 1 : 0)}"); } public static void OnTick() diff --git a/jRandomSkills - SRC Files/src/player/skills/OnlyHead.cs b/jRandomSkills - SRC Files/src/player/skills/OnlyHead.cs index 38fde05..5bc540d 100644 --- a/jRandomSkills - SRC Files/src/player/skills/OnlyHead.cs +++ b/jRandomSkills - SRC Files/src/player/skills/OnlyHead.cs @@ -15,20 +15,17 @@ namespace src.player.skills SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); } - public static void PlayerHurt(EventPlayerHurt @event) + public static bool PlayerHurtPre(EventPlayerHurt @event) { var attacker = PlayerManager.GetPlayerEvent(@event.Attacker); var victim = PlayerManager.GetPlayerEvent(@event.Userid); - int damage = @event.DmgHealth; - var hitgroup = (HitGroup_t)@event.Hitgroup; - if (!Instance.IsPlayerValid(attacker) || !Instance.IsPlayerValid(victim)) return; - var victimInfo = PlayerManager.GetPlayerByIndex(victim!.Index); - if (victimInfo == null || victimInfo.Skill != skillName) return; + if (!Instance.IsPlayerValid(attacker) || !Instance.IsPlayerValid(victim)) return false; + if ((HitGroup_t)@event.Hitgroup == HitGroup_t.HITGROUP_HEAD) return false; + if (PlayerManager.GetPlayerByIndex(victim!.Index)?.Skill != skillName) return false; - HitGroup_t[] disabledHitbox = [HitGroup_t.HITGROUP_LEFTARM, HitGroup_t.HITGROUP_RIGHTARM, HitGroup_t.HITGROUP_LEFTLEG, HitGroup_t.HITGROUP_RIGHTLEG]; - if (hitgroup != HitGroup_t.HITGROUP_HEAD) - SkillUtils.RestoreHealth(victim); + SkillUtils.RestoreHealth(victim); + return true; } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#3c47de", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) diff --git a/jRandomSkills - SRC Files/src/player/skills/Phoenix.cs b/jRandomSkills - SRC Files/src/player/skills/Phoenix.cs index fe7b8ad..b3a39b5 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Phoenix.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Phoenix.cs @@ -19,6 +19,22 @@ namespace src.player.skills SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color"), false); } + public static void NewRound() + { + phoenixTicks.Clear(); + } + + public static void DisableSkill(CCSPlayerController player) + { + if (player == null || !player.IsValid) return; + phoenixTicks.TryRemove(player.Index, out _); + } + + public static void PlayerDisconnect(uint playerIndex) + { + phoenixTicks.TryRemove(playerIndex, out _); + } + public static void OnTakeDamage(DynamicHook h) { var victimEntity = h.GetParam(0); diff --git a/jRandomSkills - SRC Files/src/player/skills/Poison.cs b/jRandomSkills - SRC Files/src/player/skills/Poison.cs index ad1f883..40ff6b6 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Poison.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Poison.cs @@ -11,6 +11,7 @@ namespace src.player.skills private const Skills skillName = Skills.Poison; private static readonly ConcurrentDictionary poisonedPlayers = []; private static readonly ConcurrentDictionary playersToTarget = []; + private static readonly ConcurrentDictionary targetToPlayer = []; private static readonly object setLock = new(); public static void LoadSkill() @@ -23,7 +24,10 @@ namespace src.player.skills lock (setLock) { poisonedPlayers.TryRemove(playerIndex, out _); - playersToTarget.TryRemove(playerIndex, out _); + targetToPlayer.TryRemove(playerIndex, out _); + + if (playersToTarget.TryRemove(playerIndex, out uint ownTarget)) + targetToPlayer.TryRemove(ownTarget, out _); foreach (var kvp in playersToTarget) if (kvp.Value == playerIndex) @@ -37,6 +41,7 @@ namespace src.player.skills { poisonedPlayers.Clear(); playersToTarget.Clear(); + targetToPlayer.Clear(); } } @@ -59,7 +64,8 @@ namespace src.player.skills if (Jester.IsActiveJester(playerIndex)) continue; if (pawn.Health <= SkillsInfo.GetValue(skillName, "MinHealth")) continue; - SkillUtils.TakeHealth(pawn, SkillsInfo.GetValue(skillName, "Damage")); + + SkillUtils.TakeHealth(pawn, SkillsInfo.GetValue(skillName, "Damage"), GetSkillOwner(playerIndex), "planted_c4"); if (Server.TickCount % cooldown2 == 0) PlayerManager.GetPlayerFromEvent(player)?.ExecuteClientCommand($"play player/player_damagebody_0{jRandomSkills.Instance.Random.Next(4, 8)}"); @@ -69,10 +75,11 @@ namespace src.player.skills if (Server.TickCount % 32 != 0) return; foreach (var player in PlayerManager.GetTickPlayers()) { - if (!SkillUtils.HasMenu(player)) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + var enemies = PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = new(enemies.Select(e => (e.PlayerName, e.Index.ToString()))); @@ -113,6 +120,7 @@ namespace src.player.skills poisonedPlayers.TryAdd(enemy.Index, 0); playersToTarget[player.Index] = enemy.Index; + targetToPlayer[enemy.Index] = player.Index; playerInfo.SkillUsed = true; var enemyEvent = PlayerManager.GetPlayerFromEvent(enemy); @@ -141,11 +149,22 @@ namespace src.player.skills playerEvent.PrintToChat($" {ChatColors.Red}{player.GetTranslation("selectplayerskill_incorrect_enemy_index")}"); } + private static CCSPlayerController? GetSkillOwner(uint targetIndex) + { + if (!targetToPlayer.TryGetValue(targetIndex, out uint ownerIndex)) return null; + + var owner = Utilities.GetPlayerFromIndex((int)ownerIndex); + return owner != null && owner.IsValid ? owner : null; + } + public static void DisableSkill(CCSPlayerController player) { + targetToPlayer.TryRemove(player.Index, out _); + if (playersToTarget.TryRemove(player.Index, out uint targetIndex)) { poisonedPlayers.TryRemove(targetIndex, out _); + targetToPlayer.TryRemove(targetIndex, out _); var target = PlayerManager.GetPlayerFromEvent(Utilities.GetPlayerFromIndex((int)targetIndex)); if (target != null && target.IsValid && target.PawnIsAlive && !SkillUtils.IsFreezeTime()) @@ -161,6 +180,8 @@ namespace src.player.skills if (player == null || !player.IsValid) return; poisonedPlayers.TryRemove(player.Index, out _); + targetToPlayer.TryRemove(player.Index, out _); + SkillUtils.CloseMenu(player); } @@ -171,4 +192,4 @@ namespace src.player.skills public int MinHealth { get; set; } = minHealth; } } -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs b/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs index e7cb2a6..6f6a74f 100644 --- a/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs +++ b/jRandomSkills - SRC Files/src/player/skills/PrimaryBan.cs @@ -70,10 +70,11 @@ namespace src.player.skills if (Server.TickCount % 32 != 0) return; foreach (var player in PlayerManager.GetTickPlayers()) { - if (!SkillUtils.HasMenu(player)) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + var enemies = PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid).Select(p => PlayerManager.GetPlayerEvent(p)).Where(p => p != null && p.IsValid && p.Team != player.Team && p.PlayerPawn?.Value != null && p.PlayerPawn.Value.IsValid && p.PlayerPawn.Value.Health > 0 && !p.IsHLTV && p.Team != CsTeam.Spectator && p.Team != CsTeam.None).ToArray(); ConcurrentBag<(string, string)> menuItems = new(enemies.Select(e => (e.PlayerName, e.Index.ToString()))); @@ -196,4 +197,4 @@ namespace src.player.skills { } } -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/player/skills/Prosthesis.cs b/jRandomSkills - SRC Files/src/player/skills/Prosthesis.cs index 5c1d0c5..b5652cf 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Prosthesis.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Prosthesis.cs @@ -14,19 +14,20 @@ namespace src.player.skills SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); } - public static void PlayerHurt(EventPlayerHurt @event) + private static readonly HitGroup_t[] disabledHitbox = + [HitGroup_t.HITGROUP_LEFTARM, HitGroup_t.HITGROUP_RIGHTARM, HitGroup_t.HITGROUP_LEFTLEG, HitGroup_t.HITGROUP_RIGHTLEG]; + + public static bool PlayerHurtPre(EventPlayerHurt @event) { var attacker = PlayerManager.GetPlayerEvent(@event.Attacker); var victim = PlayerManager.GetPlayerEvent(@event.Userid); - var hitgroup = (HitGroup_t)@event.Hitgroup; - if (!Instance.IsPlayerValid(attacker) || !Instance.IsPlayerValid(victim)) return; - var victimInfo = PlayerManager.GetPlayerByIndex(victim!.Index); - if (victimInfo == null || victimInfo.Skill != skillName) return; + if (!Instance.IsPlayerValid(attacker) || !Instance.IsPlayerValid(victim)) return false; + if (Array.IndexOf(disabledHitbox, (HitGroup_t)@event.Hitgroup) < 0) return false; + if (PlayerManager.GetPlayerByIndex(victim!.Index)?.Skill != skillName) return false; - HitGroup_t[] disabledHitbox = [HitGroup_t.HITGROUP_LEFTARM, HitGroup_t.HITGROUP_RIGHTARM, HitGroup_t.HITGROUP_LEFTLEG, HitGroup_t.HITGROUP_RIGHTLEG]; - if (disabledHitbox.Contains(hitgroup)) - SkillUtils.RestoreHealth(victim); + SkillUtils.RestoreHealth(victim); + return true; } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#9c9c9c", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) diff --git a/jRandomSkills - SRC Files/src/player/skills/ReZombie.cs b/jRandomSkills - SRC Files/src/player/skills/ReZombie.cs index 0b14a89..03bca00 100644 --- a/jRandomSkills - SRC Files/src/player/skills/ReZombie.cs +++ b/jRandomSkills - SRC Files/src/player/skills/ReZombie.cs @@ -120,10 +120,26 @@ namespace src.player.skills SetPlayerColor(victimPawn, false); SkillUtils.SetHealth(victimPawn, zombieHealth, zombieHealth); victim.ExecuteClientCommand("slot3"); + + ApplyTurnTint(victim); return true; } } + private static void ApplyTurnTint(CCSPlayerController victim) + { + int alpha = SkillsInfo.GetValue(skillName, "A"); + if (alpha <= 0) return; + + SkillUtils.ApplyScreenColor(victim, + r: SkillsInfo.GetValue(skillName, "R"), + g: SkillsInfo.GetValue(skillName, "G"), + b: SkillsInfo.GetValue(skillName, "B"), + a: alpha, + duration: 200, + holdTime: 600); + } + private static float GetHeadshotMultiplier(CTakeDamageInfo info) { var ability = info.Ability?.Value; @@ -188,9 +204,13 @@ namespace src.player.skills Utilities.SetStateChanged(pawn, "CBaseModelEntity", "m_clrRender"); } - public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#ff5C0A", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common, int zombieHealth = 500) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#ff5C0A", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Common, int zombieHealth = 500, int r = 255, int g = 0, int b = 0, int a = 60) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) { public int ZombieHealth { get; set; } = zombieHealth; + public int R { get; set; } = r; + public int G { get; set; } = g; + public int B { get; set; } = b; + public int A { get; set; } = a; } } } \ No newline at end of file diff --git a/jRandomSkills - SRC Files/src/player/skills/ReactiveArmor.cs b/jRandomSkills - SRC Files/src/player/skills/ReactiveArmor.cs index 4f0f282..f3ac463 100644 --- a/jRandomSkills - SRC Files/src/player/skills/ReactiveArmor.cs +++ b/jRandomSkills - SRC Files/src/player/skills/ReactiveArmor.cs @@ -34,26 +34,25 @@ namespace src.player.skills } } - public static void PlayerHurt(EventPlayerHurt @event) + public static bool PlayerHurtPre(EventPlayerHurt @event) { var victim = @event.Userid; - if (victim == null || !victim.IsValid) return; + if (victim == null || !victim.IsValid || !victim.PawnIsAlive) return false; var attacker = PlayerManager.GetPlayerEvent(@event.Attacker); + if (attacker == null || !attacker.IsValid) return false; + var victimEvent = PlayerManager.GetPlayerEvent(victim); + if (victimEvent == null || !victimEvent.IsValid) return false; - if (attacker == null || !attacker.IsValid) return; - if (victimEvent == null || !victimEvent.IsValid || !victim.PawnIsAlive) return; + if (PlayerManager.GetPlayerByIndex(victimEvent.Index)?.Skill != skillName) return false; - if (PlayerManager.GetPlayerByIndex(victimEvent!.Index)?.Skill != skillName) return; + if (!SkillPlayerInfo.TryGetValue(victimEvent.Index, out var skillInfo) || !skillInfo.CanUse) return false; - if (SkillPlayerInfo.TryGetValue(victimEvent!.Index, out var skillInfo)) - { - if (!skillInfo.CanUse) return; - skillInfo.CanUse = false; - skillInfo.Cooldown = DateTime.Now; - SkillUtils.RestoreHealth(victimEvent); - } + skillInfo.CanUse = false; + skillInfo.Cooldown = DateTime.Now; + SkillUtils.RestoreHealth(victimEvent); + return true; } public static void EnableSkill(CCSPlayerController player) diff --git a/jRandomSkills - SRC Files/src/player/skills/Replicator.cs b/jRandomSkills - SRC Files/src/player/skills/Replicator.cs index 2ed1b03..d0b6e9c 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Replicator.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Replicator.cs @@ -13,6 +13,7 @@ namespace src.player.skills { private const Skills skillName = Skills.Replicator; private static readonly ConcurrentDictionary SkillPlayerInfo = []; + private static readonly ConcurrentDictionary consumedReplicas = []; private static readonly object setLock = new(); public static void LoadSkill() @@ -24,7 +25,10 @@ namespace src.player.skills { ClearAllReplicas(); lock (setLock) + { SkillPlayerInfo.Clear(); + consumedReplicas.Clear(); + } } private static void ClearAllReplicas() @@ -112,6 +116,8 @@ namespace src.player.skills if (replica == null || !replica.IsValid) return; + consumedReplicas.TryRemove(replica.Index, out _); + replica.Flags = playerPawn.Flags; replica.Flags |= (uint)Flags_t.FL_DUCKING; replica.Collision.SolidType = SolidType_t.SOLID_VPHYSICS; @@ -143,7 +149,12 @@ namespace src.player.skills var replica = param.As(); if (replica == null || !replica.IsValid) return; + + if (!consumedReplicas.TryAdd(replica.Index, 0)) return; + replica.EmitSound("GlassBottle.BulletImpact", volume: 1f); + + var owner = GetReplicaOwner(replica.Index); EntityManager.DestroyEntity(replica.Index); CCSPlayerPawn attackerPawn = new(param2.Attacker.Value.Handle); @@ -152,7 +163,17 @@ namespace src.player.skills var attackerTeam = attackerPawn.TeamNum; var replicaTeam = replica.Globalname.EndsWith("CT") ? 3 : 2; - SkillUtils.TakeHealth(attackerPawn, attackerTeam != replicaTeam ? SkillsInfo.GetValue(skillName, "EnemyTeamDamage") : SkillsInfo.GetValue(skillName, "YourTeamDamage")); + + SkillUtils.TakeHealth(attackerPawn, attackerTeam != replicaTeam ? SkillsInfo.GetValue(skillName, "EnemyTeamDamage") : SkillsInfo.GetValue(skillName, "YourTeamDamage"), owner, "planted_c4"); + } + + private static CCSPlayerController? GetReplicaOwner(uint replicaIndex) + { + var ownerIndex = EntityManager.GetEntityOwner(replicaIndex); + if (ownerIndex == null) return null; + + var owner = Utilities.GetPlayerFromIndex((int)ownerIndex.Value); + return owner != null && owner.IsValid ? owner : null; } public class PlayerSkillInfo diff --git a/jRandomSkills - SRC Files/src/player/skills/Saper.cs b/jRandomSkills - SRC Files/src/player/skills/Saper.cs index 3aece77..f75135c 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Saper.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Saper.cs @@ -42,15 +42,11 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill == skillName) { - var bombEntities = Utilities.FindAllEntitiesByDesignerName("weapon_c4").ToList(); - if (bombEntities.Count != 0) + var bomb = PlayerManager.GetTickBomb(); + if (bomb != null && bomb.IsValid) { - var bomb = bombEntities.FirstOrDefault(); - if (bomb != null) - { - bomb.BombPlacedAnimation = false; - bomb.ArmedTime = 0.0f; - } + bomb.BombPlacedAnimation = false; + bomb.ArmedTime = 0.0f; } } } diff --git a/jRandomSkills - SRC Files/src/player/skills/Shade.cs b/jRandomSkills - SRC Files/src/player/skills/Shade.cs index 9f13ffc..36984f3 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Shade.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Shade.cs @@ -31,6 +31,8 @@ namespace src.player.skills if (!Instance.IsPlayerValid(attacker) || !Instance.IsPlayerValid(victim)) return; + if (attacker!.Index == victim!.Index) return; + var victimInfo = PlayerManager.GetPlayerByIndex(victim!.Index); var attackerInfo = PlayerManager.GetPlayerByIndex(attacker!.Index); diff --git a/jRandomSkills - SRC Files/src/player/skills/Spectator.cs b/jRandomSkills - SRC Files/src/player/skills/Spectator.cs index 273b776..046b2e7 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Spectator.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Spectator.cs @@ -11,11 +11,13 @@ namespace src.player.skills public class Spectator : ISkill { private const Skills skillName = Skills.Spectator; + private const string cameraViewModel = "models/sprays/spray_plane.vmdl"; private static readonly ConcurrentDictionary cameras = []; public static void LoadSkill() { SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + Instance.AddToManifest(cameraViewModel); } public static void NewRound() @@ -159,7 +161,7 @@ namespace src.player.skills if (camNode != null) camNode.Flags = (uint)(camNode.Flags & ~(1 << 2)); - camera.SetModel("models/sprays/spray_plane.vmdl"); + camera.SetModel(cameraViewModel); camera.Render = Color.FromArgb(1, 255, 255, 255); camera.Teleport(pos, angle); camera.DispatchSpawn(); diff --git a/jRandomSkills - SRC Files/src/player/skills/ThirdEye.cs b/jRandomSkills - SRC Files/src/player/skills/ThirdEye.cs index 2a24519..8f649af 100644 --- a/jRandomSkills - SRC Files/src/player/skills/ThirdEye.cs +++ b/jRandomSkills - SRC Files/src/player/skills/ThirdEye.cs @@ -10,12 +10,14 @@ namespace src.player.skills public class ThirdEye : ISkill { private const Skills skillName = Skills.ThirdEye; + private const string cameraViewModel = "models/sprays/spray_plane.vmdl"; private static readonly ConcurrentDictionary cameras = []; private static readonly object setLock = new(); public static void LoadSkill() { SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + jRandomSkills.Instance.AddToManifest(cameraViewModel); } public static void NewRound() @@ -114,7 +116,7 @@ namespace src.player.skills if (camNode != null) camNode.Flags = (uint)(camNode.Flags & ~(1 << 2)); - camera.SetModel("models/sprays/spray_plane.vmdl"); + camera.SetModel(cameraViewModel); camera.Render = Color.FromArgb(0, 255, 255, 255); camera.Teleport(pawn.AbsOrigin, pawn.EyeAngles); camera.DispatchSpawn(); diff --git a/jRandomSkills - SRC Files/src/player/skills/Thorns.cs b/jRandomSkills - SRC Files/src/player/skills/Thorns.cs index bcac47f..d9433b5 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Thorns.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Thorns.cs @@ -38,7 +38,7 @@ namespace src.player.skills int damage = (int)(@event.DmgHealth * SkillsInfo.GetValue(skillName, "healthTakenScale")); damage = Math.Min(damage, SkillsInfo.GetValue(skillName, "maxTakenDamagePerShot")); - SkillUtils.TakeHealth(attackerEvent.PlayerPawn.Value, damage); + SkillUtils.TakeHealth(attackerEvent.PlayerPawn.Value, damage, victimEvent, "planted_c4"); attackerEvent.EmitSound("Player.DamageBody.Onlooker"); } } diff --git a/jRandomSkills - SRC Files/src/player/skills/ThrowingKnife.cs b/jRandomSkills - SRC Files/src/player/skills/ThrowingKnife.cs index 5057631..59610a2 100644 --- a/jRandomSkills - SRC Files/src/player/skills/ThrowingKnife.cs +++ b/jRandomSkills - SRC Files/src/player/skills/ThrowingKnife.cs @@ -24,7 +24,21 @@ namespace src.player.skills SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); } + private static bool roundEnded; + public static void NewRound() + { + roundEnded = false; + KillAllKnives(); + } + + public static void RoundEnd() + { + roundEnded = true; + KillAllKnives(); + } + + private static void KillAllKnives() { foreach (var knifeInfo in knivesInfo.Values.ToArray()) DisableKnifeSkill(knifeInfo); @@ -83,14 +97,16 @@ namespace src.player.skills if (knifeInfo.Timer != null) knifeInfo.Timer?.Kill(); + uint knifeIndex = knife.Index; knifeInfo.Timer = Instance.AddTimer(3f, () => { - if (knife == null || !knife.IsValid) return; + var droppedKnife = Utilities.GetEntityFromIndex((int)knifeIndex); + if (droppedKnife == null || !droppedKnife.IsValid) return; var player = Utilities.GetPlayerFromIndex((int)knifeInfo.PlayerIndex); if (player != null && player.IsValid && CheckHasKnife(player)) return; - knife.AcceptInput("ClearParent"); + droppedKnife.AcceptInput("ClearParent"); }, TimerFlags.STOP_ON_MAPCHANGE); } @@ -109,7 +125,10 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return false; - if (knivesInfo.TryGetValue(player.Index, out KnifeInfo? knifeInfo) && knifeInfo != null && knifeInfo.KnifeId == econItem.ItemID) + if (!knivesInfo.TryGetValue(player.Index, out KnifeInfo? knifeInfo) || knifeInfo == null) + return false; + + if (knifeInfo.KnifeId == econItem.ItemID) { knifeInfo.IsDropped = false; if (knifeInfo.Timer != null) @@ -121,6 +140,8 @@ namespace src.player.skills return false; } + if (!knifeInfo.IsDropped) return false; + hook.SetReturn(AcquireResult.InvalidItem); return true; } @@ -162,12 +183,20 @@ namespace src.player.skills SkillUtils.SafeKillEntity(trigger); SkillUtils.SafeKillEntity(glow); SkillUtils.SafeKillEntity(relay); + + if (knifeInfo.IsDropped) + { + knifeInfo.IsDropped = false; + EntityManager.DestroyEntity(knifeInfo.KnifeIndex, 0.25f); + } } public static void UseSkill(CCSPlayerController player) { if (player == null || !player.IsValid) return; + if (roundEnded) return; + var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; @@ -183,7 +212,7 @@ namespace src.player.skills Instance.AddTickTimer(8, () => { - if (player == null || !player.IsValid) return; + if (player == null || !player.IsValid || roundEnded) return; var pawn = player.PlayerPawn?.Value; if (pawn == null || !pawn.IsValid || pawn.WeaponServices == null) return; @@ -194,7 +223,7 @@ namespace src.player.skills player.DropActiveWeapon(); Server.NextFrame(() => { - if (player == null || !player.IsValid) return; + if (player == null || !player.IsValid || roundEnded) return; if (weapon == null || !weapon.IsValid) return; ThrowKnife(player, weapon); }); @@ -331,7 +360,7 @@ namespace src.player.skills if (CheckHasKnife(thrower!)) return; - SkillUtils.TakeHealth(victimPawn, SkillsInfo.GetValue(skillName, "damage")); + SkillUtils.TakeHealth(victimPawn, SkillsInfo.GetValue(skillName, "damage"), thrower, "weapon_knife"); } } diff --git a/jRandomSkills - SRC Files/src/player/skills/ToxicSmoke.cs b/jRandomSkills - SRC Files/src/player/skills/ToxicSmoke.cs index 847ddae..4697a19 100644 --- a/jRandomSkills - SRC Files/src/player/skills/ToxicSmoke.cs +++ b/jRandomSkills - SRC Files/src/player/skills/ToxicSmoke.cs @@ -10,7 +10,7 @@ namespace src.player.skills public class ToxicSmoke : ISkill { private const Skills skillName = Skills.ToxicSmoke; - private static readonly ConcurrentDictionary smokes = []; + private static readonly ConcurrentDictionary smokes = []; private readonly static ConcurrentDictionary playersWithSkill = []; public static void LoadSkill() @@ -31,7 +31,7 @@ namespace src.player.skills var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo?.Skill != skillName) return; - smokes.TryAdd(new Vector(@event.X, @event.Y, @event.Z), 0); + smokes.TryAdd(new Vector(@event.X, @event.Y, @event.Z), player.Index); } public static void SmokegrenadeExpired(EventSmokegrenadeExpired @event) @@ -81,7 +81,11 @@ namespace src.player.skills float smokeRadius = SkillsInfo.GetValue(skillName, "smokeRadius"); int smokeDamage = SkillsInfo.GetValue(skillName, "smokeDamage"); - foreach (Vector smokePos in smokes.Keys) + foreach (var smoke in smokes) + { + var thrower = Utilities.GetPlayerFromIndex((int)smoke.Value); + if (thrower != null && !thrower.IsValid) thrower = null; + foreach (var player in PlayerManager.GetTickPlayers().Where(p => p.IsValid)) { var eventPlayer = PlayerManager.GetPlayerEvent(player); @@ -90,10 +94,11 @@ namespace src.player.skills var pawn = eventPlayer.PlayerPawn.Value; if (pawn == null || !pawn.IsValid || pawn.AbsOrigin == null) continue; - if (SkillUtils.GetDistance(smokePos, pawn.AbsOrigin) <= smokeRadius) - if (SkillUtils.TakeHealth(pawn, smokeDamage)) + if (SkillUtils.GetDistance(smoke.Key, pawn.AbsOrigin) <= smokeRadius) + if (SkillUtils.TakeHealth(pawn, smokeDamage, thrower, "smokegrenade")) player.EmitSound("Player.DamageBody.Onlooker"); } + } } public static void GrenadeThrown(EventGrenadeThrown @event) diff --git a/jRandomSkills - SRC Files/src/player/skills/Tripwire.cs b/jRandomSkills - SRC Files/src/player/skills/Tripwire.cs new file mode 100644 index 0000000..98ebac3 --- /dev/null +++ b/jRandomSkills - SRC Files/src/player/skills/Tripwire.cs @@ -0,0 +1,256 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Utils; +using RayTraceAPI; +using src.utils; +using System.Collections.Concurrent; +using System.Drawing; +using Vector = CounterStrikeSharp.API.Modules.Utils.Vector; + +namespace src.player.skills +{ + public class Tripwire : ISkill + { + private const Skills skillName = Skills.Tripwire; + + private static readonly ConcurrentDictionary wires = []; + private static readonly ConcurrentDictionary wireCount = []; + private static readonly ConcurrentDictionary<(uint Owner, uint Target), (int Slot, int ExpiryTick)> revealed = []; + private static readonly object setLock = new(); + + public static void LoadSkill() + { + SkillUtils.RegisterSkill(skillName, SkillsInfo.GetValue(skillName, "color")); + } + + public static void NewRound() + { + lock (setLock) + { + foreach (var wire in wires.Values) + DestroyWire(wire.BeamIndex); + + wires.Clear(); + wireCount.Clear(); + revealed.Clear(); + } + } + + public static void PlayerDisconnect(uint playerIndex) + { + RemovePlayerWires(playerIndex); + + foreach (var key in revealed.Keys) + if (key.Owner == playerIndex || key.Target == playerIndex) + revealed.TryRemove(key, out _); + } + + public static void DisableSkill(CCSPlayerController player) + { + if (player == null) return; + RemovePlayerWires(player.Index); + + foreach (var key in revealed.Keys) + if (key.Owner == player.Index) + revealed.TryRemove(key, out _); + } + + private static void RemovePlayerWires(uint ownerIndex) + { + foreach (var kvp in wires) + { + if (kvp.Value.OwnerIndex != ownerIndex) continue; + + DestroyWire(kvp.Key); + wires.TryRemove(kvp.Key, out _); + } + + wireCount.TryRemove(ownerIndex, out _); + } + + private static void DestroyWire(uint beamIndex) + { + var beam = Utilities.GetEntityFromIndex((int)beamIndex); + if (beam != null && beam.IsValid) + { + beam.Width = 0; + beam.EndWidth = 0; + beam.Render = Color.FromArgb(0, 0, 0, 0); + + Utilities.SetStateChanged(beam, "CBeam", "m_fWidth"); + Utilities.SetStateChanged(beam, "CBeam", "m_fEndWidth"); + Utilities.SetStateChanged(beam, "CBaseModelEntity", "m_clrRender"); + } + + EntityManager.DestroyEntity(beamIndex); + } + + public static void UseSkill(CCSPlayerController player) + { + if (player == null || !player.IsValid || player.LifeState != (byte)LifeState_t.LIFE_ALIVE) return; + + var playerEvent = PlayerManager.GetPlayerFromEvent(player); + if (playerEvent == null || !playerEvent.IsValid) return; + + int maxWires = SkillsInfo.GetValue(skillName, "maxWires"); + if (wireCount.TryGetValue(player.Index, out int placed) && placed >= maxWires) + { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("tripwire_limit_info", maxWires)); + return; + } + + if (!TryPlaceWire(player)) + { + playerEvent.PrintToChat($" {ChatColors.Red}" + playerEvent.GetTranslation("tripwire_no_wall_info")); + return; + } + + wireCount.AddOrUpdate(player.Index, 1, (_, v) => v + 1); + playerEvent.PrintToChat($" {ChatColors.Green}" + playerEvent.GetTranslation("tripwire_placed_info")); + } + + private static bool TryPlaceWire(CCSPlayerController player) + { + var pawn = player.PlayerPawn?.Value; + if (pawn == null || !pawn.IsValid || pawn.AbsOrigin == null) return false; + if (!RayTrace.IsAvailable) return false; + + float height = SkillsInfo.GetValue(skillName, "wireHeight"); + float maxDistance = SkillsInfo.GetValue(skillName, "maxWallDistance"); + + Vector origin = new(pawn.AbsOrigin.X, pawn.AbsOrigin.Y, pawn.AbsOrigin.Z + height); + float yaw = pawn.EyeAngles.Y; + + Vector rightDir = SkillUtils.GetForwardVector(new QAngle(0, yaw - 90, 0)); + Vector leftDir = SkillUtils.GetForwardVector(new QAngle(0, yaw + 90, 0)); + + ulong wallMask = (ulong)InteractionLayers.MASK_WORLD_ONLY; + + var rightHit = RayTrace.TraceShape(player, origin, origin + rightDir * maxDistance, wallMask, 0); + var leftHit = RayTrace.TraceShape(player, origin, origin + leftDir * maxDistance, wallMask, 0); + + if (rightHit == null || leftHit == null) return false; + if (!rightHit.Value.DidHit || !leftHit.Value.DidHit) return false; + if (rightHit.Value.HitPlayer(out _) || leftHit.Value.HitPlayer(out _)) return false; + + Vector start = new(rightHit.Value.EndPos.X, rightHit.Value.EndPos.Y, rightHit.Value.EndPos.Z); + Vector end = new(leftHit.Value.EndPos.X, leftHit.Value.EndPos.Y, leftHit.Value.EndPos.Z); + + if (EntityManager.OverBudget()) return false; + + var beam = EntityManager.CreateTrackedBeam(player.Index, start, end, Color.FromArgb(255, 255, 40, 40)); + if (beam == null || !beam.IsValid) return false; + + beam.Width = SkillsInfo.GetValue(skillName, "wireWidth"); + + wires[beam.Index] = new WireInfo + { + OwnerIndex = player.Index, + BeamIndex = beam.Index, + Start = start, + End = end, + }; + + return true; + } + + public static void OnTick() + { + if (revealed.IsEmpty && wires.IsEmpty) return; + + int tick = Server.TickCount; + + foreach (var kvp in revealed) + { + if (kvp.Value.ExpiryTick <= tick) + { + revealed.TryRemove(kvp.Key, out _); + continue; + } + + RevealOnRadar(kvp.Key.Target, kvp.Value.Slot); + } + + if (wires.IsEmpty || tick % 4 != 0) return; + + float radius = SkillsInfo.GetValue(skillName, "triggerRadius"); + int revealTicks = (int)(SkillsInfo.GetValue(skillName, "radarDuration") * 64); + float bodyHeight = SkillsInfo.GetValue(skillName, "wireHeight"); + + foreach (var wire in wires.Values) + { + var owner = Utilities.GetPlayerFromIndex((int)wire.OwnerIndex); + if (owner == null || !owner.IsValid) continue; + + foreach (var enemy in PlayerManager.GetTickPlayers()) + { + if (enemy == null || !enemy.IsValid || enemy.Team == owner.Team) continue; + + var enemyEvent = PlayerManager.GetPlayerEvent(enemy); + if (enemyEvent == null || !enemyEvent.IsValid) continue; + + var enemyPawn = enemyEvent.PlayerPawn?.Value; + if (enemyPawn == null || !enemyPawn.IsValid || enemyPawn.Health <= 0 || enemyPawn.AbsOrigin == null) continue; + + var key = (wire.OwnerIndex, enemyEvent.Index); + if (revealed.ContainsKey(key)) continue; + + Vector body = new(enemyPawn.AbsOrigin.X, enemyPawn.AbsOrigin.Y, enemyPawn.AbsOrigin.Z + bodyHeight); + if (DistanceToSegment(body, wire.Start, wire.End) > radius) continue; + + revealed[key] = (owner.Slot, tick + revealTicks); + + var ownerEvent = PlayerManager.GetPlayerFromEvent(owner); + if (ownerEvent != null && ownerEvent.IsValid) + { + ownerEvent.ExecuteClientCommand("play sounds/weapons/taser/taser_charge_ready"); + ownerEvent.PrintToChat($" {ChatColors.Red}" + ownerEvent.GetTranslation("tripwire_triggered_info", enemyEvent.PlayerName)); + } + } + } + } + + private static void RevealOnRadar(uint targetIndex, int ownerSlot) + { + var target = Utilities.GetPlayerFromIndex((int)targetIndex); + if (target == null || !target.IsValid) return; + + var targetPawn = target.PlayerPawn?.Value; + if (targetPawn == null || !targetPawn.IsValid || targetPawn.Health <= 0) return; + + targetPawn.EntitySpottedState.SpottedByMask[0] |= (1u << (ownerSlot % 32)); + } + + private static float DistanceToSegment(Vector point, Vector start, Vector end) + { + Vector line = new(end.X - start.X, end.Y - start.Y, end.Z - start.Z); + float lengthSquared = line.X * line.X + line.Y * line.Y + line.Z * line.Z; + if (lengthSquared <= .0001f) return (float)SkillUtils.GetDistance(point, start); + + Vector toPoint = new(point.X - start.X, point.Y - start.Y, point.Z - start.Z); + float t = (toPoint.X * line.X + toPoint.Y * line.Y + toPoint.Z * line.Z) / lengthSquared; + t = Math.Clamp(t, 0f, 1f); + + Vector closest = new(start.X + line.X * t, start.Y + line.Y * t, start.Z + line.Z * t); + return (float)SkillUtils.GetDistance(point, closest); + } + + private class WireInfo + { + public required uint OwnerIndex { get; set; } + public required uint BeamIndex { get; set; } + public required Vector Start { get; set; } + public required Vector End { get; set; } + } + + public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#ff3b3b", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = -1, Rarity rarity = Rarity.Rare, float radarDuration = 5f, float triggerRadius = 24f, float wireHeight = 30f, float wireWidth = 1.5f, float maxWallDistance = 400f, int maxWires = 2) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) + { + public float RadarDuration { get; set; } = radarDuration; + public float TriggerRadius { get; set; } = triggerRadius; + public float WireHeight { get; set; } = wireHeight; + public float WireWidth { get; set; } = wireWidth; + public float MaxWallDistance { get; set; } = maxWallDistance; + public int MaxWires { get; set; } = maxWires; + } + } +} diff --git a/jRandomSkills - SRC Files/src/player/skills/Wallhack.cs b/jRandomSkills - SRC Files/src/player/skills/Wallhack.cs index 95655f1..e931bcc 100644 --- a/jRandomSkills - SRC Files/src/player/skills/Wallhack.cs +++ b/jRandomSkills - SRC Files/src/player/skills/Wallhack.cs @@ -28,6 +28,8 @@ namespace src.player.skills temporaryBlockList.TryRemove(kvp.Key, out _); } + if (glows.IsEmpty && temporaryBlockList.IsEmpty) return; + // One pawn->info map per frame instead of a GetPlayers scan per client. var infoByPawnHandle = new Dictionary(); foreach (var p in PlayerManager.GetTickPlayers()) @@ -37,6 +39,27 @@ namespace src.player.skills infoByPawnHandle[h.Value] = PlayerManager.GetPlayerByIndex(p.Index); } + var glowStates = new List<(uint Relay, uint Glow, CsTeam Team, bool Showable, bool EntitiesValid)>(glows.Count); + foreach (var kvp in glows) + { + var glowInfo = kvp.Value; + var enemy = Utilities.GetPlayerFromIndex((int)kvp.Key); + + bool showable = false; + if (enemy != null && enemy.IsValid) + { + var enemyPawn = enemy.PlayerPawn?.Value; + bool pawnValid = enemyPawn != null && enemyPawn.IsValid; + showable = pawnValid && enemyPawn!.Health > 0 && enemyPawn!.Render.A != 102 && enemyPawn!.Render.A != 128; + } + + var relayEntity = Utilities.GetEntityFromIndex((int)glowInfo.RelayIndex); + var glowEntity = Utilities.GetEntityFromIndex((int)glowInfo.GlowIndex); + bool entitiesValid = relayEntity != null && relayEntity.IsValid && glowEntity != null && glowEntity.IsValid; + + glowStates.Add((glowInfo.RelayIndex, glowInfo.GlowIndex, glowInfo.Team, showable, entitiesValid)); + } + foreach (var (info, player) in infoList) { if (player == null || !player.IsValid) continue; @@ -47,40 +70,18 @@ namespace src.player.skills if (targetHandle != nint.Zero) infoByPawnHandle.TryGetValue(targetHandle, out observerInfo); - foreach (var kvp in glows) + bool seesGlows = playerInfo?.Skill == skillName || (observerInfo != null && observerInfo?.Skill == skillName); + + foreach (var glow in glowStates) { - var enemyIndex = kvp.Key; - var glowInfo = kvp.Value; - var enemy = Utilities.GetPlayerFromIndex((int)enemyIndex); + if (glow.Showable && seesGlows && glow.Team != player.Team) continue; + if (!glow.EntitiesValid) continue; - bool hasSkill = playerInfo?.Skill == skillName; - bool observerHasSkill = observerInfo != null && observerInfo?.Skill == skillName; - bool differentTeam = glowInfo.Team != player.Team; + if (info.TransmitEntities.Contains(glow.Relay)) + info.TransmitEntities.Remove(glow.Relay); - if (enemy != null && enemy.IsValid) - { - var enemyPawn = enemy.PlayerPawn?.Value; - bool pawnValid = enemyPawn != null && enemyPawn.IsValid; - bool alive = pawnValid && enemyPawn!.Health > 0; - bool notInvisible = pawnValid && enemyPawn!.Render.A != 102 && enemyPawn!.Render.A != 128; - - bool shouldShow = alive && notInvisible && differentTeam && (hasSkill || observerHasSkill); - - if (shouldShow) - continue; - } - - var glowEntity1 = Utilities.GetEntityFromIndex((int)glowInfo.RelayIndex); - if (glowEntity1 == null || !glowEntity1.IsValid) continue; - - var glowEntity2 = Utilities.GetEntityFromIndex((int)glowInfo.GlowIndex); - if (glowEntity2 == null || !glowEntity2.IsValid) continue; - - if (info.TransmitEntities.Contains(glowEntity1.Index)) - info.TransmitEntities.Remove(glowEntity1.Index); - - if (info.TransmitEntities.Contains(glowEntity2.Index)) - info.TransmitEntities.Remove(glowEntity2.Index); + if (info.TransmitEntities.Contains(glow.Glow)) + info.TransmitEntities.Remove(glow.Glow); } foreach (var kvp in temporaryBlockList) @@ -91,6 +92,8 @@ namespace src.player.skills public static void NewRound() { + buildInProgress = false; + foreach (var kvp in glows) { var relayIndex = kvp.Value.RelayIndex; @@ -136,7 +139,7 @@ namespace src.player.skills Event.EnableTransmit(); playersInAction.TryAdd(player.Index, 0); - if (glows.IsEmpty) + if (glows.IsEmpty && !buildInProgress) SetGlowEffectForAll(); SkillUtils.ForceFullUpdateToAll(); @@ -153,6 +156,9 @@ namespace src.player.skills } } + private const int GlowsPerFrame = 4; + private static bool buildInProgress; + private static void SetGlowEffectForAll() { var enemies = PlayerManager.GetTickPlayers().Where(p => @@ -163,60 +169,83 @@ namespace src.player.skills p.PlayerPawn.Value.Health > 0 && (p.Team == CsTeam.Terrorist || p.Team == CsTeam.CounterTerrorist)).ToList(); - foreach (var enemy in enemies) + buildInProgress = true; + SpawnGlowChunk(enemies, 0); + } + + private static void SpawnGlowChunk(List enemies, int start) + { + if (!buildInProgress) return; + + if (start >= enemies.Count) { - var enemyInfo = PlayerManager.GetPlayerByIndex(enemy.Index); - if (enemyInfo?.Skill == Skills.Ghost) - continue; - - var enemyPawn = enemy.PlayerPawn?.Value; - if (enemyPawn == null || !enemyPawn.IsValid) continue; - - var skeleton = enemyPawn.CBodyComponent?.SceneNode?.GetSkeletonInstance(); - var modelName = skeleton?.ModelState?.ModelName; - if (string.IsNullOrEmpty(modelName)) continue; - - var modelGlow = EntityManager.CreateTrackedDynamicProp(enemy.Index); - var modelRelay = EntityManager.CreateTrackedDynamicProp(enemy.Index); - - if (modelGlow == null || !modelGlow.IsValid || modelRelay == null || !modelRelay.IsValid) - continue; - - // Register before spawn so the glow is filtered from its first snapshot. - glows.TryAdd(enemy.Index, (modelRelay.Index, modelGlow.Index, enemy.Team)); - - var relayEntity = modelRelay.CBodyComponent?.SceneNode?.Owner?.Entity; - if (relayEntity != null) - relayEntity.Flags = (uint)(relayEntity.Flags & ~(1 << 2)); - - modelRelay.SetModel(modelName); - modelRelay.Spawnflags = 256u; - modelRelay.RenderMode = RenderMode_t.kRenderNone; - modelRelay.DispatchSpawn(); - - var glowEntity = modelGlow.CBodyComponent?.SceneNode?.Owner?.Entity; - if (glowEntity != null) - glowEntity.Flags = (uint)(glowEntity.Flags & ~(1 << 2)); - - modelGlow.SetModel(modelName); - modelGlow.Spawnflags = 256u; - modelGlow.Render = Color.FromArgb(1, 255, 255, 255); - modelGlow.DispatchSpawn(); - - try - { - modelGlow.Glow.GlowColorOverride = enemy.Team == CsTeam.Terrorist ? Color.FromArgb(255, 255, 165, 0) : Color.FromArgb(255, 173, 216, 230); - modelGlow.Glow.GlowRange = 5000; - modelGlow.Glow.GlowTeam = -1; - modelGlow.Glow.GlowType = 3; - modelGlow.Glow.GlowRangeMin = 100; - } - catch - { } - - modelRelay.AcceptInput("FollowEntity", enemyPawn, modelRelay, "!activator"); - modelGlow.AcceptInput("FollowEntity", modelRelay, modelGlow, "!activator"); + buildInProgress = false; + return; } + + int end = Math.Min(start + GlowsPerFrame, enemies.Count); + for (int i = start; i < end; i++) + { + var enemy = enemies[i]; + if (enemy == null || !enemy.IsValid) continue; + SpawnGlowFor(enemy); + } + + Server.NextFrame(() => SpawnGlowChunk(enemies, end)); + } + + private static void SpawnGlowFor(CCSPlayerController enemy) + { + var enemyInfo = PlayerManager.GetPlayerByIndex(enemy.Index); + if (enemyInfo?.Skill == Skills.Ghost) + return; + + var enemyPawn = enemy.PlayerPawn?.Value; + if (enemyPawn == null || !enemyPawn.IsValid) return; + + var skeleton = enemyPawn.CBodyComponent?.SceneNode?.GetSkeletonInstance(); + var modelName = skeleton?.ModelState?.ModelName; + if (string.IsNullOrEmpty(modelName)) return; + + var modelGlow = EntityManager.CreateTrackedDynamicProp(enemy.Index); + var modelRelay = EntityManager.CreateTrackedDynamicProp(enemy.Index); + + if (modelGlow == null || !modelGlow.IsValid || modelRelay == null || !modelRelay.IsValid) + return; + + glows.TryAdd(enemy.Index, (modelRelay.Index, modelGlow.Index, enemy.Team)); + + var relayEntity = modelRelay.CBodyComponent?.SceneNode?.Owner?.Entity; + if (relayEntity != null) + relayEntity.Flags = (uint)(relayEntity.Flags & ~(1 << 2)); + + modelRelay.SetModel(modelName); + modelRelay.Spawnflags = 256u; + modelRelay.RenderMode = RenderMode_t.kRenderNone; + modelRelay.DispatchSpawn(); + + var glowEntity = modelGlow.CBodyComponent?.SceneNode?.Owner?.Entity; + if (glowEntity != null) + glowEntity.Flags = (uint)(glowEntity.Flags & ~(1 << 2)); + + modelGlow.SetModel(modelName); + modelGlow.Spawnflags = 256u; + modelGlow.Render = Color.FromArgb(1, 255, 255, 255); + modelGlow.DispatchSpawn(); + + try + { + modelGlow.Glow.GlowColorOverride = enemy.Team == CsTeam.Terrorist ? Color.FromArgb(255, 255, 165, 0) : Color.FromArgb(255, 173, 216, 230); + modelGlow.Glow.GlowRange = 5000; + modelGlow.Glow.GlowTeam = -1; + modelGlow.Glow.GlowType = 3; + modelGlow.Glow.GlowRangeMin = 100; + } + catch + { } + + modelRelay.AcceptInput("FollowEntity", enemyPawn, modelRelay, "!activator"); + modelGlow.AcceptInput("FollowEntity", modelRelay, modelGlow, "!activator"); } public class SkillConfig(Skills skill = skillName, bool active = true, string color = "#5d00ff", CsTeam onlyTeam = CsTeam.None, bool disableOnFreezeTime = false, bool needsTeammates = false, string requiredPermission = "", float? hudDuration = null, float? descriptionHudDuration = null, int maxPerServer = 1, Rarity rarity = Rarity.Epic) : SkillsInfo.DefaultSkillInfo(skill, active, color, onlyTeam, disableOnFreezeTime, needsTeammates, requiredPermission, hudDuration, descriptionHudDuration, maxPerServer, rarity) diff --git a/jRandomSkills - SRC Files/src/player/skills/WeaponsSwap.cs b/jRandomSkills - SRC Files/src/player/skills/WeaponsSwap.cs index fadf1b5..3637777 100644 --- a/jRandomSkills - SRC Files/src/player/skills/WeaponsSwap.cs +++ b/jRandomSkills - SRC Files/src/player/skills/WeaponsSwap.cs @@ -137,10 +137,17 @@ namespace src.player.skills { if (player == null || !player.IsValid) return; if (enemy == null || !enemy.IsValid) return; + + var playerGear = SnapshotGear(player); + var enemyGear = SnapshotGear(enemy); + player.RemoveWeapons(); enemy.RemoveWeapons(); GiveWeapons(player, enemyWeapon, playerC4); GiveWeapons(enemy, playerWeapon, (enemyWeapon != null && enemyC4)); + + RestoreGear(player, playerGear); + RestoreGear(enemy, enemyGear); }); } else @@ -148,6 +155,49 @@ namespace src.player.skills } } + private static GearInfo? SnapshotGear(CCSPlayerController player) + { + var pawn = player.PlayerPawn?.Value; + if (pawn == null || !pawn.IsValid) return null; + + var itemServices = pawn.ItemServices?.As(); + + return new GearInfo + { + Armor = pawn.ArmorValue, + Health = pawn.Health, + HasHelmet = itemServices?.HasHelmet ?? false, + HasDefuser = itemServices?.HasDefuser ?? false, + }; + } + + private static void RestoreGear(CCSPlayerController player, GearInfo? gear) + { + if (gear == null) return; + + var pawn = player.PlayerPawn?.Value; + if (pawn == null || !pawn.IsValid) return; + + if (pawn.ArmorValue != gear.Armor) + { + pawn.ArmorValue = gear.Armor; + Utilities.SetStateChanged(pawn, "CCSPlayerPawn", "m_ArmorValue"); + } + + if (pawn.Health != gear.Health) + { + pawn.Health = gear.Health; + Utilities.SetStateChanged(pawn, "CBaseEntity", "m_iHealth"); + } + + var itemServices = pawn.ItemServices?.As(); + if (itemServices == null) return; + + itemServices.HasHelmet = gear.HasHelmet; + itemServices.HasDefuser = gear.HasDefuser; + Utilities.SetStateChanged(pawn, "CCSPlayerPawn", "m_pItemServices"); + } + private static (WeaponInfo[]?, bool) GetWeapons(CCSPlayerController player) { bool haveC4 = false; @@ -247,6 +297,14 @@ namespace src.player.skills public bool HaveWeapon { get; set; } } + public class GearInfo + { + public required int Armor { get; set; } + public required int Health { get; set; } + public required bool HasHelmet { get; set; } + public required bool HasDefuser { get; set; } + } + public class WeaponInfo { public required string Name { get; set; } diff --git a/jRandomSkills - SRC Files/src/player/skills/WildThrow.cs b/jRandomSkills - SRC Files/src/player/skills/WildThrow.cs index 3cadbe4..1ffd167 100644 --- a/jRandomSkills - SRC Files/src/player/skills/WildThrow.cs +++ b/jRandomSkills - SRC Files/src/player/skills/WildThrow.cs @@ -80,10 +80,11 @@ namespace src.player.skills if (Server.TickCount % 32 != 0) return; foreach (var player in PlayerManager.GetTickPlayers()) { - if (!SkillUtils.HasMenu(player)) continue; var playerInfo = PlayerManager.GetPlayerByIndex(player!.Index); if (playerInfo == null || playerInfo.Skill != skillName) continue; + if (!SkillUtils.HasMenu(player)) continue; + var enemies = PlayerManager.GetTickPlayers().Where(p => p != null && p.IsValid) @@ -200,4 +201,4 @@ namespace src.player.skills { } } -} \ No newline at end of file +} diff --git a/jRandomSkills - SRC Files/src/utils/EntityManager.cs b/jRandomSkills - SRC Files/src/utils/EntityManager.cs index 7a0cdb6..6f775e7 100644 --- a/jRandomSkills - SRC Files/src/utils/EntityManager.cs +++ b/jRandomSkills - SRC Files/src/utils/EntityManager.cs @@ -65,6 +65,12 @@ namespace src.utils public static int GetTrackedCount(uint playerIndex) => GetPlayerEntities(playerIndex).Count; + public static uint? GetEntityOwner(uint entityIndex) + { + if (!trackedEntities.TryGetValue(entityIndex, out var data)) return null; + return data.PlayerIndex == SystemOwnerIndex ? null : data.PlayerIndex; + } + public static (int totalTracked, int ownerCount) GetStatistics() { return (trackedEntities.Count, trackedEntities.Values.Select(e => e.PlayerIndex).Distinct().Count()); diff --git a/jRandomSkills - SRC Files/src/utils/Localization.cs b/jRandomSkills - SRC Files/src/utils/Localization.cs index 5047116..362e9c0 100644 --- a/jRandomSkills - SRC Files/src/utils/Localization.cs +++ b/jRandomSkills - SRC Files/src/utils/Localization.cs @@ -22,10 +22,33 @@ namespace src.utils private static string defaultLangCode = "en"; + private static readonly Dictionary skillKeys = BuildSkillKeys(""); + private static readonly Dictionary skillDescKeys = BuildSkillKeys("_desc"); + private static readonly Dictionary skillDesc2Keys = BuildSkillKeys("_desc2"); + + private static Dictionary BuildSkillKeys(string suffix) + { + var map = new Dictionary(); + foreach (Skills skill in Enum.GetValues()) + map[skill] = skill.ToString().ToLowerInvariant() + suffix; + return map; + } + + private static string SkillKey(Skills skill) => skillKeys.TryGetValue(skill, out var k) ? k : skill.ToString().ToLowerInvariant(); + private static string SkillDescKey(Skills skill) => skillDescKeys.TryGetValue(skill, out var k) ? k : skill.ToString().ToLowerInvariant() + "_desc"; + private static string SkillDesc2Key(Skills skill) => skillDesc2Keys.TryGetValue(skill, out var k) ? k : skill.ToString().ToLowerInvariant() + "_desc2"; + + private static readonly ConcurrentDictionary<(Skills Skill, string Lang, double Chance), string> _skillNameCache = []; + private static readonly ConcurrentDictionary<(Skills Skill, string Lang, double Chance), string> _skillDescCache = []; + + private const double NoChance = double.NegativeInfinity; + public static void Load() { _translations.Clear(); _playersLanguage.Clear(); + _skillNameCache.Clear(); + _skillDescCache.Clear(); SetLangCode(); LoadAllLanguages(); LoadPlayersLanguage(); @@ -77,9 +100,26 @@ namespace src.utils public static string GetSkillName(this CCSPlayerController player, Skills skill, float? chance = null) { string langCode = GetLangCode(player); + + bool cacheable = !Illiterate.CheckIlliterateSkill(player); + var cacheKey = (skill, langCode, chance == null ? NoChance : Math.Round((double)chance, 2)); + + if (cacheable && _skillNameCache.TryGetValue(cacheKey, out var cached)) + return cached; + + string result = BuildSkillName(player, skill, chance, langCode); + + if (cacheable) + _skillNameCache[cacheKey] = result; + + return result; + } + + private static string BuildSkillName(CCSPlayerController player, Skills skill, float? chance, string langCode) + { if (chance == null) { - var translation = GetTranslation(skill.ToString().ToLowerInvariant(), langCode); + var translation = GetTranslation(SkillKey(skill), langCode); if (!translation.Contains("{0}")) return translation; @@ -92,7 +132,7 @@ namespace src.utils } var value = Math.Round((double)(chance ?? 1), 2); - var skillNameText = GetTranslation(skill.ToString().ToLowerInvariant(), langCode, player, value); + var skillNameText = GetTranslation(SkillKey(skill), langCode, player, value); if (skillNameText.Contains('%')) skillNameText = skillNameText.Replace(value.ToString(), Math.Round(value * 100, 0).ToString()); return skillNameText; } @@ -100,9 +140,26 @@ namespace src.utils public static string GetSkillDescription(this CCSPlayerController player, Skills skill, float? chance = null) { string langCode = GetLangCode(player); + + bool cacheable = !Illiterate.CheckIlliterateSkill(player); + var cacheKey = (skill, langCode, chance == null ? NoChance : Math.Round((double)chance, 2)); + + if (cacheable && _skillDescCache.TryGetValue(cacheKey, out var cached)) + return cached; + + string result = BuildSkillDescription(player, skill, chance, langCode); + + if (cacheable) + _skillDescCache[cacheKey] = result; + + return result; + } + + private static string BuildSkillDescription(CCSPlayerController player, Skills skill, float? chance, string langCode) + { if (chance == null) { - var translation = GetTranslation($"{skill.ToString().ToLowerInvariant()}_desc", langCode); + var translation = GetTranslation(SkillDescKey(skill), langCode); if (!translation.Contains("{0}")) return translation; @@ -114,12 +171,12 @@ namespace src.utils return string.Join(' ', filtered); } - var skillName = $"{skill.ToString().ToLowerInvariant()}_desc2"; + var skillName = SkillDesc2Key(skill); var value = Math.Round((double)(chance ?? 1), 2); var desc2 = GetTranslation(skillName, langCode, player, value); var skilLDescription = desc2 == skillName - ? player.GetTranslation($"{skill.ToString().ToLowerInvariant()}_desc") + ? player.GetTranslation(SkillDescKey(skill)) : desc2.Contains('%') ? desc2.Replace(value.ToString(), Math.Round(value * 100, 0).ToString()) : desc2; return skilLDescription; } diff --git a/jRandomSkills - SRC Files/src/utils/PlayerManager.cs b/jRandomSkills - SRC Files/src/utils/PlayerManager.cs index ccd971c..97e661d 100644 --- a/jRandomSkills - SRC Files/src/utils/PlayerManager.cs +++ b/jRandomSkills - SRC Files/src/utils/PlayerManager.cs @@ -12,6 +12,8 @@ namespace src.utils private static int cachedTick = int.MinValue; private static List cachedControllers = []; + + private static int cachedBombTick = int.MinValue; private static CC4? cachedBomb; private static void EnsureTickCache() @@ -20,7 +22,6 @@ namespace src.utils if (tick == cachedTick) return; cachedTick = tick; cachedControllers = Utilities.GetPlayers(); - cachedBomb = Utilities.FindAllEntitiesByDesignerName("weapon_c4").FirstOrDefault(); } public static List GetTickPlayers() @@ -31,7 +32,13 @@ namespace src.utils public static CC4? GetTickBomb() { - EnsureTickCache(); + int tick = Server.TickCount; + if (tick != cachedBombTick) + { + cachedBombTick = tick; + cachedBomb = Utilities.FindAllEntitiesByDesignerName("weapon_c4").FirstOrDefault(); + } + return cachedBomb != null && cachedBomb.IsValid ? cachedBomb : null; } @@ -62,7 +69,7 @@ namespace src.utils if (!player.ControllingBot) return player; - return Utilities.GetPlayers().FirstOrDefault(p => + return GetTickPlayers().FirstOrDefault(p => p != null && p.IsValid && p.IsBot && @@ -78,7 +85,7 @@ namespace src.utils if (!player.IsBot) return player; - return Utilities.GetPlayers().FirstOrDefault(p => + return GetTickPlayers().FirstOrDefault(p => p != null && p.IsValid && !p.IsBot && @@ -91,43 +98,6 @@ namespace src.utils return playersByIndex.Values; } - public static IEnumerable GetAlivePlayers() - { - return playersByIndex.Values.Where(p => - { - try - { - var controller = Utilities.GetPlayerFromIndex((int)p.PlayerIndex); - return controller != null && controller.IsValid && controller.PawnIsAlive; - } - catch - { - return false; - } - }); - } - - public static IEnumerable GetPlayersByTeam(CsTeam team) - { - return playersByIndex.Values.Where(p => - { - try - { - var controller = Utilities.GetPlayerFromIndex((int)p.PlayerIndex); - return controller != null && controller.IsValid && controller.Team == team; - } - catch - { - return false; - } - }); - } - - public static int GetTeamPlayerCount(CsTeam team) - { - return GetPlayersByTeam(team).Count(); - } - public static int GetPlayerCountBySkill(Skills skills) { return playersByIndex.Values.Count(p => p.Skill == skills); diff --git a/jRandomSkills - SRC Files/src/utils/SkillUtils.cs b/jRandomSkills - SRC Files/src/utils/SkillUtils.cs index cfd55b1..25ac717 100644 --- a/jRandomSkills - SRC Files/src/utils/SkillUtils.cs +++ b/jRandomSkills - SRC Files/src/utils/SkillUtils.cs @@ -322,7 +322,31 @@ namespace src.utils return !ff && !tae; // same team + FF off -> engine will zero this damage } - public static bool TakeHealth(CCSPlayerPawn? pawn, int damage) + private static readonly ConcurrentDictionary pendingKillCredits = []; + + public static void RegisterKillCredit(uint victimIndex, uint attackerIndex, string? weapon = null) + { + pendingKillCredits[victimIndex] = (attackerIndex, weapon, Server.TickCount + 64); + } + + public static bool TryConsumeKillCredit(uint victimIndex, out uint attackerIndex, out string? weapon) + { + attackerIndex = 0; + weapon = null; + if (!pendingKillCredits.TryRemove(victimIndex, out var credit)) return false; + if (credit.ExpiryTick < Server.TickCount) return false; + + attackerIndex = credit.AttackerIndex; + weapon = credit.Weapon; + return true; + } + + public static void ClearKillCredits() + { + pendingKillCredits.Clear(); + } + + public static bool TakeHealth(CCSPlayerPawn? pawn, int damage, CCSPlayerController? damageAttacker = null, string? damageWeapon = null) { if (pawn == null || !pawn.IsValid || pawn.LifeState != (byte)LifeState_t.LIFE_ALIVE) return false; @@ -363,6 +387,10 @@ namespace src.utils if (pawn.Health <= 0) { + if (damageAttacker != null && damageAttacker.IsValid && victim != null && victim.IsValid + && damageAttacker.Index != victim.Index) + RegisterKillCredit(victim.Index, damageAttacker.Index, damageWeapon); + Server.NextFrame(() => { if (pawn == null || !pawn.IsValid) return; @@ -374,6 +402,29 @@ namespace src.utils return true; } + public static void HideCarriedEntities(CCheckTransmitInfo info, CCSPlayerPawn? pawn) + { + if (pawn == null || !pawn.IsValid) return; + + var weaponServices = pawn.WeaponServices; + if (weaponServices == null) return; + + var activeWeapon = weaponServices.ActiveWeapon?.Value; + if (activeWeapon != null && activeWeapon.IsValid && info.TransmitEntities.Contains(activeWeapon.Index)) + info.TransmitEntities.Remove(activeWeapon.Index); + + if (weaponServices.MyWeapons == null) return; + + foreach (var handle in weaponServices.MyWeapons) + { + var weapon = handle?.Value; + if (weapon == null || !weapon.IsValid) continue; + + if (info.TransmitEntities.Contains(weapon.Index)) + info.TransmitEntities.Remove(weapon.Index); + } + } + public static void ResetPrintHTML(CCSPlayerController? player) { if (player == null || !player.IsValid) return; diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll b/jRandomSkills - Server Files/plugins/jRandomSkills/WASDMenuAPI.dll index ba4d9ab1d7eb2626ab6042ef5e8194041d435aea..ed3424a86b9a01ee2ea4fb03c3d6043e40bf1ba4 100644 GIT binary patch delta 232 zcmZpuX{edd!6NrGbl=7v9s_}MU%FJ;|Moif?~DG=c`o_U<`o9pS=0?uEzHtPO;QaK zEs{-4%nc1w(+o^3%@R!v%uJFKlafplQ`1tDO((aR?qgY1@o@EI53>M)S=!TP$9OGq zm@o2ELr2?5X7UQN3I(WOf;?0Zq&gsbot=7mcj5v+&sCcp%(pQ68Ze|XSTL9|q%oK> zm;l)Z42eK~GLUV;V9sC&gsDI|10c^5s45Xi8vtn&po&C>Bp@^a(jXP7KoQf;j@J8` E0CS>94FCWD delta 232 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

1w%Aftnh;$gBaJeO+@u!NDMx^YkzThl!3y%8 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�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νqx|CRX6b)3uyaD4NP`3CsZ@J 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 IFycZ00B|I{jQ{`u literal 543744 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

7Sy>SE@+Z{2B2 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 z z1i9o9X__Dx8{xbVEY;i4m}8-NMcG9}cV?amwG~5=D4v}dO**_+v=fVvD4w0zqX|B# zw-YvtDLSm_{32Krd^TS|>_LiS=avWh78LoGfF(t+7lo0?r@d&a3Ho3!(lx>L-CmSU zq6iaX0(~9C*cC+3ze1wMN}xElVSj9^!XgTZDqmPUL85q$;t#UK9yyAFtH=w?I!EEA z39jglB1aSCQbasjO_ngyMTE;*BDkU#5#j47y7T6&kYXYmDS^TDy|}2qo-85H5@Om0 zA{d8~qQ^!e*lnD}Q6$QBDPfaL?I6!mqKhWTv$Pni2_lphuX8Qc zHyFx@X`84Wyn!q$YHTKgHC;}mYU-059$H?!Mv7w-QZ9y85Iwe#CG?@9Xp{mJ$BO%3 z53M9(w-R+r$qI25UfakLs#I0HK!Q0R=v!6n*-ko^^dR&baRrHb>n3g^QE%PE6Kx5- zbrUu_s2%jyO-$1Sy{#smYJz9AY9dD6hQW%1=--O$-9#`(--;glh@cNO#OnP-P$hQ} zl}ZHTP*WU2qRc$RNhHe5L%?^$AOd9OA>L|&=pJI)0nkx9PZ5hmmYyP66MUxVDPj(i z7g#H`MEyfVutS8QBOUSdHc%%tx zR!?{xCNEH>dLr@&5mc$3h&e_C@#>4T<3Mrj$&^x|4aD~+NC(lqMFaFqv$O}2_))!3sD=1D&InM(F9&vh)EgN=q<%;B=X`T60{Do_7Ph(LDoJZO%ps} z`iN#{$qPJTwh~U~h@hUWg;ORGjBRU?t_jArjc~p|IvCrwVwxtXbvtoK6I8-il*|H4 z%B;PpfJFUkFX|#u|JsW#njp{iB3u*X(q6b`Q#`oqYA=Rqf_NRoG))k%qgaPT@j8hV zB#PHboY0m~mrmlICRmM~M8GAA0MR=O=gUM8y|XY~A%dCJS**TF1iNBa;c|@#a_J@_ zt`k8n-9?WZM6eorh^0uBSx>PBi8AXc_G?SXtf$D)1iADS&Ns;mwkDW81BB}X(!uQU7x9{)W&z?n66HBi zTtT8d2a0Ff5~?&%*gPaJkmo?rLlfjVP&|D^IvBBm!t{g)G7Az>Pl4iCzpJG}gGK&l zq=V?8q6iX24-=)d4&sH09-1Itm{_L?dK4z?ekU)`qi_+S39j~oME#efgUo&q9sVGK zTz(K^H9_>jVh0kvt%wj_e}bjD6Hxb3LqzId)DEt3L&fs9K$Pb&u?~rN z)O2&AP1tDBJxTqq zjzE<4B=Hf6vYsTI)c+U=(cunvl4z&?kFwlRi56Xv$TC_)XoCJli+2Xg$%3o@-6*#Y zlZCS;$Yruf)&zZ+EKKTuTY$yYBujm$vbIpR?v%B5oU>S3`WqcBmSl)7Pag}ozDr}RMI zdE&bwKr}<*MN=foEMBxnqRisOG))jaUgT(kJIDFLr6_nwVDPzif{4@vZ;2O(b;U>r zJxUafoQNRnM3Jls`nOQTl(6QqP{boqE(^uaNR-P$aZD3ja~6t-lGX@|M4Be>xkyBm zCLQcxi^RIJM9_yN;%zx1$YrTmUY-c9GRwqmB&ti2c!)%~B#Ar~$P)ImB;le7a!C@I znxMDKMIRTkgxzhqxSMBH#*=o_HDiLJ1Ml3<1cdBcJ z$qjUr=Q?4BM0u_gF4d?VG7?1K%%Hi;A@ioQkcAss$}Z4tMSXr#A@kD4Is zEh4+7HA0Gb>p?zquK9#*72`aC$me!31&O?D7ppaam+iu{7I}ed>JITy6O7SL(W5r$ z;0m-$9Mc3n+AUn`kPdpZM}#9$yuBh4i7LNWL}^Q?{9ds{6I5xhaIS03bFXkgqCEGC zMw-Yn9Z7v}dzE?=P-PAnSeNjV8!?zhL#L52dGE3{4f0 zn%GqJMpxWIq8=R*53~;Ya7dUMP&=3thlGzN$n%icq6y+15|1=Nyfk6o5Zb}GcM3Z! z-XhWGn@2^kH|eq$1^ONnZcTtF`f=fjMEyH1@-?IAkjru5stIyAF2XfIF2}`dO)%2O z#m?r`4l+9-o@#>3P722s6un~gK4IyCx3oq-E%G8!^wXjY5>@xKsILj)ofeKh#&*s~ zxt3mC3z6N2vWEHcQUv&s zPmdewTfia(iG02idq{`9eI2<`eh}AF&PyImT~M(T&YmAY#0ngndOl!kZ3*Rk)4pJx_M-bCWxL#-p~Yj+DO+B ziVjzF8(BZp>NBrwhD1K|%63TPGp`KR1mBTRx-e@yTiF$fENx|kCWvP%?ZYV^Tzze2 znkHC(`K03@(!tf&PDW{htnsv8Mz@zOkSJ?=8Hhx=*vn{5 zkc+)^i_l)wot3?e(ge9UNcSP6gXo21TTKwXunZqcI@pCBWd>3lgX>rk={Ov8am=Ge zpl?x`I)dnN$ojBi(qkkLjaYG6ABplTF58YGpD>q-%V13qy|_&Lk#sPxOUU%mRxc%G zCKC0pqS(lM6njm@^8KVhCvy7}6MV3&rva*LJ$fcZ&*97s(%RLjoQaw|u?*)~Y zZj*@MdqFO8)MO&~q^Y8enF2)htSsY^D6`6PITF>SvP{(knN^l-Dzu~b!j)x?Ca6+n zId&T9ATw8)j0CH3TUZr&Z#wCq4{q|s44^o6;%KSRYVuSJ5am)`UO=K;s>_E+luLDK znnhk9UUlg@n+W!a8uAVj`E-|iW34_tz!y`&NBBvyKc(1fo9Fm4lHeUR@cZ2_n>$P7BEkRHCk|uL*qC zlcO|2X5Y!=MHB%>^E(;6mlslJN+j+|a zNMz|Pb2LGo-qL9qSSB!-*WS`*1rc1C8_6t9P?u)%jwa|sb7{AdEa9oHh4j=kde(uk zmU6o$=(~@6jTFatK%j3c*?$$Zi({?<$HH36m^DOBYtMzXm9A@vESGPF`O4UJ6aoGU zw4yXKJ<_;G{Jk}p0ZgA>0tbN$<(bxuwVC*;oFE{kL)eeG{Fk*Bi*)> z4(jPAqcuT2`^rN|lyyIO5{a_zCvR#?*hBisx0;~0{bcqY@(F$DFW2oQf<3Fhys8Pt z=zDn&DULZ@E)Y6E4&GBjj66FkeQ> zwr5EP^JSFWqY38AkJA1e>7ehUWg8^QY>e!TM463|A=(n=%NQB02{Ica-OiI2@Hs|~ z%C!0%D_t%S!R+}-255pljFZc=NC!LSIGK}81U-t9cP;_Nu@ZA19M>SeMVip5U@_yXyo>2Od?c%odbsrtNm;R~h99kNVYxhQ;*T%zgDnib)T zWwX1an>lAw_;Ts|E763^1L14r4owwrpHQ^?9_cFH&ItcmrfE96yFlnV8Fim@(`u`C zT{80lQQp-+IY@EL^ZJ$W_0r=Z=xC%j%05U5?4;k_@Qw2LW6;r@NRele=x^#%oroJJG25g$C`Hk3N(0po22(IqB*Js_)*(SS0oP69bNg9+iDwfG&=eu5m2% zm`qe;qv*TgUImWJw3nnC5E$F)gk-OXMj$oPG$XX~pc66%Nxl0GJQI3S-Xk5($Wt=n z4{A3-{eAc;nSzwS#vk33_moW4l+VL`&?)(=rm*BXiau(Zx~V|uY3cMDyd1^)p8Z_vVbo`6jz2EhtqET;& zJ`S8R=(5bv6nbmcpeu6SJJ6ArE7JTP$)-cU|A)OZfsg5WAO5*Bcb&O+j98;~qLLz( z*wwz5*4o;|S`?X?L_(#AQG{565^AY^-_^d;#!hUdc13B`UR2TdIp;hxb3^_9{k`)0 zzyJ6BynN32-0ykL`kd!1_uM--Q$eP4BKEpgnt&fnFF7MR$nYEP2V|Mwvci-pM z>PVd?#`S$^{RpYh^r3x;*a7L5drV)8*avCx*_6Jb7>{&d)!e?aINDDu`l{kIqz3ag z^|gtMkt%fF+gBGiBF%jFXkUkzilm(Uv9D7+jg(%AQ-3W+gD&yLiI zDk3h@x$Ne&CQ+ecq`@hBr*=`r#Un^VI(3f<7tbKwKiWO2l&Cv+%xZ(&@0JlGk*rHy zQ4!(>q~jO+MU@p#Avr1yi7F>P@KaJ$c~Q;8bLqJJ-Ch;MMMyhVPmHQ4206KGL*n$P zN@5kHs_q3*RmA#8Ew>-M1@&nl>DEWa5xqTvqHt ziC%p~_=6#=o>HGsSCqJ#5qwEyeo2>0JcF`HC*k);;!~vGPrlpBE#}Nk(Ms@!;S|~-$~90Fi||}hH^#c+#gaui z-QF1Q8YE5+WyCCUuvjvTrz?M=`-g+Y=ScLM7DL2!rFgn^YrU=^V%E}}c8*DMC5Z85 zIGq}s0?MYMr>7;(-*VHHy9`0L^|6u$u&;gSB=ZAz#E^*;>qfqru9p5C5!87aGC?( zW|}BAsmW>Ns3g}!ae6IIO}|WXeI-7x&1p&LB-a%2o4TAvbxd+i75g{fWP~TVz80T0 z!&Zz~uPhY{x8|~zOJ=y1isO-%#?5yv7Z0_iGMF{uR=QS-^V;*6>*F@N z)`-tL1aes`svRlOJ<2ZETCpFa1hw_RP_jk*0;%i3Fky>0oX1pm#-#*p6~`hSjZ1TF z6{jG5Gv%~vn>Y(;&6M*%i;(K>O$pjAu0ra#H_f$O+=LV{G$m+eC zLQ2q1@i@|wgf!Pq@f^~bgb=bz{0Zr4f&_FMDZA$<*KY9=7ME8!Fs$?G>{l?W^zyP(GxtORVni#CMTmmS{jF86~J)`i}1Yy;uP$x^FU2 z4IY#101c*!4UxVD?d}s>Aaxx&y8AwH2-5xpN{bo6H^ACE-TTCijQ9$)U##1S*LpvE z4{*QOgcI3(XlT~`;w(<=i)RPK!zf#@EQkAmc-=26DIO5-FiKDtewW96P!v0}JjtPB z?*esa#LGJ*#&H?sSyDVC4q=o)wzV$dJ}i#sGWE%b5OPGEi6o7bfR=M2@5Kt_sJNFA z&-18whRYz&a_*zzxGua!V|LYYpA;7%c^K_NIyH*Qenfg6nG$qT{0*u4flzW%e2$d8 z5+$W8&C|;?aZ=30XrkJ9egnv*GSbH}*Q=itYa(@y`3PhU8S#3a5+${*)GFGeuBBAh)T5cq59J!s4;!bJB*ASV)) zT@)L+0?S>^a z_%AU6sgwlog-H>gbJ_a5sli0*gtV-X)gwqfk=`qs8f=l=NQbiu#47bi3bDqyt-Fh}&6iX&A~bW{z{`mVP(M@4+W(KrkI7K6)5X##JLMedyqN?$GHnj zXG}3eq{}F45A6$)DkSjMeo-LKT}1i|DO-`$;CH30L%GZim}JEy(aXzw8l-!QNo5)F@`_9EqfE*h z=PoWaGs#LwZBX{99_KD0MIjXl);;0UP^9Smx~HV{71E{<-BU_hgmeSOUukI@BVJw^ zX&=g76xBUtq(4lu2uU2q>scX8_e4l#8S!*wrRpf_R!sMlmE0y-IcWgO?iWi9E+;KF z$;wL`QTDR9K*~#JhVv5c=b^M}1gBs^DPj~QUS4^r3L`JM7L*!XUUHda6{P+s6AQ(; zD@bEZvWilQPX_&0QM!v%oTLUcNykt&68f)}B#aA` zS6k8;dC5%BS#2pVBfdJ-k-|(d>qrq8vxEiy!k^TCJlE3KS&Dk6-%*P&-agvvAL7X_$#7OG_AWtD7yY_saw_TiVXZOUh}f!Ly~C zNGD*&GDp%U`D)hKGe@e)Ni8-ZC1|D85UKKnG}lV0InqRE-zups(l^k)RZ>?@OlPYl zctF5*2?rgi!K1U*-gW)bxy2lAh zXzbY~75R$Qn$`1&R04_C^N3U)iPrO|R1JyN^Qcsx6RYPjsR<)5$?HrFJ|@NcW#OJQ zX$~W<&-2m>zYPA?hqNBkeFJ-`^U{8#g4wQmE=VVlR%ZLvb5Z(evQN7Lxg@n>on4mtPw}OD>bWBA;H0K4N(s6rr6OHhl;*l89YeZQHYMo3bOz~m z*)-RE=?YStQ7J(Wq+3WmN2R$QNDq*xojsJEAyGSfD2XY)(i?joNtHM;T?=weB&usc z{s4*U+9EecqPn)o?Km-ATjj2dyo9#TDv$Kbaz%^s_n7WexKj+0k02#Prn!RTACOjq zEQ@>zX+Oxa$TyL`0$a)|-$PomAkCFke$EL>&lR0bt~8a~3)NB~xh4|TQX%;Rq_5AX z1QnK>BP~0h<|-_=L+W=TB`8GhisU_!<_eMfFya|CpthGht1V&!6SgsshL>}pv zg?oz1tNc_Wx{Q30le%ed2&pFDKsvlv0=mnHmrz~))1OWt)n)56+9EGmWlIgNE@wwF za$fb+kn}Lvt0Gmk-H*QDD$-|&+_K9%oa z%!!#Om7M9TOJww?atBUoslF*e(QBARj=ASYF6TkWV1ho-;UlsC*8o`J9nJ*O1zs8XWDF zZzFwnY9!F_ND-%6io@g=NcB$@GKR_WEY?0X3eK~>lpRPz;H>LQIS10+QYk^h<$Opl zOQpGn%SDlnbxa8wA(uot-!aWKLavBZtJg8xNVx{mC%q;_kCYoC{nhiBEm3ZUlm%po za$8QU$41Fr{S+BJN}hl*=_)!|o`ytM(aG{$e@uZ)k(V*@lE3VfhR*TzAEhKlUUEDq zrEYVn%u5=B)lHEHGvXGRB9BB_YG(MmQF7OLzFek8r^rh}ayswhGBGK`_S{}uSYhtZD31xJI zuayff@M%II>*QjL;55xaX=XavB9zfFy-qH-kfl?vz~8s{R<4S42mZdrw{krsx|3Tk ze}qJLa_i+*NOUK+L5@VCJGl*VPo#spLdZthjdW_41oS!5@(!V7lROk@TZb@VlRO%! z)RqvkS)PbgZ;J#pofFgU7I~hZwnT4{f5Dh^MK~ZoK%y(c0r^j)79cw)TNm-xb_3Z# zSx3r|5=suqS&@pSgb9b_JV?~856dA))UFT9B{@M|!aYaij~Q_*I4gJd%LH;(hSwdK zCDWb9S@{bjy7Tx^{t`)n^OtjS3etk?S3T$DZy52Oz926`8SSwPa=FEUp1vqoW#lEt zLgL&P<>n^YCAl5SsD)gTe=*4}%MVa?0n%NT)g`_>!#!8z5{!6@Zp)SYGJ)KdYclc@ zYS*{rmPpjDf0HATs9oQYha*k0rv~4Xry?c7ig#b0hcp3VK9CPE;;nropF|mL?IXGK zQeVvk^1BQ#elUH~7X2ik-=_qLN=>8z->11miMOh^nf2z`c zd7urd(v6Xqd|Uv|@|2NC3p2fp)|APnn0DnGl!fT$93t)h~m;)Th*C12voL+On&Y9Te0XC_%q#j=`~&c{PdB?lvJS+$h>D7y!3sHN03$!aT2P)7H= zwUzTo7eZ2l>nMMjV%AlZHN1r7a4uC>$%S+g&ZX)p#ToJP>MLbYmIux?>MIRRvIa^s zlx51Kdm1P%r2CL(LuEV?fzy}|l-g@~d3Qr76)>o$tYh}%RPWh*?_b-Ce77b*~tm=G-CQF@_N=HwQkpxpm@cB)U<1wD_+Tg^uu>4L0>5OkZyjL z=K4Y@ibU_H2Pq|y=%^Z`R79eqYOqoRiH@qlN<&VpMMIQkjJO7eDE&;b1Z4=y=$KAW zMsDzFJ~BE%S7|GRgq}>7Af_RX!{l`A0g59Emm4F;^TIS(v{0tYnLd! z8F|S&YUSu9N~}q?Oc{c*L2xRzOgUkaEmzK=jE=bF%1bU|cD6#1H}n3ZcD6#vghcIZ zrIG`Q+Sy7aKN7XGRZ3ALYG>C3mog7&<7g+@r7Y*f%G<4MWaK3;VW+xV$+pGU50vsS@{+51 z<>=i?QNOH4^j_s-PU@8}L&!0u1Jc7UC7>Sun32(G%4C!UFH8x#pv**yfU}tk$|8Tv z&M_C28z`FrYvXO@4$?|k8*eL5koGPNfxm$K7t*OR$Bcz@cB}dsBVK~2#-Pj%Pkuyo zzDXvjt57xy&aWl)ib*D`w^7y~&aY)P&#pk}idvMBmy|B9dla>uUl#6B)nR_B5uHU{ z!%3z6mrvb{MEftFy2l?=AoTphxR<=H|V$;eCS7sy+vN#FZ45$ZnZ2DwI#P&l@YfP zkJ^ySSgk#3Ge-R6%cHh2$)eTHD66b{W1`hLCRvQS3}tksj8U`h^R>1{bc|Y)lRBzw z2pOU_M4DDs0&3xpxhy6@oq#fWemzc|hD6V=$EkCXBsixXuP#N(59hSw)pba;waMyM zB-+|!^*c_ieG}AUjJ$-_bAq~MzptK@_Av4iXK-rp1og6Cb~t9DTI2xlm3zZdg660t zkX{T+bIno9BmD?>t#j3CNWZ{c>s+-y(r?{Ug664Bkc3auT=Ue{NVL}T)lNvX*7H?( zt=qrLTcCOvdC5ocbZ3D&)g)V}&O;e((L(j9U$)z`P%Uwg*P7lJuT#q*(fi_cYBi*~ zT|>yXYCWW;T_vC&l8)~btvlsr<$8p^)Rm|ede}Vbt2IxRGZacq&7iq}OKVx>Pu}Dcf#eO^0!JL?ucBzy61W#1d0~nL`!x8m3677d0>NzAjqa0O# zLZUOuQS~+_mgh0`5hFNhGX!!>4LK69kYj2|MsR=2WVMfR%{PX%@tEpn#5I3RjYrvB zSSgRGwbOjLgnN#uy%_O+Kc~j}Wdb>;4r1gb5yBJqIdv3L!z_+|=haC_i!53DT~JS( z(p^+9qbwWTL0?pRALl(y?@%tOF-UZtzodSFMCbX->X%4#p1-V)MWS>06?HNaoy)JN zvp6v=T~!zPDY)NN^|3!4Jf%@z`qRNv8dW*L>r!=kO3*_!6Viv%(_9bLoJa$_DM63a z{76aOG}j|F6zMpOoZr<_NY`QH{H|6)QsC_3v04-99XPvqtbV|W)$@tkf{~Y;g%j2% z>O7>1&?`^W=_h&rZHE)qC+bs1wEx0APt?4pd_4v`9jyo>FBuH`a*Ni~B(rMmP}U31 zHLThpzbxEi)gJk&NITWpt17j<&%h%dPE18NHjxt>yf|*P?Jw9<3@PUS3hHpxM-4FQJ+XiSA#*w8=>E@OD@+Z86ds*uNCl)**cY`)I4W= zH4{iFEuInIzm(E!X9Kd*S`a7pjJ>p$3yIEPrL{sx^j+dI+IvX!UE(rY1k#GHLP&&G z1!>z?5>Oqa?C`E_S*o-&Nc1$cnN|piT2FJW7!tLf7Fsi;o3_f)A8Rd<=-Fs1tp^f48*Qz* zkm%WH8*MTpZcFX7Z%{^0zS?OeE(EmHUaP|KWe+J{K=U55eMCrFK>L&@h_N2CtXVZ!HH4Noq^}D9>PgbFT=un3AY-)LjQEHfqb)JX#%k+OMm0EAt9`|nF23J5?Q>3Q`%WoA z)3u>Uec)_nx;7e#>ScyD5sB($hBloOv^~DxOzk+zXf8{&ACYJ-OSPYnXfDgNUy*1o z%d|(FAeUt^%eB&1SH@`)zghcP=w`jGH@*IHui}nFh*a6tTXf2RvA8pgxA<;hC zrgdY)du6-k<}x;Jw`=i?_#C-iTWpf;&{m_2-p%jO9{FXF(L1$*Kk<6*f|IsGS{TwH zIB7eiMR0-=ruRFnbw*jAk}buvS}&x5B?}p6wP;4XWxnv+B1~Vv+c`T#5G^P3*?Gcg^`!sb8P8%MQdo1 z{iL-(8MT+6w5wdk?l-S#zaY_l$TjUD65WSf*ZxGJ`;hCJc%5sB{^sC@rX!s=A^~MX zqI;B|wLD04kMgrtgcIwdn_5Xf?do?^gP$DIy*?Z7kF{7NI^G{^gORp_6+F>KARPxQ zc%qF*qPxncS_%@~RX){bGvfX5hqj!{Sm}Rg-!k%&F}67OAKG5OY`5o`_KcHC?^hI? zAYz;yJ9LpIwVNOZQzZWDi|_4E=t+vKo~N20S$PTO20I@<)>mLbvE zCYPvwF`8S&ZX9orF;EVu0p%Bc0^w)ME>OP4D;k8J@b^{WdhLGRgCAg#WT z=6cVz0qHu(irID`2^Z5`#ccbKYJ#k|?HE!=NLSo;mJ_R43ELG$Uh zp-bBCBT?HeX?uo5ZMT%o@(b@jYP+RucBGp_LrG~{7Np;Yh6$x@xsj;tma!E^qPAPc zRvhWqlmoU1TUn&%DL4B?*s3D2J&LU^65FHLKH|jMP|nuMPr0JY*(PI5YP+>n|`|6Z;&nTZLZxV6GO;oTM?wK6D6QGtPFA6MI%L z-F5?sJ}a1RyNg7h70j?bL88wJX4uGYKD`KJrcGt!C4a&mY^JSmI$12r=$?J1Z7P?s z`E!O5n zgL7Mq`mM&<&V;w0qiiiV@#=oVMLWqWkL~Z1<4p{`!n9`#oN3y7vEQ z3q_)9|2bO(5?%Yx+uAVVYyU-CSCr8m^+nqQlkAf1Im+k^eaV(|-`CUOp3Am1jCieo zwQcvy1oErxdq!UJCDi3t+gYT~p)R*=*O0tWm)~r*2fWtwp7O3O4-&nnyk{$lMDHo@ z+dgE(YyHsH3T3or4{bM0vPZUiD5EWUWE=7@Q0w1q3plYcM(it)=olmR4M69oG{q~UNkXt5tdngVx&7W-LFtjDbOYkq3%vD$MzVx_BVVC{F>3nHa_-^!r@0~aM}FCEPZ4|A@4S6+@C2@m zy)@DUI9)DduZ%?ZHWBt(NOW%#VQ<6oVv|2`CfNHy~?c&w;cSWNqyEk=QeRdr>561#Ru6kmzdP z&R!9TuJ-NhHIe9w-rn92iLU7F?aetcoprFc^HXGW2m2_0x|E<^_6h!UX|7)Oul+Fv z@|k@uBQM#SsfhhE`#Pjr@Mdan`)y1|Yu(%a2#MCZxBUeYt#u!}^n`1I*1C_~fkbQF z*Pb1T*1E4fA17ApD0@*qMMg*2KlZ1C-v`(`_|w7f1MHt7(dQ5G_9!H}zmB)}H>LZ+ zKE#yn3wshLC~uBuko_3SXp2VM&mhqjjkaGwqAg0Y-$J4-O0qvdqAeO@e}+U`G{$ay z%G%CaG}f;BsdLO&dqYktouQ}On<3E|db+(W5>K?Q89m2- z!=ElCXodZbKV6z@h5e~NX1HgiJ^vp*P1K0qZ2ypx8VM`V_x6vG+^_aMIq#>{SMOdMH0|c zf6T_7pX?=`acgY~`;dF~a!8$FA9BxL4XMon__ct&9#Yf-__ct&2`8qd2liHsyd*wz z_Sgq@mtPj{d1RmLCjs8Rory8&sn}okLw;F}=)dgGIH~%G5MtLYfAX5;9w7nQIkEC| zJu4%=uhaDuzbsd@uAjzq1>uw$?-U&_c!MA%Ce*Vme4CG@Q*qr0aPy86OrgW;YMdI>)X zq@rGdk(bbSV=C%Nep!v^O8RC_?74kieK!(aJL>8O8S$Fc(|_=%6G%P%5+g5ptZ43f z`Y%YjptV|_kSf1zq@D}5Q#@w`=I+vsbNE*GjA+fLt%q$+n~I_OuCo@T2Z+fl#E zi0^bF^`|JK=ev>mz`uB{cfeDqNPRscU(B5-+X_#|BlQ?Tq$eQELL&8eMqW}YSJl`^ z9sas8${Kq*>zg^T`R2t3Hl@?x}P7a-(y7E9vSV`^IBP+?5(nKdJ!c0R@pcmzKrTGZ@gZC5q+yHHF&(f z4Cy*NiAmO9h`jX3{7qt$^$>~Ef{-S$6ZKCR4QIQ`uk?;cbPf1Q?}0?ufXTWGiLL>Y z^#Mq94Va=QAkj5oiarYI;mFb5Q}hW)LSiz|*GS8L3?)M_nl;}Gx~1fB3wm~0+L~Ut3jXMaL;D_7e?G( zzSAH3WpJ;izr=Kv#MI#L^k9Ye(P!|@fbaEUNHg+Y^`z<%NaNt-YoA_^5g#l2^(H7g z2JgP^*Dso62lN{#bHW>~2lPKpvV*#)^780Rdr(h8q9+T7^o@*o35WHaD7y$>+c>PB zGRcnU7f@Ch-itk=|A{2$(mhA@+!`;TB)k`UOc!mO#3Gco+Btm?Mya~asW!YNdrZ%5 zP~zj^nBI^R8xQC8W=M2AoY&j>W5Sm|^sbEfTb38}HV&RAearHKK8z8~bGPS`zL}G1 zhqr5Q>${Qi!`rpD^@B)-j=}qN`U#}>kHPzO`gu;Q-|y(xP)6TbxTD`jqEGzp=)WU< zd%C4~SAT)D_jDoSt}bU{?NhxGV$40=fix~c1i0w+&k3~DHTJ3gJ<8~F63IA%M4yvL#t%sJ zd_p!ZA<^>**|^Dwj~vB##AQtLit(Hgya%D)jZut_PM^KN+xtcjM)2DtSkYCZQD(EO z1tTwcAJ!w)*pyDT7iAwhhsCPKW0OoXND#Lr`XpO3JdF70uo>|v8$?gDjhlYis2H13 zA`9>7$l;EU80C;w^p$|B zAyqn@C{#4+AvHMcBo&P&Nc8TdlFZhVil9p0^|ZX89*ktc-IFn&NP0G~stVO&NUQ!s?oG;ShIDJTKmM`{!wLTVX* zAhn8@fGpX4eI$_DhVG}x=-NglPVAntiBS`YuBlCo4;b;@Y-)VsPbZM3Mn^_oQczeL z+thHIWX+6tlwE~U)y&A0BT#xXBPSy-*#d8QH8b|+G|LV#g7*t@EsbqvTr+8+x!WU5)4#MkP*cw;gHJM4}@g()hq1Qy`s;7L542ew~c`xqP{Vdpa3)8S&Qk zHk$cmaCTv|VFay(_XK(yeURRTbId+Qf22%sBG}iMiA2v1UB+r8dUohGwj$B9LyvKl z5uY_;jN2%qqbkO@_l~b-l%6u;ZwAB|!*d5@{fzO9_!FvrM*ciL8T{tesOu;At%C6( zBX|M_cMJ)}Kt{Z^3C4(YF~?!dW6;_J;{eh#c!O`KaUZE9>?*y+3!YB>q<5m=HKe?( zbhUeLC&(N~#k+)%VMcbON?jzNd`N%If?vlP?;>UU27VoDltelTvf)Mrq@QPn3B!#V zNMD0&gwX)$Tab+~njt-DA4*0VZIGPs%fyjJ7o_*Lg_1<$Go)(U!h}R41}U32l#DXs zk&1c4gi*$qNKg8OlF`N(q|C8l!f0bMQm-y>!eh)t>fZ%Uc#MTeO+YrrSc%jgWMhnt zNWXoZD2z3BBB|4zWUR3tX?P{bUO-h5kzVRbc7Wj(Ac;hNkQFyasyzwj2K9D6F z50S2eEZKOD^k`}*nP7Nik)U8A)V@W9Ox^gv1`x9er?P^ zn!WZC&;q0$Yj4C(H&!4GTzea6BPTXr&oB}TbDbT8H+^Rq$w+75P2U;DG^EIJ4`XK< zbC9COJpo#Zv~@+IFw0nrbYO*(%rdqjojC<(YsOxr>!;vs%{Yvd1nFiQr;z4By4l7> zqF5_uvcRZ}bSOSiSZLHjx)|>y3ynrd^&!ti zMhm1ikmn+!JyJW!bFtA4sSo72*yxL-L%JnKEK(SxTVf1GDhTP88Y7UZLAs^Jc%OSAkS6Cb)>6M-fH7FBr?cJRvV9zD&$EN))+65TIF$)HHK1z_t@-$iNabV z6Vk4NPO{d>i8QN7qOi`$kF=wRldLmBIkDdS)+mLt*`49{;YLNIZ#%>9!;P9qP2=GA z;YLHGu5s}DaHBcW++ELOHyCYw>2_J;HW*zwu@W{Kz5R57Y&3>q%=q<*!e(O>QsR0i z*=$TiGGMjXVtkF13s#FQ#yn1t=LNFW*o?B|HHpG@V>i;*Yn)`eaS-Xu_C#TaaRTY) zb|=|koJX3{&K|eZxQ4W}U1p%)kh-+D$L%tHM;g#RGtf(eeMkXW! zWP6MpNO?fE$H3y>W&W+9CO*+FBGk3eUKj8#apKxc=HO`Mn&95#0ODQDba;~B>6oDfP* z8J414pV9Cv@|0mmqTk9rZDc{B-^x90GI zQ5A`P5BIE57m0ok_pI>|68#?TkH#lR^n18J8j+l!4Ta;*89Px%Ykl3=heT_A-AF^C z7J0)si$pE*hH({%TIA2hFG$oPe>NT>E!vhS+%*0~+PKY0ZW>}J*UK=F-7<8f$soIB zWJ97_`o+kDM78vbQ3Q!<=~tr!64lbLMtLNvrQ1d|B&wy`MtvlzrQeJuNK{L|8Lg41 zmhKpxkf@gK7`>1hwk;iZ*YF^9Y+C_nAkwXN)#C0MUZj`p>HsAnWoch6?!GYzsZjem zKr?(X+f<8tV9ZC#+_nzT3Z&_6tHnJu)*~$k*+XLoQVhr*8L3DkLH5Wv#)(Yk+V_U@5b*)$(Gh}kBt{drL#xIJu&QIw2!=`NxnvLPmQcd!_?Ms ze;B!u_U4O>duD_otu5Rr?oXo(Bfh(TZd69uIA>JcbEBzA_QGh5vZpzt;$9e0CfQ3P z4rOJ7;8&8ysC2RkD2szUUmC|4@z(xjoHxb%%eaOymsyM0|1usS4HS#mi9>vkx9>Kb zBnpm9jCidrjvOfaU5}5mIP#ffqT^kZsYX(q=m=-TOP3v$O)+IhZH$=$UvrfmlT0$j zF&$-PGQ&3*9KV@ls^clja)C^Bd{~T)71pSJ; z)Ho_k$m2*vsyjY}WFPwwBnkmCkYE07g(+(kMtDN!iwc!G3g zl9Lp6kZ|7iJIg{yh(ksCYncR;8L7p^M4^Zy7^&k$Cn@46$cXpmyN(iE#bMEcM++a2aOg0wlu zZ1;PPYe+u{v)#oU&yYM>X1j|!oF!@dyu@zZ99P1T6X`;hgK^=G{74=0UW_a0D2mj( z(4Dwaj*^V{_$%$GfU+P*OQE!5dOF!Wlof)z`O=Ov>13Bt)(D=tm3BBwFL^E1DQEA5zXl0`U{qij8V(>KDg7in^V7jb1B zRm%kOEbpk#$V-06^&+mk<6D!gqGKD%%4UM^qB;(nWR)CeP*y+l-Iz*_3K3k_OW`e( z%8m()xCSdbrlIU~rn@nf9Y306RUFq)HYT&uzltNVEX{@6L{-OEjCd|p9WxktNn0&* z|EiApNX>E-u~&1fLh2#HSK=I6IbN5AaB@=JQ3}bEBYXcEj@n3N(D! ztN}drs^^HPz;h`E-yW{-n97K^y@6vsBc5ji$8wC>3Z6nWaBM`%maS0#hK>VBQ)GCz z$#Ke*u94$1$|}M+Un9rZinKhQXCudCMqcs@*kB{aNu-_dJGVv-rII;jCPrRz$tcvn zk)smQxA_b8Z|rEth=1k%Lx;06O~=3T{-Gl;Bi^Eq9AS)j=^r^tGxCz{a&Y~R9IcS{ zWDD!x#PI`C>B43DH-$f$%C&Sev{L_O4m(owqBZ(AcLX6x`E*YU2O$FaX&Y3)^iLp< z&k$lEjlt*t1a{4R3n@2{rh46{@zYCR&tX6^P0M{=N4 zFL&T7TFOz@I-WzpQ#5}n6-dVs)W6=1`V&h1oo^w@e;fX$_~!6`p7x)|H0S^NwK<>H zudQSxv_&K%Sc`b8dyS@jacVa0o$hO>2FxLk);gUc`Gke@_&GMw_>;e*TCLZG#`pCv z4GG#pLr#1~mh1+A0_O^Owbk!8;NGAKxljmju&2^+$U(xJh#qn znp+?6MG^r%{DNsJmEP{{iz5)O4el2>Omo{YjHVg{V^Ab?g!)Dz&p+T>$agaX`S9?% zDX)g`nwVo!OXGS=?+0@Bh4Zw#*P8Qm!uoURbRdNHHP5pg%vTojBAH4D_M-l<(ln%4 z8QP-B`va-WWd*J+gqQW=$3RS;bD+O`bu+gjkb_V9rVw+gKu_`h^7%Xt&A~!Kq2|8c zH0y!K;ce$-nR7OWm}|oGTm*BwuPn3FoP+t=9EV>oA4_v+Gt23;kcfkU)qzW+*(wvL zn}yT`>*fD^<*r#xTW8LVuPijg*9*K3JP!ALA++3ugZ{o1Jcoe2nXS~9vpG*5pZ7Sg z1D_9hxLM~s)$5w!w!z!$vo|_p4>0N3SMyiv%)`0ej$kX@o60rUlh@?$eRF$#+Rn<> z2wu{#N=rM{o;$s^~TqCUK1W-uGQ<; zujc=zp7oVt&f%YoJM$QMJ*_!}Uz_Xm&n=nvNFctiwr|qa>*c;_UNYC`^;G7NKuq5V zt=pN7!5Fq1G{-bw2U7WFJib!!IIl}z4-dq#5I&z!-&Y47LgQG-7rT5`WFc2z<$^z5 z4CS?v;4fA zUKi`>)3ZQ$D((krZmyNDy|1_N^$>HN>GkXRz^ZLpbItMj{>@y6-UnXQ#_J`TL(I7a z^6}L_pgmu$UXSy72ycaXHme1r#;1Q?qPY&Q=HM$UP`C6NFsFT!wU|o@MB6{ zH)*!7f4S5*)@WK^{8#Gd?c)mr&<&P(k24Nd!- zf7SCz&22Z==k=a4=g(vQbBpD5;Pbq>MDuJA$p20Hv5>NCpJ~p)d>zQa*Sc3jETj#) z&wVxAr(v^=@i;vHSL6F?_)o(Be(p-2!{3+UYXz77>wbUJ+)MWi7IJx%&l-Js(wbYy z+_QA=G{}EXDzN=LoS!VFGymMPG?lq-{MuX}ZhK~Hd|fA8=jMFOaRT=dRx%A%ACav= z@Z}WN*8!=o<~$$sF34OfbI#`QH8BWd{SA@p<(;=tVHJB7nIrjT4P?^(#%&NLq?74eLYUYjih-n=eJL++OFghpTiInWAoAk{$2QBEhk zyZoI`DzF)n@6u__X`Ck8X`JidJDoC%uRwgKQ^om{_K1b`h?UgYNL$)uJ3X7a4m~Ji zAJy4tfjA)@El_Tb0~UzWd@e1~oR;@y8k|1}#OKpg)DEp+KeQ&RnPsLO^o7%y^qOmi zUwgmiIneOl69d=9*-nPXdE^d+Z)9r_4?o9t)URJRpBIQFUf((Jz*RJy zpSSav^x1)x{Pj&B?SNz&=gXrst+bkk_s>IXa;4zEy5=VgKd+^6_|u9*>~3P>VPDSh zRX6Bsf$-IzuB5*Dr|(l*?nL&Kf!8qDe^+85&DPM`e(0q(L(lZ!&EwM4W-L<(QHZxM zwXtWLeI;7R!ybWB_&WH|v^%A9g@xH9>^I)DUoLg~JW2tQH^z_ia<4;U@-Drq!CZ{psE{Vn83wCHF{r6H^>M)er=bi*=pE==L zAul17iuwGz&&%Ev|17(If5~P!KJJ>p7!k7x2 z8|DzckXnU?J}1>38K3f*fkBL#ZNv$?6g%#4(vPgS&(rDDN!uAtr@>Yw-?-zYnA@Jd z+`u|T!+onsIcV40wvpCn609-?)QalOS8m4SyczUqkkzIcCS&USwyn-63!&O;IDxit zc{=T7Wd7Y3()>FQ&iLN>Pu84kAmIB(Wkzb|$s($mKgv3t4$>d)J2JguY5#X=jM~!I zk+eluz;}=x3(WQB*BLV^sm2Vl?K~|d`NZp`&=9&N(%oG~l=!xzm1^b+?3#SDQ(&I- z&4lT#D=+!4!*P*(XRjW*v|;Pwe0)4-rm0LfjoWd#Xkvo`*NuznAfR{SmkM+ z&DPKn@gdw7JK)Zd&Ln(i`=-|Utmsus`>(@&HvFcXGiH6%+2}S%EF0q$Q)r9KdP`sW z+xLrkWc~fMd3W~|PJZ6jw$qpL&*lMN@4S8K)Mmy&D-7~!H)=E8H~qc+`%0uz-z=0d zrT^#G?u@Bt5}dJ6n}7S<()YM;CO6xaS=;72h4j~NUlZEz$r~&4#}9di~t*kebjfn3&zw51iCHdsi(QyI~sx1C$4 zw%;_qeD!?Q8qNC22x|}Yc$49@Urvt>=*nD{uRa-}H=Rhsc_|r_+eZsCGPhl9zI_09 zLykA@^ZDq@7%S3A;mCl_)6XF^+#JHojhBJJFTy~jDdHbAcZoWO$ziRtGiIZ`? zK--(Kb1y%ckBWZN+?z3)^l5-<^3^lCS3};uM5?7PI#H{Lf+yO6x%7W}&U|NE{=l31 zB4CFZwT{y_5U74KMl*>eecJwa=7-luQ2JRSBWt*Xop|418h+C`SVo*mQ46HIi&vj{ z@g978ZS#Br{(sMyI(&h)D9=S|pYa!Xzr5=EPPbkS|IhWQ?FF)!?OR0c_I!70 zGmE0kdd`@feItVQCVl3c37!g>OL_G=qekL#_TGZ|+$m%B8*h7x!tEzxbeqgh6~6!S zRUQ5(EX2HT;pYbb=~8_8XN<1+9?aZ|jLo0VTJ+u@J~#DW-23zX%9wWfT9gsFy{&E2 znPg~&p5cECzdJC4qITZC%yLFW&BU+onq`=?u?lUb<&94 z?a~?E@y2I%=AC&)&Fz1h)~SrhllD|byyBSO5axPlaN_MPA+YE1viG9R8h+C? zpRu{`i}Ut1`PVz%jLF|OzwthL-Ord(%+G@P?#?%I&7+uJ`&NzDuQR45d>u*uoSnBi zWAgXy$6l>}M%X{E=fCoOcUyrt=I59hbp~SYP5R9)3(UhAqrI~1y^BxS?-$-|39st* z%`r2kR`eXzVBeicZ=Za;cVcsXM)WTo@9SZQ^MB?EAh(%}(b#VIHI_kIvEP5axp)4% z`_VktnP=>JgEFSozP0J?a|?`LI$Qqzz4n{JGrIKjHlGo_`Oo|P|Am;7*V7rYn(6r+ z*WrBlt(JutJN~n690tEZvk+RAm6av3U#m&%cWN^Gotnaar>3&ssr|FQem&3A+vxAz z_JJ?6{1ukJ%JSD({W(yoc+F-?-R^BYV&paT?8#Fu+y**&$Pb}p*l$~HP5>I*OWXh ze~ZBUE&<&|n@jQaNTA%m3*kEFePPx=|9zslMdq@2{QI5YdoEDl8sHj$gI^XC8#o8J zAaL19CQ_Kd_pV81a6#a*fXfOl8@TM?a)8STE*M-caPNT24K5G3yx{VI%MY#qxPssc zfusLJz!d@aF1VuLLcxWBdkK1ottxPr$VT*BV?KaBac01J@p02XGz1MS|-Dt~0nU;JSkA2Ch4}Pr>y7 z*ArYXaG!ze4XzKkzTl$3xxl%>dB8=3iviaUTr9XaaQ(pz0QWh#f#Bl7eF1I|xWV9t zfJ*>36r2~_FmPXj8xC#+xRKxz!Hohp8e9^%G2oVxG_nj_J4+hT$o$m;Si$_&@R$DB zbph~g&@b~>J3+hiS7!qq(l|}Qhrj>Mu6vTW)$c&v=C95VHQ0Y71pF-(L&1+oD-OPM zW+{?PtjQI?Z&c!B2+2PM1t}m#qc9HV?k=LF#R<5B}IeG^E~f8naG(WAGcM zN<@cJTC-9*gKg4Mazma}JM_9R%dIfvM%zwvgI(2ljP9n(Ws^5jrUp@8tLlM}4w?1@kkDtP+|q_r@% zXN=Im(sJ_`LL%!IH^eLs<<1+DD3pR$i~-*=+6g_r5WaX{N_bhp3ARXeNUvof!goD4 zQRvOeieY6XD77wa5E2ym!d4-k>?pfm7zXt`DjEy0$iu?gVsNgH8VMw-UX0iRzt8np&KtulYLmz)J(fU!vZ*~-N;d!Q_O9nbtp z%-@QBv*feFR+4kzZA)(!Qpz&*)C&u3wbi;>$+j%Bb(2DMxLOH6nA5r!;?N!$y10n- z5W7Cf{PWDe#{ApNf5iOf%ufS*Ac6?3Cc=KDOPNhpon2p1rX-%ScCri@|ChC=MP{u| zx)>z7Ex8xx6tfDn)wAUeJ&TD0AcvA-Ps=0t>q7}j5NP|Bb;IJaVr~{Ev(jQs1CY*y zzt7rKxNtO-3=muONfb6I4cuUjO7`=gid6G`#Xpq(?tY@6ZY?%YYzlcMfNvcZCTQxi z4b#QK0v%1o1ZqW@)dud(Vz3%)F zQe164z1AjGfpD;7CT+z07R+zQ{I1OJ&HNbV$1{Hz^OKlAiTTr+Kacs#n7@wsTbaL? z`2|F(&rs%V7d|gIRldgJ zxRoN&3uL$Q^7tP4ENNc;B={FjoQ0TlepoF`pZc@BTKKwKqEJI^``KpkHl%{DO)!l; zXBxXL>@J%Kv+3AD$%=a1GU%meM)W% z?d$zY?TD+&Y-^Su?kJs9IyMVio_+dK$*fQt=&8!H6}1?qoxLxM>Q+wfE3HOA{;f$B zORa+~h1&w1;w-WKSLSKDGuUaD&9!ed(@Rm+2W)JBkxmn2$3Dp|AyCGmi& z4N$XB%nbgyvY8>|+m1Q4L^ZX20q_rfPOa`xYCo{9YpG6>%u?OAhExh6_pNtMP-)_U z47#AH%=Cs8y{lqhW81oa=!UJVt6KmHd7=0Gd z!x7NK09ERnSxY3JTpD0YP_7SyRZO|GYqf2vdh_6V2>Ih+BFw9!`)#pJwLYJC0Q~o- z9J39u6i9#;iHl2~wrS#i=HCKekc0#0Y_nB*twFo4K+K{WkHPgfKRyA!ONwAmV(pq_ zu@8j5T*$0qvAV2N9(w}J_C@T|nSM?RsYy-jZe_sHw)S}}#I4*pGsxalxHN9GJ>J4+ zGin39+3Xr`p)>O`7QPJP3uGO$$*oMoF%~)pE@S>yW}l5%>5W+Fr7XnB#IJytHUDgk=+)i3D=W!S(Ep%kH|S+#oa+J{;#H@vLscm`_)$0k&(bb+?)CR+7&(H6F3+7#7FPY(rDC^_gH$ ztDbB06gzKRXEZOP30ecJGk) z9io-$dB6H?$G&2+dU;hl2%o>Y6ZnTxKLsh90jyNFSp}-SH1)~;F^;opoi!7{FPS&R zp<8Jm=`5d8mNif--Aa2(x7LimZAn%O3~A@c3i%LN>sOw6?Awa@W(j%0O6 z!Qe~@%!+hYR&JJCZkAgOwaC$$nF?F`e(oi=to?c&vn4QVOkmbnjD;7ovOSWu%jc~! z6=Qy3mQOLvjn*VLt4U!i)lV_zPqlVEJ|t6a7Dr&?SFqCYa!Z{&`LwM83u$0Yo|Y&? zu$n|L4Kx+nCNIiVib+dZtuRYeWY-nhbp&g51S>0o<*czhH5Ny+Hkcbis<778w)Q)q zIR8-VZO`gV7K5T;9$@)5VyPNg>3rJ)uIo74f$t?X)SvsccXqYX8M3#P&cIWxkzc+r zVwg0>O6SZND;;aMtY_CPb8ZqJPy1g?oqc>%SDpXworh#51%&dLHh~$E0D*+31|=%2^%-zG@?kn`R_?azLHwFXF zZ)Ox_iWbX~O{*2&ngzgHw`SrJPc0JntUnToFUK?Gj zdkEK^&LPg&AEkvO~XlBo4sk`i1)F>p^3rZ>8^)wJj!v^ zd2f4s!Ng|I($6H{R_XipbL_`)hkD#O&Q^}o|2W%vjk9rvvk?qjdgExI z$29doz$NMjPT#WtD zZ|Wv>c;0&akxA9TarMsxtAn?G`LRjoumZn;3ij-D$l*vGTMwswR&toL-NKoS2L5~F zn(@P&y=9EUoS$Xh`j?)Y?D|V~yisB!dU^5@-_-2yCSPRF-(kU95^_{2Z5g|NYHnQ+&Rn!B*Gj+wo+}lxy_AhE?6=jPdcT@Y!bdxNr!hDmT&K)uJ*@Qc>CR`npp0&1EHmQ$;GvNz^}#8> zw`b1Ev#q|QuPFWJDP?pnV~dCM1m62laB6?i`yc!8)E@7zH;#8o{q}dZdb|U8+AQ_k zU*NL4|EwD(_z3Jz0i1d3$Od`w;dv;_e^jD3-B5%h=*Fwz!Oa z>+${_)_F@XG4t)8zsX zD)wO&d$o$aT2-j)?O*uK8(X|58AlLTbB5P)h9BYRHv4Svucpsx`fT>unXsBZ>7t)( zI9j&VXR|%YtvOpUb~Bs@-R5fBih6f zZSvZP_Ryh&&U<`zR_tTn_H&GfIL1Bnx4CVczALc*Z0Y;n10k}d+j)V4te%I`|Ih4`23LM8P&)ZyL4^qypip`#um@8#bog;tgdq$ z<2m;H9BZ9pPkOvhta~PSj(te7=Shw$$#Eq)t}dpR@s2!9pB`T>^+M>PZ^6z^=N;4? zbgv=)CNzxrFCm}bX4vPq8SwdSPx<`Tx1i6L#@mcw<=@x|GnsMLxw3FqupehmSMVgG zoj*RmJp%->r|u5>{I*+tep`Wg=K`K%$Kcv=UH_Z=`oi`8#)Z!#eszJx?0kzqTXF>P zi6@SPC;4p`m-%fMSNd%iPh#IDu~(DmJc)g)VfwCMyzi!&J-8u-W~RN@=RbU7joEMPH~ad%|D1ZGq~H7D=ib1Hz4xTu<9_gctTE4bzxis(CQs=6G?cL&UE{a2EAFY= zQ-l_+=XLD!rsBW6GCXsc-%g%JrX=zF6RcRl)>pB&tJ&MN?CmP1Kf;vFOj*I6uVBwt zu;&Mh!cQbC(!m}0o;&FKUgtBx)6VwqK3%bjxhvTED#opJ+se9I>9dt(4teY;ZY#@F z^RtdJZs#Ysowc_6?WBFyfBuz+E4TC0+0MG#S*x4Z8(1so-Shn_r^9pY$?Idg*-AId zFDpEsvwR)Tv^^ZrKEIvb`}}r#pAOu*dFiZyJJid z?}1Np{Iy!Udwvtq*5@WXllRt6!n-)f9fOE_BI}m1ZW-&Av2Gc2 zE16r#+)CzFGWT?F03)qrnHrXX=){+`2+8*T9JP;Gq-q z?XEO}_|x>i&tHaI^pNNO7@T`=Pi-u+oxXzeu!8e&+V}MCXM(HfzlyD|Vk@iI$||<9 zimj|DvK8K6^dHAwE$J^h_p?_^Ru|bBvbKoN!*t%v7Pl7N*Ll~%)%09VhpkA*x4a^L z;w-be$ky0uI(O4&57Rdl7r*t-3%gl&A5*q+HFmRa-32$l&BJkzoh19|aEK-M7ukt) z+++8PZl)ha-`<{joPB$Z<2_SkchaNuKT6LtMRq4WO6N00Uz_#m#b;2rY5dV5J82K` zN%9>1kFw84={!t_VLA+Ru7>F_%-o9{(M6US^(=U4dEH_d;&p0qF0 z;Ueo^wOL|5w@@K2XQDCNbunXFq*?Y)9a(hwW|2<4;ZquBO9kmS0Vu)$GYywzZaRJ%YN9 zyB2ZK-Atbz-_DuW$6oZ=JC=)lPS{**Yh!b|_t=*y3L+@O7f>-Ycdc9isglku_at0j~8i5%zKkK=s1*v%Q9#9kd`>zj&C zfBv0u-TV}~k%FI1xMP1+g?Bz&A?#bUehq)U;T9O)_Qm40Z*{r{g>7FsX=k) zr+UXWmn=*VBfX@vE%+KgyVK6U9~iy0rNq1Ie{XFo+45@9ZJUa}^_$+YXV}U)#*t#1 z?UCXYFV4Dcw0LXx(s8AMIcJuR>*1Ts;bMD&x`@@-T>K6{yWwJcCuwgQ*W5PD{=ZXf zZ%40j6laRPbc{N%PX?BOt@rJTO4!}nV} z?HqJpc`SEZw8)-eTHNQ4cez=7?&F=4{%5wlZ&}v=^EK0!jS1Ka9}}>hGKujVXUtZ@ zUCW;3`=4`kE<=lsdrrNwnY4H5pY~M-Y_C-YY!6n_p~ZdmSGY$6_?;_YyQva&U8jZ) zb&Sgbd}?Bu6-?Pw{N&fBF1LHZ>T#=Bes#c3>9qmd?~ep*r#}*~UB8Mgu3}r8iof>j zZOb>aEW{0{ zwa_;b_*wspOShx9#;+(Zz^eh>==A(4(s@{r{ip859i@1 zXZR>{UsHVdtv}uVTHrr7jv4n_!2bU58Ty|?^hG*KzWroP#NJ0mBEtcDcQK4v#hY{F zb~+aW_TB$tz}^GA!}M!`cOM>fM?G5}IT9K5;^T#vA4XfDy)#(4ihPCuhmz@6$?q5#zLk~3MokjI_eG_9GZ(Q@vAm7BkfbSRm z!C#*In})%_9h&AB}q zv{UOf_MzT=2B%X;;0^xl;FdS+yY}zvf9#$??(U`*cl0a&&~%O^tNpA8h_1_Ep96Q#v4EX(8ZvgsPC}MHKt$V z%4zYv`>>U?^4A!BIJchpMnD{`B=h#QT5z`#V;khmO07 zu?;_Qe&3yKZtK@d5#M?!bZ3|Q@{4tM?s5+ywz)SV*X|~_;rhG$iR#lox#P|&SOeH) zZv9U`b?0cw>en8HgzuKfm*|`{?gaA-;r_u-|#1=Z!n}JBNPJiSqV41En6THQ|Q2pIgv8 zA+Y*;wh>v?O5 ztvw&#qHHSua#wrvvz!4N-524u?)zVDF7;R+NBw>^$7ZGKcv5c8Je!L0`=ezIo#?zqbza?d7odj>jLl zJM8Z~cYSO!Xm7=n!A3mcbnp#K2j9SS@C{6|`01Z~=dW7ayFW2!MHh3snA=r&KU4JR z_g+Qa@&opBe|sxi!~0iHAo=R%6+MB?`z?Oy`OPbq@x8<~1y8{WapXnOTPOr@8nd$5O{Lr;caN zMSkL|y!P}yQe;1SJy>$+%=&xm{T_Z>4@8%3dAota}b|( zY7xKcEJo~hK7ja5XBpxiCyJPIK7_c>x%=K5oj&?J=iG;s{Z1?5_nnU+9&$d8_!@Ix zXDese%A0KE99zk;m0`B>N49d2tz2d+@357>pp}4gjsA{n{yx|I1Frdxan~Y_cQ+tT zazBkY&HW5wnfqD9kh=}B()|MB9QSF&8uwYmh3+oII`WE8Ihf_qj(9SGg}EKHv@@u6AERjJc-}*Sfz({G|I^#7Eq7h>yB?#Le#8h@W-; z4RNb`88P8rMcnSbi})q?e-WQ`efMFW-5_GOI}Y)i?nJ~r?li=dTaLKTor(CII~#Go zTZ8z0cM;+t_x*@3y0_go7As=z{Q>8w8$n9OZ9+Wm-i7oN?kz}v#l08TC*5VZe$8El z+}GVU#53+gh;O>>i09l-BIewUh{Nt_Z&y=|`O8`5xjl&kqsHJTD@KJjW0#JwHX92q zb0gv>JyQ`M@suGx>Ioxm_RK>3tY;qLR?kAjgl7rjcF(PdU-I0J_^hW9@vEL@#BR?$ zh~M*O$Du^1HpZv%cxIm7nt3%74!L z@q5QP-}mll8Hb{o|b1eKv|SJ{!fG zKHDjO^x01Ni_dn-HJ|O2fZuk?7{Be5Y5w4S9;ejbgq2+BxBXJ%xBarzZ~G{-}XzwZ~JAt|NZxkad!CcK;3TtZAjVYxBar;Z~Ns%|6Pbj{r4gs_uC$M z#czA$b^qXpu{->>Q*wUWDHr{pgwGZF{Kaqk#aHwgdKE0PUX3rZT~k(MyCzhWybu4g zbCHd4VUdk-X_4)k#v_wW7#&(*s4ek5(7iK8h9DK6<2RA6j{|=yz!SvqiR# z5=FL;zFK7aC{<+p=unaEqZf;8uf0}eyXo~J+f8p4*={;lWV>m&$ad2oi)=StE3$nQ zD7Jkxrr7q;v|`&wmBqG?YKkwQ#f8Pz;<94fQ;}lZQ;o&8r&bi(p1QAiYRedB70bkm zZD)P5m^-VOJFD1s)|ZMGV!V5bhv2iX*!I_R#kbm8E&j`ggU*Y^6EI6hi*2tRFSfn* zda>=bGsU*o-YmAgHe76b?T^K_*De>^Ub|Lodu>d>_S&R??X}8)?X`sg+iQ_P0=>E~ zFy(&qEpYSwLFbc!5L$UOP<8)}&fdTzthc^^eL64V8m$LxS7rjXD~|_kSH2S9T`y?4 zUkzGrchGXb8MNFzLCZ}AYvFStxB@;0ZZOZCW18;wI9CvFbe4>pggv+tah%gO?jH1{ zXWYZcJvPpAPc!#C<8?;&eb&}W#2cLrj2jt~j5`>+7yYAcHqc=s9X8Qn3u|@IVH>W;ILXOh!A$O$+zrpelPlnMgl@+s_rNVnw-aDEHG zR$jMFSqz6Ybcj!R9S-ZJ{N84X4jbvPi4I%n(7{^Urr26d^15rv2jH-i4!fr0;jo)^ zdl>i9Ax(!qI`p&F0rue_uE#isr(DKtADMC$<2pHI8Qf0M?evs);dYijgN*0tmZ#eV zx{c8765X!Q?dlZUkE2s=hMRwC6mG$(Ha}yh23Pr=2~%yJCo`5Jj&sVV+H8lX+H6-L zVhvBV*{;R)7-!MchvBwl>aqr`fzMLJT-drrEsJ<9dv)bTkeR;NWfvt?Nl}q%z!d9;GdK4uC&Z5!{D8HoCX0^U_4|==2 z)Mhox*n~LFX)d){U0G_g+JcCAE45i|!}SH`!d(BL(*tT#s|2H`!b@q5O?bGi$B9$>ypB*JGU4n=Ya! z@teK?pLO)vaMKm|Y^2X7#x3;epwBk?B|)*B zj6HPNONTTa`dF)<4hMKWc=IkeoTo$n=4EiWz`7%hm*{YX4p-?g%39ay;Fj6w{AG_} z{)1(AV~k_V?!%1LmVE=Bi^^2j?m#4Yh~$h0@qmWW%h({y6n5~IZL0xvd_ZjJRS0k7w9uWpG)+)LZ7Sj z8Rd0t`3p8P<(!%Fr{Pdv&Y5A1B4TFBIWy&)8AQxXIcEmfW1P0~Z(yF+lyAhGca$H3 z+cvr-%fAJ;9rWo!3hvZ&+eNqCbnBtpUb>~})>r-0I`RI0@Zh5+0pxelFyGLB2+m-2d4qTmnKfb?=PM`P@ zoEtNK4bRClY_3XY{4+euXV}Rco?$aqg@`-y44bRk88%mo5OGJIVJCAvub0pGC48D@ z{1!gV^jSH>o~~Qy(8}1x^fmN}(`Oy)ZkS?p9;X`D$2UsWst?<2EXOsT;=&hk>NbUKO}2#p z7jCU|YYTq>ZfockXIw|O4RqT`w@q~0LbncHZwveI)*?xV9pMkbp^J5QGVY?oZaVbP zVJ~Z?>CngP{%|RJbs%i(=U~{L+zulJ=Wy8G(wwF9V7L{|=joYeyg=s>I$xsm6}nxe z^C+*chwaUSf95!QuQHS8(#*B+nJ|;*5@RVMW)goH6z9@Ro=b>0muB)@!ZpsNnf8>v z1QEM$ruA**%!%-9p=ayN&%m>dZfh9h^jt^J4fNbd&rS5)LeGww_O!5V<`+JS@24}L z{wP-0Oj~1nXHJ82n$CSQpM`V(Og^*G`5>JS)As3AZM?HCMaKoNhg}sf!(lfadg!p14rw~{(V?HU4pi989KtOq z`YUbhV=EWIVM3+N*yPH$;ZRy>Ggi(RM#OuJN}I82l*jqZT8rqggxB?z?}x*3Iz%h& zlxSkzX2z9tXrV(Z9okrHO{L9J9M|KVb(L2!t}T_f!KZ^h+bTc&fZs{dVFzOueRk4k z7kzfqr-wb+%j?0)2prDSAzvAX!v)qIVZ20#D|EO@hf&tLP6xNjX4_wN5}$ss>Im+G zldGEGR$9fAr|MC-g{ye-Fjgbt)+K=tsnxoLM%yv9oM+6A&>cvut#w zyk0)54Gz&+Ha|_X_QIi=byqUB(4mzMZFE?}T5&q8!}Ss)ec$|%Jz#VzkLpE1* zOU^n7w;lB9V%$l$U3A+`w;sCfrCWNIov3|u>qkkPsI%JPc7$%nW@X@(rOye*lXN>p zx6^bxOSeI~oyRr)hUKh({Rp1=X4$u}ky-XBxU)YAPycKiZ*can;5l}-&D8|P$%uHi znQb#xKHFw2j2LjLX4{Na<9du!JNtJJ;HhTzM)=gzXZh?Q_(bW@#Mn%qmGo($Pb+=e z=(7gbK_@=j-r=Wb+xzoA`t;BK5BMCQ!$G8YoWt}vLZ4&w$$7Za0 z&Q`e9&aoL=G-o{Amdvpkt7lw}h;N8=Yoc2--B!}Ah1Xl=B;n9Ohi!9az#+-HI~cp@ zu#*nE=&+l$dg!nh*JGUYoNnC9`WX8W@$G)jSK)b{p7}ZR;dy~>BS^v6>3M~oSLr!Q z&+GJbtIgA2ZTE;^wcRDhR-eLn%d5W#&v3Pkw5obJJgcj1q_vET5b>R{+UBhu4tR1y z#Qmk(=B&4?anB^_F-?WwPob=w%%&>>ETb#&OkS{v!GiPu}IpRu{3!?x-bHdm~> zgRzSaJL#~C4!c>ahYovrovz*uhdw&=S3d}c1FUI(6^11uq7M;s8YVMcd)=Zz3j4gC)rCS@_*3cnN zw{^J288z3wvu~Vh@2qyu{T|$U=(cyRJrAVm(}xs~(@(bpbUR45!*n}Bw_|k6&b6nY z6LbHr4d1@!K5VOT?hoO4o}T%+d(guRbL}1A2t6;+^9nt$(sPua*EvRao{il<&wd^^ zdESfgDV=8{EuZ&1e8Tf=-l~v-=VV;tZZ*&5Z4qkWZpFIw^Xy4uIj-@XJkQ>9HqEoy zYo2F6wM@=C2G1Sz?3!oaOn1_A7vpYv_Rw=LJ=65;n`fUzKd;Zu`zag->2QADOXyXe zbuTcE(BTptuF&BsYmL(3Iv2oQR z;$3Bp^71^ymET9te#QfIK1k=obUs4oV|32a`9#eX z_?)bLceJ|@q8Jp+Yb74G47<>F1qceTMr%f(k+c^oZ+?h6R2ag ze}YezJ|}ADz~>|#PBEUQ&sq8m(&s#V^7OetpAq_u*8Ukj*XiTV{{Vda^LfrNjzz>d zGoR zmTrR!zJXqyr%#^o0^LUFc8P9R=ysKEqrASpU@9Ekg*Hq6g?(@cF0@%1%QyiMC*eYy z?b3xd+vSM3_bs&9uHtp|LfdzX7M8(h34Q7p9)izuIz$y*ufTKXLc3e-qUUaU_Rw=LJ=65;TWI%`eqJ9~ zXlwh(!ddV+MxX4$-@@kv9ZoWyqR(mioTbko>z-%d^1L2dI1dh&=x}A>+iEPmjox_@3#5IYCHMz)oGJ)5Vd0o3`A$%4sve{m;$j+tuMK;^Z8Ka2!c0-?L`mAK# zmPIz(t-S79v;+=2>9A|jRXFTs-5$ohbV$>oj}HB;b$|{BagFczi+m4a6)g%ri1UBZ zt#CUpx6^bx zyZAmlK@Bec2EL(>EWQVBm*{q7aSg_Jl|G}4*Xico!ZmOU*8n1B<`$kyypG;-KOCBF zu~}-q#ol$Vyv1gzg|QV8zn4OXHFSux);cZ?Re0cFP0sNz!M>Ew`a3U3A#V zxQjl!>C;1>z4S@br;k4Ux7c@+1Gm`kfaUGK33D#cZR8evk8z1USCE45>~tHY+jY9R zbv7=4ovrO4u5nh>*|*>cb@mhX>bg(Bt+vj_xTwyapq3yP-@+J|BjTQgzx#-vMWQZ# zdPTRDbv8>ayl$b@rQbakjOs?qM4>op;pPd*&{B?qu9W=iPMfq4Qq4 zrCGPHj&C;V9)ZI_IvlREyYLa#J;s=&!wEW^q{AsXoTkHBUJurN0B?}a*WHD^GhxXl zxJ_PSBQ0I>d3*}xOKhZJ#wtX-QD0&stzBXxU4)3$zQjgak83<7F0t?XElVDUPb+=e zmi#Sz*3co&xQ;#>=(CYNo9MHJJ{`Q?w#4?}jwMgQr;9#2m)Kj=U3A#Z*h8Pa^hwjF zk9GU$bAZ=_OA>H6Plx=Hz39mW)*WHIM29PMxJrjn*1Apy_x-jKnwQ#atX#Subz7F& zY_u}AA&zs_EVbE)FSXfNhlu^Y)MjHNuJNiF|7T?By?BLy|9i5)2B&iy9u=G$pp6rq z&vzJacD_VbIR8Y>bH3jZMY`2*5F5b9)v572Q->!TTK5Lb~PWefY<5Rg#rEe!MckGb< zI%xBl2CaOrrDHxw_-2(ppmfs4XBz!JL6)x1tK6{CM?}|C@b!Y`OQL>Q=@m*RkzNTs z7uQJB&8IeW3aGgZ4RRm3~tC0%-mt(ymwi z2ibok^8I31`4!41ksnohlgh=V*GVVAA?M+zdQIDWE4@z~P&x^}6G}fxUhcRc?e(c& zM(dXt0&Tn%$|sRurTmEUo21)SjzqbH@;jAIB7KL-rmWuCI_LQLakqO=2^7xuad>NR(Tr`~=f4cXTSB zME(xtcafN9@UPwf?C4W^hI;msIn(atjv;d5dJ^?7sGPT0{WT)JLYjn*K-=fjpmY-H zO)4K#e!KEX0(`Q->4K=L~Y5jqt($?#29& z@~e~{k!~=J&xN%9D?g_EcIA`EU#I+p@;jAJB7cYSQ_AmEK8gH3_f zDy27xYr*Hy?{(6hMvR+8`Ce%fx=-a!h(pRJk?$R^_Knbfu|nx2(yNr-B(^J`ME*LZ zcPgDk`VOV{i37?fk$*zzLrN!+?wz218KM1Rh0;l+S1G+g=_Jydl-{m%66u}NB=i6^ zo~KoQNckl4y*H{KM(74LLXE7z-Z66r(IBy_{1f=b*& z0dYw5;&;edUu+O#Ap0ZTDRzN8H>3x|A<>K9u%@3F1vy^nM$qn??b4lMuQ(tMiC+Ak zH2uT~X#2fEx?SuPd&L3Ki{BUK{EH2s`L#=TioIgqi0`{Y(q8-yt(9*Od&L3JeDg*t zuXHbdE7i(}K})ZYZZM7Vozg?17r&Ef=|RxuwL&^VVw@oRD|U*#;*jXY?)mMWWSBp3{Q!yktn?6Q^}V42E5r!Mc_&NP$E4ep-zoNr1L6>9>xe}A-f*Fx zArkW=-2hs2{FwFWoB+h(qEqXzR72qTts6 zTD^AZBxv7fdzC(*^dZq(seXtJV!N0CdB2iQN%u-;q=%%vRfYD$M(dY!gv9!gZU=4t zI>lb44@l>z@ticP;8y{1orvw?TFXZ}okonimm24!@`uFA*@bcqMwDv?ZC$m4=DR_< zQ@TsK7qs&I(gVsrDLo`TBJG`{`4k((cCl0J1V0 zvC;|YUJ}0Ikn$_$7JM2&^JxY-e(4R;ozh*>{o(*<{m2`wpP>18=V`p4EFJsHX#Mck6zW%i<{LGQ&$U51#(a!ddV}(Nr3b_zOGiJvwekZwZ_@43ono)j zGbHX;M(daIz4J9bu>myyW{~rz^bOLT(p}QM(*4p|(8e`j#5qHvJ)`-Z6o;6P_Z!mQ z1%-YDK`U1wT`k=p-7MWMy+OKDx=XrOx?g$#v~iu3&QaqW1a1CCl#V|p#D050OAmtV zk94)P{mhT^1Dfv!=}ze`>0Z!$`lSb?Pf8C-k4SqL75suA+XbzDwRE%C4zgY8PSDDA zN%u+*fL3lu^e!%xs}QR}Yo|fFS-M?%gLD$KebH%zUzgH*rTe7^K2~FBknWW3lJ1r6mmUB)UZs2MOyhg05$mvm8v7Wue(nS9zLa4) z$}K6>uK+DSLXC4>Iwsvt;`u@8z2bnF)cjUuf5eaR))p3ux_E zOE*Y2OSgkoeuH$U@>5L5`&8+S^nmmbHQwiaz}m(A2efu7#0Ig`^5Ner4k_Kcw2&Sl zC$5i)?V$N|D!*485QmiStuNHC5Ti!)qg}dF>=g$@@2!P;QKPLx(AwKhjdMnN$Ta%x zy-ni+O*crli@oB2=v}7rAj?a~sL?;^gmfo~`BD0SI3#+P7yKH;M$kUzb|d=Jsq|jy z0qG%W_pb`iHD1ulSAaI&cCl0Gz0w0>9<=A7A!+aJ8kg80wu9!IATggx&qxoDm{+5n z-=M9_A*N$~BL&|u*zRt7%4qFYD7`_9f%bgWF5M~iiUZ8Y`6TU)s=s0bX#H%L?lg`5 z^eTNo+Q|MX-TT3Uj}Nr{Rw3OW#zC$-=}xiN($U_4^pLc-LH!aN#CEY)91w>@Z)2gq z75|6U&jx9u>2_(O=}zfhap3=u<1~$adYk0`e@K7RHg95*`FM^5Z5{QB1LBbA{gB2f zHi+$Fr?Kdhe2-*dVrxono(;6$iw;I3&7vYn) zqhef4ifJ(`=0&%yFut%D72{%3OoR4$WyQSceoXC)QIPX2CdIUv6>~<6D=+OnsD6kM zBl4rtaWN^Tl%JN)ih0ppEk7|T#z7lLQaUZ274u4W*QmZ272}}QPngEKO-iT5tfga} z<)z(+G(Tb#lVD#pd6m=$wIn@4Fkrut$OwEo7$q|(!3R?LfTT=m6> z5#x+X$E4%ZNii*EMfVf(5u;*UOp0kSE9S*v@^XjUE*~)}#>J$V7PFv@H!r$tRbPyX zaWN^T#jKbY-F2!jMnO9-<6=@wi&-%b+UM-9SAEdxMa8(71nuXTM$1o28%<}$yy!k$ zNDqrqkn2fIifQF%Mfa1cCq~7%m#i_>4J}IM1Ops zt&gyD6g0m^>dPH5qxDniNii*E#k}bLO`(2RjEZqF30k`;quqC;^J4hXLVi??i%Bsp zW<__C+7l~5doGDe$HgSmOV_8xeI%Y=r1PMCPDbnBF!iKu?qdb*Bk_A?(oxXL8?Ag? z+)iR#(pfPN+Pu1-QGdm#7#G)q*8ik*TFi=h(cN6|@qt!8Ok#bBaWN^T#jKbY-7SUw zhsB7|?u*iKaV^;HF4<-ra$2?}m7Zq$#H~h~hl~;HB`cj5-Ny^_Wwdf(F)GGE?sqXQ zW|f~8-6sn5D?wYgQRznTd3^6N4ml5Pi&?s@TjeLDlhP^aeW2CLg4TXs9JYMStM9V~ zhDrRs6lmq6(s9u0t)<52ru4L!74zaSiTh4RVH{yGD#k&(za*toMvNmb?LMh`VpNQa zNznR}7W1O}R3SYqM#Z?86w_i>%!}^ULc2Z^>rJ{+Itp65aiu54?aEI}XF<-h=x)<^ z#JHFQISw%^=0*2&8jlzSxevvpxR1m>2idOZeqQy(s2B&$Cn=`Ite6MQ$4#i;VidH` zEoR!*opeGvX@qZD=~?N#7)}=Qqhef4g65l+&KR*jv(kCd{es2=T02oOE+)k^Xy=yE z%4Nlz(bkzX{*XJh3tD-jl@BRBEFBf&pv_A{`AO;RpnacCDLt+9te6+w?S=Y2(Dq%( zi2g*C-l+7L(&I``ifJ)x`RHfPXycK_AEYmg$B6u}7!~87^*<@5#f;_Kd`ss|qrUq^ z`G8h0D#pd6m<6r;anR1IytMmtptgrCdKU}?kCb&5&zkBVLYI<9~L7@k4neI zq?i^npv_NKIxo6i@&m0uQ86wi#k9DO#QaF-Mfc09FUG~lGuAHdFQD~1E+)mam=%wM zwjOdu`#hD7|K__eevsoAqn3_-ZwK4mx~;|`=TqC#O5aDKztZl`Liw;572{$OH2<`8 zRvadAj{mLdi%~HyCPCXjM)nIFavtB7md=XDm7WK!ywS=JGrf4L`xUh#MnTS>m=x1u zR?Lg;R}1w+M$BVax{|!y5m98jn~>!XM=4C$3d`66ATW^nFUtO6SF4rMtV;f3Xs@{SqZH zPhwI`i&@ax&x`Ii)KAdnIV@dC!cRIbCP6D_w0TR5SuroVf2aP5QLz!Ue#WJfVp`0K zdC>gbZ>oQw^*buYm7WySVphzHZjb7VQ86wi#k80e^Psio{=LQ_#>J$V7WaYnzS3y# z@3KliPW{+Zd1?1s@)M(CTug&D?yPiPboXc+VpNQS*3YDvR(e*B0`GMBos2CTMVj8smWyQScen;aGqhcJi^<^~Qq?i^nM*JKg3tBm& zmCK86s-Qzg+;76t5$ULOOgb)|kWPYJ-%3x5SuwACqqXa%)t(Xk3QI>p8+TkxifJ(` z=0KiL((XTKUd5=G6w_h`yaE0>F%R1L;r15lhd|2@OGm{RX!8=6PKqg|r=>H}S&+W_ zG)|+9}-KOp94DFS`Gz`4gjJTuh2- zF)KR%Wc|SB2imwI)DzbmIZo5~yyIe0=_%8;U!*hAS?Qc~-iZ3nbA|G*5jrFtmX1hA zL2EY#-T)@Vl=6+1o)L3m9<+K+e<9xm*^YD=w9hjl9hHtrC&VOZ^-|Jl>5Oz%Iwze6 zhnzWEo$sn$(9Xe-bXYnf9hHtr$3bf^A)S;?iy0&4*=Xa-D&2j)P%kV-LCcSeX)&w( zyy)&%JuxcAL93qtZvc}@Pf4exGtyb@ofqV9M1EL|ig7VvM8A^KDe1IyMmj4U`hKB&M2s4(pVD#ZBxvJGDLt+9 zjC58y4_Z0*V1Z#VD#pbGXzMR2offlV4*a2e`pLYs^8?erf6@gxztpFn3`<9-FFhHR zj*AJV|NhCObQ-krWt5(k&Wp|u)egvc79&cJO2@?n(@#H{lul9q_mgSqjPkRf^*bk> zmv#;n#_56_7j^KduyhpU=fU(#PsXJa)EJj^iW==oXOy3n&QW7NrQO3CA874HOk>?d zrDNa?NRLY=#k80eb7Ed}epK*t#gG^lBVtsHiE%L@CdHJP7BgZNw0X%%=cSz=t9{V& zL(*aCh;$URb2}!T5R*zzNoT|yX!B#V`O1S<-+8f+ZnSjQw6!Z8mX1hA#h9hT&uI1H zrcp1Ubfcvwm7bDLOJ}6B(s|K6Qh44nnqOFqigD!|Ek7xy#jNPQr21l1j2Y4IxO7rX zi&>EKBf38+=&%?SW1#K-xO4&>!295&bV@ocosrH;=cMz}&e1}B7qs?6(qYiP9~mt@ zD#pd6m=?2QUUZHX#%ug*cj{9vNPne=r6bgMZkLWp$E6d}N$HeyS~@G{l%AJ%Usih{ zpQogwVhrrWyv3!HVoK?0>8zL+-G46lhQ+8D1FfC7bV52Qosv#VXT`keWD50Nkn2!Op6)N`jM5+i*8o^7NcTZOp0kSE9OA+%S$^yRX;)YQ#vdik&a5oq~p>_ zF{SjhbVfQWofn+}wFk02>9BM}Iw~C(lVVEwY3Zz(7oFqs2k9>zmX1hArDM`@>7GJ4`JzubX2+#&l?$DepAr61F)k*>w3sp4 z`UdT}KCg7=)k3;!wDVhxC_O427ZXa)h*_oQr1R3wFXU^q@k@uLBhpdnxR_9SM#P_U zWWQab^-qi_Jqp_A7Z;OaTFi=h(K#hQke|C4QF>H5E+)m4^3&28>8ug`%7ga%i$?o> zH}{w7uNW2MV#0{eBPpF0GfK}&=Ry0t++WF0jEV`P`ADZhdw*`U?{gXDXO*89o!1NX zT+sZ(rZJ9)(xcLGF$r3^w3xAUTTjY&PRq||pEot$S4&4goA0P}OgbSZm7bDLOJ}6B z(mCn8wEJtdXT<$IEFA&ao^(t)E}f80N~fgL(pfQQ#5nWP&Tk6ZHQG2qt|RG)bW}Pf z9hXi>C#6%;Y3Yn~Ryrr0mv+t++H*m+FCCVSNJpjPpglJxOxyP#rKdpacUn3lofGp) zch0IkknI_5o~0wok4nd+zIqAH#^Jc-vHQIUs zxn86r(oyM{bVAHoI{FbAG@@T(Ld=NHzZCLAB+7%yiF~#)K^%*foqWqBj z#E2LZ6Jkoth&j<2R(&xd#>9k}5;I~>bS|jA7y<47Co$UpPZ9&U50sx0BX4V-$cgJS zpp7>tI)9L_7!hM)LQILy9}9jVF(SsqgqRX@@8ypa>Loya?qWvFiO!$YA2A}v#Dtg< zGh$8*{aaxkBA~Ss6BA-e%!oPBxu|x<2x#+}BC#ICoakICj3*){#Ej_tdm%qW;(U@$ zi5W2`I)7GqF(#(O42ks(+PIv{>aQ3PV`4(gfjp0{6qqBip8rGj#fTUaGa&cL|5Lw6 zoL3;{RZJ*7N8-KvJB9KQF(GC|=c@d~n3xbVqVu0BC#J}W>ocIWpA((`(m2F~m=ZH$ zPIUgF@?s3+zL8Fe88Ih1qlI!I(AtlPF)<;g#Eh5|op)6aw9g|&VmwOEy_f&rh5Q(a zbt9%gYd0h2MEv=4rl&yj&56$SLV8Gyh%qrCrbOp|R9=jTF)<;g-pl{r!hFO)>sLZd zDLo^d6CKCpJcmHepBNJpVoJ=2A=m2RekvwN>`RdIA%;AKaw#$6Eol5nc-D`IF%t7C zra=0Lj=xYoM53H@O3aAILA#&jq@5zw6B|L^@1#>=hQvMwtzDpXbV`4%~i5U@p zwzi3u?Wavuj(9%OkjCMLv`m=SZLQ&OlG1G#=h=LY$L^c7=DPe`Z4jF=Oh zF@<^|F$J1`hQvH6-5INLVnmFI2{9#RL}y&VFGk|?1g)PbF(c;0$oo`YOo%Db8Lxhb z5iuqv#FUs3bD}dr^~H!76BA-e%z$>EH`;wZ2lDg0Q9fcsjJ-$v$DLL#HmOi9A*RHP zm=m4Jg>n&)^`sMGO3a8k(V3!th!HU+Cf>`RTJX(?&NS5%GoXF$PHBN55}%iJO3a8k z(YZAAE6P-}OCj@eTi7}-oq*G!>%!y7|{S+gh^*=?TUt&&lW)}Jt5+h z&k+^!7b9X!On_`pIwR&pr&9GnD;JTDi3u?!X2hHrsVelh5w!C*A)O*|e+6ycjw?SW z?aV5)7Xmr2Vv6aQ7cnO~vkUD+#Eh5&xt``|9AZR_i3u?!W<;l2{Q%hyF(xL&l$a4i zbJZUb`y90T32{4U^O2Iyh|au1y+)AtCu+=-(sQCyQz#b_BVtTUi8;}!)i^+oLyU>+Bj!YBx$1#dE+QQh6Jkoth&j>uE7cbhAlsA9h&j=@UFAWxCnm&{m;r6P zInjxzo){5hVnR%b88Ih@qG}H`-2BVtTUh$%56=0xX1sxQVsYbPO{5;IEAiOwCW zCq_W47n4qiDKR7FKr83msrq6BWPRy`m=ZH$s9F6JQy}++7`m&F9|8F}iwQ9$X2jfk z`FC4Ad~YW4`G8!1VroUf*I8L$2(fL1Ogoe^`Q^AYt6q#ucKi_S+i4lyRC#GL3nP$(A>6JqMU^tOV34CH)? zIi}-#!p92vA<*(8VoXekDbVg~M!TnVabVAx_<4B1aF(*2omY*0AV`4%~i5W2`I)9`3VnmFI2{9#R z#GL3ns`_F?jEM;`C1%8&=xi#~kBBibA*RHPm=m4H)UFs2V`4%~i5W2`I-gN}F#>XZ zgIwQAPlzcoBj!YBvwXye7!wm>O3a8k(b=No70Qq zUJ@sxE%1~ z4vzObv-?PoTJHbq^O@P%+4AhO&+hE(?(9mreahXX+`Y;@pj@$0rB`mLa@Q%hPr194 zyH~jflq)u=^vW$&?mDm9#HO- zUYWjBx$BhMr`%o2-K*RK$`vQ5=PI{Ux$BhMr`%o2-K*RK$`vQ7^vW$&?mFf6DR-B0 z_bT^*a>Yq1y>d&HyH2@%%H5^hy~;fRm+FUHsvmJO_5a~*Q{Ym6FIDb3<@PCemvZ+i z_keQ6DXJXGEmiJ1<@PCeuW}D4S8P$~lv}FYb;|8i?k?r-Rqg@hiawQIxuwcor`$f} z?o#evamJ{o+FDmMV9b zau2WzJ>Vi4zD~J&m3u(BQ!ZBF%I#C`Uge^3pq$X-l-sA=UCP~S_%D_5_9|EG&;;2R zuY*hJ`;@y&xqFp+K)K>F8Sj}rQZFsPOS*r5hTL5zl1p}LR*^0qJz5h3gb+vSniv9i zE!@Z89tAf`!@i?lsU4-=qs`Gz)OYAF>p$wB_gmZF-G5vEm;1lhe^6Rm`bX*Cq>r>5 zZ8_a?t)VfI<}Cj063d5$c{MUGn>e{=lqSUup5 z0ka35H}K(su0c(Mx(3}kXz!rs2E8?CX7G#d^F_uAp?ib7&>og>Cml1e;t}TtaMn-u+Cv;47+C7-eGSHdw2+G5$BB9IpVDmhej+KSvqp%$d-{EBhMar)yO}Nd}id3QIkil z9@Q}_Flzg#J4QV?>b+41M*VBlZ=;5f&KkXJ^xDzh(LJMgjed0WE2H%>!^SKhbJ3V< z$J{*Tk7FJm^ZJ<2#{4j5%Gj*2!Lggho;UW!u@8;?%h>dBi^kQBTRHCJap#QNGw!eB zJ{vcF{Iv0F#j+q`zCxgq2I(| z6Z0n4OzfU`>cq1q?wEMX#QP@hoA~|2S(9of9Xo03q)#W!nY?_mck)e>pPc-~T zQwC3&GG)$`{3#_<)=ue|a>10Zru=)#w5cnmwoSca>fKYHochw#@238Ds(sqbX^W>- zOj|k4H*M>*TcLxyqxhy#)la{WE?;Jis{!*zis-{ z(?6VUnK5$4~o}wPw}{v-)OTHtXJ5@6OU^kDfhycIIs7>=mT>GW!bW)W*?Uw%046en(Sw?-^(t@smfWI6U@0F=dqmEa^BAQ zGAAu}bgnCRb?%Pb>vHeTeI@tf+=IFQmpeG`m^@FOFYolc9eJy4JbQbxkWjuDqh+h>AeP$rZO%{H5ZlbyL-2RdcIXRDW1~Y0Z5#Pt^RmW?#+7<>Qx6T|Q^|!sYqP7cX}%uUcNeylMHd z%iEWqwfy|$mn?s9`M%{}EkCq8y>>wDu-fceXKi)uk+sLvZmd0}_LACLYwxOkr1qKG zS8Cs?eZTgT+OKPWuGQ)+brb6H>Rfe4)E!$FsOzmet?q)lOY8nr_gvkZbsy9nth3aQ zt)E+8R==WtZM~=dy!uP(udlzi{^9yB>-#rMZkXM$rlG6h{03cUq8}t+e=!n&D>nra zF#~6=ri<-jhS(uyip#_-ak-cyc8a;;dQl*56ouj@Q6z2_#o`vROuQ?cV!tRC?~6+D z0YSdzO|G-x-7Bea{uDjdjNt=%TpYIllbw0lI0cAr?MJtEq*M@5JB zgz#&B78|u^#3t%oA#PGS9?QTpuHuwYj2B7wRgl0?R{~%_K~<& zJ0NyxpNi|XFT}0d*SJ6GTXC26y|`QZN!+9Tg7bm@7LRGaiN`geJ)!B^UM*dFMzd8>+pe4b%2%Bea*b(b_B8IPEXmMC~ebS$jj9s=cXA)85gh zYx}hs+6UTf?GtT|_JuZA`%0UyeWNYVzSANk_>KAFV^lP=* z`b`+;?$S#12ec*ngBblr{-t`e5dPvi;BQ`A0oI=28XxQp=KD+%9mDdDePr5rYN5q-rw zTY*PxKMT0w0>VeHI}iBI(Oyz9^yRzE^$1MUk&_r!A-zt zZn+isw}8*bWz6Ct+ zQF_YDMehS|zWwjOoBUL&-d8Ek9nXFVJnC$sFM8@6`++d=SMH=dSMH?vzg$LG){HrH_TF@)TJq#j;4{ynC(8JDa{QZKBF?gl zDeX<1&#K)-ui8S`%>T!&#Q8p-aMw1%iD}PRNBmb9-*rng{yiTMeb$?VUwS|E0geJjQ`24 z#atWvpQ6yG{y?=?`zX<}Y(6gG{3~Rw(o;@;j_?{U#c6niXmf3x(7~aMUt;`Y<~)?j z{480vJzQb}Gum)h0OXAoV)U+R7?=f}H=BfrS#by3=! zo90R0W_E9*_~SSq=gw%_Yx9Yg?O{59eVPA=Gw3b8WzC>wd%on(Rwq#M8G?!EMXjxkM zl(+fqKx*skoS1g899^4p2<_E@u8p?jy42CO$Xq9FoaykW@B&F|=41AjLh*Ua{i}hu+q3!EITY1F);w?&bE9(^n%z1%1!(N~~pShdxnwkI}iM07$0PHlcUW*u{qenQ8rBn>!CSb#0UhPjFr zSO++O?P4JCa4{Hogcu4u5)zG-&z-b27F~h0=UW5E}aXNC+#gF}Kf%DVqffuDU0+*y60lX%y3Ha``RY-de zurBURTLbz&U|rmwwifgQz`A%a?P$;s0qf$AX~%+o7+4pNq_u$l6R<8GO>={O3|JSB zr+Gj>0j!HB)4ZVf0_)1MA|?X+F@;0PEt}v<;x21J=bWXQANjo0= zcY$^BL0Sm-!?YgYkJ2^)f1K6}d?4*a;7`&{2L3c{3-I65PDQGNz`EF$z7_Pjz`8gu z{S46O1MA{~^s_*32iC>K>F0pH1XvfBrk@LX2e2-#Og|s=RlvHqI(<9nYk+mJGyNja z*8=O}y7Wsx?*i7v_31l6-vF$Oo6|1`eG9NIcBfwn`c`0F+@5|l=sSRQacBBY(0hPU z!|B(7eh3&foPIs%hk;pX(SQq0guYev8jQ(qR74$@4T}-mP4tg@ME~Z%C z1U(g47t<_nfzAL%kG8x6dIqpAW?J@xo&~In*_QV~&jCg+wtNVB0kAF#EFXg|1lC27 z-&fOWCX@(XA;ur9V({sX!X zSQn>Segl0Pur9V*eg}Ozur4mNXqqN20!G`m^aFhfur98$q=CK~SQigj5G?)(tc!;& zHqeg%qrF)ipdSZDd$SA#{Uoq1_F4vmehOF@&sc_neim34&sm0pejZpCFIq-|ehF9? z`z)hDzYL5XZ5a#tFTlEZ)iNIRYrtremWiO>0Y=-iOa}cCF#5G+D(C~iy7-4B1N0Zb zy70C z(2Ia|vDoSaT>`9&B~};crNFvyS}Q=80qeqLtpZ&Rtcx0J4d~^-x~R3*g02JBMZL8i zbOW$18m*0>R{-l`t@Q}dM**YFSerl}3yd~nT?M)Y7;VP72DBSk7wy)ypgVwd;jNxxkRa*5g5+4~({I4S~K07;V+s1NstRUEFBh z1o|dm$Wm)B=v#mxORXn@z7<#(cUVsbeJ8Lk_E@)oz6%&5n)OuB_W)x=vu*`_A23EV z>lvUQ07iSZo(1|TV2m=>b3nfftc(5Db3wlc4B2QsAM^*nXrI>Ypg#h}h-1A7^e4cO zlh#W>e+rDYWZMB+2ZpX%wZg8ng`>^jKiXI@@)i#{=tP zqV0OnlYn(G*>)r7DZr3#wwpm`07Jgnc7vV)4Ebie4fHHvU1Zws0KE`c7umKwpmTtA zvCMWi=u%*`L)*Qe%Ye}iZTEvN2i8S}?Lp9$z-W`UKZ0Hkj5cX|1auuR+NAAK&<()Q zI&6=FZU%t3m9$E_8sVZfYByxKY+duSQii2 z4uO6U7+RCuXj2k0Mwp*PwFg8m6u z7eCtugZ@8Y$WPl)(7yxgn3@g;tpV#ow~qwf4;by=J{oiyFxtO;ENBZbv~>G;&<p!fPFIPVZhMg?NdRI0M^B5dj{w+z`7V~p8`= zWZ8>BX9MdZ&%PLRJ}~qI`x4N_z>xX&WuQxdA@l7{&`W`JQEGRAb^@cX*(*So1Ea6m zt3X!*qfgmuKsNwGXRz0TZUTnRV6O+g3K%+ry%F>pV90s<5ujUu(bw!vppOGao42n5 zeLAo%&akfmeI_tuubuX>&jr@SCHA91UkVI;z>kk91MA`jyBGA0z`D4_-VS;-OV8zX7a^H|-(Ne+7mDKL>_hVLuD>7r@Y6?dO308W_5({an!B z0_);8`}v^%3#^OZ?b|^M$9B+~<08;HFmwjTC7}BQqYXQDfF1^nHte_@^ax zKZEW7Mq70}3;H-An0>}p~E;n2Yo&;=8}#tKyL?zKI8Zb^hLnX zXB^*vz62QaO2>DgcL3|+GRF^~F9+7e6^=uouLQ;%)A1wdYk)Dwbo>nZT40Pvj$c6U z0>*gc_z&nCfH599egl0IFvcUt@1So1#(3n=`e8f*#(3oD2l{qk=u3_?(02l(pE@ul z5O)EipE_)y?*Ycx z3Hoth%pDw~K|cu$UCS{R^i#l?J2=LJeij&W2ggLv&jVxb;Ft{hC1A)3$5hZS17q&s z$N>EpV9XsHGeExv3>o5>1^NwO$PmXI(0>Ki#aoVfpx*|DUguZ<`dwh?b&iFg-vfqT z=g0>A0Wii>M=t1(fH9sr@R0_);ChYR%gz`FRsQ33j&z`8i(r~>^jU|sy=r~&;murB`3Q49JP zU|sy%Q4jh*z`FR=(FpoCV2rBfORooKnv)Bz`7VTzzupZur7uS@PHl)tczg-yr72zV})%% zJLr+X7}o~)K$ipSqH4ef(AB`uAqRAUUJeW$azFrd9Wchb0mp-G0LHv#KnU~-U|k$B zpa=9yVCa?uHi2#ihP)ck3wkv$Wf{jF} z)~H>g-K0GYdx1~1AG9*POTSuwO#hocvESl;%lobE*U@iNzcc&o=y!X+7yD)OFYSLz z|GWBs)&Ix-BhoU`a?+e>E7Drh{AnkrotJiX+U;qNq`i>#PTFT_Kc@9hFGxQteS7-O z^xxAhmO&P$rOD#4ylFXPv0KZm)z%xV?^r#yhiy;WUa}R~m)UFW105qA)egU7r{gup ze#ia+{~VwX95!(2!0Lgg44gBlcF=W$z8o}paOL2}!PgIdYp@uSHKb%nhNiAP5W`$uhRx+%+JWrSdvkZQJ=9V<6y>7(`U{Q zGY8CkYUZo62F)Hir)$o}IZw{D&8wL2o4;%RUGrTF9$E0z0&C{6ndf8z{v0{wW1# z73?UuuHe>!hYMaQ_^4oAp{MZj!W#J}_dlo;ictJ^C$+{9>$*z+7N`5X$TQYdb+$DKS%9gBHvVF746a;{1a%kgYkF$L@-53})!trrU)}EdXY1dq|6Bc_ zhEWaG4c9b0-tgB3tJ^BJ>SKUU*Q?iC#TojMz-Q`XJXUd*J{$OKy?-A}E@OT_!3fiC z;(Xrlk8bipBNHJ){JUl$IkEBjy+XW56!M6765@T|aMjfm5}Wqt8xnapJ(Lk@G#&Jz@Gq*0v-cA4tN6aBw#P#DZtZ!KLeftJPUXZ@I2rJ zz>9#F0Q&$h16~3A1@J21HNfkDHvn$}{)!rZ3-C7J9qb~#i!ow9;61?m*iZTZ@Szwc zKEkfj#~3pX06xJ;^Ebe!7(M=uy`_VI&%_wIPyHd~AUj0B7Vj0TL+ z=7_O?aoSul9xy?hCnjq1#U#LFz!bn#z%)PxU^-w1V5YV}%mU2T7Q$9o$ zm=9Q>Ws6L}LM;cjd$}STkORmCi#mJfTr0@(8vip78uz!I%UECnnB zlmeW9GJp$E4ye$IVfVL4Q~|2B#i9nV98e3W(@J0uxCHiqOGG1Jg|-xSfu&+4pb5|n zSfx2(BUpx`q-8iJS_WG|mpBS=G~gJmTpSDd1E58#5bFSLz>5|YTz)ld8`p>{09OL8(vHOWjU&Z1fSrJAwYB0pz%K15aXsJ$ zz>V6`;wJ4FakF-;xCMV)y<2O6J>)uZ8{l@p9hzI*3D^U;OIr{7$n~&~^oV-__W|zL zTEzo^2LTTO{-}Ay!+=Kse*!$JwZV?E9d?xM;t8!oJPFvV`NUJ&apGxh1MX?xAfC}W z#j{$McnLw2E8s0{ zlXx5Oj<#963)l}E)b{}I13u7B5FY|Q0(`8UC=LKV(M}S71AGejJ8V@C0zLzL4)_P) z3+)u~CEzP1(_`?fYpFCfFt$YIRCL5XFqo1+{bR{-?xfm^%9-Nxc=gpELg2V21&P!U0AsECx3r& z8oL53ndFE4rg9%-x4(E)`CnJ=o9vFkto)d)t&q~^LfSoGKSSGt-nR!mZV!6U$6~ww zskl@BT{!yLw0uB0pb4-Za6F(7upMx1zpdgXxcB$V(9-*7Xao8eYmNQ)h==nUx#5MN6S=)@2x6O`y2-^qx5MVdbJz)O{yvF`p#T&K< z>?PV;`W@Q)`o@7<#hC*?)prg&2sniBV(qL!57-|Yv`0KPXkouWgAXFl2kcjA2lX)M z69%8tuSEM)pEhJW;A1U3bUVU7*4`PqzaOPtHEe&sRl~OH5B1;QZ|Cs+{jRXQX1{mj z{(kq4{8aB7wOi{ObrA0F$on<>&f&${)^X>etmpK52x)f?|5U$o;z7V#{ke(R`Wf2I zT6l0*+7sykz;2E5+&XTbcK*~)^-a?b0uH5}JS{E#VZc?|$J$5J9O)0CEd4XK>mzJ< zr{Njedowe%12Z46KZI}kcK@A-SFCNCwln<W^`+GBswKbW= z_y%2R;j93_WBDNKW<2j>?GM@KqD^eqZF#TRPXSzEIi%V0_Gxz(7HgLl?Gc|9)ms-7 zueGM5{!c0XSi1^vZ}BH6^IGde{Wn-&F5Y0>IedflOSr!R)?{w5o|3o0nziT>>v@ZI zTO0d72&lI%Tf7_PdEZK9>a+i7onBIJEh$-R-C{Xc-(q=Rf4XFb?Xf|HwsV%ie&4dq ze%7FEDEBt|uf^N!dzNmq-w${M@Fd__z&^n1fIBB{v%dqkZ`3yXhfC|N)@3_wxuu8j zZoi}7e5$88Z`RVBy8)l-)viNYwQHjNB-bp!pX|2+{sK4z7*YPQR$B2&`ZW~``#oQ= z!FuP!h5fFrJfwYBxesu^Jy3POeOuL?j;pkH?Dtf8EI(DDo~myKtkrGRKicom9FBXd zCpt1}COZ}sPj(d7EOwy3YFlb<#xr*V7WNyk{9HX9-|NBJVlA_-SX)wewIdzv*W1g&|JNXN)!fp%nv>kvou8vq{vN|qM4 zwB)s9XNi)!fV*|+dc)V`4L5D@b#}S}K`(JB26!vo{??%9-E!j0!kLA-o3%w z6zK8u+sS|mzk7YB*Yp|`yWAH_!d(@LkLT*}dN$N_cKX8JAf6wWOS8Ar+Z_moo#C+C zv%woI^LF_Bt*d>Wu&+y23_WX&*WDfPR~+Bt>y9#)dRkggh;CG(tJ56{$+DIQ-J8k+ zn=4w|y`iP;EiHI$yl~jN`6L-0pDLGMohl)psa4&rD5a~@=kI_;uMI{}GI2O<{M~ z7Yh44T*ydnvgtK@H;1EH#J{_YOy$kx++2aKF0|N|29-*3<5Nj)rpFTwaNEu2w3JIB zQ^{Mn42#c8a-(?_$-Ls~D)NBr9I7kS4BBY9yUX1!>x;Qf?yl}mlOHw8ZLPuGW#Xb! zR&@q8RkXEvJz;b~d_Aro&LX~a@^SQLdFsKkA-ddtrw5Hu_H`K+pSDouh_ouH@imh^ zDH1t5m);QHG#IWj3eGI!b;`XVPteyLrXEa!#t3wF`ZjuH50(vq1L8|1qsMb|lE%%I zTzY$^TrjR_QFx(bC3z+xj8Z}GR|d+U&jdnC%>R%#wSu-s(dPpAxhX| zer;y3h+Q2Bb312F6&gcXkKf;0t-cmzl45xJlDgr*_~J+=)lEL-R1T>f_EJ;m z_O?3Ltl*Z&A@K=ieEMQJ98S%++r7!ZB7oXmjXo%4hzyKRoSd7R^g($^xdoDo#}_gc zKTb<-{Bso-sW_3jzL^mxikT<7-twLtxQ{ZoEYP*S%-insW0d#vNXG2=LP#dnY$4TbQ%6r*n;Hw4LAA$3 zR6r7iG!g@MdqY%jbu-5fNgN zPx<9@3@QF-FrXeLc@)ZlQd6m3RZd~dF*j6ZL|>P^aUX|y@oF41W4@Tm2{pAcK)MD* zp;1#D6#p?K6Q#^8rrJRnVn%DpW$9YuZwo-I2K=Fb{8}We`yeFrZZp~p@237)Lq2A}^pgM$IU-|lr`TnRu5D zg;xXv9&ae*^BWM@1Dwr5NEBxNBUNbN5#hU|4 zL!oz2>O2j4)NwtLxfcTCx(zt-od&EJIRL*QDpiTgd$_-tCUuC@6vj)LpR^M4JA}!f znP)B<&6`z*ctQErF6fQnvR-qNNLZ+>mnLQ^iE39J5D8w^h^YvqVW5+B26&2D?7NVYYV1wL&8j~YEcJw!rEMMOnX{rkM3)xMAqQ{qPdN_VT9XF+(Zv%9;q zw<_q~h|Z5s6 zd6X(3t1K=IX=M3T+~^w`sZ~uwsZ~+R(0#n&nyzlQ$6&FJ!b)(L&)`KmV7D{DtC9S?@`A#`^0M;${Ji|i zf^275QDJ^gRz;CBH@~0|t3O%Ug_V`gyuyn7Y-d4bc43h-yQna`D7U;Izp^MhD_d$L zSf&DHXe83ddQbreB-QUI1xbsTr7ZB0Pw6Q(<%oq9io=UpF{6_Vh?6vu$qg&{s*uVR z%PpYf$4s#tqhfMI<3-uSrOKxC@egNaye5Ek5JZixLSRLMvW`>VuvQTh3u_fgVqwjI zxTqGa3xI0$r&u#ku{e@!p~h&V(nS{xk~~H}C9Z^+-5bwlDq+U1LNVtC#mZ%LZmz;G z#Rm1iX5lI_$2E%0p6DRP-uBcpaLOXC{G247iAlBbG^V(5#!R18Fozn=fIV>^pLwQ9 zFw$`^NID5tnPUD5D#d)4;>5jzj8C5*lUGj3vo+Z{%pzI_$0x@uRy`PVP*CxmQF7x` zDJ~w$iQ-;cW*Jw`q)f~Vle`jUc&bcH#Hp*yi+*+X#ub2hiDR;2Crta)!!VVj3W%A? zsUQxCK9ju(bz&46b1EcDI@eO!VO|9)VXmb@IWX>}nHMbpd*fbOMM*wuQdwhS11jZI zNX6nv(TA}&?qSSJswHp;i$g;NH%)TzfcPm5vErsQU?p9106)o82i#=S7s|vu)qr0; z$Cv?tBYR1V!VhjLC7!ZKso^3pu8zQo*Kom#(Qx56Yq*pmLBjLKRp$M>SqCp%? zbJ+|P7wi;jC_+*UvaJ3^RXIeAQ{}*k*WAELu3{m;D3`IwPb~i8hJr+l!)ZbYk5h8M zS=z%d9p4MF%dw6^A$_v5K~?tnJ#gxLek@#(&enkG4HykjJ!v-yWKD%1ldPcOYYet} zF;|XZx~j2D!I3dewPMB|ri7TDd3u7-DZ@wfcza?wW$t#wXm*D-z**^aw>J7aX@c&D zSB@nhYM^s>LhHl|2Yl7xa5v^>csg&)#DvutS;TNrv)x#24smi`;PeKY1N4MYuirxt zulI&K07)41<@VpXP{FHU4mJ4mU4Jt$}9Ym8794Q~IQeG6G^0Q266J6BN*x zSWrMI7U>#9M286W5+8~l0^$@sl?Hkhg(aUA%RpI!h!w3scuX1;d|ZV|H7EqezX7x( z;!=s3N;!d*!4wg?jeJVXcaYrp?2~h&&n%#rlA)>@k1}Mg0u`7T}=cl*v9Ck`euy!UU<~V0In|>hEz7+R+IR=9mZ z#H=YNvj!|eLaOGNhN~EML_EiGA!t#au-lI_E|ix zQFi|9TyyUyA3kABS5!Q?62c*@03jyjfZ0B%cvXy<9Gsmjn3*xskaCNg!9W^<8;u2N zsGbR_2P#hLsW1+TwtDt*LGn0FN@-{$=V)sE5(Qz{G-R1d+!@d1NQvDNqK{(4l~-}`WDbsdvP?oUo6<%rnZ0qs zGg;>RL?kbYP0n8WM#Zsw_Qn-~dGS&d&q^jmW6B6mTvp&DiaRi4Wf~aClGA**W<|`2_{e9A`mRK~80HLB1 zKqal0Wa&6Ir=w(XoiAAe<2eXR)>*)g7fxVB`#3yt{Rf=H{zKWs><{G$4|r5isOtIV zx*=cU>k^k=E4u|$$`3}d;;WKV#C$N7R~}^*{V4F5K1#Bj@+m<={sqj%n;_8q_2G@L zI%36CgNze5hJqRM;qsHoig>0;JmepyCubKVt=$6dVH7Ao35aOLC@zK{nK(ubklchy z;kXIh0?NT$M>4~>_Xjii2Sz|l#UxFgT`0=)DxA5MuKfJmLRUpWHuh6;E1Y?Gm05*( zWtEkA`Pr3a1+L=4yyA-DiXs@#!g4knGOIAFEU&OA%Y{Qws;PlWUJ}R#6)TU3Xk8g; z3y7WAjM1AZMtl=BV#n5O+}kG2FuUk*AG@fC2ZvS7l|{yv1raSRaTCh|ZhXU)thnz4 zX7buWK+Jc-X>49oNTNsMU|E(cuc#=uA~&}UxK#~VUv@(dBSQ+5P zSB7N8RR);JD+2-86vjT_QZCa*O!TnT+Uf1Wf)zIB1AZ7IxP6_WrNW7KcIH&(6=vrZ zV;n8Z%68`GII$O4QILhv)tT?g$}h(dTZs1SswgjWifmxQnk;S_ac98ksqWsv~MC2`bMQ_f)qEeA})*N#OTTJJ%mlA@(8Eyg+`43IeA zYG13DXu0rcaE&F`ZY<&8jfovXMoHK*9k+Z_Vk(0vk>Ra}O$g5YA*U+NuL{#CSPa0( zARP3;e!asT?9Ozqs1a+NP37c+nIe2E-MwTq=OwxUl@5CV6^E9lh+fW_a+|4cuCL?F zqrR116h7)LS=uO?dPAs`%$i1lroMtzjG7fn*8mZ}bHv%N~-~o!htUGQKdzFo(NxlqmYrHCRAP5EYlt-8Un#Ccju7;dwj4-Ia07yF;i4= zYgPDK6}~nSzLuYTlnOseg&!3O2PI!Ry80Q)tb#rj^m#IQnX#mKX=b>?7drab!$vh$ z9cd-<@JTpVBg+>2#744~hbxtRwX!0D(t=AhLblx!I1xa*?1J{;yWFD2?RN|F+Kb9U zuDXa?vPyE(0yNhGt&%G*eFBr$6OFXG+#N=qt|qzRTILRU6^lsOC}faiqopVUd2m`< zl3{||KU2I}*vsU`R?5E~_E!)Ua5vZEj6`PndO^k(&S3j`;c=6Z0qs(Wk^)ob#Is2u z<^cNWW`#QaxPAbq$^41Jfcm>*@X1Y2MX1A#W2RWEp&jnfP5p99s zCU=n5rXl*VQZFjHfl@ag;i4Louig^18*J=sr7=Uq?&2{EwT_p7V$Z^<$s640gXL9A z)I^_SRaYou6BuS4M@#&j-WJ(%IGDGX4jY5ZrOb6&(4m?GJ)RC(04lK&!d)yHhFYqj zHGV3VH^|Y!GTI4!Tl#`nCNhFZeEHj*v|k`XL60bjj7wxZy0n$sB-`uNw6aWy(y%rQ z_`#*mj9siCNS@-rrOgi7$`DR}SP^8Z)DURu#)4z3ps`PsWM`Wi&PrIMfLY@Yh24rS z$<9Rt*^U*9_by^M9k3FWNh{qUgIwk3%u;{$Ow-m22?A$pYqCZnr2qxeOG@K87`(wx zZQ1PaV8c2Yh8k}SQY6@U8EIE~TSd7$xPja{Uwa2iDl3iKW)gUb3Go!v+a{k|@ksdabA zA=e1<@+q%YLAx_ZRg#0RExQ&k(1OLEJC;?FlZR-s!y3`zc7^%*H6e9cfGalYqq52I zS@=SRp_ySZsLC#Nf}U1oHp@B0^UT^qG$!Xx3(2T4LHB(VPqhNnnGfT998YMB|KX+cAui>|$idCb2BRj2vS) zFmFT)gS}~&J8YDysXGv%Ynovm-pRAN5a%unp2+QLaeHVvJtiuS{a|$Kgh?(N%%B8G z#Dz&rWY&b5ASFA30Y5hU{%35egSZs&%N*!L_3myg*!v*&LKx~=WgQtDvrlFxLnIBe z+ok{|B`?WekX438NK#($C>TZ|Dx&N-@RaaQ>Cz4OtT@zxF`&}t?F2jZdR=y6WXdBa zk)1k^|6h@F6LWSZvdR)!Y6g)QkT?rS8mC*%0TRQi5?K-DJTYixA}gX%Ck90|y~HrI z1VgJz3{)d>Vt{FUN(?lHn#7QZtV|4w6M`usBo%Inab@$C5+X6w_*5iJLojlDX;k_9#gf+3s^!O1h;=A{}=7Ol?P{=XxkzhSdCS#smVeCimGC8+~hqfeSK zln{4MCoT!_x4Y6iC=}jJ5iFtVP5D4)$UwiT}S&Zaiq-FWh6cb;7)McpW-c~w-lNc;l15yQ|E4ND_ zl{_^bn>;{`n~nZTSZ$n;Dw1k7$+N&>Px63hYf2u@$19V*EPZV{s+>Gs6D~;bqmd^M zt=Jq6x?OpgV{S?w0gWtq09g|yR=j!Qni%Q|1Ug$$oH8$#lDw$qBvIV{q&DKQG2|&WCjN=6Dr*h%84PeCEyb#O(#DvH6z?D;!PC`-P70A)1}ns<^Zdg zsUkO1IBc%+) z(O`co4t~;9Jn^M?sKhz(BteF>TGN5?JKU2j3YjVU+?`}WpO|$c&V%Ac0BG%K%Cw$a z56kbwXi_`D3PopP7%NEhW{E*q`|c)fD@jl#I!|H(d_HR0$pcxOB&NaYsR!?uB9tXT zZ`b-jlBe;`9F+PpI^3Jk2x$$QRJX(sW5OucixR`-25ll=>gTjHlNiRWmPW`B8c|~K zN-y93(+bs=*Mf1AOG1Iw@PWYUi(L?26*HNHtV7L%Nvo7}xv;ft&ZC+0(Ko)!|&1d?Y(lOehDk(k)oi5V&G8h{GG zUqLSLC&n{sYGqH7YA|F;VlvuzOC2hkb#ov|I&>dwoU4@s%w+gzdqM@*V%fkePwUfk zCwU~AYVo_Jjv{p(5;}=R;d>vF2N~KYB$YftpHM*Kv~=niQb5*YHtWL;1vp!ukcX80 z|2rP0Q?#+oP4#g3MM`~`XUeDH#sFVW=x}+}w-RQzgOI>8EXinvrT*^&6dhlGae?DV-qi8UaeuoGJqAgjla|cO^;PwED2Y(Xl;AS{jp#tCLa$ z8$(u-U^&Pn37~A%)^Xy;Gn67~UP;ojYLl1>uVGx1hlz|FhZAE-ImS!3_1Fndj37l^ zBHt_k6GK^ZO_elqn@g$)$^s*0u)AIETqb!gPj5QHi6K~kvC@~uM1{xFO3JbUL z#8~wBGTe@mBm*hu=%@scFw2}9BllZuWTS`u=W+i?C? zZ;~+8R%()m$`?uzNSBAE2!dR4_ofI_OHQ3oq%nb4dT^yLN!gT&n)pJPh_GUiBm@Rw zq%tIiRQm9WI6IA#4vB#)dO{tBDwP;YUp#dv8dvH-u6iX(YD~r~i4Up4DenKLh~=0| z|35{P*Y+el2|Mv}L%j;iiNdue5QKxSEeRZ;roDEuWHB~2c^h9%;pBi3-SlJwlvH8d zts}Y6b0Z7CFdGwXF}`SI8H-|&QDk#~s1h>BYQ!2qH~GkLAZBxwixJC#d6OFQIXca? zp2~2)=bfZ{4*W@=$xs05vVE(8cVtfxiE^RP5 zzxcgnnQH=<;+i&@IaZ86=*je`hc$W8g`@?OAgKroA9>Zdw3n4KzpRr&xKo-LT&5)Z z)v{R00%Gk{MGuU1FWvXQMPf%C+zdc2uzkU za_g3;fJVaV1%E@+{y7)c>{mBf%PT3!R7p|vTq%tpaD4$~#05ni`|QDhiMPfb?CR-O zjFo})SZxg;I`(PE>Jr^;Ni=x1=Y9n2oAoumDa8XYQy|!vDWJ!f5 zc)Xld#6w*w;-RKZF=|3|$w*^xO$T;!c=MkVDMJ9+c%)H)@GG~X7lyr*)+nSbvB^S! zlbKBhVDASJuj~gzjk=vfPOAySs(>?*otiBKWHaK9D*f~YlG+k*%;X`s3?$L^fS;7a z+<@~*#_votO%R@Fp)lsLQ39urc<^;1G#4H7GrH10!lcg;Z?z!8@v$f=)QXr?W`CC{ ztkoz8B{D1;xKt63+|P}An>OHqFtd$tQ0xSrOWNZ_;`qq?8Cy;Q1FJDp7BE+B^-4o^ zSCg6vi0S}LtZ^%i;b(hs!vjUbAlv1ghd8d%MLo60=fSZVbpnCf8tipxS*#I@2CyLX z@;i~v$*TtuF3N70X^18hP1O-+#v#8|tZ9d6jq`Ux6QH@iaP!2SNy^J)@xl3+{X|zw zYY=sug7y|5Tszqggxj8B6e3?kS%|O&EXSosKz^`w2uF!{76n zb#E}@ZNl``OLqzh7d<=bC6&9v@1YPDC3w+L#b!@u4;a$m78Oa`K6O|Y5zR0wr9C*- zWMLj}P?0OF@W%L83*+)`5>QytL_3!WIJqP@&@zi~wa;yoMF!y@x|Qw_xPys=g|{5-0JkV?}kYfOy+tH>CK`0Qw^IGM-%Ghs-K9VGs^zrmXzN*0NH>}9U zAk96{6*rQ(HC70v#)0-t_kOjy=s1&TVNFS@C6ZHt4VfT}Xt4hwV|01D*5gb+dsceo zb}*guC_`WFGW?M08zHne#L3wRw*odw9k_K15t;*=VR}g&Mv!g~5gO--2wi# zxUdZ8SOPti&H7F#jE04ntWv(%O<+STj3p_aveT%FxQazKM2b^|GcoYd2Cm{@LWwF= z9yOLLA62a!+!dokW?PbNJ}#%Gx7>-?MrWlD)|}!9?onJoS`w5CT9QYfJf0`-(ZJy& z>W2b{C1_X=#^xbAbZj1G9`%)Iiq$P{&I^mOXp+bj?@sc825NeL8gzv#$ssqTStJdi zb88U=21`Rw5oPbld6~TQeYq6w z&PZ(1ccc#ufu|C(z%+@7L?Qz>_F${0ONQeO<>otk)oqD#gMm4l_~eRrOSOV6 zHjJs>AT#j97(dOXarlKh7p^8RqZ2&Q*ie0Cw~OOrUnv@iYn}%*eggF=*%#RBL0Z)OY0PR_-^(s*B23YvFgmSwclwPsVe(Qa=?amsh=-&W4#lDw zVNGAD8>ER*D@JRFs?MgP{AnXrrtFKcJLQiX%UN%>OXUDfXj0s>XPp2V&1;$SQNeHXs^yG$GXj9V3k7j9Ortax`chUX4bOC62^bDnc|| zjRR&YSbno){8l+;#KfiJjfVLwm)THNBE^bfw3_T`IXXtzNKAvqa2a1<=rECJQ8kBI zQ7tEuhy@sZ3aXZfhboT-1X@3jWER5+_N<4_63ND}9Ee1YWk8cMY;pNjT=I(3NOIl= ziJIebVd8mcyJnMJStZg+m*Yb<;QXKru&czi8ge;0ufNj#GfZ#X)#8yWvL+4|Yk~pX zei|3R&!$}*H54()7h{^3Wb(ycXf&hhc?pePwtEyOjQh^xj`y#mIMz;Zey#}*PMa#_{nr=(`vZ?3)=Mw{tK zGZwGuFmB>)`YA5{$fSRa!OgWaOJeIg_A7aV;flS~czE57;!=6Im7{fs=_IT4sD_UB zF<*K@DQQPSUGx!Z4q$qRH8|GH)SegqF%v_a8`nfKH|kjt#bm`G3`?1fSULY{>-)IL@R)wiN{$^RY3!+~mm@k|^}*{~8K!!#A;847O< z%9830KkhCxJ* zMcJ$T7*=8GNHgi!5VqvU z{{vwhBSkb>ASH@sWn7~k<-~omXh6bH8Vzb(Pg}LPGAdGXIZ&|vi@kFEzfGh%py|*A zCCV|%jO(CUz5Xbl>K=>O(yTqohN|NAlcjr~2-b)mE}u8xKo^^JSPphHFZs{dDe zJJCL(Z0yW5;Vy-6FI%fc`Fz1|g}i%@G?@0z7o0&3&8&!-M8vaz6{G_&p&Z8LxW67PTDp8cNg4D2QALO< zlGOs%eXvf}<(A$m`gf|HuDGg+gkjQ+9S4{sOAcitZ<~>RsKt`Nw4LntNTJ256O@c- ze7@Zx>c#T6^q|mqxTG;MN&-ryBsP)`BjnVwIY572!0$jq1J;!2Z)@2vcR{&RDw2w* z)>?QmhQneQv{45&u2m)AH77;;*nk{)qhyMOqM34rOv2wz%Z%O9!F%AdM*rh2*%cJr ziRqpzYRu9Koo=j=)&$8C$V+QfIG&&=dO7F}WN*vwWzZP%g00wi6qQ)2$A4af>T01A zQK|FB?1%>D!$+d$nIn>)l^@c(IVtHLu^ftHwq=cpnlvDiEA&z0!j+g*{D5SETt2k9 znAp?^BMftCV(oMz#W%{7B$!gm_8iHOUO0|reg^gM$UhY%JR&i)tA&oLZ<3z@5*^FO z_-g9B50TO$B*mwUv@7E>v>GV*n;Y8>^VwAdsJCtSiwVd&>|6POF);ZX+uFESv6d=# zwyNEoZPA%q3@>)>W(uPE;4GlR!xl0o2Qw=+gJ?)OOaa;i1O?8Jv~z*X$N1z3Y&zE` z!e)>9Z$;i_L3Lw&jB}tp5^NDjMhjM-ylDK&OM4{-DK&de=8=)rycXMYkQrD=75wKS zyfTH^CUba?kb>%co?svpXbWdXhNw^`UF<}GR4t@x&`t#TAu!o>d2wr#3di?QClXcv zj(A}rV1&fZv@=&@O9x{iWl=}}ae=ndDupz3ZTu58G!EsZ62L@S`JnN1DUxRvltDMo zeH6Efrpa`*m}u%*ACeSQ>&U-U(pVDz&y}bGzUGSG)>vQRcZqmbgnBUz_eA_uD!MvH z9)eFbHIqx9AxzPD9X6CH)eEEIq(TjajTqENV;ElEYEYr{JgLFa93^^6Q#LHt=i&mS zk{8FMY%u<%I>yPl9WES8Nh#CD7SZ%p(Q+$hv}lT9*iKb!#;OWc22@_m=$TXvN1YYr zPZT*h%H@svs07A34b93ZC&;RJR#Q08Ezg&#+?0pDfN}Cv&;~s^0S~G{WD}BoL4F~a z+(gcwnm$|%o0awE0Bec#J{4HU5%ria@}dQHA+cZ~s3@D5s)DKy2EBrDSW2E><^1DV ztuZHDIT6(6$ZcoRWFzX88$ooXn!rRGe^XB@$q-c?yc`4-AM4H?d}W@b$X=EoOMm28 z*-1VWnhJ+|pRj|8X~7EeOJTz#?aDGy1v^m89V1NIstr|QE!P_~r7?3#@-e3~tzVeU z(s)6G-;Yo1G6fS+=|S(KYdo;56qF1+TM|%sP?6Cj(9ooZK5@iDbzR5jeK}u<4e6ms z5f4Se3J^}_M_7<5G9pS6qFbmrdBoU)IjnQZKz=_Z0o0}^C%}M=zrfUVPAi2r6J{lEMd{g1$&MtGqiRZ14 zJ>SePZ9dY>iDDQh;Bm%*XF+?)>WOOg$@F|2#4-6$mCC1TQTb4TrdXtsD=%ICW02TV zl^=z4RD_s!~xM@&Oxs5mP&7w~y;XDkJJJHdjbI z2mQ@Btc}$8JKk#Sw+dQ+hooChv}$HBe(79K{xu*vh$w?);07A|J&3wF z$ulkn7A(SU8t%CWQ6B_p)Z-yL1Z>Z!G%oy2uy@l6TwL1Wq+Q!c0IWf97b;f3aKkE= zy(0Woe#~Z)hR_CrEL|irk6~=GME59h$z#H3z84!(l0z~@-r28~MwO>UmYffma3&Ca ze7`HdJ3Sm%%c*yd`f!!&20@#e&{Z~wmQAz{!=%&K#crUj4b6hdAeJq|y-Z@)->4w9 zAQ?F>&y{N|XGXck!ex}>>ge%r5aqqtsPlQq!iNiLI$O^ku?sw(v^-5M{-l^ZDqX?4*jnihCKB&Y25_b z-YMG{TRE{;8ay${hZM|WlMBkrg4C5brO8J-`OJ^bR&mK;Fw}vl)HUExq2RU-G0XtKbca!6x&ovj< zv{XN1VoHx6A4pPso2~H}+QY_XmJ!0oBFLT-e3eO$`H$`83UYM$T*dLa@t56njlc9O z$wGRLWYD#j@*WKN;--r+cFYRYIsF)8dzn;O2ucq& zv1DcEl8p@2vhODr7KQRY)=v&Cf`|f8b6^uUT`& z+?@W`o!PQY1zhMt-XPiMay9Yl4BrsKm1Ooxu8TH{RY#zmSXfLmho(YIv>F6;E{XwL zNWN5rGmK%l=m0Y9RrVLvHGOu#-ECNWI9_#iWPH}+FTyqQXw zMJf@dF_BQ?HWMyV#1l|=oUjo!Db`3HHu9k5WdRE$DxV>Nj1|Zv*YE#-+`SKM-Pd*J zc}a?T?}>jTK8lf4krq`&l@wc)l~|KFwcApZEGw}rS$~o`iASL%T4F4TG)dW3>Y(H! zX;GLK)66!zQ%nOSi)J^*#N{1qFs#2O2X&Dz(bCZew8^d{ZOA>bHNP8u^`DPEk5MWSnpBT7>qdUh&y z9%(70OA0PcP0aWWp%3X-`)&lTZs<#+a7xDycwN69gD28P4HtcrS~-am5MRzmY@~(g z+LQ!*{ru}M7! zKXp@NL>30^5p^+jYmV9Y(OF>qUPcj~<_dy}YJI$uXirq-r(jgGoZOp%(Tb$AG;BKY zoXvpLB6()jb4S)dWXi2xII@=3%a`7aHekYp=6ONCiutq-!8HS{Fa=>l!!JfPKdInw zn#-K8vMan6hAByavXLb)#3NTlMQRFB_$T~})9_R@8IyeI(UfHKq>r(Qmk>UFeEi>7OK)9%PG&J&}C0J*`#cIg-%PA*UY?9f=i3% zoD6!c-g&Z4*+5CuPkf1Oi}*PCNneOHtnOwC_YyWV9ow;_QRF&#GsbN(imyl6XyQ8- zvCM2KA6tT*HOEX&xV>dC5<~f1ibjTuNk1O>6@M$-XI6NX%6ct6Qx(RGxmVKbRYp3> zzlf!+fE~%6uS#YM40=$0o3Obu_z7rwF+`h#JE2X9hHR!lX63AI7Lyp0MQ8$lD7~qb zC8+^v`dNZ-x|F~$^`l9y8itcxEiJ~S9u%^3$Vu?l2@aR9CQPeDgW(?Bv~CRYR6(99 z<~s2_u4J&#JlRjhZq1#3-e`TEp#h(iM3yI=Lj}v)Q@#_$0@4e3&A86*P!vn39)wJ& zw(8k1ClzaD7PhXTh!j5L-}I!IRc=muzNyTVgJ@!Ub`r-#!w9}EaFGpPKBx3lyCdz5r zGBL?6M!Jp=Q+yZ42%eXz?!?P6WO_ynzib}rxM;nspG?v5+y`a>MBJeIjTBEXFET9A zNVv*3cgs9_W@^%E*+CduA!4;9*x=k0Eq^F7}+N!W%E^BO*IxSdos`C>!7mh5#lp)8`(G9_jSA|Ry%)cia*nfL;B zy_;&;uX7+<-bB!|3zaurkt`>v8<(rkPx$~$vL@mpHUVE>T)PsM6l`Jn&z9wha_1PE zn&vr#Ruu|hl{w#SfEG`x zj%T`msD-5wBI0mAo~}M&pREx*spgdt#s=8(Qma?Eb4OwtJ-dC~+3KP>p zKeyP4iMbCTM8?=hu)X5ud}?yy6SJ4&QI!>oWAc%BGf=N|r^6C#IE4a^u9hVdX}+;j z-YF1zX~Il zBW!i*a8|OD<(dnZN6~h!tFDBL3HgRwf#`>1ajcKUC}=l@SL8<~X6XAiAN(TSO>Td( zS4%I8umjP;#-}-;(t)EmzGAlKv)I_|EexeRc31}zagSV-NPP7B7DviqBKPT zP%epKm^WfQq-885sv9lZlDj=!As zhT-qUW;Q=!iSf4{^^y-Ri!-uUi(zs1>_ht9wCntImK_78ap#o1U?$5Gjoiy0x>b3% zQklCncY~$L^Xq&!uXq9kV}^UFy3Hf2yS)@aD`vNoWsPJBBr!Oq1EHtJv8l}H<*69D z?g=NcvqRHajF-4dHiJO`Q-XdAKDyZ7nv|=6C+pOxob2N|8Vf!4YjYPbUW$<``iTv9 zG>DD~(a9iOpSqfYT8^_5I8x0RKE|MnEzH_;B7$de@p9W&{F3a9s=^t~p9lNXI8Mus z>E$F-5(?Q+7rWw6tb*~)J!(^;*-28waWutnElI&l0Z9ob^rFqpTPf<7_fzb+U293P z8*xab{c)bRxYIQ9`$H+!B*iQeH=|cz_*U_xyu~6MVsPyCG?!z7i!eOh8n_p9Mc-P1 zbngo-#U8%3wOE}PFN9^KR5iWDmL-bmtxDtoX^JBY9Z7iy#sT7W?<`S7-LuuQ3nckt zv^Jk zAvr-iPs*XB zDLximtqoh**izj=K1J9W` zokV!l;Aq-*tR%P=;?~;b7d#VZml%rA$3PI%A*Pp*HQNNQthGYSAK37m_}Cx~BnzFV zU!37CoQzK%jm|gcr#$)rWJ2KNMg*NAA*(9ttCS^RfEP3~(k@^!Fw!*L)7)^K3A*PB zLF9rZd=7#N+f)$sbiyPs!sn+h@EeqHnpyvLzNd8_pCNh7MG*KSkvaPmue2Z4B;^F| z|N4DRl{A8FzKDro$A}nq47x*$W^;LRnjcq{{auwGdry3-$LTz*ghcp~e6;L02`=14^)(;*W<+>fpx8cU;MPQJ>nU}YdA{VCiKC@_XSfiF8RXO*NaPSK=G zW5opKS@_Z6>d1TtV8atCq!jXRJ)~F3ZM-=kHW_=vl@&wtP0F1l&gGJa- zaTv$5X40#|P&wwoiHu*x#)CjQ5zj#Bk#B3+Ljq|YV)zr1i4icfaz->g3J&RFR-Pv< z(C4FLp}d_|=>j+6bD>loQ(n3{A-O)!(fC^DsE)zBU@R@yTRT^EHO6xJa!PSb$oLk6cLsrOLqP$;Qr(P0=#j!@kEL z_7=FJ)F*h4X9g?F)#JL#PY3P=L-5$GEI1)=bZ&O(*(P$*n?DL?47i0~f=;cmkHPt+ zZ~?cNutvSqEajUE<0%72qB|p)7Q!`7ps?`BW#x@rwlC+y{veMS06Q%H9=!^Uq0)*F z%4>@YGr&DBY35Jt#5Yq~Rya!0vFJ;ThNh6TbT>Af#3@WvF1QQzxfhMU_)YKgQ{4R4 zvSAyXQ*fI9M`!i)mae2A175#!YBtOj!sbFp8g!UXQ#*0GiVHJqgk)4d5MX%fAy$UC zPkc6T;ufa(KQ0Zv1dy!DUen#CBJ~q=5Jl!#T;<2|$0pGRn2?gzIL_8hddXTSQCHS1 zy=Nj6_+2u-5NDWJw}KO-U-{j*F#IO-biKT((mj-sKcPjEbU+0ny-` z66WmozkE=b(2TuhnX=>`0l`B)yq%IX3|}TpiIcOj+L&+Ycz;n0l$Spp>|4eiSaN1xfRW zhKSj4I*LE|Xq!_sB-cz7zIIp)Fi;kLHp4dF>eR9`q-<<@IR&SWtho_3d~Ep1DI7ug ztxFCJISlph>}tSl&;f||o_>+TI?W=STuJ4bm11R2Z_Wn4giWLDJ2KYTxoJ}t6fy6o z`JqF=wEFc!wubq1BLV8E7EC^~fmvo@9r8k}(lG{ul3(7`E61;>q+euU%n0SPv)txJ z{G1K4bnAPK0XwM~pB}ec(<*pjjth4JY|vRfrqJUu>?p2=^H-@9^&OcNIOf~9DK%N@ zvtnzlWV&A`oeuKrUtHtIv&Se37k5YH^bhQA@~iT2m>5M6R4N0KKM!-|4K^0eZm3($ zJSL)-$NbHRJRZHeG?aXdX`;XSYMb1;U$Yvm!lwE77dn@RasW2~9x zBpq+fHYMIH{n(88RO$rH$LQz1;(a8%gd)B^{$)z6*N!4YW`r+fi_;&yow~8h@Uz?p z);oKWgJJ@R5JQRQvQOB$BXaEnmpS}OR7w{3Lh7{XFQXqmV@?qiqp5`R{zDX`Y5nm9 zy6Pc&hsdKxxj9QW9x-j+gT5gORdo3KeAWV&PNTG;00%s?I)|E_yT*fV;GFE;QedQ# zd6zm3;U$IqCwpwwR;Ny1o0_;e$pciX7(pSi$ZqO#MRb>^*kv58eYq<-HMI@-cYEe3``D!Wa{D z=QRe?xp0i8BYm9u4KgwL+N4%JM(lJTh9kX>G28M!p%MhbI534u%*Jw#gDD0A#&n@w zb}KZdiJUd3U6w0>8AjscVG)R#dOkAiDbon1Qwh?=A7e6fD*Zf@;k=pE?D*QzwG@A; z6q5limb^HLR0TzI=Tl!-j8_>#qKriku(i*U+_u%SN<2J?8c`Rlu{MeK?g4-6r zL^iZ9U_X9cakb*xn8>W{;h364P8nX(g7~!oPnnM8#DhHFLuyfHy7y!kV?4r^?I50Q{j6e~Jw z=?^ITdq^f27=e=~&usVvBh$A=O(Zs5xyS-S;Teiw+5eTIH1Jnh^76;uzo$4jQbCW{vdN2PbaNa_9E) z6kmQ|##?qtGB5Dg+=o*1Cw~m9bzv8QqSx^pOh;}f65%h>HVoy!i@q-W?vgp~#8(ILHPIoSgvniw!gvOGs$08%a zk|LQF8uk{>Pw82dbA&ERDvQ5rJ*$M%*bt81!lXm{wj41srVBdfjqXDGZeEE&V=FV9 z9(ztCy;)p9Ovb@j1mm?EDvC8?9yg{SxpSVQx;pA$sIWbpR&BZb<|gG#X&H583L_lZ zO!6Eo@5Z>B{u#gCSBep%A2Ce97*ZekVL_O(GlPI0dM);5Z=ev-hJ}6bAc`U>pz6ma zuYiTYJb)EYnuH&PRV#(BO^m;ETZ!BV0a4G^f#XsSJ<$Vut`cQdALUZ_XBZsJVcJTe_IOqMt$b*e(fAAw%Pj9ADp!o~y!fdtnwlrke4i zrZoS32_=r=CO6kqu#l$Jks)@JYiUfLz0S@$hclp?;7qEF!E?p}13Pydr$I43Q!C2)m@uL_Io^1Xi4K>^IqX4#8Q$!JD#XQk^GC2##|_f_`6=a zJ#N(C@Ey5)r+x}|-e^~!ey?$vm?QG>sXB0tA~)~#C{R9;Xd$Hb;kd;>>ogBaKs}Kx?Y1qfP_bwD9k&-Oq;VleiBgq+dD&WRopYmQd2L&3auR;# z9)DUEq-k*ex_)Itr;u0P zjOY=^Jp;26gbyQy=(#eruGZ|(1R$ok?iZMlfctn%F1=7Oii2Xy+1jOIy$GAcUw%Gt zjiN66#(dFYXeVTzX5kI~%t+Es1Fi#rCI5}jCvOoi0MO$6Kf*8+6tmfy0CSBFWm-yO6} zr_mO4b z2zm;O$T*LNaG}Z?ZcbBm`J!b7vWSi95%z$$tv4p3E^I+pV=X8Q$Eb$UCMzr#uV*J@ zeuem4=hhRi1B0SdEQrDH=xsk}AH8`6#*lutkdS&ku4f5_>9ficlPsrzTZMdBh}E)_ zK>4hoFK`!;r*SPg-ZxZKEfu1!^mxfjNU3@}-(x3=l314HVx5Guymc)@ZWPbcqZ;4| z>bI2O{Kb5Ky@WXcd+-(nG;haIC2yt}w@SqXUx&Q17ALQo$Fk`O8IJmKY0f!Qg15%Y zJ$ZwA6+T8ar$Ut198-=Q8Db%anAc~UasR@@leRjX)WkJ%{fcwfS$^2&YJ5V0hrNC6 z{dt(xnP>deG$JML72L*oCCt1MZoQITH%7B(#8`6lDb$MeI9zeM96n&L)^jq=X*0&! zPfmE8gF{V-GhTgih>1!2=4EdJ+mI|Ma^jv<_yzul(U|{@y-Vq#b93mD9#qGiq+-tt0T&I6ig7!foA5lnZ0jKa;w;IdPoYtd+U>gA=9?oh-bPE-87Lyf?QnMT^0lK= zx8qGvy#$T95L}u1B;v1yWnzhr&=>(sW(9MmZ{r||rppBe+LI{At7K4gi<{(TiFumD z8h$;sDHXedUS)#Q(+v0+_0U3MTueXXqsTpY><#YL@{VCF&X3N-(DT^6lqG<>(?E6= zH*UQ=t}^NFmCg-t{LZ84_jj`tl@|Q71nrGd!gMiL#mz-xbWZnhvsy|Qx5yIIOesOK zQkJXYoU)eUY^E%38?+E-e`R@KnR#G9$;>!)6T$%5Am**gBTGmU6?u#%x|ZpwDq-9w zo^zBk)#;jv5d6R3@QG3UD&wZ`-*2>cx@U7}h`{7M#rXQZT zB=3?0GZzDFi^kwt^wJodF)zDBVAA=$!P;4i1!dOeM8x=uUt5Y{w;&fY%wHxZ=+{v` zh|HYwB~`_+;9%T2#^F>*>i8gdACTBWK}lgT8aH{2rC(I%B{8u+ESUNMmD4lFZ%jvo zIXUa$G0{%5*hhEC+xn5G6QGfMPqM+qz4KVXZ;r%Qpyt=dKN-TIkA|^uF1$ND7ly+} z`TrB)Y#0x`uMwsKFR6tW!eroW%rHydb0NHZEW9WDCgJ_zbeJLUD*y8m8YK>dhe-cG zxD`H0?3UHoA5PKE70Nu%{}a^kQb)t>aE$mXVa`&|)2rGXqx4PE)bb_Tz@Te&!u)@B z#v1kRhUxGM|1_wX!f=O4DGqo75nG+!wsKQ6sEG|T7&SW_r#?(qD&bQbAygi;YIup_ zV9n_K9ADwfKZD(qTs5nl?SQ~igILm})Q zE-kToO1(}1sof!LJHZ%kFdBymKfe;*PpQzS#eT}he>JA0k*KDX*>;?{i~||Xv@pIM zd3ZF=MaxdB9YFQ*8_ej6&3_h1;3sQq3{x(}E|PxT`kw&$FEPd|#KXSZtfl@PWW=ZV z6rNlRPx9{|Wp41vab{@i@!D`|S`R(Ku5oHvta6kQ%rP29w0GE$a0wP4SMcAbgyx&Ifej7pP)Rqf9nyFCzDx(aw5qi_62z`Q` zR(Xy#44OTH_(`zGVqFi1^e@!3X8ig?2uIG?44%(cYnXVx2Eye11~>JmjXMnFLdOBd zQJiP!d;+`tLYH@PqWO={OGNw4-_EBS237 zLcbH8GvPSf{|O^OVfRPZAwdSQenEbm(W|$JX**6cm-D2)K-w`IjjvMJRb1IqvBWvx z<+LCSe3%;Jj9nP`1g&c4g>A*u+@O+UL2Wln}+5GZ>3zkh?9_^%*Kn@Cdt7dfuk`eV%dR z7sMQn@p+l{5Id+dZtYsloq3KzBEA~6+6@QJF;49QjZ-j6^I27L-&!S)gW1y&!i;mE zxH3;NI?b<~Dtart^0{)<#Aq~vDWiSt+ik@*jskPxG;Q}iK^e7olN1~OkYk9mEbU+J zf|Bd(C+uvMi;+Pi+N-?cx{ommUZDhrju(b8B|JJt>r)yxv|tjbCmN`ho*-|6f1l+4 z^W=)Qh92+V@hR*cflmmZJ>CM}<7_;CKRx7JkG;I>W!k)MYpm8US|6f%aZhY6=ZB6> zK9QpHwPNeT_Z<3N1W>r|FqBMjN@K{PHQLJAoUYj zdzYG8I|N3pB@{J}?cEw%Pf<b^HrGA8a!T`9DwIP~!tvvSoV{}1dl ztb7d0mg@gnXgmHN)0*09*~+PVw<3NiF6 zSxY<0<)6w*hXdkLqSyZE+RjB_;54}ahxep1<&uJv<~w68h<0jCH4^Y;w`6tYUu4}~ zKe$MaS`uDDnYM{HdX82zOW!L#C~d;?obo5l;7RIg6rtlN|Br^S#@I9lhndU%!uo7o z2hxbrXfIMWbnt(R9Qa@d|MwSp+ePN}h^*dcDCJuLp>?TNDshkU-u(Jl@}0IUc%oWsG!Tq*lpg2;`fC!rN)v_eFb? zsHe14t;0*KnpPZ(#6WRnwPGfnvfgPW)Rx-+gr#WJ1>I2lpoQR$$b{Onl4gpS5%Ho= z+~5`ZO=ZGv*%4hL(;nprht`Fe$*dW6lyUq8=BQkH9V+Jta^e@78$06Z=jk*`u_MK$G28}jqD>lu zQ$e3yQCbbVg-uQ&RYMr3)*a@;z0j3gKEjd9HZQl3TxUkPY%9vQ#twMT`n6i_hWD;t zr%dSzyA6KZMDhAv-w{O@?n?s*yK{ZXu~TbWf(zCW%} zS9xWG>%~1CwiRRIhcCe4-V1(~({GSEF5cHN9X<3wtMZ5GO}th+&Uq9o)cem)}Dv(fX ztWeX+Nj4CkG`IE&t08zCZn@gB!ZCNV(xv^SHP*<)k*1)C(8Q*`ZZNh-T0mcXL{cGE zv{f+hb^K?HFUeJ-%u&{!D@ab-zmhhc!nu?<1GeRH$rRv6lMY&z<#h^?_E@F^PBz8b#d_CaO&Fbp%Egi*9myCa=$df$;OcT^LRVlx z9cK~cPk>?)ly!FNMm7no(JTX-mPmOGlUtK8aY$<`5>Y0r3DI0EEc9gto>t{s&cejL zab~n;dysGSuM#a=*puh4IseK-!!irC0b8{thMTsOTGhdZ1Sk<|BX@hZd5n0f-c0o=3zd)+?R_GFD^8yLj91g5j zTLjA%0(69AdG<+N1cO;=e)G+Q3mFY^?0A9^@tCK;eUcvB@mzR-IDv70%h3g zYndOdec0xFop!=5VYf^g4mGt>g6fX7>V`uS%v_B)!#p(q7uKV$82q(nQcrYzTIyxM zcY-rC32UZCbo~~%@hLw%KcoW??GG2L@|~QAirAxLZXKIQToNY8#Al`{@TXNe2Kso= z(p+PhF@%G~wvW-O=Ayk?R7Hh(rnK!8zmvkG5)#~XNHWPt*gtz`ft8!!oF}ww;c(H6 zAgoids9gCRyd)R9f8`454hn*>WR~{v%o?W&kfq6%s_Jp9Qoul_&h12%x<-C zFR1z9SZG>r?F#M4RSHv+T67IupEhA%{H0mcR?d+Y>6cL|-z(*$NqKOYK%)Z7oA5^l zB2i$?)+uqbm@a8aw3oU~BEQluOXP1-6|^VB+D=mb;FL6%*{O_9bV4k>9g}Z5D%R?k_o$Hbmga8`Co_Z7s1eE zLR4DVs{>EbY^OSFl)|-6D>`a*wT78|zRPpYL^vloRBLCrSCKQL_CoV<&siH+7-~)* zD~u-`K4I-jFF9)KFh^XDd28xNL(kf5a;dP$3B#`A1_vFVpQjyRLn;4wS-MRWFd2>J zC@(4?c}GU0V!WW!J+odbUPt=a6eG}Dyh2;8QVT7j1xW&OiYf>^ZDR)u4(Ax7Hs#JJ zsw+M21`y5}qaHGg3XR7Y7`B<+38mDQsJt50y)`=0oK&YwjF0Sa}O498$k$ z7=yWbm@Mt)1@Ze2kuIEP<~R*%k7l%mxM)ije>UxXxiBQDMC(@M<*wDcu~+m$GO}|J z$#>ePeh4Nv65)#|M%bnU0Ed?#l(0m4g-k4&17*}RQd$@&*NX-jjN--CjMwf&!KCT|6LeqJxK7;3xCanq%TP zp}AzsQ9(Jh2Si;jvidG5sb9eyDBrl3o5cF{wd#^@od?MtBWD)TLWP78&gY`5CoZlz zrx+aqZHX`AWG>zy|^q@=ZPM=*) zUlYm)T9s`HXAZ$ckIJpCi2=KcvXVoX%gsR2546M3+IsSy(AHDZt9z2hZPL)blZ@fA zxd3RK&H+WqeQ&zXc#5Md?I+gG z6ZkN#Yrf~0u|q-Bv!o}zr$`m0lS;aF7b$mbOLoIV2c?brp^fnR1C*6~$WxI(5xHWG zJW*(Ipd$Bk+Uhn*qxn%v6wayDC-{^!8+OToK_O`ra*FakGg)LnV@qYUl4fQel5?Mz={yw{u}hiI)7 zeR6uP6pgHqvMVp&a{jo;_+C;A(gU(p+})g`R<)*?^8|K=w5p}??v|u0N-eC{njfQ< zmyPyOw34C*>-tsJbCXTUkNzY@=gy@7~9Ro5=kTAcwZx@aK$ zl=DP@&x#f{mm4M5?TB)3FntfJkLo6;#GH$Ug4L%u)?n6K^{-mT>3xn-Sg*TW0(Tq0 zS@PZXoUKE}ZLhMMXcwup@JsXbGd_0n8hO&)!oaz#&Ev*bP2bPT3%gx4a&=r z|LU?ieicr|HYcmIq!&2Zl=D{Yp{vC8t=Y@*So*5mo!!=}D`2|HqJ1+$s`Pf@tgt{= zyHrjV2e}sur!})_b;LBbnDYAHRB|-2aq*9>7_{0EZz&K#+_9U&j$f~U~Y>H12a$1aY{5uHZ zpFzP?OWuDojQvKtpm2XT3ZJkWlzN3gw>l3pSCInmPmWaH{=vd39-@Q`+-_Xup8U)A z!h})Aqphv=7eY(iC<+Q{Nl{{)kwb~D-TesL+AiVc@g@S zJJ-2qi^IrycFqai=_1 zZT-pcc`k#0sK}_oo${UU4-XBO@9(ACdu=<`&XH*Av`HdFK{49ax-FTfwa0EzR*-Op z>x!{v;6?zC>;B1lWyMmp=N+T(-Euz8uv@cs^|$pn+diriYa8q3R>_Z_f}w#9N5(+sp7&Wr|ZIC zmkYoeR!TYP;5_Y-mSr)vw=OGgE<8lM#POlEVZhz#E@9Tv!Pt|0`f+v1oZF@2c*l5| z!GvkrnS!bKhqs-Tz`W_WL@(m~5deJC-pFUv_M(iCs2W0#x?B{Ody=%erqCrchS?vz*`7FKp z>IQCvD|MO!VbO?}p{U~e!e&+;IdeF4{t8qTqf<_)wer3nb-!Nu++3~1lJVX~QI-sQ zk5OK23i~8MxvV8vINWusGz?wfa{|dHQKwQHyk($WBw^fTSk-i@CwVN?l4&yC9FZL6 zu*S`0?>Xk^N8!VST!hzXBuS=21-;Ls9C2_@)t*(a!^i-FnbZf#5Kw<6p&&?Gg{;fQ;=NG~{t(sJKcX(z;<38zlDHtYf)$Ku*(TeA(spPPvyM61A zBVl+jT}5~QGirEn{hH-{aIcZ*#@Kr8i5{ihqZheSENm7w7UCR3X~ubqub3O^(I@0qNlpc<(Kl>sLP83*JRHn|wJNEg} zwvF)cdhNRjEXn6i(E~TA-A%^(P^xx|TSFviXP98O<+T%vCD-4LelWodHhV}Clc=T} z;na_Di~FK_PSr$L?}x&r(qUcvRjDHX48OV_{1Uaxc~#D-7}dHsl{lA1zg{2O!-*DA z7RR1EzJ3p)$j<3P=RvMiv~}!;GRf&y+^I+}3{xJxfaT^4xUH3z_AdH3Vl?Fvr4hYny;xgtdi++$AZP9p=xP)~{c zBs1|Q?8q>0{xf2^(}?axQI=kk0MCV7J@Ob1OC*|Oan#-mC<=mlHhz3AyZpL zusBbi-F7*?wy{K~=3;Z{B-+gZvfPV_3U2Pn1v+wPMd6W1_#90~D3yyP!1d6W)soR9 zKgX0|!cC*TdWEgsDKl=EUu?FFN*0}@v(|6EX)n06eW>(s?RxL89b)(bjrh>4P45sf zM+xnV&?lhjHBZUx+Ph)?dz-?${(t(9rvsOF4+H%4@73@s;eC9*YSiRa+mx%lk|HIHt5}yVzS=yOfr`^Ln0A{1iOAFMZ}PQJEYb zt!ItYDDpq4!{3zhVpr7MI1NVc5UL2`z-uG>`PXqa|Lz><2oq~T4y`%#N)cS z&R%3wkp;y?igb{yGa0d4oi`Ra8?T-2QAr1B_dKo{r-T&;HkB~>q_rlz zUDejMO_>nu?w>m81lx8>a8o}zr@cz6?gU|Z*i@5H_$0ZjU-z_9I8gW;bo%e^h-x#h zdz8BA%~Pw)Z>NS`62D)j zX3~3~C#;`9hz@5Dj({Vr%8X=XMrhMqYIt#clrbMO1xE^vdjo_$YNK^tR(JC$)=18} zE*|Us=tIPcX}Tz**N$UveNrrP*A{GAqpBkvPNIHt9XZ6BmCLQ;IYO;5@ zpq54B)2D2Hetvj`wAQuOO3!Anqq*Km)=##S@X@>{?^UVky?b3FTdU^UIa#l}o9pUb zQSFy;zJy{Kg0LmRuE0FQotv*kZ46p*VugQ zi8Il2kB>Rl-g%Tc>KwB9^oa2n^3t z>38iC8l|YHT6QTXy_KKC-CCg^y$*lU{yz@oR6n_C<8eF9NnSPXP)}N)3_Fq~RMLK_ zV%uqA$;7cA$|ODmSKy+%_J&i!(QHf!|NSD7C`Wb(0;TG_Vx0SL1Q^L$O~8ZEDGum_%GHN$4fjlzDd9OoySW#^PP zlE1SZ4(h=mg#|s?K*Vol+A3a=%&Z=JiZgU8_o}C!b{ETN*T_VttNt2+tmWwh-c3|` zm_e^tx{cj^GQxr1SVy)#1jJ>jQ9t3}N0_I${TR5T@AGh0=l&nG?^Dn^#dWD5bbeBG zK6r*wdcpdvq_q7UKVG3cn$joeG1wfI`t@lo+&uXr*@MbEBFYXvfGAE`4)ywjaKVp+}~@bVjYSTz*m!TnJt6X(t>B9UDU1 zQ0|eH`)OsKS@Zv1n@nU}M)pL+G^{*b$X(2F!M9afb4e${LQxS{2{Y+Ns?vu~fOHm(A2y%3?uo2RbBd)avNINQzTjM5xqou~zp$46d!bRz59OyQ?x(ssl{a~I{txmUw!ox;gyUTH;k)V-H_DMa)hC(P3kHNwgdJ@jYvXm6{OC|66&JCVDhQhx5bM%`VQGXX9AXkBRY%O) z`xjbFg#W`(Tq#aVF7qvJQL+8JEwr&1j_zAst=yGT-g&yY8>aS8Xl@SFM z?#P=|-H7z);jz5TYEL`S)g*-vb4;bO{<|pxqH|FB**pxfxtluD?3)Ku?8e76AHIInywTo)qByHR=1@5KYIGoWqnu9Ub-v_q@9>NqLePVNSC;^ zmerY3z610zYh1v!;4%APz^@r+k7^pu(K#dJ`l6rv%U(b3PC5Sv13s|xCew5?( zwjs|NS8;Vho{-*S9r--uB8s{Z?CjSlJSN*!WN`b&huhlP9>7S@R$u%|b)Y`~HTw8^Pta$IX>#q| zTiV*&HNgkM1N@2^pi?`7SXH}k z^euk9Lf|+-8WL=QJJS_dn9Wuas|=`b<%=Y!?gk?JH&)u~^LIBPkGA)AhW7T}UUEN0 z7|1cJ{d+HuUPh z&I*J6f*{=6Tc7`Yjc(_EW=Sc~3BD};r7z4Eteu4;^@Sswgb0mKwbd6M2eKXjKwCO# zv9IyvPBgBCo{AP=i>-jtl=G#HjPl2Ay)}590-yl^Xnd)r_U6AroB|62ZMCXa@_66k zcLpjO2I>oK?S1;hPnWE2F^qCaBV9^UH`m9BtP0{Bp`do^RTXZ}{CoJlp zlPU3rCEnP~0xbT02LP@wJX&A;VV5moec^E5!ofb)z8GEn+ijIfEV=MF3sIkcoj+h8 z#D5?N&&amVN41QN-_2L;O**z!dlMAhu3fM_%WR}2Z9Lxja2s1fP0YVe!5T0gY^Mj| z&B6ihtkf6(sdr=OFkA{CDCisNOKpZx?F9NNws~xrM|yjys+DJ}k-`Q~-|U2iBkYZu zR;afc3?G-;IzrgQ-squP`^HV=_iU+b?5Q{YjKB82h3~3414%Cl%!n;RpetD3!VVUm zLH7vp*q?FPe`WyrS&A-LbRk8TExMedcP)B1ML%uPPp9Z-Ec%%g{R4|;9eviKpG~=+ zx9I0n^a~dKLW;g&(Kk}`k1hJgDf$(QiiR2He$Ap^OVO`e^y?}5=NA3*6#a%p?X%IR zaAUweci899CQ;XVV>cTh)p*@%yxt8iHePS9FZ^YF;mv*`O9P$tg@3Fse7kRH$M(LZ zq2bELdgEKbABwS+HvTFGjSltnHO{cWmRHMCIyUyV(G9e#zO{WDWY?)~`Xv2<&<;tg zZ{4z`P1yc35ZQA#fLJ%gm8#I?`n=X&NKK&90bKqTGHS$OOMMIdTAVS1U|aYCzqahI zY#bWQO44#(0h04WqBRCo9TF4pk&^;hQXV`kmhm01a4^ndOM9J4*);MAZ0V_V4o2Xy zc@3n0X`gTIsdOtxkgPBKSi5%NJ7DZV4YRk`$X~ma{72i8O9$8-Kc+tqSkAY*v>pdL zs=d?|-K}iO<50wY;~MQ7x2IwDZr>6|2~@@CY!R4hTjwUG(7V~d?HT%H*Pd#F3yBuD zZ>v-p@ciq|gKUC4W%LMTn3^hI%opaYwzHrx4K~?gr#br>1*8X z8-`qeue;tjkW#vB)r@-mK7c&VAUJ{Adc(^+wJh*xTP(yfq?bkLzTY4 z_TIh*h(Mm$Q=^l=uC55C-|uVuzJ{TS`+;jm724m?QPp;j<{s}g1tnE5_X=>{zj z1=I4!JyAuHgXREd{cVA^(xC_`*qCzqE1hxb@k=PVDZ=DKl>x1*S4oX}905wn`Im3h ztlj$J_WI%=OSbYwlWG|z3*;sz--4&R?3!A`qAAf@N7dFddUB ze~5Uok#@B1H9p#E1C=hOv$7)bC8s04o(xkvf|c#t-}}xj9bz(&q_zhbY+>~uaG4BB z+Fsezp-R1g2^!b8UzED>s6?g4kxdzWl|)KH7YPYRKhSAg0lls5DqaxyvZMDVg zS-Y%;hS@mIT6LztD1^6t3o46-cfD78IJc$$7>B%vFO7HQ}P$vQx2!zvij zVN3OFxna{8;qzL znY!RO)@c&9;3wQ|JS*r#5#(9TZt;SViv>}dF3CzrE)?tR8Q$0i#Es{@( zV$W@3mykm4!sC67am0`+i!H(hJ2t6eNlIR0qN7%=_78VR2JMHGlVCXCrmbFI*t?M_ z_AT8Nbmm_du7Fb|h;}|)LH3&@Ee*+8RK0P-M#8j5%N1U z4R>aXSA7>|u7$@z#al4R_{mz;i0CUNDckz^j08<9$MBR&9}voFx9kN8HjZ5F@2$8l zrOp@sshL!Hh##(2)Ha^`| z4RS3LrwNy-Yk2(EMLh07S&gW|=1Af>N*DxhL7ZUW@fu8uRoY=>%QkkThlwt3 zmh`jq2f|jPlRc%FDH$mXkfRC9l38E;K5c8U7M~rgRE8Kut-V$gUC_4ywXr~vZiEF( z)IQKkDVv?%-?qsK=@v+{FJ-s0uI?>lh{{P8Y)tZJ(~)hz!0&>CZ6i*FA~!j{&t__i|^`-ZVBzHRICcC`ZK6CxV&eRczOh*6v4+Z5?Cu1O~Q zp*Fms)>~itd^co=rmP8yc;&RM8aH~Gz~WCmRlA6Nt`Ul45tUHobl?k;9Ov$k}yXuYQzQ$etx>0)CH+KJ0>YznAS`~<#V2g%tuWZDqiJ&7A zZ>tf%3=d+W7AtZAE3#SoH02UeDsH-^?f1Xww5^s9+!@m^vaQ%YgRH0Ro=(Ram<+Jo z%GBawFAZvOmj;`JLV&R}xK%QywqiSs8v+i=?W}GxEU+1lR0K(%?9xM}>1o&|4JpUD0+KwkdX9PB_r$?*E~#)IZxFRk6N(&W}9ms4TDo+lNJ|e^Y$(vKrRzphdVA8?vQeq!g~w$;-iSCm zST$*zGmA$mYC0m!t0kD`i$349=;D}5OFmdyJYK2SmsW_XMt$jb3X4%iI!|c#dnj%D zBjVXt0r0efwWz-I`*pMzA~wlCEKV|Qj?Y14vk|Mi&#{fV(U%O|pOc`*23h(X8^ap; zQn3*$^W`XcLDO1DUOjB4B#hK*P-|I$BzD#$;(#D@M=>=hE#VhizWkmXQY&)LA6n55W2 z<2ksDwf8mXVSVW@glM(|)lI|gwJ69Tv7i*yB-|~1Qwlq7y1nH~9?jR?efu9^NXy76Rt$I{6jF2xEh{E8IILl98TQgT)HFNX@yccwyJ7UUq>({_V)rjg*M>{$ zYvYmFAS^Hx?ffOfu~rDy`|e6}m-XdA`ZnzJF)(m}>KRU079_iy&|Wp6y-Lg3eqJuK zED`SI{r5w-Be@pJn5y<^jU4s?&0c;aqUZ7>P3TFEYg5aQsM7Ldl%)k{%e}&-<)>^> zSL2c>;PRPzBlfemvZ*R8T#ZATxwiEJx~KGYi?SP~h_bT2f!qv&u_-DKG6^WtrOw_e zgr^E(Akbhjfkk1(01rR}kt0$i^w?BC7N^?i+#TsUR7DHO-={s$E|Ee18$I~Oe$=mJ z8Iw3oRJkOcf&%Ou*qQc#(j{AV4hSaKWlYdSh-+Tm9KXs&l(vn}5kSI(Xv7Iv<5c@5 z%(9U${TJcm%-G-5p8&pE&IPWGqKEzw+H{i<&(A0Z&r(M9iO;7V?{5j`O> zhxJQCTcYd=>R53jl*|7bP-|_r)a=Bn<_CmmH_3|Xx(-}P#X34RY~rI+Skn=)WBCvJ zql&TcJ;&J_49YUupWkz++BZ;5@y3lvEpIgMqCYg$`@^k}!{t8$I6^LIj%|&FsN3G6i3+zRS#~nlGQ{n~7UoxQrYlHRjWy!h`i7JjQV#~&(LB-m& zN`KVo9Kf1hfetw}0u%nsvZHAM(3dJz6Cu^!isAT0QKw*%n(|Dnz-amSUPy)$&HMtT z4AIzrFH#hfJ0P}BZSRRL{Ri|&3>Vr$we6LPjQ^N8geLr19llG{v1}wT>iDhup^ji@ zY*x6HX_}^hEWf3_D0L8_i(LeeZEXZa0assVAX-_XaGu1f=`2Px_QvM42`ZZ3G zgu}&wYRw_>NokVk3#=9%--5Jb_GJ7GwnGxW%bv5~7D_ZusgPkueT$KpQ=AcO6rf2I z)}3N&60k+ksp9P4LlPxEab(4mKyxrY9DiVwh zSsR}=3hii%KEZji@e!?av6Jez2>T#Fc!!c|3FkpzqOjJ;Zygs zhFy;OvL9gMF+6|mOcMor?TkkI+L?L_m9G|pT9P@8ijI8yaO0{FGG79YyrQt;~N+F za~iw7o5Mz%g%C$b07n#kG9(i1_Sq(`^DBVmwO3U(*^ujv=fE~sN|Q<5PKPEswsSTX z;XL0A=Xrzkyx=TWr(?MYXN~Z+725B{_hbWyLA{8>E}S(wA49(s26LRG>ySce@ox(X9qX~qGkS=9G)t1SNApEsBdYi2r{ylUi)HED>_r@ zSKR~^d<$KnjA#39)Z(*o3!9YoyhAL)%~MKA#xB2?#6Wyotg6f@*;wN_Pq(aYuYDQ& zSZu)P?VB!x*hv3fainQUzG^G*)rTFTuYJ{z1iIV#4+3r@YBhMy;-Hwu(fcEZ8|_IF zBWtO#{Dr|V$&ZC2J9d&pYS#9bBHd6)0bIa~=FbN!T`of=NwgGxEII(q0TL-qpcyfrbSu&SIwZzCRMuGPT!!^iGacGhRlV z$-vDB=#LVb`e(3MN4uqRB7G!et3+EJRhI|_-=7xOGjdnk0DgW!Nn5@uu&(ws{us)i z!7q0A9Ke1Uo_&Wisr;k{ntC`Yyc*ON__d)OqXBOd(Y&*j-61w+?D)=BjquLa!;tGc zgH#*pZ8wt>jhQLF`I}77K(Mbb{lFcdfFEis3a}KJB)xjrh1cF>|GqQav>WdX$5R`o z#^0S`8_zKQD zGLw#oEhA#}o!|6%R0nh{md=F|MZ#BNL;cRjaqtrTxpTdUuNeAsR5wDS{%Y!wkuWgL zUlcMY-HqQLuJm{gu#!U2KE&(@SX8862Ddw}(1zOPOUA7`^ED-?EvBziHv_B8FALve zze!aPzas{%LV?aB0>9@7OkYtE0-oX+OJaY}xk@T0%6I2?=n$r-?LrkHhbqSCI~?Mv zM*6Nux8vk1DlclUCS#KHWra1g8lKv|HyBvK)y5)iwN0_8wx|}h7Y~$;^*jGMHegbU zRB&4B+@_8ChhS6v&gby+^3>kWUO%gmXiAUvA*n7E0E#FsXf$tvEaa9I`dXJp;M=;E zn6)`8+$nL%cQmnDr&HZ@ov&0}KwC-;n1KHQ0QtQqA=C%X-uz`hBXIl#*3U>REXU$v z$Gp1XfuVCMF1sgan4(%TYX-DY=fX%&umctk?kthjRKSblU)8>|QW3zis_+Z1$e7`Y z^*dj+DNrFHM$Av;SWGEncmA~L_~*`_MjN-~)bIQUilnA!?U%G8O_H&_lD3HUitWa4 z7I))=@{)Cs-g&E_m*n*Qud^c}odFh)h~Ue=#wpRAzadrSTUP&mRvi!z6jdFnOP06; zGj4BZ|N5$!J)Heeazl#NZB0vay1_gmXx)5{iCj$RM?OM^691rb`11_a@BAcbws(G_ zO?l@h2N7gfw$_G3J0cxHP1guiLb;?;%cNZS7oyj(ii|J4&yH%!pF9e?j3_r0k z{A8;gN(^KsShb0L1|{I@!lo5bWNWpraT{YHbBb0HMgl|j9)-VI6MfcIF-7LA#@9VX zdP(C8{CU*m#(x|@PF(3W>)f562p9`L=2PSjbJ3lju#>7id^3Cljt6_5%}gd5hlr)- zShO8`A8Ku73k?ntXWLL3rxqK!#}uJ$owhOyth{kQk}Q35Wmqr}+BNB$Vr47u%xtN< zDz$ZOsq+Nqk~+_^?c?P&f$zHk@ebX*s?67PX{7Z}sgJKqp*h!*x%gX!qS2jvj zaLTswK7&J(OvK=^jnglTf*O*kR-RO2_!Yme#wJ-gqal<;j?M`5&Kev4(*+TSGa!Si zxq7YqCiSEktX#Vv#h|ENtRU_bNTKBOm8khgNp)q;DA_5a3V$wAXA^L;<@gr~K;Qn% z3lK;;i{<1;#8OkX8UWwaM6ec#k3FjZ?q71_o#&4={6@X;mqr-=sfN30ed(WihX#9w zH?;NkEw}Y8clIsIISFfAk9)qEKkf=DIx+_%G*fylpO(0U^?{&lAdyF=QwC>9X zSl{~cL6#4Pw&jB+Y9hjMIn1wBc41TJQU`j2ZinDlzy|sYIZ@ka_!eU2#jO?yXt!a0 zsC%@!=Z0K`@EM!+(m1)`fj|;BXL|7OZtn$ig*82u3ReA;^N#3=WcW;J-83BcP4mB@L z0%nCl{E#(72V#4RAsmvrCV?E?DtOUN7%fi(Eq9U{fxe)G&Fw9pWyh92nIiX*j2v9 zj~VYjnUvPq*Z3KuDQJck>*CbypTL0jja}^6(5~Mx-EgT^mQ^wCg6_MR7E^cMU zLT}^2)SFktx=0PRyKto3C282a`&Ryeg0ZC`g8E zg5%(B-3sE54YGK!zIfPKd@p${zr^49H-zsiKVe7L#l_HBQ#!R}Vnn|-5tqovR#0`yWc(^5*NhkY?%7TGFaYyScmP~v87S3s#74E zM%{fNz`R|`^-n}G{<5&hy3q9?dqh~lG#Ln0b(jvek3xvEungbeC!XZE2-g=r<&`1H zV8o|-yYSW0MFivWBrSa&Heg(P>GRq=cezvatW0W)@{xncAIBi!jA8LPQ12k_uFu)x zKgR}_8bC6eO=1KYOpD7Yc-d~RLdI>7i=!mje^s`AAyyx*^jFL!yuH7pe?xy~|3;+L zQXPyli^m~gsg}iUf+ilzvFNTWJ~CWkiPEgP(Q@l|-4OhH5pK5~%{Y)4g)1;rLm@?F zD!Qv1w!cGBlkc-C7(Fe_Ze*=IXf}x-)1ezDkj_~Vm`FuVink4ns7JK9IL-|pEw)1Y zpcr?zW7!ZFU@{YC&|RDq!r4gRJa=I#;B!+6)-@}=jU!=tURCB?Wmo;~FdjhhvXz(` zt8&98N_SZwv8!J5odox6O7V6fQU9yoeJAyC?xh8_^p0W1y?ly!OcsY;^TAMvLHm-O z?A+enw|Hv%c38+_7U{wFJzry6x>NOqQyYas3#TFqEu3nHaJ8v=FS?rktG~!Lxxzgt zE?M=uIH^ldO2cN(j@jOBYoNyZnJOEVZgW)IEJ33XA80OPsMJ?1Whr27Y%7~WuNBIo zPIc%l+i^WAki`bH{4W|Y*;>E*h_m-@z0A>DpDZlstvc6R7jG4ydaJ!lV)djDdhx|4 z(#=!W2{#?ykSGQ^Sr&vLU(=M=l*H2O(veZR`OoKkS8X}pRY;K6H&6uo%1!vbQ7$iX z(tW2n2K8I0T+;L1aY*^Krj|rQS)*QjM|$x`$J9I|LwMi*A$Y{yr!?iQelj7?UK(I0 z6Tr{Fiecj+#y&&1v`o2l60&2Ig97emfBgd*i3$RpGKUmbZlpik-j3+T_VtTvT+`LV z7S^Dsu@2#}^$_Au$6<}nW;MTlf+xUUI-IZDnDA8Xi@m3Tr`xFm4 zk2+Al`uNdnCpZknyuO{Y2E!8Ni>%IML0F)OoeXD!GAy1-X*tk`ll4^ z4SmBJ>ubEy>$s#4I2PT?6hr4~EV28|`D|X?k_3Hk*tnUie%xDR0obL#%LPVVd)$sk zMSb~(t~0_pxv0#VvbEI6c6@lY>+q7GzUJGuz%I|BDwQABfG(e?vq%MwV}(!J+AY!)0ayLUMBL2HH0WBn*1PAVZwh zCz(H*Q3%4wTQDfZx6R$lYI~z^nBKy6mypam9P9%GHD0~ZW%wWT&Hp`n86Bu^{vQcP zO=S5~rj{))pmi++Zx7VWWAiIgqgi;q?JWf=+htrevgzS={D&UkMthq~>fSIPjCVL7!7S;wkUo|8#jfJT-bEqeq=8bWFC=|yHg0G)>cRpv#p{!jlW~F z=>;NduUk(dK)|)tZnhv*U2b_x!TPZVbEgrM* zlVXaEzee)pOq|eL3T=zl-{{_+eF;WLf+k=tZm@oTvK#SYaX1@g<`c(-=~$Wr4@Mj# zSt@2xlCsGzzO!kny29Exz-t8AShA`%@TctaH}ECc1jF|JQ)_XbEF3Y5yvDpe8cdOc zDJsu)8&8s~*x#gW;2v21+5^{Qo!{sIBGqcguhMFnYsnJo_6_E>)n>=tBh4|cj)5Oj zBkrEm!>OrL1e#S7(S#24Eqs@bG((oz)@Rw)YI%#Uia7V#PZcl6YbB0ETO9Js)nuJd zR$!ZytV^bqaxw_Y;c@AvTD;)&M@w=a`7GND>a+Y7-{>{+zGD<`+1%RE3>c#? z00(W*SXPLO=rWXYGA#EHHFJdHy>xQd=}#Zo+41scG*XPYxl1BP-{$g4wFqUNHc=z~ zC)UW73ISc#RT=$N&eo#7qJt*PtTu{TjSZ@7nQW0=r5`bj^j%+h3Y#n(0D~>7E7chr zkg3W9`4dQ1e#cpoY=+XiVA$!H-c-G`iQmvx)6HK69A5Tq%BErWZqf6_gGSF4I_#94 zo2(Ez(+trS?adWQHw3IV#=a~1pqqdOx{hW6pPSQ}ERhTO2;064Kt*Jda$p_%>N|90 z9P8^mAP3q04nyV>wkG^td~}F6=HOb3kH$^6_^9LEqsE*TdF<*@FK{FkI5H^tXYt4& zPP{x>mL+?=Bkdapt6%>0i@)9XolWnre)G5b|L->se(#y;^Z)H1ee)xKckWBohu=8; zzyEjt)xZ5=^^LFHe&2!b{o9Xk;GH~PKG8?JKA_2AgAzBuVPW?AsOY1rkD5MsnI&xK z(nq&Gdi2q&kInknqK`g()b-J?kFEL`(8oLUu}vS_^|3=Azod_y`WV#5kUk#J$1Z&g z>tnY*epw%T^zlx8?A6Dw=wqKg_Uq$-KHjB|2lergJ`U<*L?4Ir!5f=l1Fu_#4e!>+ zd-U;$K91<)pXuYh`gor{9@Pgg>W2;d*lF1Cm_B&uJZ$(ief+vUenTIl`Z%hOF@5|$ z?Ol6tTUC0$l4V=6WyQEAo3zPtc}~(e#t%8RX&zSWydX|Y?1TiIb!6$9D3L8kl8GGx zE6b0_1D%o~p~+6Nn-nsIEwr!;3@{0=4dpRm3$xI4VKY#M#};-Lx{x8IQ2P6Q=iVzN zFb;pT|FkPx-~G-x-}%mWzVo|$^*IJG25qXT zd^T0=6CawB-mYXSsai5nm^$>fv&3ITb@btqH)t*!49&uKO{dIoR>}WRZ!K zH<`%WiyY_&Wg}O?GoGcPF6f8eN+}=f=z96Yi3R8r-J0)GakI*IGxAS@L9HGseyxE5 z9}2jBw159XBm@yL55mzcD-!wxh-*R25`5|09C2?qA+7-q(EV`9TdmcSAN`2-AlQws zBM%W_r1+6m1&*$so+}oifDMZzp%IDdi(oxCSA!~mQe3sQwIrd7UVdv8?;2B_5QtHH zu*Ee6GY#li7s|vdD!XzaYs^Z7@K+B>svrWGCKe&v7tH{7HJjNQQD`+J#i9yXSyO{IiWTaZBMtS^Fe_-a5L3XI@Vux%Fg*J!Q}aHBvrZ4v7EbJm?w_kb}Q zP>2JFU}ahuWNbHdQwwMY86_J0(f;YwKEn-=s1ZyMYy`?=AyVpl;>1nv)sX zcOjPdDD@f+zBI#{+W972>yDEn6X!Jq8<3at3a<#Vr&WU?8xFxb5Ot%QP}c}@?9M}^ zIeyvqIR?y@Of3P4H79anL6Ewl&O)dxf|mN&J)w&i79*}v6w9eW#u0@HNyABy?=`TR z9>i>L6%3J|YDu=H^a4LhQ4@-kMsYbpO>sH*SS=#5kWn+ndm~xZij4IZEB3qq(%CdQ z#GHU#MJF$1+mqJ%BG?E@YYLVi)uX-$k`t%e8bq=yu;x^BBZQ*Tsf}iUr^(r36G9S# zlz}~l^ONf|Zk>o@cWwa3TI5HN(ko@iZAOiydBO-xQ|gYzPRc)F$^pXGsRfbiGsUz8 z`U#-owP5VZ;8EDM4-b=I&zpdnnWSGgfT{*vcL^X;!^l=GdX`4H($~O-=*s4h7ErOb+oDyU} z{iTjn!cTwuP$FscR<;|Vfp{c2RM}?4dn1WNB-WR(BeQXVWHKJ<9!MG$x|wm!KwmP_ zi|{%l&Rh$st19KMLT?_3CI{lif<9v)84pG)^tOTSXe4xvG1L*;YV+>#6Ul zt`65#1#5#BIy#)C?OP-LU=`_!gn~)%bL172dGYPVcUu7#_+Z2UbcohH*s{#0ALCqy z)OiInJ`2NZ^dic_W}K1)f|w_OCzFrqN*1x+ik@{YHu z9Mf#s$5ZYCnml5m68eVM1Do_Q8~en>G%=VY$Vl8H zTy1A?4<{$75~_gvWUIOZs53L?RF`t^dJy@|S(m}r05Tdtx|Ns1T*hahcl*sJ+Z6!9Id}g!&Gmdk78@9Do8c_Y!;1o_4U~##M5U zSrAd%0?SOp)XzM}%?82iLr{56^^BzgGwRZy*pY z(u7EqmSdO$YP%m#z>}+VS5YCXTbNmw7Lg8xU<&ha*~ENH#GGL&_jL})a>|?Hq&*?` zAI4#a8{ssX7+b{zuQNGm%T?#J(Z(!VH^Ux!+&IX0Xn0fy#0L-dW$>kn)qAg-2DR9M zDaG=08GJ7xZd)PaXqAePAZp`vccGp~qf%I^(Fhkix**4$6FITr1X@fXVt;`rJ8b@% z+co(}#rrpyJUks7K;?5{qks>4!iZ0A+&F-fEbRBgvpDV-`4Dh;Hq2Jp+wpc74Pp&f zt4p1_45`a4>N2b@W9qU|T_&)#fPB~h+NL6QtIJ+>QTrFe2UX~>>_ZG!qd*mLL|x1f zcjLk9A$19=%OmRYxVjuumuJ-FIaTQUP`8F zc{n;GPawF+6RR7efG@&;zOZ+Knuz9=f^LylTtHKMQ8x?UpMxLF!4K!)ILB$zKahhz zl!FIz@JDj+$8+#wIruX<_;We?rc~VH#vo`U{ol){wrxlXIPkYbZ$GE zyzSE9T8^C^r*}0uk*GTK0xRF>EA%U^`YLjRJAS>G+{gUDSblmpZ8@RngLcwR;WM_= z6m@JTQeaGSNt9bN!3xcA@|q_oudW2lVJ)&owan+fTFh2e*e8MjNfu?idWi|@K}iA8MJpmLvRy}26Yn}>@x)1J&D?Zm=5*_H2GLDa_fe23 z!!MVb9SA7Tq^0qCY*jc;Buz2XczdQ4V#LRzj0jQ+k&E+gCMC+_B@f+3Ud9849v?I> zt&TXT$t`-P9By|BX0P-%)1RIfD!>CAe#WsU_Il*ZIw)alOHmfMX9I)sr2i>p}!mEf-71IO+Es0rnrf(*8 zk5vNZ&?0&D6^Ix~+eAEJ7PI2%h};rOF$~Rfad-(8x)$$_#q9A!@TiFj!O_568b^6x zsWA&1#OQzOU;{=5jRDlL0}%2VgXt8NX9KXKjO2fZVopnur!T^rRw#jTTcdQKL{boM zE6Yirh4-dd)M7`#W)mbg5BKr40+|Mw7O*v2#y5YY13ZIoePvD*4$!<37%#|xI56Yi zL)&J=cs)w`S2-ZFIzuMbRHk+7V9{Ey8KaFG;AVZNKf6! zEMACC!-o`e@W2ipcOyw8${DIel>p2<6v1i3&5ml$={y3Weo4Ui5A!25CL^7#A>(@Z zG%(fi6)#SdC7N5!8Dd)uIwoPxm-fKjy0Jvs&umgR2*9`zzrZl!fGwby7*#T;Jl|78 zUq-BSKbm*If*fO2Xr;q&j>b>pRz468U7#j5KJiHg`l6BPBPT|3Sr53J;|dC34h=5o zF>^6q5mtdPgyx8Wm9{xwrqqL0>Yz-K=_C{IP|F1iThoK;Q7@gGqPywicQ)>U7;A$* zoRGlF8*~iP+43-&p3UdV^q@RfrU&IImd2kR(DAXqSls*#pAuqRP)$$^gWElD>5eMU zMpMUdxWipoC3c){dO*iP7-$_QVub$$yU&OceB`hf#mi%v8E@po_bPT+;NbH( z)&T&0aF(I7Nzi?ysLW@$aI#_|7GU9Dlp!TX-Auh0i9AXNlR(qHM_QW7Z@Wk@nIsj@ zDmt19^MKB&Z3#4*Uo5Sl@N9G-Cps`WQ@3~Wbi9UyZ9(fSwgYEZE=%2au|8!|QISpe zO-g}I=5%}9-`Bm9kew&lYyAxJNO$Cf?SYaw^-eAz$Nl6KUa!-8o+`Lm1^8;o)3ss_ zo8t3vghOo{pP&xKm4sZ+SBCF=1Uyy3`D^mRap3*DEplFsc-`n&_PUKs1zfUGQvosb zc^pxMF7om&(Mu<3SI#!)Y1{Kv9Pb2}e7HC#?^+%-9-3it^}<;m$h^}y^f=xoFVcG9 z1KxV!gzK3Gwjg(-s1gELrMGg6CT%wsLbTgc>vI#mbQb!Kuh zYy_~MWEwa%XKt7JWNw#0Mg=kw7*&B$3G7pWeG<4w1@1w2&trGbE1;QS=8i((yb94C zMYN|Fw-wA3XlJjxM92GCd3Z=dLUu@z9g@HS6*zziCdW<_0jxgZh#yunFh#0$DUk39 z)jaV{{c_>S+-jgUaZ;Akahnj~>O~HoeO3omAvV^^sfUq`;^#Q$M3AqHO=CsKwt;Vo zMA>@=C;r+X@-QoxoWdzaB(lQ3sKn0=@YN z;XH<0Xt2|V<(+&m%A|@JWj;U`39cTHnfM9#Feh&O%#T|=*r^*lBGH9sSvPY@o*>7O zg8~m1k<`2k*=WF$$0J+=;9o2}Wu{<3`NGM;WOPNsjKEQW`vl&DYR@ z{T0@(?M>Xa1qWaG(s;1f*dB{-ZHXlMqrst72zr=BCkdAIzzCFc67f*wmNmh?aI6=5 zw$W%}&iuA`q%XOmuP4?KYsUU@ENUzacXidm;(P@#{YFCH9!YN2Y-tC8FsLoB%C zkr3tK`5y14RWweNWuh$g5{HHrKCNhtfp%Ka7d8ex%c8OEg1I`3Ak0iJP#Ikv&|V&P z-n03^wOHkce{{SN4n~M9&*{jP!KOCjl|oFR5XcdVIx#sRUeroW6tzJpBhK#gb(Vm{ z=&K|sRs>4!mBB^j074jWF#s(VzDR;5|Z&4h=y33@ES95@jxUR zHsbE;dS!T^X*~`tXmVK5muySM|2M1^vUPH1Rf%69nx?Dzd6ThZFxn9hhPE2vqS*F6 zBi~d>gV$sU_uud@c(O@mAjbWK{ zY;iV?G^GSNpEd0*?fT`ryocW0zVcDsHI{sIb~Sl4U)8xb0iAbt4`H|@jd*8EEHuz- z^d%FW%Oc6;1KpixO=@R{^tpQbnr3||W{^Z@tb0o*MxGH&7@d7alC$I4)Rq0=ZmoTJ zpr&q~X3DbjCQ}yH_oFvYUVJ#PDDps_Z`Nz5llA#Maoq}?eSJHJPU9pQZ;3`*gONT> z+R`v8!%>=;YueYBgNLYvw&-p6(u$p*pM2H%crbpI>*g!nZRLNr=x=JZliQyE^tvZQ z!7C=ZE7!lb`-kyQnMVAYXI~urI(X#n6F+nuy5%pOyAGD#e@(@l{ENJMfA*|@_58Ly ze|UdK{l44A=G}Jhy)SjtEqmhXp{-9}z2mK0Up?md^^rHipWk`sNLlR6ftza@pKm|* z!Bq>5tMuN-XGA(aeEqFA9MPj!ynOVnEhm0)wD!5hzdtv;{%~_uWdBPq4E|>G@sjWT z(=q=g>k8NVs-8G-{h2vSOaHdL^yqDo!Bq`)*M3p`@bSN|IP=k(J3e~l_RdfDcz!Ye zvc}B%i_%R?ezoDX&dYYJUt;n4@csDV#aF*@CwV^E`Lp)-A{EQJK7I7+A1@tEe;MDu z{4df+^LuXntHtm9>6HA26U(~ZOKM|(4xO#QmuE5fS^dP+eO1riJ(u5Gcij9__rM1! z#__r@=q%)S`qP(GT>N=n=*I0o_<73p{Dy;vJ}6i}^P%HwKfG%`b$M#T!khVJ_^E^c z`T4$!zPO?E`gbq6cl&+seEggGiSWPt<6kG<`mx*pz>d#vJ306Czjc1G>D?2r+<)2r zlT{br@XAxy?CfZ~``5SKF!Skmq7T44>?s(($oTnbEfAg)ij(;fXc;oP$ ziNNZ+E2nQf^@pEad-8_xKVR`I<>x%ldrJYnh4|*>j!T69Z+`GTV^j=BWKw6>Pu

Ga%-JAI_h-#5xY)nhcVtd7#OYrwnAI2twMMO;8NiH9CLmAU+TUoK^yRl z3qNd!9JUhI0_Xr&p66I9wz39z_Q7P2Cq*>vGRf6})F5ILu%!)(O)bwRsLzA0qnPL% zkcrl{%3%7Noc0Ngvb7}i!%h%7&?+F2!!Ef6mW4FICZGPZ%F#hvrD5sKrdZz(!eIS<|Qv4P5a~L|D6W@8!rO| A)Bpeg diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/de.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/de.json index a300f14..0d0d15f 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/de.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/de.json @@ -129,6 +129,16 @@ "enemyspawn": "Feindes-Spawn", "enemyspawn_desc": "Klicke auf [css_useSkill], um zum Feindes-Spawn zu teleportieren", + "expensiveammo": "expensiveammo", + "expensiveammo_desc": "expensiveammo_desc", + "expensiveammo_disable_info": "expensiveammo_disable_info", + "expensiveammo_enemy_info": "expensiveammo_enemy_info: {0}", + "expensiveammo_player_info": "expensiveammo_player_info: {0}", + "expensiveammo_select_info": "expensiveammo_select_info", + + "explodingbarrel": "explodingbarrel", + "explodingbarrel_desc": "explodingbarrel_desc", + "explosiveshot": "Explosiver Schuss", "explosiveshot_desc": "Zufällige Chance, beim Schießen eine explosive Kugel abzufeuern", "explosiveshot_desc2": "Deine Chance, eine explosive Kugel abzufeuern: {0} %", @@ -165,6 +175,14 @@ "ghost": "Geist", "ghost_desc": "Du bist vollständig unsichtbar", + "giant": "giant", + "giant_desc": "giant_desc", + "giant_desc2": "giant_desc2: {0}x", + "giant_disable_info": "giant_disable_info", + "giant_enemy_info": "giant_enemy_info: {0}x", + "giant_player_info": "giant_player_info: {0} {1}", + "giant_select_info": "giant_select_info", + "glaz": "Glaz", "glaz_desc": "Du kannst durch Rauchgranaten hindurchsehen", @@ -241,12 +259,22 @@ "jumpban_player_info": "Der Spieler ‚{0}‘ kann nicht mehr springen.", "jumpban_select_info": "Spieler vom Springen ausschließen:", + "jumpcurse": "jumpcurse", + "jumpcurse_desc": "jumpcurse_desc", + "jumpcurse_disable_info": "jumpcurse_disable_info", + "jumpcurse_enemy_info": "jumpcurse_enemy_info", + "jumpcurse_player_info": "jumpcurse_player_info: {0}", + "jumpcurse_select_info": "jumpcurse_select_info", + "jumpingjack": "Jumping Jack", "jumpingjack_desc": "Durch Springen wird die Gesundheit wiederhergestellt", "killerflash": "Killer Flash", "killerflash_desc": "Jeder, der durch deine Blendgranate vollständig geblendet wird, stirbt (einschließlich dir selbst)", + "knockback": "knockback", + "knockback_desc": "knockback_desc", + "lifeswap": "Lebensaustausch", "lifeswap_desc": "Wähle einen Spieler aus, mit dem du deine Gesundheit austauschen möchtest", "lifeswap_enemy_info": "Jemand hat sich deine Gesundheit ausgeliehen", @@ -288,6 +316,13 @@ "deathbomb_desc": "Du explodierst beim Tod und tötest Spieler in deiner Nähe", "deathbomb_explosion": "Kaboom!", + "nightmare": "nightmare", + "nightmare_desc": "nightmare_desc", + "nightmare_disable_info": "nightmare_disable_info", + "nightmare_enemy_info": "nightmare_enemy_info", + "nightmare_player_info": "nightmare_player_info: {0}", + "nightmare_select_info": "nightmare_select_info", + "ninja": "Ninja", "ninja_desc": "Wenn du stillstehst, erhöht sich deine Unsichtbarkeit um 33 %, wenn du dich duckst um 33 % und wenn du ein Messer hältst um 33 %", @@ -450,6 +485,13 @@ "toxicsmoke": "Giftiger Rauch", "toxicsmoke_desc": "Deine Rauchgranaten verursachen Schaden", + "tripwire": "tripwire", + "tripwire_desc": "tripwire_desc", + "tripwire_limit_info": "tripwire_limit_info: {0}", + "tripwire_no_wall_info": "tripwire_no_wall_info", + "tripwire_placed_info": "tripwire_placed_info", + "tripwire_triggered_info": "tripwire_triggered_info: {0}", + "wallhack": "Wallhack", "wallhack_desc": "Du kannst Feinde durch Wände hindurch sehen", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/en.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/en.json index 54d6f6c..0866036 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/en.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/en.json @@ -129,6 +129,16 @@ "enemyspawn": "Enemy Spawn", "enemyspawn_desc": "Click [css_useSkill] to teleport to the enemy spawn", + "expensiveammo": "Expensive Ammo", + "expensiveammo_desc": "A chosen enemy loses money with every shot", + "expensiveammo_disable_info": "Your bullets are free again.", + "expensiveammo_enemy_info": "Every shot you fire now costs you {0}$.", + "expensiveammo_player_info": "Player '{0}' now pays for every bullet.", + "expensiveammo_select_info": "Select player whose ammo becomes expensive:", + + "explodingbarrel": "Exploding Barrel", + "explodingbarrel_desc": "Click [css_useSkill] to place a barrel that explodes when shot", + "explosiveshot": "Explosive Shot", "explosiveshot_desc": "Random chance to fire an explosive bullet while shooting", "explosiveshot_desc2": "Your chance to fire an explosive bullet: {0}%", @@ -165,6 +175,14 @@ "ghost": "Ghost", "ghost_desc": "You are completely invisible", + "giant": "Giant", + "giant_desc": "Enlarge an enemy of your choice", + "giant_desc2": "Enlarge an enemy of your choice to {0}x", + "giant_disable_info": "You are back to your normal size.", + "giant_enemy_info": "You have been enlarged to {0}x.", + "giant_player_info": "You enlarged player '{0}' to {1}x.", + "giant_select_info": "Enlarge player:", + "glaz": "Glaz", "glaz_desc": "You can see through smoke grenades", @@ -241,12 +259,22 @@ "jumpban_player_info": "Player '{0}' can no longer jump.", "jumpban_select_info": "Ban player from jumping:", + "jumpcurse": "Jump Curse", + "jumpcurse_desc": "A chosen enemy jumps whenever their teammates jump", + "jumpcurse_disable_info": "Your legs are your own again.", + "jumpcurse_enemy_info": "You now jump whenever your teammates jump.", + "jumpcurse_player_info": "Player '{0}' now jumps with their team.", + "jumpcurse_select_info": "Select player for the jump curse:", + "jumpingjack": "Jumping Jack", "jumpingjack_desc": "Jumping restores health", "killerflash": "Killer Flash", "killerflash_desc": "Anyone fully blinded by your flashbang dies (including you)", + "knockback": "Knockback", + "knockback_desc": "Firing while airborne pushes you backwards", + "lifeswap": "Life Swap", "lifeswap_desc": "Choose a player to swap health with", "lifeswap_enemy_info": "Someone borrowed your health.", @@ -288,6 +316,13 @@ "deathbomb_desc": "You explode upon death, killing nearby players", "deathbomb_explosion": "Kaboom!", + "nightmare": "Nightmare", + "nightmare_desc": "Give a chosen enemy a nightmarish vision", + "nightmare_disable_info": "The nightmare has faded.", + "nightmare_enemy_info": "A nightmare clouds your vision.", + "nightmare_player_info": "You cast a nightmare on player '{0}'.", + "nightmare_select_info": "Select player for the nightmare:", + "ninja": "Ninja", "ninja_desc": "Standing still increases your invisibility by 33%, crouching by 33%, and holding a knife by 33%", @@ -450,6 +485,13 @@ "toxicsmoke": "Toxic Smoke", "toxicsmoke_desc": "Your smoke grenades deal damage", + "tripwire": "Tripwire", + "tripwire_desc": "Click [css_useSkill] to string a tripwire between two walls", + "tripwire_limit_info": "You can only have {0} tripwires at a time.", + "tripwire_no_wall_info": "No walls close enough on both sides.", + "tripwire_placed_info": "Tripwire placed.", + "tripwire_triggered_info": "'{0}' tripped your wire.", + "wallhack": "Wallhack", "wallhack_desc": "You can see enemies through walls", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/fr.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/fr.json index e916741..64fa588 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/fr.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/fr.json @@ -129,6 +129,16 @@ "enemyspawn": "Spawn Ennemi", "enemyspawn_desc": "Appuyez sur [css_useSkill] pour vous téléporter au spawn ennemi", + "expensiveammo": "expensiveammo", + "expensiveammo_desc": "expensiveammo_desc", + "expensiveammo_disable_info": "expensiveammo_disable_info", + "expensiveammo_enemy_info": "expensiveammo_enemy_info: {0}", + "expensiveammo_player_info": "expensiveammo_player_info: {0}", + "expensiveammo_select_info": "expensiveammo_select_info", + + "explodingbarrel": "explodingbarrel", + "explodingbarrel_desc": "explodingbarrel_desc", + "explosiveshot": "Tir Explosif", "explosiveshot_desc": "Chance aléatoire de tirer une balle explosive en tirant", "explosiveshot_desc2": "Votre chance de tirer une balle explosive est : {0}%", @@ -165,6 +175,14 @@ "ghost": "Fantôme", "ghost_desc": "Vous êtes complètement invisible", + "giant": "giant", + "giant_desc": "giant_desc", + "giant_desc2": "giant_desc2: {0}x", + "giant_disable_info": "giant_disable_info", + "giant_enemy_info": "giant_enemy_info: {0}x", + "giant_player_info": "giant_player_info: {0} {1}", + "giant_select_info": "giant_select_info", + "glaz": "Glaz", "glaz_desc": "Vous pouvez voir à travers les fumigènes", @@ -241,12 +259,21 @@ "jumpban_player_info": "Le joueur « {0} » ne peut plus sauter.", "jumpban_select_info": "Interdire de sauter au joueur :", + "jumpcurse": "jumpcurse", + "jumpcurse_desc": "jumpcurse_desc", + "jumpcurse_disable_info": "jumpcurse_disable_info", + "jumpcurse_enemy_info": "jumpcurse_enemy_info", + "jumpcurse_player_info": "jumpcurse_player_info: {0}", + "jumpcurse_select_info": "jumpcurse_select_info", + "jumpingjack": "Sauteur", "jumpingjack_desc": "Sauter vous rend de la vie", "killerflash": "Flash Mortel", "killerflash_desc": "Toute personne totalement aveuglée par votre flashbang meurt (y compris vous)", + "knockback": "knockback", + "knockback_desc": "knockback_desc", "lifeswap": "Échange de Vie", "lifeswap_desc": "Choisissez un joueur avec qui échanger votre santé", "lifeswap_enemy_info": "Quelqu’un a emprunté votre santé.", @@ -288,6 +315,13 @@ "deathbomb_desc": "Vous explosez à votre mort, tuant les joueurs proches", "deathbomb_explosion": "Kaboom!", + "nightmare": "nightmare", + "nightmare_desc": "nightmare_desc", + "nightmare_disable_info": "nightmare_disable_info", + "nightmare_enemy_info": "nightmare_enemy_info", + "nightmare_player_info": "nightmare_player_info: {0}", + "nightmare_select_info": "nightmare_select_info", + "ninja": "Ninja", "ninja_desc": "Rester immobile augmente votre invisibilité de 33%, s’accroupir de 33%, et tenir un couteau de 33%", @@ -450,6 +484,13 @@ "toxicsmoke": "Fumée Toxique", "toxicsmoke_desc": "Vos grenades fumigènes infligent des dégâts", + "tripwire": "tripwire", + "tripwire_desc": "tripwire_desc", + "tripwire_limit_info": "tripwire_limit_info: {0}", + "tripwire_no_wall_info": "tripwire_no_wall_info", + "tripwire_placed_info": "tripwire_placed_info", + "tripwire_triggered_info": "tripwire_triggered_info: {0}", + "wallhack": "Wallhack", "wallhack_desc": "Vous pouvez voir les ennemis à travers les murs", @@ -529,4 +570,4 @@ "menu_controlls_scroll": "W/S - Défilement", "menu_controlls_padding": " | ", "menu_controlls_select": "E - Sélectionner" -} \ No newline at end of file +} diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pl.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pl.json index 16d4bbf..9dd510d 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pl.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pl.json @@ -129,6 +129,16 @@ "enemyspawn": "Resp Wroga", "enemyspawn_desc": "Kliknij [css_useSkill], aby teleportować się na resp wroga", + "expensiveammo": "expensiveammo", + "expensiveammo_desc": "expensiveammo_desc", + "expensiveammo_disable_info": "expensiveammo_disable_info", + "expensiveammo_enemy_info": "expensiveammo_enemy_info: {0}", + "expensiveammo_player_info": "expensiveammo_player_info: {0}", + "expensiveammo_select_info": "expensiveammo_select_info", + + "explodingbarrel": "explodingbarrel", + "explodingbarrel_desc": "explodingbarrel_desc", + "explosiveshot": "Strzał Wybuchowy", "explosiveshot_desc": "Losowa szansa wystrzelenia pocisku wybuchowego podczas strzelania", "explosiveshot_desc2": "Twoja szansa na wystrzelenie pocisku wybuchowego: {0}%", @@ -165,6 +175,14 @@ "ghost": "Duszek", "ghost_desc": "Jesteś całkowicie niewidzialny", + "giant": "giant", + "giant_desc": "giant_desc", + "giant_desc2": "giant_desc2: {0}x", + "giant_disable_info": "giant_disable_info", + "giant_enemy_info": "giant_enemy_info: {0}x", + "giant_player_info": "giant_player_info: {0} {1}", + "giant_select_info": "giant_select_info", + "glaz": "Glaz", "glaz_desc": "Nie widzisz granatów dymnych", @@ -241,12 +259,21 @@ "jumpban_player_info": "Gracz '{0}' nie może teraz skakać.", "jumpban_select_info": "Zablokuj skok dla gracza:", + "jumpcurse": "jumpcurse", + "jumpcurse_desc": "jumpcurse_desc", + "jumpcurse_disable_info": "jumpcurse_disable_info", + "jumpcurse_enemy_info": "jumpcurse_enemy_info", + "jumpcurse_player_info": "jumpcurse_player_info: {0}", + "jumpcurse_select_info": "jumpcurse_select_info", + "jumpingjack": "Pajacyk", "jumpingjack_desc": "Skakanie przywraca zdrowie", "killerflash": "Zabójczy Flash", "killerflash_desc": "Każdy całkowicie oślepiony twoim granatem umiera (również ty)", + "knockback": "knockback", + "knockback_desc": "knockback_desc", "lifeswap": "Zamiana Żyć", "lifeswap_desc": "Wybierasz gracza, z którym chcesz wymienić się zdrowiem", "lifeswap_enemy_info": "Ktoś pożyczył sobie twoje zdrowie.", @@ -288,6 +315,13 @@ "deathbomb_desc": "Po śmierci eksplodujesz i zabijasz graczy znajdujących się w zasięgu", "deathbomb_explosion": "Kaboom!", + "nightmare": "nightmare", + "nightmare_desc": "nightmare_desc", + "nightmare_disable_info": "nightmare_disable_info", + "nightmare_enemy_info": "nightmare_enemy_info", + "nightmare_player_info": "nightmare_player_info: {0}", + "nightmare_select_info": "nightmare_select_info", + "ninja": "Ninja", "ninja_desc": "Stojąc nieruchomo zwiększasz swoją niewidzialność o 33%, kucając o 33%, a trzymając nóż o 33%", @@ -450,6 +484,13 @@ "toxicsmoke": "Toksyczny Dym", "toxicsmoke_desc": "Twoje granaty dymny zadają obrażenia", + "tripwire": "tripwire", + "tripwire_desc": "tripwire_desc", + "tripwire_limit_info": "tripwire_limit_info: {0}", + "tripwire_no_wall_info": "tripwire_no_wall_info", + "tripwire_placed_info": "tripwire_placed_info", + "tripwire_triggered_info": "tripwire_triggered_info: {0}", + "wallhack": "Wallhack", "wallhack_desc": "Widzisz wrogów przez ściany", @@ -529,4 +570,4 @@ "menu_controlls_scroll": "W/S – Przewijanie", "menu_controlls_padding": " | ", "menu_controlls_select": "E - Wybierz" -} \ No newline at end of file +} diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pt-br.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pt-br.json index c2cddfd..e3b4a3b 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pt-br.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/pt-br.json @@ -129,6 +129,16 @@ "enemyspawn": "Spawn Inimigo", "enemyspawn_desc": "Clique em [css_useSkill] para se teletransportar para a base inimiga", + "expensiveammo": "expensiveammo", + "expensiveammo_desc": "expensiveammo_desc", + "expensiveammo_disable_info": "expensiveammo_disable_info", + "expensiveammo_enemy_info": "expensiveammo_enemy_info: {0}", + "expensiveammo_player_info": "expensiveammo_player_info: {0}", + "expensiveammo_select_info": "expensiveammo_select_info", + + "explodingbarrel": "explodingbarrel", + "explodingbarrel_desc": "explodingbarrel_desc", + "explosiveshot": "Tiro Explosivo", "explosiveshot_desc": "Chance aleatória de disparar uma bala explosiva enquanto atira", "explosiveshot_desc2": "Sua chance de disparar uma bala explosiva: {0}%", @@ -165,6 +175,14 @@ "ghost": "Fantasma", "ghost_desc": "Você é completamente invisível", + "giant": "giant", + "giant_desc": "giant_desc", + "giant_desc2": "giant_desc2: {0}x", + "giant_disable_info": "giant_disable_info", + "giant_enemy_info": "giant_enemy_info: {0}x", + "giant_player_info": "giant_player_info: {0} {1}", + "giant_select_info": "giant_select_info", + "glaz": "Smoke Transparente", "glaz_desc": "Smokes tornam-se transparentes para você", @@ -241,12 +259,22 @@ "jumpban_player_info": "O jogador '{0}' não pode mais pular.", "jumpban_select_info": "Banir pulo do jogador:", + "jumpcurse": "jumpcurse", + "jumpcurse_desc": "jumpcurse_desc", + "jumpcurse_disable_info": "jumpcurse_disable_info", + "jumpcurse_enemy_info": "jumpcurse_enemy_info", + "jumpcurse_player_info": "jumpcurse_player_info: {0}", + "jumpcurse_select_info": "jumpcurse_select_info", + "jumpingjack": "Pula-Pula", "jumpingjack_desc": "Pular restaura vida", "killerflash": "Flash Mortal", "killerflash_desc": "Qualquer pessoa cega pela sua flash morre (incluindo você)", + "knockback": "knockback", + "knockback_desc": "knockback_desc", + "lifeswap": "Troca de Vida", "lifeswap_desc": "Escolha um jogador para trocar de vida", "lifeswap_enemy_info": "Alguém pegou sua vida emprestada.", @@ -288,6 +316,13 @@ "deathbomb_desc": "Você explode ao morrer, matando os jogadores próximos", "deathbomb_explosion": "Kaboom!", + "nightmare": "nightmare", + "nightmare_desc": "nightmare_desc", + "nightmare_disable_info": "nightmare_disable_info", + "nightmare_enemy_info": "nightmare_enemy_info", + "nightmare_player_info": "nightmare_player_info: {0}", + "nightmare_select_info": "nightmare_select_info", + "ninja": "Ninja", "ninja_desc": "Ficar parado aumenta sua invisibilidade em 33%, agachar em 33%, e segurar uma faca em 33%", @@ -450,6 +485,13 @@ "toxicsmoke": "Smoke Tóxica", "toxicsmoke_desc": "Suas smokes causam dano", + "tripwire": "tripwire", + "tripwire_desc": "tripwire_desc", + "tripwire_limit_info": "tripwire_limit_info: {0}", + "tripwire_no_wall_info": "tripwire_no_wall_info", + "tripwire_placed_info": "tripwire_placed_info", + "tripwire_triggered_info": "tripwire_triggered_info: {0}", + "wallhack": "Wallhack", "wallhack_desc": "Você pode ver inimigos através das paredes", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/ru.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/ru.json index dd0196c..57f0118 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/ru.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/ru.json @@ -129,6 +129,16 @@ "enemyspawn": "Спавн врагов", "enemyspawn_desc": "Нажмите [css_useSkill], чтобы телепортироваться на спавн врагов", + "expensiveammo": "expensiveammo", + "expensiveammo_desc": "expensiveammo_desc", + "expensiveammo_disable_info": "expensiveammo_disable_info", + "expensiveammo_enemy_info": "expensiveammo_enemy_info: {0}", + "expensiveammo_player_info": "expensiveammo_player_info: {0}", + "expensiveammo_select_info": "expensiveammo_select_info", + + "explodingbarrel": "explodingbarrel", + "explodingbarrel_desc": "explodingbarrel_desc", + "explosiveshot": "Взрывной выстрел", "explosiveshot_desc": "Случайный шанс выстрелить взрывной пулей при стрельбе", "explosiveshot_desc2": "Ваш шанс выстрелить взрывной пулей: {0}%", @@ -165,6 +175,14 @@ "ghost": "Призрак", "ghost_desc": "Вы полностью невидимы", + "giant": "giant", + "giant_desc": "giant_desc", + "giant_desc2": "giant_desc2: {0}x", + "giant_disable_info": "giant_disable_info", + "giant_enemy_info": "giant_enemy_info: {0}x", + "giant_player_info": "giant_player_info: {0} {1}", + "giant_select_info": "giant_select_info", + "glaz": "Глаз", "glaz_desc": "Вы видите сквозь дымовые гранаты", @@ -241,12 +259,22 @@ "jumpban_player_info": "Игрок '{0}' больше не может прыгать.", "jumpban_select_info": "Запретить прыжки игроку:", + "jumpcurse": "jumpcurse", + "jumpcurse_desc": "jumpcurse_desc", + "jumpcurse_disable_info": "jumpcurse_disable_info", + "jumpcurse_enemy_info": "jumpcurse_enemy_info", + "jumpcurse_player_info": "jumpcurse_player_info: {0}", + "jumpcurse_select_info": "jumpcurse_select_info", + "jumpingjack": "Прыгающий Джек", "jumpingjack_desc": "Прыжки восстанавливают здоровье", "killerflash": "Смертельная флешка", "killerflash_desc": "Любой, полностью ослеплённый вашей флешкой, погибает (включая вас)", + "knockback": "knockback", + "knockback_desc": "knockback_desc", + "lifeswap": "Обмен жизнями", "lifeswap_desc": "Выберите игрока для обмена здоровьем", "lifeswap_enemy_info": "Кто-то занял ваше здоровье.", @@ -288,6 +316,13 @@ "deathbomb_desc": "Вы взрываетесь при смерти, убивая ближайших игроков", "deathbomb_explosion": "АЛЛАХУ АКБАР!!!", + "nightmare": "nightmare", + "nightmare_desc": "nightmare_desc", + "nightmare_disable_info": "nightmare_disable_info", + "nightmare_enemy_info": "nightmare_enemy_info", + "nightmare_player_info": "nightmare_player_info: {0}", + "nightmare_select_info": "nightmare_select_info", + "ninja": "Ниндзя", "ninja_desc": "Стоя на месте, ваша невидимость увеличивается на 33%, в приседе на 33%, с ножом на 33%", @@ -450,6 +485,13 @@ "toxicsmoke": "Токсичный дым", "toxicsmoke_desc": "Ваши дымовые гранаты наносят урон", + "tripwire": "tripwire", + "tripwire_desc": "tripwire_desc", + "tripwire_limit_info": "tripwire_limit_info: {0}", + "tripwire_no_wall_info": "tripwire_no_wall_info", + "tripwire_placed_info": "tripwire_placed_info", + "tripwire_triggered_info": "tripwire_triggered_info: {0}", + "wallhack": "Воллхак", "wallhack_desc": "Вы видите врагов сквозь стены", @@ -529,4 +571,4 @@ "menu_controlls_scroll": "W/S — Прокрутка", "menu_controlls_padding": " | ", "menu_controlls_select": "E — Выбрать" -} \ No newline at end of file +} diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/tr.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/tr.json index e8697da..0b6fc08 100644 --- a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/tr.json +++ b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/tr.json @@ -129,6 +129,16 @@ "enemyspawn": "Base Baskını", "enemyspawn_desc": "[css_useSkill] tuşuna basarak düşman doğma noktasına ışınlan", + "expensiveammo": "Pahalı Mermi", + "expensiveammo_desc": "Seçtiğin rakip her ateş ettiğinde para kaybeder", + "expensiveammo_disable_info": "Mermilerin yeniden bedava.", + "expensiveammo_enemy_info": "Artık her atışın sana {0}$ mal oluyor.", + "expensiveammo_player_info": "'{0}' artık her mermisinin parasını ödüyor.", + "expensiveammo_select_info": "Mermisi pahalanacak oyuncu:", + + "explodingbarrel": "Patlayan Varil", + "explodingbarrel_desc": "[css_useSkill] ile vurulunca patlayan bir varil koyarsın", + "explosiveshot": "Patlayıcı Mermi", "explosiveshot_desc": "Ateş ederken rastgele mermilerin patlayabilir", "explosiveshot_desc2": "Patlayan mermi şansı: %{0}", @@ -159,12 +169,20 @@ "gambler": "Kumarbaz", "gambler_desc": "Sunulan listeden bir yetenek seç.", "gambler_select_info": "Yeteneğini seç:", - "gambler_more": "#00FF00|${0} karşılığında yeni yetenekler", + "gambler_more": "#00FF00|${0} yenile", "gambler_no_money": "Yeterli para yok.", "ghost": "Hayalet", "ghost_desc": "Tamamen görünmezsin", + "giant": "Dev", + "giant_desc": "Seçtiğin bir rakibi büyütür", + "giant_desc2": "Seçtiğin bir rakibi {0}x büyütür", + "giant_disable_info": "Normal boyutuna geri döndün.", + "giant_enemy_info": "{0}x boyutuna büyütüldün.", + "giant_player_info": "'{0}' oyuncusunu {1}x büyüttün.", + "giant_select_info": "Büyütülecek oyuncu:", + "glaz": "Glaz", "glaz_desc": "Sis bombalarının içini görebilirsin", @@ -241,12 +259,22 @@ "jumpban_player_info": "'{0}' artık zıplayamaz.", "jumpban_select_info": "Zıplaması yasaklanacak oyuncu:", + "jumpcurse": "Zıplama Laneti", + "jumpcurse_desc": "Seçtiğin rakip, takım arkadaşları her zıpladığında zıplar", + "jumpcurse_disable_info": "Bacakların yeniden senin.", + "jumpcurse_enemy_info": "Artık takım arkadaşların zıpladıkça sen de zıplıyorsun.", + "jumpcurse_player_info": "'{0}' artık takımıyla birlikte zıplıyor.", + "jumpcurse_select_info": "Zıplama laneti verilecek oyuncu:", + "jumpingjack": "Zıpzıp Jack", "jumpingjack_desc": "Zıplamak canını yeniler", "killerflash": "Ölümcül Flaş", "killerflash_desc": "Flaşına tamamen kör olan herkes ölür (sen dahil)", + "knockback": "Savurma", + "knockback_desc": "Havadayken ateş etmek seni geriye savurur", + "lifeswap": "Can Takası", "lifeswap_desc": "Can değerlerini takas etmek için bir oyuncu seç", "lifeswap_enemy_info": "Birisi canını çaldı", @@ -288,6 +316,13 @@ "deathbomb_desc": "Öldüğünde patlayarak etraftaki oyuncuları öldürürsün", "deathbomb_explosion": "BOOM!!!", + "nightmare": "Kabus", + "nightmare_desc": "Seçtiğin bir rakibe kabus görüntüsü verir", + "nightmare_disable_info": "Kabus sona erdi.", + "nightmare_enemy_info": "Gözlerini bir kabus bürüdü.", + "nightmare_player_info": "'{0}' oyuncusuna kabus gördürdün.", + "nightmare_select_info": "Kabus görecek oyuncu:", + "ninja": "Ninja", "ninja_desc": "Görünmezliğini sabit durmak %33, eğilmek %33 ve bıçak tutmak %33 artırır", @@ -450,6 +485,13 @@ "toxicsmoke": "Zehirli Sis", "toxicsmoke_desc": "Sis bombaların hasar verir", + "tripwire": "Tel Tuzağı", + "tripwire_desc": "[css_useSkill] ile iki duvar arasına tel gerersin", + "tripwire_limit_info": "Aynı anda en fazla {0} tel gerebilirsin.", + "tripwire_no_wall_info": "İki yanında da yeterince yakın duvar yok.", + "tripwire_placed_info": "Tel gerildi.", + "tripwire_triggered_info": "'{0}' teline takıldı.", + "wallhack": "Wallhack", "wallhack_desc": "Düşmanları duvarların arkasından görebilirsin", diff --git a/jRandomSkills - Server Files/plugins/jRandomSkills/languages/zh.json b/jRandomSkills - Server Files/plugins/jRandomSkills/languages/zh.json index c922535d0ec8d6dc541c05f4055f353734981d8b..bb094675255974126ebb1bd9ea32cb7a8bf90f6d 100644 GIT binary patch literal 21614 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 literal 27920 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