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
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
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
|
|
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
|
|
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
|
|
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
Ähnliche Themen
-
Einsteigerhilfe »-
Kampfsystem SBS, eigene skills und Limit Break Attacken wie in FFVII
(30. Mai 2009, 17:47)
-
Ressourcen-Archiv »-
*Update* Animierte Battler ! Jett auch mit FF Chas !
(25. Mai 2009, 22:16)
-
Archiv Jobbörse »-
Suche einen Pixler/Graficker der übung hat
(26. Februar 2009, 00:00)
-
Ressourcen- & Gestaltungsforum »-
Wie Schneide ich mit Paint Charas zusammen.
(31. Dezember 2008, 19:19)
-
RGSS 1 Probleme & Talk »-
Suche ein Script für Animierte-Gif Battlers...
(12. November 2005, 14:31)
