Save-Point
KLazyWayOut - Printable Version

+- Save-Point (https://www.save-point.org)
+-- Forum: Material Development (https://www.save-point.org/forum-8.html)
+--- Forum: Scripts Database (https://www.save-point.org/forum-39.html)
+---- Forum: RPGMaker XP (RGSS) Engine (https://www.save-point.org/forum-116.html)
+---- Thread: KLazyWayOut (/thread-8528.html)



KLazyWayOut - kyonides - 06-14-2022

KLazyWayOut
XP only
by Kyonides Arkanthes

Introduction

Confused Are your players Boring tired of fighting some random mobs?
Grinning Fear not! There is a LAZY way out of such a messy situation! Laughing

A brand new message will show up on the map warning you about the upcoming battle. If the player wants to skip it, he or she can pay their way out of it!

The Script

Code:
# * KLazyWayOut XP
#  Scripter : Kyonides Arkanthes
#  2022-06-14
# * A Non Plug & Play Script * #

# Are your players tired of fighting some random mobs?
# Fear not! There is a LAZY way out of such a messy situation!
# A brand new message will show up on the map warning you about the upcoming
# battle. If the player wants to skip it, he or she can pay their way out of it!

# :ox and :oy stands for the X & Y Offsets respectively.

module KLazy
  SWITCH_ID = 1
  ALERT_SOUND = { :name => "", :volume => 70, :pitch => 100 }
  TRANSITION = { :name => "018-Brick02", :frames => 10 }
  FONT = { :name => "Arial", :size => 22,  :bold => false }
  PICTURE = { :name => "app_logo", :ox => 4, :oy => 4 }
  MESSAGE_SIZE = { :x => 100, :y => 4, :width => 480 }
  MESSAGE = [] # Leave it alone!
  MESSAGE << "You are out of luck!"
  MESSAGE << "Some random monsters have appeared!"
  MESSAGE << "Want to pay them %s%s?"
  MESSAGE << ""
  # Battle Skip Cost: { MAPID => cost, etc. }
  SKIP_COST = { 1 => 10 }
  SKIP_COST.default = 20
end

class Spriteset_Map
  def make_battle_alert
    dimensions = KLazy::MESSAGE_SIZE
    mx = dimensions[:x]
    my = dimensions[:y]
    cost = KLazy::SKIP_COST[$game_map.map_id]
    pic = KLazy::PICTURE
    message = KLazy::MESSAGE
    font = KLazy::FONT
    ay = $game_player.y - $game_map.display_y
    @alert_sprite = Sprite.new(@viewport2)
    @alert_sprite.y = ay < 8 ? 344 : 12
    @alert_sprite.z += 1000
    @alert_sprite.bitmap = b = Bitmap.new(dimensions[:width], 132)
    bit = RPG::Cache.picture(pic[:name])
    b.blt(pic[:ox], pic[:oy], bit, bit.rect)
    bit.dispose
    mw = b.width - mx - 8
    b.font.name = font[:name]
    b.font.size = font[:size]
    b.font.bold = font[:bold]
    message.size.times do |n|
      text = sprintf(message[n], cost, $data_system.words.gold)
      b.draw_text(mx, my, mw, 28, text)
      my += 28
    end
    tr = KLazy::TRANSITION
    Graphics.transition(tr[:frames], "Graphics/Transitions/" + tr[:name])
  end

  def dispose_battle_alert
    @alert_sprite.bitmap.dispose
    @alert_sprite.dispose
  end
end

class Scene_Map
  alias :kyon_lf_scn_bttl_up :update
  alias :kyon_lf_scn_bttl_call_bttl :call_battle
  def dispose_alert
    @spriteset.dispose_battle_alert
    @battle_alert = nil
  end

  def update_alert
    $game_system.update
    $game_screen.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      kyon_lf_scn_bttl_call_bttl
      dispose_alert
    elsif Input.trigger?(Input::C)
      cost = KLazy::SKIP_COST[$game_map.map_id]
      if $game_party.gold < cost
        $game_system.se_play($data_system.buzzer_se)
        kyon_lf_scn_bttl_call_bttl
        dispose_alert
        return
      end
      $game_system.se_play($data_system.shop_se)
      $game_party.lose_gold(cost)
      $game_temp.battle_troop_id = nil
      dispose_alert
    end
  end

  def update
    if @battle_alert
      update_alert
      return
    end
    kyon_lf_scn_bttl_up
  end

  def battle_alert
    $game_temp.battle_calling = false
    $game_temp.menu_calling = false
    $game_temp.menu_beep = false
    $game_player.make_encounter_count
    $game_player.straighten
    sound = KLazy::ALERT_SOUND
    alert_se = RPG::AudioFile.new(sound[:name], sound[:volume], sound[:pitch])
    $game_system.se_play(alert_se)
    $game_player.straighten
    Graphics.freeze
    @spriteset.make_battle_alert
    @battle_alert = true
  end
 
  def call_battle
    $game_switches[KLazy::SWITCH_ID] ? battle_alert : kyon_lf_scn_bttl_call_bttl
  end
end



Note: The demo includes some minor edits of the Scene_Title class to make it easy to earn some gold coins and automatically turns Switch #1 on.

Terms & Conditions

Free as in Beer beer for non commercial games.
Contact me if you want to go commercial. (There will be an inexpensive charge for this script only.)