* New drink sprites aka Drink Desouling (#66538)
- All drinks and bottles have been resprited
* New drink sprites aka Drink Desouling
Co-authored-by: ErdinyoBarboza <erdinyobarboza@gmail.com>
* Makes cult's objectives load before their antag ui (#66899)
Makes Cultists get their objectives from their team BEFORE their parent's on_gain runs, giving and triggering their antag UI. This means players no longer have to close and reopen the page to see their actual objectives.
* Makes cult's objectives load before their antag ui
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Goodbye stack/medical (#66898)
Okay, why removing instead of giving it a sprite?
Simply put, those items are all small and there is no reason that you need to quick draw a suture/ointment and if you do, the medical belt can carry 7.
Allowed/exoslot items should be either medium/big/bulky sized items (Syringe gun) to make it worth inventory wise or items that you can quickdraw multiple times (Health Analyzer) to make your life easier.
Medical stacks are neither and would just get in the way if you try to quickly put them into a bag/pocket/belt and instead it goes into your exoslot where you would normally want to carry more valuable things like the syringe gun.
This doesn't feel big enough for a fix, spending 5 seconds making a list alphabetical doesn't few worth of code improvement, I will label this as QoL and if someone say it is a balance change I will follow you in game and keep placing shitty small items in your inventory via reverse pickpocketing.
* Fixes an error sprites on medical wintercoat's allowed list.
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
* Fix wizard modsuit not having antimagic protection (#66890)
* Fix wizard modsuit not having antimagic protection
* Change TRAIT_ANTIMAGIC_NO_SELFBLOCK comment
* Fix wizard modsuit not having antimagic protection
Co-authored-by: Tim <timothymtorres@gmail.com>
* Makes constable helmet a subtype of head (#66872)
Moves constable hats to be a subtype of head directly, rather than head/helmet, because they aren't helmets, they're hats, and helmet block your hair which looks odd for something that isn't actually covering it.
* Makes constable helmet not block hair
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* External organs can now contribute bodytypes to their owner (#66704)
* Fixed part of our snout code, to account for special snouts that do not give you the snouted bodytype
Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* [MDB IGNORE] Removes tablet cartridges + reworks a ton more (#66505)
- All tablets who previously had apps in a cartridge now has them built-into their tablet instead. This means it costs space for it.
- Rebalances the sizes of several apps to help them fit on Command tablets (Cargo ordering costed 20!!)
- Removes tablet cartridges, they've been reworked into a regular old portable disk (the same you use for toxins/borgs)
- Removes Signaller (the module required to run the signaller app) from tablets (likely will remove more in the future)
- Refactors the health/chem scanning app to not be as bad
- Dehardcodes detomatix resistance
- Ability to send PDA's to all is now tied to your access rather than a cartridge
- Moves 'eject disk' button to the very top of the UI
* [MDB IGNORE] Removes tablet cartridges + reworks a ton more
* wew
* wew
* ok
* Update nanotrasen_consultant.dm
* Update nanotrasen_consultant.dm
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Fixes "high blood pressure" status effect, and corrects the spelling of "opioid" (fixing another bug) (#66849)
Status effects that are intended to be added, are actually added.
Opioid is now spelled correctly, consistently.
This actually caused a bug: Opioid end_withdrawal was never called because it's path was spelled correctly and the others weren't.
* Fixes "high blood pressure" status effect, and corrects the spelling of "opioid" (fixing another bug)
* wew
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* atmos layers update (#66825)
Updates atmosmachines layering in a way that they keep the same layer in all piping_layer and colors. dense machines have a static OBJ_LAYER that doesn't change regardless of color/layer
* atmos layers update
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* Fixes Marker Beacons Not Having an Icon (#66830)
FUCK.
In #66736 (7517e79), I forgot to change this line. It worked fine in the screenshot because the screenshot came from before I spun it out into it's own DMI. Whoops.
* Fixes Marker Beacons Not Having an Icon
Co-authored-by: san7890 <the@san7890.com>
* improve speed of cascade walls, better description for them + CL for cascade antag (#66800)
Cascade walls were processing on object subsystem, they are now in their own subsystem that ticks once per second and should be more reliable even in case of high td
better description for the walls to be more interesting
* improve speed of cascade walls, better description for them + CL for cascade antag
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* The supermatter cascade now takes one minute to end the round instead of 5 minutes to end the round, to put it on par with Blob and such. (#66832)
* The supermatter cascade now takes one minute to end the round instead of 5 minutes to end the round, to put it on par with Blob and such.
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
* Adds lore terminals for mappers (#66589)
This adds the ability to use Fallout-style terminals for maps
* Revival of mapping lore terminals
Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>
* Fixes heretic marks working on corpses (#66815)
marks shouldn't apply to corpses
* Fixes heretic marks working on corpses
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
* Fix destroy_machinery runtime (#66810)
Added a check for if the applicable_jobs list got completely eliminated. The if(!length(possible_machines)) check immediately after this while loop with then cause the objective generation to cleanly fail.
* Fix "destroy machinery" objective runtime
Co-authored-by: Tastyfish <crazychris32@gmail.com>
* Fix books to only give mood bonus when read the first time (#66371)
* Fix book rereading exploit
* Refactor book_title_read to be for mind datum
* Remove reader var from on_read
* Add sanity check for mind
* Fix books to only give mood bonus when read the first time
Co-authored-by: Tim <timothymtorres@gmail.com>
* Ripley mechs (and other mechs that are missing an air tank) can no longer toggle the air source. (#66107)
Disables the button on the UI if the mech has no internal tank. Also early returns on procs if the UI somehow lets the click through.
Fixes#66005
* Ripley mechs (and other mechs that are missing an air tank) can no longer toggle the air source.
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Removes (now unused) sandbox related config and variable (#66803)
I don't know when we removed sandbox but this datum doesn't exist anymore and this var is unused
Also the config does nothing anymore so might as well throw that out
* Removes (now unused) sandbox related config and variable
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Supermatter Cascades are not Universe-Destroying Events (#66804)
* Supermatter Cascades are not Universe-Destroying Events
Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
* Revert "Add stamped requisition forms now give bonus credits (#66230)" (#66851)
This reverts commit f021767645.
This reverts commit f021767 from:
Add stamped requisition forms now give bonus credits #66230
This bug was encountered when we were testing this PR but I thought it got fixed.
Why It's Good For The Game
Cargo crates will now reappear.
* Revert "Add stamped requisition forms now give bonus credits (#66230)"
Co-authored-by: Tim <timothymtorres@gmail.com>
* changes name of trait "STUNRESISTANCE" to trait "BATON_RESISTANCE", changes some descriptions (#66788)
it will make a whole lot more sense when you look at the trait and see what it does, instead of assuming what it does based on its very clear name
* changes name of trait "STUNRESISTANCE" to trait "BATON_RESISTANCE", changes some descriptions
* Update cocaine.dm
Co-authored-by: private-tristan <54422837+private-tristan@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Titan's Final Lament - Colossus and hierophant crusher trophy rework (#66793)
This is somewhat a port of BeeStation/BeeStation-Hornet#6805 with slight changes, credits to Rukofamicom for the original PR.
Kinetic crusher is supposed to be a high risk high reward weapon, but with current hiero wall trophy it just ends up with the player cheesing mob and boss AIs. To fix this, here we change hiero trophy to spawn a hierophant chaser instead of a wall, which will increase player's DPS without offering them any protection.
However, this creates another issue: right now colossus is unbeatable with crusher without cheesing it with the wall due to it's shotgun attack which kills and dusts you point blank or 1 tile away, which is extremely unfair and unfun. To fix this, I add what should've been done from the start - make colossus telegraph it's attacks before starting them. Player has 1.5 seconds to react(unlike 3 seconds in the original PR which made the fight much easier) and dodge the attack or at least get away from the colossus to have a chance to survive.
Since this does make the fight significantly easier, colossus gets a special final attack during which it shouts "Perish" and uses different attacks. Unlike in the original PR, he can only use it once, so it's not as deadly and bullshit. This should make the fight more epic and similar to other bossfights which get cool attacks near the end of the battle.
Goodbye 4 GBP, you served me well.
* Titan's Final Lament - Colossus and hierophant crusher trophy rework
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
* Freon combustion burn rate is now based on oxygen moles if there isn't enough oxygen for full burn. Fixes freon hotspots. (#66782)
For some reason the sign on the if check was reversed, which causes freon burn rate to be based on freon moles instead of oxygen moles if there is lacking oxygen for full burn. Not sure why it got flipped, but I'm just flipping the freon burn rates to correct it, so it should be based on oxygen moles if there isn't enough oxygen for fullburn.
Also for some reason freon fires checked if the holder was in a turf before reacting, and returning no reaction if it was not in a turf. This caused cold fire hotspots to kill themselves due to them not being a turf while making the gasmixture react, returning no gas reaction results then setting volume of fire to 0.
Fixes that by allowing freon to react in any gasmixture, but it can't create hot ice if it's not in a turf.
* Freon combustion burn rate is now based on oxygen moles if there isn't enough oxygen for full burn. Fixes freon hotspots.
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
* Mindshock/mindshield modifications (#66727)
Reduces the length of the brainwashing from six minutes to two. Adds a second charge to the mindshock gland to compensate.
Makes it so that having a mindshield will protect you from the effects of a mindshock gland. The includes the passive effects that mindshock glands have on people near them, as well as the brainwash command from the mental interface device.
Since the implant itself is handling the brainwash broadcast, it will still succeed in broadcasting the message even if the gland holder is mindshielded. Mindshields only prevent you from receiving the brainwash message. Tinfoil hat functionality is untouched and remains the only way to block the message from being broadcast.
* Mindshock/mindshield modifications
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Separates regenerative core and wounded alerts (#66794)
This has been bothering me for ages, it doesn't make sense for wounded and regenerative core status effects to have the same icon and in the original PR author said that he didnt put regen core into the icon instead of the skull because he didnt want wounded status effects to have the regen core as its icon, so here you go. Wounded effects still keep their skull while regen cores have proper sprites.
* Separates regenerative core and wounded alerts
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
* Adds a check for border objects to projectile impacts (#66789)
When a projectile bumps into something, it decides what it actually hits by calling /obj/projectile/proc/select_target on that atom's turf. This lets the projectile prioritize either its original target or any mobs on the tile over whatever other crap is there, but does not account for border objects in the way of the projectile's path, which should always be the first thing the bullet hits.
This PR makes select_target() prioritize the bumped atom if it's a border object, so that things like directional windows and firelocks properly block incoming fire. /turf/Entered already prioritizes border objects in the relevant direction when picking what to pass to Bump(), so we don't need to recheck the direction.
* Fixes ballistics hitting people through windoors and other border objects
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Ventcrawling improvements, performance and visual (#66709)
* Initial pipecrawl work
Ok so pipecrawl images were updating EVERY TIME YOU MOVED
This was not good mojo
What I've done here is twofold
First, I ensured pipecrawl updates only when the net changes. This
breaks the current implementation, but I intend on fixing that
Second, I moved our method of getting pipes to the spatial grid
This isn't that great at the moment, but I intend on adding support for
tracking entered/exited cells, which should make this much better
* Much faster pipecrawling processing, niceties
Adds a concept called a cell tracker datum.
It manages a list of cells a passed in bound is "inside", and when
queried will return a list of new cells, and old cells.
Because we only really care about maintaining an absolute window of
"CELLS WE ARE IN" and less about always removing cells we're not in, we
can manage a second window to prevent moving up and down on a cell line
causing a ton of updates.
Uses this concept to optimize pipecrawling significantly, from 3ms per
call before to roughly 0.03ms per call.
Also moves pipecrawl images to their own plane, so they don't overlap ui
elements
* Pipecrawling effects niceties, direction help
You can now move in more then one direction when pipecrawling
This works as expected, if you hold up and left, move up for a while,
and come to a fork, you'll go left
Added some effects to pipecrawling. It'll darken the lighting plane
slightly, so you get a nice effect instead of just fullbright.
Also added a color matrix and drop shadow to the pipe images, this way
they stand out a bit more.
You now glide between pipe moves, rather then moving instantly. This
doesn't effect your actual move rate, but it no longer feels jittery
with say, 60fps
* Bounds
* Fixes runtimes, cache something somethign sonic speed
* Reworks how being interested in the spatial grid is tracked
Rather then checking multiple variables on the atom to consider, we
instead check for the existence of a string key.
This key is used by a list on the spatial grid subsystem to retrive a
cached list of all of the atoms "types"
Doing this requires doing a bit of extra work in
important_recursive_contents code, but it allows us to separate being a
part of the spatial grid from using important recursive contents, which
is very nice.
As a consequence, I've had to unroll some lazylist macros in important
recursive contents logic. It's not ""that"" bad but it's not great
either.
Oh and this adds a slight cost to enter/exit cell, but it's minimal.
Basically, rather then checking for different features of a grid member,
we just iterate the list their string key points to. Very handy
So there's an added cost of a list copy and all, but we save the
headache of more types technically increasing the cost of
addition/removal.
I also made adding/removing from the grid into one "pulbic" proc rather then two
different ones for each operation, because it was starting to get silly
* waaa waa it doesn't compile
* chord -> coord
* Ensures important_recursive_contents is actually emptied on removal
* Removes soul
* Kyler's review
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
* Kyler's review 2
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
* Kyler's review 3
Moves some procs around, improves some documentation, catches a few
small issues
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
* Ventcrawling improvements, performance and visual
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
* Converts drunkness and dizziness to status effects. Refactors status effect examine text (and, subsequently, stabilized black extracts). (#66340)
* Refactors dizziness into a status effect
* Refactors the dizziness setter to use the new kind
* Drunkness.
- Should drunk continue to work off of a magic value or be swapped to duration? I've not yet decided: For understandability it's preferabale for "drunk" to use a timer (they are drunk for 3 more minutes), but both adding drunk and decreasing drunk currently use weird calculations which would be difficult to carry over.
- Ballmer is a liver trait
* Dizzy was a setter, not an adjuster
* Does all the drunk effects over
- refactors examine text fully
- refactors stabilized blacks because of this
* Removed
* repaths, fixes some issues
* Minor fixes
* Some erroneous changes
* Fixes some dizziness errors
* Consistency thing
* Warning
* Undoes this change, I dont like its implementation
* max_duration
* Max amount
* Should be a negative
* max duration
* drunk doesn't tick on death
* Rework dizziness strength
* Erroneous dizzy change
* Fixes return type
* this should do it?
* well, one more
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Steal objective can now be cashed out early for less reward as soon as you place the bug on. Removes smuggling objective and adds a new 'Destroy Machinery' objective (#66771)
Steal objective can now be cashed out early for less reward, but completing the time in its entirety will give extra TC and reputation.
The smuggling objective has been removed and replaced with the 'Destroy Machinery' objective, which focuses on disrupting workflow by destroying stuff like protolathes, telecomms and research servers.
Made the easier steal objectives worth slightly less TC
* Steal objective can now be cashed out early for less reward as soon as you place the bug on. Removes smuggling objective and adds a new 'Destroy Machinery' objective
* eeeee
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>