Commit Graph

14014 Commits

Author SHA1 Message Date
CRITAWAKETS c07574ae77 Adds in the admin outfit. (#55374)
So i was told to make this if i wanted to get an outfit that actually could work on things like radiation. I also gave it a box full of stabilized extracts because those give quite good effects like more speed and regeneration.
2020-12-11 00:10:33 +00:00
Mickyan f32784075b Changes painting frame description to explain how they work (#55414)
spellcheck: changed the description of painting frames to better explain how to remove paintings and whether the frame is persistent
2020-12-10 23:46:40 +00:00
Jared-Fogle 0a77d27a1b Replace direct poi_list manipulation with element (#55416)
Replaces GLOB.poi_list |= src and GLOB.poi_list -= src with an element that handles it directly.

More consistent code, especially when a lot of code couldn't decide how to add/remove (some |=, some -=, some .Remove, etc).
2020-12-10 23:30:25 +00:00
Jared-Fogle 7d3fd4355f Everything that uses maptext now uses the class that makes it actually readable (#55420)
Adds a MAPTEXT macro that wraps the given text in the maptext class, the thing we use for Runechat to make it so you can actually read it. Everything that sets maptext now uses this.
2020-12-10 23:25:46 +00:00
LemonInTheDark 92f509ea80 Revert "Refactors how movetype flags are added and removed and the floating animation (#54963)" (#55432)
This reverts commit b8425c003a.
2020-12-09 19:30:28 -08:00
silicons 160175ee8b pass_flags handling refactor + rewrites a part of projectiles for the n-th time (#54924)
Yeah uhh this'll probably need testmerging even after it's done because yeah it's a bit big.
If y'all want me to atomize this into two PRs (pass flags vs projectiles) tell me please. Pass flags would have to go in first though, in that case, as new projectile hit handling will rely on pass_flags_self.
Pass flags:

Pass flags handling now uses an atom variable named pass_flags_self.
If any of these match a pass_flag on a thing trying to pass through, it's allowed through by default.
This makes overriding CanAllowThrough unnecessary for the majority of things. I've however not removed overrides for very.. weird cases, like plastic flaps which uses a prob(60) for letting PASSGLASS things through for god knows why.
LETPASSTHROW is now on pass_flags_self
Projectiles:

Not finalized yet, need to do something to make the system I have in mind have less unneeded overhead + snowflake

Basically, for piercing/phasing/otherwise projectiles that go through things instead of hitting the first dense object, I have them use pass_flags flags for two new variables, projectile_phasing and projectile_piercing. Anything with pass_flags_self in the former gets phased through entirely. Anything in the latter gets hit, and the projectile then goes through. on_hit will also register a piercing hit vs a normal hit (so things like missiles can only explode on a normal hit or otherwise, instead of exploding multiple times. Not needed as missiles qdel(src) right now but it's nice to have for the future).

I still need to decide what to do for hit handling proper, as Bump() is still preferred due to it not being as high-overhead as something like scanning on Moved(). I'm thinking I'll make Moved() only scan for cases where it needs to hit a non-dense object - a prone human the user clicked on, anything special like that. Don't know the exact specifics yet, which is why this is still WIP.

Projectiles now use check_pierce() to determine if it goes through something and hits it, doesn't hit it, or doesn't go through something at all (should delete self after hitting). Will likely make an on_pierce proc to be called post-piercing something so you can have !fun! things like projectiles that go down in damage after piercing something. This will likely deprecate the process_hit proc, or at least make it less awful.

scan_for_hit() is now used to attempt to hit something and will return whether the projectile got deleted or not. It will delete the projectile if the projectile does hit something and fails to pierce through it.

scan_moved_turf() (WIP) will be used for handling moving onto a turf.

permutated has been renamed to impacted. Ricocheting projectiles get it reset, allowing projectiles to pierce and potentially hit something again if it goes back around.

A new unit test has been added checking for projectiles with movement type of PHASING. This is because PHASING completely causes projectiles to break down as projectiles mainly sense collisions through Bump. The small boost in performance from using PHASING instead of having all pass flags active/overriding check_pierce is in my opinion not worth the extra snowflake in scan_moved_turf() I'd have to do to deal with having to check for hits manually rather than Bump()ing things.
Movement types

UNSTOPPABLE renamed to PHASING to better describe what it is, going through and crossing everything but not actually bumping.
Why It's Good For The Game

Better pass flags handling allows for less proc overrides, bitflag checks are far less expensive in general.

Fixes penetrating projectiles like sniper penetrators

This system also allows for better handling of piercing projectiles (see above) without too much snowflake code, as you'd only need to modify on_pierce() if you needed to do special handling like dampening damage per target pierced, and otherwise you could just use the standardized system and just set pass flags to what's needed. If you really need a projectile that pierces almost everything, override check_pierce(), which is still going to be easier than what was done before (even with snowflake handling of UNSTOPPABLE flag process_hit() was extremely ugly, now we don't rely on movement types at all.)
2020-12-10 09:29:27 +13:00
Ghom b8425c003a Refactors how movetype flags are added and removed and the floating animation (#54963)
I wanted to refactor how movetype flags are added and removed into traits to prevent multiple sources of specific movement types from conflicting one other. I ended up also having to refactor the floating animation loop (the one that bobs up and down) code in the process.
Why It's Good For The Game

A way to avoid conflict from multiple sources of movement types.
This also stops melee attacks, jitteriness and update_transform() from temporarily disabling the floating movetype bitflag altogether until the next life tick.

Tested, but i'm pretty sure improvements could be made.
Changelog

cl
fix: jitteriness, melee attack animations and resting/standing up should no longer momentarily remove the floating movement type.
/cl
2020-12-10 09:28:32 +13:00
Ghilker aaea29ba6f Windows "lag" fix (#55372)
Change to Move() to make only anchored windows to update the air when they move through the turfs (should prevent abusable situations of lag machines too)
Makes singulo from stage 2 unanchor windows when pulling them (low performance increment for singulo(?))
Why It's Good For The Game

less abusable lag good
Changelog

cl
tweak: only anchored windows call move_update_turf()
tweak: singularities from stage 2 and over will unanchor windows
/cl
2020-12-09 14:21:56 +13:00
Jared-Fogle f00e379939 Singularity component (#55096)
Adds singularity component
2020-12-08 10:58:03 +01:00
Qustinnus 8737e8cb80 Small do-after refactor (#55172)
This is an alternative to the PR Ryll made, it does some things similar e.g. the default limit of 1 interaction per target for a person, however, it refactors do_afters to support overrides for max interaction counts and unique sources.

For example, stripping uses the item being stripped as the source, allowing you to strip multiple items, but not the same item multiple times.

I've also fixed most other edge-cases this could cause where balance would be affected, but feel free to point out any I might've missed, this'll probably require some longer-term testmerging.
2020-12-07 13:04:51 -08:00
Emmanuel S 29c518ab17 Cargo can now order empty supplypods through the express console (#54215) 2020-12-05 17:55:13 -08:00
Qustinnus f887155b27 Kills oldfood, Puts newfood on top. (#55160)
Slays the last of old-food, making new-food the new normal.

Co-authored-by: MrMelbert <kmelbert4@gmail.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
2020-12-04 00:11:47 -08:00
Urumasi 5633cfb215 Make RCD suicide place wall and gib user (#55283)
* Make RCD suicide place wall

* gibbing should return MANUAL_SUICIDE

* return SHAME if no ammo

* Only set RCD to wall if the message says so
2020-12-03 19:38:56 -08:00
Jordan Brown 51ba68be76 Merge pull request #55268 from AutomaticFrenzy/patch/docs-from-github-wiki
Migrate some docs from the GitHub wiki into the repository
2020-12-03 11:17:06 -05:00
ArcaneDefence e84df1a36e Fixes detdrobe construction bug (#55264)
Lets detectives disassemble their vendor to restock it I guess.
They could rebuild it if someone else broke in and took it apart too?
2020-12-01 23:11:24 -05:00
Jack LeCroy 40feaf238b Ports custom food to new food datum (#55207)
Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
2020-12-01 17:01:05 -08:00
Tad Hardesty c9c9b25f13 Single-space the /obj/item/proc/equipped docblock 2020-11-30 21:39:05 -08:00
Tad Hardesty 70e468b891 Merge branch 'master' of https://github.com/tgstation/tgstation into patch/docs-from-github-wiki 2020-11-30 21:25:43 -08:00
TiviPlus de7994c0f7 Init sanity unit test (#55147)
https://github.com/tgstation/TerraGov-Marine-Corps/pull/5326
Stemming from 
https://github.com/ParadiseSS13/Paradise/pull/14770

Basically it just checks for bad initialize calls
2020-11-30 17:15:11 -05:00
TiviPlus 0eaab0bc54 Grep for space indentation (#54850)
#54604 atomizing
Since a lot of the space indents are in lists ill atomize those later
2020-11-30 12:48:40 -05:00
Ghilker 5d76efe40e More HFR fixes (#55203)
- Refractor HFR core from binary device to unary device to fix issue with cooling not properly connecting, that was deleting gases when tryed to use (only one port cooling now similar to a Thermomachine)
- Small fix of GUI data where two vars were inverted
2020-11-30 18:53:03 +02:00
Ryll Ryll f18ece0926 Small refactor for medical stack items (#55213)
Someone DM'd me asking a question about what the 'heal' var was for on aloe, I looked into it and realized it was an unnecessary variable that just replicated what heal_brute and heal_burn do. I then realized there was quite a lot of unnecessary copypasta in medical stack code, so I made some changes to make it neater and added some documentation in to boot
2020-11-30 11:51:40 -05:00
Winter Flare 760ea1e7ab Sets default food size to small. (#55210)
## About The Pull Request

Fixes an oversight done during the food refactor that makes all food items normal sized instead of small.
Instead of adding weight class to a bunch of individual items [(like this PR)](https://github.com/tgstation/tgstation/pull/55174) it just makes all food default to small unless tagged to be bigger.

## Why It's Good For The Game

Being able to put 7 items on a tray instead of 4 is good, and if a food item is "too powerful", that individual item (or subtype, such as soups) can be given a larger weight class.

Fixes #54818
2020-11-30 11:49:53 -05:00
Bobbahbrown 24e447418a tgui: Round Gauge (#55230)
This PR introduces the wacky round gauge for showing all of your favourite metrics in half-circle format. Show off those wacky numbers, use some scary blinking lights, feel alive!

I've also gone ahead and included this in the canister and tank (think internals) UIs. I've also done some refactoring of data sending from canisters because GOSH DANG it required some.
2020-11-30 18:48:52 +02:00
Tad Hardesty f6053f55c9 Add some method descriptions from neer's "Common Variables and Functions" 2020-11-29 23:13:09 -08:00
Tad Hardesty eb895036cf Add "Important Types" info from neersighted's "Common Variables and Functions" 2020-11-29 23:13:09 -08:00
Ryll Ryll 5e878f504c Kills the quickswap shortcut (#55209) 2020-11-28 23:58:20 -08:00
Ghom f77d48bc36 Fixing robot upgrades sometimes not being removed from lists. (#54842) 2020-11-28 08:01:34 -03:00
IndieanaJones 0a22bb785d Fixes Issues Regarding Finding Spider and Swarmer Spawns (#55054)
This PR fixes the issue where people couldn't teleport to spider egg clusters using the notification.

It also adds both the swarmer beacon and spider egg clusters to the ghost orbit menu. This should make it easier to find instances of both in cases where a player might miss the initial notification.
2020-11-28 07:57:19 -03:00
Jared-Fogle 96597d3157 Remove duplicate definitions of /obj/effect/ex_act, explicitly noop it (#55076)
/obj/effect/ex_act had several different re-definitions to make it a noop. The original definition would randomly delete it, which is bad news when a lot of /obj/effects are just that--effects, that shouldn't be blown up.

The ones that actually do want to be blown up (like decals) already have their own implementations. The one in place was never ran, and nobody had problems with it.
2020-11-28 07:55:26 -03:00
Ryll Ryll 1b9777df1f Changes grenade proc names to be more clear (#55181)
Grenades have, for the longest time, used the proc name preprime() to refer to arming a timed grenade so that it will boom in a few seconds, and prime() to refer to the grenade actually going boom (or releasing foam or anything else grenades do when they go off). This was very confusing, so now these two procs are called arm_grenade() and detonate().
2020-11-28 07:44:28 -03:00
LemonInTheDark 842942e885 Fixes improvised jetpacks working as infinite one tick boosters (#55202)
Fixes improvised jetpacks working as infinite one tick boosters
allow_thrust is used as a check when the jetpack is toggled on to see if it should be allowed to turn on. This line needs to return the parent call instead of presuming it passes.
2020-11-28 07:40:29 -03:00
Qustinnus 25d986b810 Fixes cleric mace handles (#55163) 2020-11-26 21:10:29 -05:00
LemonInTheDark aef7adfc3b Removes a source of ian harddels, keeps mcgruffs bed discription from getting overwritten at roundstart, moves the bed claiming feature to just the dogbed typepath, none of the subtypes, this applies to buckling too (#55158)
Removes a source of ian harddels, keeps mcgruff's bed description from getting overwritten at roundstart, moves the bed claiming feature to just the dogbed typepath, blacklisting subtypes. This applies to buckling too.

This means that a dogbed can only ever belong to one dog. Fuck you.
Remake of #54892, github doesn't like force pushes, not sure why
2020-11-26 21:10:01 -05:00
LordVollkorn 1592a112e3 Fixes Improvised Jetpack (+New custom icons) (#55177)
This fixes the improvised jetpack, which currently cannot be activated.
Fixed [#50396](https://github.com/tgstation/tgstation/issues/50396)

The code change was very minor and everything seems to work properly now.
Bonus: New custom icons for this item, better representing what it most likely would look like
2020-11-26 21:08:17 -05:00
Arkatos1 ead0e859db Merge type variable fixes and unit test (#55173)
This PR fixes a case where certain materials caused issues when working with stacking machines, because they did not have set merge_type from the get go, which meant that initial() of that variable returned null.

To clarify further - if /obj/item/stack does not have set merge_type, it is generated merge_type upon Initialize(), which is the same as its typepath. For example, currently /obj/item/stack/sheet/bluespace_crystal does not have any merge_type set, and it is given merge_type = /obj/item/stack/sheet/bluespace_crystal upon Initialize(). Each Initialize(). Again and again.

There are quite a bit of these cases in the codebase, especially if its some older code. I have gone through them and set all of them their set merge_type, which they would inevitably receive anyway upon initializing and it fixes a bug mentioned above.

To prevent this happening again, I have also included unit test to check if merge types are set for stacks, included exceptions are usually abstract paths like /obj/item/stack/sheet/mineral, which contains zero behavior on its own and does not spawn unless done via admin tools.
2020-11-26 21:05:52 -05:00
NightRed 48444cc5dc Fixes some food item sizes (#55174) 2020-11-26 13:21:35 -08:00
MrMelbert c8536907fc Accidental Consumption post-food refactor cleanup (#55152)
Renames a bunch of vars to be more descriptive
    Removes old references to snacks
    Updates some code slightly
2020-11-26 14:41:26 +00:00
Ghom d94cfdaae7 Fixing non wiz phased mobs. (#55162)
Wrong proc path, also qdel ref issue for shadow walk holder.
This will close #55141 and close #55142
fix: Nightmares and some other critters no longer delete themselves once they stop phasing.
2020-11-26 14:36:50 +00:00
TemporalOroboros 9f694d82ea Fixes cyborgs in general replenishing stack modules from external sources (#54935)
* Cyborg stack fix

- Makes cyborgs capable of recycling floor tiles again

* Touches up module code

- Makes module code slightly more OOP-compliant
- Speeds up module creation by an imperceptable amount
- Reworks how borg modules handle stacks
2020-11-26 00:45:52 -08:00
Ghom 4c31b0e116 CanUseTopic() refactor. (#54747)
* CanUseTopic() refactor.

* Forgot about default_can_use_topic. Tested and working.

* Update bin.dm

* no-nonsense.
2020-11-25 13:12:12 +01:00
prodirus e83ae87461 Fixes chem and addiction scans, null checks for addiction_list (#55105)
So #54797 changed addiction_list to instantiate as a null instead of a list. Turns out a few things relied on the list existing!
Things like health analyser/medical kiosk chem and addiction scans broke, and smokers would no longer get addicted!
Made a few places check if addiction_list is null before continuing.

(Lemon's note, refactored some code to make it cleaner/removed some unneeded loop typechecks)
2020-11-24 22:43:51 -08:00
NightRed fb51b24d21 Humans have more complicated body temperatures (#54550)
This changes how carbon/humans stabilize body temperature, and changes how damage and wounds are applied based on temperature.

Humans now have a core body temperature along with body temperature. The core temperature is used for natural stabilization and what viruses like fever and shivers target by raising or lowing the core temperature of the mob.
The standard body temperature still exists and acts exactly the same for most items at this time but is now treated as surface temperature in humans.

Damage from body temperature for humans is now based on the core temperature instead of body temperature now.
Humans will now receive burn wounds when the body (surface) temperature is to high for to long.

This causes you to see alerts for the area temperature before you take damage in most cases improving visibility of dangerous situations.
2020-11-24 22:37:36 -08:00
ArcaneMusic bf39caca6a Refactors Pastries into newfood. (#54996)
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
Co-authored-by: Floyd <Floydje123@hotmail.com>
2020-11-24 16:18:10 -08:00
Arkatos1 1633a13609 tgui: Safe (#55109)
This PR refactors safes and brings their UI from html to tgui based on the PR above.

Paradise has more features for safes than us, and these features were not ported along to accommodate feature freeze. Only our current safe features settings were refactored, for example number of tumblers stays 2, no extra safe information on examine and safe codes are not generated on paper for command.

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-11-24 18:07:08 +02:00
Bond eab04c0631 Fixes PDA bombing have equal chances to work on PDAs without manifest access vs PDAs with it (#55036)
* Makes extra difficulty actually work

0

* Actually fixes it as of what Fikou suggested

* no space, sorry

Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>

Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
2020-11-24 18:21:39 +08:00
ArcaneDefence e64267f3ac path funeneee (#55119) 2020-11-24 17:53:05 +08:00
Ryll Ryll 1f1bddfe4f Foam darts and other unembeddable bullets will no longer leave ghost shrapnel (#54994)
Projectiles are assigned the ability to try embedding by the presence of a shrapnel_type variable being set on them, whether or not they actually have a set of embedding stats in their embedding var. By default, children of /obj/projectile/bullet have a shrapnel type set to a generic embedded bullet item, including things like foam darts and lollypop projectiles which shouldn't be able to embed (and certainly not embed as a bullet). While they had their embedding vars set to null, they still had their shrapnel_type set to the embedded bullet type, meaning shooting a person with a dart gun or whatever would leave a failed shrapnel item on the ground where they weren't supposed to.

This fixes that by requiring both a defined shrapnel_type AND a defined embedding var for the embedding stats. Any projectiles without both won't be able to try embedding. I also manually put 'shrapnel_type = null' on any bullet subtypes with embedding = null just to be safe and for consistency.
2020-11-23 19:35:04 -08:00
Qustinnus 41157f5d6b Moves grown food to newfood (#55040)
Moves grown food to newfood
Gives trash element support for callbacks for item creation override
2020-11-23 14:00:23 -08:00
ArcaneMusic 72aafb5f72 Makes it so living crate creatures can pass plastic flaps as god intended. (#55088) 2020-11-23 11:43:26 -08:00