Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge upstream 08.10.24 #531

Merged
merged 100 commits into from
Oct 8, 2024
Merged

Merge upstream 08.10.24 #531

merged 100 commits into from
Oct 8, 2024

Conversation

larentoun
Copy link
Collaborator

@larentoun larentoun commented Oct 8, 2024

About The Pull Request

Мергируем апстрим

necromanceranne and others added 30 commits October 4, 2024 16:15
## About The Pull Request
Now after docking pump measure pressure on docked airlock, if it's in
safe range both airlock sides will open for easy boarding process,
instead just switching them like access airlocks

If docked entity pressure is lower then internal, then airlock will
cycle only to external pressure, not to vacuum.
Also if opening airlocks, eash door also measures external pressure, to
safe the day from bad pilot, when half of doors docked and other half
still looking into space.

With new qol features pump now automatically detects docking\undocking
to minimize vacuuming and extra headbumps.

Described behaviours tested, and work even for airlocks installed on
shuttles, evac included, but night coding is messy, so a review will be
nice.

## Why It's Good For The Game

If engis decide to build custom departure this feature should prevent
crew from screaming "Malf AI" and speed up boarding\unboarding process
(May be after this people will start to love those pumps)

## Changelog
:cl:
qol: Airlock_pump now dock with shuttles in more pleasant way
/:cl:
…gstation#87036)

<!-- 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. -->

## About The Pull Request
Carving knife traps are no longer triggered by hovering projectiles,
they now have to be shot directly, as intended.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game

Confirmed with Melbert as not intended.

It's a freaking stamp on the floor, it shouldn't be triggered by
anything floating above it.

<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

## Changelog

<!-- 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 its 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. -->

:cl:
fix: Heretic Carving Knife runes are no longer triggered by hovering
projectiles.
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: 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. -->
## About The Pull Request

Returns the original look of the revolver for traitors:

![srBs2K1fvz](https://github.com/user-attachments/assets/e1d7f569-e854-4762-ab08-59b0bcb74f60)
While still giving Nuclear Operatives the red-revolver:

![dreamseeker_guBVku71t9](https://github.com/user-attachments/assets/17f86e07-7387-48a1-93e8-5b3b7aeda997)
Re-flavors the red revolver to a "Badass Revolver" as well, so that it
helps differentiate it a bit more:

![dreamseeker_YrF52zMuWv](https://github.com/user-attachments/assets/bcf75096-a775-4971-846b-ef23ee0d50fd)

## Why It's Good For The Game

I always thought that the red "Syndicate Revolver" was way too on the
nose and dorky, especially for undercover agents. However, I thought
that dorkiness was a perfect fit for the Nuclear Operatives who love
painting all of their gear to be red and over-the-top badass looking.

## Changelog

:cl:
image: Traitors now get the classic Revolver in their uplink. Nuclear
Operatives still keep the red look for their revolvers.
/:cl:
…f objects while using one (tgstation#87020)

## About The Pull Request
Jetpacks will now prevent you from attempting to interact with objects
near you in zero G, preventing you from pushing lockers and people
around. This also makes jetpack movement ***much*** more smooth, as they
will activate at your first move, preventing jerky movement when pushing
off walls. Same applies to all wings which should help moth players with
new spacemove.

Thanks to iusedtoplayxbox on discord for providing details regarding the
issue.

## Why It's Good For The Game

Less jank = happier players

## Changelog
:cl:
qol: Jetpack movement is now much smoother
/:cl:
…ormal fishing portal generator (tgstation#87031)

## About The Pull Request
Someone on discord said it didn't work so I've taken at look at it, and
guess what? It's the base type.

## Why It's Good For The Game
Now it should work.

## Changelog

:cl:
fix: The pre-emagged fishing portal circuitboard now actually gives you
an emagged fishing portal generator.
/:cl:
<!-- 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. -->

## About The Pull Request

This should hopefully cut down on mappers using the add:/fix:/del: tag
I've talked to the maptainers about this and they seem to not be
concerned about gbp in their own system, so we should be trying to push
mappers away from using add/remove/(maybe? closing issues is cool) fix
tags and such to avoid overlap.

I've intentionally not linked this to a label due to the Map Edit label
autodetecting anyway. Should be directed only at players.

This does mean less label resolution on mapping prs, not sure how I feel
about that but I didn't want to duplicate the old image
add/remove/change labels.

Requesting wider input on this and also pinging to notify.
@tgstation/commit-access @tgstation/maptainers 

## Changelog

<!-- 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 its 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. -->

:cl:
map: added a map specific changelog entry
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: 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. -->
…o early (tgstation#87055)

## About The Pull Request

Just atomizing the misc fix I found in
<tgstation#86527> because I may not
get to finish that PR for a little bit, and this fix should go through
in the meantime because I encountered the bug _again_ with a separate
issue, resulting in no stack_traces, and it annoyed me.

Fixes runtimes showing with no stack_trace output because the error
handling proc itself was runtiming... (`/world/Error()`)


![365350779-3ee5e97a-0754-4615-ae9a-1daf39d8bde1](https://github.com/user-attachments/assets/1a1af09b-2143-483f-80eb-afeacf5772c1)

Besides the linked PR, another example of this happening was with
loadout datum collisions. So this should make debugging things like that
actually sane and normal again.

## Why It's Good For The Game

Fixes some order of operations nonsense (with the static var in question
not being initialized immediately) by initializing it explicitly here.
Stack traces are good.

## Changelog
Edit: backend issue
…er properly infect with their fluids-transmitted viruses (tgstation#87042)

## About The Pull Request

A single `else if` statement prevented infecting a freshly-made blood
splatter with the splashed blood's virus. This statement made it so that
splashing virus-infected blood from a container would only infect a
blood splatter that's already existing on the tile the container's been
splashed on.
bottom text
(this doesn't handle splashing containers _on a splatter directly_ via
targeted throw or right-click, because it could spiral into "why can't
spilling a blood container also infect any other object/item/etc and why
can't i make an item blood-stained by splashing blood on it directly
coders pls fix". it's kinda there, and i'm not in the mood for pushing
that boulder over the ledge)

## Why It's Good For The Game

Fixes tgstation#55957

## Changelog

:cl:
fix: splashing a reagent holder with blood with a fluids-transmitted
virus now properly creates an infective blood splatter
/:cl:
…(or other non-UI means) (tgstation#87041)

## About The Pull Request

Update UIs during beaker's `Exited()` so we catch all instances of the
beaker being moved out of the machine

## Why It's Good For The Game

No more ghost beakers when RMBing the machine to remove a beaker. No
issue opened for this one, virology truly has fallen out of style huh

## Changelog

:cl:
fix: fixed PANDEMIC not updating its UI when a beaker is removed via
right-click
/:cl:
…gstation#87038)

## About The Pull Request

Fixes an exception that occurred during the map vote on the shuttle
escape.

Namely, the argument used is `initiator_name` when it should be
`vote_initiator_name`.
## Why It's Good For The Game

Fixes exception.
## Changelog
:cl:
fix: fixes exception during shuttle map rotation vote
/:cl:
## About The Pull Request
- Fixes tgstation#86989

The component `/datum/component/holderloving` doesn't help with this
case. This is because camera assemblies uses
`temporarilyRemoveItemFromInventory()` which does not trigger a force
move so this component does nothing.

`temporarilyRemoveItemFromInventory()` does however check for trait
`TRAIT_NODROP` which we add to our drone tools to stop it from being
force moved


## Changelog
:cl:
fix: tools from the drone toolbox cannot be forcefully removed in
certain situations e.g. when using the drone gas analyser to upgrade the
camera assembly
/:cl:
…_portal_pairs`, preventing use (tgstation#87040)

## About The Pull Request

https://github.com/tgstation/tgstation/blob/969d7ba1cdff2d605430015cbbacebd034d40458/code/game/objects/items/teleportation.dm#L254-L265

Creating a portal on an active teleporter hub would try to teleport the
portal to the hub's target, but since `do_teleport()` deletes
`/obj/effect`, i.e. portals, the portal pair immediately gets qdel'd.
This happens in the `try_move_adjacent()` in the above code snippet when
the user-side portal is made and is moved in front of the user. They
properly remove themselves from the hand tele's
`active_portal_pairs`(well, they try to, but since they aren't yet added
in that list, they don't get removed), global portal list and whatever
else. However, the next line then adds the new portal pair to the hand
tele's `active_portal_pairs` again, but since we don't actually have
those anymore, they will never get deleted. Not cool.
So this PR ensures that the portals are not qdel'd before assigning them
to the list. If it fails to do so, the hand tele will produce a relevant
message, so hopefully the user won't try to bash their head against the
teleporter hub or similar again.
Also dmdocs some procs/vars with varying degree of helpfulness.

## Why It's Good For The Game

Fixes tgstation#67251

## Changelog

:cl:
fix: fixed hand tele portals that have been deleted in the process of
opening a new portal pair clogging up hand tele's portal pair list. If
you try to create portals that would end up like this (i.e. on an active
teleporter hub), the hand tele will indicate that.
/:cl:
…ter (tgstation#87048)

## About The Pull Request

the crafter can now craft a Laser Musket as you can now put more than 1
non-stack item relevant to the recipe in it
router now splits stacks exactly 1 sheet at a time because the previous
version was error prone and doing it any better just needs a stupid
amount of math and working with my even worse implementation

## Why It's Good For The Game
bug bad

## Changelog
:cl:
fix: you can now put more than 1 non-stack item relevant to the recipe
in a manufacturing crafter
fix: manufacturing router does not bug out when handling stacks in some
cases at the cost of being slower to do so
/:cl:
## About The Pull Request

Ducts don't block all interactions regardless of if it actually did
anyhting

## Changelog

:cl: Melbert
fix: Fixed manual construction of hygiene bots
/:cl:
antropod and others added 20 commits October 7, 2024 13:34
## About The Pull Request

- Trapdoor remote will connect to multiple trapdoors
- Trapdoor will close automatically in 5 seconds (ctrl-clicking on a
remote will toggle autoclose)
- Additional trapdoors can be linked to the same remote by clicking on a
trapdoor with the remote
- Improved examine message to reflect how to use remote
## Why It's Good For The Game

I added ability to connect multiple trapdoors with to one remote. This
makes making trapdoor traps much easier (before that you had to connect
each trapdoor to dedicated remote and use signallers).
I also added autoclose for trapdoors so you don't need to close it
manually, so you can have like an infrared emitter that will trigger the
trap and the trap would reset automatically.
And the last addition - ability to link trapdoors manually - it just
makes it easier to add trapdoors to your remote if you missed any on the
linking step.
## Changelog
:cl:
add: You can now link to multiple trapdoors with one remote
add: Trapdoor will automatically close in 5 seconds (ctrl-clicking on a
remote will toggle autoclose)
/:cl:
## About The Pull Request
The preview for writing on paper was _supposed_ to update in real time,
but was broken by the changes in tgstation#80616, simple one line fix.

## Why It's Good For The Game 
fixes tgstation#81868, I'm pretty sure the bit about newlines is either them
misremembering behavior or mixing it up with a bug in another UI.
## Changelog
:cl:
fix: The preview for writing on paper updates in real-time again
/:cl:
## About The Pull Request

Adds VV header for items, letting quick modification of a few of an
item's combat values..


![image](https://github.com/user-attachments/assets/587d072e-03f0-4c1e-b9b0-f837efb60434)

## Why It's Good For The Game

In testing, I find I tweak these values commonly, to test how effective
an item is vs armor, or how strong a new item should be, etc etc. So
having quick access to these might be cool

I thought about adding a few more like throwforce but I didn't want to
clutter it too much

## Changelog

:cl: Melbert
admin: Items now have a header in VV allowing for quicker editing of
combat properties
/:cl:
…ion#87065)

## About The Pull Request
This moves all the shuttle related admin verbs into its own category to
make it less cluttered. It was a PIA to debug shuttle related code while
having to hunt down these verbs.

## Why It's Good For The Game
Better UI.


![dreamseeker_ToRazyp3Vl](https://github.com/user-attachments/assets/cc19f81c-9c1c-475b-8acf-2d686177ae57)


## Changelog
:cl:
admin: Organize admin verbs for shuttle events into shuttle category
/:cl:
## About The Pull Request
just trying to salvage tgstation#85603
mostly


https://github.com/user-attachments/assets/32f4634a-ff76-4a4e-9ddb-7607e1e7a2d0
## Why It's Good For The Game
more sound variety
## Changelog
:cl: grungussuss
sound: ballistics have new handling sounds
/:cl:
## About The Pull Request

brightens up wawa med with a few more lights in the central area and
minor shifts in device placement

## Why It's Good For The Game

you cant look at this and say that this dark spot is good 

(before)

![image](https://github.com/user-attachments/assets/76ff44cf-2148-4966-b3fd-3c480209203f)

(after)

![image](https://github.com/user-attachments/assets/e30c39bb-a7a4-4047-8c31-b97b74403329)
## Changelog

:cl:

add: Adds a few lights 
fix: removes the darkspot in wawa med
/:cl:
## About The Pull Request
You can no longer view operating computer UI while lying down as to
prevent patients from peeking at the computer.

## Why It's Good For The Game

Currently its very hard to pull off a surprise brainwashing surgery on
someone as the patient can always peek at the computer to see what
exactly is going on. With this change players will have to trust their
doctors unless they want to be a victim of surgery related shenanigans.

## Changelog
:cl:
balance: You can no longer view operating computer UI while lying down
/:cl:
## About The Pull Request
Adds a new neutral station trait where people are able to bring their
personal pets to show off to the rest of the crew (or to donate to the
chef). Before joining, players will be able to customize their pets



https://github.com/user-attachments/assets/5a5cda18-e551-4f87-b649-67a6940ffc6a

u can set their name, gender, pet carrier color, and teach them give
them a unique dance sequence trick. if players dont wish to opt in, they
also have the choice not to

## Why It's Good For The Game
adds a new station trait which people can RP around, whether its by
competitively comparing pets, or resolving conflicts around pets being
killed/kidnapped. Ive also GAGsified pet carriers, so people can now
have the option to recolor those too

## Changelog
:cl:
add: adds a new station trait, "bring your pet to work" day
/:cl:
…rbound. (tgstation#87045)

## About The Pull Request

Adds the Fundamentally Evil quirk. The quirk does nothing in of itself.

If an Empath examines you, they will be shaken up by the fact that you
are totally evil.

Mindreaders can literally see that you're evil. If they're ALSO evil, it
gives a gives a unique message.

Honorbound chaplains can freely attack you without first declaring you
evil. You are already evil. There is no outward tells for this fact, but
if the chaplain pays attention to the medical records, you might have a
problem on your hands.

You are significantly harmed by holy water and holy explosions. So don't
drink holy water if you can help it.

## Why It's Good For The Game

I just think it'd be funny to have some crew, for whatever reason, be
fully committed to being evil for no reason other than it is funny to
bother empaths.

I want a chaplain to come to the realization that I'm evil and see what
happens.

## Changelog
:cl:
add: Fundamentally Evil quirk. You might act normal, but you know deep
down that you totally don't give a shit about anyone but yourself.
Empaths better watch out.
/:cl:

---------

Co-authored-by: Time-Green <[email protected]>
Co-authored-by: ATH1909 <[email protected]>
@github-actions github-actions bot added :neckbeard: Документация Некоторые просто любят писать тонну текста, которую никто не будет читать. TGUI Добавление или изменение существующего интерфейса на базе фреймворка TGUI 🔉 Звук Нам скорее всего нравится как это звучит. 🖌️ Спрайты Вы заработали свою миска-рис и кошко-жена. Партия гордится вами! 🗺️ Изменение Карты В этом ПРе затронут файл не станционной карты. Может и не один. 🎸 Инструменты Мы выдаем себя за реальное сообщество разработчиков. 💾 Изменение конфига Ф-ф-фуриор...? 🙏 Слияние с восходящим потоком О великий восходящий поток, спасибо что приносишь нам свои дары контента и багфиксов labels Oct 8, 2024
Copy link

github-actions bot commented Oct 8, 2024

This PR causes following conflicts on translate branch:

code/modules/admin/verbs/adminevents.dm
++<<<<<<< HEAD
++||||||| 548f9d99f29
++ADMIN_VERB(call_shuttle, R_ADMIN, "Call Shuttle", "Force a shuttle call with additional modifiers.", ADMIN_CATEGORY_EVENTS)
++	if(EMERGENCY_AT_LEAST_DOCKED)
++		return
++
++	var/confirm = tgui_alert(user, "You sure?", "Confirm", list("Yes", "Yes (No Recall)", "No"))
++	switch(confirm)
++		if(null, "No")
++			return
++		if("Yes (No Recall)")
++			SSshuttle.admin_emergency_no_recall = TRUE
++			SSshuttle.emergency.mode = SHUTTLE_IDLE
++
++	SSshuttle.emergency.request()
++	BLACKBOX_LOG_ADMIN_VERB("Call Shuttle")
++	log_admin("[key_name(user)] admin-called the emergency shuttle.")
++	message_admins(span_adminnotice("[key_name_admin(user)] admin-called the emergency shuttle[confirm == "Yes (No Recall)" ? " (non-recallable)" : ""]."))
++
++ADMIN_VERB(cancel_shuttle, R_ADMIN, "Cancel Shuttle", "Recall the shuttle, regardless of circumstances.", ADMIN_CATEGORY_EVENTS)
++	if(EMERGENCY_AT_LEAST_DOCKED)
++		return
++
++	if(tgui_alert(user, "You sure?", "Confirm", list("Yes", "No")) != "Yes")
++		return
++	SSshuttle.admin_emergency_no_recall = FALSE
++	SSshuttle.emergency.cancel()
++	BLACKBOX_LOG_ADMIN_VERB("Cancel Shuttle")
++	log_admin("[key_name(user)] admin-recalled the emergency shuttle.")
++	message_admins(span_adminnotice("[key_name_admin(user)] admin-recalled the emergency shuttle."))
++
++ADMIN_VERB(disable_shuttle, R_ADMIN, "Disable Shuttle", "Those fuckers aren't getting out.", ADMIN_CATEGORY_EVENTS)
++	if(SSshuttle.emergency.mode == SHUTTLE_DISABLED)
++		to_chat(user, span_warning("Error, shuttle is already disabled."))
++		return
++
++	if(tgui_alert(user, "You sure?", "Confirm", list("Yes", "No")) != "Yes")
++		return
++
++	message_admins(span_adminnotice("[key_name_admin(user)] disabled the shuttle."))
++
++	SSshuttle.last_mode = SSshuttle.emergency.mode
++	SSshuttle.last_call_time = SSshuttle.emergency.timeLeft(1)
++	SSshuttle.admin_emergency_no_recall = TRUE
++	SSshuttle.emergency.setTimer(0)
++	SSshuttle.emergency.mode = SHUTTLE_DISABLED
++	priority_announce(
++		text = "Emergency Shuttle uplink failure, shuttle disabled until further notice.",
++		title = "Uplink Failure",
++		sound = 'sound/announcer/announcement/announce_dig.ogg',
++		sender_override = "Emergency Shuttle Uplink Alert",
++		color_override = "grey",
++	)
++
++ADMIN_VERB(enable_shuttle, R_ADMIN, "Enable Shuttle", "Those fuckers ARE getting out.", ADMIN_CATEGORY_EVENTS)
++	if(SSshuttle.emergency.mode != SHUTTLE_DISABLED)
++		to_chat(user, span_warning("Error, shuttle not disabled."))
++		return
++
++	if(tgui_alert(user, "You sure?", "Confirm", list("Yes", "No")) != "Yes")
++		return
++
++	message_admins(span_adminnotice("[key_name_admin(user)] enabled the emergency shuttle."))
++	SSshuttle.admin_emergency_no_recall = FALSE
++	SSshuttle.emergency_no_recall = FALSE
++	if(SSshuttle.last_mode == SHUTTLE_DISABLED) //If everything goes to shit, fix it.
++		SSshuttle.last_mode = SHUTTLE_IDLE
++
++	SSshuttle.emergency.mode = SSshuttle.last_mode
++	if(SSshuttle.last_call_time < 10 SECONDS && SSshuttle.last_mode != SHUTTLE_IDLE)
++		SSshuttle.last_call_time = 10 SECONDS //Make sure no insta departures.
++	SSshuttle.emergency.setTimer(SSshuttle.last_call_time)
++	priority_announce(
++		text = "Emergency Shuttle uplink reestablished, shuttle enabled.",
++		title = "Uplink Restored",
++		sound = 'sound/announcer/announcement/announce_dig.ogg',
++		sender_override = "Emergency Shuttle Uplink Alert",
++		color_override = "green",
++	)
++
++ADMIN_VERB(hostile_environment, R_ADMIN, "Hostile Environment", "Disable the shuttle, naturally.", ADMIN_CATEGORY_EVENTS)
++	switch(tgui_alert(user, "Select an Option", "Hostile Environment Manager", list("Enable", "Disable", "Clear All")))
++		if("Enable")
++			if (SSshuttle.hostile_environments["Admin"] == TRUE)
++				to_chat(user, span_warning("Error, admin hostile environment already enabled."))
++			else
++				message_admins(span_adminnotice("[key_name_admin(user)] Enabled an admin hostile environment"))
++				SSshuttle.registerHostileEnvironment("Admin")
++		if("Disable")
++			if (!SSshuttle.hostile_environments["Admin"])
++				to_chat(user, span_warning("Error, no admin hostile environment found."))
++			else
++				message_admins(span_adminnotice("[key_name_admin(user)] Disabled the admin hostile environment"))
++				SSshuttle.clearHostileEnvironment("Admin")
++		if("Clear All")
++			message_admins(span_adminnotice("[key_name_admin(user)] Disabled all current hostile environment sources"))
++			SSshuttle.hostile_environments.Cut()
++			SSshuttle.checkHostileEnvironment()
++
++=======
+ ADMIN_VERB(call_shuttle, R_ADMIN, "Call Shuttle", "Force a shuttle call with additional modifiers.", ADMIN_CATEGORY_EVENTS)
+ 	if(EMERGENCY_AT_LEAST_DOCKED)
+ 		return
+ 
+ 	var/confirm = tgui_alert(user, "You sure?", "Confirm", list("Yes", "Yes (No Recall)", "No"))
+ 	switch(confirm)
+ 		if(null, "No")
+ 			return
+ 		if("Yes (No Recall)")
+ 			SSshuttle.admin_emergency_no_recall = TRUE
+ 			SSshuttle.emergency.mode = SHUTTLE_IDLE
+ 
+ 	SSshuttle.emergency.request()
+ 	BLACKBOX_LOG_ADMIN_VERB("Call Shuttle")
+ 	log_admin("[key_name(user)] admin-called the emergency shuttle.")
+ 	message_admins(span_adminnotice("[key_name_admin(user)] admin-called the emergency shuttle[confirm == "Yes (No Recall)" ? " (non-recallable)" : ""]."))
+ 
+ ADMIN_VERB(cancel_shuttle, R_ADMIN, "Cancel Shuttle", "Recall the shuttle, regardless of circumstances.", ADMIN_CATEGORY_EVENTS)
+ 	if(EMERGENCY_AT_LEAST_DOCKED)
+ 		return
+ 
+ 	if(tgui_alert(user, "You sure?", "Confirm", list("Yes", "No")) != "Yes")
+ 		return
+ 	SSshuttle.admin_emergency_no_recall = FALSE
+ 	SSshuttle.emergency.cancel()
+ 	BLACKBOX_LOG_ADMIN_VERB("Cancel Shuttle")
+ 	log_admin("[key_name(user)] admin-recalled the emergency shuttle.")
+ 	message_admins(span_adminnotice("[key_name_admin(user)] admin-recalled the emergency shuttle."))
+ 
+ ADMIN_VERB(disable_shuttle, R_ADMIN, "Disable Shuttle", "Those fuckers aren't getting out.", ADMIN_CATEGORY_EVENTS)
+ 	if(SSshuttle.emergency.mode == SHUTTLE_DISABLED)
+ 		to_chat(user, span_warning("Error, shuttle is already disabled."))
+ 		return
+ 
+ 	if(tgui_alert(user, "You sure?", "Confirm", list("Yes", "No")) != "Yes")
+ 		return
+ 
+ 	message_admins(span_adminnotice("[key_name_admin(user)] disabled the shuttle."))
+ 
+ 	SSshuttle.last_mode = SSshuttle.emergency.mode
+ 	SSshuttle.last_call_time = SSshuttle.emergency.timeLeft(1)
+ 	SSshuttle.admin_emergency_no_recall = TRUE
+ 	SSshuttle.emergency.setTimer(0)
+ 	SSshuttle.emergency.mode = SHUTTLE_DISABLED
+ 	priority_announce(
+ 		text = "Ошибка системы связи эвакуационного шаттла. Шаттл будет недоступен до дальнейших указаний.",
+ 		title = "Сбой связи эвакуационного шаттла",
+ 		sound = 'sound/announcer/announcement/announce_dig.ogg',
+ 		sender_override = "Система оповещения эвакуационного шаттла",
+ 		color_override = "grey",
+ 	)
+ 
+ ADMIN_VERB(enable_shuttle, R_ADMIN, "Enable Shuttle", "Those fuckers ARE getting out.", ADMIN_CATEGORY_EVENTS)
+ 	if(SSshuttle.emergency.mode != SHUTTLE_DISABLED)
+ 		to_chat(user, span_warning("Error, shuttle not disabled."))
+ 		return
+ 
+ 	if(tgui_alert(user, "You sure?", "Confirm", list("Yes", "No")) != "Yes")
+ 		return
+ 
+ 	message_admins(span_adminnotice("[key_name_admin(user)] enabled the emergency shuttle."))
+ 	SSshuttle.admin_emergency_no_recall = FALSE
+ 	SSshuttle.emergency_no_recall = FALSE
+ 	if(SSshuttle.last_mode == SHUTTLE_DISABLED) //If everything goes to shit, fix it.
+ 		SSshuttle.last_mode = SHUTTLE_IDLE
+ 
+ 	SSshuttle.emergency.mode = SSshuttle.last_mode
+ 	if(SSshuttle.last_call_time < 10 SECONDS && SSshuttle.last_mode != SHUTTLE_IDLE)
+ 		SSshuttle.last_call_time = 10 SECONDS //Make sure no insta departures.
+ 	SSshuttle.emergency.setTimer(SSshuttle.last_call_time)
+ 	priority_announce(
+ 		text = "Система связи эвакуационного шаттла работает в штатном режиме. Шаттл снова доступен.",
+ 		title = "Связь с шаттлом восстановлена",
+ 		sound = 'sound/announcer/announcement/announce_dig.ogg',
+ 		sender_override = "Система оповещения эвакуационного шаттла",
+ 		color_override = "green",
+ 	)
+ 
+ ADMIN_VERB(hostile_environment, R_ADMIN, "Hostile Environment", "Disable the shuttle, naturally.", ADMIN_CATEGORY_EVENTS)
+ 	switch(tgui_alert(user, "Select an Option", "Hostile Environment Manager", list("Enable", "Disable", "Clear All")))
+ 		if("Enable")
+ 			if (SSshuttle.hostile_environments["Admin"] == TRUE)
+ 				to_chat(user, span_warning("Error, admin hostile environment already enabled."))
+ 			else
+ 				message_admins(span_adminnotice("[key_name_admin(user)] Enabled an admin hostile environment"))
+ 				SSshuttle.registerHostileEnvironment("Admin")
+ 		if("Disable")
+ 			if (!SSshuttle.hostile_environments["Admin"])
+ 				to_chat(user, span_warning("Error, no admin hostile environment found."))
+ 			else
+ 				message_admins(span_adminnotice("[key_name_admin(user)] Disabled the admin hostile environment"))
+ 				SSshuttle.clearHostileEnvironment("Admin")
+ 		if("Clear All")
+ 			message_admins(span_adminnotice("[key_name_admin(user)] Disabled all current hostile environment sources"))
+ 			SSshuttle.hostile_environments.Cut()
+ 			SSshuttle.checkHostileEnvironment()
+ 
++>>>>>>> origin/translate
code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm
++<<<<<<< HEAD
 +/mob/living/basic/space_dragon/proc/try_eat(atom/movable/food)
 +	balloon_alert(src, "swallowing...")
++||||||| 548f9d99f29
++/mob/living/basic/space_dragon/proc/try_eat(mob/living/food)
++	balloon_alert(src, "swallowing...")
++=======
+ /mob/living/basic/space_dragon/proc/try_eat(mob/living/food)
+ 	balloon_alert(src, "пожираем...")
++>>>>>>> origin/translate
code/modules/mob/living/carbon/examine.dm
++<<<<<<< HEAD
 +					. += "[t_He] [t_is] shivering."
 +				if(HAS_TRAIT(src, TRAIT_EVIL))
 +					. += "[t_His] eyes radiate with a unfeeling, cold detachment. There is nothing but darkness within [t_his] soul."
 +					living_user.add_mood_event("encountered_evil", /datum/mood_event/encountered_evil)
 +					living_user.set_jitter_if_lower(15 SECONDS)
++||||||| 548f9d99f29
++					. += "[t_He] [t_is] shivering."
++=======
+ 					. += "[t_He] дрожит."
++>>>>>>> origin/translate

@larentoun larentoun merged commit 2c03878 into master Oct 8, 2024
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
💾 Изменение конфига Ф-ф-фуриор...? 🎸 Инструменты Мы выдаем себя за реальное сообщество разработчиков. :neckbeard: Документация Некоторые просто любят писать тонну текста, которую никто не будет читать. 🖌️ Спрайты Вы заработали свою миска-рис и кошко-жена. Партия гордится вами! 🙏 Слияние с восходящим потоком О великий восходящий поток, спасибо что приносишь нам свои дары контента и багфиксов 🔉 Звук Нам скорее всего нравится как это звучит. TGUI Добавление или изменение существующего интерфейса на базе фреймворка TGUI 🗺️ Изменение Карты В этом ПРе затронут файл не станционной карты. Может и не один.
Projects
None yet
Development

Successfully merging this pull request may close these issues.