View difference between Paste ID: RJWwwLy4 and C9cz0a41
SHOW: | | - or go back to the newest paste.
1
=begin
2
Equipment Skills by Level
3
by Fomar0153
4-
Version 1.0
4+
Version 1.1
5
----------------------
6
Notes
7
----------------------
8
Requires an AP System if you want characters to
9
learn skills pernamently.
10
Scripts should be in this order
11
Individual Equipment
12
Equipment Levels Up
13
Equipment Skills
14
Equipment Skills by Level
15
If using an AP script it should be above this script.
16
----------------------
17
Instructions
18
----------------------
19
Follow the instructions in all the other script and then
20
edit the Equipment_Skills module below to suit your needs.
21
----------------------
22
Change Log
23
----------------------
24
1.0 -> 1.1 Added a single character (@) to fix a bug where you 
25
           created new equipment when changing equipment.
26
----------------------
27
Known bugs
28
----------------------
29
None
30
=end
31
module Equipment_Skills
32
 
33
  Weapons = []
34
  # Add weapon skills in this format
35
  # Weapons[weapon_id, level] = [[level,skillid], [level,skillid]]
36
  Weapons[1] = [[1,8],[5,9]]
37
  
38
  Armors = []
39
  # Add weapon skills in this format
40
  # Armors[armor_id, level] = [[level,skillid],[level,skillid]]
41
  Armors[1] = [[1,10]]
42
 
43-
    return unless trade_item_with_party(item, equips[slot_id])
43+
44
45
class Game_Actor
46
  
47
  def change_equip(slot_id, item)
48
    return unless trade_item_with_party(item, @equips[slot_id])
49
    if equips[slot_id].is_a?(RPG::Weapon)
50
      unless Equipment_Skills::Weapons[equips[slot_id].id] == nil
51
        for skill in Equipment_Skills::Weapons[equips[slot_id].id]
52
          if Equipment_Skills::Learn_Skills
53
            if @ap[skill[1]] == nil
54
              @ap[skill[1]] = 0
55
            end
56
            unless @ap[skill[1]] >= Equipment_Skills.get_ap_cost(skill[1])
57
              forget_skill(skill[1])
58
            end
59
          else
60
            forget_skill(skill[1])
61
          end
62
        end
63
      end
64
    end
65
    if equips[slot_id].is_a?(RPG::Armor)
66
      unless Equipment_Skills::Armors[equips[slot_id].id] == nil
67
        for skill in Equipment_Skills::Armors[equips[slot_id].id]
68
          if Equipment_Skills::Learn_Skills
69
            if @ap[skill[1]] == nil
70
              @ap[skill[1]] = 0
71
            end
72
            unless @ap[skill[1]] >= Equipment_Skills.get_ap_cost(skill[1])
73
              forget_skill(skill[1])
74
            end
75
          else
76
            forget_skill(skill[1])
77
          end
78
        end
79
      end
80
    end
81
    return if item && equip_slots[slot_id] != item.etype_id
82
    if item.nil?
83
      @equips[slot_id] = Game_CustomEquip.new
84
    else
85
      @equips[slot_id] = item
86
    end
87
    refresh
88
  end
89
  
90
  def gain_ap(ap)
91
    if Equipment_Skills::Learn_Skills
92
      for item in @equips
93
        if item.is_weapon?
94
          unless Equipment_Skills::Weapons[item.id] == nil
95
            for skill in Equipment_Skills::Weapons[item.id]
96
              if @ap[skill[1]] == nil
97
                @ap[skill[1]] = 0
98
              end
99
              last_ap = @ap[skill[1]]
100
              @ap[skill[1]] += ap if skill[0] <= item.level
101
              if last_ap < Equipment_Skills.get_ap_cost(skill[1]) and Equipment_Skills.get_ap_cost(skill[1]) <= @ap[skill[1]]
102
                SceneManager.scene.add_message(actor.name + " learns " + $data_skills[skill[1]].name + ".")
103
              end
104
            end
105
          end
106
        end
107
        if item.is_armor?
108
          unless Equipment_Skills::Armors[item.id] == nil
109
            for skill in Equipment_Skills::Armors[item.id]
110
              if @ap[skill[1]] == nil
111
                @ap[skill[1]] = 0
112
              end
113
              last_ap = @ap[skill[1]]
114
              @ap[skill[1]] += ap if skill[0] <= item.level
115
              if last_ap < Equipment_Skills.get_ap_cost(skill[1]) and Equipment_Skills.get_ap_cost(skill[1]) <= @ap[skill[1]]
116
                SceneManager.scene.add_message(actor.name + " learns " + $data_skills[skill[1]].name + ".")
117
              end
118
            end
119
          end
120
        end
121
      end
122
    end
123
  end
124
  
125
  def refresh
126
    eqskills_refresh
127
    for item in @equips
128
      if item.is_weapon?
129
        unless Equipment_Skills::Weapons[item.id] == nil
130
          for skill in Equipment_Skills::Weapons[item.id]
131
            learn_skill(skill[1]) if skill[0] <= item.level
132
          end
133
        end
134
      end
135
      if item.is_armor?
136
        unless Equipment_Skills::Armors[item.id] == nil
137
          for skill in Equipment_Skills::Armors[item.id]
138
            learn_skill(skill[1]) if skill[0] <= item.level
139
          end
140
        end
141
      end
142
    end
143
    # relearn any class skills you may have forgotten
144
    self.class.learnings.each do |learning|
145
      learn_skill(learning.skill_id) if learning.level <= @level
146
    end
147
  end
148
  
149
end
150
151
class Game_CustomEquip < Game_BaseItem
152
  
153
  def level
154
    return @level
155
  end
156
  
157
end
158
159
160
class Window_EquipStatus < Window_Base
161
  
162
  def refresh(item = nil)
163
    eqskills_refresh
164
    contents.clear
165
    draw_actor_name(@actor, 4, 0) if @actor
166
    6.times {|i| draw_item(0, line_height * (1 + i), 2 + i) }
167
      unless item == nil
168
      if item.is_a?(RPG::Weapon)
169
        unless Equipment_Skills::Weapons[item.id] == nil
170
          skills = Equipment_Skills::Weapons[item.id]
171
        end
172
      end
173
      if item.is_a?(RPG::Armor)
174
        unless Equipment_Skills::Armors[item.id] == nil
175
          skills = Equipment_Skills::Armors[item.id]
176
        end
177
      end
178
      unless skills == nil
179
        change_color(normal_color)
180
        draw_text(4, 168, width, line_height, "Equipment Skills")
181
        change_color(system_color)
182
        i = 1
183
        for skill in skills
184
          draw_text(4, 168 + 24 * i, width, line_height, $data_skills[skill[1]].name + " (" + skill[0].to_s + ")")
185
          if Equipment_Skills::Learn_Skills and @actor.ap[skill[1]] == nil
186
            @actor.ap[skill[1]] = 0
187
          end
188
          i = i + 1
189
          if Equipment_Skills::Learn_Skills
190
            draw_current_and_max_values(4, 168 + 24 * i, width - 50, [@actor.ap[skill[1]],Equipment_Skills.get_ap_cost(skill[1])].min, Equipment_Skills.get_ap_cost(skill[1]), system_color, system_color)
191
            i = i + 1
192
          end
193
        end
194
      end
195
    end
196
  end
197
  
198
end