Advertisement
MrTrivel

MrTS_Enemies_Teach_Skill_on_Death

Jun 20th, 2014
523
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 4.24 KB | None | 0 0
  1. # )----------------------------------------------------------------------------(
  2. # )--     AUTHOR:     Mr Trivel                                              --(
  3. # )--     NAME:       Enemies Teach Skill on Death                           --(
  4. # )--     CREATED:    2014-06-20                                             --(
  5. # )--     VERSION:    1.0a                                                   --(
  6. # )--     Idea by:    Trickstette                                            --(
  7. # )----------------------------------------------------------------------------(
  8. # )--                          DESCRIPTION                                   --(
  9. # )--  Enemies have a chance to teach skills to your actors after the battle.--(
  10. # )----------------------------------------------------------------------------(
  11. # )--                          INSTRUCTIONS                                  --(
  12. # )--  <OnDeathTeach: X, Y, [A, B, C]>                                       --(
  13. # )--  Use this notetag for Enemy note tags.                                 --(
  14. # )--  X - ID of the skill to teach                                          --(
  15. # )--  Y - Chance of learning it (0.0 - 1.0, 0.0 - being 0% chance and 1.0   --(
  16. # )--  being 100% chance to learn)                                           --(
  17. # )--  [A, B, C] - E.g. [1, 5, 6, 8, 9] - which classes could learn it.      --(
  18. # )----------------------------------------------------------------------------(
  19. # )--                          LICENSE INFO                                  --(
  20. # )--    http://mrtrivelvx.wordpress.com/terms-of-use/                       --(
  21. # )----------------------------------------------------------------------------(
  22.  
  23. module MrTS
  24.   module Skill_On_Kill
  25.     # )------------------------------------------------------------------------(
  26.     # )--  Should a dead member learn the skill?                             --(
  27.     # )------------------------------------------------------------------------(
  28.     TEACH_TO_DEAD_MEMBERS = false
  29.     LEARNT_TEXT = "%s learned %s from enemy!"
  30.   end
  31.  
  32.   # )--------------------------------------------------------------------------(
  33.   # )--  No touching!                                                        --(
  34.   # )--------------------------------------------------------------------------(
  35.   module Regex
  36.     REGEX_MAIN = /<ondeathteach:[ ]*(\d+),[ ]*(\d*\.*\d*),[ ]*\[*((\d*,*[ ]*)*)\]>/i
  37.     REGEX_ARRAY = /(\d+)/
  38.   end
  39. end
  40. # )----------------------------------------------------------------------------(
  41. # )--  Module: BattleManager                                                 --(
  42. # )----------------------------------------------------------------------------(
  43. module BattleManager
  44.   class << self ; alias mrts_process_victory process_victory ; end
  45.   # )--------------------------------------------------------------------------(
  46.   # )--  Overwrite Method: self.process_victory                              --(
  47.   # )--------------------------------------------------------------------------(
  48.   def self.process_victory
  49.     mrts_process_victory
  50.     gain_monster_skills
  51.   end
  52.  
  53.   # )--------------------------------------------------------------------------(
  54.   # )--  New Method: self.gain_monster_skills                                --(
  55.   # )--------------------------------------------------------------------------(
  56.   def self.gain_monster_skills
  57.     $game_troop.dead_members.each do |dm|
  58.       dm.enemy.note[MrTS::Regex::REGEX_MAIN]
  59.       temp_class_list = nil
  60.       temp_skill_id = nil
  61.       temp_chance = 0.0
  62.       if $1
  63.         temp_class_list = []
  64.         temp_skill_id = $1.to_i
  65.         temp_chance = $2.to_f
  66.         $3.scan(MrTS::Regex::REGEX_ARRAY).collect { |ele| temp_class_list.push(ele[0].to_i) }
  67.       end
  68.       actor_array = MrTS::Skill_On_Kill::TEACH_TO_DEAD_MEMBERS ? $game_party.battle_members : $game_party.alive_members
  69.       actor_array.each do |ac|
  70.         if rand < temp_chance && temp_class_list.include?(ac.class_id)
  71.           $game_message.add(sprintf(MrTS::Skill_On_Kill::LEARNT_TEXT, ac.name, $data_skills[temp_skill_id].name)) if !ac.skills.include?($data_skills[temp_skill_id])
  72.           ac.learn_skill(temp_skill_id)
  73.         end
  74.       end if temp_class_list.size > 0
  75.     end
  76.     wait_for_message
  77.   end
  78. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement