# )----------------------------------------------------------------------------( # )-- AUTHOR: Mr Trivel --( # )-- NAME: Enemies Teach Skill on Death --( # )-- CREATED: 2014-06-20 --( # )-- VERSION: 1.0a --( # )-- Idea by: Trickstette --( # )----------------------------------------------------------------------------( # )-- DESCRIPTION --( # )-- Enemies have a chance to teach skills to your actors after the battle.--( # )----------------------------------------------------------------------------( # )-- INSTRUCTIONS --( # )-- <OnDeathTeach: X, Y, [A, B, C]> --( # )-- Use this notetag for Enemy note tags. --( # )-- X - ID of the skill to teach --( # )-- Y - Chance of learning it (0.0 - 1.0, 0.0 - being 0% chance and 1.0 --( # )-- being 100% chance to learn) --( # )-- [A, B, C] - E.g. [1, 5, 6, 8, 9] - which classes could learn it. --( # )----------------------------------------------------------------------------( # )-- LICENSE INFO --( # )-- [url]http://mrtrivelvx.wordpress.com/terms-of-use/[/url] --( # )----------------------------------------------------------------------------( module MrTS module Skill_On_Kill # )------------------------------------------------------------------------( # )-- Should a dead member learn the skill? --( # )------------------------------------------------------------------------( TEACH_TO_DEAD_MEMBERS = false LEARNT_TEXT = "%s learned %s from enemy!" end # )--------------------------------------------------------------------------( # )-- No touching! --( # )--------------------------------------------------------------------------( module Regex REGEX_MAIN = /<ondeathteach:[ ]*(\d+),[ ]*(\d*\.*\d*),[ ]*\[*((\d*,*[ ]*)*)\]>/i REGEX_ARRAY = /(\d+)/ end end # )----------------------------------------------------------------------------( # )-- Module: BattleManager --( # )----------------------------------------------------------------------------( module BattleManager class << self ; alias mrts_process_victory process_victory ; end # )--------------------------------------------------------------------------( # )-- Overwrite Method: self.process_victory --( # )--------------------------------------------------------------------------( def self.process_victory mrts_process_victory gain_monster_skills end # )--------------------------------------------------------------------------( # )-- New Method: self.gain_monster_skills --( # )--------------------------------------------------------------------------( def self.gain_monster_skills $game_troop.dead_members.each do |dm| dm.enemy.note[MrTS::Regex::REGEX_MAIN] temp_class_list = nil temp_skill_id = nil temp_chance = 0.0 if $1 temp_class_list = [] temp_skill_id = $1.to_i temp_chance = $2.to_f $3.scan(MrTS::Regex::REGEX_ARRAY).collect { |ele| temp_class_list.push(ele[0].to_i) } end actor_array = MrTS::Skill_On_Kill::TEACH_TO_DEAD_MEMBERS ? $game_party.battle_members : $game_party.alive_members actor_array.each do |ac| if rand < temp_chance && temp_class_list.include?(ac.class_id) $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]) ac.learn_skill(temp_skill_id) end end if temp_class_list.size > 0 end wait_for_message end end