@@ -286,7 +286,7 @@ async function simulateBattleStep(
286286 break ;
287287 case "Phoenix Rising" :
288288 if ( attacker . hp < attacker . maxHp * 0.3 ) {
289- const heal = Math . floor ( attacker . maxHp * 0.4 ) ;
289+ const heal = Math . floor ( attacker . maxHp * 0.15 ) ;
290290 attacker . hp = Math . min ( attacker . hp + heal , attacker . maxHp ) ;
291291 narration = `🔥 **${ attacker . name } ** rises like a phoenix, healing for ${ heal } HP!` ;
292292 } else {
@@ -329,13 +329,13 @@ async function simulateBattleStep(
329329 narration = `🎵 **${ attacker . name } ** drops the beat, disrupting **${ defender . name } **'s rhythm! (-3 SPD to enemy)` ;
330330 break ;
331331 case "Call to Arms" :
332- const hits = 3 ;
333- damage = Math . floor ( attacker . attack * 0.6 ) * hits ;
334- narration = `📯 **${ attacker . name } ** sounds the call to arms, a platoon of soldiers unleashed a flurry of ${ hits } bullets!` ;
332+ damage = Math . floor ( attacker . attack * 1.3 ) ;
333+ attacker . hp = Math . min ( attacker . maxHp , attacker . hp + 15 ) ;
334+ narration = `📯 **${ attacker . name } ** sounds the call to arms, a platoon of soldiers unleashes a flurry of bullets, while receiving medicine for 15 HP !` ;
335335 break ;
336336 case "Airstrike" :
337337 const airstrikes = Math . floor ( Math . random ( ) * 5 ) + 1 ;
338- damage = Math . floor ( attacker . attack * ( 1.7 / 5 ) ) * airstrikes ;
338+ damage = Math . floor ( attacker . attack * ( 1.8 / 5 ) ) * airstrikes ;
339339 narration = `✈️ **${ attacker . name } ** calls in an airstrike from above, ${ airstrikes } bomber${ airstrikes > 1 ? "s" : "" } raining destruction!` ;
340340 break ;
341341 case "Divine Intervention" :
@@ -354,6 +354,23 @@ async function simulateBattleStep(
354354 attacker . speed += 3 ;
355355 narration = `☣️ **${ attacker . name } ** injects themself with Toxic Gunner's fumes, enhancing their reflexes and durability! (+5 DEF, +5 SPD)` ;
356356 break ;
357+ case "Freikugel" :
358+ const freikugelCost = Math . floor ( attacker . maxHp * 0.1 ) ;
359+ if ( attacker . hp > freikugelCost ) {
360+ damage = 35 ;
361+ attacker . hp -= freikugelCost ;
362+ narration = `🔫 **${ attacker . name } ** fires the accursed Freikugel, sacrificing ${ freikugelCost } HP for demonic devastation!` ;
363+ } else {
364+ damage = Math . floor ( attacker . attack * 1.1 ) ;
365+ narration = `🔫 **${ attacker . name } ** attempts to fire the Freikugel but lacks the life force, settling for a weaker shot!` ;
366+ }
367+ break ;
368+ case "Bloodlust" :
369+ damage = Math . floor ( attacker . attack * 0.8 ) ;
370+ const drainAmount = Math . floor ( damage * 0.9 ) ;
371+ attacker . hp = Math . min ( attacker . hp + drainAmount , attacker . maxHp ) ;
372+ narration = `🧛 **${ attacker . name } ** sucks **${ defender . name } **'s blood, draining ${ drainAmount } HP for themself!` ;
373+ break ;
357374 }
358375 } else {
359376 const baseDamage = attacker . attack ;
0 commit comments