Advertisement
Guest User

[RMXP RGSS] Mobius's Better Equip Page

a guest
Jul 24th, 2016
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 17.41 KB | None | 0 0
  1. #==============================================================================
  2. # ** Scene_Equip
  3. #------------------------------------------------------------------------------
  4. #This class performs equipment screen processing.
  5. #==============================================================================
  6. class Scene_Equip
  7. #--------------------------------------------------------------------------
  8. # * Refresh
  9. #--------------------------------------------------------------------------
  10. def refresh
  11. # Set item window to visible
  12. @item_window1.visible = (@right_window.index == 0)
  13. @item_window2.visible = (@right_window.index == 1)
  14. @item_window3.visible = (@right_window.index == 2)
  15. @item_window4.visible = (@right_window.index == 3)
  16. @item_window5.visible = (@right_window.index == 4)
  17. # Get currently equipped item
  18. item1 = @right_window.item
  19. # Set current item window to @item_window
  20. case @right_window.index
  21. when 0
  22. @item_window = @item_window1
  23. when 1
  24. @item_window = @item_window2
  25. when 2
  26. @item_window = @item_window3
  27. when 3
  28. @item_window = @item_window4
  29. when 4
  30. @item_window = @item_window5
  31. end
  32. # If right window is active
  33. if @right_window.active
  34. # Erase parameters for after equipment change
  35. @left_window.set_new_parameters(nil, nil, nil, nil, nil, nil, nil)
  36. @left_window.set_elements(nil, nil)
  37. @left_window.set_states(nil, nil)
  38. end
  39. # If item window is active
  40. if @item_window.active
  41. # Get currently selected item
  42. item2 = @item_window.item
  43. # Change equipment
  44. last_hp = @actor.hp
  45. last_sp = @actor.sp
  46. @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
  47.  
  48. # Get parameters for after equipment change
  49. new_atk = @actor.atk
  50. new_pdef = @actor.pdef
  51. new_mdef = @actor.mdef
  52. new_str = @actor.str
  53. new_dex = @actor.dex
  54. new_agi = @actor.agi
  55. new_int = @actor.int
  56.  
  57. # Get element_set for after equipment change
  58. atk_element_set = @actor.element_set
  59. def_element_set = @actor.defense_element_set
  60.  
  61. # Get state_set for after equipment change
  62. plus_state_set = @actor.plus_state_set
  63. def_state_set = @actor.defense_state_set
  64.  
  65. # Return equipment
  66. @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
  67. @actor.hp = last_hp
  68. @actor.sp = last_sp
  69.  
  70. # Draw in left window
  71. @left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_str, \
  72. new_dex, new_agi, new_int)
  73. @left_window.set_elements(atk_element_set, def_element_set)
  74. @left_window.set_states(plus_state_set, def_state_set)
  75.  
  76. end
  77. end end
  78. #==============================================================================
  79. # ** Window_Base
  80. #------------------------------------------------------------------------------
  81. #This class is for all in-game windows.
  82. #==============================================================================
  83. class Window_Base < Window
  84.  
  85. #--------------------------------------------------------------------------
  86. # * Draw Icon
  87. #icon_name : filename of the icon ("String")
  88. # x : draw spot x-coordinate
  89. # y : draw spot y-coordinate
  90. # MOBIUS ADDED
  91. #--------------------------------------------------------------------------
  92. def draw_icon(icon_name, x, y)
  93. bitmap = RPG::Cache.icon(icon_name)
  94. src_rect = Rect.new(0, 0, 24, 24)
  95. self.contents.blt(x, y, bitmap, src_rect)
  96. end
  97. #--------------------------------------------------------------------------
  98. # * Draw Attack Elements - Draws the active attack elements for a given actor
  99. # element_set : the element set for a given actor
  100. # x : draw spot x-coordinate
  101. # y : draw spot y-coordinate
  102. # MOBIUS ADDED
  103. #--------------------------------------------------------------------------
  104. def draw_attack_elements(element_set, x, y)
  105. return 0  # REMOVE FOR ICONS
  106. #Draw fire if active
  107. if element_set.include?(1)
  108.  draw_icon("Fire", x, y)
  109. else
  110. draw_icon("Fire 2", x, y)
  111. end
  112. #Draw ice if active
  113. if element_set.include?(2)
  114.  draw_icon("Ice", x + 30, y)
  115. else
  116. draw_icon("Ice 2", x + 30, y)
  117. end
  118. #Draw lightning if active
  119. if element_set.include?(3)
  120.  draw_icon("Lightning", x + 60, y)
  121. else
  122. draw_icon("Lightning 2", x + 60, y)
  123. end
  124.  
  125. #Draw water if active
  126. if element_set.include?(4)
  127.  draw_icon("Water", x + 90, y)
  128. else
  129. draw_icon("Water 2", x + 90, y)
  130. end
  131. #Draw earth if active
  132. if element_set.include?(5)
  133.  draw_icon("Earth", x + 120, y)
  134. else
  135. draw_icon("Earth 2", x + 120, y)
  136. end
  137. #Draw wind if active
  138. if element_set.include?(6)
  139.  draw_icon("Wind", x + 150, y)
  140. else
  141. draw_icon("Wind 2", x + 150, y)
  142. end
  143. end
  144.  
  145. #--------------------------------------------------------------------------
  146. # * Draw Defense Elements - Draws the active defense elements for a given actor
  147. # defense_element_set : the defense element set for a given actor
  148. # x : draw spot x-coordinate
  149. # y : draw spot y-coordinate
  150. # MOBIUS ADDED
  151. #--------------------------------------------------------------------------
  152. def draw_defense_elements(defense_element_set, x, y)
  153. return 0  # REMOVE FOR ICONS
  154. #Draw fire if active
  155. if defense_element_set.include?(1)
  156.  draw_icon("Fire Def", x, y)
  157. else
  158. draw_icon("Fire Def 2", x, y)
  159. end
  160. #Draw ice if active
  161. if defense_element_set.include?(2)
  162.  draw_icon("Ice Def", x + 30, y)
  163. else
  164. draw_icon("Ice Def 2", x + 30, y)
  165. end
  166. #Draw lightning if active
  167. if defense_element_set.include?(3)
  168.  draw_icon("Lightning Def", x + 60, y)
  169. else
  170. draw_icon("Lightning Def 2", x + 60, y)
  171. end
  172. #Draw water if active
  173. if defense_element_set.include?(4)
  174.  draw_icon("Water Def", x + 90, y)
  175. else
  176. draw_icon("Water Def 2", x + 90, y)
  177. end
  178. #Draw earth if active
  179. if defense_element_set.include?(5)
  180.  draw_icon("Earth Def", x + 120, y)
  181. else
  182. draw_icon("Earth Def 2", x + 120, y)
  183. end
  184. #Draw wind if active
  185. if defense_element_set.include?(6)
  186.  draw_icon("Wind Def", x + 150, y)
  187. else
  188. draw_icon("Wind Def 2", x + 150, y)
  189. end
  190. end
  191.  
  192. #--------------------------------------------------------------------------
  193. # * Draw Plus States - Draws states the a weapon adds for a given actor
  194. # state_set : the plus state set for a given actor
  195. # x : draw spot x-coordinate
  196. # y : draw spot y-coordinate
  197. # MOBIUS ADDED
  198. #--------------------------------------------------------------------------
  199. def draw_plus_states(state_set, x, y)
  200.  
  201. if state_set == []
  202. self.contents.font.color = system_color
  203. self.contents.draw_text(x, y, 240, 32, "Inflicts: ")
  204.  
  205. elsif state_set.size == 1
  206. state = $data_states[state_set[0]]
  207. self.contents.font.color = system_color
  208. self.contents.draw_text(x, y, 240, 32, "Inflicts: " + state.name)
  209.  
  210. elsif state_set.size == 2
  211. state1 = $data_states[state_set[0]]
  212. state2 = $data_states[state_set[1]]
  213. self.contents.font.color = system_color
  214. self.contents.draw_text(x, y, 240, 32, "Inflicts: " + state1.name +
  215. ", " + state2.name)
  216.  
  217. else
  218.  
  219. rating = 0
  220. priority_state = ""
  221. total_states = state_set.size
  222. for i in state_set
  223.  
  224. state = $data_states[i]
  225. if rating <= state.rating
  226. #if new state is higher priority
  227. rating = state.rating
  228. priority_state = state.name
  229.  
  230. end
  231. end
  232. self.contents.font.color = system_color
  233. self.contents.draw_text(x, y, 240, 32, "Inflicts: " + priority_state +
  234. " and " + (total_states - 1).to_s + " others")
  235.  
  236. end
  237. end
  238. #--------------------------------------------------------------------------
  239. # * Draw Def States - Draws states the armor prevents for a given actor
  240. # state_set : the guard state set for a given actor
  241. # x : draw spot x-coordinate
  242. # y : draw spot y-coordinate
  243. # MOBIUS ADDED
  244. #--------------------------------------------------------------------------
  245. def draw_def_states(state_set, x, y)
  246.  
  247. if state_set == []
  248. self.contents.font.color = system_color
  249. self.contents.draw_text(x, y, 240, 32, "Prevents: ")
  250.  
  251. elsif state_set.size == 1
  252. state = $data_states[state_set[0]]
  253. self.contents.font.color = system_color
  254. self.contents.draw_text(x, y, 240, 32, "Prevents: " + state.name)
  255.  
  256. elsif state_set.size == 2
  257. state1 = $data_states[state_set[0]]
  258. state2 = $data_states[state_set[1]]
  259. self.contents.font.color = system_color
  260. self.contents.draw_text(x, y, 240, 32, "Prevents: " + state1.name + ", " + state2.name)
  261.  
  262. else
  263. rating = 0
  264. priority_state = ""
  265. total_states = state_set.size
  266. for i in state_set
  267. state = $data_states[i]
  268. if rating <= state.rating
  269. #if new state is higher priority
  270. rating = state.rating
  271. priority_state = state.name
  272. end
  273. end
  274. self.contents.font.color = system_color
  275. self.contents.draw_text(x, y, 240, 32, "Prevents: " + priority_state + " and " + (total_states - 1).to_s + " others")
  276. end
  277. end end
  278. #==============================================================================
  279. # ** Window_EquipItem
  280. #------------------------------------------------------------------------------
  281. #This window displays choices when opting to change equipment on the
  282. #equipment screen.
  283. #==============================================================================
  284. class Window_EquipItem < Window_Selectable
  285. #--------------------------------------------------------------------------
  286. # * Object Initialization
  287. # actor: actor
  288. # equip_type : equip region (0-3)
  289. #--------------------------------------------------------------------------
  290. def initialize(actor, equip_type)
  291. super(272, 256, 368, 224)
  292. @actor = actor
  293. @equip_type = equip_type
  294. @column_max = 1
  295. refresh
  296. self.active = false
  297. self.index = -1
  298. end
  299.  
  300. #--------------------------------------------------------------------------
  301. # * Draw Item
  302. # index : item number
  303. #--------------------------------------------------------------------------
  304. def draw_item(index)
  305. item = @data[index]
  306. #x = 4 + index % 2 * (288 + 32OLD
  307. x = 4
  308. #y = index / 2 * 32 OLD
  309. y = index * 32
  310. case item
  311. when RPG::Weapon
  312. number = $game_party.weapon_number(item.id)
  313. when RPG::Armor
  314. number = $game_party.armor_number(item.id)
  315. end
  316. bitmap = RPG::Cache.icon(item.icon_name)
  317. self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
  318. self.contents.font.color = normal_color
  319. self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  320. self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  321. self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  322. end end
  323. #==============================================================================
  324. # ** Window_EquipLeft
  325. #------------------------------------------------------------------------------
  326. #This window displays actor parameter changes on the equipment screen.
  327. #==============================================================================
  328. class Window_EquipLeft < Window_Base
  329.  
  330. #--------------------------------------------------------------------------
  331. # * Object Initialization
  332. # actor : actor
  333. #--------------------------------------------------------------------------
  334. def initialize(actor)
  335. super(0, 64, 272, 416)
  336. self.contents = Bitmap.new(width - 32, height - 32)
  337. @actor = actor
  338. refresh
  339. end
  340.  
  341. #--------------------------------------------------------------------------
  342. # * Refresh
  343. #--------------------------------------------------------------------------
  344. def refresh
  345. self.contents.clear
  346. draw_actor_name(@actor, 4, 0)
  347. draw_actor_parameter(@actor, 4, 32, 0)#ATK
  348. draw_actor_parameter(@actor, 4, 64, 1)#PDEF
  349. draw_actor_parameter(@actor, 4, 96, 2)#MDEF
  350. draw_actor_parameter(@actor, 4, 128, 3) #STR
  351. draw_actor_parameter(@actor, 4, 160, 4) #DEX
  352. draw_actor_parameter(@actor, 4, 192, 5) #AGI
  353. draw_actor_parameter(@actor, 4, 224, 6) #INT
  354. if @atk_element_set != nil
  355. draw_attack_elements(@atk_element_set, 4, 258)
  356. else
  357. draw_attack_elements(@actor.element_set, 4, 258)
  358. end
  359. if @def_element_set != nil
  360. draw_defense_elements(@def_element_set, 4, 292)
  361. else
  362. draw_defense_elements(@actor.defense_element_set, 4, 292)
  363. end
  364. if
  365. @plus_state_set != nil
  366. draw_plus_states(@plus_state_set, 4, 326)
  367. else
  368. draw_plus_states(@actor.plus_state_set, 4, 326)
  369. end
  370. if
  371. @def_state_set != nil
  372. draw_def_states(@def_state_set, 4, 358)
  373. else
  374. draw_def_states(@actor.defense_state_set, 4, 358)
  375. end
  376. if @new_atk != nil
  377. self.contents.font.color = system_color
  378. self.contents.draw_text(160, 32, 40, 32, "->", 1)
  379. self.contents.font.color = color_choose(@actor.atk, @new_atk)
  380. self.contents.draw_text(200, 32, 36, 32, @new_atk.to_s, 2)
  381. end
  382. if @new_pdef != nil
  383. self.contents.font.color = system_color
  384. self.contents.draw_text(160, 64, 40, 32, "->", 1)
  385. self.contents.font.color = color_choose(@actor.pdef, @new_pdef)
  386. self.contents.draw_text(200, 64, 36, 32, @new_pdef.to_s, 2)
  387. end
  388. if @new_mdef != nil
  389. self.contents.font.color = system_color
  390. self.contents.draw_text(160, 96, 40, 32, "->", 1)
  391. self.contents.font.color = color_choose(@actor.mdef, @new_mdef)
  392. self.contents.draw_text(200, 96, 36, 32, @new_mdef.to_s, 2)
  393. end
  394. if @new_str != nil
  395. self.contents.font.color = system_color
  396. self.contents.draw_text(160, 128, 40, 32, "->", 1)
  397. self.contents.font.color = color_choose(@actor.str, @new_str)
  398. self.contents.draw_text(200, 128, 36, 32, @new_str.to_s, 2)
  399. end
  400. if @new_dex != nil
  401. self.contents.font.color = system_color
  402. self.contents.draw_text(160, 160, 40, 32, "->", 1)
  403. self.contents.font.color = color_choose(@actor.dex, @new_dex)
  404. self.contents.draw_text(200, 160, 36, 32, @new_dex.to_s, 2)
  405. end
  406. if @new_agi != nil
  407. self.contents.font.color = system_color
  408. self.contents.draw_text(160, 192, 40, 32, "->", 1)
  409. self.contents.font.color = color_choose(@actor.agi, @new_agi)
  410. self.contents.draw_text(200, 192, 36, 32, @new_agi.to_s, 2)
  411. end
  412. if @new_int != nil
  413. self.contents.font.color = system_color
  414. self.contents.draw_text(160, 224, 40, 32, "->", 1)
  415. self.contents.font.color = color_choose(@actor.int, @new_int)
  416. self.contents.draw_text(200, 224, 36, 32, @new_int.to_s, 2)
  417. end
  418. end
  419.  
  420. #--------------------------------------------------------------------------
  421. # * Set parameters after changing equipment
  422. # new_atk: attack power after changing equipment
  423. # new_pdef : physical defense after changing equipment
  424. # new_mdef : magic defense after changing equipment
  425. # new_etc: I think you get the picture
  426. #--------------------------------------------------------------------------
  427. def set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex, \
  428.  
  429. new_agi, new_int)
  430.  
  431. if @new_atk != new_atk or @new_pdef != new_pdef or @new_mdef != new_mdef or
  432. @new_str != new_str or @new_dex != new_dex or @new_agi != new_agi or
  433. @new_int != new_int
  434. @new_atk = new_atk
  435. @new_pdef = new_pdef
  436. @new_mdef = new_mdef
  437. @new_str = new_str
  438. @new_dex = new_dex
  439. @new_agi = new_agi
  440. @new_int = new_int
  441. refresh
  442.  
  443. end
  444. end
  445. #--------------------------------------------------------------------------
  446. # * Set element_set after changing equipment
  447. # element_set: an array containing the new equipment's element_set
  448. #reference the database for element values
  449. #--------------------------------------------------------------------------
  450. def set_elements(atk_element_set, def_element_set)
  451.  
  452. if @atk_element_set != atk_element_set or
  453.  @def_element_set != def_element_set
  454. @atk_element_set = atk_element_set
  455. @def_element_set = def_element_set
  456. refresh
  457.  
  458. end
  459. end
  460.  
  461. #--------------------------------------------------------------------------
  462. # * Set state_set after changing equipment
  463. # state_set: an array containing the new equipment's state_set
  464. #reference the database for state values
  465. #--------------------------------------------------------------------------
  466. def set_states(plus_state_set, def_state_set)
  467.  
  468. if @plus_state_set != plus_state_set or @def_state_set != def_state_set
  469. @plus_state_set = plus_state_set
  470. @def_state_set = def_state_set
  471. refresh
  472.  
  473. end
  474. end
  475. #------------------------------------------------------------------------------
  476. # * color_choose
  477. # decide text color based on whether the stat improves
  478. # Mobius Added
  479. #------------------------------------------------------------------------------
  480. def color_choose(old_stat, new_stat)
  481.  
  482. compare = (old_stat <=> new_stat)
  483.  
  484. case compare
  485.  
  486. when -1
  487. #new is better
  488. Color.new(0, 255, 0, 255)
  489. #Return green color
  490.  
  491. when 0
  492. #old=new
  493. normal_color
  494. #Return white color
  495.  
  496. when 1
  497. #old is better
  498. Color.new(255, 0, 0, 255)
  499. #Return red color
  500.  
  501. end
  502. end end
  503. #class end
  504. #==============================================================================
  505. # ** Game_Actor
  506. #------------------------------------------------------------------------------
  507. #This class handles the actor. It's used within the Game_Actors class
  508. #($game_actors) and refers to the Game_Party class ($game_party).
  509. #==============================================================================
  510. class Game_Actor < Game_Battler
  511.  
  512. #--------------------------------------------------------------------------
  513. # * Get Normal Attack Element
  514. #--------------------------------------------------------------------------
  515. def element_set
  516.  
  517. weapon = $data_weapons[@weapon_id]
  518.  
  519. return weapon != nil ? weapon.element_set : []
  520. end
  521.  
  522. #--------------------------------------------------------------------------
  523. # * Get Normal Defense Elements
  524. #--------------------------------------------------------------------------
  525. def defense_element_set
  526.  
  527. result = []
  528.  
  529. for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  530. armor = $data_armors[i]
  531. if armor != nil
  532.  
  533.  result |= armor.guard_element_set
  534. end
  535.  
  536. end
  537.  
  538. return result
  539. end
  540.  
  541. #--------------------------------------------------------------------------
  542. # * Get Normal Attack State Change (+)
  543. #--------------------------------------------------------------------------
  544. def plus_state_set
  545.  
  546. weapon = $data_weapons[@weapon_id]
  547.  
  548. return weapon != nil ? weapon.plus_state_set : []
  549. end
  550.  
  551. #--------------------------------------------------------------------------
  552. # * Get Normal State Defense
  553. #--------------------------------------------------------------------------
  554. def defense_state_set
  555.  
  556. result = []
  557.  
  558. for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  559. armor = $data_armors[i]
  560. if armor != nil
  561.  
  562.  result |= armor.guard_state_set
  563. end
  564.  
  565. end
  566.  
  567. return result
  568. end end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement