Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- include HM_Sys
- class Game_Player
- attr_accessor :tool
- attr_accessor :hold_item
- alias hm_init_p1 initialize
- def initialize(*args)
- hm_init_p1(*args)
- @tool = nil
- @hold_item = nil
- end
- #--------------------------------------------------------------------------
- # * Determine if Passable
- # d : Direction (2,4,6,8)
- #--------------------------------------------------------------------------
- def passable?(x, y, d)
- x2 = $game_map.round_x_with_direction(x, d)
- y2 = $game_map.round_y_with_direction(y, d)
- return false unless $game_map.valid?(x2, y2)
- return true if @through || debug_through?
- return false unless map_passable?(x, y, d)
- return false unless map_passable?(x2, y2, reverse_dir(d))
- return false if collide_with_characters?(x2, y2)
- return false if collide_with_plant?(x2,y2)
- return true
- end
- #--------------------------------------------------------------------------
- # * Detect Collision with Plants
- #--------------------------------------------------------------------------
- def collide_with_plant?(x, y)
- if $gfarm && $game_map.map_id == MAIN_FARM
- return false if $gfarm[[x,y]] && $gfarm[[x,y]].seed_stage
- $gfarm.has_key?([x,y]) && $gfarm[[x,y]] && !$gfarm[[x,y]].soil
- end
- end
- end
- class Spriteset_Map
- alias hm_init_z1 initialize
- alias hm_update_z1 update
- alias hm_dispose_z1 dispose
- attr_accessor :floating_texts
- attr_accessor :fishing_mode
- TOOL_DELAY = 12
- #----------------------------------------------------------------------
- # * Initialize
- #----------------------------------------------------------------------
- def initialize
- $game_player.tool ||= $data_weapons[5]
- @floating_texts = []
- @fl_texts_trash = []
- @fishing_mode = false
- @item_hold = false
- hm_init_z1
- end
- #--------------------------------------------------------------------------
- # * Create Viewport
- #--------------------------------------------------------------------------
- def create_viewports
- @viewport1 = Viewport.new
- @viewport2 = Viewport.new
- @viewport3 = Viewport.new
- @viewport2.z = 50
- @viewport3.z = 100
- if $game_player.hold_item
- item = $game_player.hold_item.item
- end
- refresh_sprites if $game_map.map_id == MAIN_FARM
- #@tool_range = Sprite_ToolSquare.new(@viewport1) if $game_player.tool && !$game_player.tool.seed
- end
- #--------------------------------------------------------------------------
- # * Refresh Plant Sprite
- #--------------------------------------------------------------------------
- def refresh_sprites
- if $gfarm.size > 0
- $gfarm.values.each do |plant|
- if plant
- plant.viewprt = @viewport1
- plant.sprite = Sprite_Plant.new(plant,@viewport1)
- plant.sprite.update_seed
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # * Check for main farm
- #--------------------------------------------------------------------------
- def main_farm?
- $game_map.map_id == MAIN_FARM
- end
- #--------------------------------------------------------------------------
- # * Update
- #--------------------------------------------------------------------------
- def update
- hm_update_z1
- if $ghand
- if !@chick_hold
- @chick_hold = Sprite_ChickHolding.new(@viewport1)
- else
- @chick_hold.update
- end
- else
- if @chick_hold
- if !@chick_hold.disposed?
- @chick_hold.dispose
- @chick_hold = nil
- end
- end
- end
- @tool_range.update if @tool_range && !$game_map.interpreter.running?
- #Harvest Plant Update Input
- if Input.trigger?(:C) && !$game_map.interpreter.running? && !$game_player.moving? && !$game_player.hold_item
- return if $ghand
- return if $game_system.taken_animal
- case $game_player.direction
- when 2
- @target = [$game_player.x,$game_player.y+1]
- when 4
- @target = [$game_player.x-1,$game_player.y]
- when 6
- @target = [$game_player.x+1,$game_player.y]
- when 8
- @target = [$game_player.x,$game_player.y-1]
- end
- #Harvest Plant
- if $gfarm[@target] && $gfarm[@target].can_harvest? && !$game_player.hold_item
- return unless main_farm?
- $gfarm[@target].harvest!
- end
- #Pick object on Farm
- if $gfarm[@target] && $gfarm[@target].type > 0 && !$game_player.hold_item
- return unless main_farm?
- obj = $data_items["20#{$gfarm[@target].type}".to_i]
- $game_player.hold_item = Sprite_ItemHolding.new(obj,@viewport1,obj)
- $gfarm[@target].take
- $gfarm[@target] = nil
- $gfarm.delete(@target)
- end
- end
- #Empty Tool Checking
- if $game_party.has_item?($game_player.tool) == false
- $game_player.tool = nil
- end
- #Floating Text Update
- @floating_texts.each do |text|
- text.update
- if text.opacity == 0
- @fl_texts_trash.push(text)
- end
- end
- @fl_texts_trash.each do |trash|
- trash.dispose if trash && !trash.disposed?
- @floating_texts.delete(trash)
- end
- #Using Tool Update Input
- if Input.trigger?(:L) && $game_player.tool && !$game_map.interpreter.running? && !$game_player.moving? && !$game_player.hold_item
- return if @fishing_mode
- return if $disable_tool
- unless $game_system.cur_stm > 0
- RPG::SE.new("Buzzer1").play
- return
- end
- $fish_direction = $game_player.direction
- if $game_system.taken_animal && $game_player.tool && $game_player.tool.id == 11
- $game_system.taken_animal[0].x = $game_player.followers[0].x
- $game_system.taken_animal[0].y = $game_player.followers[0].y
- $game_system.taken_animal[0].direction = $game_player.followers[0].direction
- $game_system.taken_animal[0].map_id = $game_map.map_id
- $game_system.taken_animal[0].is_taken = false
- $game_party.remove_actor($game_system.taken_animal[1])
- animal = $game_system.taken_animal[0]
- SceneManager.scene.spawn_animal_with_data(animal.x,animal.y,animal)
- $game_system.taken_animal = nil
- $disable_toolopen = false
- return
- end
- return if $ghand
- return if @tool_delay
- case $game_player.direction
- when 2
- @target = [$game_player.x,$game_player.y+1]
- when 4
- @target = [$game_player.x-1,$game_player.y]
- when 6
- @target = [$game_player.x+1,$game_player.y]
- when 8
- @target = [$game_player.x,$game_player.y-1]
- end
- if [3,5].include?($game_player.tool.id)
- @targets_ = HM_Sys.get_targets($game_player.x,$game_player.y,$game_player.direction,4)
- else
- @targets_ = [@target]
- end
- if $game_player.tool && $game_player.tool.id == 12 && $game_map.terrain_tag(@target[0],@target[1]) != 5
- x = $game_player.screen_x
- y = $game_player.screen_y
- HM_Sys.add_float_text(x,y,"Can't fish here!")
- return
- end
- $game_temp.reserve_common_event(ACTION_SPRITE_CMEV)
- @tool_delay = TOOL_DELAY
- $end_action = false
- end #END TOOL
- #Tool using
- if @tool_delay #&& $game_map.map_id == MAIN_FARM
- if $end_action
- @targets_.each do |_target|
- @target = _target
- #Use Hoe
- if !$gfarm.has_key?(@target)
- #On Nothing
- if $game_player.tool && $game_player.tool.id == 5 && $game_player.tool.is_a?(RPG::Weapon) && $game_map.region_id(@target[0],@target[1]) == 16
- if !$gfarm[@target]
- $gfarm[@target] = HM_Plant.new(@target[0],@target[1],$game_map.map_id,@viewport1)
- end
- end
- else
- #One Seeded
- if $game_player.tool && $game_player.tool.id == 5 && $game_player.tool.is_a?(RPG::Weapon) && $game_map.region_id(@target[0],@target[1]) == 16
- if $gfarm[@target]
- $gfarm[@target].hoe!
- end
- end
- end
- #Use Hammer
- if $game_player.tool && $game_player.tool.id == 2 && $game_player.tool.is_a?(RPG::Weapon) && $game_map.region_id(@target[0],@target[1]) == 16
- if $gfarm[@target]
- $gfarm[@target].hammer!
- #dispose_farm_sprites
- #refresh_sprites
- end
- end
- #Use Axe
- if $game_player.tool && $game_player.tool.id == 1 && $game_player.tool.is_a?(RPG::Weapon) && $game_map.region_id(@target[0],@target[1]) == 16
- if $gfarm[@target]
- $gfarm[@target].axe!
- dispose_farm_sprites
- refresh_sprites
- end
- end
- #Use Watering Can
- if $game_player.tool && $game_player.tool.id == 3 && $game_player.tool.is_a?(RPG::Weapon) && $game_map.region_id(@target[0],@target[1]) == 16
- if $gfarm[@target] && $game_system.water_var > 0
- $gfarm[@target].water
- end
- end
- #Use Sickle
- if $game_player.tool && $game_player.tool.id == 4 && $game_player.tool.is_a?(RPG::Weapon) && $game_map.region_id(@target[0],@target[1]) == 16
- if $gfarm[@target]
- $gfarm[@target].destroy!
- dispose_farm_sprites
- refresh_sprites
- end
- end
- #Seeding
- if $game_player.tool && $game_player.tool.seed == true && $game_player.tool.is_a?(RPG::Weapon) && $game_map.region_id($game_player.x,$game_player.y) == 16 && !$game_player.moving?
- @target1 = [$game_player.x,$game_player.y]
- @offset = [[0,0],[-1,0],[-1,-1],[-1,1],[0,1],[0,-1],[1,0],[1,-1],[1,1]]
- @offset.each do |off|
- @targets ||= []
- @targets.push([@target1[0]+off[0],@target1[1]+off[1]])
- end
- @targets.each do |target|
- if $gfarm[target]
- if $gfarm[target].soil == true && !$gfarm[target].id
- $gfarm[target].set_seed = $game_player.tool.seed_id
- end
- end
- end
- $game_party.lose_item($game_player.tool,1)
- end
- if $game_player.tool && $game_player.tool.id == 9 && $game_player.tool.is_a?(RPG::Weapon)
- if $game_map.events_xy(@target[0],@target[1]).size > 0
- if $game_map.events_xy(@target[0],@target[1])[0].animal
- $game_map.events_xy(@target[0],@target[1])[0].get_milk
- end
- end
- end
- if $game_player.tool && $game_player.tool.id == 10 && $game_player.tool.is_a?(RPG::Weapon)
- if $game_map.events_xy(@target[0],@target[1]).size > 0
- if $game_map.events_xy(@target[0],@target[1])[0].animal
- $game_map.events_xy(@target[0],@target[1])[0].get_wool
- $game_map.events_xy(@target[0],@target[1])[0].refresh_animal_wool_image
- end
- end
- end
- if $game_player.tool && $game_player.tool.id == 11 && $game_player.tool.is_a?(RPG::Weapon)
- if $game_map.events_xy(@target[0],@target[1]).size > 0
- if $game_map.events_xy(@target[0],@target[1])[0].animal
- $game_map.events_xy(@target[0],@target[1])[0].animal.is_taken = true
- $game_map.events_xy(@target[0],@target[1])[0].refresh_animal_taken
- $disable_toolopen = true
- end
- end
- end
- if $game_player.tool && $game_player.tool.id == 12 && $game_player.tool.is_a?(RPG::Weapon)
- @fishing_mode = true
- $game_player.disable_move = true
- Input.update
- HM_Sys.spawn_fishing_bait(@target[0],@target[1])
- end
- end
- @tool_delay = nil
- @targets.clear if @targets
- @targets = nil
- @offset = nil
- @target1 = nil
- @target = nil
- end
- end
- #Fishing Mode Update
- if @fishing_mode
- @fishing_wait ||= rand(60*5)+1
- if @fishing_wait
- if @fishing_wait > 0
- @fishing_wait -= 1
- else
- $game_player.balloon_id = 1 if $game_player.balloon_id != 1
- @fish_delay ||= rand(60)
- @fishing_wait = nil
- end
- end
- if @fish_delay
- if @fish_delay > 0
- @fish_delay -= 1
- if Input.trigger?(:C)
- if rand(2) == 1
- $game_player.balloon_id = 0
- x = $game_player.screen_x
- y = $game_player.screen_y
- HM_Sys.add_float_text(x,y,"Wow!")
- fish_type = rand(100) + 1
- case fish_type
- when 1...50
- recive = Fish_Type[0]
- when 50...70
- recive = Fish_Type[1]
- when 70...90
- recive = Fish_Type[2]
- when 90..100
- recive = Fish_Type[3]
- end
- $game_temp.reserve_common_event(7)
- $fishing_name_index = rand(Fish_Name[recive].size)
- $fishing_recive = recive
- @fishing_wait = nil
- @fish_delay = nil
- @fishing_mode = false
- $game_player.disable_move = false
- $fishing_bait.erase
- $fishing_bait = nil
- else
- x = $game_player.screen_x
- y = $game_player.screen_y
- HM_Sys.add_float_text(x,y,"Miss!")
- @fishing_wait = nil
- @fish_delay = nil
- @fishing_mode = false
- $game_temp.reserve_common_event(7)
- $game_player.disable_move = false
- $fishing_bait.erase
- $fishing_bait = nil
- end
- end
- else
- x = $game_player.screen_x
- y = $game_player.screen_y
- HM_Sys.add_float_text(x,y,"Miss!")
- @fishing_wait = nil
- @fish_delay = nil
- @fishing_mode = false
- $game_temp.reserve_common_event(7)
- $game_player.disable_move = false
- $fishing_bait.erase
- $fishing_bait = nil
- end
- end
- end
- #Hold Item Update
- if $game_player.hold_item && !$game_player.hold_item.disposed?
- $game_player.hold_item.viewport ||= @viewport1
- $game_player.hold_item.update
- end
- #Harvest Plant Update Input
- if $gfarm && $game_map.map_id == MAIN_FARM
- #Cheating
- if Input.trigger?(:R)
- p HM_Sys.get_targets($game_player.x,$game_player.y,$game_player.direction,2)
- #$game_player.hold_item = Sprite_ItemHolding.new(202,@viewport1)
- $gfarm.values.each do |plant|
- plant.water if plant
- plant.grow if plant
- end
- end
- #Spawn Rock AND Lumber
- if Input.trigger?(:Z)
- for i in 0...$game_map.width
- for j in 0...$game_map.height
- if $game_map.region_id(i,j) == 16
- if !$gfarm[[i,j]]
- if rand(4) == 1
- $gfarm[[i,j]] = HM_Plant.new(i,j,$game_map.map_id,@viewport1,rand(3)+1)
- end
- end
- end
- end
- end
- end
- #Update All plants each frame.
- $gfarm.values.each do |plant|
- plant.update if plant && SceneManager.scene_is?(Scene_Map)
- plant.water if plant && !plant.watered && ($gweather.today == :rain or $gweather.today == :storm)
- end
- end
- end
- #--------------------------------------------------------------------------
- # * Dispose
- #--------------------------------------------------------------------------
- def dispose
- dispose_farm_sprites
- @tool_range.dispose if @tool_range
- @tool_range = nil
- if @chick_hold
- @chick_hold.bitmap.dispose
- @chick_hold.dispose
- end
- if $game_player.hold_item
- if !$game_player.hold_item.disposed?
- $game_player.hold_item.dispose
- end
- end
- hm_dispose_z1
- end
- #--------------------------------------------------------------------------
- # * Dispose
- #--------------------------------------------------------------------------
- def dispose_farm_sprites
- if $gfarm.size > 0
- $gfarm.values.each do |plant|
- plant.sprite_dispose if plant
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment