Blob QoL: Orbit menu & Antag Info (#72195)
## About The Pull Request
Blob UI refactor that started from sorting blobs into their appropriate
orbit section.
Original issue:
Permanently hostile antags like blob can produce minions, but these lil
guys don't actually get an antag datum and thus don't get sorted into
the proper section in the orbit menu.
Now:
- Blob minions also go in "Biohazards" section of orbit UI
- Blob helper text is now an antag info UI
- Blobs get their own text span type instead of boring big chat
- Blob minions get actual objective: Protect the core
<details>
<summary>View the OUTDATED blob antag info screen:</summary>

</details>
## Why It's Good For The Game
Orbit menu will now properly sort player controlled blob minions into
the biohazard sections, making it easier to distinguish the bad guys
Blob antag info is a little easier to read, much more in line with the
other antags
## Changelog
🆑
fix: Blob minions are now sorted into biohazards in orbit UI.
add: Blobs now get antag info screens.
add: Blob minions get objectives (protect the core!).
add: Adds blob style text for victories, etc.
refactor: Refactors some blob & blob minion code.
/🆑
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
* Don't call afterattack() twice in the attack chain (#72617)
## About The Pull Request
It wasn't caused but went un-noticed in #72292 that `afterattack()` proc
was called twice towards the end of the attack chain. Just randomly
noticed this when browsing the code
## Changelog
🆑
fix: don't call after attack twice
/🆑
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Don't call afterattack() twice in the attack chain
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Removes double spaces in defines and removes some unused ones (#72466)
## About The Pull Request
1. Removes unused defines (DIAG_CIRCUIT_HUD, LIGHTING_BASE_MATRIX,
pda_styles and the defines it uses, MAFIA_MEDAL_CHARISMATIC &
MAFIA_MEDAL_VIP).
2. Removes double spaces (or tab->space & space->tab) from everywhere I
saw them in the defines folder (unless used by autodoc)
3. Removes the unecessary amount of tabs from lists in HubMigrator, this
PR was at first gonna be around achievements but this just bugged me,
which spiraled into this.
## Why It's Good For The Game
me when i spread my code standards onto the codebase i contribute to
this doesn't affect the game however it does make the defines look
cleaner and brings it up to date with our most recent standards.
## Changelog
not player-facing.
* Removes double spaces in defines and removes some unused ones
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
holoparasite types have improved code
admins can now give someone a holoparasite through a new menu in vv
dropdown
alt click holopara abilities were moved to right click (support's beacon
wasn't, but support's heal mode was)
holoparas have less hardcoded stuff so admins can edit them easier
holoparasites now get their light color from their guardian color
holoparasites no longer have the hostile faction, things will attack
them
holoparasites now have a damage overlay, so you can see how much your
summoner is damaged
holoparasite health updating is now event based rather than running on
life, so you'll see health changes everytime they happen, rather than
every 2 seconds
holoparasites fly properly again (they cant spacewalk, but count as
flying for stuff like chasms)
holoparasite creation now uses a radial menu with tooltips for each
subtype. it also shows ghosts which type you picked
holoparasites can no longer be fugu'd
adds support for ownerless holoparasites
fixes mildly related bugs along the way
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
* Rescale SM health from 900 to 100, UI improvements, visual changes. (#72252)
Rescaling because i saw someone think that the number on the supermatter
UI are actually the percent damage over time, which is wrong.
Added delta symbol to damage and energy since they actually denote
change, not the actual value.
Chose the numbers that look good instead of doing a 1:1 rescale of the
old one (i.e. im dividing or multiplying things by 10 instead of 9). In
practice this means I'm lowering the damage cap but increasing damage
over the board for atmos (since it's mostly divisors). Lowered the
damage overall for external stuffs.
A bit of modification on the filter helpers to suit my needs. Added
documentation because I'm awesome.
* Rescale SM health from 900 to 100, UI improvements, visual changes.
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
* replaces chaos holoparasite with gaseous holoparasite (#72049)
## About The Pull Request
replaces chaos holopara with the gaseous holopara (if someone has a
better name suggest it)
instead of the fire and hallucinations, it can now expel gas from
itself, flooding an area with one of the following:
o2, n2, n2o, co2, h2o, bz or plasma
its punches cause sparks and it regulates the user's temperature and
extinguishes them
https://streamable.com/leukv5
## Why It's Good For The Game
chaos holopara is very underwhelming, the hallucinations arent really
that good and ss13 fires arent either, also there was no real theme tied
around it, what do hallucinations and fire have in common?
this may be more fun and it plays more with the sandbox, lets see!
## Changelog
🆑 fikou
del: chaos holoparasite
add: gaseous holoparasite, it can expel various gases from its body and
stabilizes the users temperature
/🆑
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
* replaces chaos holoparasite with gaseous holoparasite
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
* Fixes parallax on >2 level maps going fucky with optimized multiz (#72169)
## About The Pull Request
We no longer always render parallax.
This was causing issues because we can't isolate the white of space from
the vaugely white of everything else.
So instead, if your parallax plane is out of view, we'll not only
disable it, but we'll disable the strand we send from the main plane TO
it.
Instead only blending against the bottom stack.
This does mean there's a possibility for fullwhite on z transition
borders (potentially fixable), or when hijacking the plane (also
fixable, but significantly more annoying).
This is enough to make large maps functional though, so I'm happy with
it
## Why It's Good For The Game
Allows for #71731 and other maps like it. Makes my code actually work
## Changelog
🆑
fix: Using optimized multiz on > 2 z layer maps will no longer cause
fucko bungo
/🆑
* Fixes parallax on >2 level maps going fucky with optimized multiz
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Pacifists can attack people with non-lethal weapons (#72183)
## About The Pull Request
Fixes#72054
Allows pacifists to hit people with weapons which only do stamina
damage.
Additionally, allows pacifists to participate in boxing which also only
does stamina damage.
Is it pacifism to hit someone square in the face while wearing boxing
gloves? I say, maybe.
## Why It's Good For The Game
Pacifists were feeling left out after not being invited to your pillow
fights.
More seriously, they can use _guns_ which only do stamina damage so it
makes sense that they can use melee implements too.
Boxing is fun.
## Changelog
🆑
fix: Pacifists can now hit people with pillows and holographic weapons,
as well as participate in boxing.
/🆑
* Pacifists can attack people with non-lethal weapons
Co-authored-by: Jacquerel <hnevard@gmail.com>
* *hand, or That /One/ Emote You Always Felt Was Missing (#71600)
## About The Pull Request
It's happened to me _repeatedly_ that I'd see someone down on the floor,
and wanted to just, give them a hand, so they could take it and get up
that way, without just, directly clicking on them, since that's a little
bland. I've also wanted to just, offer my hand to someone so they could
grab it, so that I could pull them alongside me, rather than just
targeting one of their arms and ctrl-clicking them.
I've had this idea for a _long_ time, and only just decided to do this
today.
Now, I know what you might say. "Golden, that's a lot of code for
something this simple!" You're not wrong. _However_. I decided to go
along and to give some more love to the `/datum/status_effect/offering`
status effect and the offering-related alerts, to make them a lot more
versatile and a lot less hardcoded. Hence the whole "refactoring" part
of this.
Of course, when I add something, I don't do it half-way. So, the way the
emote works is much like the `*slap` emote, except that:
- When you click on someone, it does the exact same as if you were
offering the item to them, except that it's targeted (much like
ctrl-shift-click).
- If there's nobody directly adjacent to you, it won't do anything.
- If there's at least one person lying down around you, you will offer
them your help to get up. Should they take your hand and let you help
them up, you will both receive a simple memory about being helped up (or
helping up), as well as a 45-seconds-long small mood buff, because it
feels nice to be on either end of such a friendly gesture. If they get
up, they automatically get disqualified from being offered some help
standing up, and likewise, if you lie down, that offer goes away as
well.
- If there's at least one person around you, you will instead extend
your hand in their direction, for them to grab onto it. Should they do
so, you will then grab them by their arms and pull them.
I reworked the offering status effect to no longer have a hardcoded
`can_hold_items()` check, so that kisses and the hand offering would no
longer need you to have free hands to complete. The logic here is that
you can still pull someone even with both hands filled, so I figured I'd
leave it this way.
Note: If anyone would like to give the item a better sprite, by all
means, go ahead, that'd be amazing. I'm just not really a great spriter
and couldn't be bothered to waste hours making a very _meh_ hand.
## Why It's Good For The Game
It's fluff, and nice fluff at that. It makes it easier for people to be
nice to one-another without having to necessarily spend so long writing
up an emote that the person on the floor will already have gotten back
up. I'm sure the MRP folks will like it, and I'm certain the HRP
downstreams will love it too ;)
## Changelog
🆑
add: Added the *hand emote, which you can offer to someone standing up
in order to give them the possibility to grab onto your hand and let you
drag them away, or to someone lying down to help them back up, which
always makes everyone involved a little happier!
refactor: De-hardcoded and genericized a lot of the offering status
effect and alert code, to make it require a lot less copy-paste to
handle new cases.
fix: Offering a kiss no longer requires the receiver to have free hands
to accept said kiss!
/🆑
* *hand, or That /One/ Emote You Always Felt Was Missing
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Changes our map_format to SIDE_MAP (#70162)
## About The Pull Request
This does nothing currently, but will allow me to test for layering
issues on LIVE, rather then in just wallening.
Oh also I'm packaging in a fix to one of my macros that I wrote wrong,
as a joke
[removes SEE_BLACKNESS usage, because we actually cannot use it
effectively](c9a19dd7cc)
[c9a19dd](c9a19dd7cc)
Sidemap removes the ability to control it on a plane, so it basically
just means there's an uncontrollable black slate even if you have other
toggles set.
This just like, removes that, since it's silly
[fixes weird layering on solars and ai portraits. Pixel y was casuing
things to render below who
shouldn't](3885b9d9ed)
[3885b9d](3885b9d9ed)
[Fixes flicker
issues](2defc0ad20)
[2defc0a](2defc0ad20)
Offsetting the vis_contents'd objects down physically, and then up
visually resolves the confliciting that was going on between the text
and its display.
This resolves the existing reported flickering issues
[fixes plated food not appearing in
world](28a34c64f8)
[28a34c6](28a34c64f8)
pixel_y'd vis_contents strikes again. It's a tad hacky but we'll just
use pixel_z for this
[Adds wall and upper wall plane
masters](89fe2b4eb4)
[89fe2b4](89fe2b4eb4)
We use these + the floor and space planes to build a mask of all the
visible turfs.
Then we take that, stick it in a plane master, and mask the emissive
plane with it.
This solves the lighting fulldark screen object getting cut by emissives
Shifts some planes around to match this new layering. Also ensures we
only shift fullscreen objects if they don't object to it.
[compresses plane master
controllers](bd64cc196a)
[bd64cc1](bd64cc196a)
we don't use them for much rn, but we might in future so I'm keeping it
as a convienince thing
🆑
refactor: The logic of how we well, render things has changed. Make an
issue report if anything looks funky, particularly layers. PLEASE USE
YOUR EYES
/🆑
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Changes our map_format to SIDE_MAP
* Modular!
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
* TGUI Latejoin Menu!
* [PR PR] Fixes up the TGUI Latejoin Menu! (#18044)
* Makes Angel, Dragon and Robotic wings available in the preferences menu again (#18013)
Makes Angel, Dragon and Robotic wings available in the prefs menu again
* Automatic changelog for PR #18013 [ci skip]
* [MIRROR] Petrified human statues now drop a (stone) brain on destruction [MDB IGNORE] (#18026)
* Petrified human statues now drop a (stone) brain on destruction (#71816)
## About The Pull Request
Destroying a petrified human statue will now drop their brain, albeit a
little more statue-like.

Changed from original PR after talking w/ Fikou about it
## Why It's Good For The Game
While the combo *does* step on the toes of Smite, the statue+rod combo
is capable of fully removing you from the round without a way back very
quickly. This keeps the strength of the combo while not making it
entirely impossible to get back into the round.
## Changelog
🆑
balance: Destroying a petrified human statue will now drop their brain.
/🆑
* Petrified human statues now drop a (stone) brain on destruction
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
* Automatic changelog for PR #18026 [ci skip]
* [MIRROR] Chaplain armor beacon now uses radial + previews possible armor sets, plus some choice beacon code cleanup. [MDB IGNORE] (#18019)
* Chaplain armor beacon now uses radial + previews possible armor sets, plus some choice beacon code cleanup. (#71674)
## About The Pull Request
- The chaplain choice beacon now uses a radial to select the armor set,
instead of a list, giving the user a preview of what each looks like.

- Lots of additional cleanup to choice beacon code in general. Less copy
pasted code.
- All beacons now speak from the beacon with their message, instead of
some going by "headset message". Soul removed
## Why It's Good For The Game
I always forgot when selecting my armor which looks like what, and
choosing an ugly one is a pain since you only get one choice. This
should help chaplains get the armor they actually want without needing
to check the wiki.
## Changelog
🆑 Melbert
qol: The chaplain's armament beacon now displays a radial instead of a
text list, showing previews of what all the armor sets look like
qol: (Almost) all choice beacons now use a pod to send their item,
instead of just magicking it under your feet
code: Cleaned up some choice beacon code.
/🆑
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Chaplain armor beacon now uses radial + previews possible armor sets, plus some choice beacon code cleanup.
* update modular
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Automatic changelog for PR #18019 [ci skip]
* [MIRROR] Fixed an improper proc ref. [MDB IGNORE] (#18031)
Fixed an improper proc ref.
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Automatic changelog for PR #18031 [ci skip]
* Fiiix!
* Fuck
* [MIRROR] Windoors are vulnerable to a jaws of life [MDB IGNORE] (#18040)
* Windoors are vulnerable to a jaws of life (#71733)
## About The Pull Request
Windoors can be pried by a jaws of life now
## Why It's Good For The Game
Windoors are already immune to any kind of deconstruction outside of
bashing it, so making it immune to the jaws of life as well seems
excessive
## Changelog
🆑
balance: jaws of life can pry windoors
/🆑
Co-authored-by: Candycaneannihalator <candycane@ thisisnotarealaddr.com>
* Windoors are vulnerable to a jaws of life
Co-authored-by: texan-down-under <73374039+etherware-novice@users.noreply.github.com>
Co-authored-by: Candycaneannihalator <candycane@ thisisnotarealaddr.com>
* Automatic changelog for PR #18040 [ci skip]
* Automatic changelog compile [ci skip]
* [fix] fixes det revolver icons (#18049)
* Delete guns.dmi
* Add files via upload
* Automatic changelog for PR #18049 [ci skip]
* [MIRROR] Fixes fake links in Adminwho that led to "no_feedback_link" [MDB IGNORE] (#18027)
* Fixes fake links in Adminwho that led to "no_feedback_link" (#71804)
## About The Pull Request
Basically, sometimes, very rarely, it was possible for this to happen,
when it shouldn't be happening. I was wondering for a little while what
it was about, and then I finally downloaded my chat logs for a round and
realized what was going on. It should no longer happen.
## Why It's Good For The Game
Clickable links that lead nowhere (and thus don't do anything) aren't
very good for the game.
## Changelog
🆑 GoldenAlpharex
fix: There shouldn't be clickable names in Adminwho that don't do
anything anymore.
/🆑
* Fixes fake links in Adminwho that led to "no_feedback_link"
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Fix: Self-Actualization Device Doubling Damage (#18015)
* Change adjustOrganLoss/BruteLoss/FireLoss to set
* Reverts my naive soluton
* Automatic changelog for PR #18027 [ci skip]
* Automatic changelog for PR #18015 [ci skip]
* Fix TGUI latejoin menu not closing properly, properly this time
* Oh yea, flavourtext requirement exists. Not that we actually have it enabled upstream.
* Revert "Merge remote-tracking branch 'upstream/upstream-merge-71883' into fixlatejoinmenu"
This reverts commit 3279e73418f95637162a2923b0431e9e26b43403, reversing
changes made to d46aab7b421fee94d49b57e863bfd8e0917fc43f.
* Fucking stupid code merge shit
* Cool newline bro
* Dumb stupid commented code
* Also this
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
Co-authored-by: texan-down-under <73374039+etherware-novice@users.noreply.github.com>
Co-authored-by: Candycaneannihalator <candycane@ thisisnotarealaddr.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: RatFromTheJungle <62520989+RatFromTheJungle@users.noreply.github.com>
Co-authored-by: Dani Glore <fantasticdragons@gmail.com>
Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
* fix
Co-authored-by: Rimi Nosha <riminosha@gmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
Co-authored-by: texan-down-under <73374039+etherware-novice@users.noreply.github.com>
Co-authored-by: Candycaneannihalator <candycane@ thisisnotarealaddr.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: RatFromTheJungle <62520989+RatFromTheJungle@users.noreply.github.com>
Co-authored-by: Dani Glore <fantasticdragons@gmail.com>
Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Adds logic to provide leniency for drag clicks (#71082)
## About The Pull Request
Ok so like, in byond. if you click on something and release the click
without moving off its sprite, that counts as a "click"
If you however move your mouse off its sprite, or it does so on its own,
any further releases count as dragdrops.
We already have logic for catching drag -> mouse back over sprite. The
code I'm adding here basically is just a bit nicer about how exact you
need to be
I'm adding tweakable values for how much your mouse is allowed to move
(This isn't perfect currently, since if the target itself moves we don't
care, need to work on this) in a short time period. If you meet these
cases, we instead call it a click.
They're globs for now cause I don't have a good feel for em, will tweak
over time. I want to reduce dumb clickspam and click dragging moving
mobs/drifting items by accident.
Oh also fixed a bug in ai behaviors that came from not knowing what
get_active_hand did
Fixes a monkey behavior of using their held item
It turns out it never worked, and the only reason it didn't runtime was
because of an if() check that got passed the result of an invalid proc
call. this fixes that
## Why It's Good For The Game
Spam clicking and drag clicking are stupid. they should be less stupid
## Changelog
🆑
add: Adds a grace period for hit detection, between clicking ON someone,
and then moving your mouse off before releasing the click. It's short,
hopefully it helps with stupid
/🆑
* Adds logic to provide leniency for drag clicks
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* pAIs and lightgeists can now correctly climb ladders. (#70869)
## About The Pull Request
See the title and the relative issue reports.
The logic here is that, if they can move, chances are they can also use
ladders (with a few exceptions such as camera mobs). This ought to
include both pAIs and lightgeists, even if they cannot directly interact
with about every other object in the game.
I have also moved lightgeists onto a new file, from colossus.dm.
## Why It's Good For The Game
This will fix#57061 and fix#69228.
## Changelog
🆑
fix: pAIs and lightgeists can now correctly climb ladders.
fix: fixed a small issue with the radial menu for ladders that caused
the user to travel down when abruptly closed.
/🆑
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* pAIs and lightgeists can now correctly climb ladders.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* basic mob attack now has should_call_parent (#71461)
Adds SHOULD_CALL_PARENT onto basic mob's attack chain, because of a previous issue that living and obj didn't call parent. This PR originally fixed it, but another PR did the exact same fix, so this is just adding the forced parent call.
* basic mob attack now has should_call_parent
* obj_defense skew
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Adds a preference that disables intensive rendering on different multiz layers (#71218)
## About The Pull Request
It's kinda hacky, but it is nearly the same as just rendering one z
layer.
We allow people to ENTIRELY REMOVE most plane masters from their screen.
This has the side effect of disabling most visual effects (AO is a big
one) which saves a LOT of gpu.
We rely on planes being essentially layers to ensure things render in
the proper order. (outside of some hackyness required to make parallax
work)
I've kept parallax and lighting enabled, so visuals will still look
better then multiz pre plane cube.
It does also mean that things like FOV don't work, but honestly they
didn't work PRE plane cube, and FOV's implementation makes me mad so I
have a hard time caring.
Reduces gpu usage on my machine on tram from 47% to 32%, just above the
27% I get on meta.
I'm happy with this.
Oh also turns out the parallaxing had almost no cost. Need to remove it
as a side effect of what I'm doing but if I could keep it I would.
There's still room for in between performance options, like disabling
things like AO on lower z layers, but I didn't expect it to make a huge
impact, so I left things as is
Also fixes a bug with paper bins not respecting z layer. It came up in
testing and annoyed me
## Why It's Good For The Game
Ensures we can make multiz maps without running into client performance
issues, allows users to customize performance and visual quality.
## Changelog
🆑
add: Adds a new rendering option to the gameplay preferences. You can
now limit the rendering intensity of multiz levels. This will make
things look a bit worse, but run a LOT better. Try it out if your
machine chokes on icebox or somethin.
/🆑
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Adds a preference that disables intensive rendering on different multiz layers
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Zombies can now succumb (#70883)
fixes#70877
Mobs with NODEATH can now succumb if they choose. The only mobs with
NODEATH are all zombies, memento mori and penthrite, of which zombies
are the only one that can ever enter hardcrit. I think it's fair to let
them die if they want.
High-functioning zombies can't succumb by whispering, but pressing the
succumb UI without whispering will succumb you
🆑
tweak: Mobs with NODEATH can now succumb (this is literally only
zombies)
/🆑
* Zombies can now succumb
Co-authored-by: Time-Green <timkoster1@hotmail.com>
* Fixes parallax runtimes when your eye is not a mob (#71072)
## About The Pull Request
Also properly supports passing no input into the update proc
* Fixes parallax runtimes when your eye is not a mob
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* [s]Remove false positive heavy modified client admin alert. (#70851)
There are too many edge cases and this covers none of them. also i think
there is a bug relating to some power of 2 code or maybe some
plane/multi-z code or something because these messages are common and
admins are ignoring them.
This is totally not a ploy to get the bug fixed or the fix merged or
whatever.
* [s]Remove false positive heavy modified client admin alert.
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* (hopefully) improvements to use of scope and kinesis module (#70934)
## About The Pull Request
so, scope and kinesis are the only things in the game (other than the
body zone selector) which use the function MouseMove. this tracks every
mouse movement, which meant we had to stuff a cooldown on it to not
calculate a ton of useless stuff. this time can misalign if you move
your mouse fast, not registering at all, as well as not working out with
the 0.2 second processing time of the things handling it (the scope
component and kinesis module)
instead of doing that, we are now keeping the mouse parameters as a
variable, which we update with every mousemove to the current
parameters. then we handle the calculations right as we need them (in
the kinesis/scope) module, rather than relying on mousemove cooldowns,
this should hopefully feel way better
## Why It's Good For The Game
😁
## Changelog
🆑
qol: sniper scopes and kinesis module should feel better to use
/🆑
* (hopefully) improvements to use of scope and kinesis module
* seconds
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* [NO GBP] Fixes blindness icons on lower station z-levels (#70608)
I previously tested that footsteps worked when hearing them from a lower Z-level but forgot to test if you can see them while on a lower z-level.
It didn't occur to me that offsetted planecube planes wouldn't work with being over the fullscreen blindness mask past the top level but that makes sense in retrospect.
So the blindness effects (via play_fov_effect()) are now on the fullscreen plane. Partially reverted doing this with manually talking bubbles as well so they look normal again, and then added a FOV effect as well for chat bubbles.
NOTE: Runetext is in general also only above the blind mask on the highest station level and below on others for the same planecube issue but that's a whole other can of worms.
* [NO GBP] Fixes blindness icons on lower station z-levels
Co-authored-by: Tastyfish <crazychris32@gmail.com>
* Cleans up the fallout from plane cube (#70235)
* Cleans up the fallout from plane cube
Alright.
Makes cleaning bubbles respect planes
Adds support for updating overlays on move, fixing an issue with pointing at items
Adds better error messages for failing to provide args for mutable_appearance()
Fixes a bug where string overlays were not respecting insertion order
* Adds documentation for offset spokesman and offset_const
* Better stack trace
* Removes some redundant uses of cached MAs
At this scale, attempting to cache MAs like this has 0 impact on anything
And just makes things more messy then they need to be
* ensures fullscreen objects START offset, so things are always proper
* ensures chatmessages always have the right offset
* fixes compile
* whoops, the above lighting plane should actually be ABOVE the lighting plane
* fixes compile, also cleans up the fire overlay a tad
* Adds a unit test for plane masters that are shrunk by multiz being double shrunk
This is slightly hacky because of how I'm handing the plane master
group, but it's not THAT bad, and gives me some real good coverage
* Properly targets the seethrough plane at the game world plate. This fixes unit tests, and also just makes more sense
* whoops
* oh
* adds datum support for allocate(), cleans up a harddel from testing
* Makes camera chunks index at 1, and also makes them support non powers of two sizes, since that was unneeded
* fixes runtime in allocate
* Cleans up the fallout from plane cube
* liquid tweaks
* oop
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Fixes lung swapping giving you false air alerts and slightly improves their descriptions (#70630)
* Fixes lung swapping giving you false air alerts and slightly improves their descriptions
Co-authored-by: RikuTheKiller <88713943+RikuTheKiller@users.noreply.github.com>
* Adds a brand-new HUD: The Trasen-Knox HUD! (#70474)
Hello everyone! Today I bring to you all a fancy new HUD for you lot to enjoy: The Trasen-Knox HUD! Lovingly based off of the Common Core lore maintained by EOBGames!
Well, what is it?
Its a HUD with a special theming based on the old 1970's CRT screens that were commonplace at the time, including the iconic neon green and the beige plastic casing!
This PR also includes a new behavior so that its possible for each active hand icon to be unique, instead of it being a sole highlighted icon as it was before.
image
And for those wondering, it does indeed account for multiple limbs!
image
Finally, as seen in the first screenshot, this PR adds the behavior to hide the HUD icon when you insert a piece of equipment into the slot. Thank you for adding the behavior, Fikou!
This is all as a step for upgrading and changing how the HUDs we interact with on a daily basis can be upgraded in the future to be more appealing visually! That, and it is simply gorgeous :)
PositiveEntropy, Fikou
add: Adds a new HUD: The Trasen-Knox HUD! With a theming based on classic 1970s CRT screen computers!
code: Added behavior for unique icons for active hands.
code: Added behavior that makes it so when you equip an item, the icon behind it defaults to the blank template type.
* Adds a brand-new HUD: The Trasen-Knox HUD!
Co-authored-by: Imaginos16 <77556824+Imaginos16@users.noreply.github.com>
This took a long time to review, but at long last, it's done.
* HUD clutter, good bye, you will not be missed.
* Oh my god so much pain
* No commented code. Bad.
* Uwaaaa
* Add a couple of warning messages for common scenarios, use defines
* AAAAA
* AAAAAAAAAAA
* UWAAAA
* UUUUWAAAA, DOCUMENTED SNOWFLAKE CODE
* FUCK
* Apply suggestions!
* Apply suggestions part one!
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Apply suggestions part two!
* Static list
I think this is how it works, it compiles, sooo
* Split the giga monolith that's known as technical_stuff_for_lewd into two parts, human_helpers, and whatever else isn't a human helper. Also add a helper proc for mass update_inv on organic interface slots.
* I can't believe you did this
* Did you know that organic interface code didn't clean up it's defines? Neither did I!
* Less ifs
* Apply last suggestion that I know how to
* That was a lie
* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
I HAVEN'T EVEN TOUCHED THE WORST CODE
* Oops
* Pain
* No copypaste
* Proc is 🦀
* No, bad, no commenting code.
* List prittification for chems, reduces the sheer amount of update_body calls
* Allow non-lewd empath users to not have to suffer raunchy inspect messages
* Oop
* DEEEEEEEEEEEEFINES
* Oh yea, that review. Definitely remembered.
* Formatting
* Breast defines
* MUCH cleaner and MUCH MUCH EASIER to expand incubus draft code
* Credit myself if I'm gonna spend days of my time combing through this
* Oops
* Chems cleanup
* Whyyyyyyy
* Climax rework, suffering.
* Wtf is this name
* Oh yea, arousal clamping.
* Haha, oops
* Bad, this is stupid easy to modularize
* Why is body_size in here
* List formatting, grammar stuff, and also breast size is now letters
* This took too long for me to figure out and I'm not proud
* Even I can make shitcode!
* Oops, typo
* You know, this makes more sense.
* Mhhh, this shouldn't be named like this
* Wrong file
* Rename `adjustPain`
* Dead code go yeet
* Y U NO READ DOCS
* Doc proc, minor optimisation
* Reviews part 1
* Whoever made this should read good coding practices. For any language.
* DEEEEFINNNEEEEESSSS
* SUFFER
* No more fluids
* EEEEEEEEEEE
* AAAAAAAAAAAAAAA
* MOB IS 🦀
* AAAAAAAAAAAAAAAAAA
* AAAAAA
* UWA
* And also solve tastfish's reviews!
* Partial revert, cause DM hates that
* I am very smart
* EEE
* AAAAAA
* Haha keyboard go click clack
* CODE
* FUCK
* FUUUUUCK
* PERFORMANCE
* Reset horny to 0 if erp disabled
* Arousal minimum is now 0, cause negatives are dumb and I hate them
Also cuts out some code that isn't needed as far as I can tell.
* Apply suggestions!
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* AAAAA
* AAAAAAAAAA I CAN'T CODE
* Aaaaa
* WHY GIT
* I am very smart part... uh, four?
* Minor formatting changes
* Oops, fix potential cause of multiple climax attempts
* WAIT, WHY AREN'T YOU USING THE DEFINE?!
* Magic number slightly less magicky, sorta.
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Adds seethrough component (#69642)
Adds a seethrough component!
Standing behind a big object with this component will make the object transparent:
https://youtu.be/nnyWMJakVtE
And no one else can see it:
And yes you can click through it thanks to the power of plane masters!
Standing behind a tree is a pretty big meme and people will have to either shift right click or bump into you to ever find you. This makes it so much better to implement big objects, since they no longer obscure the tiles behind them
It's also useful for existing big objects, like billboards and the likes
🆑
qol: You can now see through big trees when you stand behind them!
refactor: Adds a seethrough component to make it easier to add big stationairy objects without reducing visibility
/🆑
Info
This is done by sending an override overlay to the user that obscures the normal object and plays an animation.
It registers an ENTERED signal on specific turfs. Those tiles in which it hides stuff is defined as a list of list coordinates, for which I made a global list with some defines. It's really crappy and I'd appreciate some feedback on that
* Adds seethrough component
Co-authored-by: Time-Green <timkoster1@hotmail.com>
* Object Window Niceties (#69825)
* Object Window Niceties
Alright. I got bored and polished up the object/alt click window.
It had a few issues:
First, we generated all our images in bulk, as soon as requested
Second, the caching was global, despite only working on a client to
client basis
Third, we only generated up to 10 images. This could be fine, but the
javascript code will continuiously rerender assuming unrendered images
will come eventually, and they well, weren't. This caused MASSIVE
clientside lag
Fourth and finally, I did not like how moving away from the viewed turf
lagged behind, in sync with the stat tab update. Looked bad.
I've resolved all these.
I solved the first three issues by reworking how obj images were
generatated and managed.
Rather then storing a basic cache on the subsystem, and doing all the
image generation at once, we queue up image generation as we like, and
generate images inside a new processing subsystem fire.
This isn't the best solution, since it still eats cpu somewhat, but it's
a whole lot better then the other options, outside either removing the
need to getflat, or somehow predicting what items a client will want to
see
I've started storing three bits of info. First, a list of all the
objects we currently want to display.
Second, a list of atom -> image html
Third, a list of atoms to imageify.
This information is stored on a datum on /client, since I want this to
have a lifetime linked to well, clients.
I've used this datum to solve that fourth bit, using a component I made
for parallax a bit back. This lets me react to our client's mob, and
update the tab linked to that, rather then on a subsystem call by call
basis.
That's about it.
Co-authored-by: san7890 <the@ san7890.com>
* Object Window Niceties
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Fixes a couple simple issues with interactability (#69762)
first things first, back when LemonInTheDark changed the interact_range code he did a slight modification that broke the AI cards, namely, he did this (not saying its a bad change, it is actually a good change, just mentioning what change caused the issue im fixing now):
now, his change does make sense, since he changed the range default to 0 instead of 1, however "null" is also used as a range, specifically for AIs, now this normally isnt an issue for the AI itself, as the AI generally gets a TRUE in its interaction checks before it gets down this deep (machines have a bypass specifically for AI), but there is one situation in which it does go this deep: AI Cards, when in an AI card the AIs interaction range is set to 0 and their interaction is disabled, thereby making it impossible for them to interact with anything, now when a player opens the card UI and enables the AIs ability to interact, this sets their range back to null, aka unlimited, the issue now however, is that since "null" is treated the same as "0", and AIs in cards dont hit the same bypasses an AI core does, Lemons change to submit a false return for 0, is also submitting false for null, meaning the AI card cannot interact with anything except the tile its on, despite having null/unlimited range....
fixed by changing the null value to infinity where it is used
additionally my fix of can_interact() code apparently had the unintended side effect of not allowing rotations of machines if theres no power, i missed this entirely because thats such a specific situation, since you try rotating with APC power in most cases, it also didnt affect most machines, that said the fix was simple, just changed the proc being called to only check distance, not power. fixes#61852
and last but not least, fixes some code with the syndie bombs interactability, namely removes a redudant section, and adds a check for range, turns out there were no checks for range so you could in theory open the UI and walk away and then activate it from another location, so added a quick check to ensure you actually CAN interact with it before letting you push buttons in the UI
* Fixes a couple simple issues with interactability
Co-authored-by: 小月猫 <alina.r.starkova@gmail.com>
* Fixes our rendering for 514.1587 (#69778)
About The Pull Request
Ok so we have a blackness plane master right? it's setup to catch byond darkness but it doesn't rn cause we don't got the sight flags set.
So what it does is just sit there and do NOTHING.
BUT some genius put a color var on it, prob meant to just make it fully black.
But I think they just wrote it wrong, because byond just treats it as "make this plane have alpha 255 everywhere"
The problem is it's got zip on it, so if it actually worked this would black out everything below plane 0.
BUT it didn't work before, because setting anything on non overlay PMs broke them, and made them invis.
Then lummy fixed that, and now we get this.
I've fixed this bug by just removing the color set. It's not actually used for anything so outside this accidential working as intended behavior, it effects nothing, and doesn't actually impact darkness even if we used the sight flag. (I know this because I did this same thing in my multiz pr, which uses the sightflag)
Anyho I think they just wrote it wrong, because byond just treats it as "make this plane have alpha 255 everywhere"
We support 514.1587 now, so that's nice (NOT FOR RUNTIME THO CAUSE IT BROKE ?. LUMMOX ALSO KNOWS THIS)
Fixes#69774
Changelog
cl
fix: Hey, we support byond version 514.1587 now. You can upgrade if you'd like. I hope.
/cl
* Fixes our rendering for 514.1587
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixes storage mass transfer being generally broken, adds mass transferring onto griddles (#69084)
* - Fixes storage mass transfer
- Brings some sanity to storage procs
- Implements a griddle feature that never was
* Uncomment this
* Right-click attack fix
* Scoop fix
* Smartfridges use silent
* Restores some lost checks
* Fixes storage implants
* Fixes storage mass transfer being generally broken, adds mass transferring onto griddles
* update modular
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>