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

Botany Rework Part 2: GrowthComponents #31461

Draft
wants to merge 244 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
244 commits
Select commit Hold shift + click to select a range
0977571
initial commit, adds waterGrowthComponent/System
PraxisMapper Aug 25, 2024
4bd8ea8
Add other water check to component
PraxisMapper Aug 26, 2024
5880db2
use entitySystem instead of events for this
PraxisMapper Aug 28, 2024
2eaa18f
NutrientGrowthComponent hooked up, yml loading now works for these too
PraxisMapper Aug 28, 2024
adf658f
Aging now a separate component/system
PraxisMapper Aug 28, 2024
16447ba
swabs should support growthComponents now.
PraxisMapper Aug 28, 2024
2844c1e
multiple fixes
PraxisMapper Aug 28, 2024
fc4ee82
Add Unviable component
PraxisMapper Aug 28, 2024
4a29ca8
consumeGas component, and setting common dependencies in parent class
PraxisMapper Aug 28, 2024
b93ef5c
add exude gas component
PraxisMapper Aug 28, 2024
410c3c7
more age code into age system
PraxisMapper Aug 28, 2024
f715ef1
autoharvest is now a component.
PraxisMapper Aug 28, 2024
9e0ffde
Pressure tolerance growth component
PraxisMapper Aug 28, 2024
57e5af6
temperature tolerance growth system added
PraxisMapper Aug 28, 2024
10eea9c
being ready to harvest is an age system check
PraxisMapper Aug 28, 2024
d8682af
notes
PraxisMapper Aug 29, 2024
eecbf98
add weeds and pests to new component.
PraxisMapper Aug 29, 2024
9b81f33
add pest increase check to system
PraxisMapper Aug 29, 2024
db39b2f
IdealLight/LightTolerance were unused. Remove them.
PraxisMapper Aug 29, 2024
44a9387
Merge branch 'master' into growthRework
drakewill-CRL Sep 8, 2024
ee402f1
Finish applying base components to seed packets.
PraxisMapper Sep 8, 2024
5ad8451
add remaining normal growth components
PraxisMapper Sep 8, 2024
7f5d534
ctrl+h fix
PraxisMapper Sep 8, 2024
6fcb5cf
Update core (#31942)
UbaserB Sep 8, 2024
efe54e0
Biogenerator (#30694)
EmoGarbage404 Sep 8, 2024
680b9c9
Automatic changelog update
PJBot Sep 8, 2024
230ea9b
Metamorphosis - FoodSequence 3 (#31012)
TheShuEd Sep 8, 2024
4b152d1
Automatic changelog update
PJBot Sep 8, 2024
5b6e075
bagel update (#31944)
Emisse Sep 8, 2024
070f38f
box update (#31945)
Emisse Sep 8, 2024
937276d
fland update (#31946)
Emisse Sep 8, 2024
35f50f2
marathon update (#31947)
Emisse Sep 8, 2024
5f6dac6
meta update (#31948)
Emisse Sep 8, 2024
b6019cf
omega update (#31949)
Emisse Sep 8, 2024
b2007bc
packed update (#31950)
Emisse Sep 8, 2024
4b8beda
Add completions to addobjective and localize it (#30456)
nikthechampiongr Sep 8, 2024
5edbd3d
Automatic changelog update
PJBot Sep 8, 2024
e93c3ff
Update submodule to 233.1.0 (#31954)
metalgearsloth Sep 8, 2024
f7a87b5
FTL + AI fixes (#31952)
metalgearsloth Sep 8, 2024
ef54ea7
Automatic changelog update
PJBot Sep 8, 2024
0e99ddb
Fixes being able to craft the justice helmet with a justice helmet (#…
PopGamer45 Sep 8, 2024
1a3a686
Automatic changelog update
PJBot Sep 8, 2024
c7b9895
some securiby contra fixes (#31956)
Killerqu00 Sep 8, 2024
3d4a811
Automatic changelog update
PJBot Sep 8, 2024
713abf6
Make random sentience actually happen (#31953)
Psychpsyo Sep 8, 2024
2de0858
Automatic changelog update
PJBot Sep 8, 2024
a1b27db
remove HatBase (#31971)
lzk228 Sep 8, 2024
c46a4ab
Revert "FTL + AI fixes (#31952)" (#31968)
slarticodefast Sep 8, 2024
eab318e
Rings now give a small amout of gold / silver when scrapped (#31847)
beck-thompson Sep 8, 2024
dbb5da1
Automatic changelog update
PJBot Sep 8, 2024
d5b9151
Update PULL_REQUEST_TEMPLATE.md (#31046)
lzk228 Sep 8, 2024
7eb5c0a
Radiation blocker values for directional plasma and uranium windows (…
K-Dynamic Sep 8, 2024
e6f1492
Automatic changelog update
PJBot Sep 8, 2024
f2615f0
Corrects some typos in the uplink catalog, adjusts grammar (#31989)
HerCoyote23 Sep 8, 2024
ca1bfbf
Add SetEntity(Owner) so can view APC sprite in UI (Bug fix) (#31962)
jamessimo Sep 8, 2024
69be5d0
Cog update (#31986)
Spessmann Sep 9, 2024
1dc8a86
fix moffra antennae (#31981)
Sadie-silly Sep 9, 2024
6fb5ad5
Set Salamander Max Pop to 80 (#31907)
Nairodian Sep 9, 2024
fb47889
make laid power cables more visible (#32000)
qwerltaz Sep 9, 2024
d5c69b5
Automatic changelog update
PJBot Sep 9, 2024
8894e32
Budget insuls leaves behind frayed insulative fibers instead of insul…
ArtisticRoomba Sep 9, 2024
82464da
Automatic changelog update
PJBot Sep 9, 2024
2187aef
Make mobs without hands unable to spill jugs (#31438)
slarticodefast Sep 9, 2024
3b2fc54
Automatic changelog update
PJBot Sep 9, 2024
5a6a337
Extend shuttle dock time if the shuttle doesn't dock at evac. (#31496)
PJB3005 Sep 9, 2024
83182d8
Automatic changelog update
PJBot Sep 9, 2024
f9faafe
make laid power cables more visible v2 (#32008)
qwerltaz Sep 9, 2024
f297231
pacifists can use grappling guns (#32014)
Boaz1111 Sep 9, 2024
09d9843
Automatic changelog update
PJBot Sep 9, 2024
a6d8c46
Allow all bots to be used for chameleon projector (#32006)
lzk228 Sep 9, 2024
fae7622
Automatic changelog update
PJBot Sep 9, 2024
2f7ad78
Trooper Uniform and Hat (#31997)
DieselMohawk Sep 9, 2024
0f9f37d
Automatic changelog update
PJBot Sep 9, 2024
7c99b5c
fix dragon spawn location and round end summary (#31890)
qwerltaz Sep 9, 2024
6e911bf
Automatic changelog update
PJBot Sep 9, 2024
7929f89
Surveillance camera's red light fixes (#31831)
godisdeadLOL Sep 9, 2024
a7c1cdc
Automatic changelog update
PJBot Sep 9, 2024
00f90ac
Add easy window upgrading, fix some other window issues. (#31978)
Blackern5000 Sep 9, 2024
f9aaf13
Automatic changelog update
PJBot Sep 9, 2024
0003462
Nuke Now Requires the Disk to be Inserted to Toggle Anchor (#29565)
Cojoke-dot Sep 9, 2024
7a6efea
Properly credit contributors who were truncated by GitHub API (#31739)
mirrorcult Sep 9, 2024
e491bc9
Automatic changelog update
PJBot Sep 9, 2024
2a7bc17
Display agents' jobs in the Round End Summary window (#31652)
Hreno Sep 9, 2024
82af768
Automatic changelog update
PJBot Sep 9, 2024
3f6846b
clean up electronics lathe recipes (#31524)
deltanedas Sep 9, 2024
38a6534
Automatic changelog update
PJBot Sep 9, 2024
2452e46
Completes secure wiring across all airlocks and windoors (#30794)
IamVelcroboy Sep 9, 2024
2263311
Fix some contraband issues (#31606)
Winkarst-cpu Sep 9, 2024
f916729
Automatic changelog update
PJBot Sep 9, 2024
ec4d59f
Save unpublished news articles (#31491)
themias Sep 9, 2024
1088113
Fix spawnpref (#31892)
metalgearsloth Sep 9, 2024
7aad705
Automatic changelog update
PJBot Sep 9, 2024
f2b67fc
Special latejoin message for captain (#31991)
lzk228 Sep 9, 2024
c16b638
Automatic changelog update
PJBot Sep 9, 2024
2f3b50e
Silly teal gloves for realsies this time :3 (#31865)
Thinbug0 Sep 9, 2024
b3745c2
Automatic changelog update
PJBot Sep 9, 2024
119dd61
Revert "Fix spawnpref" (#32018)
Emisse Sep 9, 2024
1f1302b
New Space Ninja intro song (#31055)
chillyconmor Sep 9, 2024
0c78c5d
Automatic changelog update
PJBot Sep 9, 2024
8e6da59
Adds Trooper Uniform to Loadouts (#32019)
DieselMohawk Sep 9, 2024
d21ad98
Automatic changelog update
PJBot Sep 10, 2024
2f5264b
Cog update (#32022)
Spessmann Sep 10, 2024
62f268c
Impliment visitor ID, reorganize shuttle event and ghost role yml, st…
IProduceWidgets Sep 10, 2024
7472686
Automatic changelog update
PJBot Sep 10, 2024
ffcad7b
Renamed circuit boards to law boards (#31914)
ScarKy0 Sep 10, 2024
e9bacfb
Automatic changelog update
PJBot Sep 10, 2024
19d23e3
FoodSequence fix (#32034)
TheShuEd Sep 10, 2024
0cdc8e5
Arrivals timer fix (#32037)
ScarKy0 Sep 10, 2024
03151ea
Fix justice helm crafting (#32042)
themias Sep 10, 2024
7903ebb
Automatic changelog update
PJBot Sep 10, 2024
21817c7
meta update (#32045)
Emisse Sep 10, 2024
4b357a3
Removal of Maxcaps via cvar (#31437)
TurboTrackerss14 Sep 10, 2024
511dd43
Automatic changelog update
PJBot Sep 10, 2024
29b0b33
makes advanced atmospherics require the basic atmospherics tech (#32048)
Boaz1111 Sep 10, 2024
b091640
Automatic changelog update
PJBot Sep 10, 2024
ae7e58d
fix: Check revenant ability costs correctly (#32050)
DisposableCrewmember42 Sep 10, 2024
5109edd
Automatic changelog update
PJBot Sep 10, 2024
35bc409
Fixes some common iconsmoothing oddities (#32051)
Flareguy Sep 10, 2024
b306afb
Adds salvage magnet board to the circuit imprinter (#31996)
ArtisticRoomba Sep 10, 2024
0ca8f28
Automatic changelog update
PJBot Sep 10, 2024
94141c3
Revert Unknown Shuttle Antagonists (#32052)
LankLTE Sep 10, 2024
4f7d331
Automatic changelog update
PJBot Sep 10, 2024
14d5bbb
Fixes Borgs and Syndicats getting hurt by glass shards and other thin…
Vermidia Sep 11, 2024
276b0f0
Automatic changelog update
PJBot Sep 11, 2024
a9d93e1
Mining Asteroid Treasure Vaults (#31638)
EmoGarbage404 Sep 11, 2024
4b0ac51
Automatic changelog update
PJBot Sep 11, 2024
c13e37e
Remove ERP from RD Figurine voiceline (#32057)
Plykiya Sep 11, 2024
635e800
Reapply "Fix spawnpref" (#32018) (#32058)
metalgearsloth Sep 11, 2024
9519535
Add "X.A.N.A." as an AI name (#31976)
PJB3005 Sep 11, 2024
5740a88
Fix Station AI being affected by Bureaucratic Event (#32021)
SlamBamActionman Sep 11, 2024
69f96a2
Automatic changelog update
PJBot Sep 11, 2024
07afed1
Reduced atmos canister sell price (#31965)
K-Dynamic Sep 11, 2024
7f76af4
Automatic changelog update
PJBot Sep 11, 2024
e510504
Hivelord mob (#31322)
EmoGarbage404 Sep 11, 2024
6fe649c
Automatic changelog update
PJBot Sep 11, 2024
5290e64
TechAnomaly fixes (#32067)
TheShuEd Sep 11, 2024
8fb7857
Ore Processors can now produce Reinforced Glass (#32069)
PeccNeck Sep 11, 2024
20c4aeb
Automatic changelog update
PJBot Sep 11, 2024
38a0ca7
Fixes swords not being able to be used to make bats (#32075)
Plykiya Sep 11, 2024
dba10a1
Reduce vertical margin on vending machine UI (#32074)
Plykiya Sep 11, 2024
982be4e
Automatic changelog update
PJBot Sep 11, 2024
bb21244
Banners are no longer indestructible (#32077)
Plykiya Sep 11, 2024
01713ac
Automatic changelog update
PJBot Sep 11, 2024
f2f76f7
Fix cauterization spam from space damage (#32080)
themias Sep 11, 2024
2d7aa82
dont log missing ArtifactComponent for artifexium (#32073)
deltanedas Sep 11, 2024
d156e69
Automatic changelog update
PJBot Sep 11, 2024
125258e
add material composition to some salv treasure (#31970)
deltanedas Sep 11, 2024
5d1627d
Automatic changelog update
PJBot Sep 11, 2024
0df5319
Make the pr link more visible in the changelog bot (#32047)
VasilisThePikachu Sep 11, 2024
5b88b0b
Change forensic pad to use label isntead of name changing (#31842)
lzk228 Sep 12, 2024
9702757
Automatic changelog update
PJBot Sep 12, 2024
e140b3f
fixes a ton of contraband issues (#32078)
Plykiya Sep 12, 2024
01cbaf7
clean up robotics lathe recipes (#31522)
deltanedas Sep 12, 2024
782d6d7
clean up security lathe recipes (#31523)
deltanedas Sep 12, 2024
292de9c
Make context menu uses spritetree (#31792)
metalgearsloth Sep 12, 2024
8401b94
Fix latejoins (#32093)
metalgearsloth Sep 12, 2024
934b0a6
Update submodule to 234.0.0 (#32095)
metalgearsloth Sep 12, 2024
2a58fa1
Reapply "FTL + AI fixes (#31952)" (#31968) (#32094)
metalgearsloth Sep 12, 2024
2a6f15d
Update submodule to 234.1.0 (#32098)
metalgearsloth Sep 12, 2024
c8f2ddc
Add ReagentWhitelist to Injector component and system (#28262)
blueDev2 Sep 12, 2024
3201353
Add guidebook protodata tag: embed prototype values in guidebook text…
Tayrtahn Sep 12, 2024
8b2ea59
don't apply traits for borg and ai (#31990)
lzk228 Sep 12, 2024
8df384f
Automatic changelog update
PJBot Sep 12, 2024
b36efce
Smart tomato pet (#31932)
MrRobDemo Sep 12, 2024
3b5c3da
Automatic changelog update
PJBot Sep 12, 2024
adfbc6e
Gave AI a comms console (#31852)
ScarKy0 Sep 12, 2024
4b85108
Automatic changelog update
PJBot Sep 12, 2024
1c6b9aa
movercontroller namespace (#31749)
Errant-4 Sep 12, 2024
1d997d6
fix missing circuitboard recipes (#32092)
slarticodefast Sep 13, 2024
b6ca604
Fix replay load error screens (#32115)
PJB3005 Sep 13, 2024
b3ecb30
Fix medical PDA toggling light when scanning (#32091)
themias Sep 13, 2024
9d56a80
Automatic changelog update
PJBot Sep 13, 2024
f30bec5
Eject mech pilot alert (#31649)
Gorox221 Sep 13, 2024
a151d4e
Automatic changelog update
PJBot Sep 13, 2024
0d40b0b
Add extradimensional orange, holymelon, meatwheat, worldpeas mutation…
slarticodefast Sep 13, 2024
38f9cac
Automatic changelog update
PJBot Sep 13, 2024
71d92c9
Set default PDA uplink and music visibility to false (#28373)
ShadowCommander Sep 13, 2024
c723493
Automatic changelog update
PJBot Sep 13, 2024
3a83e1a
Added void cloak hood (#31061)
NotSoDana Sep 13, 2024
1e9c8f0
Automatic changelog update
PJBot Sep 13, 2024
115ed0c
Fix setmapatmos temperature argument
Fildrance Sep 13, 2024
1a4a467
Automatic changelog update
PJBot Sep 13, 2024
8385de8
Fix powered machines working unpowered if the panel is open. (#32135)
PJB3005 Sep 13, 2024
beced35
Automatic changelog update
PJBot Sep 14, 2024
b11fdd5
network airlock AutoClose (#32124)
deltanedas Sep 14, 2024
89fcda8
fix rcd blacklist (#32102)
qwerltaz Sep 14, 2024
74888c8
fix aller at once desc (#32129)
lzk228 Sep 14, 2024
9b16822
Automatic changelog update
PJBot Sep 14, 2024
f04de87
Fix that space (#32149)
Alpha-Two Sep 14, 2024
ad5cb50
add gateway beacon for mapping (#32121)
deltanedas Sep 14, 2024
b68fcb6
Add briefcase damage (#32063)
SlamBamActionman Sep 14, 2024
3250bb2
Automatic changelog update
PJBot Sep 14, 2024
58ed124
New gauze customization (#30852)
JustArt1m Sep 14, 2024
378abee
Automatic changelog update
PJBot Sep 14, 2024
d4ce1ad
fix helmet parent (#32152)
deltanedas Sep 14, 2024
98ca7c8
Automatic changelog update
PJBot Sep 14, 2024
00650f1
Dev mouse acorgillation (#32040)
TheShuEd Sep 14, 2024
fbc1cf2
add test for lathe recipes having results (#32100)
deltanedas Sep 14, 2024
00e62b6
Allow ghosts to read books (#32151)
eoineoineoin Sep 14, 2024
dea2781
Fix some issues with pulling system (#32145)
eoineoineoin Sep 14, 2024
26addfe
Automatic changelog update
PJBot Sep 14, 2024
7d4ae67
Vox LoneOp loadout fix (#31641)
Errant-4 Sep 14, 2024
def864d
Automatic changelog update
PJBot Sep 14, 2024
baf9bb9
Add snakes to vent spawn event (#32070)
Plykiya Sep 14, 2024
c1243a6
Automatic changelog update
PJBot Sep 14, 2024
20914fe
Moved hardcoded string "PEOPLE" to Loc.GetString() (#32164)
BIGZi0348 Sep 14, 2024
faaa2b3
reinforce command intercom (#32169)
lzk228 Sep 14, 2024
77e6bf9
Automatic changelog update
PJBot Sep 14, 2024
4da704f
clean up clothing lathe recipes (#31520)
deltanedas Sep 14, 2024
b33aa1a
Use Transform instead of TryComp<TransformComponent> (#32170)
Winkarst-cpu Sep 14, 2024
940e791
Update Credits (#32178)
github-actions[bot] Sep 15, 2024
5b295ab
Fix animals sprites in critical state (#32175)
de0rix Sep 15, 2024
f81d189
fix infinite banana bug (#32167)
slarticodefast Sep 15, 2024
ee434e3
Rename fix (#31654)
nikthechampiongr Sep 15, 2024
6766be5
Automatic changelog update
PJBot Sep 15, 2024
d015291
Automatic changelog update
PJBot Sep 15, 2024
30c5fbb
Make pressure and volume pumps require power (#28995)
Partmedia Sep 15, 2024
823511c
Automatic changelog update
PJBot Sep 15, 2024
62eaae6
Update SharedBuckleSystem to use PopupClient (#31498)
Winkarst-cpu Sep 15, 2024
1dec19c
Botany Rework Part 1: Mutations (#31163)
drakewill-CRL Sep 15, 2024
540b1b1
Fix build and lint (#32180)
Plykiya Sep 15, 2024
68c5f74
initial commit, adds waterGrowthComponent/System
PraxisMapper Aug 25, 2024
e56cf2b
Add other water check to component
PraxisMapper Aug 26, 2024
d11a4a7
use entitySystem instead of events for this
PraxisMapper Aug 28, 2024
5d200d0
NutrientGrowthComponent hooked up, yml loading now works for these too
PraxisMapper Aug 28, 2024
38888b8
Aging now a separate component/system
PraxisMapper Aug 28, 2024
8abd3c1
swabs should support growthComponents now.
PraxisMapper Aug 28, 2024
f5b24d7
multiple fixes
PraxisMapper Aug 28, 2024
3a373bc
Add Unviable component
PraxisMapper Aug 28, 2024
a4a5c2c
consumeGas component, and setting common dependencies in parent class
PraxisMapper Aug 28, 2024
2048cee
add exude gas component
PraxisMapper Aug 28, 2024
55b2e50
more age code into age system
PraxisMapper Aug 28, 2024
bb728ab
autoharvest is now a component.
PraxisMapper Aug 28, 2024
dd442f4
Pressure tolerance growth component
PraxisMapper Aug 28, 2024
f870237
temperature tolerance growth system added
PraxisMapper Aug 28, 2024
dfeab20
being ready to harvest is an age system check
PraxisMapper Aug 28, 2024
1f660ea
notes
PraxisMapper Aug 29, 2024
6d1779f
add weeds and pests to new component.
PraxisMapper Aug 29, 2024
8856083
add pest increase check to system
PraxisMapper Aug 29, 2024
71c7f02
IdealLight/LightTolerance were unused. Remove them.
PraxisMapper Aug 29, 2024
cc24e9b
Finish applying base components to seed packets.
PraxisMapper Sep 8, 2024
eeb3b65
add remaining normal growth components
PraxisMapper Sep 8, 2024
8f2034c
fixing compile issue post-merge-conflicts
PraxisMapper Sep 15, 2024
a97ea75
Merge branch 'growthRework' of https://github.com/drakewill-CRL/space…
PraxisMapper Sep 15, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
44 changes: 15 additions & 29 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,47 +1,33 @@
<!-- Please read these guidelines before opening your PR: https://docs.spacestation14.io/en/getting-started/pr-guideline -->
<!-- The text between the arrows are comments - they will not be visible on your PR. -->
<!-- Guidelines: https://docs.spacestation14.io/en/getting-started/pr-guideline -->

## About the PR
<!-- What did you change in this PR? -->
<!-- What did you change? -->

## Why / Balance
<!-- Why was it changed? Link any discussions or issues here. Please discuss how this would affect game balance. -->
<!-- Discuss how this would affect game balance or explain why it was changed. Link any relevant discussions or issues. -->

## Technical details
<!-- If this is a code change, summarize at high level how your new code works. This makes it easier to review. -->
<!-- Summary of code changes for easier review. -->

## Media
<!--
PRs which make ingame changes (adding clothing, items, new features, etc) are required to have media attached that showcase the changes.
Small fixes/refactors are exempt.
Any media may be used in SS14 progress reports, with clear credit given.

If you're unsure whether your PR will require media, ask a maintainer.
-->
<!-- Attach media if the PR makes ingame changes (clothing, items, features, etc).
Small fixes/refactors are exempt. Media may be used in SS14 progress reports with credit. -->

## Requirements
<!--
Due to influx of PR's we require to ensure that PR's are following the correct guidelines.

Please take a moment to read these if its your first time.

Check the boxes below to confirm that you have in fact seen these (put an X in the brackets, like [X]):
-->
- [ ] I have read and I am following the [Pull Request Guidelines](https://docs.spacestation14.com/en/general-development/codebase-info/pull-request-guidelines.html). I understand that not doing so may get my pr closed at maintainer’s discretion
- [ ] I have added screenshots/videos to this PR showcasing its changes ingame, **or** this PR does not require an ingame showcase
<!-- Confirm the following by placing an X in the brackets [X]: -->
- [ ] I have read and am following the [Pull Request and Changelog Guidelines](https://docs.spacestation14.com/en/general-development/codebase-info/pull-request-guidelines.html).
- [ ] I have added media to this PR or it does not require an ingame showcase.
<!-- You should understand that not following the above may get your PR closed at maintainer’s discretion -->

## Breaking changes
<!--
List any breaking changes, including namespace, public class/method/field changes, prototype renames; and provide instructions for fixing them. This will be pasted in #codebase-changes.
-->
<!-- List any breaking changes, including namespaces, public class/method/field changes, prototype renames; and provide instructions for fixing them.
This will be posted in #codebase-changes. -->

**Changelog**
<!-- Add a Changelog entry to make players aware of new features or changes that could affect gameplay.
Make sure to read the guidelines and take this Changelog template out of the comment block in order for it to show up.
Changelog must have a :cl: symbol, so the bot recognizes the changes and adds them to the game's changelog. -->
<!--
Make players aware of new features and changes that could affect how they play the game by adding a Changelog entry. Please read the Changelog guidelines located at: https://docs.spacestation14.io/en/getting-started/pr-guideline#changelog
-->

<!--
Make sure to take this Changelog template out of the comment block in order for it to show up. Changelog must have a :cl: symbol, so the bot recognizes the changes and adds them to the game's changelog.
:cl:
- add: Added fun!
- remove: Removed fun!
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/update-credits.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ jobs:

- name: Get this week's Contributors
shell: pwsh
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
run: Tools/dump_github_contributors.ps1 > Resources/Credits/GitHub.txt

# TODO
Expand Down
45 changes: 45 additions & 0 deletions Content.Client/Guidebook/GuidebookDataSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
using Content.Shared.Guidebook;

namespace Content.Client.Guidebook;

/// <summary>
/// Client system for storing and retrieving values extracted from entity prototypes
/// for display in the guidebook (<see cref="RichText.ProtodataTag"/>).
/// Requests data from the server on <see cref="Initialize"/>.
/// Can also be pushed new data when the server reloads prototypes.
/// </summary>
public sealed class GuidebookDataSystem : EntitySystem
{
private GuidebookData? _data;

public override void Initialize()
{
base.Initialize();

SubscribeNetworkEvent<UpdateGuidebookDataEvent>(OnServerUpdated);

// Request data from the server
RaiseNetworkEvent(new RequestGuidebookDataEvent());
}

private void OnServerUpdated(UpdateGuidebookDataEvent args)
{
// Got new data from the server, either in response to our request, or because prototypes reloaded on the server
_data = args.Data;
_data.Freeze();
}

/// <summary>
/// Attempts to retrieve a value using the given identifiers.
/// See <see cref="GuidebookData.TryGetValue"/> for more information.
/// </summary>
public bool TryGetValue(string prototype, string component, string field, out object? value)
{
if (_data == null)
{
value = null;
return false;
}
return _data.TryGetValue(prototype, component, field, out value);
}
}
49 changes: 49 additions & 0 deletions Content.Client/Guidebook/Richtext/ProtodataTag.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
using System.Globalization;
using Robust.Client.UserInterface.RichText;
using Robust.Shared.Utility;

namespace Content.Client.Guidebook.RichText;

/// <summary>
/// RichText tag that can display values extracted from entity prototypes.
/// In order to be accessed by this tag, the desired field/property must
/// be tagged with <see cref="Shared.Guidebook.GuidebookDataAttribute"/>.
/// </summary>
public sealed class ProtodataTag : IMarkupTag
{
[Dependency] private readonly ILogManager _logMan = default!;
[Dependency] private readonly IEntityManager _entMan = default!;

public string Name => "protodata";
private ISawmill Log => _log ??= _logMan.GetSawmill("protodata_tag");
private ISawmill? _log;

public string TextBefore(MarkupNode node)
{
// Do nothing with an empty tag
if (!node.Value.TryGetString(out var prototype))
return string.Empty;

if (!node.Attributes.TryGetValue("comp", out var component))
return string.Empty;
if (!node.Attributes.TryGetValue("member", out var member))
return string.Empty;
node.Attributes.TryGetValue("format", out var format);

var guidebookData = _entMan.System<GuidebookDataSystem>();

// Try to get the value
if (!guidebookData.TryGetValue(prototype, component.StringValue!, member.StringValue!, out var value))
{
Log.Error($"Failed to find protodata for {component}.{member} in {prototype}");
return "???";
}

// If we have a format string and a formattable value, format it as requested
if (!string.IsNullOrEmpty(format.StringValue) && value is IFormattable formattable)
return formattable.ToString(format.StringValue, CultureInfo.CurrentCulture);

// No format string given, so just use default ToString
return value?.ToString() ?? "NULL";
}
}
4 changes: 3 additions & 1 deletion Content.Client/MassMedia/Ui/ArticleEditorPanel.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,10 @@
</Control>
<Control HorizontalExpand="True"/>
<BoxContainer Orientation="Horizontal">
<Button Name="ButtonSaveDraft" SetHeight="32" SetWidth="85"
StyleClasses="OpenRight" Text="{Loc news-write-ui-save-text}"/>
<Button Name="ButtonPreview" SetHeight="32" SetWidth="85"
StyleClasses="OpenRight" Text="{Loc news-write-ui-preview-text}"/>
StyleClasses="OpenBoth" Text="{Loc news-write-ui-preview-text}"/>
<Button Name="ButtonPublish" SetHeight="32" SetWidth="85" Text="{Loc news-write-ui-publish-text}" Access="Public"/>
</BoxContainer>
</BoxContainer>
Expand Down
12 changes: 12 additions & 0 deletions Content.Client/MassMedia/Ui/ArticleEditorPanel.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ namespace Content.Client.MassMedia.Ui;
public sealed partial class ArticleEditorPanel : Control
{
public event Action? PublishButtonPressed;
public event Action<string, string>? ArticleDraftUpdated;

private bool _preview;

Expand Down Expand Up @@ -45,6 +46,7 @@ public ArticleEditorPanel()
ButtonPreview.OnPressed += OnPreview;
ButtonCancel.OnPressed += OnCancel;
ButtonPublish.OnPressed += OnPublish;
ButtonSaveDraft.OnPressed += OnDraftSaved;

TitleField.OnTextChanged += args => OnTextChanged(args.Text.Length, args.Control, SharedNewsSystem.MaxTitleLength);
ContentField.OnTextChanged += args => OnTextChanged(Rope.CalcTotalLength(args.TextRope), args.Control, SharedNewsSystem.MaxContentLength);
Expand All @@ -68,6 +70,9 @@ private void OnTextChanged(long length, Control control, long maxLength)
ButtonPublish.Disabled = false;
ButtonPreview.Disabled = false;
}

// save draft regardless; they can edit down the length later
ArticleDraftUpdated?.Invoke(TitleField.Text, Rope.Collapse(ContentField.TextRope));
}

private void OnPreview(BaseButton.ButtonEventArgs eventArgs)
Expand All @@ -92,6 +97,12 @@ private void OnPublish(BaseButton.ButtonEventArgs eventArgs)
Visible = false;
}

private void OnDraftSaved(BaseButton.ButtonEventArgs eventArgs)
{
ArticleDraftUpdated?.Invoke(TitleField.Text, Rope.Collapse(ContentField.TextRope));
Visible = false;
}

private void Reset()
{
_preview = false;
Expand All @@ -100,6 +111,7 @@ private void Reset()
PreviewLabel.SetMarkup("");
TitleField.Text = "";
ContentField.TextRope = Rope.Leaf.Empty;
ArticleDraftUpdated?.Invoke(string.Empty, string.Empty);
}

protected override void Dispose(bool disposing)
Expand Down
15 changes: 14 additions & 1 deletion Content.Client/MassMedia/Ui/NewsWriterBoundUserInterface.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ protected override void Open()
_menu.ArticleEditorPanel.PublishButtonPressed += OnPublishButtonPressed;
_menu.DeleteButtonPressed += OnDeleteButtonPressed;

_menu.CreateButtonPressed += OnCreateButtonPressed;
_menu.ArticleEditorPanel.ArticleDraftUpdated += OnArticleDraftUpdated;

SendMessage(new NewsWriterArticlesRequestMessage());
}

Expand All @@ -34,7 +37,7 @@ protected override void UpdateState(BoundUserInterfaceState state)
if (state is not NewsWriterBoundUserInterfaceState cast)
return;

_menu?.UpdateUI(cast.Articles, cast.PublishEnabled, cast.NextPublish);
_menu?.UpdateUI(cast.Articles, cast.PublishEnabled, cast.NextPublish, cast.DraftTitle, cast.DraftContent);
}

private void OnPublishButtonPressed()
Expand Down Expand Up @@ -67,4 +70,14 @@ private void OnDeleteButtonPressed(int articleNum)

SendMessage(new NewsWriterDeleteMessage(articleNum));
}

private void OnCreateButtonPressed()
{
SendMessage(new NewsWriterRequestDraftMessage());
}

private void OnArticleDraftUpdated(string title, string content)
{
SendMessage(new NewsWriterSaveDraftMessage(title, content));
}
}
9 changes: 8 additions & 1 deletion Content.Client/MassMedia/Ui/NewsWriterMenu.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using Content.Shared.MassMedia.Systems;
using Robust.Client.UserInterface.Controls;
using Robust.Shared.Timing;
using Robust.Shared.Utility;

namespace Content.Client.MassMedia.Ui;

Expand All @@ -16,6 +17,8 @@ public sealed partial class NewsWriterMenu : FancyWindow

public event Action<int>? DeleteButtonPressed;

public event Action? CreateButtonPressed;

public NewsWriterMenu()
{
RobustXamlLoader.Load(this);
Expand All @@ -31,7 +34,7 @@ public NewsWriterMenu()
ButtonCreate.OnPressed += OnCreate;
}

public void UpdateUI(NewsArticle[] articles, bool publishEnabled, TimeSpan nextPublish)
public void UpdateUI(NewsArticle[] articles, bool publishEnabled, TimeSpan nextPublish, string draftTitle, string draftContent)
{
ArticlesContainer.Children.Clear();
ArticleCount.Text = Loc.GetString("news-write-ui-article-count-text", ("count", articles.Length));
Expand All @@ -54,6 +57,9 @@ public void UpdateUI(NewsArticle[] articles, bool publishEnabled, TimeSpan nextP

ButtonCreate.Disabled = !publishEnabled;
_nextPublish = nextPublish;

ArticleEditorPanel.TitleField.Text = draftTitle;
ArticleEditorPanel.ContentField.TextRope = new Rope.Leaf(draftContent);
}

protected override void FrameUpdate(FrameEventArgs args)
Expand Down Expand Up @@ -93,5 +99,6 @@ protected override void Dispose(bool disposing)
private void OnCreate(BaseButton.ButtonEventArgs buttonEventArgs)
{
ArticleEditorPanel.Visible = true;
CreateButtonPressed?.Invoke();
}
}
2 changes: 1 addition & 1 deletion Content.Client/Nuke/NukeMenu.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public void UpdateState(NukeUiState state)
FirstStatusLabel.Text = firstMsg;
SecondStatusLabel.Text = secondMsg;

EjectButton.Disabled = !state.DiskInserted || state.Status == NukeStatus.ARMED;
EjectButton.Disabled = !state.DiskInserted || state.Status == NukeStatus.ARMED || !state.IsAnchored;
AnchorButton.Disabled = state.Status == NukeStatus.ARMED;
AnchorButton.Pressed = state.IsAnchored;
ArmButton.Disabled = !state.AllowArm || !state.IsAnchored;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using Content.Shared.Nutrition.Components;
using Content.Shared.Nutrition.EntitySystems;
using Robust.Client.GameObjects;
using Robust.Shared.Utility;

namespace Content.Client.Nutrition.EntitySystems;

Expand Down Expand Up @@ -50,6 +49,7 @@ private void UpdateFoodVisuals(Entity<FoodSequenceStartPointComponent> start, Sp
sprite.AddBlankLayer(index);
sprite.LayerMapSet(keyCode, index);
sprite.LayerSetSprite(index, state.Sprite);
sprite.LayerSetScale(index, state.Scale);

//Offset the layer
var layerPos = start.Comp.StartPosition;
Expand Down
12 changes: 10 additions & 2 deletions Content.Client/PDA/PdaBoundUserInterface.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,20 @@
using Content.Shared.PDA;
using JetBrains.Annotations;
using Robust.Client.UserInterface;
using Robust.Shared.Configuration;

namespace Content.Client.PDA
{
[UsedImplicitly]
public sealed class PdaBoundUserInterface : CartridgeLoaderBoundUserInterface
{
private readonly PdaSystem _pdaSystem;

[ViewVariables]
private PdaMenu? _menu;

public PdaBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
{
_pdaSystem = EntMan.System<PdaSystem>();
}

protected override void Open()
Expand Down Expand Up @@ -92,7 +94,13 @@ protected override void UpdateState(BoundUserInterfaceState state)
if (state is not PdaUpdateState updateState)
return;

_menu?.UpdateState(updateState);
if (_menu == null)
{
_pdaSystem.Log.Error("PDA state received before menu was created.");
return;
}

_menu.UpdateState(updateState);
}

protected override void AttachCartridgeUI(Control cartridgeUIFragment, string? title)
Expand Down
3 changes: 3 additions & 0 deletions Content.Client/PDA/PdaMenu.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,17 @@
Description="{Loc 'comp-pda-ui-ringtone-button-description'}"/>
<pda:PdaSettingsButton Name="ActivateMusicButton"
Access="Public"
Visible="False"
Text="{Loc 'pda-bound-user-interface-music-button'}"
Description="{Loc 'pda-bound-user-interface-music-button-description'}"/>
<pda:PdaSettingsButton Name="ShowUplinkButton"
Access="Public"
Visible="False"
Text="{Loc 'pda-bound-user-interface-show-uplink-title'}"
Description="{Loc 'pda-bound-user-interface-show-uplink-description'}"/>
<pda:PdaSettingsButton Name="LockUplinkButton"
Access="Public"
Visible="False"
Text="{Loc 'pda-bound-user-interface-lock-uplink-title'}"
Description="{Loc 'pda-bound-user-interface-lock-uplink-description'}"/>
</BoxContainer>
Expand Down
Loading