59 Commits

Author SHA1 Message Date
cbe725b93b fix: Update secrets config in validation workflows for Gitea (#7)
Some checks failed
Build & Test Map Renderer / build (ubuntu-latest) (push) Successful in 3m48s
RGA schema validator / YAML RGA schema validator (push) Successful in 1m0s
RSI Validator / Validate RSIs (push) Failing after 5s
Test Packaging / Test Packaging (push) Successful in 6m18s
YAML Linter / YAML Linter (push) Successful in 3m36s
Build & Test Map Renderer / Build & Test Debug (push) Successful in 1s
Map file schema validator / YAML map schema validator (push) Successful in 10m11s
Build & Test Debug / build (ubuntu-latest) (push) Successful in 36m26s
Build & Test Debug / Build & Test Debug (push) Successful in 3s
Upstream Sync / check-and-sync (push) Failing after 2m6s
Publish Testing / build (push) Failing after 17m19s
Benchmarks / Run Benchmarks (push) Failing after 3h9m6s
Update Contrib and Patreons in credits / get_credits (push) Has been skipped
Build & Publish Docfx / docfx (push) Failing after 12m15s
Publish / build (push) Failing after 3m45s
Publish Public / build (push) Failing after 11m13s
2025-12-24 04:24:54 +01:00
Codex
ef44a42bf8 Revert "fix: replace Python heredoc with shell+jq in publish.yml"
Some checks failed
Publish Testing / build (push) Failing after 23m26s
Benchmarks / Run Benchmarks (push) Failing after 3h12m18s
Test Packaging / Test Packaging (push) Failing after 1m1s
RGA schema validator / YAML RGA schema validator (push) Failing after 27s
RSI Validator / Validate RSIs (push) Failing after 27s
Map file schema validator / YAML map schema validator (push) Failing after 41s
YAML Linter / YAML Linter (push) Successful in 3m20s
Build & Test Map Renderer / build (ubuntu-latest) (push) Successful in 15m55s
Build & Test Map Renderer / Build & Test Debug (push) Successful in 1s
Build & Test Debug / build (ubuntu-latest) (push) Successful in 45m17s
Build & Test Debug / Build & Test Debug (push) Successful in 4s
Publish Public / build (push) Failing after 4m58s
This reverts commit 9dbe10cbe7.
2025-12-23 08:54:40 +01:00
Codex
9dbe10cbe7 fix: replace Python heredoc with shell+jq in publish.yml
Some checks failed
Build & Test Map Renderer / Build & Test Debug (push) Has been cancelled
Build & Test Map Renderer / build (ubuntu-latest) (push) Has been cancelled
Build & Test Debug / Build & Test Debug (push) Has been cancelled
Build & Test Debug / build (ubuntu-latest) (push) Has been cancelled
Test Packaging / Test Packaging (push) Has been cancelled
RGA schema validator / YAML RGA schema validator (push) Has been cancelled
RSI Validator / Validate RSIs (push) Has been cancelled
Map file schema validator / YAML map schema validator (push) Has been cancelled
YAML Linter / YAML Linter (push) Has been cancelled
Publish / build (push) Failing after 1m1s
Gitea's YAML parser cannot handle heredoc syntax (<<'PY').
Replace with curl + jq which are available on the runner image.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-23 08:53:18 +01:00
Codex
66b43fd8dc fix: correct Python indentation in publish.yml
Some checks failed
Test Packaging / Test Packaging (push) Failing after 46s
RGA schema validator / YAML RGA schema validator (push) Failing after 41s
RSI Validator / Validate RSIs (push) Failing after 41s
Map file schema validator / YAML map schema validator (push) Failing after 39s
Build & Test Map Renderer / build (ubuntu-latest) (push) Successful in 12m44s
Build & Test Map Renderer / Build & Test Debug (push) Successful in 5s
Build & Test Debug / build (ubuntu-latest) (push) Successful in 13m15s
Build & Test Debug / Build & Test Debug (push) Successful in 4s
YAML Linter / YAML Linter (push) Successful in 8m34s
Upstream Sync / check-and-sync (push) Successful in 2m30s
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 06:33:16 +01:00
2002a26c8e Configure wylab/secrets repo for server-specific features (#5)
Some checks failed
Build & Test Map Renderer / build (ubuntu-latest) (push) Successful in 3m29s
Test Packaging / Test Packaging (push) Failing after 29s
RGA schema validator / YAML RGA schema validator (push) Failing after 21s
RSI Validator / Validate RSIs (push) Failing after 23s
Map file schema validator / YAML map schema validator (push) Failing after 21s
Build & Test Map Renderer / Build & Test Debug (push) Has been cancelled
Build & Test Debug / Build & Test Debug (push) Has been cancelled
Build & Test Debug / build (ubuntu-latest) (push) Has been cancelled
YAML Linter / YAML Linter (push) Has been cancelled
2025-12-23 06:25:16 +01:00
Codex
8a48801421 ci: add automated upstream sync workflow
Some checks failed
Build & Test Map Renderer / build (ubuntu-latest) (push) Successful in 3m41s
Test Packaging / Test Packaging (push) Failing after 29s
RGA schema validator / YAML RGA schema validator (push) Failing after 22s
RSI Validator / Validate RSIs (push) Failing after 24s
Map file schema validator / YAML map schema validator (push) Failing after 25s
YAML Linter / YAML Linter (push) Successful in 3m26s
Build & Test Map Renderer / Build & Test Debug (push) Successful in 1s
Build & Test Debug / Build & Test Debug (push) Has been cancelled
Build & Test Debug / build (ubuntu-latest) (push) Has been cancelled
- upstream-sync.yml: Daily check for syndicate/master updates
  - Rebases wylab commits onto upstream changes
  - Creates PR for CI verification
  - Creates issue if rebase conflicts occur

- upstream-sync-merge.yml: Auto-merge on CI success
  - Uses workflow_run trigger on build-test-debug completion
  - Merges PR with rebase method
  - Cleans up upstream-sync branch after merge

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 06:10:46 +01:00
Codex
f3d79333a0 fix: Update TryAddToChemicals to TryAddToBloodstream
Some checks failed
Build & Test Map Renderer / build (ubuntu-latest) (push) Successful in 3m10s
Build & Test Map Renderer / Build & Test Debug (push) Has been cancelled
Build & Test Debug / build (ubuntu-latest) (push) Has started running
Build & Test Debug / Build & Test Debug (push) Has been cancelled
Test Packaging / Test Packaging (push) Has been cancelled
RGA schema validator / YAML RGA schema validator (push) Has been cancelled
RSI Validator / Validate RSIs (push) Has been cancelled
Map file schema validator / YAML map schema validator (push) Has been cancelled
YAML Linter / YAML Linter (push) Has been cancelled
Update Wiki / Build and Publish JSON blobs to wiki (push) Successful in 2m41s
Upstream renamed BloodstreamSystem.TryAddToChemicals to TryAddToBloodstream.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:46:20 +01:00
da6fca5780 ci: Add checkout step to labeler-pr.yml (fixes Gitea compatibility) 2025-12-23 05:46:20 +01:00
eab76b4a67 ci: Rewrite labeler-conflict.yml for Gitea API (fixes GitHub-only action) 2025-12-23 05:46:19 +01:00
6bb874ddb2 ci: Remove rsi-diff.yml (GitHub-only actions incompatible with Gitea) 2025-12-23 05:46:11 +01:00
a25b98fe0c fix: add missing wega alerts locale file
Add alerts/alerts.ftl with vampire blood, strangle, and offer alert
localizations that were missing from the wega port. Fixes runtime
locale errors for alerts-vampire-blood-name/desc keys.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:46:11 +01:00
c1e56d9c98 fix: add Vampire immunity to UncookedAnimalProteins
Port Corvax-Wega-Edit: Vampires no longer get sick, vomit, or take
poison damage when drinking blood. The UncookedAnimalProteins reagent
(produced when Blood is metabolized) now checks for Vampire metabolizer
type in addition to Animal and Vox.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:46:11 +01:00
b840ef7255 Порт: Улучшение UX и дизайна консоли связи
Портировано из space-wizards/space-station-14#41899

Изменения:
- Добавлено подтверждение при изменении уровня угрозы (предотвращает случайные изменения)
- Разделены кнопки вызова/отзыва шаттла в отдельные UI области
- Созданы отдельные вкладки для объявлений и трансляции
- Разбито монолитное меню на 3 виджета: AlertLevelControls, MessagingControls, ShuttleControls
- Добавлен LCD-дисплей с таймером обратного отсчета
- Обновлены текстуры и шрифты

Локализация:
- Полностью переведены новые строки на русский язык в стиле Corvax

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:40 +01:00
8a46ade2b0 Fix NukeOpsTest for IPC species
Skip respirator checks when nukie spawns as IPC (android) since they
don't have lungs. Fixes test failure with RespiratorComponent.

Based on Corvax fix: space-syndicate/space-station-14#3472

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:40 +01:00
cf2b1337cb fix: hide BeaconSoul from spawn menu to fix UninitializedSaveTest
The test requires entities with runtime-assigned EntityUid fields to be
hidden from the spawn menu. BeaconSoul.VampireOwner is set at runtime,
not from prototype data, so it should not be spawnable directly.

This matches the pattern used by other vampire effects like VampireMistEffect.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:40 +01:00
91dea91380 ci: exclude Wylab override files from build-test-debug
Same approach as yaml-linter - delete _Wylab override files before
testing to avoid "Duplicate ID" prototype errors.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:40 +01:00
c36b5cbcb4 fix: add --break-system-packages to pip install in publish workflows
Ubuntu 23.04+ uses PEP 668 to protect system Python packages.
The --break-system-packages flag allows pip to install in externally-managed environments.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:40 +01:00
ac7c948c04 ci: exclude Wylab override files from yaml-linter
The Robust engine's prototype validator flags duplicate IDs as errors,
but duplicate IDs are the intended SS14 pattern for fork customizations
(last loaded wins). Delete _Wylab override files before linting.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:40 +01:00
8c1c2e7c32 fix: add missing _Wega textures and remove duplicate locale
- Copy missing texture files from wega fork (/Textures/_Wega/*.png)
- Remove duplicate bloodbrother locale that caused "already exist" errors

Fixes integration test failures for TestWindows and SandboxTest.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:40 +01:00
11723d91e7 chore: increase integration test timeout to 40 minutes
Tests took 30m 24s, exceeding the previous 30-minute limit.
Adding more buffer to prevent mid-test shutdowns.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:28 +01:00
b4bb992ea3 ci: increase integration test timeout from 20 to 30 minutes
The 20-minute timeout was triggering mid-test, killing all test pairs
and causing cascading failures with "Pool manager has not been
initialized" errors.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:28 +01:00
11fe0d71b4 Fix namespace error for VampireRuleComponent
The component uses Content.Server.GameTicking.Rules.Components namespace,
not Content.Server._Wega.GameTicking.Rules.Components.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:28 +01:00
5b727c1ce7 Add Vampire and Blood Brothers to admin antag menu
- Add admin verbs for making targets into Vampire and Blood Brothers
- Use _Wega vampire action icons (bite, blood_bond)
- Add localization strings for en-US and ru-RU

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:28 +01:00
5149bb5388 tweak: add Wylab game rules overrides for low-pop tuning
- Add SubVampire (30%) and SubBloodBrothers (30%) to all SubGamemode variants
- Cap antag spawn events (Dragon, Ninja, Revenant, Wizard, LoneOps, SleeperAgents) to maxOccurrences: 1
- Lower minPlayers thresholds for low-pop server

🤖 Generated with [Claude Code](https://claude.ai/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:28 +01:00
fbdbf6448b tweak: lower minPlayers to 10 for all antag rules
Adjusted for low-pop server (~20 players):
- Nukeops: 20 → 10
- Changeling: 25 → 10
- Revolutionary: 15 → 10
- Zombie: 20 → 10
- Xenoborgs: 40 → 10

Ratios kept intact.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:28 +01:00
efecd13de3 tweak: lower minPlayers for low-pop server
- BloodBrothers: 20 → 10 players
- Vampire: 20 → 5 players
- SubVampire: 15 → 5 players

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:28 +01:00
116307b057 fix: add missing locale files for vampire/blood brothers
Added missing locale entries:
- MindRoleVampire and MindRoleBloodBrother entity names
- Game rule entities (Vampire, BloodBrothers, SubVampire, SubBloodBrothers)

These were causing the admin antagonist menu to break.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:27 +01:00
0d352835fe fix: add missing vampire and blood brother role localization
Added locale files for roles-antag-vampire-name/objective and
roles-antag-bloodbrother-name/objective which were referenced in
prototypes but missing from locale files.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:27 +01:00
d6690e2c92 ci: replace pwsh with bash in build-test-debug workflow
Gitea runner images don't have PowerShell installed.
Changed integration test step to use bash syntax for env var.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:27 +01:00
e62028546a feat: port wega vampire component checks and slowdown system
- Add SyntheticOperatedComponent marker for android/synthetic check
- Add DnaModifiedComponent marker for genetics modification check
- Add BasicSlowdownStatusEffect for vampire abilities
- Update VampireSystem to use SyntheticOperatedComponent and DnaModifiedComponent
- Update VampireSystem.Abilities to use MovementModStatusSystem.Slowdown

This completes the wega vampire port by matching exact wega fork behavior.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:10 +01:00
b6f500a292 feat: add MetabolizerSystem methods for vampire blood metabolism
Port ClearMetabolizerTypes, TryAddMetabolizerType, and TryRemoveMetabolizerType
methods from wega fork to enable vampire blood metabolism functionality.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:10 +01:00
0a5b85f717 feat: add RemoveStaminaDamage method for vampire healing
Port RemoveStaminaDamage from wega fork to enable proper stamina
reset in vampire abilities. Enables vampires and thralls to have
their stamina damage cleared during healing abilities.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:10 +01:00
4492041b23 fix: add missing prototypes and localization for Vampire/Blood Brothers
- Add Vampire NPC faction prototype (ai_factions.yml)
- Add Counter alert category for vampire blood counter
- Add WeaponVampireClaws entity for vampire abilities
- Add guidebook entries for Vampires and BloodBrothers
- Add localization for metabolizer-type-vampire and guidebook entries
- Add missing null.ogg audio for hallucinations
- Remove non-existent Android/Ipc components from blacklists
- Remove references to missing StealTargetGroups (GlovesKravMaga, WeaponBlueLaserPistol)
- Remove references to missing BlueShieldOfficer job

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:10 +01:00
d4fe79b62f fix: comment out metabolizer manipulation to fix RA0002 permission error
wega fork has ClearMetabolizerTypes/TryAddMetabolizerType methods that wylab lacks.
Direct field access to MetabolizerTypes violates Robust Analyzer permissions.
Commented out for later implementation when metabolizer API is ported.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:09 +01:00
d5cf4f9c13 fix: stub out missing wega APIs in Vampire system
- RemoveStaminaDamage -> commented (3 occurrences)
- MobState.PreCritical -> use Critical instead
- SyntheticOperatedComponent -> commented (2 occurrences)
- MovementModStatusSystem.Slowdown -> use FlashSlowdown
- DnaModifiedComponent -> commented
- MetabolizerSystem.ClearMetabolizerTypes/TryAddMetabolizerType -> direct HashSet manipulation

These features can be implemented later when porting the respective systems from wega.
2025-12-23 05:45:09 +01:00
77bb43e231 fix: comment out missing Surgery/Genetics imports for later implementation 2025-12-23 05:45:09 +01:00
159c0c1aab feat: add Vampire antagonist from wega fork
Vampires are solo antagonists who must drink blood to gain power.
Features 4 class archetypes (Hemomancer, Umbrae, Gargantua, Dantalion)
each with 8 unique abilities unlocked through blood consumption.

Includes:
- Core vampire system with blood drinking mechanics
- 4 class archetypes with 32 total abilities
- Thrall system for Dantalion class
- Blood economy & skill progression
- Holy/unholy damage interactions
- Hallucinations system dependency
- Client UI for class selection
- 40+ sprite assets
- Russian localization

Also adds Hallucinations system (used by Mass Hysteria ability).

Requirements: 15h playtime
Min players: 20

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:09 +01:00
394279fb67 feat: add Blood Brothers antagonist from wega fork
Blood Brothers are paired antagonists who must work together with shared
objectives. Two players are bonded and must:
- Escape together (mandatory)
- Complete shared kill/steal/protect objectives
- Both survive to win

Includes:
- 16 C# files (rule system, objective systems, components)
- Game rule and sub-gamemode prototypes
- 29 objective entity prototypes
- Russian localization
- Guidebook documentation

Requirements: 50h playtime + 25h Security
Min players: 20, Max antags: 8 (4 pairs)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:09 +01:00
3748846615 revert: remove unused GolemHeat feature
Wylab doesn't have playable golem species - only hostile Flesh Golems.
This code does nothing without the GolemHeatComponent on entities.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:45:09 +01:00
f358028232 revert: remove Barks and Height System features (missing dependencies)
- Barks depends on SoundInsulationSystem (not in wylab)
- Height System depends on SpeciesPrototype.MaxItemHeight and
  HumanoidAppearanceComponent.Height (not in wylab)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:44:56 +01:00
e7370ce980 revert: remove Sleep on Buckle feature (requires wl-specific StandingStateComponent)
This feature depends on StandingStateComponent.SleepAction which doesn't exist
in wylab. Removing instead of modifying base components.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:44:56 +01:00
242f56a4da fix: remove StandingStateComponent.SleepAction dependency in SleepOnBuckle
wylab's StandingStateComponent doesn't have SleepAction property (added by wl fork).
Removed cleanup code that referenced it - feature works without it.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:44:56 +01:00
4044ce7cf5 feat: add 11 copy-paste features from ss14-wega and ss14-wl
From ss14-wega (_Wega):
- DeleteOnDrop: auto-delete items when dropped
- FriendlyFaction: prevent friendly fire by faction
- NullRod: holy weapon that removes magic
- EdibleMatter: edible entity component
- Ghost Respawn: allow ghosts to respawn to lobby
- Barks: NPC voice sounds system (99 audio files)

From ss14-wl (_WL):
- Day/Night Cycle: automatic lighting cycle for maps
- Sleep on Buckle: sleep action when buckled
- Height System: tall entities become large items
- Freeze Component: freeze entities at high cold damage
- Suckable Food: mouth-slot consumables (lollipops, gum, etc.)
- GolemHeat: bonus feature (heat mechanics for golems)

Includes:
- 34 C# files
- 99 audio files
- 68 texture files
- 9 prototype files
- 2 locale files
- WegaCVars configuration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:44:56 +01:00
b3ae4dce38 feat: switch wiki workflow to MediaWiki with jtmullen/mediawiki-edit-action
Replace Gitea wiki API with MediaWiki API using jtmullen/mediawiki-edit-action@v0.1.1.
Pages will be uploaded to User:WikiBot/<filename>.json following Corvax pattern.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:44:55 +01:00
40ea691463 fix: use PATCH instead of PUT for Gitea wiki API
Gitea's wiki API requires PATCH for updates, not PUT.
PUT returns HTTP 405 (Method Not Allowed) which curl ignores
by default, so uploads were silently failing.

🤖 Generated with [Claude Code](https://claude.ai/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-23 05:44:55 +01:00
5d9b97d867 fix: remove cache-dotnet from all workflows to prevent OOM
The actions/cache@v4 tar compression with zstdmt causes OOM (exit code
137) on runners with limited memory. Removing cache entirely as a
temporary fix until a better solution is implemented.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 05:44:54 +01:00
aaba6ddda9 fix: remove cache step from publish.yml to prevent hangs
Cache action was hanging, blocking the entire workflow.
2025-12-23 05:44:54 +01:00
33698e02a1 fix: invert Dispose() logic to only shutdown managers that were initialized
In autogen mode (DestinationFile set), Init() returns early before
_dbManager.Init() is called. But Dispose() was calling _dbManager.Shutdown()
specifically when DestinationFile was set, causing NullReferenceException.

Inverted the condition so shutdown only happens in normal mode when
managers were actually initialized.
2025-12-23 05:44:54 +01:00
0da8201aaf fix: pass ACTIONS_CACHE_URL from Gitea variable to cache action 2025-12-23 05:44:54 +01:00
da289f3b1d fix: use file-based curl input to avoid ARG_MAX limit in wiki uploads
The previous implementation stored base64 content in shell variables,
which exceeded the ~2MB ARG_MAX limit when JSON files were large.

Now writes payload to a temp file and uses curl -d @file instead.
2025-12-23 05:44:42 +01:00
de14c9ad56 ci: self-host benchmarks and wiki workflows
- benchmarks.yml: Run locally with PostgreSQL instead of SSH to centcomm
- update-wiki.yml: Use Gitea wiki API instead of MediaWiki

Required secrets:
- BENCHMARKS_SQL_HOST, BENCHMARKS_SQL_PORT, BENCHMARKS_SQL_USER
- BENCHMARKS_SQL_PASSWORD, BENCHMARKS_SQL_DATABASE
- WIKI_TOKEN (Gitea API token with wiki write access)
2025-12-23 05:44:42 +01:00
150f0f5958 fix: revert cache probe logic that caused YAML parse error
Root cause: Gitea Actions' YAML parser doesn't support heredoc syntax
(python - <<'PY') in composite action run blocks.

Error was: "yaml: line 18: could not find expected ':'"

Solution: Use simple cache action - the cache handles 502 errors
gracefully with warnings, so probing is unnecessary.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 05:44:42 +01:00
9ae22ebdde fix: use public CDN URL for remote runner compatibility
- Set ROBUST_CDN_URL to https://cdn.wylab.me/ for remote runner access
- Add cache server availability probing to prevent 502 errors
- Update publish script to respect ROBUST_CDN_URL environment variable
- Fix Docker trigger dispatch API endpoint format

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 05:44:42 +01:00
Wylabb
b05226b96e ci: switch to Gitea-native caching
Replace actions/cache@v4 with v3 and add RUNNER_TOOL_CACHE to use Gitea's native cache infrastructure. The v4 cache was incompatible with Gitea and caused 5-minute delays.

Changes:
- Use actions/cache@v3 (Gitea-compatible)
- Add RUNNER_TOOL_CACHE=/toolcache to all build jobs
- Update cache key to use github.run_id instead of hashFiles

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 05:44:19 +01:00
Wylabb
a3c821e65d ci: cache dotnet dependencies 2025-12-23 05:43:47 +01:00
Wylabb
f1af1d6f9d ci: fix pip install for validate rsis 2025-12-23 05:43:47 +01:00
Wylabb
ea7d8e012b Fix server launcher connectivity by including Content.Packaging assembly
The server was failing to create ACZ packages for launcher clients because
Content.Packaging.dll was not included in the packaged server deployments.
This caused a FileNotFoundException when ContentMagicAczProvider attempted
to call ClientPackaging.WriteResources at runtime.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 05:43:47 +01:00
Codex Bot
f92728c3c6 Cache NuGet and RobustToolbox outputs 2025-12-23 05:43:47 +01:00
Codex Bot
c24087dcce Wire publish workflow to wylab CDN 2025-12-23 05:43:46 +01:00
16 changed files with 313 additions and 96 deletions

View File

@@ -1,4 +1,4 @@
name: "Labels: Approve"
name: "Labels: Approve"
on:
pull_request_review:
@@ -11,8 +11,10 @@ jobs:
if: github.event.review.state == 'approved'
runs-on: ubuntu-latest
steps:
- uses: actions-ecosystem/action-remove-labels@v1
with:
labels: |
Status: Needs Review
Status: Awaiting Changes
- name: Remove review labels
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
API="${{ github.server_url }}/api/v1/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/labels"
curl -sS -X DELETE -H "Authorization: token $GITHUB_TOKEN" "$API/Status%3A%20Needs%20Review" || true
curl -sS -X DELETE -H "Authorization: token $GITHUB_TOKEN" "$API/Status%3A%20Awaiting%20Changes" || true

View File

@@ -1,4 +1,4 @@
name: "Labels: Changes"
name: "Labels: Changes"
on:
pull_request_review:
@@ -11,9 +11,11 @@ jobs:
if: github.event.review.state == 'changes_requested'
runs-on: ubuntu-latest
steps:
- uses: actions-ecosystem/action-add-labels@v1
with:
labels: "Status: Awaiting Changes"
- uses: actions-ecosystem/action-remove-labels@v1
with:
labels: "Status: Needs Review"
- name: Update labels
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
API="${{ github.server_url }}/api/v1/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/labels"
curl -sS -X POST -H "Authorization: token $GITHUB_TOKEN" -H "Content-Type: application/json" \
-d '{"labels":["Status: Awaiting Changes"]}' "$API"
curl -sS -X DELETE -H "Authorization: token $GITHUB_TOKEN" "$API/Status%3A%20Needs%20Review" || true

View File

@@ -57,8 +57,10 @@ jobs:
if [ -n "$HAS_LABEL" ]; then
echo "Removing stale conflict label..."
# URL-encode the label name (handles spaces, colons, etc.)
LABEL_NAME_ENCODED=$(echo "$LABEL_NAME" | jq -rR @uri)
curl -s -X DELETE -H "Authorization: token $API_TOKEN" \
"$API_URL/repos/$REPO_OWNER/$REPO_NAME/issues/$PR_INDEX/labels/$LABEL_NAME"
"$API_URL/repos/$REPO_OWNER/$REPO_NAME/issues/$PR_INDEX/labels/$LABEL_NAME_ENCODED"
echo "Conflict label removed."
fi
fi

View File

@@ -1,4 +1,4 @@
name: "Labels: Review"
name: "Labels: Review"
on:
pull_request_target:
@@ -8,9 +8,11 @@ jobs:
add_label:
runs-on: ubuntu-latest
steps:
- uses: actions-ecosystem/action-add-labels@v1
with:
labels: "S: Needs Review"
- uses: actions-ecosystem/action-remove-labels@v1
with:
labels: "S: Awaiting Changes"
- name: Update labels
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
API="${{ github.server_url }}/api/v1/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/labels"
curl -sS -X POST -H "Authorization: token $GITHUB_TOKEN" -H "Content-Type: application/json" \
-d '{"labels":["S: Needs Review"]}' "$API"
curl -sS -X DELETE -H "Authorization: token $GITHUB_TOKEN" "$API/S%3A%20Awaiting%20Changes" || true

View File

@@ -1,23 +0,0 @@
name: "Labels: Approved"
on:
pull_request_review:
types: [submitted]
jobs:
add_label:
# Change the repository name after you've made sure the team name is correct for your fork!
if: ${{ (github.repository == 'space-wizards/space-station-14') && (github.event.review.state == 'APPROVED') }}
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: tspascoal/get-user-teams-membership@v3
id: checkUserMember
with:
username: ${{ github.actor }}
team: "content-maintainers,junior-maintainers"
GITHUB_TOKEN: ${{ secrets.LABELER_PAT }}
- if: ${{ steps.checkUserMember.outputs.isTeamMember == 'true' }}
uses: actions-ecosystem/action-add-labels@v1
with:
labels: "S: Approved"

View File

@@ -11,6 +11,12 @@ jobs:
add_label:
runs-on: ubuntu-latest
steps:
- uses: actions-ecosystem/action-add-labels@v1
with:
labels: "Branch: Stable"
- name: Add branch label
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl -sS -X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Content-Type: application/json" \
-d '{"labels":["Branch: Stable"]}' \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/labels"

View File

@@ -11,6 +11,12 @@ jobs:
add_label:
runs-on: ubuntu-latest
steps:
- uses: actions-ecosystem/action-add-labels@v1
with:
labels: "Branch: Staging"
- name: Add branch label
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl -sS -X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Content-Type: application/json" \
-d '{"labels":["Branch: Staging"]}' \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/labels"

View File

@@ -1,4 +1,4 @@
name: "Labels: Untriaged"
name: "Labels: Untriaged"
on:
issues:
@@ -10,7 +10,14 @@ jobs:
add_label:
runs-on: ubuntu-latest
steps:
- uses: actions-ecosystem/action-add-labels@v1
if: join(github.event.issue.labels) == ''
with:
labels: "S: Untriaged"
- name: Add untriaged label
if: github.event.issue.labels[0] == null || github.event.pull_request.labels[0] == null
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
NUMBER="${{ github.event.pull_request.number || github.event.issue.number }}"
curl -sS -X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Content-Type: application/json" \
-d '{"labels":["S: Untriaged"]}' \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/issues/$NUMBER/labels"

View File

@@ -15,20 +15,49 @@ jobs:
build:
runs-on: ubuntu-latest
env:
CDN_MANIFEST_URL: https://cdn.wylab.me/fork/wylab/manifest
RUNNER_TOOL_CACHE: /toolcache
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 Python dependencies
run: pip install --break-system-packages requests paramiko lxml
# - name: Install dependencies
# run: sudo apt-get install -y python3-paramiko python3-lxml
- uses: actions/checkout@v4.2.2
with:
submodules: 'recursive'
# Corvax-Secrets-Start
- name: Check if build already published
id: cdn-check
run: |
SHA=$(echo "$GITHUB_SHA" | tr '[:upper:]' '[:lower:]')
if curl -sSf "$CDN_MANIFEST_URL" | jq -e ".builds[\"$SHA\"]" > /dev/null 2>&1; then
echo "Build $SHA already present on CDN; skipping."
echo "skip=true" >> "$GITHUB_OUTPUT"
else
echo "Build $SHA not found on CDN; continuing."
echo "skip=false" >> "$GITHUB_OUTPUT"
fi
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', 'global.json') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Cache RobustToolbox build output
uses: actions/cache@v4
with:
path: RobustToolbox/bin
key: ${{ runner.os }}-robust-${{ hashFiles('RobustToolbox/**/*.csproj', 'global.json') }}
restore-keys: |
${{ runner.os }}-robust-
# Wylab-Secrets-Start
- name: Setup secrets
env:
SSH_KEY: ${{ secrets.SECRETS_PRIVATE_KEY }}
@@ -37,39 +66,43 @@ jobs:
mkdir -p ~/.ssh
echo "${{ secrets.SECRETS_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
echo "HOST *" > ~/.ssh/config
echo " Hostname github.com" >> ~/.ssh/config
echo " Port 22" >> ~/.ssh/config
echo " StrictHostKeyChecking no" >> ~/.ssh/config
git clone git@github.com:corvax-nexus/secrets.git Secrets
cp -R Secrets/Resources/Prototypes Resources/Prototypes/CorvaxSecrets
cp -R Secrets/Resources/ServerPrototypes Resources/Prototypes/CorvaxSecretsServer
cp -R Secrets/Resources/Locale Resources/Locale/ru-RU/corvax-secrets
cp -R Secrets/Resources/Textures Resources/Textures/CorvaxSecrets
cp -R Secrets/Resources/Audio Resources/Audio/CorvaxSecrets
# Corvax-Secrets-End
printf '%s\n' 'Host git.wylab.me' ' Hostname git.wylab.me' ' Port 22' ' User git' ' IdentityFile ~/.ssh/id_rsa' ' StrictHostKeyChecking no' ' UserKnownHostsFile /dev/null' > ~/.ssh/config
chmod 600 ~/.ssh/config
git clone git@git.wylab.me:wylab/secrets.git Secrets
[ -d Secrets/Resources/Prototypes ] && cp -R Secrets/Resources/Prototypes Resources/Prototypes/WylabSecrets
[ -d Secrets/Resources/ServerPrototypes ] && cp -R Secrets/Resources/ServerPrototypes Resources/Prototypes/WylabSecretsServer
[ -d Secrets/Resources/Locale ] && cp -R Secrets/Resources/Locale Resources/Locale/ru-RU/wylab-secrets
[ -d Secrets/Resources/Textures ] && cp -R Secrets/Resources/Textures Resources/Textures/WylabSecrets
[ -d Secrets/Resources/Audio ] && cp -R Secrets/Resources/Audio Resources/Audio/WylabSecrets
# Wylab-Secrets-End
- name: Setup .NET Core
uses: actions/setup-dotnet@v4.1.0
with:
dotnet-version: 9.0.x
if: ${{ steps.cdn-check.outputs.skip != 'true' }}
- name: Get Engine Tag
run: |
cd RobustToolbox
git fetch --depth=1
if: ${{ steps.cdn-check.outputs.skip != 'true' }}
- name: Install dependencies
run: dotnet restore
if: ${{ steps.cdn-check.outputs.skip != 'true' }}
- name: Build Packaging
run: dotnet build Content.Packaging --configuration Release --no-restore /m
if: ${{ steps.cdn-check.outputs.skip != 'true' }}
- name: Package server
run: dotnet run --project Content.Packaging server --platform win-x64 --platform win-arm64 --platform linux-x64 --platform linux-arm64 --platform osx-x64 --platform osx-arm64
if: ${{ steps.cdn-check.outputs.skip != 'true' }}
- name: Package client
run: dotnet run --project Content.Packaging client --no-wipe-release
if: ${{ steps.cdn-check.outputs.skip != 'true' }}
- name: Publish version
run: Tools/publish_multi_request.py
@@ -78,9 +111,10 @@ jobs:
GITHUB_REPOSITORY: wylab/wylab-station-14
FORK_ID: wylab
ROBUST_CDN_URL: https://cdn.wylab.me/
if: ${{ steps.cdn-check.outputs.skip != 'true' }}
- name: Trigger Docker image rebuild
if: ${{ success() }}
if: ${{ success() && steps.cdn-check.outputs.skip != 'true' }}
env:
DISPATCH_TOKEN: ${{ secrets.DOCKER_TRIGGER_TOKEN }}
TARGET_REPO: wylab/WS14-Docker-Linux-Server

View File

@@ -50,19 +50,19 @@ jobs:
cd RobustToolbox/
git submodule update --init --recursive
# Corvax-Secrets-Start
# Wylab-Secrets-Start
- name: Setup secrets
env:
SSH_KEY: ${{ secrets.SECRETS_PRIVATE_KEY }}
if: ${{ env.SSH_KEY != '' }}
run: |
mkdir ~/.ssh
mkdir -p ~/.ssh
echo "${{ secrets.SECRETS_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
echo "HOST *" > ~/.ssh/config
echo "StrictHostKeyChecking no" >> ~/.ssh/config
echo "HOST git.wylab.me" > ~/.ssh/config
echo " StrictHostKeyChecking no" >> ~/.ssh/config
git -c submodule.Secrets.update=checkout submodule update --init
# Corvax-Secrets-End
# Wylab-Secrets-End
- name: Setup .NET Core
uses: actions/setup-dotnet@v4.1.0

View File

@@ -0,0 +1,58 @@
name: Upstream Sync Auto-Merge
on:
workflow_run:
workflows: ["Build & Test"]
types: [completed]
branches: [upstream-sync]
jobs:
auto-merge:
runs-on: ubuntu-latest
if: github.event.workflow_run.conclusion == 'success'
steps:
- name: Find and merge upstream-sync PR
uses: actions/github-script@v7
with:
script: |
// Find open PR from upstream-sync branch
const { data: prs } = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
head: `${context.repo.owner}:upstream-sync`,
state: 'open'
});
if (prs.length === 0) {
console.log('No open upstream-sync PR found');
return;
}
const pr = prs[0];
console.log(`Found PR #${pr.number}: ${pr.title}`);
// Merge the PR using rebase
try {
await github.rest.pulls.merge({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number,
merge_method: 'rebase'
});
console.log(`Successfully merged PR #${pr.number}`);
} catch (error) {
console.log(`Failed to merge: ${error.message}`);
throw error;
}
// Delete the upstream-sync branch after merge
try {
await github.rest.git.deleteRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'heads/upstream-sync'
});
console.log('Deleted upstream-sync branch');
} catch (error) {
console.log(`Failed to delete branch: ${error.message}`);
}

