RPG Maker Forums

I want to have an odometer roll added to my battle by itself without using the Earthbound style battle system.

I also need it to be able to handle up to 999,999 HP/MP instead of 9,999 max
 

Code:
#==============================================================================# ** Earthbound-Ish Odometer Roll#------------------------------------------------------------------------------# Version: 1.0# Author: cozziekuns # Date: February 17, 2013#==============================================================================# Description:#------------------------------------------------------------------------------# This script attempts to emulate the battle system of the Earthbound/Mother # series; most notably Earthbound and Earthbound 2 (Mother 2 and 3). This # certain addon addresses the infamous HP/MP scrolling system that made battles# that much more intense.#==============================================================================# Instructions:#------------------------------------------------------------------------------# Paste this script into its own slot in the Script Editor, above Main but # below Materials. Edit the modules to your liking.#==============================================================================# Graphics:#------------------------------------------------------------------------------# You must have two Odometer pictures in your Graphics/System folder. One of # them must be named "Odometer_HP", and the other one must be named # "Odometer_MP". Obviously, they represent the odometer for HP and MP values,# respectively#==============================================================================#==============================================================================# ** Cozziekuns#==============================================================================module Cozziekuns    module Earthboundish        Odometer_Roll_Speed = 4 # Smaller speeds are faster than larger speeds.      end  endinclude Cozziekuns#==============================================================================# ** Game_Actor#==============================================================================class Game_Actor    attr_accessor :odometer_hp  attr_accessor :odometer_mp    alias coz_ebisohd_gmactr_setup setup  def setup(actor_id, *args)    coz_ebisohd_gmactr_setup(actor_id, *args)    @odometer_hp = 0    @odometer_mp = 0  end    alias coz_ebishod_gmactr_execute_damage execute_damage  def execute_damage(user, *args)    if $game_party.in_battle      on_damage(@result.hp_damage) if @result.hp_damage > 0      @odometer_hp += @result.hp_damage      @odometer_mp += @result.mp_damage      user.hp += @result.hp_drain      user.mp += @result.mp_drain    else      coz_ebishod_gmactr_execute_damage(user, *args)    end  end    [:hp, :mp].each { |stat|    alias_method("coz_ebishod_gmactr_item_effect_recover_#{stat}".to_sym, "item_effect_recover_#{stat}".to_sym)    define_method("item_effect_recover_#{stat}".to_sym) { |user, item, effect|      if $game_party.in_battle        value = (send("m#{stat}".to_sym) * effect.value1 + effect.value2) * rec        value *= user.pha if item.is_a?(RPG::Item)        value = value.to_i        @result.send("#{stat}_damage=".to_sym, @result.send("#{stat}_damage".to_sym) - value)        @result.success = true        send("odometer_#{stat}=".to_sym, send("odometer_#{stat}".to_sym) - value)      else        send("coz_ebishod_gmactr_item_effect_recover_#{stat}".to_sym, user, item, effect)              end    }  }  end#==============================================================================# ** Game_Enemy#==============================================================================class Game_Enemy    def execute_damage(user)    on_damage(@result.hp_damage) if @result.hp_damage > 0    self.hp -= @result.hp_damage    self.mp -= @result.mp_damage    user.odometer_hp -= @result.hp_drain    user.odometer_mp -= @result.mp_drain  end  end#==============================================================================# ** Window_BattleStatus#==============================================================================class Window_BattleStatus    def refresh_hpmp(actor, index)    rect = item_rect(index)    if gauge_area_rect(index) == item_rect(index)       rect.y += line_height * 2      rect.height -= line_height * 2      contents.clear_rect(rect)    else      contents.clear_rect(gauge_area_rect(index))    end    draw_gauge_area(gauge_area_rect(index), actor)  end    [:hp, :mp].each { |stat|    define_method("draw_actor_#{stat}".to_sym) { |actor, x, y, width|      change_color(system_color)      draw_text(x, y, 30, line_height, Vocab.send("#{stat}_a"))      od_x = x + contents.text_size(Vocab.send("#{stat}_a")).width + 4      actor_hp = actor.send("#{stat}".to_sym)      actor_od_hp = actor.send("odometer_#{stat}".to_sym)      draw_odometer(od_x, y, stat, actor_hp, actor_od_hp)    }  }    def draw_odometer(x, y, type, value, od_value)    bitmap = Cache.system("Odometer_#{type.upcase}")    places = [1000, 100, 10, 1]    od_ary = value.to_s.split("").collect { |str| str.to_i }    (4 - od_ary.size).times { od_ary.unshift(0) }    od_ary.each_index { |i|      src_y = (9 - od_ary[i]) * 20      if (od_ary.join.to_i) % places[i] == 0 and od_value != 0        src_y += 20 / Earthboundish::Odometer_Roll_Speed * (Graphics.frame_count % Earthboundish::Odometer_Roll_Speed)      end      contents.blt(x + i * 24, y + 2, bitmap, Rect.new(0, src_y, 24, 20))    }  end  end#==============================================================================# ** Scene_Battle#==============================================================================class Scene_Battle    alias coz_ebishod_scbtl_update_basic update_basic  def update_basic(*args)    coz_ebishod_scbtl_update_basic(*args)    update_odometer  end    def update_odometer    $game_party.members.each { |actor|      if actor.odometer_hp != 0 or actor.odometer_mp != 0        if actor.odometer_hp != 0 and Graphics.frame_count % Earthboundish::Odometer_Roll_Speed == 0          damage = actor.odometer_hp > 0 ? 1 : - 1          actor.hp -= damage          actor.odometer_hp -= damage        end        if actor.odometer_mp != 0 and Graphics.frame_count % Earthboundish::Odometer_Roll_Speed == 0          damage = actor.odometer_mp > 0 ? 1 : - 1          actor.mp -= damage          actor.odometer_mp -= damage        end        @status_window.refresh_hpmp(actor, actor.index)      end    }  end  end
required to use
Odometer-HP
 
Odemeter-MP

Latest Threads

Latest Posts

Latest Profile Posts

Day 9 of giveaways! 8 prizes today :D
He mad, but he cute :kaopride:

Our latest feature is an interview with... me?!

People4_2 (Capelet off and on) added!

Just beat the last of us 2 last night and starting jedi: fallen order right now, both use unreal engine & when I say i knew 80% of jedi's buttons right away because they were the same buttons as TLOU2 its ridiculous, even the same narrow hallway crawl and barely-made-it jump they do. Unreal Engine is just big budget RPG Maker the way they make games nearly identical at its core lol.

Forum statistics

Threads
106,040
Messages
1,018,470
Members
137,821
Latest member
Capterson
Top