summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--other/luck.txt97
1 files changed, 97 insertions, 0 deletions
diff --git a/other/luck.txt b/other/luck.txt
new file mode 100644
index 0000000..33d7fc2
--- /dev/null
+++ b/other/luck.txt
@@ -0,0 +1,97 @@
+Hitting your target, parrying, critical hits, double hits, and elemental status
+are controlled by random chance. On the one hand, this adds depth through
+management of risks and rewards, and it forces unexpected events on the players.
+On the other hand, it can quickly make combats feel unfair (e.g. good tactics
+failing due to bad luck) or infuriate players (e.g. missing a 95% chance shot in
+XCOM).
+
+To mitigate the drawbacks, TO should balance the impact of luck.
+
+During a battle, each players has a Luck meter. Luck in between -200 and 200. It
+starts at 0.
+
+When a player makes a roll with X% chance, the result is as follows:
+Roll = rand(100);
+IsSuccess = ((X + Luck) >= Roll);
+if (IsSuccess)
+{
+ if (X > 50)
+ {
+ // It was likely to succeed, pay just what you used.
+ MissingPoints = max(0, (Roll - X))
+ Luck' = (Luck - MissingPoints)
+ }
+ else if (X =< 50)
+ {
+ // It was unlikely to succeed, pay a lot.
+ Cost = (55 - X) // How far was it from being reasonable?
+ Luck' = (Luck - Cost)
+ }
+}
+else
+{
+ // Failure due to bad roll.
+ if (X >= 50)
+ {
+ // It was likely to succeed, you're owed a lot.
+ OwedPoints = (X - 45)
+ Luck' = (Luck + OwedPoints)
+ }
+}
+
+For example:
+
+A/ The character of a player with 15 Luck attempts a 10% chance parry:
+if (Roll <= 25)
+{
+ // Unlikely Success.
+ Cost = (55 - 10) = 45
+ Luck' = 15 - 45 = -30
+}
+else if (Roll > 25)
+{
+ // Expected Failure.
+}
+
+B/ The character of a player with 20 Luck attempts a 45% chance parry:
+if (Roll <= 60)
+{
+ // Unlikely Success.
+ Cost = (55 - 45) = 10
+ Luck' = 20 - 10 = 10
+}
+else if (Roll > 60)
+{
+ // Expected Failure.
+}
+
+D/ The character of a player with 20 Luck attempts a 55% chance parry:
+if (Roll <= 70)
+{
+ // Likely Success.
+ UsedUpLuck = max(0, (55 - Roll)) = [0, 20]
+ Luck' = 20 - UsedUpLuck = [0, 20]
+}
+else if (Roll > 70)
+{
+ // Unlucky dice roll.
+ OwedPoints = (55 - 45) = 10
+ Luck' = 20 + 10 = 30
+}
+
+D/ The character of a player with -35 Luck attempts a 15% chance parry:
+No roll required. This fails. No luck update.
+
+E/ The character of a player with -35 Luck attempts a 75% chance parry:
+if (Roll <= 40)
+{
+ // Without the negative luck, it was likely to succeed
+ // Luck clearly didn't help, so none is to be payed.
+}
+else if (Roll > 40)
+{
+ // If not for that negative luck, you were likely to make it.
+ // You're owed some luck back.
+ OwedPoints = (75 - 45) = 30
+ Luck' = -35 + 30 = -5
+}