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

Commits on Aug 17, 2024

  1. Replace nanoui weapon sprite lineart with spritesheet weapon lineart …

    …(#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:
    Drulikar authored and Doubleumc committed Aug 17, 2024
    Configuration menu
    Copy the full SHA
    7f0c7dd View commit details
    Browse the repository at this point in the history
  2. Update Guns Lineart and Autowiki Handling of Base Types (#5729)

    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:
    Drulikar authored and Doubleumc committed Aug 17, 2024
    Configuration menu
    Copy the full SHA
    509c6ae View commit details
    Browse the repository at this point in the history
  3. Replaces armor break with effective range in weapon stats (#6831)

    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:
    VileBeggar authored and Doubleumc committed Aug 17, 2024
    Configuration menu
    Copy the full SHA
    58b92fd View commit details
    Browse the repository at this point in the history