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()