Added scripts
This commit is contained in:
parent
d40ae86ba4
commit
5118df09f4
106 changed files with 15680 additions and 0 deletions
205
scripts/Scene_Item.rb
Normal file
205
scripts/Scene_Item.rb
Normal file
|
@ -0,0 +1,205 @@
|
|||
#==============================================================================
|
||||
# ** Scene_Item
|
||||
#------------------------------------------------------------------------------
|
||||
# This class performs item screen processing.
|
||||
#==============================================================================
|
||||
|
||||
class Scene_Item
|
||||
#--------------------------------------------------------------------------
|
||||
# * Main Processing
|
||||
#--------------------------------------------------------------------------
|
||||
def main
|
||||
# Make help window, item window
|
||||
@help_window = Window_Help.new
|
||||
@item_window = Window_Item.new
|
||||
# Associate help window
|
||||
@item_window.help_window = @help_window
|
||||
# Make target window (set to invisible / inactive)
|
||||
@target_window = Window_Target.new
|
||||
@target_window.visible = false
|
||||
@target_window.active = false
|
||||
# Execute transition
|
||||
Graphics.transition
|
||||
# Main loop
|
||||
loop do
|
||||
# Update game screen
|
||||
Graphics.update
|
||||
# Update input information
|
||||
Input.update
|
||||
# Frame update
|
||||
update
|
||||
# Abort loop if screen is changed
|
||||
if $scene != self
|
||||
break
|
||||
end
|
||||
end
|
||||
# Prepare for transition
|
||||
Graphics.freeze
|
||||
# Dispose of windows
|
||||
@help_window.dispose
|
||||
@item_window.dispose
|
||||
@target_window.dispose
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Frame Update
|
||||
#--------------------------------------------------------------------------
|
||||
def update
|
||||
# Update windows
|
||||
@help_window.update
|
||||
@item_window.update
|
||||
@target_window.update
|
||||
# If item window is active: call update_item
|
||||
if @item_window.active
|
||||
update_item
|
||||
return
|
||||
end
|
||||
# If target window is active: call update_target
|
||||
if @target_window.active
|
||||
update_target
|
||||
return
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Frame Update (when item window is active)
|
||||
#--------------------------------------------------------------------------
|
||||
def update_item
|
||||
# If B button was pressed
|
||||
if Input.trigger?(Input::CANCEL)
|
||||
# Play cancel SE
|
||||
$game_system.se_play($data_system.cancel_se)
|
||||
# Switch to menu screen
|
||||
$scene = Scene_Menu.new(0)
|
||||
return
|
||||
end
|
||||
# If C button was pressed
|
||||
if Input.trigger?(Input::ACTION)
|
||||
# Get currently selected data on the item window
|
||||
@item = @item_window.item
|
||||
# If not a use item
|
||||
unless @item.is_a?(RPG::Item)
|
||||
# Play buzzer SE
|
||||
$game_system.se_play($data_system.buzzer_se)
|
||||
return
|
||||
end
|
||||
# If it can't be used
|
||||
unless $game_party.item_can_use?(@item.id)
|
||||
# Play buzzer SE
|
||||
$game_system.se_play($data_system.buzzer_se)
|
||||
return
|
||||
end
|
||||
# Play decision SE
|
||||
$game_system.se_play($data_system.decision_se)
|
||||
# If effect scope is an ally
|
||||
if @item.scope >= 3
|
||||
# Activate target window
|
||||
@item_window.active = false
|
||||
@target_window.x = (@item_window.index + 1) % 2 * 304
|
||||
@target_window.visible = true
|
||||
@target_window.active = true
|
||||
# Set cursor position to effect scope (single / all)
|
||||
if @item.scope == 4 || @item.scope == 6
|
||||
@target_window.index = -1
|
||||
else
|
||||
@target_window.index = 0
|
||||
end
|
||||
# If effect scope is other than an ally
|
||||
else
|
||||
# If command event ID is valid
|
||||
if @item.common_event_id > 0
|
||||
# Command event call reservation
|
||||
$game_temp.common_event_id = @item.common_event_id
|
||||
# Play item use SE
|
||||
$game_system.se_play(@item.menu_se)
|
||||
# If consumable
|
||||
if @item.consumable
|
||||
# Decrease used items by 1
|
||||
$game_party.lose_item(@item.id, 1)
|
||||
# Draw item window item
|
||||
@item_window.draw_item(@item_window.index)
|
||||
end
|
||||
# Switch to map screen
|
||||
$scene = Scene_Map.new
|
||||
return
|
||||
end
|
||||
end
|
||||
return
|
||||
end
|
||||
end
|
||||
#--------------------------------------------------------------------------
|
||||
# * Frame Update (when target window is active)
|
||||
#--------------------------------------------------------------------------
|
||||
def update_target
|
||||
# If B button was pressed
|
||||
if Input.trigger?(Input::CANCEL)
|
||||
# Play cancel SE
|
||||
$game_system.se_play($data_system.cancel_se)
|
||||
# If unable to use because items ran out
|
||||
unless $game_party.item_can_use?(@item.id)
|
||||
# Remake item window contents
|
||||
@item_window.refresh
|
||||
end
|
||||
# Erase target window
|
||||
@item_window.active = true
|
||||
@target_window.visible = false
|
||||
@target_window.active = false
|
||||
return
|
||||
end
|
||||
# If C button was pressed
|
||||
if Input.trigger?(Input::ACTION)
|
||||
# If items are used up
|
||||
if $game_party.item_number(@item.id) == 0
|
||||
# Play buzzer SE
|
||||
$game_system.se_play($data_system.buzzer_se)
|
||||
return
|
||||
end
|
||||
# If target is all
|
||||
if @target_window.index == -1
|
||||
# Apply item effects to entire party
|
||||
used = false
|
||||
for i in $game_party.actors
|
||||
used |= i.item_effect(@item)
|
||||
end
|
||||
end
|
||||
# If single target
|
||||
if @target_window.index >= 0
|
||||
# Apply item use effects to target actor
|
||||
target = $game_party.actors[@target_window.index]
|
||||
used = target.item_effect(@item)
|
||||
end
|
||||
# If an item was used
|
||||
if used
|
||||
# Play item use SE
|
||||
$game_system.se_play(@item.menu_se)
|
||||
# If consumable
|
||||
if @item.consumable
|
||||
# Decrease used items by 1
|
||||
$game_party.lose_item(@item.id, 1)
|
||||
# Redraw item window item
|
||||
@item_window.draw_item(@item_window.index)
|
||||
end
|
||||
# Remake target window contents
|
||||
@target_window.refresh
|
||||
# If all party members are dead
|
||||
if $game_party.all_dead?
|
||||
# Switch to game over screen
|
||||
$scene = Scene_Gameover.new
|
||||
return
|
||||
end
|
||||
# If common event ID is valid
|
||||
if @item.common_event_id > 0
|
||||
# Common event call reservation
|
||||
$game_temp.common_event_id = @item.common_event_id
|
||||
# Switch to map screen
|
||||
$scene = Scene_Map.new
|
||||
return
|
||||
end
|
||||
end
|
||||
# If item wasn't used
|
||||
unless used
|
||||
# Play buzzer SE
|
||||
$game_system.se_play($data_system.buzzer_se)
|
||||
end
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue