diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm
index 5c5f4e9eb3a..dac44c9d773 100644
--- a/code/modules/clothing/spacesuits/rig/rig.dm
+++ b/code/modules/clothing/spacesuits/rig/rig.dm
@@ -33,6 +33,7 @@
var/interface_path = "RIGSuit"
var/ai_interface_path = "RIGSuit"
var/interface_title = "Hardsuit Controller"
+ var/interface_intro = "NT"
var/wearer_move_delay //Used for AI moving.
var/ai_controlled_move_delay = 10
@@ -803,7 +804,7 @@
/obj/item/rig/dropped(mob/user)
. = ..(user)
// So the next user will see the boot animation
- tgui_shared_states.Cut()
+ tgui_shared_states?.Cut()
for(var/piece in list("helmet","gauntlets","chest","boots"))
toggle_piece(piece, user, ONLY_RETRACT)
if(wearer && wearer.wearing_rig == src)
diff --git a/code/modules/clothing/spacesuits/rig/rig_tgui.dm b/code/modules/clothing/spacesuits/rig/rig_tgui.dm
index 8f93cb11ced..3c3e77b1321 100644
--- a/code/modules/clothing/spacesuits/rig/rig_tgui.dm
+++ b/code/modules/clothing/spacesuits/rig/rig_tgui.dm
@@ -1,5 +1,5 @@
// Just used to force the icon into the rsc, Byond.iconRefMap does the rest
-GLOBAL_DATUM_INIT(rigsuit_ui_icon, /icon, 'icons/hud/rig_ui_slots.dmi')
+GLOBAL_DATUM_INIT(rigsuit_ui_icon, /icon, 'icons/hud/rig/rig_ui_slots.dmi')
/*
* This defines the global UI for RIGSuits.
@@ -120,6 +120,26 @@ GLOBAL_DATUM_INIT(rigsuit_ui_icon, /icon, 'icons/hud/rig_ui_slots.dmi')
return data
+/*
+ * Sends data once each time the UI is opened.
+ */
+/obj/item/rig/tgui_static_data(mob/user)
+ var/list/data = ..()
+
+ data["interface_intro"] = interface_intro
+
+ return data
+
+
+/datum/asset/simple/rig
+ assets = list(
+ "tentacles.mp4" = 'icons/hud/rig/tentacles.mp4',
+ )
+
+/obj/item/rig/ui_assets(mob/user)
+ . = ..()
+ . += get_asset_datum(/datum/asset/simple/rig)
+
/*
* tgui_act() is the TGUI equivelent of Topic(). It's responsible for all of the "actions" you can take in the UI.
*/
diff --git a/code/modules/clothing/spacesuits/rig/suits/station_vr.dm b/code/modules/clothing/spacesuits/rig/suits/station_vr.dm
index 716699990c4..375b6e46be0 100644
--- a/code/modules/clothing/spacesuits/rig/suits/station_vr.dm
+++ b/code/modules/clothing/spacesuits/rig/suits/station_vr.dm
@@ -230,6 +230,7 @@
/obj/item/rig/baymed
name = "\improper Commonwealth medical hardsuit control module"
desc = "A lightweight first responder hardsuit from the Commonwealth. Not suitable for combat use, but advanced myomer fibers can push the user to incredible speeds."
+ interface_intro = "Commonwealth"
icon = 'icons/obj/rig_modules_vr.dmi' // the item
default_mob_icon = 'icons/mob/rig_back_vr.dmi' // the onmob
@@ -295,6 +296,7 @@
/obj/item/rig/bayeng
name = "\improper Commonwealth engineering hardsuit control module"
desc = "An advanced construction hardsuit from the Commonwealth. Built like a tank. Don't expect to be taking any tight corners while running."
+ interface_intro = "Commonwealth"
icon = 'icons/obj/rig_modules_vr.dmi' // the item
default_mob_icon = 'icons/mob/rig_back_vr.dmi' // the onmob
@@ -361,6 +363,7 @@
/obj/item/rig/pathfinder
name = "\improper Commonwealth pathfinder hardsuit control module"
desc = "A Commonwealth pathfinder hardsuit is hard to come by... how'd this end up on the frontier?"
+ interface_intro = "Commonwealth"
icon = 'icons/obj/rig_modules_vr.dmi' // the item
default_mob_icon = 'icons/mob/rig_back_vr.dmi' // the onmob
diff --git a/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm b/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm
index 6d38cce5ad5..c022d9f2bf0 100644
--- a/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm
+++ b/code/modules/mob/living/carbon/human/species/station/protean/protean_rig.dm
@@ -8,6 +8,7 @@
unremovable = TRUE //Can not be removed. At least, not initially.
default_mob_icon = null //Actually having a forced sprite for Proteans is ugly af. I'm not gonna make this a toggle
icon_state = "nanomachine_rig"
+ interface_intro = "Protean"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100)
siemens_coefficient= 1
slowdown = 0
diff --git a/icons/hud/rig_ui_slots.dmi b/icons/hud/rig/rig_ui_slots.dmi
similarity index 100%
rename from icons/hud/rig_ui_slots.dmi
rename to icons/hud/rig/rig_ui_slots.dmi
diff --git a/icons/hud/rig/tentacles.mp4 b/icons/hud/rig/tentacles.mp4
new file mode 100644
index 00000000000..057a6eb8dbe
Binary files /dev/null and b/icons/hud/rig/tentacles.mp4 differ
diff --git a/tgui/packages/tgui/interfaces/RIGSuit/RIGSuitHardware.tsx b/tgui/packages/tgui/interfaces/RIGSuit/RIGSuitHardware.tsx
index ec5b1960056..af433e2a041 100644
--- a/tgui/packages/tgui/interfaces/RIGSuit/RIGSuitHardware.tsx
+++ b/tgui/packages/tgui/interfaces/RIGSuit/RIGSuitHardware.tsx
@@ -126,7 +126,7 @@ export const RIGSuitHardware = (props) => {
@@ -153,7 +153,7 @@ export const RIGSuitHardware = (props) => {
@@ -174,7 +174,7 @@ export const RIGSuitHardware = (props) => {
@@ -192,7 +192,7 @@ export const RIGSuitHardware = (props) => {
@@ -231,7 +231,7 @@ const HardwarePiece = (props: {
{
- return (
-
- );
-};
+import { resolveAsset } from '../../assets';
+import { useBackend } from '../../backend';
+import { CommonwealthLogo } from './animated_logos/Commonwealth';
+import { NTLogo } from './animated_logos/NT';
+import { type Data } from './types';
const LoadingText = (props: { onFinish?: () => void }) => {
const onFinish = props.onFinish ? props.onFinish : () => {};
@@ -87,9 +65,9 @@ export const LoaderNT = (props: { onFinish?: () => void }) => {
if (showLogo) {
return (
-
+
-
+
);
@@ -98,10 +76,76 @@ export const LoaderNT = (props: { onFinish?: () => void }) => {
return ;
};
+export const LoaderCommonwealth = (props: { onFinish?: () => void }) => {
+ const [showLogo, setShowLogo] = useState(true);
+
+ useEffect(() => {
+ setTimeout(() => {
+ setShowLogo(false);
+ }, 3500);
+ }, []);
+
+ if (showLogo) {
+ return (
+
+
+
+
+
+ );
+ }
+
+ return (
+
+
+
+ );
+};
+
+export const LoaderProtean = (props: { onFinish?: () => void }) => {
+ const [showLogo, setShowLogo] = useState(true);
+
+ useEffect(() => {
+ setTimeout(() => {
+ setShowLogo(false);
+ }, 3500);
+ }, []);
+
+ if (showLogo) {
+ return (
+
+
+
+
+
+ );
+ }
+
+ return (
+
+
+
+ );
+};
+
export const RIGSuitLoader = (props: { onFinish?: () => void }) => {
+ const { data } = useBackend();
// You can skip to the end by clicking
const onFinish = props.onFinish ? props.onFinish : () => {};
+ let loader = ;
+
+ if (data.interface_intro === 'Commonwealth') {
+ loader = ;
+ } else if (data.interface_intro === 'Protean') {
+ loader = ;
+ }
+
return (
void }) => {
onClick={() => onFinish()}
style={{ cursor: 'pointer' }}
>
-
-
-
+ {loader}
);
diff --git a/tgui/packages/tgui/interfaces/RIGSuit/animated_logos/Commonwealth.tsx b/tgui/packages/tgui/interfaces/RIGSuit/animated_logos/Commonwealth.tsx
new file mode 100644
index 00000000000..5e340646dfd
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/RIGSuit/animated_logos/Commonwealth.tsx
@@ -0,0 +1,174 @@
+export const CommonwealthLogo = (props) => (
+
+);
diff --git a/tgui/packages/tgui/interfaces/RIGSuit/animated_logos/NT.tsx b/tgui/packages/tgui/interfaces/RIGSuit/animated_logos/NT.tsx
new file mode 100644
index 00000000000..06346fb6c9c
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/RIGSuit/animated_logos/NT.tsx
@@ -0,0 +1,27 @@
+// This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
+// http://creativecommons.org/licenses/by-sa/4.0/
+export const NTLogo = (props) => {
+ return (
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/RIGSuit/types.ts b/tgui/packages/tgui/interfaces/RIGSuit/types.ts
index 0c57ffb6366..276d07754d6 100644
--- a/tgui/packages/tgui/interfaces/RIGSuit/types.ts
+++ b/tgui/packages/tgui/interfaces/RIGSuit/types.ts
@@ -2,6 +2,7 @@ import type { BooleanLike } from 'tgui-core/react';
export type Data = {
primarysystem: string | null;
+ interface_intro: string;
ai: BooleanLike;
cooling: BooleanLike;
sealed: BooleanLike;
diff --git a/tgui/packages/tgui/styles/interfaces/RIGSuit.scss b/tgui/packages/tgui/styles/interfaces/RIGSuit.scss
index da23abe161d..f40186622b4 100644
--- a/tgui/packages/tgui/styles/interfaces/RIGSuit.scss
+++ b/tgui/packages/tgui/styles/interfaces/RIGSuit.scss
@@ -49,3 +49,16 @@
0.2s -webkit-filter linear;
-webkit-user-drag: none;
}
+
+@keyframes wipe-in-up {
+ from {
+ clip-path: inset(100% 0 0 0);
+ }
+ to {
+ clip-path: inset(0 0 0 0);
+ }
+}
+
+.RIGSuit__Animation__WipeUp {
+ animation: 1s linear wipe-in-up both;
+}