I believe it, you obviously put a huge amount of work into this, and it’s actually pretty succinct.
[quote=“phaethon, post:1, topic:2559”][b]Main points:
- Chance of success doesn’t change enough when you do (or don’t) have the right stats and skills
- The different failure types when installing (which are only based on your success chance and randomness) are too hard on highly skilled characters and too easy on unskilled characters
- The equation to calculate install skill is a bit off, and the flat “chance of success” curve makes the problem worse.
- Bionics difficulty needs to be tweaked.[/b][/quote]
- It’s somewhat intended that you can “overcome” low stats with skills, but yea, int probabnly doesn’t play enough of a role here.
- Totally agree, having failure severity influenced very heavily by failure magnitude is desireable.
- You got kind of vague on this one, you explain it later.
- Seperate issue, sure.
[quote=“phaethon, post:1, topic:2559”]I got excited and spent the last 2 days looking over the code and then thinking about how it could be improved. I think I have good suggestions to items 1-3 on my list above. I won’t mess with bionics difficulty until the other stuff is set.
So here are my suggestions. I’ll try to add them to the code, but a more experienced hand is welcome here too.[/quote]
It looks like you have the hard part dealt with, with a design this detailed, implementing it in C++ isn’t goint to be hard.
[quote=“phaethon, post:1, topic:2559”]SPOILER ALERT: This whole post covers mechanics. Don’t read if you don’t want to know
INSTALL SKILL:
current skill = 0.25*int + electronics + 0.75*first_aid + 0.50*mechanics
proposed skill = int + electronics + 0.75*first_aid + 0.25*mechanics
Increase the affect of Int and decrease Mechanics. Int is costly to increase during character creation and competes with other important stats (i.e. it forces specialization). Mech is easy to increase, and there is already plenty of incentive to do so. Most players will train mech regardless of strategy to get some kind of vehicle.
The other key part is to increase the range of the install skill A big range makes it easier for us to use it as a variable in the success equation.[/quote]
Seems reasonable, gives long-term consequences to stat choices.
[quote=“phaethon, post:1, topic:2559”]CHANCE OF SUCCESS:
I changed two things here. I changed the skill equation to the one I proposed above. Then, to calculate success, I had 3 steps.
[/quote]
This is a bit complex, but as long as we’re careful to break it down and annotate it with something similar to your explanation below it should be fine.
[quote=“phaethon, post:1, topic:2559”]First, shift the skill range to between ~0.4 and 30.
Second, use the ratio of skill / difficulty as our metric to success. If skill is bigger than difficulty, this will be a positive number. If skill is less, it will be negative. If skill = difficulty, it will be 0.
Finally, use an equation that will give us the curve we want while staying bounded between 0 and 1. As you can see from the graph, this gives us really nice behavior. Our “low” character should not be able to install a bionic. Our average character should be able to install easy bionics consistently. Our high example should be really good at installing any bionic (e.g. no risk of malfunction). The only downside is that calculating success requires using a square root. To do this, we either have to import math.h or use a loop to calculate the square root by hand (not hard. A simple algorithm is explained here: http://answers.yahoo.com/question/index?qid=20081002085704AAeaUPd).[/quote]
Two things here.
One, performance isn’t an issue, sqrt and trig functions and floating-point math are to be avoided in performance-critical parts of programs, like rendering, but in skill checks we can pretty much make them arbitrarally complicated as long as they aren’t doing something silly like running simulations.
Two, we’re a very dependency-averse project, but not THAT dependency averse, we already use math.h in various places.
[quote=“phaethon, post:1, topic:2559”]PUNISHMENT:
[SNIP]
[/quote]
Ok that’s pretty much ideal for this approach
Also an observation, we can pick some arbitrary threshold where the player knows how good they are, and remove it from the list of potential problems at the installation warning, meaning people don’t have to look up the difficulty equation on the wiki and try and calculate it to figure out if the risk is acceptable, but rather just attempt to install and check the list of potential consequences.
[quote=“phaethon, post:1, topic:2559”]
Nice and simple. Unless the sqrt() kills the speed, it may even be faster than the current method for bad failures.
CONCLUSION:
So that’s it. Those are my suggestions. Please give feedback on the idea of making bionics safer for highly skilled installers and more dangerous for characters with low install skill and low intelligence. Also, please give feedback on the implementation. There is more than one way to mathematically represent the ideas. I will try to make a pull request with these changes reflected in the code (assuming this gets a good response), but I’m not a C++ programmer. Others are welcome to put this in the code.[/quote]
[quote=“Otaku”]Lastly, your proposed system of punishments seems a bit too simplistic and does not take into consideration a character’s skill sets and abilities. Say for example that a electronics expert tries to
install his own bionics, he is more likely to install it correctly and get all the gizmos and gadgets working, but is also more likely to hurt himself in the process. Conversely if a medical doctor
were to do the same thing they would probably fail on the gadgets side and succeed on the medical side. Therefore my suggestion to you is to create a punishment system in which a character’s skills
and abilities are taken into consideration and are used in order to create the most logical punishment from the choices. It would make sense that people are better at some things than others, and I
think it is best to represent this in game.[/quote]
Well to be fair ‘his’ system is the existing system with the probabilities changed, the failings already existed 
To implement what you propose, we’d (internally, no need to clutter the UI) break the operation into multiple steps governed by different skills. As a rough example, we might have:
“activation” - Activate and prep the module for implantation. Based on int and electronics. Failure results in damage to the module.
“surgery” - making any necessary incisions and such needed to implant the device(s), physically implant them, and to close up afterwards. Based on dex and first aid. Failure generally results in pain, infection, etc. but rarely damage to the module.
“integration” - Activating and integrating the installed module. Based on computers(!!!) and int. Failure results in a inert or malfunctioning module.
With it broken up like this, you can more easily tie sensical consequences to various failures, and give more varied failure messages. Also, since the steps proceed sequentially, a very bad failure will halt the process. So for example if you totally botch the activation step, you fry the CBM, but you never even start on the surgery. On the other hand, you might damage the module without knowing it and keep going. (ESD FTL!) Also this opens the door to having variable installation difficulties based on the properties of the bionincs, for example the under-skin armor CBMs would have a negligible activation and integration dificulty, but a very high surgery difficulty.
Within these categories though, I think the same formulae more or less apply, so this would be in addition to phaethon’s plan, and I think proceeding with implementing his ideas is something we could do right away, while something like the above is something it’d be nice to work toward.