Advertisement
roninator2

Heurikichi day night Random Battle Control 2

Dec 11th, 2024
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 9.08 KB | None | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Random Day Battle - Forward Time       ║  Version: 1.02a    ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║   Set specific troops for                     ╠════════════════════╣
  7. # ║   battles during the day or night             ║    01 Nov 2020     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires:                                                          ║
  11. # ║       Heurikichi day/night script                                  ║
  12. # ╚════════════════════════════════════════════════════════════════════╝
  13. # ╔════════════════════════════════════════════════════════════════════╗
  14. # ║ Brief Description:                                                 ║
  15. # ║      Control Troops to specific time of day                        ║
  16. # ╚════════════════════════════════════════════════════════════════════╝
  17. # ╔════════════════════════════════════════════════════════════════════╗
  18. # ║ Instructions:                                                      ║
  19. # ║   Place below Heurikichi day/night script                          ║
  20. # ║   Specify in the map, the note tag stating                         ║
  21. # ║   which troops will be at what time                                ║
  22. # ║      Map has 12 troops in the list                                 ║
  23. # ║   <RDB: Time, troop 1 id, troop 2 id, etc>                         ║
  24. # ║   <RDB: 0, 1, 2, 3>                                                ║
  25. # ║   <RDB: 6, 4, 5, 6>                                                ║
  26. # ║   <RDB: 12, 7, 8, 9>                                               ║
  27. # ║   <RDB: 18, 10, 11, 12>                                            ║
  28. # ║                                                                    ║
  29. # ║  Hour is checked from 0 forward.                                   ║
  30. # ║  So if it is 1500, then the third one will take action             ║
  31. # ║  0-6 = false, 7-12 = false, 13-18 = true, 19-24 = false            ║
  32. # ║                                                                    ║
  33. # ║  You can split is up as much as you want.                          ║
  34. # ║  * note that is you have 2 troops and specifiy them                ║
  35. # ║    as <RTB: 1, 1, 2, 3>                                            ║
  36. # ║    then the battle will only occur between 0000 and 0100           ║
  37. # ║    and it will not do any other battle                             ║
  38. # ╚════════════════════════════════════════════════════════════════════╝
  39. # ╔════════════════════════════════════════════════════════════════════╗
  40. # ║ Updates:                                                           ║
  41. # ║   2022-Jul-04 - Initial publish                                    ║
  42. # ║   2022-Jul-04 - Bug fixes                                          ║
  43. # ╚════════════════════════════════════════════════════════════════════╝
  44. # ╔════════════════════════════════════════════════════════════════════╗
  45. # ║ Credits and Thanks:                                                ║
  46. # ║   Roninator2                                                       ║
  47. # ║   Heurikichi                                                       ║
  48. # ╚════════════════════════════════════════════════════════════════════╝
  49. # ╔════════════════════════════════════════════════════════════════════╗
  50. # ║ Terms of use:                                                      ║
  51. # ║  Follow the original Authors terms of use where applicable         ║
  52. # ║    - When not made by me (Roninator2)                              ║
  53. # ║  Free for all uses in RPG Maker except nudity                      ║
  54. # ║  Anyone using this script in their project before these terms      ║
  55. # ║  were changed are allowed to use this script even if it conflicts  ║
  56. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  57. # ║  No part of this code can be used with AI programs or tools        ║
  58. # ║  Credit must be given                                              ║
  59. # ╚════════════════════════════════════════════════════════════════════╝
  60.  
  61. module R2_RDB_MAP
  62.   RDB = /<RDB:[ ]*(\d+(?:\s*,\s*\d+)*)>/i
  63.   Time_Intervals = 6 # needs to be set intervals that work with your note tags
  64. end
  65.  
  66. class RPG::Map
  67.   attr_accessor :random_day_battle
  68.   attr_accessor :random_day_battle_time
  69.   def load_notetags_rdb
  70.     r2td = {}
  71.     r2data = []
  72.     @random_day_battle_time = []
  73.     @random_day_battle = []
  74.     i = 0
  75.     self.note.split(/[\r\n]+/).each { |line|
  76.       case line
  77.       when R2_RDB_MAP::RDB
  78.         $1.scan(/\d+/).each { |num|
  79.         r2data.push(num.to_i) }
  80.       end
  81.       r2td[i] = r2data
  82.       r2data = []
  83.       i += 1
  84.     }
  85.     i = 0
  86.     return if r2td.empty?
  87.     r2td.each_value do |r2se|
  88.       @random_day_battle_time[i] = r2se[0]
  89.       adj = r2se
  90.       adj.shift
  91.       @random_day_battle[i] = adj
  92.       i += 1
  93.     end
  94.   end
  95. end
  96.  
  97. class Game_Map
  98.   attr_accessor :random_day_battle
  99.   attr_accessor :random_day_battle_time
  100.   alias game_map_setup_rdb setup
  101.   def setup(map_id)
  102.     game_map_setup_rdb(map_id)
  103.     @map.load_notetags_rdb
  104.     @random_day_battle = @map.random_day_battle
  105.     @random_day_battle_time = @map.random_day_battle_time
  106.     p(@random_day_battle)
  107.     p(@random_day_battle_time)
  108.   end
  109. end
  110.  
  111. class Game_Player < Game_Character
  112.   def make_encounter_troop_id
  113.     encounter_list = []
  114.     weight_sum = 0
  115.     rdb = false
  116.     @timebattleid = -1
  117.     etime = $game_clock.hour24 + R2_RDB_MAP::Time_Intervals
  118.     btime = $game_clock.hour24
  119.     etime = 24 if etime > 24
  120.     if $game_map.random_day_battle == []
  121.       $game_map.encounter_list.each do |encounter|
  122.         next unless encounter_ok?(encounter)
  123.         encounter_list.push(encounter)
  124.         weight_sum += encounter.weight
  125.       end
  126.     else
  127.       p($game_map.random_day_battle_time)
  128.       $game_map.random_day_battle_time.each_with_index do |cl, b|
  129.         p(cl)
  130.         p(etime)
  131.         p(btime)
  132.         if (cl < etime)
  133.           if (cl >= btime)
  134.           @timebattleid = b
  135.           end
  136.         end
  137.         rdb = true if cl != nil
  138.       end
  139.       $game_map.encounter_list.each do |encounter|
  140.         next unless encounter_ok?(encounter)
  141.         if rdb == true
  142.           next if !$game_map.random_day_battle[@timebattleid].include?(encounter.troop_id)
  143.         end
  144.         encounter_list.push(encounter)
  145.         weight_sum += encounter.weight
  146.       end
  147.     end
  148.     if weight_sum > 0
  149.       value = rand(weight_sum)
  150.       encounter_list.each do |encounter|
  151.         value -= encounter.weight
  152.         return encounter.troop_id if value < 0
  153.       end
  154.     end
  155.     return 0
  156.   end
  157. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement