diff --git a/.github/en.md b/.github/en.md
index 246ce53..ae196f4 100644
--- a/.github/en.md
+++ b/.github/en.md
@@ -42,8 +42,8 @@ Join the 3v3 test server and try out the jRandomSkills plugin:
- **Address**: `jRandomSkills@pukawka.pl`
- **Password**: `public`
- **Opening Hours**: `22:00-17:00 UTC`
-- **Connect URL**: `steam://connect/51.38.122.215:27215/public`
-- **Connect**: `connect 51.38.122.215:27215; password public`
+- ~~**Connect URL**: `steam://connect/51.38.122.215:27215/public`~~
+- ~~**Connect**: `connect 51.38.122.215:27215; password public`~~
Buying a server on pukawka? Use my [referral code](https://pukawka.pl/pp,juzlus.html).
@@ -338,9 +338,12 @@ All skills can be customized in the **`config.cfg`** / **`skillsInfo.json`** fil
},
"HtmlHudCustomisation": { // Settings for changing colours and font sizes
- ... // xxxl: 64px, xxl: 40px, xl: 32px
- } // l: 24px, ml: 20px, m: 18px
- ... // sm: 16px, s: 12px, xs: 8px
+ // xxxl: 64px, xxl: 40px, xl: 32px
+ // l: 24px, ml: 20px, m: 18px
+ ... // sm: 16px, s: 12px, xs: 8px
+ "WSADMenuVisibleItems": 3 // Number of visible rows
+ }
+ ...
},
```
@@ -405,6 +408,85 @@ This plugin uses content from the following projects:
## 馃搵 Changelog
+
+v1.2.3.b8
+
+- #### Shared Systems
+ - **PlayerManager.FillSkillHolders** - Skill holders are now resolved from the player index instead of scanning every controller each tick, replacing the per-skill full player loop used by ten skills.
+ - **PlayerManager.GetControllerByPawn** - Added a tick-cached pawn-to-controller map, replacing the linear observer-target scan.
+ - **PlayerManager.IsServerIdle** - Added a tick-cached idle check shared by the debug and performance writers.
+ - **SkillUtils.IsFriendlyFireBlocked** - Now takes the skill, so the per-skill `FriendlyFire` key and server convars are resolved in one place. The convar-only overload remains for victim-side skills.
+ - **SkillUtils.TerminateRound** - Now accepts the player who ended the round and pays out the round-end money that the engine skips on plugin-terminated rounds.
+
+- #### Performance
+ - **OnTick(hud)** - Average cost reduced by 17% compared to the previous build.
+ - **CheckTransmit** - Average cost reduced by 25%, with peak cost reduced by 39%.
+ - **OnTick(skills)** - Peak cost reduced by 62%.
+ - **Host stalls** - Real freezes measured with players connected dropped from six to two across 785 rounds.
+ - **DecoyRing** - Beam creation is now spread across four frames instead of spawning the entire ring in one tick.
+ - **Fourteen skills** - `OnTick` now returns immediately when the skill holds no state.
+ - **Berserker, BladeMaster, BunnyHop, DemonEye, Flash, PawelJumper, Pilot, Poison, QuickShot, RadarHack, Regeneration** - Switched to the shared skill-holder list; config reads were moved out of per-player loops.
+
+- #### Fixes
+ - **GravityDecoy** - Restored a hardcoded gravity of 1.0 when leaving the field, permanently breaking Astronaut. Each pawn's own gravity scale is now captured and restored.
+ - **PsychicDefusing** - The bomb location remained unset when the skill was assigned after the plant, the stored position pointed into the entity and became invalid once the bomb was killed, and setup was silently skipped when the pawn was not ready.
+ - **PsychicDefusing, FragileBomb** - Winning teams received no money when the plugin ended the round. Winners are now paid from the matching `cash_*` convars, with the defuser bonus applied on top.
+ - **FriendlyFire** - `mp_autokick` is now restored to its default value after the round ends.
+ - **ToxicSmoke, HealingSmoke** - Smoke continued damaging and healing after its owner lost the skill, and expiry could leave behind smokes whose owner had already lost the skill. HealingSmoke also did not track an owner at all.
+ - **EmpGrenade** - Crosshair and radar stayed jammed forever because `OnTick` stops being dispatched once nobody holds the skill and the jam timer never expired.
+ - **ThrowingKnife** - Losing the skill while the knife was thrown destroyed it without returning one to the player.
+ - **OnlyHead, ReactiveArmor** - Both ignored fall and world damage, which has no player attacker.
+ - **Gambler** - Refreshing consumed the one-shot instead of rolling two new skills, and the refresh row lost its colour prefix to the text-direction wrapper.
+ - **Berserker, Flash** - The falling-speed clamp could trigger while noclipping.
+ - **ExplodingBarrel** - The prop spawned without a model and received it a frame later; the model is now passed through `CEntityKeyValues` at spawn.
+ - **FastReload** - Added a cooldown, five seconds by default, with a HUD countdown. The cooldown only starts when a magazine is actually refilled.
+ - **Config** - Missing-key migration now descends into nested sections, so keys under `HtmlHudCustomisation` are detected.
+
+- #### Damage Hook
+ - **OnEntityTakeDamagePre / OnEntityTakeDamagePost** - Replaced the deprecated `CBaseEntity_TakeDamageOldFunc` hook across 27 files.
+ - **Teammate damage** - The new hook runs before the engine zeroes friendly fire, so attacker-side modifiers now require explicit guards. Added to OneShot, Cutter, Assassin, Soldier, Berserker, Nemesis and Punisher.
+ - **FriendlyFire** - Added a new per-skill key to twelve skills, defaulting to `true`. Setting it to `false` prevents teammates from being affected, as already supported by LongKnife and KillerFlash. This covers both damage amplifiers and explosives that previously only reduced teammate damage.
+
+- #### Menu
+ - **WSADMenuVisibleItems** - Added a new setting replacing the hardcoded three visible menu rows. The value is clamped between one and ten.
+ - **WSAD menu** - The final menu row now keeps its `#RRGGBB` colour prefix instead of losing it to the text-direction wrapper.
+
+- #### Config Migration
+ - **skillsInfo.json** - Missing keys are now written back to the file on load instead of only being defaulted in memory. Existing values are preserved.
+ - **playersLanguage.json** - Players are now grouped by language instead of using one row per player, reducing a ten-thousand-player file by 20%. Old files are converted on load and invalid SteamIDs are dropped.
+
+- #### Debug
+ - **Perf samples** - Report `p50`, `p95` and `p99` alongside the average and maximum.
+ - **Per-skill sampling** - Every skill is now sampled instead of only logging calls that exceeded two milliseconds. The measurement was already running; only the reporting threshold discarded it.
+ - **Load context** - Aggregate lines now include player, alive, bot, active-skill and round counts, allowing sessions to be compared under different loads.
+ - **ENTITIES** - Tracked entities are now broken down by type.
+ - **STALL** - Lines now include the tick, tracked entity count and load context, helping distinguish map-load pauses from genuine freezes.
+ - **DMGHOOK** - Reports how often the attacker and ability resolve on the damage hook.
+ - **Idle server** - Nothing is written while the server is empty, apart from lifecycle lines and player connects/disconnects.
+
+- #### Startup & Stability
+ - **Startup crash** - Fixed a crash on servers with `PerfMode` or `DebugMode` enabled during boot at the first skill. `PerfLog.Sample` called `IsServerIdle()` on every `SkillAction`, which scanned the player list while the server was still booting. This was a regression introduced with the idle-logging gate in b8.
+ - **PlayerManager** - Added a `serverActive` flag set on map start. `IsServerIdle`, `GetTickPlayers` and `GetTickBomb` no longer touch the game before the map is up.
+ - **Commands** - `zmienmape` and one Chinese alias were listed twice, causing the same command name to be registered natively two times. Cleaned up the defaults and added a duplicate guard to cover user configs as well.
+
+- #### Chat
+ - **Skill announcement** - Teammate skills are now shown first and your own skill description last, keeping it at the bottom of the chat instead of allowing it to scroll away.
+ - **SetRandomSkill** - No longer leaves the chat box unclosed when the player has teammates.
+
+- #### Debug Fixes
+ - **PerfLog** - `p50`, `p95` and `p99` previously returned the upper bound of the histogram bucket instead of a real sample, meaning they could report a value higher than `max`. This occurred in 74% of the windows during a 6.5-hour session (for example: `avg=0.06ms p99=8.00ms max=4.68ms`). Percentiles are now taken from the actual samples in the window. The bucket estimate is only used as a fallback when the buffer overflows, interpolated inside the bucket and clamped to `max`.
+ - **EntityManager** - An already-tracked entity could log a second `+` line, causing creates and destroys to stop matching and making the entity log look like a leak. Re-registering now logs `~ oldType -> newType` when the type changes and nothing when it does not.
+ - **Ghost, Ninja, C4Camouflage** - The hiding prop was registered twice, first as `prop_dynamic` and then as `empty_prop`. It is now tracked under the correct name from creation through the new `trackAs` parameter of `CreateTrackedDynamicProp`.
+
+- #### Cleanup
+ - **Compiler warnings** - All twelve warnings have been resolved; the build is clean.
+ - **SkillUtils.SetPlayerCollisions** - Removed because its body started with an unconditional `return`.
+ - **Damage hook aliases** - Removed the unused `param` and `param2` locals left behind by the migration across 27 files.
+
+**Full update contributed by [@ByDexterTR](https://github.com/ByDexterTR) in pull request [#53](https://github.com/Juzlus/jRandomSkills/pull/53). Thanks to ByDexterTR!**
+
+
+
v1.2.3.b7
diff --git a/.github/pl.md b/.github/pl.md
index bfc0d5e..abfbdac 100644
--- a/.github/pl.md
+++ b/.github/pl.md
@@ -42,8 +42,8 @@ Do艂膮cz do serwera testowego 3v3 i wypr贸buj plugin jRandomSkills:
- **Adres**: `jRandomSkills@pukawka.pl`
- **Has艂o**: `public`
- **Godziny otwarcia**: `00:00-19:00`
-- **Po艂膮cz URL**: `steam://connect/51.38.122.215:27215/public`
-- **Po艂膮cz**: `connect 51.38.122.215:27215; password public`
+- ~~**Po艂膮cz URL**: `steam://connect/51.38.122.215:27215/public`~~
+- ~~**Po艂膮cz**: `connect 51.38.122.215:27215; password public`~~
Kupujesz serwer na pukawce? Skorzystaj z mojego [kodu polecaj膮cego](https://pukawka.pl/pp,juzlus.html).
@@ -338,9 +338,12 @@ Wszystkie sypermoce mo偶na dostosowa膰 w pliku **`config.cfg`** / **`skillsInfo.
},
"HtmlHudCustomisation": { // Ustawienia zmiany kolor贸w i rozmiar贸w czcionek
- ... // xxxl: 64px, xxl: 40px, xl: 32px
- } // l: 24px, ml: 20px, m: 18px
- ... // sm: 16px, s: 12px, xs: 8px
+ // xxxl: 64px, xxl: 40px, xl: 32px
+ // l: 24px, ml: 20px, m: 18px
+ ... // sm: 16px, s: 12px, xs: 8px
+ "WSADMenuVisibleItems": 3 // Liczba widocznych wierszy
+ }
+ ...
},
```
@@ -405,6 +408,85 @@ Plugin korzysta z zawarto艣ci nast臋puj膮cych projekt贸w:
## 馃搵 Lista Zmian
+
+v1.2.3.b8
+
+- #### Wsp贸lne systemy
+ - **PlayerManager.FillSkillHolders** - Lista posiadaczy umiej臋tno艣ci jest teraz pobierana z indeksu graczy zamiast skanowania wszystkich kontroler贸w w ka偶dym ticku. Usuwa to pe艂n膮 p臋tl臋 po graczach wykonywan膮 wcze艣niej przez dziesi臋膰 umiej臋tno艣ci.
+ - **PlayerManager.GetControllerByPawn** - Dodano cache mapuj膮cy pawn na kontroler, od艣wie偶any raz na tick. Zast臋puje to liniowe wyszukiwanie celu obserwatora.
+ - **PlayerManager.IsServerIdle** - Sprawdzanie bezczynno艣ci serwera jest teraz cachowane na tick i wsp贸艂dzielone przez logowanie debugowe oraz wydajno艣ciowe.
+ - **SkillUtils.IsFriendlyFireBlocked** - Metoda przyjmuje teraz umiej臋tno艣膰, dzi臋ki czemu klucz `FriendlyFire` dla konkretnej umiej臋tno艣ci oraz convary serwera s膮 rozwi膮zywane w jednym miejscu. Przeci膮偶enie dzia艂aj膮ce wy艂膮cznie na convarach pozostaje dla umiej臋tno艣ci dzia艂aj膮cych po stronie ofiary.
+ - **SkillUtils.TerminateRound** - Metoda przyjmuje teraz gracza, kt贸ry zako艅czy艂 rund臋, i wyp艂aca pieni膮dze za zako艅czenie rundy, kt贸rych silnik nie przyznaje przy zako艅czeniu rundy przez plugin.
+
+- #### Wydajno艣膰
+ - **OnTick(hud)** - 艢redni koszt zmniejszony o 17% wzgl臋dem poprzedniej wersji.
+ - **CheckTransmit** - 艢redni koszt zmniejszony o 25%, a maksymalny o 39%.
+ - **OnTick(skills)** - Maksymalny koszt zmniejszony o 62%.
+ - **Host stalls** - Liczba rzeczywistych zawiesze艅 serwera przy po艂膮czonych graczach spad艂a z sze艣ciu do dw贸ch na przestrzeni 785 rund.
+ - **DecoyRing** - Tworzenie obr臋czy zosta艂o roz艂o偶one na cztery klatki zamiast generowania ca艂ego pier艣cienia w jednym ticku.
+ - **Czterna艣cie umiej臋tno艣ci** - `OnTick` natychmiast ko艅czy dzia艂anie, je艣li dana umiej臋tno艣膰 nie posiada 偶adnego stanu.
+ - **Berserker, Mistrz Ostrza, Kr贸lik, Oko Demona, Flash, Pawel Jumper, Pilot, Trutka, Szybkostrzelno艣膰, Radarowiec, Regeneracja** - Prze艂膮czono na wsp贸艂dzielon膮 list臋 posiadaczy umiej臋tno艣ci, a odczyty konfiguracji przeniesiono poza p臋tle wykonywane dla ka偶dego gracza.
+
+- #### Poprawki
+ - **Grawitacyjny Wabik** - Usuni臋to przywracanie grawitacji do sztywnej warto艣ci `1.0` po opuszczeniu pola, kt贸re permanentnie psu艂o **Astronaut臋**. Teraz zapisywana i przywracana jest w艂asna warto艣膰 grawitacji ka偶dego pawna.
+ - **PsychicDefusing** - Po przydzieleniu umiej臋tno艣ci po pod艂o偶eniu bomby jej pozycja pozostawa艂a nieustawiona. Zapami臋tana pozycja wskazywa艂a r贸wnie偶 bezpo艣rednio na encj臋 bomby i stawa艂a si臋 nieprawid艂owa po jej usuni臋ciu. Naprawiono tak偶e pomijanie konfiguracji, gdy pawn nie by艂 jeszcze gotowy.
+ - **PsychicDefusing, Krucha Bomba** - Zwyci臋skie dru偶yny nie otrzymywa艂y pieni臋dzy, gdy plugin ko艅czy艂 rund臋. Zwyci臋zcy otrzymuj膮 teraz wyp艂at臋 zgodn膮 z odpowiednimi convarami `cash_*`, a bonus za rozbrojenie jest dodawany osobno.
+ - **Ogie艅 Przyjacielski** - Po zako艅czeniu rundy `mp_autokick` jest teraz przywracane do swojej domy艣lnej warto艣ci.
+ - **Toksyczny Dym, Lecz膮cy Dym** - Dym nadal zadawa艂 obra偶enia lub leczy艂 po utracie umiej臋tno艣ci przez w艂a艣ciciela. Po wyga艣ni臋ciu mog艂y r贸wnie偶 pozostawa膰 dymy, kt贸rych w艂a艣ciciel nie posiada艂 ju偶 danej umiej臋tno艣ci. **Lecz膮cy Dym** nie 艣ledzi艂 wcze艣niej w艂a艣ciciela w og贸le.
+ - **Granat EMP** - Celownik i radar pozostawa艂y zablokowane na zawsze, poniewa偶 `OnTick` przestaje by膰 wywo艂ywany, gdy nikt nie posiada umiej臋tno艣ci, a timer blokady nie wygasa艂.
+ - **N贸偶 do Rzucania** - Utrata umiej臋tno艣ci po wyrzuceniu no偶a niszczy艂a n贸偶 bez zwracania go graczowi.
+ - **Tylko G艂owa, Pancerz Reaktywny** - Obie umiej臋tno艣ci ignorowa艂y obra偶enia od upadku i obra偶enia ze 艣wiata, kt贸re nie posiadaj膮 atakuj膮cego gracza.
+ - **Hazardzista** - Od艣wie偶enie zu偶ywa艂o jednorazow膮 mo偶liwo艣膰 zamiast losowa膰 dwie nowe umiej臋tno艣ci. Wiersz od艣wie偶ania traci艂 r贸wnie偶 prefiks koloru przez wrapper kierunku tekstu.
+ - **Berserker, Flash** - Ograniczenie pr臋dko艣ci spadania mog艂o dzia艂a膰 podczas noclipu.
+ - **Wybuchowa Beczka** - Beczka pojawia艂a si臋 pocz膮tkowo bez modelu, kt贸ry by艂 dodawany dopiero klatk臋 p贸藕niej. Model jest teraz przekazywany przez `CEntityKeyValues` ju偶 podczas tworzenia encji.
+ - **Szybkie R膮czki** - Dodano cooldown, domy艣lnie pi臋膰 sekund, wraz z licznikiem na HUD. Cooldown rozpoczyna si臋 dopiero wtedy, gdy magazynek faktycznie zostanie prze艂adowany.
+ - **Konfiguracja** - Migracja brakuj膮cych kluczy schodzi teraz r贸wnie偶 do zagnie偶d偶onych sekcji, dzi臋ki czemu wykrywane s膮 m.in. klucze znajduj膮ce si臋 w `HtmlHudCustomisation`.
+
+- #### Hook obra偶e艅
+ - **OnEntityTakeDamagePre / OnEntityTakeDamagePost** - Zast膮piono przestarza艂y hook `CBaseEntity_TakeDamageOldFunc` w 27 plikach.
+ - **Obra偶enia od sojusznik贸w** - Nowy hook wykonuje si臋 przed wyzerowaniem obra偶e艅 dru偶ynowych przez silnik, dlatego modyfikatory po stronie atakuj膮cego wymagaj膮 teraz jawnych zabezpiecze艅. Dodano je do: **Jednostrza艂owca, Cuttera, Skrytob贸jcy, 呕o艂nierza, Berserkera, Nemezisa i Karaj膮cego**.
+ - **FriendlyFire** - Dodano nowy klucz `FriendlyFire` do dwunastu umiej臋tno艣ci. Domy艣lnie ma warto艣膰 `true`. Ustawienie `false` powoduje, 偶e umiej臋tno艣膰 nie wp艂ywa na cz艂onk贸w w艂asnej dru偶yny, tak jak wcze艣niej dzia艂a艂o to w **D艂ugim No偶u** i **Zab贸jczym Flashu**. Obejmuje to zar贸wno modyfikatory obra偶e艅, jak i materia艂y wybuchowe, kt贸re wcze艣niej jedynie zmniejsza艂y obra偶enia zadawane sojusznikom.
+
+- #### Menu
+ - **WSADMenuVisibleItems** - Dodano nowe ustawienie zast臋puj膮ce sztywn膮 liczb臋 trzech widocznych wierszy menu. Warto艣膰 jest ograniczana do zakresu od 1 do 10.
+ - **Menu WSAD** - Ostatni wiersz menu zachowuje teraz prefiks koloru `#RRGGBB` zamiast traci膰 go przez wrapper kierunku tekstu.
+
+- #### Migracja konfiguracji
+ - **skillsInfo.json** - Brakuj膮ce klucze s膮 teraz zapisywane do pliku podczas jego 艂adowania zamiast by膰 jedynie ustawiane domy艣lnie w pami臋ci. Istniej膮ce warto艣ci pozostaj膮 bez zmian.
+ - **playersLanguage.json** - Gracze s膮 teraz grupowani wed艂ug j臋zyka zamiast posiadania osobnego wiersza dla ka偶dego gracza. Zmniejsza to plik dla 10 000 graczy o oko艂o 20%. Stare pliki s膮 konwertowane przy 艂adowaniu, a nieprawid艂owe SteamID s膮 usuwane.
+
+- #### Debug
+ - **Pr贸bki wydajno艣ci** - Opr贸cz 艣redniej i maksimum raportowane s膮 teraz `p50`, `p95` oraz `p99`.
+ - **Pr贸bkowanie umiej臋tno艣ci** - Ka偶da umiej臋tno艣膰 jest teraz pr贸bkowana, zamiast logowania wy艂膮cznie wywo艂a艅 przekraczaj膮cych dwie milisekundy. Pomiar by艂 wykonywany wcze艣niej, ale raportowanie odrzuca艂o wyniki poni偶ej tego progu.
+ - **Kontekst obci膮偶enia** - Linie agreguj膮ce zawieraj膮 teraz liczb臋 graczy, 偶ywych graczy, bot贸w, aktywnych umiej臋tno艣ci oraz rund, dzi臋ki czemu sesje mo偶na por贸wnywa膰 przy r贸偶nych poziomach obci膮偶enia.
+ - **ENTITIES** - 艢ledzone encje s膮 teraz rozbijane wed艂ug typu.
+ - **STALL** - Linie zawieraj膮 tick, liczb臋 艣ledzonych encji oraz kontekst obci膮偶enia, co u艂atwia odr贸偶nienie pauz podczas 艂adowania mapy od rzeczywistych zawiesze艅.
+ - **DMGHOOK** - Raportuje, jak cz臋sto na hooku obra偶e艅 poprawnie rozpoznawany jest atakuj膮cy oraz umiej臋tno艣膰.
+ - **Bezczynny serwer** - Gdy serwer jest pusty, nic nie jest zapisywane poza liniami cyklu 偶ycia oraz informacjami o do艂膮czaniu i roz艂膮czaniu graczy.
+
+- #### Stabilno艣膰 i start serwera
+ - **Crash podczas startu** - Naprawiono crash serwera z w艂膮czonym `PerfMode` lub `DebugMode`, kt贸ry wyst臋powa艂 przy pierwszej umiej臋tno艣ci podczas uruchamiania. `PerfLog.Sample` wywo艂ywa艂 `IsServerIdle()` przy ka偶dym `SkillAction`, a metoda pr贸bowa艂a skanowa膰 list臋 graczy, zanim serwer by艂 jeszcze gotowy. By艂a to regresja wprowadzona wraz z blokad膮 logowania dla bezczynnego serwera w b8.
+ - **PlayerManager** - Dodano flag臋 `serverActive` ustawian膮 podczas rozpocz臋cia mapy. `IsServerIdle`, `GetTickPlayers` oraz `GetTickBomb` nie odwo艂uj膮 si臋 ju偶 do gry przed uruchomieniem mapy.
+ - **Komendy** - `zmienmape` oraz jeden chi艅ski alias znajdowa艂y si臋 na li艣cie dwukrotnie, co powodowa艂o dwukrotn膮 natywn膮 rejestracj臋 tej samej nazwy komendy. Usuni臋to duplikaty z warto艣ci domy艣lnych oraz dodano zabezpieczenie przed duplikatami r贸wnie偶 w konfiguracjach u偶ytkownik贸w.
+
+- #### Czat
+ - **Og艂oszenie umiej臋tno艣ci** - Umiej臋tno艣ci cz艂onk贸w dru偶yny s膮 teraz wy艣wietlane jako pierwsze, a opis w艂asnej umiej臋tno艣ci jako ostatni, dzi臋ki czemu pozostaje na dole czatu i nie jest od razu wypychany przez kolejne wiadomo艣ci.
+ - **SetRandomSkill** - Nie pozostawia ju偶 otwartego pola czatu, gdy gracz posiada cz艂onk贸w dru偶yny.
+
+- #### Poprawki debugowania
+ - **PerfLog** - `p50`, `p95` i `p99` zwraca艂y wcze艣niej g贸rn膮 granic臋 przedzia艂u histogramu zamiast rzeczywistej pr贸bki. Mog艂o to powodowa膰 raportowanie warto艣ci wy偶szej ni偶 `max`. Problem wyst臋powa艂 w 74% okien podczas 6,5-godzinnej sesji, np. `avg=0.06ms p99=8.00ms max=4.68ms`. Percentyle s膮 teraz obliczane na podstawie rzeczywistych pr贸bek z danego okna. Szacowanie na podstawie histogramu jest u偶ywane tylko jako awaryjne rozwi膮zanie w przypadku przepe艂nienia bufora, z interpolacj膮 wewn膮trz przedzia艂u i ograniczeniem wyniku do `max`.
+ - **EntityManager** - Ju偶 艣ledzona encja mog艂a otrzyma膰 drugi wpis `+`, przez co liczba utworze艅 i usuni臋膰 przestawa艂a si臋 zgadza膰, a log encji wygl膮da艂 jak wyciek pami臋ci. Ponowna rejestracja loguje teraz `~ oldType -> newType`, je艣li typ encji si臋 zmieni艂, i nic nie loguje, je艣li pozosta艂 taki sam.
+ - **Duszek, Ninja, C4 Kamufla偶** - Ukrywaj膮ca encja by艂a rejestrowana dwukrotnie, najpierw jako `prop_dynamic`, a nast臋pnie jako `empty_prop`. Teraz jest 艣ledzona pod prawid艂ow膮 nazw膮 od momentu utworzenia dzi臋ki nowemu parametrowi `trackAs` w `CreateTrackedDynamicProp`.
+
+- #### Czyszczenie kodu
+ - **Ostrze偶enia kompilatora** - Wszystkie dwana艣cie ostrze偶e艅 zosta艂o usuni臋tych. Build jest czysty.
+ - **SkillUtils.SetPlayerCollisions** - Usuni臋to, poniewa偶 metoda zaczyna艂a si臋 od bezwarunkowego `return`.
+ - **Aliasy hooka obra偶e艅** - Usuni臋to nieu偶ywane lokalne zmienne `param` i `param2`, kt贸re pozosta艂y po migracji w 27 plikach.
+
+**Pe艂na aktualizacja zosta艂a przygotowana przez [@ByDexterTR](https://github.com/ByDexterTR) w ramach pull requesta [#53](https://github.com/Juzlus/jRandomSkills/pull/53). Dzi臋kujemy ByDexterTR!**
+
+
+
v1.2.3.b7