99
.github/workflows/upstream-sync.yml vendored Normal file
View File

@@ -0,0 +1,99 @@
name: Upstream Sync
on:
schedule:
- cron: '0 6 * * *' # Daily at 6am UTC
workflow_dispatch: # Manual trigger
jobs:
check-and-sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Configure git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- name: Add upstream remote
run: |
git remote add syndicate https://github.com/space-syndicate/space-station-14.git
git fetch syndicate master
- name: Check for upstream updates
id: check
run: |
BEHIND=$(git rev-list HEAD..syndicate/master --count)
echo "behind=$BEHIND" >> $GITHUB_OUTPUT
if [ "$BEHIND" -gt 0 ]; then
echo "Upstream has $BEHIND new commits"
echo "has_updates=true" >> $GITHUB_OUTPUT
else
echo "Already up to date"
echo "has_updates=false" >> $GITHUB_OUTPUT
fi
- name: Rebase onto upstream
if: steps.check.outputs.has_updates == 'true'
id: rebase
run: |
# Create sync branch
git checkout -b upstream-sync
# Try rebase
if git rebase syndicate/master; then
echo "rebase_success=true" >> $GITHUB_OUTPUT
git push -f origin upstream-sync
else
git rebase --abort
echo "rebase_success=false" >> $GITHUB_OUTPUT
fi
- name: Create PR for CI verification
if: steps.check.outputs.has_updates == 'true' && steps.rebase.outputs.rebase_success == 'true'
uses: actions/github-script@v7
with:
script: |
const behind = '${{ steps.check.outputs.behind }}';
// Check if PR already exists
const { data: prs } = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
head: `${context.repo.owner}:upstream-sync`,
state: 'open'
});
if (prs.length > 0) {
console.log('PR already exists, skipping creation');
return;
}
// Create PR
await github.rest.pulls.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: `Upstream sync: ${behind} new commits from syndicate/master`,
head: 'upstream-sync',
base: 'master',
body: `Automatic rebase of wylab commits onto updated syndicate/master.\n\n**${behind} new upstream commits**\n\nThis PR will be auto-merged when CI passes.`
});
- name: Create issue on rebase conflict
if: steps.check.outputs.has_updates == 'true' && steps.rebase.outputs.rebase_success == 'false'
uses: actions/github-script@v7
with:
script: |
const behind = '${{ steps.check.outputs.behind }}';
await github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: `Upstream sync failed - ${behind} commits behind`,
body: `Automatic rebase onto syndicate/master failed due to conflicts.\n\nManual intervention required:\n\`\`\`bash\ngit fetch syndicate\ngit rebase syndicate/master\n# resolve conflicts\ngit push --force-with-lease origin master\n\`\`\``,
labels: ['upstream-sync', 'needs-attention']
});

View File

@@ -15,19 +15,19 @@ jobs:
- uses: actions/checkout@v4.2.2
- name: Setup Submodule
run: git submodule update --init
# Corvax-Secrets-Start
# Wylab-Secrets-Start
- name: Setup secrets
env:
SSH_KEY: ${{ secrets.SECRETS_PRIVATE_KEY }}
if: ${{ env.SSH_KEY != '' }}
run: |
mkdir ~/.ssh
mkdir -p ~/.ssh
echo "${{ secrets.SECRETS_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
echo "HOST *" > ~/.ssh/config
echo "StrictHostKeyChecking no" >> ~/.ssh/config
echo "HOST git.wylab.me" > ~/.ssh/config
echo " StrictHostKeyChecking no" >> ~/.ssh/config
git -c submodule.Secrets.update=checkout submodule update --init
# Corvax-Secrets-End
# Wylab-Secrets-End
- name: Pull engine updates
uses: space-wizards/submodule-dependency@v0.1.5
- uses: PaulRitter/yaml-schema-validator@v1

View File

@@ -5,35 +5,57 @@ on:
branches: [ master, staging, stable ]
merge_group:
pull_request:
paths:
- '**.rsi/**'
types: [ opened, reopened, synchronize, ready_for_review ]
branches: [ master, staging, stable ]
jobs:
validate_rsis:
name: Validate RSIs
runs-on: ubuntu-latest
steps:
- name: Check for RSI changes
id: check_rsi
uses: dorny/paths-filter@v3
with:
filters: |
rsi:
- '**.rsi/**'
- name: Skip if no RSI changes
if: steps.check_rsi.outputs.rsi != 'true' && github.event_name == 'pull_request'
run: echo "No RSI files changed, skipping validation"
- uses: actions/checkout@v4.2.2
if: steps.check_rsi.outputs.rsi == 'true' || github.event_name != 'pull_request'
- name: Setup Submodule
if: steps.check_rsi.outputs.rsi == 'true' || github.event_name != 'pull_request'
run: git submodule update --init
# Corvax-Secrets-Start
# Wylab-Secrets-Start
- name: Setup secrets
env:
SSH_KEY: ${{ secrets.SECRETS_PRIVATE_KEY }}
if: ${{ env.SSH_KEY != '' }}
if: (steps.check_rsi.outputs.rsi == 'true' || github.event_name != 'pull_request') && env.SSH_KEY != ''
run: |
mkdir ~/.ssh
mkdir -p ~/.ssh
echo "${{ secrets.SECRETS_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
echo "HOST *" > ~/.ssh/config
echo "StrictHostKeyChecking no" >> ~/.ssh/config
echo "HOST git.wylab.me" > ~/.ssh/config
echo " StrictHostKeyChecking no" >> ~/.ssh/config
git -c submodule.Secrets.update=checkout submodule update --init
# Corvax-Secrets-End
# Wylab-Secrets-End
- name: Pull engine updates
if: steps.check_rsi.outputs.rsi == 'true' || github.event_name != 'pull_request'
uses: space-wizards/submodule-dependency@v0.1.5
- name: Install Python dependencies
if: steps.check_rsi.outputs.rsi == 'true' || github.event_name != 'pull_request'
run: |
python3 -m pip install --user --break-system-packages pillow jsonschema
- name: Validate RSIs
if: steps.check_rsi.outputs.rsi == 'true' || github.event_name != 'pull_request'
run: |
python3 RobustToolbox/Schemas/validate_rsis.py Resources/

