Commit Graph
87 Commits
Author SHA1 Message Date
nevimerandGitHub f476153bd5 Allow free flipping unless it's a manually spammed emote (#5254)
## About The Pull Request

inspired by (and by proxy) closes
https://github.com/Bubberstation/Bubberstation/pull/5251

let's you flip freely from every source that calls the emote except
manually spamming it via a bind
## Why It's Good For The Game

a few things force you to flip, this removes the nausea of it from that.

## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>

https://cdn.discordapp.com/attachments/1097484328012886067/1472096985153798311/dreamseeker_KNP34fBxua.mp4?ex=699154a7&is=69900327&hm=d63bfc36b5da601d82fe1a3bae4c687ddbee7deda431fe1706d17fef2568ffc7&
</details>

## Changelog
🆑
balance: forced flipping is now nausea free
/🆑
2026-03-02 14:44:43 -08:00
nevimer 6e9f2ccfc0 Merge remote-tracking branch 'tgstation/master' into upstream-12-15
# Conflicts:
#	.github/workflows/compile_all_maps.yml
#	.github/workflows/run_integration_tests.yml
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	code/_onclick/hud/credits.dm
#	code/controllers/subsystem/networks/id_access.dm
#	code/datums/diseases/advance/advance.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/game/machinery/doors/door.dm
#	code/game/objects/structures/crates_lockers/closets/secure/medical.dm
#	code/game/objects/structures/crates_lockers/closets/secure/security.dm
#	code/modules/antagonists/malf_ai/malf_ai_modules.dm
#	code/modules/jobs/job_types/_job.dm
#	code/modules/loadout/categories/accessories.dm
#	code/modules/loadout/loadout_helpers.dm
#	code/modules/loadout/loadout_items.dm
#	code/modules/loadout/loadout_preference.dm
#	code/modules/mob/living/silicon/robot/robot_defense.dm
#	code/modules/mod/mod_theme.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/reagents/reagent_containers/cups/drinks.dm
#	code/modules/shuttle/mobile_port/variants/supply.dm
#	code/modules/surgery/organs/internal/eyes/_eyes.dm
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_heretic.png
#	icons/hud/screen_full.dmi
2025-12-15 18:12:29 -05:00
BloopandGitHub a4f053f0d9 Fixes emote singletons being mutated, and actually makes use of the type_override arg (#94178)
## About The Pull Request

So this nice way of explicitly override an emote type exists, but for
some reason it is not properly used and mostly nonfunctional.

Custom emotes, a perfect use case for these, was just... mutating the
singleton and then resetting it back, instead of actually making use of
args.

Sinful. Just sinful.

<details><summary> It does work, note the type override from the prompt
making its way where needed. </summary>

<img width="209" height="206" alt="dreamseeker_DRS9nFqoQP"
src="https://github.com/user-attachments/assets/35cbac9b-600f-4060-938e-519e110f330d"
/>

<img width="308" height="493" alt="Code_ZQfaj3GGSu"
src="https://github.com/user-attachments/assets/6847e070-d11f-4a32-90fa-edbb5e869e13"
/>

</details>

## Why It's Good For The Game

Fixes a likely oversight/coding skill issue. Improves code modularity.

## Changelog

Nothing anyone would notice, if this is working correctly.
2025-11-30 13:38:51 -06:00
nevimer baf3837ae8 Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29
# Conflicts:
#	_maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm
#	_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	_maps/map_files/tramstation/tramstation.dmm
#	code/_onclick/hud/new_player.dm
#	code/datums/components/squashable.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/datums/diseases/chronic_illness.dm
#	code/datums/status_effects/buffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/stamcrit.dm
#	code/game/machinery/computer/crew.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/wall_mounted.dm
#	code/game/turfs/closed/indestructible.dm
#	code/modules/admin/view_variables/filterrific.dm
#	code/modules/antagonists/heretic/influences.dm
#	code/modules/cargo/orderconsole.dm
#	code/modules/client/preferences.dm
#	code/modules/events/space_vines/vine_mutations.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/carbon/human/death.dm
#	code/modules/mob/living/carbon/human/species_types/jellypeople.dm
#	code/modules/mob/living/damage_procs.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mob_spawn/mob_spawn.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/projectiles/guns/ballistic/launchers.dm
#	code/modules/projectiles/guns/energy/laser.dm
#	code/modules/reagents/chemistry/machinery/chem_dispenser.dm
#	code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/medicine_reagents.dm
#	code/modules/surgery/healing.dm
#	code/modules/unit_tests/designs.dm
#	icons/mob/inhands/items_lefthand.dmi
#	icons/mob/inhands/items_righthand.dmi
#	tgui/packages/tgui/interfaces/ChemDispenser.tsx
2025-11-29 22:49:21 -05:00
Joshua KidderandGitHub 7a3ad79506 All camelCase (Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss) procs now use snake_case. UNDERSCORES RULE! (#94111)
## About The Pull Request
It's just a partial cleanup of
anti-[STYLE](https://github.com/tgstation/tgstation/blob/master/.github/guides/STYLE.md)
code from /tg/'s ancient history. I compiled & tested with my helpful
assistant and damage is still working.

<img width="1920" height="1040" alt="image"
src="https://github.com/user-attachments/assets/26dabc17-088f-4008-b299-3ff4c27142c3"
/>


I'll upload the .cs script I used to do it shortly.

## Why It's Good For The Game
Just minor code cleanup.

Script used is located at https://metek.tech/camelTo-Snake.7z

EDIT 11/23/25: Updated the script to use multithreading and sequential
scan so it works a hell of a lot faster
```
/*
//
Copyright 2025 Joshua 'Joan Metekillot' Kidder

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
//
*/
using System.Text.RegularExpressions;
class Program
{
    static async Task Main(string[] args)
    {
        var readFile = new FileStreamOptions
        {
            Access = FileAccess.Read,
            Share = FileShare.ReadWrite,
            Options = FileOptions.Asynchronous | FileOptions.SequentialScan
        };
        FileStreamOptions writeFile = new FileStreamOptions
        {
            Share = FileShare.ReadWrite,
            Access = FileAccess.ReadWrite,
            Mode = FileMode.Truncate,
            Options = FileOptions.Asynchronous
        };
        RegexOptions regexOptions = RegexOptions.Multiline | RegexOptions.Compiled;
        Dictionary<string, int> changedProcs = new();
        string regexPattern = @"(?<=\P{L})([a-z]+)([A-Z]{1,2}[a-z]+)*(Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss)([A-Z]{1,2}[a-z]+)*";
        Regex camelCaseProcRegex = new(regexPattern, regexOptions);

        string snakeify(Match matchingRegex)
        {
            var vals =
            matchingRegex.Groups.Cast<Group>().SelectMany(_ => _.Captures).Select(_ => _.Value).ToArray();
            var newVal = string.Join("_", vals.Skip(1).ToArray()).ToLower();
            string logString = $"{vals[0]} => {newVal}";
            if (changedProcs.TryGetValue(logString, out int value))
            {
                changedProcs[logString] = value + 1;
            }
            else
            {
                changedProcs.Add(logString, 1);
            }
            return newVal;
        }
        var dmFiles = Directory.EnumerateFiles(".", "*.dm", SearchOption.AllDirectories).ToAsyncEnumerable<string>();

        // uses default ParallelOptions
        // https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.paralleloptions?view=net-10.0#main
        await Parallel.ForEachAsync(dmFiles, async (filePath, UnusedCancellationToken) =>
        {
            var reader = new StreamReader(filePath, readFile);
            string oldContent = await reader.ReadToEndAsync();
            string newContent = camelCaseProcRegex.Replace(oldContent, new MatchEvaluator((Func<Match, string>)snakeify));
            if (oldContent != newContent)
            {
                var writer = new StreamWriter(filePath, writeFile);
                await writer.WriteAsync(newContent);
                await writer.DisposeAsync();
            }
            reader.Dispose();
        });
        var logToList = changedProcs.Cast<KeyValuePair<string, int>>().ToList();
        foreach (var pair in logToList)
        {
            Console.WriteLine($"{pair.Key}: {pair.Value} locations");
        }
    }
}

```

## Changelog
🆑 Bisar
code: All (Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss) procs now use
snake_case, in-line with the STYLE guide. Underscores rule!
/🆑
2025-11-27 15:50:23 -05:00
Roxy 71faa643bf Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-2025-11-12 2025-11-12 16:44:13 -05:00
necromanceranneandGitHub 03da670d45 Adds backflipping, because flipping wasn't annoying enough (#93655)
## About The Pull Request

Adds backflipping, which has a lower probability of failing.

## Why It's Good For The Game

Expression of emotion is a key component to communication. 

Or perhaps you just want to deteriorate your acrobatics implant faster.

## Changelog
🆑
qol: You can now backflip.
/🆑
2025-11-11 19:27:25 -08:00
SimplyLoganandGitHub 275b6fb691 [NO GBP] Restores jumping emote sound (#92724)
## About The Pull Request

Fixes #92709

#88464 - Accidentally broke jumping sound on the emote - There was a
later commit to that same PR to undo it but not sure if been merged.

Just making this PR so that it can be fully fixed.
2025-08-26 16:30:12 -05:00
grungussussandGitHub 2faede776b *jump emote will not display to runechat (#88464)
## About The Pull Request
Just like spin and flip, it will not display a runechat and chat
message.
## Why It's Good For The Game
there's plenty of indication that you jumped, like a sound and an
animation. Printing a message just spams the chat and runechat above
you, especially when you spam it.
## Changelog
🆑 grungussuss
qol: *jump emote will not print a message
/🆑
2025-08-23 12:38:11 +10:00
771814d215 Recovered Crew are in spawner menu (#91986)
## About The Pull Request

![image](https://github.com/user-attachments/assets/052ad4ae-45e0-4fd5-b59f-4c659adefee3)

Added recovered crew to the ghost role spawner menu. Clicking spawn will
make you orbit the recovered crew body.


https://github.com/user-attachments/assets/326856c4-e306-43fd-b7d6-a8d5554a0e81

Orbiting the body will make it twitch a little to indicate to
coroners/MD's/roboticists that you're ready to be revived.

## Why It's Good For The Game

Getting people to actually play the recovered crew is kinda hard on most
rounds :( . First on my list is to make the process more convenient for
everyone.

By adding it to the ghostrole spawner menu, ghosts can quickly see if
bodies are available if they wish to play as one. Making them twitch
when orbited makes it so the people reviving them don't have to revive
them every few minutes in the case someone wishes to join as them (they
still might, it does get more attention).

I think the twitching effect is the best natural indicator that someone
wishes to join without being too OOC. I can imagine doctors being a
little confused at first, but it should click pretty quickly.

I am not too concerned about it being used as a ghost communication
medium. The spectroscopic sniffers are a more convenient tool for this,
and I don't think I've seen someone do it with them.
## Changelog
🆑
add: Recovered Crew have been added to the ghostrole spawner menu
add: Orbiting Recovered Crew corpses will make them twitch to indicate a
soul is available
/🆑
Giving them straight up superpowers or more aggressive antag rolls is
still something I'm considering. We'll see if/when I decide to do it

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-07-30 17:37:38 -04:00
05982ba29a Recovered Crew are in spawner menu (#91986)
## About The Pull Request

![image](https://github.com/user-attachments/assets/052ad4ae-45e0-4fd5-b59f-4c659adefee3)

Added recovered crew to the ghost role spawner menu. Clicking spawn will
make you orbit the recovered crew body.


https://github.com/user-attachments/assets/326856c4-e306-43fd-b7d6-a8d5554a0e81

Orbiting the body will make it twitch a little to indicate to
coroners/MD's/roboticists that you're ready to be revived.

## Why It's Good For The Game

Getting people to actually play the recovered crew is kinda hard on most
rounds :( . First on my list is to make the process more convenient for
everyone.

By adding it to the ghostrole spawner menu, ghosts can quickly see if
bodies are available if they wish to play as one. Making them twitch
when orbited makes it so the people reviving them don't have to revive
them every few minutes in the case someone wishes to join as them (they
still might, it does get more attention).

I think the twitching effect is the best natural indicator that someone
wishes to join without being too OOC. I can imagine doctors being a
little confused at first, but it should click pretty quickly.

I am not too concerned about it being used as a ghost communication
medium. The spectroscopic sniffers are a more convenient tool for this,
and I don't think I've seen someone do it with them.
## Changelog
🆑
add: Recovered Crew have been added to the ghostrole spawner menu
add: Orbiting Recovered Crew corpses will make them twitch to indicate a
soul is available
/🆑
Giving them straight up superpowers or more aggressive antag rolls is
still something I'm considering. We'll see if/when I decide to do it

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-07-27 12:41:29 +02:00
Majkl-J b6b8306fda Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-02a 2025-02-20 00:00:19 -08:00
AylongandGitHub 7a817300fd Improve and extend fieldset_block and examine_block (#88678)
## About The Pull Request
Maked `fieldset_block` and `examine_block` more stylish and neat, also
`fieldset_block` no longer has a centred title.
Renamed `examine_block` to `boxed_message` and adds
`custom_boxed_message` which can be colored.

- AdminPMs, admin tickets and vote results has been wrapped into
`fieldset_block` for comfort and visibility
- Health Analyzer results painted to blue
- Vote notice and tips of the round wrapped to purple
`custom_boxed_message`
- Tooltip text border color, now uses text color, not just white

## Why It's Good For The Game
Demonstration in both themes

<details><summary>Dark</summary>


![image](https://github.com/user-attachments/assets/7175379b-b053-4fb7-bd25-65c744a21c56)

![image](https://github.com/user-attachments/assets/1728e72b-0110-4b81-9d61-8779f5fdc3a0)

![image](https://github.com/user-attachments/assets/5e6f9604-35b8-4840-b6b4-35a68f49a997)

</details>

<details><summary>Light</summary>


![image](https://github.com/user-attachments/assets/6a3d693b-e0dc-4a4b-b4d7-2ded54ce0d67)

![image](https://github.com/user-attachments/assets/c4f5e089-180f-4d13-806a-fa64f01740a3)

![image](https://github.com/user-attachments/assets/a46d52c4-ad37-4637-8cae-c4b00139efc1)

</details>

## Changelog

🆑
qol: AdminPMs, admin tickets, vote results and started vote notification
are now much more visible in the chat.
qol: Boxed messages in chat (like examine), has been restyled.
/🆑
2024-12-24 11:32:38 -08:00
LT3andGitHub 2b33ea898d Remove flip sickness for freerunners (#2550)
## About The Pull Request

Puts back in the check for freerunning trait when flipping. Also moves
synthetic vomit to the vomit proc instead of typechecking on the emote.

## Why It's Good For The Game

The 8 points lets them flip.

## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>


![image](https://github.com/user-attachments/assets/ad4367b4-fcb6-4b6c-bd3c-0d7b3ae36241)

</details>

## Changelog

🆑 LT3
fix: Freerunners are immune to flip and spin sickness
/🆑
2024-11-27 20:07:36 +00:00
afc7a5cf3e Fix synths vomitting from too much flip (#2547)
## About The Pull Request
Dunno if this is the ideal fix or if the vomit proc needs an override
for checking issynthetic.
## Why It's Good For The Game
Synths are more agile at flipping and don't spew chunks
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog
🆑
fix: Synths vomit nanites when flipping too many times
/🆑

---------

Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2024-11-25 21:09:34 +00:00
LT3andGitHub 53c2f8728c Fix ghosts being unable to flip (#2544)
## About The Pull Request

As it says

## Changelog

🆑 LT3
fix: Ghosts can use the flip emote again
/🆑
2024-11-24 18:22:54 -08:00
LT3andGitHub fc201ab122 Fixes emote cooldown (#2535)
## About The Pull Request

Removes all remnants of the broken SR emote cooldown, reverting back to
standard TG.

## Why It's Good For The Game

Cooldown on emotes work properly, people can flip again (without
beyblading.)

## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>


https://github.com/user-attachments/assets/8cbda9aa-ba78-4082-a620-d4ac93f8df65

</details>

## Changelog

🆑 LT3
fix: Emote cooldowns work properly
del: Removed Freerunning restriction on the flip emote
/🆑
2024-11-24 20:42:20 +00:00
d5daa9c9b8 [NO GBP] Renames mob/camera to mob/eye and makes everything follow suit (#87684)
## Why It's Good For The Game

Clarity and consistency regarding DM's systems. 
Internally, `eye` is used for anything that controls the client's view.

![image](https://github.com/user-attachments/assets/7d1291e1-7a6a-4736-a14b-97834e89846f)
How `eye` is used in DM is consistent with how we use the term, so I
figured this would add clarity.

Being named mob/camera also makes it unclear exactly what it's doing.
The name implies that it would function similar to how mob/camera/ai_eye
does, but most of the time it's only used as... an eye.

My ulterior reason for this PR is that I want to clean up
mob/camera/ai_eye and it's subtypes after this.
## Changelog

🆑
server: mob/camera has been renamed to mob/eye, which may break
downstreams
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-11-09 10:57:45 +00:00
fleurandGitHub 4bfe9a71b6 Adds flatboxes, boxes that fit beneath tiles (#87229)
## About The Pull Request

This box type has a maximum of 3 slots, and can be hidden beneath
floortiles. It can be crafted by *jump emoting ontop of a regular, empty
box.


https://github.com/user-attachments/assets/d7ab52ec-2b47-4ab4-b2af-05ce00b0ae4b



https://github.com/user-attachments/assets/30dd5de3-1f4d-4cb4-8d9c-8625379e76bf

## Why It's Good For The Game
Hiding beneath tiles is a fun, yet not broken method of stowing
contraband. The toiletbasin or moisturizer trap remains a better option,
so I want to open up the space between the floorboards as quick
alternative for stowing or making cache drop-offs.

Smuggle satchels have a lot more going for them than their ability to be
hidden beneath tiles, so I don't feel like this is intruding on their
turf.
2024-11-03 23:47:37 -06:00
Majkl-J e59d8ba64b Merge commit '179a607a90ad7ec62bdaff4e6fe72af60ee56442' of https://github.com/tgstation/tgstation into upstream-24-10b 2024-10-23 23:27:16 -07:00
SmArtKarandGitHub 6c8b16ea5d TTS pitch now affects emote sounds (#87275)
## About The Pull Request
Closes #87274
If TTS is enabled and supports vocal pitch, certain emotes will have a
far smaller frequency range but will become affected by your chosen TTS
pitch. Frequency equation is non-linear as pitch scales from -12 to 12

## Why It's Good For The Game

Makes vocal emotes a bit more immersive as now they'll fit your
character's tone.

## Changelog
🆑
add: TTS pitch now affects emote sounds
/🆑
2024-10-20 16:50:04 -04:00
WaterpigandMajkl-J bb70889f6e TG Upstream Part 1
3591 individual conflicts

Update build.js

Update install_node.sh

Update byond.js

oh my fucking god

hat

slow

huh

holy shit

we all fall down

2 more I missed

2900 individual conflicts

2700 Individual conflicts

replaces yarn file with tg version, bumping us down to 2200-ish

Down to 2000 individual conflicts

140 down

mmm

aaaaaaaaaaaaaaaaaaa

not yt

575

soon

900 individual conflicts

600 individual conflicts, 121 file conflicts

im not okay

160 across 19 files

29 in 4 files

0 conflicts, compiletime fix time

some minor incap stuff

missed ticks

weird dupe definition stuff

missed ticks 2

incap fixes

undefs and pie fix

Radio update and some extra minor stuff

returns a single override

no more dupe definitions, 175 compiletime errors

Unticked file fix

sound and emote stuff

honk and more radio stuff
2024-10-19 08:04:33 -07:00
grungussussandGitHub 58501dce77 Reorganizes the sound folder (#86726)
## About The Pull Request

<details>

- renamed ai folder to announcer

-- announcer --
- moved vox_fem to announcer
- moved approachingTG to announcer

- separated the ambience folder into ambience and instrumental
-- ambience --

- created holy folder moved all related sounds there
- created engineering folder and moved all related sounds there
- created security folder and moved ambidet there
- created general folder and moved ambigen there
- created icemoon folder and moved all icebox-related ambience there
- created medical folder and moved all medbay-related ambi there
- created ruin folder and moves all ruins ambi there
- created beach folder and moved seag and shore there
- created lavaland folder and moved related ambi there
- created aurora_caelus folder and placed its ambi there
- created misc folder and moved the rest of the files that don't have a
specific category into it

-- instrumental --

- moved traitor folder here
- created lobby_music folder and placed our songs there (title0 not used
anywhere? - server-side modification?)

-- items --

- moved secdeath to hailer
- moved surgery to handling

-- effects --

- moved chemistry into effects
- moved hallucinations into effects
- moved health into effects
- moved magic into effects

-- vehicles --

- moved mecha into vehicles


created mobs folder

-- mobs --

- moved creatures folder into mobs
- moved voice into mobs

renamed creatures to non-humanoids
renamed voice to humanoids

-- non-humanoids--

created cyborg folder
created hiss folder
moved harmalarm.ogg to cyborg

-- humanoids --




-- misc --

moved ghostwhisper to misc
moved insane_low_laugh to misc

I give up trying to document this.

</details>

- [X] ambience
- [x] announcer
- [x] effects
- [X] instrumental
- [x] items
- [x] machines
- [x] misc 
- [X] mobs
- [X] runtime
- [X] vehicles

- [ ] attributions

## Why It's Good For The Game

This folder is so disorganized that it's vomit inducing, will make it
easier to find and add new sounds, providng a minor structure to the
sound folder.

## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
2024-09-23 22:24:50 -07:00
GhomandGitHub 491b9083f2 fixes an if statement from the jump emote (#86488)
## About The Pull Request
An if statement without parenthetis slipped through the cracks after
optimumtact resolved the conflicts in his latest PR, discarding the
previous reviews. I'm not sure if functionally it works the same, but it
sure doesn't fit the coding style either way.

This also changes the condition from `ishuman(user)` to
`isliving(user)`, there's no reason to restrict the sound to human mobs,
we only need to exclude observers from playing it.

## Why It's Good For The Game
See above.

## Changelog
N/A ?
2024-09-07 23:12:06 -04:00
Waterpig 4c4930c71d Merge branch 'master' of https://github.com/tgstation/tgstation into pulls-tg-to-fix-shit 2024-09-08 00:59:39 +02:00
84f16aa393 [MIRROR] Let ghosts use the jump emote (#29636)
Let ghosts use the jump emote (#86168)

Co-authored-by: oranges <email@oranges.net.nz>
2024-09-05 09:21:24 +07:00
orangesandGitHub 883eb18803 Let ghosts use the jump emote (#86168) 2024-09-04 16:39:42 -06:00
John WillardandGitHub b6d3e114da Adds taunting as a replacement for spin/flip in style meter and parrying (#85605)
## About The Pull Request

Replaces spin/flip's uses in mining's style meter and bitrunner's
projectile parrying and instead uses a new emote, taunt. It also does
not play a sound effect for emoting, only when you successfully block a
projectile.

The parrying time from the flip was 1.4 seconds, with taunting it is now
0.9 seconds. Taunting also has a cooldown of 1.5 seconds between uses.

https://www.youtube.com/watch?v=cJGuEqNhqUs


https://github.com/user-attachments/assets/1c6bf8b2-6a0d-4ae2-9b5b-9c6e619e76d6

## Why It's Good For The Game

Spin and flip are emotes that get a little boring and repetitive, which
makes its complete overuse quite annoying to see.
Compared to spin, taunting is a quick turn, which stacked with the
cooldown, makes it a shorter and un-overusable emote.

It also has a cooldown of 1.5s between hits, so players now actually
have a limit to how much they can parry/style. Currently if you have
some way to regenerate stamina damage, you're pretty set to spam parry
all projectiles at essentially no cost, since emotes cost nothing to
use, removing the limit of having to actually time it.
I wouldnt say falling over is necessarily a downside since anyone who
uses these items for a while can quickly figure out exactly hwo to
maximize parrying time.

## Changelog

🆑
add: Added Taunting, a faster and cooldowned version of the Spin emote.
balance: Wizards blocking projectiles with Transparence and the
bitrunner matrix skillchip now have a visible effect of deflecting the
projectile.
balance: The bitrunner skillchip now uses taunt instead of flip.
balance: The style meter now uses taunting instead of flips and spins.
/🆑
2024-08-19 01:05:56 +00:00
59d79ed3c8 [MIRROR] [NO GBP] Fixing beyblade flipping (also an already borked comsig) (#28914)
* [NO GBP] Fixing beyblade flipping (also an already borked comsig)

* fix an old thing

* Update emote.dm

* Update emote.dm

* Update robot.dm

* Update robot.dm

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
2024-07-21 09:13:28 +05:30
GhomandGitHub 196a631ab8 [NO GBP] Fixing beyblade flipping (also an already borked comsig) (#84902)
## About The Pull Request
Currently, each time someone flip, the cooldown is halved. Whoops.

Also, COMSIG_MOB_PRE_EMOTED doesn't prevent the emote from running,
because it isn't allowed to return FALSE inside the `run_emote` proc, so
we moved the checks up to the comsig behind the `run_emote` call.

## Why It's Good For The Game
Fixing stuff.

## Changelog

🆑
fix: Fixed beyblade *flipping.
/🆑
2024-07-18 02:03:48 +01:00
7463f71b5e [MIRROR] Buffs the Matrix Flip skillchip (#28762)
* Buffs the Matrix Flip skillchip (#84658)

## About The Pull Request
Amps up the duration of the flip and the bullet dodging to 1.4 seconds
(from 0.8). EDIT: I've added a check to prevent matrix-flipping into
stamcrit (unless the emote wasn't intentional) and lowered the stam cost
very slightly to allow for a fifth flip.

## Why It's Good For The Game
I've tested the thing, with and without stun immunity (which prevents
stamcrit from overusing it), hulk, rapid gloves, against the colossus
and turrets at the tdome. It's pretty meh overrall, having to keep
spamming the flip hotkey to keep it going, and the duration isn't all
that useful since you can't easily foresee when something or someone's
going to fire at you, or react in time. This is likely going to stay a
gimmick, albeit a less crappier one.

## Changelog

🆑
balance: Buffed the matrix flip skillchip duration. Lowered the stamina
cost very, very slightly.
qol: You can now longer matrix-flip yourself into exhaustion, unless the
emote is unintentional.
/🆑

* Buffs the Matrix Flip skillchip

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-07-11 19:38:35 +05:30
GhomandGitHub aba588abb5 Buffs the Matrix Flip skillchip (#84658)
## About The Pull Request
Amps up the duration of the flip and the bullet dodging to 1.4 seconds
(from 0.8). EDIT: I've added a check to prevent matrix-flipping into
stamcrit (unless the emote wasn't intentional) and lowered the stam cost
very slightly to allow for a fifth flip.

## Why It's Good For The Game
I've tested the thing, with and without stun immunity (which prevents
stamcrit from overusing it), hulk, rapid gloves, against the colossus
and turrets at the tdome. It's pretty meh overrall, having to keep
spamming the flip hotkey to keep it going, and the duration isn't all
that useful since you can't easily foresee when something or someone's
going to fire at you, or react in time. This is likely going to stay a
gimmick, albeit a less crappier one.

## Changelog

🆑
balance: Buffed the matrix flip skillchip duration. Lowered the stamina
cost very, very slightly.
qol: You can now longer matrix-flip yourself into exhaustion, unless the
emote is unintentional.
/🆑
2024-07-10 12:39:50 -07:00
5c50d1f9f5 Small batch port (#28314)
* Early ports modular lasers from Nova, they can talk to you! (#1066)

Description was copy pasted from Nova
[PR#561](https://github.com/NovaSector/NovaSector/pull/561)

![image](https://github.com/Bubberstation/Bubberstation/assets/81807356/aff45752-00bd-4a96-8748-35b37544a1fc)

These new weapons, the modular energy rifles and carbines, have many
unique functions.

Each of the two weapon types has its own collection of modes, each
mostly unique from the other version of the gun.

For the long rifle, these include:

Two-burst laser mode
Sniper mode with massive scope
Windup autofire disabler machinegun
Plasma grenade launcher
Plasma shotgun
And for the short carbine these include:

Hellfire laser mode
Its A Sword Now
Trickshot disabler mode
Plasma flare launcher
Micro-shotgun
Each of the two can switch between these modes with a short delay and
animation, though all modes run off of the same battery. Luckily, the
battery does self-recharge, though at a very slow rate.

But there's something even better for these weapons, they talk to you.
Each mode and each variant of energy gun has its own little personality
with it, and it'll talk to you when certain things happen. For example,
switching modes, running out of power, picking them up, and more!

While this can be disabled, that would make the persona in the gun quite
sad. You wouldn't want to do that, would you?

But, and I swear this is the last thing this time. Each of these guns
has a built in soulcatcher (you can access it with alt-click!) for
giving your weapons some REAL personality. And now you observer mains
can finally live out your dreams of being someone's weapon!

Im going to replace ERT energy weapons with these guns, author of this
weapons originaly replaced MCR's with these. Perhps if people will want
to, I can replace mcrs with these....

<details>

![image](https://github.com/Bubberstation/Bubberstation/assets/81807356/146723e4-475a-4f7a-b5e5-3d6c6568753f)

https://github.com/Bubberstation/Bubberstation/assets/81807356/a6a8c8a2-f3ee-4b30-97e2-580e42f2ae56

https://github.com/Bubberstation/Bubberstation/assets/81807356/c560e26b-5d27-493a-b067-01957e4bb81a

https://github.com/Bubberstation/Bubberstation/assets/81807356/7a36eed6-45a7-42b4-af56-cb6022f15204

</details>

🆑 Paxilmaniac
add: A pair of new energy weapons has been added. Coming in both long
and short versions, these persona-enabled weapons have many different
modes they can rapidly reconfigure themselves between to fit whatever
the operator's preferences may be.
/🆑

---------

Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com>
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>

* fex

* yeah

* [PORT] [SEMI-MODULAR] [100% FREE LAG] Chat Colors (#157)

* Port Chat Colors / effigyse

* Im crazy

* Thenk u mal

* Adds global chat color list

* Apply suggestions from code review

* extra line

* Makes this happen when you spawn as opposed to when you change prefs

Less extra list entries that way

* Adds cyborg support

I think cyborg brain prefs were not working previously, either. Fixes that...

* I forgot about the AI

* Apply suggestions from code review

* Makes user's prefs apply to the TTS device that they are using

---------

Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>

* e

* https://github.com/NovaSector/NovaSector/pull/2234

* https://github.com/Skyrat-SS13/Skyrat-tg/pull/26072

* Update tgstation.dme

* https://github.com/NovaSector/NovaSector/pull/323

* 0

* Update emote.dm

---------

Co-authored-by: Erol509 <81807356+Erol509@users.noreply.github.com>
Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com>
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
Co-authored-by: Name <w4rd3nn@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2024-06-22 22:42:43 +01:00
Waterpig b2c03ed9b6 Fixes some emote blocking code 2024-05-04 22:21:48 +02:00
+8 7aa6664021 Mirror (#27453)
* Fix Conflicts

* Change COGBAR_ANIMATION_TIME to seconds and not deciseconds (#82530)

Most people should not be using this define

* New Battle Arcade (#81810)

Remakes Battle Arcade from just about the ground up, with exceptions
taken for emagged stuff since I didn't really want to touch its
behavior.

The Battle Arcade now has stages that players can go through, unlocking
a stage by beating 2 enemies and the boss of the previous one, but this
must all be done in a row. You can choose to take a break between each
battle and there's a good chance you'll sleep just fine but there's also
a chance it can go wrong either through an ambush or robbery.

The Inn lets you restore everything for 15 gold and you can buy a sword
and armor, each level you unlock is a new sword and armor pair you can
buy that's better than the last, it's 30 gold each but scales up as you
progress through levels. They are really worth getting so it's best to
try to not lose your money early in.

The battle system is nearly the same as how it was before but I removed
the poor combo system that plagued the old arcade as one big knowledge
lock, now it's more just turn based. The game is built on permadeath so
dying means you restart from the beginning, but if you are going to lose
you can try to escape instead which costs you half of your gold.

Getting to higher levels increases the difficulty of enemies but also
increases the gaming exp rewards which could make this a better way to
get exp if you can get good at it.

Gaming EXP is used to increase chances of counterattacking but doesn't
give any extra health to the player.

I also removed the exploit of being able to screwdriver arcade cabinets
because people would do that if they thought they were on the verge of
losing to bypass the effects of loss. I instead replaced it with a new
interaction that the Curator's display case key can be used to reset
arcade cabinets (there's several keys on the chain so it made sense to
me), which I added solely because I thought Curators would be the type
of person to have run an actual arcade.

This is some gameplay

https://github.com/tgstation/tgstation/assets/53777086/499083f5-75cc-43b5-b457-017a012beede

As a misc sidenote, I also split up the arcade file just like how Orion
Trail was before, just for neat code organization.
The Inn keeper is straight up just a photo of my localhost dude, he's
not a player reference or anything it's not my actual character.
I also have no idea how well balanced this is cause I suck at it lol.

Battle Arcade is one of 3 last machines in my hackmd here to turn into
TGUI https://hackmd.io/XLt5MoRvRxuhFbwtk4VAUA?view
I've always thought the current version of battle arcade is quite lame
and lacks any progression, like Orion Trail I thought that since I was
moving this to TGUI, it would also be a perfect opportunity to revamp it
and try to improve on where it failed before, especially since the
alternative (NTOS Arcade) is also lame as hell and is even lamer than
HTML battle arcade (spam mana, then spam health, then just spam attack,
rinse and repeat).
This will hopefully be more entertaining and give players sense that
they are getting through a series of tasks rather than doing one same
one again and again.

🆑 JohnFulpWillard, Zeek the Rat
add: Battle Arcade has been completely overhauled in a new progression
system, this time using TGUI.
add: The Curator's keys can now reset arcade cabinets.
balance: You now need to be literate to play arcade games, except for
Mediborg's Amputation Adventure.
fix: You can no longer screwdriver emagged arcade consoles. Accept your
fate.
fix: Silicons can no longer play Mediborg's Amputation Adventure.
/🆑

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>

* Change setting item weight class to a setter to patch some weight class related shenanigans (#82494)

## About The Pull Request

Fixes #81052 
Fixes #58008

Setting weight class of items is now done via `update_weight_class`.

I updated as many occurrences of manually setting `w_class` as I could
find but I may have missed some. Let me know if you know of any I
missed.

This is done to allow datums to react to an item having its weight class
changed.

Humans and atom storage are two such datums which now react to having an
item in its contents change weight class, to allow it to expel items
that grow to a weight class beyond what is normally allowed.

## Changelog

🆑 Melbert
fix: You can't fit items which are normally too large for a storage by
fitting it in the storage when it is small, then growing it to a larger
size.
/🆑

* Material datum color update, plus touching up some material items (knight armor, tiles) (#82500)

## About The Pull Request

Tries to bring the material datum colors in closer approximation to the
stacks they're attached too. I literally used the colors on the stacks.
some might need to be lighter or darker, but for the most part they'll
look...closer to their actual material hues.

![material datum stuff
2](https://github.com/tgstation/tgstation/assets/40847847/a3a5968f-cab3-43dd-8699-3dae879b21fb)

I've also tweaked the sprites of both the tile object and the actual
material tile turf to give it the right shading.


![image](https://github.com/tgstation/tgstation/assets/40847847/56489479-8774-492b-b8cc-aeabc6c0a67f)

In addition to the tiles, I've also updated the knight armor and helmet
to look closer to the much higher quality plate armor already in the
game.

## Why It's Good For The Game

It bothered me that the material datum coloring was inconsistent with
the actual colors used for the material stacks. When they were updated,
and even before they were updated, material datum stuff just never
looked _right_. I wanted to change that so that it looks just right.

I did not like the old material knight armor whatsoever. It was a
dithered mess, and seemed to already use parts of the standard plate
armor but with all the actual shading removed or replaced with the wrong
colors. This fixes that so that the armor is actually readable for what
it is.

## Changelog
🆑
image: Updates the colors of various material datum to bring them closer
in-line with their actual material stacks
image: Improves the sprites for the material knight armor and helmet.
/🆑

* LateInitialize is not allowed to call parent anymore (#82540)

## About The Pull Request

I've seen a few cases in the past where LateInitialize is done cause of
the init return value being set to do so for no real reason, I thought I
should try to avoid that by ensuring LateInitialize isn't ever called
without overriding.

This fixes a ton of machine's LateInitialize not calling parent
(mechpad, door buttons, message monitor, a lot of tram machines,
abductor console, holodeck computer & disposal bin), avoiding having to
set itself up to be connected to power. If they were intended to not
connect to power, they should be using ``NO_POWER_USE`` instead.

Also removes a ton of returns to LateInit when it's already getting it
from parent regardless (many cases of that in machine code).

## Why It's Good For The Game

I think this is better for coding standard reasons as well as just
making sure we're not calling this proc on things that does absolutely
nothing with them. A machine not using power can be seen evidently not
using power with ``NO_POWER_USE``, not so much if it's LateInitialize
not calling parent.

## Changelog

🆑
fix: Mech pads, door buttons, message monitors, tram machines, abductor
consoles & holodeck computers now use power.
/🆑

* Fix table top deconstruction (#82508)

## About The Pull Request

Edited: updated changelog, read comments for changes in implementation
details

So previously, tables would let you use a wrench to fully deconstruct
them, or a screwdriver to take off only their top.
This, however, broke in two different ways in #82280, when their
deconstruction logic got changed.

First off, deconstructed tables would only drop the materials for their
top and not their frame.
For this, the primary culprit seems to be on line 307:

https://github.com/tgstation/tgstation/blob/c34d56a45b0461f5e0fad3cc75e81580c3357119/code/game/objects/structures/tables_racks.dm#L300-L307
Where `new framestack(target_turf, framestackamount)` accidentally got
an extra indent, and ended up in the less common half of the if-else
chain.
Just moving this outside of the if-else chain again fixes it.

Secondly, tables had their own special deconstruction logic, which got
'standardized'.
Issue. This was special to accommodate for having two different
deconstruction logics: full or top only.
With `deconstruct(...)` no longer being overridable, I feel it's awkward
to attempt to proxy that information to the new `atom_deconstruct(...)`
So we introduce a new method, `deconstruct_top`, for the screwdriver to
use, which handles deconstructing only the top.
```dm
/obj/structure/table/proc/deconstruct_top()
	var/obj/table_frame = new frame(loc)
	if(obj_flags & NO_DECONSTRUCTION)
		table_frame.obj_flags |= NO_DECONSTRUCTION
	else // Mimic deconstruction logic, only drop our materials without NO_DECONSTRUCTION
		var/turf/target_turf = get_turf(src)
		drop_top_mats(target_turf)
	qdel(src)
```
Mimicking the `NO_DECONSTRUCTION` logic of normal deconstruction, and
copying over the flag onto its frames if need be.
This fixes screwdriver deconstruction.
## Why It's Good For The Game

Fixes #82503.
We can now deconstruct the table top separately again, AND get the right
materials back too.

## Changelog
🆑 00-Steven, SyncIt21
fix: Wrench table deconstruction gives the right materials again.
fix: Screwdriver table deconstruction only deconstructs the top again.
/🆑

* [NO GBP] Reagent grinders display reagents on examination (#82535)

## About The Pull Request
- Fixes #82531

Somehow omitted this during the general maintenance thing

## Changelog
🆑
fix: Reagent grinders display reagents of its beaker on examination
/🆑

* Monkeys now use height offset (and monkey tail works) (#81598)

This PR adds the ability for monkeys to wear any jumpsuit in the game,
and adds support for them to wear things like coats, gloves, and shoes
(though this cannot be obtained in-game and is solely achieved through
admins, which I also improved a bit upon by adding a defined bitfield
for no equip flags).

This reverts a lot of changes from
https://github.com/tgstation/tgstation/pull/73325 - We no longer check
height from limbs and such to bring sprites down, instead monkeys now
work more similarly to humans, so the entire PR was made irrelevant, and
I didn't really want to leave around dead code for the sake of having a
human with longer legs.

I've now also added support for Dwarfism, which makes monkeys look even
smaller. Very minor change but at least now the mutation doesn't feel
like it does literally nothing to monkeys (since they can already walk
over tables).

Here's a few examples of how it can appear in game (purely for
demonstration, as it is currently intentionally made impossible to
obtain in-game, though if someone wants to change that post-this PR now
that support is added, feel free):

Tails have been broken for a while now, the only reason you see them
in-game is because they are baked into the monkey sprites. This fixes
that, which means humans can now get monkey tails implanted into them
(hell yeah) and monkeys can have their tails removed (also hell yeah)

* Gets [weird] with (spies) by adding protect and deuteragonist-flavored objectives. (#82447)

## About The Pull Request

What are their goals? Why are they doing this? gets weird with Spy
objectives - namely by adding a lot more ways spies might be asked to
affect various targets around the station.

the first of these is by several flavors of Protecting targets (these do
NOT print a success at roundend in keeping with Spy design:)
- Protect (get a humanoid target off alive)
- Protect Nonhuman (get an entity off alive)
- Jailbreak (make sure a humanoid target escapes free)
- Detain (make sure a humanoid target gets taken out arrested)

the second of this is by a new escape condition: 
- Exile (get off-station or off the Z-level by the end of the shift -
sometimes it's not just pods, you need to fuck off to space to win.)

the third is through a massive increase in the number of possible:
- objective templates 
- departments to target (Command + Service added)
- specific locations to target
- general classes of objects to target (medicines, floor tiles, critical
infrastructure, etc.)
- efforts to target (such as meals, mechs, public supplies)
- ways to leave (you can be asked to abscond from the scene of your
crimes?)

## Why It's Good For The Game

More goofy and weird prompts to do more interesting things with Spies.
One thing I think we're sorely missing in our lineup is antagonists that
can act a bit more as deuteragonists - very possibly helping the crew
under certain conditions and frustrating the Hell out of them in others.

Since there's no way to check their objectives, and they get their
gear/progression through stealing shit, they're still very much an
antagonist and exist under the suspicion of doing bad... but, just going
by their objectives, introducing more varied (and in some cases even
benign) goals for them creates suggestions pointing to a lot more varied
and interesting stories if people choose to run with it.

* Adds anosmia quirk (#82206)

## About The Pull Request

Adds anosmia quirk. Anosmia, also known as smell blindness, is the loss
of the ability to detect one or more smells.

I tried to find all smells action and (most likely) update all of them,
unfortunately I can't change descriptions for this quirk.

## Why It's Good For The Game

Some characters will be able to not feel smells
That affect:
* Gases feelings and alerts (CO2, Plasma, miasm) - you don't feel them
* Bakery and cooking
* Changeling ability to feel other changelings by smell
* Some unimportant spans

* Explosions Part I - Directional Explosions (#82429)

## About The Pull Request

Adds the ability for explosions to be directional. This is achieved by
adding an angle check to `prepare_explosion_turfs()` to drop any turfs
outside the cone of the explosion. If the arc covers a full 360 degrees,
as is the default, it will accept all the turfs without performing the
angle check.

Uses this functionality to rework both rocket launcher backblast and X4
explosions. Rocket launcher backblast has been changed from a shotgun of
indendiary bullets to a directional explosion of similar length. X4 now
uses a directional explosion to "ensure user safety".

Apparently the old method of moving the explosion one tile away didn't
even work, as it blew up `target` before trying to check its density for
the directional behaviour.

https://youtu.be/Mzdt7d7Le2Y

## Why It's Good For The Game

Directional explosions - Useful functionality for a range of potential
use cases, which can be implemented with minimal extra processing cost
(Worst case scenario being very large directional explosions)

Backblast - Looks way cooler than a bunch of projectiles, and should be
significantly more functional in high-lag situations where projectile
code tends to get fucky

X4 - More predictable for players wanting to use it as a breaching
charge, you can actually stand near the charge and not have to worry
about being hoist upon your own petard.

## Changelog
🆑
add: Added support for directional explosions.
add: Rocket launcher backblast is now 271% more explosive, check your
six for friendlies!
add: X4 charges now explode in a cone away from the user when placed on
a sufficiently solid object.
fix: X4 charges will now behave correctly when placed on dense atoms
(note: don't try to read a variable from an atom you just blew up)
/🆑

* Add balloon alerts to plunging (#82559)

## About The Pull Request

Makes all plunging actions (pretty much anything using `plunger_act`)
have a visible balloon alert.

## Why It's Good For The Game

Makes sense that others would easily notice you plunging the shit out of
something.

Also, more people might finally learn that you can plunge the vent clogs
instead of welding them.

## Changelog
🆑
qol: Added balloon alerts whenever you start plunging something (i.e )
/🆑

* Fixes spurious runtime on Icemoon caused by turf calling unimplemented LateInitialize() (#82572)

## About The Pull Request

As of https://github.com/tgstation/tgstation/pull/82540 this runtime was
happening,


![image](https://github.com/tgstation/tgstation/assets/13398309/4d838fda-c157-4e33-ae64-77eafca1806f)

`/turf/open/openspace/icemoon/` can be changed to
`/turf/open/misc/asteroid/snow/icemoon/do_not_chasm` before
`Initialize()` returns, which resulted in it `INITIALIZE_HINT_LATELOAD`
getting returned on a turf that does not have an implementation of that
proc.

This should fix that.

## Why It's Good For The Game

Fixes CI error

* Blueprints tgui (#82565)

Blueprints now use a TGUI panel instead of the old HTML one.
Also did general code improvement and maintaining to blueprints in
general and also destroyed the ``areaeditor`` level, repathing it to
just 'blueprints'.
Also adds a sound when you look at structural data cause why not

Video demonstration:

https://github.com/tgstation/tgstation/assets/53777086/861773fd-3d57-472d-bc94-d67b0d4f1dbd

The 4 blueprint types:

![image](https://github.com/tgstation/tgstation/assets/53777086/bfd68eb5-c430-4608-a3f7-d6ac86727882)

Another HTML menu dead underground.
This is more responsive and doesn't require constant updating to see
which area you're in, feels less OOC (instead of saying "the blueprints
say", just say it, you ARE the blueprints).

Like, come on

![image](https://github.com/tgstation/tgstation/assets/53777086/fcf1b8b6-37c3-4c94-969f-3b121c983dc0)

Look at all this wasted space

![image](https://github.com/tgstation/tgstation/assets/53777086/1d3e61cd-bc56-4280-a3bb-0c66604e75b3)

🆑
refactor: Blueprints now use TGUI.
qol: Blueprints can now be used while lying down.
/🆑

* General maintenance for chem master (#82002)

**1. Qol**
- Adds screen tips & examines for screwdriver, wrench, crowbar & beaker
insertion, removal & replacing actions
- Analyzing reagents is now a client side feature & not a back end mode,
meaning one person can see details of a reagent while the other can
print stuff and do other operations so it's a non blocking operation.
This also means 2 players can see information of 2 different reagents in
their own screens, With that the overlay for analysis mode has been
removed
- You cannot do any tool acts on machines while printing. Balloon alerts
will be displayed warning you of that.
- The preferred container for the master reagent in the beaker is now
showed in both condiment & chem master. It can be enabled/disabled via a
CheckBox

**2. Code Improvements**
- Removed defines like `TARGET_BEAKER` , `TARGET_BEAKER` etc. ther
functionality is implemented as params in the `transfer_reagent()` proc
directly
- Removed all variables relating to analyzing reagents like
`reagent_analysis_mode`, `has_container_suggestion` etc. all memory
savings
- `printable_containers` now stores static values that can be shared
across many chem masters
- Updates only overlays and not the whole icon during operations for
efficiency

**3. Fixes**
- You can hit the chem master with the screwdriver, wrench, crowbar &
beaker when in combat mode
 - You cannot insert hologram items into the chem master
- Deconstructing a condiment master will give you the circuit board
already pre-programmed with that option selected so you don't need to
use a screwdriver to re program it
- `printing_amount` is now the maximum number of containers that can be
printed at a time. Presently this number with upgraded parts would print
out empty containers especially for patches. This is because
`volume_per_item` does not take into consideration this var. Also this
var would not give control to the player on exactly how many containers
to print as whatever amount the player entered would be multiplied with
this value producing a lot of waste & worse empty containers. Now this
var determines exactly how many containers you can print and is imposed
on the client side UI as well

**4. Refactors (UI performance)**
- Beaker data is compressed into a single entity & sent to the UI. This
is set to null if no beaker is loaded thus saving data sent
- Reuses Beaker props from chem synthesizer to reduce code
- reagent REF replaced with direct type converted to text and later
converted with `text2path()` cause its much faster

🆑
qol: Adds screen tips & examines for screwdriver, wrench, crowbar &
beaker insertion, removal & replacing actions
qol: Analyzing reagents no longer blocks other players from doing other
operations. Multiple players can analyze different reagents on the same
machine
qol: You cannot do any tool acts on the machine while printing to
prevent any side effects.
qol: The preferred container for the master reagent in the beaker is now
showed in both condiment & chem master. The feature can be
enabled/disabled via a check box
code: removed defines for reagent transfer, vars for reagent analyzis to
save memory. Autodoc for other vars & procs
fix: You can hit the chem master with tools like screwdriver, crowbar,
wrench & beaker in combat mode
fix: You cannot insert hologram items into the chem master
fix: Deconstructing a condiment master will give you the circuit board
already pre-programmed with that option
fix: You now print the exact amount of containers requested even with
upgraded parts without creating empty containers. Max printable
containers is 13 with tier 4 parts able to print 50 containers.
refactor: Optimized client side UI code & chem master as a whole.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

* Wraps `lowertext()` to ensure proper stringification. (#82442)

Fixes #82440

This PR just creates a new macro, `LOWER_TEXT()` (yes the irony is not
lost on me) to wrap around all calls of `lowertext()` and ensure that
whatever we input into that proc will be stringified using the `"[]"`
(or `tostring()` for the nerds) operator. very simple.

I also added a linter to enforce this (and prevent all forms of
regression) because I think that machines should do the menial work and
we shouldn't expect maintainers to remember this, let me know if you
disagree. if there is a time when it should be opted out for some
reason, the linter does respect it if you wrap your input with the
`UNLINT()` function.

* Clowns can now make balloon... toys. And also mallets and hats. (#82288)

<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

Clowns will now start with a box of 24 random long balloons and a
skillchip in their noggin allowing them to create balloon animals by
combining two of them of different colour together. Owners of the
skillchip also gain access to crafting recepies of balloon mallets,
vests, helmets and tophats, all created from long balloons. A crate of
long balloons, with a box of balloons inside, can be bought at cargo, in
case the clown runs out. I might edit this once I wake up, its 3 in the
morning right now.
Oh also, resprited how balloons look in inventory.

![image](https://github.com/tgstation/tgstation/assets/122572637/2d7ce955-c787-48a5-bfda-4613d2eed837)

Balloon animals funny.
Silly features are my favourite kind of features, and this one's
open-ended too.
Someone on the coder chat recommended someone would do it that one time,
here it goes.

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

🆑
add: Added long balloon box to the clown's starting inventory, and a
skill-chip of long lost honk-motherian knowledge to their brain.
add: Added long balloons. Consequently, added balloon animals to make
from such balloons. Also, balloon top hat, vest, helmet, and a mallet.
Don't ask about the mallet.
add: A long balloons box harvested fresh from the farms on the clown
planet will be able to be shipped in a crate to the cargo department
near you!
add: As per requests; water balloons can now be printed at service
lathe, and entertainment modsuit can now blow long balloons!
image: Balloons will now have an unique sprite when in the inventory,
compared when to on the ground.
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

---------

Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>

* Quick spellcheck 'steall' (#82560)

## About The Pull Request

https://github.com/tgstation/tgstation/pull/82447 quick followup to
this, caught it while glancing through the code.

* Fix

* merge conflicts

* Revert "Monkeys now use height offset (and monkey tail works) (#81598)"

This reverts commit 5cfdc5972d16c6b509220e8874a927696249d36a.

* fix

* Fixed lateinitialize

* This should cut it

* Oh right

* There?

* Damn, here?

* There

* [NO GBP] Fixes spurious runtime caused by icemoon (again) (#82582)

## About The Pull Request

https://github.com/tgstation/tgstation/pull/82572 I tried to fix this
but there was an unaccounted race condition which just caused a separate
runtime...


![firefox_GxGibAO281](https://github.com/tgstation/tgstation/assets/13398309/f251aecc-ef17-4bae-a741-5aade40de423)

Since the type is being changed mid-execution `replacement_turf` will
become out of scope. My bad--this should fix it now for good.

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Higgin <cdonny11@yahoo.com>
Co-authored-by: NeonNik2245 <106491639+NeonNik2245@users.noreply.github.com>
Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-04-26 01:22:24 +02:00
san7890andGitHub c403a6eccc Wraps lowertext() to ensure proper stringification. (#82442)
## About The Pull Request

Fixes #82440

This PR just creates a new macro, `LOWER_TEXT()` (yes the irony is not
lost on me) to wrap around all calls of `lowertext()` and ensure that
whatever we input into that proc will be stringified using the `"[]"`
(or `tostring()` for the nerds) operator. very simple.

I also added a linter to enforce this (and prevent all forms of
regression) because I think that machines should do the menial work and
we shouldn't expect maintainers to remember this, let me know if you
disagree. if there is a time when it should be opted out for some
reason, the linter does respect it if you wrap your input with the
`UNLINT()` function.
2024-04-10 12:19:43 -07:00
df20785778 [MIRROR] Skillchips are now copied to bitrunning avatars, plus a new chip to dodge bullets while flipping. (#26974)
* Skillchips are now copied to bitrunning avatars, plus a new chip to dodge bullets while flipping.

* Update code/_globalvars/traits/_traits.dm

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2024-03-31 23:31:37 -04:00
GhomandGitHub 76fa5bcdad Skillchips are now copied to bitrunning avatars, plus a new chip to dodge bullets while flipping. (#81980)
## About The Pull Request
Active skillchips are now copied on bitrunning avatars. To celebrate
this, I've made a skillchip, which can be ordered through the bitrunning
vendor, that lets you dodge projectiles for the duration of your flips
plus 1/10 of a second (so 8/10 of a sec), at the cost of stamina (if you
think 20 is a bit too low, tell me).

I've also renamed the files containing the orderable bepis disks and
bitrunning tech because they inconsistent with the names of their
sections shown in the UI.

## Why It's Good For The Game
I think (active) skillchips being copied to bitrunning avatars makes
sense as after all they're both tech-y, brainy stuff. It's a bit of a
shame that no one thought of doing that.

## Changelog

🆑
add: Active skillchips are now copied on bitrunning avatars.
add: To celebrate it, a skillchip is now available from the bitrunning
order console, which lets you dodge projectiles for the duration of your
flips, at the cost of stamina.
/🆑
2024-03-21 20:44:10 +00:00
126788ed5a [MIRROR] Improve emote help text display [MDB IGNORE] (#24823)
* Improve emote help text display (#79365)

## About The Pull Request
This adds a examine block to emote help and highlights which emotes have
sound effects in blue.

## Why It's Good For The Game
Before:

![dreamseeker_gBXU4tSkh4](https://github.com/tgstation/tgstation/assets/5195984/dea12f6a-7ab7-4ae6-a218-07348168bbe3)

After:

![dreamseeker_upqL52GDjM](https://github.com/tgstation/tgstation/assets/5195984/1c67d1da-b27f-4cff-b0be-2953f43c64d9)

## Changelog
🆑
qol: Improve the emote help verb to be more user friendly
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>

* Improve emote help text display

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
2023-11-06 11:52:39 -05:00
33abff9004 Improve emote help text display (#79365)
## About The Pull Request
This adds a examine block to emote help and highlights which emotes have
sound effects in blue.

## Why It's Good For The Game
Before:


![dreamseeker_gBXU4tSkh4](https://github.com/tgstation/tgstation/assets/5195984/dea12f6a-7ab7-4ae6-a218-07348168bbe3)

After:


![dreamseeker_upqL52GDjM](https://github.com/tgstation/tgstation/assets/5195984/1c67d1da-b27f-4cff-b0be-2953f43c64d9)


## Changelog
🆑
qol: Improve the emote help verb to be more user friendly
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-11-06 15:41:18 +00:00
94812f33c9 [MIRROR] Readds (some) Knockdown Vomits [MDB IGNORE] (#23711)
* Readds (some) Knockdown Vomits (#78301)

## About The Pull Request

ALL stunning vomits were nerfed to have just a motionless stun in #70245
(14438a2b7d), and while it didn't really
affect game balance beyond just making you not fall on the floor... I
really didn't like it since it was all-or-nothing. Fortunately with
#78191 (a7060641bb), we are able to add
more expression to how a vomit should go down using the new bitflag
system, so I decided to rewrite it back in for a special number of
cases.

I only did it for two cases, but anyone is free to change anything they
think they deserve it via changing the vomit flags that are passed into
the proc. Those cases are:

* Places where you vomit after spinning too hard. You lost balance and
threw up. That makes more sense to me than just being suddenly and
completely motionless without any sign of loss of inertia.
* Organ heal rejections. You literally vomit out an organ. How are you
still standing up? Beyond making no sense in anatomy, you should really
feel the _oomph_ from literally puking out an organ.
## Why It's Good For The Game

This is a bit of flavor that really ensaddened me when I realized it was
removed because it really does miss out on the real and true impact.
While I do agree with some merits of the aforementioned balance PR that
removed it, I do not think that it works at all for a blanket case. Now
that we are able to add this expression, we should, because it's cool.

Also cleaned up some comments I forgot to update from the last time.
## Changelog
🆑
balance: You will be knocked down again on certain vomits. Don't worry,
you'll deserve it when it happens.
/🆑

* Readds (some) Knockdown Vomits

---------

Co-authored-by: san7890 <the@san7890.com>
2023-09-15 11:30:37 -04:00
san7890andGitHub c571222cd7 Readds (some) Knockdown Vomits (#78301)
## About The Pull Request

ALL stunning vomits were nerfed to have just a motionless stun in #70245
(14438a2b7d), and while it didn't really
affect game balance beyond just making you not fall on the floor... I
really didn't like it since it was all-or-nothing. Fortunately with
#78191 (a7060641bb), we are able to add
more expression to how a vomit should go down using the new bitflag
system, so I decided to rewrite it back in for a special number of
cases.

I only did it for two cases, but anyone is free to change anything they
think they deserve it via changing the vomit flags that are passed into
the proc. Those cases are:

* Places where you vomit after spinning too hard. You lost balance and
threw up. That makes more sense to me than just being suddenly and
completely motionless without any sign of loss of inertia.
* Organ heal rejections. You literally vomit out an organ. How are you
still standing up? Beyond making no sense in anatomy, you should really
feel the _oomph_ from literally puking out an organ.
## Why It's Good For The Game

This is a bit of flavor that really ensaddened me when I realized it was
removed because it really does miss out on the real and true impact.
While I do agree with some merits of the aforementioned balance PR that
removed it, I do not think that it works at all for a blanket case. Now
that we are able to add this expression, we should, because it's cool.

Also cleaned up some comments I forgot to update from the last time.
## Changelog
🆑
balance: You will be knocked down again on certain vomits. Don't worry,
you'll deserve it when it happens.
/🆑
2023-09-15 16:37:43 +02:00
06691fc603 [MIRROR] Converts vomit() to use bitflags [MDB IGNORE] (#23642)
* Converts `vomit()` to use bitflags

* Update turf.dm

* Modular

* Modular fix

* Update _hemophage_defines.dm

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-13 10:44:50 -04:00
a7060641bb Converts vomit() to use bitflags (#78191)
## About The Pull Request

Having seven trillion boolean arguments isn't kino nor poggerchampion,
let's adjust it so we use a define flag-based system that works really
nice. I also cleaned up a lot of jank and stuff that simply just never
was meant to work.

We also had sprites for nanite vomit, but this was completely unused!
Since we still have an interaction where you're meant to throw up
nanites, I added that it so it could be leveraged. Neato.
## Why It's Good For The Game

Much easier to pass in the right args or special args to a high-profile
proc.
## Changelog
🆑
image: When you throw up nanites, your vomit should now be appropriately
nanite-colored.
/🆑

Let me know if I glonked anything.

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-09-11 21:39:16 +00:00
SkyratBotandGitHub b9b6a803b0 [MIRROR] Throws a bunch of parenthesis around to ensure dear Aunt Sally is always properly excused. [MDB IGNORE] (#17654) 2022-11-22 19:44:59 -08:00
ShizCalevandGitHub 9dab26371c Throws a bunch of parenthesis around to ensure dear Aunt Sally is always properly excused. (#71281)
Similar vein to #37116

This is supposed to be standard, yet here we are.

SHOULDN'T change anything, but there's likely something out there that's
bound to behave different because of it.


These were done manually, regex to find things that MIGHT need to be
corrected;
`^#define.+\+((?!\)).)*$`
`^#define.+-((?!\)).)*$`
`^#define.+\*((?!\)).)*$`
`^#define.+\/((?!\)).)*$` (yeah that's a lot of stuff.)
`^#define.+%((?!\)).)*$`
`^#define.+SECONDS((?!\)).)*$`
`^#define.+MINUTES((?!\)).)*$`
2022-11-21 20:53:06 -08:00
12b23baf2c [MIRROR] Imaginary friend refactor [MDB IGNORE] (#17585)
* Imaginary friend refactor (#71058)

## About The Pull Request

This makes imaginary friends less janky. It adds many QoL features like
runechat and typing indicators, fixes jankyness that results from a
runtime. You can now even emote and whisper as an imaginary friend which
adds countless RP possibilities that weren't available before.

![image](https://user-images.githubusercontent.com/27156122/199902939-c3d98955-7a1d-4752-86d2-710f38b077a2.png)

![image](https://user-images.githubusercontent.com/27156122/199902999-c88ffb5f-fed0-4cdf-a202-f221a5cb836e.png)

![image](https://user-images.githubusercontent.com/27156122/199903282-50146014-bf09-4e6b-98d2-aa8ebc94b5e3.png)

![image](https://user-images.githubusercontent.com/27156122/199903417-105cf372-a69b-4d49-bfa6-47390a0e64cf.png)

![image](https://user-images.githubusercontent.com/27156122/199936352-c614ee9e-8084-4c27-b817-779aeff427ce.png)

![image](https://user-images.githubusercontent.com/27156122/199936394-063e1431-59ff-4f5c-9b0f-47c342797cfe.png)

![image](https://user-images.githubusercontent.com/27156122/199936483-1941c349-91c1-4754-8827-7f9b9f5bb967.png)

## Why It's Good For The Game

It makes an old feature better.

## Changelog

🆑 Riggle
qol: Imaginary friends now have runechat, typing indicators and emotes!
qol: Imaginary friends can point and spin
fix: Fixed a bug with imaginary friends where ghosts would stay after
aghosting
refactor: Imaginary friend code massively improved
refactor: Imaginary friends now support multiple friends at the same
time!
admin: Imaginary friends no longer bypass filters
/🆑

* Imaginary friend refactor

Co-authored-by: Riggle <27156122+RigglePrime@users.noreply.github.com>
2022-11-20 00:28:08 +00:00
RiggleandGitHub 5086f9aad9 Imaginary friend refactor (#71058)
## About The Pull Request

This makes imaginary friends less janky. It adds many QoL features like
runechat and typing indicators, fixes jankyness that results from a
runtime. You can now even emote and whisper as an imaginary friend which
adds countless RP possibilities that weren't available before.


![image](https://user-images.githubusercontent.com/27156122/199902939-c3d98955-7a1d-4752-86d2-710f38b077a2.png)

![image](https://user-images.githubusercontent.com/27156122/199902999-c88ffb5f-fed0-4cdf-a202-f221a5cb836e.png)

![image](https://user-images.githubusercontent.com/27156122/199903282-50146014-bf09-4e6b-98d2-aa8ebc94b5e3.png)

![image](https://user-images.githubusercontent.com/27156122/199903417-105cf372-a69b-4d49-bfa6-47390a0e64cf.png)

![image](https://user-images.githubusercontent.com/27156122/199936352-c614ee9e-8084-4c27-b817-779aeff427ce.png)

![image](https://user-images.githubusercontent.com/27156122/199936394-063e1431-59ff-4f5c-9b0f-47c342797cfe.png)

![image](https://user-images.githubusercontent.com/27156122/199936483-1941c349-91c1-4754-8827-7f9b9f5bb967.png)

## Why It's Good For The Game

It makes an old feature better.

## Changelog

🆑 Riggle
qol: Imaginary friends now have runechat, typing indicators and emotes!
qol: Imaginary friends can point and spin
fix: Fixed a bug with imaginary friends where ghosts would stay after
aghosting
refactor: Imaginary friend code massively improved
refactor: Imaginary friends now support multiple friends at the same
time!
admin: Imaginary friends no longer bypass filters
/🆑
2022-11-19 14:20:51 -08:00
eefbd40ce6 [MIRROR] Adds macros to help with common set_- and adjust_timed_status_effect uses [MDB IGNORE] (#16410)
* Adds macros to help with common `set_`- and `adjust_timed_status_effect` uses

* merge conflicts

* modular skyrat and missed changes

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-09-26 17:56:24 -04:00
MrMelbertandGitHub 45516f4741 Adds macros to help with common set_- and adjust_timed_status_effect uses (#69951)
* Adds helpers for status effect application
2022-09-24 11:04:26 -04:00