diff --git a/.github/workflows/auto-changelog.yml b/.github/workflows/auto-changelog.yml index a0e7a91809b0..971b9cd617ef 100644 --- a/.github/workflows/auto-changelog.yml +++ b/.github/workflows/auto-changelog.yml @@ -18,78 +18,17 @@ jobs: with: python-version: '3.x' - - name: Install PyYAML - run: pip install pyyaml + - name: Install Dependencies + run: | + pip install pyyaml + pip install PyGithub - name: Parse PR and Update Changelog env: CHANGELOG_FILE_PATH: 'Resources/Changelog/ChangelogStarlight.yml' GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - import os - import yaml - import re - from datetime import datetime - from github import Github - - changelog_path = os.getenv("CHANGELOG_FILE_PATH") - pr_number = os.getenv("GITHUB_REF").split('/')[-1] - repo_name = os.getenv("GITHUB_REPOSITORY") - github_token = os.getenv("GITHUB_TOKEN") - - g = Github(github_token) - repo = g.get_repo(repo_name) - pr = repo.get_pull(int(pr_number)) - - def parse_changelog(pr_body): - changelog_entries = [] - pattern = r":cl: (.+?)\\n((?:- (add|remove|tweak|fix): .+\\n)+)" - matches = re.finditer(pattern, pr_body, re.MULTILINE) - - for match in matches: - author = match.group(1).strip() - changes = match.group(2).strip().splitlines() - - for change in changes: - change_type, message = change.split(":", 1) - changelog_entries.append({ - "author": author, - "type": change_type.strip('- ').capitalize(), - "message": message.strip() - }) - return changelog_entries - - def get_last_id(changelog_data): - if not changelog_data or "Entries" not in changelog_data or not changelog_data["Entries"]: - return 0 - return max(entry["id"] for entry in changelog_data["Entries"]) - - if ":cl:" in pr.body: - merge_time = pr.merged_at - entries = parse_changelog(pr.body) - - if os.path.exists(changelog_path): - with open(changelog_path, "r") as file: - changelog_data = yaml.safe_load(file) or {"Entries": []} - else: - changelog_data = {"Entries": []} - - last_id = get_last_id(changelog_data) - for entry in entries: - last_id += 1 - changelog_entry = { - "author": entry["author"], - "changes": [{ - "message": entry["message"], - "type": entry["type"] - }], - "id": last_id, - "time": merge_time.isoformat() - } - changelog_data["Entries"].append(changelog_entry) - - with open(changelog_path, "w") as file: - yaml.dump(changelog_data, file, allow_unicode=True) + PR_NUMBER: ${{ github.event.pull_request.number }} + run: python ./Tools/_Starlight/update_changelog.py - name: Commit and push changes run: | diff --git a/Content.Shared/Weapons/Ranged/Components/GunComponent.cs b/Content.Shared/Weapons/Ranged/Components/GunComponent.cs index 98b1d2fe2a4f..ac91b75954a0 100644 --- a/Content.Shared/Weapons/Ranged/Components/GunComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/GunComponent.cs @@ -218,7 +218,7 @@ public sealed partial class GunComponent : Component /// How fast the projectile moves. /// /// - [AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] + [DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)] public float ProjectileSpeedModified; /// diff --git a/Resources/Locale/en-US/objectives/conditions/other-traitor-progress.ftl b/Resources/Locale/en-US/objectives/conditions/other-traitor-progress.ftl index 4ee832d7ce0f..21da265f9256 100644 --- a/Resources/Locale/en-US/objectives/conditions/other-traitor-progress.ftl +++ b/Resources/Locale/en-US/objectives/conditions/other-traitor-progress.ftl @@ -1 +1 @@ -objective-condition-other-traitor-progress-title = Ensure fellow traitor {$targetName}, {CAPITALIZE($job)} achieves at least half their objectives. +objective-condition-other-traitor-progress-title = Ensure fellow traitor {$targetName}, {CAPITALIZE($job)} achieves at least half their objectives. \ No newline at end of file diff --git a/Resources/Locale/en-US/objectives/conditions/station.ftl b/Resources/Locale/en-US/objectives/conditions/station.ftl new file mode 100644 index 000000000000..794dcdc91e47 --- /dev/null +++ b/Resources/Locale/en-US/objectives/conditions/station.ftl @@ -0,0 +1,2 @@ +objective-no-owner-traitor-sliver-text = Cut off a sliver from the supermatter crystal. +objective-description-traitor-sliver-text = Use any cutting tool that comes in handy. A scalpel is more recommended. Also, don't die of radiation poisoning. \ No newline at end of file diff --git a/Resources/Prototypes/Objectives/traitor.yml b/Resources/Prototypes/Objectives/traitor.yml index e2e0c9c3d036..ee00bbff4b70 100644 --- a/Resources/Prototypes/Objectives/traitor.yml +++ b/Resources/Prototypes/Objectives/traitor.yml @@ -297,7 +297,6 @@ # station's property - type: entity - noSpawn: true parent: BaseTraitorStealObjective id: StealSupermatterSliverObjective components: @@ -305,5 +304,5 @@ difficulty: 2.5 - type: StealCondition stealGroup: SupermatterSliver - objectiveNoOwnerText: Cut off a sliver from the supermatter crystal. - descriptionText: Use any cutting tool that comes in handy. A scalpel is more recommended. Also, don't die of radiation poisoning. + objectiveNoOwnerText: objective-no-owner-traitor-sliver-text + descriptionText: objective-description-traitor-sliver-text diff --git a/Resources/Prototypes/SoundCollections/lobby.yml b/Resources/Prototypes/SoundCollections/lobby.yml index f85a8b22af28..ce0bd618c895 100644 --- a/Resources/Prototypes/SoundCollections/lobby.yml +++ b/Resources/Prototypes/SoundCollections/lobby.yml @@ -2,7 +2,6 @@ id: LobbyMusic files: - /Audio/Lobby/thunderdome.ogg - - /Audio/Lobby/absconditus.ogg - /Audio/Lobby/space_asshole.ogg - /Audio/Lobby/endless_space.ogg - /Audio/Lobby/singuloose.ogg diff --git a/Resources/Prototypes/_StarLight/Enemies/Abyss.yml b/Resources/Prototypes/_StarLight/Enemies/Abyss.yml index 0e533b802760..57266b1b1509 100644 --- a/Resources/Prototypes/_StarLight/Enemies/Abyss.yml +++ b/Resources/Prototypes/_StarLight/Enemies/Abyss.yml @@ -72,8 +72,6 @@ - type: Speech speechVerb: LargeMob - type: NoSlip - - type: NPCUseActionOnTarget - actionId: ActionMobBlink - type: StatusEffects # Overwriting basesimplemob to remove flash, getting flashed as dragon just feelsbad allowed: - SlowedDown @@ -147,8 +145,6 @@ tags: - DoorBumpOpener - type: NoSlip - - type: NPCUseActionOnTarget - actionId: ActionMobBlink - type: StatusEffects # Overwriting basesimplemob to remove flash, getting flashed as dragon just feelsbad allowed: - SlowedDown diff --git a/Resources/Prototypes/_StarLight/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/_StarLight/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml new file mode 100644 index 000000000000..a9d24b3a2e4f --- /dev/null +++ b/Resources/Prototypes/_StarLight/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -0,0 +1,20 @@ +- type: entity + name: EMP impulse + parent: BaseBulletTrigger + id: BulletEMP + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Effects/emp.rsi + layers: + - state: emp_pulse + - type: EmpOnTrigger + range: 2 + energyConsumption: 30000 + disableDuration: 10 + - type: Ammo + muzzleFlash: null + - type: PointLight + radius: 3.5 + color: blue + energy: 0.5 \ No newline at end of file diff --git a/Resources/Prototypes/_StarLight/Procedural/dungeon_configs.yml b/Resources/Prototypes/_StarLight/Procedural/dungeon_configs.yml index 2d3c22e45027..a55ce3d8ef0c 100644 --- a/Resources/Prototypes/_StarLight/Procedural/dungeon_configs.yml +++ b/Resources/Prototypes/_StarLight/Procedural/dungeon_configs.yml @@ -157,7 +157,7 @@ EntranceFlank: SyndieDungeonWindow Junction: BaseAirlock WallMounts: SyndieDungeonWalls - Window: ReinforcedWindow + Window: SyndieDungeonWindow tiles: FallbackTile: FloorShuttleRed whitelists: @@ -182,7 +182,7 @@ EntranceFlank: SovietDungeonWindow Junction: BaseAirlock WallMounts: SovietDungeonWalls - Window: WindowRCDResistant + Window: SovietDungeonWindow tiles: FallbackTile: FloorConcreteMono whitelists: diff --git a/Tools/_Starlight/update_changelog.py b/Tools/_Starlight/update_changelog.py new file mode 100644 index 000000000000..cd7e7f76cb7c --- /dev/null +++ b/Tools/_Starlight/update_changelog.py @@ -0,0 +1,70 @@ +import os +import yaml +import re +from datetime import datetime +from github import Github + +# Параметры окружения +changelog_path = os.getenv("CHANGELOG_FILE_PATH") +pr_number = os.getenv("PR_NUMBER") +repo_name = os.getenv("GITHUB_REPOSITORY") +github_token = os.getenv("GITHUB_TOKEN") + +# Инициализация GitHub API +g = Github(github_token) +repo = g.get_repo(repo_name) +pr = repo.get_pull(int(pr_number)) + +def parse_changelog(pr_body): + changelog_entries = [] + pattern = r":cl: (.+?)\n((?:- (add|remove|tweak|fix): .+\n)+)" + matches = re.finditer(pattern, pr_body, re.MULTILINE) + + for match in matches: + author = match.group(1).strip() + changes = match.group(2).strip().splitlines() + + for change in changes: + change_type, message = change.split(":", 1) + changelog_entries.append({ + "author": author, + "type": change_type.strip('- ').capitalize(), + "message": message.strip() + }) + return changelog_entries + +def get_last_id(changelog_data): + if not changelog_data or "Entries" not in changelog_data or not changelog_data["Entries"]: + return 0 + return max(entry["id"] for entry in changelog_data["Entries"]) + +def update_changelog(): + if ":cl:" in pr.body: + merge_time = pr.merged_at + entries = parse_changelog(pr.body) + + if os.path.exists(changelog_path): + with open(changelog_path, "r") as file: + changelog_data = yaml.safe_load(file) or {"Entries": []} + else: + changelog_data = {"Entries": []} + + last_id = get_last_id(changelog_data) + for entry in entries: + last_id += 1 + changelog_entry = { + "author": entry["author"], + "changes": [{ + "message": entry["message"], + "type": entry["type"] + }], + "id": last_id, + "time": merge_time.isoformat() + } + changelog_data["Entries"].append(changelog_entry) + + with open(changelog_path, "w") as file: + yaml.dump(changelog_data, file, allow_unicode=True) + +if __name__ == "__main__": + update_changelog()