summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'other')
-rw-r--r-- | other/attrib_stats.txt | 155 | ||||
-rw-r--r-- | other/db_bounty.txt | 18 | ||||
-rw-r--r-- | other/erl_module_template.erl | 17 | ||||
-rw-r--r-- | other/luck.txt | 97 | ||||
-rw-r--r-- | other/magic.txt | 75 | ||||
-rw-r--r-- | other/skills.txt | 92 |
6 files changed, 0 insertions, 454 deletions
diff --git a/other/attrib_stats.txt b/other/attrib_stats.txt deleted file mode 100644 index cc06824..0000000 --- a/other/attrib_stats.txt +++ /dev/null @@ -1,155 +0,0 @@ -{Attributes - Constitution - Dexterity - Intelligence - Mind - Speed - Strength -} -{Stats - {Movement Points - Controlled by: Speed - ((Speed)^1.8)/20 - } - {Health - Controlled by: Constitution - ((Constitution)^1.8)/20 - } - {Dodges - Controlled by: average(Dexterity, Mind, Speed) - Max: 75% - Min: 5% - min(75,max(5,(4^(x/25)))) - ((average(Dexterity, Mind, Speed))^1.8)/40 - } - {Parries - Controlled by: average(Dexterity, Speed, Strength) - Melee only - Max: 75% - Min: 0% - min(75,(4^(x/25))) - } - {Physical Weapons - {Damage - Controlled by: Strength - limits + (((Strength - 50)/75) limits) - } - {Accuracy - Controlled by: Dexterity - Max: 100% - Min: 0% - (30 * (log((x + 5)/4))) // Might be too generous - Note: failing that roll halves the damages. - } - {Double Hits - Controlled by: Speed - Max: 100% - Min: 0% - (x^2.5)/1000 - } - {Critical Hits - Controlled by: Intelligence - Max: 100% - Min: 0% - (x^2.5)/1000 - } - } - {Magical Weapons - {Damage - Controlled by: Intelligence - limits + (((Strength - 50)/75) limits) - } - {Accuracy - Controlled by: Mind - Max: 100% - Min: 0% - (30 * (log((x + 5)/4))) // Might be too generous - Note: failing that roll halves the damages. - } - {Double Hits - Controlled by: Speed - Max: 100% - Min: 0% - (x^2.5)/1000 - } - {Critical Hits - Controlled by: Dexterity - Max: 100% - Min: 0% - (x^2.5)/1000 - } - } -} -{Physical Attack - {Damage Type - Bludgeoning - Piercing - Slashing - } - {Ranged - {Short Bow - Minimal Range: 2 - Maximal Range: 4 - Damage Type: Arrow dependent - } - {Long Bow - Minimal Range: 2 - Maximal Range: 6 - Damage Type: Arrow dependent - Attribute Penalty: Speed - } - {Crossbow - Minimal Range: 2 - Maximal Range: 4 - Damage Type: Bolt dependent - Attribute Penalty: Dexterity - Misc: High damage - } - {Arbalest - Minimal Range: 2 - Maximal Range: 6 - Damage Type: Bolt dependent - Attribute Penalty: Dexterity, Speed - Misc: High damage - } - } - {Melee - {Sword - Minimal Range: 1 - Maximal Range: 1 - Damage Type: Slashing - } - {Claymore - Minimal Range: 1 - Maximal Range: 2 - Damage Type: Slashing - Attribute Penalty: Speed - } - {Mace - Minimal Range: 1 - Maximal Range: 1 - Damage Type: Bludgeoning - } - {War Hammer - Minimal Range: 1 - Maximal Range: 2 - Damage Type: Bludgeoning - Attribute Penalty: Speed - } - {Dagger - Minimal Range: 1 - Maximal Range: 1 - Damage Type: Piercing - } - {Spear - Minimal Range: 1 - Maximal Range: 2 - Damage Type: Piercing - Attribute Penalty: Speed - } - } -} -{Base Accuracy - Melee: Base Accuracy bonus. - Ranged: No Base Accuracy bonus. -} diff --git a/other/db_bounty.txt b/other/db_bounty.txt deleted file mode 100644 index d31226a..0000000 --- a/other/db_bounty.txt +++ /dev/null @@ -1,18 +0,0 @@ -Designing with a "it can crash at any point" mentality -+ can't combine DB queries in an atomic manner -= Potential for partially completed tasks, "corrupting" the global DB. - -A solution could be having "bounty" entries, which work as follows: -A process P0 needs to do tasks T0, then T1, then T2. -P0 creates a bounty B0: -{ - not_before: 60s. - task: T0_T1_T2. - params: [{T0.id, T1.id, 20] -} -P0 adds B0 to the Bounty DB. -P0 attempts T0, T1, and T2. -P0 removes B0 from the Bounty DB. - -There are other processes trying to access available bounties (i.e. bounties -for which the "not_before" has expired) to complete them. diff --git a/other/erl_module_template.erl b/other/erl_module_template.erl deleted file mode 100644 index 01c79bd..0000000 --- a/other/erl_module_template.erl +++ /dev/null @@ -1,17 +0,0 @@ --module(name). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/other/luck.txt b/other/luck.txt deleted file mode 100644 index 33d7fc2..0000000 --- a/other/luck.txt +++ /dev/null @@ -1,97 +0,0 @@ -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 -} diff --git a/other/magic.txt b/other/magic.txt deleted file mode 100644 index d414d65..0000000 --- a/other/magic.txt +++ /dev/null @@ -1,75 +0,0 @@ -Elements: - - Wind - Lightning Snow -Fire Water - Magma Plant - Earth - -Omnimods for each element: -- Damage (>0) -- Defense (any) -- Status Chance (0-100) -- Status Def (any) - -Chance to inflict status calculated similarly to evasion: - min(100, max(0, {attacker status chance} - {defender status def})) - -Status Def > 100 -> ({defender status def} - 100)% of {attacker damage} are - actually healing defender. - -Omnimods are manually set so that gaining X in an element leads to: -* X/2 in the elements next to it. -* -X in the opposite element -* -(X/2) in the elements next to its opposite element - -Having this done manually allows for exception. - -The element chosen for the status that can be triggered is chosen randomly among -the ones the character, with weights depending on the percentage of the damage -caused by that element. For each element, there are two variants: Alpha, which -inflicts a status on the character getting hit, and Beta, which grants one for -the character doing the hitting. Status are taken into consideration only after -the attack that generated them. Characters may have multiple elemental status in -effect. - -Characters affected by the status of element, be it antagonistic or not, gain -affinity in that element (i.e. omnimods for that element, and all the associated -{X/2,-X,-(X/2)} stuff). - -* Wind: - Alpha: Reduces max movement points. - Beta: Increases max movement points. - -* Lightning: - Alpha: Character is disabled for a turn. - Beta: - Attacking this character, regardless of range, will result in taking - lightning damage. - -* Fire: - Alpha: - Character suffer fire damage over time (don't forget to make it worth it - despite the affinity gain). - Beta: - Character deals more damage. - -* Magma: - Alpha: TBD - Beta: TBD + Inflict magma damage when attacked by melee. - -* Earth: - Alpha: Lowers the character's defense - Beta: Increases the character's defense. - -* Plant: - Alpha: Character cannot be healed, nor gain SPs (not even with skill). - Beta: Character gains life-steal. - -* Water: - Alpha: Halves the character's HP. - Beta: The character receives some healing. - -* Snow: - Alpha: Character loses all evasion. - Beta: Character gets max evasion. diff --git a/other/skills.txt b/other/skills.txt deleted file mode 100644 index 9794967..0000000 --- a/other/skills.txt +++ /dev/null @@ -1,92 +0,0 @@ -Characters have an SP gauge. It starts empty. -To be decided: is the capacity of the gauge linked to a (new) stat, or is it - simply a way to measure how much SP is required before the skill can be cast - (i.e. it has exactly enough for one cast). - -SPs are gained from participation in an attack. The attacker gets 1 point per -attack (which should make being able to do two attacks per turn worthwhile), -1 point for a parry, and, possibly (to be decided), 1 point when defending -(maybe % chance? This reduces the importance of double hits). - -Each character has exactly one skill, which is chosen like any other part of -their equipment. Skills have infinite range, and are casted on a single target -(faction is not taken into account), which is either a character or a tile -(that may actually place the skill on a pattern around itself). -The use of a skill counts as an action (i.e. it replaces either switching -weapons or attacking). - -Multiple variants of the same skill allow players to select a more costly skill -for an increase in either power (Alpha variant), duration (Beta variant), or -both (Gamma variant). The increase should not be linear (e.g. 2 times the power -costs 175% of the default version). The X Gamma variant combines the advantages -of the Beta and the Alpha versions. It obviously costs way more than either of -them. Another variation could be to have the skill triggered later, by -targeting a tile. Depending on the variant, a character (ally, enemy, or -either) would trigger the effect upon walking on the tile. This could for -example be used for a self-resurrection skill. - -Ideas for some skills: -* Attack Anywhere: - The caster performs an attack on the target with their current weapon, - regardless of where that target is. - -* Shields Up {D, A0, A1, B0, B1, G0, G1}: - Target benefits from {D: 25, A0: 50, A1: 75}% damage reduction for - {D: 1, B0: 2, B1: 3} turns. - -* Static Heal {D, A0, A1, A2, A3}: - Target heals for {D: 20, A0: 40, A1: 60, A2: 80, A3: 100} HPs, if nothing - prevents it. - -* Percentage Heal {D, A0, A1, A2, A3}: - Target heals for {D: 15, A0: 25, A1: 35, A2: 50, A3: 65} percent of their - maximum HPs, if nothing prevents it. - -* Healing Over Time {D, A0, A1, A2, A3, B0, B1, B2, B3, G0, G1, G2, G3}: - Target gains a {D: 4, B0: 6, B2: 8, B3: 10} turns duration status that heals - them for {D: 6, A0: 12, A1: 18, A2: 24, A3: 30} HPs. - -* Dispel {D, A0}: - Target loses {D: a random, A0: all} active status(es). - -* Redirection: - Target and caster swaps all their active status. - -* Overload {D, A0, A1, B0, B1, G0, G1}: - Target gains a {D: 1, B0: 2, B1: 3} status providing a {D: 5, A0: 10, A1: - 20}% damage increase per active status (including this one) when attacking. - The count is done during the attack, not during the cast. - -* Trickster {D, A0, A1}: - Target and caster swaps {D: secondary, A0: active, A1: all} weapon(s). - -* Confusion: - The target equips their secondary weapon. - -* Vampire {D, A0, A1, A2, B0, B1, B2, G0, G1, G2}: - Caster gains the "Vampire" active status. The Vampire status lasts - {D: 3, B0: 6, B1: 9, B2: 12} turns and, for melee attacks: grants - {D: 10, A0: 15, A1: 20, A2: 25}% life-steal, and adds the Vampire status - to the defender (with a reset duration). - -* Teleportation: - The caster is teleported to the target tile, if applicable. - -* Switch: - Caster and target swap locations. - -* Mark Target {D, A0, A1, A2, B0, B1, B2, G0, G1, G2}: - The target gains an active status, "Target", that increases the critical - chance and precision of attacks it receives. The status lasts {D: 1, B0: 2, - B1: 3, B2: 4} turns, and increases chances by {D: 15, A0: 25, A1: 35, A2: 45} - points. - -* Petrify {D, B0, B1}: - The target becomes inactive and invulnerable for {D: 1, B0: 2, B1: 3} turns. - -* Sacrifice {D, A0, A1, A2, A3}: - Target gains <cost of the skill> SP points. - -* Denial {D, B0, B1, B2}: - Target is unable to gain SP points from attacks, parries, or defenses for - {D: 2, B0: 4, B1: 6} turns. |