From 52491a0c6a2a24a278c519022a0ef2e84e5f04c1 Mon Sep 17 00:00:00 2001 From: "Nikita (Nick)" Date: Mon, 11 Aug 2025 11:05:39 +0200 Subject: [PATCH 001/100] =?UTF-8?q?Skrypt=20publikacji=20jest=20teraz=20po?= =?UTF-8?q?wi=C4=85zany=20z=20CDN=20Polonium?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tools/publish_multi_request.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tools/publish_multi_request.py b/Tools/publish_multi_request.py index b1f912d5489b7..d54ae69edba23 100755 --- a/Tools/publish_multi_request.py +++ b/Tools/publish_multi_request.py @@ -24,8 +24,8 @@ # CONFIGURATION PARAMETERS # Forks should change these to publish to their own infrastructure. # -ROBUST_CDN_URL = "https://build.funkystation.org/" -FORK_ID = "funkystation" +ROBUST_CDN_URL = "https://central.ss14.pl/" +FORK_ID = "polonium" def main(): parser = argparse.ArgumentParser() From 89809099a22fe28ba8e1fbb8ee8108067015d668 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Mon, 11 Aug 2025 11:19:35 +0200 Subject: [PATCH 002/100] Utworzono workflow do publikowania serwera --- .github/workflows/publish.yml | 66 +++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000000000..c131933c18307 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,66 @@ +name: Publish + +concurrency: + group: publish + cancel-in-progress: true + +on: + workflow_dispatch: + schedule: + - cron: "30 3 * * *" + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Fail if we are attempting to run on the master branch + if: ${{GITHUB.REF_NAME == 'master' && github.repository == 'space-wizards/space-station-14'}} + run: exit 1 + + - name: Install dependencies + run: sudo apt-get install -y python3-paramiko python3-lxml + + - uses: actions/checkout@v4.2.2 + with: + submodules: "recursive" + - name: Setup .NET Core + uses: actions/setup-dotnet@v4.1.0 + with: + dotnet-version: 9.0.x + + - name: Get Engine Tag + run: | + cd RobustToolbox + git fetch --depth=1 + + - name: Install dependencies + run: dotnet restore + + - name: Build Packaging + run: dotnet build Content.Packaging --configuration Release --no-restore /m + + - name: Package server + run: dotnet run --project Content.Packaging server --platform win-x64 --platform linux-x64 --platform osx-x64 --platform linux-arm64 + + - name: Package client + run: dotnet run --project Content.Packaging client --no-wipe-release + + - name: Publish version + run: Tools/publish_multi_request.py + env: + PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }} + GITHUB_REPOSITORY: ${{ vars.GITHUB_REPOSITORY }} + + # - name: Publish changelog (Discord) + # continue-on-error: true + # run: Tools/actions_changelogs_since_last_run.py + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # DISCORD_WEBHOOK_URL: ${{ secrets.CHANGELOG_DISCORD_WEBHOOK }} + + # - name: Publish changelog (RSS) + # continue-on-error: true + # run: Tools/actions_changelog_rss.py + # env: + # CHANGELOG_RSS_KEY: ${{ secrets.CHANGELOG_RSS_KEY }} From 44c199231cce475cfeca87548c30fc29a27e2b9a Mon Sep 17 00:00:00 2001 From: nikitosych Date: Mon, 11 Aug 2025 11:43:26 +0200 Subject: [PATCH 003/100] =?UTF-8?q?Naprawiono=20odniesienie=20do=20repozyt?= =?UTF-8?q?orium=20w=20ga=C5=82=C4=99zi=20g=C5=82=C3=B3wnej=20podczas=20sp?= =?UTF-8?q?rawdzania?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c131933c18307..db01868116028 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Fail if we are attempting to run on the master branch - if: ${{GITHUB.REF_NAME == 'master' && github.repository == 'space-wizards/space-station-14'}} + if: ${{GITHUB.REF_NAME == 'master' && github.repository == 'polonium14/ps-private'}} run: exit 1 - name: Install dependencies From c9807b2495ceb9a6ec953f1e8e70a66697f0aa47 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Mon, 11 Aug 2025 13:30:10 +0200 Subject: [PATCH 004/100] Dodano rejestrowanie wersji silnika w funkcji get_engine_version --- Tools/publish_multi_request.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Tools/publish_multi_request.py b/Tools/publish_multi_request.py index d54ae69edba23..41b36c86a4ad7 100755 --- a/Tools/publish_multi_request.py +++ b/Tools/publish_multi_request.py @@ -87,6 +87,7 @@ def get_engine_version() -> str: proc = subprocess.run(["git", "describe","--tags", "--abbrev=0"], stdout=subprocess.PIPE, cwd="RobustToolbox", check=True, encoding="UTF-8") tag = proc.stdout.strip() assert tag.startswith("v") + print(f"Engine version: {tag[1:]}") return tag[1:] # Cut off v prefix. From bfec232e466d5e4dc56688a6b20f99613082c324 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Mon, 11 Aug 2025 13:35:21 +0200 Subject: [PATCH 005/100] =?UTF-8?q?Dodano=20rejestrowanie=20d=C5=82ugo?= =?UTF-8?q?=C5=9Bci=20tokenu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tools/publish_multi_request.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Tools/publish_multi_request.py b/Tools/publish_multi_request.py index 41b36c86a4ad7..22ba88348b794 100755 --- a/Tools/publish_multi_request.py +++ b/Tools/publish_multi_request.py @@ -40,6 +40,7 @@ def main(): } print(f"Starting publish on Robust.Cdn for version {VERSION}") + print(f"Token length: {len(PUBLISH_TOKEN)}") data = { "version": VERSION, From df3363300d3e443ec77f6ea7c027bfee1c9ca320 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Fri, 22 Aug 2025 02:07:06 +0200 Subject: [PATCH 006/100] =?UTF-8?q?Dodano=20automatyczn=C4=85=20synchroniz?= =?UTF-8?q?acj=C4=99=20z=20g=C5=82=C3=B3wnym=20repozytorium?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/auto-sync.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/auto-sync.yml diff --git a/.github/workflows/auto-sync.yml b/.github/workflows/auto-sync.yml new file mode 100644 index 0000000000000..2b61d84ad9f69 --- /dev/null +++ b/.github/workflows/auto-sync.yml @@ -0,0 +1,31 @@ +name: Automatyczna synchronizacja z głównym repozytorium + +on: + workflow_dispatch: + schedule: + - cron: "0 3 * * *" + +jobs: + auto-sync: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + - name: Dodajemy remote public + run: git remote add public https://github.com/polonium14/polonium-station.git + - name: Pobieramy zmiany z głównego repozytorium + run: git fetch public master + - name: Mergujemy zmiany z głównego repozytorium + run: git merge public/master --allow-unrelated-histories -m "Merge public by runner:${{GITHUB.run_id}}}" || true + - name: Sprawdzamy czy są jakieś zmiany + run: git diff --exit-code || echo "Są zmiany" + - name: Push changes + run: git push origin testing || echo "Nie udało się wypchnąć zmian" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_REPOSITORY: ${{ github.repository }} From ae8f4a6c53fd249301b6e1d0766b930f7910c177 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Fri, 22 Aug 2025 02:14:59 +0200 Subject: [PATCH 007/100] =?UTF-8?q?Dodano=20kroki=20do=20ustawienia=20to?= =?UTF-8?q?=C5=BCsamo=C5=9Bci=20git=20oraz=20uprawnienia=20dla=20action?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/auto-sync.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/auto-sync.yml b/.github/workflows/auto-sync.yml index 2b61d84ad9f69..3ed07e69916cc 100644 --- a/.github/workflows/auto-sync.yml +++ b/.github/workflows/auto-sync.yml @@ -8,8 +8,14 @@ on: jobs: auto-sync: runs-on: ubuntu-latest - + permissions: + contents: write + pull-requests: write steps: + - name: git identity + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" - name: Checkout uses: actions/checkout@v4 with: From 209409f4d42d1260d7c84d28c7c91b84296323fc Mon Sep 17 00:00:00 2001 From: nikitosych Date: Fri, 22 Aug 2025 02:17:11 +0200 Subject: [PATCH 008/100] =?UTF-8?q?Poprawiono=20obs=C5=82ug=C4=99=20b?= =?UTF-8?q?=C5=82=C4=99d=C3=B3w?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/auto-sync.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-sync.yml b/.github/workflows/auto-sync.yml index 3ed07e69916cc..5a481badbc0b6 100644 --- a/.github/workflows/auto-sync.yml +++ b/.github/workflows/auto-sync.yml @@ -31,7 +31,7 @@ jobs: - name: Sprawdzamy czy są jakieś zmiany run: git diff --exit-code || echo "Są zmiany" - name: Push changes - run: git push origin testing || echo "Nie udało się wypchnąć zmian" + run: git push origin testing || (echo "Nie udało się wypchnąć zmian" && exit 1) env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_REPOSITORY: ${{ github.repository }} From 4e6523be4f3947344db74c47e9d9cda7e2e780ad Mon Sep 17 00:00:00 2001 From: nikitosych Date: Fri, 22 Aug 2025 02:19:27 +0200 Subject: [PATCH 009/100] =?UTF-8?q?Zmiana=20kolejno=C5=9Bci=20krok=C3=B3w?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/auto-sync.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/auto-sync.yml b/.github/workflows/auto-sync.yml index 5a481badbc0b6..d90975bf3d4d9 100644 --- a/.github/workflows/auto-sync.yml +++ b/.github/workflows/auto-sync.yml @@ -12,16 +12,16 @@ jobs: contents: write pull-requests: write steps: - - name: git identity - run: | - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - name: Checkout uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 token: ${{ secrets.GITHUB_TOKEN }} + - name: git identity + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" - name: Dodajemy remote public run: git remote add public https://github.com/polonium14/polonium-station.git - name: Pobieramy zmiany z głównego repozytorium From e120e19617ff1f06fcf7d19ff5073da92ad1fef0 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Fri, 22 Aug 2025 02:26:39 +0200 Subject: [PATCH 010/100] =?UTF-8?q?Zmieniono=20ga=C5=82=C4=85=C5=BA=20na?= =?UTF-8?q?=20master=20w=20kroku=20Push=20changes=20(o=20bo=C5=BCe...)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/auto-sync.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-sync.yml b/.github/workflows/auto-sync.yml index d90975bf3d4d9..8135b607e780b 100644 --- a/.github/workflows/auto-sync.yml +++ b/.github/workflows/auto-sync.yml @@ -31,7 +31,7 @@ jobs: - name: Sprawdzamy czy są jakieś zmiany run: git diff --exit-code || echo "Są zmiany" - name: Push changes - run: git push origin testing || (echo "Nie udało się wypchnąć zmian" && exit 1) + run: git push origin master || (echo "Nie udało się wypchnąć zmian" && exit 1) # Niech chroni nas Bóg env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_REPOSITORY: ${{ github.repository }} From dd70aab5cd1ca03974deb960341a74b5aad964e4 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Mon, 1 Sep 2025 00:57:30 +0200 Subject: [PATCH 011/100] Tryby --- Resources/Prototypes/game_presets.yml | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/Resources/Prototypes/game_presets.yml b/Resources/Prototypes/game_presets.yml index 3d9d798ae8772..320e5ee7d90be 100644 --- a/Resources/Prototypes/game_presets.yml +++ b/Resources/Prototypes/game_presets.yml @@ -45,7 +45,7 @@ alias: - survival name: survival-title - showInVote: false # secret + showInVote: true # secret description: survival-description rules: - MeteorSwarmScheduler @@ -102,7 +102,8 @@ - all name: all-at-once-title description: all-at-once-description - showInVote: false + showInVote: true + minPlayers: 20 rules: - Nukeops - Traitor @@ -151,7 +152,7 @@ - extended - shittersafari name: extended-title - showInVote: false #2boring2vote + showInVote: true #2boring2vote description: extended-description rules: - BasicStationEventScheduler @@ -165,7 +166,7 @@ - greenshift - shittersafarideluxeedition name: greenshift-title - showInVote: false #4boring4vote + showInVote: true #4boring4vote description: greenshift-description rules: - SpaceTrafficControlFriendlyEventScheduler @@ -224,7 +225,8 @@ - tator name: traitor-title description: traitor-description - showInVote: false + showInVote: true + minPlayers: 6 rules: - DummyNonAntagChance - Traitor @@ -269,7 +271,8 @@ - nukeops name: nukeops-title description: nukeops-description - showInVote: false + showInVote: true + minPlayers: 10 rules: - Nukeops - DummyNonAntagChance @@ -303,7 +306,8 @@ - revolutionaries name: rev-title description: rev-description - showInVote: false + showInVote: true + minPlayers: 10 rules: - DummyNonAntagChance - Revolutionary @@ -355,7 +359,8 @@ - zomber name: zombie-title description: zombie-description - showInVote: false + showInVote: true + minPlayers: 10 rules: - Zombie - BasicStationEventScheduler From 78547259cc8e3481464d8a3498f5c2063227383a Mon Sep 17 00:00:00 2001 From: nikitosych Date: Mon, 1 Sep 2025 01:09:14 +0200 Subject: [PATCH 012/100] mapy --- Resources/Prototypes/Maps/reach.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Maps/reach.yml b/Resources/Prototypes/Maps/reach.yml index 67f33dcb88836..efc34f0c36ef8 100644 --- a/Resources/Prototypes/Maps/reach.yml +++ b/Resources/Prototypes/Maps/reach.yml @@ -16,7 +16,7 @@ mapName: 'Reach' mapPath: /Maps/reach.yml minPlayers: 0 - maxPlayers: 7 + maxPlayers: 5 stations: Reach: stationProto: StandardNanotrasenStation From 0df7915d8903bc0070260ab68af96379ca3a5461 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Mon, 1 Sep 2025 01:55:46 +0200 Subject: [PATCH 013/100] =?UTF-8?q?usuni=C4=99to=20dm=20z=20puli?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Prototypes/game_presets.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/game_presets.yml b/Resources/Prototypes/game_presets.yml index 320e5ee7d90be..a5917e30616b3 100644 --- a/Resources/Prototypes/game_presets.yml +++ b/Resources/Prototypes/game_presets.yml @@ -260,7 +260,7 @@ name: death-match-title description: death-match-description maxPlayers: 15 - showInVote: true + showInVote: false supportedMaps: DeathMatchMapPool rules: - DeathMatch31 From 30f54e57e14b5c48c15239b94346771f516d3731 Mon Sep 17 00:00:00 2001 From: nikitosych <174215049+nikitosych@users.noreply.github.com> Date: Sat, 15 Nov 2025 03:45:39 +0100 Subject: [PATCH 014/100] =?UTF-8?q?Revert=20"usuni=C4=99to=20dm=20z=20puli?= =?UTF-8?q?"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 0df7915d8903bc0070260ab68af96379ca3a5461. --- Resources/Prototypes/game_presets.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/game_presets.yml b/Resources/Prototypes/game_presets.yml index a5917e30616b3..320e5ee7d90be 100644 --- a/Resources/Prototypes/game_presets.yml +++ b/Resources/Prototypes/game_presets.yml @@ -260,7 +260,7 @@ name: death-match-title description: death-match-description maxPlayers: 15 - showInVote: false + showInVote: true supportedMaps: DeathMatchMapPool rules: - DeathMatch31 From d99e4b2beb85bf340c183f5ed5df5fbf7211a7e2 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Tue, 2 Sep 2025 19:03:43 +0200 Subject: [PATCH 015/100] =?UTF-8?q?Proba=20usuni=C4=99cia=20wymaga=C5=84?= =?UTF-8?q?=20do=20zawod=C3=B3w.=20Czy=20zadzia=C5=82a=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Prototypes/Roles/requirement_overrides.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Resources/Prototypes/Roles/requirement_overrides.yml b/Resources/Prototypes/Roles/requirement_overrides.yml index 22ea8bed1503f..f4249aa715ebe 100644 --- a/Resources/Prototypes/Roles/requirement_overrides.yml +++ b/Resources/Prototypes/Roles/requirement_overrides.yml @@ -19,3 +19,15 @@ - !type:DepartmentTimeRequirement department: Command time: 3600 # 1 hour + +- type: jobRequirementOverride + id: Zeroed + jobs: + Captain: + - !type:DepartmentTimeRequirement + department: Engineering + time: 0 + HeadOfPersonnel: + - !type:DepartmentTimeRequirement + department: Engineering + time: 0 From f5dd306e4d69848eebc6bc5d0be6ebd01c42fd36 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Tue, 2 Sep 2025 19:55:02 +0200 Subject: [PATCH 016/100] =?UTF-8?q?Wyzerowano=20wszystkie=20wymagania=20do?= =?UTF-8?q?=20r=C3=B3l?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Roles/requirement_overrides.yml | 156 +++++++++++++++++- 1 file changed, 154 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Roles/requirement_overrides.yml b/Resources/Prototypes/Roles/requirement_overrides.yml index f4249aa715ebe..39438ae39c1b4 100644 --- a/Resources/Prototypes/Roles/requirement_overrides.yml +++ b/Resources/Prototypes/Roles/requirement_overrides.yml @@ -25,9 +25,161 @@ jobs: Captain: - !type:DepartmentTimeRequirement - department: Engineering + department: Civilian time: 0 HeadOfPersonnel: - !type:DepartmentTimeRequirement - department: Engineering + department: Civilian + time: 0 + AtmosphericTechnician: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + ChiefEngineer: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + StationEngineer: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + TechnicalAssistant: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + MedicalIntern: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + MedicalDoctor: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Paramedic: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Psychologist: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Chemist: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + ChiefMedicalOfficer: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + SecurityOfficer: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + SecurityCadet: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + HeadOfSecurity: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Detective: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Warden: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + ResearchAssistant: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Scientist: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + ResearchDirector: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Borg: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + StationAi: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Boxer: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Janitor: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Chef: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Bartender: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Botanist: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Quartermaster: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + CargoTechnician: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + SalvageSpecialist: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Bartender: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Assistant: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Chaplain: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Clown: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Mime: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Lawyer: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Librarian: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Musician: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + ServiceWorker: + - !type:DepartmentTimeRequirement + department: Civilian + time: 0 + Zookeeper: + - !type:DepartmentTimeRequirement + department: Civilian time: 0 From 2f287b8131cabbdbbc115629434235689e390cdf Mon Sep 17 00:00:00 2001 From: nikitosych Date: Tue, 2 Sep 2025 20:49:22 +0200 Subject: [PATCH 017/100] =?UTF-8?q?Usuni=C4=99to=20duplikat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Prototypes/Roles/requirement_overrides.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Resources/Prototypes/Roles/requirement_overrides.yml b/Resources/Prototypes/Roles/requirement_overrides.yml index 39438ae39c1b4..bf919f2d81e26 100644 --- a/Resources/Prototypes/Roles/requirement_overrides.yml +++ b/Resources/Prototypes/Roles/requirement_overrides.yml @@ -120,10 +120,6 @@ department: Civilian time: 0 Chef: - - !type:DepartmentTimeRequirement - department: Civilian - time: 0 - Bartender: - !type:DepartmentTimeRequirement department: Civilian time: 0 From dff906f095575b73903f677cb02d9b9ae8308708 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Thu, 4 Sep 2025 09:47:07 +0200 Subject: [PATCH 018/100] Dodano folder z workflows do gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 0ed0e513c2e02..0ce7993f7ec96 100644 --- a/.gitignore +++ b/.gitignore @@ -3943,3 +3943,6 @@ Resources/MapImages /release-funny/SS14.Server_win-x64.zip ‎Tools/changelog/package-lock.json + +# workflows +.github/workflows/* From 609a55b878c899b28134ab66ad0a22c32e5785bb Mon Sep 17 00:00:00 2001 From: nikitosych Date: Thu, 4 Sep 2025 10:23:20 +0200 Subject: [PATCH 019/100] Przywracanie workflows --- .github/workflows/auto-sync.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/auto-sync.yml b/.github/workflows/auto-sync.yml index 8135b607e780b..ead76100dfe94 100644 --- a/.github/workflows/auto-sync.yml +++ b/.github/workflows/auto-sync.yml @@ -27,7 +27,9 @@ jobs: - name: Pobieramy zmiany z głównego repozytorium run: git fetch public master - name: Mergujemy zmiany z głównego repozytorium - run: git merge public/master --allow-unrelated-histories -m "Merge public by runner:${{GITHUB.run_id}}}" || true + run: git merge public/master --allow-unrelated-histories -m "Merge public by runner:${{ github.run_id }}}" || true + - name: Przywracamy nasze workflows + run: git checkout origin/master -- .github/workflows - name: Sprawdzamy czy są jakieś zmiany run: git diff --exit-code || echo "Są zmiany" - name: Push changes From 76e5a0182483f1ab39001fc2a4183b3aaf845d44 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Thu, 4 Sep 2025 10:30:36 +0200 Subject: [PATCH 020/100] Zaktualizowano workflow --- .github/workflows/auto-sync.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/auto-sync.yml b/.github/workflows/auto-sync.yml index ead76100dfe94..898e36b8ec0b4 100644 --- a/.github/workflows/auto-sync.yml +++ b/.github/workflows/auto-sync.yml @@ -28,8 +28,6 @@ jobs: run: git fetch public master - name: Mergujemy zmiany z głównego repozytorium run: git merge public/master --allow-unrelated-histories -m "Merge public by runner:${{ github.run_id }}}" || true - - name: Przywracamy nasze workflows - run: git checkout origin/master -- .github/workflows - name: Sprawdzamy czy są jakieś zmiany run: git diff --exit-code || echo "Są zmiany" - name: Push changes From 8eca995b11f3d2dba671c4a2024fe419cf2ab6a7 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Thu, 4 Sep 2025 10:35:51 +0200 Subject: [PATCH 021/100] Zaktualizowano workflow --- .github/workflows/auto-sync.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/auto-sync.yml b/.github/workflows/auto-sync.yml index 898e36b8ec0b4..e04859b77a35d 100644 --- a/.github/workflows/auto-sync.yml +++ b/.github/workflows/auto-sync.yml @@ -8,16 +8,13 @@ on: jobs: auto-sync: runs-on: ubuntu-latest - permissions: - contents: write - pull-requests: write steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - token: ${{ secrets.GITHUB_TOKEN }} + token: ${{ secrets.PAT }} - name: git identity run: | git config user.name "github-actions[bot]" From 0eaba7d88ca5c61b8d4adfe7ec1e0564fe3a08bf Mon Sep 17 00:00:00 2001 From: nikitosych Date: Thu, 4 Sep 2025 18:21:35 +0200 Subject: [PATCH 022/100] =?UTF-8?q?Dodano=20integracj=C4=99=20webhook?= =?UTF-8?q?=C3=B3w=20Discord=20dla=20powiadomie=C5=84=20o=20banach?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Administration/Managers/BanManager.cs | 128 +++++++++++++++++- Content.Shared/CCVar/CCVars.Discord.cs | 4 + 2 files changed, 131 insertions(+), 1 deletion(-) diff --git a/Content.Server/Administration/Managers/BanManager.cs b/Content.Server/Administration/Managers/BanManager.cs index 26f3b0d68528e..ba331c48896a0 100644 --- a/Content.Server/Administration/Managers/BanManager.cs +++ b/Content.Server/Administration/Managers/BanManager.cs @@ -24,12 +24,14 @@ using Content.Server.Chat.Managers; using Content.Server.Database; using Content.Server.GameTicking; +using Content.Server.Discord; using Content.Shared.CCVar; using Content.Shared.Database; using Content.Shared.Players; using Content.Shared.Players.PlayTimeTracking; using Content.Shared.Roles; using Robust.Server.Player; +using Robust.Shared; using Robust.Shared.Asynchronous; using Robust.Shared.Collections; using Robust.Shared.Configuration; @@ -55,6 +57,7 @@ public sealed partial class BanManager : IBanManager, IPostInjectInit [Dependency] private readonly ILogManager _logManager = default!; [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly ITaskManager _taskManager = default!; + [Dependency] private readonly DiscordWebhook _dc = default!; [Dependency] private readonly UserDbDataManager _userDbData = default!; private ISawmill _sawmill = default!; @@ -210,6 +213,116 @@ public async void CreateServerBan(NetUserId? target, string? targetUsername, Net _chat.SendAdminAlert(logMessage); KickMatchingConnectedPlayers(banDef, "newly placed ban"); + + _ = DiscordBanNotify( + adminName, + targetName, + reason, + expires.GetValueOrDefault().ToUnixTimeSeconds(), + DateTimeOffset.UtcNow.ToUnixTimeSeconds(), + roundId, + null, + null + ); + } + + // webhoook, inicjator, cel, powód, data wydania, okres banu + private async Task DiscordBanNotify ( + string adminName, + string targetName, + string reason, + long expirationTime, + long issuanceTime, + int? issuanceRnd, + int? situationRnd, + List? roleBans) + { + var isRoleBan = roleBans != null; + + List fields = + [ + new() + { + Inline = true, + Name = "Użytkownik", + Value = targetName, + }, + new() + { + Inline = false, + Name = "Powód banu", + Value = reason, + }, + new() + { + Inline = true, + Name = "Administrator", + Value = adminName + }, + new() + { + Inline = true, + Name = "Wydany", + Value = issuanceRnd == null ? $"" : $", #{issuanceRnd}", + }, + new() + { + Inline = false, + Name = "Wygasa", + Value = expirationTime switch + { + 0 => "Nigdy", + _ => $"", + }, + }, + ]; + + if (roleBans != null) + { + fields.Add(new WebhookEmbedField + { + Inline = false, + Name = "Role", + Value = $"```{string.Join("", roleBans.Select(b => $"-{b.Role}\n"))}```", + }); + } + + await DiscordBanNotify(new WebhookEmbed + { + Title = isRoleBan ? "Zakaz grania na rolach": "Zakaz grania na serwerze", + Fields = fields, + Footer = new () + { + Text = _cfg.GetCVar(CVars.GameHostName), + } + }); + } + + private async Task DiscordBanNotify( + WebhookEmbed embed + ) + { + var webhookUri = _cfg.GetCVar(CCVars.BanWebhook); + + if (webhookUri == string.Empty) + return; + + WebhookIdentifier? webhook = null; + + _dc.GetWebhook(webhookUri, w => webhook = w.ToIdentifier()); + + if (webhook == null) + return; + + try + { + var payload = new WebhookPayload { Embeds = [embed] }; + await _dc.CreateMessage(webhook.Value, payload); + } + catch (Exception) + { + // Ignore + } } private void KickMatchingConnectedPlayers(ServerBanDef def, string source) @@ -294,10 +407,23 @@ public async void CreateRoleBan(NetUserId? target, string? targetUsername, NetUs var length = expires == null ? Loc.GetString("cmd-roleban-inf") : Loc.GetString("cmd-roleban-until", ("expires", expires)); _chat.SendAdminAlert(Loc.GetString("cmd-roleban-success", ("target", targetUsername ?? "null"), ("role", role), ("reason", reason), ("length", length))); - if (target != null && _playerManager.TryGetSessionById(target.Value, out var session)) + ICommonSession? session = null; + if (target != null && _playerManager.TryGetSessionById(target.Value, out var foundSession)) { + session = foundSession; SendRoleBans(session); } + + _ = DiscordBanNotify( + banningAdmin.GetValueOrDefault().ToString(), + target.GetValueOrDefault().ToString(), + reason, + expires.GetValueOrDefault().ToUnixTimeSeconds(), + DateTimeOffset.UtcNow.ToUnixTimeSeconds(), + roundId, + null, + session != null ? _cachedRoleBans.GetValueOrDefault(session) ?? [] : [] + ); } public async Task PardonRoleBan(int banId, NetUserId? unbanningAdmin, DateTimeOffset unbanTime) diff --git a/Content.Shared/CCVar/CCVars.Discord.cs b/Content.Shared/CCVar/CCVars.Discord.cs index 1826a416e5ada..f6b3032fb276f 100644 --- a/Content.Shared/CCVar/CCVars.Discord.cs +++ b/Content.Shared/CCVar/CCVars.Discord.cs @@ -56,6 +56,10 @@ public sealed partial class CCVars public static readonly CVarDef DiscordVotekickWebhook = CVarDef.Create("discord.votekick_webhook", string.Empty, CVar.SERVERONLY); + // Polonium + public static readonly CVarDef BanWebhook = + CVarDef.Create("discord.ban_webhook", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL); + /// /// URL of the Discord webhook which will relay round restart messages. /// From 1f210ca49f30db9bab9cb1fc4235c9988411acd7 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Thu, 4 Sep 2025 20:17:48 +0200 Subject: [PATCH 023/100] =?UTF-8?q?poprawiono=20obs=C5=82ug=C4=99=20webhoo?= =?UTF-8?q?k=C3=B3w=20Discord?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Content.Server/Administration/Managers/BanManager.cs | 7 ++++--- Content.Server/Discord/DiscordWebhook.cs | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Content.Server/Administration/Managers/BanManager.cs b/Content.Server/Administration/Managers/BanManager.cs index ba331c48896a0..6233dcdc2069e 100644 --- a/Content.Server/Administration/Managers/BanManager.cs +++ b/Content.Server/Administration/Managers/BanManager.cs @@ -216,7 +216,7 @@ public async void CreateServerBan(NetUserId? target, string? targetUsername, Net _ = DiscordBanNotify( adminName, - targetName, + targetUsername ?? targetName, reason, expires.GetValueOrDefault().ToUnixTimeSeconds(), DateTimeOffset.UtcNow.ToUnixTimeSeconds(), @@ -294,7 +294,8 @@ await DiscordBanNotify(new WebhookEmbed Footer = new () { Text = _cfg.GetCVar(CVars.GameHostName), - } + }, + Color = Color.Red.ToArgb() & 16777215, }); } @@ -309,7 +310,7 @@ WebhookEmbed embed WebhookIdentifier? webhook = null; - _dc.GetWebhook(webhookUri, w => webhook = w.ToIdentifier()); + await _dc.GetWebhook(webhookUri, w => webhook = w.ToIdentifier()); if (webhook == null) return; diff --git a/Content.Server/Discord/DiscordWebhook.cs b/Content.Server/Discord/DiscordWebhook.cs index bf7c58ac9f842..f28a7e39716ec 100644 --- a/Content.Server/Discord/DiscordWebhook.cs +++ b/Content.Server/Discord/DiscordWebhook.cs @@ -40,7 +40,8 @@ private string GetUrl(WebhookIdentifier identifier) { try { - return await _http.GetFromJsonAsync(url); + var req = await _http.GetFromJsonAsync(url); + return req; } catch (Exception e) { @@ -54,7 +55,7 @@ private string GetUrl(WebhookIdentifier identifier) /// /// The url to get the data from. /// The delegate to invoke with the obtained data, if any. - public async void GetWebhook(string url, Action onComplete) + public async Task GetWebhook(string url, Action onComplete) { if (await GetWebhook(url) is { } data) onComplete(data); From 038e27012a67bb3fc7cf646accb5e52590269927 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Thu, 4 Sep 2025 20:37:36 +0200 Subject: [PATCH 024/100] =?UTF-8?q?B=C5=82=C4=85dzik=20poprawiony?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Content.Server/Administration/Managers/BanManager.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Content.Server/Administration/Managers/BanManager.cs b/Content.Server/Administration/Managers/BanManager.cs index 6233dcdc2069e..2d92bda18f322 100644 --- a/Content.Server/Administration/Managers/BanManager.cs +++ b/Content.Server/Administration/Managers/BanManager.cs @@ -271,7 +271,7 @@ private async Task DiscordBanNotify ( Name = "Wygasa", Value = expirationTime switch { - 0 => "Nigdy", + 0 => "**Nigdy.**", _ => $"", }, }, @@ -415,9 +415,11 @@ public async void CreateRoleBan(NetUserId? target, string? targetUsername, NetUs SendRoleBans(session); } + var isAdminFetched = _playerManager.TryGetSessionById(banningAdmin, out var adminSession); + _ = DiscordBanNotify( - banningAdmin.GetValueOrDefault().ToString(), - target.GetValueOrDefault().ToString(), + isAdminFetched ? adminSession!.Name : "Nie znany", + targetUsername ?? (session != null ? session.Name : "Nie znany"), reason, expires.GetValueOrDefault().ToUnixTimeSeconds(), DateTimeOffset.UtcNow.ToUnixTimeSeconds(), From 76d4c03452f47806f254a9f5f3121e516e8a76c7 Mon Sep 17 00:00:00 2001 From: nikitosych Date: Fri, 5 Sep 2025 00:12:36 +0200 Subject: [PATCH 025/100] =?UTF-8?q?Dodano=20=C5=9Bledzenie=20rund=20do=20p?= =?UTF-8?q?olece=C5=84=20blokowania=20i=20interfejsu=20u=C5=BCytkownika?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Zaktualizowano interfejs użytkownika BanPanel, dodając funkcję wyboru rundy i resetowania. - Zmodyfikowano polecenia związane z banowaniem, aby akceptowały i obsługiwały informacje o rundach. - Ulepszono metody banowania, aby przechowywać dane dotyczące rund. - Zaktualizowano pliki lokalizacyjne dla komunikatów związanych z rundami. --- .../Administration/UI/BanPanel/BanPanel.xaml | 9 +++- .../UI/BanPanel/BanPanel.xaml.cs | 48 ++++++++++++++++++- .../Administration/UI/BanPanel/BanPanelEui.cs | 13 +++-- Content.Server/Administration/BanPanelEui.cs | 25 ++++++++-- .../Administration/Commands/BanCommand.cs | 35 +++++++++++++- .../Commands/DepartmentBanCommand.cs | 27 ++++++++++- .../Administration/Commands/RoleBanCommand.cs | 28 ++++++++++- .../Administration/Managers/BanManager.cs | 24 +++++++--- .../Administration/Managers/IBanManager.cs | 6 ++- .../Managers/VoteManager.DefaultVotes.cs | 2 +- .../Administration/BanPanelEuiState.cs | 9 +++- Resources/Locale/pl-PL/info/ban.ftl | 4 ++ .../Locale/pl-PL/job/role-ban-command.ftl | 2 + 13 files changed, 205 insertions(+), 27 deletions(-) diff --git a/Content.Client/Administration/UI/BanPanel/BanPanel.xaml b/Content.Client/Administration/UI/BanPanel/BanPanel.xaml index eff8ae827d81a..dfe9ac935c785 100644 --- a/Content.Client/Administration/UI/BanPanel/BanPanel.xaml +++ b/Content.Client/Administration/UI/BanPanel/BanPanel.xaml @@ -39,12 +39,17 @@ SPDX-License-Identifier: MIT