* Fixes timers being left around, Makes addtimer() sanic fast.
This adds a new flag, TIMER_STOPPABLE. Most(80%) of the overhead for addtimer() was in adding the timer to the associated lookup list for deltimer() to use. Moving that functionality to a flag so it wouldn't slow down the 70% of things calling timers puts the final nail in the coffin of byond's sleep/spawn().
spawn: 324 seconds across 5,948,372 calls
addtimer: 67 seconds across 5,953,220 calls
The testing setup for profiling was included in this commit, it will be removed in a later commit. @Fox-McCloud
* Remove profiling procs.
* fix runtime
luckly when this happened, we were about to resume anyways.
🆑 coiax
bugfix: Blue circuit floors are now restored to their normal colour if
an AI doomsday device is disabled.
/🆑
Put a nuke tracker on SSmapping, because we need a tiny bit of state to
track this, in case you have two concurrent things running.
Previously, if you pressed Start Now while the server was still
initialising, it would complain, and you'd have to wait until the lobby
was ready.
Now pressing it will have the server start as soon as able.
Uses: debugging qol.
* SSthrowing + callbacks!
Throwing is now a subsystem.
It's low priority, but is a ticker subsystem so is ran before most other subsystems.
To allow for shit to run after the throw finishes, throwing now supports a callback.
A callback datum system was created, conversion of addtimer is planned for another PR.
Throwing now has a limit of 2048 turfs (was 600)
Throwing now ticks every world.tick, and properly converts the speed arg from 1ds to what ever tick_lag is.
Throwing now properly accounts for missed ticks.
Throwing no longer uses sleep.
Throwing should no longer lag since it's not filling the sleep queue up
* Smoother tentacles
* Some improvements
* Missed a spot.
* Makes shit quicker.
Inlines the thrownthing.tick() proc.
Raises missed ticks value
Lowers max dist value
Inlines the two sister overrides for /atom/movable/Moved() because that just seemed like a waste
* >PRs open that use procs i'm removing.
* STOP THE PRESSES!
* throw_at now runs the first throw tick() immediately
This will help some with throwing while running.
* Item throwing now imparts the momentum of the user throwing.
(ie, running in the direction you are throwing makes you throw faster, running away from the direction you are throwing makes you throw the item slower)
* Moves throwing momentum from carbon/throw_item to movable/throw_at.
There are other things that cause a mob to "throw" an item, I figured we keep this universal since thrower is already an arg.
* Explosions throw shit faster.
This was stupid, "Hey, lets set the item's throw_speed to 4 so embedding works, but lets make it throw at the base 2 throw speed for no reason."
* Fixes explosion embedding.
This also acts as a nice example of how to override a callback in an override of throw_at properly.
* Ports Space Parallax from vg/yogs
* KILL ME
* fuck shit
* fixes
* rgfkbjhkefrhjkfrejhkfds
* Parallax, part 2.
* Gotta get these defines in before remie notices!
* DAMN IT! SHE FOUND ONE!
* fixes orbits
* fix orbits take 2
* Fixes some things with parallax
* Refactors parallax shuttle animations.
* Adds the twitterize proc, which takes a list of strings and turns it into a plaintext newline seperated list of 140 or less quips.
* makes the nonfunctional code less nonfunctional, but still not completely functional
* Almost functional!
* We've reached theoretical functionality!
* Added a Syndicate dock for the Emergency Shuttle
* Removes window from doorway to syndicate base
* Diverts shuttle if the hijack conditions are met
* Fixes incorrect define
* Shuttle needs people on it to hijack
* Redoes the syndicate base extension
* Centcom always lies
This is usually caused by logic in destroys that lead to the object
being qdeleted again.
This can cause nasty recursive loops, so an exception (with a stack
trace) will prevent recursive stack crashes and also let devs chase the
runtimes
* Speeds up world init.
* Armor is now new inited for obj and the first level of subpaths.
* Actions is now lazyinited and deleted with empty.
* Actiontypes is now only inited when actually used and deleted once it pre-fills actions with the action buttons.
* Pipes now prefill their node list(s) in new() using new /list/ (count) syntax to speed up the list initaliztions and remove the init proc.
* Pipes no longer store their item version, instead creating it on the fly when deconned
* Walls no longer store their metal stacks, instead creating it on the fly when deconned.
* obj, walls, floor, plating, item, machinery, structure, pipe, pipenet, atom, and movable no longer have an (init) proc. (along with a few other smaller examples)
* Atmos can pass checking is now a var with the ability to have a proc be call in advance cases.
* (as a side effect, I had to fix a few things that were calling atmosCanPass rather then using the pre-calculated list, this should speed up chemfoam and flame effects greatly)
* Reverts upload limit
(remind me one day to defuck this, it could easily be a config thats not editable by vv to make changes easier)
* Makes apc update icon a bit faster.
APC new is some what high on the profile of world init, still not sure why, but this stood out as a waste of cpu so i fixed it.
* Fixes runtime with atmos backpack water tanks.
* Makes smoothing faster (and fixes turfs smoothing twice at init)
* Makes apcs init faster by replacing some spawns with addtimer
* fix transit turfs.