12 Commits

Author SHA1 Message Date
SkyratBot 067188d366 [MIRROR] Micro-optimize qdel by only permitting one parameter [MDB IGNORE] (#25889)
* Micro-optimize qdel by only permitting one parameter (#80628)

Productionizes #80615.

The core optimization is this:

```patch
-	var/hint = to_delete.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up.
+	var/hint = to_delete.Destroy(force) // Let our friend know they're about to get fucked up.
```

We avoid a heap allocation in the form of copying the args over to a new
list. A/B testing shows this results in 33% better overtime, and in a
real round shaving off a full second of self time and 0.4 seconds of
overtime--both of these would be doubled in the event this is merged as
the new proc was only being run 50% of the time.

* Micro-optimize qdel by only permitting one parameter

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-12-29 14:41:12 +00:00
SkyratBot 6dfe17306c [MIRROR] Pulls apart the vestiges of components still hanging onto signals [MDB IGNORE] (#21738)
* Pulls apart the vestiges of components still hanging onto signals

* update modular

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2023-06-18 13:18:23 +00:00
Zonespace f7c26bbf25 515 Compat (#17465)
* ONLY SKYRAT CHANGES

* ACTUALLY SKYRAT CHANGES

* yolo, revert later

* Update alternate_byond_versions.txt

Co-authored-by: AnturK <AnturK@users.noreply.github.com>
2022-11-15 06:59:06 +00:00
SkyratBot c6497e5680 [MIRROR] Fixes runtime errors that occur when mindless mobs examine heirlooms, + code improvements [MDB IGNORE] (#11459)
* Fixes runtime errors that occur when mindless mobs examine heirlooms, + code improvements (#64827)

Mindless mobs (such as observers without an initialized mind) examining family heirlooms would cause runtime errors due to the user.mind.has_antag_datum(...) line.

    Rearranges the examine proc to prevent runtimes from occurring due to mindless mobs examining heirlooms. Adds an observer check at the beginning, just for sanity sake, even though it doesn't matter functionally.
    Renamed the proc to on_examine for clarity
    Auto doc'd the proc + comments
    Handled a reference on Destroy

* Fixes runtime errors that occur when mindless mobs examine heirlooms, + code improvements

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-02-12 11:30:16 +00: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 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 e65a48e91f [MIRROR] Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking (#430)
* Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking (#52761)

Adds SIGNAL_HANDLER, a macro that sets SHOULD_NOT_SLEEP(TRUE). This should ideally be required on all new signal callbacks.

Adds BLOCKING_SIGNAL_HANDLER, a macro that does nothing except symbolize "this is an older signal that didn't necessitate a code rewrite". It should not be allowed for new work.

This comes from discussion around #52735, which yields by calling input, and (though it sets the return type beforehand) will not properly return the flag to prevent attack from slapping.

To fix 60% of the yielding cases, WrapAdminProcCall no longer waits for another admin's proc call to finish. I'm not an admin, so I don't know how many behinds this has saved, but if this is problematic for admins I can just make it so that it lets you do it anyway. I'm not sure what the point of this babysitting was anyway.

Requested by @optimumtact.
Changelog

cl
admin: Calling a proc while another admin is calling one will no longer wait for the first to finish. You will simply just have to call it again.
/cl

* Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking

Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
2020-08-19 20:17:28 -04:00
vuonojenmustaturska 8ddc9677c7 examine-code refactor (#44636)
* 1/4 done? maybe?

* more

* stuff

* incremental stuff

* stuff

* stuff & things

* mostly done but not yet

* stuffing

* stuffing 2: electric boogaloo

* Git Commit and the Kingdom of the Crystal Skull

* make it actually compile

* found more stuff

* fixes

* fix AI laws appearing out of order

* fix windows

* should be the remaining stuff

* this time for real

* i guess it should compile too

* fix sechuds
2019-06-19 22:07:57 +02:00
tralezab 46e3894bb2 Creep fluff completely rewritten (#42675)
* hang in there!

* Apply suggestions from code review - rewrite P1

Co-Authored-By: tralezab <40974010+tralezab@users.noreply.github.com>

* most creep > obsessed - rewrite P2

* removes creep_inlove, last edit to greet
2019-02-08 11:26:41 -05:00
Jack Edge 8a4f1e9081 Observers can tell if an object is a family heirloom on examine()
🆑 coiax
tweak: Observers are able to see family heirloom messages when examining
objects.
/🆑

I mean, it bugged me the once time that I suspected a random object was
an heirloom, but had to use VV to check.
2019-01-16 07:48:28 +00:00
tralezab 240cb31e12 [READY] New Side Antagonist: The Creep! (#42021)
cl
add: Added a new antagonist, the Creep!
add: Chosen from a random event, the Creep will become obsessed with one person, feeling amazing around them and terrible when they aren't. They will have objectives to steal heirlooms, take pictures, hug, and kill coworkers. They also have to kill the obsession but some objectives can only be completed while the obsession is alive, requiring you to protect the obsession!
/cl

There really is no reason to betray people, generally. Maybe some stuff with security and traitors working things out, but a traitor based around betrayal and the general insane creep idea is just cool.

One Creep can show up, and they get objectives to mess with their obsession leading to the obsession's death. Here is their objectives:

    A random creepy objective. It could be taking a photo with them in it, hugging them, etc
    After your are done with your objectives, kill them. you can't complete the objectives when they are dead!

Creeps do not get the determination mood. Instead, when they are around their obsession, they feel AMAZING! If they are around too long, they will stutter, cough, and generally spaghetti out when talking near their obsession. So if you are going to talk near them, do it when you aren't entranced.
2019-01-07 19:18:35 +13:00
coiax 40344ab093 Heirlooms have additional examine text, rather than being renamed (#41676)
cl coiax
add: Heirlooms are no longer named "Cherry family bag of dice", but
rather their heirloom status can be determined by the owner on examine.
/cl

Because names are inherent to an object when anyone looks at it, I feel
it can be somewhat confusing that you can tell that this screwdriver
is a precious family heirloom just because of its name, rather than
because of the significance that someone holds it.

Only the owner of the heirloom receives the special examine text; so I'm sure this could probably be used to bluff ownership of something non-standard, if and when heirlooms become more exotic.

Heirlooms still work in the same way though, mood bonus from holding, mood penalty if you don't have it.
2018-12-09 23:03:34 +13:00