Skip to content

Instantly share code, notes, and snippets.

@12345ieee
Last active April 28, 2023 19:54
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save 12345ieee/ff178fda38a964b2e064142f9e7fc2ea to your computer and use it in GitHub Desktop.
Save 12345ieee/ff178fda38a964b2e064142f9e7fc2ea to your computer and use it in GitHub Desktop.
GCFW Formulae
Updated till v1.2.1
Gem combination:
Grade difference = 0:
gem.damageMin 0.83 0.71 0.3 + 0.9 * rand()
gem.damageMax 0.87 0.71 0.6 + 1.8 * rand()
gem.range 0.694 0.388
gem.reloadingSpeed 0.74 0.44
gem.slowPower 0.91 0.45
gem.poisonDamage 0.96 0.85
gem.critHitChance 0.81 0.35
gem.critHitMultiplier 0.88 0.5
gem.manaGainPerHit 0.88 0.5
gem.armorReduceAmountPerHit 0.98 0.92
gem.bleedingIncDamageMultiplier 0.81 0.35
Grade difference = 1:
gem.damageMin 0.82 0.70 0.3 + 0.6 * rand()
gem.damageMax 0.86 0.70 0.6 + 1.4 * rand()
gem.range 0.80 0.25
gem.reloadingSpeed 0.80 0.25
gem.slowPower 0.88 0.38
gem.poisonDamage 0.97 0.62
gem.critHitChance 0.80 0.28
gem.critHitMultiplier 0.88 0.44
gem.manaGainPerHit 0.89 0.44
gem.armorReduceAmountPerHit 0.97 0.87
gem.bleedingIncDamageMultiplier 0.80 0.28
Grade difference > 1:
gem.damageMin 0.81 0.69 0.4 + 0.3 * rand()
gem.damageMax 0.85 0.69 1.0 + 0.8 * rand()
gem.range 0.92 0.09
gem.reloadingSpeed 0.92 0.09
gem.slowPower 0.81 0.31
gem.poisonDamage 0.98 0.42
gem.critHitChance 0.79 0.26
gem.critHitMultiplier 0.88 0.44
gem.manaGainPerHit 0.90 0.38
gem.armorReduceAmountPerHit 0.96 0.75
gem.bleedingIncDamageMultiplier 0.79 0.26
combined = c1*best + c2*worst + ( random part for damage )
After that, for range and speed:
higherGrade = max(g1.grade, g2.grade)
gradeNerf = higherGrade <= 10 ? 1 : (10 / (10 + (higherGrade - 10) * 1.5));
oldVal = max(g1.value, g2.value)
result = max(oldVal, oldVal + (newVal - oldVal) * gradeNerf)
Combined gem (min/max)damage can't go lower than the parent's.
Very low special values get thrown away.
Slow Ratio:
SlowRatio = 0.915*(1 - Pow(1 + gem.slow/1.85, - Max(0.24, 0.5 - gem.grade * 0.017)))
capped at 70%
WL exp needed for lv L:
PlusXp = 235 + 9 * (L - 1) + 3 * (L - 1)^2
TotalXp = 230 + 240 * (L - 1) + 6 * (L - 1)^2 + (L - 1)^3
Monster exp:
mExp = log(monster.hpMax + 1) / log(12)
mExp = mExp * log(monster.armor + 1) / log(9)
mExp = mExp * pow(1.007,monster.shield)
mExp = mExp * pow(1.017,monster.speedMax)
if(Giant) mExp = mExp * 1.38 * 2.5 // the 2.5 is in the wave construction
if(Swarmling) mExp = mExp * 0.583
mExp = mExp + 2
Mana shards:
manaToHarvest = harvestingSpeedMult * Math.pow(damage,0.6);
manaToHarvest *= Math.pow(0.982,Math.floor(shard.manaHarvested / 1000));
shard.manaHarvested += manaToHarvest
mana += manaToHarvest * (1 + 0.04 * poolLevel) * (1 + 0.01 * orblets)
Talisman Rarity:
Rarity = RarityMin + (RarityMax - RarityMin) * random() * random()
it gets rolled 2 times and the worst roll is dropped
Gem refund:
Mana_refunded = gem.value * 0.7
POISON
{
damageMin = 6
damageMax = 9
poisonDamage = 1 * 8 * (1 + POISON[0])
range = 79
reloadingSpeed = 2.1
}
CRITHIT
{
damageMin = 5
damageMax = 10
critHitChance = 0.111 * (1 + CRITHIT[0])
critHitMultiplier = 0.35 * (1 + CRITHIT[0])
range = 78
reloadingSpeed = 2
}
BLEEDING
{
damageMin = 5
damageMax = 11
bleedingIncDamageMultiplier = 0.15
range = 80
reloadingSpeed = 2
}
SLOWING
{
damageMin = 6
damageMax = 11
slowPower = 1.05
range = 77
reloadingSpeed = 2.1
}
MANA_LEECHING
{
damageMin = 4
damageMax = 8
manaGainPerHit = 0.13 * (1 + MANA_LEECHING[0])
range = 77
reloadingSpeed = 1.8
}
ARMOR_TEARING
{
damageMin = 4
damageMax = 10
armorReduceAmountPerHit = 4 * (1 + ARMOR_TEARING[0])
range = 73
reloadingSpeed = 2.2
}
reloadingSpeed *= 0.67 * 0.9
range *= 1.15 * 28 / 17
damageMin += 1
if(!TRIAL) damageMax += 1
range *= (1 + RESONANCE[1])
damageMin *= (1 + RESONANCE[0])
damageMax *= (1 + RESONANCE[0])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment