Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================
- # http://thiagodd.blogspot.com.br/
- # [TSDA] Skill Level
- # --> Version 1.0
- # by thiago_d_d
- #
- #--------------------------------------------------------------
- # * Features
- #--------------------------------------------------------------
- # + The hero Skills will have levels, so when the hero levels up
- # the Skill levels up too, with ramdomly power.
- #
- #--------------------------------------------------------------
- # * Install
- #--------------------------------------------------------------
- # Put this script above Main.
- #
- #--------------------------------------------------------------
- # * Configuration
- #--------------------------------------------------------------
- # Change TSDA module below.
- #==============================================================
- module TSDA
- #The maximum level of Skills
- HABILITY_LEVEL_MAX = 99
- #Value used in the damage formula
- BASE_UP = 750
- #Maximum number of levels the Skill gains per hero level up
- #(It will be random, so the Skill will increase 1 to 5 levels)
- LEVEL_UP = 5
- end
- #--------------------------------------------------------------
- class Game_Actor
- alias old_initialize_ac initialize
- def initialize(actor_id)
- @skill_levels = []
- old_initialize_ac(actor_id)
- end
- #------------------------------------------------------------
- alias old_learn_skill learn_skill
- def learn_skill(skill_id)
- if skill_id > 0 and not skill_learn?(skill_id)
- @skill_levels.push(0)
- end
- old_learn_skill(skill_id)
- end
- #------------------------------------------------------------
- alias old_forget_skill forget_skill
- def forget_skill(skill_id)
- if @skills.include?(skill_id)
- id = @skills.index(skill_id)
- @skill_levels.delete_at(id)
- end
- old_forget_skill(skill_id)
- end
- #------------------------------------------------------------
- alias old_exp exp=
- def exp=(exp)
- level = @level
- old_exp(exp)
- level_number = @level - level
- if level_number > 0
- if @skills.size > 0
- while level_number > 0
- level_number -= 1
- for i in 0...@skill_levels.size
- if @skill_levels[i] < TSDA::HABILITY_LEVEL_MAX
- @skill_levels[i] += rand(TSDA::LEVEL_UP) + 1
- end
- end
- end
- end
- end
- end
- #------------------------------------------------------------
- def skill_level(skill_id)
- id = @skills.index(skill_id)
- return @skill_levels[id]
- end
- end
- #--------------------------------------------------------------
- class Game_Battler
- alias old_skill_effect skill_effect
- def skill_effect(user,skill)
- result = old_skill_effect(user,skill)
- unless result.is_a?(Integer)
- return result
- end
- unless self.damage.is_a?(String) && !user.is_a?(Game_Actor)
- power = skill.power
- n = user.skill_level(skill.id)
- rate = 20
- rate += (user.str * skill.str_f / 100)
- rate += (user.dex * skill.dex_f / 100)
- rate += (user.agi * skill.agi_f / 100)
- rate += (user.int * skill.int_f / 100)
- if self.damage < 0
- self.damage -= power * n * rate / TSDA::BASE_UP
- elsif self.damage > 0
- self.damage += power * n * rate / TSDA::BASE_UP
- end
- end
- return result
- end
- end
- #--------------------------------------------------------------
- class Window_Skill
- def draw_item(index)
- skill = @data[index]
- if @actor.skill_can_use?(skill.id)
- self.contents.font.color = normal_color
- else
- self.contents.font.color = disabled_color
- end
- x = 4 + index % 2 * (288 + 32)
- y = index / 2 * 32
- rect = Rect.new(x, y, self.width / @column_max - 32, 32)
- self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
- bitmap = RPG::Cache.icon(skill.icon_name)
- opacity = self.contents.font.color == normal_color ?
- 255 : 128
- self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24),
- opacity)
- self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
- self.contents.draw_text(x + 232, y, 48, 32,
- "Lv:" + @actor.skill_level(skill.id).to_s,2)
- self.contents.draw_text(x + 180, y, 48, 32,
- skill.sp_cost.to_s, 2)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement