class RPG::UsableItem < RPG::BaseItem
def side_attack?
if @__side_attack == nil
@__side_attack = false
if /<side_attack(?:,\s*(same)>|>)/i =~ note
@__side_attack = true
@__same_target_ok = true if $1
end
end
return @__side_attack
end
#--------------------------------------------------------------------------
def either_side_attack?
if @__either_side_attack == nil
@__either_side_attack = false
if /<either_side_attack(?:,\s*(same)>|>)/i =~ note
@__either_side_attack = true
@__same_target_ok = true if $1
end
end
return @__either_side_attack
end
#--------------------------------------------------------------------------
def same_target_ok?
if @__same_target_ok == nil
@__same_target_ok = false
return false unless side_attack? or either_side_attack?
end
return @__same_target_ok
end
end
#______________________________________________________________________________
class Game_Action
alias side_attack__targets_for_opponents targets_for_opponents
def targets_for_opponents
if item.for_one? && (item.side_attack? or item.either_side_attack?)
return targets_for_side_attack
end
return side_attack__targets_for_opponents
end
#--------------------------------------------------------------------------
def targets_for_side_attack
targets = side_attack__targets_for_opponents
case index
when 0
targets.push(opps[index2])
targets.push(opps[index1]) if item.either_side_attack?
when opps.size - 1
targets.push(opps[index1])
targets.push(opps[index2]) if item.either_side_attack?
else
candidates = [opps[index1], opps[index2]]
target = (rand(2) == 0) ? candidates.shift : candidates.pop
targets.push(target)
targets.push(candidates[0]) if item.either_side_attack?
end
return item.same_target_ok? ? targets : targets.uniq
end
end[/pre][/fold]
限制条件:装备的武器必须是四类武器之一
魔改Game_Actor的skill_wtype_ok?