roninator2

Venka Bestiary Game Enemy Debuff Mod

Nov 17th, 2024
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 13.12 KB | None | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Venka Bestiary Game Enemy Debuff Mod   ║  Version: 1.00     ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║                                               ╠════════════════════╣
  7. # ║            Alter Display                      ║    07 Sep 2023     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: Venka Bestiary V1.8                                      ║
  11. # ║                                                                    ║
  12. # ╚════════════════════════════════════════════════════════════════════╝
  13. # ╔════════════════════════════════════════════════════════════════════╗
  14. # ║ Brief Description:                                                 ║
  15. # ║   Change the display for debuffs to show current enemy in battle   ║
  16. # ╚════════════════════════════════════════════════════════════════════╝
  17. # ╔════════════════════════════════════════════════════════════════════╗
  18. # ║ Instructions:                                                      ║
  19. # ║   Change value below to true or false                              ║
  20. # ║     true equals original script data                               ║
  21. # ║     false equals current enemy data                                ║
  22. # ║                                                                    ║
  23. # ║   This was made as a request from DarknessVoid                     ║
  24. # ║     The issue was that debuffs applied to an enemy                 ║
  25. # ║     in battle are not shown.                                       ║
  26. # ║     This is because the script is designed to use                  ║
  27. # ║     the data that is in the database for the enemy                 ║
  28. # ║     not the enemy in battle                                        ║
  29. # ║                                                                    ║
  30. # ╚════════════════════════════════════════════════════════════════════╝
  31. # ╔════════════════════════════════════════════════════════════════════╗
  32. # ║ Updates:                                                           ║
  33. # ║ 1.00 - 07 Sep 2023 - Script finished                               ║
  34. # ║                                                                    ║
  35. # ╚════════════════════════════════════════════════════════════════════╝
  36. # ╔════════════════════════════════════════════════════════════════════╗
  37. # ║ Credits and Thanks:                                                ║
  38. # ║   Roninator2                                                       ║
  39. # ║                                                                    ║
  40. # ╚════════════════════════════════════════════════════════════════════╝
  41. # ╔════════════════════════════════════════════════════════════════════╗
  42. # ║ Terms of use:                                                      ║
  43. # ║  Follow the original Authors terms of use where applicable         ║
  44. # ║    - When not made by me (Roninator2)                              ║
  45. # ║  Free for all uses in RPG Maker except nudity                      ║
  46. # ║  Anyone using this script in their project before these terms      ║
  47. # ║  were changed are allowed to use this script even if it conflicts  ║
  48. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  49. # ║  No part of this code can be used with AI programs or tools        ║
  50. # ║  Credit must be given                                              ║
  51. # ╚════════════════════════════════════════════════════════════════════╝
  52.  
  53. module Venka
  54.   module Bestiary
  55.     Show_ShownEnemy_DebuffStats = false
  56.     # shows the enemy database stats not the active enemy stats
  57.   end
  58. end
  59.  
  60. # ╔════════════════════════════════════════════════════════════════════╗
  61. # ║                      End of editable region                        ║
  62. # ╚════════════════════════════════════════════════════════════════════╝
  63.  
  64. class Game_Enemy < Game_Battler
  65.   attr_accessor :shown_id
  66.   attr_reader :buffs
  67.  
  68.   alias r2_shown_enemy_id_rpg_enemy_init    initialize
  69.   def initialize(index, enemy_id)
  70.     r2_shown_enemy_id_rpg_enemy_init(index, enemy_id)
  71.     @shown_id = @enemy_id
  72.     $data_enemies[@enemy_id].note.split(/[\r\n]+/).each do |line|
  73.       case line
  74.       when Venka::Notetag::Shown_ID;          @shown_id = $1.to_i
  75.       end
  76.     end
  77.   end
  78. end
  79.  
  80. #==============================================================================
  81. # ■ Window_BestiaryStatSelection
  82. #==============================================================================
  83. class Window_BestiaryStatSelection < Window_Selectable
  84.   #----------------------------------------------------------------------------
  85.   # ○ new method: enemy_id
  86.   #----------------------------------------------------------------------------
  87.   def enemy_id=(enemy_id)
  88.     return @enemy = nil if enemy_id == nil
  89.     # changed to show enemy when in battle
  90.     if SceneManager.scene_is?(Scene_Battle)
  91.       if @enemy != enemy_id
  92.         $game_troop.members.each do |emy|
  93.           if emy == enemy_id
  94.             @enemy = emy
  95.           end
  96.         end
  97.       end
  98.     else
  99.       if @enemy != $data_enemies[enemy_id]
  100.         @enemy = $data_enemies[enemy_id]
  101.       end
  102.     end
  103.     refresh
  104.   end
  105. end
  106.  
  107. #==============================================================================
  108. # ■ Window_BestiaryStats
  109. #==============================================================================
  110. class Window_BestiaryStats < Window_Base
  111.   #----------------------------------------------------------------------------
  112.   # ○ new method: enemy_id
  113.   #----------------------------------------------------------------------------
  114.   def enemy_id=(enemy_id)
  115.     return @enemy = nil if enemy_id == 0
  116.     # changed to show enemy when in battle
  117.     if SceneManager.scene_is?(Scene_Battle)
  118.       if @enemy != enemy_id
  119.         $game_troop.members.each do |emy|
  120.           if emy == enemy_id
  121.             @enemy = emy
  122.           end
  123.         end
  124.       end
  125.     else
  126.       if @enemy != $data_enemies[enemy_id]
  127.         @enemy = $data_enemies[enemy_id]
  128.       end
  129.     end
  130.     refresh
  131.   end
  132.   #----------------------------------------------------------------------------
  133.   # ○ new method: draw_stat
  134.   #----------------------------------------------------------------------------
  135.   def draw_stat(stat, stat_type)
  136.     rect = info_rect(stat)
  137.     rect.y += @y
  138.     stat_info = Venka::Bestiary::Base_Stats[stat]
  139.     if stat_info[1]
  140.       draw_icon(stat_info[1], rect.x, rect.y)
  141.       rect.x += 25;            rect.width -= 25
  142.     end
  143.     if stat_info[0]
  144.       set_bestiary_font(:stat_name)
  145.       draw_text(rect, stat_info[0])
  146.       text_width = text_size(stat_info[0]).width + 5
  147.       rect.x += text_width;    rect.width -= text_width
  148.     end
  149.     set_bestiary_font(:stats_font)
  150.     text = Venka::Bestiary::Unknown_Stat
  151.     $game_party.bestiary.each do |entry|
  152.       next unless entry.enemy_id == @enemy.shown_id
  153.       if stat_type == :stat && (entry.scanned ||
  154.             entry.kills >= Venka::Bestiary::Show_BaseStats)
  155.         text = Game_Enemy.new(0, @enemy.shown_id).param(stat)
  156.       elsif stat_type == :debuff && (entry.scanned ||
  157.             entry.kills >= Venka::Bestiary::Show_DebuffStats)
  158.             # changed to show database or enemy
  159.         if Venka::Bestiary::Show_ShownEnemy_DebuffStats
  160.           rate = Game_Enemy.new(0, @enemy.shown_id).debuff_rate(stat)
  161.         elsif !SceneManager.scene_is?(Scene_Battle)
  162.           rate = Game_Enemy.new(0, @enemy.shown_id).debuff_rate(stat)
  163.         else
  164.           rate = @enemy.debuff_rate(stat)
  165.           rate += ( @enemy.buffs[stat] * 0.25 ) if @enemy.buffs[stat] != 0
  166.         end
  167.         text = get_resist_info(stat, rate)
  168.       end
  169.     end
  170.     draw_text(rect, text, 2)
  171.   end
  172.   #----------------------------------------------------------------------------
  173.   # ○ new method: set_resist_style
  174.   #----------------------------------------------------------------------------
  175.   def set_resist_style(resist, text = "")
  176.     if text != ""
  177.       color = Venka::Bestiary::Immunity_Color
  178.     else
  179.       color = Venka::Bestiary::Fonts[:stats_font][3]
  180.       color = Venka::Bestiary::High_Resist if resist > 1.0
  181.       color = Venka::Bestiary::Low_Resist  if resist < 1.0
  182.       # removed rate amount change
  183.       text = (resist * 100).round.to_s+"%"
  184.     end
  185.     new_color = color.is_a?(Integer) ? text_color(color) : Color.new(*color)
  186.     change_color(new_color)
  187.     return text
  188.   end
  189. end
  190.  
  191. #==============================================================================
  192. # ■ Scene_Battle
  193. #==============================================================================
  194. class Scene_Battle < Scene_Base
  195.   #----------------------------------------------------------------------------
  196.   # ● alias method: item_apply
  197.   #----------------------------------------------------------------------------
  198.   def apply_item_effects(target, item)
  199.     if target.is_a?(Game_Enemy)
  200.       enemy = $data_enemies[target.enemy_id]
  201.       $game_party.reveal_resist(enemy.id, false) if item.scan
  202.       attack_element = item.damage.element_id
  203.       Venka::Bestiary::Elements.size.times do |i|
  204.         if Venka::Bestiary::Elements[i][0] == attack_element
  205.           $game_party.bestiary.each do |entry|
  206.             entry.elements[i] = true if entry.enemy_id == enemy.shown_id
  207.           end
  208.         end
  209.       end
  210.       if item.scan
  211.         $game_party.bestiary.each do |entry|
  212.           entry.scanned = true if entry.enemy_id == enemy.shown_id
  213.         end
  214.         # changed to pass target not target.id
  215.         show_enemy_info(target)
  216.       end
  217.     end
  218.     venka_scan_skill_used(target, item)
  219.   end
  220. end
  221.  
  222. if $imported[:TSBS]
  223. class Game_Battler
  224.   alias venka_scan_skill_used item_apply
  225.   def item_apply(user, item)
  226.     if self.is_a?(Game_Enemy)
  227.       enemy = $data_enemies[self.enemy_id]
  228.       $game_party.reveal_resist(enemy.id, false) if item.scan
  229.       attack_element = item.damage.element_id
  230.       Venka::Bestiary::Elements.size.times do |i|
  231.         if Venka::Bestiary::Elements[i][0] == attack_element
  232.           $game_party.bestiary.each do |entry|
  233.             entry.elements[i] = true if entry.enemy_id == enemy.shown_id
  234.           end
  235.         end
  236.       end
  237.       if item.scan
  238.         $game_party.bestiary.each do |entry|
  239.           entry.scanned = true if entry.enemy_id == enemy.shown_id
  240.         end
  241.         SceneManager.scene.show_enemy_info(self)
  242.       end
  243.     end
  244.     venka_scan_skill_used(user, item)
  245.   end
  246. end
  247. end
Add Comment
Please, Sign In to add comment