dsiver144

HM_System [July 11]

Jul 11th, 2016
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.35 KB | None | 0 0
  1.  
  2. include HM_Sys
  3. class Game_Player
  4. attr_accessor :tool
  5. attr_accessor :hold_item
  6. alias hm_init_p1 initialize
  7. def initialize(*args)
  8. hm_init_p1(*args)
  9. @tool = nil
  10. @hold_item = nil
  11. end
  12. #--------------------------------------------------------------------------
  13. # * Determine if Passable
  14. # d : Direction (2,4,6,8)
  15. #--------------------------------------------------------------------------
  16. def passable?(x, y, d)
  17. x2 = $game_map.round_x_with_direction(x, d)
  18. y2 = $game_map.round_y_with_direction(y, d)
  19. return false unless $game_map.valid?(x2, y2)
  20. return true if @through || debug_through?
  21. return false unless map_passable?(x, y, d)
  22. return false unless map_passable?(x2, y2, reverse_dir(d))
  23. return false if collide_with_characters?(x2, y2)
  24. return false if collide_with_plant?(x2,y2)
  25. return true
  26. end
  27. #--------------------------------------------------------------------------
  28. # * Detect Collision with Plants
  29. #--------------------------------------------------------------------------
  30. def collide_with_plant?(x, y)
  31. if $gfarm && $game_map.map_id == MAIN_FARM
  32. return false if $gfarm[[x,y]] && $gfarm[[x,y]].seed_stage
  33. $gfarm.has_key?([x,y]) && $gfarm[[x,y]] && !$gfarm[[x,y]].soil
  34. end
  35. end
  36. end
  37.  
  38. class Spriteset_Map
  39. alias hm_init_z1 initialize
  40. alias hm_update_z1 update
  41. alias hm_dispose_z1 dispose
  42. attr_accessor :floating_texts
  43. attr_accessor :fishing_mode
  44. TOOL_DELAY = 12
  45. #----------------------------------------------------------------------
  46. # * Initialize
  47. #----------------------------------------------------------------------
  48. def initialize
  49. $game_player.tool ||= $data_weapons[5]
  50. @floating_texts = []
  51. @fl_texts_trash = []
  52. @fishing_mode = false
  53. @item_hold = false
  54. hm_init_z1
  55. end
  56. #--------------------------------------------------------------------------
  57. # * Create Viewport
  58. #--------------------------------------------------------------------------
  59. def create_viewports
  60. @viewport1 = Viewport.new
  61. @viewport2 = Viewport.new
  62. @viewport3 = Viewport.new
  63. @viewport2.z = 50
  64. @viewport3.z = 100
  65. if $game_player.hold_item
  66. item = $game_player.hold_item.item
  67. end
  68. refresh_sprites if $game_map.map_id == MAIN_FARM
  69. #@tool_range = Sprite_ToolSquare.new(@viewport1) if $game_player.tool && !$game_player.tool.seed
  70. end
  71. #--------------------------------------------------------------------------
  72. # * Refresh Plant Sprite
  73. #--------------------------------------------------------------------------
  74. def refresh_sprites
  75. if $gfarm.size > 0
  76. $gfarm.values.each do |plant|
  77. if plant
  78. plant.viewprt = @viewport1
  79. plant.sprite = Sprite_Plant.new(plant,@viewport1)
  80. plant.sprite.update_seed
  81. end
  82. end
  83. end
  84. end
  85. #--------------------------------------------------------------------------
  86. # * Check for main farm
  87. #--------------------------------------------------------------------------
  88. def main_farm?
  89. $game_map.map_id == MAIN_FARM
  90. end
  91. #--------------------------------------------------------------------------
  92. # * Update
  93. #--------------------------------------------------------------------------
  94. def update
  95. hm_update_z1
  96.  
  97. if $ghand
  98. if !@chick_hold
  99. @chick_hold = Sprite_ChickHolding.new(@viewport1)
  100. else
  101. @chick_hold.update
  102. end
  103. else
  104. if @chick_hold
  105. if !@chick_hold.disposed?
  106. @chick_hold.dispose
  107. @chick_hold = nil
  108. end
  109. end
  110. end
  111.  
  112. @tool_range.update if @tool_range && !$game_map.interpreter.running?
  113. #Harvest Plant Update Input
  114. if Input.trigger?(:C) && !$game_map.interpreter.running? && !$game_player.moving? && !$game_player.hold_item
  115. return if $ghand
  116. return if $game_system.taken_animal
  117. case $game_player.direction
  118. when 2
  119. @target = [$game_player.x,$game_player.y+1]
  120. when 4
  121. @target = [$game_player.x-1,$game_player.y]
  122. when 6
  123. @target = [$game_player.x+1,$game_player.y]
  124. when 8
  125. @target = [$game_player.x,$game_player.y-1]
  126. end
  127. #Harvest Plant
  128. if $gfarm[@target] && $gfarm[@target].can_harvest? && !$game_player.hold_item
  129. return unless main_farm?
  130. $gfarm[@target].harvest!
  131. end
  132. #Pick object on Farm
  133. if $gfarm[@target] && $gfarm[@target].type > 0 && !$game_player.hold_item
  134. return unless main_farm?
  135. obj = $data_items["20#{$gfarm[@target].type}".to_i]
  136. $game_player.hold_item = Sprite_ItemHolding.new(obj,@viewport1,obj)
  137. $gfarm[@target].take
  138. $gfarm[@target] = nil
  139. $gfarm.delete(@target)
  140. end
  141. end
  142.  
  143. #Empty Tool Checking
  144. if $game_party.has_item?($game_player.tool) == false
  145. $game_player.tool = nil
  146. end
  147. #Floating Text Update
  148. @floating_texts.each do |text|
  149. text.update
  150. if text.opacity == 0
  151. @fl_texts_trash.push(text)
  152. end
  153. end
  154. @fl_texts_trash.each do |trash|
  155. trash.dispose if trash && !trash.disposed?
  156. @floating_texts.delete(trash)
  157. end
  158.  
  159. #Using Tool Update Input
  160. if Input.trigger?(:L) && $game_player.tool && !$game_map.interpreter.running? && !$game_player.moving? && !$game_player.hold_item
  161. return if @fishing_mode
  162. return if $disable_tool
  163. unless $game_system.cur_stm > 0
  164. RPG::SE.new("Buzzer1").play
  165. return
  166. end
  167. $fish_direction = $game_player.direction
  168. if $game_system.taken_animal && $game_player.tool && $game_player.tool.id == 11
  169. $game_system.taken_animal[0].x = $game_player.followers[0].x
  170. $game_system.taken_animal[0].y = $game_player.followers[0].y
  171. $game_system.taken_animal[0].direction = $game_player.followers[0].direction
  172. $game_system.taken_animal[0].map_id = $game_map.map_id
  173. $game_system.taken_animal[0].is_taken = false
  174. $game_party.remove_actor($game_system.taken_animal[1])
  175. animal = $game_system.taken_animal[0]
  176. SceneManager.scene.spawn_animal_with_data(animal.x,animal.y,animal)
  177. $game_system.taken_animal = nil
  178. $disable_toolopen = false
  179. return
  180. end
  181. return if $ghand
  182. return if @tool_delay
  183. case $game_player.direction
  184. when 2
  185. @target = [$game_player.x,$game_player.y+1]
  186. when 4
  187. @target = [$game_player.x-1,$game_player.y]
  188. when 6
  189. @target = [$game_player.x+1,$game_player.y]
  190. when 8
  191. @target = [$game_player.x,$game_player.y-1]
  192. end
  193. if [3,5].include?($game_player.tool.id)
  194. @targets_ = HM_Sys.get_targets($game_player.x,$game_player.y,$game_player.direction,4)
  195. else
  196. @targets_ = [@target]
  197. end
  198. if $game_player.tool && $game_player.tool.id == 12 && $game_map.terrain_tag(@target[0],@target[1]) != 5
  199. x = $game_player.screen_x
  200. y = $game_player.screen_y
  201. HM_Sys.add_float_text(x,y,"Can't fish here!")
  202. return
  203. end
  204. $game_temp.reserve_common_event(ACTION_SPRITE_CMEV)
  205. @tool_delay = TOOL_DELAY
  206. $end_action = false
  207. end #END TOOL
  208. #Tool using
  209. if @tool_delay #&& $game_map.map_id == MAIN_FARM
  210. if $end_action
  211. @targets_.each do |_target|
  212. @target = _target
  213. #Use Hoe
  214. if !$gfarm.has_key?(@target)
  215. #On Nothing
  216. 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
  217. if !$gfarm[@target]
  218. $gfarm[@target] = HM_Plant.new(@target[0],@target[1],$game_map.map_id,@viewport1)
  219. end
  220. end
  221. else
  222. #One Seeded
  223. 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
  224. if $gfarm[@target]
  225. $gfarm[@target].hoe!
  226. end
  227. end
  228. end
  229. #Use Hammer
  230. 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
  231. if $gfarm[@target]
  232. $gfarm[@target].hammer!
  233. #dispose_farm_sprites
  234. #refresh_sprites
  235. end
  236. end
  237. #Use Axe
  238. 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
  239. if $gfarm[@target]
  240. $gfarm[@target].axe!
  241. dispose_farm_sprites
  242. refresh_sprites
  243. end
  244. end
  245. #Use Watering Can
  246. 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
  247. if $gfarm[@target] && $game_system.water_var > 0
  248. $gfarm[@target].water
  249. end
  250. end
  251. #Use Sickle
  252. 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
  253. if $gfarm[@target]
  254. $gfarm[@target].destroy!
  255. dispose_farm_sprites
  256. refresh_sprites
  257. end
  258. end
  259. #Seeding
  260. 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?
  261. @target1 = [$game_player.x,$game_player.y]
  262. @offset = [[0,0],[-1,0],[-1,-1],[-1,1],[0,1],[0,-1],[1,0],[1,-1],[1,1]]
  263. @offset.each do |off|
  264. @targets ||= []
  265. @targets.push([@target1[0]+off[0],@target1[1]+off[1]])
  266. end
  267. @targets.each do |target|
  268. if $gfarm[target]
  269. if $gfarm[target].soil == true && !$gfarm[target].id
  270. $gfarm[target].set_seed = $game_player.tool.seed_id
  271. end
  272. end
  273. end
  274. $game_party.lose_item($game_player.tool,1)
  275. end
  276. if $game_player.tool && $game_player.tool.id == 9 && $game_player.tool.is_a?(RPG::Weapon)
  277. if $game_map.events_xy(@target[0],@target[1]).size > 0
  278. if $game_map.events_xy(@target[0],@target[1])[0].animal
  279. $game_map.events_xy(@target[0],@target[1])[0].get_milk
  280. end
  281. end
  282. end
  283. if $game_player.tool && $game_player.tool.id == 10 && $game_player.tool.is_a?(RPG::Weapon)
  284. if $game_map.events_xy(@target[0],@target[1]).size > 0
  285. if $game_map.events_xy(@target[0],@target[1])[0].animal
  286. $game_map.events_xy(@target[0],@target[1])[0].get_wool
  287. $game_map.events_xy(@target[0],@target[1])[0].refresh_animal_wool_image
  288. end
  289. end
  290. end
  291. if $game_player.tool && $game_player.tool.id == 11 && $game_player.tool.is_a?(RPG::Weapon)
  292. if $game_map.events_xy(@target[0],@target[1]).size > 0
  293. if $game_map.events_xy(@target[0],@target[1])[0].animal
  294. $game_map.events_xy(@target[0],@target[1])[0].animal.is_taken = true
  295. $game_map.events_xy(@target[0],@target[1])[0].refresh_animal_taken
  296. $disable_toolopen = true
  297. end
  298. end
  299. end
  300. if $game_player.tool && $game_player.tool.id == 12 && $game_player.tool.is_a?(RPG::Weapon)
  301. @fishing_mode = true
  302. $game_player.disable_move = true
  303. Input.update
  304. HM_Sys.spawn_fishing_bait(@target[0],@target[1])
  305. end
  306. end
  307. @tool_delay = nil
  308. @targets.clear if @targets
  309. @targets = nil
  310. @offset = nil
  311. @target1 = nil
  312. @target = nil
  313. end
  314. end
  315. #Fishing Mode Update
  316. if @fishing_mode
  317. @fishing_wait ||= rand(60*5)+1
  318. if @fishing_wait
  319. if @fishing_wait > 0
  320. @fishing_wait -= 1
  321. else
  322. $game_player.balloon_id = 1 if $game_player.balloon_id != 1
  323. @fish_delay ||= rand(60)
  324. @fishing_wait = nil
  325. end
  326. end
  327. if @fish_delay
  328. if @fish_delay > 0
  329. @fish_delay -= 1
  330. if Input.trigger?(:C)
  331. if rand(2) == 1
  332. $game_player.balloon_id = 0
  333. x = $game_player.screen_x
  334. y = $game_player.screen_y
  335. HM_Sys.add_float_text(x,y,"Wow!")
  336. fish_type = rand(100) + 1
  337. case fish_type
  338. when 1...50
  339. recive = Fish_Type[0]
  340. when 50...70
  341. recive = Fish_Type[1]
  342. when 70...90
  343. recive = Fish_Type[2]
  344. when 90..100
  345. recive = Fish_Type[3]
  346. end
  347. $game_temp.reserve_common_event(7)
  348. $fishing_name_index = rand(Fish_Name[recive].size)
  349. $fishing_recive = recive
  350. @fishing_wait = nil
  351. @fish_delay = nil
  352. @fishing_mode = false
  353. $game_player.disable_move = false
  354. $fishing_bait.erase
  355. $fishing_bait = nil
  356. else
  357. x = $game_player.screen_x
  358. y = $game_player.screen_y
  359. HM_Sys.add_float_text(x,y,"Miss!")
  360. @fishing_wait = nil
  361. @fish_delay = nil
  362. @fishing_mode = false
  363. $game_temp.reserve_common_event(7)
  364. $game_player.disable_move = false
  365. $fishing_bait.erase
  366. $fishing_bait = nil
  367. end
  368. end
  369. else
  370. x = $game_player.screen_x
  371. y = $game_player.screen_y
  372. HM_Sys.add_float_text(x,y,"Miss!")
  373. @fishing_wait = nil
  374. @fish_delay = nil
  375. @fishing_mode = false
  376. $game_temp.reserve_common_event(7)
  377. $game_player.disable_move = false
  378. $fishing_bait.erase
  379. $fishing_bait = nil
  380. end
  381. end
  382. end
  383.  
  384. #Hold Item Update
  385. if $game_player.hold_item && !$game_player.hold_item.disposed?
  386. $game_player.hold_item.viewport ||= @viewport1
  387. $game_player.hold_item.update
  388. end
  389.  
  390. #Harvest Plant Update Input
  391. if $gfarm && $game_map.map_id == MAIN_FARM
  392. #Cheating
  393. if Input.trigger?(:R)
  394. p HM_Sys.get_targets($game_player.x,$game_player.y,$game_player.direction,2)
  395. #$game_player.hold_item = Sprite_ItemHolding.new(202,@viewport1)
  396. $gfarm.values.each do |plant|
  397. plant.water if plant
  398. plant.grow if plant
  399. end
  400. end
  401. #Spawn Rock AND Lumber
  402. if Input.trigger?(:Z)
  403. for i in 0...$game_map.width
  404. for j in 0...$game_map.height
  405. if $game_map.region_id(i,j) == 16
  406. if !$gfarm[[i,j]]
  407. if rand(4) == 1
  408. $gfarm[[i,j]] = HM_Plant.new(i,j,$game_map.map_id,@viewport1,rand(3)+1)
  409. end
  410. end
  411. end
  412. end
  413. end
  414. end
  415. #Update All plants each frame.
  416. $gfarm.values.each do |plant|
  417. plant.update if plant && SceneManager.scene_is?(Scene_Map)
  418. plant.water if plant && !plant.watered && ($gweather.today == :rain or $gweather.today == :storm)
  419. end
  420. end
  421.  
  422. end
  423. #--------------------------------------------------------------------------
  424. # * Dispose
  425. #--------------------------------------------------------------------------
  426. def dispose
  427. dispose_farm_sprites
  428. @tool_range.dispose if @tool_range
  429. @tool_range = nil
  430. if @chick_hold
  431. @chick_hold.bitmap.dispose
  432. @chick_hold.dispose
  433. end
  434. if $game_player.hold_item
  435. if !$game_player.hold_item.disposed?
  436. $game_player.hold_item.dispose
  437. end
  438. end
  439. hm_dispose_z1
  440. end
  441. #--------------------------------------------------------------------------
  442. # * Dispose
  443. #--------------------------------------------------------------------------
  444. def dispose_farm_sprites
  445. if $gfarm.size > 0
  446. $gfarm.values.each do |plant|
  447. plant.sprite_dispose if plant
  448. end
  449. end
  450. end
  451.  
  452. end
Advertisement
Add Comment
Please, Sign In to add comment