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

[WIP] Basic implementation of bionics slots system #15937

Closed
wants to merge 8 commits into from
Closed

[WIP] Basic implementation of bionics slots system #15937

wants to merge 8 commits into from

Conversation

illi-kun
Copy link
Contributor

Sorry for creating new PR, it's continue of #15774 (with resolved merge conflict).
Basic functionality is ready for review, balancing of slots for each CBM and further tweaks of UI will be done as separate PRs (if the current PR will be mainlined soon) or as separate commits (if this PR will not be merged yet).

@illi-kun
Copy link
Contributor Author

Screenshots of current progress:
item_info

main_menu

filtered

not_enough

@illi-kun
Copy link
Contributor Author

List of bionics and associated bodyparts (+number of slots):

CBM Name Bodypart Slot
Acidic Discharge ARM_L 1
Acidic Discharge ARM_R 1
Acidic Discharge LEG_L 2
Acidic Discharge LEG_R 2
Acidic Discharge TORSO 3
Active Defense System ARM_L 1
Active Defense System ARM_R 1
Active Defense System HEAD 1
Active Defense System LEG_L 2
Active Defense System LEG_R 2
Active Defense System TORSO 10
Adrenaline Pump TORSO 6
Advanced Microreactor System TORSO 55
Aero-Evaporator HAND_R 1
Aero-Evaporator TORSO 5
Air Filtration System MOUTH 2
Air Filtration System TORSO 4
Alarm System HEAD 1
Alarm System TORSO 2
Alloy Plating - Arms ARM_L 4
Alloy Plating - Arms ARM_R 4
Alloy Plating - Head HEAD 5
Alloy Plating - Legs LEG_L 6
Alloy Plating - Legs LEG_R 6
Alloy Plating - Torso TORSO 10
Anti-glare Compensators EYES 1
Artificial Night Generator TORSO 16
Battery System TORSO 25
Bionic Claws HAND_L 5
Bionic Claws HAND_R 5
Bionic Nostril HEAD 2
Bionic Nostril MOUTH 1
Bionic Short Circuit ARM_L 2
Bionic Short Circuit ARM_R 2
Bionic Short Circuit LEG_L 3
Bionic Short Circuit LEG_R 3
Bionic Short Circuit TORSO 1
Bionic Visual Impairment EYES 1
Bionic-Induced Deformity HEAD 4
Bionic-Induced Deformity MOUTH 1
Blood Analysis TORSO 5
Blood Filter TORSO 10
Cerebral Booster HEAD 7
Chain Lightning ARM_L 4
Chain Lightning ARM_R 4
Chain Lightning TORSO 16
Cloaking System ARM_L 3
Cloaking System ARM_R 3
Cloaking System FOOT_L 1
Cloaking System FOOT_R 1
Cloaking System HAND_L 1
Cloaking System HAND_R 1
Cloaking System HEAD 2
Cloaking System LEG_L 4
Cloaking System LEG_R 4
Cloaking System TORSO 15
Close Quarters Battle HEAD 4
Cranial Flashlight EYES 1
Diamond Cornea EYES 1
Dielectric Capacitance System ARM_L 2
Dielectric Capacitance System ARM_R 2
Dielectric Capacitance System FOOT_L 1
Dielectric Capacitance System FOOT_R 1
Dielectric Capacitance System HAND_L 1
Dielectric Capacitance System HAND_R 1
Dielectric Capacitance System HEAD 2
Dielectric Capacitance System LEG_L 3
Dielectric Capacitance System LEG_R 3
Dielectric Capacitance System TORSO 8
Directional EMP ARM_R 1
Directional EMP HAND_R 2
Electrical Discharge TORSO 6
Electrical Drain TORSO 2
Electromagnetic Unit HAND_R 3
Electroshock Unit ARM_L 3
Electroshock Unit ARM_R 3
Electroshock Unit HAND_L 1
Electroshock Unit HAND_R 1
Electroshock Unit TORSO 8
Endocrine Enervator HEAD 2
Enhanced Hearing HEAD 3
Enhanced Memory Banks HEAD 3
Ethanol Burner TORSO 26
Expanded Digestive System TORSO 20
Facial Distortion HEAD 3
Facial Distortion MOUTH 1
Finger-Mounted Laser HAND_R 1
Fingerhack HAND_R 2
Fingerpick HAND_R 2
Fingertip Razors HAND_L 2
Fingertip Razors HAND_R 2
Flashbang Generator ARM_L 2
Flashbang Generator ARM_R 2
Flashbang Generator LEG_L 3
Flashbang Generator LEG_R 3
Flashbang Generator TORSO 20
Fusion Blaster Arm ARM_L 20
Fusion Blaster Arm HAND_L 5
Heat Drain ARM_L 3
Heat Drain ARM_R 3
Heat Drain FOOT_L 2
Heat Drain FOOT_R 2
Heat Drain HAND_L 1
Heat Drain HAND_R 1
Heat Drain HEAD 3
Heat Drain LEG_L 5
Heat Drain LEG_R 5
Heat Drain TORSO 12
Hydraulic Muscles ARM_L 8
Hydraulic Muscles ARM_R 8
Hydraulic Muscles LEG_L 14
Hydraulic Muscles LEG_R 14
Hydraulic Muscles TORSO 4
Implanted Night Vision EYES 1
Infrared Vision EYES 1
Integrated Dosimeter ARM_L 1
Integrated Dosimeter ARM_R 1
Integrated Dosimeter HEAD 1
Integrated Dosimeter LEG_L 1
Integrated Dosimeter LEG_R 1
Integrated Dosimeter TORSO 2
Integrated Toolset HAND_L 3
Integrated Toolset HAND_R 3
Internal Chronometer HEAD 1
Internal Climate Control ARM_L 2
Internal Climate Control ARM_R 2
Internal Climate Control FOOT_L 1
Internal Climate Control FOOT_R 1
Internal Climate Control HAND_L 1
Internal Climate Control HAND_R 1
Internal Climate Control HEAD 2
Internal Climate Control LEG_L 3
Internal Climate Control LEG_R 3
Internal Climate Control TORSO 8
Internal Furnace TORSO 40
Internal Storage TORSO 32
Internal Unified Power System TORSO 5
Itchy Metal Thing HAND_L 1
Itchy Metal Thing HAND_R 1
Itchy Metal Thing HEAD 2
Itchy Metal Thing TORSO 3
Joint Torsion Ratchet ARM_L 8
Joint Torsion Ratchet ARM_R 8
Joint Torsion Ratchet LEG_L 12
Joint Torsion Ratchet LEG_R 12
Leaky Bionic TORSO 5
Leukocyte Breeder System TORSO 10
Membrane Oxygenator HEAD 2
Membrane Oxygenator MOUTH 2
Membrane Oxygenator TORSO 4
Metabolic Interchange TORSO 25
Microreactor System TORSO 55
Mini-Flamethrower HAND_L 1
Mini-Flamethrower HAND_R 1
Monomolecular Blade ARM_R 5
Monomolecular Blade HAND_R 2
Motor Control Overstimulator HEAD 3
Muscle Augmentation ARM_L 4
Muscle Augmentation ARM_R 4
Muscle Augmentation LEG_L 8
Muscle Augmentation LEG_R 8
Muscle Augmentation TORSO 6
Nictating Membrane EYES 1
Noisemaker ARM_L 1
Noisemaker ARM_R 1
Noisemaker LEG_L 1
Noisemaker LEG_R 1
Noisemaker TORSO 4
Offensive Defense System ARM_L 1
Offensive Defense System ARM_R 1
Offensive Defense System HEAD 1
Offensive Defense System LEG_L 2
Offensive Defense System LEG_R 2
Offensive Defense System TORSO 10
Olfactory Mask ARM_L 1
Olfactory Mask ARM_R 1
Olfactory Mask HEAD 1
Olfactory Mask LEG_L 1
Olfactory Mask LEG_R 1
Olfactory Mask TORSO 3
Optical Dampers EYES 1
Plutonium Filter TORSO 10
Plutonium Purger TORSO 10
Power Armor Interface HEAD 1
Power Armor Interface TORSO 4
Power Armor Interface Mk. II HEAD 2
Power Armor Interface Mk. II TORSO 3
Power Overload ARM_L 1
Power Overload ARM_R 1
Power Overload LEG_L 2
Power Overload LEG_R 2
Power Overload TORSO 3
Probability Travel ARM_L 2
Probability Travel ARM_R 2
Probability Travel FOOT_L 1
Probability Travel FOOT_R 1
Probability Travel LEG_L 3
Probability Travel LEG_R 3
Probability Travel TORSO 20
Protective Lenses EYES 1
Radiation Scrubber System ARM_L 1
Radiation Scrubber System ARM_R 1
Radiation Scrubber System LEG_L 2
Radiation Scrubber System LEG_R 2
Radiation Scrubber System TORSO 5
Railgun ARM_L 5
Railgun ARM_R 5
Railgun HAND_L 1
Railgun HAND_R 1
Recycler Unit TORSO 15
Remote Controller HEAD 2
Repair Nanobots TORSO 10
Scent Vision HEAD 3
Self-Locking Thumbs HAND_L 1
Self-Locking Thumbs HAND_R 1
Sensory Dulling HEAD 2
Shockwave Generator TORSO 20
Solar Panels TORSO 20
Sonic Resonator ARM_L 2
Sonic Resonator ARM_R 2
Sonic Resonator HEAD 1
Sonic Resonator LEG_L 4
Sonic Resonator LEG_R 4
Sonic Resonator TORSO 15
Sound Dampeners HEAD 3
Squeaky Ankles LEG_L 3
Squeaky Ankles LEG_R 3
Subdermal Carbon Filament ARM_L 2
Subdermal Carbon Filament ARM_R 2
Subdermal Carbon Filament FOOT_L 1
Subdermal Carbon Filament FOOT_R 1
Subdermal Carbon Filament HAND_L 1
Subdermal Carbon Filament HAND_R 1
Subdermal Carbon Filament HEAD 2
Subdermal Carbon Filament LEG_L 3
Subdermal Carbon Filament LEG_R 3
Subdermal Carbon Filament TORSO 5
Synaptic Accelerator ARM_L 3
Synaptic Accelerator ARM_R 3
Synaptic Accelerator FOOT_L 2
Synaptic Accelerator FOOT_R 2
Synaptic Accelerator HAND_L 1
Synaptic Accelerator HAND_R 1
Synaptic Accelerator LEG_L 6
Synaptic Accelerator LEG_R 6
Synaptic Accelerator TORSO 12
Targeting System ARM_L 3
Targeting System ARM_R 3
Targeting System EYES 1
Targeting System HAND_L 1
Targeting System HAND_R 1
Teleportation Unit ARM_L 3
Teleportation Unit ARM_R 3
Teleportation Unit LEG_L 4
Teleportation Unit LEG_R 4
Teleportation Unit TORSO 16
Telescopic Eyes EYES 2
Terranian Sonar FOOT_L 3
Terranian Sonar FOOT_R 3
Thermal Dissipation ARM_L 2
Thermal Dissipation ARM_R 2
Thermal Dissipation FOOT_L 1
Thermal Dissipation FOOT_R 1
Thermal Dissipation HAND_L 1
Thermal Dissipation HAND_R 1
Thermal Dissipation HEAD 2
Thermal Dissipation LEG_L 3
Thermal Dissipation LEG_R 3
Thermal Dissipation TORSO 10
Time Dilation ARM_L 3
Time Dilation ARM_R 3
Time Dilation FOOT_L 1
Time Dilation FOOT_R 1
Time Dilation HAND_L 1
Time Dilation HAND_R 1
Time Dilation HEAD 3
Time Dilation LEG_L 4
Time Dilation LEG_R 4
Time Dilation TORSO 12
Uncanny Dodge ARM_L 3
Uncanny Dodge ARM_R 3
Uncanny Dodge FOOT_L 1
Uncanny Dodge FOOT_R 1
Uncanny Dodge LEG_L 5
Uncanny Dodge LEG_R 5
Uncanny Dodge TORSO 12
Visual Disruptor EYES 1
Voice Remodulator MOUTH 1
Voice Remodulator TORSO 2
Water Extraction Unit ARM_R 1
Water Extraction Unit HAND_R 2
Weather Reader HEAD 1
Weather Reader TORSO 1
Wire-induced Stiffness ARM_L 1
Wire-induced Stiffness ARM_R 1
Wire-induced Stiffness FOOT_L 1
Wire-induced Stiffness FOOT_R 1
Wire-induced Stiffness LEG_L 1
Wire-induced Stiffness LEG_R 1
Wire-induced Stiffness TORSO 2
Wired Reflexes ARM_L 4
Wired Reflexes ARM_R 4
Wired Reflexes LEG_L 8
Wired Reflexes LEG_R 8
Wired Reflexes TORSO 6

@Coolthulhu Coolthulhu self-assigned this Mar 27, 2016
@illi-kun
Copy link
Contributor Author

@Coolthulhu I pushed the latest commit after your assignment but it can be ignored since it's tiny and not critical one.

@Coolthulhu
Copy link
Contributor

Seems to be working. Couldn't get it to crash or act incorrectly.

The UI is a problem, though. It is really unwieldy without memorized keybinds - too much redundant data. It tries to combine displaying bionic "sizes" (for slot limits) and the activation options and doesn't really work well for either case. It is manageable for a low number of bionics, but many players are currently playing characters that are running out of alphabet letters for bionic keybinds.

Activation options need a single instance of each bionic, not more, not less. Passive bionics can be on the same list, but sorted below the active ones.

The slot display cares mostly about slot sizes and so should have bionics sorted by size (in the current body part) or per-bionic display with a list of occupied slots (like itemized CBMs).

To get it mergeable, I'd bring back the old menu and have TAB switch between them (remembering the last one used).

@Coolthulhu Coolthulhu removed their assignment Mar 27, 2016
@illi-kun
Copy link
Contributor Author

but many players are currently playing characters that are running out of alphabet letters for bionic keybinds.

That's what we're trying to fight with.

I see your points but I disagree with them, your propositions will make this UI even more complex.

@DanmakuDan
Copy link
Contributor

Why not have the Body Layout UI in a tab separate from Active and Passive? Having the Active/Passive uniquely listed sounds useful when you don't need to know specifically which body part is needed to activate a bionic, and the Body Layout sounds more useful when adding/comparing/removing parts.

@Coolthulhu
Copy link
Contributor

your propositions will make this UI even more complex.

Sometimes complexity is the lesser evil. For example, Skyrim's simple UI is less usable than Dwarf Fortress' UI after an hour of getting used to each.

That's what we're trying to fight with.

That was an extreme example. The new bionic UI is rather unwieldy with just 5 bionics if enough of them are multislot.

Consider the following use cases:

  • Activate/deactivate a bionic. Old UI was perfect, new UI displays way too much redundant info here, making setting and remembering keybinds (ugly) necessary. New UI would work if keybinds could be assigned permanently, in a way that is preserved between characters (it would still be ugly and unintuitive, but it wouldn't matter much) and had sensible defaults for all bionics.
  • Check active bionics to see what is draining power. As above.
  • Count slots left. Old UI doesn't have it, new UI requires finding each body part separately (doesn't list them nicely next to each other).
  • Find which passive bionic could be causing trouble (as in, new player wants to find which bionic is causing the shakes). Old UI was nearly perfect, new UI is very bad.
  • Rebind bionics. Old UI was good and similar to inventory, new one requires finding the bionic to rebind in a way that isn't used anywhere else, then doesn't warn on rebind
  • Remove bionics. New UI doesn't properly display how many slots will be gained, counting has to be done manually.

Basically, the bionic installation menu and bionic activation menu are two separate entities. Combining them properly would require a different kind of display than just a list.

Now that I think about it, the idea of persistent bionic keybinds (for active bionics) is really good. It could work even with old bionic system.

@kevingranade
Copy link
Member

kevingranade commented Mar 28, 2016 via email

@illi-kun
Copy link
Contributor Author

@Coolthulhu It seems that filtering by bodyparts doesn't play its role to make the menu easier, so maybe the way to solve the stated issues is the replacement of this filter by another one: "body parts observation" (current state of menu), "active cbm list" (similar to "active" tab from previous version) and "passive cbm list" (again, as it was previously). + choosen filter should be stored.

  • popup about dangers of cbm removing should also contain info about occupied bodyparts.

@illi-kun illi-kun changed the title Basic implementation of bionics slots system [WIP] Basic implementation of bionics slots system Mar 28, 2016
tab_index is not removed yet (since filtering will be modified later)
@macrosblackd
Copy link
Contributor

Why not a UI similar to the equipment adjustment window?
Left panel displays list of installed bionics, defaulting to all body parts, but can be filtered to show each specific body part.
Highlighting a bionic in the list will show slot information in the right adjacent panel, similar to how the equipment screen highlights which body parts are covered for a given item. This panel would show the body parts with a (cur/max) format for the slot usage. Something like this: Head [12/18] (5) where the [12/18] is the current total/max and the (5) is what the selected bionic is using.

@illi-kun
Copy link
Contributor Author

illi-kun commented Apr 5, 2016

I've added list of affected bodyparts to the CBM description and then I realized that menu becomes really overcomplicated. The latest statement of bionics menu (for this branch) is presented in the snapshot below:

mess

I'll try to design another interface (= create simple third tab for the interface from master branch targeted to demonstration of occupied bodypart slots) and re-apply some small useful things from this branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants