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>
- 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>
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>
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>
Портировано из 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>
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>
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>
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>
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>
- 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>
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>
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>
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>
- 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>
- 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>
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>
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>
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>
- 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>
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>
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>
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>
- 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.
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>
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>
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>
- 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>
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>
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>
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>
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>
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>
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.
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.