diff --git a/Data/Scripts/902_Anim GameData/001_Animation.rb b/Data/Scripts/902_Anim GameData/001_Animation.rb index d358ea3d6..d0cc4320b 100644 --- a/Data/Scripts/902_Anim GameData/001_Animation.rb +++ b/Data/Scripts/902_Anim GameData/001_Animation.rb @@ -45,9 +45,10 @@ module GameData } USER_AND_TARGET_SEPARATION = [200, -200, -100] # x, y, z (from user to target) SPAWNER_TYPES = { - "None" => :none, - "RandomDirection" => :random_direction, - "RandomDirectionGravity" => :random_direction_gravity + "None" => :none, + "RandomDirection" => :random_direction, + "RandomDirectionGravity" => :random_direction_gravity, + "RandomUpDirectionGravity" => :random_up_direction_gravity } # Properties that apply to the animation in general, not to individual diff --git a/Data/Scripts/904_Anim Editor/003_AnimationEditor_side_panes.rb b/Data/Scripts/904_Anim Editor/003_AnimationEditor_side_panes.rb index 37f3af55d..43baad314 100644 --- a/Data/Scripts/904_Anim Editor/003_AnimationEditor_side_panes.rb +++ b/Data/Scripts/904_Anim Editor/003_AnimationEditor_side_panes.rb @@ -533,9 +533,10 @@ AnimationEditor::SidePanes.add_property(:particle_pane, :random_frame_max, { AnimationEditor::SidePanes.add_property(:particle_pane, :spawner, { :new => proc { |pane, editor| values = { - :none => _INTL("None"), - :random_direction => _INTL("Random direction"), - :random_direction_gravity => _INTL("Random direction gravity") + :none => _INTL("None"), + :random_direction => _INTL("Random direction"), + :random_direction_gravity => _INTL("Random dir. with gravity"), + :random_up_direction_gravity => _INTL("Random up dir. gravity") } pane.add_labelled_dropdown_list(:spawner, _INTL("Spawner"), values, :none) } @@ -552,6 +553,12 @@ AnimationEditor::SidePanes.add_property(:particle_pane, :spawn_quantity, { else control.enable end + }, + :apply_value => proc { |value, editor| + AnimationEditor::SidePanes.get_pane(:particle_pane)[:apply_value].call(:spawn_quantity, value, editor) + editor.components[:particle_list].change_particle_commands(editor.particle_index) + editor.components[:play_controls].duration = editor.components[:particle_list].duration + editor.refresh } }) diff --git a/Data/Scripts/904_Anim Editor/901_ParticleDataHelper.rb b/Data/Scripts/904_Anim Editor/901_ParticleDataHelper.rb index ac20db455..2e67bbfff 100644 --- a/Data/Scripts/904_Anim Editor/901_ParticleDataHelper.rb +++ b/Data/Scripts/904_Anim Editor/901_ParticleDataHelper.rb @@ -64,7 +64,8 @@ module AnimationEditor::ParticleDataHelper end # Used to determine which keyframes the particle is visible in, which is - # indicated in the timeline by a coloured bar. + # indicated in the timeline by a coloured bar. 0=not visible, 1=visible, + # 2=visible because of spawner delay. # NOTE: Particles are assumed to be not visible at the start of the # animation, and automatically become visible when the particle has # its first command. This does not apply to the "User" and "Target" @@ -75,8 +76,8 @@ module AnimationEditor::ParticleDataHelper raise _INTL("Couldn't get default value for property {1} for particle {2}.", property, particle[:name]) end - value = GameData::Animation::PARTICLE_KEYFRAME_DEFAULT_VALUES[:visible] - value = true if ["User", "Target", "SE"].include?(particle[:name]) + value = GameData::Animation::PARTICLE_KEYFRAME_DEFAULT_VALUES[:visible] ? 1 : 0 + value = 1 if ["User", "Target", "SE"].include?(particle[:name]) ret = [] if !["User", "Target", "SE"].include?(particle[:name]) earliest = duration @@ -84,15 +85,31 @@ module AnimationEditor::ParticleDataHelper next if !value.is_a?(Array) || value.empty? earliest = value[0][0] if earliest > value[0][0] end - ret[earliest] = true + ret[earliest] = 1 end if particle[:visible] - particle[:visible].each { |cmd| ret[cmd[0]] = cmd[2] } + particle[:visible].each { |cmd| ret[cmd[0]] = (cmd[2]) ? 1 : 0 } end duration.times do |i| value = ret[i] if !ret[i].nil? ret[i] = value end + qty = particle[:spawn_quantity] || 1 if particle[:spawner] && particle[:spawner] != :none + if (particle[:spawner] || :none) != :none + qty = particle[:spawn_quantity] || 1 + delay = AnimationPlayer::Helper.get_particle_delay(particle, qty - 1) + if delay > 0 + count = -1 + duration.times do |i| + if ret[i] == 1 # Visible + count = 0 + elsif ret[i] == 0 && count >= 0 && count < delay # Not visible and within delay + ret[i] = 2 + count += 1 + end + end + end + end return ret end diff --git a/Data/Scripts/904_Anim Editor/Anim Editor elements/003_ParticleList.rb b/Data/Scripts/904_Anim Editor/Anim Editor elements/003_ParticleList.rb index 958f13c74..988d9a4a8 100644 --- a/Data/Scripts/904_Anim Editor/Anim Editor elements/003_ParticleList.rb +++ b/Data/Scripts/904_Anim Editor/Anim Editor elements/003_ParticleList.rb @@ -518,7 +518,7 @@ class AnimationEditor::ParticleList < UIControls::BaseControl end sprites_need_changing = ensure_sprites if @duration != old_duration || sprites_need_changing - @keyframe = @keyframe.clamp(0, @duration - 1) + @keyframe = @keyframe.clamp(-1, @duration - 1) @row_index = @row_index.clamp(0, @particle_list.length - 1) create_sprites end @@ -737,7 +737,7 @@ class AnimationEditor::ParticleList < UIControls::BaseControl each_visible_keyframe do |i| draw_x = TIMELINE_LEFT_BUFFER + (i * KEYFRAME_SPACING) - @left_pos # Draw bg - if i < @duration - DURATION_BUFFER && visible_cmds[i] + if i < @duration - DURATION_BUFFER && visible_cmds[i] == 1 bg_spr.bitmap.fill_rect(draw_x, ROW_SPACING, KEYFRAME_SPACING, ROW_HEIGHT - ROW_SPACING, bg_color) end # Draw hover highlight @@ -772,19 +772,39 @@ class AnimationEditor::ParticleList < UIControls::BaseControl end end next if i >= @duration - DURATION_BUFFER - next if !visible_cmds[i] - # Draw outline outline_color = Color.black - if is_property - outline_color = CONTROL_BG_COLORS[@particles[p_index][:focus]] || Color.magenta - end - bg_spr.bitmap.fill_rect(draw_x, ROW_SPACING, KEYFRAME_SPACING, 1, outline_color) # Top - bg_spr.bitmap.fill_rect(draw_x, ROW_HEIGHT - 1, KEYFRAME_SPACING, 1, outline_color) # Bottom - if i <= 0 || !visible_cmds[i - 1] - bg_spr.bitmap.fill_rect(draw_x, ROW_SPACING, 1, ROW_HEIGHT - ROW_SPACING, outline_color) # Left - end - if i == @duration - DURATION_BUFFER - 1 || (i < @duration - 1 && !visible_cmds[i + 1]) - bg_spr.bitmap.fill_rect(draw_x + KEYFRAME_SPACING, ROW_SPACING, 1, ROW_HEIGHT - ROW_SPACING, outline_color) # Right + case visible_cmds[i] + when 1 # Particle is visible + # Draw outline + if is_property + outline_color = CONTROL_BG_COLORS[@particles[p_index][:focus]] || Color.magenta + end + bg_spr.bitmap.fill_rect(draw_x, ROW_SPACING, KEYFRAME_SPACING, 1, outline_color) # Top + bg_spr.bitmap.fill_rect(draw_x, ROW_HEIGHT - 1, KEYFRAME_SPACING, 1, outline_color) # Bottom + if i <= 0 || visible_cmds[i - 1] != 1 + bg_spr.bitmap.fill_rect(draw_x, ROW_SPACING, 1, ROW_HEIGHT - ROW_SPACING, outline_color) # Left + end + if i == @duration - DURATION_BUFFER - 1 || (i < @duration - 1 && visible_cmds[i + 1] != 1) + bg_spr.bitmap.fill_rect(draw_x + KEYFRAME_SPACING, ROW_SPACING, 1, ROW_HEIGHT - ROW_SPACING, outline_color) # Right + end + when 2 # Particle is a spawner and delays its particles into this frame + if !is_property + # Draw dotted outline + KEYFRAME_SPACING.times do |j| + next if j.odd? + bg_spr.bitmap.fill_rect(draw_x + j, ROW_SPACING, 1, 1, outline_color) # Top + bg_spr.bitmap.fill_rect(draw_x + j, ROW_HEIGHT - 1, 1, 1, outline_color) # Bottom + end + (ROW_HEIGHT - ROW_SPACING).times do |j| + next if j.odd? + if i <= 0 || visible_cmds[i - 1] != 2 + bg_spr.bitmap.fill_rect(draw_x, ROW_SPACING + j, 1, 1, outline_color) # Left + end + if i == @duration - DURATION_BUFFER - 1 || (i < @duration - 1 && visible_cmds[i + 1] != 2) + bg_spr.bitmap.fill_rect(draw_x + KEYFRAME_SPACING, ROW_SPACING + j, 1, 1, outline_color) # Right + end + end + end end end end @@ -1027,7 +1047,7 @@ class AnimationEditor::ParticleList < UIControls::BaseControl def update_input # Left/right to change current keyframe if Input.triggerex?(:LEFT) || Input.repeatex?(:LEFT) - if @keyframe > 0 + if @keyframe >= 0 @keyframe -= 1 scroll_to_keyframe(@keyframe) set_changed diff --git a/Data/Scripts/905_Anim player/001_Anim player.rb b/Data/Scripts/905_Anim player/001_Anim player.rb index 54d18221a..04e65b005 100644 --- a/Data/Scripts/905_Anim player/001_Anim player.rb +++ b/Data/Scripts/905_Anim player/001_Anim player.rb @@ -21,6 +21,7 @@ class AnimationPlayer @slowdown = 1 @timer_start = nil @anim_sprites = [] # Each is a ParticleSprite + @spawner_sprites = [] @duration = total_duration end @@ -168,41 +169,49 @@ class AnimationPlayer end end end - # Add spawner commands - add_spawner_commands(particle_sprite, particle, instance, delay) # Finish up @anim_sprites.push(particle_sprite) + @spawner_sprites.push([particle_sprite, particle, target_idx, instance, delay]) if spawner_type != :none end - def add_spawner_commands(particle_sprite, particle, instance, delay) + def add_spawner_commands(particle_sprite, particle, target_idx, instance, delay, add_as_spawner = true) + spawner_type = particle[:spawner] || :none + return if spawner_type == :none + @spawner_sprites.push([particle_sprite, particle, target_idx, instance, delay]) if add_as_spawner life_start = AnimationPlayer::Helper.get_first_command_frame(particle) life_end = AnimationPlayer::Helper.get_last_command_frame(particle) life_end = AnimationPlayer::Helper.get_duration(particles) if life_end < 0 lifetime = life_end - life_start - spawner_type = particle[:spawner] || :none case spawner_type - when :random_direction, :random_direction_gravity - angle = rand(360) - angle = rand(360) if angle >= 180 && spawner_type == :random_direction_gravity # Prefer upwards angles - speed = rand(150, 250) + when :random_direction, :random_direction_gravity, :random_up_direction_gravity + if spawner_type == :random_up_direction_gravity + angle = 30 + rand(120) + else + angle = rand(360) + angle = rand(360) if angle >= 180 && spawner_type == :random_direction_gravity # Prefer upwards angles + end + speed = rand(200, 400) start_x_speed = speed * Math.cos(angle * Math::PI / 180) start_y_speed = -speed * Math.sin(angle * Math::PI / 180) start_x = (start_x_speed * 0.05) + rand(-8, 8) start_y = (start_y_speed * 0.05) + rand(-8, 8) # Set initial positions [:x, :y].each do |property| - offset = (property == :x) ? start_x : start_y - particle[property].each do |cmd| - next if cmd[1] > 0 - particle_sprite.add_set_process(property, (cmd[0] + delay) * slowdown, cmd[2] + offset) - break + particle_sprite.delete_processes(property) + if particle[property] && !particle[property].empty? + offset = (property == :x) ? start_x : start_y + particle[property].each do |cmd| + next if cmd[1] > 0 + particle_sprite.add_set_process(property, (cmd[0] + delay) * slowdown, cmd[2] + offset) + break + end end end # Set movements particle_sprite.add_move_process(:x, (life_start + delay) * slowdown, lifetime * slowdown, start_x + (start_x_speed * lifetime / 20.0), :linear) - if spawner_type == :random_direction_gravity + if [:random_direction_gravity, :random_up_direction_gravity].include?(spawner_type) particle_sprite.add_move_process(:y, (life_start + delay) * slowdown, lifetime * slowdown, [start_y_speed / slowdown, AnimationPlayer::Helper::GRAVITY_STRENGTH.to_f / (slowdown * slowdown)], :gravity) @@ -241,6 +250,8 @@ class AnimationPlayer # yet started. def reset_anim_sprites @anim_sprites.each { |particle| particle.reset_processes } + # Randomise spawner particle properties + @spawner_sprites.each { |spawner| add_spawner_commands(*spawner, false) } end #----------------------------------------------------------------------------- diff --git a/Data/Scripts/905_Anim player/002_ParticleSprite.rb b/Data/Scripts/905_Anim player/002_ParticleSprite.rb index e97efce82..486b0847d 100644 --- a/Data/Scripts/905_Anim player/002_ParticleSprite.rb +++ b/Data/Scripts/905_Anim player/002_ParticleSprite.rb @@ -49,6 +49,10 @@ class AnimationPlayer::ParticleSprite @processes.push([property, start_frame, duration, value, interpolation, nil, nil]) end + def delete_processes(property) + @processes.delete_if { |process| process[0] == property } + end + # Sets sprite's initial For looping purposes. def reset_processes initialize_values diff --git a/Data/Scripts/905_Anim player/003_AnimPlayerHelper.rb b/Data/Scripts/905_Anim player/003_AnimPlayerHelper.rb index eab3bd2e1..74283bc5f 100644 --- a/Data/Scripts/905_Anim player/003_AnimPlayerHelper.rb +++ b/Data/Scripts/905_Anim player/003_AnimPlayerHelper.rb @@ -3,10 +3,11 @@ #=============================================================================== module AnimationPlayer::Helper PROPERTIES_SET_BY_SPAWNER = { - :random_direction => [:x, :y], - :random_direction_gravity => [:x, :y] + :random_direction => [:x, :y], + :random_direction_gravity => [:x, :y], + :random_up_direction_gravity => [:x, :y] } - GRAVITY_STRENGTH = 300 + GRAVITY_STRENGTH = 500 BATTLE_MESSAGE_BAR_HEIGHT = 96 # NOTE: You shouldn't need to change this. module_function @@ -18,6 +19,10 @@ module AnimationPlayer::Helper particle.each_pair do |property, value| next if !value.is_a?(Array) || value.empty? max = value.last[0] + value.last[1] # Keyframe + duration + # Particle spawners can delay their particles; account for this + if (particle[:spawner] || :none) != :none + max += get_particle_delay(particle, (particle[:spawn_quantity] || 1) - 1) + end ret = max if ret < max end end @@ -51,7 +56,7 @@ module AnimationPlayer::Helper # For spawner particles def get_particle_delay(particle, instance) case particle[:spawner] || :none - when :random_direction, :random_direction_gravity + when :random_direction, :random_direction_gravity, :random_up_direction_gravity return instance / 4 end return 0 diff --git a/PBS/Animations/Normal/Pound.txt b/PBS/Animations/Normal/Pound.txt index b619f72dc..a99c85538 100644 --- a/PBS/Animations/Normal/Pound.txt +++ b/PBS/Animations/Normal/Pound.txt @@ -25,11 +25,11 @@ Name = Essentials MoveColorBlue = 1,1,0 MoveOpacity = 1,4,0 SetVisible = 5,false - + Graphic = Normal/Pound spark Focus = Target - SetX = 0,-11 - SetY = 0,-17 + Spawner = RandomDirectionGravity + SpawnQuantity = 7 SetZ = 0,5 SetZoomX = 0,50 SetZoomY = 0,50 @@ -39,142 +39,11 @@ Name = Essentials SetColorBlue = 0,128 SetColorAlpha = 0,255 MoveOpacity = 0,1,255 - MoveX = 0,13,-94 - MoveY = 0,13,-68,EaseOut MoveZoomX = 4,9,0 MoveZoomY = 4,9,0 MoveOpacity = 4,9,0 MoveColorGreen = 4,9,96,EaseOut MoveColorBlue = 4,9,32,EaseOut SetVisible = 13,false - - Graphic = Normal/Pound spark - Focus = Target - SetX = 1,-3 - SetY = 1,-24 - SetZ = 1,5 - SetZoomX = 1,50 - SetZoomY = 1,50 - SetOpacity = 1,0 - SetColorRed = 1,248 - SetColorGreen = 1,248 - SetColorBlue = 1,128 - SetColorAlpha = 1,255 - MoveOpacity = 1,1,255 - MoveX = 1,13,-40 - MoveY = 1,13,-116,EaseOut - MoveZoomX = 5,9,0 - MoveZoomY = 5,9,0 - MoveOpacity = 5,9,0 - MoveColorGreen = 5,9,96,EaseOut - MoveColorBlue = 5,9,32,EaseOut - - Graphic = Normal/Pound spark - Focus = Target - SetX = 0,8 - SetY = 0,-7 - SetZ = 0,5 - SetZoomX = 0,50 - SetZoomY = 0,50 - SetOpacity = 0,0 - SetColorRed = 0,248 - SetColorGreen = 0,248 - SetColorBlue = 0,128 - SetColorAlpha = 0,255 - MoveOpacity = 0,1,255 - MoveX = 0,13,14 - MoveY = 0,13,-89,EaseOut - MoveZoomX = 4,9,0 - MoveZoomY = 4,9,0 - MoveOpacity = 4,9,0 - MoveColorGreen = 4,9,96,EaseOut - MoveColorBlue = 4,9,32,EaseOut - SetVisible = 13,false - - Graphic = Normal/Pound spark - Focus = Target - SetX = 1,7 - SetY = 1,-6 - SetZ = 1,5 - SetZoomX = 1,50 - SetZoomY = 1,50 - SetOpacity = 1,0 - SetColorRed = 1,248 - SetColorGreen = 1,248 - SetColorBlue = 1,128 - SetColorAlpha = 1,255 - MoveOpacity = 1,1,255 - MoveX = 1,13,58 - MoveY = 1,13,-108,EaseOut - MoveZoomX = 5,9,0 - MoveZoomY = 5,9,0 - MoveOpacity = 5,9,0 - MoveColorGreen = 5,9,96,EaseOut - MoveColorBlue = 5,9,32,EaseOut - - Graphic = Normal/Pound spark - Focus = Target - SetX = 0,25 - SetY = 0,-4 - SetZ = 0,5 - SetZoomX = 0,50 - SetZoomY = 0,50 - SetOpacity = 0,0 - SetColorRed = 0,248 - SetColorGreen = 0,248 - SetColorBlue = 0,128 - SetColorAlpha = 0,255 - MoveOpacity = 0,1,255 - MoveX = 0,13,87 - MoveY = 0,13,-9,EaseOut - MoveZoomX = 4,9,0 - MoveZoomY = 4,9,0 - MoveOpacity = 4,9,0 - MoveColorGreen = 4,9,96,EaseOut - MoveColorBlue = 4,9,32,EaseOut - SetVisible = 13,false - - Graphic = Normal/Pound spark - Focus = Target - SetX = 0,18 - SetY = 0,-9 - SetZ = 0,5 - SetZoomX = 0,50 - SetZoomY = 0,50 - SetOpacity = 0,0 - SetColorRed = 0,248 - SetColorGreen = 0,248 - SetColorBlue = 0,128 - SetColorAlpha = 0,255 - MoveOpacity = 0,1,255 - MoveX = 0,13,115 - MoveY = 0,13,-47,EaseOut - MoveZoomX = 4,9,0 - MoveZoomY = 4,9,0 - MoveOpacity = 4,9,0 - MoveColorGreen = 4,9,96,EaseOut - MoveColorBlue = 4,9,32,EaseOut - SetVisible = 13,false - - Graphic = Normal/Pound spark - Focus = Target - SetX = 1,-3 - SetY = 1,-5 - SetZ = 1,5 - SetZoomX = 1,50 - SetZoomY = 1,50 - SetOpacity = 1,0 - SetColorRed = 1,248 - SetColorGreen = 1,248 - SetColorBlue = 1,128 - SetColorAlpha = 1,255 - MoveOpacity = 1,1,255 - MoveX = 1,13,-112 - MoveY = 1,13,-26,EaseOut - MoveZoomX = 5,9,0 - MoveZoomY = 5,9,0 - MoveOpacity = 5,9,0 - MoveColorGreen = 5,9,96,EaseOut - MoveColorBlue = 5,9,32,EaseOut Play = 0,Normal/Pound diff --git a/PBS/Animations/Normal/Scratch.txt b/PBS/Animations/Normal/Scratch.txt index 673538367..68b637381 100644 --- a/PBS/Animations/Normal/Scratch.txt +++ b/PBS/Animations/Normal/Scratch.txt @@ -56,11 +56,11 @@ Name = Essentials SetColorAlpha = 2,255 MoveOpacity = 2,7,0 SetVisible = 9,false - + Graphic = Normal/Scratch spark Focus = Target - SetX = 0,-11 - SetY = 0,-17 + Spawner = RandomDirectionGravity + SpawnQuantity = 12 SetZ = 0,5 SetZoomX = 0,40 SetZoomY = 0,40 @@ -70,250 +70,11 @@ Name = Essentials SetColorBlue = 0,128 SetColorAlpha = 0,255 MoveOpacity = 0,1,255 - MoveX = 0,13,-57 - MoveY = 0,13,-54,EaseOut MoveZoomX = 4,9,0 MoveZoomY = 4,9,0 MoveOpacity = 4,9,0 MoveColorGreen = 4,9,96,EaseOut MoveColorBlue = 4,9,32,EaseOut SetVisible = 13,false - - Graphic = Normal/Scratch spark - Focus = Target - SetX = 1,-3 - SetY = 1,-24 - SetZ = 1,5 - SetZoomX = 1,40 - SetZoomY = 1,40 - SetOpacity = 1,0 - SetColorRed = 1,248 - SetColorGreen = 1,248 - SetColorBlue = 1,128 - SetColorAlpha = 1,255 - MoveOpacity = 1,1,255 - MoveX = 1,13,-40 - MoveY = 1,13,-116,EaseOut - MoveZoomX = 5,9,0 - MoveZoomY = 5,9,0 - MoveOpacity = 5,9,0 - MoveColorGreen = 5,9,96,EaseOut - MoveColorBlue = 5,9,32,EaseOut - SetVisible = 14,false - - Graphic = Normal/Scratch spark - Focus = Target - SetX = 2,8 - SetY = 2,-7 - SetZ = 2,5 - SetZoomX = 2,40 - SetZoomY = 2,40 - SetOpacity = 2,0 - SetColorRed = 2,248 - SetColorGreen = 2,248 - SetColorBlue = 2,128 - SetColorAlpha = 2,255 - MoveOpacity = 2,1,255 - MoveX = 2,13,-1 - MoveY = 2,13,-94,EaseOut - MoveZoomX = 6,9,0 - MoveZoomY = 6,9,0 - MoveOpacity = 6,9,0 - MoveColorGreen = 6,9,96,EaseOut - MoveColorBlue = 6,9,32,EaseOut - - Graphic = Normal/Scratch spark - Focus = Target - SetX = 1,7 - SetY = 1,-6 - SetZ = 1,5 - SetZoomX = 1,40 - SetZoomY = 1,40 - SetOpacity = 1,0 - SetColorRed = 1,248 - SetColorGreen = 1,248 - SetColorBlue = 1,128 - SetColorAlpha = 1,255 - MoveOpacity = 1,1,255 - MoveX = 1,13,50 - MoveY = 1,13,-106,EaseOut - MoveZoomX = 5,9,0 - MoveZoomY = 5,9,0 - MoveOpacity = 5,9,0 - MoveColorGreen = 5,9,96,EaseOut - MoveColorBlue = 5,9,32,EaseOut - SetVisible = 14,false - - Graphic = Normal/Scratch spark - Focus = Target - SetX = 2,25 - SetY = 2,-4 - SetZ = 2,5 - SetZoomX = 2,40 - SetZoomY = 2,40 - SetOpacity = 2,0 - SetColorRed = 2,248 - SetColorGreen = 2,248 - SetColorBlue = 2,128 - SetColorAlpha = 2,255 - MoveOpacity = 2,1,255 - MoveX = 2,13,78 - MoveY = 2,13,-28,EaseOut - MoveZoomX = 6,9,0 - MoveZoomY = 6,9,0 - MoveOpacity = 6,9,0 - MoveColorGreen = 6,9,96,EaseOut - MoveColorBlue = 6,9,32,EaseOut - - Graphic = Normal/Scratch spark - Focus = Target - SetX = 0,18 - SetY = 0,-9 - SetZ = 0,5 - SetZoomX = 0,40 - SetZoomY = 0,40 - SetOpacity = 0,0 - SetColorRed = 0,248 - SetColorGreen = 0,248 - SetColorBlue = 0,128 - SetColorAlpha = 0,255 - MoveOpacity = 0,1,255 - MoveX = 0,13,117 - MoveY = 0,13,-77,EaseOut - MoveZoomX = 4,9,0 - MoveZoomY = 4,9,0 - MoveOpacity = 4,9,0 - MoveColorGreen = 4,9,96,EaseOut - MoveColorBlue = 4,9,32,EaseOut - SetVisible = 13,false - - Graphic = Normal/Scratch spark - Focus = Target - SetX = 2,-3 - SetY = 2,-5 - SetZ = 2,5 - SetZoomX = 2,40 - SetZoomY = 2,40 - SetOpacity = 2,0 - SetColorRed = 2,248 - SetColorGreen = 2,248 - SetColorBlue = 2,128 - SetColorAlpha = 2,255 - MoveOpacity = 2,1,255 - MoveX = 2,13,-112 - MoveY = 2,13,-26,EaseOut - MoveZoomX = 6,9,0 - MoveZoomY = 6,9,0 - MoveOpacity = 6,9,0 - MoveColorGreen = 6,9,96,EaseOut - MoveColorBlue = 6,9,32,EaseOut - - Graphic = Normal/Scratch spark - Focus = Target - SetX = 0,21 - SetY = 0,4 - SetZ = 0,5 - SetZoomX = 0,40 - SetZoomY = 0,40 - SetOpacity = 0,0 - SetColorRed = 0,248 - SetColorGreen = 0,248 - SetColorBlue = 0,128 - SetColorAlpha = 0,255 - MoveOpacity = 0,1,255 - MoveX = 0,13,93 - MoveY = 0,13,40,EaseIn - MoveZoomX = 4,9,0 - MoveZoomY = 4,9,0 - MoveOpacity = 4,9,0 - MoveColorGreen = 4,9,96,EaseOut - MoveColorBlue = 4,9,32,EaseOut - SetVisible = 13,false - - Graphic = Normal/Scratch spark - Focus = Target - SetX = 2,-7 - SetY = 2,4 - SetZ = 2,5 - SetZoomX = 2,40 - SetZoomY = 2,40 - SetOpacity = 2,0 - SetColorRed = 2,248 - SetColorGreen = 2,248 - SetColorBlue = 2,128 - SetColorAlpha = 2,255 - MoveOpacity = 2,1,255 - MoveX = 2,13,-63 - MoveY = 2,13,43,EaseIn - MoveZoomX = 6,9,0 - MoveZoomY = 6,9,0 - MoveOpacity = 6,9,0 - MoveColorGreen = 6,9,96,EaseOut - MoveColorBlue = 6,9,32,EaseOut - - Graphic = Normal/Scratch spark - Focus = Target - SetX = 1,-1 - SetY = 1,3 - SetZ = 1,5 - SetZoomX = 1,40 - SetZoomY = 1,40 - SetOpacity = 1,0 - SetColorRed = 1,248 - SetColorGreen = 1,248 - SetColorBlue = 1,128 - SetColorAlpha = 1,255 - MoveOpacity = 1,1,255 - MoveX = 1,13,47 - MoveY = 1,13,58,EaseIn - MoveZoomX = 5,9,0 - MoveZoomY = 5,9,0 - MoveOpacity = 5,9,0 - MoveColorGreen = 5,9,96,EaseOut - MoveColorBlue = 5,9,32,EaseOut - SetVisible = 14,false - - Graphic = Normal/Scratch spark - Focus = Target - SetX = 0,10 - SetY = 0,-4 - SetZ = 0,5 - SetZoomX = 0,40 - SetZoomY = 0,40 - SetOpacity = 0,0 - SetColorRed = 0,248 - SetColorGreen = 0,248 - SetColorBlue = 0,128 - SetColorAlpha = 0,255 - MoveOpacity = 0,1,255 - MoveX = 0,13,66 - MoveY = 0,13,11,EaseIn - MoveZoomX = 4,9,0 - MoveZoomY = 4,9,0 - MoveOpacity = 4,9,0 - MoveColorGreen = 4,9,96,EaseOut - MoveColorBlue = 4,9,32,EaseOut - SetVisible = 13,false - - Graphic = Normal/Scratch spark - Focus = Target - SetX = 2,4 - SetY = 2,-2 - SetZ = 2,5 - SetZoomX = 2,40 - SetZoomY = 2,40 - SetOpacity = 2,0 - SetColorRed = 2,248 - SetColorGreen = 2,248 - SetColorBlue = 2,128 - SetColorAlpha = 2,255 - MoveOpacity = 2,1,255 - MoveX = 2,13,8 - MoveY = 2,13,80,EaseIn - MoveZoomX = 6,9,0 - MoveZoomY = 6,9,0 - MoveOpacity = 6,9,0 - MoveColorGreen = 6,9,96,EaseOut - MoveColorBlue = 6,9,32,EaseOut Play = 0,Normal/Scratch diff --git a/PBS/Animations/Normal/Tackle.txt b/PBS/Animations/Normal/Tackle.txt index 2bd3a66c1..168c1e3f0 100644 --- a/PBS/Animations/Normal/Tackle.txt +++ b/PBS/Animations/Normal/Tackle.txt @@ -43,11 +43,11 @@ Name = Essentials MoveZoomY = 5,4,100 MoveOpacity = 5,4,0 SetVisible = 9,false - + Graphic = Normal/Tackle spark Focus = Target - SetX = 4,-11 - SetY = 4,-17 + Spawner = RandomDirectionGravity + SpawnQuantity = 7 SetZ = 4,5 SetZoomX = 4,50 SetZoomY = 4,50 @@ -57,138 +57,11 @@ Name = Essentials SetColorBlue = 4,128 SetColorAlpha = 4,255 MoveOpacity = 4,1,255 - MoveX = 4,13,-102 - MoveY = 4,13,-68,EaseOut MoveZoomX = 8,9,0 MoveZoomY = 8,9,0 MoveOpacity = 8,9,0 MoveColorGreen = 8,9,96,EaseOut MoveColorBlue = 8,9,32,EaseOut - - Graphic = Normal/Tackle spark - Focus = Target - SetX = 5,-3 - SetY = 5,-24 - SetZ = 5,5 - SetZoomX = 5,50 - SetZoomY = 5,50 - SetOpacity = 5,0 - SetColorRed = 5,248 - SetColorGreen = 5,248 - SetColorBlue = 5,128 - SetColorAlpha = 5,255 - MoveOpacity = 5,1,255 - MoveX = 5,13,-40 - MoveY = 5,13,-116,EaseOut - MoveZoomX = 9,9,0 - MoveZoomY = 9,9,0 - MoveOpacity = 9,9,0 - MoveColorGreen = 9,9,96,EaseOut - MoveColorBlue = 9,9,32,EaseOut - - Graphic = Normal/Tackle spark - Focus = Target - SetX = 4,8 - SetY = 4,-7 - SetZ = 4,5 - SetZoomX = 4,50 - SetZoomY = 4,50 - SetOpacity = 4,0 - SetColorRed = 4,248 - SetColorGreen = 4,248 - SetColorBlue = 4,128 - SetColorAlpha = 4,255 - MoveOpacity = 4,1,255 - MoveX = 4,13,-1 - MoveY = 4,13,-94,EaseOut - MoveZoomX = 8,9,0 - MoveZoomY = 8,9,0 - MoveOpacity = 8,9,0 - MoveColorGreen = 8,9,96,EaseOut - MoveColorBlue = 8,9,32,EaseOut - - Graphic = Normal/Tackle spark - Focus = Target - SetX = 5,7 - SetY = 5,-6 - SetZ = 5,5 - SetZoomX = 5,50 - SetZoomY = 5,50 - SetOpacity = 5,0 - SetColorRed = 5,248 - SetColorGreen = 5,248 - SetColorBlue = 5,128 - SetColorAlpha = 5,255 - MoveOpacity = 5,1,255 - MoveX = 5,13,50 - MoveY = 5,13,-106,EaseOut - MoveZoomX = 9,9,0 - MoveZoomY = 9,9,0 - MoveOpacity = 9,9,0 - MoveColorGreen = 9,9,96,EaseOut - MoveColorBlue = 9,9,32,EaseOut - - Graphic = Normal/Tackle spark - Focus = Target - SetX = 4,25 - SetY = 4,-4 - SetZ = 4,5 - SetZoomX = 4,50 - SetZoomY = 4,50 - SetOpacity = 4,0 - SetColorRed = 4,248 - SetColorGreen = 4,248 - SetColorBlue = 4,128 - SetColorAlpha = 4,255 - MoveOpacity = 4,1,255 - MoveX = 4,13,78 - MoveY = 4,13,-28,EaseOut - MoveZoomX = 8,9,0 - MoveZoomY = 8,9,0 - MoveOpacity = 8,9,0 - MoveColorGreen = 8,9,96,EaseOut - MoveColorBlue = 8,9,32,EaseOut - - Graphic = Normal/Tackle spark - Focus = Target - SetX = 4,18 - SetY = 4,-9 - SetZ = 4,5 - SetZoomX = 4,50 - SetZoomY = 4,50 - SetOpacity = 4,0 - SetColorRed = 4,248 - SetColorGreen = 4,248 - SetColorBlue = 4,128 - SetColorAlpha = 4,255 - MoveOpacity = 4,1,255 - MoveX = 4,13,117 - MoveY = 4,13,-77,EaseOut - MoveZoomX = 8,9,0 - MoveZoomY = 8,9,0 - MoveOpacity = 8,9,0 - MoveColorGreen = 8,9,96,EaseOut - MoveColorBlue = 8,9,32,EaseOut - - Graphic = Normal/Tackle spark - Focus = Target - SetX = 5,-3 - SetY = 5,-5 - SetZ = 5,5 - SetZoomX = 5,50 - SetZoomY = 5,50 - SetOpacity = 5,0 - SetColorRed = 5,248 - SetColorGreen = 5,248 - SetColorBlue = 5,128 - SetColorAlpha = 5,255 - MoveOpacity = 5,1,255 - MoveX = 5,13,-112 - MoveY = 5,13,-26,EaseOut - MoveZoomX = 9,9,0 - MoveZoomY = 9,9,0 - MoveOpacity = 9,9,0 - MoveColorGreen = 9,9,96,EaseOut - MoveColorBlue = 9,9,32,EaseOut + SetVisible = 17,false Play = 4,Normal/Tackle