Commit Graph

398 Commits

Author SHA1 Message Date
Gandalf
ed06adde60 [MDB IGNORE] 3/4th medkit sprites + firstaid > medkit (#65230)
imageadd: Medkit sprites have now been updated to proper 3/4th perpsective.
2022-03-11 23:44:48 -05:00
axietheaxolotl
376aa36626 Medical Revamp: Resprites and Jumpsuit/Under Changes (#65236)
New sprites for the CMO's turtleneck/skirtleneck, paramedic jumpsuit/jumpskirt, virologist jumpsuit/jumpskirt, and chemist jumpsuit/jumpskirt
2022-03-03 14:53:36 -03:00
Imaginos16
fc9b91e3cb Resprites The Detective, Blueshift and Constable Outfits (#65190)
imageadd: The detective outfits, the blueshift uniform and the constable outfits have been redone!
2022-02-28 10:08:16 -05:00
Mickyan
681f00b013 Adds Moth Fashion (#64716)
* Adds two suits and one hat based on moth lore and culture, available at the clothesmate. They are set up with GAGS and can be freely recolored
* Adds one curator bundle based on construction, themed after moth engineers. It gives a few tools, materials, and a suit with hidden pockets
2022-02-19 16:33:18 -06:00
AnturK
41e02e5e39 Fixes issues found by new switch lints (#64766)
Very nice addition to sdmm.
2022-02-11 01:50:02 -08:00
Ghom
c5d2b2e51e Fixes layering issues brought by the FoV PR. (#63903)
* Fixed most (not all) incorrect planes and layers detected by the unit test.
2022-02-09 19:40:00 +01:00
Jeremiah
30253cf6a8 Tgui input refresh (#64331) 2022-02-05 19:44:59 +02:00
Jeremiah
cdfd5df7be Refactors pay stands + custom vendors (#63889)
I am disgruntled by the way pay stations work. They're not intuitive, they're a pain to build and have no interface. Basically: They don't get made, and the potential is lost.

Pay stands => Holopay

    Summoned by right clicking your ID
    Disappears if the card is out of range.
    New TGUI window that offers more customization

Other bundled fixes:

    Custom vendors become more user friendly
    Code improvement
    Lots of documentation + refactoring
    New bundled number input will likely take place of animated number in tgui input number

Why It's Good For The Game

More RP opportunity for players, plus bug fixes. It's now much easier for players to start their own in game business selling substances clown shoes.
Changelog

cl
code: Created a new input component that accepts only integers. More usage to come.
refactor: Pay stands are now holographic. It's 2562! Create one by right-clicking your ID.
del: Circuit boards for pay stands.
refactor: Pay stands now have their own TGUI.
fix: Custom vendors now alert you when someone makes a purchase.
fix: Custom vendors now place items in your hand when you make a purchase.
/cl
2022-02-01 09:47:28 +13:00
Donpedrito
59ed80a00e Adds blue shoes to the MediDrobe. #64492
About The Pull Request
Adds the blue shoes, which paramedics start with but are seemingly otherwise unobtainable, to the wardrobe that has the rest of their starting outfit in it.

Why It's Good For The Game
Currently, paramedics have no way to replace their shoes, or get them if they change their job to paramedic, other than making fake ones using a washing machine and crayon. Also, they look a hundred times better than white shoes when I'm wearing blue medical scrubs as a doctor, which is the main reason I made this PR.

Changelog
🆑
add: Added blue shoes to the MediDrobe.
/🆑
2022-01-29 19:32:11 -05:00
ErdinyoBarboza
1533cdbe6f Boritos: Now with different flavors and available at vendors + Ready Donkmeal Trash Sprite uplift (#64238)
Boritos finally decided to start supplying the station with their cornchips. This PR comes with 4 flavors of boritos that can be bought from vendors as well as a slight uplift for the sprite of Ready Donkmeal's trash variant, making it actually look like trash rather then a pristine box.

Also hey if you walk on boritos packages they pop! Thats cool right?
2022-01-25 15:41:17 +00:00
SMOSMOSMOSMOSMO
4748bb0769 Vending Machine no gravity fix (#64379)
Vending machines will no longer tilt onto people if there is currently no gravity experienced by it.
2022-01-25 15:21:36 +00:00
ErdinyoBarboza
ab9aea7412 Semkis and Pistachios! Come get your snacks + Snack Items Name Fixes (#64276)
Snack time
2022-01-24 01:28:07 -05:00
cacogen
0ebcce8de2 Fixes + expands vending machine returned purchases (#64314)
Fixes vending machine returns, also makes it so you can return anything to (nearly) any vending machine. New stuff vends first. Secondhand stuff last.
2022-01-23 21:35:34 -05:00
Ryll Ryll
73eaf4273e Drinking root beer increases your fire-rate; Adds root beer (#63956)
* Adds TRAIT_DOUBLE_TAP and a drink/pair of gloves that grant it

* increased price

* per reviews
2022-01-17 22:40:33 -08:00
carshalash
4bed1c504f Tidies up Clothesmate: h3h3 shirt removal (#63997)
del: Removed podcaster reference shirt.
2022-01-12 07:30:53 -05:00
Seth Scherer
ad55a08493 Stops vending machines from runtiming when broken (#63888)
* fix

* review
2022-01-11 16:25:14 -05:00
Seth Scherer
9436ed25c8 Fixes cyborgs being able to right a vending machine from any distance #63887 2022-01-10 19:53:09 -05:00
ATH1909
365f1be533 adds the three missing (non-cursed) animal masks to the autodrobe, reenables speech modification for most animal masks (#63824) 2022-01-10 12:39:45 -05:00
FernandoJ8
d6b2ac82dd Adds a new toy: The Captain's Aid (#63833)
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-01-07 15:45:14 -08:00
Jeremiah
9c6fdb567d TGUI list conversions + bug fixes (#63354)
About The Pull Request

    Converts more inputs to TGUI. Possibly all user-facing input lists in the game.
    Did any surrounding text/number inputs as well
    Added null choice support so users can press cancel.
    Added some misc TGUI input fixes
    Fixed custom vendors while I was there

I refactored a lot of code while just poking around.
Primarily, usage of .len in files where I was already working on lists.
Some code was just awful - look at guardian.dm and its non use of early returns
If there are any disputes, I can revert it just fine, those changes are not integral to the PR.
Why It's Good For The Game

Fixes #63629
Fixes #63307
Fixes custom vendors /again/
Text input is more performant.
Part of a long series of TGUI conversion to make the game more visually appealing
Changelog

cl
refactor: The majority of user facing input lists have been converted to TGUI.
refactor: Tgui text inputs now scale with entered input.
fix: Many inputs now properly accept cancelling out of the menu.
fix: Fixes an edge case where users could not press enter on number inputs.
fix: Custom vendor bluescreen.
fix: You can now press ENTER on text inputs without an entry to cancel.
/cl
2021-12-31 11:07:28 +13:00
carshalash
97452dd621 Adds moth seeds to seedvend and various moth food fixes (#63352)
* Eob you dork. Thanks for the moth drinks.

* this too.

* Update megaseed.dm

* Cooked pasta sheets instead of raw.

* Pepper

* Update misc.dm

* mmmh webedit :drooling:

* Update megaseed.dm
2021-12-21 01:25:36 -06:00
Kylerace
d005d76f0b Fixes Massive Radio Overtime, Implements a Spatial Grid System for Faster Searching Over Areas (#61422)
a month or two ago i realized that on master the reason why get_hearers_in_view() overtimes so much (ie one of our highest overtiming procs at highpop) is because when you transmit a radio signal over the common channel, it can take ~20 MILLISECONDS, which isnt good when 1. player verbs and commands usually execute after SendMaps processes for that tick, meaning they can execute AFTER the tick was supposed to start if master is overloaded and theres a lot of maptick 2. each of our server ticks are only 50 ms, so i started on optimizing this.

the main optimization was SSspatial_grid which allows searching through 15x15 spatial_grid_cell datums (one set for each z level) far faster than iterating over movables in view() to look for what you want. now all hearing sensitive movables in the 5x5 areas associated with each spatial_grid_cell datum are stored in the datum (so are client mobs). when you search for one of the stored "types" (hearable or client mob) in a radius around a center, it just needs to

    iterate over the cell datums in range
    add the content type you want from the datums to a list
    subtract contents that arent in range, then contents not in line of sight
    return the list

from benchmarks, this makes short range searches like what is used with radio code (it goes over every radio connected to a radio channel that can hear the signal then calls get_hearers_in_view() to search in the radios canhear_range which is at most 3) about 3-10 times faster depending on workload. the line of sight algorithm scales well with range but not very well if it has to check LOS to > 100 objects, which seems incredibly rare for this workload, the largest range any radio in the game searches through is only 3 tiles

the second optimization is to enforce complex setter vars for radios that removes them from the global radio list if they couldnt actually receive any radio transmissions from a given frequency in the first place.

the third optimization i did was massively reduce the number of hearables on the station by making hologram projectors not hear if dont have an active call/anything that would make them need hearing. so one of hte most common non player hearables that require view iteration to find is crossed out.

also implements a variation of an idea oranges had on how to speed up get_hearers_in_view() now that ive realized that view() cant be replicated by a raycasting algorithm. it distributes pregenerated abstract /mob/oranges_ear instances to all hearables in range such that theres at max one per turf and then iterates through only those mobs to take advantage of type-specific view() optimizations and just adds up the references in each one to create the list of hearing atoms, then puts the oranges_ear mobs back into nullspace. this is about 2x as fast as the get_hearers_in_view() on master

holy FUCK its fast. like really fucking fast. the only costly part of the radio transmission pipeline i dont touch is mob/living/Hear() which takes ~100 microseconds on live but searching through every radio in the world with get_hearers_in_radio_ranges() -> get_hearers_in_view() is much faster, as well as the filtering radios step

the spatial grid searching proc is about 36 microseconds/call at 10 range and 16 microseconds at 3 range in the captains office (relatively many hearables in view), the new get_hearers_in_view() was 4.16 times faster than get_hearers_in_view_old() at 10 range and 4.59 times faster at 3 range

SSspatial_grid could be used for a lot more things other than just radio and say code, i just didnt implement it. for example since the cells are datums you could get all cells in a radius then register for new objects entering them then activate when a player enters your radius. this is something that would require either very expensive view() calls or iterating over every player in the global list and calling get_dist() on them which isnt that expensive but is still worse than it needs to be

on normal get_hearers_in_view cost the new version that uses /mob/oranges_ear instances is about 2x faster than the old version, especially since the number of hearing sensitive movables has been brought down dramatically.

with get_hearers_in_view_oranges_ear() being the benchmark proc that implements this system and get_hearers_in_view() being a slightly optimized version of the version we have on master, get_hearers_in_view_as() being a more optimized version of the one we have on master, and get_hearers_in_LOS() being the raycasting version currently only used for radios because it cant replicate view()'s behavior perfectly.
2021-12-16 19:49:27 -08:00
Jeremiah
d17a60fb53 TGUI input box conversions 2 (#63395)
More text inputs converted to tgui, TGUI text and number input now more sanely handles ENTER key being pressed, you can now press anywhere in the window to enter the input. TGUI text input now considers placeholder text for the default valid state. IE, if there is default text you can press enter immediately without having to rewrite it just to recheck validity. Fixes: useSharedState => useLocalState. not only was sharedstate not needed but it opened up the ui to vulnerabilities
2021-12-15 14:12:04 -08:00
EOBGames
cf899a1821 Moth Food Returns: A Taste of the Fleet (#63174) 2021-12-09 21:41:36 -08:00
AnturK
39308f9dc6 Paintings improvements. (#63170)
About The Pull Request

    Paintings can now do stroke painting.
    Added painting management panel for admins.
    Paintings now display author's character name, year of painting, medium and patron when hung on wall.
    You can become new patron by paying more than the previous one.
    Added painter's palettes to library vendor. (Sprites by @Mickyan )

Backend changes:

    Images are now stored in /data/paintings/images/*.png instead of /data/paintings/[category]/*.png
    Old categories are now just tags

Screens & Video
Changelog

cl
add: You can now become patron of your favorite painting by buying sponsorship from Nanotrasen Trust Foundation.
add: Painter's palettes are now available at library vendor.
qol: Can use strokes in paintings now
/cl
2021-12-10 08:46:37 +13:00
Ghom
21ac10d3d4 multiz movement refactor redux (#62132) 2021-12-06 23:13:48 -08:00
AxieTheAxolotl
029b1c9a67 Adds Pride Pins (#62987)
* I love gay

* Update accessories.dm

* fix conflicts

* Apply suggestions from code review

Co-authored-by: bawhoppen <Bawhoppen@users.noreply.github.com>

* Update accessories.dm

* ok

Co-authored-by: bawhoppen <Bawhoppen@users.noreply.github.com>
2021-12-02 18:22:46 -05:00
Tom
4af0624548 Re-paths and changes the layer of GAR glasses (#63009)
Re-paths GAR glasses to make them subtypes of each other, where applicable.
Re-names some of the icon states, to make it clearer as to what they are.

Changes the alternate_worn_layer to make them show over hair, rather than under. (Muh reference) 

Subtypes good. Being able to see what you're wearing properly also good.
2021-11-26 18:15:26 -08:00
Imaginos16
305131e20c A step up: The Lawyer Suit Resprite! (#62961)
Co-authored-by: Changelogs <action@github.com>
2021-11-22 23:17:07 -08:00
Farquaar
3d183698c3 Yee-haw Update: Code Spaghetti Western Edition (#62937)
About The Pull Request

Previous PR (Closed Because I'm a Git Newbie)
https://youtu.be/AFa1-kciCb4

Ever wondered why we had cowboy boots in the autodrobe and clothesmate, but no hats?
Ever wanted to start a posse but the fluorescent lighting was beating down on your head?
Ever wanted to run your bar like an old-timey saloon but you were too ashamed of your bald spot?
Ever wanted to say "See you Space Cowboy" and actually mean it?

This is the PR for you!

image
Left to Right: Desperado Hat, Drifter Hat, Sheriff Hat (with Sheriff Vest), Ten-Gallon Hat, & Deputy Hat

All hats are craftable using two sheets of leather. The vest can be crafted with four sheets, and can be attached to jumpsuits.
The drifter hat and the ten-gallon can be found in the clothesmate. The others can be found in the autodrobe.
Every item has in-hand sprites!

This PR does not alter fugitive bounty-hunter items in any way.
Why It's Good For The Game

It always puzzled me that we had so many western-themed items, clothing, and references, but no hats to back it up. Now we can run cowboy gimmicks to our heart's content, and admins have more than enough to cobble together an event straight out of the old-space-west.
Changelog

cl
imageadd: Due to lobbying pressure from the Yee-haw Conservation Society, Nanotrasen vending machines now stock five new cowboy hats and an old-west vest.
/cl
2021-11-22 15:10:44 +13:00
Ghom
8fdebe8e80 Donuts found in sec vendors and boxes can now be used to make glazed donuts (#62910) 2021-11-18 17:38:37 -08:00
Krysonism
19d1d7323f Da plate update: New plate sizes and breakable plates (#62804)
About The Pull Request

This PR adds small and large plates and allows you to break plates by throwing them.

bild
bild
Why It's Good For The Game

Having larger plates allows you to more easily run the buffet gimmick as you can fit more items on the large plates.

Having large plates also allows for more space for creative food plating.

The small plates lets the chef serve small food items such individual cake slices without the plate looking mismatched.

Plate breaking improves immersion and allows unsavoury characters such as mimes and syndicates to stir up trouble.
Changelog

cl
expansion: Small and large plates have been added to the kitchen vend.
expansion: Plates will now break when thrown.
/cl
2021-11-17 09:37:28 +13:00
esainane
b6f761468e [MDB IGNORE] dir sanity, primarily on WALLITEMs (#62601)
About The Pull Request

Wall items mostly use the direction from the floor to the wall in the named mapping helper. Wall items mostly use the direction from the wall to the floor for the internal dir variable.

This leads to a headache when it comes to working out what conflicts with what, and what needs placing where.

Wall frames provided a member, inverse, which specified whether or not to invert the direction of the item when looking for conflicts. It was also used to specify whether to look for conflicts outside of the wall (cameras and lights appear external to the wall) or inside the wall (most wall items). This flag was set for Intercoms, APCs, and Lights. Since APCs and Lights expect a floor-to-wall direction, and Intercoms expect a wall-to-floor direction, this means that APCs and Lights were getting the correct direction, and Intercoms were getting the wrong direction.

Some implications of this setup were:

    You could build an APC on top of another wall item, provided there was nothing external attached to the wall and the area didn't have an APC.
    You could stack Intercoms indefinitely on top of the same wall, provided you weren't in a one-tile wide corridor with something on the opposite wall.

Or both! Here's twenty Intercoms placed on the wall, and a freshly placed APC frame after placing all Intercoms and deconstructing the old APC:

endless-stack-of-intercoms

Not everything used this inverse variable to adjust to the correct direction. For example, /obj/machinery/defibrillator_mount just used a negative pixel_offset to be visually placed in the correct direction, even though the internal direction was wrong, and never set! This also let you stack an indefinite number of defib mounts on the same wall, provided it wasn't a northern wall... except you could do this to northern walls too, since defibs weren't considered a wall item for the purposes of checking collisions at all!

Ultimately, every constructable interior wall item either used this inverse variable to adjust to the correct placement, set a negative pixel_offset variable to have its offset adjusted to the correct placement, or overrode New or Initialize to run its own checks and assignment to pixel_x and pixel_y!
Inventory: Table of various paths, related paths, and the adjustments they used

Unfortunately, untangling /obj/structure/sign is going to be another major headache, and this has already exploded in scope enough already, so we can't get rid of the get_turf_pixel call just yet. This also doesn't fix problems with the special 2x1 /obj/structure/sign/barsign.

Some non-wall items have been made to use the new MAPPING_DIRECTIONAL_HELPERS as part of the directional cleanup.

tl;dr: All wall mounted items and some directional objects now use the same direction that they were labelled as. More consistent directional types everywhere.
Why It's Good For The Game

fml
Changelog

cl
refactor: Wall mounted and directional objects have undergone major internal simplification. Please report anything unusual!
fix: You can no longer stack an indefinite amount of Intercoms on the same wall.
fix: Defibrillator Mounts, Bluespace Gas Vendors, Turret Controlers, and Ticket Machines are now considered wall items.
fix: Wall mounted items on top of the wall now consistently check against other items on top of the wall, and items coming out of the wall now consistently check against other items coming out of the wall.
fix: The various directional pixel offsets within an APC, Fire Extinguisher Cabinet, Intercom, or Newscaster have been made consistent with each other.
fix: The pixel offsets of Intercoms, Fire Alarms, Fire Extinguisher Cabinets, Flashers, and Newscasters have been made consistent between roundstart and constructed instances.
fix: Constructed Turret Controls will no longer oddly overhang the wall they were placed on.
qol: Defibrillator mounts now better indicate which side of the wall they are on.
fix: Some instances where there were multiple identical lights on the same tile have been fixed to only have one.
/cl
2021-11-09 10:02:34 +13:00
Ghom
b79dd74fd0 Replaces a portion of C-style for loops with the more commonplace for loops, which are faster. (#62624)
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
2021-11-07 16:42:41 -08:00
Ghom
7d8eb8b35c Fixes emissive appearances of vending machines being removed when the wire panel is opened/closed (#62592)
Replaces a cut_overlays() call with cut_overlay(panel_type) EDIT: moved the panel overlay to the update_overlays proc
2021-11-06 23:06:16 +00:00
Mothblocks
0f3c4e51f7 Modernizing Radiation -- TL;DR: Radiation is now a status effect healed by tox healing, and contamination is removed (#62265)
Implements the Modernizing radiation design document ( https://hackmd.io/@tgstation/rJNIyeBHt ) and replaces the current radiation sources with the new system, as well as replacing/removing a bunch of old consumers of radiation that either had no reason to exist, or could be replaced by something else.

Diverges from the doc in that items radiation don't go up like explained. I was going to, but items get irradiated so easily that it just feels pretty lame. Items still get irradiated, but it's mostly just so that radiation sources look cooler (wow, lots of stuff around going green), and for things like the geiger counter.

Instead of the complicated radiation_wave system, radiation now just checks everything between the radiation source and the potential target, losing power along the way based on the radiation insulation of whats in between. If this reaches too low a point (specified by radiation_pulse consumers), then the radiation will not pass. Otherwise, will roll a chance to irradiate. Uranium structures allow a delay before irradiating, so stay away!
2021-11-01 04:20:39 -03:00
John Willard
88d7dbfc10 removes double spaces before symbols (#62397)
This can apparently cause some bugs on occasions, so I thought I might as well try to kill them all.
2021-10-28 19:25:50 -03:00
Mickyan
e75704e0ea Vending machine panel icon reorganization (#62256)
Removes a bunch of duplicated sprites by making it so vending machines can share the same panel overlay where applicable.

Every single vending machine in the game had a unique copy pasted panel icon because one line of code said you need to do that.
2021-10-28 19:08:04 -03:00
John Willard
4d9b55a12c Moves vending prices from /atom to /obj/item (#62243) 2021-10-25 11:12:54 -07:00
Mickyan
0169678237 Adds art stuff to the library games vendor (#62253)
* added game vendor art stuff

* spaces, ai canvas to premium
2021-10-22 14:25:32 -07:00
Horatio22
cdaf898bf4 Disco Elysium suits (#62113)
Re-opening goof's PR that was closed earlier this week: #61401 that ports Disco Elysium sprites from Fulp's old repo: TheSwain#306 but with fixes to armhole issue on the under/jobs/security sprites and minor punctuation corrections on some item descriptions.
2021-10-16 19:41:32 -04:00
itseasytosee
f51000f506 Repaths knives to not all be children of the kitchen knife. (#62035)
Basically makes the code less dumb, took a long time. I worked hard to make sure there were no unintended effects (minus the fact you can no longer get spoons from the experimentor). No player-facing effects

I thought it looked weird that all cultist and combat knives were subtypes of the kitchen knives
2021-10-15 15:28:01 -07:00
Arkatos1
a9e2dbe447 tgui: Vending machine titles (#61780) 2021-10-01 03:54:51 +03:00
Mooshimi
cf2f30b24d spaces -> tabs in vendor code (#61740) 2021-09-29 04:05:26 -07:00
Iamgoofball
6fe8e8d76c FAMILIES 4.0: "fuck it, MRP only this time" (#61123)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: MrMelbert <kmelbert4@gmail.com>
2021-09-27 01:04:41 -07:00
JosephJomama
21bc0d9e3a Adds SEAFOOD foodtype, felinid diet changes (#61506) 2021-09-22 17:21:10 -07:00
remuluson2
c7b390ba06 Razor Update (#61547)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-09-21 16:36:00 -07:00
Ghom
a2d6c75f31 memories are no longer added if the target isn't aware of them. (#61375)
Fixing an oversight with the memories system. Memories shouldn't be added to people who aren't possibly aware of them.
2021-09-20 22:39:37 +01:00
tralezab
4d7f2952e4 [READY] Adds memory system, and engraving walls with chisels (#60302)
Co-authored-by: MonkeyThatCodes <monkey>
Co-authored-by: MonkeyThatCodes <MonkeyThatCodes@deez.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: AMonkeyThatCodes <20987591+AMonkeyThatCodes@users.noreply.github.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2021-09-08 15:03:07 -07:00
Kylerace
d9ee5e7297 moves obj_integrity and associated procs to the atom level (#61183) 2021-09-06 04:07:26 -07:00