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

Requisition Centralization [Part 1.5] AKA medvendor infinite restock outside medbay cheese removal redux #5677

Merged
merged 45 commits into from
Apr 7, 2024

Conversation

ItsVyzo
Copy link
Contributor

@ItsVyzo ItsVyzo commented Feb 7, 2024

About the pull request

This PR adds a new structure: the medical supply link port. This is a structure that allows medical vendors to link to the Almayer's internal medical supplies and have larger restocking capabilities. They can be found around the Almayer where existing medical vendors are.

This PR makes it impossible to restock/refill non full stacks at medical vendors which are not linked to a medical supply link port

This PR makes it impossible to restock/refill non full autoinjectors and bottles at medical vendors which are not linked to a medical supply link port

revives #2155

Explain why it's good for the game

This PR is good for the game because it will get req more involved in the medical supply process, as well as limiting the capability of medics to instantly resupply from a vendor at the fob or in hydro. This makes it so that medics have to more carefully pick their supplies, and plan ahead for resupplying, as well as consider other medics' use of supplies, as nothing is infinite groundside anymore.

Overall, it will make the medic supply gameplay loop more engaging and interesting, as well as reducing marine capability to infinitely heal and resupply themselves groundside.

Makes #5490 more useable

Testing Photographs and Procedure

https://gyazo.com/d9e8e3b63daab1241e046c23bb5dd140

Changelog

🆑 Stan_albatross,kugamo,LTNTS,Drathek
balance: medical vendors, excepting nanomeds, can now only refill/restock stacks and autoinjectors/bottles when on special medical supply link ports that can only be found shipside. Sprite by kugamo.
fix: supply pads will no longer generate ambient occlusion.
/:cl:

@ItsVyzo ItsVyzo requested a review from Nanu308 as a code owner February 7, 2024 05:19
@github-actions github-actions bot added Sprites Remove the soul from the game. Mapping did you remember to save in tgm format? labels Feb 7, 2024
@ItsVyzo ItsVyzo added the Balance You need to be a professional veteran game maintainer to comprehend what is being done here. label Feb 7, 2024
@cm13-github cm13-github added the Merge Conflict PR can't be merged because it touched too much code label Feb 7, 2024
@cm13-github
Copy link
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

code/game/machinery/vending/vendor_types/medical.dm Outdated Show resolved Hide resolved
code/game/machinery/vending/vendor_types/medical.dm Outdated Show resolved Hide resolved
code/game/machinery/vending/vendor_types/medical.dm Outdated Show resolved Hide resolved
code/game/machinery/vending/vendor_types/medical.dm Outdated Show resolved Hide resolved
code/game/machinery/vending/vendor_types/medical.dm Outdated Show resolved Hide resolved
code/game/objects/structures.dm Outdated Show resolved Hide resolved
code/game/objects/structures.dm Outdated Show resolved Hide resolved
code/game/objects/structures.dm Outdated Show resolved Hide resolved
@ItsVyzo ItsVyzo added the Roadmap "I think you're holding it upside down" label Feb 7, 2024
@cm13-github cm13-github removed the Merge Conflict PR can't be merged because it touched too much code label Feb 7, 2024
@cm13-github
Copy link
Contributor

Conflicts have been resolved. A maintainer will review the pull request shortly.

@Huffie56
Copy link
Contributor

Huffie56 commented Feb 7, 2024

from what i can see map wise you changed the floor tiles for no reason?
image
shouldn't be full white when it's close to a wall but half green (part toward the wall) and the rest white...
look at the other vendors around them...

@ItsVyzo
Copy link
Contributor Author

ItsVyzo commented Feb 7, 2024

from what i can see map wise you changed the floor tiles for no reason?

image

shouldn't be full white when it's close to a wall but half green (part toward the wall) and the rest white...

look at the other vendors around them...

Floor was not changed. That's a medlink under the vendors and it's not green to allow distinguishing from afar

Copy link
Contributor

@Drulikar Drulikar left a comment

Choose a reason for hiding this comment

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

What this PR is doing is good; however I don't want to entirely disable refilling of injectors if not in a port. Rather the vendor should have a pool of reagents that is consumed as autoinjectors are filled.

Additionally I would like the vendor to have a more streamlined means to restock it; e.g. a vendor restock pack that req can order and then can be used on a vendor to restore the stock values (if any need stocking).

Reagents can be a separate restock pack (instead of also being refilled via the supply pack); but ultimately its the same process. I don't want to go so far as trying to get chemistry to actually mix together the reagents but ever chemistry needs more work that could be something for them to do.

So in summary:

  • Vendors not in a restock port need to still allow injector refilling, but this pulls from either a reagent amount per type of chemical - or a omni reagent amount that can be used for any chemical.
  • Vendors not in a restock port need stocking item(s) that req can order and then be used on a vendor to restock it. Its fine to allow individual items to be inserted into a vendor, but this shouldn't be the only way to restock it.

If these two things are a bit more difficult for you to implement, we can shelve this PR until another PR is put together to address those requests.

@Drulikar
Copy link
Contributor

Drulikar commented Feb 7, 2024

Also we need to disallow splitting of stacks of items that we can top off (e.g. so you can't vend one trauma kit, split it, top it off, and now have duplicated the stack).

@ItsVyzo
Copy link
Contributor Author

ItsVyzo commented Feb 7, 2024

What this PR is doing is good; however I don't want to entirely disable refilling of injectors if not in a port. Rather the vendor should have a pool of reagents that is consumed as autoinjectors are filled.

Additionally I would like the vendor to have a more streamlined means to restock it; e.g. a vendor restock pack that req can order and then can be used on a vendor to restore the stock values (if any need stocking).

Reagents can be a separate restock pack (instead of also being refilled via the supply pack); but ultimately its the same process. I don't want to go so far as trying to get chemistry to actually mix together the reagents but ever chemistry needs more work that could be something for them to do.

So in summary:

  • Vendors not in a restock port need to still allow injector refilling, but this pulls from either a reagent amount per type of chemical - or a omni reagent amount that can be used for any chemical.
  • Vendors not in a restock port need stocking item(s) that req can order and then be used on a vendor to restock it. Its fine to allow individual items to be inserted into a vendor, but this shouldn't be the only way to restock it.

If these two things are a bit more difficult for you to implement, we can shelve this PR until another PR is put together to address those requests.

Also we need to disallow splitting of stacks of items that we can top off (e.g. so you can't vend one trauma kit, split it, top it off, and now have duplicated the stack).

Out of my skillset unfortunately. I can look into making sprites for vendor refills though and maybe package this into one PR

@ItsVyzo ItsVyzo marked this pull request as draft February 7, 2024 22:59
Copy link
Contributor

This PR has been inactive for long enough to be automatically marked as stale. This means it is at risk of being auto closed in ~ 7 days, please address any outstanding review items and ensure your PR is finished, if these are all true and you are auto-staled anyway, you need to actively ask maintainers if your PR will be merged. Once you have done any of the previous actions then you should request a maintainer remove the stale label on your PR, to reset the stale timer. If you feel no maintainer will respond in that time, you may wish to close this PR youself, while you seek maintainer comment, as you will then be able to reopen the PR yourself

@github-actions github-actions bot added the Stale beg a maintainer to review your PR label Feb 15, 2024
@Drulikar Drulikar removed the Stale beg a maintainer to review your PR label Feb 15, 2024
@Drulikar Drulikar requested a review from a team April 6, 2024 05:23
Copy link
Contributor

@sleepynecrons sleepynecrons left a comment

Choose a reason for hiding this comment

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

sprites fine

@sleepynecrons sleepynecrons added the Sprites Approved confirmed no stray pixels label Apr 6, 2024
@ItsVyzo ItsVyzo requested a review from Zonespace27 April 6, 2024 18:34
Copy link
Member

Choose a reason for hiding this comment

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

mapping looking great with transparent version 👍

@Nanu308 Nanu308 added the Mapping Approved adds 500 new dict keys label Apr 6, 2024
@Drulikar Drulikar added this pull request to the merge queue Apr 7, 2024
Merged via the queue into cmss13-devs:master with commit f3e535d Apr 7, 2024
26 checks passed
Drulikar added a commit that referenced this pull request Apr 7, 2024
@ItsVyzo ItsVyzo deleted the medsource_vendor branch April 13, 2024 08:58
github-merge-queue bot pushed a commit that referenced this pull request Apr 13, 2024
# About the pull request

This is a followup/accompanying PR to #5677 and #6103 adding medlinks
under the 3 marine meds in medbay, hangar panic room, and CIC armory.

# Explain why it's good for the game
Marinemeds were already configured to expect medlinks, they just didn't
get them mapped in.

# Testing Photographs and Procedure
<details>
<summary>Screenshots & Videos</summary>

Put screenshots and videos here with an empty line between the
screenshots and the `<details>` tags.

</details>


# Changelog
:cl: Drathek
maptweak: Added medlinks under the marinemeds in medbay, hangar panic
room, and CIC armory.
/:cl:
github-merge-queue bot pushed a commit that referenced this pull request May 1, 2024
# About the pull request

This PR is a follow up to #5677 assuming changes from #6103 adding a
medlink to each ground map as well as medlinks for the WO main base.

The other map changes are just the result of StrongDMM's sanitize
variables setting where it deletes var edits that match what the type
already has initially.

# Explain why it's good for the game

Helps establish colony medbays as a temporary objective that can help
the groundside operation with medical supplies. Some maps this is more
practical than others, but the medlinks need to not be too close to a
landing zone else it is too hard to contest them.

As far as WO, there isn't a shipside medical so the main base instead
should serve that purpose.

# Testing Photographs and Procedure
<details>
<summary>Screenshots & Videos</summary>

Put screenshots and videos here with an empty line between the
screenshots and the `<details>` tags.

</details>


# Changelog
:cl: Drathek
maptweak: Added medlinks to WO
maptweak: Added a medlink to each ground map
/:cl:
github-merge-queue bot pushed a commit that referenced this pull request May 15, 2024
# About the pull request

This PR is a follow up to #5677 and does many things:
- ~~Disables splitting of medical items.~~
- ~~In the case of splints, to avoid splitting them via applying and
removing them, recovered splints are considered contaminated. However,
you can get them to not be deemed contaminated if you form a full stack
with them.~~
- Increases the starting stock of several medical vendors, also shifting
more of the bottles to chem vendors.
- Adds periodic automatic restocking to med linked medical vendors if
they are operable.
- Initializes groundside medical vendors with randomly reduced stock
amounts and reagents (if not on WO mode).
- Disables refilling medical items (as in use 3 splints on a vendor and
get upgraded to 5). Some conveyed to me they would rather lose the
refilling mechanic over the ability to split stacks.
- Autoinjectors and bottles can still be refilled using now internal
reagents tanks in the vendor. If the vendor has a medlink this will
periodically recharge. The UI also displays the reagent amount much like
the chem dispenser does.
- Adds the ability to bulk restock vendors with storage items. Click
drag the pack onto the vendor and all items that can restock the vendor
will be placed in the vendor.
- Adds the ability to bulk restock medical vendors with restock carts
ordered from requisitions. There are two variants: one that restocks the
items and another that restocks the internal reagent tanks. They can be
disassembled with a wrench.
- Adds the ability to restock partial stacks.
- Doubles the starting energy amount for chemical dispensers by
increasing the max energy amount in chem_storage and increasing the
boost gained when a chemical dispenser is connected to the chem_storage.
- Discounts all requisitions medical supplies.
- Enables initial population scaling for blood bags (of note it wasn't
intended these could restock automatically with a medlink; the supply
restock cart does work on them though and I intend to keep this)

This PR also fixes some miscellaneous things:
- Using a item on a medvendor will now try to fill the vendor with that
item (rather than only performing this action with a mouse drop).
- Fixes some of the grammar issues regarding restocking.
- Fixes some unused squad prep vendors that were not properly adding
headsets to their list of items.
- Fixes removing nano splints creating splints with 0 amount.
- Fixes xenos being able to restock vendors.
- Tweaks the alignment of the images of items in vendors to be more
centered vertically.
- Tweaks the widths of tables in vendors.
- Fixes USCM theme vendors not showing alternating backgrounds for odd
rows

**Of note: The restock cart sprites are temporary.**

# Explain why it's good for the game
The ultimate goal of this PR is to remove the infinite quantity of
medical items groundside so there is more pressure on requisitions to
keep groundside supplied. See
https://github.com/orgs/cmss13-devs/projects/6/views/1?pane=issue&itemId=23005516
for a broader picture of the changes that this PR is helping push
towards. I will finalize a design document once the remaining aspects
for requisitions are decided.

It also is a little goofy that a colony that got decimated by a
xenomorph infestation would have fully stocked medical supplies.

# Testing Photographs and Procedure
<details>
<summary>Screenshots & Videos</summary>

Original implementation: https://youtu.be/6ES88Zre6Gg

Revised implementation: https://youtu.be/7Iyy3eKx3Ng

Bulk restocking using inventories: 


https://github.com/cmss13-devs/cmss13/assets/76988376/b9c33693-fe95-410e-8841-d962b052a5fb

Restock carts (temporary sprites for now):


![image](https://github.com/cmss13-devs/cmss13/assets/76988376/1e3e537c-f3a8-4e02-8e55-c97db707748b)

UI polishing:

![image](https://github.com/cmss13-devs/cmss13/assets/76988376/087f2bf2-9b2a-41e2-9786-4e4c6464a397)

![image](https://github.com/cmss13-devs/cmss13/assets/76988376/9bc03db2-f244-47aa-90f9-0ccdf398acf7)

</details>

# Changelog
:cl: Drathek
balance: Increased the starting stock of most medical vendors but shifts
some reagent bottles from weymeds to weychems
balance: Med linked medical vendors will now automatically restock items
(requires 20 minutes from round start) and reagents (no time
requirement) periodically if operable
balance: Groundside medical vendors will now have random stock and
reagents missing if its not WO
balance: Partial medical item stacks can no longer be refilled at
vendors (autoinjectors and bottles can still be refilled pulling from
internal reagent tanks)
balance: Doubles the starting energy for chemical dispensers
balance: Discounts all requisitions medical supplies
ui: Added reagent amount display to vendors that have internal reagent
tanks and tweaked the icon positioning of items slightly
ui: Tweaked table widths in vendors
ui: Fixes USCM theme vendors not showing different backgrounds for odd
rows
qol: Restocking a medvendor manually can now be done with just a click
rather than only via mouse drop
qol: Restocking a vendor can now be performed in bulk from a storage
inventory - click drag the inventory to the vendor and you will restock
all the items you can
add: Vendors can accept partial stacks when restocking - when an item
has a partial quantity for a stack it is denoted with an asterisk
add: Added two restock carts for bulk restocking medical vendors, one
for items and the other for reagents (purchasable from requisitions -
disassemble with a wrench - temporary sprites for now)
fix: Fixed some currently unused squad prep vendors
fix: Removing nano splints on a person no longer creates a 0 amount
normal splint
spellcheck: Tweaked some restock messages and vendor descriptions
/:cl:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Balance Approved This PR has had its balance and gameplay-affecting aspects approved. Cry to the Head-maint about it. Balance You need to be a professional veteran game maintainer to comprehend what is being done here. Mapping Approved adds 500 new dict keys Mapping did you remember to save in tgm format? Roadmap "I think you're holding it upside down" Sprites Approved confirmed no stray pixels Sprites Remove the soul from the game. Stale Exempt PR can't go stale
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants