mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-23 15:14:43 +01:00
64f76f52a9
## Interface Science You know what the problem is with our features? They're all too easy, too optimized to use. Look at Genetics; we went from a confusing UI that a 14 year old hardcoded with html into byond to a polished UI using tgui, optimized for player comfort, and gameplay has suffered. Too long we have coddled players with fun and easy content, no more I say!!! To fix ss13, I have added a feature with the most awful, unusable UI ever. It's just wires with random sequences that may or may not do something. And yet, you will use it till your fingers bleed and your eyes go white, and you will be grateful. "Thank you coder daddy", you say as you sacrifice yourself to a display of unending, procedurally generated dogshit. <img width="563" height="294" alt="image" src="https://github.com/user-attachments/assets/e56c947f-a40c-4df9-beed-672812357576" /> Or maybe you're a sick little deviant, and you don't respect me. Instead of using my awful UI, you start optimizing. You've forced the secret pulse code, and you're not going to pulse them again and again. You make your own interface by connecting it with signallers, or integrated circuits. Ahhh, you beat me! Damn it, and you're gonna get away with it too. ## About the Pull Request Adds new job content to science. Science spawns with a few "gizmo" devices and can order more through cargo. These gizmo's have random functionalities, like the strange objects you can find in maintenance. These functionalities come with different settings to change how they operate. However, there are no buttons, just wires or a voice interface. You need to solve, for example, a wire puzzle. You just pulse the wires, and if you hear ping the sequence is good, if you hear buzz its bad. Just keep going till you hear a creak sound. If you do a sequence correctly, there are a bunch of randomly generated ways this interacts with the functionality, mimicking real life settings and interactions. Imagine a TV remote with randomized buttons, and you have to map them out again. Once you've mapped the sequences, you can make an interface. For simple ones, you can just make some signaller assemblies. For the best control, you could connect it with a bunch of integrated circuit signallers, and program sequences into an integrated circuit machine. Below is a short video of how the puzzle solving works. (I can't be arsed to figure out how to record tgui, here's a video I made with my phone. Also I had the sequences written down, which I STRONGLY recommend you do.) https://github.com/user-attachments/assets/93f79f0f-df14-4ff9-8096-f079ebae7e91 <details> <summary>Actual details</summary> I have hidden the details to make exploring the feature itself more fun. The whole thing was written to be convoluted, but intuitive. You should be able to hit it with a multitool, and figure out everything from there. It will take a bit to get the gist of it. Nonetheless, for review purposes I have written down the details here. If you're reading this for non-review purposes, you should know I have embedded an internet curse that will at some point in 2026 teleport you 2 meters in a random direction. Continue reading at your own discretion. The gizmo objects is usually generated with 1 or 2 'gizmodes'. 'Gizmodes' contains the fun-ctionality, and holds different operating modes (so dubbed 'gizpulse'). You can't directly select a gizpulse, but instead it generates a bunch of mode selections. For example, a function that toggles lights has two gizpulses: toggle_on and toggle_off. There are four different mode selects: Cycle mode: Adds signal to cycle to the next gizpulse, and to activate the current gizpulse Select mode: Adds a signal for selecting every gizpulse, and a signal to activate whatever the activate gizpulse is Direct activate mode: Adds a signal for selecting every gizpulse, and also immediately activates that gizpulse Cycle-active mode: Cycles to the next mode, and activates it (inconvenient but only has 1 signal to worry about) So a light gizmode with the randomly selected 'select mode' has three signals: select toggle_on, select toggle_off and trigger the currently selected gizpulse. Currently implemented gizmodes: - Lights: toggle on, toggle off - Move: start moving, stop moving - Food printer (its filled with the spongebob grey goop thing): print food (donut or burger) - Mood pulser (AOE): happy pulse, sad pulse, radiation pulse - Mopper: select different reagent, dump onto tile (1/2/3 range), make smoke cloud - Teleporter (5 to 15 tiles, random dir): Teleport self, teleport mobs in range 1, do both - Electric: charge from nearest cell (looks into objects and stuff), magically gain some charge, make lightning, make emp, charge nearby object, defibrillate in an area - Copier (makes fake copies of mobs and objects, visual copy only): scan objects, print objects, erase all copies - Sputter: dump oil and shake, throw self - Bad: explode, explode, explode harder, explode with fire, stab you, warning, make robot spider, breaks your bones, throws a grenade at you, radiation pulses - Some behind the scenes gizmodes (language toggle for voice interface, for example) The voice interface starts with wires, with signals to toggle the language or dump the code words. After that, you can talk to it using the code words similarly to the wire sequence to solve the rest of the gizmodes. </details> I've added two to every map, somewhere in or near the experimentor room. They may ocassionally spawn from a maintenance crate spawner <img width="611" height="331" alt="image" src="https://github.com/user-attachments/assets/3782700f-57d3-4591-9282-e0de590056e1" /> ## Why It's Good For The Game It's really difficult to have "experimentation" type features in the game. It all has to fit into 1h rounds, and people get used to it real quick. The experimentor and strange objects kinda try, but it's just one button and praying a bear doesnt spawn you explodes you. I don't claim to have solved this perfectly, but I think this is fun. You truly have to start experimenting, be systematic and write things down. If you figure out how something works, you can go to the next stage of making it more convenient to use. I think it's really fun to mess around with integrated circuits and USB's, and make, for example, a BCI controlled bluespace launchpad. So I lean into it! There's different settings to account for, and its up to you to make it usable! If you like integrated circuits, you'll love this (maybe). The gizmo functions are aimed at benefiting the station as a whole in some ways, to motivate people to make some fun systems for these to get maximum benefit! A mood pulser near a busy area will make everyone happier! (I do need to add more like these, I got distracted doing stupid shit.)
27 lines
657 B
Plaintext
27 lines
657 B
Plaintext
/// Just move something around in the simplest way possible
|
|
/datum/element/moving_randomly
|
|
element_flags = ELEMENT_DETACH_ON_HOST_DESTROY
|
|
|
|
/// Movables that we are moving around
|
|
var/list/movers = list()
|
|
|
|
/datum/element/moving_randomly/Attach(datum/target)
|
|
. = ..()
|
|
|
|
if(!ismovable(target))
|
|
return ELEMENT_INCOMPATIBLE
|
|
|
|
movers += target
|
|
|
|
/datum/element/moving_randomly/Detach(datum/source, ...)
|
|
. = ..()
|
|
|
|
movers -= source
|
|
|
|
/datum/element/moving_randomly/New()
|
|
START_PROCESSING(SSdcs, src)
|
|
|
|
/datum/element/moving_randomly/process(seconds_per_tick)
|
|
for(var/atom/movable/mover as anything in movers)
|
|
mover.Move(get_step(mover, pick(GLOB.alldirs)))
|