Save-Point
KDualWield & Accessory Skills - 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)
+--- Thread: KDualWield & Accessory Skills (/thread-8676.html)



KDualWield & Accessory Skills - kyonides - 02-09-2023

KDualWield & Accessory Skills

XP + VX + ACE

by Kyonides


Introduction

Do you want to force your heroes to equip two weapons and probably even an accessory before they can use that super cool skill you have come up with? Thinking 
Now you can do it! Grinning

The XP port works in a totall different way so I am skipping publishing the code here for your minds' sake. Winking

You will need to use 1 out of 2 Note Tags on those Skill Note boxes to make it happen! Winking

VX Script

Code:
# * KDualWield & Accessory Skills VX * #
#  Scripter : Kyonides Arkanthes
#  2023-02-09

# * Free as in beer * #

# Force your heroes to equip specific weapons or even an accessory as well
# in order to be enabled to cast a specific skill.
# NOTE: The Weapons Order does NOT matter here!

# * Note Tags * #
# - For Dual Weapons:        _dual 1 2_
# - For Weapons & Accesory:  _dual 1 2 acc 1_

module KDualWield
  REGEX_WEAPONS = /_dual (\d+) (\d+)_/i
  REGEX_WEAPONS_ACCESSORY = /_dual (\d+) (\d+) acc (\d+)_/i
end

class Game_Battler
  alias :kyon_dual_wpn_skill_can_use? :skill_can_use?
  def skill_can_use?(skill)
    result = kyon_dual_wpn_skill_can_use?(skill)
    return result if self.class == Game_Enemy or !two_swords_style
    if skill.note[KDualWield::REGEX_WEAPONS]
      return both_weapons?($1.to_i, $2.to_i)
    elsif skill.note[KDualWield::REGEX_WEAPONS_ACCESSORY]
      return weapons_acessory?($1.to_i, $2.to_i, $3.to_i)
    end
    result
  end
end

class Game_Actor
  def weapon_ids
    [@weapon_id, @armor1_id]
  end

  def both_weapons?(w1, w2)
    weapon_ids.sort == [w1, w2].sort
  end

  def weapons_acessory?(w1, w2, a1)
    both_weapons?(w1, w2) and @armor4_id == a1
  end
end


VX Ace Script

Code:
# * KDualWield & Accessory Skills ACE * #
#   Scripter : Kyonides Arkanthes
#   2023-02-08

# * Free as in beer * #

# Force your heroes to equip specific weapons or even an accessory as well
# in order to be enabled to cast a specific skill.
# NOTE: The Weapons Order does NOT matter here!

# * Note Tags * #
# - For Dual Weapons:        _dual 1 2_
# - For Weapons & Accesory:  _dual 1 2 acc 1_

module KDualWield
  REGEX_WEAPONS = /_dual (\d+) (\d+)_/i
  REGEX_WEAPONS_ACCESSORY = /_dual (\d+) (\d+) acc (\d+)_/i
end

class Game_Battler
  alias :kyon_dual_wpn_skill_cond_met? :skill_conditions_met?
  def skill_conditions_met?(skill)
    result = kyon_dual_wpn_skill_cond_met?(skill)
    return result if self.class == Game_Enemy or !dual_wield?
    if skill.note[KDualWield::REGEX_WEAPONS]
      return both_weapons?($1.to_i, $2.to_i)
    elsif skill.note[KDualWield::REGEX_WEAPONS_ACCESSORY]
      return weapons_acessory?($1.to_i, $2.to_i, $3.to_i)
    end
    result
  end
end

class Game_Actor
  def equip_weapons
    @equips[0..1].map{|w| w.object ? w.object.id : -1 }
  end

  def both_weapons?(w1, w2)
    equip_weapons.sort == [w1, w2].sort
  end

  def weapons_acessory?(w1, w2, w3)
    both_weapons?(w1, w2) and @equips[4].object.id == w3
  end
end


Terms & Conditions

Free as in Beer beer.
Include me in your game credits!
Do not repost it anywhere!


RE: KDualWield & Accessory Skills - kyonides - 02-10-2023

XP Has Not Been Neglected!

Just as you have read it above, XP has got its own port of KDualWield! Grinning
Happy with a sweat Yet, I have to admit that I have not included any custom equip scene there. I simply added the new methods dual_wield and dual_wield = true or false and that is pretty much all you should care about. Tongue sticking out

Indifferent Of course, you will need to setup a couple of Constants, but that is nothing you have not done before if you have become sort of an expert in using Editor XP Scripts. Laughing