Demo – Version 1.5 >
NOTE: This script requires images from the demo.
While I am including this script here, it’s… well… massive. I’d recommend getting it from the demo instead.
#------------------------------------------------------------------------------# # Galv's Fishing Mini Game #------------------------------------------------------------------------------# # For: RPGMAKER VX ACE # Version 1.5 #------------------------------------------------------------------------------# # NOTICE: This script is NOT free for commercial use. # Contact Galv via PM at one of the following forums: # http://www.rpgmakervxace.net/ # http://forums.rpgmakerweb.com/ #------------------------------------------------------------------------------# #------------------------------------------------------------------------------# # 2015-02-07 - Version 1.5 - rare crash hopefully fixed # 2013-04-22 - Version 1.4 - added fish statistics scene # - added scripts to use in control variables to use # data in eventing. # 2013-04-22 - Version 1.3 - fixed a bug with crashing when equipping rod # 2013-04-22 - Version 1.2 - stopped the fish caught message from ending too # soon. Added controls to HUD image to look nicer. # 2013-04-21 - Version 1.1 - added ability to run common event when fish caught # - fixed a big image disposing bug (oops!) # - upgraded the fish caught message with custom text # options and image. # - added storing fish data and script calls to use it # 2013-04-20 - Version 1.0 - release #------------------------------------------------------------------------------# # This script allows the player to play a fishing mini game. # # HOW TO PLAY # The player needs a rod item and bait items in order to fish. They choose # which rod and bait to equip, each having a different use. Once equipped, the # player casts his line into the water and must try to reel the line in to get # the bait close enough to a fish to take it. The action key or right arrow # will reel the line in. # Once a fish as the bait, the player must reel it in, but be careful to not # reel in while the fish is pulling to the left, else the line strength will # weaken and eventually break. # # RODS # The rod strength of an item detemines how much strain the line can take # before it breaks. Also, the higher the rod strength is above a fish's 'pull' # will increase the speed the fish is reeled in. If a fish has more pull than # a rod's strength, it will break the line much quicker than normal. # # BAIT # Baits have 2 attributes - type and weight. Fish can be set up to only eat # cetain types of bait. Weight determines how fast the bait sinks in the water. # # FISH # Fish can be set up with a bunch of options (see futher down). Note that these # options allow you to create "fish" that aren't fish. For example, you could # make a crab that can only move on the bottom of the water. # # CONTROLS # Press Z at the right time in the power bar to detemine casting distance. # Hold the right arrow to reel in. #------------------------------------------------------------------------------# #------------------------------------------------------------------------------# # SCRIPT CALLS #------------------------------------------------------------------------------# # # fish_back(w,x,y,z) # Change background images used in fishing scene. # # w = over, x = under, y = flow, z = flow opacity # # fish_opt("Music") # Change fishing options # # # # add_fish(x,x,x,x) # Add these fish_id's into the pond. # # rand_fish(x,min,max) # Add a random amount between min and max of fish with # # fish_id x into the pond. Make min a negative number to # # increase the chance the fish will not appear at all. # # fishing # Starts the fishing scene (make sure you add fish using # # any amount of the script calls above before you call # # the fishing scene). # # fishing_stats # Starts the fishing statistics scene. # #------------------------------------------------------------------------------# # EXAMPLE OF USE # fish_back(3,0,2,150) # fishing will use images from /Graphics/GFish/ folder # # over3, under0 and flow2. flow2 will be at 150 opacity # # Default is fish_back(0,0,0,120) # fish_opt("Town1") # Changes music to Town1 # add_fish(1,1,2) # Adds 2 x fish with id1 and 1 x fish with id2 to pond # rand_fish(0,2,10) # Adds 2-10 fish with id0 to pond. # #------------------------------------------------------------------------------# #------------------------------------------------------------------------------# # Notetag for ITEMS #------------------------------------------------------------------------------# # # # Items with this tag can be used as bait. # # type = a number to determine what fish like it # # weight = speed bait sinks in the water (Default 10) # # # The image name of to use a different bait spritesheet # # /Graphics/GFish/ folder. (use same layout as bait.png) # # # Items with this tag can be used as fishing rods. # # x = strength of the rod (Minimum 1). The rod strength # # determines how long it takes for the line to snap and # # also decreases the amount of pull a fish has. # # # The image name of a new rod spritesheet to use from # # /Graphics/GFish/ folder. (use same layout as rod.png) # #------------------------------------------------------------------------------# # EXAMPLES OF USE: # # Fish with bait_type 7 will eat it. 10 weight is default. # # Uses /Graphics/GFish/Bait2.png for the bait image. # # Uses /Graphics/GFish/Bait2.png for the held pole image. # # A rod with strength 1 (weakest) #------------------------------------------------------------------------------# #------------------------------------------------------------------------------# # SCRIPT for CONTROL VARIABLES #------------------------------------------------------------------------------# # $game_system.fish[id].caught # get number of that type of fish caught # $game_system.fish[id].length # get the record length of that fish caught # $game_system.fish[id].width # get the record width of that fish caught # count_all_fish # get the total of all fish caught # record_fish(data,id?) # data can be :weight or :length # # this will return data of your largest fish. # # id? is optional. It will return fish id if true # # if you haven't caught a fish, this will be -1 #------------------------------------------------------------------------------# # EXAMPLE # record_fish(:length,true) # gets the id of your longest fish # record_fish(:length) # gets the length of your longest fish # record_fish(:weight,true) # gets the id of your heaviest fish # record_fish(:weight) # gets the weight of your heaviest fish #------------------------------------------------------------------------------# ($imported ||= {})["Galv_Fishing"] = true module GFISH #------------------------------------------------------------------------------- # # * SETTINGS # #------------------------------------------------------------------------------- # Gameplay FISH_VAR = 1 # The variable used to store the fish_id of the last fish you # have caught. This can be used, for example, in conjunction # with the common event fish setting for conditional branches. # Audio DEFAULT_BGM = "Town1" # Default fishing music DEFAULT_SE = "Up4" # SE that plays when you successfully catch a fish CAST_SE = "Wind4" # SE when casting line SPLASH_SE = "Dive" # SE when bait lands in water BROKE_SE = "Blow5" # SE when line breaks # Vocab POWER = "Power" # Text used for power meter CTEXT_BEFORE = "You caught a " # Text that appears before caught fish item CTEXT_AFTER = "!" # Text that appears after caught fish item CATCH_ITEM_0 = "Catch Results" # Text appears when you catch a fish that has # item 0 in it's setup and no custom text. CONTROLS = "" # Text that appears top right of screen. CONTROL_FONT_SIZE = 20 # I added the controls into the HUD instead of using # this text. STAT_HEADING = "FISH STATS" # Heading of the fish statistics scene TOTAL_FISH = "Total Fish Caught" # Text before the total number of fish caught FISH_TYPES = "Fish Types" # Text displayed before how many type of fish # player has caught. RECORD_FISH = "Record Fish" # Text for biggest length fish player has caught FISH_CAUGHT = "Number Caught" FISH_LENGTH = "Record Length" FISH_WEIGHT = "Record Weight" # Other ROD_X = 0 # Offset the rod's x position ROD_Y = 0 # Offset the rod's y position DECIMALS = true # Use decimal places for weight and height of fish stats. #------------------------------------------------------------------------------- # * FISH SETUP #------------------------------------------------------------------------------- FISH = [] # don't touch #------------------------------------------------------------------------------- # Here is where you set up all the possible fish you can catch and certain # attributes about each fish. The number in each FISH[x] below must be unique. # This is the 'fish_id' used to add fish manually to a pond #------------------------------------------------------------------------------- FISH[0] = [ # Purple Fish "Fish2", # graphic 5, # speed 0, # pull 1, # move type [2,8], # level -1, # x pos 23, # item [1,2,3], # bait type "", # custom se [20,2], # range 0, # common event [150,310], # length [23,52], # weight true, # stats "", # custom txt ] #------------------------------------------------------------------------------- FISH[1] = [ # Green Fish "Fish1", # graphic 8, # speed 0, # pull 1, # move type [1,9], # level -1, # x pos 24, # item [2,4], # bait type "", # custom se [20,2], # range 0, # common event [100,210], # length [20,45], # weight true, # stats "", # custom txt ] #------------------------------------------------------------------------------- FISH[2] = [ # Rock "rock", # graphic 0, # speed 99, # pull -1, # move type [0,0], # level 200, # x pos 0, # item [1,2,3,4], # bait type "", # custom se [20,20], # range 0, # common event [400,400], # length [999,999], # weight false, # stats "", # custom txt ] #------------------------------------------------------------------------------- FISH[3] = [ # A chest! "chest", # graphic 5, # speed 2, # pull 0, # move type [0,0], # level 400, # x pos 26, # item [6], # bait type "Item3", # custom se [20,20], # range 0, # common event [350,350], # length [200,200], # weight false, # stats "", # custom txt ] #------------------------------------------------------------------------------- FISH[4] = [ # A Monster! "jellyfish", # graphic 5, # speed 1, # pull 2, # move type [0,5], # level -1, # x pos 0, # item [1,2,3,4], # bait type "Item3", # custom se [40,3], # range 1, # common event [30,60], # length [200,200], # weight false, # stats "You caught a MONSTER!", # custom txt ] #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # EXPLANATION # graphic = the image used from /Graphics/GFish/ folder. # speed = the swim speed of the fish. 10 is default. # pull = the higher their pull, the more difficult it is to reel in and # quicker the line will break. # move type = the type of movement. # -1 = unmovable - use for things like rocks to snag the line # - will constantly stress the line when reeling in # 0 = inanimate - use for things like chests or quest items # - will constantly stress the line when reeling in # 1 = passive - normal fish movement # - will stress the line only when fish is pulling # 2 = erratic - fish changes direction more often # - will stress the line only when fish is pulling # level = [lowest,highest] fish swims. 0 = ground, 10 = water surface # x pos = the fish will start in this x position. -1 is random. # item = the item that will be gained if fish is caught (item id) # bait type = list of bait types that the fish will eat. # custom se = play a different SE instead of DEFAULT_SE when fish caught # range = [detect,take] distance from bait a fish will detect and take it # default is detect 20, take 2. # common event = When this fish is caught, it will exit and run common event # length = no gameplay effect. For fish stats only. rand between [min,max] # weight = no gameplay effect. For fish stats only. rand between [min,max] # stats = include in the fish-caught stats page? true or false # custom txt = text displayed instead of the item name when catching a fish and # in the fish stat scene. #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # # * END SETTINGS # #------------------------------------------------------------------------------- end #----------------------# #---| GAME_INTERPRETER |---------------------------------------------------- #----------------------# class Game_Interpreter def fishing $game_system.save_bgm command_221 SceneManager.call(Scene_GFish) wait(1) $game_system.fish_list = [] command_222 end def fishing_stats SceneManager.call(Scene_FishStats) end def count_all_fish fish_caught = 0 $game_system.fish.each { |fish| next if !fish.stats fish_caught += fish.caught } return fish_caught end def record_fish(data,get_id = false) check = 0 fish_id = -1 $game_system.fish.each { |fish| next if !fish.stats if data == :length && check < fish.length check = fish.length fish_id = fish.id elsif data == :weight && check < fish.weight check = fish.weight fish_id = fish.id end } if get_id return fish_id else return check end end def calculate_data @fish_caught = 0 length_check = 0 @c = 0 @t = 0 @longest_fish = nil $game_system.fish.each { |fish| next if !fish.stats @fish_caught += fish.caught if length_check < fish.length length_check = fish.length @longest_fish = fish.id end @c += 1 if fish.caught > 0 @t += 1 } end def fish_back(over,under,flow,flowopacity) $game_system.fishb = [over,under,flow,flowopacity] end def fish_opt(music) $game_system.fishs[0] = music end def add_fish(*args) $game_system.fish_list += [*args] end def rand_fish(fish_id,min,max) amount = (rand(min - max) + min).to_i amount.times { |i| $game_system.fish_list << fish_id } if amount > 0 end end #-----------# #---| CACHE |--------------------------------------------------------------- #-----------# module Cache def self.gfish(filename) load_bitmap("Graphics/GFish/", filename) end end # Cache #-----------------# #---| GAME_SYSTEM |--------------------------------------------------------- #-----------------# class Game_System attr_accessor :fish # Data of all fish caught attr_accessor :fishb # Fishing scene background images attr_accessor :fishs # Fishing scene settings attr_accessor :fish_list # List of fish that will appear in next scene alias galv_fish_gs_initialize initialize def initialize @fishb = [0,0,0,120] # over, under, flow, opacity @fishs = Array.new([GFISH::DEFAULT_BGM]) @fish_list = [] @fish = [] GFISH::FISH.each_with_index { |fish,i| if fish.nil? @fish << nil else @fish << Fish_Stats.new(i) end } galv_fish_gs_initialize end end # Game_System #-----------------# #---| GAME_PLAYER |--------------------------------------------------------- #-----------------# class Game_Player < Game_Character attr_accessor :equipped_bait attr_accessor :equipped_rod end # Game_Player < Game_Character #----------------# #---| RPG::ITEMS |---------------------------------------------------------- #----------------# class RPG::Item def bait if @bait.nil? if @note =~ //i @bait = $1.to_s.split(",").map {|i| i.to_i} else @bait = nil end end @bait end def rod if @rod.nil? if @note =~ //i @rod = $1.to_i else @rod = nil end end @rod end def rod_img if @rod_img.nil? if @note =~ //i @rod_img = $1 else @rod_img = "rod" end end @rod_img end def bait_img if @bait_img.nil? if @note =~ //i @bait_img = $1 else @bait_img = "bait" end end @bait_img end end # RPG::Item #------------------# #---| GAME_FISHING |-------------------------------------------------------- #------------------# class Game_Fishing attr_accessor :reeling attr_accessor :fishing_pattern attr_accessor :fish_phase attr_accessor :phase_timer attr_accessor :bait_x attr_accessor :bait_y attr_accessor :fish_hooked attr_reader :surface_y attr_reader :floor_y attr_reader :end_x attr_accessor :fish def initialize @fishing_pattern = 1 @fish_phase = 0 @bait_x = 0 @bait_y = 0 @phase_timer = 0 @end_x = player_x - 25 @surface_y = player_y + 20 @floor_y = Graphics.height - 20 @reelx = 0 @reely = 0 end def refresh_fish @fish = [] $game_system.fish_list.each_with_index { |id,i| next if GFISH::FISH[id].nil? @fish.push(Game_Fish.new(i,id)) } end def player_x Graphics.width - 40 end def player_y 160 end #---| UPDATE STUFF | def update update_phase end def update_phase case @fish_phase when 0 update_phase_0 when 1 update_phase_1 when 2 update_phase_2 when 3 update_phase_3 when 4 update_phase_4 when 5 update_phase_5 end @phase_timer += 1 end def update_phase_0 @fishing_pattern = 1 @bait_y = 0 @bait_x = 0 @fish.each { |fish| fish.update_normal } end def update_phase_1 # Determine cast distance update_cancel_button if Input.trigger?(:C) @phase_timer = 0 @fish_phase = 2 @bait_y = @surface_y @line_strength = 90 + 10 * $game_player.equipped_rod.rod SceneManager.scene.casting_set end @fish.each { |fish| fish.update_normal } end def update_phase_2 # Casting rod animation RPG::SE.new(GFISH::CAST_SE,100,80).play if @phase_timer == 18 if @phase_timer >= 30 RPG::SE.new(GFISH::SPLASH_SE,80,150).play SceneManager.scene.spriteset.splash.reset @fish_phase = 3 SceneManager.scene.spriteset.rod.line_in_water @phase_timer = 0 end @fish.each { |fish| fish.update_normal } end def update_phase_3 # Fishing phase update_cancel_button if Input.press?(:RIGHT) || Input.press?(:C) reeling_in else sinking end @fish.each { |fish| fish.update_action } end def update_phase_4 # Fish is on the line! update_fish_struggle @fish.each { |fish| fish.update_action } end def update_phase_5 # Victory stuff @fish.each { |fish| fish.update_normal } cancel_fishing if Input.trigger?(:C) update_cancel_button end def update_cancel_button cancel_fishing if Input.press?(:B) end #---| FUNCTIONALITY | def sinking if @bait_y < @floor_y @bait_y += $game_player.equipped_bait.bait[1].to_f / 10.to_f end @reeling = false @fishing_pattern = 0 end def reeling_in @reeling = true @fishing_pattern = 2 @bait_x += 1.5 if @bait_x <= @end_x @bait_y -= 1.5 if @bait_y >= @surface_y cancel_fishing if @bait_x >= @end_x && @bait_y <= @surface_y end def cancel_fishing @fish_phase = 0 @fish_hooked = false @phase_timer = 0 @reeling = false SceneManager.scene.cancel_fishing end def casting @phase_timer = 0 @fish_phase = 1 end def update_fish_struggle reeling_in_struggle if @fish_hooked.move_type < 0 fish_x = 0; fish_y = 0 elsif @fish_hooked.move_type == 0 fish_x = 0; fish_y = 0 fish_x = @reelx fish_y = @reely + 1 else fish_x = @reelx.to_f + (@fish_hooked.dir * 2) fish_y = @reely.to_f + (@fish_hooked.vdir * 2) end if fish_x > 0 @bait_x += fish_x if @bait_x < @end_x elsif fish_x < 0 @bait_x += fish_x if @bait_x > @fish_hooked.left end if fish_y > 0 @bait_y += fish_y if @bait_y < @floor_y elsif fish_y < 0 @bait_y += fish_y if @bait_y > @surface_y end test_line lost_fish if Input.trigger?(:B) end def test_line if @reeling && @fish_hooked.dir < 0 || @reeling && @fish_hooked.move_type <= 0 @line_strength -= [@fish_hooked.pull - $game_player.equipped_rod.rod,1].max end lost_fish if @line_strength <= 0 end def lose_bait item = $game_player.equipped_bait $game_party.lose_item(item, 1) SceneManager.scene.refresh_menus if SceneManager.scene_is?(Scene_GFish) end def reeling_in_struggle if Input.press?(:RIGHT) || Input.press?(:C) @reeling = true @fishing_pattern = 2 if @fish_hooked.pull < 0 @reelx = 0 @reely = 0 else @reelx = 1 * [$game_player.equipped_rod.rod - @fish_hooked.pull,1].max @reely = -1 * [$game_player.equipped_rod.rod - @fish_hooked.pull,1].max end caught_fish if @bait_x >= @end_x && @bait_y <= @surface_y && @fish_hooked.move_type >= 0 else @reelx = 0 @reely = 0 @reeling = false @fishing_pattern = 0 end end def lost_fish @fish_hooked.lost @fish_hooked.check_dir RPG::SE.new(GFISH::BROKE_SE,100,100).play cancel_fishing lose_bait end def caught_fish @fish_phase = 5 @fish_hooked.caught add_fish_data if @fish_hooked.se == "" RPG::SE.new(GFISH::DEFAULT_SE,100,100).play else RPG::SE.new(@fish_hooked.se,100,100).play end lose_bait if @fish_hooked.item > 0 item = $data_items[@fish_hooked.item] $game_party.gain_item(item,1) end SceneManager.scene.show_victory end def add_fish_data $game_variables[GFISH::FISH_VAR] = @fish_hooked.fish_id f = $game_system.fish[@fish_hooked.fish_id] f.caught += 1 f.length = @fish_hooked.length if f.length < @fish_hooked.length f.weight = @fish_hooked.weight if f.weight < @fish_hooked.weight $game_temp.reserve_common_event(@fish_hooked.cevent) end end # Game_Fishing #---------------# #---| GAME_FISH |----------------------------------------------------------- #---------------# class Game_Fish attr_accessor :x attr_accessor :y attr_accessor :living attr_accessor :fish_id # the fish id to get fish stats attr_reader :id # the id of the fish in the pond attr_reader :graphic attr_reader :speed attr_reader :move_type attr_reader :item attr_reader :bait_type attr_reader :dir attr_reader :vdir attr_reader :se attr_reader :pull attr_reader :cevent attr_reader :length attr_reader :weight attr_reader :stats attr_reader :ctxt def initialize(id,fish_id) @id = id @fish_id = fish_id initialize_variables end def surface; $game_fishing.surface_y; end def floor; $game_fishing.floor_y; end def left; 10; end def right; $game_fishing.end_x; end def moving?; @movetimer > 0; end def get_fish_minmax if @level[0] <= 0 @fish_floor = floor else @fish_floor = floor - (floor - surface) * (@level[0] * 0.1) end if @level[1] <= 0 @fish_surface = floor else @fish_surface = floor - (floor - surface) * (@level[1] * 0.1) end end def initialize_variables @living = true @movetimer = 0 @graphic,@speed,@pull,@move_type,@level,@x,@item,@bait_type,@se,@range, @cevent,@lengtha,@weighta,@stats,@ctxt = Array.new(GFISH::FISH[@fish_id]) random_stats @speed *= 0.1 get_fish_minmax set_fish_starting end def random_stats rand_ratio = ((rand(100) + 1) * 0.01).round(2) min = @lengtha[0].to_f max = @lengtha[1].to_f @length = ((max - min).to_f * rand_ratio + min.to_f).round(1) @length = @length.to_i if !GFISH::DECIMALS min = @weighta[0].to_f max = @weighta[1].to_f @weight = ((max - min) * rand_ratio + min).round(1) @weight = @weight.to_i if !GFISH::DECIMALS end def set_fish_starting if @move_type > 0 @dir = rand(3) - 1 # -1 = left, 0 = none, 1 = right @vdir = rand(3) - 1 # -1 = up, 0 = none, 1 = down else @dir = 0 @vdir = 0 end @x = (rand(left - right) + left).to_i if @x < 0 level = (rand(@level[0] - @level[1]) + @level[0]).to_i if level == 0 @y = floor else @y = floor - (floor - surface) * (level * 0.1) end end def alive? @living end def near_bait? if @x.between?($game_fishing.bait_x - @range[0],$game_fishing.bait_x + @range[0]) && @y.between?($game_fishing.bait_y - @range[0],$game_fishing.bait_y + @range[0]) && $game_player.equipped_bait && @bait_type.include?($game_player.equipped_bait.bait[0]) return true end return false end def update_action if @hooked update_hooked elsif $game_fishing.fish_phase == 4 update_normal elsif $game_fishing.fish_phase == 3 && near_bait? update_near_bait update_nibble else update_normal end end def update_near_bait return if @move_type < 0 if @x < $game_fishing.bait_x @x += @speed * 1.5 @dir = 1 if @x < $game_fishing.bait_x - 5 elsif @x > $game_fishing.bait_x @x -= @speed * 1.5 @dir = -1 if @x > $game_fishing.bait_x + 5 end if @y < $game_fishing.bait_y @y += @speed * 1.5 if @y < @fish_floor @vdir = 1 elsif @y > $game_fishing.bait_y @y -= @speed * 1.5 if @y > @fish_surface @vdir = -1 end end def update_nibble if @x.between?($game_fishing.bait_x - @range[1],$game_fishing.bait_x + @range[1]) && @y.between?($game_fishing.bait_y - @range[1],$game_fishing.bait_y + @range[1]) @hooked = true $game_fishing.fish_hooked = self RPG::SE.new("Blow5",100,150).play SceneManager.scene.spriteset.fish_sprites[@id].flash(Color.new(255,255,255,180), 6) $game_fishing.fish_phase = 4 @dir = -1 if @move_type > 0 end end def check_dir if @move_type <= 0 @dir = 0 @vdir = 0 end end def update_hooked return if @move_type < 0 @x = $game_fishing.bait_x @y = $game_fishing.bait_y determine_struggle if !moving? @movetimer -= 1 end def determine_struggle if @move_type <= 0 @dir = 0 @vdir = 0 else @dir = (rand(3) - 1).to_f * @speed.to_f @vdir = (rand(3) - 1).to_f * @speed.to_f @movetimer = rand(70) end end def caught @hooked = false @living = false @x = -1000 @y = -1000 end def lost @hooked = false end def update_normal return if !@living if moving? if out_of_position? do_move_to_level else do_move end else determine_action end @movetimer -= 1 end def determine_action case @move_type when 0 # Idle @movetimer = 10 when 1 # Passive @dir = (rand(3) - 1) * @speed @vdir = ((rand(3) - 1).to_f * 0.5) * @speed.to_f @movetimer = 100 + rand(100) when 2 # Erratic @dir = (rand(3) - 1) * @speed @vdir = ((rand(3) - 1).to_f * 0.8) * @speed.to_f @movetimer = rand(100) end end def do_move if @dir > 0 @x += @dir if @x < right elsif @dir < 0 @x += @dir if @x > left end if @vdir > 0 @y += @vdir if @y < @fish_floor elsif @vdir < 0 @y += @vdir if @y > @fish_surface end end def do_move_to_level @dir = 0 @vdir = 0 @y += 1 if @y < @fish_surface @y -= 1 if @y > @fish_floor end def out_of_position? return true if @y < (@fish_surface - 5) return true if @y > (@fish_floor + 5) return false end end # Game_Fish #--------------------# #---| SCENE_GFISHING |------------------------------------------------------ #--------------------# class Scene_GFish < Scene_Base attr_accessor :spriteset def start super $game_fishing = Game_Fishing.new $game_fishing.refresh_fish setup_scene init_variables end def setup_scene create_spriteset create_command_window create_item_window create_hud_window create_cast_window @command_window.refresh RPG::BGM.new($game_system.fishs[0]).play end def init_variables $game_fishing.fish_phase = 0 $game_fishing.reeling = false $game_fishing.phase_timer = 0 # 0 = idle 1 = casting 2 = line in water 3 = fish hooked end #---| CREATE STUFF | def create_spriteset @spriteset = Spriteset_GFishing.new end def create_command_window @command_window = Window_FishCommand.new @command_window.set_handler(:cast, method(:command_cast)) @command_window.set_handler(:equip_bait, method(:command_equipb)) @command_window.set_handler(:equip_rod, method(:command_equipr)) @command_window.set_handler(:exit, method(:return_scene)) end def create_item_window @item_window = Window_FishItems.new @item_window.set_handler(:ok, method(:on_item_ok)) @item_window.set_handler(:cancel, method(:cancel_bait)) @item_window.hide.deactivate end def create_hud_window @hud_window = Window_FishHud.new end def create_cast_window @cast_window = Window_CastWindow.new @cast_window.hide end #---| WINDOW FUNCTIONALITY | def command_cast @command_window.hide.deactivate @cast_window.dispose create_cast_window @cast_window.reset_power @cast_window.show $game_fishing.casting end def command_equipb; command_equip(:bait); end def command_equipr; command_equip(:rod); end def command_equip(category) @item_window.category = category @command_window.hide.deactivate @item_window.show.activate @item_window.select(0) @item_window.refresh end def cancel_command @command_window.hide.deactivate end def return_scene SceneManager.return $game_system.replay_bgm end def on_item_ok Sound.play_equip case @item_window.category when :bait $game_player.equipped_bait = @item_window.item when :rod $game_player.equipped_rod = @item_window.item end @hud_window.refresh @command_window.refresh cancel_bait end def cancel_bait @item_window.hide.deactivate @command_window.show.activate end #---| UPDATE STUFF | def update super @spriteset.update $game_timer.update $game_fishing.update end #---| FUNCTIONALITY | def casting_set @cast_window.set_distance @cast_window.hide @cast_window.dispose_sprite spriteset.rod.cast_line end def cancel_fishing @cast_window.hide @cast_window.dispose_sprite spriteset.rod.idle return return_scene if $game_temp.common_event_id > 0 @command_window.show.activate end def show_victory @cast_window.dispose create_cast_window @cast_window.show end def refresh_menus @hud_window.refresh @command_window.refresh end #---| DISPOSE STUFF | def terminate super dispose_spriteset end def dispose_spriteset @spriteset.dispose end end # Scene_GFish < Scene_Base #------------------------# #---| WINDOW_FISHCOMMAND |-------------------------------------------------- #------------------------# class Window_FishCommand < Window_Command def initialize super(Graphics.width / 2 - window_width / 2, Graphics.height / 2 - line_height * 1.5) end def window_width return 160 end def visible_line_number item_max end def make_command_list add_command("Cast Line", :cast, cast_possible) add_command("Equip Bait", :equip_bait) add_command("Equip Rod", :equip_rod) add_command("Stop Fishing",:exit) end def cast_possible $game_player.equipped_bait && $game_player.equipped_rod end def process_ok @@last_command_symbol = current_symbol super end end # Window_FishCommand < Window_Command #-----------------# #---| WINDOW_BAIT |--------------------------------------------------------- #-----------------# class Window_FishItems < Window_ItemList attr_reader :category def initialize super(Graphics.width / 4, Graphics.height / 4, Graphics.width / 2, Graphics.height / 2) end def col_max return 1 end def include?(item) case @category when :bait return true if item && item.is_a?(RPG::Item) && item.bait when :rod return true if item && item.is_a?(RPG::Item) && item.rod end return false end def enable?(item) return true if item return false end end # Window_FishItems < Window_ItemList #--------------------# #---| WINDOW_FISHHUD |------------------------------------------------------ #--------------------# class Window_FishHud < Window_Base def initialize super(0, 0, Graphics.width, 80) self.opacity = 0 refresh end def standard_padding 0 end def bait $game_player.equipped_bait end def rod $game_player.equipped_rod end def refresh if bait && $game_party.item_number(bait) == 0 $game_player.equipped_bait = nil end if rod && $game_party.item_number(rod) == 0 $game_player.equipped_rod = nil end contents.clear draw_bait draw_rod draw_controls end def draw_controls fsize = contents.font.size contents.font.size = GFISH::CONTROL_FONT_SIZE draw_text(0, 5, contents.width - 7, line_height, GFISH::CONTROLS,2) contents.font.size = fsize end def draw_bait if !bait.nil? draw_icon(bait.icon_index, 33, 5, true) draw_text(26, 28, 40, line_height, $game_party.item_number(bait),1) else draw_text(26, 15, 40, line_height, "Bait",1) end end def draw_rod if !rod.nil? draw_icon(rod.icon_index, 93, 15, true) else draw_text(86, 15, 40, line_height, "Rod",1) end end def open refresh super end end # Window_FishHud < Window_Base #-----------------------# Used for cast bar and caught fish stats. #---| WINDOW_CASTWINDOW |--------------------------------------------------- #-----------------------# class Window_CastWindow < Window_Base def initialize @line_number = $game_fishing.fish_phase <= 1 ? 1 : 5 super(Graphics.width / 4, 80, Graphics.width / 2, window_height) @power = 0.to_f refresh end def open; refresh; super; end def standard_padding; 16; end def window_height; fitting_height(@line_number); end def update; refresh if self.visible; end def fish; $game_fishing.fish_hooked; end def set_distance $game_fishing.bait_x = Graphics.width - 80 - ((Graphics.width - 100) * @power) end def reset_power @power = 0 end def refresh @img.dispose if @img contents.clear if $game_fishing.fish_phase == 1 draw_powbar elsif $game_fishing.fish_phase == 5 draw_fishcaught end end def draw_powbar @power = 0 if @power > 1 @power += 0.02 draw_text(0, 0, 80, line_height, GFISH::POWER,0) draw_gauge(80, -5, 190, @power, hp_gauge_color1, hp_gauge_color2) end def draw_fishcaught if fish.item <= 0 && fish.ctxt == "" draw_generic_text elsif fish.ctxt != "" draw_custom_text else item = $data_items[fish.item] draw_item_name(item) end draw_stats draw_fish end def draw_fish setup_fish @img.x = Graphics.width / 4 + 240 @img.y = 165 end def setup_fish @img = Sprite.new @img.bitmap = Cache.gfish(fish.graphic) @cw = @img.bitmap.width / 4 @ch = @img.bitmap.height @img.src_rect.set(@cw, 0, @cw, @ch) @img.ox = @cw / 2 @img.oy = @ch / 2 @img.z = 999 end def draw_generic_text draw_text(0, 0, contents.width, line_height, GFISH::CATCH_ITEM_0,1) end def draw_custom_text draw_text(0, 0, contents.width, line_height,fish.ctxt,1) end def draw_item_name(item) return unless item draw_icon(item.icon_index, 0, 0, true) draw_text(30, 0, contents.width, line_height, GFISH::CTEXT_BEFORE + item.name + GFISH::CTEXT_AFTER ) end def draw_stats change_color(system_color) draw_text(0, line_height * 2, contents.width, line_height, "Length",0) draw_text(0, line_height * 3, contents.width, line_height, "Weight",0) change_color(normal_color) draw_text(80, line_height * 2, 60, line_height, fish.length.to_s,0) draw_text(80, line_height * 3, 60, line_height, fish.weight.to_s,0) end def dispose_sprite @img.dispose if @img end def dispose super end end # Window_CastWindow < Window_Base #------------------------# #---| SPRITESET_GFISHING |-------------------------------------------------- #------------------------# class Spriteset_GFishing attr_accessor :rod attr_accessor :splash attr_accessor :fish_sprites def initialize create_backgrounds create_viewports create_sprites create_weather create_timer update end def create_viewports @viewport1 = Viewport.new @viewport2 = Viewport.new @viewport2.rect = Rect.new(0,0,Graphics.width,@over.bitmap.height - 20) @viewport3 = Viewport.new @brightness = 255 @viewport1.z = 0 @viewport2.z = 100 @viewport3.z = 250 end #---| CREATE GRAPHICS | def create_backgrounds create_over create_hud_bg create_under create_flow end def create_hud_bg @hud = Sprite.new(@viewport1) @hud.bitmap = Cache.gfish("hud_bg") end def create_over @over = Sprite.new(@viewport1) @over.bitmap = Cache.gfish("over" + $game_system.fishb[0].to_s) @over.x = Graphics.width - @over.bitmap.width @over.z = 0 end def create_under @under = Sprite.new(@viewport1) @under.bitmap = Cache.gfish("under" + $game_system.fishb[1].to_s) @under.wave_amp = 2 @under.x = Graphics.width - @under.bitmap.width + 65 @under.y = Graphics.height - @under.bitmap.height @under.z = -4 end def create_flow @flow = Plane.new(@viewport2) @flow.bitmap = Cache.gfish("flow" + $game_system.fishb[2].to_s) @flowx = 0.5 @flow.z = -2 @flow.opacity = $game_system.fishb[3] end def create_weather @weather = Spriteset_FishWeather.new(@viewport2) end def create_timer @timer_sprite = Sprite_Timer.new(@viewport2) end def create_sprites @rod = Sprite_Rod.new(@viewport1) @fisher = Sprite_Fisher.new(@viewport1) @splash = Sprite_Splash.new(@viewport1) @fish_sprites = [] $game_fishing.fish.each do |fish| if fish.alive? @fish_sprites.push(Sprite_Fish.new(@viewport1,fish)) end end @bait = Sprite_Bait.new(@viewport1) end #---| UPDATE STUFF | def update update_flow update_sprites update_weather update_timer update_viewports @brightness -= 15 if @brightness > 0 end def update_flow @flow.ox += @flowx @under.update @flowx >= 1 ? @flowx = 0.5 : @flowx += 0.5 end def update_sprites @fish_sprites.each {|sprite| sprite.update } @fisher.update @rod.update @bait.update @splash.update end def update_weather @weather.type = $game_map.screen.weather_type @weather.power = $game_map.screen.weather_power @weather.ox = $game_map.display_x * 32 @weather.oy = $game_map.display_y * 32 @weather.update end def update_timer @timer_sprite.update end def update_viewports @viewport1.tone.set($game_map.screen.tone) @viewport1.ox = $game_map.screen.shake @viewport2.color.set($game_map.screen.flash_color) @viewport3.color.set(0, 0, 0, @brightness) @viewport1.update @viewport2.update @viewport3.update end #---| DISPOSE GRAPHICS | def dispose dispose_backgrounds dispose_sprites dispose_weather dispose_timer dispose_viewports end def dispose_backgrounds @hud.dispose @over.dispose @under.dispose @flow.dispose end def dispose_sprites @fish_sprites.each {|sprite| sprite.dispose } @fisher.dispose @rod.dispose @bait.dispose @splash.dispose end def dispose_weather @weather.dispose end def dispose_timer @timer_sprite.dispose end def dispose_viewports @viewport1.dispose @viewport2.dispose @viewport3.dispose end def refresh_sprites dispose_sprites create_sprites end end # Spriteset_GFishing #---------------------------# #---| SPRITESET_FISHWEATHER |----------------------------------------------- #---------------------------# class Spriteset_FishWeather < Spriteset_Weather def initialize(viewport = nil) super end def update; super; end def update_screen; end def dispose; super; end end # Spriteset_FishWeather < Spriteset_Weather #-------------------# #---| SPRITE_FISHER |------------------------------------------------------- #-------------------# class Sprite_Fisher < Sprite_Base def initialize(viewport) super(viewport) @character = $game_player setup_character update end def dispose super end def update super update_src_rect end def setup_character self.x = Graphics.width - 40 self.y = 160 @character_name = @character.character_name @character_index = @character.character_index @direction = 4 set_character_bitmap end def set_character_bitmap self.bitmap = Cache.character(@character_name) sign = @character_name[/^[\!\$]./] if sign && sign.include?('$') @cw = bitmap.width / 3 @ch = bitmap.height / 4 else @cw = bitmap.width / 12 @ch = bitmap.height / 8 end self.ox = @cw / 2 self.oy = @ch end def update_src_rect index = @character.character_index pattern = $game_fishing.fishing_pattern sx = (index % 4 * 3 + pattern) * @cw sy = (index / 4 * 4 + (@direction - 2) / 2) * @ch self.src_rect.set(sx, sy, @cw, @ch) end end # Sprite_Fisher < Sprite_Base #----------------# #---| SPRITE_ROD |---------------------------------------------------------- #----------------# class Sprite_Rod < Sprite_Base def initialize(viewport) super @pattern = 0 @speed_timer = 0 @action = 0 setup_rod update end def cast_line @speed_timer = 0 @pattern = 0 @action = 3 end def line_in_water @action = 2 end def idle @action = 0 end def update_action if $game_fishing.reeling @action = 1 elsif $game_fishing.fish_phase == 3 || $game_fishing.fish_phase == 4 @action = 2 end end def dispose super end def update super update_bitmap update_anim update_src_rect update_action end def rod $game_player.equipped_rod end def update_bitmap if graphic_changed? setup_rod end end def graphic_changed? rod && @rod_name != rod.rod_img end def setup_rod self.x = Graphics.width - 48 + GFISH::ROD_X self.y = 195 + GFISH::ROD_Y if rod.nil? self.bitmap = Cache.gfish("") @rod_name = "" else self.bitmap = Cache.gfish(rod.rod_img) @rod_name = rod.rod_img end @cw = bitmap.width / 4 @ch = bitmap.height / 4 self.ox = @cw / 2 self.oy = @ch end def update_anim @speed_timer += 1 if @speed_timer > 8 @pattern += 1 @speed_timer = 0 end end def update_src_rect if @pattern >= 4 @pattern = 0 end sx = @pattern * @cw sy = @action * @ch self.src_rect.set(sx, sy, @cw, @ch) end end # Sprite_Rod < Sprite_Base #-----------------# #---| SPRITE_BAIT |--------------------------------------------------------- #-----------------# class Sprite_Bait < Sprite_Base def initialize(viewport) super @pattern = 0 @speed_timer = 0 self.x = 0 self.y = -100 setup_bait update end def dispose super end def update super update_bitmap update_anim update_src_rect update_movement end def bait $game_player.equipped_bait end def update_bitmap if graphic_changed? setup_bait end end def graphic_changed? bait && @bait_name != bait.bait_img end def setup_bait if bait.nil? self.bitmap = Cache.gfish("") @bait_name = "" else self.bitmap = Cache.gfish(bait.bait_img) @bait_name = bait.bait_img end @cw = bitmap.width / 4 @ch = bitmap.height self.ox = @cw / 2 self.oy = @ch / 2 end def update_anim @speed_timer += 1 if @speed_timer > 8 @pattern += 1 @speed_timer = 0 end end def update_src_rect if @pattern >= 4 @pattern = 0 end sx = @pattern * @cw sy = 0 * @ch self.src_rect.set(sx, sy, @cw, @ch) end def update_movement self.x = $game_fishing.bait_x self.y = $game_fishing.bait_y self.opacity = $game_fishing.fish_phase == 3 ? 255 : 0 end end # Sprite_Bait < Sprite_Base #-------------------# #---| SPRITE_Splash |------------------------------------------------------- #-------------------# class Sprite_Splash < Sprite_Base def initialize(viewport) super @pattern = 0 @speed_timer = 0 @active = false setup_splash update end def reset self.x = $game_fishing.bait_x @pattern = 0 @speed_timer = 0 @active = true end def dispose super end def update super if @active update_anim update_src_rect update_movement else self.opacity = 0 end end def setup_splash self.bitmap = Cache.gfish("splash") @cw = bitmap.width / 4 @ch = bitmap.height self.ox = @cw / 2 self.oy = @ch end def update_anim @speed_timer += 1 if @speed_timer > 8 @pattern += 1 @speed_timer = 0 end end def update_src_rect if @pattern >= 4 @active = false end sx = @pattern * @cw sy = 0 * @ch self.src_rect.set(sx, sy, @cw, @ch) end def update_movement self.y = $game_fishing.surface_y self.opacity = 255 end end # Sprite_Splash < Sprite_Base #-----------------# #---| SPRITE_FISH |--------------------------------------------------------- #-----------------# class Sprite_Fish < Sprite_Base def initialize(viewport,fish) super(viewport) @pattern = 0 @speed_timer = 0 @fish = fish setup_fish update end def dispose super end def update super update_anim update_src_rect update_movement end def setup_fish self.bitmap = Cache.gfish(@fish.graphic) @cw = bitmap.width / 4 @ch = bitmap.height self.ox = @cw / 2 self.oy = @ch / 2 self.z = @fish.id end def update_anim @speed_timer += 1 if @speed_timer > 8 @pattern += 1 @speed_timer = 0 end end def update_src_rect if @pattern >= 4 @pattern = 0 end sx = @pattern * @cw sy = 0 * @ch self.src_rect.set(sx, sy, @cw, @ch) end def update_movement self.x = @fish.x self.y = @fish.y if @fish.dir > 0 self.mirror = true elsif @fish.dir < 0 self.mirror = false end end end # Sprite_Fish < Sprite_Base #----------------# #---| FISH_STATS |---------------------------------------------------------- #----------------# class Fish_Stats attr_accessor :caught # number of fish caught attr_accessor :length # record length caught attr_accessor :weight # record weight caught attr_reader :id attr_reader :graphic attr_reader :speed attr_reader :item attr_reader :stats attr_reader :ctxt def initialize(fish_id) @id = fish_id @caught = 0 @length = 0 @weight = 0 @graphic,@speed,@pull,@move_type,@level,@x,@item,@bait_type,@se,@range, @cevent,@lengtha,@weighta,@stats,@ctxt = Array.new(GFISH::FISH[@id]) end end # Fish_Stats #---------------------# #---| SCENE_FISHSTATS |----------------------------------------------------- #---------------------# class Scene_FishStats < Scene_ItemBase def start super create_heading_window create_type_window create_item_window create_footer_left_window create_footer_right_window create_help_window end def bwidth return 544 end def bheight return 416 end def create_heading_window wx = (Graphics.width - bwidth) / 2 wy = (Graphics.height - bheight) / 2 @header_window = Window_FishInfo.new(wx,wy,bwidth,1,0) end def create_type_window wx = @header_window.x wy = @header_window.y + @header_window.height ww = @header_window.width / 2 @type_window = Window_FishInfo.new(wx,wy,ww,1,2) end def create_item_window wy = @type_window.y + @type_window.height wx = @header_window.x ww = @header_window.width / 2 wh = 296 - @type_window.height @item_window = Window_FishList.new(wx, wy, ww, wh) @item_window.viewport = @viewport @item_window.set_handler(:cancel, method(:return_scene)) @item_window.activate @item_window.select(0) end def create_footer_left_window wx = @header_window.x wy = @item_window.y + @item_window.height ww = bwidth / 2 @footer_left_window = Window_FishInfo.new(wx,wy,ww,2,1) end def create_footer_right_window wx = @footer_left_window.x + @footer_left_window.width wy = @item_window.y + @item_window.height ww = bwidth / 2 @footer_right_window = Window_FishInfo.new(wx,wy,ww,2,3) end def create_help_window wx = @type_window.x + @item_window.width wy = @type_window.y ww = @item_window.width wh = @item_window.height + @type_window.height @help_window = Window_FishHelp.new(wx,wy,ww,wh) @item_window.help_window = @help_window end end #-----------------# #---| WINDOW_INFO |--------------------------------------------------------- #-----------------# class Window_FishInfo < Window_Base def initialize(x,y,width,lines,window) @window = window super(x, y, width, fitting_height(lines)) calculate_data refresh end def refresh contents.clear case @window when 0 # Heading draw_text(0,0,contents.width,line_height, GFISH::STAT_HEADING,1) when 1 # Total fish caught draw_total_caught when 2 # Types of fish draw_types when 3 draw_biggest_fish end end def draw_total_caught change_color(system_color) draw_text(0,0,contents.width,line_height, GFISH::TOTAL_FISH,0) change_color(normal_color) draw_text(0,0,contents.width,line_height,@fish_caught,2) end def draw_types change_color(system_color) draw_text(0,0,contents.width,line_height, GFISH::FISH_TYPES,0) change_color(normal_color) draw_text(0,0,contents.width,line_height,@c.to_s + "/" + @t.to_s ,2) end def draw_biggest_fish change_color(system_color) draw_text(0,0,contents.width,line_height, GFISH::RECORD_FISH,0) change_color(normal_color) draw_fish_name(@longest_fish) end def calculate_data @fish_caught = 0 length_check = 0 @c = 0 @t = 0 @longest_fish = nil $game_system.fish.each { |fish| next if !fish.stats @fish_caught += fish.caught if length_check < fish.length length_check = fish.length @longest_fish = fish.id end @c += 1 if fish.caught > 0 @t += 1 } end def draw_fish_name(id) return if id.nil? fish = $game_system.fish[id] if fish.ctxt == "" item = $data_items[fish.item] draw_item_name(item, 0, line_height, true, contents.width) else draw_ctxt(fish, 0, line_height) end end def draw_ctxt(item, x, y) return unless item change_color(normal_color) draw_text(x, y, contents.width, line_height, item.ctxt) end def open refresh super end end #---------------------# #---| WINDOW_FISHHELP |----------------------------------------------------- #---------------------# class Window_FishHelp < Window_Base def initialize(x,y,width,height) super(x,y,width,height) @pattern = 0 @speed_timer = 0 end def set_item(fish) @fish = fish refresh end def draw_fish_details return if @fish.nil? draw_fish_name draw_fish_stats draw_fish end def draw_fish_name if @fish.ctxt == "" item = $data_items[@fish.item] draw_item_name(item, 0, 0, true, contents.width) else draw_ctxt(@fish, 0, 0) end end def draw_fish_stats change_color(system_color) draw_text(0,line_height * 8,contents.width,line_height,GFISH::FISH_CAUGHT,0) draw_text(0,line_height * 9,contents.width,line_height,GFISH::FISH_LENGTH,0) draw_text(0,line_height * 10,contents.width,line_height,GFISH::FISH_WEIGHT,0) change_color(normal_color) draw_text(0,line_height * 8,contents.width,line_height,@fish.caught,2) draw_text(0,line_height * 9,contents.width,line_height,@fish.length,2) draw_text(0,line_height * 10,contents.width,line_height,@fish.weight,2) end def draw_fish @img.dispose if @img setup_fish @img.x = self.x + self.width / 2 @img.y = self.y + 120 end def setup_fish @img = Sprite.new @img.bitmap = Cache.gfish(@fish.graphic) @cw = @img.bitmap.width / 4 @ch = @img.bitmap.height @img.src_rect.set(@cw, 0, @cw, @ch) @img.ox = @cw / 2 @img.oy = @ch / 2 @img.z = 999 end def draw_ctxt(item, x, y) return unless item change_color(normal_color) draw_text(x, y, contents.width, line_height, item.ctxt) end def refresh contents.clear draw_fish_details end def update_anim @speed_timer += 1 if @speed_timer > 8 @pattern += 1 @speed_timer = 0 end end def update_src_rect if @pattern >= 4 @pattern = 0 end sx = @pattern * @cw sy = 0 * @ch @img.src_rect.set(sx, sy, @cw, @ch) end def update super if @img update_anim update_src_rect end end def dispose super @img.dispose if @img end end #--------------------# #---| WINDOW_FISHLIST |------------------------------------------------------ #--------------------# class Window_FishList < Window_Selectable def initialize(x, y, width, height) super @data = [] refresh end def col_max; return 1; end def item_max; @data ? @data.size : 1; end def item; @data && index >= 0 ? @data[index] : nil; end def current_item_enabled?; false; end def enable?(item); true; end def include?(item) return false if item.nil? return false if item.item == 0 && item.ctxt == "" return false if !item.stats return false if item.caught <= 0 return true end def make_item_list @data = $game_system.fish.select {|item| include?(item) } @data.push(nil) if include?(nil) end def select_last select(@data.index($game_party.last_item.object) || 0) end def draw_item(index) fish = @data[index] rect = item_rect(index) rect.width -= 4 if fish.ctxt == "" item = $data_items[fish.item] draw_item_name(item, rect.x, rect.y, true, contents.width) else draw_ctxt(fish, rect.x, rect.y) end end def draw_ctxt(item, x, y) return unless item change_color(normal_color) draw_text(x, y, contents.width, line_height, item.ctxt) end def update_help @help_window.set_item(item) end def refresh make_item_list create_contents draw_all_items end end
Amazing, you left me speechles, thank you for sharing !
Is there a way to store some part of a fish’s stats in a variable? For example, someone wants proof of you catching a fish over 100 pounds or whatever. Thanks :)
I’m not exactly sure what you are asking – do the script commands I included in the instructions do what you’re after? (The ones under the ‘SCRIPT for CONTROL VARIABLES’ heading)
Can you help me?? Gosh, I feel so stupid, and I’m really sorry but I’m quite new to scripts.
When trying to fish, I got this error
Script ‘Game_Interpreter’ line 141: SyntazError occurred. Unexpected $end, expecting ‘)’
Please help??
Thanks
-Asteria
Ok awks, I managed to fix that but got another error in the process TT_TT
Same line: NoMehtodError occurred
undefined method ‘<<' for nil:NilClass
Make sure to start a new game when testing. Don’t load a previously saved game.
The script should be below Materials and above Main in your script list.
How can we add rods and baits to the player ? I’m afraid to not understand how.
It’s a big script but please read all the script settings. There is a note tag to define items as rods. You can equip them in the fishing scene.
sorry i love what this script is supposed to be but cant seem to figure out how to fish its not in any of the event stuff or anything im very new to scripts so if you could help shed some light on this it would be much appreciated
I have same question with sparkk, and i still dont understand your answer…
please help me…
I’m sorry, I don’t have time to teach you without repeating what I wrote in the script instructions and telling you to download the demo and look for yourself. I spend hours setting up a demo to show you -exactly- how it works.
What do you mean ‘how to fish’?
This isn’t a simple plug and play script, it requires a lot of setting up. Read the script for how it works and instructions, there are lots of them. Download the demo for examples of how to set up events.
the MF link required use to authenticated, any other link ?
No, sorry I only use mediafire. I suspect this has something to do with authentication on your connection as the download works fine from anywhere I try.
I want to thank you very much for making this script, it is simply amaizing and it makes so much fun playing this minigame.
:)
any chance you’ll port this to VX aswell? Unfortunately switching from VX to ACE is no option for me anymore :3
Sorry, I don’t do VX.
You are the man. I used to fish in breath of fire 3 for days. Loving this dude! ALL HAIL GALV
How do I get a rod?
Unfortunately this script is not for beginners. All the information you need is written in script instructions and there’s a demo to download with a full working example.
Hey Galv, I wanted to contact you about using this script, but both forums are giving me trouble. Is there an email I can contact you at?
Thanks :)
Contact me here:
http://www.mvisioning.com/#!contact/cgv7
Galv, I liked your script congratulations!
I’m just not getting how do I change the items as fishing rod and bait to the fish.
Galv, The setting is on the annotation of item understand. Now what are those numbers?
How do I change the gain item? Another question is how can I remove the living water?
This isn’t an easy script to use and unfortunately I don’t have time to teach it, sorry. There’s a demo and instructions, that’s the best I can do.
Galv, you are still working in rpg maker? Or stop?
Still using but working on a project, not working on scripts for this blog
Its there a possibility to find this script for RMXP? I could easly convert it if you do’t mind, for my personal use of course.
I haven’t written it for RMXP, feel free to convert it :)
Galvs, what happened? Your scripts is now only for noncommercial use? .-. ‘Affws
2 of my scripts you need to contact me to use in a commercial game. They’ve always been like that :) The rest are free to use in commercial
Great script. I have one question. I created a 8 frame fish instead of the standard 4 frames. At first it worked great and it ran through all 8 frames, but for some reason it has now split it into 4 frames and shows 2 fish at once. Any idea how this has happened?
Sorry, I didn’t add functionality to change amount of frames in the script settings.
Can it be done easily?
It would be a relatively easy change, yes. I recommend asking in a forum as I am too busy to do requests currently
Thank you.
This is amazing thank you! I have a quick question, how come when I catch a fish, this is just a example, “You got a blue orb!” for some odd reason I can’t get the script to say “You caught a purple fish!”. The script is choosing some of my conditional branches as names? thank you!
Actually I think I figured it out! I changed the item name in my database and that seemed to work. Thank you again for this script!
Yeah in the fish settings you choose an item ID for it to catch.