Auteur: Yukihiro matsumoto
#============================================
# ¡ Scene_Skill
#----------------------------------------------
# @ƒXƒLƒ‹‰æ–ʂ̈—‚ðs‚¤ƒNƒ‰ƒX‚Å‚·B
#============================================
class Scene_Skill
#------------------------------------------
# œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
# actor_index : ƒAƒNƒ^[ƒCƒ“ƒfƒbƒNƒX
#------------------------------------------
def initialize(actor_index = 0, equip_index = 0)
@actor_index = actor_index
end
#------------------------------------------
# œ ƒƒCƒ“ˆ—
#------------------------------------------
def main
# ƒAƒNƒ^[‚ðŽæ“¾
@actor = $game_party.actors[@actor_index]
# ƒwƒ‹ƒvƒEƒBƒ“ƒhƒEAƒXƒe[ƒ^ƒXƒEƒBƒ“ƒhƒEAƒXƒLƒ‹ƒEƒBƒ“ƒhƒE‚ðì¬
@help_window = Window_Help.new
@status_window = Window_SkillStatus.new(@actor)
@skill_window = Window_Skill.new(@actor)
# ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚ðŠÖ˜A•t‚¯
@skill_window.help_window = @help_window
# ƒ^[ƒQƒbƒgƒEƒBƒ“ƒhƒE‚ðì¬ (•s‰ÂŽ‹E”ñƒAƒNƒeƒBƒu‚ÉÝ’è)
@target_window = Window_Target.new
@target_window.visible = false
@target_window.active = false
# ƒgƒ‰ƒ“ƒWƒVƒ‡ƒ“ŽÀs
Graphics.transition
# ƒƒCƒ“ƒ‹[ƒv
loop do
# ƒQ[ƒ€‰æ–Ê‚ðXV
Graphics.update
# “ü—Íî•ñ‚ðXV
Input.update
# ƒtƒŒ[ƒ€XV
update
# ‰æ–Ê‚ªØ‚è‘Ö‚í‚Á‚½‚烋[ƒv‚ð’†’f
if $scene != self
break
end
end
# ƒgƒ‰ƒ“ƒWƒVƒ‡ƒ“€”õ
Graphics.freeze
# ƒEƒBƒ“ƒhƒE‚ð‰ð•ú
@help_window.dispose
@status_window.dispose
@skill_window.dispose
@target_window.dispose
end
#------------------------------------------
# œ ƒtƒŒ[ƒ€XV
#------------------------------------------
def update
# ƒEƒBƒ“ƒhƒE‚ðXV
@help_window.update
@status_window.update
@skill_window.update
@target_window.update
# ƒXƒLƒ‹ƒEƒBƒ“ƒhƒE‚ªƒAƒNƒeƒBƒu‚Ìê‡: update_skill ‚ðŒÄ‚Ô
if @skill_window.active
update_skill
return
end
# ƒ^[ƒQƒbƒgƒEƒBƒ“ƒhƒE‚ªƒAƒNƒeƒBƒu‚Ìê‡: update_target ‚ðŒÄ‚Ô
if @target_window.active
update_target
return
end
end
#------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒXƒLƒ‹ƒEƒBƒ“ƒhƒE‚ªƒAƒNƒeƒBƒu‚Ìê‡)
#------------------------------------------
def update_skill
# B ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽê‡
if Input.trigger?(Input::B)
# ƒLƒƒƒ“ƒZƒ‹ SE ‚ð‰‰‘t
$game_system.se_play($data_system.cancel_se)
# ƒƒjƒ…[‰æ–Ê‚ÉØ‚è‘Ö‚¦
$scene = Scene_Menu.new(1)
return
end
# C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽê‡
if Input.trigger?(Input::C)
# ƒXƒLƒ‹ƒEƒBƒ“ƒhƒE‚ÅŒ»Ý‘I‘ð‚³‚ê‚Ä‚¢‚éƒf[ƒ^‚ðŽæ“¾
@skill = @skill_window.skill
# Žg—p‚Å‚«‚È‚¢ê‡
if @skill == nil or not @actor.skill_can_use?(@skill.id)
# ƒuƒU[ SE ‚ð‰‰‘t
$game_system.se_play($data_system.buzzer_se)
return
end
# Œˆ’è SE ‚ð‰‰‘t
$game_system.se_play($data_system.decision_se)
# Œø‰Ê”͈͂ª–¡•û‚Ìê‡
if @skill.scope >= 3
# ƒ^[ƒQƒbƒgƒEƒBƒ“ƒhƒE‚ðƒAƒNƒeƒBƒu‰»
@skill_window.active = false
@target_window.x = (@skill_window.index + 1) % 2 * 304
@target_window.visible = true
@target_window.active = true
# Œø‰Ê”ÍˆÍ (’P‘Ì/‘S‘Ì) ‚ɉž‚¶‚ăJ[ƒƒ‹ˆÊ’u‚ðÝ’è
if @skill.scope == 4 || @skill.scope == 6
@target_window.index = -1
elsif @skill.scope == 7
@target_window.index = @actor_index - 10
else
@target_window.index = 0
end
# Œø‰Ê”͈͂ª–¡•ûˆÈŠO‚Ìê‡
else
# ƒRƒ‚ƒ“ƒCƒxƒ“ƒg ID ‚ª—LŒø‚Ìê‡
if @skill.common_event_id > 0
# ƒRƒ‚ƒ“ƒCƒxƒ“ƒgŒÄ‚Ño‚µ—–ñ
$game_temp.common_event_id = @skill.common_event_id
# ƒXƒLƒ‹‚ÌŽg—pŽž SE ‚ð‰‰‘t
$game_system.se_play(@skill.menu_se)
# SP Á”ï
@actor.sp -= @skill.sp_cost
# ŠeƒEƒBƒ“ƒhƒE‚Ì“à—e‚ðÄì¬
@status_window.refresh
@skill_window.refresh
@target_window.refresh
# ƒ}ƒbƒv‰æ–Ê‚ÉØ‚è‘Ö‚¦
$scene = Scene_Map.new
return
end
end
return
end
# R ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽê‡
if Input.trigger?(Input::R)
# ƒJ[ƒƒ‹ SE ‚ð‰‰‘t
$game_system.se_play($data_system.cursor_se)
# ŽŸ‚̃AƒNƒ^[‚Ö
@actor_index += 1
@actor_index %= $game_party.actors.size
# •ʂ̃XƒLƒ‹‰æ–Ê‚ÉØ‚è‘Ö‚¦
$scene = Scene_Skill.new(@actor_index)
return
end
# L ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽê‡
if Input.trigger?(Input::L)
# ƒJ[ƒƒ‹ SE ‚ð‰‰‘t
$game_system.se_play($data_system.cursor_se)
# ‘O‚̃AƒNƒ^[‚Ö
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
# •ʂ̃XƒLƒ‹‰æ–Ê‚ÉØ‚è‘Ö‚¦
$scene = Scene_Skill.new(@actor_index)
return
end
end
#------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒ^[ƒQƒbƒgƒEƒBƒ“ƒhƒE‚ªƒAƒNƒeƒBƒu‚Ìê‡)
#------------------------------------------
def update_target
# B ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽê‡
if Input.trigger?(Input::B)
# ƒLƒƒƒ“ƒZƒ‹ SE ‚ð‰‰‘t
$game_system.se_play($data_system.cancel_se)
# ƒ^[ƒQƒbƒgƒEƒBƒ“ƒhƒE‚ðÁ‹Ž
@skill_window.active = true
@target_window.visible = false
@target_window.active = false
return
end
# C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽê‡
if Input.trigger?(Input::C)
# SP Ø‚ê‚ȂǂŎg—p‚Å‚«‚È‚‚È‚Á‚½ê‡
unless @actor.skill_can_use?(@skill.id)
# ƒuƒU[ SE ‚ð‰‰‘t
$game_system.se_play($data_system.buzzer_se)
return
end
# ƒ^[ƒQƒbƒg‚ª‘S‘Ì‚Ìê‡
if @target_window.index == -1
# ƒp[ƒeƒB‘S‘̂ɃXƒLƒ‹‚ÌŽg—pŒø‰Ê‚ð“K—p
used = false
for i in $game_party.actors
used |= i.skill_effect(@actor, @skill)
end
end
# ƒ^[ƒQƒbƒg‚ªŽg—pŽÒ‚Ìê‡
if @target_window.index <= -2
# ƒ^[ƒQƒbƒg‚̃AƒNƒ^[‚ɃXƒLƒ‹‚ÌŽg—pŒø‰Ê‚ð“K—p
target = $game_party.actors[@target_window.index + 10]
used = target.skill_effect(@actor, @skill)
end
# ƒ^[ƒQƒbƒg‚ª’P‘Ì‚Ìê‡
if @target_window.index >= 0
# ƒ^[ƒQƒbƒg‚̃AƒNƒ^[‚ɃXƒLƒ‹‚ÌŽg—pŒø‰Ê‚ð“K—p
target = $game_party.actors[@target_window.index]
used = target.skill_effect(@actor, @skill)
end
# ƒXƒLƒ‹‚ðŽg‚Á‚½ê‡
if used
# ƒXƒLƒ‹‚ÌŽg—pŽž SE ‚ð‰‰‘t
$game_system.se_play(@skill.menu_se)
# SP Á”ï
@actor.sp -= @skill.sp_cost
# ŠeƒEƒBƒ“ƒhƒE‚Ì“à—e‚ðÄì¬
@status_window.refresh
@skill_window.refresh
@target_window.refresh
# ‘S–Å‚Ìê‡
if $game_party.all_dead?
# ƒQ[ƒ€ƒI[ƒo[‰æ–Ê‚ÉØ‚è‘Ö‚¦
$scene = Scene_Gameover.new
return
end
# ƒRƒ‚ƒ“ƒCƒxƒ“ƒg ID ‚ª—LŒø‚Ìê‡
if @skill.common_event_id > 0
# ƒRƒ‚ƒ“ƒCƒxƒ“ƒgŒÄ‚Ño‚µ—–ñ
$game_temp.common_event_id = @skill.common_event_id
# ƒ}ƒbƒv‰æ–Ê‚ÉØ‚è‘Ö‚¦
$scene = Scene_Map.new
return
end
end
# ƒXƒLƒ‹‚ðŽg‚í‚È‚©‚Á‚½ê‡
unless used
# ƒuƒU[ SE ‚ð‰‰‘t
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
end |
|