Advertisement
thiago_d_d

Skill Level

Jan 16th, 2013
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 4.21 KB | None | 0 0
  1. #==============================================================
  2. # http://thiagodd.blogspot.com.br/
  3. # [TSDA] Skill Level
  4. #   --> Version 1.0
  5. # by thiago_d_d
  6. #
  7. #--------------------------------------------------------------
  8. # * Features
  9. #--------------------------------------------------------------
  10. # + The hero Skills will have levels, so when the hero levels up
  11. #   the Skill levels up too, with ramdomly power.
  12. #
  13. #--------------------------------------------------------------
  14. # * Install
  15. #--------------------------------------------------------------
  16. # Put this script above Main.
  17. #
  18. #--------------------------------------------------------------
  19. # * Configuration
  20. #--------------------------------------------------------------
  21. # Change TSDA module below.
  22. #==============================================================
  23. module TSDA
  24.   #The maximum level of Skills
  25.   HABILITY_LEVEL_MAX = 99
  26.   #Value used in the damage formula
  27.   BASE_UP = 750
  28.   #Maximum number of levels the Skill gains per hero level up
  29.   #(It will be random, so the Skill will increase 1 to 5 levels)
  30.   LEVEL_UP = 5
  31. end
  32. #--------------------------------------------------------------
  33. class Game_Actor
  34.   alias old_initialize_ac initialize
  35.   def initialize(actor_id)
  36.     @skill_levels = []
  37.     old_initialize_ac(actor_id)
  38.   end
  39.   #------------------------------------------------------------
  40.   alias old_learn_skill learn_skill
  41.   def learn_skill(skill_id)
  42.     if skill_id > 0 and not skill_learn?(skill_id)
  43.       @skill_levels.push(0)
  44.     end
  45.     old_learn_skill(skill_id)
  46.   end
  47.   #------------------------------------------------------------
  48.   alias old_forget_skill forget_skill
  49.   def forget_skill(skill_id)
  50.     if @skills.include?(skill_id)
  51.       id = @skills.index(skill_id)
  52.       @skill_levels.delete_at(id)
  53.     end
  54.     old_forget_skill(skill_id)
  55.   end
  56.   #------------------------------------------------------------
  57.   alias old_exp exp=
  58.   def exp=(exp)
  59.     level = @level
  60.     old_exp(exp)
  61.     level_number = @level - level
  62.     if level_number > 0
  63.       if @skills.size > 0
  64.         while level_number > 0
  65.           level_number -= 1
  66.           for i in 0...@skill_levels.size
  67.             if @skill_levels[i] < TSDA::HABILITY_LEVEL_MAX
  68.               @skill_levels[i] += rand(TSDA::LEVEL_UP) + 1
  69.             end
  70.           end
  71.         end
  72.       end
  73.     end
  74.   end
  75.   #------------------------------------------------------------
  76.   def skill_level(skill_id)
  77.     id = @skills.index(skill_id)
  78.     return @skill_levels[id]
  79.   end
  80. end
  81. #--------------------------------------------------------------
  82. class Game_Battler
  83.   alias old_skill_effect skill_effect
  84.   def skill_effect(user,skill)
  85.     result = old_skill_effect(user,skill)
  86.     unless result.is_a?(Integer)
  87.       return result
  88.     end
  89.     unless self.damage.is_a?(String) && !user.is_a?(Game_Actor)
  90.       power = skill.power
  91.       n = user.skill_level(skill.id)
  92.       rate = 20
  93.       rate += (user.str * skill.str_f / 100)
  94.       rate += (user.dex * skill.dex_f / 100)
  95.       rate += (user.agi * skill.agi_f / 100)
  96.       rate += (user.int * skill.int_f / 100)
  97.       if self.damage < 0
  98.         self.damage -= power * n * rate / TSDA::BASE_UP
  99.       elsif self.damage > 0
  100.         self.damage += power * n * rate / TSDA::BASE_UP
  101.       end
  102.     end
  103.     return result
  104.   end
  105. end
  106. #--------------------------------------------------------------
  107. class Window_Skill
  108.   def draw_item(index)
  109.     skill = @data[index]
  110.     if @actor.skill_can_use?(skill.id)
  111.       self.contents.font.color = normal_color
  112.     else
  113.       self.contents.font.color = disabled_color
  114.     end
  115.     x = 4 + index % 2 * (288 + 32)
  116.     y = index / 2 * 32
  117.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  118.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  119.     bitmap = RPG::Cache.icon(skill.icon_name)
  120.     opacity = self.contents.font.color == normal_color ?
  121.     255 : 128
  122.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24),
  123.     opacity)
  124.     self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
  125.     self.contents.draw_text(x + 232, y, 48, 32,
  126.     "Lv:" + @actor.skill_level(skill.id).to_s,2)
  127.     self.contents.draw_text(x + 180, y, 48, 32,
  128.     skill.sp_cost.to_s, 2)
  129.   end
  130. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement