设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
Project1 查看内容

战斗特殊效果

2005-10-19 00:00| 发布者: 柳柳| 查看: 13495| 评论: 0|原作者: 桜雅 在土,和希,シムナフ

摘要:    作者 桜雅 在土,和希,シムナフ说明作者:512  版本与更新  2005年7月更新  相关网址    范例工程 不提供 脚本功能 全体化 : 使用这个属性效果范围变成
 

 作者

桜雅 在土,和希,シムナフ
说明作者:512

 版本与更新

 2005年7月更新

 相关网址

 

 范例工程

不提供



脚本功能

全体化 : 使用这个属性效果范围变成敌方全体.

全域化 : 使用这个属性效果范围变成敌方全体+我方全体.

敌方随机 : 使用这个属性效果范围从敌方内随机抽取一位.

我方随机 : 使用这个属性效果范围从我方内随机抽取一位.

对方随机 : 使用这个属性效果范围从敌方+我方内随机抽取一位.

--------------------------------------------------------------------------------

SP损伤 : 给予对方以SP而非HP的伤害.

HP吸收(数字)% : 从攻击的数值里吸收(数字)%的HP给自己.

SP吸收(数字)% : 从攻击的数值里吸收(数字)%的HP给自己.

行动回数(数字) : 攻击敌人的次数.

必杀(数字)% : 给予对方一记重击,若不加(数字)%则必发生必杀

必中 : 使对方的回避无效化,若将技能的命中设于100以外就有可能会失效.

派生(数字) : (数字是技能ID)在武器或者技能上加上该属性,发动后会附带该技能.

--------------------------------------------------------------------------------

HP消耗 : 本来是消耗SP发动的技能现在改为消耗HP发动.

固定HP差分 : 技能的损伤改为(最大HP-现有HP)的固定伤害.

现在HP损伤 : 技能的损伤改为(现在的HP)的固定伤害.

固定现在HP : 技能的损伤改为(对方现在 X 技能分散度% + 技能威力)的固定伤害.

固定最大HP(数字)% : 技能的损伤根据对方的最大HP(数字)%决定.

金钱投掷 : 用金钱攻击敌人,消费金额 = (现金总额 X 技能的分散度 + 技能的威力)作为基础,不够的时候消耗现金全部.

武器投掷 : 把多余的武器丢出去攻击敌人,只有选择了武器投掷和投掷威力(数字)%两个属性的武器才能投掷出去.

聚气 : 使用后累计能量“通常”攻击的攻击力就上升,技能的效果范围选“使用者”.

透视 : 使用后可以看到敌人的资料,包括所有能力值及物品.

变身 : 可以变成敌人的摸样,死亡或者战斗结束后自动结束.

优先度(+或者-数字) : 使用这个属性技能的时候,依照优先度来决定行动顺序.

--------------------------------------------------------------------------------

投掷威力(数字)% : 配合武器投掷使用,只有选择了武器投掷和投掷威力(数字)%两个属性的武器才能投掷出去.

防御能力 : 在职业或者敌人这边使用,属性有效度的等级如下:设定A,防御期间损伤为0.设定B,原先2/1的损伤就变成1/4.设定为CDEF则照原先平时的防御.

援助 : 队友会来援助防御,后面加的数字是援助的回合数.

复活 : 战斗不能的状态下自动复活,HP为1.

断念 : 受到攻击的时候全部回避.

--------------------------------------------------------------------------------

偷窃 : 可以从敌人身上偷窃物品.具体设定方法为:

在敌人的名字后面加上(部别) (种类) (ID) (个数)

部別 : n是一般物品(很容易偷),r是稀有物品(不容易偷).

种类 : i是物品,w是武器,a是防具,d是战利品,g是金钱.

I D : 物品武器防具的ID編號,若偷到的是d或g則不需要填.

个数 : 一次可以偷到的數量,不設定的話則為一個.

 

使用方法

复制全部脚本内容,在Main脚本之前按insert,插入此脚本全部内容。

1.main之前右键插入,全选RGSS代码后,粘贴即可.脚本名可自己取.

2.在属性栏中加入相应的效果名(注意,效果名一定要正确)然后在要在战斗中使用的在相应的效果属性上打勾即可.

脚本冲突可能:其他战斗类的脚本

相关截图

 

  

 


 

 脚本内容

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#============================================================================== 

# ▼▲▼ XRXS19. 特殊効果詰め合わせ:戦闘用 with 29 parts ver..18a ▼▲▼
# by 桜雅 在土, 和希, シムナフ

#==============================================================================
# ■ 以下内容定义各特技的属性名
#==============================================================================
class Game_Battler
  RERAISE_STATE_NAME = /复活/          
  LIBLA_SKILL_ELEMENT_NAME = "透视"    
  POWERSTOCK_SKILL_ELEMENT_NAME = "聚气"
  POWERSTOCK_BASE_RATE = 0.5            #——每回合聚气威力上升倍率
  STEAL_SKILL_ELEMENT_NAME = "偷窃"
  ELEMENT_NAME_SP_DAMAGE = "SP损伤"
  ELEMENT_NAME_HP_DRAIN = "HP吸收"
  ELEMENT_NAME_SP_DRAIN = "SP吸收"
  ELEMENT_NAME_CRITICAL_HIT = "必杀"
  ELEMENT_NAME_CERTAIN_HIT = "必中"
  ELEMENT_NAME_HP_COST = "HP消耗"
end
class Game_BattleAction
  ELEMENT_NAME_SPEED_PRIORITY = "优先度"
end
class Scene_Battle
  ELEMENT_NAME_HP_COST = "HP消耗"
  ELEMENT_NAME_DERIVER = "派生"
  ELEMENT_NAME_MOVE_TIMES = "行动回数"
  ELEMENT_NAME_AREA_ENEMY_ALL = "全体化"
  ELEMENT_NAME_AREA_WHOLE = "全域化"
  ELEMENT_NAME_AREA_ENEMY_RAND = "敌方随机"
  ELEMENT_NAME_AREA_ACTOR_RAND ="我方随机"
  ELEMENT_NAME_AREA_ALL_RANDOM ="对象随机"
  RERAISE_HP = 1
  RERAISE_HP_PERCENT = 0
  RERAISE_ANIMATION_ID = 26
end
module Cover_Module
  ELEMENT_NAME_COVER = "援助"
  STATE_NAME_COVER = "援助"
  COVER_HP_PERCENT = 100
  COVER_EFFECT_PERCENT = 100
  COVER_EFFECT_CHAR = "Covered!"
  COVER_ANIMATION_ID = 64
  COVER_DEFAULT_NUMBER = 2
end
#==============================================================================
$xrxs19_special_effections_set_work = true
#--------------------------------------------------------------------------
# ● 属性修正の計算?改
#--------------------------------------------------------------------------
class Game_Battler
def elements_correct(element_set)
# 無属性の場合 100 を返す
return 100 if element_set == []
# 与えられた属性のレートを全て乗算
result = 100
for i in element_set
result *= self.element_rate(i) / 100.0
end
return result.to_i
end
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 追加公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :reraise_state
attr_accessor :reraised # リレイズしたかどうか
attr_accessor :metamor_target # 変身対象
attr_accessor :battler_name # バトラーグラフィック
attr_reader :battler_name_original # バトラーグラフィック初期値
attr_writer :hp0_ban # HP/SPの 0 化または最大制限の解除
attr_writer :certain_hit # 必中受け(Trueだと攻撃を避けられない)
attr_accessor :covered_friends #庇っている味方の配列
attr_accessor :effect_message #
attr_accessor :current_friend #かばっている味方
attr_accessor :cover_remain #かばう可能な残り回数
#--------------------------------------------------------------------------
# ● 初期化
#--------------------------------------------------------------------------
alias xrxs19_battler_initialize initialize
def initialize
xrxs19_battler_initialize
# 「かばう」用変数初期化
@covered_friends = []
@effect_message = nil
@current_friend = nil
@cover_remain = 0
end
#--------------------------------------------------------------------------
# ● ステートの付加
# state_id : ステート ID
# force : 強制付加フラグ (オートステートの処理で使用)
#--------------------------------------------------------------------------
alias xrxs19_add_state add_state
def add_state(state_id, force = false)
xrxs19_add_state(state_id, force)
# 「かばう」のステート付加の場合
if state_id == get_cover_state_id()
self.cover_remain = COVER_DEFAULT_NUMBER
end
end
#--------------------------------------------------------------------------
# ● HP の変更
#--------------------------------------------------------------------------
def hp=(hp)
if @hp0_ban
@hp = hp
else
@hp = [[hp, maxhp].min, 0].max
# 戦闘不能を付加または解除
for i in 1...$data_states.size
if $data_states[i].zero_hp
if self.dead?
# 追加
for x in 1...$data_states.size
# ステート名は変更可。
if $data_states[x].name[RERAISE_STATE_NAME] != nil
reraise_id = $data_states[x].id
break
end
end
# リレイズ復活
if reraise_id != nil && self.state?(reraise_id)
self.remove_state(reraise_id)
@reraised = true
# 戦闘不能マイナスステートに設定されているものを解除
if $data_states[i].minus_state_set != []
for j in $data_states[i].minus_state_set
remove_state(j)
end
end
elsif
# ここまで
add_state(i)
end
else
remove_state(i)
end
end
end
end
end
#--------------------------------------------------------------------------
# ● SP の変更
#--------------------------------------------------------------------------
def sp=(sp)
if @hp0_ban
@sp = sp
else
@sp = [[sp, maxsp].min, 0].max
end
end
#--------------------------------------------------------------------------
# ● ステート [攻撃を回避できない] 判定
#--------------------------------------------------------------------------
alias xrxs19_cant_evade? cant_evade?
def cant_evade?
return true if @certain_hit
return xrxs19_cant_evade?
end
#--------------------------------------------------------------------------
# ● 通常攻撃の効果適用
#--------------------------------------------------------------------------
alias xrxs19_attack_effect attack_effect# alias したものは effect_it 内で使用
def attack_effect(attacker)
# 通常攻撃の場合、skill = nil で呼ぶ
return effect_it(attacker, nil)
end
#--------------------------------------------------------------------------
# ● スキルの効果適用
#--------------------------------------------------------------------------
alias xrxs19_skill_effect skill_effect # alias したものは effect_it 内で使用
def skill_effect(user, skill)
# スキルの場合は、skill を指定して呼ぶ
return effect_it(user, skill)
end
#--------------------------------------------------------------------------
# ● 効果適用
#--------------------------------------------------------------------------
def effect_it(user, skill = nil)
# 実行前の数値を保持
last_hp = self.hp
last_sp = self.sp
@hp0_ban = true
# 武器IDの取得
weapon_id = user.is_a?(Game_Actor) ? user.weapon_id : 0
# 特殊効果:必中
if skill != nil and skill_element_include?(skill, ELEMENT_NAME_CERTAIN_HIT)
self.certain_hit = true
elsif skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_CERTAIN_HIT)
self.certain_hit = true
end
# 基本実行、skill が nil かどうかで通常攻撃とスキルを分別
if skill == nil
bool = xrxs19_attack_effect(user)
else
bool = xrxs19_skill_effect(user, skill)
end
# ダメージ測定
damage = last_hp - self.hp
# 必中の解除
self.certain_hit = false
# 特殊効果:スティール/アイテム奪取
if skill != nil and skill_element_include?(skill, STEAL_SKILL_ELEMENT_NAME)
self.steal_effect(user, skill) if self.is_a?(Game_Enemy)
elsif skill == nil and equip_weapon_element_include?(user, STEAL_SKILL_ELEMENT_NAME)
self.steal_effect(user, skill) if self.is_a?(Game_Enemy)
end
# 特殊効果:対象に変身
if skill != nil and skill_element_include?(skill, "变身")
if user.metamor_target == nil
if self.metamor_target == nil
# 変身状態で無い場合、変身
user.metamor_target = self
else
# 対象が変身状態の場合、対象の変身対象に変身する。
user.metamor_target = self.metamor_target
end
else
# 変身状態の場合、変身を解除する
user.metamor_target = user
end
# 自分への変身を禁止
user.metamor_target = nil if user.metamor_target == user
# 対象のダメージ表示を消す
self.damage = nil if self.damage == "Miss"
# HP/SP最大値変更への対応
@hp0_ban = false
user.hp = user.hp
user.sp = user.sp
end
# 特殊効果:武器を投げる
if (skill != nil and skill_element_include?(skill, "武器投掷"))
# 投擲武器の取得
throw_weapon = $data_weapons[user.current_action.basic]
# 武器の消費
if $xrxs24_weapon_property_system_work
$game_party.lose_weapon(throw_weapon.id, user.current_action.basic_ex)
else
$game_party.lose_weapon(throw_weapon.id, 1)
end
# ダメージの変更
self.hp += damage if bool
damage = throw_weapon.atk
if weapon_element_include?(throw_weapon.id, "投掷威力")
damage = damage * @one.to_i / 100
end
self.damage = damage
self.hp -= self.damage
bool = true
end
# 特殊効果:消費金額に順ずる固定ダメージ
if skill != nil and skill_element_include?(skill, "金钱投掷")
# ゴールドの消費
last_gold = $game_party.gold
$game_party.gain_gold(-1 * ($game_party.gold * skill.variance / 100 + skill.power))
self.hp += damage if bool
damage = last_gold - $game_party.gold
self.damage = damage
self.hp -= self.damage
bool = true
end
# 基本実行でfalse(Miss等)の場合、ここで終了する
# つまり、この上までにダメージに関係なく実行される特殊効果をいれて
# これより下はダメージに関係する特殊効果を入れる。
# "武器投擲"と"銭投げ"はMissでも金額を消費するため上に。
return false if bool == false
# 特殊効果:防御能力の判定
if damage > 0 and self.guarding?
# 特殊効果:防御能力 2(強防御)
if battler_element_rank?(self, "防御能力") == 2
damage /= 2
self.damage -= damage
self.hp += damage
end
# 特殊効果:防御能力 1(無効防御)
if battler_element_rank?(self, "防御能力") == 1
self.hp += damage
damage = 0
self.damage = damage
end
end
# 特殊効果:必殺確実クリティカル
if (skill != nil and skill_element_include?(skill, ELEMENT_NAME_CRITICAL_HIT)) or
(skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_CRITICAL_HIT)) and damage > 0
if self.critical
self.critical = false
damage /= 2
self.damage -= damage
self.hp += damage
end
if @one == nil or rand(100) < @one.to_i
self.critical = true
self.hp -= damage
damage *= 2
self.damage = damage
end
end
# 特殊効果:使用者の 最大HP - 現在HP 固定ダメージ
if skill != nil and skill_element_include?(skill, "固定HP差分")
self.hp += damage
damage = user.maxhp - user.hp
self.damage = damage
self.hp -= self.damage
self.critical = false # 固定ダメージ故クリティカルを禁止
end
# 特殊効果:使用者の 現在HP 固定ダメージ
if skill != nil and skill_element_include?(skill, "现在HP损伤")
self.hp += damage
damage = user.hp
self.damage = damage
self.hp -= self.damage
self.critical = false # 固定ダメージ故クリティカルを禁止
end
# 特殊効果:現在HPに順ずる固定ダメージ
if skill != nil and skill_element_include?(skill, "固定现在HP")
self.hp += damage
damage = self.hp * skill.variance / 100 + skill.power
damage *= -1 if skill.power < 0
self.damage = damage
self.hp -= self.damage
self.critical = false # 固定ダメージ故クリティカルを禁止
end
# 特殊効果:最大HPに順ずる固定ダメージ
if skill != nil and skill_element_include?(skill, "固定最大HP")
self.hp += damage
damage = self.maxhp * @one.to_i / 100
damage *= -1 if skill.power < 0
self.damage = damage
self.hp -= self.damage
self.critical = false # 固定ダメージ故クリティカルを禁止
end
# 特殊効果:HPではなくSPにダメージを与える
if (skill != nil and skill_element_include?(skill, ELEMENT_NAME_SP_DAMAGE)) or
(skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_SP_DAMAGE))
self.hp += damage
self.sp -= damage
self.damage = "SP " + damage.to_s
# このタイミングで戦闘不能判定
@hp0_ban = false
self.sp = self.sp
real_damage = last_sp - self.sp
else
# このタイミングで戦闘不能判定
@hp0_ban = false
self.hp = self.hp
real_damage = last_hp - self.hp
end
# 使用者のHP/SPもリセット
user.hp = user.hp
user.sp = user.sp
# 特殊効果:与えたダメージを自分のHPとして吸収
if (skill != nil and skill_element_include?(skill, ELEMENT_NAME_HP_DRAIN)) or
(skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_HP_DRAIN))
user.damage = -real_damage * @one.to_i / 100
user.hp -= user.damage
end
# 特殊効果:与えたダメージを自分のSPとして吸収
if (skill != nil and skill_element_include?(skill, ELEMENT_NAME_SP_DRAIN)) or
(skill == nil and equip_weapon_element_include?(user, ELEMENT_NAME_SP_DRAIN))
user.damage = -real_damage * @one.to_i / 100
user.sp -= user.damage
user.damage = "SP " + user.damage.to_s
end
return true
end
#--------------------------------------------------------------------------
# ● バトラーの指定名の属性のランクを判定
#--------------------------------------------------------------------------
def battler_element_rank?(battler, element_name)
for i in 1..$data_system.elements.size
if $data_system.elements[i] == element_name
if self.is_a?(Game_Actor)
return $data_classes[battler.class_id].element_ranks[i]
else
return $data_enemies[battler.id].element_ranks[i]
end
end
end
return 3
end
#--------------------------------------------------------------------------
# ● MaxHP の取得
#--------------------------------------------------------------------------
alias xrxs19_maxhp maxhp
def maxhp
if !@metamor_target.nil?
return @metamor_target.maxhp
end
xrxs19_maxhp
end
#--------------------------------------------------------------------------
# ● MaxSP の取得
#--------------------------------------------------------------------------
alias xrxs19_maxsp maxsp
def maxsp
if !@metamor_target.nil?
return @metamor_target.maxsp
end
xrxs19_maxsp
end
#--------------------------------------------------------------------------
# ● 腕力の取得
#--------------------------------------------------------------------------
alias xrxs19_str str
def str
if !@metamor_target.nil?
return @metamor_target.str
end
xrxs19_str
end
#--------------------------------------------------------------------------
# ● 器用さの取得
#--------------------------------------------------------------------------
alias xrxs19_dex dex
def dex
if !@metamor_target.nil?
return @metamor_target.dex
end
xrxs19_dex
end
#--------------------------------------------------------------------------
# ● 素早さの取得
#--------------------------------------------------------------------------
alias xrxs19_agi agi
def agi
if !@metamor_target.nil?
return @metamor_target.agi
end
xrxs19_agi
end
#--------------------------------------------------------------------------
# ● 魔力の取得
#--------------------------------------------------------------------------
alias xrxs19_int int
def int
if !@metamor_target.nil?
return @metamor_target.int
end
xrxs19_int
end
#--------------------------------------------------------------------------
# ● 攻撃力の取得
#--------------------------------------------------------------------------
alias xrxs19_atk atk
def atk
if !@metamor_target.nil?
return @metamor_target.atk
end
xrxs19_atk
end
#--------------------------------------------------------------------------
# ● 物理防御の取得
#--------------------------------------------------------------------------
alias xrxs19_pdef pdef
def pdef
if !@metamor_target.nil?
return @metamor_target.pdef
end
xrxs19_pdef
end
#--------------------------------------------------------------------------
# ● 魔法防御の取得
#--------------------------------------------------------------------------
alias xrxs19_mdef mdef
def mdef
if !@metamor_target.nil?
return @metamor_target.mdef
end
xrxs19_mdef
end
#--------------------------------------------------------------------------
# ● 回避修正の取得
#--------------------------------------------------------------------------
alias xrxs19_eva eva
def eva
if !@metamor_target.nil?
return @metamor_target.eva
end
xrxs19_eva
end
end

#==============================================================================
# ■ Game_BattleAction
#==============================================================================
class Game_BattleAction
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :speed_priority # スピード優先度
attr_accessor :weapon_id # 武器 ID
attr_accessor :basic_ex # 基本拡張(補助的に数値を保持)
#--------------------------------------------------------------------------
# ● クリア
#--------------------------------------------------------------------------
alias xrxs19_clear clear
def clear
@weapon_id = 0
xrxs19_clear
end
#--------------------------------------------------------------------------
# ● スキルの優先度取得
#--------------------------------------------------------------------------
def speed_priority
if @kind == 0 and @basic == 0
# 通常攻撃の場合
elsif @kind == 1
# スキルの場合
return 0 if $data_skills[@skill_id] == nil
for i in $data_skills[@skill_id].element_set
if $data_system.elements[i] != nil
if $data_system.elements[i] =~ /^#{ELEMENT_NAME_SPEED_PRIORITY}([+-]?[0-9]+)/
return $1.to_i
end
end
end
end
return 0
end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● セットアップ
#--------------------------------------------------------------------------
alias xrxs19_setup setup
def setup(actor_id)
xrxs19_setup(actor_id)
@reraised = false
@reraise_state = 0
@metamor_target = nil
@battler_name_original = @battler_name
end
#--------------------------------------------------------------------------
# ● MaxHP の取得
#--------------------------------------------------------------------------
alias xrxs19_maxhp maxhp
def maxhp
if !@metamor_target.nil?
return @metamor_target.maxhp
end
xrxs19_maxhp
end
#--------------------------------------------------------------------------
# ● スキルの使用可能判定
#--------------------------------------------------------------------------
alias xrxs19_skill_can_use? skill_can_use?
def skill_can_use?(skill_id)
# スキルを取得
@skill = $data_skills[skill_id]
# HP消費スキルの場合
if skill_element_include?(@skill, ELEMENT_NAME_HP_COST) and @actor_id > 0
# HP が足りない場合は使用不可
if $data_skills[skill_id].sp_cost > self.hp
return false
end
# SP消費量を回復させ、SP が足りない場合を回避(最大値を超えて回復)
self.hp0_ban = true
self.sp += @skill.sp_cost
bool = xrxs19_skill_can_use?(skill_id)
# SPを元に戻す
self.sp -= @skill.sp_cost
self.hp0_ban = false
return bool
else
return xrxs19_skill_can_use?(skill_id)
end
end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias xrxs19_initialize initialize
def initialize(troop_id, member_index)
xrxs19_initialize(troop_id, member_index)
@reraised = false
@reraise_state = 0
@metamor_target = nil
@battler_name_original = @battler_name
end
end
#==============================================================================
# ■ Window_Item
#==============================================================================
class Window_Item < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias xrxs19_initialize initialize
def initialize
xrxs19_initialize
refresh
end
#--------------------------------------------------------------------------
# ● 値の受け渡し
#--------------------------------------------------------------------------
def set_itemkind(itemkind)
@itemkind = itemkind
refresh
end
#--------------------------------------------------------------------------
# ● 値の受け渡し
#--------------------------------------------------------------------------
def set_restrict(restrict)
@restrict = restrict
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
alias xrxs19_refresh refresh
def refresh
if @itemkind != 11
xrxs19_refresh
return
end
# 11 = 制限:投擲武器のみ
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
@data_id = []
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0
@data.push($data_weapons[i]) if weapon_element_include?(i, "投掷威力")
end
end
# 項目数が 0 でなければビットマップを作成し、全項目を描画
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# ● 項目の描画
#--------------------------------------------------------------------------
alias xrxs19_draw_item draw_item
def draw_item(index)
if @itemkind != 11
xrxs19_draw_item(index)
return
end
# 11 = 制限:投擲武器のみ
item = @data[index]
number = $game_party.weapon_number(item.id)
self.contents.font.color = normal_color
x = 4 + index % @column_max * (288 + 32)
y = index / @column_max * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
alias xrxs19_main main
def main
@phase4_5_done = false
xrxs19_main
end
#--------------------------------------------------------------------------
# ● フレーム更新 (アクターコマンドフェーズ)
#--------------------------------------------------------------------------
alias xrxs19_update_phase3 update_phase3
def update_phase3
# 武器のみアイテムウィンドウが有効の場合
if @item_window_weapons != nil and @item_window_weapons.visible
update_phase3_item_window_weapons
return
end
# 他
xrxs19_update_phase3
end
#--------------------------------------------------------------------------
# ● フレーム更新 (アクターコマンドフェーズ : スキル選択)
#--------------------------------------------------------------------------
alias xrxs19_update_phase3_skill_select update_phase3_skill_select
def update_phase3_skill_select
# C ボタンが押された場合
if Input.trigger?(Input::C)
# スキルウィンドウで現在選択されているデータを取得
@skill = @skill_window.skill
if skill_element_include?(@skill, "武器投掷")
# 使用できない場合
if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.skill_id = @skill.id
# アイテム選択へ移行する
start_item_select_from_skill(@one.to_i)
return
end
end
xrxs19_update_phase3_skill_select
end
#--------------------------------------------------------------------------
# ● フレーム更新 (アクターコマンドフェーズ : 武器のみアイテム選択)
#--------------------------------------------------------------------------
def update_phase3_item_window_weapons
# 武器アイテムウィンドウを可視状態にする
@item_window_weapons.visible = true
# 武器アイテムウィンドウを更新
@item_window_weapons.update
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# 武器アイテムの選択を終了
end_item_select_from_skill
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アイテムウィンドウで現在選択されているデータを取得
@item = @item_window_weapons.item
# アクションを設定
@active_battler.current_action.basic = @item.id
if $xrxs24_weapon_property_system_work
# アイテムウィンドウで現在選択されているデータを取得
@item_room_no = @item_window_weapons.item_room_no
# アクションを設定
@active_battler.current_action.basic_ex = @item_room_no
end
# 武器のみアイテムウィンドウを不可視化
@item_window_weapons.visible = false
# 効果範囲が敵単体の場合
if @skill.scope == 1
# エネミーの選択を開始
start_enemy_select
# 効果範囲が味方単体の場合
elsif @skill.scope == 3 or @skill.scope == 5
# アクターの選択を開始
start_actor_select
# 効果範囲が単体ではない場合
else
# アイテムの選択を終了
end_item_select_from_skill
# 次のアクターのコマンド入力へ
phase3_next_actor
end
return
end
end
#--------------------------------------------------------------------------
# ● スキルからのアイテム選択開始
#--------------------------------------------------------------------------
def start_item_select_from_skill(restrict = 0)
# 投擲アイテムウィンドウを作成 ( 武器のみ:投擲可能のみ )
@item_window_weapons = Window_Item.new
if restrict == 1
@item_window_weapons.set_itemkind(11)
else
@item_window_weapons.set_itemkind(1)
end
# ヘルプウィンドウを関連付け
@item_window_weapons.help_window = @help_window
# スキルウィンドウを無効化
@skill_window.active = false
@skill_window.visible = false
end
#--------------------------------------------------------------------------
# ● スキルからのアイテム選択終了
#--------------------------------------------------------------------------
def end_item_select_from_skill
# 武器のみアイテムウィンドウを解放
@item_window_weapons.dispose
@item_window_weapons = nil
# ヘルプウィンドウを隠す
@help_window.visible = false
# スキルウィンドウを有効化
@skill_window.active = true
@skill_window.visible = true
end
#--------------------------------------------------------------------------
# ● エネミー選択開始
#--------------------------------------------------------------------------
alias xrxs19_start_enemy_select start_enemy_select
def start_enemy_select
return if start_select_check
xrxs19_start_enemy_select
end
#--------------------------------------------------------------------------
# ● アクター選択開始
#--------------------------------------------------------------------------
alias xrxs19_start_actor_select start_actor_select
def start_actor_select
return if start_select_check
xrxs19_start_actor_select
end
#--------------------------------------------------------------------------
# ● 選択開始時のチェック
#--------------------------------------------------------------------------
def start_select_check
# "全体化"、"全域化"、"対象ランダム"の判定
case @active_battler.current_action.kind
when 0 # 攻撃
# ここで「攻撃」使用者の武器IDを保持しておく
@active_battler.current_action.weapon_id = @active_battler.weapon_id
# チェックに戻る
if equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ENEMY_ALL) or
equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_WHOLE) or
equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ENEMY_RAND) or
equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ACTOR_RAND) or
equip_weapon_element_include?(@active_battler, ELEMENT_NAME_AREA_ALL_RANDOM)
phase3_next_actor
return true
end
when 1 # スキル
if skill_element_include?(@skill, ELEMENT_NAME_AREA_ENEMY_ALL) or
skill_element_include?(@skill, ELEMENT_NAME_AREA_WHOLE) or
skill_element_include?(@skill, ELEMENT_NAME_AREA_ENEMY_RAND) or
skill_element_include?(@skill, ELEMENT_NAME_AREA_ACTOR_RAND) or
skill_element_include?(@skill, ELEMENT_NAME_AREA_ALL_RANDOM)
end_skill_select
phase3_next_actor
return true
end
when 2 # アイテム
if item_element_include?(@item, ELEMENT_NAME_AREA_ENEMY_ALL) or
item_element_include?(@item, ELEMENT_NAME_AREA_WHOLE) or
item_element_include?(@item, ELEMENT_NAME_AREA_ENEMY_RAND) or
item_element_include?(@item, ELEMENT_NAME_AREA_ACTOR_RAND) or
item_element_include?(@item, ELEMENT_NAME_AREA_ALL_RANDOM)
end_item_select
phase3_next_actor
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 1 : アクション準備)
#--------------------


鲜花

刚表态过的朋友 (0 人)

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码