RMRK is retiring.
Server is paid up for the rest of 2026, but the forum may go after that. See here for more information. Please archive or save anything you would like to keep before 2027.
Main Menu
  • Welcome to The RPG Maker Resource Kit.

Gambler skills for VX Ace (custom damage formulae)

Started by Trihan, April 15, 2015, 10:09:41 PM

0 Members and 1 Guest are viewing this topic.

Trihan

Inspired by fomar's old topic about getting the most out of the custom damage formula box in VX Ace I decided to make a couple of full-fledged gambling skills. These would be perfect for a Setzer-like character. If there are any other gambling-based skills anyone wants, let me know and I'll try to make 'em.

class Game_Battler < Game_BattlerBase
  def custom_formula_dice(a,b)
    c=1+rand(6)
    d=1+rand(6)
    if c==1 and d==1
      $game_message.add(sprintf("%s rolls snake eyes!", a.name))
    elsif c==d
      $game_message.add(sprintf("%s rolls double %d!", a.name, c))
    else
      $game_message.add(sprintf("%s rolls %d and %d!", a.name, c, d))
    end
    BattleManager.wait_for_message
    if c==1 and d==1
      10000
    elsif c==d
      c*400
    else
      (c+d)*100
    end
  end
  def custom_formula_gamble(a,b)
    c=1+rand(6)
    d=1+rand(6)
    if c==1 and d==1
      $game_message.add(sprintf("%s rolls snake eyes!", a.name))
    elsif c==d
      $game_message.add(sprintf("%s rolls double %d!", a.name, c))
    else
      $game_message.add(sprintf("%s rolls %d and %d!", a.name, c, d))
    end
    $game_message.add(sprintf("%s hands the dice to the enemy.", a.name))
    BattleManager.wait_for_message
    e=1+rand(6)
    f=1+rand(6)
    if e==1 and f==1
      $game_message.add(sprintf("%s rolls snake eyes!", b.name))
    elsif e==f
      $game_message.add(sprintf("%s rolls double %d!", b.name, e))
    else
      $game_message.add(sprintf("%s rolls %d and %d!", b.name, e, f))
    end
    BattleManager.wait_for_message
    $game_message.add(sprintf("%s's roll: %d", a.name, c+d))
    $game_message.add(sprintf("%s's roll: %d", b.name, e+f))
    BattleManager.wait_for_message
    if (c+d) > (e+f)
      if c==1 and d==1
        100000
      elsif c==d
        c*4000
      else
        (c+d)*1000
      end
    else
      $game_message.add(sprintf("%s's gamble backfired; %d damage is redirected!", a.name, (c+d)*1000))
      a.perform_damage_effect
      a.result.hp_damage = (c+d)*1000
      a.execute_damage(a)
      BattleManager.wait_for_message
      0
    end
  end
end



In the formula box for the respective skills, just put a.custom_formula_dice(a,b) or a.custom_formula_gamble(a,b)

They work thusly: Roll the Dice (the first skill) has the character roll 2 dice. Normally they deal 100 damage * the roll, but if they get double 1 (snake eyes) it deals 10,000 damage instead, and if they get doubles it does 400 * roll.

Risky Gamble also rolls 2 dice, but also lets the enemy roll. If your roll is higher it does 1000 damage * roll, 100,000 on snake eyes and 4000 * roll on doubles, but if your roll is lower it backfires and the user takes 1000 damage * roll instead.
It's more like a big ball of wibbly wobbly...timey wimey...stuff.