View File

@@ -15,19 +15,19 @@ jobs:
- uses: actions/checkout@v4.2.2
- name: Setup Submodule
run: git submodule update --init
# Corvax-Secrets-Start
# Wylab-Secrets-Start
- name: Setup secrets
env:
SSH_KEY: ${{ secrets.SECRETS_PRIVATE_KEY }}
if: ${{ env.SSH_KEY != '' }}
run: |
mkdir ~/.ssh
mkdir -p ~/.ssh
echo "${{ secrets.SECRETS_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
echo "HOST *" > ~/.ssh/config
echo "StrictHostKeyChecking no" >> ~/.ssh/config
echo "HOST git.wylab.me" > ~/.ssh/config
echo " StrictHostKeyChecking no" >> ~/.ssh/config
git -c submodule.Secrets.update=checkout submodule update --init
# Corvax-Secrets-End
# Wylab-Secrets-End
- name: Pull engine updates
uses: space-wizards/submodule-dependency@v0.1.5
- uses: PaulRitter/yaml-schema-validator@v1

View File

@@ -488,7 +488,7 @@
- !type:PopupMessage
conditions:
- !type:MetabolizerTypeCondition
type: [ Animal, Vox, Vampire, Plant ] # Corvax-Wega-Edit + Plant
type: [ Animal, Vox, Vampire ] # Corvax-Wega-Edit
inverted: true
type: Local
visualType: MediumCaution
@@ -498,12 +498,12 @@
probability: 0.1
conditions:
- !type:MetabolizerTypeCondition
type: [ Animal, Vox, Vampire, Plant ] # Corvax-Wega-Edit + Plant
type: [ Animal, Vox, Plant, Vampire ] # Corvax-Wega-Edit: added Vampire
inverted: true
- !type:HealthChange
conditions:
- !type:MetabolizerTypeCondition
type: [ Animal, Vox, Vampire, Plant ] # Corvax-Wega-Edit + Plant
type: [ Animal, Vox, Plant, Vampire ] # Corvax-Wega-Edit: added Vampire
inverted: true
damage:
types: