Save-Point
KSkillMsg - 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 VX/VXAce (RGSS2/3) Engines (https://www.save-point.org/forum-117.html)
+---- Thread: KSkillMsg (/thread-8820.html)



KSkillMsg - kyonides - 09-18-2023

KSkillMsg
VX + ACE

by Kyonides

Introduction

Do you want to replace the default message for the Escape skill? Thinking
Or any other skill? Confused
Now you can do it by using special note tags! Grinning
Happy with a sweat Please read the instructions already embedded in the script before asking questions here.

VX Script

Code:
# * KSkillMsg VX * #
#  Scripter : Kyonides Arkanthes
#  2023-09-19

# * How to Use * #
# Option 1: Place 1 or more notetags in a given Skill's Note Box.
# Option 2: Set a custom "string" to the ESCAPE_START Constant below.

# - Example of a Note Tag for Actors - Skill can be cast individually - #
#<message: actor 1 leaves at once.>

# - Example of a Note Tag for Enemies - #
#<message: enemy 1 chickens out.>

# - ESCAPE_START Constant's Default Value - #
# Below you will find the expression %s included in the string.
# It is used as a placeholder for the party's name.
# ESCAPE_START = "%s runs away from danger."

module KSkillMsg
  ESCAPE_START = "%s runs away from danger."
  REGEX_ACTOR = /<message: (actor) (\d+) ([^>]+)>/i
  REGEX_ENEMY = /<message: (enemy) (\d+) ([^>]+)>/i
  def self.process_msg(subject, item, default_line)
    regex = subject.is_a?(Game_Enemy)? REGEX_ENEMY : REGEX_ACTOR
    item.note[regex]
    ($1.nil? or subject.id != $2.to_i)? default_line : " " + $3
  end
end

class Game_Enemy
  def id
    @enemy_id
  end
end

class Scene_Battle
  def process_escape
    @info_viewport.visible = false
    @message_window.visible = true
    text = rand(100) < 50 ? Vocab::EscapeStart : KSkillMsg::ESCAPE_START
    text = sprintf(text, $game_party.name)
    $game_message.texts.push(text)
    if $game_troop.preemptive
      success = true
    else
      success = (rand(100) < @escape_ratio)
    end
    Sound.play_escape
    if success
      wait_for_message
      battle_end(1)
    else
      @escape_ratio += 10
      $game_message.texts.push('\.' + Vocab::EscapeFailure)
      wait_for_message
      $game_party.clear_actions
      start_main
    end
  end

  def alternate_display_use_item(skill)
    line = KSkillMsg.process_msg(@active_battler, skill, skill.message1)
    @message_window.add_instant_text(@active_battler.name + line)
    return if skill.message2.empty?
    wait(10)
    @message_window.add_instant_text(skill.message2)
  end

  def execute_action_skill
    skill = @active_battler.action.skill
    alternate_display_use_item(skill)
    targets = @active_battler.action.make_targets
    display_animation(targets, skill.animation_id)
    @active_battler.mp -= @active_battler.calc_mp_cost(skill)
    $game_temp.common_event_id = skill.common_event_id
    for target in targets
      target.skill_effect(@active_battler, skill)
      display_action_effects(target, skill)
    end
  end
end

VX ACE Script

Code:
# * KSkillMsg ACE * #
#  Scripter : Kyonides Arkanthes
#  2023-09-19

# * How to Use * #
# Option 1: Place 1 or more notetags in a given Skill's Note Box.
# Option 2: Set a custom "string" to the ESCAPE_START Constant below.

# - Example of a Note Tag for Actors - Skill can be cast individually - #
#<message: actor 1 leaves at once.>

# - Example of a Note Tag for Enemies - #
#<message: enemy 1 chickens out.>

# - ESCAPE_START Constant's Default Value - #
# Below you will find the expression %s included in the string.
# It is used as a placeholder for the party's name.
# ESCAPE_START = "%s runs away from danger."

module KSkillMsg
  ESCAPE_START = "%s runs away from danger."
  REGEX_ACTOR = /<message: (actor) (\d+) ([^>]+)>/i
  REGEX_ENEMY = /<message: (enemy) (\d+) ([^>]+)>/i
  def self.process_msg(subject, item, default_line)
    regex = subject.is_a?(Game_Enemy)? REGEX_ENEMY : REGEX_ACTOR
    item.note[regex]
    ($1.nil? or subject.id != $2.to_i)? default_line : " " + $3
  end
end

module BattleManager
  def self.process_escape
    text = rand(100) < 50 ? Vocab::EscapeStart : KSkillMsg::ESCAPE_START
    text = sprintf(text, $game_party.name)
    $game_message.add(text)
    success = @preemptive ? true : (rand < @escape_ratio)
    Sound.play_escape
    if success
      process_abort
    else
      @escape_ratio += 0.1
      $game_message.add('\.' + Vocab::EscapeFailure)
      $game_party.clear_actions
    end
    wait_for_message
    return success
  end
end

class Game_Enemy
  def id
    @enemy_id
  end
end

class Window_BattleLog
  alias :kyon_escape_msg_win_btl_log_disp_use_itm :display_use_item
  def display_use_item(subject, item)
    return alternate_display_use_item(subject, item) if item.is_a?(RPG::Skill)
    kyon_escape_msg_win_btl_log_disp_use_itm(subject, item)
  end

  def alternate_display_use_item(subject, item)
    line = KSkillMsg.process_msg(subject, item, item.message1)
    add_text(subject.name + line)
    return if item.message2.empty?
    wait
    add_text(item.message2)
  end
end


Terms & Conditions

Free for use in ANY game. Gamer
Due credit is mandatory. Serious
The script is distributed AS IS. Happy with a sweat
That's it! Tongue sticking out


RE: KSkillMsg - kyonides - 09-20-2023

A Not Really Unexpected Update But Definitely an Useful One!

From now on, RMVX has been become the second port of this family of scripts! Grinning

Both versions allow you to change ANY SKILL's first message based on a very special note tag you can type right into your note box. Winking

For Actors:

Code:
<message: actor 1 leaves at once.>

For Enemies:

Code:
<message: enemy 1 chickens out.>

Have a Nice String Replacement Day! Laughing