Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pr work #166

Merged
merged 12 commits into from
Dec 20, 2024
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
VerticalAlignment="Top"
>
<GridContainer
Rows="2"
Rows="1"
HSeparationOverride="5"
VSeparationOverride="5"
HorizontalExpand="True">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ ent-CircuitImprinterMachineCircuitboard = принтер схем (машинн
.desc = { ent-BaseMachineCircuitboard.desc }
ent-CircuitImprinterHyperConvectionMachineCircuitboard = гиперконвекционный принтер схем (машинная плата)
.desc = Печатная плата гиперконвекционного принтера схем.
ent-ExosuitFabricatorMachineCircuitboard = фабрикатор экзокостюмов (машинная плата)
ent-ExosuitFabricatorMachineCircuitboard = сборочный цех (машинная плата)
.desc = { ent-BaseMachineCircuitboard.desc }
ent-ResearchAndDevelopmentServerMachineCircuitboard = сервер РнД (машинная плата)
.desc = Машинная плата для сервера РнД.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ ent-CircuitImprinter = принтер схем
.desc = Печатает платы для машин.
ent-CircuitImprinterHyperConvection = гиперконвекционный принтер схем
.desc = Экспериментальный принтер схем, использующий технологию экстремального нагрева для замедленного, но гораздо более экономичного создания предметов.
ent-ExosuitFabricator = фабрикатор экзокостюмов
ent-ExosuitFabricator = сборочный цех
.desc = Печатает запчасти для создания робототехники и других механизмов.
ent-Biofabricator = фабрикатор биокубов
.desc = Производит кубики животных из биомассы.
Expand Down
2 changes: 1 addition & 1 deletion Resources/Prototypes/Catalog/Cargo/cargo_service.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
- type: cargoProduct
id: ServiceFaxMachine
icon:
sprite: Structures/Machines/fax_machine.rsi
sprite: NES/Structures/Machines/fax_machine.rsi #NES14-Changes
state: icon
product: CrateServiceFaxMachine
cost: 2000
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
description: Bluespace technologies on the application of bureaucracy.
components:
- type: Sprite
sprite: Structures/Machines/fax_machine.rsi
sprite: NES/Structures/Machines/fax_machine.rsi #NES14-Changes
drawdepth: SmallObjects
layers:
- state: icon
map: [ "enum.FaxMachineVisuals.VisualState" ]
- type: Icon
sprite: Structures/Machines/fax_machine.rsi
sprite: NES/Structures/Machines/fax_machine.rsi #NES14-Changes
state: icon
- type: Appearance
- type: Physics
Expand Down
7 changes: 6 additions & 1 deletion Resources/Prototypes/Entities/Structures/Machines/lathe.yml
Original file line number Diff line number Diff line change
Expand Up @@ -630,19 +630,24 @@
description: Creates parts for robotics and other mechanical needs.
components:
- type: Sprite
sprite: Structures/Machines/exosuit_fabricator.rsi
sprite: NES/Structures/Machines/exosuit_fabricator.rsi #NES14-Changes
layers:
- state: fab-idle
map: ["enum.LatheVisualLayers.IsRunning"]
- state: fab-load
map: ["enum.MaterialStorageVisualLayers.Inserting"]
- state: fab-o
map: ["enum.WiresVisualLayers.MaintenancePanel"]
- state: unlit
shader: unshaded
map: ["enum.PowerDeviceVisualLayers.Powered"]
- type: Machine
board: ExosuitFabricatorMachineCircuitboard
- type: Lathe
idleState: fab-idle
runningState: fab-active
unlitRunningState: unlit-building
unlitIdleState: unlit
staticRecipes:
- MMI
- PositronicBrain
Expand Down
44 changes: 22 additions & 22 deletions Resources/Prototypes/GameRules/events.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@
- type: StationEvent
weight: 10
duration: 1
minimumPlayers: 15
minimumPlayers: 6
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Review reduced player thresholds for critical events

Multiple critical events have significantly reduced player requirements:

  • BreakerFlip: 15 → 6
  • BureaucraticError: 25 → 6
  • ClericalError: 15 → 6
  • DragonSpawn: 20 → 10
  • NinjaSpawn: 30 → 10

This could lead to overwhelming situations on smaller servers where multiple major events occur simultaneously.

Consider implementing:

  1. A global event cooldown system that scales with player count
  2. Event priority categories to prevent multiple major events from running simultaneously
  3. Dynamic player thresholds that adjust based on server performance and current active events

Also applies to: 133-133, 146-146, 170-170, 200-200

- type: BreakerFlipRule

- type: entity
Expand All @@ -130,7 +130,7 @@
startAnnouncement: station-event-bureaucratic-error-announcement
startAudio: #Delta-V: Previously unheard announcer line for DeltaV's custom announcer
path: /Audio/Announcements/bureaucratic_error.ogg
minimumPlayers: 25
minimumPlayers: 6
weight: 5
duration: 1
- type: BureaucraticErrorRule
Expand All @@ -143,7 +143,7 @@
components:
- type: StationEvent
startAnnouncement: station-event-clerical-error-announcement
minimumPlayers: 15
minimumPlayers: 6
weight: 5
duration: 1
- type: ClericalErrorRule
Expand All @@ -167,7 +167,7 @@
weight: 1 # DeltaV - was 6.5
earliestStart: 60 # DeltaV - was 40
reoccurrenceDelay: 20
minimumPlayers: 45 # DeltaV - was 20
minimumPlayers: 10 # DeltaV - was 20
duration: null
- type: SpaceSpawnRule
spawnDistance: 0
Expand Down Expand Up @@ -197,7 +197,7 @@
duration: null
earliestStart: 30
reoccurrenceDelay: 60 # DeltaV - was 20
minimumPlayers: 40 # DeltaV - was 30
minimumPlayers: 10 # DeltaV - was 30
- type: SpaceSpawnRule
- type: AntagLoadProfileRule
- type: AntagObjectives
Expand Down Expand Up @@ -252,7 +252,7 @@
weight: 1 # DeltaV - was 7.5, lowered because of GlimmerRevenantSpawn event
duration: 1
earliestStart: 45
minimumPlayers: 20
minimumPlayers: 10
- type: RandomSpawnRule
prototype: MobRevenant

Expand All @@ -263,7 +263,7 @@
# parent: BaseGameRule
# components:
# - type: StationEvent
# weight: 15
# weight: 10
# duration: 1
# - type: FalseAlarmRule

Expand All @@ -284,8 +284,8 @@
parent: BaseStationEventLongDelay
components:
- type: StationEvent
earliestStart: 15
minimumPlayers: 10 # DeltaV - Was 15
earliestStart: 10
minimumPlayers: 6 # DeltaV - Was 10
weight: 5 # DeltaV - was 7
duration: 240
- type: KudzuGrowthRule
Expand Down Expand Up @@ -342,8 +342,8 @@
startAnnouncement: station-event-vent-clog-start-announcement
startAudio:
path: /Audio/Announcements/ventclog.ogg # DeltaV - custom announcer
earliestStart: 20 # DeltaV - was 15
minimumPlayers: 15
earliestStart: 20 # DeltaV - was 10
minimumPlayers: 3
weight: 7.5 # DeltaV - was 5
duration: 60
- type: VentClogRule
Expand All @@ -357,7 +357,7 @@
startAudio:
path: /Audio/Announcements/attention.ogg
earliestStart: 20
minimumPlayers: 15
minimumPlayers: 6
weight: 5
duration: 60
- type: VentCrittersRule
Expand All @@ -378,7 +378,7 @@
startAudio:
path: /Audio/Announcements/attention.ogg
earliestStart: 20
minimumPlayers: 15
minimumPlayers: 10
weight: 5
duration: 60
- type: VentCrittersRule
Expand All @@ -399,7 +399,7 @@
startAudio:
path: /Audio/Announcements/attention.ogg
earliestStart: 20
minimumPlayers: 15
minimumPlayers: 6
weight: 5
duration: 60
- type: VentCrittersRule
Expand All @@ -416,7 +416,7 @@
startAudio:
path: /Audio/Announcements/attention.ogg
earliestStart: 45 # DeltaV - was 20
minimumPlayers: 30 # DeltaV - was 20
minimumPlayers: 10 # DeltaV - was 20
weight: 1 # DeltaV - was 1.5
duration: 60
- type: VentCrittersRule
Expand All @@ -430,7 +430,7 @@
components:
- type: StationEvent
earliestStart: 90 # DeltaV - was 50
minimumPlayers: 40
minimumPlayers: 20
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

⚠️ Potential issue

Based on the gathered information, I can now provide the final response:

Confirmed balance concerns with antagonist event changes

The codebase shows multiple antagonist events with reduced player requirements:

  • ZombieOutbreak: minimumPlayers reduced to 20, with weight=1 (rare occurrence)
  • Multiple events reduced to minimumPlayers: 10 (LoneOps, Dragon, Revenant, etc.)
  • No existing antagonist density controls found to prevent overlap

The concerns are valid since:

  • Multiple antagonist events can now trigger with lower player counts
  • No built-in system exists to control overall antagonist density
  • Some events are marked with "DeltaV" comments indicating intentional threshold reductions
🔗 Analysis chain

Balance concerns with antagonist event changes

The reduced player requirements for major antagonist events:

  • ZombieOutbreak: minimumPlayers: 20
  • LoneOps: minimumPlayers: 10
  • SleeperAgents: minimumPlayers: 10

Combined with other threshold reductions, this could lead to too many antagonists relative to crew size.

Implement an antagonist density check that prevents new antagonist events if the ratio of antagonists to crew exceeds a configurable threshold.

Also applies to: 467-467, 503-503


Let me gather more information about the ZombieOutbreak event mentioned in the review comment.


Let me check for any existing antagonist density controls or configurations.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for potential antagonist overlap in configurations
rg -A 5 "minimumPlayers.*10" --type yaml

Length of output: 5731


Script:

#!/bin/bash
# Check ZombieOutbreak configuration and related events
rg -A 10 "ZombieOutbreak" --type yaml

Length of output: 1488


Script:

#!/bin/bash
# Search for any antagonist ratio or density controls
rg -i "(antag|antagonist).*(ratio|density|threshold|limit)" --type yaml
rg -i "(ratio|density|threshold|limit).*(antag|antagonist)" --type yaml

Length of output: 147

weight: 1 # Zombies was happening basically every single survival round, so now it's super rare
duration: 1
- type: ZombieRule
Expand Down Expand Up @@ -464,7 +464,7 @@
- type: StationEvent
earliestStart: 60 # DeltaV - was 45
weight: 3.5 # DeltaV - was 5
minimumPlayers: 30 # DeltaV - was 20
minimumPlayers: 10 # DeltaV - was 20
reoccurrenceDelay: 30
duration: 1
- type: RuleGrids
Expand Down Expand Up @@ -500,7 +500,7 @@
- type: StationEvent
earliestStart: 30
weight: 5 # DeltaV - Was 8 now 5
minimumPlayers: 15
minimumPlayers: 10
maxOccurrences: 1 # can only happen once per round
startAnnouncement: station-event-communication-interception
startAudio:
Expand All @@ -527,7 +527,7 @@
components:
- type: StationEvent
weight: 10
duration: 150
duration: 100
maxDuration: 300
- type: MassHallucinationsRule
minTimeBetweenIncidents: 30 # DeltaV - was 0.1
Expand Down Expand Up @@ -566,7 +566,7 @@
startAudio:
path: /Audio/Announcements/attention.ogg
weight: 5
minimumPlayers: 25
minimumPlayers: 10
reoccurrenceDelay: 20
- type: GreytideVirusRule
accessGroups:
Expand All @@ -585,9 +585,9 @@
components:
- type: StationEvent
weight: 5
earliestStart: 15
earliestStart: 10
reoccurrenceDelay: 20
minimumPlayers: 4
minimumPlayers: 3
duration: null
- type: SpaceSpawnRule
spawnDistance: 0
Expand Down
8 changes: 4 additions & 4 deletions Resources/Prototypes/GameRules/pests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
earliestStart: 15
weight: 6
duration: 50
minimumPlayers: 30 # Hopefully this is enough for the Rat King's potential Army (it was not, raised from 15 -> 30)
minimumPlayers: 10 # Hopefully this is enough for the Rat King's potential Army (it was not, raised from 15 -> 30)
- type: VentCrittersRule
entries:
- id: MobMouse
Expand Down Expand Up @@ -113,7 +113,7 @@
earliestStart: 15
weight: 6
duration: 50
minimumPlayers: 30
minimumPlayers: 7
- type: VentCrittersRule
entries:
- id: MobSnail
Expand All @@ -122,5 +122,5 @@
prob: 0.002
- id: MobSnailMoth
prob: 0.002
#- id: MobSnailInstantDeath # DeltaV - no
#prob: 0.00001 # ~ 1:2000 snails
- id: MobSnailInstantDeath # DeltaV - no
prob: 0.00001 # ~ 1:2000 snails
12 changes: 6 additions & 6 deletions Resources/Prototypes/GameRules/roundstart.yml
Original file line number Diff line number Diff line change
Expand Up @@ -338,10 +338,10 @@
parent: BaseGameRule # we can remerge this with the other schedulers, but it will silently fail due to that limitation without a separate scheduler to balance atm.
components:
- type: BasicStationEventScheduler
minimumTimeUntilFirstEvent: 2700 # 45 mins #shows up like half way through shift.
minimumTimeUntilFirstEvent: 8900 #NES14-Changes
minMaxEventTiming:
min: 1200 # 20 mins
max: 7200 # 120 mins # you probably arent getting a second visitor shuttle in one round, but it is possible.
min: 8720
max: 11200
scheduledGameRules: !type:NestedSelector
tableId: SpaceTrafficControlTable

Expand All @@ -350,10 +350,10 @@
parent: BaseGameRule
components:
- type: BasicStationEventScheduler
minimumTimeUntilFirstEvent: 1200 # 20 mins
minimumTimeUntilFirstEvent: 7900 # 20 mins
minMaxEventTiming:
min: 600 # 10 mins
max: 1800 # 30 mins
min: 7720 # 10 mins
max: 9200 # 30 mins
scheduledGameRules: !type:NestedSelector
tableId: UnknownShuttlesFriendlyTable

Expand Down
10 changes: 5 additions & 5 deletions Resources/Prototypes/GameRules/unknown_shuttles.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
id: UnknownShuttleCargoLost
components:
- type: StationEvent
maxOccurrences: 2 # should be the same as [copies] in shuttle_incoming_event.yml
maxOccurrences: 1 # should be the same as [copies] in shuttle_incoming_event.yml
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Inconsistency found between maxOccurrences and copies configuration

The maxOccurrences values in unknown_shuttles.yml do not match the copies configuration in shuttle_incoming_event.yml:

  • ShuttleCargoLost: maxOccurrences=1 but copies=2
  • TravelingCuisine: maxOccurrences=1 but copies=2
  • DisasterEvacPod: maxOccurrences=1 but copies=3
  • SyndieEvacPod: maxOccurrences=1 but copies=2
  • Microshuttle: maxOccurrences=1 but copies=4
🔗 Analysis chain

Verify consistency with shuttle_incoming_event.yml

The systematic reduction of maxOccurrences to 1 for all shuttle events should be verified against the [copies] configuration in shuttle_incoming_event.yml.

Consider:

  • Documenting the rationale for this systematic reduction
  • Evaluating the impact on event variety during longer rounds
  • Implementing a mechanism to ensure different shuttle types appear across rounds

Also applies to: 71-71, 81-81, 101-101, 220-220


Let me search for the referenced shuttle_incoming_event.yml file and its [copies] configuration.


Let's check the content of shuttle_incoming_event.yml to verify the [copies] configuration.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for [copies] configuration in shuttle_incoming_event.yml
rg "\[copies\]" -A 2 -g "*shuttle_incoming_event.yml"

# Look for any related configurations
rg "maxOccurrences:" -A 1 -g "*.yml"

Length of output: 2396


Script:

#!/bin/bash
# Search for shuttle_incoming_event.yml file
fd "shuttle_incoming_event.yml"

# Search for any file containing "shuttle" and "incoming" in its name
fd "shuttle.*incoming"

# As fallback, search for content mentioning shuttle incoming events
rg -i "shuttle.*incoming.*event" -g "*.yml"

Length of output: 901


Script:

#!/bin/bash
# Check the content of shuttle_incoming_event.yml
cat Resources/Prototypes/Shuttles/shuttle_incoming_event.yml

Length of output: 2084

- type: LoadMapRule
preloadedGrid: ShuttleCargoLost

Expand All @@ -68,7 +68,7 @@
components:
- type: StationEvent
startAnnouncement: station-event-unknown-shuttle-incoming
maxOccurrences: 2 # should be the same as [copies] in shuttle_incoming_event.yml
maxOccurrences: 1 # should be the same as [copies] in shuttle_incoming_event.yml
- type: LoadMapRule
preloadedGrid: TravelingCuisine

Expand All @@ -78,7 +78,7 @@
components:
- type: StationEvent
startAnnouncement: station-event-unknown-shuttle-incoming
maxOccurrences: 3 # should be the same as [copies] in shuttle_incoming_event.yml
maxOccurrences: 1 # should be the same as [copies] in shuttle_incoming_event.yml
- type: LoadMapRule
preloadedGrid: DisasterEvacPod

Expand All @@ -98,7 +98,7 @@
- type: StationEvent
startAnnouncement: null # It should be silent.
weight: 5 # lower because weird freelance roles
maxOccurrences: 2 # should be the same as [copies] in shuttle_incoming_event.yml
maxOccurrences: 1 # should be the same as [copies] in shuttle_incoming_event.yml
- type: LoadMapRule
preloadedGrid: SyndieEvacPod

Expand Down Expand Up @@ -217,7 +217,7 @@
- type: StationEvent
startAnnouncement: station-event-unknown-shuttle-incoming #!!
weight: 11 # this is higher because its just a little generic personal shuttle
maxOccurrences: 4
maxOccurrences: 1
- type: LoadMapRule
preloadedGrid: Microshuttle

Expand Down
2 changes: 1 addition & 1 deletion Resources/Prototypes/Objectives/stealTargetGroups.yml
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@
id: FaxMachineCaptain
name: steal-target-groups-fax-machine-captain
sprite:
sprite: Structures/Machines/fax_machine.rsi
sprite: NES/Structures/Machines/fax_machine.rsi #NES14-Changes
state: icon

- type: stealTargetGroup
Expand Down
2 changes: 1 addition & 1 deletion Resources/Prototypes/Research/experimental.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
id: BasicRobotics
name: research-technology-basic-robotics
icon:
sprite: Structures/Machines/exosuit_fabricator.rsi
sprite: NES/Structures/Machines/exosuit_fabricator.rsi #NES14-Changes
state: fab-idle
discipline: Experimental
tier: 1
Expand Down
Loading
Loading