Commit Graph

1378 Commits

Author SHA1 Message Date
SkyratBot
9eef5d65b6 [MIRROR] Fixes species uplinks [MDB IGNORE] (#11445)
* Fixes species uplinks (#64816)

I was fucking deranged when I originally made this. I not only didn't actually include the assigned species to the uplink's ui data, but I made the code add each objective item to the uplink list twice. This fixes both of those problems, and makes it more readable.

Fixes a mistake I caused.
Closes #64806 (Species-Restricted uplink items don't appear)

Role-restricted and species restricted items can be purchased again.
Species-restricted items no longer appear in surplus.

* Fixes species uplinks

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2022-02-11 10:27:43 +00:00
SkyratBot
b8279a2b3c [MIRROR] BIDDLE HERETICS: Heretic revamp! (Shadow Realm, UI Overhaul, Refactoring, and Murderhoboing Tweaks) [MDB IGNORE] (#11427)
* BIDDLE HERETICS: Heretic revamp! (Shadow Realm, UI Overhaul, Refactoring, and Murderhoboing Tweaks)

* fex

* e

* Update zombieprison.dmm

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-02-11 02:53:01 +00:00
SkyratBot
b1e3b74809 [MIRROR] Add logging to cult rune inscribing (OFFICIAL) (SHE'S BACK) [MDB IGNORE] (#11391)
* Add logging to cult rune inscribing (OFFICIAL) (SHE'S BACK) (#64754)

Previously the game did not log and it was a challenge to prove what did or didn't happen with cult runes (see certain ban appeal threads); they are now present in the game log.

* Add logging to cult rune inscribing (OFFICIAL) (SHE'S BACK)

Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
2022-02-09 00:49:04 +00:00
SkyratBot
3f3f5638fa [MIRROR] Making medbots through the crafting menu now accounts for medkit and health analyser type [MDB IGNORE] (#11371)
* Making medbots through the crafting menu now accounts for medkit and health analyser type (#64725)

In it's current state, using the crafting menu to create a medbot will always create one with the default medkit and health analyser, regardless of the type used to craft it. This PR fixes it, meaning you can now use the crafting menu to create medbots with the different healthkit types for their healing bonuses and you won't lose your special medkit/advanced health analyser if it is destroyed.

* Making medbots through the crafting menu now accounts for medkit and health analyser type

Co-authored-by: GoblinBackwards <kinggreenyoshi@gmail.com>
2022-02-08 17:44:46 +00:00
SkyratBot
cd814c127f [MIRROR] Adds an option to generate typecaches as zebras. [MDB IGNORE] (#11330)
* Adds an option to generate typecaches as zebras.

* Update energy_ball.dm

Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-02-08 01:54:04 +00:00
SkyratBot
d682fbfbc8 [MIRROR] Rotation component refactor and improvements [MDB IGNORE] (#11304)
* Rotation component refactor and improvements

* Update code/modules/power/singularity/emitter.dm

* e

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-02-08 01:38:20 +00:00
SkyratBot
a7fcb65332 [MIRROR] Adds moveloop bucketing, uses queues for the singulo rather then sleeps [MDB IGNORE] (#11257)
* Adds moveloop bucketing, uses queues for the singulo rather then sleeps

* Update singularity.dm

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-02-08 01:21:56 +00:00
SkyratBot
b71b7ef129 [MIRROR] Turns the gas analyzer's environment scanning into a component. [MDB IGNORE] (#11184)
* Turns the gas analyzer's environment scanning into a component.

* Update scanners.dm

Co-authored-by: CRITAWAKETS <sebastienracicot@hotmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-02-08 01:04:16 +00:00
SkyratBot
3a8459a5f8 [MIRROR] Mining MODsuit Rework [MDB IGNORE] (#11328)
* Mining MODsuit Rework (#64688)

makes dropkey deactivate device modules
fixes speed potion being fucky
fixes doubled up balloon alerts
makes some cell code better i think
makes the gps module open the gps tgui for you, instead of putting a gps in your hand
the loader suit can now hold mailbags

Reworks the mining modsuit.
The suit is no longer cold-proof (this can be mitigated by using module space for thermal regulators)
The suit fits less modules than standard suits, but cant burn in lava.
In suit storage it can carry ore bags, resonators and kinetic crushers.
It features a storage, gps, ore bag, drill, clamp and by default comes with a plasma core, being recharged with plasma ore rather than by power cell.
Features two new modules:

Ash Accretion, it gathers dust from basalt (or snow) you walk on to create a layer of ash around the suit, acting as armor and a speed up that quickly drains when you walk on other terrain.
Sphere Transform, turns you into a fast moving ball that can travel past lava, you cannot use your hands when in this form, but you can launch aoe mining bombs to attack or mine

* Mining MODsuit Rework

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2022-02-08 00:46:15 +00:00
SkyratBot
4f375349a4 Tgui input hotfix (#11333)
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-02-07 04:50:08 +00:00
SkyratBot
b45221cfa1 [MIRROR] Tgui input refresh [MDB IGNORE] (#11290)
* Tgui input refresh

* Update code/modules/mob/dead/observer/observer.dm

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-02-06 23:08:19 -05:00
Tom
371374f80f modularises #2834 (#11204) 2022-02-06 20:41:27 -05:00
SkyratBot
07c88ffb0a [MIRROR] Add new surgery tgui that provides a built in body zone selector and doesn't let you start surgeries if their body is covered. Replaces some stuff with balloon alerts [MDB IGNORE] (#11322)
* Add new surgery tgui (#64579)

* Move element to component, start UI, move assets into their own directory

* Complete UI

* Stop when another surgery is started

* Set your real zone since I forgot you actually need to start the surgery too

* Bring this back since I was just removing it as part of a cleanup for asset cache, but I can't prove it's not used anymore

* Remove unnecessary constructor I was using for something else

* Fix signal override

* Add new surgery tgui that provides a built in body zone selector and doesn't let you start surgeries if their body is covered. Replaces some stuff with balloon alerts

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-02-06 20:37:56 +00:00
SkyratBot
6a9fd2bf47 [MIRROR] moves blast doors and shutters to a layer above windows and doors and changes shutters cost and build time [MDB IGNORE] (#11321)
* moves blast doors and shutters to a layer above windows and doors and changes shutters cost and build time (#64669)

This PR increases the layer of poddoors to 3.3, above windows and doors. (Poddoors include blast doors and shutters). I tested this PR to see how blast doors and shutters look with the changes, and they look better open and closed with the new changes. I did not see any bad interactions with windows or doors, except the preexisting fact you need to build a blast door before making a door, or you will be unable to link them up. This PR also rebalances shutters to be a cheaper, easy to build alternative to the monstrosity that is a blast door.

Blast doors and shutters (collectively referred to as poddoors) are thematically important parts of the game, providing a level of extra security and reinforcement that is hard to recreate. Somehow, they are below windows and doors, meaning someone with a fireaxe can destroy windows and doors quite easily without scratching the poddoors. It also makes no sense for a poddoor to be under a window, somehow inside a grille or glass pane. This change will make it so someone who wishes to destroy areas must actually first defeat the theoretically first line of defense (poddoors). Shutters now actually have a noticeably different purpose to blast doors. They are still not meant to be anything but reinforcement to existing barriers. This will help encourage their usage over blast doors.

* moves blast doors and shutters to a layer above windows and doors and changes shutters cost and build time

Co-authored-by: MacBlaze1 <33578623+MacBlaze1@users.noreply.github.com>
2022-02-06 20:31:41 +00:00
SkyratBot
1f4a9ace0b [MIRROR] Blacklists all non-basic radios from the Radio Glove crafting recipe [MDB IGNORE] (#11316)
* Blacklists all non-basic radios from the Radio Glove crafting recipe (#64641)

Some possibilities without this change were:

    Erasing encryption keys
    Erasing sec ear-protecting headsets
    Erasing intercoms

Makes it so this doesn't happen anymore.

* Blacklists all non-basic radios from the Radio Glove crafting recipe

Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
2022-02-06 20:28:20 +00:00
SkyratBot
eca3c708cd [MIRROR] fixes mod core recipes [MDB IGNORE] (#11288)
* fixes mod core recipes (#64654)

They were the same typepath which overrode each other. That's fixed now.

* fixes mod core recipes

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2022-02-05 17:59:02 +00:00
SkyratBot
cedbcbeea8 [MIRROR] Brimdemons [MDB IGNORE] (#11236)
* Brimdemons (#64592)

Adds brimdemons, these are lavaland creatures firing blood lasers at their enemies.
Brimdemons drop brimdust, which can be used as a botany reagent (it heals the plant, removes weeds and pests and increases potency), and also to craft ore sensors, which are basically primitive ore scanners, on your ears.
Adds tropical lobstrosities to lavaland and removes them from xenobiology, also gives them a crusher trophy that staggers enemies for 3 seconds.

* Brimdemons

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2022-02-02 21:06:18 +00:00
SkyratBot
7f5e526bb1 [MIRROR] Refactors and fixes sound_player [MDB IGNORE] (#11198)
* Refactors and fixes sound_player (#64443)

idk if this is considered a refactor since its not creating a new component, so remove my refactor label if you believe so.

Overhauls how sound_player works, and makes it actually work.

* Refactors and fixes sound_player

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2022-01-31 23:24:59 -05:00
SkyratBot
da527e22cd [MIRROR] Refactor incapacitated optional arguments [MDB IGNORE] (#11167)
* Refactor incapacitated optional arguments

* Refactor incapacitated optional arguments

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-01-31 11:29:36 +00:00
SkyratBot
b5f186508e [MIRROR] Re-adds species uplink items (and some minor fixes) [MDB IGNORE] (#11165)
* Re-adds species uplink items (and some minor fixes) (#64460)

* Re-adds species uplink items (and some minor fixes)

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2022-01-31 11:09:22 +00:00
SkyratBot
26de81a8c1 [MIRROR] Removes useless status effect path defines. [MDB IGNORE] (#11143)
* Removes useless status effect path defines.

* Removes useless status effect path defines.

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-01-30 15:56:13 +00:00
SkyratBot
16932bd577 [MIRROR] Fixes Thermite overlay not deleting properly + thermite component documentation [MDB IGNORE] (#11085)
* Fixes Thermite overlay not deleting properly + thermite component (#64419)

documentation
Fixes the thermite burning overlay not deleting if parent was qdel'd.
Also, adds documentation to the thermite component

* Fixes Thermite overlay not deleting properly + thermite component documentation

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
2022-01-29 03:10:20 +00:00
SkyratBot
d5d972cb75 [MIRROR] Bot code improvement - Honkbots [MDB IGNORE] (#10967)
* Bot code improvement - Honkbots

* 0

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-01-27 02:49:25 +00:00
SkyratBot
4162651bd3 [MIRROR] Correct Radiation Comment [MDB IGNORE] (#10993)
* remove incorrect radiation comment (#64369)

* Correct Radiation Comment

Co-authored-by: blessedmulligan <30278162+blessedmulligan@users.noreply.github.com>
2022-01-25 17:51:19 -05:00
SkyratBot
61f262869f [MIRROR] Updates items held by boots and clown shoes. [MDB IGNORE] (#10970)
* Adds items that boots and clown shoes can hold.(#64056)

Adds items that boots and clown shoes can hold.

* Updates items held by boots and clown shoes.

Co-authored-by: Yung-Foot-Lettuce <73044077+Yung-Foot-Lettuce@users.noreply.github.com>
2022-01-24 20:31:26 +00:00
SkyratBot
f444c5038b [MIRROR] Semkis and Pistachios! Come get your snacks + Snack Items Name Fixes [MDB IGNORE] (#10956)
* Semkis and Pistachios! Come get your snacks + Snack Items Name Fixes (#64276)

Snack time

* Semkis and Pistachios! Come get your snacks + Snack Items Name Fixes

* Fix (#10960)

Co-authored-by: ErdinyoBarboza <erdinyobarboza@gmail.com>
2022-01-24 13:33:13 -05:00
SkyratBot
1e58dd6b94 [MIRROR] Heirlooms now reveal themselves on examine regardless of role, status or ownership. [MDB IGNORE] (#10925)
* Heirlooms now reveal themselves on examine regardless of role, status or ownership. (#64310)

* Heirlooms now reveal themselves on examine regardless of role, status or ownership.

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
2022-01-23 05:32:17 -05:00
SkyratBot
06fb73a84f [MIRROR] Adds documentation the tippable component [MDB IGNORE] (#10916)
* Adds documentation the tippable component (#64312)

I forgot to add this in my PR.. sorry :)

* Adds documentation the tippable component

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
2022-01-23 01:56:23 -05:00
SkyratBot
410f25af10 [MIRROR] Bamboo Overhaul (Port of Beestation Hornet #5703) [MDB IGNORE] (#10884)
* Bamboo Overhaul (Port of Beestation Hornet #5703)

* Update code/__DEFINES/icon_smoothing.dm

Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>

Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-01-22 19:09:39 -05:00
SkyratBot
417f544543 [MIRROR] Allows cyborgs to quicken their self untip time with roleplay [MDB IGNORE] (#10887)
* Allows cyborgs to quicken their self untip time with roleplay (#64228)

(halves their untip timer when they emote, only works once)

* Allows cyborgs to quicken their self untip time with roleplay

* E

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-01-22 05:04:08 +00:00
SkyratBot
0f28349599 [MIRROR] drone fix (speedmerge?) [MDB IGNORE] (#10870)
* drone fix (speedmerge?) (#64275)

* makes shy component for drones use Adjacent() instead of DirectAccess()

* drone fix (speedmerge?)

Co-authored-by: DragonTrance <dylan661993@gmail.com>
2022-01-21 11:00:44 +00:00
SkyratBot
35026d269f [MIRROR] Boomerang behavior is now defined as a component. [MDB IGNORE] (#10868)
* Boomerang behavior is now defined as a component. (#63949)

Fully refactors boomerang behavior to work as a component, so that a thrown boomerang will return back to it's thrower if within range. More than anything this modularizes the behavior for the backend,

* Boomerang behavior is now defined as a component.

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2022-01-21 10:19:46 +00:00
SkyratBot
015020189b [MIRROR] Fixes funky magic item teleportation [MDB IGNORE] (#10865)
* Fixes funky magic item teleportation (#64263)

Space drifting "listened" for moves outside of its expected range, and if it saw them it would self delete
The problem is it registered for this behavior in drifting_start(), which was intended to be called by the MOVELOOP_START signal

But because that signal was fired as a consequence of move() being called, we never registered the signal
So if you took an item out of your pack, when it hit the ground it would get the drifting component
Next tick it would be drift moved to its intended location, the move would "fail", and then it would stop
This lead to items being visually in your inventory, but not functionally
Which leads to a lot of really weird behavior

Oh and I added a var to moveloops that's just "are we running" to make solving this class of issue easier

* Fixes funky magic item teleportation

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2022-01-21 10:12:38 +00:00
SkyratBot
0cc6e5367c [MIRROR] Adds logging to the tippable component [MDB IGNORE] (#10855)
* Adds logging to the tippable component (#64210)

* Adds logging to the tippable component
Headmin wanted it. Logs the tippable component if the tippable mob has
an active client (we don't want to log medbot flipping).

* better logging

* Adds logging to the tippable component

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
2022-01-21 00:57:10 +00:00
SkyratBot
19a08588d3 [MIRROR] Fixes aiming at the click catcher making you shoot up and right of your target. [MDB IGNORE] (#10831)
* Fixes aiming at the click catcher. (#64147)

My PR to fix pixel aiming broke aiming when you were aiming at obscured turfs.
The click catcher was properly modifying the click target to be the turf under the click location,
but it was passing the `ICON_X` and `ICON_Y` variables on unmodified.
This means that instead of being measured from the bottom left corner of the turf you clicked on they were being measured from
roughly the bottom left corner of your screen.

This makes the click relevant click parsing proc also update the ICON_X and ICON_Y values of the click modifiers.

* Fixes aiming at the click catcher making you shoot up and right of your target.

* Update fullauto.dm

Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-01-20 03:39:10 +00:00
SkyratBot
14aafb6399 [MIRROR] Drinking root beer increases your fire-rate; Adds root beer [MDB IGNORE] (#10801)
* Drinking root beer increases your fire-rate; Adds root beer

* Drinking root beer increases your fire-rate; Adds root beer

Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-01-20 03:25:07 +00:00
SkyratBot
91120b7de0 [MIRROR] Slightly* buffs Maint Drones [MDB IGNORE] (#10814)
* Slightly* buffs Maint Drones (#64150)

    Increases drone health from 30 to 45, making it harder to instantly die from some things
    Lowers the range that drones can't do interactions from 4 tiles to 3 tiles
    Lowers stun time from 10 seconds to 7 seconds when EMP'd
    Wait time for when a mob has recently interacted with something has been decreased from 5 minutes to 1 minute
    Drones can now build near dead mobs, but not interact when right next to them (to prevent pulling)

Also adds a new argument for the shy component that allows interacting near dead bodies, but not right on top of them
Why It's Good For The Game

This is mainly for the QOL of Drones. I know "maint" is implied in the name of drones, but it sucks that you have to hide in maint for half the shift while all the airlocks are being opened by everyone, being unable to fix the station from explosions. Also even though the range was 4 tiles for interacting next to living mobs, it seemed a bit excessive when you tried to do stuff.
Changelog

cl
balance: Maintenance Drone health changed from 30 to 45
balance: Maintenance Drone stun times from getting EMP'd reduced from 10 seconds to 7 seconds
qol: Maintenance Drones can now interact near dead bodies
qol: Maintenance Drones don't have to wait 5 minutes to open an airlock when someone recently did it. Now they have to wait 1 minute.
qol: Changed distance Maintenance Drones aren't allowed to interact with anything from a nearby mob from 4 tiles to 3 tiles
/cl

* Slightly* buffs Maint Drones

Co-authored-by: DragonTrance <dylan661993@gmail.com>
2022-01-19 01:27:48 +00:00
SkyratBot
0acc853c91 [MIRROR] Adds a movement looping system, replaces inbuild procs and spacedrift with it [MDB IGNORE] (#10749)
* Adds a movement looping system, replaces inbuild procs and spacedrift with it (#62567)

* Adds a subsystem to handle automated directional movement, replaces all instances of walk_towards with it. Makes meteors and immovable rods not drift in space, and makes immovable rods more destructive. Note, I've opted not to use byond's method of moving towards something, which is effectively Move(src, get_step(src, get_dir(src, target))) as it's cringe and doesn't make a smooth line. I've replaced it with a autoupdating rise over run setup, read the code for more details

* woop forgot the subsystem

* Documentation, contributing.md entry, and some cleanup

* Makes the moveloop datum more oop friendly, sets us up for a lot of conversions

* Converts the curseblob and walk_away() to the subsystem

* Changes the default for override from FALSE to TRUE

* converts walk() over, still need to add a replacement proc for it, but we didn't actually have anything that used the raw proc

* converts the rest of walk_to() over, nearing the end now

* cleans up some errors

* Fully documents everything, fills in some missing movement types, uses the power of oop to make things cleaner, and typepaths longer

* Finishes the contributing.md stuff

* Done

* Fefaults -> Defaults, can you tell I wrote this at 1AM?

* resolves bubblegum issues

* Roh's suggestions

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

* Cleanup

* Hey lemon, did you know that Destroy() lives on datums? ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

* Converts over the discrepencies created in my absense

* HAHA FUCK YOU I PAY MY DUES

* Whoops lost some stuff in the merge

* Converts the system from seconds to deciseconds to make dealing with the api more sane

* Some stuff I missed

* Makes movement an inheritable subsystem type, splits the moveloop file into two, one for the subsystem, and one for the datums

* Makes a subsystem that handles directing movers out to other subsystems. It's a bit bad right now, but it's a
good first step. I think I'll move the move loop datum to a lazy var on mobs instead of an assoc list, don't
like lists.

Also makes the movement procs global, I'll move em to the /movement subsystem at some point or something like
that

* Converts the existing uses of the procs over to the new format

* Adds support for subsystem precedence, so a type of A can override type B.
General cleanup, still kinda in debug mode but it's getting better

* I'll admit I'm not too familiar with this, but I think it will work

* Adds starting logic so movement types "pausing" makes any sense
Redoes how waiting is handled to make it based on world.time directly. I don't remember why. I think it's better
this way.

Adds a drifting movement type, moves space drift over to it.
Needs severe work before it's ready, too much info stored and modified on the moving object, see comment
Starts work on making drifting smooth

* Moves almost all space drifting vars over to signals on the movement datum
Properly implements glide size stuff for both the subsystem and the loops. Space drift will be smoother now.
It's not perfect, but it'll work just fine for now

Adds a way to override a client'd mob's glide size mid move, uses it to make entering a spacedrift look right
Adds a way to delay a client move outside of just move_delay, meant to be used for long periods, and setup such
that it doesn't make inputs persist

Adds flags to movement loops, alongside MOVELOOP_OVERRIDE_CLIENT_CONTROL, which blocks client movements while
the loop is firing, and for it's visual delay after

This means you can't exit a space drift until you hit the actual wall. This feels a lot better

Some general logic stuff, move() will return true/false if it succeeded or failed
Adds a stop_loop() proc that's called when a move loop is no longer active

Suck my nuts

* Moves precedence to the loop instead of the subsystem

* Moves drifting into a component, this lets me explictly block input after the move loop ends, so people can't
move the moment they functionally move onto a new tile
This is a bit underdeveloped currently, but that's a problem for another day

Cleans up some uses of move procs, fixes runtimes in metoer and curseblob code
Adds signals for stopping/starting a move loop, sending one for destroy is redundant.
Moves existing event signals from the movable being acted on to the loop itself, makes more sense this way
Makes the move handler return the created loop up the chain so we can register to it
Fixes a logic error in loop contesting code that lead to loops never actually being removed from subsystems
because they didn't know they should be.
Properly changes lifetime from a time to stop, to functionally an amount of moves to complete before stopping
Adds some new signals for pre/post loop process. This is to better tie into components.

I decided I didn't like the idea of tying all functionality to the loops themselves
The loop decides functionally how to move, components or just tied in signals can decide when/when not to move
and can modify properties of the loop

Making a new loop for things like atmos drift, something I'm interested in tackling in the future, seemed silly

* Moves movement procs directly to the subsystem for better namespacing or whatever

* Moves movement packets onto /atom/movable, no longer need the debugging
I've decided to not just put their contents fully onto atom movable, since it makes debugging on live much
harder, can't sdql for them anymore.

Fixes a runtime in meteor code, properly this time
Fixes a logic error in stop_looping
Makes move manager NO_INIT, because well, it doesn't init

* Commits human sin, makes Recover() work properly for movement subsystems

* Fixes immovable rod orbits not always working, they were returning too early in moved and fucking up the var we use to track move count, and thus not sending a signal properly

* Reworks the curseblob to use signals more, and to not use override

* Missed this in the movement ss commit

* Removes override, makes having a higher or equal precedence take its place

* Updates documentation

* Cleans up some unused defines

* Nukes the unused flags option

* Whoops forgot to qdel check

* Removes an unused var I had for client move prevention before I started using a component

* Let's do this properly

* Modernizes meteor code to better match how explosions actually work currently

* Some more cleanup

* Cleans up effect code a little bit
Nukes the effect system's sleep loop, we use movement loops instead
As a part of that, instead of 1 timer per effect spawned, we react to loop failure and make it 1 timer per
effect system
This should reduce the amoumt of slowdown we see after mass lighting break

It's not everything, we're still making a timer per spark effect, but it cuts things down significantly

* Updates explosions to not sleep

* Adds support for modifying a loops delay post process, makes extinguisher code suck less then it does currently, nukes some more sleeps and timer loops

* Converts water tank resin over to move loops rather then sleeps, minor behavior change mind, the cooldown starts on fire rather then on land, but I think that makes more sense anyway

* compile and runtime fix

* Fixes some runtimes, cleans up some code, ensures feature parity when it comes to logging

* Prevents resin foam from space drifting

* Adds support for flags back into the system, I need it for reasons

* Updates move_towards to fix some bugs and resolve some inconsistent behavior, implements a flag that makes a loop's first move start instantly

* Fixes extinguishers not actually transfering any reagents

* Converts sprays to the new system. This does actually minorly change behavior, in that I've changed the order of spray actions from step -> sleep -> wash to step -> wash -> sleep, but I'm not terribly torn up about it because frankly I think it feels better

* Converts grav catapults over to the new system

* Converts trays over to moveloops

* Converts robot streaking to move loops, the other two coming soon

* Compile you won't. Also fixes a behavior issue with oil streaks

* Does directional step_to properly, cleans up the other two streaking types

* Converts step_trigger over, not that it's actually used anywhere. Changes how stoping a move works, you need to explicitly qdel, other the step is just considered to be ignored. This will make life easier later

* Adds a jps movement loop. It's a bit bloaty, id is stupid, but it'll work just fine

* Makes the system support passing in a datum that's just used as extra context for the move. The hope is this makes signalizing things less of an absolute headache

* Begins the conversion of ai movement datums to movement loops

* These two are reasonably simple, only weird thing I'm doing is A: Not allowing target hotswapping, which I hope none is doing, and B: passing the controller into the move loop as extra context so things work properly

* JPS is a bit more complex, partially because the old implementation was a bit weird. 2 major things. 1: I'm dropping what I think was a redundant behavior minimum distance check from the premove bit of logic, since I'm pretty sure it didn't do anything. 2, instead of just stoping the step in an error state like being pulled, we count it against our max move total

* Audit

* Moves most forced movement to the framework, adds some components to make things nicer

* Implements a flag that makes the loop always operate, regardless of precedence and without impacting any other loops

* Moves movement subsystems into the right folder

* Hey potato what if you had two procs that did the same thing and one called the other? Wow it's useless

* Merges slipping and force movement

* Converys conveyors over to the system. It's a bit fragile, but I think it's totally worth it to save the sleep loop

* Precedence -> Priority, cleans up some logic errors, makes priority highest to lowest instead of lowest to highest, straight cleans some code up

* Makes poly and bubbles ignore spacedrift, now that precedence actually functions properly. I'm likely missing cases of this, will deal with it later

* Depression, thy name is linter

* Fixes linter, and hopefully fixes the runtimes in ci too

* Wew

* Sets sprays and extinguishers back to legacy, since people do actually seem to have noticed

* Spelling errors my beloved

Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>

* More detail, moves return descriptions

* Converts transit tubes to the system?

* Adds the glide size modifier. Not honestly sure that this should be default, considering how crummy it makes things look for normal walking, but it's useful as hell here

* Adds a force move in dir template, actual support for fast initial steps (wtf old me) and a helper proc for setting delay

* Cleans up displosal code a bit, I thought about adding it to the system but it would functionally be just 'disposal loops'. Maybe I'll make a template subtype? not sure how I want to handle stuff like this

* Cleans up mob movement a bit

* Let's use the controller's visual delay

* Makes the resin thrower nicer, cries

* Cleans up some comments, replaces an implicit world.icon_size with an explicit one, fixes up a typecheck

* typecache instead of double istype. Can't do much about the !atom/movable, list would be too big I feel

* hhh

* bro wtf

* Documents the why of SS_TICKER

* Puts SSmovement on SS_TICKER. Lets us support tick steps

* Cleans up the charge action. Makes it use moveloops

* Fixes CI? kinda worried that this just got dropped

* Converts disposal pipes to move loops. They stutter a bit more then usual as of now, hoping that's a me thing, if it's not I'ma look at uping the priority of the base subsystem

* Moves the move subsystems off background, puts some on ssticker

* Prevents some things that shouldn't move in space from moving in space

* Documents the general form and usage of the system

* Virgin one vs chad once

Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>

* Removes unneeded check

* Moves appropriate movement subsystems into SS_BACKGROUND. Removes redundant SS_KEEP_TIMINGs

I do want the behavior of SS_TICKER, which at this point is tick based waits, and ignoring overtime when
calculating next fire.
Since honestly, these subsystems should ignore overtime in regards to next fire, the cost of moving A may be
nothing compared to the cost of moving B.

* Makes the MODULUS macro use floor. I knew our coders would never let me down, glad this exists, thanks ninja
Fixes teleporting caused by shitty round() behavior, adds a "you hit your target" case to homing loops

* Converts blood splatters to move loops, that'll do it

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

* Adds a movement looping system, replaces inbuild procs and spacedrift with it

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Rohesie <rohesie@ gmail.com>
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
2022-01-18 00:54:06 +00:00
SkyratBot
daa38fcf62 [MIRROR] Deletes the tippable's untip timer if someone untips you ahead of time [MDB IGNORE] (#10788)
* Deletes the tippable's untip timer if someone untips you ahead of time (#64168)

* Deletes the tippable's untip timer if someone untips you ahead of time

* Deletes the tippable's untip timer if someone untips you ahead of time

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2022-01-17 23:58:42 +00:00
SkyratBot
a41461c029 [MIRROR] Makes tipping borgs use SECONDARY attack cancel chain [MDB IGNORE] (#10786)
* Makes tipping borgs use SECONDARY attack cancel chain (#64165)

* Tippable returns SECONDARY attack cancel chain

* adds an after_righted proc for silicons to help with downstreams

* Makes tipping borgs use SECONDARY attack cancel chain

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2022-01-17 23:56:00 +00:00
SkyratBot
1856360aca [MIRROR] You can now tip borgs over [MDB IGNORE] (#10740)
* You can now tip borgs over (#64097)

I hate Silicon

Teaches Silicon that they should still live within the Crew rather than above them, otherwise people will tip you over and no one would want to help tip you back up.

The timers also, for the most part, match handcuff timers, so there's already a human counterpart of this. Even if it wasn't intentional.
Changelog

cl JohnFulpWillard and theOOZ
qol: Tipping mobs over all runs on right click, rather than running on both right and left click.
balance: You can now tip Borgs over.
/cl

* You can now tip borgs over

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-01-16 22:47:49 +00:00
SkyratBot
5910fd9649 [MIRROR] MOD update: Modular Cores [MDB IGNORE] (#10710)
* MOD update: Modular Cores

* Fixing all dem conflicts

* Okay now it's going to compile too

* Fixing some Trigger() (they triggered me)

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-01-16 15:25:41 -05:00
SkyratBot
8bd1e020a0 [MIRROR] Time Eradication Modsuits [MDB IGNORE] (#10682)
* Time Eradication Modsuits

* I hate having to do this to be able to update

* Fixing the conflicts (and a few more that snuck in)

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-01-16 13:32:31 -05:00
SkyratBot
5dbc65952f [MIRROR] Fixes null rod carp plushie [MDB IGNORE] (#10677)
* Fixes null rod carp plushie (#64038)

* Fixes null rod carp plushie

Co-authored-by: Bond <58570888+TheBonded@users.noreply.github.com>
2022-01-13 18:04:36 -05:00
SkyratBot
65b8082678 [MIRROR] Harddel Fix Pack #42 + Better Live Reftracking Support [MDB IGNORE] (#10639)
* Harddel Fix Pack #42 + Better Live Reftracking Support

* awooga

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-01-12 21:57:49 +00:00
SkyratBot
cdeaeac44c [MIRROR] Fixes opening storage containers in a locker (or other container) via right click. [MDB IGNORE] (#10579)
* Fixes opening storage containers in a locker (or other container) via right click. (#63955)

* fix

* cleanup

* review

* Fixes opening storage containers in a locker (or other container) via right click.

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
2022-01-12 15:16:02 +00:00
SkyratBot
c33061765b [MIRROR] [MDB IGNORE] BIDDLE TRAITORS - Adds progression traitors. Refactors uplink code in its entirety [MDB IGNORE] (#10620)
* [MDB IGNORE] BIDDLE TRAITORS - Adds progression traitors. Refactors uplink code in its entirety

* updates and fixes

* ffff

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-01-12 03:25:38 +00:00
SkyratBot
d8619e52d2 [MIRROR] Refactors pricetag component: no getcomponent, no ugly signals, fixes cubes a bit [MDB IGNORE] (#10613)
* Refactors pricetag component: no getcomponent, no ugly signals, fixes cubes a bit (#63954)

Refactors the pricetag component
Removes a getcomponent for the pricetag component in cube export handling (replaced with inherit component behavior)
Removes some nasty signals which were effectively just send signal, get 1
Deletes the internal radio within bounty cubes from before exporting
Disallows bounty cubes from being barcoded with TRAIT_NO_BARCODES
Prevents bounty cube pricetag component from being deleted by unwrapping
Closes #63921 technically

* Refactors pricetag component: no getcomponent, no ugly signals, fixes cubes a bit

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-01-12 02:23:42 +00:00
SkyratBot
90fb7f739b [MIRROR] Fixes connect_range to work from the get-go [MDB IGNORE] (#10573)
* Fixes connect_range to work from the get-go (#63933)

* Fixes connect_range to work from the get-go

Co-authored-by: Tastyfish <crazychris32@gmail.com>
2022-01-10 18:33:57 +00:00
SkyratBot
01080dfe0a [MIRROR] Makes sure COMSIG_ATOM_EX_ACT is always called. [MDB IGNORE] (#10498)
* Makes sure COMSIG_ATOM_EX_ACT is always called. (#63685)

Creates a wrapper macro for ex_act() and moves the signal and contents explosion calls to there. This way we can ensure the signal is always fired. Also desnowflakes reagents responding to explosions.

Ensures that a signal is always called when the attendant proc is called.

* Makes sure COMSIG_ATOM_EX_ACT is always called.

Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
2022-01-07 15:23:12 -05:00