Here's as of yet unnamed xeno-biologist, demonstrating the combat system tweak. The main draws are that it'll let turns resolve faster, improve performance in the late-game and let you keep your scrolling's position even when the page 'refreshes'. I also want to make the combat log scroll and update itself rather than deleting all old text with each turn. The main goal is to make things lightweight and snappy.
As for her gun, I'd like to be able to replace it with other guns later on, which will require a little photo-editing voodoo but should be relatively easy. The laser effect is a separate picture which is fixed to a location of the original picture. So, different elements will create different laser effects, shapes, colors, even bullets and so on.
Now besides different guns/bullets, I'd also like to offer alternate suits. Recolors will be easy and so will adding emblems/doodads to them. Such things can just be attached instead of requiring a sprite replacement, but sprite replacements are fine, only marginally increases code complexity. Besides suits and guns, you can also equip different SHIELDS and accessories. Accessories probably aren't visible on the sprite except for certain exceptions, but shields will be visible and trivially easy. Just represented as bubbles or shield effects or a glow that's overlaid onto the sprite itself.
Besides this, I've designed more status effects. There are multiple DoTs but I feel like each of them will feel nice and different, that is, Melted deals acid damage that doubles with each turn it's active, and ignite deals fixed damage based on the initial attack's damage, while there's regular poison that deals a percentage of max HP as damage. The most quirky one would be Infected, which barely does damage but has an associated debuff, such as Blind. Each turn you risk acquiring that secondary debuff while it's active, and it spreads when you target (healing or attacking w/e) anyone else.
Below is the list of effects, no need to read further unless you're really curious about them
By the way, when I mention power, that's an approximate comparison of the potency of this debuff vs just dealing a regular attack or something else on your turn. Likewise, if a debuff cancels two of the enemy's turns, then it has a power of 2, since a 2 for 2 turn trade would be pretty even.
You may be wondering how they affect bosses vs affecting regular enemies. First, even the weakest bosses should be at most half as likely to suffer a given debuff than a minion, and the strongest buffs are 1/4th as likely. Second, DoT debuffs tend to scale up poorly even the ones that affect a fixed fraction of the enemy's HP. Disables/silences/stuns will be handled on a case-by-case basis and some bosses will have a few immunities but mainly, they handle these things by either curing their debuff or playing around it, perhaps I'll even let them become immune after the debuff hits them the first time and resolves. So as to prevent cheese. But to cap it off, I want the stronger/crazier debuffs to start appearing around halfway into the game, where bosses are more like 33% as likely to get hit by a debuff as opposed to 50%
<<if $status.melted is not undefined>>
<<message "💦 $status.melted" btn>>
Melted (Power: 1.5) 1.75X total damage but can be canceled early
Causes doubling CAUSTIC damage each turn
Starts at 1/4X, then hits 1/2X and X
Lasts 3 turns. No need for reduced hit chances based on target. Has 100% base hit
<</message>>
<</if>>
attach $meltedDamage
<<if $status.ignited is not undefined>>
<<message "🔥 $status.ignited" btn>>
Ignited (Power: 2 for party members, scales with attacker's relative power)
Causes X THERMAL damage each turn
Where X is the attack's initial damage
Lasts random(1,3) turns. No need for reduced hit chances based on target. Has 100% base hit
<</message>>
<</if>>
attach $ignitedDamage
<<if $status.bleeding is not undefined>>
<<message "🩸 $status.bleeding" btn>>
Bleeding (Power: 2)
Causes 1/4th of max HP as typeless damage each turn. Reduced by INSIDES
Formula: X damage / (1.00 + (0.01 * INSIDES)), where 100 insides divides it by 2, 400 insides divides it by 5
So the range is... 1/4th to 1/20th of max HP.
A 40 stat (40 INSIDES) boss takes 30% less from the 1/4, from 4/16 to 3/16 of HP.
Lasts until expired
Lasts 1/2/3 (picked randomly) turns. No need for less hit chances based on target. Has slightly less than 100% base hit
Initially only cause BLEED for 1 or 2 turns but later progress to 3/4
Weapons inflict this many turns of it: 1, random(1,2), random(1,2,3), random(2,3), random(2,3,4). Higher tier, higher amount of turns
This debuff is commonly cured by Healing or Bandage
<</message>>
<</if>>
<<if $status.infected is not undefined>>
<<message "🦠<<if $status.infected > -1>> $status.infected<</if>>" btn>>
Infected (Power: 0.5ish for base DoT) The spreading effect is neutral due to affecting allies/enemies equally. The RIDER adds its potency
Organics take 1/16th of max HP as BIO damage each turn. Doesn't affect Inorganics
Each turn, the target has a 25% chance of contracting the secondary ailment associated with the disease.
Acting spreads the disease onto targets.
Lasts 4 turns. Might last longer depending on factors. Possibly 8 turns or indefinite (viral vs bacterial).
<</message>>
<</if>>
<<if $status.poisoned is not undefined>>
<<message "💜 $status.poisoned" btn>>
Poisoned (Power: 1.5)
Organics take BIO damage each turn. Doesn't affect Inorganics
Lasts until expired
The damage dealt is 1/8th of max HP. Lasts 4 turns. Hit chance reduced by INSIDES, scales down.
<</message>>
<</if>>
<<if $status.irradiated is not undefined>>
<<message "☢️<<if $status.irradiated > -1>> $status.irradiated<</if>>" btn>>
Irradiated (Power: 1.5, 2 due to increased HIT CHANCE)
Organics take BIO damage each turn, Inorganics instead take ELEC damage
Lasts until expired
The damage dealt is 1/6th of CURRENT HP. Lasts 6 turns OR indefinitely. +50% hit chance relative to Poisoned. Hit chance is reduced by INSIDES.
<</message>>
<</if>>
<<if $status.blinded is not undefined>>
<<message "🌑 $status.blinded" btn>>
Blinded (Power 3, because 4/6 turns of halving attack damage = 2 turns missed, + evasion loss)
75% chance to miss when ATTACKING
Evasion set to 0%
<</message>>
<</if>>
Vulnerable to BACKSTAB
Lasts 4 turns.
- 50% RADIANT damage taken
<<if $status.deafened is not undefined>>
<<message "🔔 $status.deafened" btn>>
Deafened Power: 1
25% chance to fail when ACTING
Evasion is halved
<</message>>
<</if>>
Vulnerable to BACKSTAB
Lasts 2 turns
<<if $status.numbed is not undefined>>
<<message "🚫💢 $status.numbed" btn>>
Numbed Power 2, due to removing 30% evade and increasing 10% dmg etc
+10% ALL damage taken
Evasion set to 0%
REACTIONS are disabled
<</message>>
<</if>>
Lasts 4 turns.
Vulnerable to BACKSTAB
Possibly -10% damage taken
The primary purpose is removing REACTS. More of an endgame debuff
<<if $status.bruised is not undefined>>
<<message "🟣 $status.bruised" btn>>
Bruised Power: 2
+ 20% KINETIC damage taken
ACTING deals KINETIC damage to self equal to 1/4th of max HP.
<</message>>
<</if>>
Lasts 3 turns
Applied with Fractured
<<if $status.fractured is not undefined>>
<<message "🦴⬇️ $status.fractured" btn>>
Fractured Power: 2 (1 from KINETIC bonus, 1 from 1/4th of Shattered)
+ 25% KINETIC damage taken
KINETIC damage has a 25% chance to SHATTER this target
<</message>>
<</if>>
Lasts 3 turns
Applied with Bruised
<<if $status.weakened is not undefined>>
<<message "🦾⬇️ $status.weakened" btn>>
Weakened Power: 1 (Quite specific)
- 50% melee damage dealt
<</message>>
<</if>>
Lasts 3 turns
<<if $status.shattered is not undefined>>
<<message "💥🦴" btn>>
Shattered 4
+ 25% KINETIC damage taken
Many actions are disabled.
<</message>>
<</if>>
Indefinite
Replaces Fractured
<<if $status.shocked is not undefined>>
<<message "💢⬇️ $status.shocked" btn>>
Shocked (POWER: 1)
50% chance to miss 1 hit when ATTACKING.
Only affects ranged weapons.
<</message>>
<</if>>
Lasts 2 turns
Unsteady grip etc, shaky, nerve-wracked, etc.
<<if $status.sealed is not undefined>>
<<message "🚫🌌 $status.sealed" btn>>
Sealed (POWER: 2)
Prevents the use of PSI powers
<</message>>
<</if>>
Lasts like 3 turns
<<if $status.shorted is not undefined>>
<<message "🚫⚙️ $status.shorted" btn>>
Shorted Power: 3
Prevents the use of TECH skills
<</message>>
<</if>>
Much more powerful than SEALED since tech is more common
This represents being disconnected from wifi
Lasts like 3 turns
<<if $status.confused is not undefined>>
<<message "❓ $status.confused" btn>>
Confused
May lose turn, attack an ally, or act normally at random
50% chance to be removed by taking damage
<</message>>
<</if>>
<<if $status.hacked is not undefined>>
<<message "⚙️❓ $status.hacked" btn>>
Hacked
May lose turn, attack an ally, or act normally at random
Inorganics will never act normally. Only lose turn or attack ally
<</message>>
<</if>>
Worse than confused & lasts full duration