位图功能扩展
# @taroxd metadata 1.0
# @display 位图功能扩展
# @id bitmap_ext
# @help 需要将 rgssdll.dll 放入 System 文件夹下。
module Taroxd
  module BitmapExt
    DLL_FILE = 'System/rgssdll'
    XOR = Win32API.new(DLL_FILE, 'bitmap_xor', 'LL', 'L')
    OR  = Win32API.new(DLL_FILE, 'bitmap_or',  'LL', 'L')
    AND = Win32API.new(DLL_FILE, 'bitmap_and', 'LL', 'L')
  end
end

class Bitmap

  include Taroxd::BitmapExt

  # 对位图的每个像素做 xor 运算。
  # color: 0xaarrggbb
  def xor!(color)
    XOR.call(__id__, color)
  end

  # 对位图的每个像素做 or 运算。
  # color: 0xaarrggbb
  def or!(color)
    OR.call(__id__, color)
  end

  # 对位图的每个像素做 and 运算。
  # color: 0xaarrggbb
  def and!(color)
    AND.call(__id__, color)
  end
end
战斗指令优化
# @taroxd metadata 1.0
# @require taroxd_core
# @display 战斗指令优化
# @id battle_command_ext
# @help 
#     攻击指令无需选择目标时,跳过目标选择。
#     防御指令需要选择目标时,添加目标选择。
#     攻击、防御的指令名变为对应的技能名。(“用语”中的设置将会无效)

Taroxd::BattleCommandExt = true

class Scene_Battle < Scene_Base

  # 普通攻击无需选择目标的情况
  def_chain :command_attack do |old|
    skill = $data_skills[BattleManager.actor.attack_skill_id]
    if !skill.need_selection?
      BattleManager.actor.input.set_attack
      next_command
    elsif skill.for_opponent?
      old.call
    else
      BattleManager.actor.input.set_attack
      select_actor_selection
    end
  end

  # 防御需要选择目标的情况
  def_chain :command_guard do |old|
    skill = $data_skills[BattleManager.actor.guard_skill_id]
    if skill.need_selection?
      BattleManager.actor.input.set_guard
      skill.for_opponent? ? select_enemy_selection : select_actor_selection
    else
      old.call
    end
  end
end

class Window_ActorCommand < Window_Command

  # 更改攻击指令名称
  def add_attack_command
    name = $data_skills[@actor.attack_skill_id].name
    add_command(name, :attack, @actor.attack_usable?)
  end

  # 更改防御指令名称
  def add_guard_command
    name = $data_skills[@actor.guard_skill_id].name
    add_command(name, :guard, @actor.guard_usable?)
  end
end
普通攻防技能的扩展
# @taroxd metadata 1.0
# @require taroxd_core
# @display 普通攻防技能的扩展
# @id attack_skill
# @help 
#
#    使用方法:
#      在装备/技能/角色/职业/敌人上备注 <attackskill x> / <guardskill x>
#      建议与“战斗指令优化”配合使用。

Taroxd::AttackSkill = true

class RPG::BaseItem
  note_i :attack_skill, false
  note_i :guard_skill,  false
end

class Game_BattlerBase

  def_chain :attack_skill_id do |old|
    note_objects { |item| return item.attack_skill if item.attack_skill }
    old.call
  end

  def_chain :guard_skill_id do |old|
    note_objects { |item| return item.guard_skill if item.guard_skill }
    old.call
  end
end