#==============================================================================
# 〓 不常用的脚本判断以及操作 〓 芯☆淡茹水
#==============================================================================
#==============================================================================
#■ 脚本判断 ■
#
# 以下直接输入 事件 - 条件分歧 - 脚本
#
# 1,atb_any?(type, model)
# 判断整个队伍里是否有某个角色的某项属性达到规定值。
# type :判断的类型(字符串)。
# model:判断的值(数值)。
#
# 判断类型(type)包括:"level"(等级);"hp"(血量);"sp"(魔法量)
# "maxhp"(最大HP);"maxsp"(最大SP);"atk"(攻击力);
# "def"(防御力);"matk"(魔攻);"mdef"(魔防);
# "str"(力量);"dex"(敏捷);"agi"(速度);"int"(智力)
#
# 例:判断队伍里是否有某个角色的等级达到 20 级?
# 事件 - 条件 - 脚本:atb_any?("level", 20)
#
# 判断队伍里是否有某个角色的攻击力达到 300 ?
# 事件 - 条件 - 脚本:atb_any?("atk", 300)
#
# 2, atb_all?(type, model)
# 判断整个队伍里所有角色的某项属性是否都达到规定值。
# type :判断的类型(字符串)。
# model:判断的值(数值)。
#
# 参数与第 1 条相同,但判断的方式不同。
#
# 例:判断队伍里所有角色的等级是否都达到 45 级?
# 事件 - 条件 - 脚本:atb_all?("level", 45)
#
# 3, equiped_range_weapons?(range)
# 判断队伍里是否有角色装备了 一个范围值 内的武器。
# range:范围值(数组或范围)。
#
# 例:判断队伍里是否有装备 5,10,11,25 号武器的角色?
# 事件 - 条件 - 脚本:equiped_range_weapons?([5,10,11,25])
#
# 判断队伍里是否有装备 20 到 50 号武器的角色?
# 事件 - 条件 - 脚本:equiped_range_weapons?((20..50))
#
# 4,equiped_range_armors?(range)
# 判断队伍里是否有角色装备了 一个范围值 内的防具。
# range:范围值(数组或范围)。
#
# 例:判断队伍里是否有装备 2,5,8 号防具的角色?
# 事件 - 条件 - 脚本:equiped_range_armors?([2,5,8])
#
# 判断队伍里是否有装备 50 到 100 号防具的角色?
# 事件 - 条件 - 脚本:equiped_range_armors?((50..100))
#
# 5,has_range_items?(type, range)
# 判断是否拥有 一个范围值 内的物品。(包含已穿上的装备)
# type :判断的类型(字符串)。
# range:范围值(数组或范围)。
#
# 判断的类型(type)包括:"item"(道具);"weapon"(武器);"armor"(防具)
#
# 例:判断是否拥有 12,13,22,23 号道具?
# 事件 - 条件 - 脚本:has_range_items?("item", [12,13,22,23])
#
# 判断是否拥有 15 到 55 号武器?
# 事件 - 条件 - 脚本:has_range_items?("weapon", (15..55))
#
# ■ 变量代入 ■
#
# 1, give_val_atb(type, val_id)
# 将队伍里所有角色的某项属性总和代入一个变量。
# type :代入的类型(字符串)。
# val_id:欲代入的变量ID。
#
# 参数(type)与 脚本判断 第 1 条的参数(type) 相同。
#
# 例:将队伍里所有角色的 HP 总和代入变量 10 。
# 事件 - 脚本:give_val_atb("hp", 10)
#
# 2,give_val_equips_num(actor_id, val_id)
# 将一个角色的所穿上的装备数量代入一个变量(含武器和防具)。
# actor_id :角色ID。
# val_id :欲代入的变量ID。
#
# 例:将 5 号角色的所穿上的装备数量代入变量 8 。
# 事件 - 脚本:give_val_equips_num(5, 8)
#
#
# 3, give_val_killed(enemy_id, val_id)
# 将当前某个敌人的杀敌数量代入一个变量。
# enemy_id :敌人ID。
# val_id :欲代入的变量ID。
#
# 例:将当前杀死的 12 号敌人数量代入变量 5 。
# 事件 - 脚本:give_val_killed(12, 5)
#
# 4, give_val_all_killed(val_id)
# 将当前总杀敌数量代入一个变量。
# val_id :欲代入的变量ID。
#
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
alias xr_kill_record_initialize initialize
def initialize
xr_kill_record_initialize
@kill_record = {}
end
#--------------------------------------------------------------------------
def killed(enemy_id)
return @kill_record[enemy_id] || 0
end
#--------------------------------------------------------------------------
def all_killed
return @kill_record.empty? ? 0 : eval(@kill_record.values.join("+"))
end
#--------------------------------------------------------------------------
def record_enemy
$game_troop.enemies.each{|e| !!e && !e.hidden && written_records(e.id)}
end
#--------------------------------------------------------------------------
def written_records(enemy_id)
@kill_record[enemy_id] ||= 0
@kill_record[enemy_id] += 1
end
end
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
alias xr_kill_record_start_phase5 start_phase5
def start_phase5
$game_party.record_enemy
xr_kill_record_start_phase5
end
end
#==============================================================================
class Interpreter
#--------------------------------------------------------------------------
def party_actors
return $game_party.actors
end
#--------------------------------------------------------------------------
def get_actor(actor_id)
return $game_actors[actor_id]
end
#--------------------------------------------------------------------------
def actor_equips_array(actor_id)
a = get_actor(actor_id)
return !!a ? [a.weapon_id,a.armor1_id,a.armor2_id,a.armor3_id,a.armor4_id] : []
end
#--------------------------------------------------------------------------
def get_atb(actor, type)
return eval("actor." + type)
end
#--------------------------------------------------------------------------
def actor_equiped_armor?(actor, armor_id)
data = [actor.armor1_id,actor.armor2_id,actor.armor3_id,actor.armor4_id]
return data.include?(armor_id)
end
#--------------------------------------------------------------------------
def item_num(type, id)
return eval("$game_party." + type + "_number(id)")
end
#--------------------------------------------------------------------------
def atb_any?(type, model)
return party_actors.any?{|a| get_atb(a, type) >= model}
end
#--------------------------------------------------------------------------
def atb_all?(type, model)
return party_actors.all?{|a| get_atb(a, type) >= model}
end
#--------------------------------------------------------------------------
def any_has_weapon?
return party_actors.any?{|a| a.weapon_id > 0}
end
#--------------------------------------------------------------------------
def all_has_weapon?
return party_actors.all?{|a| a.weapon_id > 0}
end
#--------------------------------------------------------------------------
def equiped_weapon?(weapon_id)
return party_actors.any?{|a| a.weapon_id == weapon_id}
end
#--------------------------------------------------------------------------
def equiped_range_weapons?(range)
return range.any?{|i| equiped_weapon?(i)}
end
#--------------------------------------------------------------------------
def equiped_armor?(armor_id)
return party_actors.any?{|a| actor_equiped_armor?(a, armor_id)}
end
#--------------------------------------------------------------------------
def equiped_range_armors?(range)
return range.any?{|i| equiped_armor?(i)}
end
#--------------------------------------------------------------------------
def has_range_items?(type, range)
return range.any?{|i| item_num(type, i) > 0} if type == "item"
equiped = type == "weapon" ? equiped_range_weapons?(range) : equiped_range_armors?(range)
return equiped || range.any?{|i| item_num(type, i) > 0}
end
#--------------------------------------------------------------------------
def give_val_atb(type, val_id)
$game_variables[val_id] = eval(party_actors.map{|a| get_atb(a, type)}.join("+"))
end
#--------------------------------------------------------------------------
def give_val_equips_num(actor_id, val_id)
$game_variables[val_id] = actor_equips_array(actor_id).find_all{|id| id > 0}.size
end
#--------------------------------------------------------------------------
def give_val_killed(enemy_id, val_id)
$game_variables[val_id] = $game_party.killed(enemy_id)
end
#--------------------------------------------------------------------------
def give_val_all_killed(val_id)
$game_variables[val_id] = $game_party.all_killed
end
end
#==============================================================================