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

Holograms #233

Open
wants to merge 26 commits into
base: master
Choose a base branch
from
Open

Holograms #233

wants to merge 26 commits into from

Conversation

Pspritechologist
Copy link
Member

@Pspritechologist Pspritechologist commented Feb 6, 2024

Description

Adds Holograms, an early game alternative to cloning. Coming back as a Hologram is one part trans humanist nightmare, one part mockery of the very fundamental aspects of life, and 100% not being alive!

Will describe more once features are done.
Soon ™️


Tasks

  • Task
  • Completed Task

Media


Changelog

🆑

  • add: Added fun!
  • tweak: Tweaked fun!
  • fix: Fixed fun!
  • remove: Removed fun!

Pspritechologist and others added 20 commits October 11, 2023 05:14
…ologram is deleted upon spawning and crashes as no hologram component is found?
…benefit. There's a grace period upon leaving a projector of one 24th of a second before you get returned.
…he protos, make a temp new tag Light, deleted unused files, renamed HoloData to HoloMind, and made HoloData struct to hold info on the Holo like type and whether it's hardlight. Needs implementing in YAML.
…an interact with light things, and non-Holograms can't.
… work on hologram data in the component (no structs ;-;), and refined the variations of Holograms.
Man I was really smashing rocks together before :P
Also I removed the stinky Nyano Holo stuff
The HologramComponent has now been broken up into three Components, soon to be more. All the functions of the HologramSystem are chunked up and completely reconsidered.
Prediction is cool.
…ity.

Need to decide how the projector selection is done, and how to filter collisions.
…ng new functionality.

The AIEye can now function as a camera-bound Hologram (commented out), work still needs to be done on making Hologram disks and servers cool to use, and I need to decide how to determine what a Hologram collides with.
@github-actions github-actions bot added Changes: C# Changes any cs files Changes: Localization Changes any ftl files Changes: Sprite Changes any png or json in an rsi Changes: YML Changes any yml files labels Feb 6, 2024
Copy link

github-actions bot commented Feb 6, 2024

RSI Diff Bot; head commit bc384d3 merging into 4b65cdf
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/SimpleStation14/Effects/hologram_projection_beam.rsi

State Old New Status
beam Added

Resources/Textures/SimpleStation14/Mobs/Pets/corgi.rsi

State Old New Status
holo_corgi Added

Resources/Textures/SimpleStation14/Mobs/Silicon/scutter.rsi

State Old New Status
l_hand Added
r_hand Added
scutter Added
shell Added

Edit: diff updated after bc384d3

Comment on lines 233 to 236
# North: "0, 0.40"
# East: "-0.15, 0"
# South: "0, -0.20"
# West: "-0.15, 0"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think these are upside down?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Scutters haven't been updated along with other stuff, and they'll probably want most of a redo in general.

- type: entity
name: holo corgi
description: "A hologramatic projection of a corgi, computed by the SAI and rendered by the station's cameras."
id: MobCorgiHolo
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto for HoloCorgi as Scutter

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should probably just have human bodies? I think they might...

@@ -57,3 +57,6 @@
containers:
board: !type:Container
ents: []
- type: Tag
tags:
- Hardlight
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So that Holograms can interact with computers... Really not ideal, though.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They can't do that!
The sAI can't

@@ -131,5 +131,8 @@
- type: DynamicPrice
price: 150
- type: AccessReader
- type: Tag
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably not needed, maybe good to have anyway? I could change collision to be an EntityWhitelist instead of tags and then just use the Component

@Pspritechologist Pspritechologist self-assigned this Feb 6, 2024
Comment on lines +14 to +21

public override void Initialize()
{
base.Initialize();

SubscribeLocalEvent<HologramProjectedComponent, ComponentShutdown>(OnProjectedShutdown);
}

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<HologramProjectedComponent, ComponentShutdown>(OnProjectedShutdown);
}
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<HologramProjectedComponent, ComponentShutdown>(OnProjectedShutdown);
}

SubscribeLocalEvent<HologramProjectorComponent, SurveillanceCameraChangeStateEvent>((ent, comp, args) => CheckState(ent, comp));
SubscribeLocalEvent<HologramProjectorComponent, MapInitEvent>((ent, comp, args) => CheckState(ent, comp));
}

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

Comment on lines 30 to 39

public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<HologramServerComponent, EntInsertedIntoContainerMessage>(OnEntInserted);
SubscribeLocalEvent<HologramServerComponent, EntRemovedFromContainerMessage>(OnEntRemoved);
SubscribeLocalEvent<HologramDiskComponent, AfterInteractEvent>(OnAfterInteract);
SubscribeLocalEvent<HologramServerComponent, PowerChangedEvent>(OnPowerChanged);
}

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<HologramServerComponent, EntInsertedIntoContainerMessage>(OnEntInserted);
SubscribeLocalEvent<HologramServerComponent, EntRemovedFromContainerMessage>(OnEntRemoved);
SubscribeLocalEvent<HologramDiskComponent, AfterInteractEvent>(OnAfterInteract);
SubscribeLocalEvent<HologramServerComponent, PowerChangedEvent>(OnPowerChanged);
}
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<HologramServerComponent, EntInsertedIntoContainerMessage>(OnEntInserted);
SubscribeLocalEvent<HologramServerComponent, EntRemovedFromContainerMessage>(OnEntRemoved);
SubscribeLocalEvent<HologramDiskComponent, AfterInteractEvent>(OnAfterInteract);
SubscribeLocalEvent<HologramServerComponent, PowerChangedEvent>(OnPowerChanged);
}

Comment on lines +3 to +4
"license": "",
"copyright": "",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

!

isHardLight: false
collideTags:
- Wall
- Airlock
Copy link
Member Author

@Pspritechologist Pspritechologist Feb 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make it so chairs are interactable but only when anchored.
Requesting a chair be screwed down so you can sit in it is very funny.

@Pspritechologist
Copy link
Member Author

A looping, very soft 'vwooom' sound effect that plays on whenever the hologram is currently not colliding with something they otherwise would be?


var pref = (HumanoidCharacterProfile) _prefs.GetPreferences(mind.UserId.Value).SelectedCharacter;

var mob = HoloFetchAndSpawn(pref, coords, "MobHologramProjected");
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very hardcoded :P

@Pspritechologist Pspritechologist marked this pull request as ready for review February 9, 2024 04:51
Getting some weird errors with the UI system that makes it not testable, but it works in theory.
It's super crummy regardless, but it would work for putting Holograms in game.
@github-actions github-actions bot added the Changes: UI Changes any XAML files label Feb 10, 2024
system-hologram-phasing-appear-self = You materialize into being!
system-hologram-phasing-appear-others = {$name} materializes into being!
system-hologram-phasing-disappear-others = {$name} dematerializes in a fizz!
system-hologram-phasing-death-self = You faze out of being!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
system-hologram-phasing-death-self = You faze out of being!
system-hologram-phasing-death-self = You phaze out of being!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤓

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes: C# Changes any cs files Changes: Localization Changes any ftl files Changes: Sprite Changes any png or json in an rsi Changes: UI Changes any XAML files Changes: YML Changes any yml files
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants