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

Update WeaponStats TGUI #386

Merged
merged 3 commits into from
Aug 18, 2024

Conversation

Doubleumc
Copy link
Contributor

About the pull request

Fixes the WeaponStats TGUI from not displaying:
image

Additionally, updates it to be current with main CM.

Explain why it's good for the game

Bug bad.

Testing Photographs and Procedure

image

Changelog

🆑
fix: fixed WeaponStats TGUI
/:cl:

Drulikar and others added 3 commits August 17, 2024 13:10
…(#5631)

This PR finalizes the work Stan started on but didn't finish for the
weapon examine stats panels. Now rather than individual sprites in the
nano ui weapons folder, the images are loaded from a couple
spritesheets. Additionally, when these spritesheets are loaded, they
check to ensure all gun subtypes that have a base_gun_icon match with an
icon in the sprite sheet. E.g.

![image](https://github.com/cmss13-devs/cmss13/assets/76988376/41a20922-9200-4105-a7c4-d5a4eddd55a9)

All "created" sprites are just the existing images from the nano ui
weapons folders.

More efficient resource distribution!

![image](https://github.com/cmss13-devs/cmss13/assets/76988376/34c5c5a0-0bcb-4a02-b534-0a0fa6df1057)

:cl: Drathek
ui: Refactored backend for Weapon Stats panel to use spritesheets
instead.
/:cl:
This PR is a follow up to #5631 and does several things related to gun
icons:
- Autowiki now skips mags and guns with no icon_staste set (I did the
same for attachments, but none are in this scenario)
- Gun lineart now has the no_name sprite as the first sprite so it is
used again as the default sprite when no lineart exists
- Various gun linearts have been duplicated for sub types that are
basically the same icon.
- The testing for missing linearts has been fixed to check icon_state
instead of base_gun_icon because only a couple guns even assigned
base_gun_icon before Initialize
- The testing for missing linearts now skips `GUN_UNUSUAL_DESIGN` since
they can't be inspected
- The unit_test for spritesheets now enforces css requirements. See
https://www.w3.org/TR/CSS2/syndata.html#value-def-identifier
- The 88m4 has been renamed to _88m4 to comply with css requirements.
- Removed the two cases where a base_gun_icon was set in the definition
(that would just get reset in Initialize)
- Since many guns are now missing sprites in the missing lineart test,
the testing error is downgraded to only a debug log until they can all
have an exception set or the icons set. Currently all the missing
sprites are below:

<details>
<summary>Missing Sprites in
icons/obj/items/weapons/guns/lineart.dmi</summary>

- /obj/item/weapon/gun/pistol/np92, icon_state="np92"
- /obj/item/weapon/gun/pistol/np92/suppressed, icon_state="npz92"
- /obj/item/weapon/gun/pistol/np92/suppressed/tranq, icon_state="npz92"
- /obj/item/weapon/gun/pistol/t73, icon_state="tt"
- /obj/item/weapon/gun/pistol/t73/leader, icon_state="ttb"
- /obj/item/weapon/gun/pistol/clfpistol, icon_state="m43"
- /obj/item/weapon/gun/pistol/es4, icon_state="es4"
- /obj/item/weapon/gun/energy/rxfm5_eva, icon_state="rxfm5_eva"
- /obj/item/weapon/gun/launcher/rocket/anti_tank, icon_state="m83a2"
- /obj/item/weapon/gun/launcher/rocket/anti_tank/disposable,
icon_state="m83a2"
- /obj/item/weapon/gun/launcher/rocket/upp, icon_state="hjra12"
- /obj/item/weapon/gun/rifle/m41a/elite/xm40, icon_state="m40sd"
- /obj/item/weapon/gun/rifle/m41a/elite/xm40/ap, icon_state="m40sd"
- /obj/item/weapon/gun/rifle/nsg23, icon_state="nsg23"
- /obj/item/weapon/gun/rifle/nsg23/stripped, icon_state="nsg23"
- /obj/item/weapon/gun/rifle/nsg23/no_lock, icon_state="nsg23"
- /obj/item/weapon/gun/rifle/nsg23/no_lock/stripped, icon_state="nsg23"
- /obj/item/weapon/gun/rifle/mar40/lmg, icon_state="mar50"
- /obj/item/weapon/gun/rifle/mar40/lmg/tactical, icon_state="mar50"
- /obj/item/weapon/gun/rifle/xm177, icon_state="xm177"
- /obj/item/weapon/gun/rifle/xm177/dutch, icon_state="xm177"
- /obj/item/weapon/gun/rifle/ar10, icon_state="ar10"
- /obj/item/weapon/gun/rifle/m4ra, icon_state="m4ra"
- /obj/item/weapon/gun/rifle/m4ra/training, icon_state="m4ra"
- /obj/item/weapon/gun/rifle/l42a/abr40, icon_state="abr40"
- /obj/item/weapon/gun/rifle/l42a/abr40/tactical, icon_state="abr40_tac"
- /obj/item/weapon/gun/rifle/rmc_f90, icon_state="aug"
- /obj/item/weapon/gun/rifle/rmc_f90/a_grip, icon_state="aug_com"
- /obj/item/weapon/gun/rifle/rmc_f90/scope, icon_state="aug_dmr"
- /obj/item/weapon/gun/rifle/rmc_f90/shotgun, icon_state="aug_mkey"
- /obj/item/weapon/gun/rifle/m4ra_custom, icon_state="m4ra_custom"
- /obj/item/weapon/gun/rifle/sniper/XM43E1, icon_state="xm43e1"
- /obj/item/weapon/gun/rifle/sniper/svd, icon_state="type88"
- /obj/item/weapon/gun/boltaction, icon_state="boltaction"
- /obj/item/weapon/gun/boltaction/vulture, icon_state="vulture"
- /obj/item/weapon/gun/boltaction/vulture/skillless,
icon_state="vulture"
- /obj/item/weapon/gun/lever_action, icon_state="r4t-placeholder"
- /obj/item/weapon/gun/lever_action/r4t, icon_state="r4t"
- /obj/item/weapon/gun/lever_action/xm88, icon_state="boomslang"
- /obj/item/weapon/gun/pkp, icon_state="qjy72"
- /obj/item/weapon/gun/revolver/m44/custom/pkd_special,
icon_state="lapd_2019"
- /obj/item/weapon/gun/revolver/m44/custom/pkd_special/k2049,
icon_state="lapd_2049"
- /obj/item/weapon/gun/revolver/m44/custom/pkd_special/l_series,
icon_state="pkd_double"
- /obj/item/weapon/gun/revolver/m44/custom/webley, icon_state="webley"
- /obj/item/weapon/gun/revolver/upp, icon_state="zhnk72"
- /obj/item/weapon/gun/revolver/upp/shrapnel, icon_state="zhnk72"
- /obj/item/weapon/gun/shotgun/combat/riot, icon_state="mp220"
- /obj/item/weapon/gun/shotgun/combat/guard, icon_state="mp221"
- /obj/item/weapon/gun/shotgun/combat/marsoc, icon_state="mk210"
- /obj/item/weapon/gun/shotgun/type23, icon_state="type23"
- /obj/item/weapon/gun/shotgun/type23/breacher, icon_state="type23"
- /obj/item/weapon/gun/shotgun/type23/breacher/slug, icon_state="type23"
- /obj/item/weapon/gun/shotgun/type23/breacher/flechette,
icon_state="type23"
- /obj/item/weapon/gun/shotgun/type23/dual, icon_state="type23"
- /obj/item/weapon/gun/shotgun/type23/dragon, icon_state="type23"
- /obj/item/weapon/gun/shotgun/type23/riot_control, icon_state="type23"
- /obj/item/weapon/gun/shotgun/double/twobore, icon_state="twobore"
- /obj/item/weapon/gun/smartgun/rmc, icon_state="magsg"
- /obj/item/weapon/gun/smg/pps43, icon_state="insasu"
- /obj/item/weapon/gun/smg/pps43/extended_mag, icon_state="insasu"
- /obj/item/weapon/gun/smg/bizon, icon_state="type64"
- /obj/item/weapon/gun/smg/bizon/upp, icon_state="type64_u"
- /obj/item/weapon/gun/smg/uzi, icon_state="uzi"
- /obj/item/weapon/gun/smg/nailgun, icon_state="nailgun"
- /obj/item/weapon/gun/smg/nailgun/compact, icon_state="cnailgun"

</details>

Now the 88m4 pistol doesn't show up as the default icon, and instead is
the no_name icon:

![image](https://github.com/cmss13-devs/cmss13/assets/76988376/6d02f72b-4a29-48d6-900a-8b7109cd5057)

Now spritesheet states that can't be displayed (such as the 88m4 because
it starts with a digit) will fail unit tests:

![image](https://github.com/cmss13-devs/cmss13/assets/76988376/180d5834-d873-46b4-9cb8-e4c0ac03d033)
but I ensured the rename to _88m4 still works correctly even with the
empty state:

![image](https://github.com/cmss13-devs/cmss13/assets/76988376/0b788b37-e993-4c25-af3a-f4f7778034ac)

See above.

All "new" sprites are duplicates of existing.

:cl: Drathek
code: Autowiki now skips guns and mags without icon_states
code: Unit testing for spritesheets now enforces css requirements for
class names
imageadd: Gun stats lineart now uses the no_name sprite again for guns
without lineart
/:cl:
replaces the armor break stat in the weapons stats screen with effective
range

armor break has not been in the normal gameplay loop for ages. it just
serves as a decorative progress bar in its current state. effective
range is something that is much more integral for marines to know.

<details>
<summary>Screenshots & Videos</summary>
it compiled and i didn't get any runtimes when lightly testing it

![wepaon
stats](https://github.com/user-attachments/assets/553ca9c4-d1f4-4c11-abfc-d2a511e558de)

</details>

:cl:
add: The weapon stats screen now shows the effective range of ammo,
instead of its armor punch value.
/:cl:
@AndroBetel AndroBetel merged commit 36ffd34 into cmss13-devs:master Aug 18, 2024
36 checks passed
cm13-github added a commit that referenced this pull request Aug 18, 2024
@Doubleumc Doubleumc deleted the update-weaponstats-tgui branch August 18, 2024 20:27
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.

4 participants