XaiJu
Flag
Flag

patreon


A better way to refresh pages (pt 2)

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


A better way to refresh pages (pt 2)

More Creators