From Brotato Wiki

< User:Darkly77

(attack speed notes)
Tag: Reverted
(attack speed notes: use code formatting)
Tag: Reverted
Line 608: Line 608:
== Attack Speed Notes ==
== Attack Speed Notes ==


''This info was gonna go on the [[Attack Speed]] page, but I didn't use it in the end due to the complexity of the calculation for melee.''
In the game's code, a weapon's displayed "attack speed" is determined by both two of its stats: <code>cooldown</code> and <code>recoil_duration</code>, via ''weapon_stats.gd'' (see <code>get_cooldown_text</code> in ''ranged_weapon_stats.gd'' and ''melee_weapon_stats.gd'')
 
In the game's code, a weapon's displayed "attack speed" is determined by both two of its stats: cooldown and recoil_duration, via weapon_stats.gd (see get_cooldown_text in ranged_weapon_stats.gd and melee_weapon_stats.gd)


Recoil Duration is almost always 0.1, except for 11 ranged weapons: Crossbow (0.15), Flamethrower (0.02), Laser Gun (0.2), Minigun (0.02), Nuclear Launcher (0.142), Obliterator (0.2), Rocket Launcher (0.142), Shredder (0.15), Slingshot (0.15), SMG (0.05), and Sniper Gun (0.2).
Recoil Duration is almost always 0.1, except for 11 ranged weapons: Crossbow (0.15), Flamethrower (0.02), Laser Gun (0.2), Minigun (0.02), Nuclear Launcher (0.142), Obliterator (0.2), Rocket Launcher (0.142), Shredder (0.15), Slingshot (0.15), SMG (0.05), and Sniper Gun (0.2).
Line 616: Line 614:
For ranged weapons, the displayed attack speed is calculated as:
For ranged weapons, the displayed attack speed is calculated as:


(cooldown / 60) + (recoil_duration * 2)
<code>(cooldown / 60) + (recoil_duration * 2)</code>


For melee weapons, the displayed attack speed is calculated as:
For melee weapons, the displayed attack speed is calculated as:


(cooldown / 60) + recoil_duration + (atk_duration / 2) + back_duration
<code>(cooldown / 60) + recoil_duration + (atk_duration / 2) + back_duration</code>


Here's what those melee variables mean:
Here's what those melee variables mean:


back_duration = 0.2 / (1 + (stat_attack_speed * 3))
* back_duration = <code>0.2 / (1 + (stat_attack_speed * 3))</code>
At 0 attack speed, this would be: 0.2
** At 0 attack speed, this would be: 0.2
At 10 attack speed (0.1), this would be: 0.15
** At 10 attack speed (0.1), this would be: 0.15
At 50 attack speed (0.5), this would be: 0.08
** At 50 attack speed (0.5), this would be: 0.08
At 100 attack speed (1), this would be: 0.05
** At 100 attack speed (1), this would be: 0.05
atk_duration = max(0.01, 0.2 - (stat_attack_speed / 10.0)) + range_factor * 0.15
* atk_duration = <code>max(0.01, 0.2 - (stat_attack_speed / 10.0)) + range_factor * 0.15</code>
range_factor = max(0.0, WPN.max_range / clamp(70.0 * (1 + (stat_attack_speed / 3)), 70.0, 120.0))
* range_factor = <code>max(0.0, WPN.max_range / clamp(70.0 * (1 + (stat_attack_speed / 3)), 70.0, 120.0))</code>
max gets the highest value, so here it can't be lower than 0
** <code>max</code> gets the highest value, so here it can't be lower than 0
clamp makes sure the value isn't higher/lower than the specified numbers, so here it can't be lower than 70 or higher than 120
** <code>clamp</code> makes sure the value isn't higher/lower than the specified numbers, so here it can't be lower than 70 or higher than 120

Revision as of 10:54, 4 December 2022

Itembox

Testing a new template, intended for use on mod pages.


PLEASE USE CTRL+F5 TO SEE THE NEW STYLES


Characters

Mod-Isaac-isaac icon.png

Isaac
Character
  • +20% Attack Speed
  • -30% Damage
  • Start with 1 D6
  • Start with 6 Bomb

Mod-Isaac-cain icon.png

Isaac
Character
  • +8% chance to double the value of picked up materials
  • -250 Range
  • You start with 1 Lucky Foot
  • +15% Speed
  • -70% Range modifications
  • +15% Ranged Damage modifications
  • -20% Attack Speed modifications

Mod-Isaac-judas icon.png

Judas
Character
  • +15% Damage
  • You start with 1 The Book of Belial
  • +10% Crit Chance
  • -10 Armor
  • +25% Crit Chance modifications
  • -15% Max HP modifications

Mod-Isaac-magdalene icon.png

Magdalene
Character
  • +5 Max HP
  • +2% Damage for every -1% Speed you have [+24]
  • You start with 1 Yum Heart
  • You start with 3 Maggy's Faith
  • -10 HP Regeneration

Mod-Isaac-keeper icon.png

Keeper
Character
  • +10 Max HP
  • Your Max HP is capped at its current value [20]
  • +20% chance to heal 1 HP when picking up a material
  • -100 HP Regeneration
  • -100% Life Steal
  • -5% Items Price

Mod-Isaac-eden icon.png

Eden
Character
  • Random Perk Item
  • Random Stat Item


Items

Mod-Isaac-dice6 icon.png

D6
Unique
  • +2 free reroll in the shop
  • -5 Luck
  • +5% Items Price

Mod-Isaac-belial book icon.png

The Book of Belial
Unique
  • +1 temporary damage per crit kill
  • -10 Max HP
  • -10% Damage

Mod-Isaac-bomb icon.png

Bomb
Limited (10)
  • A landmine spawns every -1 seconds dealing 56 (200% Engineering Stat.png) damage in an area

Mod-Isaac-lucky foot icon.png

Lucky Foot
Limited (5)
  • +1% chance to get +1 Luck when picking up a material
  • -5% Speed

Mod-Isaac-maggys faith icon.png

Maggy's Faith
Limited (3)
  • +1 Max HP at the end of a wave
  • -4% Speed

Mod-Isaac-yum heart icon.png

Yum Heart
Unique
  • +7 HP recovered from consumables
  • -20% Life Steal

Mod-Isaac-bomb bag icon.png

Bomb Bag
Limited (3)
  • Flies with you
  • A landmine spawns every 20 seconds dealing 65 (200% Engineering Stat.png) damage in an area

Mod-Isaac-bloodshot eye icon.png

Bloodshot Eye
Limited (6)
  • Spawns a companion that flies around you and shoots enemies for 8 damage (50% Ranged Damage.png 50% Engineering Stat.png)

Mod-Isaac-inch nails icon.png

8 Inch Nails
Unique
  • Damage modifications are increased by 10%


Weapons

Works with weapons too. Might be a bit excessive to show all tiers so I'm only showing the initial one here.


Mod-Isaac-isaacs tears icon.png

Isaac's Tears
Tears
  • Damage: 7/14/28/45 (Ranged Damage.png)
  • Critical: x2 (3% chance)
  • Cooldown: 0.7/0.62/0.53/0.45s
  • Knockback: 10
  • Range: 700 (Ranged)
  • Piercing: 0/0/1/1

Mod-Isaac-isaacs tears icon.png

Isaac's Tears
Tears
  • Damage: 7 (Ranged Damage.png)
  • Critical: x2 (3% chance)
  • Cooldown: 0.7s
  • Knockback: 10
  • Range: 700 (Ranged)

Mod-Isaac-number one icon.png

Number One
Tears
  • Damage: 4 (50%Ranged Damage.png)
  • Critical: x2 (3% chance)
  • Cooldown: 0.45s
  • Knockback: 15
  • Range: 200 (Ranged)

Mod-Isaac-inner eye icon.png

The Inner Eye
Tears
  • Damage: 7x3 (50%Ranged Damage.png)
  • Critical: x2 (3% chance)
  • Cooldown: 1.2s
  • Knockback: 10
  • Range: 300 (Ranged)

Mod-Isaac-moms knife icon.png

Mom's Knife II
Precise, Demonic
  • Damage: 30 (60%Melee Damage.png)
  • Critical: x1.5 (30% chance)
  • Cooldown: 1.3s
  • Knockback: 2
  • Range: 350 (Melee)


Circular Saw.png

Circular Saw
Medical
  • Damage: 14 (50%Melee Damage.png)
  • Critical: x2 (10% chance)
  • Cooldown: 0.5s
  • Knockback: 10
  • Range: 350 (Melee)
  • Piercing: 2 (-20% damage)
  • Life Steal: 5%



Attack Speed Notes

In the game's code, a weapon's displayed "attack speed" is determined by both two of its stats: cooldown and recoil_duration, via weapon_stats.gd (see get_cooldown_text in ranged_weapon_stats.gd and melee_weapon_stats.gd)

Recoil Duration is almost always 0.1, except for 11 ranged weapons: Crossbow (0.15), Flamethrower (0.02), Laser Gun (0.2), Minigun (0.02), Nuclear Launcher (0.142), Obliterator (0.2), Rocket Launcher (0.142), Shredder (0.15), Slingshot (0.15), SMG (0.05), and Sniper Gun (0.2).

For ranged weapons, the displayed attack speed is calculated as:

(cooldown / 60) + (recoil_duration * 2)

For melee weapons, the displayed attack speed is calculated as:

(cooldown / 60) + recoil_duration + (atk_duration / 2) + back_duration

Here's what those melee variables mean:

  • back_duration = 0.2 / (1 + (stat_attack_speed * 3))
    • At 0 attack speed, this would be: 0.2
    • At 10 attack speed (0.1), this would be: 0.15
    • At 50 attack speed (0.5), this would be: 0.08
    • At 100 attack speed (1), this would be: 0.05
  • atk_duration = max(0.01, 0.2 - (stat_attack_speed / 10.0)) + range_factor * 0.15
  • range_factor = max(0.0, WPN.max_range / clamp(70.0 * (1 + (stat_attack_speed / 3)), 70.0, 120.0))
    • max gets the highest value, so here it can't be lower than 0
    • clamp makes sure the value isn't higher/lower than the specified numbers, so here it can't be lower than 70 or higher than 120