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

Implementation of bionics slots system #15774

Closed
wants to merge 47 commits into from

Conversation

Projects
None yet
@illi-kun
Copy link
Member

commented Mar 13, 2016

It's in [WIP] status but I want to announce the changes I'm working on and receive some preliminary feedback.

As it was discussed previously, current CBM system allows you to install all stuff you found without any thinking about their actual necessity. Application of some limitations to CBM system should add some depth to the game, so finite number of slots (points, available internal volume, name it whatever you want) for CBMs installation could be a good limitation factor.

I've started from this sketch of UI (pure text editor results, no coding) with slots available for bionics installation in each body part:
ui

Screens from the game showing actual progress are (Mar, 20):

  • Bionics menu:
    cbm_menu
  • Note about lack of slots for CBM installation:
    not_enough_slots

TODO:

  • fix an issue with bugged description of CBM power consumption (it appears/ disappears randomly);
  • disable invlet assignment for passive bionics;
  • resolve conflicts between invlets & hotkeys (partially done);
  • enable bodypart filter;
  • read required bodyparts & slots from JSON;
  • define required bodyparts & slots in JSON for each bionic;
  • balance number of available CBMs;
  • show the number of slots required for installation in item info;
@mugling

This comment has been minimized.

Copy link
Contributor

commented Mar 13, 2016

I look forward to seeing this completed

@Rivet-the-Zombie

This comment has been minimized.

Copy link
Member

commented Mar 13, 2016

Nice!

@Coolthulhu

This comment has been minimized.

Copy link
Contributor

commented Mar 13, 2016

I like the idea, but I'd start with a more restricted system at first. It's easier to loosen the restrictions than to tighten them.

Having each item specify one body part would be a better start, as it would prevent weird interactions. For example, installing toolset in legs or eye mods in torso.

I'd leave mutation interactions for much later. At this point it could only lead to exploits like installing bionics while mutated, then losing mutation but retaining bionics.

@Zireael07

This comment has been minimized.

Copy link
Contributor

commented Mar 13, 2016

Great idea!

And yeah, leave mutation interactions for later.

@illi-kun

This comment has been minimized.

Copy link
Member Author

commented Mar 13, 2016

Having each item specify one body part would be a better start, as it would prevent weird interactions. For example, installing toolset in legs or eye mods in torso.

I definitely plan to do this, I want something like a list of allowed bodyparts & cost defined for each bionic.

I'd leave mutation interactions for much later. At this point it could only lead to exploits like installing bionics while mutated, then losing mutation but retaining bionics.

Sure, I've added this as demo of such possibility but yeah, it's easier to remove this entirely for now and return to this point later.

illi-kun added some commits Mar 13, 2016

remove redraw variable
clang enforces me to do weird things and I like it
@Soadreqm

This comment has been minimized.

Copy link
Contributor

commented Mar 13, 2016

How did you plan on dealing with the junk augmentations? Some backgrounds start absolutely covered in them.

fix incorrect function parameters
sorry for that, I need some sleep
@illi-kun

This comment has been minimized.

Copy link
Member Author

commented Mar 13, 2016

@Soadreqm I don't see any difference between junk cbms & regular cbms - junk ones also can occupy some space in the dedicated bodypart.

@Soadreqm

This comment has been minimized.

Copy link
Contributor

commented Mar 13, 2016

@illi-kun I was mostly thinking of the Broken Cyborg start, which loads your body down with a whopping 26 bionics. That sounds like way too many bionics to actually fit inside a body.

@illi-kun

This comment has been minimized.

Copy link
Member Author

commented Mar 13, 2016

OK, thanks, I'll keep it in mind as a test case.

@articulateSPLINE

This comment has been minimized.

Copy link

commented Mar 14, 2016

I really like this idea, your new bionics menu alone will be well worth the effort! The limit on bionic capacity would be especially cool if it leads to replacing weak meatbag limbs with shiny metal ones that can accommodate more/less bionics with more/less movement penalties respectively.

My one critique would be that I'd like to see the bionics listed alphabetically under each limb if at all possible. The current system in game lists them in the order they were installed in, making it pretty hard to find the bionic I want to activate. This is purely a quality of life suggestion however, I don't imagine it will be as much of a problem when I can't fill my characters up with every possible CBM!

@Mecares

This comment has been minimized.

Copy link
Contributor

commented Mar 14, 2016

Sometimes I think Constitution should be added as a stat, it could affect how many Bionics per bodypart you can have, your health points per bodypart, base healthyness and resistance to poison, radiation, infections and parasites.

@vache

This comment has been minimized.

Copy link
Contributor

commented Mar 14, 2016

How do you intend to handle power storage bionics under this system? Are they going to count toward available volume but be unrestricted regarding limbs?

@ZombiesAreUs

This comment has been minimized.

Copy link

commented Mar 14, 2016

@vache I personally would actually prefer if power storage capacity was limited (and you could with relative ease replace Mk1 with Mk2 to increase it)
@illi-kun Did you consider having bionics that take up multiple body parts (Dielectric Capacitance or Cloaking System could be placed in the entire body for example)

"occupied_bodyparts": [
[ "HAND_L", 1 ],
[ "HAND_R", 1 ]
],
"act_cost": 75,
"description": "The index fingers of both hands have powerful fire starters which extend from the tip."

This comment has been minimized.

Copy link
@Coolthulhu

Coolthulhu Mar 22, 2016

Contributor

I just realized how stupid this bionic is. Index-finger sized flamethrower creating raging fires in no time? Using what to create the fire?

Would make sense to move it to the arm instead.

"act_cost": 75,
"description": "A filtration system in your heart allows you to actively filter out chemical impurities, primarily drugs. It will have limited impact on viruses. Note that it is not a targeted filter; ALL drugs in your system will be affected."
},{
"type": "bionic",
"id": "bio_alarm",
"name": "Alarm System",
"occupied_bodyparts": [
[ "TORSO", 5 ],
[ "HEAD", 1 ]

This comment has been minimized.

Copy link
@Coolthulhu

Coolthulhu Mar 22, 2016

Contributor

The alarm system is relatively useless, it can have tiny slot cost.

"act_cost": 50,
"description": "A stimulator system has been implanted alongside your adrenal glands, allowing you to trigger your body's adrenaline response at the cost of some bionic power."
},{
"type": "bionic",
"id": "bio_blood_filter",
"name": "Blood Filter",
"occupied_bodyparts": [
[ "TORSO", 6 ]

This comment has been minimized.

Copy link
@Coolthulhu

Coolthulhu Mar 22, 2016

Contributor

Less than blood analysis? It has a much more powerful (and much less subtle) function.

"act_cost": 25,
"description": "Small sensors have been implanted in your heart, allowing you to analyze your blood. This will detect many illnesses, drugs, and other conditions."
},{
"type": "bionic",
"id": "bio_geiger",
"name": "Integrated Dosimeter",
"occupied_bodyparts": [
[ "TORSO", 2 ],

This comment has been minimized.

Copy link
@Coolthulhu

Coolthulhu Mar 22, 2016

Contributor

Would make sense to have 1 in the head (it does display and alarm).

This comment has been minimized.

Copy link
@illi-kun

illi-kun Mar 22, 2016

Author Member

Thanks for all of these notes, I'll take them into account.
BTW, I'll gather slots data for all bionics a little bit later and provide it in this PR for better balancing of the entire system.

@@ -337,18 +526,36 @@
"type": "bionic",
"id": "bio_painkiller",
"name": "Sensory Dulling",
"occupied_bodyparts": [
[ "TORSO", 10 ]

This comment has been minimized.

Copy link
@Coolthulhu

Coolthulhu Mar 22, 2016

Contributor

Head slot would fit here.

@@ -57,6 +72,10 @@
"type": "bionic",
"id": "bio_metabolics",
"name": "Metabolic Interchange",
"occupied_bodyparts": [
[ "TORSO", 5 ],
[ "HEAD", 2 ]

This comment has been minimized.

Copy link
@Coolthulhu

Coolthulhu Mar 22, 2016

Contributor

Why head?

Also, it has a much lower cost than other recharger bionics, despite being (arguably) the best one.

"act_cost": 100,
"description": "Mounted in the palms of your hand are small parabolic EMP field generators. You may use power to fire a short-ranged blast which will disable electronics and robots."
},{
"type": "bionic",
"id": "bio_hydraulics",
"name": "Hydraulic Muscles",
"occupied_bodyparts": [
[ "ARM_L", 3 ],
[ "ARM_R", 3 ],

This comment has been minimized.

Copy link
@Coolthulhu

Coolthulhu Mar 22, 2016

Contributor

Should be much more - both for balance (it is one of the best things to install in your arms) and realism.

@@ -523,6 +845,10 @@
"type": "bionic",
"id": "bio_power_armor_interface_mkII",
"name": "Power Armor Interface Mk. II",
"occupied_bodyparts": [
[ "TORSO", 3 ],
[ "HEAD", 1 ]

This comment has been minimized.

Copy link
@Coolthulhu

Coolthulhu Mar 22, 2016

Contributor

Advanced versions shouldn't occupy less slots

This comment has been minimized.

Copy link
@illi-kun

illi-kun Mar 22, 2016

Author Member

It's not less, it's 2+2 vs. 3+1 (just for variety, in some cases you will not migrate from one to another due to lack of one of bodyparts). BTW, it's probably better to switch the numbers and require 2+2 slots for MkII version: head slots "worth" more than "torso" one.

"faulty": true,
"description": "A malfunctioning bionic. It will occasionally emit a loud burst of noise."
"description": "A functioning bionic. It will occasionally emit a loud burst of noise."

This comment has been minimized.

Copy link
@Coolthulhu

Coolthulhu Mar 22, 2016

Contributor

Why the description change?

This comment has been minimized.

Copy link
@illi-kun

illi-kun Mar 22, 2016

Author Member

Doh, it's totally unintended, thanks for the catch.

illi-kun added some commits Mar 22, 2016

@illi-kun

This comment has been minimized.

Copy link
Member Author

commented Mar 24, 2016

Issue: installing Anti-glare Compensators required 1 EYES slot but it actually takes 2 slots due to automatic installation of additional CBM (Optical Dampers). Any ideas how to deal with that? It's not a major issue, just potential source of confusion.

@Coolthulhu

This comment has been minimized.

Copy link
Contributor

commented Mar 24, 2016

Allow some bionics to consume no slots. In particular, malfunctioning bionics shouldn't consume slots - they're bad enough on their own.

This will make effects of bionic installation more predictable. Otherwise you'd need to handle the cases where installation can cause the capacity of some body parts to be exceeded.

@illi-kun

This comment has been minimized.

Copy link
Member Author

commented Mar 24, 2016

Doh, I just removed 'Other' category which can play role of "no slot" alternative.

My point concerning faulty bionics contradicts with yours - for me, these CBMs should take some space, so broken cyborg should clean up xer body before installation of something useful:
broken_cyborg

Currently, number of occupied slots > total number is possible and it means you have to remove more bionics to have enough free space for something else, so no actual penalties are defined.

@illi-kun

This comment has been minimized.

Copy link
Member Author

commented Mar 24, 2016

Sorry for the answering on my own question but it seems that these hardcoded pairs of bionics should be simply merged into one CBM.

@narc0tiq

This comment has been minimized.

Copy link
Contributor

commented Mar 25, 2016

@illi-kun Well, the reason they're separate, if I recall correctly, is to allow you to toggle them independently -- they are intended to be a single bionic with two functions. Can you make that happen, if you still intend to re-merge them?

Also do recall there's a similar pair of bionics for the ears.

@illi-kun

This comment has been minimized.

Copy link
Member Author

commented Mar 26, 2016

@narc0tiq AFAIK anti-glare CBM is a passive one so it shouldn't be toggled.

@illi-kun

This comment has been minimized.

Copy link
Member Author

commented Mar 26, 2016

show the number of slots required for installation in item info; is not implemented yet but the rest of functionality is already in. I'd prefer to remove 'WIP' status from this PR because it's quite big already and it starts gathering the merge conflicts. Further work can be continued in next (separate) PRs, IMO.

@illi-kun illi-kun changed the title [WIP] Implementation of bionics slots system Implementation of bionics slots system Mar 26, 2016

@illi-kun

This comment has been minimized.

Copy link
Member Author

commented Mar 26, 2016

Oh gosh, the latest commit messed things up badly. The actual merge conflict happens due to addition of void force_comedown( effect &eff ) in master.

It's 5 am now, so I need take some rest for further fight with git.

@mugling

This comment has been minimized.

Copy link
Contributor

commented Apr 14, 2016

What was the outcome of this PR?

@illi-kun

This comment has been minimized.

Copy link
Member Author

commented Apr 14, 2016

Well, I will re-implement core functionality this weekend, this time without UI (with minimum changes of interfaces, actually).

Stay tuned ;-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.