* Layer overhaul (#57915)
## About The Pull Request
Changes up some layer and plane defines for no particular reason lol
## Why It's Good For The Game
Planes actually override layers, and layers control ordering within planes. A lot of the usage of plane and layer was wholly unnecessary. This refactor helps future maintainability while also being needed staging for _future features._
* Layer overhaul
* aaaaaaaaa
a
Co-authored-by: Rob Bailey <actioninja@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Highlander + Summon Guns and Magic now uses signals to equip new crewmembers (#57817)
* Highlander + Summon Guns and Magic now uses signals to equip new crewmembers
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Observers can now use emojis at the start of messages without the risk of triggering admin commands. (#57433)
Added a client.holder check to the line about radio extensions for admin chat and deadchat commands. It means common observers can finally spam dchat with plushie emoji. Admin observers still have to deadmin before using emojis safely, until someone takes the time to refactor saycode mods so these admin commands only acept the comma prefix (luckily, observer/get_message_mods() doesn't trim the message).
* Non-admin observers can now use emoji that start with d or p at the beginning of a message without admin command warnings.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Partial revert of datum poll creation, fixes duplicated irv votes (#57462)
* Partial revert of datum poll creation + stops duplicated votes from being trusted from clients
Reverts the part of jordies poll refactor that allowed a duplicated vote in the db to make it back on the client's vote screen.
Also fixes the code that would allowed duplicated votes to be passed from the client. (not from jordie's poll refactor pr.)
The race condition still exists, thats harder to fix, counting code handles this correctly
* Update poll.dm
* Update poll.dm
* Partial revert of datum poll creation, fixes duplicated irv votes
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Allows ghosts to start messages with asterisks in deadchat again (#57159)
#56519 had noble goals in trying to make emote code more robust for
ghosts, but in doing so it undid #47144, which was made to allow people
to start messages with asterisks in deadchat without getting hassled by
the game thinking you're emoting. This re-limits the emote checker to
the only two emotes ghosts have ever had, *spin and *flip.
* Allows ghosts to start messages with asterisks in deadchat again
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* New flight potion wing sprites for moths (#56412)
Wing sprites are courtesy of Papaporo Paprito over on Fulpstation!
This PR adds a second sprite for flight potion wings for moths.
A new system is implemented to make this possible, using radial menus.
* New flight potion wing sprites for moths
* Update species.dm
Co-authored-by: Jack7D1 <59462654+Jack7D1@users.noreply.github.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* You no longer need to hold shift to open the context menu as a ghost (#56646)
* You no longer need to hold shift to open the context menu as a ghost
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Fixes emote runtime / changes how emotes work for ghosts (#56519)
* Fixes / refactors emotes
Crack emote no longer runtimes
Ghosts can use help emote
Exhale / inhale emote only work for living
Move beep emote living subtype
Help emote no longer tells you that you can't use it
* Remove var in arguments
Lint
* Replace loop with join
* Fixes emote runtime / changes how emotes work for ghosts
Co-authored-by: Gamer025 <33846895+Gamer025@users.noreply.github.com>
* Adds in the comet hairstyle. (#56217)
## About The Pull Request
This PR adds in the new "Comet" hairstyle. A bit anime-ish.
[Example](https://i.imgur.com/e5Xg9It.png)
## Why It's Good For The Game
New hairstyles are good, and so far i've recieved positive feedback on this one.
* Adds in the comet hairstyle.
Co-authored-by: CRITAWAKETS <sebastienracicot@hotmail.com>
* Fixes and refactors death examine code (#55907)
Examine death bodies should now display the correct text
Changed the logic so that the message tells you if the players is:
- Still in his body (`[t_He] [t_is] limp and unresponsive; there are no signs of life...`) or
- A ghost that could enter the body again (`[t_He] [t_is] limp and unresponsive; there are no signs of life and [t_his] soul has departed, but the link is not yet fully broken...`) or
- No ghost, that can reenter the body and no key (`[t_He] [t_is] limp and unresponsive; there are no signs of life and [t_his] soul has lost the will to live...`)
Also refactored the code a bit:
- Moved the death examine message generation to a proc so that you can work with returns
- Removed pushed_do_not_resuscitate since its not needed this way
* Fixes and refactors death examine code
Co-authored-by: Gamer025 <33846895+Gamer025@users.noreply.github.com>
* Specifies if DNR was pushed in body examine text (#55399)
Adds the examine text " and [t_his] soul has lost the will to live..." instead of the usual "soul departed" message if the person hits DNR.
* Specifies if DNR was pushed in body examine text
Co-authored-by: Emmanuel S <mrdoomboyo@gmail.com>
* Fixes GC for observers and new players, and tons of loose references to stuff that shouldnt be (#55563)
I've done this on a signal because atom_hud is applied very loosely in some contexes, and the objects themselves dont have an easy way to track back into what huds they're affected by, so this seemed the best. Properly cleans up next_time_allowed, which was missing.
Update: I discovered this is also an issue for a lot of simple mobs, such as slimes and bots and such. So fixing this is huge
* Fixes GC for observers and new players, and tons of loose references to stuff that shouldnt be
Co-authored-by: Azarak <azarak10@gmail.com>
* Delete extra copy_to (#54912)
Extra call to client.prefs.copy_to caused all characters to be set up as if they had latejoined, whether or not they had. Since no points are awarded for latejoining as hardcore random, no hardcore random characters received points.
Co-authored-by: UnderARock <UnderARock@ notarealemail.com>
(Lemons note: Due to a missed change in #50558, it was open at around the same time as floyds hardcore pr, I'd bet they got merged at about the same time, and were improperly merged. Good catch.)
* Fixes roundstart hardcore random characters not receiving points for survival.
Co-authored-by: UnderAGeode <37090242+UnderAGeode@users.noreply.github.com>
* Converts A && A.B into A?.B (#54342)
Implements the ?. operator, replacing code like A && A.B with A?.B
BYOND Ref:
When reading A?.B, it's equivalent to A && A.B except that A is only evaluated once, even if it's a complex expression like a proc call.
* Converts all A && A.B into A?.B
Co-authored-by: ZeWaka <zewakagamer@gmail.com>
* Temporal Scarring is now per-character-slot, changelings now fake scars when disguising (#54311)
* Temporal Scarring is now per-character-slot, changelings now fake scars when disguising
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Enforce preserving parent proc return values across ui_act call stacks (#53964)
All ui_act procs should call parent by default. All procs should preserve the value of the parent proc when it's TRUTHY and pass it down the call stack. No UI should be interactible when its flags or state indicate it should not be, except when explicity overriden by child procs intentionally disregarding parent return values to achieve a specific goal.
* Enforce preserving parent proc return values across ui_act call stacks
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>