• Anmelden

1

Mittwoch, 14. Oktober 2009, 11:40

Animierte Battler

Hallo liebe Community,
Ich nutze ein SideviewKS (von einem Kumpel editiertes StandardKS auf Animationen basierende Angriffe) und finde dieses Script etwas "eintnig".
ICh mchte das sich die ganzen Battler etwas bewegen, also das die nicht einfach nur platt dastehen.
hier mal die 3 Battlescripts
Spoiler: battler1

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
#============================================================================== 
# %u25A0 Game_Battler (%u5206%u5272%u5B9A%u7FA9 1) 
#------------------------------------------------------------------------------ 
# %u3000%u30D0%u30C8%u30E9%u30FC%u3092%u6271%u3046%u30AF%u30E9%u30B9%u3067%u3059%u3002%u3053%u306E%u30AF%u30E9%u30B9%u306F Game_Actor %u30AF%u30E9%u30B9%u3068 Game_Enemy %u30AF%u30E9 
# %u30B9%u306E%u30B9%u30FC%u30D1%u30FC%u30AF%u30E9%u30B9%u3068%u3057%u3066%u4F7F%u7528%u3055%u308C%u307E%u3059%u3002 
#============================================================================== 
 
class Game_Battler 
#-------------------------------------------------------------------------- 
# %u25CF %u516C%u958B%u30A4%u30F3%u30B9%u30BF%u30F3%u30B9%u5909%u6570 
#-------------------------------------------------------------------------- 
attr_reader :battler_name # %u30D0%u30C8%u30E9%u30FC %u30D5%u30A1%u30A4%u30EB%u540D 
attr_reader :battler_hue # %u30D0%u30C8%u30E9%u30FC %u8272%u76F8 
attr_reader :hp # HP 
attr_reader :sp # SP 
attr_reader :states # %u30B9%u30C6%u30FC%u30C8 
attr_accessor :hidden # %u96A0%u308C%u30D5%u30E9%u30B0 
attr_accessor :immortal # %u4E0D%u6B7B%u8EAB%u30D5%u30E9%u30B0 
attr_accessor :damage_pop # %u30C0%u30E1%u30FC%u30B8%u8868%u793A%u30D5%u30E9%u30B0 
attr_accessor :damage # %u30C0%u30E1%u30FC%u30B8%u5024 
attr_accessor :critical # %u30AF%u30EA%u30C6%u30A3%u30AB%u30EB%u30D5%u30E9%u30B0 
attr_accessor :animation_id # %u30A2%u30CB%u30E1%u30FC%u30B7%u30E7%u30F3 ID 
attr_accessor :animation_hit # %u30A2%u30CB%u30E1%u30FC%u30B7%u30E7%u30F3 %u30D2%u30C3%u30C8%u30D5%u30E9%u30B0 
attr_accessor :white_flash # %u767D%u30D5%u30E9%u30C3%u30B7%u30E5%u30D5%u30E9%u30B0 
attr_accessor :blink # %u660E%u6EC5%u30D5%u30E9%u30B0 
#-------------------------------------------------------------------------- 
# %u25CF %u30AA%u30D6%u30B8%u30A7%u30AF%u30C8%u521D%u671F%u5316 
#-------------------------------------------------------------------------- 
def initialize 
@battler_name = "" 
@battler_hue = 0 
@hp = 0 
@sp = 0 
@states = [] 
@states_turn = {} 
@maxhp_plus = 0 
@maxsp_plus = 0 
@str_plus = 0 
@dex_plus = 0 
@agi_plus = 0 
@int_plus = 0 
@hidden = false 
@immortal = false 
@damage_pop = false 
@damage = nil 
@critical = false 
@animation_id = 0 
@animation_hit = false 
@white_flash = false 
@blink = false 
@current_action = Game_BattleAction.new 
end 
#-------------------------------------------------------------------------- 
# %u25CF MaxHP %u306E%u53D6%u5F97 
#-------------------------------------------------------------------------- 
def maxhp 
n = [[base_maxhp   @maxhp_plus, 1].max, 999999].min 
for i in @states 
n *= $data_states[i].maxhp_rate / 100.0 
end 
n = [[Integer(n), 1].max, 999999].min 
return n 
end 
#-------------------------------------------------------------------------- 
# %u25CF MaxSP %u306E%u53D6%u5F97 
#-------------------------------------------------------------------------- 
def maxsp 
n = [[base_maxsp   @maxsp_plus, 0].max, 9999].min 
for i in @states 
n *= $data_states[i].maxsp_rate / 100.0 
end 
n = [[Integer(n), 0].max, 9999].min 
return n 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u8155%u529B%u306E%u53D6%u5F97 
#-------------------------------------------------------------------------- 
def str 
n = [[base_str   @str_plus, 1].max, 999].min 
for i in @states 
n *= $data_states[i].str_rate / 100.0 
end 
n = [[Integer(n), 1].max, 999].min 
return n 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u5668%u7528%u3055%u306E%u53D6%u5F97 
#-------------------------------------------------------------------------- 
def dex 
n = [[base_dex   @dex_plus, 1].max, 999].min 
for i in @states 
n *= $data_states[i].dex_rate / 100.0 
end 
n = [[Integer(n), 1].max, 999].min 
return n 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u7D20%u65E9%u3055%u306E%u53D6%u5F97 
#-------------------------------------------------------------------------- 
def agi 
n = [[base_agi   @agi_plus, 1].max, 999].min 
for i in @states 
n *= $data_states[i].agi_rate / 100.0 
end 
n = [[Integer(n), 1].max, 999].min 
return n 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u9B54%u529B%u306E%u53D6%u5F97 
#-------------------------------------------------------------------------- 
def int 
n = [[base_int   @int_plus, 1].max, 999].min 
for i in @states 
n *= $data_states[i].int_rate / 100.0 
end 
n = [[Integer(n), 1].max, 999].min 
return n 
end 
#-------------------------------------------------------------------------- 
# %u25CF MaxHP %u306E%u8A2D%u5B9A 
# maxhp : %u65B0%u3057%u3044 MaxHP 
#-------------------------------------------------------------------------- 
def maxhp=(maxhp) 
@maxhp_plus  = maxhp - self.maxhp 
@maxhp_plus = [[@maxhp_plus, -9999].max, 9999].min 
@hp = [@hp, self.maxhp].min 
end 
#-------------------------------------------------------------------------- 
# %u25CF MaxSP %u306E%u8A2D%u5B9A 
# maxsp : %u65B0%u3057%u3044 MaxSP 
#-------------------------------------------------------------------------- 
def maxsp=(maxsp) 
@maxsp_plus  = maxsp - self.maxsp 
@maxsp_plus = [[@maxsp_plus, -9999].max, 9999].min 
@sp = [@sp, self.maxsp].min 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u8155%u529B%u306E%u8A2D%u5B9A 
# str : %u65B0%u3057%u3044%u8155%u529B 
#-------------------------------------------------------------------------- 
def str=(str) 
@str_plus  = str - self.str 
@str_plus = [[@str_plus, -999].max, 999].min 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u5668%u7528%u3055%u306E%u8A2D%u5B9A 
# dex : %u65B0%u3057%u3044%u5668%u7528%u3055 
#-------------------------------------------------------------------------- 
def dex=(dex) 
@dex_plus  = dex - self.dex 
@dex_plus = [[@dex_plus, -999].max, 999].min 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u7D20%u65E9%u3055%u306E%u8A2D%u5B9A 
# agi : %u65B0%u3057%u3044%u7D20%u65E9%u3055 
#-------------------------------------------------------------------------- 
def agi=(agi) 
@agi_plus  = agi - self.agi 
@agi_plus = [[@agi_plus, -999].max, 999].min 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u9B54%u529B%u306E%u8A2D%u5B9A 
# int : %u65B0%u3057%u3044%u9B54%u529B 
#-------------------------------------------------------------------------- 
def int=(int) 
@int_plus  = int - self.int 
@int_plus = [[@int_plus, -999].max, 999].min 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u547D%u4E2D%u7387%u306E%u53D6%u5F97 
#-------------------------------------------------------------------------- 
def hit 
n = 100 
for i in @states 
n *= $data_states[i].hit_rate / 100.0 
end 
return Integer(n) 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u653B%u6483%u529B%u306E%u53D6%u5F97 
#-------------------------------------------------------------------------- 
def atk 
n = base_atk 
for i in @states 
n *= $data_states[i].atk_rate / 100.0 
end 
return Integer(n) 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u7269%u7406%u9632%u5FA1%u306E%u53D6%u5F97 
#-------------------------------------------------------------------------- 
def pdef 
n = base_pdef 
for i in @states 
n *= $data_states[i].pdef_rate / 100.0 
end 
return Integer(n) 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u9B54%u6CD5%u9632%u5FA1%u306E%u53D6%u5F97 
#-------------------------------------------------------------------------- 
def mdef 
n = base_mdef 
for i in @states 
n *= $data_states[i].mdef_rate / 100.0 
end 
return Integer(n) 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u56DE%u907F%u4FEE%u6B63%u306E%u53D6%u5F97 
#-------------------------------------------------------------------------- 
def eva 
n = base_eva 
for i in @states 
n  = $data_states[i].eva 
end 
return n 
end 
#-------------------------------------------------------------------------- 
# %u25CF HP %u306E%u5909%u66F4 
# hp : %u65B0%u3057%u3044 HP 
#-------------------------------------------------------------------------- 
def hp=(hp) 
@hp = [[hp, maxhp].min, 0].max 
# %u6226%u95D8%u4E0D%u80FD%u3092%u4ED8%u52A0%u307E%u305F%u306F%u89E3%u9664 
for i in 1...$data_states.size 
if $data_states[i].zero_hp 
if self.dead? 
add_state(i) 
else 
remove_state(i) 
end 
end 
end 
end 
#-------------------------------------------------------------------------- 
# %u25CF SP %u306E%u5909%u66F4 
# sp : %u65B0%u3057%u3044 SP 
#-------------------------------------------------------------------------- 
def sp=(sp) 
@sp = [[sp, maxsp].min, 0].max 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u5168%u56DE%u5FA9 
#-------------------------------------------------------------------------- 
def recover_all 
@hp = maxhp 
@sp = maxsp 
for i in @states.clone 
remove_state(i) 
end 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u30AB%u30EC%u30F3%u30C8%u30A2%u30AF%u30B7%u30E7%u30F3%u306E%u53D6%u5F97 
#-------------------------------------------------------------------------- 
def current_action 
return @current_action 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u30A2%u30AF%u30B7%u30E7%u30F3%u30B9%u30D4%u30FC%u30C9%u306E%u6C7A%u5B9A 
#-------------------------------------------------------------------------- 
def make_action_speed 
@current_action.speed = agi   rand(10   agi / 4) 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u6226%u95D8%u4E0D%u80FD%u5224%u5B9A 
#-------------------------------------------------------------------------- 
def dead? 
return (@hp == 0 and not @immortal) 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u5B58%u5728%u5224%u5B9A 
#-------------------------------------------------------------------------- 
def exist? 
return (not @hidden and (@hp > 0 or @immortal)) 
end 
#-------------------------------------------------------------------------- 
# %u25CF HP 0 %u5224%u5B9A 
#-------------------------------------------------------------------------- 
def hp0? 
return (not @hidden and @hp == 0) 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u30B3%u30DE%u30F3%u30C9%u5165%u529B%u53EF%u80FD%u5224%u5B9A 
#-------------------------------------------------------------------------- 
def inputable? 
return (not @hidden and restriction <= 1) 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u884C%u52D5%u53EF%u80FD%u5224%u5B9A 
#-------------------------------------------------------------------------- 
def movable? 
return (not @hidden and restriction < 4) 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u9632%u5FA1%u4E2D%u5224%u5B9A 
#-------------------------------------------------------------------------- 
def guarding? 
return (@current_action.kind == 0 and @current_action.basic == 1) 
end 
#-------------------------------------------------------------------------- 
# %u25CF %u4F11%u6B62%u4E2D%u5224%u5B9A 
#-------------------------------------------------------------------------- 
def resting? 
return (@current_action.kind == 0 and @current_action.basic == 3) 
end 
end
zum Lesen den Text mit der Maus markieren

Spoiler: battler2

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
#==============================================================================
# %u25A0 Game_Battler (%u5206%u5272%u5B9A%u7FA9 2)
#------------------------------------------------------------------------------
# %u3000%u30D0%u30C8%u30E9%u30FC%u3092%u6271%u3046%u30AF%u30E9%u30B9%u3067%u3059%u3002%u3053%u306E%u30AF%u30E9%u30B9%u306F Game_Actor %u30AF%u30E9%u30B9%u3068 Game_Enemy %u30AF%u30E9
# %u30B9%u306E%u30B9%u30FC%u30D1%u30FC%u30AF%u30E9%u30B9%u3068%u3057%u3066%u4F7F%u7528%u3055%u308C%u307E%u3059%u3002
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30C6%u30FC%u30C8%u306E%u691C%u67FB
  #     state_id : %u30B9%u30C6%u30FC%u30C8 ID
  #--------------------------------------------------------------------------
  def state?(state_id)
    # %u8A72%u5F53%u3059%u308B%u30B9%u30C6%u30FC%u30C8%u304C%u4ED8%u52A0%u3055%u308C%u3066%u3044%u308C%u3070 true %u3092%u8FD4%u3059
    return @states.include?(state_id)
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30C6%u30FC%u30C8%u304C%u30D5%u30EB%u304B%u3069%u3046%u304B%u306E%u5224%u5B9A
  #     state_id : %u30B9%u30C6%u30FC%u30C8 ID
  #--------------------------------------------------------------------------
  def state_full?(state_id)
    # %u8A72%u5F53%u3059%u308B%u30B9%u30C6%u30FC%u30C8%u304C%u4ED8%u52A0%u3055%u308C%u3066%u3044%u306A%u3051%u3070 false %u3092%u8FD4%u3059
    unless self.state?(state_id)
      return false
    end
    # %u6301%u7D9A%u30BF%u30FC%u30F3%u6570%u304C -1 (%u30AA%u30FC%u30C8%u30B9%u30C6%u30FC%u30C8) %u306A%u3089 true %u3092%u8FD4%u3059
    if @states_turn[state_id] == -1
      return true
    end
    # %u6301%u7D9A%u30BF%u30FC%u30F3%u6570%u304C%u81EA%u7136%u89E3%u9664%u306E%u6700%u4F4E%u30BF%u30FC%u30F3%u6570%u3068%u540C%u3058%u306A%u3089 true %u3092%u8FD4%u3059
    return @states_turn[state_id] == $data_states[state_id].hold_turn
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30C6%u30FC%u30C8%u306E%u4ED8%u52A0
  #     state_id : %u30B9%u30C6%u30FC%u30C8 ID
  #     force    : %u5F37%u5236%u4ED8%u52A0%u30D5%u30E9%u30B0 (%u30AA%u30FC%u30C8%u30B9%u30C6%u30FC%u30C8%u306E%u51E6%u7406%u3067%u4F7F%u7528)
  #--------------------------------------------------------------------------
  def add_state(state_id, force = false)
    # %u7121%u52B9%u306A%u30B9%u30C6%u30FC%u30C8%u306E%u5834%u5408
    if $data_states[state_id] == nil
      # %u30E1%u30BD%u30C3%u30C9%u7D42%u4E86
      return
    end
    # %u5F37%u5236%u4ED8%u52A0%u3067%u306F%u306A%u3044%u5834%u5408
    unless force
      # %u65E2%u5B58%u306E%u30B9%u30C6%u30FC%u30C8%u306E%u30EB%u30FC%u30D7
      for i in @states
        # %u65B0%u3057%u3044%u30B9%u30C6%u30FC%u30C8%u304C%u65E2%u5B58%u306E%u30B9%u30C6%u30FC%u30C8%u306E%u30B9%u30C6%u30FC%u30C8%u5909%u5316 (-) %u306B%u542B%u307E%u308C%u3066%u304A%u308A%u3001
        # %u305D%u306E%u30B9%u30C6%u30FC%u30C8%u304C%u65B0%u3057%u3044%u30B9%u30C6%u30FC%u30C8%u306E%u30B9%u30C6%u30FC%u30C8%u5909%u5316 (-) %u306B%u306F%u542B%u307E%u308C%u306A%u3044%u5834%u5408
        # (ex : %u6226%u95D8%u4E0D%u80FD%u306E%u3068%u304D%u306B%u6BD2%u3092%u4ED8%u52A0%u3057%u3088%u3046%u3068%u3057%u305F%u5834%u5408)
        if $data_states[i].minus_state_set.include?(state_id) and
           not $data_states[state_id].minus_state_set.include?(i)
          # %u30E1%u30BD%u30C3%u30C9%u7D42%u4E86
          return
        end
      end
    end
    # %u3053%u306E%u30B9%u30C6%u30FC%u30C8%u304C%u4ED8%u52A0%u3055%u308C%u3066%u3044%u306A%u3044%u5834%u5408
    unless state?(state_id)
      # %u30B9%u30C6%u30FC%u30C8 ID %u3092 @states %u914D%u5217%u306B%u8FFD%u52A0
      @states.push(state_id)
      # %u30AA%u30D7%u30B7%u30E7%u30F3 [HP 0 %u306E%u72B6%u614B%u3068%u307F%u306A%u3059] %u304C%u6709%u52B9%u306E%u5834%u5408
      if $data_states[state_id].zero_hp
        # HP %u3092 0 %u306B%u5909%u66F4
        @hp = 0
      end
      # %u5168%u30B9%u30C6%u30FC%u30C8%u306E%u30EB%u30FC%u30D7
      for i in 1...$data_states.size
        # %u30B9%u30C6%u30FC%u30C8%u5909%u5316 ( ) %u51E6%u7406
        if $data_states[state_id].plus_state_set.include?(i)
          add_state(i)
        end
        # %u30B9%u30C6%u30FC%u30C8%u5909%u5316 (-) %u51E6%u7406
        if $data_states[state_id].minus_state_set.include?(i)
          remove_state(i)
        end
      end
      # %u30EC%u30FC%u30C6%u30A3%u30F3%u30B0%u306E%u5927%u304D%u3044%u9806 (%u540C%u5024%u306E%u5834%u5408%u306F%u5236%u7D04%u306E%u5F37%u3044%u9806) %u306B%u4E26%u3073%u66FF%u3048
      @states.sort! do |a, b|
        state_a = $data_states[a]
        state_b = $data_states[b]
        if state_a.rating > state_b.rating
          -1
        elsif state_a.rating < state_b.rating
           1
        elsif state_a.restriction > state_b.restriction
          -1
        elsif state_a.restriction < state_b.restriction
           1
        else
          a <=> b
        end
      end
    end
    # %u5F37%u5236%u4ED8%u52A0%u306E%u5834%u5408
    if force
      # %u81EA%u7136%u89E3%u9664%u306E%u6700%u4F4E%u30BF%u30FC%u30F3%u6570%u3092 -1 (%u7121%u52B9) %u306B%u8A2D%u5B9A
      @states_turn[state_id] = -1
    end
    # %u5F37%u5236%u4ED8%u52A0%u3067%u306F%u306A%u3044%u5834%u5408
    unless  @states_turn[state_id] == -1
      # %u81EA%u7136%u89E3%u9664%u306E%u6700%u4F4E%u30BF%u30FC%u30F3%u6570%u3092%u8A2D%u5B9A
      @states_turn[state_id] = $data_states[state_id].hold_turn
    end
    # %u884C%u52D5%u4E0D%u80FD%u306E%u5834%u5408
    unless movable?
      # %u30A2%u30AF%u30B7%u30E7%u30F3%u3092%u30AF%u30EA%u30A2
      @current_action.clear
    end
    # HP %u304A%u3088%u3073 SP %u306E%u6700%u5927%u5024%u30C1%u30A7%u30C3%u30AF
    @hp = [@hp, self.maxhp].min
    @sp = [@sp, self.maxsp].min
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30C6%u30FC%u30C8%u306E%u89E3%u9664
  #     state_id : %u30B9%u30C6%u30FC%u30C8 ID
  #     force    : %u5F37%u5236%u89E3%u9664%u30D5%u30E9%u30B0 (%u30AA%u30FC%u30C8%u30B9%u30C6%u30FC%u30C8%u306E%u51E6%u7406%u3067%u4F7F%u7528)
  #--------------------------------------------------------------------------
  def remove_state(state_id, force = false)
    # %u3053%u306E%u30B9%u30C6%u30FC%u30C8%u304C%u4ED8%u52A0%u3055%u308C%u3066%u3044%u308B%u5834%u5408
    if state?(state_id)
      # %u5F37%u5236%u4ED8%u52A0%u3055%u308C%u305F%u30B9%u30C6%u30FC%u30C8%u3067%u3001%u304B%u3064%u89E3%u9664%u304C%u5F37%u5236%u3067%u306F%u306A%u3044%u5834%u5408
      if @states_turn[state_id] == -1 and not force
        # %u30E1%u30BD%u30C3%u30C9%u7D42%u4E86
        return
      end
      # %u73FE%u5728%u306E HP %u304C 0 %u304B%u3064 %u30AA%u30D7%u30B7%u30E7%u30F3 [HP 0 %u306E%u72B6%u614B%u3068%u307F%u306A%u3059] %u304C%u6709%u52B9%u306E%u5834%u5408
      if @hp == 0 and $data_states[state_id].zero_hp
        # %u307B%u304B%u306B [HP 0 %u306E%u72B6%u614B%u3068%u307F%u306A%u3059] %u30B9%u30C6%u30FC%u30C8%u304C%u3042%u308B%u304B%u3069%u3046%u304B%u5224%u5B9A
        zero_hp = false
        for i in @states
          if i != state_id and $data_states[i].zero_hp
            zero_hp = true
          end
        end
        # %u6226%u95D8%u4E0D%u80FD%u3092%u89E3%u9664%u3057%u3066%u3088%u3051%u308C%u3070%u3001HP %u3092 1 %u306B%u5909%u66F4
        if zero_hp == false
          @hp = 1
        end
      end
      # %u30B9%u30C6%u30FC%u30C8 ID %u3092 @states %u914D%u5217%u304A%u3088%u3073 @states_turn %u30CF%u30C3%u30B7%u30E5%u304B%u3089%u524A%u9664
      @states.delete(state_id)
      @states_turn.delete(state_id)
    end
    # HP %u304A%u3088%u3073 SP %u306E%u6700%u5927%u5024%u30C1%u30A7%u30C3%u30AF
    @hp = [@hp, self.maxhp].min
    @sp = [@sp, self.maxsp].min
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30C6%u30FC%u30C8%u306E%u30A2%u30CB%u30E1%u30FC%u30B7%u30E7%u30F3 ID %u53D6%u5F97
  #--------------------------------------------------------------------------
  def state_animation_id
    # %u30B9%u30C6%u30FC%u30C8%u304C%u3072%u3068%u3064%u3082%u4ED8%u52A0%u3055%u308C%u3066%u3044%u306A%u3044%u5834%u5408
    if @states.size == 0
      return 0
    end
    # %u30EC%u30FC%u30C6%u30A3%u30F3%u30B0%u6700%u5927%u306E%u30B9%u30C6%u30FC%u30C8%u306E%u30A2%u30CB%u30E1%u30FC%u30B7%u30E7%u30F3 ID %u3092%u8FD4%u3059
    return $data_states[@states[0]].animation_id
  end
  #--------------------------------------------------------------------------
  # %u25CF %u5236%u7D04%u306E%u53D6%u5F97
  #--------------------------------------------------------------------------
  def restriction
    restriction_max = 0
    # %u73FE%u5728%u4ED8%u52A0%u3055%u308C%u3066%u3044%u308B%u30B9%u30C6%u30FC%u30C8%u304B%u3089%u6700%u5927%u306E restriction %u3092%u53D6%u5F97
    for i in @states
      if $data_states[i].restriction >= restriction_max
        restriction_max = $data_states[i].restriction
      end
    end
    return restriction_max
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30C6%u30FC%u30C8 [EXP %u3092%u7372%u5F97%u3067%u304D%u306A%u3044] %u5224%u5B9A
  #--------------------------------------------------------------------------
  def cant_get_exp?
    for i in @states
      if $data_states[i].cant_get_exp
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30C6%u30FC%u30C8 [%u653B%u6483%u3092%u56DE%u907F%u3067%u304D%u306A%u3044] %u5224%u5B9A
  #--------------------------------------------------------------------------
  def cant_evade?
    for i in @states
      if $data_states[i].cant_evade
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30C6%u30FC%u30C8 [%u30B9%u30EA%u30C3%u30D7%u30C0%u30E1%u30FC%u30B8] %u5224%u5B9A
  #--------------------------------------------------------------------------
  def slip_damage?
    for i in @states
      if $data_states[i].slip_damage
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30D0%u30C8%u30EB%u7528%u30B9%u30C6%u30FC%u30C8%u306E%u89E3%u9664 (%u30D0%u30C8%u30EB%u7D42%u4E86%u6642%u306B%u547C%u3073%u51FA%u3057)
  #--------------------------------------------------------------------------
  def remove_states_battle
    for i in @states.clone
      if $data_states[i].battle_only
        remove_state(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30C6%u30FC%u30C8%u81EA%u7136%u89E3%u9664 (%u30BF%u30FC%u30F3%u3054%u3068%u306B%u547C%u3073%u51FA%u3057)
  #--------------------------------------------------------------------------
  def remove_states_auto
    for i in @states_turn.keys.clone
      if @states_turn[i] > 0
        @states_turn[i] -= 1
      elsif rand(100) < $data_states[i].auto_release_prob
        remove_state(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30C6%u30FC%u30C8%u885D%u6483%u89E3%u9664 (%u7269%u7406%u30C0%u30E1%u30FC%u30B8%u3054%u3068%u306B%u547C%u3073%u51FA%u3057)
  #--------------------------------------------------------------------------
  def remove_states_shock
    for i in @states.clone
      if rand(100) < $data_states[i].shock_release_prob
        remove_state(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30C6%u30FC%u30C8%u5909%u5316 ( ) %u306E%u9069%u7528
  #     plus_state_set  : %u30B9%u30C6%u30FC%u30C8%u5909%u5316 ( )
  #--------------------------------------------------------------------------
  def states_plus(plus_state_set)
    # %u6709%u52B9%u30D5%u30E9%u30B0%u3092%u30AF%u30EA%u30A2
    effective = false
    # %u30EB%u30FC%u30D7 (%u4ED8%u52A0%u3059%u308B%u30B9%u30C6%u30FC%u30C8)
    for i in plus_state_set
      # %u3053%u306E%u30B9%u30C6%u30FC%u30C8%u304C%u9632%u5FA1%u3055%u308C%u3066%u3044%u306A%u3044%u5834%u5408
      unless self.state_guard?(i)
        # %u3053%u306E%u30B9%u30C6%u30FC%u30C8%u304C%u30D5%u30EB%u3067%u306A%u3051%u308C%u3070%u6709%u52B9%u30D5%u30E9%u30B0%u3092%u30BB%u30C3%u30C8
        effective |= self.state_full?(i) == false
        # %u30B9%u30C6%u30FC%u30C8%u304C [%u62B5%u6297%u3057%u306A%u3044] %u306E%u5834%u5408
        if $data_states[i].nonresistance
          # %u30B9%u30C6%u30FC%u30C8%u5909%u5316%u30D5%u30E9%u30B0%u3092%u30BB%u30C3%u30C8
          @state_changed = true
          # %u30B9%u30C6%u30FC%u30C8%u3092%u4ED8%u52A0
          add_state(i)
        # %u3053%u306E%u30B9%u30C6%u30FC%u30C8%u304C%u30D5%u30EB%u3067%u306F%u306A%u3044%u5834%u5408
        elsif self.state_full?(i) == false
          # %u30B9%u30C6%u30FC%u30C8%u6709%u52B9%u5EA6%u3092%u78BA%u7387%u306B%u5909%u63DB%u3057%u3001%u4E71%u6570%u3068%u6BD4%u8F03
          if rand(100) < [0,100,80,60,40,20,0][self.state_ranks[i]]
            # %u30B9%u30C6%u30FC%u30C8%u5909%u5316%u30D5%u30E9%u30B0%u3092%u30BB%u30C3%u30C8
            @state_changed = true
            # %u30B9%u30C6%u30FC%u30C8%u3092%u4ED8%u52A0
            add_state(i)
          end
        end
      end
    end
    # %u30E1%u30BD%u30C3%u30C9%u7D42%u4E86
    return effective
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30C6%u30FC%u30C8%u5909%u5316 (-) %u306E%u9069%u7528
  #     minus_state_set : %u30B9%u30C6%u30FC%u30C8%u5909%u5316 (-)
  #--------------------------------------------------------------------------
  def states_minus(minus_state_set)
    # %u6709%u52B9%u30D5%u30E9%u30B0%u3092%u30AF%u30EA%u30A2
    effective = false
    # %u30EB%u30FC%u30D7 (%u89E3%u9664%u3059%u308B%u30B9%u30C6%u30FC%u30C8)
    for i in minus_state_set
      # %u3053%u306E%u30B9%u30C6%u30FC%u30C8%u304C%u4ED8%u52A0%u3055%u308C%u3066%u3044%u308C%u3070%u6709%u52B9%u30D5%u30E9%u30B0%u3092%u30BB%u30C3%u30C8
      effective |= self.state?(i)
      # %u30B9%u30C6%u30FC%u30C8%u5909%u5316%u30D5%u30E9%u30B0%u3092%u30BB%u30C3%u30C8
      @state_changed = true
      # %u30B9%u30C6%u30FC%u30C8%u3092%u89E3%u9664
      remove_state(i)
    end
    # %u30E1%u30BD%u30C3%u30C9%u7D42%u4E86
    return effective
  end
end
zum Lesen den Text mit der Maus markieren

Spoiler: battler3

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
#==============================================================================
# %u25A0 Game_Battler (%u5206%u5272%u5B9A%u7FA9 3)
#------------------------------------------------------------------------------
# %u3000%u30D0%u30C8%u30E9%u30FC%u3092%u6271%u3046%u30AF%u30E9%u30B9%u3067%u3059%u3002%u3053%u306E%u30AF%u30E9%u30B9%u306F Game_Actor %u30AF%u30E9%u30B9%u3068 Game_Enemy %u30AF%u30E9
# %u30B9%u306E%u30B9%u30FC%u30D1%u30FC%u30AF%u30E9%u30B9%u3068%u3057%u3066%u4F7F%u7528%u3055%u308C%u307E%u3059%u3002
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30AD%u30EB%u306E%u4F7F%u7528%u53EF%u80FD%u5224%u5B9A
  #     skill_id : %u30B9%u30AD%u30EB ID
  #--------------------------------------------------------------------------
  def skill_can_use?(skill_id)
    # SP %u304C%u8DB3%u308A%u306A%u3044%u5834%u5408%u306F%u4F7F%u7528%u4E0D%u53EF
    if $data_skills[skill_id].sp_cost > self.sp
      return false
    end
    # %u6226%u95D8%u4E0D%u80FD%u306E%u5834%u5408%u306F%u4F7F%u7528%u4E0D%u53EF
    if dead?
      return false
    end
    # %u6C88%u9ED9%u72B6%u614B%u306E%u5834%u5408%u3001%u7269%u7406%u30B9%u30AD%u30EB%u4EE5%u5916%u306F%u4F7F%u7528%u4E0D%u53EF
    if $data_skills[skill_id].atk_f == 0 and self.restriction == 1
      return false
    end
    # %u4F7F%u7528%u53EF%u80FD%u6642%u3092%u53D6%u5F97
    occasion = $data_skills[skill_id].occasion
    # %u6226%u95D8%u4E2D%u306E%u5834%u5408
    if $game_temp.in_battle
      # [%u5E38%u6642] %u307E%u305F%u306F [%u30D0%u30C8%u30EB%u306E%u307F] %u306A%u3089%u4F7F%u7528%u53EF
      return (occasion == 0 or occasion == 1)
    # %u6226%u95D8%u4E2D%u3067%u306F%u306A%u3044%u5834%u5408
    else
      # [%u5E38%u6642] %u307E%u305F%u306F [%u30E1%u30CB%u30E5%u30FC%u306E%u307F] %u306A%u3089%u4F7F%u7528%u53EF
      return (occasion == 0 or occasion == 2)
    end
  end
  #--------------------------------------------------------------------------
  # %u25CF %u901A%u5E38%u653B%u6483%u306E%u52B9%u679C%u9069%u7528
  #     attacker : %u653B%u6483%u8005 (%u30D0%u30C8%u30E9%u30FC)
  #--------------------------------------------------------------------------
  def attack_effect(attacker)
    # %u30AF%u30EA%u30C6%u30A3%u30AB%u30EB%u30D5%u30E9%u30B0%u3092%u30AF%u30EA%u30A2
    self.critical = false
    # %u7B2C%u4E00%u547D%u4E2D%u5224%u5B9A
    hit_result = (rand(100) < attacker.hit)
    # %u547D%u4E2D%u306E%u5834%u5408
    if hit_result == true
      # %u57FA%u672C%u30C0%u30E1%u30FC%u30B8%u3092%u8A08%u7B97
      atk = [attacker.atk - self.pdef / 2, 0].max
      self.damage = atk * (20   attacker.str) / 20
      # %u5C5E%u6027%u4FEE%u6B63
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100
      # %u30C0%u30E1%u30FC%u30B8%u306E%u7B26%u53F7%u304C%u6B63%u306E%u5834%u5408
      if self.damage > 0
        # %u30AF%u30EA%u30C6%u30A3%u30AB%u30EB%u4FEE%u6B63
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end
        # %u9632%u5FA1%u4FEE%u6B63
        if self.guarding?
          self.damage /= 2
        end
      end
      # %u5206%u6563
      if self.damage.abs > 0
        amp = [self.damage.abs * 15 / 100, 1].max
        self.damage  = rand(amp 1)   rand(amp 1) - amp
      end
      # %u7B2C%u4E8C%u547D%u4E2D%u5224%u5B9A
      eva = 8 * self.agi / attacker.dex   self.eva
      hit = self.damage < 0 ? 100 : 100 - eva
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
    end
    # %u547D%u4E2D%u306E%u5834%u5408
    if hit_result == true
      # %u30B9%u30C6%u30FC%u30C8%u885D%u6483%u89E3%u9664
      remove_states_shock
      # HP %u304B%u3089%u30C0%u30E1%u30FC%u30B8%u3092%u6E1B%u7B97
      self.hp -= self.damage
      # %u30B9%u30C6%u30FC%u30C8%u5909%u5316
      @state_changed = false
      states_plus(attacker.plus_state_set)
      states_minus(attacker.minus_state_set)
    # %u30DF%u30B9%u306E%u5834%u5408
    else
      # %u30C0%u30E1%u30FC%u30B8%u306B "Miss" %u3092%u8A2D%u5B9A
      self.damage = "Daneben"
      # %u30AF%u30EA%u30C6%u30A3%u30AB%u30EB%u30D5%u30E9%u30B0%u3092%u30AF%u30EA%u30A2
      self.critical = false
    end
    # %u30E1%u30BD%u30C3%u30C9%u7D42%u4E86
    return true
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30AD%u30EB%u306E%u52B9%u679C%u9069%u7528
  #     user  : %u30B9%u30AD%u30EB%u306E%u4F7F%u7528%u8005 (%u30D0%u30C8%u30E9%u30FC)
  #     skill : %u30B9%u30AD%u30EB
  #--------------------------------------------------------------------------
  def skill_effect(user, skill)
    # %u30AF%u30EA%u30C6%u30A3%u30AB%u30EB%u30D5%u30E9%u30B0%u3092%u30AF%u30EA%u30A2
    self.critical = false
    # %u30B9%u30AD%u30EB%u306E%u52B9%u679C%u7BC4%u56F2%u304C HP 1 %u4EE5%u4E0A%u306E%u5473%u65B9%u3067%u3001%u81EA%u5206%u306E HP %u304C 0%u3001
    # %u307E%u305F%u306F%u30B9%u30AD%u30EB%u306E%u52B9%u679C%u7BC4%u56F2%u304C HP 0 %u306E%u5473%u65B9%u3067%u3001%u81EA%u5206%u306E HP %u304C 1 %u4EE5%u4E0A%u306E%u5834%u5408
    if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
       ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
      # %u30E1%u30BD%u30C3%u30C9%u7D42%u4E86
      return false
    end
    # %u6709%u52B9%u30D5%u30E9%u30B0%u3092%u30AF%u30EA%u30A2
    effective = false
    # %u30B3%u30E2%u30F3%u30A4%u30D9%u30F3%u30C8 ID %u304C%u6709%u52B9%u306E%u5834%u5408%u306F%u6709%u52B9%u30D5%u30E9%u30B0%u3092%u30BB%u30C3%u30C8
    effective |= skill.common_event_id > 0
    # %u7B2C%u4E00%u547D%u4E2D%u5224%u5B9A
    hit = skill.hit
    if skill.atk_f > 0
      hit *= user.hit / 100
    end
    hit_result = (rand(100) < hit)
    # %u4E0D%u78BA%u5B9F%u306A%u30B9%u30AD%u30EB%u306E%u5834%u5408%u306F%u6709%u52B9%u30D5%u30E9%u30B0%u3092%u30BB%u30C3%u30C8
    effective |= hit < 100
    # %u547D%u4E2D%u306E%u5834%u5408
    if hit_result == true
      # %u5A01%u529B%u3092%u8A08%u7B97
      power = skill.power   user.atk * skill.atk_f / 100
      if power > 0
        power -= self.pdef * skill.pdef_f / 200
        power -= self.mdef * skill.mdef_f / 200
        power = [power, 0].max
      end
      # %u500D%u7387%u3092%u8A08%u7B97
      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)
      # %u57FA%u672C%u30C0%u30E1%u30FC%u30B8%u3092%u8A08%u7B97
      self.damage = power * rate / 20
      # %u5C5E%u6027%u4FEE%u6B63
      self.damage *= elements_correct(skill.element_set)
      self.damage /= 100
      # %u30C0%u30E1%u30FC%u30B8%u306E%u7B26%u53F7%u304C%u6B63%u306E%u5834%u5408
      if self.damage > 0
        # %u9632%u5FA1%u4FEE%u6B63
        if self.guarding?
          self.damage /= 2
        end
      end
      # %u5206%u6563
      if skill.variance > 0 and self.damage.abs > 0
        amp = [self.damage.abs * skill.variance / 100, 1].max
        self.damage  = rand(amp 1)   rand(amp 1) - amp
      end
      # %u7B2C%u4E8C%u547D%u4E2D%u5224%u5B9A
      eva = 8 * self.agi / user.dex   self.eva
      hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
      # %u4E0D%u78BA%u5B9F%u306A%u30B9%u30AD%u30EB%u306E%u5834%u5408%u306F%u6709%u52B9%u30D5%u30E9%u30B0%u3092%u30BB%u30C3%u30C8
      effective |= hit < 100
    end
    # %u547D%u4E2D%u306E%u5834%u5408
    if hit_result == true
      # %u5A01%u529B 0 %u4EE5%u5916%u306E%u7269%u7406%u653B%u6483%u306E%u5834%u5408
      if skill.power != 0 and skill.atk_f > 0
        # %u30B9%u30C6%u30FC%u30C8%u885D%u6483%u89E3%u9664
        remove_states_shock
        # %u6709%u52B9%u30D5%u30E9%u30B0%u3092%u30BB%u30C3%u30C8
        effective = true
      end
      # HP %u304B%u3089%u30C0%u30E1%u30FC%u30B8%u3092%u6E1B%u7B97
      last_hp = self.hp
      self.hp -= self.damage
      effective |= self.hp != last_hp
      # %u30B9%u30C6%u30FC%u30C8%u5909%u5316
      @state_changed = false
      effective |= states_plus(skill.plus_state_set)
      effective |= states_minus(skill.minus_state_set)
      # %u5A01%u529B%u304C 0 %u306E%u5834%u5408
      if skill.power == 0
        # %u30C0%u30E1%u30FC%u30B8%u306B%u7A7A%u6587%u5B57%u5217%u3092%u8A2D%u5B9A
        self.damage = ""
        # %u30B9%u30C6%u30FC%u30C8%u306B%u5909%u5316%u304C%u306A%u3044%u5834%u5408
        unless @state_changed
          # %u30C0%u30E1%u30FC%u30B8%u306B "Miss" %u3092%u8A2D%u5B9A
          self.damage = "Daneben"
        end
      end
    # %u30DF%u30B9%u306E%u5834%u5408
    else
      # %u30C0%u30E1%u30FC%u30B8%u306B "Miss" %u3092%u8A2D%u5B9A
      self.damage = "Daneben"
    end
    # %u6226%u95D8%u4E2D%u3067%u306A%u3044%u5834%u5408
    unless $game_temp.in_battle
      # %u30C0%u30E1%u30FC%u30B8%u306B nil %u3092%u8A2D%u5B9A
      self.damage = nil
    end
    # %u30E1%u30BD%u30C3%u30C9%u7D42%u4E86
    return effective
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30A2%u30A4%u30C6%u30E0%u306E%u52B9%u679C%u9069%u7528
  #     item : %u30A2%u30A4%u30C6%u30E0
  #--------------------------------------------------------------------------
  def item_effect(item)
    # %u30AF%u30EA%u30C6%u30A3%u30AB%u30EB%u30D5%u30E9%u30B0%u3092%u30AF%u30EA%u30A2
    self.critical = false
    # %u30A2%u30A4%u30C6%u30E0%u306E%u52B9%u679C%u7BC4%u56F2%u304C HP 1 %u4EE5%u4E0A%u306E%u5473%u65B9%u3067%u3001%u81EA%u5206%u306E HP %u304C 0%u3001
    # %u307E%u305F%u306F%u30A2%u30A4%u30C6%u30E0%u306E%u52B9%u679C%u7BC4%u56F2%u304C HP 0 %u306E%u5473%u65B9%u3067%u3001%u81EA%u5206%u306E HP %u304C 1 %u4EE5%u4E0A%u306E%u5834%u5408
    if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
       ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
      # %u30E1%u30BD%u30C3%u30C9%u7D42%u4E86
      return false
    end
    # %u6709%u52B9%u30D5%u30E9%u30B0%u3092%u30AF%u30EA%u30A2
    effective = false
    # %u30B3%u30E2%u30F3%u30A4%u30D9%u30F3%u30C8 ID %u304C%u6709%u52B9%u306E%u5834%u5408%u306F%u6709%u52B9%u30D5%u30E9%u30B0%u3092%u30BB%u30C3%u30C8
    effective |= item.common_event_id > 0
    # %u547D%u4E2D%u5224%u5B9A
    hit_result = (rand(100) < item.hit)
    # %u4E0D%u78BA%u5B9F%u306A%u30B9%u30AD%u30EB%u306E%u5834%u5408%u306F%u6709%u52B9%u30D5%u30E9%u30B0%u3092%u30BB%u30C3%u30C8
    effective |= item.hit < 100
    # %u547D%u4E2D%u306E%u5834%u5408
    if hit_result == true
      # %u56DE%u5FA9%u91CF%u3092%u8A08%u7B97
      recover_hp = maxhp * item.recover_hp_rate / 100   item.recover_hp
      recover_sp = maxsp * item.recover_sp_rate / 100   item.recover_sp
      if recover_hp < 0
        recover_hp  = self.pdef * item.pdef_f / 20
        recover_hp  = self.mdef * item.mdef_f / 20
        recover_hp = [recover_hp, 0].min
      end
      # %u5C5E%u6027%u4FEE%u6B63
      recover_hp *= elements_correct(item.element_set)
      recover_hp /= 100
      recover_sp *= elements_correct(item.element_set)
      recover_sp /= 100
      # %u5206%u6563
      if item.variance > 0 and recover_hp.abs > 0
        amp = [recover_hp.abs * item.variance / 100, 1].max
        recover_hp  = rand(amp 1)   rand(amp 1) - amp
      end
      if item.variance > 0 and recover_sp.abs > 0
        amp = [recover_sp.abs * item.variance / 100, 1].max
        recover_sp  = rand(amp 1)   rand(amp 1) - amp
      end
      # %u56DE%u5FA9%u91CF%u306E%u7B26%u53F7%u304C%u8CA0%u306E%u5834%u5408
      if recover_hp < 0
        # %u9632%u5FA1%u4FEE%u6B63
        if self.guarding?
          recover_hp /= 2
        end
      end
      # HP %u56DE%u5FA9%u91CF%u306E%u7B26%u53F7%u3092%u53CD%u8EE2%u3057%u3001%u30C0%u30E1%u30FC%u30B8%u306E%u5024%u306B%u8A2D%u5B9A
      self.damage = -recover_hp
      # HP %u304A%u3088%u3073 SP %u3092%u56DE%u5FA9
      last_hp = self.hp
      last_sp = self.sp
      self.hp  = recover_hp
      self.sp  = recover_sp
      effective |= self.hp != last_hp
      effective |= self.sp != last_sp
      # %u30B9%u30C6%u30FC%u30C8%u5909%u5316
      @state_changed = false
      effective |= states_plus(item.plus_state_set)
      effective |= states_minus(item.minus_state_set)
      # %u30D1%u30E9%u30E1%u30FC%u30BF%u4E0A%u6607%u5024%u304C%u6709%u52B9%u306E%u5834%u5408
      if item.parameter_type > 0 and item.parameter_points != 0
        # %u30D1%u30E9%u30E1%u30FC%u30BF%u3067%u5206%u5C90
        case item.parameter_type
        when 1  # MaxHP
          @maxhp_plus  = item.parameter_points
        when 2  # MaxSP
          @maxsp_plus  = item.parameter_points
        when 3  # %u8155%u529B
          @str_plus  = item.parameter_points
        when 4  # %u5668%u7528%u3055
          @dex_plus  = item.parameter_points
        when 5  # %u7D20%u65E9%u3055
          @agi_plus  = item.parameter_points
        when 6  # %u9B54%u529B
          @int_plus  = item.parameter_points
        end
        # %u6709%u52B9%u30D5%u30E9%u30B0%u3092%u30BB%u30C3%u30C8
        effective = true
      end
      # HP %u56DE%u5FA9%u7387%u3068%u56DE%u5FA9%u91CF%u304C 0 %u306E%u5834%u5408
      if item.recover_hp_rate == 0 and item.recover_hp == 0
        # %u30C0%u30E1%u30FC%u30B8%u306B%u7A7A%u6587%u5B57%u5217%u3092%u8A2D%u5B9A
        self.damage = ""
        # SP %u56DE%u5FA9%u7387%u3068%u56DE%u5FA9%u91CF%u304C 0%u3001%u30D1%u30E9%u30E1%u30FC%u30BF%u4E0A%u6607%u5024%u304C%u7121%u52B9%u306E%u5834%u5408
        if item.recover_sp_rate == 0 and item.recover_sp == 0 and
           (item.parameter_type == 0 or item.parameter_points == 0)
          # %u30B9%u30C6%u30FC%u30C8%u306B%u5909%u5316%u304C%u306A%u3044%u5834%u5408
          unless @state_changed
            # %u30C0%u30E1%u30FC%u30B8%u306B "Miss" %u3092%u8A2D%u5B9A
            self.damage = "Daneben"
          end
        end
      end
    # %u30DF%u30B9%u306E%u5834%u5408
    else
      # %u30C0%u30E1%u30FC%u30B8%u306B "Miss" %u3092%u8A2D%u5B9A
      self.damage = "Daneben"
    end
    # %u6226%u95D8%u4E2D%u3067%u306A%u3044%u5834%u5408
    unless $game_temp.in_battle
      # %u30C0%u30E1%u30FC%u30B8%u306B nil %u3092%u8A2D%u5B9A
      self.damage = nil
    end
    # %u30E1%u30BD%u30C3%u30C9%u7D42%u4E86
    return effective
  end
  #--------------------------------------------------------------------------
  # %u25CF %u30B9%u30EA%u30C3%u30D7%u30C0%u30E1%u30FC%u30B8%u306E%u52B9%u679C%u9069%u7528
  #--------------------------------------------------------------------------
  def slip_damage_effect
    # %u30C0%u30E1%u30FC%u30B8%u3092%u8A2D%u5B9A
    self.damage = self.maxhp / 10
    # %u5206%u6563
    if self.damage.abs > 0
      amp = [self.damage.abs * 15 / 100, 1].max
      self.damage  = rand(amp 1)   rand(amp 1) - amp
    end
    # HP %u304B%u3089%u30C0%u30E1%u30FC%u30B8%u3092%u6E1B%u7B97
    self.hp -= self.damage
    # %u30E1%u30BD%u30C3%u30C9%u7D42%u4E86
    return true
  end
  #--------------------------------------------------------------------------
  # %u25CF %u5C5E%u6027%u4FEE%u6B63%u306E%u8A08%u7B97
  #     element_set : %u5C5E%u6027
  #--------------------------------------------------------------------------
  def elements_correct(element_set)
    # %u7121%u5C5E%u6027%u306E%u5834%u5408
    if element_set == []
      # 100 %u3092%u8FD4%u3059
      return 100
    end
    # %u4E0E%u3048%u3089%u308C%u305F%u5C5E%u6027%u306E%u4E2D%u3067%u6700%u3082%u5F31%u3044%u3082%u306E%u3092%u8FD4%u3059
    # %u203B%u30E1%u30BD%u30C3%u30C9 element_rate %u306F%u3001%u3053%u306E%u30AF%u30E9%u30B9%u304B%u3089%u7D99%u627F%u3055%u308C%u308B Game_Actor
    #   %u304A%u3088%u3073 Game_Enemy %u30AF%u30E9%u30B9%u3067%u5B9A%u7FA9%u3055%u308C%u308B
    weakest = -100
    for i in element_set
      weakest = [weakest, self.element_rate(i)].max
    end
    return weakest
  end
end
zum Lesen den Text mit der Maus markieren


Ich habe mal ein Bild angehehängt, wie mein KS zurzeit ausseht.
Am besten wäre es natürlich wenn man soein KS wie von Paper Mario oder den Mario RPGs fürGBA und NDS machen könnte.
Aber ich glaube dies ist ein wenig zu schwer zu scripten
»Terralord-93« hat folgendes Bild angehängt:
  • Kampfsystem.PNG