Commit Graph

103 Commits

Author SHA1 Message Date
SkyratBot
b6ffb1e31b [MIRROR] Refactor /turf/var/intact [MDB IGNORE] (#9114)
* Refactor /turf/var/intact (#62331)

Turfs have a variable, intact, which conflates three meanings:

    Determining whether there's something that can be pried out, such as directly with a crowbar or indirectly with a tile stack and a crowbar off-hand.
    Determining whether underfloor pieces are visible.
    Determining whether underfloor pieces can be interacted with - by players with tools, through interaction with effects like chemical acid, or foam.

When plating is hit with a stack of tiles, /turf/open/floor/attackby checks whether the turf is intact, and if so, ends the attack chain regardless of whether or not the attempt to hotswap a turf (with a crowbar) is successful or not. However, turfs which want the underfloor to be visible - such as catwalks and glass - set the intact variable to FALSE, and so can be repeatedly placed over one another, as if they were the first tile to be placed over the plating.

This refactors /turf/var/intact into two distinct variables:

    /turf/var/overfloor_placed, for whether or not there is something over plating.
    /turf/var/underfloor_visible, for whether or not the various underfloor pieces should be invisible, visible, or both visible and interactable.

All references to /turf/var/intact have been replaced with an equivalent overfloor_placed or underfloor_visible reference, depending on which check is appropriate. underfloor_accessibility can take one of UNDERFLOOR_HIDDEN, UNDERFLOOR_VISIBLE, or UNDERFLOOR_INTERACTABLE. This prevents cases such as acid foam or tools phasing through glass floors to affect the underfloor pieces underneath, and covers all kinds of unusual, not-wiring-visiblity usage such as Holodeck completeness, Revenant interaction, or station integrity checking.

* Refactor /turf/var/intact

* Thank

Co-authored-by: esainane <esainane+github@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
2021-10-30 00:19:21 +13:00
SkyratBot
230a34588f [MIRROR] modules/atmospherics major cleanup [MDB IGNORE] (#8818)
* modules/atmospherics major cleanup

* E

* E

* 0

Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-10-14 22:44:30 +01:00
SkyratBot
c23bd1cb8c [MIRROR] every case of initialize that should have mapload, does (#8374)
* every case of initialize that should have mapload, does

* E

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-09-24 23:07:53 +01:00
SkyratBot
7d1d0e1fad [MIRROR] Refactors most spans into span procs (#6315)
* Refactors most spans into span procs

* AA

* a

* AAAAAAAAAAAAAAAAAAAAAA

* Update species.dm

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-06-16 00:24:49 +01:00
SkyratBot
9b2f03b4e4 [MIRROR] Fixes reagent multiplication exploit with 1u foam (#6016)
* Fixes reagent multiplication exploit with 1u foam (#59313)

* Fixes reagent multiplication exploit with 1u foam

Co-authored-by: antropod <antropod@gmail.com>
2021-05-28 23:43:40 +01:00
SkyratBot
7f083e7cb6 [MIRROR] Converts the atmos senstive component over to connect_loc (#5376)
* Converts the atmos senstive component over to connect_loc (#58266)

* Makes all uses of atmos_senstive pass in mapload as context

* Converts atmos senstive to connect_loc, does some general cleanup to the element, and makes it check the state of the tile the thing is on assuming creation didn't happen as a part of map loading

* Updates connect loc to match the new arg list

* Converts the atmos senstive component over to connect_loc

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2021-05-01 09:44:09 +01:00
SkyratBot
18eca27569 [MIRROR] update_appearance (#3508)
* update_appearance

* a

* a

Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
2021-02-19 16:08:09 +00:00
SkyratBot
43febe3145 [MIRROR] Converts many proc overrides to properly use list/modifiers, lots of other smaller things (#3433)
* Converts many proc overrides to properly use list/modifiers, lots of other smaller things

* Update human_defense.dm

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
2021-02-17 14:18:21 +00:00
SkyratBot
b332b46b65 [MIRROR] Remove hideous inline tab indentation, and bans it in contributing guidelines (#3394)
* Remove hideous inline tab indentation, and bans it in contributing guidelines

* a

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
2021-02-15 15:32:02 +00:00
SkyratBot
7da4aa9adf [MIRROR] Reaction rates, pH, purity and more! Brings a heavily improved, less explosive and optimised fermichem to tg. (#3306)
* Reaction rates, pH, purity and more! Brings a heavily improved, less explosive and optimised fermichem to tg.

* a

Co-authored-by: Thalpy <33956696+Thalpy@users.noreply.github.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
2021-02-12 00:04:39 +00:00
SkyratBot
f79e91462c [MIRROR] LINDA Reforged (#2573)
* LINDA Reforged

* Update airlock.dm

* Update biohazard_blob_controller.dm

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Azarak <azarak10@gmail.com>
2021-01-08 18:52:35 +01:00
SkyratBot
afce3e2a94 [MIRROR] pass_flags handling refactor + rewrites a part of projectiles for the n-th time (#2097)
* 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.)

* pass_flags handling refactor + rewrites a part of projectiles for the n-th time

Co-authored-by: silicons <2003111+silicons@users.noreply.github.com>
2020-12-09 23:44:54 +01:00
Useroth
caa6b81048 Cleans up extinguish_mob and prevents perpetual fire (#53252) (#685)
Co-authored-by: NightRed <nightred@gmail.com>
2020-09-07 03:40:42 +02:00
SkyratBot
ec09510459 Bools and returns super-pr (#53221) (#565)
Replaces like 70-80% of 0 and such, as a side effect cleaned up a bunch of returns
Edit: Most left out ones are in mecha which should be done in mecha refactor already
Oh my look how clean it is

Co-authored-by: TiviPlus <TiviPlus>
Co-authored-by: Couls <coul422@gmail.com>

Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
Co-authored-by: Couls <coul422@gmail.com>
2020-08-30 05:12:59 +02:00
SkyratBot
72c69368b6 [MIRROR] Opacity refactor (#405)
* Opacity refactor (#52881)

    Moves all opacity var manipulation to a proc which sends a signal.
    light_blocker element for movable opaque atoms made, which tracks its movement and updates the affected turfs for proper lighting updates.
    has_opaque_atom boolean replaced by the opacity_sources lazylist to keep track of the sources, and a directional_opacity which serves a similar function but also allows for future expansion with on-border opaque objects (not yet implemented).
    Some opacity-related sight procs optimized as a result of this.
    Some variables moved to the object's definition.
    A define or two added into the mix for clarity.
    Some code cleaning, like turning booleans into their defines.
    One file renamed for clarity.

Changelog

cl
balance: Mechs no longer block sight. It's a non-trivial cost for the lighting system with little to no gain.
/cl

* Opacity refactor

Co-authored-by: Rohesie <rohesie@gmail.com>
2020-08-19 04:48:14 +02:00
LemonInTheDark
fce4274752 Fixes all bits of code that check if something is under a tile that weren't being done 2020-07-10 22:14:37 -07:00
TemporalOroboros
e78d82592f Refactors reagent exposure code (#51396)
* Refactors reagent exposure code

Removes istype clutter. Renames a few procs

* == TRUE

Adjusts COMPONENT_NO_EXPOSE_REAGENTS bitflag offset.

TODO: Remove comment

Co-authored-by: Rohesie <rohesie@gmail.com>

* == TRUE

Adjusts COMONENT_NO_EXPOSE REAGENTS bitflag offset.

Removes comment

Co-authored-by: Rohesie <rohesie@gmail.com>
2020-06-21 20:03:19 -03:00
Time-Green
c04abab2bf [READY] Makes plumbing mappable and reworks hiding (#49644)
🆑
tweak: Ducts can now be hidden under tiles
code: tile hiding is now an element and way cooler and sexier
/🆑

Ducts can now be hidden under tiles
Plumbing machinery connects can now be hidden aswell
Plumbing can now also be properly mapped in without breaking anything
Plumbing component now uses the normal overlay systeem instead of being a weird exception

You can now add the /datum/element/undertile element to instantly make something hidable under tiles when appropriate.
2020-03-16 20:37:59 +13:00
AnturK
e3fca45a78 Fix a few small runtimes (#49352)
Nothing special here, mostly sanity.
Defib hud is awful, needs rewrite.
2020-02-16 00:40:11 -08:00
Emmett Gaines
53024590de Can pass refactor (#48659)
* Makes all CanPass procs call parent

* Makes CanPass more extendable and gives the mover a say in the matter

* Replace CanPass with CanAllowThrough to use the new system

Regex replace `(?<!proc)/CanPass\(` => `/CanAllowThrough(`

* Simple optimization pass
2020-01-08 21:31:49 +01:00
skoglol
36437d9c33 Removes free roundstart RCDs, adds foam grenades to EVA (#48482)
* RCD is premium, EVA RCD replaced with foam grenades, foam better

* vendor stock down to 2
2020-01-05 19:35:03 -05:00
nemvar
1ead3e8ae7 Fixes morph movement and replaces magic numbers. (#46358)
* fixes morph speed shizz

* fixes morph movement
2019-09-06 16:23:28 -07:00
Dingo-Dongler
cb31d23f49 Fixes self-sustaining rainbow slime extracts, blue slime extracts' foam activation and refactors foam code into a helper proc (#46259)
* Fixing self sustaining rainbow extracts and fixing foam creation of blue slime extracts

* Refactoring foams to be in a helper function. Resin foam remains untouched

* Improving refactor of create_foam

* Putting helper proc in vent clog event

* create_foam takes a foam type again

* minor type passing change
2019-09-06 08:54:42 +02:00
Rob Bailey
2029163d33 playsound vary boolean define conversion (#46254)
About The Pull Request

Converts every single usage of playsound's vary parameter to use the boolean define instead of 1 or 0. I'm tired of people copypasting the incorrect usage.
Also changes a couple of places where a list was picked from instead of using get_sfx internal calls

This was done via regex:
(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\)) to match 1
(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\)) to match 0
full sed commands:
/(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\))/\1TRUE\2/ 1 to TRUE
/(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\))/\1FALSE\2/ 0 to FALSE

I'm not very good with regex and these could probably be optimized, but they worked.
Why It's Good For The Game

Code usability
2019-08-30 18:45:20 +12:00
Dennok
d464a7c689 add flag CHANGETURF_INHERIT_AIR 2019-08-04 12:54:12 +03:00
vuonojenmustaturska
6a106bc877 Remove reagent ids and use typepaths where applicable (#44166)
cl Naksu
code: reagent IDs have been removed in favor using reagent typepaths where applicable
fix: mechas, borg hyposprays etc no longer display internal reagent ids to the player
/cl
2019-05-31 21:57:26 +12:00
ShizCalev
1ebbab60ec Fix slippery oil never initializing, move some Initialize() to ComponentInitialize() (#43129) 2019-03-16 19:09:47 -07:00
AnturK
72e9cea3b6 Makes objects blocking air restore airflow in /atom/Destroy (#39210) 2018-07-21 06:28:57 -04:00
Jordan Brown
6a603b733d Ports more things to Initialize (#38653) 2018-06-22 16:56:09 -07:00
kevinz000
f300a5c155 Interaction/Attack Hand Refactor (#36405) 2018-03-23 11:20:54 +01:00
BordListian
12181dcfb7 - Please stop reverting this to the erroneous version 2018-02-18 12:50:12 +01:00
Iamgoofball
725df4bd9b Buffs Clogged Vents (#34949)
* Buffs Clogged Vents

🆑 Iamgoofball
feature: Clogged Vents now has some teeth
/🆑

This was the only part of GoofEvents players liked

* Update effects_foam.dm

* Update vent_clog.dm

* Update vent_clog.dm

* Update vent_clog.dm

* Update vent_clog.dm

* Update vent_clog.dm
2018-02-04 02:51:47 -06:00
vuonojenmustaturska
a104d323f8 Reverts smoke and foam buffs, disable foam combining 2018-01-30 14:00:35 -06:00
BordListian
740c4a0337 Adds firefighting foam, a better alternative to water for fighting fires. (#34788) 2018-01-26 22:16:32 +02:00
BordListian
b1dfa4f140 - Fixes smoke and foam having 1/4th of the reagents they should have (yoooo)
- Fixes copy_to runtiming if you transfer from a container that contains nothing directly to a reagents datum
- Removes redundant total_volume check in trans_to
- Fixes cryostylane and pyrosium not heating up people
- Fixes cryostylane cooling beakers to negative kelvins
- Fixes cryostylane cooling people to negative kelvins (stop copypasting code for temperature)
2018-01-21 02:01:23 -06:00
Emmett Gaines
4595c46dca turns the baseturf var into a part time list (#33705) 2017-12-25 20:10:08 -05:00
ninjanomnom
7b7b67edd8 In-code key handling system 2017-11-30 07:40:27 -05:00
vuonojenmustaturska
3f582454a8 Minor speedups to movement: First Blood Part 2 (#32702) 2017-11-14 18:59:45 -02:00
ShizCalev
da131693a4 Fixes foam layer popping 2017-10-17 04:23:20 -04:00
duncathan salt
454d16fe32 Minor refactor of how gas IDs are handled (#31528)
* gas IDs -> gas datum paths

* updates parse_gas_string() to handle both paths and IDs

* fixes compile errors

* fixes parse_gas_string() ignoring amounts of gas

* fixes roundstart jetpack runtimes

* fixes filters

* fixes map-edited filters

* fixes empty canister runtimes on initialization
2017-10-11 15:04:12 -04:00
Tad Hardesty
5a0bb2f599 Grammar fixes to atom descriptions (#31293)
* Grammar fixes to atom descriptions

- Capitalization and punctuation on most descriptions
- CentCom instead of centcom where appropriate
- Earth instead of earth where appropriate

* Remove spaces before newlines and oneline some strings
2017-10-05 16:33:35 -04:00
Ergovisavi
9fb70f22d8 ATMOS Resin removes iciness from floors (#29967)
* atmos resin now makes the floor non-slippery, increased the turf coverage of resin by one unit

* Atmos resin removes wetness on floor tiles upon generation
2017-08-22 14:30:23 +12:00
Ashe Higgs
dfd642f861 Ports smart metal foam from FTL (#29963)
* Ports smart foam from FTL

* Adds foam grenades to the EngiVend

* Why are you doing htis?

* Stuff

* badoop
2017-08-18 23:05:37 -04:00
Jordan Brown
dce49b6caf Adds defines for mouse_opacity 2017-08-14 11:18:22 -04:00
Jordan Brown
3c56d0f4f3 Ports duplicated slipping code to a component (#29628)
* Ports duplicated slipping code to a component

* Makes metal not slippery

* asdf

* Instead of cherry picking like an idiot I could just copy paster

* OOP

* And blood, don't forget Fry's blood!

* Further fixes

* A more generic fashion

* Use the new system

* Fixes

* Fix cartridge type

* Remove inertia
2017-08-09 16:06:15 +02:00
Joan Lung
6d7e3f2281 Lava is no longer a plating subtype (#29463) 2017-07-25 22:16:02 -03:00
AnturK
d3bcb4cbf9 Removes old height parameter from CanPass proc (#29218) 2017-07-13 08:57:25 -03:00
ShizCalev
59ef81245b Changes some 1s and 0s to TRUE and FALSE (#29144) 2017-07-10 10:31:34 -04:00
Joan Lung
1feb0021a1 Removes now-unnecessary obj_integrity definitions 2017-07-08 14:02:50 -04:00
Ergovisavi
a08aa9e3a2 Fixes resin stacking & allows lasers to pass through resin (#28842)
* Fixes resin stacking
Lets you shoot through Resin with lasers!

* Small code cleanup

* TRUE
2017-06-27 09:29:26 -04:00