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

[MIRROR] Icon Autoslicing (#79659) #1038

Merged
merged 1 commit into from
Dec 9, 2023
Merged

[MIRROR] Icon Autoslicing (#79659) #1038

merged 1 commit into from
Dec 9, 2023

Conversation

Steals-The-PRs
Copy link
Collaborator

Mirrored on Skyrat: Skyrat-SS13/Skyrat-tg#25485

ORIGINAL PR: tgstation/tgstation#79659

Ok so you know all the dmis we have that are made to work with the smoothing system? carpets, walls, etc.

The proper way to edit those is to convert them into a png with 5 "states' it in (one for 0 connections, one for horizontal, one for vertical, one for all cardinals and one for all directions) and then modify THAT, then run it through the cutter
tool.

But none ever does that, because we explain it fucking nowhere. So instead, let's keep all those "base" files in the repo, alongside the configs they work with, and "cut" the pngs into dmis as a part of the build process.

I wrote a guide for how to interact with this system as a spriter, you can find it
HERE.

Adds a icon cutter build
task

This relies on action ninja's hypnagogic (find more here), a rust based icon cutter.
It operates inline with the file structure, searching the codebase for templates and resource files and compiling them down to dmis.

It can do way more then just bitmask stuff, but that is what we are using it for rn.

Hope is to prevent for eternity the "I'm just gonna edit each of these 255 icon states that's how this carpet was made right?" meme, and allow more expansive use of smoothing in future

Adds a lint that ensures config files work
right

Checks to ensure they have a paired png and dmi, and also avoids issues with uncompiled changes by double checking that nothing happens before/after a cutter run

Pulls all non smoothed states out of structures into bespoke dmis

This is required because the cutter cannot output named icon states, only the actual cut icon

Does something similar to
walls

Moves reinforced walls decon stuff from their icon to a var on the type and a set of states in the reinforced_states dmi

Moves falsewalls into their own dmi, this involved some changes to gamecode to ensure falsewalls knew which dmi to use and what key. Makes falsewalls display as such in editor rather then just walls

Moves smoothrock's gibonite overlays into their own file for similar reasons

Same thing different day
(Floors)

Pulls bespoke floor icon states into their own file, splits up neon carpets into multiple files to make cutting possible

Actually adds the cut templates and their matching png files

Not much to report here, outside of I changed the prefix for bamboo walls to bamboo_wall so it works with false_walls

image

None should have to manually edit cut dmis. Ever.
Also this makes adding a new smoothed thing trivial, don't even need to know what tool you're using to do it. V good v good. Sets us up nicely for wallening's well, wall of sprites.

Some structural decisions, we are essentially committing build artifacts here. That's the best way of handling it because otherwise mappers could need to run build.bat before opening a map, and that is stupid!

🆑 LemonInTheDark
refactor: (Almost) all smoothed icons can now be edited in their pre cut forms
/:cl:

* Icon Autoslicing (#79659)

Ok so you know all the dmis we have that are made to work with the
smoothing system? carpets, walls, etc.

The proper way to edit those is to convert them into a png with 5
"states' it in (one for 0 connections, one for horizontal, one for
vertical, one for all cardinals and one for all directions) and then
modify THAT, then run it through [the cutter
tool.](https://github.com/tgstation/icon-cutter)

But none ever does that, because we explain it fucking nowhere. So
instead, let's keep all those "base" files in the repo, alongside the
configs they work with, and "cut" the pngs into dmis as a part of the
build process.

I wrote a guide for how to interact with this system as a spriter, you
can find it
[HERE](https://github.com/LemonInTheDark/tgstation/blob/slice-the-sky/icons/Cutter.md).

[Adds a icon cutter build
task](tgstation/tgstation@52143d2)

This relies on action ninja's hypnagogic (find more
[here](https://github.com/actioninja/hypnagogic)), a rust based icon
cutter.
It operates inline with the file structure, searching the codebase for
templates and resource files and compiling them down to dmis.

It can do way more then just bitmask stuff, but that is what we are
using it for rn.

Hope is to prevent for eternity the "I'm just gonna edit each of these
255 icon states that's how this carpet was made right?" meme, and allow
more expansive use of smoothing in future

[Adds a lint that ensures config files work
right](tgstation/tgstation@21eeab9)

Checks to ensure they have a paired png and dmi, and also avoids issues
with uncompiled changes by double checking that nothing happens
before/after a cutter run

[Pulls all non smoothed states out of structures into bespoke
dmis](tgstation/tgstation@a730e0c)

This is required because the cutter cannot output named icon states,
only the actual cut icon

[Does something similar to
walls](tgstation/tgstation@40780e9)

Moves reinforced walls decon stuff from their icon to a var on the type
and a set of states in the reinforced_states dmi

Moves falsewalls into their own dmi, this involved some changes to
gamecode to ensure falsewalls knew which dmi to use and what key.
Makes falsewalls display as such in editor rather then just walls

Moves smoothrock's gibonite overlays into their own file for similar
reasons

[Same thing different day
(Floors)](tgstation/tgstation@9a3da3b)

Pulls bespoke floor icon states into their own file, splits up neon
carpets into multiple files to make cutting possible

[Actually adds the cut templates and their matching png
files](tgstation/tgstation@1bd8920)

Not much to report here, outside of I changed the prefix for bamboo
walls to bamboo_wall so it works with false_walls

![image](https://github.com/tgstation/tgstation/assets/58055496/7c3ac7fb-873c-481b-8667-082e39432876)

None should have to manually edit cut dmis. Ever.
Also this makes adding a new smoothed thing trivial, don't even need to
know what tool you're using to do it. V good v good.
Sets us up nicely for wallening's well, wall of sprites.

Some structural decisions, we are essentially committing build artifacts
here. That's the best way of handling it because otherwise mappers could
need to run build.bat before opening a map, and that is stupid!

:cl:
refactor: (Almost) all smoothed icons can now be edited in their pre cut
forms
/:cl:

* Update false_walls.dm

* Modular

* Fixes override for reinforced walls, removals skyrat edits in favor of overrides

---------

Co-authored-by: LemonInTheDark <[email protected]>
@Iajret Iajret merged commit b648516 into master Dec 9, 2023
30 checks passed
@Iajret Iajret deleted the upstream-mirror-25485 branch December 9, 2023 13:35
AnywayFarus added a commit that referenced this pull request Dec 9, 2023
Iajret pushed a commit that referenced this pull request Feb 19, 2024
* Valentines Day Rework (Better Late Than Never) (#81499)

## About The Pull Request

Big changes:

- Participation is Valentines day requires consent, as consent is
important.
- When the event triggers, all valid players are automatically signed up
to get a random date. However if you're uninterested, you can opt out of
getting a date.
- This uses the same system as ghost role polling, so it's a
non-obstrusive screen alert + chat box entry.

- AIs are now given a zeroth law to protect their date. 
   - This does not override existing zeroth laws (for malf ais). 
- This zeroth is law is worded in a way such that they are not
effectively malf AIs. Their other laws still apply, but not for
situations pertaining to their date.

- Cyborgs are desynced from AIs and are given similar zeroth laws to
protect their date.


![image](https://github.com/tgstation/tgstation/assets/51863163/0d1cca3e-f483-484c-90a8-9bb5492e2c69)

Small changes: 

- Valentines cards are now paper. Meaning you can write on them, stamp
them, or yes, burn them.

- Third wheeling is more codified than before. Third wheels get their
own antag datum type.

- The antag panel listing in roundend takes up significantly less room
for each date. Additionally, dates are now paired up with each other.

- Adds implementations for getting pronouns from mind datums. 


![image](https://github.com/tgstation/tgstation/assets/51863163/2107e7d2-6197-4f64-9245-54037ca6c0ec)

## Why It's Good For The Game

It's 2024 and our Valentines day is sooo 2012. 

I'm a big fan of Valentines Day, personally - it gives me the
opportunity to mess around with another player that I probably would not
otherwise mess around with, getting into shenanigans I would not
otherwise.

But as the years have gone by it's gotten pretty lackluster. Some people
like it as much as I do, but others ditch it entirely and ignore the
objectives.

And if you get paired with someone ignoring it, well, now you're out of
luck!

This is something I'm aiming to rectify by making it opt-in when it
triggers rather than forced. All the people participating will be
guaranteed to get someone who cares about the event as much, which makes
it more fun.

As for the silicon changes, there's been lots of confusion around
silicons and their dates, so I thought I'd fix it here as well.

Also, better late than never? 

## Changelog

:cl: Melbert
add: Valentines Day now polls all players for candidates when it
triggers rather than forcing all players to be a Valentine. Consent is
important.
add: Valentine silicons now gain special laws pertaining to their date. 
qol: Valentines Cards are now paper, so you can write on them, stamp
them, or burn them.
qol: Valentine's roundend report no longer takes up a massive amount of
space and also no longer sound so, so weird.
/:cl:

* Valentines Day Rework (Better Late Than Never)

* Update icemoon_underground_interdyne_base1.dmm

---------

Co-authored-by: MrMelbert <[email protected]>
Co-authored-by: SomeRandomOwl <[email protected]>
Co-authored-by: Mal <[email protected]>
Iajret added a commit that referenced this pull request Feb 19, 2024
* [MIRROR] Valentines Day Rework (Better Late Than Never) (#1038)

* Valentines Day Rework (Better Late Than Never) (#81499)

## About The Pull Request

Big changes:

- Participation is Valentines day requires consent, as consent is
important.
- When the event triggers, all valid players are automatically signed up
to get a random date. However if you're uninterested, you can opt out of
getting a date.
- This uses the same system as ghost role polling, so it's a
non-obstrusive screen alert + chat box entry.

- AIs are now given a zeroth law to protect their date. 
   - This does not override existing zeroth laws (for malf ais). 
- This zeroth is law is worded in a way such that they are not
effectively malf AIs. Their other laws still apply, but not for
situations pertaining to their date.

- Cyborgs are desynced from AIs and are given similar zeroth laws to
protect their date.


![image](https://github.com/tgstation/tgstation/assets/51863163/0d1cca3e-f483-484c-90a8-9bb5492e2c69)

Small changes: 

- Valentines cards are now paper. Meaning you can write on them, stamp
them, or yes, burn them.

- Third wheeling is more codified than before. Third wheels get their
own antag datum type.

- The antag panel listing in roundend takes up significantly less room
for each date. Additionally, dates are now paired up with each other.

- Adds implementations for getting pronouns from mind datums. 


![image](https://github.com/tgstation/tgstation/assets/51863163/2107e7d2-6197-4f64-9245-54037ca6c0ec)

## Why It's Good For The Game

It's 2024 and our Valentines day is sooo 2012. 

I'm a big fan of Valentines Day, personally - it gives me the
opportunity to mess around with another player that I probably would not
otherwise mess around with, getting into shenanigans I would not
otherwise.

But as the years have gone by it's gotten pretty lackluster. Some people
like it as much as I do, but others ditch it entirely and ignore the
objectives.

And if you get paired with someone ignoring it, well, now you're out of
luck!

This is something I'm aiming to rectify by making it opt-in when it
triggers rather than forced. All the people participating will be
guaranteed to get someone who cares about the event as much, which makes
it more fun.

As for the silicon changes, there's been lots of confusion around
silicons and their dates, so I thought I'd fix it here as well.

Also, better late than never? 

## Changelog

:cl: Melbert
add: Valentines Day now polls all players for candidates when it
triggers rather than forcing all players to be a Valentine. Consent is
important.
add: Valentine silicons now gain special laws pertaining to their date. 
qol: Valentines Cards are now paper, so you can write on them, stamp
them, or burn them.
qol: Valentine's roundend report no longer takes up a massive amount of
space and also no longer sound so, so weird.
/:cl:

* Valentines Day Rework (Better Late Than Never)

* Update icemoon_underground_interdyne_base1.dmm

---------

Co-authored-by: MrMelbert <[email protected]>
Co-authored-by: SomeRandomOwl <[email protected]>
Co-authored-by: Mal <[email protected]>

* Update lavaland_surface_interdyne_base1.dmm

---------

Co-authored-by: NovaBot <[email protected]>
Co-authored-by: MrMelbert <[email protected]>
Co-authored-by: SomeRandomOwl <[email protected]>
Co-authored-by: Mal <[email protected]>
Co-authored-by: Iajret <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants