Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- include HM_Sys
- class Game_Player
- attr_accessor :tool
- attr_accessor :hand
- alias hm_init_p1 initialize
- def initialize(*args)
- hm_init_p1(*args)
- @tool = nil
- @hand = 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 Event
- #--------------------------------------------------------------------------
- def collide_with_plant?(x, y)
- if $game_system.my_farm
- return false if $game_system.my_farm[[x,y]] && $game_system.my_farm[[x,y]].seed_stage
- $game_system.my_farm.has_key?([x,y]) && !$game_system.my_farm[[x,y]].soil
- end
- end
- end
- class Spriteset_Map
- alias hm_init_z1 initialize
- alias hm_update_z1 update
- alias hm_dispose_z1 dispose
- TOOL_DELAY = 20
- #----------------------------------------------------------------------
- # * Initialize
- #----------------------------------------------------------------------
- def initialize
- $game_player.tool ||= $data_weapons[5]
- hm_init_z1
- end
- #--------------------------------------------------------------------------
- # * Create Viewport
- #--------------------------------------------------------------------------
- def create_viewports
- @viewport1 = Viewport.new
- @viewport2 = Viewport.new
- @viewport3 = Viewport.new
- @viewport2.z = 50
- @viewport3.z = 100
- 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 $game_system.my_farm.size > 0
- $game_system.my_farm.values.each do |plant|
- if plant
- plant.sprite = nil
- plant.sprite = Sprite_Plant.new(plant,@viewport1)
- plant.sprite.update_seed
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # * Update
- #--------------------------------------------------------------------------
- def update
- hm_update_z1
- @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?
- 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 $game_system.my_farm[@target] && $game_system.my_farm[@target].can_harvest?
- $game_system.my_farm[@target].harvest!
- end
- end
- #Empty Tool Checking
- if $game_party.has_item?($game_player.tool) == false
- $game_player.tool = nil
- end
- #Using Tool Update Input
- if Input.trigger?(:L) && $game_player.tool && !$game_map.interpreter.running? && !$game_player.moving?
- 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
- $game_temp.reserve_common_event(ACTION_SPRITE_CMEV)
- @tool_delay = TOOL_DELAY
- end #END TOOL
- #Tool using
- if @tool_delay && $game_map.map_id == MAIN_FARM
- if @tool_delay > 0
- @tool_delay -= 1
- else
- #Use Hoe
- if !$game_system.my_farm.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 !$game_system.my_farm[@target]
- $game_system.my_farm[@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 $game_system.my_farm[@target]
- $game_system.my_farm[@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 $game_system.my_farm[@target]
- $game_system.my_farm[@target].hammer!
- 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 $game_system.my_farm[@target]
- $game_system.my_farm[@target].axe!
- 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 $game_system.my_farm[@target] && $game_system.water_var > 0
- $game_system.my_farm[@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 $game_system.my_farm[@target]
- $game_system.my_farm[@target].destroy!
- 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
- p @targets
- @targets.each do |target|
- if $game_system.my_farm[target]
- if $game_system.my_farm[target].soil == true && !$game_system.my_farm[target].id
- $game_system.my_farm[target].set_seed = $game_player.tool.seed_id
- end
- end
- end
- $game_party.lose_item($game_player.tool,1)
- end
- @tool_delay = nil
- @targets.clear if @targets
- @targets = nil
- @offset = nil
- @target1 = nil
- @target = nil
- end
- end
- #Harvest Plant Update Input
- if $game_system.my_farm && $game_map.map_id == MAIN_FARM
- #Cheating
- if Input.trigger?(:R)
- $game_system.my_farm.values.each do |plant|
- plant.grow
- 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 !$game_system.my_farm[[i,j]]
- if rand(4) == 1
- $game_system.my_farm[[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.
- $game_system.my_farm.values.each do |plant|
- plant.update if plant
- end
- end
- end
- #--------------------------------------------------------------------------
- # * Dispose
- #--------------------------------------------------------------------------
- def dispose
- dispose_farm_sprites
- hm_dispose_z1
- end
- #--------------------------------------------------------------------------
- # * Dispose
- #--------------------------------------------------------------------------
- def dispose_farm_sprites
- if $game_system.my_farm.size > 0
- p "Dispose"
- $game_system.my_farm.values.each do |plant|
- p plant
- plant.sprite_dispose if plant
- end
- end
- @tool_range.dispose if @tool_range
- @tool_range = nil
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment