diff --git a/Data/Scripts/801_UI controls/001_UIControls.rb b/Data/Scripts/801_UI controls/001_UIControls.rb new file mode 100644 index 000000000..43108441c --- /dev/null +++ b/Data/Scripts/801_UI controls/001_UIControls.rb @@ -0,0 +1,140 @@ +#=============================================================================== +# Container module for control classes. +#=============================================================================== +module UIControls; end + +#=============================================================================== +# +#=============================================================================== +module UIControls::StyleMixin + COLOR_SCHEMES = { + :dark => { + :background_color => Color.new(32, 32, 32), + :text_color => Color.white, + :disabled_text_color => Color.new(96, 96, 96), + :line_color => Color.white, + :disabled_fill_color => Color.new(128, 128, 128), + :hover_color => Color.new(64, 80, 80), + :capture_color => Color.new(224, 32, 96), + :highlight_color => Color.new(160, 128, 16), + # Sidebars +# :delete_icon_color => Color.new(248, 96, 96), # Unchanged + # Checkbox + :checked_color => Color.new(32, 160, 32), + :unchecked_color => Color.new(160, 160, 160), + # ParticleList +# :position_line_color => Color.new(248, 96, 96), # Unchanged + :after_end_bg_color => Color.new(80, 80, 80), + :se_background_color => Color.new(160, 160, 160), + :property_background_color => Color.new(96, 96, 96), + # ParticleList and Canvas + :focus_colors => { + :foreground => Color.new(80, 112, 248), # Blue + :midground => Color.new(80, 112, 248), # Blue + :background => Color.new(80, 112, 248), # Blue + :user => Color.new(32, 192, 32), # Green + :target => Color.new(192, 32, 32), # Red + :user_and_target => Color.new(192, 192, 32), # Yellow + :user_side_foreground => Color.new(80, 208, 208), # Cyan + :user_side_background => Color.new(80, 208, 208), # Cyan + :target_side_foreground => Color.new(80, 208, 208), # Cyan + :target_side_background => Color.new(80, 208, 208) # Cyan + } + } + } + FOCUS_COLORS = { + :foreground => Color.new(128, 160, 248), # Blue + :midground => Color.new(128, 160, 248), # Blue + :background => Color.new(128, 160, 248), # Blue + :user => Color.new(64, 224, 64), # Green + :target => Color.new(224, 64, 64), # Red + :user_and_target => Color.new(224, 224, 64), # Yellow + :user_side_foreground => Color.new(128, 224, 224), # Cyan + :user_side_background => Color.new(128, 224, 224), # Cyan + :target_side_foreground => Color.new(128, 224, 224), # Cyan + :target_side_background => Color.new(128, 224, 224) # Cyan + } + + def color_scheme_options + return { + :light => _INTL("Light"), + :dark => _INTL("Dark") + } + end + + #----------------------------------------------------------------------------- + + def background_color + return get_color_scheme_color_for_element(:background_color, Color.white) + end + + def semi_transparent_color + return get_color_scheme_color_for_element(:semi_transparent_color, Color.new(0, 0, 0, 128)) + end + + #----------------------------------------------------------------------------- + + def text_color + return get_color_scheme_color_for_element(:text_color, Color.black) + end + + def disabled_text_color + return get_color_scheme_color_for_element(:disabled_text_color, Color.new(160, 160, 160)) + end + + def text_size + return 18 # Default is 22 if size isn't explicitly set + end + + def line_color + return get_color_scheme_color_for_element(:line_color, Color.black) + end + + def delete_icon_color + return get_color_scheme_color_for_element(:delete_icon_color, Color.new(248, 96, 96)) + end + + #----------------------------------------------------------------------------- + + def disabled_fill_color + return get_color_scheme_color_for_element(:disabled_fill_color, Color.gray) + end + + def hover_color + return get_color_scheme_color_for_element(:hover_color, Color.new(224, 255, 255)) + end + + def capture_color + return get_color_scheme_color_for_element(:capture_color, Color.new(255, 64, 128)) + end + + def highlight_color + return get_color_scheme_color_for_element(:highlight_color, Color.new(224, 192, 32)) + end + + #----------------------------------------------------------------------------- + + def color_scheme=(value) + return if @color_scheme == value + @color_scheme = value + self.bitmap.font.color = text_color + self.bitmap.font.size = text_size + invalidate if self.respond_to?(:invalidate) + end + + def get_color_scheme_color_for_element(element, default) + if COLOR_SCHEMES[@color_scheme] && COLOR_SCHEMES[@color_scheme][element] + return COLOR_SCHEMES[@color_scheme][element] + end + return default + end + + def focus_color(focus) + if COLOR_SCHEMES[@color_scheme] && COLOR_SCHEMES[@color_scheme][:focus_colors] && + COLOR_SCHEMES[@color_scheme][:focus_colors][focus] + return COLOR_SCHEMES[@color_scheme][:focus_colors][focus] + end + return FOCUS_COLORS[focus] || Color.magenta + end + +end diff --git a/Data/Scripts/801_UI controls/002_ControlsContainer.rb b/Data/Scripts/801_UI controls/002_ControlsContainer.rb new file mode 100644 index 000000000..27019cf12 --- /dev/null +++ b/Data/Scripts/801_UI controls/002_ControlsContainer.rb @@ -0,0 +1,247 @@ +#=============================================================================== +# Controls are arranged in a list in self's bitmap. Each control is given an +# area of size "self's bitmap's width" x LINE_SPACING to draw itself in. +#=============================================================================== +class UIControls::ControlsContainer + attr_reader :x, :y + attr_accessor :label_offset_x, :label_offset_y + attr_reader :controls + attr_reader :values + attr_reader :visible + attr_reader :viewport + + LINE_SPACING = 28 + OFFSET_FROM_LABEL_X = 100 + OFFSET_FROM_LABEL_Y = 0 + + include UIControls::StyleMixin + + def initialize(x, y, width, height, right_margin = 0) + self.color_scheme = :light + @viewport = Viewport.new(x, y, width, height) + @viewport.z = 99999 + @x = x + @y = y + @width = width + @height = height + @right_margin = right_margin + @label_offset_x = OFFSET_FROM_LABEL_X + @label_offset_y = OFFSET_FROM_LABEL_Y + @controls = [] + @row_count = 0 + @pixel_offset = 0 + @captured = nil + @visible = true + end + + def dispose + @controls.each { |c| c[1]&.dispose } + @controls.clear + @viewport.dispose + end + + #----------------------------------------------------------------------------- + + def visible=(value) + @visible = value + @controls.each { |c| c[1].visible = value } + repaint if @visible + end + + def color_scheme=(value) + return if @color_scheme == value + @color_scheme = value + if @controls + @controls.each { |c| c[1].color_scheme = value } + repaint + end + end + + #----------------------------------------------------------------------------- + + def busy? + return !@captured.nil? + end + + def changed? + return !@values.nil? + end + + def clear_changed + @values = nil + end + + def get_control(id) + ret = nil + @controls.each do |c| + ret = c[1] if c[0] == id + break if ret + end + return ret + end + + #----------------------------------------------------------------------------- + + def add_label(id, label, has_label = false) + id = (id.to_s + "_label").to_sym if !has_label + add_control(id, UIControls::Label.new(*control_size(has_label), @viewport, label), has_label) + end + + def add_labelled_label(id, label, text) + add_label(id, label) + add_label(id, text, true) + end + + def add_header_label(id, label) + ctrl = UIControls::Label.new(*control_size, @viewport, label) + ctrl.header = true + add_control(id, ctrl) + end + + def add_checkbox(id, value, has_label = false) + add_control(id, UIControls::Checkbox.new(*control_size(has_label), @viewport, value), has_label) + end + + def add_labelled_checkbox(id, label, value) + add_label(id, label) + add_checkbox(id, value, true) + end + + def add_text_box(id, value, has_label = false) + add_control(id, UIControls::TextBox.new(*control_size(has_label), @viewport, value), has_label) + end + + def add_labelled_text_box(id, label, value) + add_label(id, label) + add_text_box(id, value, true) + end + + def add_number_slider(id, min_value, max_value, value, has_label = false) + add_control(id, UIControls::NumberSlider.new(*control_size(has_label), @viewport, min_value, max_value, value), has_label) + end + + def add_labelled_number_slider(id, label, min_value, max_value, value) + add_label(id, label) + add_number_slider(id, min_value, max_value, value, true) + end + + def add_number_text_box(id, min_value, max_value, value, has_label = false) + add_control(id, UIControls::NumberTextBox.new(*control_size(has_label), @viewport, min_value, max_value, value), has_label) + end + + def add_labelled_number_text_box(id, label, min_value, max_value, value) + add_label(id, label) + add_number_text_box(id, min_value, max_value, value, true) + end + + def add_button(id, button_text, has_label = false) + add_control(id, UIControls::Button.new(*control_size(has_label), @viewport, button_text), has_label) + end + + def add_labelled_button(id, label, button_text) + add_label(id, label) + add_button(id, button_text, true) + end + + def add_list(id, rows, options, has_label = false) + size = control_size(has_label) + size[0] -= 8 + size[1] = rows * UIControls::List::ROW_HEIGHT + add_control(id, UIControls::List.new(*size, @viewport, options), has_label, rows) + end + + def add_labelled_list(id, label, rows, options) + add_label(id, label) + add_list(id, rows, options, true) + end + + def add_dropdown_list(id, options, value, has_label = false) + add_control(id, UIControls::DropdownList.new(*control_size(has_label), @viewport, options, value), has_label) + end + + def add_labelled_dropdown_list(id, label, options, value) + add_label(id, label) + add_dropdown_list(id, options, value, true) + end + + def add_text_box_dropdown_list(id, options, value, has_label = false) + add_control(id, UIControls::TextBoxDropdownList.new(*control_size(has_label), @viewport, options, value), has_label) + end + + def add_labelled_text_box_dropdown_list(id, label, options, value) + add_label(id, label) + add_text_box_dropdown_list(id, options, value, true) + end + + #----------------------------------------------------------------------------- + + def repaint + @controls.each { |ctrl| ctrl[1].repaint } + end + + def refresh; end + + #----------------------------------------------------------------------------- + + def update + return if !@visible + # Update controls + if @captured + @captured.update + @captured = nil if !@captured.busy? + else + @controls.each do |ctrl| + ctrl[1].update + @captured = ctrl[1] if ctrl[1].busy? + end + end + # Check for updated controls + @controls.each do |ctrl| + next if !ctrl[1].changed? + @values ||= {} + @values[ctrl[0]] = ctrl[1].value + ctrl[1].clear_changed + end + # Redraw controls if needed + repaint + end + + #----------------------------------------------------------------------------- + + def control_size(has_label = false) + if has_label + return @width - @label_offset_x - @right_margin, LINE_SPACING - @label_offset_y + end + return @width, LINE_SPACING + end + + def next_control_position(add_offset = false) + row_x = 0 + row_x += @label_offset_x if add_offset + row_y = @row_count * LINE_SPACING + row_y += @label_offset_y - LINE_SPACING if add_offset + row_y += @pixel_offset + return row_x, row_y + end + + def add_control_at(id, control, x, y) + control.x = x + control.y = y + control.color_scheme = @color_scheme + control.set_interactive_rects + @controls.push([id, control]) + repaint + end + + def add_control(id, control, add_offset = false, rows = 1) + ctrl_x, ctrl_y = next_control_position(add_offset) + ctrl_x += 4 if control.is_a?(UIControls::List) + add_control_at(id, control, ctrl_x, ctrl_y) + increment_row_count(rows) if !add_offset + @pixel_offset -= (LINE_SPACING - UIControls::List::ROW_HEIGHT) * (rows - 1) if control.is_a?(UIControls::List) + end + + def increment_row_count(count) + @row_count += count + end +end diff --git a/Data/Scripts/801_UI controls/Control elements/001_BaseControl.rb b/Data/Scripts/801_UI controls/Control elements/001_BaseControl.rb new file mode 100644 index 000000000..40518718a --- /dev/null +++ b/Data/Scripts/801_UI controls/Control elements/001_BaseControl.rb @@ -0,0 +1,206 @@ +#=============================================================================== +# +#=============================================================================== +class UIControls::BaseControl < BitmapSprite + attr_reader :value + attr_accessor :disabled + + TEXT_OFFSET_Y = 5 + + include UIControls::StyleMixin + + def initialize(width, height, viewport) + super(width, height, viewport) + self.color_scheme = :light + @disabled = false + @hover_area = nil # Is a symbol from the keys for @interactions if the mouse is hovering over that interaction + @captured_area = nil # Is a symbol from the keys for @interactions (or :none) if this control is clicked in + clear_changed + invalidate + end + + #----------------------------------------------------------------------------- + + def width + return self.bitmap.width + end + + def height + return self.bitmap.height + end + + def visible=(value) + super + @captured_area = nil if !self.visible + end + + #----------------------------------------------------------------------------- + + def mouse_pos + mouse_coords = Mouse.getMousePos + return nil, nil if !mouse_coords + ret_x = mouse_coords[0] - self.viewport.rect.x - self.x + ret_y = mouse_coords[1] - self.viewport.rect.y - self.y + return ret_x, ret_y + end + + def mouse_in_control? + return false if !@interactions || @interactions.empty? + mouse_x, mouse_y = mouse_pos + return false if !mouse_x || !mouse_y + return @interactions.any? { |area, rect| rect.contains?(mouse_x, mouse_y) } + end + + def disabled? + return @disabled + end + + def disable + return if disabled? + @disabled = true + @hover_area = nil + invalidate + end + + def enable + return if !disabled? + @disabled = false + invalidate + end + + def invalid? + return @invalid + end + + # Marks that the control must be redrawn to reflect current logic. + def invalidate + @invalid = true + end + + # Makes the control no longer invalid. Called after repainting. + def validate + @invalid = false + end + + def busy? + return self.visible && !@captured_area.nil? + end + + def changed? + return @changed + end + + def set_changed + @changed = true + end + + def clear_changed + @changed = false + end + + #----------------------------------------------------------------------------- + + def set_interactive_rects + @interactions = {} + end + + #----------------------------------------------------------------------------- + + def draw_text(this_bitmap, text_x, text_y, this_text) + text_size = this_bitmap.text_size(this_text.to_s) + this_bitmap.draw_text(text_x, text_y, text_size.width, text_size.height, this_text.to_s, 0) + end + + def draw_text_centered(this_bitmap, text_x, text_y, wid, this_text) + text_size = this_bitmap.text_size(this_text.to_s) + this_bitmap.draw_text(text_x, text_y, wid, text_size.height, this_text.to_s, 1) + end + + # Redraws the control only if it is invalid. + def repaint + return if !invalid? + refresh + validate + end + + def refresh + self.bitmap.clear + draw_area_highlight + end + + def draw_area_highlight + return if !@interactions || @interactions.empty? + if !@captured_area || @hover_area == @captured_area + # Draw mouse hover over area highlight + rect = @interactions[@hover_area] + self.bitmap.fill_rect(rect.x, rect.y, rect.width, rect.height, hover_color) if rect + elsif @captured_area + # Draw captured area highlight + rect = @interactions[@captured_area] + self.bitmap.fill_rect(rect.x, rect.y, rect.width, rect.height, capture_color) if rect + end + end + + #----------------------------------------------------------------------------- + + # This method is only called if the mouse is in the game window and this + # control has interactive elements. + def on_mouse_press + return if !@interactions || @interactions.empty? + return if @captured_area + @captured_area = nil + mouse_x, mouse_y = mouse_pos + return if !mouse_x || !mouse_y + @interactions.each_pair do |area, rect| + next if !rect.contains?(mouse_x, mouse_y) + @captured_area = area + invalidate + break + end + end + + def on_mouse_release + @captured_area = nil + invalidate + end + + def update_hover_highlight + # Remove the hover highlight if there are no interactions for this control + # or if the mouse is off-screen + mouse_x, mouse_y = mouse_pos + if !@interactions || @interactions.empty? || !mouse_x || !mouse_y + invalidate if @hover_area + @hover_area = nil + return + end + # Check each interactive area for whether the mouse is hovering over it, and + # set @hover_area accordingly + in_area = false + @interactions.each_pair do |area, rect| + next if !rect.contains?(mouse_x, mouse_y) + invalidate if @hover_area != area + @hover_area = area + in_area = true + break + end + if !in_area + invalidate if @hover_area + @hover_area = nil + end + end + + # Updates the logic on the control, invalidating it if necessary. + def update + return if !self.visible + return if disabled? && !busy? # This control still works if it becomes disabled while using it + update_hover_highlight + # Detect a mouse press/release + if @interactions && !@interactions.empty? + if Input.trigger?(Input::MOUSELEFT) + on_mouse_press + elsif busy? && Input.release?(Input::MOUSELEFT) + on_mouse_release + end + end + end +end diff --git a/Data/Scripts/801_UI controls/Control elements/002_Label.rb b/Data/Scripts/801_UI controls/Control elements/002_Label.rb new file mode 100644 index 000000000..89ef4abc3 --- /dev/null +++ b/Data/Scripts/801_UI controls/Control elements/002_Label.rb @@ -0,0 +1,43 @@ +#=============================================================================== +# +#=============================================================================== +class UIControls::Label < UIControls::BaseControl + attr_reader :text + + def initialize(width, height, viewport, text) + super(width, height, viewport) + @text = text + @header = false + end + + #----------------------------------------------------------------------------- + + def text=(value) + @text = value + refresh + end + + def header=(val) + @header = val + refresh + end + + def text_width + return self.bitmap.text_size(@text).width + end + + #----------------------------------------------------------------------------- + + def refresh + super + if @header + draw_text_centered(self.bitmap, 0, TEXT_OFFSET_Y, width, @text) + # Draw underline + text_size = self.bitmap.text_size(@text) + self.bitmap.fill_rect((width - text_size.width) / 2, TEXT_OFFSET_Y + text_size.height, + text_size.width, 1, line_color) + else + draw_text(self.bitmap, 4, TEXT_OFFSET_Y, @text) + end + end +end diff --git a/Data/Scripts/801_UI controls/Control elements/003_Checkbox.rb b/Data/Scripts/801_UI controls/Control elements/003_Checkbox.rb new file mode 100644 index 000000000..e8aed50df --- /dev/null +++ b/Data/Scripts/801_UI controls/Control elements/003_Checkbox.rb @@ -0,0 +1,82 @@ +#=============================================================================== +# NOTE: Strictly speaking, this is a toggle switch and not a checkbox. +#=============================================================================== +class UIControls::Checkbox < UIControls::BaseControl + CHECKBOX_X = 2 + CHECKBOX_WIDTH = 40 + CHECKBOX_HEIGHT = 24 + CHECKBOX_FILL_SIZE = CHECKBOX_HEIGHT - 4 + + def initialize(width, height, viewport, value = false) + super(width, height, viewport) + @value = value + end + + #----------------------------------------------------------------------------- + + def value=(new_value) + return if @value == new_value + @value = new_value + invalidate + end + + def checked_color + return get_color_scheme_color_for_element(:checked_color, Color.new(48, 192, 48)) + end + + def unchecked_color + return get_color_scheme_color_for_element(:unchecked_color, Color.gray) + end + + #----------------------------------------------------------------------------- + + def set_interactive_rects + @checkbox_rect = Rect.new(CHECKBOX_X, (height - CHECKBOX_HEIGHT) / 2, + CHECKBOX_WIDTH, CHECKBOX_HEIGHT) + @interactions = { + :checkbox => @checkbox_rect + } + end + + #----------------------------------------------------------------------------- + + def refresh + super + # Draw disabled colour + if disabled? + self.bitmap.fill_rect(@checkbox_rect.x, @checkbox_rect.y, + @checkbox_rect.width, @checkbox_rect.height, + disabled_fill_color) + end + # Draw checkbox outline + self.bitmap.outline_rect(@checkbox_rect.x, @checkbox_rect.y, + @checkbox_rect.width, @checkbox_rect.height, + line_color) + # Draw checkbox fill + box_x = (@value) ? @checkbox_rect.width - CHECKBOX_FILL_SIZE - 2 : 2 + if disabled? + box_color = disabled_text_color + else + box_color = (@value) ? checked_color : unchecked_color + end + self.bitmap.fill_rect(@checkbox_rect.x + box_x, @checkbox_rect.y + 2, + CHECKBOX_FILL_SIZE, CHECKBOX_FILL_SIZE, box_color) + self.bitmap.outline_rect(@checkbox_rect.x + box_x, @checkbox_rect.y + 2, + CHECKBOX_FILL_SIZE, CHECKBOX_FILL_SIZE, line_color) + end + + #----------------------------------------------------------------------------- + + def on_mouse_release + return if !@captured_area # Wasn't captured to begin with + # Change this control's value + if @captured_area == :checkbox + mouse_x, mouse_y = mouse_pos + if mouse_x && mouse_y && @interactions[@captured_area].contains?(mouse_x, mouse_y) + @value = !@value # The actual change of this control's value + set_changed + end + end + super # Make this control not busy again + end +end diff --git a/Data/Scripts/801_UI controls/Control elements/004_TextBox.rb b/Data/Scripts/801_UI controls/Control elements/004_TextBox.rb new file mode 100644 index 000000000..9cec69402 --- /dev/null +++ b/Data/Scripts/801_UI controls/Control elements/004_TextBox.rb @@ -0,0 +1,318 @@ +#=============================================================================== +# +#=============================================================================== +class UIControls::TextBox < UIControls::BaseControl + attr_accessor :box_width + + TEXT_BOX_X = 2 + TEXT_BOX_WIDTH = 200 + TEXT_BOX_HEIGHT = 24 + TEXT_BOX_PADDING = 4 # Gap between sides of text box and text + + def initialize(width, height, viewport, value = "") + super(width, height, viewport) + @value = value + @box_width = TEXT_BOX_WIDTH + @cursor_pos = -1 + @display_pos = 0 + @cursor_timer = nil + @cursor_shown = false + @blacklist = [] + end + + #----------------------------------------------------------------------------- + + def value + return @value.dup + end + + def value=(new_value) + return if @value.to_s == new_value.to_s + @value = new_value.to_s.dup + invalidate + end + + def insert_char(ch) + @value.insert(@cursor_pos, ch) + @cursor_pos += 1 + @cursor_timer = System.uptime + @cursor_shown = true + invalidate + end + + def delete_at(index) + @value = @value.to_s + @value.slice!(index) + @cursor_pos -= 1 if @cursor_pos > index + @cursor_timer = System.uptime + @cursor_shown = true + invalidate + end + + def cursor_pos=(val) + @cursor_pos = val + reset_display_pos + @cursor_timer = System.uptime + @cursor_shown = true + invalidate + end + + def set_blacklist(*list) + @blacklist = list + invalidate + end + + #----------------------------------------------------------------------------- + + def get_cursor_index_from_mouse_position + char_widths = [] + @value.to_s.length.times { |i| char_widths[i] = self.bitmap.text_size(@value.to_s[i]).width } + mouse_x, mouse_y = mouse_pos + mouse_x -= @text_box_rect.x + TEXT_BOX_PADDING + return 0 if mouse_x < 0 + (@display_pos...char_widths.length).each do |i| + mouse_x -= char_widths[i] + if mouse_x <= 0 + return (mouse_x.abs >= char_widths[i] / 2) ? i : i + 1 + end + end + return @value.to_s.length + end + + def disabled? + val = (@value.respond_to?("strip!")) ? @value.strip : @value + return true if @blacklist.include?(val) + return super + end + + def busy? + return @cursor_pos >= 0 if @captured_area == :text_box + return super + end + + #----------------------------------------------------------------------------- + + def set_interactive_rects + @text_box_rect = Rect.new(TEXT_BOX_X, (height - TEXT_BOX_HEIGHT) / 2, + [@box_width, width - (TEXT_BOX_X * 2)].min, TEXT_BOX_HEIGHT) + @interactions = { + :text_box => @text_box_rect + } + end + + def reset_interaction + @cursor_pos = -1 + @display_pos = 0 + @cursor_timer = nil + @initial_value = nil + Input.text_input = false + invalidate + end + + def reset_display_pos + box_width = @text_box_rect.width - (TEXT_BOX_PADDING * 2) + char_widths = [] + @value.to_s.length.times { |i| char_widths[i] = self.bitmap.text_size(@value.to_s[i]).width } + # Text isn't wider than the box + if char_widths.sum <= box_width + return false if @display_pos == 0 + @display_pos = 0 + return true + end + display_pos_changed = false + # Ensure the cursor hasn't gone off the left side of the text box + if @cursor_pos < @display_pos + @display_pos = @cursor_pos + display_pos_changed = true + end + # Ensure the cursor hasn't gone off the right side of the text box + if @cursor_pos > @display_pos + loop do + cursor_x = 0 + (@display_pos...@cursor_pos).each do |i| + cursor_x += char_widths[i] if char_widths[i] + end + break if cursor_x < box_width + @display_pos += 1 + display_pos_changed = true + break if @display_pos == @cursor_pos + end + end + # Ensure there isn't empty space on the right if the text can be moved to + # the right to fill it + if @display_pos > 0 + cursor_x = 0 + (@display_pos...char_widths.length).each do |i| + cursor_x += char_widths[i] if char_widths[i] + end + loop do + cursor_x += char_widths[@display_pos - 1] + break if cursor_x >= box_width + @display_pos -= 1 + display_pos_changed = true + break if @display_pos == 0 + end + end + return display_pos_changed + end + + #----------------------------------------------------------------------------- + + def draw_area_highlight + return if @captured_area == :text_box && (@hover_area == @captured_area || !Input.press?(Input::MOUSELEFT)) + super + end + + def draw_cursor(cursor_x) + return if !@cursor_shown || @cursor_pos < 0 + cursor_y_offset = ((height - TEXT_BOX_HEIGHT) / 2) + 2 + cursor_height = height - (cursor_y_offset * 2) + bitmap.fill_rect(cursor_x, cursor_y_offset, 2, cursor_height, text_color) + end + + def refresh + super + # Draw disabled colour + if disabled? + self.bitmap.fill_rect(@text_box_rect.x, @text_box_rect.y, + @text_box_rect.width, @text_box_rect.height, + disabled_fill_color) + end + # Draw text box outline + self.bitmap.outline_rect(@text_box_rect.x, @text_box_rect.y, + @text_box_rect.width, @text_box_rect.height, + line_color) + # Draw value + char_x = @text_box_rect.x + TEXT_BOX_PADDING + last_char_index = @display_pos + (@value.to_s.length - @display_pos).times do |i| + char = @value.to_s[@display_pos + i] + char_width = self.bitmap.text_size(char).width + cannot_display_next_char = char_x + char_width > @text_box_rect.x + @text_box_rect.width - TEXT_BOX_PADDING + draw_text(self.bitmap, char_x, TEXT_OFFSET_Y, char) if !cannot_display_next_char + # Draw cursor + draw_cursor(char_x - 1) if @display_pos + i == @cursor_pos + break if cannot_display_next_char + last_char_index = @display_pos + i + char_x += char_width + end + # Draw cursor at end + draw_cursor(char_x - 1) if @cursor_pos == @value.to_s.length + # Draw left/right arrows to indicate more text beyond the text box sides + arrow_color = (disabled?) ? disabled_text_color : text_color + if @display_pos > 0 + bitmap.fill_rect(@text_box_rect.x, (height / 2) - 4, 1, 8, background_color) + 5.times do |i| + bitmap.fill_rect(@text_box_rect.x - 2 + i, (height / 2) - (i + 1), 1, 2 * (i + 1), arrow_color) + end + end + if last_char_index < @value.to_s.length - 1 + bitmap.fill_rect(@text_box_rect.x + @text_box_rect.width - 1, (height / 2) - 4, 1, 8, background_color) + 5.times do |i| + bitmap.fill_rect(@text_box_rect.x + @text_box_rect.width + 1 - i, (height / 2) - (i + 1), 1, 2 * (i + 1), arrow_color) + end + end + end + + #----------------------------------------------------------------------------- + + def on_mouse_press + @captured_area = nil + super + if @captured_area == :text_box + # Clicked into the text box; put the text cursor in there + @cursor_pos = get_cursor_index_from_mouse_position + @cursor_timer = System.uptime + invalidate + else + @value.strip! if @value.respond_to?("strip!") + @value = @initial_value if disabled? + set_changed if @initial_value && @value != @initial_value + reset_interaction + end + end + + def on_mouse_release + return if !@captured_area # Wasn't captured to begin with + # Start text entry if clicked and released mouse button in the text box + if @captured_area == :text_box + mouse_x, mouse_y = mouse_pos + if mouse_x && mouse_y && @interactions[@captured_area].contains?(mouse_x, mouse_y) + @initial_value = @value.clone + Input.text_input = true + invalidate + return # This control is still captured + end + end + # Released mouse button outside of text box, or initially clicked outside of + # text box; end interaction with this control + @value.strip! if @value.respond_to?("strip!") + @value = @initial_value if disabled? + set_changed if @initial_value && @value != @initial_value + reset_interaction + super # Make this control not busy again + end + + def update_special_inputs + # Left/right to move cursor + if Input.triggerex?(:LEFT) || Input.repeatex?(:LEFT) + self.cursor_pos = @cursor_pos - 1 if @cursor_pos > 0 + elsif Input.triggerex?(:RIGHT) || Input.repeatex?(:RIGHT) + self.cursor_pos = @cursor_pos + 1 if @cursor_pos < @value.to_s.length + end + # Home/End to jump to start/end of the text + if Input.triggerex?(:HOME) || Input.repeatex?(:HOME) + self.cursor_pos = 0 + elsif Input.triggerex?(:END) || Input.repeatex?(:END) + self.cursor_pos = @value.to_s.length + end + # Backspace/Delete to remove text + if Input.triggerex?(:BACKSPACE) || Input.repeatex?(:BACKSPACE) + delete_at(@cursor_pos - 1) if @cursor_pos > 0 + elsif Input.triggerex?(:DELETE) || Input.repeatex?(:DELETE) + delete_at(@cursor_pos) if @cursor_pos < @value.to_s.length + end + # Return/Escape to end text input (Escape undoes the change) + if Input.triggerex?(:RETURN) || Input.repeatex?(:RETURN) || + Input.triggerex?(:KP_ENTER) || Input.repeatex?(:KP_ENTER) + @value.strip! if @value.respond_to?("strip!") + @value = @initial_value if disabled? + set_changed if @initial_value && @value != @initial_value + reset_interaction + @captured_area = nil + elsif Input.triggerex?(:ESCAPE) || Input.repeatex?(:ESCAPE) + @value = @initial_value if @initial_value + reset_interaction + @captured_area = nil + end + end + + def update_text_entry + ret = false + Input.gets.each_char do |ch| + insert_char(ch) + ret = true + end + return ret + end + + def update + return if !self.visible + super + # Make the cursor flash + if @captured_area == :text_box + cursor_to_show = ((System.uptime - @cursor_timer) / 0.35).to_i.even? + if cursor_to_show != @cursor_shown + @cursor_shown = cursor_to_show + invalidate + end + old_cursor_pos = @cursor_pos + # Update cursor movement, deletions and ending text input + update_special_inputs + return if @cursor_pos != old_cursor_pos || !busy? + # Detect character input and add them to @value + char_inserted = update_text_entry + invalidate if reset_display_pos || char_inserted + end + end +end diff --git a/Data/Scripts/801_UI controls/Control elements/005_NumberSlider.rb b/Data/Scripts/801_UI controls/Control elements/005_NumberSlider.rb new file mode 100644 index 000000000..3a80d1f3c --- /dev/null +++ b/Data/Scripts/801_UI controls/Control elements/005_NumberSlider.rb @@ -0,0 +1,128 @@ +#=============================================================================== +# +#=============================================================================== +class UIControls::NumberSlider < UIControls::BaseControl + attr_reader :min_value + attr_reader :max_value + + PLUS_MINUS_SIZE = 16 + SLIDER_PADDING = 6 # Gap between sides of interactive area for slider and drawn slider bar + MINUS_X = 0 + SLIDER_X = MINUS_X + PLUS_MINUS_SIZE + SLIDER_PADDING + SLIDER_LENGTH = 128 + PLUS_X = SLIDER_X + SLIDER_LENGTH + SLIDER_PADDING + VALUE_X = PLUS_X + PLUS_MINUS_SIZE + 5 + + def initialize(width, height, viewport, min_value, max_value, value) + super(width, height, viewport) + @min_value = min_value + @max_value = max_value + self.value = value + end + + #----------------------------------------------------------------------------- + + def value=(new_value) + old_val = @value + @value = new_value.to_i.clamp(self.min_value, self.max_value) + self.invalidate if @value != old_val + end + + def min_value=(new_min) + return if new_min == @min_value + @min_value = new_min + @value = @value.clamp(self.min_value, self.max_value) + self.invalidate + end + + def max_value=(new_max) + return if new_max == @max_value + @max_value = new_max + @value = @value.clamp(self.min_value, self.max_value) + self.invalidate + end + + #----------------------------------------------------------------------------- + + def set_interactive_rects + @slider_rect = Rect.new(SLIDER_X - SLIDER_PADDING, (self.height - PLUS_MINUS_SIZE) / 2, SLIDER_LENGTH + (SLIDER_PADDING * 2), PLUS_MINUS_SIZE) + @minus_rect = Rect.new(MINUS_X, (self.height - PLUS_MINUS_SIZE) / 2, PLUS_MINUS_SIZE, PLUS_MINUS_SIZE) + @plus_rect = Rect.new(PLUS_X, (self.height - PLUS_MINUS_SIZE) / 2, PLUS_MINUS_SIZE, PLUS_MINUS_SIZE) + @interactions = { + :slider => @slider_rect, + :minus => @minus_rect, + :plus => @plus_rect + } + end + + #----------------------------------------------------------------------------- + + def draw_area_highlight + # Don't want to ever highlight the slider with the capture color, because + # the mouse doesn't need to be on the slider to change this control's value + if @captured_area == :slider + rect = @interactions[@captured_area] + self.bitmap.fill_rect(rect.x, rect.y, rect.width, rect.height, hover_color) if rect + else + super + end + end + + def refresh + super + button_color = (disabled?) ? disabled_text_color : text_color + # Draw minus button + self.bitmap.fill_rect(@minus_rect.x + 2, @minus_rect.y + (@minus_rect.height / 2) - 2, @minus_rect.width - 4, 4, button_color) + # Draw slider bar + self.bitmap.fill_rect(SLIDER_X, (self.height / 2) - 1, SLIDER_LENGTH, 2, text_color) + # Draw notches on slider bar + 5.times do |i| + self.bitmap.fill_rect(SLIDER_X - 1 + (i * SLIDER_LENGTH / 4), (self.height / 2) - 2, 2, 4, text_color) + end + # Draw slider knob + fraction = (self.value - self.min_value) / (self.max_value.to_f - self.min_value) + knob_x = (SLIDER_LENGTH * fraction).to_i + self.bitmap.fill_rect(SLIDER_X + knob_x - 4, (self.height / 2) - 6, 8, 12, button_color) + # Draw plus button + self.bitmap.fill_rect(@plus_rect.x + 2, @plus_rect.y + (@plus_rect.height / 2) - 2, @plus_rect.width - 4, 4, button_color) + self.bitmap.fill_rect(@plus_rect.x + (@plus_rect.width / 2) - 2, @plus_rect.y + 2, 4, @plus_rect.height - 4, button_color) + # Draw value text + draw_text(self.bitmap, VALUE_X, TEXT_OFFSET_Y, self.value.to_s) + end + + #----------------------------------------------------------------------------- + + def on_mouse_press + super + @initial_value = @value if @captured_area + end + + def on_mouse_release + return if !@captured_area # Wasn't captured to begin with + set_changed if @initial_value && @value != @initial_value + @initial_value = nil + super + end + + def update + return if !self.visible + super + case @captured_area + when :minus + # Constant decrement of value while pressing the minus button + if @hover_area == @captured_area && Input.repeat?(Input::MOUSELEFT) + self.value -= 1 + end + when :plus + # Constant incrementing of value while pressing the plus button + if @hover_area == @captured_area && Input.repeat?(Input::MOUSELEFT) + self.value += 1 + end + when :slider + # Constant updating of value depending on mouse's x position + mouse_x, mouse_y = mouse_pos + return if !mouse_x || !mouse_y + self.value = lerp(self.min_value, self.max_value + (self.max_value & 1), SLIDER_LENGTH, mouse_x - SLIDER_X) + end + end +end diff --git a/Data/Scripts/801_UI controls/Control elements/006_NumberTextBox.rb b/Data/Scripts/801_UI controls/Control elements/006_NumberTextBox.rb new file mode 100644 index 000000000..d0b8ecf1b --- /dev/null +++ b/Data/Scripts/801_UI controls/Control elements/006_NumberTextBox.rb @@ -0,0 +1,145 @@ +#=============================================================================== +# +#=============================================================================== +class UIControls::NumberTextBox < UIControls::TextBox + attr_reader :min_value + attr_reader :max_value + + PLUS_MINUS_SIZE = 16 + CONTROL_PADDING = 2 # Gap between buttons and text box + MINUS_X = 0 + TEXT_BOX_X = MINUS_X + PLUS_MINUS_SIZE + CONTROL_PADDING + TEXT_BOX_WIDTH = 64 + TEXT_BOX_HEIGHT = 24 + PLUS_X = TEXT_BOX_X + TEXT_BOX_WIDTH + CONTROL_PADDING + + def initialize(width, height, viewport, min_value, max_value, value) + super(width, height, viewport, value) + @min_value = min_value + @max_value = max_value + self.value = value + end + + #----------------------------------------------------------------------------- + + def value=(new_value) + old_val = @value.to_i + @value = new_value.to_i.clamp(self.min_value, self.max_value) + invalidate if @value != old_val + end + + def min_value=(new_min) + return if new_min == @min_value + @min_value = new_min + @value = @value.to_i.clamp(self.min_value, self.max_value) + invalidate + end + + def max_value=(new_max) + return if new_max == @max_value + @max_value = new_max + @value = @value.to_i.clamp(self.min_value, self.max_value) + invalidate + end + + def insert_char(ch, index = -1) + @value = @value.to_s.insert((index >= 0) ? index : @cursor_pos, ch) + @cursor_pos += 1 + @cursor_timer = System.uptime + @cursor_shown = true + invalidate + end + + #----------------------------------------------------------------------------- + + def set_interactive_rects + @text_box_rect = Rect.new(TEXT_BOX_X, (height - TEXT_BOX_HEIGHT) / 2, + TEXT_BOX_WIDTH, TEXT_BOX_HEIGHT) + @minus_rect = Rect.new(MINUS_X, (self.height - PLUS_MINUS_SIZE) / 2, PLUS_MINUS_SIZE, PLUS_MINUS_SIZE) + @plus_rect = Rect.new(PLUS_X, (self.height - PLUS_MINUS_SIZE) / 2, PLUS_MINUS_SIZE, PLUS_MINUS_SIZE) + @interactions = { + :text_box => @text_box_rect, + :minus => @minus_rect, + :plus => @plus_rect + } + end + + def reset_interaction + super + self.value = @value # Turn value back into a number and clamp it + end + + #----------------------------------------------------------------------------- + + def refresh + super + button_color = (disabled?) ? disabled_text_color : text_color + # Draw minus button + self.bitmap.fill_rect(@minus_rect.x + 2, @minus_rect.y + (@minus_rect.height / 2) - 2, @minus_rect.width - 4, 4, button_color) + # Draw plus button + self.bitmap.fill_rect(@plus_rect.x + 2, @plus_rect.y + (@plus_rect.height / 2) - 2, @plus_rect.width - 4, 4, button_color) + self.bitmap.fill_rect(@plus_rect.x + (@plus_rect.width / 2) - 2, @plus_rect.y + 2, 4, @plus_rect.height - 4, button_color) + end + + #----------------------------------------------------------------------------- + + def on_mouse_press + @captured_area = nil + super + if @captured_area == :text_box + # Clicked into the text box; put the text cursor in there + @cursor_pos = get_cursor_index_from_mouse_position + @cursor_timer = System.uptime + invalidate + elsif @captured_area + @initial_value = @value + else + reset_interaction + set_changed if @initial_value && @value != @initial_value + end + end + + def update_text_entry + ret = false + Input.gets.each_char do |ch| + case ch + when "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" + if (@value.to_s == "-0" && @cursor_pos > 1) || + (@value.to_s == "0" && @cursor_pos > 0) + @value = @value.to_s.chop + @cursor_pos -= 1 + end + insert_char(ch) + ret = true + when "-", "+" + @value = @value.to_s + if @value[0] == "-" + delete_at(0) # Remove the negative sign + ret = true + elsif ch == "-" + insert_char(ch, 0) # Add a negative sign at the start + ret = true + end + next + end + end + return ret + end + + def update + return if !self.visible + super + case @captured_area + when :minus + # Constant decrement of value while pressing the minus button + if @hover_area == @captured_area && Input.repeat?(Input::MOUSELEFT) + self.value -= 1 + end + when :plus + # Constant incrementing of value while pressing the plus button + if @hover_area == @captured_area && Input.repeat?(Input::MOUSELEFT) + self.value += 1 + end + end + end +end diff --git a/Data/Scripts/801_UI controls/Control elements/007_Button.rb b/Data/Scripts/801_UI controls/Control elements/007_Button.rb new file mode 100644 index 000000000..c6d04a09d --- /dev/null +++ b/Data/Scripts/801_UI controls/Control elements/007_Button.rb @@ -0,0 +1,122 @@ +#=============================================================================== +# +#=============================================================================== +class UIControls::Button < UIControls::BaseControl + BUTTON_X = 2 + BUTTON_Y = 2 + BUTTON_PADDING = 10 # Used when @fixed_size is false + BUTTON_HEIGHT = 28 # Used when @fixed_size is false + TEXT_BASE_OFFSET_Y = 18 # Text is centred vertically in the button + + def initialize(width, height, viewport, text = "") + super(width, height, viewport) + @text = text + @fixed_size = false + @highlight = false + end + + #----------------------------------------------------------------------------- + + def set_fixed_size + @fixed_size = true + end + + def set_text(val) + return if @text == val + @text = val + set_interactive_rects if !@fixed_size + invalidate + end + + #----------------------------------------------------------------------------- + + def disabled? + return highlighted? || super + end + + def set_changed + @value = true + super + end + + def clear_changed + @value = false + super + end + + def highlighted? + return @highlight + end + + def set_highlighted + return if highlighted? + @highlight = true + invalidate + end + + def set_not_highlighted + return if !highlighted? + @highlight = false + invalidate + end + + #----------------------------------------------------------------------------- + + def set_interactive_rects + @interactions&.clear + button_width = (@fixed_size) ? width - (BUTTON_X * 2) : self.bitmap.text_size(@text).width + (BUTTON_PADDING * 2) + button_height = (@fixed_size) ? height - (2 * BUTTON_Y) : BUTTON_HEIGHT + button_height = [button_height, height - (2 * BUTTON_Y)].min + @button_rect = Rect.new(BUTTON_X, (height - button_height) / 2, button_width, button_height) + @interactions = { + :button => @button_rect + } + end + + #----------------------------------------------------------------------------- + + def refresh + super + if highlighted? + # Draw highligted colour + self.bitmap.fill_rect(@button_rect.x, @button_rect.y, + @button_rect.width, @button_rect.height, + highlight_color) + elsif disabled? + # Draw disabled colour + self.bitmap.fill_rect(@button_rect.x, @button_rect.y, + @button_rect.width, @button_rect.height, + disabled_fill_color) + end + # Draw button outline + self.bitmap.outline_rect(@button_rect.x, @button_rect.y, + @button_rect.width, @button_rect.height, + line_color) + # Draw inner grey ring that shows this is a button rather than a text box + if !disabled? + shade = line_color.clone + shade.alpha = (shade.red > 128) ? 160 : 64 + self.bitmap.outline_rect(@button_rect.x + 2, @button_rect.y + 2, + @button_rect.width - 4, @button_rect.height - 4, + shade, 1) + end + # Draw button text + draw_text_centered(self.bitmap, @button_rect.x, + @button_rect.y + (@button_rect.height - TEXT_BASE_OFFSET_Y) / 2, + @button_rect.width, @text) + end + + #----------------------------------------------------------------------------- + + def on_mouse_release + return if !@captured_area # Wasn't captured to begin with + # Change this control's value + if @captured_area == :button + mouse_x, mouse_y = mouse_pos + if mouse_x && mouse_y && @interactions[@captured_area].contains?(mouse_x, mouse_y) + set_changed + end + end + super # Make this control not busy again + end +end diff --git a/Data/Scripts/801_UI controls/Control elements/008_BitmapButton.rb b/Data/Scripts/801_UI controls/Control elements/008_BitmapButton.rb new file mode 100644 index 000000000..5f72a3f12 --- /dev/null +++ b/Data/Scripts/801_UI controls/Control elements/008_BitmapButton.rb @@ -0,0 +1,38 @@ +#=============================================================================== +# +#=============================================================================== +class UIControls::BitmapButton < UIControls::Button + BUTTON_PADDING = 4 + + def initialize(x, y, viewport, button_bitmap, disabled_bitmap = nil) + super(button_bitmap.width + (BUTTON_PADDING * 2), button_bitmap.height + (BUTTON_PADDING * 2), viewport) + self.x = x + self.y = y + @button_bitmap = button_bitmap + @disabled_bitmap = disabled_bitmap + end + + #----------------------------------------------------------------------------- + + def set_interactive_rects + @interactions&.clear + @button_rect = Rect.new(0, 0, width, height) + @interactions = { + :button => @button_rect + } + end + + #----------------------------------------------------------------------------- + + def refresh + super + # Draw button bitmap + if @disabled_bitmap && disabled? + self.bitmap.blt(BUTTON_PADDING, BUTTON_PADDING, @disabled_bitmap, + Rect.new(0, 0, @disabled_bitmap.width, @disabled_bitmap.height)) + else + self.bitmap.blt(BUTTON_PADDING, BUTTON_PADDING, @button_bitmap, + Rect.new(0, 0, @button_bitmap.width, @button_bitmap.height)) + end + end +end diff --git a/Data/Scripts/801_UI controls/Control elements/009_List.rb b/Data/Scripts/801_UI controls/Control elements/009_List.rb new file mode 100644 index 000000000..059602b12 --- /dev/null +++ b/Data/Scripts/801_UI controls/Control elements/009_List.rb @@ -0,0 +1,278 @@ +#=============================================================================== +# +#=============================================================================== +class UIControls::List < UIControls::BaseControl + BORDER_THICKNESS = 2 + ROW_HEIGHT = 24 + TEXT_PADDING_X = 4 + TEXT_OFFSET_Y = 3 + + def initialize(width, height, viewport, values = []) + super(width, height, viewport) + @scrollbar = UIControls::Scrollbar.new( + width - UIControls::Scrollbar::SLIDER_WIDTH - BORDER_THICKNESS, BORDER_THICKNESS, + height - (BORDER_THICKNESS * 2), viewport + ) + @scrollbar.color_scheme = @color_scheme + @scrollbar.set_interactive_rects + @scrollbar.range = ROW_HEIGHT + @scrollbar.z = self.z + 1 + @rows_count = (height / ROW_HEIGHT).floor # Number of rows visible at once + @top_row = 0 + @selected = -1 + self.values = values + end + + def dispose + @scrollbar.dispose + @scrollbar = nil + super + end + + #----------------------------------------------------------------------------- + + def x=(new_val) + super(new_val) + @scrollbar.x = new_val + width - UIControls::Scrollbar::SLIDER_WIDTH - BORDER_THICKNESS + end + + def y=(new_val) + super(new_val) + @scrollbar.y = new_val + BORDER_THICKNESS + end + + def z=(new_val) + super(new_val) + @scrollbar.z = new_val + 1 + end + + def visible=(new_val) + super + @scrollbar.visible = new_val + end + + def color_scheme=(value) + return if @color_scheme == value + @color_scheme = value + self.bitmap.font.color = text_color + self.bitmap.font.size = text_size + @scrollbar&.color_scheme = value + invalidate if self.respond_to?(:invalidate) + end + + # Each value in @values is an array: [id, text]. + def values=(new_vals) + @values = new_vals + set_interactive_rects + @scrollbar.range = [@values.length, 1].max * ROW_HEIGHT + if @scrollbar.visible + self.top_row = (@scrollbar.position.to_f / ROW_HEIGHT).round + else + self.top_row = 0 + end + self.selected = -1 if @selected >= @values.length + invalidate + end + + # Returns the ID of the selected row. + def value + return nil if @selected < 0 + if @values.is_a?(Array) + return (@values[@selected].is_a?(Array)) ? @values[@selected][0] : @selected + elsif @values.is_a?(Hash) + return @values.keys[@selected] + end + return nil + end + + def top_row=(val) + old_val = @top_row + @top_row = val + if @scrollbar.visible + @top_row = @top_row.clamp(0, @values.length - @rows_count) + else + @top_row = 0 + end + invalidate if @top_row != old_val + end + + def selected=(val) + return if @selected == val + @selected = val + invalidate + end + + #----------------------------------------------------------------------------- + + def mouse_in_control? + mouse_x, mouse_y = mouse_pos + return false if !mouse_x || !mouse_y + return true if Rect.new(0, 0, width, height).contains?(mouse_x, mouse_y) + return true if @scrollbar.mouse_in_control? + return false + end + + def busy? + return !@captured_area.nil? + end + + #----------------------------------------------------------------------------- + + def set_interactive_rects + @interactions = {} + @values.length.times do |i| + @interactions[i] = Rect.new( + BORDER_THICKNESS, BORDER_THICKNESS + (ROW_HEIGHT * i), + width - (BORDER_THICKNESS * 2), ROW_HEIGHT + ) + end + end + + #----------------------------------------------------------------------------- + + def draw_area_highlight + # If a row is captured, it will automatically be selected and the selection + # colour will be drawn over the highlight. There's no point drawing a + # highlight at all if anything is captured. + return if @captured_area + # Draw mouse hover over row highlight + rect = @interactions[@hover_area] + if rect + rect_y = rect.y + rect_y -= @top_row * ROW_HEIGHT if @hover_area.is_a?(Integer) + self.bitmap.fill_rect(rect.x, rect_y, rect.width, rect.height, hover_color) + end + end + + def repaint + @scrollbar.repaint if @scrollbar.invalid? + super if invalid? + end + + def refresh + super + # Draw control outline + self.bitmap.outline_rect(0, 0, width, height, line_color) + # Draw text options + @values.each_with_index do |val, i| + next if i < @top_row || i >= @top_row + @rows_count + if @selected == i + self.bitmap.fill_rect( + @interactions[i].x, + @interactions[i].y - (@top_row * ROW_HEIGHT), + @interactions[i].width, @interactions[i].height, + highlight_color + ) + end + txt = (val.is_a?(Array)) ? val[1] : val.to_s + old_text_color = self.bitmap.font.color + if txt[/^\\c\[([0-9]+)\]/i] + text_colors = [ + [ 0, 112, 248], [120, 184, 232], # 1 Blue + [232, 32, 16], [248, 168, 184], # 2 Red + [ 96, 176, 72], [174, 208, 144], # 3 Green + [ 72, 216, 216], [168, 224, 224], # 4 Cyan + [208, 56, 184], [232, 160, 224], # 5 Magenta + [232, 208, 32], [248, 232, 136], # 6 Yellow + [160, 160, 168], [208, 208, 216], # 7 Gray + [240, 240, 248], [200, 200, 208], # 8 White + [114, 64, 232], [184, 168, 224], # 9 Purple + [248, 152, 24], [248, 200, 152], # 10 Orange + MessageConfig::DARK_TEXT_MAIN_COLOR, + MessageConfig::DARK_TEXT_SHADOW_COLOR, # 11 Dark default + MessageConfig::LIGHT_TEXT_MAIN_COLOR, + MessageConfig::LIGHT_TEXT_SHADOW_COLOR # 12 Light default + ] + self.bitmap.font.color = Color.new(*text_colors[2 * ($1.to_i - 1)]) + txt = txt.gsub(/^\\c\[[0-9]+\]/i, "") + end + draw_text(self.bitmap, + @interactions[i].x + TEXT_PADDING_X, + @interactions[i].y + TEXT_OFFSET_Y - (@top_row * ROW_HEIGHT), + txt) + self.bitmap.font.color = old_text_color + end + end + + #----------------------------------------------------------------------------- + + def on_mouse_press + @captured_area = nil + mouse_x, mouse_y = mouse_pos + return if !mouse_x || !mouse_y + return if @scrollbar.visible && (@scrollbar.busy? || mouse_x >= @scrollbar.x - self.x) + # Check for mouse presses on rows + mouse_y += @top_row * ROW_HEIGHT + @interactions.each_pair do |area, rect| + next if !area.is_a?(Integer) || area < @top_row || area >= @top_row + @rows_count + next if !rect.contains?(mouse_x, mouse_y) + @captured_area = area + invalidate + break + end + end + + def on_mouse_release + return if !@captured_area # Wasn't captured to begin with + set_changed + super + end + + def update_hover_highlight + # Remove the hover highlight if there are no interactions for this control + # or if the mouse is off-screen + mouse_x, mouse_y = mouse_pos + if !@interactions || @interactions.empty? || !mouse_x || !mouse_y + invalidate if @hover_area + @hover_area = nil + return + end + # Don't update the highlight if the mouse is using the scrollbar + if @scrollbar.visible && (@scrollbar.busy? || mouse_x >= @scrollbar.x - self.x) + invalidate if @hover_area + @hover_area = nil + return + end + # Check each interactive area for whether the mouse is hovering over it, and + # set @hover_area accordingly + in_area = false + mouse_y += @top_row * ROW_HEIGHT + @interactions.each_pair do |area, rect| + next if !area.is_a?(Integer) || area < @top_row || area >= @top_row + @rows_count + next if !rect.contains?(mouse_x, mouse_y) + invalidate if @hover_area != area + @hover_area = area + in_area = true + break + end + if !in_area + invalidate if @hover_area + @hover_area = nil + end + end + + def update + return if !self.visible + @scrollbar.update + super + # Refresh the list's position if changed by moving the scrollbar + self.top_row = (@scrollbar.position.to_f / ROW_HEIGHT).round + # Set the selected row to the row the mouse is over, if clicked on + if @captured_area + @selected = @hover_area if @hover_area.is_a?(Integer) + elsif @hover_area + wheel_v = Input.scroll_v + scroll_dist = UIControls::Scrollbar::SCROLL_DISTANCE + scroll_dist /= 2 if @values.length / @rows_count > 20 # Arbitrary 20 + if wheel_v > 0 # Scroll up + @scrollbar.slider_top -= scroll_dist + elsif wheel_v < 0 # Scroll down + @scrollbar.slider_top += scroll_dist + end + if wheel_v != 0 + self.top_row = (@scrollbar.position.to_f / ROW_HEIGHT).round + update_hover_highlight + end + end + end +end diff --git a/Data/Scripts/801_UI controls/Control elements/010_DropdownList.rb b/Data/Scripts/801_UI controls/Control elements/010_DropdownList.rb new file mode 100644 index 000000000..6587aae18 --- /dev/null +++ b/Data/Scripts/801_UI controls/Control elements/010_DropdownList.rb @@ -0,0 +1,167 @@ +#=============================================================================== +# +#=============================================================================== +class UIControls::DropdownList < UIControls::BaseControl + attr_accessor :box_width + attr_accessor :max_rows + + TEXT_BOX_X = 2 + TEXT_BOX_WIDTH = 200 + TEXT_BOX_HEIGHT = 24 + TEXT_BOX_PADDING = 4 # Gap between sides of text box and text + MAX_LIST_ROWS = 10 + + # NOTE: options is a hash: keys are symbols, values are display names. + def initialize(width, height, viewport, options, value) + super(width, height, viewport) + @options = options + @value = value + @box_width = TEXT_BOX_WIDTH + @toggling_dropdown_list = false + @max_rows = MAX_LIST_ROWS + end + + def dispose + remove_dropdown_menu + super + end + + #----------------------------------------------------------------------------- + + def values=(new_vals) + @options = new_vals + @dropdown_menu.values = @options if @dropdown_menu + end + + def value=(new_value) + return if @value == new_value + @value = new_value + invalidate + end + + #----------------------------------------------------------------------------- + + def busy? + return true if @dropdown_menu || @toggling_dropdown_list + return super + end + + #----------------------------------------------------------------------------- + + def set_interactive_rects + @button_rect = Rect.new(TEXT_BOX_X, (height - TEXT_BOX_HEIGHT) / 2, + [@box_width, width - (TEXT_BOX_X * 2)].min, TEXT_BOX_HEIGHT) + @interactions = { + :button => @button_rect + } + end + + def make_dropdown_menu + menu_height = (UIControls::List::ROW_HEIGHT * [@options.length, @max_rows].min) + (UIControls::List::BORDER_THICKNESS * 2) + # Draw menu's background + @dropdown_menu_bg = BitmapSprite.new(@button_rect.width, menu_height, self.viewport) + @dropdown_menu_bg.x = self.x + @button_rect.x + @dropdown_menu_bg.y = self.y + @button_rect.y + @button_rect.height + @dropdown_menu_bg.z = self.z + 1 + @dropdown_menu_bg.bitmap.font.color = text_color + @dropdown_menu_bg.bitmap.font.size = text_size + @dropdown_menu_bg.bitmap.fill_rect(0, 0, @dropdown_menu_bg.width, @dropdown_menu_bg.height, background_color) + # Create menu + @dropdown_menu = UIControls::List.new(@button_rect.width, menu_height, self.viewport, @options) + @dropdown_menu.x = @dropdown_menu_bg.x + @dropdown_menu.y = @dropdown_menu_bg.y + @dropdown_menu.z = self.z + 2 + @dropdown_menu.color_scheme = @color_scheme + @dropdown_menu.set_interactive_rects + @dropdown_menu.repaint + end + + def remove_dropdown_menu + @dropdown_menu_bg&.dispose + @dropdown_menu_bg = nil + @dropdown_menu&.dispose + @dropdown_menu = nil + @captured_area = nil + end + + #----------------------------------------------------------------------------- + + def draw_area_highlight + return if @captured_area == :button + super + end + + def refresh + @dropdown_menu&.refresh + super + # Draw disabled colour + if disabled? + self.bitmap.fill_rect(@button_rect.x, @button_rect.y, + @button_rect.width, @button_rect.height, + disabled_fill_color) + end + # Draw button outline + self.bitmap.outline_rect(@button_rect.x, @button_rect.y, + @button_rect.width, @button_rect.height, + line_color) + # Draw value + draw_text(self.bitmap, @button_rect.x + TEXT_BOX_PADDING, TEXT_OFFSET_Y, @options[@value] || "???") + # Draw down arrow + arrow_area_x = @button_rect.x + @button_rect.width - @button_rect.height + 1 + arrow_area_width = @button_rect.height - 2 + arrow_color = (disabled?) ? disabled_text_color : text_color + self.bitmap.fill_rect(arrow_area_x, @button_rect.y + 1, arrow_area_width, arrow_area_width, + (@hover_area && @captured_area != :button) ? hover_color : background_color) + 6.times do |i| + self.bitmap.fill_rect(arrow_area_x + (arrow_area_width / 2) - 5 + i, + @button_rect.y + (arrow_area_width / 2) - 1 + i, + 11 - (2 * i), 1, arrow_color) + end + end + + #----------------------------------------------------------------------------- + + def on_mouse_press + if @dropdown_menu + if !@dropdown_menu.mouse_in_control? + remove_dropdown_menu + @toggling_dropdown_list = true + end + else + @captured_area = nil + super + if @captured_area == :button + make_dropdown_menu + @toggling_dropdown_list = true + end + end + end + + def on_mouse_release + return if !@captured_area && !@dropdown_menu && !@toggling_dropdown_list + if @toggling_dropdown_list + @toggling_dropdown_list = false + return + end + if @dropdown_menu + if @dropdown_menu.changed? + new_val = @dropdown_menu.value + if new_val && new_val != @value + @value = new_val + set_changed + end + remove_dropdown_menu + super # Make this control not busy again + elsif !@dropdown_menu.mouse_in_control? + remove_dropdown_menu + super # Make this control not busy again + end + end + end + + def update + @dropdown_menu&.update + @dropdown_menu&.repaint + super + end +end diff --git a/Data/Scripts/801_UI controls/Control elements/011_TextBoxDropdownList.rb b/Data/Scripts/801_UI controls/Control elements/011_TextBoxDropdownList.rb new file mode 100644 index 000000000..6da01e451 --- /dev/null +++ b/Data/Scripts/801_UI controls/Control elements/011_TextBoxDropdownList.rb @@ -0,0 +1,213 @@ +#=============================================================================== +# Also known as a Combo Box. +# NOTE: This control lets you type in whatever text you want. The dropdown list +# only offers autocomplete-like suggestions, but you don't need to match +# any of them. +#=============================================================================== +class UIControls::TextBoxDropdownList < UIControls::TextBox + attr_accessor :max_rows + + TEXT_BOX_WIDTH = 200 - TEXT_BOX_HEIGHT + BUTTON_X = TEXT_BOX_X + TEXT_BOX_WIDTH + BUTTON_WIDTH = TEXT_BOX_HEIGHT + BUTTON_HEIGHT = TEXT_BOX_HEIGHT + MAX_LIST_ROWS = 8 + + def initialize(width, height, viewport, options, value = "") + super(width, height, viewport, value) + @box_width = TEXT_BOX_WIDTH + @options = options + @toggling_dropdown_list = false + @max_rows = MAX_LIST_ROWS + end + + def dispose + remove_dropdown_menu + super + end + + #----------------------------------------------------------------------------- + + def values=(new_vals) + @options = new_vals + @dropdown_menu.values = @options if @dropdown_menu + end + + #----------------------------------------------------------------------------- + + def busy? + return true if @dropdown_menu || @toggling_dropdown_list + return super + end + + #----------------------------------------------------------------------------- + + def set_interactive_rects + @text_box_rect = Rect.new(TEXT_BOX_X, (height - TEXT_BOX_HEIGHT) / 2, + [@box_width, width - (TEXT_BOX_X * 2) - BUTTON_WIDTH].min, TEXT_BOX_HEIGHT) + @button_rect = Rect.new(BUTTON_X, @text_box_rect.y, BUTTON_WIDTH, BUTTON_HEIGHT) + @interactions = { + :text_box => @text_box_rect, + :button => @button_rect + } + end + + def make_dropdown_menu + menu_height = (UIControls::List::ROW_HEIGHT * [@options.length, @max_rows].min) + (UIControls::List::BORDER_THICKNESS * 2) + # Draw menu's background + @dropdown_menu_bg = BitmapSprite.new(@text_box_rect.width + @button_rect.width, menu_height, self.viewport) + @dropdown_menu_bg.x = self.x + @text_box_rect.x + @dropdown_menu_bg.y = self.y + @text_box_rect.y + @text_box_rect.height + @dropdown_menu_bg.z = self.z + 1 + @dropdown_menu_bg.bitmap.fill_rect(0, 0, @dropdown_menu_bg.width, @dropdown_menu_bg.height, background_color) + # Create menu + @dropdown_menu = UIControls::List.new(@text_box_rect.width + @button_rect.width, menu_height, self.viewport, @options) + @dropdown_menu.x = @dropdown_menu_bg.x + @dropdown_menu.y = @dropdown_menu_bg.y + @dropdown_menu.z = self.z + 2 + @dropdown_menu.color_scheme = @color_scheme + @dropdown_menu.set_interactive_rects + @dropdown_menu.repaint + end + + def remove_dropdown_menu + @dropdown_menu_bg&.dispose + @dropdown_menu_bg = nil + @dropdown_menu&.dispose + @dropdown_menu = nil + @captured_area = nil + @applied_filter = false + end + + #----------------------------------------------------------------------------- + + def draw_area_highlight + highlight_color = nil + if @captured_area == :text_box && !@hover_area && Input.press?(Input::MOUSELEFT) + highlight_color = capture_color + elsif !@captured_area && [:text_box, :button].include?(@hover_area) + # Draw mouse hover over area highlight + highlight_color = hover_color + end + return if !highlight_color + [:text_box, :button].each do |area| + rect = @interactions[area] + self.bitmap.fill_rect(rect.x, rect.y, rect.width, rect.height, highlight_color) if rect + end + end + + def refresh + @dropdown_menu&.refresh + super + # Draw disabled colour in button + if disabled? + self.bitmap.fill_rect(@button_rect.x, @button_rect.y, + @button_rect.width, @button_rect.height, + disabled_fill_color) + end + # Draw button outline + self.bitmap.outline_rect(@button_rect.x, @button_rect.y, + @button_rect.width, @button_rect.height, + line_color) + # Draw down arrow + arrow_area_x = @button_rect.x + @button_rect.width - @button_rect.height + 1 + arrow_area_width = @button_rect.height - 2 + arrow_color = (disabled?) ? disabled_text_color : text_color + # self.bitmap.fill_rect(arrow_area_x, @button_rect.y + 1, arrow_area_width, arrow_area_width, + # (@hover_area && @captured_area != :button) ? hover_color : background_color) + 6.times do |i| + self.bitmap.fill_rect(arrow_area_x + (arrow_area_width / 2) - 5 + i, + @button_rect.y + (arrow_area_width / 2) - 1 + i, + 11 - (2 * i), 1, arrow_color) + end + end + + #----------------------------------------------------------------------------- + + def on_mouse_press + mouse_x, mouse_y = mouse_pos + return if !mouse_x || !mouse_y + if @dropdown_menu + if @text_box_rect.contains?(mouse_x, mouse_y) + # Clicked into the text box; put the text cursor in there + @captured_area = :text_box + @cursor_pos = get_cursor_index_from_mouse_position + @cursor_timer = System.uptime + invalidate + elsif !@dropdown_menu.mouse_in_control? + @value.strip! if @value.respond_to?("strip!") + @value = @initial_value.dup if disabled? + set_changed if @initial_value && @value != @initial_value + reset_interaction + remove_dropdown_menu + @toggling_dropdown_list = true + end + else + @captured_area = nil + super + if @captured_area + make_dropdown_menu + @toggling_dropdown_list = true + end + end + end + + def on_mouse_release + return if !@captured_area && !@dropdown_menu && !@toggling_dropdown_list + if @toggling_dropdown_list + @toggling_dropdown_list = false + mouse_x, mouse_y = mouse_pos + if mouse_x && mouse_y && @interactions[:text_box].contains?(mouse_x, mouse_y) + @initial_value = @value.dup + Input.text_input = true + invalidate + end + return + end + if @dropdown_menu + if @dropdown_menu.changed? + new_val = @dropdown_menu.value + new_val = @options[new_val] if new_val.is_a?(Integer) + if new_val && new_val != @value + self.value = new_val + set_changed + end + @value.strip! if @value.respond_to?("strip!") + reset_interaction + remove_dropdown_menu + @captured_area = nil + elsif @captured_area + mouse_x, mouse_y = mouse_pos + if mouse_x && mouse_y && @interactions[:text_box].contains?(mouse_x, mouse_y) + @captured_area = :text_box + @initial_value = @value.dup + Input.text_input = true + end + elsif !mouse_in_control? && !@dropdown_menu.mouse_in_control? + @value.strip! if @value.respond_to?("strip!") + self.value = @initial_value if disabled? + set_changed if @initial_value && @value != @initial_value + reset_interaction + remove_dropdown_menu + @captured_area = nil + end + else + super + end + invalidate + end + + def update + @dropdown_menu&.update + @dropdown_menu&.repaint + super + # Filter the dropdown menu options based on @value if it changes + if @dropdown_menu && @initial_value && (@applied_filter || @value != @initial_value) + filtered_options = @options.select do |key, val| + key.downcase.include?(@value.downcase) || val.downcase.include?(@value.downcase) + end + @dropdown_menu.values = filtered_options + @applied_filter = true + end + end +end diff --git a/Data/Scripts/801_UI controls/Control elements/101_Scrollbar.rb b/Data/Scripts/801_UI controls/Control elements/101_Scrollbar.rb new file mode 100644 index 000000000..e57bf4f84 --- /dev/null +++ b/Data/Scripts/801_UI controls/Control elements/101_Scrollbar.rb @@ -0,0 +1,159 @@ +#=============================================================================== +# +#=============================================================================== +class UIControls::Scrollbar < UIControls::BaseControl + attr_reader :slider_top + + SLIDER_WIDTH = 16 + WIDTH_PADDING = 0 + SCROLL_DISTANCE = 16 + + def initialize(x, y, size, viewport, horizontal = false, always_visible = false) + if horizontal + super(size, SLIDER_WIDTH, viewport) + else + super(SLIDER_WIDTH, size, viewport) + end + self.x = x + self.y = y + @horizontal = horizontal # Is vertical if not horizontal + @tray_size = size # Number of pixels the scrollbar can move around in + @slider_size = size + @range = size # Total distance of the area this scrollbar is for + @slider_top = 0 # Top pixel within @size of the scrollbar + @always_visible = always_visible + self.visible = @always_visible + end + + #----------------------------------------------------------------------------- + + # Range is the total size of the large area that the scrollbar is able to + # show part of. + def range=(new_val) + raise "Can't set a scrollbar's range to 0!" if new_val == 0 + @range = new_val + @slider_size = (@tray_size * [@tray_size.to_f / @range, 1].min).round + if @horizontal + @slider.width = @slider_size + else # Vertical + @slider.height = @slider_size + end + self.slider_top = @slider_top + self.visible = (@always_visible || @range > @tray_size) + invalidate + end + + def slider_top=(new_val) + old_val = @slider_top + @slider_top = new_val.clamp(0, @tray_size - @slider_size) + if @horizontal + @slider.x = @slider_top + else # Vertical + @slider.y = @slider_top + end + invalidate if @slider_top != old_val + end + + def position + return 0 if @range <= @tray_size + return (@range - @tray_size) * @slider_top / (@tray_size - @slider_size) + end + + def minimum? + return @slider_top <= 0 + end + + def maximum? + return @slider_top >= @tray_size - @slider_size + end + + #----------------------------------------------------------------------------- + + def set_interactive_rects + @interactions = {} + if @horizontal + @slider = Rect.new(@slider_top, WIDTH_PADDING, @slider_size, height - (WIDTH_PADDING * 2)) + else # Vertical + @slider = Rect.new(WIDTH_PADDING, @slider_top, width - (WIDTH_PADDING * 2), @slider_size) + end + @interactions[:slider] = @slider + @slider_tray = Rect.new(0, 0, width, height) + @interactions[:slider_tray] = @slider_tray + end + + #----------------------------------------------------------------------------- + + def refresh + super + return if !self.visible + # Draw the tray + self.bitmap.fill_rect(@slider_tray.x, @slider_tray.y, @slider_tray.width, @slider_tray.height, background_color) + # Draw the slider + if @slider_size < @tray_size && !disabled? + if @captured_area == :slider || (!@captured_area && @hover_area == :slider) + bar_color = hover_color + else + bar_color = text_color + end + self.bitmap.fill_rect(@slider.x, @slider.y, @slider.width, @slider.height, bar_color) + end + end + + #----------------------------------------------------------------------------- + + def on_mouse_press + @captured_area = nil + mouse_x, mouse_y = mouse_pos + return if !mouse_x || !mouse_y + # Check for mouse presses on slider/slider tray + @interactions.each_pair do |area, rect| + next if !rect.contains?(mouse_x, mouse_y) + @captured_area = area + if area == :slider + if @horizontal + @slider_mouse_offset = mouse_x - rect.x + else + @slider_mouse_offset = mouse_y - rect.y + end + end + invalidate + break + end + end + + def on_mouse_release + super if @captured_area + end + + def update + return if !self.visible + super + if @captured_area == :slider + mouse_x, mouse_y = mouse_pos + return if !mouse_x || !mouse_y + long_coord = (@horizontal) ? mouse_x : mouse_y + self.slider_top = long_coord - @slider_mouse_offset + elsif @captured_area == :slider_tray + if Input.repeat?(Input::MOUSELEFT) && @hover_area == :slider_tray + mouse_x, mouse_y = mouse_pos + return if !mouse_x || !mouse_y + long_coord = (@horizontal) ? mouse_x : mouse_y + if long_coord < @slider_top + self.slider_top = @slider_top - ((@tray_size - @slider_size) / 4.0).ceil + else + self.slider_top = @slider_top + ((@tray_size - @slider_size) / 4.0).ceil + end + end + elsif !disabled? + mouse_x, mouse_y = mouse_pos + if mouse_x && mouse_y && @interactions[:slider_tray].contains?(mouse_x, mouse_y) + wheel_v = Input.scroll_v + if wheel_v > 0 # Scroll up + self.slider_top -= SCROLL_DISTANCE + elsif wheel_v < 0 # Scroll down + self.slider_top += SCROLL_DISTANCE + end + end + end + end +end diff --git a/Data/Scripts/901_Anim utilities/001_Anim utilities.rb b/Data/Scripts/901_Anim utilities/001_Anim utilities.rb new file mode 100644 index 000000000..43ca7e7da --- /dev/null +++ b/Data/Scripts/901_Anim utilities/001_Anim utilities.rb @@ -0,0 +1,177 @@ +class Bitmap + def outline_rect(x, y, width, height, color, thickness = 1) + fill_rect(x, y, width, thickness, color) + fill_rect(x, y, thickness, height, color) + fill_rect(x, y + height - thickness, width, thickness, color) + fill_rect(x + width - thickness, y, thickness, height, color) + end + + # Draws a series of concentric outline_rects around the defined area. From + # inside to outside, the color of each ring alternates. + def border_rect(x, y, width, height, thickness, color1, color2) + thickness.times do |i| + col = (i.even?) ? color1 : color2 + outline_rect(x - i - 1, y - i - 1, width + (i * 2) + 2, height + (i * 2) + 2, col) + end + end + + def fill_diamond(x, y, radius, color) + ((radius * 2) + 1).times do |i| + height = (i <= radius) ? (i * 2) + 1 : (((radius * 2) - i) * 2) + 1 + fill_rect(x - radius + i, y - ((height - 1) / 2), 1, height, color) + end + end + + def draw_interpolation_line(x, y, width, height, gradient, type, color) + start_x = x + end_x = x + width - 1 + start_y = (gradient) ? y + height - 1 : y + end_y = (gradient) ? y : y + height - 1 + case type + when :linear + # NOTE: https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm + dx = end_x - start_x + dy = -((end_y - start_y).abs) + error = dx + dy + draw_x = start_x + draw_y = start_y + loop do + fill_rect(draw_x, draw_y, 1, 1, color) + break if draw_x == end_x && draw_y == end_y + e2 = 2 * error + if e2 >= dy + break if draw_x == end_x + error += dy + draw_x += 1 + end + if e2 <= dx + break if draw_y == end_y + error += dx + draw_y += (gradient) ? -1 : 1 + end + end + when :ease_in, :ease_out, :ease_both # Quadratic + start_y = y + height - 1 + end_y = y + points = [] + (width + 1).times do |frame| + x = frame / width.to_f + case type + when :ease_in + points[frame] = (end_y - start_y) * x * x + when :ease_out + points[frame] = (end_y - start_y) * (1 - ((1 - x) * (1 - x))) + when :ease_both + if x < 0.5 + points[frame] = (end_y - start_y) * x * x * 2 + else + points[frame] = (end_y - start_y) * (1 - (((-2 * x) + 2) * ((-2 * x) + 2) / 2)) + end + end + points[frame] = points[frame].round + end + width.times do |frame| + line_y = points[frame] + if frame == 0 + line_height = 1 + else + line_height = [(points[frame] - points[frame - 1]).abs, 1].max + end + if !gradient # Going down + line_y = -(height - 1) - line_y - line_height + 1 + end + fill_rect(start_x + frame, start_y + line_y, 1, line_height, color) + end + else + raise _INTL("Unknown interpolation type {1}.", type) + end + end +end + +#=============================================================================== +# Fixed Compiler.pbWriteCsvRecord to make it detect enums first, allowing enum +# values to be turned into symbols/booleans/whatever instead of just numbers. +#=============================================================================== +module Compiler + module_function + + def pbWriteCsvRecord(record, file, schema) + rec = (record.is_a?(Array)) ? record.flatten : [record] + start = (["*", "^"].include?(schema[1][0, 1])) ? 1 : 0 + index = -1 + loop do + (start...schema[1].length).each do |i| + index += 1 + value = rec[index] + if schema[1][i, 1][/[A-Z]/] # Optional + # Check the rest of the values for non-nil things + later_value_found = false + (index...rec.length).each do |j| + later_value_found = true if !rec[j].nil? + break if later_value_found + end + if !later_value_found + start = -1 + break + end + end + file.write(",") if index > 0 + next if value.nil? + case schema[1][i, 1] + when "e", "E" # Enumerable + enumer = schema[2 + i - start] + case enumer + when Array + file.write(enumer[value]) + when Symbol, String + mod = Object.const_get(enumer.to_sym) + file.write(getConstantName(mod, value)) + when Module + file.write(getConstantName(enumer, value)) + when Hash + enumer.each_key do |key| + next if enumer[key] != value + file.write(key) + break + end + end + when "y", "Y" # Enumerable or integer + enumer = schema[2 + i - start] + case enumer + when Array + file.write((enumer[value].nil?) ? value : enumer[value]) + when Symbol, String + mod = Object.const_get(enumer.to_sym) + file.write(getConstantNameOrValue(mod, value)) + when Module + file.write(getConstantNameOrValue(enumer, value)) + when Hash + has_enum = false + enumer.each_key do |key| + next if enumer[key] != value + file.write(key) + has_enum = true + break + end + file.write(value) if !has_enum + end + else + if value.is_a?(String) + file.write((schema[1][i, 1].downcase == "q") ? value : csvQuote(value)) + elsif value.is_a?(Symbol) + file.write(csvQuote(value.to_s)) + elsif value == true + file.write("true") + elsif value == false + file.write("false") + else + file.write(value.inspect) + end + end + end + break if start > 0 && index >= rec.length - 1 + break if start <= 0 + end + return record + end +end diff --git a/Data/Scripts/902_Anim GameData/001_Animation.rb b/Data/Scripts/902_Anim GameData/001_Animation.rb new file mode 100644 index 000000000..47bd02983 --- /dev/null +++ b/Data/Scripts/902_Anim GameData/001_Animation.rb @@ -0,0 +1,403 @@ +module GameData + class Animation + attr_reader :type # :move, :opp_move, :common, :opp_common + attr_reader :move # Either the move's ID or the common animation's name (both are strings) + attr_reader :version # Hit number + attr_reader :name # Shown in the sublist; cosmetic only + attr_reader :no_user # Whether there is no "User" particle (false by default) + attr_reader :no_target # Whether there is no "Target" particle (false by default) + attr_reader :ignore # Whether the animation can't be played in battle + attr_reader :flags + attr_reader :pbs_path # Whole path minus "PBS/Animations/" at start and ".txt" at end + attr_reader :particles + + DATA = {} + DATA_FILENAME = "animations.dat" + OPTIONAL = true + + # NOTE: All mentions of focus types can be found by searching for + # :user_and_target, plus there's :foreground in PARTICLE_DEFAULT_VALUES + # below. + FOCUS_TYPES = { + "Foreground" => :foreground, + "Midground" => :midground, + "Background" => :background, + "User" => :user, + "Target" => :target, + "UserAndTarget" => :user_and_target, + "UserSideForeground" => :user_side_foreground, + "UserSideBackground" => :user_side_background, + "TargetSideForeground" => :target_side_foreground, + "TargetSideBackground" => :target_side_background + } + FOCUS_TYPES_WITH_USER = [ + :user, :user_and_target, :user_side_foreground, :user_side_background + ] + FOCUS_TYPES_WITH_TARGET = [ + :target, :user_and_target, :target_side_foreground, :target_side_background + ] + INTERPOLATION_TYPES = { + "None" => :none, + "Linear" => :linear, + "EaseIn" => :ease_in, + "EaseBoth" => :ease_both, + "EaseOut" => :ease_out + } + 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, + "RandomUpDirectionGravity" => :random_up_direction_gravity + } + ANGLE_OVERRIDES = { + "None" => :none, + "InitialAngleToFocus" => :initial_angle_to_focus, + "AlwaysPointAtFocus" => :always_point_at_focus + } + + # Properties that apply to the animation in general, not to individual + # particles. They don't change during the animation. + SCHEMA = { + "SectionName" => [:id, "esU", {"Move" => :move, "OppMove" => :opp_move, + "Common" => :common, "OppCommon" => :opp_common}], + "Name" => [:name, "s"], + "NoUser" => [:no_user, "b"], + "NoTarget" => [:no_target, "b"], + "Ignore" => [:ignore, "b"], + "Particle" => [:particles, "s"] # Is a subheader line like + } + # For individual particles. Any property whose schema begins with "^" can + # change during the animation. + SUB_SCHEMA = { + # These properties cannot be changed partway through the animation. + # NOTE: "Name" isn't a property here, because the particle's name comes + # from the "Particle" property above. + "Graphic" => [:graphic, "s"], + "Focus" => [:focus, "e", FOCUS_TYPES], + "FoeInvertX" => [:foe_invert_x, "b"], + "FoeInvertY" => [:foe_invert_y, "b"], + "FoeFlip" => [:foe_flip, "b"], + "Spawner" => [:spawner, "e", SPAWNER_TYPES], + "SpawnQuantity" => [:spawn_quantity, "v"], + "RandomFrameMax" => [:random_frame_max, "u"], + "AngleOverride" => [:angle_override, "e", ANGLE_OVERRIDES], + # All properties below are "SetXYZ" or "MoveXYZ". "SetXYZ" has the + # keyframe and the value, and "MoveXYZ" has the keyframe, duration and the + # value. All have "^" in their schema. "SetXYZ" is turned into "MoveXYZ" + # when compiling by inserting a duration (second value) of 0. + "SetFrame" => [:frame, "^uu"], # Frame within the graphic if it's a spritesheet + "MoveFrame" => [:frame, "^uuuE", nil, nil, nil, INTERPOLATION_TYPES], + "SetBlending" => [:blending, "^uu"], # 0, 1 or 2 + "SetFlip" => [:flip, "^ub"], + "SetX" => [:x, "^ui"], + "MoveX" => [:x, "^uuiE", nil, nil, nil, INTERPOLATION_TYPES], + "SetY" => [:y, "^ui"], + "MoveY" => [:y, "^uuiE", nil, nil, nil, INTERPOLATION_TYPES], + "SetZ" => [:z, "^ui"], + "MoveZ" => [:z, "^uuiE", nil, nil, nil, INTERPOLATION_TYPES], + "SetZoomX" => [:zoom_x, "^uu"], + "MoveZoomX" => [:zoom_x, "^uuuE", nil, nil, nil, INTERPOLATION_TYPES], + "SetZoomY" => [:zoom_y, "^uu"], + "MoveZoomY" => [:zoom_y, "^uuuE", nil, nil, nil, INTERPOLATION_TYPES], + "SetAngle" => [:angle, "^ui"], + "MoveAngle" => [:angle, "^uuiE", nil, nil, nil, INTERPOLATION_TYPES], + "SetVisible" => [:visible, "^ub"], + "SetOpacity" => [:opacity, "^uu"], + "MoveOpacity" => [:opacity, "^uuuE", nil, nil, nil, INTERPOLATION_TYPES], + "SetColorRed" => [:color_red, "^ui"], + "MoveColorRed" => [:color_red, "^uuiE", nil, nil, nil, INTERPOLATION_TYPES], + "SetColorGreen" => [:color_green, "^ui"], + "MoveColorGreen" => [:color_green, "^uuiE", nil, nil, nil, INTERPOLATION_TYPES], + "SetColorBlue" => [:color_blue, "^ui"], + "MoveColorBlue" => [:color_blue, "^uuiE", nil, nil, nil, INTERPOLATION_TYPES], + "SetColorAlpha" => [:color_alpha, "^ui"], + "MoveColorAlpha" => [:color_alpha, "^uuiE", nil, nil, nil, INTERPOLATION_TYPES], + "SetToneRed" => [:tone_red, "^ui"], + "MoveToneRed" => [:tone_red, "^uuiE", nil, nil, nil, INTERPOLATION_TYPES], + "SetToneGreen" => [:tone_green, "^ui"], + "MoveToneGreen" => [:tone_green, "^uuiE", nil, nil, nil, INTERPOLATION_TYPES], + "SetToneBlue" => [:tone_blue, "^ui"], + "MoveToneBlue" => [:tone_blue, "^uuiE", nil, nil, nil, INTERPOLATION_TYPES], + "SetToneGray" => [:tone_gray, "^ui"], + "MoveToneGray" => [:tone_gray, "^uuiE", nil, nil, nil, INTERPOLATION_TYPES], + # These properties are specifically for the "SE" particle. + "Play" => [:se, "^usUU"], # Filename, volume, pitch + "PlayUserCry" => [:user_cry, "^uUU"], # Volume, pitch + "PlayTargetCry" => [:target_cry, "^uUU"] # Volume, pitch + } + PARTICLE_DEFAULT_VALUES = { + :name => "", + :graphic => "", + :focus => :foreground, + :foe_invert_x => false, + :foe_invert_y => false, + :foe_flip => false, + :spawner => :none, + :spawn_quantity => 1, + :random_frame_max => 0, + :angle_override => :none + + } + # NOTE: Particles are invisible until their first command, and automatically + # become visible then. "User" and "Target" are visible from the start, + # though. + PARTICLE_KEYFRAME_DEFAULT_VALUES = { + :frame => 0, + :blending => 0, + :flip => false, + :x => 0, + :y => 0, + :z => 0, + :zoom_x => 100, + :zoom_y => 100, + :angle => 0, + :visible => false, + :opacity => 255, + :color_red => 0, + :color_green => 0, + :color_blue => 0, + :color_alpha => 0, + :tone_red => 0, + :tone_green => 0, + :tone_blue => 0, + :tone_gray => 0, + :se => nil, + :user_cry => nil, + :target_cry => nil + } + + def self.property_display_name(property) + return { + :frame => _INTL("Frame"), + :blending => _INTL("Blending"), + :flip => _INTL("Flip"), + :x => _INTL("X"), + :y => _INTL("Y"), + :z => _INTL("Priority"), + :zoom_x => _INTL("Zoom X"), + :zoom_y => _INTL("Zoom Y"), + :angle => _INTL("Angle"), + :visible => _INTL("Visible"), + :opacity => _INTL("Opacity"), + :color_red => _INTL("Color Red"), + :color_green => _INTL("Color Green"), + :color_blue => _INTL("Color Blue"), + :color_alpha => _INTL("Color Alpha"), + :tone_red => _INTL("Tone Red"), + :tone_green => _INTL("Tone Green"), + :tone_blue => _INTL("Tone Blue"), + :tone_gray => _INTL("Tone Gray") + }[property] || property.to_s.capitalize + end + + def self.property_can_interpolate?(property) + return false if !property + SUB_SCHEMA.each_value do |prop| + return true if prop[0] == property && prop[5] && prop[5] == INTERPOLATION_TYPES + end + return false + end + + @@cmd_to_pbs_name = nil # Used for writing animation PBS files + + extend ClassMethodsIDNumbers + include InstanceMethods + + singleton_class.alias_method(:__new_anim__load, :load) unless singleton_class.method_defined?(:__new_anim__load) + def self.load + __new_anim__load if FileTest.exist?("Data/#{self::DATA_FILENAME}") + end + + def self.sub_schema + return SUB_SCHEMA + end + + def self.register(hash, id_num = -1) + DATA[(id_num >= 0) ? id_num : DATA.keys.length] = self.new(hash) + end + + def self.new_hash(anim_type = 0, move = nil) + ret = {} + ret[:type] = (anim_type == 0) ? :move : :common + ret[:move] = (anim_type == 0) ? "STRUGGLE" : "Shiny" + ret[:move] = move if !move.nil? + ret[:version] = 0 + ret[:name] = _INTL("New animation") + ret[:no_user] = false + ret[:no_target] = false + ret[:ignore] = false + ret[:particles] = [ + {:name => "User", :focus => :user, :graphic => "USER"}, + {:name => "Target", :focus => :target, :graphic => "TARGET"}, + {:name => "SE"} + ] + ret[:flags] = [] + ret[:pbs_path] = "New animation" + return ret + end + + def initialize(hash) + # NOTE: hash has an :id entry, but it's unused here. + @type = hash[:type] + @move = hash[:move] + @version = hash[:version] || 0 + @name = hash[:name] + @no_user = hash[:no_user] || false + @no_target = hash[:no_target] || false + @ignore = hash[:ignore] || false + @particles = hash[:particles] || [] + @flags = hash[:flags] || [] + @pbs_path = hash[:pbs_path] || @move + end + + # Returns a clone of the animation in a hash format, the same as created by + # the Compiler. This hash can be passed into self.register. + def clone_as_hash + ret = {} + ret[:type] = @type + ret[:move] = @move + ret[:version] = @version + ret[:name] = @name + ret[:no_user] = @no_user + ret[:no_target] = @no_target + ret[:ignore] = @ignore + ret[:particles] = [] # Clone the @particles array, which is nested hashes and arrays + @particles.each do |particle| + new_p = {} + particle.each_pair do |key, val| + if val.is_a?(Array) + new_p[key] = [] + val.each { |cmd| new_p[key].push(cmd.clone) } + else + new_p[key] = val + end + end + ret[:particles].push(new_p) + end + ret[:flags] = @flags.clone + ret[:pbs_path] = @pbs_path + return ret + end + + def inspect + ret = super.chop + ": " + case @type + when :move then ret += _INTL("[Move]") + when :opp_move then ret += _INTL("[Foe Move]") + when :common then ret += _INTL("[Common]") + when :opp_common then ret += _INTL("[Foe Common]") + else + raise _INTL("Unknown animation type.") + end + case @type + when :move, :opp_move + move_data = GameData::Move.try_get(@move) + move_name = (move_data) ? move_data.name : @move + ret += " " + move_name + when :common, :opp_common + ret += " " + @move + end + ret += " (" + @version.to_s + ")" if @version > 0 + ret += " - " + @name if @name + return ret + end + + def move_animation? + return [:move, :opp_move].include?(@type) + end + + def common_animation? + return [:common, :opp_common].include?(@type) + end + + def opposing_animation? + return [:opp_move, :opp_common].include?(@type) + end + + alias __new_anim__get_property_for_PBS get_property_for_PBS unless method_defined?(:__new_anim__get_property_for_PBS) + def get_property_for_PBS(key) + ret = __new_anim__get_property_for_PBS(key) + case key + when "SectionName" + ret = [@type, @move] + ret.push(@version) if @version > 0 + end + return ret + end + + def get_particle_property_for_PBS(key, index = 0) + ret = nil + ret = @particles[index][SUB_SCHEMA[key][0]] if SUB_SCHEMA[key] + ret = nil if ret == false || (ret.is_a?(Array) && ret.length == 0) || ret == "" + case key + when "Graphic", "Focus" + # The User and Target particles have hardcoded graphics/foci, so they + # don't need writing to PBS + ret = nil if ["User", "Target"].include?(@particles[index][:name]) + when "Spawner" + ret = nil if ret == :none + when "SpawnQuantity" + ret = nil if @particles[index][:spawner].nil? || @particles[index][:spawner] == :none + ret = nil if ret && ret <= 1 + when "RandomFrameMax" + ret = nil if ret == 0 + when "AngleOverride" + ret = nil if ret == :none + ret = nil if !FOCUS_TYPES_WITH_USER.include?(@particles[index][:focus]) && + !FOCUS_TYPES_WITH_TARGET.include?(@particles[index][:focus]) + when "AllCommands" + # Get translations of all properties to their names as seen in PBS + # animation files + if !@@cmd_to_pbs_name + @@cmd_to_pbs_name = {} + SUB_SCHEMA.each_pair do |key, val| + @@cmd_to_pbs_name[val[0]] ||= [] + @@cmd_to_pbs_name[val[0]].push([key, val[1].length]) + end + # For each property translation, put "SetXYZ" before "MoveXYZ" + @@cmd_to_pbs_name.each_value do |val| + val.sort! { |a, b| a[1] <=> b[1] } + val.map! { |a| a[0] } + end + end + # Gather all commands into a single array + ret = [] + @particles[index].each_pair do |key, val| + next if !val.is_a?(Array) + val.each do |cmd| + new_cmd = cmd.clone + if @particles[index][:name] != "SE" && new_cmd[1] > 0 + new_cmd.pop if new_cmd.last == :linear # This is the default + ret.push([@@cmd_to_pbs_name[key][1]] + new_cmd) # ["MoveXYZ", keyframe, duration, value, interpolation] + else + case key + when :se + new_cmd[4] = nil if new_cmd[4] == 100 # Pitch + new_cmd[3] = nil if new_cmd[4].nil? && new_cmd[3] == 100 # Volume + when :user_cry, :target_cry + new_cmd[3] = nil if new_cmd[3] == 100 # Pitch + new_cmd[2] = nil if new_cmd[3].nil? && new_cmd[2] == 100 # Volume + end + ret.push([@@cmd_to_pbs_name[key][0]] + new_cmd) # ["SetXYZ", keyframe, duration, value] + end + end + end + # Sort the array of commands by keyframe order, then by duration, then + # by the order they're defined in SUB_SCHEMA + ret.sort! do |a, b| + if a[1] == b[1] + if a[2] == b[2] + next SUB_SCHEMA.keys.index(a[0]) <=> SUB_SCHEMA.keys.index(b[0]) + else + next a[2] <=> b[2] # Sort by duration + end + else + next a[1] <=> b[1] # Sort by keyframe + end + end + end + return ret + end + end +end diff --git a/Data/Scripts/903_Anim Compiler/001_Anim compiler.rb b/Data/Scripts/903_Anim Compiler/001_Anim compiler.rb new file mode 100644 index 000000000..efbe5f5a6 --- /dev/null +++ b/Data/Scripts/903_Anim Compiler/001_Anim compiler.rb @@ -0,0 +1,373 @@ +module Compiler + module_function + + def compile_battle_animations(*paths) + GameData::Animation::DATA.clear + schema = GameData::Animation.schema + sub_schema = GameData::Animation.sub_schema + idx = 0 + # Read from PBS file(s) + Console.echo_li(_INTL("Compiling animation PBS files...")) + paths.each do |path| + file_name = path.gsub(/^PBS\/Animations\//, "").gsub(/.txt$/, "") + data_hash = nil + current_particle = nil + section_name = nil + section_line = nil + # Read each line of the animation PBS file at a time and compile it as an + # animation property + pbCompilerEachPreppedLine(path) do |line, line_no| + echo "." if idx % 100 == 0 + idx += 1 + Graphics.update if idx % 500 == 0 + FileLineData.setSection(section_name, nil, section_line) + if line[/^\s*\[\s*(.+)\s*\]\s*$/] + # New section [anim_type, name] + section_name = $~[1] + section_line = line + if data_hash + validate_compiled_animation(data_hash) + GameData::Animation.register(data_hash) + end + FileLineData.setSection(section_name, nil, section_line) + # Construct data hash + data_hash = { + :pbs_path => file_name + } + data_hash[schema["SectionName"][0]] = get_csv_record(section_name.clone, schema["SectionName"]) + data_hash[schema["Particle"][0]] = [] + current_particle = nil + elsif line[/^\s*<\s*(.+)\s*>\s*$/] + # New subsection [particle_name] + value = get_csv_record($~[1], schema["Particle"]) + current_particle = { + :name => value + } + data_hash[schema["Particle"][0]].push(current_particle) + elsif line[/^\s*(\w+)\s*=\s*(.*)$/] + # XXX=YYY lines + if !data_hash + raise _INTL("Expected a section at the beginning of the file.") + "\n" + FileLineData.linereport + end + key = $~[1] + if schema[key] # Property of the animation + value = get_csv_record($~[2], schema[key]) + if schema[key][1][0] == "^" + value = nil if value.is_a?(Array) && value.empty? + data_hash[schema[key][0]] ||= [] + data_hash[schema[key][0]].push(value) if value + else + value = nil if value.is_a?(Array) && value.empty? + data_hash[schema[key][0]] = value + end + elsif sub_schema[key] # Property of a particle + if !current_particle + raise _INTL("Particle hasn't been defined yet!") + "\n" + FileLineData.linereport + end + value = get_csv_record($~[2], sub_schema[key]) + if sub_schema[key][1][0] == "^" + value = nil if value.is_a?(Array) && value.empty? + current_particle[sub_schema[key][0]] ||= [] + current_particle[sub_schema[key][0]].push(value) if value + else + value = nil if value.is_a?(Array) && value.empty? + current_particle[sub_schema[key][0]] = value + end + end + end + end + # Add last animation's data to records + if data_hash + FileLineData.setSection(section_name, nil, section_line) + validate_compiled_animation(data_hash) + GameData::Animation.register(data_hash) + end + end + validate_all_compiled_animations + process_pbs_file_message_end + # Save all data + GameData::Animation.save + end + + def validate_compiled_animation(hash) + # Split anim_type, move/common_name, version into their own values + hash[:type] = hash[:id][0] + hash[:move] = hash[:id][1] + hash[:version] = hash[:id][2] || 0 + # Ensure there is at most one each of "User", "Target" and "SE" particles + ["User", "Target", "SE"].each do |type| + next if hash[:particles].count { |particle| particle[:name] == type } <= 1 + raise _INTL("Animation has more than 1 \"{1}\" particle, which isn't allowed.", type) + "\n" + FileLineData.linereport + end + # Ensure there is no "User" particle if "NoUser" is set + if hash[:particles].any? { |particle| particle[:name] == "User" } && hash[:no_user] + raise _INTL("Can't define a \"User\" particle and also set property \"NoUser\" to true.") + "\n" + FileLineData.linereport + end + # Ensure there is no "Target" particle if "NoTarget" is set + if hash[:particles].any? { |particle| particle[:name] == "Target" } && hash[:no_target] + raise _INTL("Can't define a \"Target\" particle and also set property \"NoTarget\" to true.") + "\n" + FileLineData.linereport + end + # Create "User", "Target" and "SE" particles if they don't exist but should + if hash[:particles].none? { |particle| particle[:name] == "User" } && !hash[:no_user] + hash[:particles].push({:name => "User"}) + end + if hash[:particles].none? { |particle| particle[:name] == "Target" } && !hash[:no_target] + hash[:particles].push({:name => "Target"}) + end + if hash[:particles].none? { |particle| particle[:name] == "SE" } + hash[:particles].push({:name => "SE"}) + end + # Go through each particle in turn + hash[:particles].each do |particle| + # Ensure the "Play"-type commands are exclusive to the "SE" particle, and + # that the "SE" particle has no other commands + if particle[:name] == "SE" + particle.keys.each do |property| + next if [:name, :se, :user_cry, :target_cry].include?(property) + raise _INTL("Particle \"{1}\" has a command that isn't a \"Play\"-type command.", + particle[:name]) + "\n" + FileLineData.linereport + end + else + if particle[:se] + raise _INTL("Particle \"{1}\" has a \"Play\" command but shouldn't.", + particle[:name]) + "\n" + FileLineData.linereport + elsif particle[:user_cry] + raise _INTL("Particle \"{1}\" has a \"PlayUserCry\" command but shouldn't.", + particle[:name]) + "\n" + FileLineData.linereport + elsif particle[:target_cry] + raise _INTL("Particle \"{1}\" has a \"PlayTargetCry\" command but shouldn't.", + particle[:name]) + "\n" + FileLineData.linereport + end + end + # Ensure all particles have a default focus if not given + if !particle[:focus] && particle[:name] != "SE" + case particle[:name] + when "User" then particle[:focus] = :user + when "Target" then particle[:focus] = :target + else particle[:focus] = GameData::Animation::PARTICLE_DEFAULT_VALUES[:focus] + end + end + # Ensure user/target particles have a default graphic if not given + if !particle[:graphic] && particle[:name] != "SE" + case particle[:name] + when "User" then particle[:graphic] = "USER" + when "Target" then particle[:graphic] = "TARGET" + end + end + # If the animation doesn't involve a user, ensure that particles don't + # have a focus/graphic that involves a user, and that the animation + # doesn't play a user's cry + if hash[:no_user] + if GameData::Animation::FOCUS_TYPES_WITH_USER.include?(particle[:focus]) + raise _INTL("Particle \"{1}\" can't have a \"Focus\" that involves a user if property \"NoUser\" is set to true.", + particle[:name]) + "\n" + FileLineData.linereport + end + if ["USER", "USER_OPP", "USER_FRONT", "USER_BACK"].include?(particle[:graphic]) + raise _INTL("Particle \"{1}\" can't have a \"Graphic\" that involves a user if property \"NoUser\" is set to true.", + particle[:name]) + "\n" + FileLineData.linereport + end + if particle[:name] == "SE" && particle[:user_cry] && !particle[:user_cry].empty? + raise _INTL("Animation can't play the user's cry if property \"NoUser\" is set to true.") + "\n" + FileLineData.linereport + end + end + # If the animation doesn't involve a target, ensure that particles don't + # have a focus/graphic that involves a target, and that the animation + # doesn't play a target's cry + if hash[:no_target] + if GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(particle[:focus]) + raise _INTL("Particle \"{1}\" can't have a \"Focus\" that involves a target if property \"NoTarget\" is set to true.", + particle[:name]) + "\n" + FileLineData.linereport + end + if ["TARGET", "TARGET_OPP", "TARGET_FRONT", "TARGET_BACK"].include?(particle[:graphic]) + raise _INTL("Particle \"{1}\" can't have a \"Graphic\" that involves a target if property \"NoTarget\" is set to true.", + particle[:name]) + "\n" + FileLineData.linereport + end + if particle[:name] == "SE" && particle[:target_cry] && !particle[:target_cry].empty? + raise _INTL("Animation can't play the target's cry if property \"NoTarget\" is set to true.") + "\n" + FileLineData.linereport + end + end + # Ensure that none of the particle's "alter something if focus is a + # battler on the foe's side" properties are set if the particle doesn't + # have such a focus + if GameData::Animation::FOCUS_TYPES_WITH_USER.include?(particle[:focus]) == GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(particle[:focus]) + if particle[:foe_invert_x] + raise _INTL("Particle \"{1}\" can't set \"FoeInvertX\" if its focus isn't exactly 1 thing.", + particle[:name]) + "\n" + FileLineData.linereport + end + if particle[:foe_invert_y] + raise _INTL("Particle \"{1}\" can't set \"FoeInvertY\" if its focus isn't exactly 1 thing.", + particle[:name]) + "\n" + FileLineData.linereport + end + if particle[:foe_flip] + raise _INTL("Particle \"{1}\" can't set \"FoeFlip\" if its focus isn't exactly 1 thing.", + particle[:name]) + "\n" + FileLineData.linereport + end + end + # Ensure that only particles that have an entity as a focus can have a + # smart angle + if (particle[:angle_override] || :none) != :none && + !GameData::Animation::FOCUS_TYPES_WITH_USER.include?(particle[:focus]) && + !GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(particle[:focus]) + raise _INTL("Particle \"{1}\" can't set \"AngleOverride\" if its focus isn't a specific thing(s).", + particle[:name]) + "\n" + FileLineData.linereport + end + # Ensure that a particle with a user's/target's graphic doesn't have any + # :frame commands + if !["User", "Target", "SE"].include?(particle[:name]) && + ["USER", "USER_OPP", "USER_FRONT", "USER_BACK", + "TARGET", "TARGET_OPP", "TARGET_FRONT", "TARGET_BACK"].include?(particle[:graphic]) && + particle[:frame] && !particle[:frame].empty? + raise _INTL("Particle \"{1}\" can't have any \"Frame\" commands if its graphic is a Pokémon's sprite.", + particle[:name]) + "\n" + FileLineData.linereport + end + # Ensure that the same SE isn't played twice in the same frame + if particle[:name] == "SE" + [:se, :user_cry, :target_cry].each do |property| + next if !particle[property] + files_played = [] + particle[property].each do |play| + files_played[play[0]] ||= [] + if files_played[play[0]].include?(play[1]) + case property + when :se + raise _INTL("SE \"{1}\" should not play twice in the same frame ({2}).", play[1], play[0]) + "\n" + FileLineData.linereport + when :user_cry + raise _INTL("User's cry should not play twice in the same frame ({1}).", play[0]) + "\n" + FileLineData.linereport + when :target_cry + raise _INTL("Target's cry should not play twice in the same frame ({1}).", play[0]) + "\n" + FileLineData.linereport + end + end + files_played[play[0]].push(play[1]) + end + end + end + # Convert all "SetXYZ" particle commands to "MoveXYZ" by giving them a + # duration of 0 (even ones that can't have a "MoveXYZ" command) + GameData::Animation::PARTICLE_KEYFRAME_DEFAULT_VALUES.keys.each do |prop| + next if !particle[prop] + particle[prop].each do |cmd| + cmd.insert(1, 0) if cmd.length == 2 || particle[:name] == "SE" + # Give default interpolation value of :linear to any "MoveXYZ" command + # that doesn't have one already + cmd.push(:linear) if cmd[1] > 0 && cmd.length < 4 + end + end + # Sort each particle's commands by their keyframe and duration + particle.keys.each do |key| + next if !particle[key].is_a?(Array) + particle[key].sort! { |a, b| a[0] == b[0] ? a[1] == b[1] ? 0 : a[1] <=> b[1] : a[0] <=> b[0] } + next if particle[:name] == "SE" + # Check for any overlapping particle commands + last_frame = -1 + last_set_frame = -1 + particle[key].each do |cmd| + if last_frame > cmd[0] + raise _INTL("Animation has overlapping commands for the {1} property.", + key.to_s.capitalize) + "\n" + FileLineData.linereport + end + if cmd[1] == 0 && last_set_frame >= cmd[0] + raise _INTL("Animation has multiple \"Set\" commands in the same keyframe for the {1} property.", + key.to_s.capitalize) + "\n" + FileLineData.linereport + end + last_frame = cmd[0] + cmd[1] + last_set_frame = cmd[0] if cmd[1] == 0 + end + end + # Ensure valid values for "SetBlending" commands + if particle[:blending] + particle[:blending].each do |blend| + next if blend[2] <= 2 + raise _INTL("Invalid blend value: {1} (must be 0, 1 or 2).\n{2}", + blend[2], FileLineData.linereport) + end + end + + end + end + + def validate_all_compiled_animations; end +end + +#=============================================================================== +# Hook into the regular Compiler to also compile animation PBS files. +# This is a separate Compiler that runs after the regular one. +#=============================================================================== +module Compiler + module_function + + def get_animation_pbs_files_to_compile + ret = [] + if FileTest.directory?("PBS/Animations") + Dir.all("PBS/Animations", "**/**.txt").each { |file| ret.push(file) } + end + return ret + end + + class << self + if !method_defined?(:__new_anims_main) + alias_method :__new_anims_main, :main + end + end + + def main + __new_anims_main + return if !$DEBUG + begin + Console.echo_h1(_INTL("Checking new animations data")) + must_compile = false + data_file = "animations.dat" + text_files = get_animation_pbs_files_to_compile + latest_data_time = 0 + latest_text_time = 0 + # Check data file for its latest modify time + if FileTest.exist?("Data/" + data_file) + begin + File.open("Data/#{data_file}") do |file| + latest_data_time = [latest_data_time, file.mtime.to_i].max + end + rescue SystemCallError + must_compile = true + end + else + must_compile = true if text_files.length > 0 + end + # Check PBS files for their latest modify time + text_files.each do |filepath| + begin + File.open(filepath) do |file| + latest_text_time = [latest_text_time, file.mtime.to_i].max + end + rescue SystemCallError + end + end + # Decide to compile if a PBS file was edited more recently than the .dat file + must_compile |= (latest_text_time >= latest_data_time) + # Should recompile if holding Ctrl + Input.update + must_compile = true if $full_compile || Input.press?(Input::CTRL) + # Delete old data file in preparation for recompiling + if must_compile + begin + File.delete("Data/#{data_file}") if FileTest.exist?("Data/#{data_file}") + rescue SystemCallError + end + # Recompile all data + compile_battle_animations(*text_files) + else + Console.echoln_li(_INTL("New animations data were not compiled")) + end + echoln "" + rescue Exception + e = $! + raise e if e.class.to_s == "Reset" || e.is_a?(Reset) || e.is_a?(SystemExit) + pbPrintException(e) + begin + File.delete("Data/#{data_file}") if FileTest.exist?("Data/#{data_file}") + rescue SystemCallError + end + raise Reset.new if e.is_a?(Hangup) + raise SystemExit.new if e.is_a?(RuntimeError) + raise "Unknown exception when compiling animations." + end + end +end diff --git a/Data/Scripts/903_Anim Compiler/002_Anim writer.rb b/Data/Scripts/903_Anim Compiler/002_Anim writer.rb new file mode 100644 index 000000000..3370529b3 --- /dev/null +++ b/Data/Scripts/903_Anim Compiler/002_Anim writer.rb @@ -0,0 +1,124 @@ +module Compiler + module_function + + def write_all_battle_animations + # Delete all existing .txt files in the PBS/Animations/ folder + files_to_delete = get_animation_pbs_files_to_compile + files_to_delete.each { |path| File.delete(path) } + # Get all files that need writing + paths = [] + GameData::Animation.each { |anim| paths.push(anim.pbs_path) if !paths.include?(anim.pbs_path) } + idx = 0 + # Write each file in turn + paths.each do |path| + Graphics.update if idx % 500 == 0 + idx += 1 + write_battle_animation_file(path) + end + end + + def write_battle_animation_file(path) + schema = GameData::Animation.schema + sub_schema = GameData::Animation.sub_schema + write_pbs_file_message_start(path) + # Create all subfolders needed + dirs = ("PBS/Animations/" + path).split("/") + dirs.pop # Remove the filename + dirs.length.times do |i| + dir_string = dirs[0..i].join("/") + if !FileTest.directory?(dir_string) + Dir.mkdir(dir_string) rescue nil + end + end + # Write file + File.open("PBS/Animations/" + path + ".txt", "wb") do |f| + add_PBS_header_to_file(f) + # Write each element in turn + GameData::Animation.each do |element| + next if element.pbs_path != path + f.write("\#-------------------------------\r\n") + if schema["SectionName"] + f.write("[") + pbWriteCsvRecord(element.get_property_for_PBS("SectionName"), f, schema["SectionName"]) + f.write("]\r\n") + else + f.write("[#{element.id}]\r\n") + end + # Write each animation property + schema.each_key do |key| + next if ["SectionName", "Particle"].include?(key) + val = element.get_property_for_PBS(key) + next if val.nil? + f.write(sprintf("%s = ", key)) + pbWriteCsvRecord(val, f, schema[key]) + f.write("\r\n") + end + # Write each particle in turn + element.particles.each_with_index do |particle, i| + # Write header + f.write("<" + particle[:name] + ">") + f.write("\r\n") + # Write one-off particle properties + sub_schema.each_pair do |key, val| + next if val[1][0] == "^" + val = element.get_particle_property_for_PBS(key, i) + next if val.nil? + f.write(sprintf(" %s = ", key)) + pbWriteCsvRecord(val, f, sub_schema[key]) + f.write("\r\n") + end + # Write particle commands (in keyframe order) + cmds = element.get_particle_property_for_PBS("AllCommands", i) + cmds.each do |cmd| + if cmd[2] == 0 # Duration of 0 + f.write(sprintf(" %s = ", cmd[0])) + new_cmd = cmd[1..-1] + new_cmd.delete_at(1) + pbWriteCsvRecord(new_cmd, f, sub_schema[cmd[0]]) + f.write("\r\n") + else # Has a duration + f.write(sprintf(" %s = ", cmd[0])) + pbWriteCsvRecord(cmd[1..-1], f, sub_schema[cmd[0]]) + f.write("\r\n") + end + end + end + end + end + process_pbs_file_message_end + end +end + +#=============================================================================== +# Hook into the regular Compiler to also write all animation PBS files. +#=============================================================================== +module Compiler + module_function + + class << self + if !method_defined?(:__new_anims__write_all) + alias_method :__new_anims__write_all, :write_all + end + end + + def write_all + __new_anims__write_all + Console.echo_h1(_INTL("Writing all animation PBS files")) + write_all_battle_animations + echoln "" + Console.echo_h2(_INTL("Successfully rewrote all animation PBS files"), text: :green) + end +end + +#=============================================================================== +# Debug menu function for writing all animation PBS files. Shouldn't need to be +# used, but it's here if you want it. +#=============================================================================== +MenuHandlers.add(:debug_menu, :create_animation_pbs_files, { + "name" => _INTL("Write all animation PBS files"), + "parent" => :files_menu, + "description" => _INTL("Write all animation PBS files."), + "effect" => proc { + Compiler.write_all_battle_animations + } +}) diff --git a/Data/Scripts/903_Anim Compiler/100_convert old anims to new.rb b/Data/Scripts/903_Anim Compiler/100_convert old anims to new.rb new file mode 100644 index 000000000..66439ef25 --- /dev/null +++ b/Data/Scripts/903_Anim Compiler/100_convert old anims to new.rb @@ -0,0 +1,428 @@ +module AnimationConverter + NO_USER_COMMON_ANIMATIONS = [ + "Hail", "HarshSun", "HeavyRain", "Rain", "Sandstorm", "Sun", "ShadowSky", + "Rainbow", "RainbowOpp", "SeaOfFire", "SeaOfFireOpp", "Swamp", "SwampOpp" + ] + HAS_TARGET_COMMON_ANIMATIONS = ["LeechSeed", "ParentalBond"] + + module_function + + def convert_old_animations_to_new + list = pbLoadBattleAnimations + raise "No animations found." if !list || list.length == 0 + + last_move = nil # For filename purposes + last_version = 0 + last_type = :move + + list.each do |anim| + next if !anim.name || anim.name == "" || anim.length <= 1 + + # Get folder and filename for new PBS file + folder = "Example anims/" + folder += (anim.name[/^Common:/]) ? "Common/" : "Move/" + filename = anim.name.gsub(/^Common:/, "") + filename.gsub!(/^Move:/, "") + filename.gsub!(/^OppMove:/, "") + # Update record of move and version + type = :move + if anim.name[/^Common:/] + type = :common + elsif anim.name[/^OppMove:/] + type = :opp_move + elsif anim.name[/^Move:/] + type = :move + end + if filename == anim.name + last_version += 1 + type = last_type + pbs_path = folder + last_move + else + last_move = filename + last_version = 0 + last_type = type + pbs_path = folder + filename + end + last_move = filename if !last_move + # Generate basic animaiton properties + + new_anim = { + :type => type, + :move => last_move, + :version => last_version, + :name => "Example anim", + :particles => [], + :pbs_path => pbs_path + } + + # Decide whether the animation involves a user or target + has_user = true + has_target = true + if new_anim[:type] == :common + if NO_USER_COMMON_ANIMATIONS.include?(new_anim[:move]) + has_user = false + has_target = false + elsif !HAS_TARGET_COMMON_ANIMATIONS.include?(new_anim[:move]) + has_target = false + end + else + move_data = GameData::Move.try_get(new_anim[:move]) + if move_data + target_data = GameData::Target.get(move_data.target) + has_target = false if target_data.num_targets == 0 && target_data.id != :None + end + end + new_anim[:no_user] = true if !has_user + new_anim[:no_target] = true if !has_target + + add_frames_to_new_anim_hash(anim, new_anim) + add_bg_fg_commands_to_new_anim_hash(anim, new_anim) + add_se_commands_to_new_anim_hash(anim, new_anim) + + new_anim[:particles].compact! + GameData::Animation.register(new_anim) + Compiler.write_battle_animation_file(new_anim[:pbs_path]) + end + + end + + #----------------------------------------------------------------------------- + + def add_frames_to_new_anim_hash(anim, hash) + # Lookup array for particle index using cel index + index_lookup = [] + max_index = -1 + # Set up previous frame's values + default_frame = [] + default_frame[AnimFrame::X] = -999 + default_frame[AnimFrame::Y] = -999 + default_frame[AnimFrame::ZOOMX] = 100 + default_frame[AnimFrame::ZOOMY] = 100 + default_frame[AnimFrame::BLENDTYPE] = 0 + default_frame[AnimFrame::ANGLE] = 0 + default_frame[AnimFrame::OPACITY] = 255 + default_frame[AnimFrame::COLORRED] = 0 + default_frame[AnimFrame::COLORGREEN] = 0 + default_frame[AnimFrame::COLORBLUE] = 0 + default_frame[AnimFrame::COLORALPHA] = 0 + default_frame[AnimFrame::TONERED] = 0 + default_frame[AnimFrame::TONEGREEN] = 0 + default_frame[AnimFrame::TONEBLUE] = 0 + default_frame[AnimFrame::TONEGRAY] = 0 + default_frame[AnimFrame::PATTERN] = 0 + default_frame[AnimFrame::PRIORITY] = 0 # 0=back, 1=front, 2=behind focus, 3=before focus + + default_frame[AnimFrame::VISIBLE] = 1 # Boolean + default_frame[AnimFrame::MIRROR] = 0 # Boolean + + default_frame[AnimFrame::FOCUS] = 4 # 1=target, 2=user, 3=user and target, 4=screen + + default_frame[99] = "Examples/" + anim.graphic + + last_frame_values = [] + + anim_graphic = anim.graphic + anim_graphic.gsub!(".", " ") + anim_graphic.gsub!(" ", " ") + # Go through each frame + anim.length.times do |frame_num| + frame = anim[frame_num] + had_particles = [] + changed_particles = [] + frame.each_with_index do |cel, i| + next if !cel + next if i == 0 && hash[:no_user] + next if i == 1 && hash[:no_target] + # If the particle from the previous frame for this cel had a different + # focus, start a new particle. + if i > 1 && frame_num > 0 && index_lookup[i] && index_lookup[i] >= 0 && + last_frame_values[index_lookup[i]] + this_graphic = (cel[AnimFrame::PATTERN] == -1) ? "USER" : (cel[AnimFrame::PATTERN] == -2) ? "TARGET" : "Examples/" + anim_graphic + this_graphic.gsub!(".", " ") + this_graphic.gsub!(" ", "") + focus = cel[AnimFrame::FOCUS] + focus = 2 if (focus == 1 || focus == 3) && hash[:no_target] + focus = 0 if (focus == 2 || focus == 3) && hash[:no_user] + if last_frame_values[index_lookup[i]][AnimFrame::FOCUS] != focus || + last_frame_values[index_lookup[i]][99] != this_graphic # Graphic + index_lookup[i] = -1 + end + end + # Get the particle index for this cel + if !index_lookup[i] || index_lookup[i] < 0 + max_index += 1 + index_lookup[i] = max_index + end + idx = index_lookup[i] + had_particles.push(idx) + # i=0 for "User", i=1 for "Target" + hash[:particles][idx] ||= { :name => "Particle #{idx}" } + particle = hash[:particles][idx] + last_frame = last_frame_values[idx] || default_frame.clone + # User and target particles have specific names + if i == 0 + particle[:name] = "User" + elsif i == 1 + particle[:name] = "Target" + else + # Set graphic + case cel[AnimFrame::PATTERN] + when -1 # User's sprite + particle[:graphic] = "USER" + last_frame[99] = "USER" + when -2 # Target's sprite + particle[:graphic] = "TARGET" + last_frame[99] = "TARGET" + else + particle[:graphic] = "Examples/" + anim_graphic + last_frame[99] = "Examples/" + anim_graphic + end + end + # Set focus for non-User/non-Target + if i > 1 + focus = cel[AnimFrame::FOCUS] + focus = 2 if (focus == 1 || focus == 3) && hash[:no_target] + focus = 0 if (focus == 2 || focus == 3) && hash[:no_user] + particle[:focus] = [:foreground, :target, :user, :user_and_target, :foreground][focus] + last_frame[AnimFrame::FOCUS] = focus + end + + # Copy commands across + [ + [AnimFrame::X, :x], + [AnimFrame::Y, :y], + [AnimFrame::ZOOMX, :zoom_x], + [AnimFrame::ZOOMY, :zoom_y], + [AnimFrame::BLENDTYPE, :blending], + [AnimFrame::ANGLE, :angle], + [AnimFrame::OPACITY, :opacity], + [AnimFrame::COLORRED, :color_red], + [AnimFrame::COLORGREEN, :color_green], + [AnimFrame::COLORBLUE, :color_blue], + [AnimFrame::COLORALPHA, :color_alpha], + [AnimFrame::TONERED, :tone_red], + [AnimFrame::TONEGREEN, :tone_green], + [AnimFrame::TONEBLUE, :tone_blue], + [AnimFrame::TONEGRAY, :tone_gray], + [AnimFrame::PATTERN, :frame], + [AnimFrame::PRIORITY, :z], + [AnimFrame::VISIBLE, :visible], # Boolean + [AnimFrame::MIRROR, :flip], # Boolean + ].each do |property| + next if cel[property[0]] == last_frame[property[0]] + particle[property[1]] ||= [] + val = cel[property[0]].to_i + case property[1] + when :x + case cel[AnimFrame::FOCUS] + when 1 # :target + val -= Battle::Scene::FOCUSTARGET_X + when 2 # :user + val -= Battle::Scene::FOCUSUSER_X + when 3 # :user_and_target + user_x = Battle::Scene::FOCUSUSER_X + target_x = Battle::Scene::FOCUSTARGET_X + if hash[:type] == :opp_move + user_x = Battle::Scene::FOCUSTARGET_X + target_x = Battle::Scene::FOCUSUSER_X + end + fraction = (val - user_x).to_f / (target_x - user_x) + val = (fraction * GameData::Animation::USER_AND_TARGET_SEPARATION[0]).to_i + end + if cel[AnimFrame::FOCUS] != particle[:focus] + pseudo_focus = cel[AnimFrame::FOCUS] + # Was focused on target, now focused on user + pseudo_focus = 2 if [1, 3].include?(pseudo_focus) && hash[:no_target] + # Was focused on user, now focused on screen + val += Battle::Scene::FOCUSUSER_X if [2, 3].include?(pseudo_focus) && hash[:no_user] + end + when :y + case cel[AnimFrame::FOCUS] + when 1 # :target + val -= Battle::Scene::FOCUSTARGET_Y + when 2 # :user + val -= Battle::Scene::FOCUSUSER_Y + when 3 # :user_and_target + user_y = Battle::Scene::FOCUSUSER_Y + target_y = Battle::Scene::FOCUSTARGET_Y + if hash[:type] == :opp_move + user_y = Battle::Scene::FOCUSTARGET_Y + target_y = Battle::Scene::FOCUSUSER_Y + end + fraction = (val - user_y).to_f / (target_y - user_y) + val = (fraction * GameData::Animation::USER_AND_TARGET_SEPARATION[1]).to_i + end + if cel[AnimFrame::FOCUS] != particle[:focus] + pseudo_focus = cel[AnimFrame::FOCUS] + # Was focused on target, now focused on user + pseudo_focus = 2 if [1, 3].include?(pseudo_focus) && hash[:no_target] + # Was focused on user, now focused on screen + val += Battle::Scene::FOCUSUSER_Y if [2, 3].include?(pseudo_focus) && hash[:no_user] + end + when :visible, :flip + val = (val == 1) # Boolean + when :z + next if i <= 1 # User or target + case val + when 0 then val = -50 + i # Back + when 1 then val = 25 + i # Front + when 2 then val = -25 + i # Behind focus + when 3 then val = i # Before focus + end + when :frame + next if val < 0 # -1 is user, -2 is target + end + particle[property[1]].push([frame_num, 0, val]) + last_frame[property[0]] = cel[property[0]] + changed_particles.push(idx) if !changed_particles.include?(idx) + end + # Remember this cel's values at this frame + last_frame_values[idx] = last_frame + end + # End every particle lifetime that didn't have a corresponding cel this + # frame + hash[:particles].each_with_index do |particle, idx| + next if !particle || had_particles.include?(idx) + next if ["User", "Target"].include?(particle[:name]) + if last_frame_values[idx][AnimFrame::VISIBLE] == 1 + particle[:visible] ||= [] + particle[:visible].push([frame_num, 0, false]) + changed_particles.push(idx) if !changed_particles.include?(idx) + end + last_frame_values[idx][AnimFrame::VISIBLE] = 0 + next if !index_lookup.include?(idx) + lookup_idx = index_lookup.index(idx) + index_lookup[lookup_idx] = -1 + end + # Add a dummy command in the last frame if that frame doesn't have any + # commands (this makes all visible particles invisible) + if frame_num == anim.length - 1 && changed_particles.empty? + hash[:particles].each_with_index do |particle, idx| + next if !particle || ["User", "Target"].include?(particle[:name]) + next if last_frame_values[idx][AnimFrame::VISIBLE] == 0 + particle[:visible] ||= [] + particle[:visible].push([frame_num + 1, 0, false]) + end + end + end + + if hash[:particles].any? { |particle| particle[:name] == "User" } + user_particle = hash[:particles].select { |particle| particle[:name] == "User" }[0] + user_particle[:focus] = :user + end + if hash[:particles].any? { |particle| particle[:name] == "Target" } + target_particle = hash[:particles].select { |particle| particle[:name] == "Target" }[0] + target_particle[:focus] = :target + end + end + + #----------------------------------------------------------------------------- + + def add_bg_fg_commands_to_new_anim_hash(anim, new_anim) + bg_particle = { :name => "Background", :focus => :background } + fg_particle = { :name => "Foreground", :focus => :foreground } + first_bg_frame = 999 + first_fg_frame = 999 + anim.timing.each do |cmd| + case cmd.timingType + when 1, 2, 3, 4 # BG graphic (set, move/recolour), FG graphic (set, move/recolour) + is_bg = (cmd.timingType <= 2) + particle = (is_bg) ? bg_particle : fg_particle + duration = (cmd.timingType == 2) ? cmd.duration : 0 + added = false + if cmd.name && cmd.name != "" + particle[:graphic] ||= [] + particle[:graphic].push([cmd.frame, duration, cmd.name]) + added = true + end + if cmd.colorRed + particle[:color_red] ||= [] + particle[:color_red].push([cmd.frame, duration, cmd.colorRed]) + added = true + end + if cmd.colorGreen + particle[:color_green] ||= [] + particle[:color_green].push([cmd.frame, duration, cmd.colorGreen]) + added = true + end + if cmd.colorBlue + particle[:color_blue] ||= [] + particle[:color_blue].push([cmd.frame, duration, cmd.colorBlue]) + added = true + end + if cmd.colorAlpha + particle[:color_alpha] ||= [] + particle[:color_alpha].push([cmd.frame, duration, cmd.colorAlpha]) + added = true + end + if cmd.opacity + particle[:opacity] ||= [] + particle[:opacity].push([cmd.frame, duration, cmd.opacity]) + added = true + end + if cmd.bgX + particle[:x] ||= [] + particle[:x].push([cmd.frame, duration, cmd.bgX]) + added = true + end + if cmd.bgY + particle[:y] ||= [] + particle[:y].push([cmd.frame, duration, cmd.bgY]) + added = true + end + if added + if is_bg + first_bg_frame = [first_bg_frame, cmd.frame].min + else + first_fg_frame = [first_fg_frame, cmd.frame].min + end + end + end + end + if bg_particle.keys.length > 2 + if !bg_particle[:graphic] + particle[:graphic] ||= [] + particle[:graphic].push([first_bg_frame, 0, "black_screen"]) + end + new_anim[:particles].push(bg_particle) + end + if fg_particle.keys.length > 2 + if !fg_particle[:graphic] + particle[:graphic] ||= [] + particle[:graphic].push([first_fg_frame, 0, "black_screen"]) + end + new_anim[:particles].push(fg_particle) + end + end + + def add_se_commands_to_new_anim_hash(anim, new_anim) + anim.timing.each do |cmd| + next if cmd.timingType != 0 # Play SE + particle = new_anim[:particles].last + if particle[:name] != "SE" + particle = { :name => "SE" } + new_anim[:particles].push(particle) + end + # Add command + if cmd.name && cmd.name != "" + particle[:se] ||= [] + particle[:se].push([cmd.frame, 0, cmd.name, cmd.volume, cmd.pitch]) + else # Play user's cry + particle[:user_cry] ||= [] + particle[:user_cry].push([cmd.frame, 0, cmd.volume, cmd.pitch]) + end + end + end +end + +#=============================================================================== +# Add to Debug menu. +#=============================================================================== +# MenuHandlers.add(:debug_menu, :convert_anims, { +# "name" => "Convert old animation to PBS files", +# "parent" => :main, +# "description" => "This is just for the sake of having lots of example animation PBS files.", +# "effect" => proc { +# AnimationConverter.convert_old_animations_to_new +# } +# }) diff --git a/Data/Scripts/904_Anim Editor/001_AnimationEditor.rb b/Data/Scripts/904_Anim Editor/001_AnimationEditor.rb new file mode 100644 index 000000000..39edb0587 --- /dev/null +++ b/Data/Scripts/904_Anim Editor/001_AnimationEditor.rb @@ -0,0 +1,1045 @@ +#=============================================================================== +# +#=============================================================================== +class AnimationEditor + module AnimationEditor::SettingsMixin + def load_settings + if File.file?(DEBUG_SETTINGS_FILE_PATH) + @settings = SaveData.get_data_from_file(DEBUG_SETTINGS_FILE_PATH)[:anim_editor] + else + @settings = { + :color_scheme => :light, + :side_sizes => [1, 1], # Player's side, opposing side + :user_index => 0, # 0, 2, 4 + :target_indices => [1], # There must be at least one valid target + :user_opposes => false, + :canvas_bg => "indoor1", + # NOTE: These sprite names are also used in Pokemon.play_cry and so + # should be a species ID (being a string is fine). + :user_sprite_name => "DRAGONITE", + :target_sprite_name => "CHARIZARD" + } + end + end + + def save_settings + data = { :anim_editor => @settings } + File.open(DEBUG_SETTINGS_FILE_PATH, "wb") { |file| Marshal.dump(data, file) } + end + end +end + +#=============================================================================== +# +#=============================================================================== +class AnimationEditor + attr_reader :property_pane + attr_reader :components + attr_reader :anim + + BORDER_THICKNESS = 4 + WINDOW_WIDTH = Settings::SCREEN_WIDTH + 352 + (BORDER_THICKNESS * 4) + WINDOW_HEIGHT = Settings::SCREEN_HEIGHT + 424 + (BORDER_THICKNESS * 4) + WINDOW_HEIGHT = [WINDOW_HEIGHT, Graphics.display_height - 100].min + WINDOW_HEIGHT = [WINDOW_HEIGHT, Settings::SCREEN_HEIGHT + 266 + (BORDER_THICKNESS * 4)].max + + # Components + MENU_BAR_WIDTH = WINDOW_WIDTH + MENU_BAR_HEIGHT = 30 + + CANVAS_X = BORDER_THICKNESS + CANVAS_Y = MENU_BAR_HEIGHT + BORDER_THICKNESS + CANVAS_WIDTH = Settings::SCREEN_WIDTH + CANVAS_HEIGHT = Settings::SCREEN_HEIGHT + + PLAY_CONTROLS_X = CANVAS_X + PLAY_CONTROLS_Y = CANVAS_Y + CANVAS_HEIGHT + (BORDER_THICKNESS * 2) + PLAY_CONTROLS_WIDTH = CANVAS_WIDTH + PLAY_CONTROLS_HEIGHT = 64 - (BORDER_THICKNESS * 2) + + SIDE_PANE_X = CANVAS_X + CANVAS_WIDTH + (BORDER_THICKNESS * 2) + SIDE_PANE_Y = CANVAS_Y + SIDE_PANE_WIDTH = WINDOW_WIDTH - SIDE_PANE_X - BORDER_THICKNESS + SIDE_PANE_HEIGHT = CANVAS_HEIGHT + PLAY_CONTROLS_HEIGHT + (BORDER_THICKNESS * 2) + SIDE_PANE_DELETE_MARGIN = 32 + + PARTICLE_LIST_X = BORDER_THICKNESS + PARTICLE_LIST_Y = SIDE_PANE_Y + SIDE_PANE_HEIGHT + (BORDER_THICKNESS * 2) + PARTICLE_LIST_WIDTH = WINDOW_WIDTH - (BORDER_THICKNESS * 2) + PARTICLE_LIST_HEIGHT = WINDOW_HEIGHT - PARTICLE_LIST_Y - BORDER_THICKNESS + + # Pop-up windows + MESSAGE_BOX_WIDTH = WINDOW_WIDTH * 3 / 4 + MESSAGE_BOX_HEIGHT = 160 + MESSAGE_BOX_BUTTON_WIDTH = 150 + MESSAGE_BOX_BUTTON_HEIGHT = 32 + MESSAGE_BOX_SPACING = 16 + + ANIM_PROPERTIES_LABEL_WIDTH = UIControls::ControlsContainer::OFFSET_FROM_LABEL_X + 80 + ANIM_PROPERTIES_WIDTH = SIDE_PANE_WIDTH + 80 + ANIM_PROPERTIES_HEIGHT = WINDOW_HEIGHT * 3 / 4 + ANIM_PROPERTIES_X = (WINDOW_WIDTH - ANIM_PROPERTIES_WIDTH) / 2 + ANIM_PROPERTIES_Y = (WINDOW_HEIGHT - ANIM_PROPERTIES_HEIGHT) / 2 + + CHOOSER_BUTTON_WIDTH = 150 + CHOOSER_BUTTON_HEIGHT = MESSAGE_BOX_BUTTON_HEIGHT + CHOOSER_FILE_LIST_X = 6 + CHOOSER_FILE_LIST_Y = 30 + CHOOSER_FILE_LIST_WIDTH = (CHOOSER_BUTTON_WIDTH * 2) + (UIControls::List::BORDER_THICKNESS * 2) + CHOOSER_FILE_LIST_HEIGHT = (UIControls::List::ROW_HEIGHT * 15) + (UIControls::List::BORDER_THICKNESS * 2) + + GRAPHIC_CHOOSER_PREVIEW_SIZE = 320 # Square + GRAPHIC_CHOOSER_WINDOW_WIDTH = CHOOSER_FILE_LIST_X + CHOOSER_FILE_LIST_WIDTH + 8 + GRAPHIC_CHOOSER_PREVIEW_SIZE + 8 + GRAPHIC_CHOOSER_WINDOW_HEIGHT = CHOOSER_FILE_LIST_Y + CHOOSER_FILE_LIST_HEIGHT + 8 + CHOOSER_BUTTON_HEIGHT + 8 + GRAPHIC_CHOOSER_X = ((WINDOW_WIDTH - GRAPHIC_CHOOSER_WINDOW_WIDTH) / 2) + GRAPHIC_CHOOSER_Y = ((WINDOW_HEIGHT - GRAPHIC_CHOOSER_WINDOW_HEIGHT) / 2) + + AUDIO_CHOOSER_LABEL_WIDTH = UIControls::ControlsContainer::OFFSET_FROM_LABEL_X - 10 + AUDIO_CHOOSER_SLIDER_WIDTH = (CHOOSER_BUTTON_WIDTH * 2) - AUDIO_CHOOSER_LABEL_WIDTH + AUDIO_CHOOSER_WINDOW_WIDTH = CHOOSER_FILE_LIST_X + CHOOSER_FILE_LIST_WIDTH + 8 + (CHOOSER_BUTTON_WIDTH * 2) + 4 + AUDIO_CHOOSER_WINDOW_HEIGHT = CHOOSER_FILE_LIST_Y + CHOOSER_FILE_LIST_HEIGHT + 8 + CHOOSER_BUTTON_HEIGHT + 8 + AUDIO_CHOOSER_X = ((WINDOW_WIDTH - AUDIO_CHOOSER_WINDOW_WIDTH) / 2) + AUDIO_CHOOSER_Y = ((WINDOW_HEIGHT - AUDIO_CHOOSER_WINDOW_HEIGHT) / 2) + + # This list of animations was gathered manually by looking at all instances of + # pbCommonAnimation. + COMMON_ANIMATIONS = [ + "AquaRing", "Attract", "BanefulBunker", "BeakBlast", "Bind", + "Burn", "Clamp", "Confusion", "CraftyShield", "Curse", + "EatBerry", "ElectricTerrain", "FireSpin", "FocusPunch", "Frozen", + "GrassyTerrain", "Hail", "HarshSun", "HealingWish", "HealthDown", + "HealthUp", "HeavyRain", "Infestation", "Ingrain", "KingsShield", + "LeechSeed", "LevelUp", "LunarDance", "MagmaStorm", "MegaEvolution", + "MegaEvolution2", "MistyTerrain", "Nightmare", "Obstruct", "Octolock", + "Paralysis", "ParentalBond", "Poison", "Powder", "PrimalGroudon", + "PrimalGroudon2", "PrimalKyogre", "PrimalKyogre2", "Protect", "PsychicTerrain", + "QuickGuard", "Rain", "Rainbow", "RainbowOpp", "Sandstorm", + "SandTomb", "SeaOfFire", "SeaOfFireOpp", "Shadow", "ShadowSky", + "ShellTrap", "Shiny", "Sleep", "SpikyShield", "StatDown", + "StatUp", "StrongWinds", "Sun", "SuperShiny", "Swamp", + "SwampOpp", "Toxic", "UseItem", "WideGuard", "Wrap" + ] + DELETABLE_COMMAND_PANE_PROPERTIES = [ + :x, :y, :z, :frame, :visible, :opacity, :zoom_x, :zoom_y, :angle, :flip, :blending + ] + DELETABLE_COLOR_TONE_PANE_PROPERTIES = [ + :color_red, :color_green, :color_blue, :color_alpha, + :tone_red, :tone_green, :tone_blue, :tone_gray + ] + + DEBUG_SETTINGS_FILE_PATH = if File.directory?(System.data_directory) + System.data_directory + "debug_settings.rxdata" + else + "./debug_settings.rxdata" + end + + include AnimationEditor::SettingsMixin + include UIControls::StyleMixin + + #----------------------------------------------------------------------------- + + def initialize(anim_id, anim) + load_settings + @anim_id = anim_id + @anim = anim + @pbs_path = anim[:pbs_path] + @property_pane = :commands_pane + @quit = false + initialize_viewports + initialize_bitmaps + initialize_components + @captured = nil + set_components_contents + self.color_scheme = @settings[:color_scheme] + refresh + end + + def initialize_viewports + @viewport = Viewport.new(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT) + @viewport.z = 99999 + @canvas_viewport = Viewport.new(CANVAS_X, CANVAS_Y, CANVAS_WIDTH, CANVAS_HEIGHT) + @canvas_viewport.z = @viewport.z + @pop_up_viewport = Viewport.new(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT) + @pop_up_viewport.z = @viewport.z + 50 + end + + def initialize_bitmaps + # Background for main editor + if !@screen_bitmap + @screen_bitmap = BitmapSprite.new(WINDOW_WIDTH, WINDOW_HEIGHT, @viewport) + @screen_bitmap.z = -100 + end + # Semi-transparent black overlay to dim the screen while a pop-up window is open + if !@pop_up_bg_bitmap + @pop_up_bg_bitmap = BitmapSprite.new(WINDOW_WIDTH, WINDOW_HEIGHT, @pop_up_viewport) + @pop_up_bg_bitmap.z = -100 + @pop_up_bg_bitmap.visible = false + end + # Bitmaps for "delete this property change" buttons in the side pane + if !@delete_bitmap + @delete_bitmap = Bitmap.new(16, 16) + @delete_disabled_bitmap = Bitmap.new(16, 16) + end + @delete_bitmap.clear + @delete_disabled_bitmap.clear + icon_color = delete_icon_color + disabled_icon_color = disabled_text_color + 14.times do |i| + case i + when 0, 13 then wid = 3 + when 1, 12 then wid = 4 + else wid = 5 + end + @delete_bitmap.fill_rect([i - 1, 1].max, i + 1, wid, 1, icon_color) + @delete_bitmap.fill_rect([i - 1, 1].max, 14 - i, wid, 1, icon_color) + @delete_disabled_bitmap.fill_rect([i - 1, 1].max, i + 1, wid, 1, disabled_icon_color) + @delete_disabled_bitmap.fill_rect([i - 1, 1].max, 14 - i, wid, 1, disabled_icon_color) + end + # Editor settings button bitmap + @editor_settings_bitmap = Bitmap.new(18, 18) if !@editor_settings_bitmap + @editor_settings_bitmap.clear + settings_array = [ + 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 1, 1, + 0, 0, 1, 1, 1, 0, 0, 1, 1, + 0, 0, 1, 1, 1, 1, 0, 1, 1, + 0, 0, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 1, 1, 1, 1, 0, + 0, 1, 1, 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 1, 1, 0, 0, 0 + ] + icon_color = text_color + settings_array.length.times do |i| + next if settings_array[i] == 0 + @editor_settings_bitmap.fill_rect(i % 9, i / 9, 1, 1, icon_color) + @editor_settings_bitmap.fill_rect(17 - (i % 9), i / 9, 1, 1, icon_color) + @editor_settings_bitmap.fill_rect(i % 9, 17 - (i / 9), 1, 1, icon_color) + @editor_settings_bitmap.fill_rect(17 - (i % 9), 17 - (i / 9), 1, 1, icon_color) + end + # Draw in these bitmaps + draw_editor_background + end + + def initialize_components + @components = {} + # Menu bar + @components[:menu_bar] = AnimationEditor::MenuBar.new(0, 0, MENU_BAR_WIDTH, MENU_BAR_HEIGHT, @viewport) + # Canvas + @components[:canvas] = AnimationEditor::Canvas.new(@canvas_viewport, @anim, @settings) + # Side panes + AnimationEditor::SidePanes.each_pane do |pane, hash| + @components[pane] = UIControls::ControlsContainer.new( + SIDE_PANE_X, SIDE_PANE_Y, SIDE_PANE_WIDTH, SIDE_PANE_HEIGHT, + hash[:deletable_properties].nil? ? 0 : SIDE_PANE_DELETE_MARGIN + ) + end + # Timeline/particle list + @components[:particle_list] = AnimationEditor::ParticleList.new( + PARTICLE_LIST_X, PARTICLE_LIST_Y, PARTICLE_LIST_WIDTH, PARTICLE_LIST_HEIGHT, @viewport + ) + @components[:particle_list].set_interactive_rects + # Play controls + @components[:play_controls] = AnimationEditor::PlayControls.new( + PLAY_CONTROLS_X, PLAY_CONTROLS_Y, PLAY_CONTROLS_WIDTH, PLAY_CONTROLS_HEIGHT, @viewport + ) + # Animation properties pop-up window + @components[:animation_properties] = UIControls::ControlsContainer.new( + ANIM_PROPERTIES_X + 4, ANIM_PROPERTIES_Y, ANIM_PROPERTIES_WIDTH - 8, ANIM_PROPERTIES_HEIGHT + ) + @components[:animation_properties].viewport.z = @pop_up_viewport.z + 1 + @components[:animation_properties].label_offset_x = 170 + # Editor settings pop-up window + @components[:editor_settings] = UIControls::ControlsContainer.new( + ANIM_PROPERTIES_X + 4, ANIM_PROPERTIES_Y, ANIM_PROPERTIES_WIDTH - 8, ANIM_PROPERTIES_HEIGHT + ) + @components[:editor_settings].viewport.z = @pop_up_viewport.z + 1 + @components[:editor_settings].label_offset_x = 170 + # Graphic chooser pop-up window + @components[:graphic_chooser] = UIControls::ControlsContainer.new( + GRAPHIC_CHOOSER_X, GRAPHIC_CHOOSER_Y, GRAPHIC_CHOOSER_WINDOW_WIDTH, GRAPHIC_CHOOSER_WINDOW_HEIGHT + ) + @components[:graphic_chooser].viewport.z = @pop_up_viewport.z + 1 + # Audio chooser pop-up window + @components[:audio_chooser] = UIControls::ControlsContainer.new( + AUDIO_CHOOSER_X, AUDIO_CHOOSER_Y, AUDIO_CHOOSER_WINDOW_WIDTH, AUDIO_CHOOSER_WINDOW_HEIGHT + ) + @components[:audio_chooser].viewport.z = @pop_up_viewport.z + 1 + end + + def dispose + @screen_bitmap.dispose + @pop_up_bg_bitmap.dispose + @delete_bitmap.dispose + @delete_disabled_bitmap.dispose + @editor_settings_bitmap.dispose + @components.each_value { |c| c.dispose } + @components.clear + @viewport.dispose + @canvas_viewport.dispose + @pop_up_viewport.dispose + end + + #----------------------------------------------------------------------------- + + def keyframe + return @components[:particle_list].keyframe + end + + def particle_index + return @components[:particle_list].particle_index + end + + def save + AnimationEditor::ParticleDataHelper.optimize_all_particles(@anim[:particles]) + GameData::Animation.register(@anim, @anim_id) + Compiler.write_battle_animation_file(@anim[:pbs_path]) + if @anim[:pbs_path] != @pbs_path + if GameData::Animation::DATA.any? { |_key, anim| anim.pbs_path == @pbs_path } + Compiler.write_battle_animation_file(@pbs_path) + elsif FileTest.exist?("PBS/Animations/" + @pbs_path + ".txt") + File.delete("PBS/Animations/" + @pbs_path + ".txt") + end + @pbs_path = @anim[:pbs_path] + end + save_settings + end + + def color_scheme=(value) + return if @color_scheme == value + @color_scheme = value + return if !@components + initialize_bitmaps + @components.each do |component| + component[1].color_scheme = value if component[1].respond_to?("color_scheme=") + end + refresh + end + + #----------------------------------------------------------------------------- + + # Returns the animation's name for display in the menu bar and elsewhere. + def get_animation_display_name + ret = "" + case @anim[:type] + when :move then ret += _INTL("[Move]") + when :opp_move then ret += _INTL("[Foe Move]") + when :common then ret += _INTL("[Common]") + when :opp_common then ret += _INTL("[Foe Common]") + else + raise _INTL("Unknown animation type.") + end + case @anim[:type] + when :move, :opp_move + move_data = GameData::Move.try_get(@anim[:move]) + move_name = (move_data) ? move_data.name : @anim[:move] + ret += " " + move_name + when :common, :opp_common + ret += " " + @anim[:move] + end + ret += " (" + @anim[:version].to_s + ")" if @anim[:version] > 0 + ret += " - " + @anim[:name] if @anim[:name] + return ret + end + + #----------------------------------------------------------------------------- + + def set_menu_bar_contents + @components[:menu_bar].add_button(:quit, _INTL("Quit")) + @components[:menu_bar].add_button(:save, _INTL("Save")) + @components[:menu_bar].add_settings_button(:settings, @editor_settings_bitmap) + @components[:menu_bar].add_name_button(:name, get_animation_display_name) + end + + def set_canvas_contents + end + + def add_side_pane_tab_buttons(component, pane) + next_pos_x, next_pos_y = pane.next_control_position + [ + [:commands_pane, :general_tab, _INTL("General")], + [:color_tone_pane, :color_tone_tab, _INTL("Color/Tone")] + ].each_with_index do |tab, i| + btn = UIControls::Button.new(100, 28, pane.viewport, tab[2]) + btn.set_fixed_size + btn.set_highlighted if tab[0] == component + pane.add_control_at(tab[1], btn, next_pos_x, next_pos_y) + next_pos_x += btn.width + end + pane.increment_row_count(1) + end + + def set_side_panes_contents + AnimationEditor::SidePanes.each_pane do |pane, hash| + deletable_properties = hash[:deletable_properties] + AnimationEditor::SidePanes.each_property(pane) do |property, hash| + hash[:new].call(@components[pane], self) if hash[:new] + if deletable_properties&.include?(property) + parent = @components[pane].get_control(property) + btn = UIControls::BitmapButton.new(parent.x + parent.width + 6, parent.y + 2, + @components[pane].viewport, @delete_bitmap, @delete_disabled_bitmap) + btn.set_interactive_rects + @components[pane].controls.push([(property.to_s + "_delete").to_sym, btn]) + end + end + end + end + + def set_particle_list_contents + @components[:particle_list].set_particles(@anim[:particles]) + end + + def set_play_controls_contents + @components[:play_controls].add_play_controls + @components[:play_controls].duration = @components[:particle_list].duration + end + + def set_animation_properties_contents + anim_properties = @components[:animation_properties] + anim_properties.add_header_label(:header, _INTL("Animation properties")) + anim_properties.add_labelled_checkbox(:usable, _INTL("Can be used in battle?"), true) + anim_properties.add_labelled_dropdown_list(:type, _INTL("Animation type"), { + :move => _INTL("Move"), + :common => _INTL("Common") + }, :move) + anim_properties.add_labelled_checkbox(:opp_variant, _INTL("User is opposing?"), false) + anim_properties.add_labelled_text_box_dropdown_list(:move, "", [], "") + move_ctrl = anim_properties.get_control(:move) + move_ctrl.max_rows = 18 + anim_properties.add_labelled_number_text_box(:version, _INTL("Version"), 0, 99, 0) + anim_properties.add_labelled_text_box(:name, _INTL("Name"), "") + anim_properties.add_labelled_text_box(:pbs_path, _INTL("PBS filepath"), "") + anim_properties.add_labelled_checkbox(:has_user, _INTL("Involves a user?"), true) + anim_properties.add_labelled_checkbox(:has_target, _INTL("Involves a target?"), true) + anim_properties.add_button(:close, _INTL("Close")) + anim_properties.visible = false + end + + def set_editor_settings_contents + editor_settings = @components[:editor_settings] + editor_settings.add_header_label(:header, _INTL("Editor settings")) + editor_settings.add_labelled_dropdown_list(:color_scheme, _INTL("Color scheme"), color_scheme_options, :light) + editor_settings.add_labelled_dropdown_list(:side_size_1, _INTL("Side sizes"), { + 1 => "1", + 2 => "2", + 3 => "3" + }, 1) + size_ctrl = editor_settings.get_control(:side_size_1) + size_ctrl.box_width = 50 + size_ctrl.set_interactive_rects + size_ctrl.invalidate + ctrl = UIControls::Label.new(50, UIControls::ControlsContainer::LINE_SPACING, editor_settings.viewport, _INTL("vs.")) + editor_settings.add_control_at(:side_size_vs_label, ctrl, size_ctrl.x + 60, size_ctrl.y) + ctrl = UIControls::DropdownList.new(54, UIControls::ControlsContainer::LINE_SPACING, editor_settings.viewport, { + 1 => "1", + 2 => "2", + 3 => "3" + }, 1) + ctrl.box_width = 50 + ctrl.invalidate + editor_settings.add_control_at(:side_size_2, ctrl, size_ctrl.x + 93, size_ctrl.y) + editor_settings.add_labelled_dropdown_list(:user_index, _INTL("User index"), { + 0 => "0", + 2 => "2", + 4 => "4" + }, 0) + ctrl = editor_settings.get_control(:user_index) + ctrl.box_width = 50 + ctrl.set_interactive_rects + ctrl.invalidate + # TODO: I want a better control than this for choosing the target indices. + editor_settings.add_labelled_text_box(:target_indices, _INTL("Target indices"), "") + editor_settings.add_labelled_checkbox(:user_opposes, _INTL("User is opposing?"), false) + editor_settings.add_labelled_dropdown_list(:canvas_bg, _INTL("Background graphic"), {}, "") + editor_settings.add_labelled_dropdown_list(:user_sprite_name, _INTL("User graphic"), {}, "") + ctrl = editor_settings.get_control(:user_sprite_name) + ctrl.max_rows = 16 + editor_settings.add_labelled_dropdown_list(:target_sprite_name, _INTL("Target graphic"), {}, "") + ctrl = editor_settings.get_control(:target_sprite_name) + ctrl.max_rows = 16 + editor_settings.add_button(:close, _INTL("Close")) + editor_settings.visible = false + end + + def set_graphic_chooser_contents + graphic_chooser = @components[:graphic_chooser] + graphic_chooser.add_header_label(:header, _INTL("Choose a file")) + # List of files + list = UIControls::List.new(CHOOSER_FILE_LIST_WIDTH, CHOOSER_FILE_LIST_HEIGHT, graphic_chooser.viewport, []) + graphic_chooser.add_control_at(:list, list, CHOOSER_FILE_LIST_X, CHOOSER_FILE_LIST_Y) + # Buttons + [[:ok, _INTL("OK")], [:cancel, _INTL("Cancel")]].each_with_index do |option, i| + btn = UIControls::Button.new(CHOOSER_BUTTON_WIDTH, MESSAGE_BOX_BUTTON_HEIGHT, graphic_chooser.viewport, option[1]) + btn.set_fixed_size + graphic_chooser.add_control_at(option[0], btn, + CHOOSER_FILE_LIST_X + (CHOOSER_BUTTON_WIDTH * i), + CHOOSER_FILE_LIST_Y + CHOOSER_FILE_LIST_HEIGHT + 2) + end + graphic_chooser.visible = false + end + + def set_audio_chooser_contents + audio_chooser = @components[:audio_chooser] + audio_chooser.add_header_label(:header, _INTL("Choose a file")) + # List of files + list = UIControls::List.new(CHOOSER_FILE_LIST_WIDTH, CHOOSER_FILE_LIST_HEIGHT, audio_chooser.viewport, []) + audio_chooser.add_control_at(:list, list, CHOOSER_FILE_LIST_X, CHOOSER_FILE_LIST_Y) + # Buttons + [[:ok, _INTL("OK")], [:cancel, _INTL("Cancel")]].each_with_index do |option, i| + btn = UIControls::Button.new(CHOOSER_BUTTON_WIDTH, MESSAGE_BOX_BUTTON_HEIGHT, audio_chooser.viewport, option[1]) + btn.set_fixed_size + audio_chooser.add_control_at(option[0], btn, + CHOOSER_FILE_LIST_X + (CHOOSER_BUTTON_WIDTH * i) + 2, + CHOOSER_FILE_LIST_Y + CHOOSER_FILE_LIST_HEIGHT + 2) + end + # Volume and pitch sliders + [[:volume, _INTL("Volume"), 0, 100], [:pitch, _INTL("Pitch"), 0, 200]].each_with_index do |option, i| + label = UIControls::Label.new(AUDIO_CHOOSER_LABEL_WIDTH, 28, audio_chooser.viewport, option[1]) + audio_chooser.add_control_at((option[0].to_s + "_label").to_sym, label, + list.x + list.width + 6, list.y + (28 * i)) + slider = UIControls::NumberSlider.new(AUDIO_CHOOSER_SLIDER_WIDTH, 28, audio_chooser.viewport, option[2], option[3], 100) + audio_chooser.add_control_at(option[0], slider, label.x + label.width, label.y) + end + # Playback buttons + [[:play, _INTL("Play")], [:stop, _INTL("Stop")]].each_with_index do |option, i| + btn = UIControls::Button.new(CHOOSER_BUTTON_WIDTH, MESSAGE_BOX_BUTTON_HEIGHT, audio_chooser.viewport, option[1]) + btn.set_fixed_size + audio_chooser.add_control_at(option[0], btn, + list.x + list.width + 6 + (CHOOSER_BUTTON_WIDTH * i), + list.y + (28 * 2)) + end + audio_chooser.visible = false + end + + def set_components_contents + set_menu_bar_contents + set_canvas_contents + set_side_panes_contents + set_particle_list_contents + set_play_controls_contents # Intentionally after set_particle_list_contents + set_animation_properties_contents + set_editor_settings_contents + set_graphic_chooser_contents + set_audio_chooser_contents + end + + #----------------------------------------------------------------------------- + + def draw_editor_background + bg_color = background_color + contrast_color = line_color + # Fill the whole screen with white + @screen_bitmap.bitmap.fill_rect(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, bg_color) + # Outline around elements + @screen_bitmap.bitmap.border_rect(CANVAS_X, CANVAS_Y, CANVAS_WIDTH, CANVAS_HEIGHT, + BORDER_THICKNESS, bg_color, contrast_color) + @screen_bitmap.bitmap.border_rect(PLAY_CONTROLS_X, PLAY_CONTROLS_Y, PLAY_CONTROLS_WIDTH, PLAY_CONTROLS_HEIGHT, + BORDER_THICKNESS, bg_color, contrast_color) + @screen_bitmap.bitmap.border_rect(SIDE_PANE_X, SIDE_PANE_Y, SIDE_PANE_WIDTH, SIDE_PANE_HEIGHT, + BORDER_THICKNESS, bg_color, contrast_color) + @screen_bitmap.bitmap.border_rect(PARTICLE_LIST_X, PARTICLE_LIST_Y, PARTICLE_LIST_WIDTH, PARTICLE_LIST_HEIGHT, + BORDER_THICKNESS, bg_color, contrast_color) + # Make the pop-up background semi-transparent + @pop_up_bg_bitmap.bitmap.fill_rect(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, semi_transparent_color) + end + + #----------------------------------------------------------------------------- + + def play_animation + play_controls = @components[:play_controls] + # Set up canvas as a pseudo-battle screen + @components[:canvas].prepare_to_play_animation + play_controls.prepare_to_play_animation + # Set up fake battlers for the animation player + user_battler = nil + if !@anim[:no_user] + idx_user = @settings[:user_index] + if @settings[:user_opposes] || [:opp_move, :opp_common].include?(@anim[:type]) + idx_user += 1 + end + user_battler = AnimationPlayer::FakeBattler.new(idx_user, @settings[:user_sprite_name]) + end + target_battlers = nil + if !@anim[:no_target] + target_battlers = [] + @settings[:target_indices].each do |idx| + idx_target = idx + if @settings[:user_opposes] || [:opp_move, :opp_common].include?(@anim[:type]) + idx_target += (idx_target.even?) ? 1 : -1 + end + target_battlers.push(AnimationPlayer::FakeBattler.new(idx_target, @settings[:target_sprite_name])) + end + end + # Create animation player + anim_player = AnimationPlayer.new(@anim, user_battler, target_battlers, @components[:canvas]) + anim_player.looping = @components[:play_controls].looping + anim_player.slowdown = @components[:play_controls].slowdown + anim_player.set_up + # Play animation + anim_player.start + loop do + Graphics.update + Input.update + anim_player.update + play_controls.update + if play_controls.changed? + if play_controls.values.keys.include?(:stop) + play_controls.clear_changed + break + end + end + if Input.triggerex?(:SPACE) + pbSEStop + break + end + break if anim_player.finished? + end + anim_player.dispose + @components[:canvas].end_playing_animation + play_controls.end_playing_animation + end + + #----------------------------------------------------------------------------- + + def refresh_component_visibility(component_sym) + # Panes are all mutually exclusive + side_pane = AnimationEditor::SidePanes.get_pane(component_sym) + if side_pane && side_pane[:set_visible] + @components[component_sym].visible = side_pane[:set_visible].call(self, @anim, keyframe, particle_index) + end + end + + def refresh_editor_settings_options + user_indices = { 0 => "0" } + user_indices[2] = "2" if @settings[:side_sizes][0] >= 2 + user_indices[4] = "4" if @settings[:side_sizes][0] >= 3 + @components[:editor_settings].get_control(:user_index).values = user_indices + # Canvas background graphic + files = get_all_files_in_folder("Graphics/Battlebacks", [".png", ".jpg", ".jpeg"]) + files.map! { |file| file[0] } + files.delete_if { |file| !file[/_bg$/] } + files.map! { |file| file.gsub(/_bg$/, "") } + files.delete_if { |file| !pbResolveBitmap("Graphics/Battlebacks/" + file.sub(/_eve$/, "").sub(/_night$/, "") + "_message") } + files.map! { |file| [file, file] } + @components[:editor_settings].get_control(:canvas_bg).values = files.to_h + # User and target sprite graphics + files = get_all_files_in_folder("Graphics/Pokemon/Front", [".png", ".jpg", ".jpeg"]) + files.map! { |file| file[0] } + files.delete_if { |file| !GameData::Species.exists?(file) } + files.map! { |file| [file, file] } + @components[:editor_settings].get_control(:user_sprite_name).values = files.to_h + @components[:editor_settings].get_control(:target_sprite_name).values = files.to_h + end + + def refresh_move_property_options + ctrl = @components[:animation_properties].get_control(:move) + case @anim[:type] + when :move, :opp_move + move_list = [] + GameData::Move.each { |m| move_list.push([m.id.to_s, m.name]) } + move_list.push(["STRUGGLE", _INTL("Struggle")]) if move_list.none? { |val| val[0] == "STRUGGLE" } + move_list.sort! { |a, b| a[1] <=> b[1] } + ctrl.values = move_list.to_h + when :common, :opp_common + ctrl.values = COMMON_ANIMATIONS + end + end + + def refresh_component_values(component_sym) + component = @components[component_sym] + case component_sym + when :editor_settings + refresh_editor_settings_options + when :canvas + component.keyframe = keyframe + component.selected_particle = particle_index + when :particle_list + # Disable the "move particle up/down" buttons if the selected particle + # can't move that way (or there is no selected particle) + cur_index = particle_index + if cur_index < 1 || @anim[:particles][cur_index][:name] == "SE" + component.get_control(:move_particle_up).disable + else + component.get_control(:move_particle_up).enable + end + if cur_index < 0 || cur_index >= @anim[:particles].length - 1 || @anim[:particles][cur_index][:name] == "SE" + component.get_control(:move_particle_down).disable + else + component.get_control(:move_particle_down).enable + end + when :animation_properties + refresh_move_property_options + case @anim[:type] + when :move, :opp_move + component.get_control(:move_label).text = _INTL("Move") + component.get_control(:move).value = @anim[:move] + when :common, :opp_common + component.get_control(:move_label).text = _INTL("Common animation") + end + else + # Side panes + if AnimationEditor::SidePanes.is_side_pane?(component_sym) + # Refresh each control's value + if AnimationEditor::SidePanes.get_pane(component_sym)[:unchanging_properties] + new_vals = AnimationEditor::ParticleDataHelper.get_all_particle_values(@anim[:particles][particle_index]) + component.controls.each do |ctrl| + next if !new_vals.include?(ctrl[0]) + ctrl[1].value = new_vals[ctrl[0]] if ctrl[1].respond_to?("value=") + end + else + new_vals = AnimationEditor::ParticleDataHelper.get_all_keyframe_particle_values(@anim[:particles][particle_index], keyframe) + component.controls.each do |ctrl| + next if !new_vals.include?(ctrl[0]) + ctrl[1].value = new_vals[ctrl[0]][0] if ctrl[1].respond_to?("value=") + end + end + # Additional refreshing of controls + AnimationEditor::SidePanes.each_property(component_sym) do |property, hash| + next if !hash[:refresh_value] + hash[:refresh_value].call(component.get_control(property), self) + end + component.repaint + # Enable/disable property delete buttons + deletable_properties = AnimationEditor::SidePanes.get_pane(component_sym)[:deletable_properties] + if deletable_properties + deletable_properties.each do |property| + if AnimationEditor::ParticleDataHelper.has_command_at?(@anim[:particles][particle_index], property, keyframe) + component.get_control((property.to_s + "_delete").to_sym).enable + else + component.get_control((property.to_s + "_delete").to_sym).disable + end + end + end + end + end + end + + def refresh_component(component_sym) + refresh_component_visibility(component_sym) + return if !@components[component_sym].visible + refresh_component_values(component_sym) + @components[component_sym].refresh + end + + def refresh + @components.each_key { |sym| refresh_component(sym) } + end + + #----------------------------------------------------------------------------- + + def apply_changed_value(component_sym, property, value) + case component_sym + when :menu_bar + case property + when :quit + @quit = true + when :save + save + when :name + edit_animation_properties + @components[:menu_bar].anim_name = get_animation_display_name + refresh_component(:particle_list) + when :settings + edit_editor_settings + end + when :editor_settings + case property + when :color_scheme + @settings[:color_scheme] = value + self.color_scheme = value + when :side_size_1 + old_val = @settings[:side_sizes][0] + @settings[:side_sizes][0] = value + if @settings[:user_index] >= value * 2 + @settings[:user_index] = (value - 1) * 2 + @components[:editor_settings].get_control(:user_index).value = @settings[:user_index] + @settings[:target_indices].delete_if { |val| val == @settings[:user_index] } + end + @settings[:target_indices].delete_if { |val| val.even? && val >= value * 2 } + @settings[:target_indices].push(1) if @settings[:target_indices].empty? + @components[:editor_settings].get_control(:target_indices).value = @settings[:target_indices].join(",") + refresh_editor_settings_options if value != old_val + when :side_size_2 + old_val = @settings[:side_sizes][1] + @settings[:side_sizes][1] = value + @settings[:target_indices].delete_if { |val| val == @settings[:user_index] } + @settings[:target_indices].delete_if { |val| val.odd? && val >= value * 2 } + @settings[:target_indices].push(1) if @settings[:target_indices].empty? + @components[:editor_settings].get_control(:target_indices).value = @settings[:target_indices].join(",") + refresh_editor_settings_options if value != old_val + when :user_index + @settings[:user_index] = value + @settings[:target_indices].delete_if { |val| val == @settings[:user_index] } + @settings[:target_indices].push(1) if @settings[:target_indices].empty? + @components[:editor_settings].get_control(:target_indices).value = @settings[:target_indices].join(",") + when :target_indices + @settings[:target_indices] = value.split(",") + @settings[:target_indices].map! { |val| val.to_i } + @settings[:target_indices].sort! + @settings[:target_indices].uniq! + @settings[:target_indices].delete_if { |val| val == @settings[:user_index] } + @settings[:target_indices].delete_if { |val| val.even? && val >= @settings[:side_sizes][0] * 2 } + @settings[:target_indices].delete_if { |val| val.odd? && val >= @settings[:side_sizes][1] * 2 } + @settings[:target_indices].push(1) if @settings[:target_indices].empty? + @components[:editor_settings].get_control(:target_indices).value = @settings[:target_indices].join(",") + else + @settings[property] = value + end + save_settings + refresh_component(:canvas) + when :canvas + case property + when :particle_index + @components[:particle_list].particle_index = value + refresh + when :x, :y + particle = @anim[:particles][particle_index] + prop = property + new_cmds = AnimationEditor::ParticleDataHelper.add_command(particle, property, keyframe, value) + if new_cmds + particle[prop] = new_cmds + else + particle.delete(prop) + end + @components[:particle_list].change_particle_commands(particle_index) + @components[:play_controls].duration = @components[:particle_list].duration + refresh + end + when :play_controls + case property + when :play + @ready_to_play = true + end + when :particle_list + case property + when :add_particle + new_idx = particle_index + 1 + AnimationEditor::ParticleDataHelper.add_particle(@anim[:particles], new_idx) + @components[:particle_list].add_particle(new_idx) + @components[:particle_list].set_particles(@anim[:particles]) + @components[:particle_list].particle_index = new_idx + @components[:particle_list].keyframe = -1 + refresh + when :move_particle_up + idx1 = particle_index + idx2 = idx1 - 1 + AnimationEditor::ParticleDataHelper.swap_particles(@anim[:particles], idx1, idx2) + @components[:particle_list].swap_particles(idx1, idx2) + @components[:particle_list].set_particles(@anim[:particles]) + @components[:particle_list].particle_index = idx2 + refresh + when :move_particle_down + idx1 = particle_index + idx2 = idx1 + 1 + AnimationEditor::ParticleDataHelper.swap_particles(@anim[:particles], idx1, idx2) + @components[:particle_list].swap_particles(idx1, idx2) + @components[:particle_list].set_particles(@anim[:particles]) + @components[:particle_list].particle_index = idx2 + refresh + when :cycle_interpolation + # value is [particle index, property, keyframe] + # Get current interpolation type + interp_type = nil + @anim[:particles][value[0]][value[1]].each do |cmd| + next if cmd[0] != value[2] + interp_type = cmd[3] if !interp_type + end + interp_type ||= :none + # Get the interpolation type to change to + interps = GameData::Animation::INTERPOLATION_TYPES.values + idx = (interps.index(interp_type) + 1) % interps.length + interp_type = interps[idx] + # Set the new interpolation type + AnimationEditor::ParticleDataHelper.set_interpolation(@anim[:particles][value[0]], value[1], value[2], interp_type) + @components[:particle_list].change_particle_commands(value[0]) + refresh_component(:commands_pane) + refresh_component(:canvas) + end + when :animation_properties + case property + when :type, :opp_variant + type = @components[component_sym].get_control(:type).value + opp = @components[component_sym].get_control(:opp_variant).value + case type + when :move + @anim[:type] = (opp) ? :opp_move : :move + when :common + @anim[:type] = (opp) ? :opp_common : :common + end + refresh_component(component_sym) + refresh_component(:canvas) + when :pbs_path + txt = value.gsub!(/\.txt$/, "") + @anim[property] = txt + when :has_user + @anim[:no_user] = !value + if @anim[:no_user] + user_idx = @anim[:particles].index { |particle| particle[:name] == "User" } + @anim[:particles].delete_if { |particle| particle[:name] == "User" } + @anim[:particles].each do |particle| + if ["USER", "USER_OPP", "USER_FRONT", "USER_BACK"].include?(particle[:graphic]) + particle[:graphic] = GameData::Animation::PARTICLE_DEFAULT_VALUES[:graphic] + end + if GameData::Animation::FOCUS_TYPES_WITH_USER.include?(particle[:focus]) + particle[:focus] = GameData::Animation::PARTICLE_DEFAULT_VALUES[:focus] + end + particle[:user_cry] = nil if particle[:name] == "SE" + end + @components[:particle_list].delete_particle(user_idx) + elsif @anim[:particles].none? { |particle| particle[:name] == "User" } + @anim[:particles].insert(0, { + :name => "User", :focus => :user, :graphic => "USER" + }) + @components[:particle_list].add_particle(0) + end + @components[:particle_list].set_particles(@anim[:particles]) + refresh + when :has_target + @anim[:no_target] = !value + if @anim[:no_target] + target_idx = @anim[:particles].index { |particle| particle[:name] == "Target" } + @anim[:particles].delete_if { |particle| particle[:name] == "Target" } + @anim[:particles].each do |particle| + if ["TARGET", "TARGET_OPP", "TARGET_FRONT", "TARGET_BACK"].include?(particle[:graphic]) + particle[:graphic] = GameData::Animation::PARTICLE_DEFAULT_VALUES[:graphic] + end + if GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(particle[:focus]) + particle[:focus] = GameData::Animation::PARTICLE_DEFAULT_VALUES[:focus] + end + particle[:target_cry] = nil if particle[:name] == "SE" + end + @components[:particle_list].delete_particle(target_idx) + elsif @anim[:particles].none? { |particle| particle[:name] == "Target" } + @anim[:particles].insert(0, { + :name => "Target", :focus => :target, :graphic => "TARGET" + }) + @components[:particle_list].add_particle(0) + end + @components[:particle_list].set_particles(@anim[:particles]) + refresh + when :usable + @anim[:ignore] = !value + else + @anim[property] = value + end + else + # Side panes + if AnimationEditor::SidePanes.is_side_pane?(component_sym) + if [:commands_pane, :color_tone_pane].include?(component_sym) && + [:general_tab, :color_tone_tab].include?(property) + @property_pane = { + :general_tab => :commands_pane, + :color_tone_tab => :color_tone_pane + }[property] + refresh_component(component_sym) + refresh_component(@property_pane) + else + hash = AnimationEditor::SidePanes.get_property(component_sym, property) + if hash && hash[:apply_value] + hash[:apply_value].call(value, self) + else + hash = AnimationEditor::SidePanes.get_pane(component_sym) + if hash && hash[:apply_value] + hash[:apply_value].call(property, value, self) + end + end + end + end + end + end + + def update_input + if Input.triggerex?(:S) + # Swap battler sides + @settings[:user_opposes] = !@settings[:user_opposes] + refresh + elsif Input.triggerex?(:SPACE) + # Play animation + @ready_to_play = true + elsif Input.triggerex?(:INSERT) + # Insert empty keyframe for selected particle or all particles + this_frame = keyframe + if this_frame >= 0 && this_frame < @components[:particle_list].duration + if Input.pressex?(:LSHIFT) || Input.pressex?(:RSHIFT) + @anim[:particles].each do |particle| + AnimationEditor::ParticleDataHelper.insert_frame(particle, this_frame) + end + else + AnimationEditor::ParticleDataHelper.insert_frame(@anim[:particles][particle_index], this_frame) + end + @components[:particle_list].set_particles(@anim[:particles]) + refresh + end + elsif Input.triggerex?(:DELETE) + # Delete keyframe for selected particle or all particles + this_frame = keyframe + if this_frame >= 0 && this_frame < @components[:particle_list].duration + if Input.pressex?(:LSHIFT) || Input.pressex?(:RSHIFT) + @anim[:particles].each do |particle| + AnimationEditor::ParticleDataHelper.remove_frame(particle, this_frame) + end + else + AnimationEditor::ParticleDataHelper.remove_frame(@anim[:particles][particle_index], this_frame) + end + @components[:particle_list].set_particles(@anim[:particles]) + refresh + end + end + end + + def update + old_keyframe = keyframe + old_particle_index = particle_index + @components.each_pair do |sym, component| + next if @captured && @captured != sym + next if !component.visible + component.update + @captured = sym if component.busy? + if component.changed? + if sym == :particle_list + refresh if keyframe != old_keyframe || particle_index != old_particle_index + end + if component.respond_to?("values") + values = component.values + if values + values.each_pair do |property, value| + apply_changed_value(sym, property, value) + end + end + end + component.clear_changed + end + component.repaint if [:particle_list, :menu_bar].include?(sym) + if @captured + @captured = nil if !component.busy? + break + end + end + update_input if !@captured + end + + #----------------------------------------------------------------------------- + + def run + Input.text_input = false + loop do + Graphics.update + Input.update + update + if @ready_to_play + play_animation + @ready_to_play = false + elsif @captured.nil? && @quit + case message(_INTL("Do you want to save changes to the animation?"), + [:yes, _INTL("Yes")], [:no, _INTL("No")], [:cancel, _INTL("Cancel")]) + when :yes + save + when :cancel + @quit = false + end + break if @quit + end + end + dispose + end +end diff --git a/Data/Scripts/904_Anim Editor/002_AnimationEditor_popups.rb b/Data/Scripts/904_Anim Editor/002_AnimationEditor_popups.rb new file mode 100644 index 000000000..55bef5498 --- /dev/null +++ b/Data/Scripts/904_Anim Editor/002_AnimationEditor_popups.rb @@ -0,0 +1,386 @@ +#=============================================================================== +# +#=============================================================================== +class AnimationEditor + def create_pop_up_window(width, height, ret = nil) + if !ret + ret = BitmapSprite.new(width + (BORDER_THICKNESS * 2), + height + (BORDER_THICKNESS * 2), @pop_up_viewport) + ret.x = (WINDOW_WIDTH - ret.width) / 2 + ret.y = (WINDOW_HEIGHT - ret.height) / 2 + ret.z = -1 + end + ret.bitmap.clear + ret.bitmap.font.color = text_color + ret.bitmap.font.size = text_size + # Draw pop-up box border + ret.bitmap.border_rect(BORDER_THICKNESS, BORDER_THICKNESS, width, height, + BORDER_THICKNESS, background_color, line_color) + # Fill pop-up box with white + ret.bitmap.fill_rect(BORDER_THICKNESS, BORDER_THICKNESS, width, height, background_color) + return ret + end + + #----------------------------------------------------------------------------- + + def message(text, *options) + @pop_up_bg_bitmap.visible = true + msg_bitmap = create_pop_up_window(MESSAGE_BOX_WIDTH, MESSAGE_BOX_HEIGHT) + # Draw text + text_size = msg_bitmap.bitmap.text_size(text) + msg_bitmap.bitmap.draw_text(0, (msg_bitmap.height / 2) - MESSAGE_BOX_BUTTON_HEIGHT, + msg_bitmap.width, text_size.height, text, 1) + # Create buttons + buttons = [] + options.each_with_index do |option, i| + btn = UIControls::Button.new(MESSAGE_BOX_BUTTON_WIDTH, MESSAGE_BOX_BUTTON_HEIGHT, @pop_up_viewport, option[1]) + btn.x = msg_bitmap.x + (msg_bitmap.width - (MESSAGE_BOX_BUTTON_WIDTH * options.length)) / 2 + btn.x += MESSAGE_BOX_BUTTON_WIDTH * i + btn.y = msg_bitmap.y + msg_bitmap.height - MESSAGE_BOX_BUTTON_HEIGHT - MESSAGE_BOX_SPACING + btn.set_fixed_size + btn.color_scheme = @color_scheme + btn.set_interactive_rects + buttons.push([option[0], btn]) + end + # Interaction loop + ret = nil + captured = nil + loop do + Graphics.update + Input.update + if captured + captured.update + captured = nil if !captured.busy? + else + buttons.each do |btn| + btn[1].update + captured = btn[1] if btn[1].busy? + end + end + buttons.each do |btn| + next if !btn[1].changed? + ret = btn[0] + break + end + ret = :cancel if Input.triggerex?(:ESCAPE) + break if ret + buttons.each { |btn| btn[1].repaint } + end + # Dispose and return + buttons.each { |btn| btn[1].dispose } + buttons.clear + msg_bitmap.dispose + @pop_up_bg_bitmap.visible = false + return ret + end + + def confirm_message(text) + return message(text, [:yes, _INTL("Yes")], [:no, _INTL("No")]) == :yes + end + + #----------------------------------------------------------------------------- + + def edit_animation_properties + # Show pop-up window + @pop_up_bg_bitmap.visible = true + bg_bitmap = create_pop_up_window(ANIM_PROPERTIES_WIDTH, ANIM_PROPERTIES_HEIGHT) + anim_properties = @components[:animation_properties] + anim_properties.visible = true + # Set control values + case @anim[:type] + when :move, :opp_move + anim_properties.get_control(:type).value = :move + when :common, :opp_common + anim_properties.get_control(:type).value = :common + end + anim_properties.get_control(:opp_variant).value = ([:opp_move, :opp_common].include?(@anim[:type])) + anim_properties.get_control(:version).value = @anim[:version] || 0 + anim_properties.get_control(:name).value = @anim[:name] || "" + anim_properties.get_control(:pbs_path).value = (@anim[:pbs_path] || "unsorted") + ".txt" + anim_properties.get_control(:has_user).value = !@anim[:no_user] + anim_properties.get_control(:has_target).value = !@anim[:no_target] + anim_properties.get_control(:usable).value = !(@anim[:ignore] || false) + refresh_component(:animation_properties) # This sets the :move control's value + # Interaction loop + ret = nil + loop do + Graphics.update + Input.update + anim_properties.update + if anim_properties.changed? + break if anim_properties.values.keys.include?(:close) + anim_properties.values.each_pair do |property, value| + apply_changed_value(:animation_properties, property, value) + end + anim_properties.clear_changed + end + break if !anim_properties.busy? && Input.triggerex?(:ESCAPE) + anim_properties.repaint + end + # Dispose and return + bg_bitmap.dispose + @pop_up_bg_bitmap.visible = false + anim_properties.clear_changed + anim_properties.visible = false + end + + #----------------------------------------------------------------------------- + + def edit_editor_settings + # Show pop-up window + @pop_up_bg_bitmap.visible = true + bg_bitmap = create_pop_up_window(ANIM_PROPERTIES_WIDTH, ANIM_PROPERTIES_HEIGHT) + editor_settings = @components[:editor_settings] + editor_settings.visible = true + # Set control values + refresh_component(:editor_settings) + editor_settings.get_control(:color_scheme).value = @settings[:color_scheme] || :light + editor_settings.get_control(:side_size_1).value = @settings[:side_sizes][0] + editor_settings.get_control(:side_size_2).value = @settings[:side_sizes][1] + editor_settings.get_control(:user_index).value = @settings[:user_index] + editor_settings.get_control(:target_indices).value = @settings[:target_indices].join(",") + editor_settings.get_control(:user_opposes).value = @settings[:user_opposes] + editor_settings.get_control(:canvas_bg).value = @settings[:canvas_bg] + editor_settings.get_control(:user_sprite_name).value = @settings[:user_sprite_name] + editor_settings.get_control(:target_sprite_name).value = @settings[:target_sprite_name] + # Interaction loop + ret = nil + loop do + Graphics.update + Input.update + editor_settings.update + if editor_settings.changed? + break if editor_settings.values.keys.include?(:close) + editor_settings.values.each_pair do |property, value| + apply_changed_value(:editor_settings, property, value) + create_pop_up_window(ANIM_PROPERTIES_WIDTH, ANIM_PROPERTIES_HEIGHT, bg_bitmap) + end + editor_settings.clear_changed + end + break if !editor_settings.busy? && Input.triggerex?(:ESCAPE) + editor_settings.repaint + end + # Dispose and return + bg_bitmap.dispose + @pop_up_bg_bitmap.visible = false + editor_settings.clear_changed + editor_settings.visible = false + end + + #----------------------------------------------------------------------------- + + # Generates a list of all files in the given folder and its subfolders which + # have a file extension that matches one in exts. Removes any files from the + # list whose filename is the same as one in blacklist (case insensitive). + def get_all_files_in_folder(folder, exts, blacklist = []) + ret = [] + Dir.all(folder).each do |f| + next if !exts.include?(File.extname(f)) + file = f.sub(folder + "/", "") + ret.push([file.sub(File.extname(file), ""), file]) + end + ret.delete_if { |f| blacklist.any? { |add| add.upcase == f[0].upcase } } + ret.sort! { |a, b| a[0].downcase <=> b[0].downcase } + return ret + end + + def choose_graphic_file(selected) + selected ||= "" + sprite_folder = "Graphics/Battle animations" + # Show pop-up window + @pop_up_bg_bitmap.visible = true + bg_bitmap = create_pop_up_window(GRAPHIC_CHOOSER_WINDOW_WIDTH, GRAPHIC_CHOOSER_WINDOW_HEIGHT) + graphic_chooser = @components[:graphic_chooser] + graphic_chooser.visible = true + # Draw box around list control + list = graphic_chooser.get_control(:list) + # Get a list of files + files = get_all_files_in_folder( + sprite_folder, [".png", ".jpg", ".jpeg"], + ["USER", "USER_OPP", "USER_FRONT", "USER_BACK", "TARGET", "TARGET_OPP", "TARGET_FRONT", "TARGET_BACK"] + ) + if !@anim[:no_target] + files.prepend( + ["TARGET", _INTL("[[Target's sprite]]")], + ["TARGET_OPP", _INTL("[[Target's other side sprite]]")], + ["TARGET_FRONT", _INTL("[[Target's front sprite]]")], + ["TARGET_BACK", _INTL("[[Target's back sprite]]")] + ) + end + if !@anim[:no_user] + files.prepend( + ["USER", _INTL("[[User's sprite]]")], + ["USER_OPP", _INTL("[[User's other side sprite]]")], + ["USER_FRONT", _INTL("[[User's front sprite]]")], + ["USER_BACK", _INTL("[[User's back sprite]]")] + ) + end + idx = 0 + files.each_with_index do |f, i| + next if f[0] != selected + idx = i + break + end + # Set control values + list.values = files + list.selected = idx + # Create sprite preview + bg_bitmap.bitmap.outline_rect(BORDER_THICKNESS + list.x + list.width + 6, + BORDER_THICKNESS + list.y, + GRAPHIC_CHOOSER_PREVIEW_SIZE + 4, GRAPHIC_CHOOSER_PREVIEW_SIZE + 4, + line_color) + preview_sprite = Sprite.new(@pop_up_viewport) + preview_sprite.x = graphic_chooser.x + list.x + list.width + 8 + (GRAPHIC_CHOOSER_PREVIEW_SIZE / 2) + preview_sprite.y = graphic_chooser.y + list.y + 2 + (GRAPHIC_CHOOSER_PREVIEW_SIZE / 2) + preview_bitmap = nil + set_preview_graphic = lambda do |sprite, filename| + preview_bitmap&.dispose + folder = sprite_folder + "/" + fname = filename + if ["USER", "USER_BACK", "USER_FRONT", "USER_OPP", + "TARGET", "TARGET_FRONT", "TARGET_BACK", "TARGET_OPP"].include?(filename) + chunks = filename.split("_") + fname = (chunks[0] == "USER") ? @settings[:user_sprite_name].to_s : @settings[:target_sprite_name].to_s + case chunks[1] || "" + when "", "OPP" + if (chunks[0] == "USER") ^ (chunks[1] == "OPP") # xor + folder = (@settings[:user_opposes]) ? "Graphics/Pokemon/Front/" : "Graphics/Pokemon/Back/" + else + folder = (@settings[:user_opposes]) ? "Graphics/Pokemon/Back/" : "Graphics/Pokemon/Front/" + end + when "FRONT" + folder = "Graphics/Pokemon/Front/" + when "BACK" + folder = "Graphics/Pokemon/Back/" + end + end + preview_bitmap = AnimatedBitmap.new(folder + fname) + bg_bitmap.bitmap.fill_rect(BORDER_THICKNESS + list.x + list.width + 8, BORDER_THICKNESS + list.y + 2, + GRAPHIC_CHOOSER_PREVIEW_SIZE, GRAPHIC_CHOOSER_PREVIEW_SIZE, + background_color) + next if !preview_bitmap + sprite.bitmap = preview_bitmap.bitmap + zoom = [[GRAPHIC_CHOOSER_PREVIEW_SIZE.to_f / preview_bitmap.width, + GRAPHIC_CHOOSER_PREVIEW_SIZE.to_f / preview_bitmap.height].min, 1.0].min + sprite.zoom_x = sprite.zoom_y = zoom + sprite.ox = sprite.width / 2 + sprite.oy = sprite.height / 2 + bg_bitmap.bitmap.fill_rect(BORDER_THICKNESS + sprite.x - graphic_chooser.x - (sprite.width * sprite.zoom_x / 2).round, + BORDER_THICKNESS + sprite.y - graphic_chooser.y - (sprite.height * sprite.zoom_y / 2).round, + sprite.width * sprite.zoom_x, sprite.height * sprite.zoom_y, + Color.magenta) + end + set_preview_graphic.call(preview_sprite, list.value) + # Interaction loop + ret = nil + loop do + Graphics.update + Input.update + graphic_chooser.update + if graphic_chooser.changed? + graphic_chooser.values.each_pair do |ctrl, value| + case ctrl + when :ok + ret = list.value + when :cancel + ret = selected + when :list + set_preview_graphic.call(preview_sprite, list.value) + end + graphic_chooser.clear_changed + end + break if ret + graphic_chooser.repaint + end + if !graphic_chooser.busy? && Input.triggerex?(:ESCAPE) + ret = selected + break + end + end + # Dispose and return + bg_bitmap.dispose + preview_sprite.dispose + preview_bitmap&.dispose + @pop_up_bg_bitmap.visible = false + graphic_chooser.clear_changed + graphic_chooser.visible = false + return ret + end + + #----------------------------------------------------------------------------- + + def choose_audio_file(selected, volume = 100, pitch = 100) + selected ||= "" + audio_folder = "Audio/SE/Anim" + # Show pop-up window + @pop_up_bg_bitmap.visible = true + bg_bitmap = create_pop_up_window(AUDIO_CHOOSER_WINDOW_WIDTH, AUDIO_CHOOSER_WINDOW_HEIGHT) + audio_chooser = @components[:audio_chooser] + audio_chooser.visible = true + # Draw box around list control + list = audio_chooser.get_control(:list) + # Get a list of files + files = get_all_files_in_folder(audio_folder, [".wav", ".ogg", ".mp3", ".wma"], ["USER", "TARGET"]) + files.prepend(["TARGET", _INTL("[[Target's cry]]")]) if !@anim[:no_target] + files.prepend(["USER", _INTL("[[User's cry]]")]) if !@anim[:no_user] + idx = 0 + files.each_with_index do |f, i| + next if f[0] != selected + idx = i + break + end + # Set control values + list.values = files + list.selected = idx + audio_chooser.get_control(:volume).value = volume + audio_chooser.get_control(:pitch).value = pitch + # Interaction loop + ret = nil + cancel = false + loop do + Graphics.update + Input.update + audio_chooser.update + if audio_chooser.changed? + audio_chooser.values.each_pair do |ctrl, value| + case ctrl + when :ok + ret = list.value + when :cancel + ret = selected + cancel = true + when :play + vol = audio_chooser.get_control(:volume).value + ptch = audio_chooser.get_control(:pitch).value + case list.value + when "USER" + Pokemon.play_cry(@settings[:user_sprite_name]) + when "TARGET" + Pokemon.play_cry(@settings[:target_sprite_name]) + else + pbSEPlay(RPG::AudioFile.new("Anim/" + list.value, vol, ptch)) + end + when :stop + pbSEStop + end + audio_chooser.clear_changed + end + break if ret + audio_chooser.repaint + end + if !audio_chooser.busy? && Input.triggerex?(:ESCAPE) + ret = selected + cancel = true + break + end + end + vol = (cancel) ? volume : audio_chooser.get_control(:volume).value + ptch = (cancel) ? pitch : audio_chooser.get_control(:pitch).value + # Dispose and return + bg_bitmap.dispose + @pop_up_bg_bitmap.visible = false + audio_chooser.clear_changed + audio_chooser.visible = false + return [ret, vol, ptch] + end +end diff --git a/Data/Scripts/904_Anim Editor/003_AnimationEditor_side_panes.rb b/Data/Scripts/904_Anim Editor/003_AnimationEditor_side_panes.rb new file mode 100644 index 000000000..74814ba43 --- /dev/null +++ b/Data/Scripts/904_Anim Editor/003_AnimationEditor_side_panes.rb @@ -0,0 +1,678 @@ +#=============================================================================== +# +#=============================================================================== +module AnimationEditor::SidePanes + @@panes = {} + @@properties = {} + + def self.is_side_pane?(pane) + return @@panes.keys.include?(pane) + end + + def self.add_pane(symbol, hash) + @@panes[symbol] = hash + end + + def self.add_property(pane, symbol, hash) + @@properties[pane] ||= {} + @@properties[pane][symbol] = hash + end + + def self.each_pane + @@panes.each_pair { |pane, hash| yield pane, hash } + end + + def self.each_property(pane) + return if !@@properties[pane] + @@properties[pane].each_pair do |property, hash| + yield property, hash + end + end + + def self.get_pane(pane) + return @@panes[pane] + end + + def self.get_property(pane, property) + return nil if !@@properties[pane] || !@@properties[pane][property] + return @@properties[pane][property] + end + + def self.remove_pane(pane) + @@panes.remove(pane) + @@properties.remove(pane) + end + + def self.remove_property(pane, property) + @@properties[pane]&.remove(property) + end +end + +#=============================================================================== +# +#=============================================================================== +AnimationEditor::SidePanes.add_pane(:commands_pane, { + :deletable_properties => AnimationEditor::DELETABLE_COMMAND_PANE_PROPERTIES, + :set_visible => proc { |editor, anim, keyframe, particle_index| + next keyframe >= 0 && particle_index >= 0 && + anim[:particles][particle_index] && + anim[:particles][particle_index][:name] != "SE" && + editor.property_pane == :commands_pane + }, + :apply_value => proc { |property, value, editor| + particle = editor.anim[:particles][editor.particle_index] + prop = property + if property.to_s[/_delete$/] + prop = property.to_s.sub(/_delete$/, "").to_sym + new_cmds = AnimationEditor::ParticleDataHelper.delete_command(particle, prop, editor.keyframe) + else + new_cmds = AnimationEditor::ParticleDataHelper.add_command(particle, property, editor.keyframe, value) + end + if new_cmds + particle[prop] = new_cmds + else + particle.delete(prop) + end + editor.components[:particle_list].change_particle_commands(editor.particle_index) + editor.components[:play_controls].duration = editor.components[:particle_list].duration + editor.refresh_component(:commands_pane) + editor.refresh_component(:canvas) + } +}) + +AnimationEditor::SidePanes.add_pane(:color_tone_pane, { + :deletable_properties => AnimationEditor::DELETABLE_COLOR_TONE_PANE_PROPERTIES, + :set_visible => proc { |editor, anim, keyframe, particle_index| + next keyframe >= 0 && particle_index >= 0 && + anim[:particles][particle_index] && + anim[:particles][particle_index][:name] != "SE" && + editor.property_pane == :color_tone_pane + }, + :apply_value => proc { |property, value, editor| + particle = editor.anim[:particles][editor.particle_index] + prop = property + if property.to_s[/_delete$/] + prop = property.to_s.sub(/_delete$/, "").to_sym + new_cmds = AnimationEditor::ParticleDataHelper.delete_command(particle, prop, editor.keyframe) + else + new_cmds = AnimationEditor::ParticleDataHelper.add_command(particle, property, editor.keyframe, value) + end + if new_cmds + particle[prop] = new_cmds + else + particle.delete(prop) + end + editor.components[:particle_list].change_particle_commands(editor.particle_index) + editor.components[:play_controls].duration = editor.components[:particle_list].duration + editor.refresh_component(:color_tone_pane) + editor.refresh_component(:canvas) + } +}) + +# NOTE: Doesn't need an :apply_value proc. +AnimationEditor::SidePanes.add_pane(:se_pane, { + :set_visible => proc { |editor, anim, keyframe, particle_index| + next keyframe >= 0 && particle_index >= 0 && + anim[:particles][particle_index] && + anim[:particles][particle_index][:name] == "SE" + } +}) + +AnimationEditor::SidePanes.add_pane(:particle_pane, { + :unchanging_properties => true, + :set_visible => proc { |editor, anim, keyframe, particle_index| + next keyframe < 0 && particle_index >= 0 + }, + :apply_value => proc { |property, value, editor| + particle = editor.anim[:particles][editor.particle_index] + new_cmds = AnimationEditor::ParticleDataHelper.set_property(particle, property, value) + editor.components[:particle_list].change_particle(editor.particle_index) + editor.refresh_component(:particle_pane) + editor.refresh_component(:canvas) + } +}) + +#=============================================================================== +# +#=============================================================================== +AnimationEditor::SidePanes.add_property(:commands_pane, :header, { + :new => proc { |pane, editor| + pane.add_header_label(:header, _INTL("Edit particle at keyframe")) + } +}) + +AnimationEditor::SidePanes.add_property(:commands_pane, :tab_buttons, { + :new => proc { |pane, editor| + editor.add_side_pane_tab_buttons(:commands_pane, pane) + } +}) + +AnimationEditor::SidePanes.add_property(:commands_pane, :x, { + :new => proc { |pane, editor| + pane.add_labelled_number_text_box(:x, _INTL("X"), -999, 999, 0) + } +}) + +AnimationEditor::SidePanes.add_property(:commands_pane, :y, { + :new => proc { |pane, editor| + pane.add_labelled_number_text_box(:y, _INTL("Y"), -999, 999, 0) + } +}) + +AnimationEditor::SidePanes.add_property(:commands_pane, :z, { + :new => proc { |pane, editor| + pane.add_labelled_number_slider(:z, _INTL("Priority"), -50, 50, 0) + }, + :refresh_value => proc { |control, editor| + # Set an appropriate range for the priority (z) property depending on the + # particle's focus + case editor.anim[:particles][editor.particle_index][:focus] + when :user_and_target + control.min_value = GameData::Animation::USER_AND_TARGET_SEPARATION[2] - 50 + control.max_value = 50 + else + control.min_value = -50 + control.max_value = 50 + end + } +}) + +AnimationEditor::SidePanes.add_property(:commands_pane, :frame, { + :new => proc { |pane, editor| + pane.add_labelled_number_text_box(:frame, _INTL("Frame"), 0, 99, 0) + }, + :refresh_value => proc { |control, editor| + # Disable the "Frame" control if the particle's graphic is predefined to be + # the user's or target's sprite + graphic = editor.anim[:particles][editor.particle_index][:graphic] + if ["USER", "USER_OPP", "USER_FRONT", "USER_BACK", + "TARGET", "TARGET_OPP", "TARGET_FRONT", "TARGET_BACK"].include?(graphic) + control.disable + else + control.enable + end + } +}) + +AnimationEditor::SidePanes.add_property(:commands_pane, :visible, { + :new => proc { |pane, editor| + pane.add_labelled_checkbox(:visible, _INTL("Visible"), true) + } +}) + +AnimationEditor::SidePanes.add_property(:commands_pane, :opacity, { + :new => proc { |pane, editor| + pane.add_labelled_number_slider(:opacity, _INTL("Opacity"), 0, 255, 255) + } +}) + +AnimationEditor::SidePanes.add_property(:commands_pane, :zoom_x, { + :new => proc { |pane, editor| + pane.add_labelled_number_text_box(:zoom_x, _INTL("Zoom X"), 0, 1000, 100) + } +}) + +AnimationEditor::SidePanes.add_property(:commands_pane, :zoom_y, { + :new => proc { |pane, editor| + pane.add_labelled_number_text_box(:zoom_y, _INTL("Zoom Y"), 0, 1000, 100) + } +}) + +AnimationEditor::SidePanes.add_property(:commands_pane, :angle, { + :new => proc { |pane, editor| + pane.add_labelled_number_text_box(:angle, _INTL("Angle"), -1080, 1080, 0) + } +}) + +AnimationEditor::SidePanes.add_property(:commands_pane, :flip, { + :new => proc { |pane, editor| + pane.add_labelled_checkbox(:flip, _INTL("Flip"), false) + } +}) + +AnimationEditor::SidePanes.add_property(:commands_pane, :blending, { + :new => proc { |pane, editor| + pane.add_labelled_dropdown_list(:blending, _INTL("Blending"), { + 0 => _INTL("None"), + 1 => _INTL("Additive"), + 2 => _INTL("Subtractive") + }, 0) + } +}) + +#=============================================================================== +# +#=============================================================================== +AnimationEditor::SidePanes.add_property(:color_tone_pane, :header, { + :new => proc { |pane, editor| + pane.add_header_label(:header, _INTL("Edit particle at keyframe")) + } +}) + +AnimationEditor::SidePanes.add_property(:color_tone_pane, :tab_buttons, { + :new => proc { |pane, editor| + editor.add_side_pane_tab_buttons(:color_tone_pane, pane) + } +}) + +AnimationEditor::SidePanes.add_property(:color_tone_pane, :color_red, { + :new => proc { |pane, editor| + pane.add_labelled_number_slider(:color_red, _INTL("Color Red"), 0, 255, 0) + } +}) + +AnimationEditor::SidePanes.add_property(:color_tone_pane, :color_green, { + :new => proc { |pane, editor| + pane.add_labelled_number_slider(:color_green, _INTL("Color Green"), 0, 255, 0) + } +}) + +AnimationEditor::SidePanes.add_property(:color_tone_pane, :color_blue, { + :new => proc { |pane, editor| + pane.add_labelled_number_slider(:color_blue, _INTL("Color Blue"), 0, 255, 0) + } +}) + +AnimationEditor::SidePanes.add_property(:color_tone_pane, :color_alpha, { + :new => proc { |pane, editor| + pane.add_labelled_number_slider(:color_alpha, _INTL("Color Alpha"), 0, 255, 0) + } +}) + +AnimationEditor::SidePanes.add_property(:color_tone_pane, :tone_red, { + :new => proc { |pane, editor| + pane.add_labelled_number_slider(:tone_red, _INTL("Tone Red"), -255, 255, 0) + } +}) + +AnimationEditor::SidePanes.add_property(:color_tone_pane, :tone_green, { + :new => proc { |pane, editor| + pane.add_labelled_number_slider(:tone_green, _INTL("Tone Green"), -255, 255, 0) + } +}) + +AnimationEditor::SidePanes.add_property(:color_tone_pane, :tone_blue, { + :new => proc { |pane, editor| + pane.add_labelled_number_slider(:tone_blue, _INTL("Tone Blue"), -255, 255, 0) + } +}) + +AnimationEditor::SidePanes.add_property(:color_tone_pane, :tone_gray, { + :new => proc { |pane, editor| + pane.add_labelled_number_slider(:tone_gray, _INTL("Tone Gray"), 0, 255, 0) + } +}) + +#=============================================================================== +# +#=============================================================================== +AnimationEditor::SidePanes.add_property(:se_pane, :header, { + :new => proc { |pane, editor| + pane.add_header_label(:header, _INTL("Edit sound effects at keyframe")) + } +}) + +AnimationEditor::SidePanes.add_property(:se_pane, :list, { + :new => proc { |pane, editor| + size = pane.control_size + size[0] -= 6 + size[1] = (UIControls::List::ROW_HEIGHT * 5) + (UIControls::List::BORDER_THICKNESS * 2) # 5 rows + list = UIControls::List.new(*size, pane.viewport, []) + pane.add_control_at(:list, list, 3, 28) + }, + :refresh_value => proc { |control, editor| + se_particle = editor.anim[:particles].select { |particle| particle[:name] == "SE" }[0] + keyframe = editor.keyframe + # Populate list of files + list = [] + se_particle.each_pair do |property, values| + next if !values.is_a?(Array) + values.each do |val| + next if val[0] != keyframe + text = AnimationEditor::ParticleDataHelper.get_se_display_text(property, val) + case property + when :user_cry then list.push(["USER", text]) + when :target_cry then list.push(["TARGET", text]) + when :se then list.push([val[2], text]) + end + end + end + list.sort! { |a, b| a[1].downcase <=> b[1].downcase } + control.values = list + }, + :apply_value => proc { |value, editor| + editor.refresh_component(:se_pane) + } +}) + +AnimationEditor::SidePanes.add_property(:se_pane, :add, { + :new => proc { |pane, editor| + button_height = UIControls::ControlsContainer::LINE_SPACING + button = UIControls::Button.new(101, button_height, pane.viewport, _INTL("Add")) + button.set_fixed_size + pane.add_control_at(:add, button, 1, 154) + }, + :apply_value => proc { |value, editor| + new_file, new_volume, new_pitch = editor.choose_audio_file("", 100, 100) + if new_file != "" + particle = editor.anim[:particles][editor.particle_index] + AnimationEditor::ParticleDataHelper.add_se_command(particle, editor.keyframe, new_file, new_volume, new_pitch) + editor.components[:particle_list].change_particle_commands(editor.particle_index) + editor.components[:play_controls].duration = editor.components[:particle_list].duration + editor.refresh_component(:se_pane) + end + } +}) + +AnimationEditor::SidePanes.add_property(:se_pane, :edit, { + :new => proc { |pane, editor| + button_height = UIControls::ControlsContainer::LINE_SPACING + button = UIControls::Button.new(100, button_height, pane.viewport, _INTL("Edit")) + button.set_fixed_size + pane.add_control_at(:edit, button, 102, 154) + }, + :refresh_value => proc { |control, editor| + has_se = AnimationEditor::ParticleDataHelper.has_se_command_at?(editor.anim[:particles], editor.keyframe) + list = editor.components[:se_pane].get_control(:list) + if has_se && list.value + control.enable + else + control.disable + end + }, + :apply_value => proc { |value, editor| + particle = editor.anim[:particles][editor.particle_index] + list = editor.components[:se_pane].get_control(:list) + old_file = list.value + old_volume, old_pitch = AnimationEditor::ParticleDataHelper.get_se_values_from_filename_and_frame(particle, editor.keyframe, old_file) + if old_file + new_file, new_volume, new_pitch = editor.choose_audio_file(old_file, old_volume, old_pitch) + if new_file != old_file || new_volume != old_volume || new_pitch != old_pitch + AnimationEditor::ParticleDataHelper.delete_se_command(particle, editor.keyframe, old_file) + AnimationEditor::ParticleDataHelper.add_se_command(particle, editor.keyframe, new_file, new_volume, new_pitch) + editor.components[:particle_list].change_particle_commands(editor.particle_index) + editor.components[:play_controls].duration = editor.components[:particle_list].duration + editor.refresh_component(:se_pane) + end + end + } +}) + +AnimationEditor::SidePanes.add_property(:se_pane, :delete, { + :new => proc { |pane, editor| + button_height = UIControls::ControlsContainer::LINE_SPACING + button = UIControls::Button.new(101, button_height, pane.viewport, _INTL("Delete")) + button.set_fixed_size + pane.add_control_at(:delete, button, 202, 154) + }, + :refresh_value => proc { |control, editor| + has_se = AnimationEditor::ParticleDataHelper.has_se_command_at?(editor.anim[:particles], editor.keyframe) + list = editor.components[:se_pane].get_control(:list) + if has_se && list.value + control.enable + else + control.disable + end + }, + :apply_value => proc { |value, editor| + particle = editor.anim[:particles][editor.particle_index] + list = editor.components[:se_pane].get_control(:list) + old_file = list.value + if old_file + AnimationEditor::ParticleDataHelper.delete_se_command(particle, editor.keyframe, old_file) + editor.components[:particle_list].change_particle_commands(editor.particle_index) + editor.components[:play_controls].duration = editor.components[:particle_list].duration + editor.refresh_component(:se_pane) + end + } +}) + +#=============================================================================== +# +#=============================================================================== +AnimationEditor::SidePanes.add_property(:particle_pane, :header, { + :new => proc { |pane, editor| + pane.add_header_label(:header, _INTL("Edit particle properties")) + } +}) + +AnimationEditor::SidePanes.add_property(:particle_pane, :name, { + :new => proc { |pane, editor| + pane.add_labelled_text_box(:name, _INTL("Name"), "") + pane.get_control(:name).set_blacklist("", "User", "Target", "SE") + } +}) + +AnimationEditor::SidePanes.add_property(:particle_pane, :graphic_name, { + :new => proc { |pane, editor| + pane.add_labelled_label(:graphic_name, _INTL("Graphic"), "") + }, + :refresh_value => proc { |control, editor| + graphic_name = editor.anim[:particles][editor.particle_index][:graphic] + graphic_override_names = { + "USER" => _INTL("[[User's sprite]]"), + "USER_OPP" => _INTL("[[User's other side sprite]]"), + "USER_FRONT" => _INTL("[[User's front sprite]]"), + "USER_BACK" => _INTL("[[User's back sprite]]"), + "TARGET" => _INTL("[[Target's sprite]]"), + "TARGET_OPP" => _INTL("[[Target's other side sprite]]"), + "TARGET_FRONT" => _INTL("[[Target's front sprite]]"), + "TARGET_BACK" => _INTL("[[Target's back sprite]]"), + } + graphic_name = graphic_override_names[graphic_name] if graphic_override_names[graphic_name] + control.text = graphic_name + } +}) + +AnimationEditor::SidePanes.add_property(:particle_pane, :graphic, { + :new => proc { |pane, editor| + pane.add_labelled_button(:graphic, "", _INTL("Change")) + }, + :refresh_value => proc { |control, editor| + if ["User", "Target"].include?(editor.anim[:particles][editor.particle_index][:name]) + control.disable + else + control.enable + end + }, + :apply_value => proc { |value, editor| + p_index = editor.particle_index + new_file = editor.choose_graphic_file(editor.anim[:particles][p_index][:graphic]) + if editor.anim[:particles][p_index][:graphic] != new_file + editor.anim[:particles][p_index][:graphic] = new_file + if ["USER", "USER_BACK", "USER_FRONT", "USER_OPP", + "TARGET", "TARGET_FRONT", "TARGET_BACK", "TARGET_OPP"].include?(new_file) + editor.anim[:particles][p_index].delete(:frame) + editor.components[:particle_list].set_particles(editor.anim[:particles]) + editor.refresh_component(:particle_list) + end + editor.refresh_component(:particle_pane) + editor.refresh_component(:canvas) + end + } +}) + +AnimationEditor::SidePanes.add_property(:particle_pane, :focus, { + :new => proc { |pane, editor| + pane.add_labelled_dropdown_list(:focus, _INTL("Focus"), {}, :undefined) + }, + :refresh_value => proc { |control, editor| + if ["User", "Target"].include?(editor.anim[:particles][editor.particle_index][:name]) + control.disable + else + control.enable + end + focus_values = { + :foreground => _INTL("Foreground"), + :midground => _INTL("Midground"), + :background => _INTL("Background"), + :user => _INTL("User"), + :target => _INTL("Target"), + :user_and_target => _INTL("User and target"), + :user_side_foreground => _INTL("In front of user's side"), + :user_side_background => _INTL("Behind user's side"), + :target_side_foreground => _INTL("In front of target's side"), + :target_side_background => _INTL("Behind target's side") + } + if editor.anim[:no_user] + GameData::Animation::FOCUS_TYPES_WITH_USER.each { |f| focus_values.delete(f) } + end + if editor.anim[:no_target] + GameData::Animation::FOCUS_TYPES_WITH_TARGET.each { |f| focus_values.delete(f) } + end + control.values = focus_values + } +}) + +AnimationEditor::SidePanes.add_property(:particle_pane, :random_frame_max, { + :new => proc { |pane, editor| + pane.add_labelled_number_text_box(:random_frame_max, _INTL("Rand. frame"), 0, 99, 0) + } +}) + +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 dir. with gravity"), + :random_up_direction_gravity => _INTL("Random up dir. gravity") + } + pane.add_labelled_dropdown_list(:spawner, _INTL("Spawner"), values, :none) + } +}) + +AnimationEditor::SidePanes.add_property(:particle_pane, :spawn_quantity, { + :new => proc { |pane, editor| + pane.add_labelled_number_text_box(:spawn_quantity, _INTL("Spawn qty"), 1, 99, 1) + }, + :refresh_value => proc { |control, editor| + spawner = editor.anim[:particles][editor.particle_index][:spawner] + if !spawner || spawner == :none + control.disable + 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 + } +}) + +AnimationEditor::SidePanes.add_property(:particle_pane, :angle_override, { + :new => proc { |pane, editor| + values = { + :none => _INTL("None"), + :initial_angle_to_focus => _INTL("Initial angle to focus"), + :always_point_at_focus => _INTL("Always point at focus") + } + pane.add_labelled_dropdown_list(:angle_override, _INTL("Smart angle"), values, :none) + }, + :refresh_value => proc { |control, editor| + focus = editor.anim[:particles][editor.particle_index][:focus] + if !GameData::Animation::FOCUS_TYPES_WITH_USER.include?(focus) && + !GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(focus) + editor.anim[:particles][editor.particle_index][:angle_override] = :none + control.value = :none + control.disable + else + control.enable + end + } +}) + +AnimationEditor::SidePanes.add_property(:particle_pane, :opposing_label, { + :new => proc { |pane, editor| + pane.add_label(:opposing_label, _INTL("If on opposing side...")) + } +}) + +AnimationEditor::SidePanes.add_property(:particle_pane, :foe_invert_x, { + :new => proc { |pane, editor| + pane.add_labelled_checkbox(:foe_invert_x, _INTL("Invert X"), false) + }, + :refresh_value => proc { |control, editor| + focus = editor.anim[:particles][editor.particle_index][:focus] + if GameData::Animation::FOCUS_TYPES_WITH_USER.include?(focus) == GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(focus) + control.disable + else + control.enable + end + } +}) + +AnimationEditor::SidePanes.add_property(:particle_pane, :foe_invert_y, { + :new => proc { |pane, editor| + pane.add_labelled_checkbox(:foe_invert_y, _INTL("Invert Y"), false) + }, + :refresh_value => proc { |control, editor| + focus = editor.anim[:particles][editor.particle_index][:focus] + if GameData::Animation::FOCUS_TYPES_WITH_USER.include?(focus) == GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(focus) + control.disable + else + control.enable + end + } +}) + +AnimationEditor::SidePanes.add_property(:particle_pane, :foe_flip, { + :new => proc { |pane, editor| + pane.add_labelled_checkbox(:foe_flip, _INTL("Flip sprite"), false) + }, + :refresh_value => proc { |control, editor| + focus = editor.anim[:particles][editor.particle_index][:focus] + if GameData::Animation::FOCUS_TYPES_WITH_USER.include?(focus) == GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(focus) + control.disable + else + control.enable + end + } +}) + +AnimationEditor::SidePanes.add_property(:particle_pane, :duplicate, { + :new => proc { |pane, editor| + pane.add_button(:duplicate, _INTL("Duplicate this particle")) + }, + :refresh_value => proc { |control, editor| + if editor.anim[:particles][editor.particle_index][:name] == "SE" + control.disable + else + control.enable + end + }, + :apply_value => proc { |value, editor| + p_index = editor.particle_index + AnimationEditor::ParticleDataHelper.duplicate_particle(editor.anim[:particles], p_index) + editor.components[:particle_list].add_particle(p_index + 1) + editor.components[:particle_list].set_particles(editor.anim[:particles]) + editor.components[:particle_list].particle_index = p_index + 1 + editor.refresh + } +}) + +AnimationEditor::SidePanes.add_property(:particle_pane, :delete, { + :new => proc { |pane, editor| + pane.add_button(:delete, _INTL("Delete this particle")) + }, + :refresh_value => proc { |control, editor| + if ["User", "Target", "SE"].include?(editor.anim[:particles][editor.particle_index][:name]) + control.disable + else + control.enable + end + }, + :apply_value => proc { |value, editor| + if editor.confirm_message(_INTL("Are you sure you want to delete this particle?")) + p_index = editor.particle_index + AnimationEditor::ParticleDataHelper.delete_particle(editor.anim[:particles], p_index) + editor.components[:particle_list].delete_particle(p_index) + editor.components[:particle_list].set_particles(editor.anim[:particles]) + p_index = editor.particle_index + editor.components[:particle_list].keyframe = 0 if editor.anim[:particles][p_index][:name] == "SE" + editor.refresh + end + } +}) diff --git a/Data/Scripts/904_Anim Editor/010_AnimationSelector.rb b/Data/Scripts/904_Anim Editor/010_AnimationSelector.rb new file mode 100644 index 000000000..d675842bb --- /dev/null +++ b/Data/Scripts/904_Anim Editor/010_AnimationSelector.rb @@ -0,0 +1,445 @@ +#=============================================================================== +# +#=============================================================================== +class AnimationEditor::AnimationSelector + BORDER_THICKNESS = 4 + LABEL_OFFSET_X = -4 # Position of label relative to what they're labelling + LABEL_OFFSET_Y = -32 + + QUIT_BUTTON_WIDTH = 80 + QUIT_BUTTON_HEIGHT = 30 + + TYPE_BUTTONS_X = 2 + TYPE_BUTTONS_Y = 62 + TYPE_BUTTON_WIDTH = 100 + TYPE_BUTTON_HEIGHT = 48 + + LIST_BORDER_PADDING = (UIControls::List::BORDER_THICKNESS * 2) + MOVES_LIST_X = TYPE_BUTTONS_X + TYPE_BUTTON_WIDTH + 2 + MOVES_LIST_Y = TYPE_BUTTONS_Y + 2 + MOVES_LIST_WIDTH = 200 + LIST_BORDER_PADDING + MOVES_LIST_HEIGHT = AnimationEditor::WINDOW_HEIGHT - MOVES_LIST_Y - LIST_BORDER_PADDING + MOVES_LIST_HEIGHT = (((MOVES_LIST_HEIGHT - LIST_BORDER_PADDING) / UIControls::List::ROW_HEIGHT) * UIControls::List::ROW_HEIGHT) + MOVES_LIST_HEIGHT += LIST_BORDER_PADDING + + ANIMATIONS_LIST_X = MOVES_LIST_X + MOVES_LIST_WIDTH + 4 + ANIMATIONS_LIST_Y = MOVES_LIST_Y + ANIMATIONS_LIST_WIDTH = 300 + LIST_BORDER_PADDING + ANIMATIONS_LIST_HEIGHT = MOVES_LIST_HEIGHT + + ACTION_BUTTON_WIDTH = 200 + ACTION_BUTTON_HEIGHT = 48 + ACTION_BUTTON_X = ANIMATIONS_LIST_X + ANIMATIONS_LIST_WIDTH + 2 + ACTION_BUTTON_Y = TYPE_BUTTONS_Y + ((ANIMATIONS_LIST_HEIGHT - (ACTION_BUTTON_HEIGHT * 3)) / 2) + 4 + + FILTER_BOX_WIDTH = ACTION_BUTTON_WIDTH + FILTER_BOX_HEIGHT = UIControls::TextBox::TEXT_BOX_HEIGHT + FILTER_BOX_X = ACTION_BUTTON_X + FILTER_BOX_Y = MOVES_LIST_Y + + # Pop-up window + MESSAGE_BOX_WIDTH = AnimationEditor::WINDOW_WIDTH * 3 / 4 + MESSAGE_BOX_HEIGHT = 160 + MESSAGE_BOX_BUTTON_WIDTH = 150 + MESSAGE_BOX_BUTTON_HEIGHT = 32 + MESSAGE_BOX_SPACING = 16 + + include AnimationEditor::SettingsMixin + include UIControls::StyleMixin + + def initialize + load_settings + @animation_type = 0 # 0=move, 1=common + @filter_text = "" + @quit = false + generate_full_lists + initialize_viewports + initialize_bitmaps + initialize_controls + self.color_scheme = @settings[:color_scheme] + refresh + end + + def initialize_viewports + @viewport = Viewport.new(0, 0, AnimationEditor::WINDOW_WIDTH, AnimationEditor::WINDOW_HEIGHT) + @viewport.z = 99999 + @pop_up_viewport = Viewport.new(0, 0, AnimationEditor::WINDOW_WIDTH, AnimationEditor::WINDOW_HEIGHT) + @pop_up_viewport.z = @viewport.z + 50 + end + + def initialize_bitmaps + # Background + @screen_bitmap = BitmapSprite.new(AnimationEditor::WINDOW_WIDTH, AnimationEditor::WINDOW_HEIGHT, @viewport) + # Semi-transparent black overlay to dim the screen while a pop-up window is open + @pop_up_bg_bitmap = BitmapSprite.new(AnimationEditor::WINDOW_WIDTH, AnimationEditor::WINDOW_HEIGHT, @pop_up_viewport) + @pop_up_bg_bitmap.z = -100 + @pop_up_bg_bitmap.visible = false + # Draw in these bitmaps + draw_editor_background + end + + def initialize_controls + @components = UIControls::ControlsContainer.new(0, 0, AnimationEditor::WINDOW_WIDTH, AnimationEditor::WINDOW_HEIGHT) + # Quit button + btn = UIControls::Button.new(QUIT_BUTTON_WIDTH, QUIT_BUTTON_HEIGHT, @viewport, _INTL("Quit")) + btn.set_fixed_size + @components.add_control_at(:quit, btn, 0, 0) + # New button + btn = UIControls::Button.new(QUIT_BUTTON_WIDTH, QUIT_BUTTON_HEIGHT, @viewport, _INTL("New")) + btn.set_fixed_size + @components.add_control_at(:new, btn, QUIT_BUTTON_WIDTH, 0) + # Type label + label = UIControls::Label.new(TYPE_BUTTON_WIDTH, TYPE_BUTTON_HEIGHT, @viewport, _INTL("Anim types")) + label.header = true + @components.add_control_at(:type_label, label, TYPE_BUTTONS_X + LABEL_OFFSET_X + 4, TYPE_BUTTONS_Y + LABEL_OFFSET_Y + 4) + # Animation type toggle buttons + [[:moves, _INTL("Moves")], [:commons, _INTL("Common")]].each_with_index do |val, i| + btn = UIControls::Button.new(TYPE_BUTTON_WIDTH, TYPE_BUTTON_HEIGHT, @viewport, val[1]) + btn.set_fixed_size + @components.add_control_at(val[0], btn, TYPE_BUTTONS_X, TYPE_BUTTONS_Y + (i * TYPE_BUTTON_HEIGHT)) + end + # Moves list label + label = UIControls::Label.new(MOVES_LIST_WIDTH, TYPE_BUTTON_HEIGHT, @viewport, _INTL("Moves")) + label.header = true + @components.add_control_at(:moves_label, label, MOVES_LIST_X + LABEL_OFFSET_X, MOVES_LIST_Y + LABEL_OFFSET_Y) + # Moves list + list = UIControls::List.new(MOVES_LIST_WIDTH, MOVES_LIST_HEIGHT, @viewport, []) + @components.add_control_at(:moves_list, list, MOVES_LIST_X, MOVES_LIST_Y) + # Animations list label + label = UIControls::Label.new(ANIMATIONS_LIST_WIDTH, TYPE_BUTTON_HEIGHT, @viewport, _INTL("Animations")) + label.header = true + @components.add_control_at(:animations_label, label, ANIMATIONS_LIST_X + LABEL_OFFSET_X, ANIMATIONS_LIST_Y + LABEL_OFFSET_Y) + # Animations list + list = UIControls::List.new(ANIMATIONS_LIST_WIDTH, ANIMATIONS_LIST_HEIGHT, @viewport, []) + @components.add_control_at(:animations_list, list, ANIMATIONS_LIST_X, ANIMATIONS_LIST_Y) + # Edit, Copy and Delete buttons + [[:edit, _INTL("Edit animation")], [:copy, _INTL("Copy animation")], [:delete, _INTL("Delete animation")]].each_with_index do |val, i| + btn = UIControls::Button.new(ACTION_BUTTON_WIDTH, ACTION_BUTTON_HEIGHT, @viewport, val[1]) + btn.set_fixed_size + @components.add_control_at(val[0], btn, ACTION_BUTTON_X, ACTION_BUTTON_Y + (i * ACTION_BUTTON_HEIGHT)) + end + # Filter text box + text_box = UIControls::TextBox.new(FILTER_BOX_WIDTH, FILTER_BOX_HEIGHT, @viewport, "") + @components.add_control_at(:filter, text_box, FILTER_BOX_X, FILTER_BOX_Y) + # Filter text box label + label = UIControls::Label.new(FILTER_BOX_WIDTH, TYPE_BUTTON_HEIGHT, @viewport, _INTL("Filter text")) + label.header = true + @components.add_control_at(:filter_label, label, FILTER_BOX_X + LABEL_OFFSET_X, FILTER_BOX_Y + LABEL_OFFSET_Y) + end + + def dispose + @screen_bitmap.dispose + @pop_up_bg_bitmap.dispose + @components.dispose + @viewport.dispose + @pop_up_viewport.dispose + end + + #----------------------------------------------------------------------------- + + def color_scheme=(value) + return if @color_scheme == value + @color_scheme = value + draw_editor_background + @components.color_scheme = value + refresh + end + + #----------------------------------------------------------------------------- + + def draw_editor_background + # Fill the whole screen with white + @screen_bitmap.bitmap.fill_rect(0, 0, AnimationEditor::WINDOW_WIDTH, AnimationEditor::WINDOW_HEIGHT, background_color) + # Make the pop-up background semi-transparent + @pop_up_bg_bitmap.bitmap.fill_rect(0, 0, AnimationEditor::WINDOW_WIDTH, AnimationEditor::WINDOW_HEIGHT, semi_transparent_color) + end + + #----------------------------------------------------------------------------- + + def create_pop_up_window(width, height) + ret = BitmapSprite.new(width + (BORDER_THICKNESS * 2), + height + (BORDER_THICKNESS * 2), @pop_up_viewport) + ret.x = (AnimationEditor::WINDOW_WIDTH - ret.width) / 2 + ret.y = (AnimationEditor::WINDOW_HEIGHT - ret.height) / 2 + ret.z = -1 + ret.bitmap.font.color = text_color + ret.bitmap.font.size = text_size + # Draw pop-up box border + ret.bitmap.border_rect(BORDER_THICKNESS, BORDER_THICKNESS, width, height, + BORDER_THICKNESS, background_color, line_color) + # Fill pop-up box with white + ret.bitmap.fill_rect(BORDER_THICKNESS, BORDER_THICKNESS, width, height, background_color) + return ret + end + + #----------------------------------------------------------------------------- + + def message(text, *options) + @pop_up_bg_bitmap.visible = true + msg_bitmap = create_pop_up_window(MESSAGE_BOX_WIDTH, MESSAGE_BOX_HEIGHT) + # Draw text + text_size = msg_bitmap.bitmap.text_size(text) + msg_bitmap.bitmap.draw_text(0, (msg_bitmap.height / 2) - MESSAGE_BOX_BUTTON_HEIGHT, + msg_bitmap.width, text_size.height, text, 1) + # Create buttons + buttons = [] + options.each_with_index do |option, i| + btn = UIControls::Button.new(MESSAGE_BOX_BUTTON_WIDTH, MESSAGE_BOX_BUTTON_HEIGHT, @pop_up_viewport, option[1]) + btn.x = msg_bitmap.x + (msg_bitmap.width - (MESSAGE_BOX_BUTTON_WIDTH * options.length)) / 2 + btn.x += MESSAGE_BOX_BUTTON_WIDTH * i + btn.y = msg_bitmap.y + msg_bitmap.height - MESSAGE_BOX_BUTTON_HEIGHT - MESSAGE_BOX_SPACING + btn.set_fixed_size + btn.color_scheme = @color_scheme + btn.set_interactive_rects + buttons.push([option[0], btn]) + end + # Interaction loop + ret = nil + captured = nil + loop do + Graphics.update + Input.update + if captured + captured.update + captured = nil if !captured.busy? + else + buttons.each do |btn| + btn[1].update + captured = btn[1] if btn[1].busy? + end + end + buttons.each do |btn| + next if !btn[1].changed? + ret = btn[0] + break + end + ret = :cancel if Input.triggerex?(:ESCAPE) + break if ret + buttons.each { |btn| btn[1].repaint } + end + # Dispose and return + buttons.each { |btn| btn[1].dispose } + buttons.clear + msg_bitmap.dispose + @pop_up_bg_bitmap.visible = false + return ret + end + + def confirm_message(text) + return message(text, [:yes, _INTL("Yes")], [:no, _INTL("No")]) == :yes + end + + #----------------------------------------------------------------------------- + + def generate_full_lists + @full_move_animations = {} + @full_common_animations = {} + GameData::Animation.keys.each do |id| + anim = GameData::Animation.get(id) + name = "" + name += "\\c[2]" if anim.ignore + name += _INTL("[Foe]") + " " if anim.opposing_animation? + name += "[#{anim.version}]" + " " if anim.version > 0 + name += (anim.name || anim.move) + if anim.move_animation? + move_name = GameData::Move.try_get(anim.move)&.name || anim.move + @full_move_animations[anim.move] ||= [] + @full_move_animations[anim.move].push([id, name, move_name]) + elsif anim.common_animation? + @full_common_animations[anim.move] ||= [] + @full_common_animations[anim.move].push([id, name]) + end + end + @full_move_animations.values.each do |val| + val.sort! { |a, b| a[1] <=> b[1] } + end + @full_common_animations.values.each do |val| + val.sort! { |a, b| a[1] <=> b[1] } + end + apply_list_filter + end + + def apply_list_filter + # Apply filter + if @filter_text == "" + @move_animations = @full_move_animations.clone + @common_animations = @full_common_animations.clone + else + filter = @filter_text.downcase + @move_animations.clear + @full_move_animations.each_pair do |move, anims| + anims.each do |anim| + next if !anim[1].downcase.include?(filter) && !anim[2].downcase.include?(filter) + @move_animations[move] ||= [] + @move_animations[move].push(anim) + end + end + @common_animations.clear + @full_common_animations.each_pair do |common, anims| + anims.each do |anim| + next if !anim[1].downcase.include?(filter) && !common.downcase.include?(filter) + @common_animations[common] ||= [] + @common_animations[common].push(anim) + end + end + end + # Create move list from the filtered results + @move_list = [] + @move_animations.each_pair do |move_id, anims| + @move_list.push([move_id, anims[0][2]]) + end + @move_list.uniq! + @move_list.sort! + # Create common list from the filtered results + @common_list = [] + @common_animations.each_pair do |move_id, anims| + @common_list.push([move_id, move_id]) + end + @common_list.uniq! + @common_list.sort! + end + + def selected_move_animations + val = @components.get_control(:moves_list).value + return [] if !val + return @move_animations[val] if @animation_type == 0 + return @common_animations[val] if @animation_type == 1 + return [] + end + + def selected_animation_id + return @components.get_control(:animations_list).value + end + + #----------------------------------------------------------------------------- + + def refresh + # Put the correct list into the moves list + case @animation_type + when 0 + @components.get_control(:moves).set_highlighted + @components.get_control(:commons).set_not_highlighted + @components.get_control(:moves_list).values = @move_list + @components.get_control(:moves_label).text = _INTL("Moves") + when 1 + @components.get_control(:moves).set_not_highlighted + @components.get_control(:commons).set_highlighted + @components.get_control(:moves_list).values = @common_list + @components.get_control(:moves_label).text = _INTL("Common animations") + end + # Put the correct list into the animations list + @components.get_control(:animations_list).values = selected_move_animations + # Enable/disable buttons depending on what is selected + if @components.get_control(:animations_list).value + @components.get_control(:edit).enable + @components.get_control(:copy).enable + @components.get_control(:delete).enable + else + @components.get_control(:edit).disable + @components.get_control(:copy).disable + @components.get_control(:delete).disable + end + end + + #----------------------------------------------------------------------------- + + def apply_button_press(button) + case button + when :quit + @quit = true + return # Don't need to refresh the screen + when :new + new_anim = GameData::Animation.new_hash(@animation_type, @components.get_control(:moves_list).value) + new_id = GameData::Animation.keys.max + 1 + screen = AnimationEditor.new(new_id, new_anim) + screen.run + generate_full_lists + when :moves + @animation_type = 0 + @components.get_control(:moves_list).selected = -1 + @components.get_control(:animations_list).selected = -1 + when :commons + @animation_type = 1 + @components.get_control(:moves_list).selected = -1 + @components.get_control(:animations_list).selected = -1 + when :edit + anim_id = selected_animation_id + if anim_id + screen = AnimationEditor.new(anim_id, GameData::Animation.get(anim_id).clone_as_hash) + screen.run + load_settings + self.color_scheme = @settings[:color_scheme] + generate_full_lists + end + when :copy + anim_id = selected_animation_id + if anim_id + new_anim = GameData::Animation.get(anim_id).clone_as_hash + new_anim[:name] += " " + _INTL("(copy)") if !nil_or_empty?(new_anim[:name]) + new_id = GameData::Animation.keys.max + 1 + screen = AnimationEditor.new(new_id, new_anim) + screen.run + generate_full_lists + end + when :delete + anim_id = selected_animation_id + if anim_id && confirm_message(_INTL("Are you sure you want to delete this animation?")) + pbs_path = GameData::Animation.get(anim_id).pbs_path + GameData::Animation::DATA.delete(anim_id) + if GameData::Animation::DATA.any? { |_key, anim| anim.pbs_path == pbs_path } + Compiler.write_battle_animation_file(pbs_path) + elsif FileTest.exist?("PBS/Animations/" + pbs_path + ".txt") + File.delete("PBS/Animations/" + pbs_path + ".txt") + end + generate_full_lists + end + end + refresh + end + + def update + @components.update + if @components.changed? + @components.values.each_pair do |property, value| + apply_button_press(property) + end + @components.clear_changed + end + # Detect change to filter text + filter_ctrl = @components.get_control(:filter) + if filter_ctrl.value != @filter_text + @filter_text = filter_ctrl.value + apply_list_filter + refresh + end + end + + def run + Input.text_input = false + loop do + Graphics.update + Input.update + update + break if !@components.busy? && @quit + end + dispose + end +end + +#=============================================================================== +# Add to Debug menu. +#=============================================================================== +MenuHandlers.add(:debug_menu, :use_pc, { + "name" => _INTL("New Animation Editor"), + "parent" => :main, + "description" => _INTL("Open the new animation editor."), + "effect" => proc { + Graphics.resize_screen(AnimationEditor::WINDOW_WIDTH, AnimationEditor::WINDOW_HEIGHT) + pbSetResizeFactor(1) + screen = AnimationEditor::AnimationSelector.new + screen.run + Graphics.resize_screen(Settings::SCREEN_WIDTH, Settings::SCREEN_HEIGHT) + pbSetResizeFactor($PokemonSystem.screensize) + $game_map&.autoplay + } +}) diff --git a/Data/Scripts/904_Anim Editor/901_ParticleDataHelper.rb b/Data/Scripts/904_Anim Editor/901_ParticleDataHelper.rb new file mode 100644 index 000000000..2e67bbfff --- /dev/null +++ b/Data/Scripts/904_Anim Editor/901_ParticleDataHelper.rb @@ -0,0 +1,574 @@ +#=============================================================================== +# +#=============================================================================== +module AnimationEditor::ParticleDataHelper + module_function + + def get_keyframe_particle_value(particle, property, frame) + if !GameData::Animation::PARTICLE_KEYFRAME_DEFAULT_VALUES.include?(property) + raise _INTL("Couldn't get default value for property {1} for particle {2}.", + property, particle[:name]) + end + ret = [GameData::Animation::PARTICLE_KEYFRAME_DEFAULT_VALUES[property], false] + if particle[property] + # NOTE: The commands are already in keyframe order, so we can just run + # through them in order, applying their changes until we reach + # frame. + particle[property].each do |cmd| + break if cmd[0] > frame # Command is in the future; no more is needed + break if cmd[0] == frame && cmd[1] > 0 # Start of a "MoveXYZ" command; won't have changed yet + if cmd[0] + cmd[1] <= frame # Command has finished; use its end value + ret[0] = cmd[2] + next + end + # In a "MoveXYZ" command; need to interpolate + ret[0] = AnimationPlayer::Helper.interpolate( + (cmd[3] || :linear), ret[0], cmd[2], cmd[1], cmd[0], frame + ) + ret[1] = true # Interpolating + break + end + end + # 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" + # particles, which start the animation visible. + if property == :visible + first_cmd = (["User", "Target"].include?(particle[:name])) ? 0 : -1 + first_visible_cmd = -1 + particle.each_pair do |prop, value| + next if !value.is_a?(Array) || value.empty? + first_cmd = value[0][0] if first_cmd < 0 || first_cmd > value[0][0] + first_visible_cmd = value[0][0] if prop == :visible && (first_visible_cmd < 0 || first_visible_cmd > value[0][0]) + end + ret[0] = true if first_cmd >= 0 && first_cmd <= frame && + (first_visible_cmd < 0 || frame < first_visible_cmd) + end + return ret + end + + def get_all_keyframe_particle_values(particle, frame) + ret = {} + GameData::Animation::PARTICLE_KEYFRAME_DEFAULT_VALUES.each_pair do |prop, default| + ret[prop] = get_keyframe_particle_value(particle, prop, frame) + end + return ret + end + + def get_all_particle_values(particle) + ret = {} + GameData::Animation::PARTICLE_DEFAULT_VALUES.each_pair do |prop, default| + ret[prop] = particle[prop] || default + end + return ret + end + + # Used to determine which keyframes the particle is visible in, which is + # 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" + # particles, which start the animation visible. They do NOT become + # invisible automatically after their last command. + def get_timeline_particle_visibilities(particle, duration) + if !GameData::Animation::PARTICLE_KEYFRAME_DEFAULT_VALUES.include?(:visible) + 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] ? 1 : 0 + value = 1 if ["User", "Target", "SE"].include?(particle[:name]) + ret = [] + if !["User", "Target", "SE"].include?(particle[:name]) + earliest = duration + particle.each_pair do |prop, value| + next if !value.is_a?(Array) || value.empty? + earliest = value[0][0] if earliest > value[0][0] + end + ret[earliest] = 1 + end + if particle[:visible] + 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 + + #----------------------------------------------------------------------------- + + # Returns an array indicating where command diamonds and duration lines should + # be drawn in the AnimationEditor::ParticleList. + def get_particle_commands_timeline(particle) + ret = [] + durations = [] + particle.each_pair do |property, values| + next if !values.is_a?(Array) || values.empty? + values.each do |cmd| + ret[cmd[0]] = true + if cmd[1] > 0 + ret[cmd[0] + cmd[1]] = true + durations.push([cmd[0], cmd[1]]) + end + end + end + return ret, durations + end + + # Returns an array, whose indexes are keyframes, where the values in the array + # are commands. A keyframe's value can be one of these: + # 0 - SetXYZ + # [+/- duration, interpolation type] --- MoveXYZ (duration's sign is whether + # it makes the value higher or lower) + def get_particle_property_commands_timeline(particle, property, commands) + return nil if !commands || commands.empty? + if particle[:name] == "SE" + ret = [] + commands.each { |cmd| ret[cmd[0]] = 0 } + return ret + end + if !GameData::Animation::PARTICLE_KEYFRAME_DEFAULT_VALUES.include?(property) + raise _INTL("No default value for property {1} in PARTICLE_KEYFRAME_DEFAULT_VALUES.", property) + end + ret = [] + val = GameData::Animation::PARTICLE_KEYFRAME_DEFAULT_VALUES[property] + commands.each do |cmd| + if cmd[1] > 0 # MoveXYZ + dur = cmd[1] + dur *= -1 if cmd[2] < val + ret[cmd[0]] = [dur, cmd[3] || :linear] + ret[cmd[0] + cmd[1]] = 0 + else # SetXYZ + ret[cmd[0]] = 0 + end + val = cmd[2] # New actual value + end + return ret + end + + #----------------------------------------------------------------------------- + + def set_property(particle, property, value) + particle[property] = value + end + + def has_command_at?(particle, property, frame) + return particle[property]&.any? { |cmd| (cmd[0] == frame) || (cmd[0] + cmd[1] == frame) } + end + + def has_se_command_at?(particles, frame) + ret = false + se_particle = particles.select { |particle| particle[:name] == "SE" }[0] + if se_particle + se_particle.each_pair do |property, values| + next if !values.is_a?(Array) || values.empty? + ret = values.any? { |value| value[0] == frame } + break if ret + end + end + return ret + end + + def add_command(particle, property, frame, value) + # Return a new set of commands if there isn't one + if !particle[property] || particle[property].empty? + return [[frame, 0, value]] + end + # Find all relevant commands + set_now = nil + move_ending_now = nil + move_overlapping_now = nil + particle[property].each do |cmd| + if cmd[1] == 0 + set_now = cmd if cmd[0] == frame + else + move_ending_now = cmd if cmd[0] + cmd[1] == frame + move_overlapping_now = cmd if cmd[0] < frame && cmd[0] + cmd[1] > frame + end + end + new_command_needed = true + # Replace existing command at frame if it has a duration of 0 + if set_now + set_now[2] = value + new_command_needed = false + end + # If a command has a duration >0 and ends at frame, replace its value + if move_ending_now + move_ending_now[2] = value + new_command_needed = false + end + return particle[property] if !new_command_needed + # Add a new command + new_cmd = [frame, 0, value] + particle[property].push(new_cmd) + # If the new command interrupts an interpolation, split that interpolation + if move_overlapping_now + end_frame = move_overlapping_now[0] + move_overlapping_now[1] + new_cmd[1] = end_frame - frame # Duration + new_cmd[2] = move_overlapping_now[2] # Value + new_cmd[3] = move_overlapping_now[3] # Interpolation type + move_overlapping_now[1] = frame - move_overlapping_now[0] # Duration + move_overlapping_now[2] = value # Value + end + # Sort and return the commands + particle[property].sort! { |a, b| a[0] == b[0] ? a[1] == b[1] ? 0 : a[1] <=> b[1] : a[0] <=> b[0] } + return particle[property] + end + + # Cases: + # * SetXYZ - delete it + # * MoveXYZ start - turn into a SetXYZ at the end point + # * MoveXYZ end - delete it (this may happen to remove the start diamond too) + # * MoveXYZ end and start - merge both together (use first's type) + # * SetXYZ and MoveXYZ start - delete SetXYZ (leave MoveXYZ alone) + # * SetXYZ and MoveXYZ end - (unlikely) delete both + # * SetXYZ and MoveXYZ start and end - (unlikely) delete SetXYZ, merge Moves together + def delete_command(particle, property, frame, full_delete = false) + # Find all relevant commands + set_now = nil + move_ending_now = nil + move_starting_now = nil + set_at_end_of_move_starting_now = nil + particle[property].each do |cmd| + if cmd[1] == 0 + set_now = cmd if cmd[0] == frame + else + move_starting_now = cmd if cmd[0] == frame + move_ending_now = cmd if cmd[0] + cmd[1] == frame + end + end + if move_starting_now + particle[property].each do |cmd| + set_at_end_of_move_starting_now = cmd if cmd[1] == 0 && cmd[0] == move_starting_now[0] + move_starting_now[1] + end + end + # Delete SetXYZ if it is at frame + particle[property].delete(set_now) if set_now + # Edit/delete MoveXYZ commands starting/ending at frame + if move_ending_now && move_starting_now # Merge both MoveXYZ commands + move_ending_now[1] += move_starting_now[1] # Duration + move_ending_now[2] = move_starting_now[2] # Value + particle[property].delete(move_starting_now) + elsif move_ending_now # Delete MoveXYZ ending now + particle[property].delete(move_ending_now) + elsif move_starting_now && (full_delete || !set_now) # Turn into SetXYZ at its end point + if set_at_end_of_move_starting_now + particle[property].delete(move_starting_now) + else + move_starting_now[0] += move_starting_now[1] + move_starting_now[1] = 0 + move_starting_now[3] = nil + move_starting_now.compact! + end + end + return (particle[property].empty?) ? nil : particle[property] + end + + def optimize_all_particles(particles) + particles.each do |particle| + next if particle[:name] == "SE" + particle.each_pair do |key, cmds| + next if !cmds.is_a?(Array) || cmds.empty? + particle[key] = optimize_commands(particle, key) + end + end + end + + # Removes commands for the particle's given property if they don't make a + # difference. Returns the resulting set of commands. + def optimize_commands(particle, property) + # Split particle[property] into values and interpolation arrays + set_points = [] # All SetXYZ commands (the values thereof) + end_points = [] # End points of MoveXYZ commands (the values thereof) + interps = [] # Interpolation type from a keyframe to the next point + if particle && particle[property] + particle[property].each do |cmd| + if cmd[1] == 0 # SetXYZ + set_points[cmd[0]] = cmd[2] + else + interps[cmd[0]] = cmd[3] || :linear + end_points[cmd[0] + cmd[1]] = cmd[2] + end + end + end + # For visibility only, set the keyframe with the first command (of any kind) + # to be visible, unless the command being added overwrites it. Also figure + # out the first keyframe that has a command, and the first keyframe that has + # a non-visibility command (used below). + if property == :visible + first_cmd = (["User", "Target", "SE"].include?(particle[:name])) ? 0 : -1 + first_non_visible_cmd = -1 + particle.each_pair do |prop, value| + next if !value.is_a?(Array) || value.empty? + first_cmd = value[0][0] if first_cmd < 0 || first_cmd > value[0][0] + next if prop == :visible + first_non_visible_cmd = value[0][0] if first_non_visible_cmd < 0 || first_non_visible_cmd > value[0][0] + end + set_points[first_cmd] = true if first_cmd >= 0 && set_points[first_cmd].nil? + end + # Convert points and interps back into particle[property] + ret = [] + if !GameData::Animation::PARTICLE_KEYFRAME_DEFAULT_VALUES.include?(property) + raise _INTL("Couldn't get default value for property {1}.", property) + end + val = GameData::Animation::PARTICLE_KEYFRAME_DEFAULT_VALUES[property] + length = [set_points.length, end_points.length].max + length.times do |i| + if !set_points[i].nil? + if property == :visible && first_cmd >= 0 && i == first_cmd && + first_non_visible_cmd >= 0 && i == first_non_visible_cmd + ret.push([i, 0, set_points[i]]) if !set_points[i] + elsif set_points[i] != val + ret.push([i, 0, set_points[i]]) + end + val = set_points[i] + end + if interps[i] && interps[i] != :none + ((i + 1)..length).each do |j| + next if set_points[j].nil? && end_points[j].nil? + if set_points[j].nil? + break if end_points[j] == val + ret.push([i, j - i, end_points[j], interps[i]]) + val = end_points[j] + end_points[j] = nil + else + break if set_points[j] == val + ret.push([i, j - i, set_points[j], interps[i]]) + val = set_points[j] + set_points[j] = nil + end + break + end + end + end + return (ret.empty?) ? nil : ret + end + + # SetXYZ at frame + # - none: Do nothing. + # - interp: Add MoveXYZ (calc duration/value at end). + # MoveXYZ at frame + # - none: Turn into two SetXYZ (MoveXYZ's value for end point, calc value + # for start point). + # - interp: Change type. + # SetXYZ and MoveXYZ at frame + # - none: Turn MoveXYZ into SetXYZ at the end point. + # - interp: Change MoveXYZ's type. + # End of earlier MoveXYZ (or nothing) at frame + # - none: Do nothing. + # - interp: Add MoveXYZ (calc duration/value at end). + def set_interpolation(particle, property, frame, type) + # Find relevant command + set_now = nil + move_starting_now = nil + particle[property].each do |cmd| + next if cmd[0] != frame + set_now = cmd if cmd[1] == 0 + move_starting_now = cmd if cmd[1] != 0 + end + if move_starting_now + # If a MoveXYZ command exists at frame, amend it + if type == :none + old_end_point = move_starting_now[0] + move_starting_now[1] + old_value = move_starting_now[2] + # Turn the MoveXYZ command into a SetXYZ (or just delete it if a SetXYZ + # already exists at frame) + if set_now + particle[property].delete(move_starting_now) + else + move_starting_now[1] = 0 + move_starting_now[2] = get_keyframe_particle_value(particle, property, frame)[0] + move_starting_now[3] = nil + move_starting_now.compact! + end + # Add a new SetXYZ at the end of the (former) interpolation + add_command(particle, property, old_end_point, old_value) + else + # Simply change the type + move_starting_now[3] = type + end + elsif type != :none + # If no MoveXYZ command exists at frame, make one (if type isn't :none) + particle[property].each do |cmd| # Assumes commands are sorted by keyframe + next if cmd[0] <= frame + val_at_end = get_keyframe_particle_value(particle, property, cmd[0])[0] + particle[property].push([frame, cmd[0] - frame, val_at_end, type]) + particle[property].sort! { |a, b| a[0] == b[0] ? a[1] == b[1] ? 0 : a[1] <=> b[1] : a[0] <=> b[0] } + break + end + end + return particle[property] + end + + #----------------------------------------------------------------------------- + + def get_se_display_text(property, value) + ret = "" + case property + when :user_cry + ret += _INTL("[[User's cry]]") + when :target_cry + ret += _INTL("[[Target's cry]]") + when :se + ret += value[2] + else + raise _INTL("Unhandled property {1} for SE particle found.", property) + end + volume = (property == :se) ? value[3] : value[2] + ret += " " + _INTL("(volume: {1})", volume) if volume && volume != 100 + pitch = (property == :se) ? value[4] : value[3] + ret += " " + _INTL("(pitch: {1})", pitch) if pitch && pitch != 100 + return ret + end + + # Returns the volume and pitch of the SE to be played at the given frame + # of the given filename. + def get_se_values_from_filename_and_frame(particle, frame, filename) + return nil if !filename + case filename + when "USER", "TARGET" + property = (filename == "USER") ? :user_cry : :target_cry + slot = particle[property].select { |s| s[0] == frame }[0] + return nil if !slot + return slot[2] || 100, slot[3] || 100 + else + slot = particle[:se].select { |s| s[0] == frame && s[2] == filename }[0] + return nil if !slot + return slot[3] || 100, slot[4] || 100 + end + return nil + end + + # Deletes an existing command that plays the same filename at the same frame, + # and adds the new one. + def add_se_command(particle, frame, filename, volume, pitch) + delete_se_command(particle, frame, filename) + case filename + when "USER", "TARGET" + property = (filename == "USER") ? :user_cry : :target_cry + particle[property] ||= [] + particle[property].push([frame, 0, (volume == 100) ? nil : volume, (pitch == 100) ? nil : pitch]) + particle[property].sort! { |a, b| a[0] <=> b[0] } + else + particle[:se] ||= [] + particle[:se].push([frame, 0, filename, (volume == 100) ? nil : volume, (pitch == 100) ? nil : pitch]) + particle[:se].sort! { |a, b| a[0] <=> b[0] } + particle[:se].sort! { |a, b| (a[0] == b[0]) ? a[2].downcase <=> b[2].downcase : a[0] <=> b[0] } + end + end + + # Deletes an existing SE-playing command at the given frame of the given + # filename. + def delete_se_command(particle, frame, filename) + case filename + when "USER", "TARGET" + property = (filename == "USER") ? :user_cry : :target_cry + return if !particle[property] || particle[property].empty? + particle[property].delete_if { |s| s[0] == frame } + particle.delete(property) if particle[property].empty? + else + return if !particle[:se] || particle[:se].empty? + particle[:se].delete_if { |s| s[0] == frame && s[2] == filename } + particle.delete(:se) if particle[:se].empty? + end + end + + #----------------------------------------------------------------------------- + + # Inserts an empty frame at the given frame. Delays all commands at or after + # the given frame by 1, and increases the duration of all commands that + # overlap the given frame. + def insert_frame(particle, frame) + particle.each_pair do |property, values| + next if !values.is_a?(Array) || values.empty? + values.each do |cmd| + if cmd[0] >= frame + cmd[0] += 1 + elsif cmd[0] < frame && cmd[0] + cmd[1] > frame + cmd[1] += 1 + end + end + end + end + + # Removes a frame at the given frame. Deletes all commands in that frame, then + # brings all commands after the given frame earlier by 1, and reduces the + # duration of all commands that overlap the given frame. + def remove_frame(particle, frame) + particle.keys.each do |property| + next if !particle[property].is_a?(Array) || particle[property].empty? + delete_command(particle, property, frame, true) + end + particle.delete_if { |property, values| values.is_a?(Array) && values.empty? } + particle.each_pair do |key, values| + next if !values.is_a?(Array) || values.empty? + values.each do |cmd| + if cmd[0] > frame + cmd[0] -= 1 + elsif cmd[0] < frame && cmd[0] + cmd[1] > frame + cmd[1] -= 1 + end + end + end + end + + #----------------------------------------------------------------------------- + + # Creates a new particle and inserts it at index. If there is a particle above + # the new one, the new particle will inherit its focus; otherwise it gets a + # default focus of :foreground. + def add_particle(particles, index) + new_particle = GameData::Animation::PARTICLE_DEFAULT_VALUES.clone + new_particle[:name] = _INTL("New particle") + if index > 0 && index <= particles.length && particles[index - 1][:name] != "SE" + new_particle[:focus] = particles[index - 1][:focus] + end + index = particles.length if index < 0 + particles.insert(index, new_particle) + end + + # Copies the particle at index and inserts the copy immediately after that + # index. This assumes the original particle can be copied, i.e. isn't "SE". + def duplicate_particle(particles, index) + new_particle = {} + particles[index].each_pair do |key, value| + if value.is_a?(Array) + new_particle[key] = [] + value.each { |cmd| new_particle[key].push(cmd.clone) } + else + new_particle[key] = value.clone + end + end + new_particle[:name] += " (copy)" + particles.insert(index + 1, new_particle) + end + + def swap_particles(particles, index1, index2) + particles[index1], particles[index2] = particles[index2], particles[index1] + end + + # Deletes the particle at the given index. This assumes the particle can be + # deleted, i.e. isn't "User"/"Target"/"SE". + def delete_particle(particles, index) + particles[index] = nil + particles.compact! + end +end diff --git a/Data/Scripts/904_Anim Editor/Anim Editor elements/001_Canvas.rb b/Data/Scripts/904_Anim Editor/Anim Editor elements/001_Canvas.rb new file mode 100644 index 000000000..6079e506c --- /dev/null +++ b/Data/Scripts/904_Anim Editor/Anim Editor elements/001_Canvas.rb @@ -0,0 +1,779 @@ +#=============================================================================== +# NOTE: z values: +# -200 = backdrop. +# -199 = side bases +# -198 = battler shadows. +# 0 +/-50 = background focus, foe side background. +# 500, 400, 300... = foe trainers. +# 900, 800, 700... +/-50 = foe battlers. +# 1000 +/-50 = foe side foreground, player side background. +# 1100, 1200, 1300... +/-50 = player battlers. +# 1500, 1600, 1700... = player trainers. +# 2000 +/-50 = player side foreground, foreground focus. +# 9999+ = UI +#=============================================================================== +class AnimationEditor::Canvas < Sprite + attr_reader :sprites # Only used while playing the animation + attr_reader :values + + FRAME_SIZE = 48 + PARTICLE_FRAME_COLOR = Color.new(0, 0, 0, 64) + + include UIControls::StyleMixin + + def initialize(viewport, anim, settings) + super(viewport) + @anim = anim + @settings = settings + @keyframe = 0 + @display_keyframe = 0 + @selected_particle = -2 + @captured = nil + @user_coords = [] + @target_coords = [] + initialize_background + initialize_battlers + initialize_particle_sprites + initialize_particle_frames + refresh + end + + def initialize_background + self.z = -200 + # NOTE: The background graphic is self.bitmap. + player_base_pos = Battle::Scene.pbBattlerPosition(0) + @player_base = IconSprite.new(*player_base_pos, viewport) + @player_base.z = -199 + foe_base_pos = Battle::Scene.pbBattlerPosition(1) + @foe_base = IconSprite.new(*foe_base_pos, viewport) + @foe_base.z = -199 + @message_bar_sprite = Sprite.new(viewport) + @message_bar_sprite.z = 9999 + end + + def initialize_battlers + @battler_sprites = [] + end + + def initialize_particle_sprites + @particle_sprites = [] + end + + def initialize_particle_frames + # Frame for selected particle + @sel_frame_bitmap = Bitmap.new(FRAME_SIZE, FRAME_SIZE) + @sel_frame_bitmap.outline_rect(0, 0, @sel_frame_bitmap.width, @sel_frame_bitmap.height, PARTICLE_FRAME_COLOR) + @sel_frame_bitmap.outline_rect(2, 2, @sel_frame_bitmap.width - 4, @sel_frame_bitmap.height - 4, PARTICLE_FRAME_COLOR) + @sel_frame_sprite = Sprite.new(viewport) + @sel_frame_sprite.bitmap = @sel_frame_bitmap + @sel_frame_sprite.z = 99999 + @sel_frame_sprite.ox = @sel_frame_bitmap.width / 2 + @sel_frame_sprite.oy = @sel_frame_bitmap.height / 2 + # Frame for other particles + @frame_bitmap = Bitmap.new(FRAME_SIZE, FRAME_SIZE) + @frame_bitmap.outline_rect(1, 1, @frame_bitmap.width - 2, @frame_bitmap.height - 2, PARTICLE_FRAME_COLOR) + @battler_frame_sprites = [] + @frame_sprites = [] + end + + def dispose + @user_bitmap_front&.dispose + @user_bitmap_back&.dispose + @target_bitmap_front&.dispose + @target_bitmap_back&.dispose + @sel_frame_bitmap&.dispose + @frame_bitmap&.dispose + @player_base.dispose + @foe_base.dispose + @message_bar_sprite.dispose + @battler_sprites.each { |s| s.dispose if s && !s.disposed? } + @battler_sprites.clear + @particle_sprites.each do |s| + if s.is_a?(Array) + s.each { |s2| s2.dispose if s2 && !s2.disposed? } + else + s.dispose if s && !s.disposed? + end + end + @particle_sprites.clear + @battler_frame_sprites.each { |s| s.dispose if s && !s.disposed? } + @battler_frame_sprites.clear + @frame_sprites.each do |s| + if s.is_a?(Array) + s.each { |s2| s2.dispose if s2 && !s2.disposed? } + else + s.dispose if s && !s.disposed? + end + end + @frame_sprites.clear + @sel_frame_sprite&.dispose + super + end + + #----------------------------------------------------------------------------- + + # Returns whether the user is on the foe's (non-player's) side. + def sides_swapped? + return @settings[:user_opposes] || [:opp_move, :opp_common].include?(@anim[:type]) + end + + # index is a battler index (even for player's side, odd for foe's side) + def side_size(index) + side = index % 2 + side = (side + 1) % 2 if sides_swapped? + return @settings[:side_sizes][side] + end + + def user_index + ret = @settings[:user_index] + ret += 1 if sides_swapped? + return ret + end + + def target_indices + ret = @settings[:target_indices].clone + if sides_swapped? + ret.length.times do |i| + ret[i] += (ret[i].even?) ? 1 : -1 + end + end + return ret + end + + def first_target_index + return target_indices.compact[0] + end + + def position_empty?(index) + return false if !@anim[:no_user] && user_index == index + return false if !@anim[:no_target] && target_indices.include?(index) + return true + end + + def show_particle_sprite?(index) + return false if index < 0 || index >= @anim[:particles].length + particle = @anim[:particles][index] + return false if !particle || particle[:name] == "SE" + return false if particle[:spawner] && particle[:spawner] != :none + return true + end + + def color_scheme=(value) + return if @color_scheme == value + @color_scheme = value + self.bitmap.font.color = text_color + self.bitmap.font.size = text_size + refresh + end + + def selected_particle=(val) + return if @selected_particle == val + @selected_particle = val + refresh_particle_frame + end + + def keyframe=(val) + return if @keyframe == val + @keyframe = val + return if val < 0 + @display_keyframe = val + refresh + end + + def mouse_pos + mouse_coords = Mouse.getMousePos + return nil, nil if !mouse_coords + ret_x = mouse_coords[0] - self.viewport.rect.x - self.x + ret_y = mouse_coords[1] - self.viewport.rect.y - self.y + return nil, nil if ret_x < 0 || ret_x >= self.viewport.rect.width || + ret_y < 0 || ret_y >= self.viewport.rect.height + return ret_x, ret_y + end + + def mouse_in_sprite?(sprite, mouse_x, mouse_y) + return false if mouse_x < sprite.x - sprite.ox + return false if mouse_x >= sprite.x - sprite.ox + sprite.width + return false if mouse_y < sprite.y - sprite.oy + return false if mouse_y >= sprite.y - sprite.oy + sprite.height + return true + end + + #----------------------------------------------------------------------------- + + def busy? + return !@captured.nil? + end + + def changed? + return !@values.nil? + end + + def clear_changed + @values = nil + end + + #----------------------------------------------------------------------------- + + def prepare_to_play_animation + @sprites = {} + # Populate @sprites with sprites that are present during battle, and reset + # their x/y/z values so the animation player knows where they start + idx = user_index + particle_idx = @anim[:particles].index { |particle| particle[:name] == "User" } + if particle_idx + @sprites["pokemon_#{idx}"] = @battler_sprites[idx] + @battler_sprites[idx].x = @user_coords[0] + @battler_sprites[idx].y = @user_coords[1] + offset_xy = AnimationPlayer::Helper.get_xy_offset(@anim[:particles][particle_idx], @battler_sprites[idx]) + focus_z = AnimationPlayer::Helper.get_z_focus(@anim[:particles][particle_idx], idx, idx) + @battler_sprites[idx].x += offset_xy[0] + @battler_sprites[idx].y += offset_xy[1] + AnimationPlayer::Helper.apply_z_focus_to_sprite(@battler_sprites[idx], 0, focus_z) + end + particle_idx = @anim[:particles].index { |particle| particle[:name] == "Target" } + if particle_idx + target_indices.each do |idx| + @sprites["pokemon_#{idx}"] = @battler_sprites[idx] + @battler_sprites[idx].x = @target_coords[idx][0] + @battler_sprites[idx].y = @target_coords[idx][1] + if particle_idx + offset_xy = AnimationPlayer::Helper.get_xy_offset(@anim[:particles][particle_idx], @battler_sprites[idx]) + focus_z = AnimationPlayer::Helper.get_z_focus(@anim[:particles][particle_idx], idx, idx) + else + offset_xy = [0, @battler_sprites[idx].bitmap.height / 2] + focus_z = 1000 + ((100 * ((idx / 2) + 1)) * (idx.even? ? 1 : -1)) + end + @battler_sprites[idx].x += offset_xy[0] + @battler_sprites[idx].y += offset_xy[1] + AnimationPlayer::Helper.apply_z_focus_to_sprite(@battler_sprites[idx], 0, focus_z) + end + end + hide_all_sprites + @sel_frame_sprite.visible = false + @playing = true + end + + def end_playing_animation + @sprites.clear + @sprites = nil + @playing = false + refresh + end + + #----------------------------------------------------------------------------- + + def refresh_bg_graphics + return if @bg_name && @bg_name == @settings[:canvas_bg] + @bg_name = @settings[:canvas_bg] + core_name = @bg_name.sub(/_eve$/, "").sub(/_night$/, "") + if pbResolveBitmap("Graphics/Battlebacks/" + @bg_name + "_bg") + self.bitmap = RPG::Cache.load_bitmap("Graphics/Battlebacks/", @bg_name + "_bg") + else + self.bitmap = RPG::Cache.load_bitmap("Graphics/Battlebacks/", core_name + "_bg") + end + if pbResolveBitmap("Graphics/Battlebacks/" + @bg_name + "_base0") + @player_base.setBitmap("Graphics/Battlebacks/" + @bg_name + "_base0") + else + @player_base.setBitmap("Graphics/Battlebacks/" + core_name + "_base0") + end + @player_base.ox = @player_base.bitmap.width / 2 + @player_base.oy = @player_base.bitmap.height + if pbResolveBitmap("Graphics/Battlebacks/" + @bg_name + "_base1") + @foe_base.setBitmap("Graphics/Battlebacks/" + @bg_name + "_base1") + else + @foe_base.setBitmap("Graphics/Battlebacks/" + core_name + "_base1") + end + @foe_base.ox = @foe_base.bitmap.width / 2 + @foe_base.oy = @foe_base.bitmap.height / 2 + if pbResolveBitmap("Graphics/Battlebacks/" + @bg_name + "_message") + @message_bar_sprite.bitmap = RPG::Cache.load_bitmap("Graphics/Battlebacks/", @bg_name + "_message") + else + @message_bar_sprite.bitmap = RPG::Cache.load_bitmap("Graphics/Battlebacks/", core_name + "_message") + end + @message_bar_sprite.y = Settings::SCREEN_HEIGHT - @message_bar_sprite.height + end + + def create_frame_sprite(index, sub_index = -1) + if sub_index >= 0 + if @frame_sprites[index].is_a?(Array) + return if @frame_sprites[index][sub_index] && !@frame_sprites[index][sub_index].disposed? + else + @frame_sprites[index].dispose if @frame_sprites[index] && !@frame_sprites[index].disposed? + @frame_sprites[index] = [] + end + else + if @frame_sprites[index].is_a?(Array) + @frame_sprites[index].each { |s| s.dispose if s && !s.disposed? } + @frame_sprites[index] = nil + else + return if @frame_sprites[index] && !@frame_sprites[index].disposed? + end + end + sprite = Sprite.new(viewport) + sprite.bitmap = @frame_bitmap + sprite.z = 99998 + sprite.ox = @frame_bitmap.width / 2 + sprite.oy = @frame_bitmap.height / 2 + if sub_index >= 0 + @frame_sprites[index] ||= [] + @frame_sprites[index][sub_index] = sprite + else + @frame_sprites[index] = sprite + end + end + + def ensure_battler_sprites + should_ensure = @sides_swapped.nil? || @sides_swapped != sides_swapped? || + @settings_user_index.nil? || @settings_user_index != @settings[:user_index] || + @settings_target_indices.nil? || @settings_target_indices != @settings[:target_indices] + if should_ensure || !@side_size0 || @side_size0 != side_size(0) + @battler_sprites.each_with_index { |s, i| s.dispose if i.even? && s && !s.disposed? } + @battler_frame_sprites.each_with_index { |s, i| s.dispose if i.even? && s && !s.disposed? } + @side_size0 = side_size(0) + @side_size0.times do |i| + next if user_index != i * 2 && !target_indices.include?(i * 2) + @battler_sprites[i * 2] = Sprite.new(self.viewport) + frame_sprite = Sprite.new(viewport) + frame_sprite.bitmap = @frame_bitmap + frame_sprite.z = 99998 + frame_sprite.ox = @frame_bitmap.width / 2 + frame_sprite.oy = @frame_bitmap.height / 2 + @battler_frame_sprites[i * 2] = frame_sprite + end + end + if should_ensure || !@side_size1 || @side_size1 != side_size(1) + @battler_sprites.each_with_index { |s, i| s.dispose if i.odd? && s && !s.disposed? } + @battler_frame_sprites.each_with_index { |s, i| s.dispose if i.odd? && s && !s.disposed? } + @side_size1 = side_size(1) + @side_size1.times do |i| + next if user_index != (i * 2) + 1 && !target_indices.include?((i * 2) + 1) + @battler_sprites[(i * 2) + 1] = Sprite.new(self.viewport) + frame_sprite = Sprite.new(viewport) + frame_sprite.bitmap = @frame_bitmap + frame_sprite.z = 99998 + frame_sprite.ox = @frame_bitmap.width / 2 + frame_sprite.oy = @frame_bitmap.height / 2 + @battler_frame_sprites[(i * 2) + 1] = frame_sprite + end + end + if should_ensure + @sides_swapped = sides_swapped? + @settings_user_index = @settings[:user_index] + @settings_target_indices = @settings[:target_indices].clone + end + end + + def refresh_battler_graphics + if !@user_sprite_name || !@user_sprite_name || @user_sprite_name != @settings[:user_sprite_name] + @user_sprite_name = @settings[:user_sprite_name] + @user_bitmap_front_name = GameData::Species.front_sprite_filename(@user_sprite_name) + @user_bitmap_back_name = GameData::Species.back_sprite_filename(@user_sprite_name) + @user_bitmap_front&.dispose + @user_bitmap_back&.dispose + @user_bitmap_front = RPG::Cache.load_bitmap("", @user_bitmap_front_name) + @user_bitmap_back = RPG::Cache.load_bitmap("", @user_bitmap_back_name) + end + if !@target_bitmap_front || !@target_sprite_name || @target_sprite_name != @settings[:target_sprite_name] + @target_sprite_name = @settings[:target_sprite_name] + @target_bitmap_front_name = GameData::Species.front_sprite_filename(@target_sprite_name) + @target_bitmap_back_name = GameData::Species.back_sprite_filename(@target_sprite_name) + @target_bitmap_front&.dispose + @target_bitmap_back&.dispose + @target_bitmap_front = RPG::Cache.load_bitmap("", @target_bitmap_front_name) + @target_bitmap_back = RPG::Cache.load_bitmap("", @target_bitmap_back_name) + end + end + + def refresh_battler_positions + user_idx = user_index + @user_coords = recalculate_battler_position( + user_idx, side_size(user_idx), @user_sprite_name, + (user_idx.even?) ? @user_bitmap_back : @user_bitmap_front + ) + target_indices.each do |target_idx| + @target_coords[target_idx] = recalculate_battler_position( + target_idx, side_size(target_idx), @target_sprite_name, + (target_idx.even?) ? @target_bitmap_back : @target_bitmap_front + ) + end + end + + def recalculate_battler_position(index, size, sprite_name, btmp) + spr = Sprite.new(self.viewport) + spr.x, spr.y = Battle::Scene.pbBattlerPosition(index, size) + data = GameData::Species.get_species_form(sprite_name, 0) # Form 0 + data.apply_metrics_to_sprite(spr, index) if data + return [spr.x, spr.y - (btmp.height / 2)] + end + + def create_particle_sprite(index, target_idx = -1) + if target_idx >= 0 + if @particle_sprites[index].is_a?(Array) + return if @particle_sprites[index][target_idx] && !@particle_sprites[index][target_idx].disposed? + else + @particle_sprites[index].dispose if @particle_sprites[index] && !@particle_sprites[index].disposed? + @particle_sprites[index] = [] + end + @particle_sprites[index][target_idx] = Sprite.new(self.viewport) + create_frame_sprite(index, target_idx) + else + if @particle_sprites[index].is_a?(Array) + @particle_sprites[index].each { |s| s.dispose if s && !s.disposed? } + @particle_sprites[index] = nil + else + return if @particle_sprites[index] && !@particle_sprites[index].disposed? + end + @particle_sprites[index] = Sprite.new(self.viewport) + create_frame_sprite(index) + end + end + + def get_sprite_and_frame(index, target_idx = -1) + return if !show_particle_sprite?(index) + spr = nil + frame = nil + particle = @anim[:particles][index] + case particle[:name] + when "User" + spr = @battler_sprites[user_index] + raise _INTL("Sprite for particle {1} not found somehow (battler index {2}).", + particle[:name], user_index) if !spr + frame = @battler_frame_sprites[user_index] + when "Target" + spr = @battler_sprites[target_idx] + raise _INTL("Sprite for particle {1} not found somehow (battler index {2}).", + particle[:name], target_idx) if !spr + frame = @battler_frame_sprites[target_idx] + else + create_particle_sprite(index, target_idx) + if target_idx >= 0 + spr = @particle_sprites[index][target_idx] + frame = @frame_sprites[index][target_idx] + else + spr = @particle_sprites[index] + frame = @frame_sprites[index] + end + end + return spr, frame + end + + def refresh_sprite(index, target_idx = -1) + particle = @anim[:particles][index] + return if !show_particle_sprite?(index) + relative_to_index = -1 + if particle[:focus] != :user_and_target + if GameData::Animation::FOCUS_TYPES_WITH_USER.include?(particle[:focus]) + relative_to_index = user_index + elsif GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(particle[:focus]) + relative_to_index = target_idx + end + end + # Get sprite + spr, frame = get_sprite_and_frame(index, target_idx) + # Calculate all values of particle at the current keyframe + values = AnimationEditor::ParticleDataHelper.get_all_keyframe_particle_values(particle, @display_keyframe) + values.each_pair do |property, val| + values[property] = val[0] + end + # Set visibility + spr.visible = values[:visible] + frame.visible = spr.visible + return if !spr.visible + # Set opacity + spr.opacity = values[:opacity] + # Set coordinates + base_x = values[:x] + base_y = values[:y] + if relative_to_index >= 0 && relative_to_index.odd? + base_x *= -1 if particle[:foe_invert_x] + base_y *= -1 if particle[:foe_invert_y] + end + focus_xy = AnimationPlayer::Helper.get_xy_focus(particle, user_index, target_idx, + @user_coords, @target_coords[target_idx]) + AnimationPlayer::Helper.apply_xy_focus_to_sprite(spr, :x, base_x, focus_xy) + AnimationPlayer::Helper.apply_xy_focus_to_sprite(spr, :y, base_y, focus_xy) + # Set graphic and ox/oy (may also alter y coordinate) + AnimationPlayer::Helper.set_bitmap_and_origin(particle, spr, user_index, target_idx, + [@user_bitmap_front_name, @user_bitmap_back_name], + [@target_bitmap_front_name, @target_bitmap_back_name]) + offset_xy = AnimationPlayer::Helper.get_xy_offset(particle, spr) + spr.x += offset_xy[0] + spr.y += offset_xy[1] + # Set frame + spr.src_rect.x = values[:frame].floor * spr.src_rect.width + # Set z (priority) + focus_z = AnimationPlayer::Helper.get_z_focus(particle, user_index, target_idx) + AnimationPlayer::Helper.apply_z_focus_to_sprite(spr, values[:z], focus_z) + # Set various other properties + spr.zoom_x = values[:zoom_x] / 100.0 + spr.zoom_y = values[:zoom_y] / 100.0 + case particle[:angle_override] + when :initial_angle_to_focus + target_x = (focus_xy.length == 2) ? focus_xy[1][0] : focus_xy[0][0] + target_x += offset_xy[0] + target_y = (focus_xy.length == 2) ? focus_xy[1][1] : focus_xy[0][1] + target_y += offset_xy[1] + spr.angle = AnimationPlayer::Helper.initial_angle_between(particle, focus_xy, offset_xy) + when :always_point_at_focus + target_x = (focus_xy.length == 2) ? focus_xy[1][0] : focus_xy[0][0] + target_x += offset_xy[0] + target_y = (focus_xy.length == 2) ? focus_xy[1][1] : focus_xy[0][1] + target_y += offset_xy[1] + spr.angle = AnimationPlayer::Helper.angle_between(spr.x, spr.y, target_x, target_y) + else + spr.angle = 0 + end + spr.angle += values[:angle] + spr.mirror = values[:flip] + spr.mirror = !spr.mirror if relative_to_index >= 0 && relative_to_index.odd? && particle[:foe_flip] + spr.blend_type = values[:blending] + # Set color and tone + spr.color.set(values[:color_red], values[:color_green], values[:color_blue], values[:color_alpha]) + spr.tone.set(values[:tone_red], values[:tone_green], values[:tone_blue], values[:tone_gray]) + # Position frame over spr + frame.x = spr.x + frame.y = spr.y + case particle[:graphic] + when "USER", "USER_OPP", "USER_FRONT", "USER_BACK", + "TARGET", "TARGET_OPP", "TARGET_FRONT", "TARGET_BACK" + # Offset battler frames because they aren't around the battler's position + frame.y -= spr.bitmap.height / 2 + end + end + + def refresh_particle(index) + one_per_side = [:target_side_foreground, :target_side_background].include?(@anim[:particles][index][:focus]) + sides_covered = [] + target_indices.each do |target_idx| + next if one_per_side && sides_covered.include?(target_idx % 2) + refresh_sprite(index, target_idx) + sides_covered.push(target_idx % 2) + end + end + + def refresh_particle_frame + return if !show_particle_sprite?(@selected_particle) + frame_color = focus_color(@anim[:particles][@selected_particle][:focus]) + @sel_frame_bitmap.outline_rect(1, 1, @sel_frame_bitmap.width - 2, @sel_frame_bitmap.height - 2, frame_color) + update_selected_particle_frame + end + + def hide_all_sprites + [@battler_sprites, @battler_frame_sprites].each do |sprites| + sprites.each { |s| s.visible = false if s && !s.disposed? } + end + [@particle_sprites, @frame_sprites].each do |sprites| + sprites.each do |s| + if s.is_a?(Array) + s.each { |s2| s2.visible = false if s2 && !s2.disposed? } + else + s.visible = false if s && !s.disposed? + end + end + end + end + + def refresh + refresh_bg_graphics + ensure_battler_sprites + refresh_battler_graphics + refresh_battler_positions + hide_all_sprites + @anim[:particles].each_with_index do |particle, i| + if GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(particle[:focus]) + refresh_particle(i) # Because there can be multiple targets + else + refresh_sprite(i) if show_particle_sprite?(i) + end + end + refresh_particle_frame # Intentionally after refreshing particles + end + + #----------------------------------------------------------------------------- + + def on_mouse_press + mouse_x, mouse_y = mouse_pos + return if !mouse_x || !mouse_y + # Check if mouse is over particle frame + if @sel_frame_sprite.visible && + mouse_x >= @sel_frame_sprite.x - @sel_frame_sprite.ox && + mouse_x < @sel_frame_sprite.x - @sel_frame_sprite.ox + @sel_frame_sprite.width && + mouse_y >= @sel_frame_sprite.y - @sel_frame_sprite.oy && + mouse_y < @sel_frame_sprite.y - @sel_frame_sprite.oy + @sel_frame_sprite.height + if @keyframe >= 0 + @captured = [@sel_frame_sprite.x, @sel_frame_sprite.y, + @sel_frame_sprite.x - mouse_x, @sel_frame_sprite.y - mouse_y] + end + return + end + # Find closest particle to mouse + nearest_index = -1 + nearest_distance = -1 + @battler_frame_sprites.each_with_index do |sprite, index| + next if !sprite || !sprite.visible + next if !mouse_in_sprite?(sprite, mouse_x, mouse_y) + dist = (sprite.x - mouse_x) ** 2 + (sprite.y - mouse_y) ** 2 + next if nearest_distance >= 0 && nearest_distance < dist + if index == user_index + nearest_index = @anim[:particles].index { |particle| particle[:name] == "User" } + else + nearest_index = @anim[:particles].index { |particle| particle[:name] == "Target" } + end + nearest_distance = dist + end + @frame_sprites.each_with_index do |sprite, index| + sprites = (sprite.is_a?(Array)) ? sprite : [sprite] + sprites.each do |spr| + next if !spr || !spr.visible + next if !mouse_in_sprite?(spr, mouse_x, mouse_y) + dist = (spr.x - mouse_x) ** 2 + (spr.y - mouse_y) ** 2 + next if nearest_distance >= 0 && nearest_distance < dist + nearest_index = index + nearest_distance = dist + end + end + return if nearest_index < 0 + @values = { :particle_index => nearest_index } + end + + def on_mouse_release + @captured = nil + end + + def update_input + if Input.trigger?(Input::MOUSELEFT) + on_mouse_press + elsif busy? && Input.release?(Input::MOUSELEFT) + on_mouse_release + end + end + + def update_particle_moved + return if !busy? + mouse_x, mouse_y = mouse_pos + return if !mouse_x || !mouse_y + new_canvas_x = mouse_x + @captured[2] + new_canvas_y = mouse_y + @captured[3] + return if @captured[0] == new_canvas_x && @captured[1] == new_canvas_y + particle = @anim[:particles][@selected_particle] + if GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(particle[:focus]) + sprite, frame = get_sprite_and_frame(@selected_particle, first_target_index) + else + sprite, frame = get_sprite_and_frame(@selected_particle) + end + # Check if moved horizontally + if @captured[0] != new_canvas_x + new_canvas_pos = mouse_x + @captured[2] + new_pos = new_canvas_x + case particle[:focus] + when :foreground, :midground, :background + when :user + new_pos -= @user_coords[0] + when :target + new_pos -= @target_coords[first_target_index][0] + when :user_and_target + user_pos = @user_coords + target_pos = @target_coords[first_target_index] + distance = GameData::Animation::USER_AND_TARGET_SEPARATION + new_pos -= user_pos[0] + new_pos *= distance[0] + new_pos /= target_pos[0] - user_pos[0] + when :user_side_foreground, :user_side_background + base_coords = Battle::Scene.pbBattlerPosition(user_index) + new_pos -= base_coords[0] + when :target_side_foreground, :target_side_background + base_coords = Battle::Scene.pbBattlerPosition(first_target_index) + new_pos -= base_coords[0] + end + relative_to_index = -1 + if particle[:focus] != :user_and_target + if GameData::Animation::FOCUS_TYPES_WITH_USER.include?(particle[:focus]) + relative_to_index = user_index + elsif GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(particle[:focus]) + relative_to_index = first_target_index + end + end + new_pos *= -1 if relative_to_index >= 0 && relative_to_index.odd? && particle[:foe_invert_x] + @values ||= {} + @values[:x] = new_pos + @captured[0] = new_canvas_x + sprite.x = new_canvas_x + end + # Check if moved vertically + if @captured[1] != new_canvas_y + new_pos = new_canvas_y + case particle[:focus] + when :foreground, :midground, :background + when :user + new_pos -= @user_coords[1] + when :target + new_pos -= @target_coords[first_target_index][1] + when :user_and_target + user_pos = @user_coords + target_pos = @target_coords[first_target_index] + distance = GameData::Animation::USER_AND_TARGET_SEPARATION + new_pos -= user_pos[1] + new_pos *= distance[1] + new_pos /= target_pos[1] - user_pos[1] + when :user_side_foreground, :user_side_background + base_coords = Battle::Scene.pbBattlerPosition(user_index) + new_pos -= base_coords[1] + when :target_side_foreground, :target_side_background + base_coords = Battle::Scene.pbBattlerPosition(first_target_index) + new_pos -= base_coords[1] + end + relative_to_index = -1 + if particle[:focus] != :user_and_target + if GameData::Animation::FOCUS_TYPES_WITH_USER.include?(particle[:focus]) + relative_to_index = user_index + elsif GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(particle[:focus]) + relative_to_index = first_target_index + end + end + new_pos *= -1 if relative_to_index >= 0 && relative_to_index.odd? && particle[:foe_invert_y] + @values ||= {} + @values[:y] = new_pos + @captured[1] = new_canvas_y + sprite.y = new_canvas_y + end + end + + def update_selected_particle_frame + if !show_particle_sprite?(@selected_particle) + @sel_frame_sprite.visible = false + return + end + case @anim[:particles][@selected_particle][:name] + when "User" + target = @battler_sprites[user_index] + raise _INTL("Sprite for particle \"{1}\" not found somehow.", + @anim[:particles][@selected_particle][:name]) if !target + when "Target" + target = @battler_sprites[target_indices[0]] + raise _INTL("Sprite for particle \"{1}\" not found somehow.", + @anim[:particles][@selected_particle][:name]) if !target + else + target = @particle_sprites[@selected_particle] + target = target[first_target_index] if target&.is_a?(Array) + end + if !target || !target.visible + @sel_frame_sprite.visible = false + return + end + @sel_frame_sprite.visible = true + @sel_frame_sprite.x = target.x + @sel_frame_sprite.y = target.y + case @anim[:particles][@selected_particle][:graphic] + when "USER", "USER_OPP", "USER_FRONT", "USER_BACK", + "TARGET", "TARGET_OPP", "TARGET_FRONT", "TARGET_BACK" + # Offset battler frames because they aren't around the battler's position + @sel_frame_sprite.y -= target.bitmap.height / 2 + end + end + + def update + update_input + update_particle_moved + update_selected_particle_frame + end +end diff --git a/Data/Scripts/904_Anim Editor/Anim Editor elements/002_PlayControls.rb b/Data/Scripts/904_Anim Editor/Anim Editor elements/002_PlayControls.rb new file mode 100644 index 000000000..f3bacac5d --- /dev/null +++ b/Data/Scripts/904_Anim Editor/Anim Editor elements/002_PlayControls.rb @@ -0,0 +1,206 @@ +#=============================================================================== +# +#=============================================================================== +class AnimationEditor::PlayControls < UIControls::ControlsContainer + attr_reader :slowdown, :looping + + ROW_HEIGHT = 28 + PLAY_BUTTON_X = 231 + PLAY_BUTTON_Y = 3 + PLAY_BUTTON_SIZE = 42 + LOOP_BUTTON_X = PLAY_BUTTON_X + PLAY_BUTTON_SIZE + 12 + LOOP_BUTTON_Y = 16 + LOOP_BUTTON_SIZE = 16 + # NOTE: Slowdown label is centered horizontally over the buttons. + SLOWDOWN_LABEL_Y = 0 + SLOWDOWN_BUTTON_X = 1 + SLOWDOWN_BUTTON_Y = ROW_HEIGHT - 1 + SLOWDOWN_BUTTON_WIDTH = 32 + SLOWDOWN_BUTTON_SPACING = -3 + # NOTE: Duration label and value are centered horizontally on DURATION_TEXT_X. + DURATION_TEXT_X = 464 + DURATION_LABEL_Y = SLOWDOWN_LABEL_Y + DURATION_VALUE_Y = ROW_HEIGHT + SLOWDOWN_FACTORS = [1, 2, 4, 6, 8] + + def initialize(x, y, width, height, viewport) + super(x, y, width, height) + @viewport.z = viewport.z + 10 + generate_button_bitmaps + @duration = 0 + @slowdown = SLOWDOWN_FACTORS[0] + @looping = false + end + + def dispose + @bitmaps.each_value { |b| b&.dispose } + @bitmaps.clear + super + end + + #----------------------------------------------------------------------------- + + def generate_button_bitmaps + @bitmaps = {} if !@bitmaps + icon_color = text_color + @bitmaps[:play_button] = Bitmap.new(PLAY_BUTTON_SIZE, PLAY_BUTTON_SIZE) if !@bitmaps[:play_button] + @bitmaps[:play_button].clear + (PLAY_BUTTON_SIZE - 10).times do |j| + @bitmaps[:play_button].fill_rect(11, j + 5, (j >= (PLAY_BUTTON_SIZE - 10) / 2) ? PLAY_BUTTON_SIZE - j - 4 : j + 7, 1, icon_color) + end + @bitmaps[:stop_button] = Bitmap.new(PLAY_BUTTON_SIZE, PLAY_BUTTON_SIZE) if !@bitmaps[:stop_button] + @bitmaps[:stop_button].clear + @bitmaps[:stop_button].fill_rect(8, 8, PLAY_BUTTON_SIZE - 16, PLAY_BUTTON_SIZE - 16, icon_color) + # Loop button + @bitmaps[:play_once_button] = Bitmap.new(LOOP_BUTTON_SIZE, LOOP_BUTTON_SIZE) if !@bitmaps[:play_once_button] + @bitmaps[:play_once_button].clear + @bitmaps[:play_once_button].fill_rect(1, 7, 11, 2, icon_color) + @bitmaps[:play_once_button].fill_rect(8, 5, 2, 6, icon_color) + @bitmaps[:play_once_button].fill_rect(10, 6, 1, 4, icon_color) + @bitmaps[:play_once_button].fill_rect(13, 1, 2, 14, icon_color) + @bitmaps[:looping_button] = Bitmap.new(LOOP_BUTTON_SIZE, LOOP_BUTTON_SIZE) if !@bitmaps[:looping_button] + @bitmaps[:looping_button].clear + [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, + 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0].each_with_index do |val, i| + next if val == 0 + @bitmaps[:looping_button].fill_rect(1 + (i % 14), 1 + (i / 14), 1, 1, icon_color) + end + end + + def add_play_controls + # Slowdown label + duration_label = UIControls::Label.new(200, ROW_HEIGHT, self.viewport, _INTL("Slowdown factor")) + duration_label.x = SLOWDOWN_BUTTON_X + (SLOWDOWN_FACTORS.length * (SLOWDOWN_BUTTON_WIDTH + SLOWDOWN_BUTTON_SPACING) / 2) + duration_label.x -= (duration_label.text_width / 2) + 5 + duration_label.y = SLOWDOWN_LABEL_Y + @controls.push([:slowdown_label, duration_label]) + # Slowdown factor buttons + SLOWDOWN_FACTORS.each_with_index do |value, i| + button = UIControls::Button.new(SLOWDOWN_BUTTON_WIDTH, ROW_HEIGHT, self.viewport, value.to_s) + button.set_fixed_size + button.x = SLOWDOWN_BUTTON_X + ((SLOWDOWN_BUTTON_WIDTH + SLOWDOWN_BUTTON_SPACING) * i) + button.y = SLOWDOWN_BUTTON_Y + button.set_interactive_rects + button.set_highlighted if value == @slowdown + @controls.push([("slowdown" + value.to_s).to_sym, button]) + end + # Play button + play_button = UIControls::BitmapButton.new(PLAY_BUTTON_X, PLAY_BUTTON_Y, self.viewport, @bitmaps[:play_button]) + play_button.set_interactive_rects + play_button.disable + @controls.push([:play, play_button]) + # Stop button + stop_button = UIControls::BitmapButton.new(PLAY_BUTTON_X, PLAY_BUTTON_Y, self.viewport, @bitmaps[:stop_button]) + stop_button.set_interactive_rects + stop_button.visible = false + @controls.push([:stop, stop_button]) + # Loop buttons + loop_button = UIControls::BitmapButton.new(LOOP_BUTTON_X, LOOP_BUTTON_Y, self.viewport, @bitmaps[:play_once_button]) + loop_button.set_interactive_rects + loop_button.visible = false if @looping + @controls.push([:loop, loop_button]) + unloop_button = UIControls::BitmapButton.new(LOOP_BUTTON_X, LOOP_BUTTON_Y, self.viewport, @bitmaps[:looping_button]) + unloop_button.set_interactive_rects + unloop_button.visible = false if !@looping + @controls.push([:unloop, unloop_button]) + # Duration label + duration_label = UIControls::Label.new(200, ROW_HEIGHT, self.viewport, _INTL("Duration")) + duration_label.x = DURATION_TEXT_X - (duration_label.text_width / 2) + duration_label.y = DURATION_LABEL_Y + @controls.push([:duration_label, duration_label]) + # Duration value + duration_value = UIControls::Label.new(200, ROW_HEIGHT, self.viewport, _INTL("{1}s", 0.0)) + duration_value.x = DURATION_TEXT_X - (duration_value.text_width / 2) + duration_value.y = DURATION_VALUE_Y + @controls.push([:duration_value, duration_value]) + end + + #----------------------------------------------------------------------------- + + def duration=(new_val) + return if @duration == new_val + @duration = new_val + if @duration == 0 + get_control(:play).disable + else + get_control(:play).enable + end + ctrl = get_control(:duration_value) + ctrl.text = _INTL("{1}s", @duration / 20.0) + ctrl.x = DURATION_TEXT_X - (ctrl.text_width / 2) + refresh + end + + def color_scheme=(value) + return if @color_scheme == value + @color_scheme = value + generate_button_bitmaps + if @controls + @controls.each { |c| c[1].color_scheme = value } + repaint + end + end + + #----------------------------------------------------------------------------- + + def prepare_to_play_animation + get_control(:play).visible = false + get_control(:stop).visible = true + @controls.each { |ctrl| ctrl[1].disable if ctrl[0] != :stop } + end + + def end_playing_animation + get_control(:stop).visible = false + get_control(:play).visible = true + @controls.each { |ctrl| ctrl[1].enable } + end + + #----------------------------------------------------------------------------- + + def update + super + if @values + @values.keys.each do |key| + case key + when :loop + get_control(:loop).visible = false + get_control(:unloop).visible = true + @looping = true + @values.delete(key) + when :unloop + get_control(:unloop).visible = false + get_control(:loop).visible = true + @looping = false + @values.delete(key) + else + if key.to_s[/slowdown/] + # A slowdown button was pressed; apply its effect now + @slowdown = key.to_s.sub("slowdown", "").to_i + @controls.each do |ctrl| + next if !ctrl[0].to_s[/slowdown\d+/] + if ctrl[0].to_s.sub("slowdown", "").to_i == @slowdown + ctrl[1].set_highlighted + else + ctrl[1].set_not_highlighted + end + end + @values.delete(key) + end + end + end + @values = nil if @values.empty? + end + end +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 new file mode 100644 index 000000000..f81b0866e --- /dev/null +++ b/Data/Scripts/904_Anim Editor/Anim Editor elements/003_ParticleList.rb @@ -0,0 +1,1166 @@ +#=============================================================================== +# +#=============================================================================== +class AnimationEditor::ParticleList < UIControls::BaseControl + VIEWPORT_SPACING = 1 + TIMELINE_HEIGHT = 24 - VIEWPORT_SPACING + LIST_X = 0 + LIST_Y = TIMELINE_HEIGHT + VIEWPORT_SPACING + LIST_WIDTH = 180 - VIEWPORT_SPACING + EXPAND_BUTTON_X = VIEWPORT_SPACING + EXPAND_BUTTON_WIDTH = 19 + LIST_BOX_X = EXPAND_BUTTON_X + EXPAND_BUTTON_WIDTH + VIEWPORT_SPACING + LIST_INDENT = 8 + COMMANDS_X = LIST_WIDTH + VIEWPORT_SPACING + COMMANDS_Y = LIST_Y + + ROW_HEIGHT = 24 + ROW_SPACING = 1 # Gap at top of each row + DIAMOND_SIZE = 3 + TIMELINE_LEFT_BUFFER = DIAMOND_SIZE + 1 # Allows diamonds at keyframe 0 to be drawn fully + TIMELINE_TEXT_SIZE = 16 + KEYFRAME_SPACING = 20 + INTERP_LINE_HEIGHT = KEYFRAME_SPACING - ((DIAMOND_SIZE * 2) + 3) + INTERP_LINE_Y = (ROW_HEIGHT / 2) - (INTERP_LINE_HEIGHT / 2) + DURATION_BUFFER = 20 # Extra keyframes shown after the animation's end + + attr_reader :keyframe # The selected keyframe + attr_reader :values + + def initialize(x, y, width, height, viewport) + super(width, height, viewport) + self.x = x + self.y = y + draw_control_background + initialize_viewports + initialize_scrollbars + initialize_timeline_bitmaps + initialize_selection_bitmaps + initialize_controls + # List sprites and commands sprites + @list_sprites = [] + @commands_bg_sprites = [] + @commands_sprites = [] + # Scrollbar positions + @top_pos = 0 + @left_pos = 0 + @duration = 0 + # Selected things + @keyframe = 0 + @row_index = 0 + # Particle information to display (one row each) + @particles = [] # Reference to particle data from the editor scene + @expanded_particles = [] # Each element is index in @particles + @particle_list = [] # Each element is index in @particles or [index, property] + @visibilities = [] # Per particle + @commands = {} + end + + def initialize_viewports + @list_viewport = Viewport.new( + x + LIST_X, y + LIST_Y, LIST_WIDTH, height - LIST_Y - UIControls::Scrollbar::SLIDER_WIDTH - VIEWPORT_SPACING + ) + @list_viewport.z = self.viewport.z + 1 + @commands_bg_viewport = Viewport.new( + x + COMMANDS_X, y + COMMANDS_Y, + width - COMMANDS_X - UIControls::Scrollbar::SLIDER_WIDTH - VIEWPORT_SPACING, @list_viewport.rect.height + ) + @commands_bg_viewport.z = self.viewport.z + 1 + @position_viewport = Viewport.new(@commands_bg_viewport.rect.x, y, @commands_bg_viewport.rect.width, height) + @position_viewport.z = self.viewport.z + 2 + @commands_viewport = Viewport.new(@commands_bg_viewport.rect.x, @commands_bg_viewport.rect.y, + @commands_bg_viewport.rect.width, @commands_bg_viewport.rect.height) + @commands_viewport.z = self.viewport.z + 3 + end + + def initialize_scrollbars + # Vertical scrollbar + @list_scrollbar = UIControls::Scrollbar.new( + x + width - UIControls::Scrollbar::SLIDER_WIDTH, @commands_bg_viewport.rect.y, + @commands_bg_viewport.rect.height, self.viewport, false, true + ) + @list_scrollbar.set_interactive_rects + # Horizontal scrollbar + @time_scrollbar = UIControls::Scrollbar.new( + @commands_bg_viewport.rect.x, y + height - UIControls::Scrollbar::SLIDER_WIDTH, + @commands_bg_viewport.rect.width, self.viewport, true, true + ) + @time_scrollbar.set_interactive_rects + end + + def initialize_timeline_bitmaps + # Time background bitmap sprite + @time_bg_sprite = BitmapSprite.new( + @commands_viewport.rect.width, + TIMELINE_HEIGHT + VIEWPORT_SPACING + @list_viewport.rect.height, self.viewport + ) + @time_bg_sprite.x = @commands_viewport.rect.x + @time_bg_sprite.y = self.y + # Timeline bitmap sprite + @timeline_sprite = BitmapSprite.new(@commands_viewport.rect.width, TIMELINE_HEIGHT, self.viewport) + @timeline_sprite.x = @commands_viewport.rect.x + @timeline_sprite.y = self.y + @timeline_sprite.bitmap.font.color = text_color + @timeline_sprite.bitmap.font.size = TIMELINE_TEXT_SIZE + end + + def initialize_selection_bitmaps + # Position line sprite + if !@position_sprite + @position_sprite = BitmapSprite.new(3, height - UIControls::Scrollbar::SLIDER_WIDTH - VIEWPORT_SPACING, @position_viewport) + @position_sprite.ox = @position_sprite.width / 2 + end + @position_sprite.bitmap.clear + @position_sprite.bitmap.fill_rect(0, 0, @position_sprite.bitmap.width, @position_sprite.bitmap.height, position_line_color) + # Selected particle line sprite + if !@particle_line_sprite + @particle_line_sprite = BitmapSprite.new(@position_viewport.rect.width, 3, @commands_viewport) + @particle_line_sprite.z = -10 + @particle_line_sprite.oy = @particle_line_sprite.height / 2 + end + @particle_line_sprite.bitmap.clear + @particle_line_sprite.bitmap.fill_rect(0, 0, @particle_line_sprite.bitmap.width, @particle_line_sprite.bitmap.height, position_line_color) + end + + def initialize_controls + generate_button_bitmaps + @controls = [] + add_particle_button = UIControls::BitmapButton.new(x + 1, y + 1, viewport, @bitmaps[:add_button]) + add_particle_button.set_interactive_rects + @controls.push([:add_particle, add_particle_button]) + up_particle_button = UIControls::BitmapButton.new(x + 22, y + 1, viewport, @bitmaps[:up_button]) + up_particle_button.set_interactive_rects + @controls.push([:move_particle_up, up_particle_button]) + down_particle_button = UIControls::BitmapButton.new(x + 43, y + 1, viewport, @bitmaps[:down_button]) + down_particle_button.set_interactive_rects + @controls.push([:move_particle_down, down_particle_button]) + end + + def generate_button_bitmaps + @bitmaps = {} if !@bitmaps + @bitmaps[:add_button] = Bitmap.new(12, 12) if !@bitmaps[:add_button] + @bitmaps[:add_button].clear + @bitmaps[:add_button].fill_rect(1, 5, 10, 2, text_color) + @bitmaps[:add_button].fill_rect(5, 1, 2, 10, text_color) + @bitmaps[:up_button] = Bitmap.new(12, 12) if !@bitmaps[:up_button] + @bitmaps[:up_button].clear + 5.times do |i| + @bitmaps[:up_button].fill_rect(1 + i, 7 - i, 1, (i == 0) ? 2 : 3, text_color) + @bitmaps[:up_button].fill_rect(10 - i, 7 - i, 1, (i == 0) ? 2 : 3, text_color) + end + @bitmaps[:down_button] = Bitmap.new(12, 12) if !@bitmaps[:down_button] + 5.times do |i| + @bitmaps[:down_button].fill_rect(1 + i, 2 + i + (i == 0 ? 1 : 0), 1, (i == 0) ? 2 : 3, text_color) + @bitmaps[:down_button].fill_rect(10 - i, 2 + i + (i == 0 ? 1 : 0), 1, (i == 0) ? 2 : 3, text_color) + end + end + + def dispose + @list_scrollbar.dispose + @time_scrollbar.dispose + @time_bg_sprite.dispose + @timeline_sprite.dispose + @position_sprite.dispose + @particle_line_sprite.dispose + @controls.each { |c| c[1].dispose } + @controls.clear + @bitmaps.each_value { |b| b&.dispose } + @bitmaps.clear + dispose_listed_sprites + @list_viewport.dispose + @commands_bg_viewport.dispose + @commands_viewport.dispose + super + end + + def dispose_listed_sprites + @list_sprites.each { |p| p&.dispose } + @list_sprites.clear + @commands_bg_sprites.each { |p| p&.dispose } + @commands_bg_sprites.clear + @commands_sprites.each { |p| p&.dispose } + @commands_sprites.clear + end + + #----------------------------------------------------------------------------- + + def position_line_color + return get_color_scheme_color_for_element(:position_line_color, Color.new(248, 96, 96)) + end + + def after_end_bg_color + return get_color_scheme_color_for_element(:after_end_bg_color, Color.new(160, 160, 160)) + end + + def se_background_color + return get_color_scheme_color_for_element(:se_background_color, Color.gray) + end + + def property_background_color + return get_color_scheme_color_for_element(:property_background_color, Color.new(224, 224, 224)) + end + + def color_scheme=(value) + return if @color_scheme == value + @color_scheme = value + return if !@bitmaps + draw_control_background + initialize_selection_bitmaps + generate_button_bitmaps + self.bitmap.font.color = text_color + self.bitmap.font.size = text_size + @list_scrollbar.color_scheme = value + @time_scrollbar.color_scheme = value + @timeline_sprite.bitmap.font.color = text_color + @controls.each { |c| c[1].color_scheme = value } + @list_sprites.each { |spr| spr.bitmap.font.color = text_color } + invalidate + end + + def duration + return [@duration - DURATION_BUFFER, 0].max + end + + def particle_index + return -1 if @row_index < 0 || @row_index >= @particle_list.length + ret = @particle_list[@row_index] + return (ret.is_a?(Array)) ? ret[0] : ret + end + + def particle_index=(val) + old_index = @row_index + @row_index = @particle_list.index { |row| !row.is_a?(Array) && row == val } + return if @row_index == old_index + invalidate + scroll_to_row(@row_index) + end + + def keyframe=(val) + return if @keyframe == val + @keyframe = val + scroll_to_keyframe(@keyframe) + invalidate + end + + def top_pos=(val) + old_val = @top_pos + total_height = (@particle_list.length * ROW_HEIGHT) + 1 + if total_height <= @list_viewport.rect.height + @top_pos = 0 + else + @top_pos = val + @top_pos = @top_pos.clamp(0, total_height - @list_viewport.rect.height) + end + @list_viewport.oy = @top_pos + @commands_bg_viewport.oy = @top_pos + @commands_viewport.oy = @top_pos + if @top_pos != old_val + refresh_particle_line + invalidate_rows + @old_top_pos = old_val + end + end + + def left_pos=(val) + old_val = @left_pos + total_width = (@duration * KEYFRAME_SPACING) + TIMELINE_LEFT_BUFFER + 1 + if total_width <= @commands_viewport.rect.width + @left_pos = 0 + else + @left_pos = val + @left_pos = @left_pos.clamp(0, total_width - @commands_viewport.rect.width) + end + if @left_pos != old_val + refresh_position_line + invalidate_time + end + end + + def scroll_to_row(new_row) + if new_row * ROW_HEIGHT < @top_pos + # Scroll up + new_pos = new_row * ROW_HEIGHT + loop do + @list_scrollbar.slider_top -= 1 + break if @list_scrollbar.position <= new_pos || @list_scrollbar.minimum? + end + elsif new_row * ROW_HEIGHT > @top_pos + @list_viewport.rect.height - ROW_HEIGHT + # Scroll down + new_pos = (new_row * ROW_HEIGHT) - @list_viewport.rect.height + ROW_HEIGHT + loop do + @list_scrollbar.slider_top += 1 + break if @list_scrollbar.position >= new_pos || @list_scrollbar.maximum? + end + end + end + + def scroll_to_keyframe(new_keyframe) + if TIMELINE_LEFT_BUFFER + (new_keyframe * KEYFRAME_SPACING) - (KEYFRAME_SPACING / 2) < @left_pos + # Scroll left + new_pos = TIMELINE_LEFT_BUFFER + (new_keyframe * KEYFRAME_SPACING) - (KEYFRAME_SPACING / 2) + loop do + @time_scrollbar.slider_top -= 1 + break if @time_scrollbar.position <= new_pos || @time_scrollbar.minimum? + end + elsif TIMELINE_LEFT_BUFFER + (new_keyframe * KEYFRAME_SPACING) + (KEYFRAME_SPACING / 2) > @left_pos + @commands_bg_viewport.rect.width + # Scroll right + new_pos = TIMELINE_LEFT_BUFFER + (new_keyframe * KEYFRAME_SPACING) + (KEYFRAME_SPACING / 2) - @commands_bg_viewport.rect.width + loop do + @time_scrollbar.slider_top += 1 + break if @time_scrollbar.position >= new_pos || @time_scrollbar.maximum? + end + end + end + + # Ensures that the array of which particle rows have been expanded ends up + # with the same particles having expanded rows after adding a particle. + def add_particle(index) + @expanded_particles.each_with_index do |idx, i| + @expanded_particles[i] += 1 if idx >= index + end + end + + # Ensures that the array of which particle rows have been expanded ends up + # with the same particles having expanded rows after deleting a particle. + def delete_particle(index) + @expanded_particles.delete(index) + @expanded_particles.each_with_index do |idx, i| + @expanded_particles[i] -= 1 if idx > index + end + end + + # Ensures that the array of which particle rows have been expanded ends up + # with the same particles having expanded rows after the swap. + def swap_particles(idx1, idx2) + if @expanded_particles.include?(idx1) && !@expanded_particles.include?(idx2) + @expanded_particles.delete(idx1) + @expanded_particles.push(idx2) + elsif @expanded_particles.include?(idx2) && !@expanded_particles.include?(idx1) + @expanded_particles.delete(idx2) + @expanded_particles.push(idx1) + end + end + + def set_particles(particles) + @particles = particles + calculate_all_commands_and_durations + create_sprites + end + + def create_sprites + # Fill in @particle_list with indices from @particles + @particle_list.clear + @particles.length.times do |i| + @particle_list.push(i) + next if !@expanded_particles.include?(i) + @particles[i].each_pair do |property, value| + @particle_list.push([i, property]) if value.is_a?(Array) + end + end + @row_index = @particle_list.length - 1 if @row_index >= @particle_list.length + # Dispose of and clear all existing list/commands sprites + dispose_listed_sprites + # Create new sprites for each particle (1x list and 2x commands) + @particle_list.length.times do + list_sprite = BitmapSprite.new(@list_viewport.rect.width, ROW_HEIGHT, @list_viewport) + list_sprite.y = @list_sprites.length * ROW_HEIGHT + list_sprite.bitmap.font.color = text_color + list_sprite.bitmap.font.size = text_size + @list_sprites.push(list_sprite) + commands_bg_sprite = BitmapSprite.new(@commands_viewport.rect.width, ROW_HEIGHT, @commands_bg_viewport) + commands_bg_sprite.y = @commands_bg_sprites.length * ROW_HEIGHT + commands_bg_sprite.bitmap.font.color = text_color + commands_bg_sprite.bitmap.font.size = text_size + @commands_bg_sprites.push(commands_bg_sprite) + commands_sprite = BitmapSprite.new(@commands_viewport.rect.width, ROW_HEIGHT, @commands_viewport) + commands_sprite.y = @commands_sprites.length * ROW_HEIGHT + commands_sprite.bitmap.font.color = text_color + commands_sprite.bitmap.font.size = text_size + @commands_sprites.push(commands_sprite) + end + # Set scrollbars to the correct lengths + @list_scrollbar.range = (@particle_list.length * ROW_HEIGHT) + 1 + @time_scrollbar.range = (@duration * KEYFRAME_SPACING) + TIMELINE_LEFT_BUFFER + 1 + self.top_pos = @list_scrollbar.position + self.left_pos = @time_scrollbar.position + # Redraw all sprites + invalidate + end + + def set_interactive_rects + @list_rect = Rect.new(0, TIMELINE_HEIGHT, LIST_WIDTH - 1, @list_viewport.rect.height) + @timeline_rect = Rect.new(LIST_WIDTH, 0, width - LIST_WIDTH - UIControls::Scrollbar::SLIDER_WIDTH - 1, TIMELINE_HEIGHT - 1) + @commands_rect = Rect.new(LIST_WIDTH, TIMELINE_HEIGHT, @timeline_rect.width, @list_rect.height) + @interactions = { + :list => @list_rect, + :timeline => @timeline_rect, + :commands => @commands_rect + } + end + + #----------------------------------------------------------------------------- + + def invalid? + return @invalid || @invalid_time || @invalid_rows || @invalid_commands + end + + def invalidate_time + @invalid_time = true + end + + def invalidate_rows + @invalid_rows = true + end + + def invalidate_commands + @invalid_commands = true + end + + def validate + super + @invalid_time = false + @invalid_rows = false + @invalid_commands = false + end + + def busy? + return true if controls_busy? + return super + end + + def controls_busy? + return @controls.any? { |c| c[1].busy? } + end + + def changed? + return @changed + end + + def set_changed + @changed = true + @values = {} + end + + def clear_changed + super + @values = nil + end + + def get_control(id) + ret = nil + @controls.each do |c| + ret = c[1] if c[0] == id + break if ret + end + return ret + end + + #----------------------------------------------------------------------------- + + def calculate_all_commands_and_durations + calculate_duration + calculate_all_commands + end + + def calculate_duration + @duration = AnimationPlayer::Helper.get_duration(@particles) + @duration += DURATION_BUFFER + end + + def calculate_all_commands + @commands = {} + @particles.each_with_index do |particle, index| + calculate_commands_for_particle(index) + end + end + + def calculate_commands_for_particle(index) + @commands.delete_if { |cmd| cmd == index || (cmd.is_a?(Array) && cmd[0] == index) } + overall_commands = [] + @particles[index].each_pair do |property, value| + next if !value.is_a?(Array) + cmds = AnimationEditor::ParticleDataHelper.get_particle_property_commands_timeline(@particles[index], property, value) + @commands[[index, property]] = cmds + cmds.each_with_index do |cmd, i| + next if !cmd + overall_commands[i] = (cmd.is_a?(Array)) ? cmd.clone : cmd + end + end + @commands[index] = overall_commands + # Calculate visibilities for every keyframe + @visibilities[index] = AnimationEditor::ParticleDataHelper.get_timeline_particle_visibilities( + @particles[index], @duration - DURATION_BUFFER + ) + end + + # Returns whether the sprites need replacing due to the addition or + # subtraction of one. + def ensure_sprites + # Go through all @particles to ensure there are sprites for each of them + missing = false + @particles.each_with_index do |particle, index| + if @particle_list.none? { |value| next !value.is_a?(Array) && value == index } + missing = true + break + end + next if !@expanded_particles.include?(index) + particle.each_pair do |property, value| + next if !value.is_a?(Array) + if @particle_list.none? { |value| next value.is_a?(Array) && value[0] == index && value[1] == property } + missing = true + break + end + end + break if missing + end + return true if missing + # Go through all sprites to ensure there are none for a particle or + # particle/property that don't exist + excess = false + @particle_list.each do |value| + if value.is_a?(Array) + excess = true if !@particles[value[0]] || !@particles[value[0]][value[1]] || + @particles[value[0]][value[1]].empty? + else + excess = true if !@particles[value] + end + break if excess + end + return excess + end + + # Called when a change is made to a particle's commands. + def change_particle_commands(index) + old_duration = @duration + calculate_duration + if @duration != old_duration + calculate_all_commands + else + calculate_commands_for_particle(index) + end + sprites_need_changing = ensure_sprites + if @duration != old_duration || sprites_need_changing + @keyframe = @keyframe.clamp(-1, @duration - 1) + @row_index = @row_index.clamp(0, @particle_list.length - 1) + create_sprites + end + invalidate + end + + # Called when a change is made to a particle's general properties. + def change_particle(index) + invalidate_rows + end + + #----------------------------------------------------------------------------- + + def each_visible_keyframe(early_start = false) + full_width = @commands_viewport.rect.width + start_keyframe = ((@left_pos - TIMELINE_LEFT_BUFFER) / KEYFRAME_SPACING) + start_keyframe = 0 if start_keyframe < 0 + start_keyframe -= 1 if early_start && start_keyframe > 0 # For drawing long timestamps + end_keyframe = (@left_pos + full_width / KEYFRAME_SPACING) + (start_keyframe..end_keyframe).each { |i| yield i } + end + + def each_visible_particle + full_height = @list_viewport.rect.height + start_row = @top_pos / ROW_HEIGHT + end_row = (@top_pos + full_height) / ROW_HEIGHT + if @old_top_pos + old_start_row = @old_top_pos / ROW_HEIGHT + old_end_row = (@old_top_pos + full_height) / ROW_HEIGHT + (start_row..end_row).each { |i| yield i if !(old_start_row..old_end_row).include?(i) } + else + (start_row..end_row).each { |i| yield i } + end + end + + #----------------------------------------------------------------------------- + + def draw_control_background + self.bitmap.clear + # Separator lines + self.bitmap.fill_rect(0, TIMELINE_HEIGHT, width, VIEWPORT_SPACING, line_color) + self.bitmap.fill_rect(LIST_WIDTH, 0, VIEWPORT_SPACING, height, line_color) + self.bitmap.fill_rect(0, height - UIControls::Scrollbar::SLIDER_WIDTH - VIEWPORT_SPACING, width, VIEWPORT_SPACING, line_color) + self.bitmap.fill_rect(width - UIControls::Scrollbar::SLIDER_WIDTH - VIEWPORT_SPACING, 0, VIEWPORT_SPACING, height, line_color) + end + + #----------------------------------------------------------------------------- + + def repaint + @list_scrollbar.repaint if @list_scrollbar.invalid? + @time_scrollbar.repaint if @time_scrollbar.invalid? + @controls.each { |c| c[1].repaint if c[1].invalid? } + super if invalid? + end + + def refresh_timeline + @time_bg_sprite.bitmap.clear + @timeline_sprite.bitmap.clear + # Draw grey over the time after the end of the animation + dur = duration + draw_x = TIMELINE_LEFT_BUFFER + (dur * KEYFRAME_SPACING) - @left_pos + greyed_width = @time_bg_sprite.width - draw_x + if greyed_width > 0 + @time_bg_sprite.bitmap.fill_rect(draw_x, 0, greyed_width, @time_bg_sprite.height, after_end_bg_color) + @time_bg_sprite.bitmap.fill_rect(draw_x, TIMELINE_HEIGHT, greyed_width, VIEWPORT_SPACING, line_color) + end + # Draw hover highlight + if !controls_busy? + this_hover_color = nil + if @captured_keyframe && !@captured_row + if @hover_keyframe && @hover_keyframe == @captured_keyframe && !@hover_row + this_hover_color = hover_color + else + this_hover_color = capture_color + end + draw_x = TIMELINE_LEFT_BUFFER + (@captured_keyframe * KEYFRAME_SPACING) - @left_pos + @timeline_sprite.bitmap.fill_rect(draw_x - (KEYFRAME_SPACING / 2), 0, + KEYFRAME_SPACING, TIMELINE_HEIGHT - 1, this_hover_color) + elsif !@captured_keyframe && !@captured_row && @hover_keyframe && !@hover_row + this_hover_color = hover_color + draw_x = TIMELINE_LEFT_BUFFER + (@hover_keyframe * KEYFRAME_SPACING) - @left_pos + @timeline_sprite.bitmap.fill_rect(draw_x - (KEYFRAME_SPACING / 2), 0, + KEYFRAME_SPACING, TIMELINE_HEIGHT - 1, this_hover_color) + end + end + # Draw timeline markings + each_visible_keyframe(true) do |i| + draw_x = TIMELINE_LEFT_BUFFER + (i * KEYFRAME_SPACING) - @left_pos + line_height = 6 + if (i % 20) == 0 + line_height = TIMELINE_HEIGHT - 2 + elsif (i % 5) == 0 + line_height = TIMELINE_HEIGHT / 2 + end + @timeline_sprite.bitmap.fill_rect(draw_x, TIMELINE_HEIGHT - line_height, 1, line_height, text_color) + draw_text(@timeline_sprite.bitmap, draw_x + 1, 0, (i / 20.0).to_s) if (i % 5) == 0 + end + end + + def refresh_position_line + @position_sprite.visible = (@keyframe >= 0) + if @keyframe >= 0 + @position_sprite.x = TIMELINE_LEFT_BUFFER + (@keyframe * KEYFRAME_SPACING) - @left_pos + end + end + + def refresh_particle_line + @particle_line_sprite.visible = (particle_index >= 0) + if particle_index >= 0 + @particle_line_sprite.y = ((@row_index + 0.5) * ROW_HEIGHT).to_i + end + end + + def refresh_particle_list_sprite(index) + spr = @list_sprites[index] + return if !spr + spr.bitmap.clear + # Get useful information + is_property = @particle_list[index].is_a?(Array) + p_index = (is_property) ? @particle_list[index][0] : @particle_list[index] + particle_data = @particles[p_index] + box_x = LIST_BOX_X + box_x += LIST_INDENT if is_property + # Get the background color + if particle_data[:name] == "SE" + bg_color = se_background_color + elsif is_property + bg_color = property_background_color + else + bg_color = focus_color(@particles[p_index][:focus]) + end + # Draw hover highlight + if !controls_busy? && !@captured_keyframe + hover_color = nil + if @captured_row + if @captured_row == index + if !@hover_keyframe && @hover_row && @hover_row == index && + @captured_row_button && @hover_row_button == @captured_row_button + this_hover_color = hover_color + else + this_hover_color = capture_color + end + end + elsif @hover_row && @hover_row == index && !@hover_keyframe + this_hover_color = hover_color + end + if this_hover_color + case @captured_row_button || @hover_row_button + when :expand + spr.bitmap.fill_rect(EXPAND_BUTTON_X, (ROW_HEIGHT - EXPAND_BUTTON_WIDTH + 1) / 2, + EXPAND_BUTTON_WIDTH, EXPAND_BUTTON_WIDTH, this_hover_color) + when :row + spr.bitmap.fill_rect(box_x, ROW_SPACING, spr.width - box_x, spr.height - ROW_SPACING, this_hover_color) + end + end + end + # Draw outline + spr.bitmap.outline_rect(box_x, ROW_SPACING, spr.width - box_x, spr.height - ROW_SPACING, bg_color, 2) + # Draw text + if is_property + draw_text(spr.bitmap, box_x + 4, 3, GameData::Animation.property_display_name(@particle_list[index][1]) + ":") + else + draw_text(spr.bitmap, box_x + 4, 3, @particles[p_index][:name] || "Unnamed") + end + # Draw expand/collapse arrow or dotted lines + icon_color = text_color + dotted_color = line_color + if is_property + 6.times do |j| + spr.bitmap.fill_rect(10, j * 2, 1, 1, dotted_color) + end + 9.times do |i| + spr.bitmap.fill_rect(10 + (i * 2), 12, 1, 1, dotted_color) + end + elsif @expanded_particles.include?(p_index) + # Draw down-pointing arrow + 11.times do |i| + j = (i == 0 || i == 10) ? 1 : 0 + h = [2, 4, 5, 6, 7, 8, 7, 6, 5, 4, 2][i] + h = ((i > 5) ? 10 - i : i) + 3 - j + spr.bitmap.fill_rect(5 + i, 9 + j, 1, h, icon_color) + end + elsif particle_data[:name] != "SE" + # Draw right-pointing arrow + 11.times do |j| + i = (j == 0 || j == 10) ? 1 : 0 + w = [2, 4, 5, 6, 7, 8, 7, 6, 5, 4, 2][j] + w = ((j > 5) ? 10 - j : j) + 3 - i + spr.bitmap.fill_rect(7 + i, 7 + j, w, 1, icon_color) + end + end + # Draw dotted line leading to the next property line + if @particle_list[index + 1]&.is_a?(Array) + 5.times do |j| + spr.bitmap.fill_rect(10, 14 + (j * 2), 1, 1, dotted_color) + end + end + end + + def refresh_particle_commands_bg_sprites(index) + bg_spr = @commands_bg_sprites[index] + return if !bg_spr + bg_spr.bitmap.clear + is_property = @particle_list[index].is_a?(Array) + p_index = (is_property) ? @particle_list[index][0] : @particle_list[index] + particle_data = @particles[p_index] + # Get the background color + if particle_data[:name] == "SE" + bg_color = se_background_color + elsif is_property + bg_color = property_background_color + else + bg_color = focus_color(@particles[p_index][:focus]) + end + # Get visibilities of particle for each keyframe + visible_cmds = @visibilities[p_index] + # Draw background for visible parts of the particle + 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] == 1 + bg_spr.bitmap.fill_rect(draw_x, ROW_SPACING, KEYFRAME_SPACING, ROW_HEIGHT - ROW_SPACING, bg_color) + end + # Draw hover highlight + this_hover_color = nil + if !controls_busy? + earlier_captured_keyframe = @captured_keyframe + later_captured_keyframe = (earlier_captured_keyframe || -1) + 1 + earlier_hovered_keyframe = @hover_keyframe + later_hovered_keyframe = (earlier_hovered_keyframe || -1) + 1 + if is_property + later_captured_keyframe = @captured_row_button || 0 + later_hovered_keyframe = @hover_row_button || 0 + end + if @captured_row && @captured_keyframe + if @captured_row == index && i >= earlier_captured_keyframe && i < later_captured_keyframe + if @hover_row && @hover_row == index && @hover_keyframe && i >= earlier_hovered_keyframe && i < later_hovered_keyframe + this_hover_color = hover_color + else + this_hover_color = capture_color + end + end + elsif !@captured_row && !@captured_keyframe && @hover_row && @hover_keyframe && + @hover_row == index && i >= earlier_hovered_keyframe && i < later_hovered_keyframe + this_hover_color = hover_color + end + end + if this_hover_color + if is_property + bg_spr.bitmap.fill_rect(draw_x, 2, KEYFRAME_SPACING, ROW_HEIGHT - 3, this_hover_color) + else + bg_spr.bitmap.fill_rect(draw_x - (KEYFRAME_SPACING / 2), 2, KEYFRAME_SPACING, ROW_HEIGHT - 3, this_hover_color) + end + end + next if i >= @duration - DURATION_BUFFER + outline_color = line_color + case visible_cmds[i] + when 1 # Particle is visible + # Draw outline + if is_property + outline_color = focus_color(@particles[p_index][:focus]) + 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 + + def refresh_particle_commands_sprite(index) + spr = @commands_sprites[index] + return if !spr + spr.bitmap.clear + cmds = @commands[@particle_list[index]] + return if !cmds + # Draw command diamonds + first_keyframe = -1 + each_visible_keyframe do |i| + first_keyframe = i if first_keyframe < 0 + next if !cmds[i] + draw_x = TIMELINE_LEFT_BUFFER + (i * KEYFRAME_SPACING) - @left_pos + # Draw command diamond + spr.bitmap.fill_diamond(draw_x, ROW_HEIGHT / 2, DIAMOND_SIZE, text_color) + # Draw interpolation line + if cmds[i].is_a?(Array) + spr.bitmap.draw_interpolation_line( + draw_x + DIAMOND_SIZE + 2, + INTERP_LINE_Y, + cmds[i][0].abs * KEYFRAME_SPACING - ((DIAMOND_SIZE * 2) + 3), + INTERP_LINE_HEIGHT, + cmds[i][0] > 0, # Increases or decreases + cmds[i][1], # Interpolation type + text_color + ) + end + end + # Draw any interpolation lines that start before the first visible keyframe + if first_keyframe > 0 + (0...first_keyframe).each do |i| + next if !cmds[i] || !cmds[i].is_a?(Array) + next if i + cmds[i][0].abs < first_keyframe + draw_x = TIMELINE_LEFT_BUFFER + (i * KEYFRAME_SPACING) - @left_pos + spr.bitmap.draw_interpolation_line( + draw_x + DIAMOND_SIZE + 2, + INTERP_LINE_Y, + cmds[i][0].abs * KEYFRAME_SPACING - ((DIAMOND_SIZE * 2) + 3), + INTERP_LINE_HEIGHT, + cmds[i][0] > 0, # Increases or decreases + cmds[i][1], # Interpolation type + text_color + ) + end + end + end + + def refresh + @old_top_pos = nil if @invalid + @controls.each { |c| c[1].refresh } + draw_area_highlight + refresh_timeline if @invalid || @invalid_time + each_visible_particle do |i| + refresh_particle_list_sprite(i) if @invalid || @invalid_rows + refresh_particle_commands_bg_sprites(i) + refresh_particle_commands_sprite(i) + end + @old_top_pos = nil # For refreshing only rows that became visible via using vertical scrollbar + end + + # Does nothing, because area highlights are drawn in other sprites rather than + # this one. + def draw_area_highlight; end + + #----------------------------------------------------------------------------- + + def get_interactive_element_at_mouse + ret = nil + mouse_x, mouse_y = mouse_pos + return ret if !mouse_x || !mouse_y + @interactions.each_pair do |area, rect| + next if !rect.contains?(mouse_x, mouse_y) + ret = area + case area + when :list + new_hover_row = (mouse_y + @top_pos - rect.y) / ROW_HEIGHT + break if new_hover_row >= @particle_list.length + listed_element = @particle_list[new_hover_row] + p_index = listed_element.is_a?(Array) ? listed_element[0] : listed_element + break if @particles[p_index][:name] == "SE" + mouse_y_in_row = mouse_y + @top_pos - (new_hover_row * ROW_HEIGHT) - rect.y + case mouse_x + when EXPAND_BUTTON_X...(EXPAND_BUTTON_X + EXPAND_BUTTON_WIDTH) + next if listed_element.is_a?(Array) + next if mouse_y_in_row < (ROW_HEIGHT - EXPAND_BUTTON_WIDTH + 1) / 2 + next if mouse_y_in_row >= ((ROW_HEIGHT - EXPAND_BUTTON_WIDTH + 1) / 2) + EXPAND_BUTTON_WIDTH + ret = [area, nil, new_hover_row, :expand] + when LIST_BOX_X...(@list_viewport.rect.width) + next if listed_element.is_a?(Array) + next if mouse_y_in_row < ROW_SPACING + ret = [area, nil, new_hover_row, :row] + end + when :timeline + new_hover_keyframe = (mouse_x + @left_pos - rect.x - TIMELINE_LEFT_BUFFER + (KEYFRAME_SPACING / 2) - 1) / KEYFRAME_SPACING + break if new_hover_keyframe < 0 || new_hover_keyframe >= @duration + ret = [area, new_hover_keyframe, nil] + when :commands + new_hover_row = (mouse_y + @top_pos - rect.y) / ROW_HEIGHT + break if new_hover_row >= @particle_list.length + listed_element = @particle_list[new_hover_row] + if listed_element.is_a?(Array) + new_hover_keyframe = (mouse_x + @left_pos - rect.x - TIMELINE_LEFT_BUFFER - 1) / KEYFRAME_SPACING + else + new_hover_keyframe = (mouse_x + @left_pos - rect.x - TIMELINE_LEFT_BUFFER + (KEYFRAME_SPACING / 2) - 1) / KEYFRAME_SPACING + end + break if new_hover_keyframe < 0 || new_hover_keyframe >= @duration + if listed_element.is_a?(Array) + break if !GameData::Animation.property_can_interpolate?(listed_element[1]) + cmds = @commands[listed_element] + break if !cmds + earlier_keyframe = nil + later_keyframe = nil + cmds.each_with_index do |cmd, i| + earlier_keyframe = i if cmd && i <= new_hover_keyframe + later_keyframe = i if cmd && !later_keyframe && i > new_hover_keyframe + end + break if !earlier_keyframe || !later_keyframe + ret = [area, earlier_keyframe, new_hover_row, later_keyframe] + else + ret = [area, new_hover_keyframe, new_hover_row] + end + end + break + end + return ret + end + + def on_mouse_press + return if @captured_area + hover_element = get_interactive_element_at_mouse + if hover_element.is_a?(Array) + @captured_area = hover_element[0] + @captured_keyframe = hover_element[1] + @captured_row = hover_element[2] + @captured_row_button = hover_element[3] + end + end + + def on_mouse_release + return if !@captured_area # Wasn't captured to begin with + # Change this control's value + hover_element = get_interactive_element_at_mouse + if hover_element.is_a?(Array) + if @captured_area == hover_element[0] && + @captured_keyframe == hover_element[1] && + @captured_row == hover_element[2] && + @captured_row_button == hover_element[3] + if @captured_area == :commands && @captured_row && @particle_list[@captured_row].is_a?(Array) + set_changed + @values[:cycle_interpolation] = [*@particle_list[@captured_row], @captured_keyframe] + else + case @captured_row_button + when :expand + old_row_idx_particle = @particle_list[@row_index] + idx_particle = @particle_list[@captured_row] + idx_particle = idx_particle[0] if idx_particle.is_a?(Array) + if @expanded_particles.include?(idx_particle) # Contract + @expanded_particles.delete(idx_particle) + else # Expand + @expanded_particles.push(idx_particle) + end + set_particles(@particles) + @row_index = @particle_list.index(old_row_idx_particle) + else # :row button or somewhere in the commands area or timeline, just change selection + if @captured_row && @particle_list[@captured_row].is_a?(Array) + @captured_row = @particle_list.index(@particle_list[@captured_row][0]) + end + set_changed if @keyframe != @captured_keyframe || @row_index != @captured_row + @keyframe = @captured_keyframe || -1 + @row_index = @captured_row if @captured_row + end + end + end + end + @captured_keyframe = nil + @captured_row = nil + @captured_row_button = nil + super # Make this control not busy again + end + + def update_hover_highlight + # Remove the hover highlight if there are no interactions for this control + # or if the mouse is off-screen + mouse_x, mouse_y = mouse_pos + if !@interactions || @interactions.empty? || !mouse_x || !mouse_y + invalidate if @hover_area + @hover_area = nil + @hover_keyframe = nil + @hover_row = nil + @hover_row_button = nil + return + end + # Check each interactive area for whether the mouse is hovering over it, and + # set @hover_area accordingly + hover_element = get_interactive_element_at_mouse + if hover_element.is_a?(Array) + invalidate if @hover_area != hover_element[0] # Moved to a different region + case hover_element[0] + when :list + invalidate_rows if @hover_row != hover_element[2] || @hover_row_button != hover_element[3] + when :timeline + invalidate_time if @hover_keyframe != hover_element[1] + when :commands + invalidate_commands if @hover_row != hover_element[2] || + @hover_keyframe != hover_element[1] + end + @hover_area = hover_element[0] + @hover_keyframe = hover_element[1] + @hover_row = hover_element[2] + @hover_row_button = hover_element[3] + elsif hover_element + if @hover_area == hover_element + case @hover_area + when :list + invalidate_rows if @hover_row + when :timeline + invalidate_time if @hover_keyframe + when :commands + invalidate_commands if @hover_keyframe || @hover_row + end + else # Moved to a different region + invalidate + end + @hover_area = hover_element + @hover_keyframe = nil + @hover_row = nil + @hover_row_button = nil + else + invalidate if @hover_area + @hover_area = nil + @hover_keyframe = nil + @hover_row = nil + @hover_row_button = nil + end + end + + def update_input + # Left/right to change current keyframe + if Input.triggerex?(:LEFT) || Input.repeatex?(:LEFT) + if @keyframe >= 0 + @keyframe -= 1 + scroll_to_keyframe(@keyframe) + set_changed + end + elsif Input.triggerex?(:RIGHT) || Input.repeatex?(:RIGHT) + if @keyframe < @duration - 1 + @keyframe += 1 + scroll_to_keyframe(@keyframe) + set_changed + end + end + # Up/down to change selected particle + if Input.triggerex?(:UP) || Input.repeatex?(:UP) + if @row_index > 0 + loop do + @row_index -= 1 + break if !@particle_list[@row_index].is_a?(Array) + end + scroll_to_row(@row_index) + set_changed + end + elsif Input.triggerex?(:DOWN) || Input.repeatex?(:DOWN) + if @row_index < @particle_list.length - 1 + old_row_index = @row_index + loop do + @row_index += 1 + break if !@particle_list[@row_index].is_a?(Array) || @row_index >= @particle_list.length + end + if @row_index < @particle_list.length + @keyframe = 0 if @keyframe < 0 && !@particle_list[@row_index].is_a?(Array) && + @particles[@particle_list[@row_index]][:name] == "SE" + scroll_to_row(@row_index) + set_changed + else + @row_index = old_row_index + end + end + end + if Input.triggerex?(:P) + idx_particle = @particle_list[@row_index] + idx_particle = idx_particle[0] if idx_particle.is_a?(Array) + if @row_index >= 0 && @particles[idx_particle][:name] != "SE" + if @expanded_particles.include?(idx_particle) # Contract + @expanded_particles.delete(idx_particle) + else # Expand + @expanded_particles.push(idx_particle) + end + set_particles(@particles) + end + end + # Mouse scroll wheel + mouse_x, mouse_y = mouse_pos + if mouse_x && mouse_y + if @interactions[:list].contains?(mouse_x, mouse_y) || + @interactions[:commands].contains?(mouse_x, mouse_y) + wheel_v = Input.scroll_v + if wheel_v > 0 # Scroll up + @list_scrollbar.slider_top -= UIControls::Scrollbar::SCROLL_DISTANCE + self.top_pos = @list_scrollbar.position + elsif wheel_v < 0 # Scroll down + @list_scrollbar.slider_top += UIControls::Scrollbar::SCROLL_DISTANCE + self.top_pos = @list_scrollbar.position + end + end + end + end + + def update + return if !self.visible + @list_scrollbar.update + @time_scrollbar.update + if !@captured_area + @controls.each { |c| c[1].update } + end + super + # Refresh sprites if a scrollbar has been moved + self.top_pos = @list_scrollbar.position + self.left_pos = @time_scrollbar.position + # Update the positions of the selected particle/keyframe lines + refresh_position_line + refresh_particle_line + # Add/move particle buttons + @controls.each do |c| + next if !c[1].changed? + set_changed + @values[c[0]] = true + c[1].clear_changed + end + # Up/down/left/right navigation, and mouse scroll wheel + update_input + end +end diff --git a/Data/Scripts/904_Anim Editor/Anim Editor elements/004_Menu bar.rb b/Data/Scripts/904_Anim Editor/Anim Editor elements/004_Menu bar.rb new file mode 100644 index 000000000..e80feae5f --- /dev/null +++ b/Data/Scripts/904_Anim Editor/Anim Editor elements/004_Menu bar.rb @@ -0,0 +1,47 @@ +#=============================================================================== +# +#=============================================================================== +class AnimationEditor::MenuBar < UIControls::ControlsContainer + MENU_BUTTON_WIDTH = 80 + SETTINGS_BUTTON_WIDTH = 30 + NAME_BUTTON_WIDTH = 400 # The animation's name + + def initialize(x, y, width, height, viewport) + super(x, y, width, height) + @viewport.z = viewport.z + 10 # So that it appears over the canvas + end + + #----------------------------------------------------------------------------- + + def add_button(id, button_text) + ctrl = UIControls::Button.new(MENU_BUTTON_WIDTH, @height, @viewport, button_text) + ctrl.set_fixed_size + add_control(id, ctrl) + end + + def add_settings_button(id, bitmap) + ctrl = UIControls::BitmapButton.new(0, 0, @viewport, bitmap) + add_control_at(id, ctrl, @width - SETTINGS_BUTTON_WIDTH + 2, 2) + end + + def add_name_button(id, button_text) + ctrl = UIControls::Button.new(NAME_BUTTON_WIDTH, @height, @viewport, button_text) + ctrl.set_fixed_size + add_control_at(id, ctrl, @width - ctrl.width - SETTINGS_BUTTON_WIDTH, 0) + end + + def anim_name=(val) + ctrl = get_control(:name) + ctrl.set_text(val) if ctrl + end + + #----------------------------------------------------------------------------- + + private + + def next_control_position(add_offset = false) + row_x = @row_count * MENU_BUTTON_WIDTH + row_y = 0 + return row_x, row_y + end +end diff --git a/Data/Scripts/905_Anim player/001_Anim player.rb b/Data/Scripts/905_Anim player/001_Anim player.rb new file mode 100644 index 000000000..8d55a0e9e --- /dev/null +++ b/Data/Scripts/905_Anim player/001_Anim player.rb @@ -0,0 +1,313 @@ +#=============================================================================== +# +#=============================================================================== +class AnimationPlayer + attr_accessor :looping + attr_accessor :slowdown # 1 = normal speed, 2 = half speed, 3 = one third speed, etc. + + # animation is either a GameData::Animation or a hash made from one. + # user is a Battler, or nil + # targets is an array of Battlers, or nil + def initialize(animation, user, targets, scene) + @animation = animation + @user = user + @targets = targets + @scene = scene + @viewport = @scene.viewport + @sprites = @scene.sprites + initialize_battler_sprite_names + initialize_battler_coordinates + @looping = false + @slowdown = 1 + @timer_start = nil + @anim_sprites = [] # Each is a ParticleSprite + @spawner_sprites = [] + @duration = total_duration + end + + # Doesn't actually create any sprites; just gathers them into a more useful array + def initialize_battler_sprite_names + @battler_sprites = [] + if @user + pkmn = @user.pokemon + @battler_sprites[@user.index] = [] + @battler_sprites[@user.index].push(GameData::Species.front_sprite_filename( + pkmn.species, pkmn.form, pkmn.gender)) + @battler_sprites[@user.index].push(GameData::Species.back_sprite_filename( + pkmn.species, pkmn.form, pkmn.gender)) + end + if @targets + @targets.each do |target| + pkmn = target.pokemon + @battler_sprites[target.index] = [] + @battler_sprites[target.index].push(GameData::Species.front_sprite_filename( + pkmn.species, pkmn.form, pkmn.gender)) + @battler_sprites[target.index].push(GameData::Species.back_sprite_filename( + pkmn.species, pkmn.form, pkmn.gender)) + end + end + end + + def initialize_battler_coordinates + @user_coords = nil + if @user + sprite = @sprites["pokemon_#{@user.index}"] + @user_coords = [sprite.x, sprite.y - (sprite.bitmap.height / 2)] + end + @target_coords = [] + if @targets + @targets.each do |target| + sprite = @sprites["pokemon_#{target.index}"] + @target_coords[target.index] = [sprite.x, sprite.y - (sprite.bitmap.height / 2)] + end + end + end + + def dispose + @anim_sprites.each { |particle| particle.dispose } + @anim_sprites.clear + end + + #----------------------------------------------------------------------------- + + def particles + return (@animation.is_a?(GameData::Animation)) ? @animation.particles : @animation[:particles] + end + + # Return value is in seconds. + def total_duration + ret = AnimationPlayer::Helper.get_duration(particles) / 20.0 + ret *= slowdown + return ret + end + + #----------------------------------------------------------------------------- + + def set_up_particle(particle, target_idx = -1, instance = 0) + particle_sprite = AnimationPlayer::ParticleSprite.new + # Get/create a sprite + sprite = nil + case particle[:name] + when "User" + sprite = @sprites["pokemon_#{@user.index}"] + particle_sprite.set_as_battler_sprite + when "Target" + sprite = @sprites["pokemon_#{target_idx}"] + particle_sprite.set_as_battler_sprite + when "SE" + # Intentionally no sprite created + else + sprite = Sprite.new(@viewport) + end + particle_sprite.sprite = sprite if sprite + # Set sprite's graphic and ox/oy + if sprite + AnimationPlayer::Helper.set_bitmap_and_origin(particle, sprite, @user&.index, target_idx, + @battler_sprites[@user&.index || -1], @battler_sprites[target_idx]) + end + # Calculate x/y/z focus values and additional x/y modifier and pass them all + # to particle_sprite + focus_xy = AnimationPlayer::Helper.get_xy_focus(particle, @user&.index, target_idx, + @user_coords, @target_coords[target_idx]) + offset_xy = AnimationPlayer::Helper.get_xy_offset(particle, sprite) + focus_z = AnimationPlayer::Helper.get_z_focus(particle, @user&.index, target_idx) + particle_sprite.focus_xy = focus_xy + particle_sprite.offset_xy = offset_xy + particle_sprite.focus_z = focus_z + # Set whether properties should be modified if the particle's target is on + # the opposing side + relative_to_index = -1 + if GameData::Animation::FOCUS_TYPES_WITH_USER.include?(particle[:focus]) + relative_to_index = @user.index + elsif GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(particle[:focus]) + relative_to_index = target_idx + end + if relative_to_index >= 0 && relative_to_index.odd? && particle[:focus] != :user_and_target + particle_sprite.foe_invert_x = particle[:foe_invert_x] + particle_sprite.foe_invert_y = particle[:foe_invert_y] + particle_sprite.foe_flip = particle[:foe_flip] + end + particle_sprite.base_angle = 0 + case particle[:angle_override] + when :initial_angle_to_focus + target_x = (focus_xy.length == 2) ? focus_xy[1][0] : focus_xy[0][0] + target_x += offset_xy[0] + target_y = (focus_xy.length == 2) ? focus_xy[1][1] : focus_xy[0][1] + target_y += offset_xy[1] + particle_sprite.base_angle = AnimationPlayer::Helper.initial_angle_between(particle, focus_xy, offset_xy) + when :always_point_at_focus + particle_sprite.angle_override = particle[:angle_override] if relative_to_index >= 0 + end + # Find earliest command and add a "make visible" command then + delay = AnimationPlayer::Helper.get_particle_delay(particle, instance) + if sprite && !particle_sprite.battler_sprite? + first_cmd = AnimationPlayer::Helper.get_first_command_frame(particle) + particle_sprite.add_set_process(:visible, (first_cmd + delay) * slowdown, true) if first_cmd >= 0 + # Apply random frame + if particle[:random_frame_max] && particle[:random_frame_max] > 0 + particle_sprite.add_set_process(:frame, (first_cmd + delay) * slowdown, rand(particle[:random_frame_max] + 1)) + end + end + # Add all commands + spawner_type = particle[:spawner] || :none + regular_properties_skipped = AnimationPlayer::Helper::PROPERTIES_SET_BY_SPAWNER[spawner_type] || [] + particle.each_pair do |property, cmds| + next if !cmds.is_a?(Array) || cmds.empty? + next if regular_properties_skipped.include?(property) + cmds.each do |cmd| + if cmd[1] == 0 + if sprite + particle_sprite.add_set_process(property, (cmd[0] + delay) * slowdown, cmd[2]) + else + # SE particle + filename = nil + case property + when :user_cry + filename = GameData::Species.cry_filename_from_pokemon(@user.pokemon) if @user + when :target_cry + # NOTE: If there are multiple targets, only the first one's cry + # will be played. + if @targets && !@targets.empty? + filename = GameData::Species.cry_filename_from_pokemon(@targets.first.pokemon) + end + else + filename = "Anim/" + cmd[2] + end + particle_sprite.add_set_process(property, (cmd[0] + delay) * slowdown, [filename, cmd[3], cmd[4]]) if filename + end + else + particle_sprite.add_move_process(property, (cmd[0] + delay) * slowdown, cmd[1] * slowdown, cmd[2], cmd[3] || :linear) + end + end + end + # 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, 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 + case spawner_type + 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| + 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 [: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) + else + particle_sprite.add_move_process(:y, + (life_start + delay) * slowdown, lifetime * slowdown, + start_y + (start_y_speed * lifetime / 20.0), :linear) + end + end + end + + # Creates sprites and ParticleSprites, and sets sprite properties that won't + # change during the animation. + def set_up + particles.each do |particle| + qty = 1 + qty = particle[:spawn_quantity] || 1 if particle[:spawner] && particle[:spawner] != :none + qty.times do |i| + if GameData::Animation::FOCUS_TYPES_WITH_TARGET.include?(particle[:focus]) && @targets + one_per_side = [:target_side_foreground, :target_side_background].include?(particle[:focus]) + sides_covered = [] + @targets.each do |target| + next if one_per_side && sides_covered.include?(target.index % 2) + set_up_particle(particle, target.index, i) + sides_covered.push(target.index % 2) + end + else + set_up_particle(particle, -1, i) + end + end + end + reset_anim_sprites + end + + # Sets the initial properties of all sprites, and marks all processes as not + # 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 + + #----------------------------------------------------------------------------- + + def start + @timer_start = System.uptime + end + + def playing? + return !@timer_start.nil? + end + + def finish + @timer_start = nil + @finished = true + end + + def finished? + return @finished + end + + def can_continue_battle? + return finished? + end + + #----------------------------------------------------------------------------- + + def update + return if !playing? + if @need_reset + reset_anim_sprites + start + @need_reset = false + end + time_now = System.uptime + elapsed = time_now - @timer_start + # Update all particles/sprites + @anim_sprites.each { |particle| particle.update(elapsed) } + # Finish or loop the animation + if elapsed >= @duration * @slowdown + if looping + @need_reset = true + else + finish + end + end + end +end diff --git a/Data/Scripts/905_Anim player/002_ParticleSprite.rb b/Data/Scripts/905_Anim player/002_ParticleSprite.rb new file mode 100644 index 000000000..4dd90206f --- /dev/null +++ b/Data/Scripts/905_Anim player/002_ParticleSprite.rb @@ -0,0 +1,176 @@ +#=============================================================================== +# NOTE: This assumes that processes are added (for a given property) in the +# order they happen. +#=============================================================================== +class AnimationPlayer::ParticleSprite + attr_accessor :sprite + attr_accessor :focus_xy, :offset_xy, :focus_z + attr_accessor :base_angle, :angle_override + attr_accessor :foe_invert_x, :foe_invert_y, :foe_flip + + FRAMES_PER_SECOND = 20.0 + + def initialize + @processes = [] + @sprite = nil + @battler_sprite = false + initialize_values + end + + def initialize_values + @values = GameData::Animation::PARTICLE_KEYFRAME_DEFAULT_VALUES.clone + end + + def dispose + return if battler_sprite? || !@sprite || @sprite.disposed? + @sprite.bitmap&.dispose + @sprite.dispose + end + + #----------------------------------------------------------------------------- + + def set_as_battler_sprite + @battler_sprite = true + @values[:visible] = true + end + + def battler_sprite? + return @battler_sprite + end + + #----------------------------------------------------------------------------- + + def add_set_process(property, frame, value) + add_move_process(property, frame, 0, value, :none) + end + + def add_move_process(property, start_frame, duration, value, interpolation = :linear) + # First nil is progress (nil = not started, true = running, false = finished) + # Second nil is start value (set when the process starts running) + @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 + set_as_battler_sprite if battler_sprite? # Start battler sprites as visible + @values.each_pair { |property, value| update_sprite_property(property, value) } + @processes.each { |process| process[5] = nil } + end + + #----------------------------------------------------------------------------- + + def start_process(process) + return if !process[5].nil? + process[6] = @values[process[0]] + process[5] = true + end + + def update_process_value(process, elapsed_time) + # SetXYZ + if process[2] == 0 + @values[process[0]] = process[3] + process[5] = false # Mark process as finished + return + end + # MoveXYZ + @values[process[0]] = AnimationPlayer::Helper.interpolate( + process[4], process[6], process[3], process[2] / FRAMES_PER_SECOND, + process[1] / FRAMES_PER_SECOND, elapsed_time + ) + if elapsed_time >= (process[1] + process[2]) / FRAMES_PER_SECOND + process[5] = false # Mark process as finished + end + end + + def update_sprite(changed_properties) + changed_properties.uniq! + changed_properties.each do |property| + update_sprite_property(property, @values[property]) + end + end + + def update_sprite_property(property, value) + if !@sprite + pbSEPlay(*value) if [:se, :user_cry, :target_cry].include?(property) && value + return + end + case property + when :frame then @sprite.src_rect.x = value.floor * @sprite.src_rect.width + when :blending then @sprite.blend_type = value + when :flip + @sprite.mirror = value + @sprite.mirror = !@sprite.mirror if @foe_flip + when :x + value = value.round + value *= -1 if @foe_invert_x + AnimationPlayer::Helper.apply_xy_focus_to_sprite(@sprite, :x, value, @focus_xy) + @sprite.x += @offset_xy[0] + update_angle_pointing_at_focus + when :y + value = value.round + value *= -1 if @foe_invert_y + AnimationPlayer::Helper.apply_xy_focus_to_sprite(@sprite, :y, value, @focus_xy) + @sprite.y += @offset_xy[1] + update_angle_pointing_at_focus + when :z + AnimationPlayer::Helper.apply_z_focus_to_sprite(@sprite, value, @focus_z) + when :zoom_x then @sprite.zoom_x = value / 100.0 + when :zoom_y then @sprite.zoom_y = value / 100.0 + when :angle + if @angle_override == :always_point_at_focus + update_angle_pointing_at_focus + @sprite.angle += value + else + @sprite.angle = value + (@base_angle || 0) + end + when :visible then @sprite.visible = value + when :opacity then @sprite.opacity = value + when :color_red then @sprite.color.red = value + when :color_green then @sprite.color.green = value + when :color_blue then @sprite.color.blue = value + when :color_alpha then @sprite.color.alpha = value + when :tone_red then @sprite.tone.red = value + when :tone_green then @sprite.tone.green = value + when :tone_blue then @sprite.tone.blue = value + when :tone_gray then @sprite.tone.gray = value + end + end + + # This assumes vertically up is an angle of 0, and the angle increases + # anticlockwise. + def update_angle_pointing_at_focus + return if @angle_override != :always_point_at_focus + # Get coordinates + sprite_x = @sprite.x + sprite_y = @sprite.y + target_x = (@focus_xy.length == 2) ? @focus_xy[1][0] : @focus_xy[0][0] + target_x += @offset_xy[0] + target_y = (@focus_xy.length == 2) ? @focus_xy[1][1] : @focus_xy[0][1] + target_y += @offset_xy[1] + @sprite.angle = AnimationPlayer::Helper.angle_between(sprite_x, sprite_y, target_x, target_y) + @sprite.angle += (@base_angle || 0) + end + + def update(elapsed_time) + frame = (elapsed_time * FRAMES_PER_SECOND).floor + changed_properties = [] + @processes.each do |process| + # Skip processes that aren't due to start yet + next if process[1] > frame + # Skip processes that have already fully happened + next if process[5] == false + # Mark process as running if it isn't already + start_process(process) + # Update process's value + update_process_value(process, elapsed_time) + changed_properties.push(process[0]) # Record property as having changed + end + # Apply changed values to sprite + update_sprite(changed_properties) if !changed_properties.empty? + end +end diff --git a/Data/Scripts/905_Anim player/003_AnimPlayerHelper.rb b/Data/Scripts/905_Anim player/003_AnimPlayerHelper.rb new file mode 100644 index 000000000..3c2f2854b --- /dev/null +++ b/Data/Scripts/905_Anim player/003_AnimPlayerHelper.rb @@ -0,0 +1,297 @@ +#=============================================================================== +# Methods used by both AnimationPlayer and AnimationEditor::Canvas. +#=============================================================================== +module AnimationPlayer::Helper + PROPERTIES_SET_BY_SPAWNER = { + :random_direction => [:x, :y], + :random_direction_gravity => [:x, :y], + :random_up_direction_gravity => [:x, :y] + } + GRAVITY_STRENGTH = 500 + BATTLE_MESSAGE_BAR_HEIGHT = 96 # NOTE: You shouldn't need to change this. + + module_function + + # Returns the duration of the animation in frames (1/20ths of a second). + def get_duration(particles) + ret = 0 + particles.each do |particle| + 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 + return ret + end + + # Returns the frame that the particle has its earliest command. + def get_first_command_frame(particle) + ret = -1 + particle.each_pair do |property, cmds| + next if !cmds.is_a?(Array) || cmds.empty? + cmds.each do |cmd| + ret = cmd[0] if ret < 0 || ret > cmd[0] + end + end + return (ret >= 0) ? ret : 0 + end + + # Returns the frame that the particle has (the end of) its latest command. + def get_last_command_frame(particle) + ret = -1 + particle.each_pair do |property, cmds| + next if !cmds.is_a?(Array) || cmds.empty? + cmds.each do |cmd| + ret = cmd[0] + cmd[1] if ret < cmd[0] + cmd[1] + end + end + return ret + end + + # For spawner particles + def get_particle_delay(particle, instance) + case particle[:spawner] || :none + when :random_direction, :random_direction_gravity, :random_up_direction_gravity + return instance / 4 + end + return 0 + end + + #----------------------------------------------------------------------------- + + def get_xy_focus(particle, user_index, target_index, user_coords, target_coords) + ret = nil + case particle[:focus] + when :foreground, :midground, :background + when :user + ret = [user_coords.clone] + when :target + ret = [target_coords.clone] + when :user_and_target + ret = [user_coords.clone, target_coords.clone] + when :user_side_foreground, :user_side_background + ret = [Battle::Scene.pbBattlerPosition(user_index)] + when :target_side_foreground, :target_side_background + ret = [Battle::Scene.pbBattlerPosition(target_index)] + end + return ret + end + + def get_xy_offset(particle, sprite) + ret = [0, 0] + case particle[:graphic] + when "USER", "USER_OPP", "USER_FRONT", "USER_BACK", + "TARGET", "TARGET_OPP", "TARGET_FRONT", "TARGET_BACK" + ret[1] += sprite.bitmap.height / 2 if sprite + end + return ret + end + + # property is :x or :y. + def apply_xy_focus_to_sprite(sprite, property, value, focus) + result = value + coord_idx = (property == :x) ? 0 : 1 + if focus + if focus.length == 2 + distance = GameData::Animation::USER_AND_TARGET_SEPARATION + result = focus[0][coord_idx] + ((value.to_f / distance[coord_idx]) * (focus[1][coord_idx] - focus[0][coord_idx])).to_i + else + result = value + focus[0][coord_idx] + end + end + case property + when :x then sprite.x = result + when :y then sprite.y = result + end + end + + #----------------------------------------------------------------------------- + + # Returns either a number or an array of two numbers. + def get_z_focus(particle, user_index, target_index) + ret = 0 + case particle[:focus] + when :foreground + ret = 2000 + when :midground + ret = 1000 + when :background + # NOTE: No change. + when :user + ret = 1000 + ((100 * ((user_index / 2) + 1)) * (user_index.even? ? 1 : -1)) + when :target + ret = 1000 + ((100 * ((target_index / 2) + 1)) * (target_index.even? ? 1 : -1)) + when :user_and_target + user_pos = 1000 + ((100 * ((user_index / 2) + 1)) * (user_index.even? ? 1 : -1)) + target_pos = 1000 + ((100 * ((target_index / 2) + 1)) * (target_index.even? ? 1 : -1)) + ret = [user_pos, target_pos] + when :user_side_foreground, :target_side_foreground + this_idx = (particle[:focus] == :user_side_foreground) ? user_index : target_index + ret = 1000 + ret += 1000 if this_idx.even? # On player's side + when :user_side_background, :target_side_background + this_idx = (particle[:focus] == :user_side_background) ? user_index : target_index + ret = 1000 if this_idx.even? # On player's side + end + return ret + end + + def apply_z_focus_to_sprite(sprite, z, focus) + if focus.is_a?(Array) + distance = GameData::Animation::USER_AND_TARGET_SEPARATION[2] + if z >= 0 + if focus[0] > focus[1] + sprite.z = focus[0] + z + else + sprite.z = focus[0] - z + end + elsif z <= distance + if focus[0] > focus[1] + sprite.z = focus[1] + z + distance + else + sprite.z = focus[1] - z + distance + end + else + sprite.z = focus[0] + ((z.to_f / distance) * (focus[1] - focus[0])).to_i + end + elsif focus + sprite.z = z + focus + else + sprite.z = z + end + end + + #----------------------------------------------------------------------------- + + def angle_between(x1, y1, x2, y2) + diff_x = x1 - x2 + diff_y = y1 - y2 + ret = Math.atan(diff_x.to_f / diff_y) * 180 / Math::PI + ret += 180 if diff_y < 0 + return ret + end + + def initial_angle_between(particle, focus, offset) + x1 = 0 + y1 = 0 + x2 = (focus.length == 2) ? focus[1][0] : focus[0][0] + y2 = (focus.length == 2) ? focus[1][1] : focus[0][1] + [:x, :y].each do |property| + next if !particle[property] + particle[property].each do |cmd| + break if cmd[1] > 0 + if property == :x + x1 = cmd[2] + else + y1 = cmd[2] + end + break + end + end + if focus + if focus.length == 2 + distance = GameData::Animation::USER_AND_TARGET_SEPARATION + x1 = focus[0][0] + ((x1.to_f / distance[0]) * (focus[1][0] - focus[0][0])).to_i + y1 = focus[0][1] + ((y1.to_f / distance[1]) * (focus[1][1] - focus[0][1])).to_i + else + x1 += focus[0][0] + y1 += focus[0][1] + end + end + x1 += offset[0] + y1 += offset[1] + return angle_between(x1, y1, x2, y2) + end + + #----------------------------------------------------------------------------- + + # user_sprites, target_sprites = [front sprite, back sprite] + def set_bitmap_and_origin(particle, sprite, user_index, target_index, user_sprites, target_sprites) + return if sprite&.is_a?(Battle::Scene::BattlerSprite) + case particle[:graphic] + when "USER", "USER_OPP", "USER_FRONT", "USER_BACK", + "TARGET", "TARGET_OPP", "TARGET_FRONT", "TARGET_BACK" + filename = nil + case particle[:graphic] + when "USER" + filename = (user_index.even?) ? user_sprites[1] : user_sprites[0] + when "USER_OPP" + filename = (user_index.even?) ? user_sprites[0] : user_sprites[1] + when "USER_FRONT" + filename = user_sprites[0] + when "USER_BACK" + filename = user_sprites[1] + when "TARGET" + filename = (target_index.even?) ? target_sprites[1] : target_sprites[0] + when "TARGET_OPP" + filename = (target_index.even?) ? target_sprites[0] : target_sprites[1] + when "TARGET_FRONT" + filename = target_sprites[0] + when "TARGET_BACK" + filename = target_sprites[1] + end + sprite.bitmap = RPG::Cache.load_bitmap("", filename) + sprite.ox = sprite.bitmap.width / 2 + sprite.oy = sprite.bitmap.height + else + sprite.bitmap = RPG::Cache.load_bitmap("Graphics/Battle animations/", particle[:graphic]) + sprite.src_rect.set(0, 0, sprite.bitmap.width, sprite.bitmap.height) + if [:foreground, :midground, :background].include?(particle[:focus]) && + sprite.bitmap.width >= Settings::SCREEN_WIDTH && + sprite.bitmap.height >= Settings::SCREEN_HEIGHT - BATTLE_MESSAGE_BAR_HEIGHT + sprite.ox = 0 + sprite.oy = 0 + elsif sprite.bitmap.width > sprite.bitmap.height * 2 + sprite.src_rect.set(0, 0, sprite.bitmap.height, sprite.bitmap.height) + sprite.ox = sprite.bitmap.height / 2 + sprite.oy = sprite.bitmap.height / 2 + else + sprite.ox = sprite.bitmap.width / 2 + sprite.oy = sprite.bitmap.height / 2 + end + if particle[:graphic][/\[\s*bottom\s*\]\s*$/i] # [bottom] at end of filename + sprite.oy = sprite.bitmap.height + end + end + end + + #----------------------------------------------------------------------------- + + def interpolate(interpolation, start_val, end_val, duration, start_time, now) + case interpolation + when :linear + return lerp(start_val, end_val, duration, start_time, now).to_i + when :ease_in # Quadratic + ret = start_val + x = (now - start_time) / duration.to_f + ret += (end_val - start_val) * x * x + return ret.round + when :ease_out # Quadratic + ret = start_val + x = (now - start_time) / duration.to_f + ret += (end_val - start_val) * (1 - ((1 - x) * (1 - x))) + return ret.round + when :ease_both # Quadratic + ret = start_val + x = (now - start_time) / duration.to_f + if x < 0.5 + ret += (end_val - start_val) * x * x * 2 + else + ret += (end_val - start_val) * (1 - (((-2 * x) + 2) * ((-2 * x) + 2) / 2)) + end + return ret.round + when :gravity # Used by particle spawner + # end_val is [initial speed, gravity] + # s = ut + 1/2 at^2 + t = now - start_time + ret = start_val + (end_val[0] * t) + (end_val[1] * t * t / 2) + return ret.round + end + raise _INTL("Unknown interpolation method {1}.", interpolation) + end +end diff --git a/Data/Scripts/905_Anim player/010_Battle code.rb b/Data/Scripts/905_Anim player/010_Battle code.rb new file mode 100644 index 000000000..31d67971e --- /dev/null +++ b/Data/Scripts/905_Anim player/010_Battle code.rb @@ -0,0 +1,191 @@ +#=============================================================================== +# +#=============================================================================== +class Battle::Scene + ANIMATION_DEFAULTS = [:TACKLE, :DEFENSECURL] # With target, without target + ANIMATION_DEFAULTS_FOR_TYPE_CATEGORY = { + :NORMAL => [:TACKLE, :SONICBOOM, :DEFENSECURL, :BODYSLAM, nil, :TAILWHIP], + :FIGHTING => [:MACHPUNCH, :AURASPHERE, :BULKUP, nil, nil, nil], + :FLYING => [:WINGATTACK, :GUST, :ROOST, nil, :AIRCUTTER, :FEATHERDANCE], + :POISON => [:POISONSTING, :SLUDGE, :ACIDARMOR, nil, :ACID, :POISONPOWDER], + :GROUND => [:SANDTOMB, :MUDSLAP, :MUDSPORT, :EARTHQUAKE, :EARTHPOWER, :SANDATTACK], + :ROCK => [:ROCKTHROW, :POWERGEM, :ROCKPOLISH, :ROCKSLIDE, nil, :SANDSTORM], + :BUG => [:TWINEEDLE, :BUGBUZZ, :QUIVERDANCE, nil, :STRUGGLEBUG, :STRINGSHOT], + :GHOST => [:ASTONISH, :SHADOWBALL, :GRUDGE, nil, nil, :CONFUSERAY], + :STEEL => [:IRONHEAD, :MIRRORSHOT, :IRONDEFENSE, nil, nil, :METALSOUND], + :FIRE => [:FIREPUNCH, :EMBER, :SUNNYDAY, nil, :INCINERATE, :WILLOWISP], + :WATER => [:CRABHAMMER, :WATERGUN, :AQUARING, nil, :SURF, :WATERSPORT], + :GRASS => [:VINEWHIP, :RAZORLEAF, :COTTONGUARD, nil, nil, :SPORE], + :ELECTRIC => [:THUNDERPUNCH, :THUNDERSHOCK, :CHARGE, nil, :DISCHARGE, :THUNDERWAVE], + :PSYCHIC => [:ZENHEADBUTT, :CONFUSION, :CALMMIND, nil, :SYNCHRONOISE, :MIRACLEEYE], + :ICE => [:ICEPUNCH, :ICEBEAM, :MIST, :AVALANCHE, :POWDERSNOW, :HAIL], + :DRAGON => [:DRAGONCLAW, :DRAGONRAGE, :DRAGONDANCE, nil, :TWISTER, nil], + :DARK => [:KNOCKOFF, :DARKPULSE, :HONECLAWS, nil, :SNARL, :EMBARGO], + :FAIRY => [:TACKLE, :FAIRYWIND, :MOONLIGHT, nil, :DAZZLINGGLEAM, :SWEETKISS] + } + + #----------------------------------------------------------------------------- + + def pbAnimation(move_id, user, targets, version = 0) + anims = find_move_animation(move_id, version, user&.index) + return if !anims || anims.empty? + if anims[0].is_a?(GameData::Animation) # New animation + pbSaveShadows do + # NOTE: anims.sample is a random valid animation. + play_better_animation(anims.sample, user, targets) + end + else # Old animation + anim = anims[0] + target = (targets.is_a?(Array)) ? targets[0] : targets + animations = pbLoadBattleAnimations + return if !animations + pbSaveShadows do + if anims[1] # On opposing side and using OppMove animation + pbAnimationCore(animations[anim], target, user, true) + else # On player's side, and/or using Move animation + pbAnimationCore(animations[anim], user, target) + end + end + end + end + + alias __newanims__pbCommonAnimation pbCommonAnimation unless method_defined?(:__newanims__pbCommonAnimation) + def pbCommonAnimation(anim_name, user = nil, target = nil) + return if nil_or_empty?(anim_name) + anims = try_get_better_common_animation(anim_name, user.index) + if anims + # NOTE: anims.sample is a random valid animation. + play_better_animation(anims.sample, user, target) + else + __newanims__pbCommonAnimation(anim_name, user, target) + end + end + + #----------------------------------------------------------------------------- + + # Returns an array of GameData::Animation if a new animation(s) is found. + # Return [animation index, shouldn't be flipped] if an old animation is found. + def find_move_animation(move_id, version, user_index) + # Get animation + anims = find_move_animation_for_move(move_id, version, user_index) + return anims if anims + # Get information to decide which default animation to try + move_data = GameData::Move.get(move_id) + target_data = GameData::Target.get(move_data.target) + move_type = move_data.type + default_idx = move_data.category + default_idx += 3 if target_data.num_targets > 1 || + (target_data.num_targets > 0 && move_data.status?) + # Check for a default animation + wanted_move = ANIMATION_DEFAULTS_FOR_TYPE_CATEGORY[move_type][default_idx] + anims = find_move_animation_for_move(wanted_move, 0, user_index) + return anims if anims + if default_idx >= 3 + wanted_move = ANIMATION_DEFAULTS_FOR_TYPE_CATEGORY[move_type][default_idx - 3] + anims = find_move_animation_for_move(wanted_move, 0, user_index) + return anims if anims + return nil if ANIMATION_DEFAULTS.include?(wanted_move) # No need to check for these animations twice + end + # Use Tackle or Defense Curl's animation + if target_data.num_targets == 0 && target.data.id != :None + return find_move_animation_for_move(ANIMATION_DEFAULTS[1], 0, user_index) + end + return find_move_animation_for_move(ANIMATION_DEFAULTS[0], 0, user_index) + end + + # Find an animation(s) for the given move_id. + def find_move_animation_for_move(move_id, version, user_index) + # Find new animation + anims = try_get_better_move_animation(move_id, version, user_index) + return anims if anims + if version > 0 + anims = try_get_better_move_animation(move_id, 0, user_index) + return anims if anims + end + # Find old animation + anim = pbFindMoveAnimDetails(pbLoadMoveToAnim, move_id, user_index, version) + return anim + end + + # Finds a new animation for the given move_id and version. Prefers opposing + # animations if the user is opposing. Can return multiple animations. + def try_get_better_move_animation(move_id, version, user_index) + ret = [] + backup_ret = [] + GameData::Animation.each do |anim| + next if !anim.move_animation? || anim.ignore + next if anim.move != move_id.to_s + next if anim.version != version + if !user_index + ret.push(anim) + next + end + if user_index.even? # User is on player's side + ret.push(anim) if !anim.opposing_animation? + else # User is on opposing side + (anim.opposing_animation?) ? ret.push(anim) : backup_ret.push(anim) + end + end + return ret if !ret.empty? + return backup_ret if !backup_ret.empty? + return nil + end + + def try_get_better_common_animation(anim_name, user_index) + ret = [] + backup_ret = [] + GameData::Animation.each do |anim| + next if !anim.common_animation? || anim.ignore + next if anim.move != anim_name + if !user_index + ret.push(anim) + next + end + if user_index.even? # User is on player's side + ret.push(anim) if !anim.opposing_animation? + else # User is on opposing side + (anim.opposing_animation?) ? ret.push(anim) : backup_ret.push(anim) + end + end + return ret if !ret.empty? + return backup_ret if !backup_ret.empty? + return nil + end + + #----------------------------------------------------------------------------- + + def play_better_animation(anim_data, user, targets) + return if !anim_data + @briefMessage = false + # Memorize old battler coordinates, to be reset after the animation + old_battler_coords = [] + if user + sprite = @sprites["pokemon_#{user.index}"] + old_battler_coords[user.index] = [sprite.x, sprite.y] + end + if targets + targets.each do |target| + sprite = @sprites["pokemon_#{target.index}"] + old_battler_coords[target.index] = [sprite.x, sprite.y] + end + end + # Create animation player + anim_player = AnimationPlayer.new(anim_data, user, targets, self) + anim_player.set_up + # Play animation + anim_player.start + loop do + pbUpdate + anim_player.update + break if anim_player.can_continue_battle? + end + anim_player.dispose + # Restore old battler coordinates + old_battler_coords.each_with_index do |values, i| + next if !values + sprite = @sprites["pokemon_#{i}"] + sprite.x = values[0] + sprite.y = values[1] + end + end +end diff --git a/Data/Scripts/905_Anim player/011_Battle z modifiers.rb b/Data/Scripts/905_Anim player/011_Battle z modifiers.rb new file mode 100644 index 000000000..e1da105c7 --- /dev/null +++ b/Data/Scripts/905_Anim player/011_Battle z modifiers.rb @@ -0,0 +1,590 @@ +#=============================================================================== +# +#=============================================================================== +class Battle::Scene + alias __newanims__pbCreateBackdropSprites pbCreateBackdropSprites unless method_defined?(:__newanims__pbCreateBackdropSprites) + def pbCreateBackdropSprites + __newanims__pbCreateBackdropSprites + ["battle_bg", "battle_bg2"].each { |spr| @sprites[spr].z = -200 } + 2.times do |side| + @sprites["base_#{side}"].z = -199 + end + @sprites["cmdBar_bg"].z += 9999 + end + + alias __newanims__pbInitSprites pbInitSprites unless method_defined?(:__newanims__pbInitSprites) + def pbInitSprites + __newanims__pbInitSprites + @sprites["messageBox"].z += 9999 + @sprites["messageWindow"].z += 9999 + @sprites["commandWindow"].z += 9999 + @sprites["fightWindow"].z += 9999 + @sprites["targetWindow"].z += 9999 + 2.times do |side| + @sprites["partyBar_#{side}"].z += 9999 + NUM_BALLS.times do |i| + @sprites["partyBall_#{side}_#{i}"].z += 9999 + end + # Ability splash bars + @sprites["abilityBar_#{side}"].z += 9999 if USE_ABILITY_SPLASH + end + @battle.battlers.each_with_index do |b, i| + @sprites["dataBox_#{i}"].z += 9999 if b + end + @battle.player.each_with_index do |p, i| + @sprites["player_#{i + 1}"].z = 1500 + (i * 100) + end + if @battle.trainerBattle? + @battle.opponent.each_with_index do |p, i| + @sprites["trainer_#{i + 1}"].z = 500 - (i * 100) + end + end + end +end + +#=============================================================================== +# Pokémon sprite (used in battle) +#=============================================================================== +class Battle::Scene::BattlerSprite < RPG::Sprite + def pbSetPosition + return if !@_iconBitmap + pbSetOrigin + if @index.even? + self.z = 1100 + (100 * @index / 2) + else + self.z = 1000 - (100 * (@index + 1) / 2) + end + # Set original position + p = Battle::Scene.pbBattlerPosition(@index, @sideSize) + @spriteX = p[0] + @spriteY = p[1] + # Apply metrics + @pkmn.species_data.apply_metrics_to_sprite(self, @index) + end +end + +#=============================================================================== +# Shadow sprite for Pokémon (used in battle) +#=============================================================================== +class Battle::Scene::BattlerShadowSprite < RPG::Sprite + def pbSetPosition + return if !@_iconBitmap + pbSetOrigin + self.z = -198 + # Set original position + p = Battle::Scene.pbBattlerPosition(@index, @sideSize) + self.x = p[0] + self.y = p[1] + # Apply metrics + @pkmn.species_data.apply_metrics_to_sprite(self, @index, true) + end +end + +#=============================================================================== +# Mixin module for certain hardcoded battle animations that involve Poké Balls. +#=============================================================================== +module Battle::Scene::Animation::BallAnimationMixin + # The regular Poké Ball burst animation, for when a Pokémon appears from a + # Poké Ball. + def ballBurst(delay, ball, ballX, ballY, poke_ball) + num_particles = 15 + num_rays = 10 + glare_fade_duration = 8 # Lifetimes/durations are in 20ths of a second + particle_lifetime = 15 + particle_fade_duration = 8 + ray_lifetime = 13 + ray_fade_duration = 5 + ray_min_radius = 24 # How far out from the center a ray starts + cherish_ball_ray_tones = [Tone.new(-104, -144, -8), # Indigo + Tone.new(-64, -144, -24), # Purple + Tone.new(-8, -144, -64), # Pink + Tone.new(-8, -48, -152), # Orange + Tone.new(-8, -32, -160)] # Yellow + # Get array of things that vary for each kind of Poké Ball + variances = BALL_BURST_VARIANCES[poke_ball] || BALL_BURST_VARIANCES[:POKEBALL] + # Set up glare particles + glare1 = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_#{variances[11]}", PictureOrigin::CENTER) + glare2 = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_#{variances[8]}", PictureOrigin::CENTER) + [glare1, glare2].each_with_index do |particle, num| + particle.setZ(0, 5105 + num) + particle.setZoom(0, 0) + particle.setTone(0, variances[12 - (3 * num)]) + particle.setVisible(0, false) + end + [glare1, glare2].each_with_index do |particle, num| + particle.moveTone(delay + glare_fade_duration + 3, glare_fade_duration / 2, variances[13 - (3 * num)]) + end + # Animate glare particles + [glare1, glare2].each { |p| p.setVisible(delay, true) } + if poke_ball == :MASTERBALL + glare1.moveAngle(delay, 19, -135) + glare1.moveZoom(delay, glare_fade_duration, 250) + elsif poke_ball == :DUSKBALL + glare1.moveAngle(delay, 19, -270) + elsif ["whirl"].include?(variances[11]) + glare1.moveZoom(delay, glare_fade_duration, 200) + else + glare1.moveZoom(delay, glare_fade_duration, (["dazzle", "ring3", "web"].include?(variances[11])) ? 100 : 250) + end + glare1.moveOpacity(delay + glare_fade_duration + 3, glare_fade_duration, 0) + if poke_ball == :MASTERBALL + glare2.moveAngle(delay, 19, -135) + glare2.moveZoom(delay, glare_fade_duration, 200) + else + glare2.moveZoom(delay, glare_fade_duration, (["dazzle", "ring3", "web"].include?(variances[8])) ? 125 : 200) + end + glare2.moveOpacity(delay + glare_fade_duration + 3, glare_fade_duration - 2, 0) + [glare1, glare2].each { |p| p.setVisible(delay + 19, false) } + # Rays + num_rays.times do |i| + # Set up ray + angle = rand(360) + radian = (angle + 90) * Math::PI / 180 + start_zoom = rand(50...100) + ray = addNewSprite(ballX + (ray_min_radius * Math.cos(radian)), + ballY - (ray_min_radius * Math.sin(radian)), + "Graphics/Battle animations/ballBurst_ray", PictureOrigin::BOTTOM) + ray.setZ(0, 5100) + ray.setZoomXY(0, 200, start_zoom) + ray.setTone(0, variances[0]) if poke_ball != :CHERISHBALL + ray.setOpacity(0, 0) + ray.setVisible(0, false) + ray.setAngle(0, angle) + # Animate ray + start = delay + (i / 2) + ray.setVisible(start, true) + ray.moveZoomXY(start, ray_lifetime, 200, start_zoom * 6) + ray.moveOpacity(start, 2, 255) # Quickly fade in + ray.moveOpacity(start + ray_lifetime - ray_fade_duration, ray_fade_duration, 0) # Fade out + if poke_ball == :CHERISHBALL + ray_lifetime.times do |frame| + ray.setTone(start + frame, cherish_ball_ray_tones[frame % cherish_ball_ray_tones.length]) + end + else + ray.moveTone(start + ray_lifetime - ray_fade_duration, ray_fade_duration, variances[1]) + end + ray.setVisible(start + ray_lifetime, false) + end + # Particles + num_particles.times do |i| + # Set up particles + particle1 = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_#{variances[5]}", PictureOrigin::CENTER) + particle2 = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_#{variances[2]}", PictureOrigin::CENTER) + [particle1, particle2].each_with_index do |particle, num| + particle.setZ(0, 5110 + num) + particle.setZoom(0, (80 - (num * 20)) / (["ring2"].include?(variances[5 - (3 * num)]) ? 2 : 1)) + particle.setTone(0, variances[6 - (3 * num)]) + particle.setVisible(0, false) + end + # Animate particles + start = delay + (i / 4) + max_radius = rand(256...384) + angle = rand(360) + radian = angle * Math::PI / 180 + [particle1, particle2].each_with_index do |particle, num| + particle.setVisible(start, true) + particle.moveDelta(start, particle_lifetime, max_radius * Math.cos(radian), max_radius * Math.sin(radian)) + particle.moveZoom(start, particle_lifetime, 10) + particle.moveTone(start + particle_lifetime - particle_fade_duration, + particle_fade_duration / 2, variances[7 - (3 * num)]) + particle.moveOpacity(start + particle_lifetime - particle_fade_duration, + particle_fade_duration, + 0) # Fade out at end + particle.setVisible(start + particle_lifetime, false) + end + end + end + + # The Poké Ball burst animation used when absorbing a wild Pokémon during a + # capture attempt. + def ballBurstCapture(delay, ball, ballX, ballY, poke_ball) + particle_duration = 10 + ring_duration = 5 + num_particles = 9 + base_angle = 270 + base_radius = (poke_ball == :MASTERBALL) ? 192 : 144 # How far out from the Poké Ball the particles go + # Get array of things that vary for each kind of Poké Ball + variances = BALL_BURST_CAPTURE_VARIANCES[poke_ball] || BALL_BURST_CAPTURE_VARIANCES[:POKEBALL] + # Set up glare particles + glare1 = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_#{variances[6]}", PictureOrigin::CENTER) + glare2 = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_#{variances[3]}", PictureOrigin::CENTER) + glare3 = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_#{variances[0]}", PictureOrigin::CENTER) + [glare1, glare2, glare3].each_with_index do |particle, num| + particle.setZ(0, 5100 + num) + particle.setZoom(0, 0) + particle.setTone(0, variances[7 - (3 * num)]) + particle.setVisible(0, false) + end + glare2.setOpacity(0, 160) + glare3.setOpacity(0, 160) if poke_ball != :DUSKBALL + # Animate glare particles + [glare1, glare2, glare3].each { |p| p.setVisible(delay, true) } + case poke_ball + when :MASTERBALL + glare1.moveZoom(delay, particle_duration, 1200) + when :DUSKBALL + glare1.moveZoom(delay, particle_duration, 350) + else + glare1.moveZoom(delay, particle_duration, 600) + end + glare1.moveOpacity(delay + (particle_duration / 2), particle_duration / 2, 0) + [glare1, glare2, glare3].each_with_index do |particle, num| + particle.moveTone(delay, particle_duration, variances[8 - (3 * num)]) + end + if poke_ball == :DUSKBALL + glare2.moveZoom(delay, particle_duration, 350) + glare3.moveZoom(delay, particle_duration, 500) + [glare2, glare3].each_with_index do |particle, num| + particle.moveOpacity(delay + (particle_duration / 2), particle_duration / 2, 0) + end + else + glare2.moveZoom(delay, particle_duration, (poke_ball == :MASTERBALL) ? 400 : 250) + glare2.moveOpacity(delay + (particle_duration / 2), particle_duration / 3, 0) + glare3.moveZoom(delay, particle_duration, (poke_ball == :MASTERBALL) ? 800 : 500) + glare3.moveOpacity(delay + (particle_duration / 2), particle_duration / 3, 0) + end + [glare1, glare2, glare3].each { |p| p.setVisible(delay + particle_duration, false) } + # Burst particles + num_particles.times do |i| + # Set up particle that keeps moving out + particle1 = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_particle", PictureOrigin::CENTER) + particle1.setZ(0, 5105) + particle1.setZoom(0, 150) + particle1.setOpacity(0, 160) + particle1.setVisible(0, false) + # Set up particles that curve back in + particle2 = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_#{variances[12]}", PictureOrigin::CENTER) + particle3 = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_#{variances[9]}", PictureOrigin::CENTER) + [particle2, particle3].each_with_index do |particle, num| + particle.setZ(0, 5110 + num) + particle.setZoom(0, (poke_ball == :NESTBALL) ? 50 : 0) + particle.setTone(0, variances[13 - (3 * num)]) + particle.setVisible(0, false) + particle.setAngle(0, rand(360)) if poke_ball == :PREMIERBALL + end + particle3.setOpacity(0, 128) if poke_ball == :DIVEBALL + # Particle animations + [particle1, particle2, particle3].each { |p| p.setVisible(delay, true) } + particle2.setVisible(delay, false) if poke_ball == :NESTBALL + start_angle = base_angle + (i * 360 / num_particles) + p1_x_offset = base_radius * Math.cos(start_angle * Math::PI / 180) + p1_y_offset = base_radius * Math.sin(start_angle * Math::PI / 180) + particle_duration.times do |j| + index = j + 1 + angle = start_angle + (index * (360 / num_particles) / particle_duration) + radian = angle * Math::PI / 180 + radius = base_radius + prop = index.to_f / (particle_duration / 2) + prop = 2 - prop if index > particle_duration / 2 + radius *= prop + particle1.moveXY(delay + j, 1, + ballX + (p1_x_offset * index * 2 / particle_duration), + ballY - (p1_y_offset * index * 2 / particle_duration)) + [particle2, particle3].each do |particle| + particle.moveXY(delay + j, 1, + ballX + (radius * Math.cos(radian)), + ballY - (radius * Math.sin(radian))) + end + end + particle1.moveZoom(delay, particle_duration, 0) + particle1.moveOpacity(delay, particle_duration, 0) + [particle2, particle3].each_with_index do |particle, num| + # Zoom in + if num == 0 && poke_ball == :MASTERBALL + particle.moveZoom(delay, particle_duration / 2, 225) + elsif num == 0 && poke_ball == :DIVEBALL + particle.moveZoom(delay, particle_duration / 2, 125) + elsif ["particle"].include?(variances[12 - (3 * num)]) + particle.moveZoom(delay, particle_duration / 2, (poke_ball == :PREMIERBALL) ? 50 : 80) + elsif ["ring3"].include?(variances[12 - (3 * num)]) + particle.moveZoom(delay, particle_duration / 2, 50) + elsif ["dazzle", "ring4", "diamond"].include?(variances[12 - (3 * num)]) + particle.moveZoom(delay, particle_duration / 2, 60) + else + particle.moveZoom(delay, particle_duration / 2, 100) + end + # Zoom out + if ["particle", "dazzle", "ring3", "ring4", "diamond"].include?(variances[12 - (3 * num)]) + particle.moveZoom(delay + (particle_duration * 2 / 3), particle_duration / 3, 10) + else + particle.moveZoom(delay + (particle_duration * 2 / 3), particle_duration / 3, 25) + end + # Rotate (for Premier Ball) + particle.moveAngle(delay, particle_duration, -180) if poke_ball == :PREMIERBALL + # Change tone, fade out + particle.moveTone(delay + (particle_duration / 3), (particle_duration.to_f / 3).ceil, variances[14 - (3 * num)]) + particle.moveOpacity(delay + particle_duration - 3, 3, 128) # Fade out at end + end + [particle1, particle2, particle3].each { |p| p.setVisible(delay + particle_duration, false) } + end + # Web sprite (for Net Ball) + if poke_ball == :NETBALL + web = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_web", PictureOrigin::CENTER) + web.setZ(0, 5123) + web.setZoom(0, 120) + web.setOpacity(0, 0) + web.setTone(0, Tone.new(-32, -32, -128)) + web.setVisible(0, false) + start = particle_duration / 2 + web.setVisible(delay + start, true) + web.moveOpacity(delay + start, 2, 160) + web_duration = particle_duration + ring_duration - (particle_duration / 2) + (web_duration / 4).times do |i| + web.moveZoom(delay + start + (i * 4), 2, 150) + web.moveZoom(delay + start + (i * 4) + 2, 2, 120) + end + now = start + ((web_duration / 4) * 4) + web.moveZoom(delay + now, particle_duration + ring_duration - now, 150) + web.moveOpacity(delay + particle_duration, ring_duration, 0) + web.setVisible(delay + particle_duration + ring_duration, false) + end + # Ring particle + ring = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_ring1", PictureOrigin::CENTER) + ring.setZ(0, 5110) + ring.setZoom(0, 0) + ring.setTone(0, variances[15]) + ring.setVisible(0, false) + # Ring particle animation + ring.setVisible(delay + particle_duration, true) + ring.moveZoom(delay + particle_duration - 2, ring_duration + 2, 125) # Start slightly early + ring.moveTone(delay + particle_duration, ring_duration, variances[16]) + ring.moveOpacity(delay + particle_duration, ring_duration, 0) + ring.setVisible(delay + particle_duration + ring_duration, false) + # Mark the end of the burst animation + ball.setDelta(delay + particle_duration + ring_duration, 0, 0) + end + + # The animation shown over a thrown Poké Ball when it has successfully caught + # a Pokémon. + def ballCaptureSuccess(ball, delay, ballX, ballY) + ball.setSE(delay, "Battle catch click") + ball.moveTone(delay, 4, Tone.new(-128, -128, -128)) # Ball goes darker + delay = ball.totalDuration + star_duration = 12 # In 20ths of a second + y_offsets = [[0, 74, 52], [0, 62, 28], [0, 74, 48]] + 3.times do |i| # Left, middle, right + # Set up particle + star = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_star", PictureOrigin::CENTER) + star.setZ(0, 5110) + star.setZoom(0, [50, 50, 33][i]) + start_angle = [0, 345, 15][i] + star.setAngle(0, start_angle) + star.setOpacity(0, 0) + star.setVisible(0, false) + # Particle animation + star.setVisible(delay, true) + y_pos = y_offsets[i] + star_duration.times do |j| + index = j + 1 + x = 72 * index / star_duration + proportion = index.to_f / star_duration + a = (2 * y_pos[2]) - (4 * y_pos[1]) + b = y_pos[2] - a + y = ((a * proportion) + b) * proportion + star.moveXY(delay + j, 1, ballX + ([-1, 0, 1][i] * x), ballY - y) + end + star.moveAngle(delay, star_duration, start_angle + [144, 0, 45][i]) if i.even? + star.moveOpacity(delay, 4, 255) # Fade in + star.moveTone(delay + 3, 3, Tone.new(0, 0, -96)) # Light yellow + star.moveTone(delay + 6, 3, Tone.new(0, 0, 0)) # White + star.moveOpacity(delay + 8, 4, 0) # Fade out + end + end + + # The Poké Ball burst animation used when recalling a Pokémon. In HGSS, this + # is the same for all types of Poké Ball except for the color that the battler + # turns - see def getBattlerColorFromPokeBall. + def ballBurstRecall(delay, ball, ballX, ballY, poke_ball) + color_duration = 10 # Change color of battler to a solid shade - see def battlerAbsorb + shrink_duration = 5 # Shrink battler into Poké Ball - see def battlerAbsorb + burst_duration = color_duration + shrink_duration + # Burst particles + num_particles = 5 + base_angle = 55 + base_radius = 64 # How far out from the Poké Ball the particles go + num_particles.times do |i| + # Set up particle + particle = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_particle", PictureOrigin::CENTER) + particle.setZ(0, 5110) + particle.setZoom(0, 150) + particle.setOpacity(0, 0) + particle.setVisible(0, false) + # Particle animation + particle.setVisible(delay, true) + particle.moveOpacity(delay, 2, 255) # Fade in quickly + burst_duration.times do |j| + angle = base_angle + (i * 360 / num_particles) + (135.0 * j / burst_duration) + radian = angle * Math::PI / 180 + radius = base_radius + if j < burst_duration / 5 + prop = j.to_f / (color_duration / 3) + radius *= 0.75 + (prop / 4) + elsif j >= burst_duration / 2 + prop = (j.to_f - (burst_duration / 2)) / (burst_duration / 2) + radius *= 1 - prop + end + if j == 0 + particle.setXY(delay + j, ballX + (radius * Math.cos(radian)), ballY - (radius * Math.sin(radian))) + else + particle.moveXY(delay + j, 1, ballX + (radius * Math.cos(radian)), ballY - (radius * Math.sin(radian))) + end + end + particle.moveZoom(delay, burst_duration, 0) + particle.moveTone(delay + (color_duration / 2), color_duration / 2, Tone.new(0, 0, -192)) # Yellow + particle.moveTone(delay + color_duration, shrink_duration, Tone.new(0, -128, -248)) # Dark orange + particle.moveOpacity(delay + color_duration, shrink_duration, 0) # Fade out at end + particle.setVisible(delay + burst_duration, false) + end + # Ring particles + ring1 = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_ring1", PictureOrigin::CENTER) + ring1.setZ(0, 5110) + ring1.setZoom(0, 0) + ring1.setVisible(0, false) + ring2 = addNewSprite(ballX, ballY, "Graphics/Battle animations/ballBurst_ring2", PictureOrigin::CENTER) + ring2.setZ(0, 5110) + ring2.setVisible(0, false) + # Ring particle animations + ring1.setVisible(delay + burst_duration - 2, true) + ring1.moveZoom(delay + burst_duration - 2, 4, 100) + ring1.setVisible(delay + burst_duration + 2, false) + ring2.setVisible(delay + burst_duration + 2, true) + ring2.moveZoom(delay + burst_duration + 2, 4, 200) + ring2.moveOpacity(delay + burst_duration + 2, 4, 0) + end +end + +#=============================================================================== +# Shows the battle scene fading in while elements slide around into place +#=============================================================================== +class Battle::Scene::Animation::Intro < Battle::Scene::Animation + def createProcesses + appearTime = 20 # This is in 1/20 seconds + # Background + if @sprites["battle_bg2"] + makeSlideSprite("battle_bg", 0.5, appearTime) + makeSlideSprite("battle_bg2", 0.5, appearTime) + end + # Bases + makeSlideSprite("base_0", 1, appearTime, PictureOrigin::BOTTOM) + makeSlideSprite("base_1", -1, appearTime, PictureOrigin::CENTER) + # Player sprite, partner trainer sprite + @battle.player.each_with_index do |_p, i| + makeSlideSprite("player_#{i + 1}", 1, appearTime, PictureOrigin::BOTTOM) + end + # Opposing trainer sprite(s) or wild Pokémon sprite(s) + if @battle.trainerBattle? + @battle.opponent.each_with_index do |_p, i| + makeSlideSprite("trainer_#{i + 1}", -1, appearTime, PictureOrigin::BOTTOM) + end + else # Wild battle + @battle.pbParty(1).each_with_index do |_pkmn, i| + idxBattler = (2 * i) + 1 + makeSlideSprite("pokemon_#{idxBattler}", -1, appearTime, PictureOrigin::BOTTOM) + end + end + # Shadows + @battle.battlers.length.times do |i| + makeSlideSprite("shadow_#{i}", (i.even?) ? 1 : -1, appearTime, PictureOrigin::CENTER) + end + # Fading blackness over whole screen + blackScreen = addNewSprite(0, 0, "Graphics/Battle animations/black_screen") + blackScreen.setZ(0, 99999) + blackScreen.moveOpacity(0, 8, 0) + # Fading blackness over command bar + blackBar = addNewSprite(@sprites["cmdBar_bg"].x, @sprites["cmdBar_bg"].y, + "Graphics/Battle animations/black_bar") + blackBar.setZ(0, 99998) + blackBar.moveOpacity(appearTime * 3 / 4, appearTime / 4, 0) + end +end + +#=============================================================================== +# Shows a Pokémon being sent out on the player's side (including by a partner). +# Includes the Poké Ball being thrown. +#=============================================================================== +class Battle::Scene::Animation::PokeballPlayerSendOut < Battle::Scene::Animation + def createProcesses + batSprite = @sprites["pokemon_#{@battler.index}"] + shaSprite = @sprites["shadow_#{@battler.index}"] + traSprite = @sprites["player_#{@idxTrainer}"] + # Calculate the Poké Ball graphic to use + poke_ball = (batSprite.pkmn) ? batSprite.pkmn.poke_ball : nil + # Calculate the color to turn the battler sprite + col = getBattlerColorFromPokeBall(poke_ball) + col.alpha = 255 + # Calculate start and end coordinates for battler sprite movement + ballPos = Battle::Scene.pbBattlerPosition(@battler.index, batSprite.sideSize) + battlerStartX = ballPos[0] # Is also where the Ball needs to end + battlerStartY = ballPos[1] # Is also where the Ball needs to end + 18 + battlerEndX = batSprite.x + battlerEndY = batSprite.y + # Calculate start and end coordinates for Poké Ball sprite movement + ballStartX = -6 + ballStartY = 202 + ballMidX = 0 # Unused in trajectory calculation + ballMidY = battlerStartY - 144 + # Set up Poké Ball sprite + ball = addBallSprite(ballStartX, ballStartY, poke_ball) + ball.setZ(0, 1025) + ball.setVisible(0, false) + # Poké Ball tracking the player's hand animation (if trainer is visible) + if @showingTrainer && traSprite && traSprite.x > 0 + ball.setZ(0, traSprite.z - 1) + ballStartX, ballStartY = ballTracksHand(ball, traSprite) + end + delay = ball.totalDuration # 0 or 7 + # Poké Ball trajectory animation + createBallTrajectory(ball, delay, 12, + ballStartX, ballStartY, ballMidX, ballMidY, battlerStartX, battlerStartY - 18) + ball.setZ(9, batSprite.z - 1) + delay = ball.totalDuration + 4 + delay += 10 * @idxOrder # Stagger appearances if multiple Pokémon are sent out at once + ballOpenUp(ball, delay - 2, poke_ball) + ballBurst(delay, ball, battlerStartX, battlerStartY - 18, poke_ball) + ball.moveOpacity(delay + 2, 2, 0) + # Set up battler sprite + battler = addSprite(batSprite, PictureOrigin::BOTTOM) + battler.setXY(0, battlerStartX, battlerStartY) + battler.setZoom(0, 0) + battler.setColor(0, col) + # Battler animation + battlerAppear(battler, delay, battlerEndX, battlerEndY, batSprite, col) + if @shadowVisible + # Set up shadow sprite + shadow = addSprite(shaSprite, PictureOrigin::CENTER) + shadow.setOpacity(0, 0) + # Shadow animation + shadow.setVisible(delay, @shadowVisible) + shadow.moveOpacity(delay + 5, 10, 255) + end + end +end + +#=============================================================================== +# Shows the player throwing a Poké Ball and it being deflected +#=============================================================================== +class Battle::Scene::Animation::PokeballThrowDeflect < Battle::Scene::Animation + def createProcesses + # Calculate start and end coordinates for battler sprite movement + batSprite = @sprites["pokemon_#{@battler.index}"] + ballPos = Battle::Scene.pbBattlerPosition(@battler.index, batSprite.sideSize) + ballStartX = -6 + ballStartY = 246 + ballMidX = 190 # Unused in arc calculation + ballMidY = 78 + ballEndX = ballPos[0] + ballEndY = 112 + # Set up Poké Ball sprite + ball = addBallSprite(ballStartX, ballStartY, @poke_ball) + ball.setZ(0, 5090) + # Poké Ball arc animation + ball.setSE(0, "Battle throw") + createBallTrajectory(ball, 0, 16, + ballStartX, ballStartY, ballMidX, ballMidY, ballEndX, ballEndY) + # Poké Ball knocked back + delay = ball.totalDuration + ball.setSE(delay, "Battle ball drop") + ball.moveXY(delay, 8, -32, Graphics.height - 96 + 32) # Back to player's corner + createBallTumbling(ball, delay, 8) + end +end diff --git a/Data/Scripts/905_Anim player/012_Fake battler.rb b/Data/Scripts/905_Anim player/012_Fake battler.rb new file mode 100644 index 000000000..97991fc35 --- /dev/null +++ b/Data/Scripts/905_Anim player/012_Fake battler.rb @@ -0,0 +1,26 @@ +#=============================================================================== +# +#=============================================================================== +class AnimationPlayer::FakeBattler + attr_reader :index + attr_reader :pokemon + + def initialize(index, species, form = 0, gender = 0) + @index = index + @pokemon = AnimationPlayer::FakePokemon.new(species, form, gender) + end +end + +#=============================================================================== +# +#=============================================================================== +class AnimationPlayer::FakePokemon + attr_reader :species, :form, :gender + + def initialize(species, form = 0, gender = 0) + # NOTE: species will be a string, but it doesn't need to be a symbol. + @species = species + @form = form + @gender = gender + end +end diff --git a/PBS/Animations/Bug/Twineedle.txt b/PBS/Animations/Bug/Twineedle.txt new file mode 100644 index 000000000..9222b44bc --- /dev/null +++ b/PBS/Animations/Bug/Twineedle.txt @@ -0,0 +1,84 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,TWINEEDLE] +Name = Essentials + + FoeInvertX = true + FoeInvertY = true + MoveX = 0,1,28 + MoveY = 0,1,-16 + MoveX = 3,1,0 + MoveY = 3,1,0 + + FoeInvertX = true + MoveX = 9,1,-2 + MoveColorRed = 9,8,160 + MoveColorGreen = 9,8,32 + MoveColorBlue = 9,8,248 + MoveColorAlpha = 9,8,160 + MoveX = 10,2,2 + MoveX = 12,2,-2 + MoveX = 14,2,2 + MoveX = 16,1,0 + MoveColorRed = 19,6,0 + MoveColorGreen = 19,6,0 + MoveColorBlue = 19,6,0 + MoveColorAlpha = 19,6,0 + + Graphic = Bug/Twineedle needle + Focus = UserAndTarget + AngleOverride = InitialAngleToFocus + SetZ = 4,-50 + SetZoomX = 4,50 + SetZoomY = 4,80 + SetColorRed = 4,160 + SetColorGreen = 4,32 + SetColorBlue = 4,192 + SetColorAlpha = 4,128 + MoveX = 4,7,200 + MoveY = 4,7,-180 + SetVisible = 11,false + + Graphic = Bug/Twineedle hit + Focus = Target + SetY = 11,16 + SetZ = 11,10 + SetZoomX = 11,0 + SetZoomY = 11,0 + MoveZoomX = 11,3,50 + MoveZoomY = 11,3,50 + SetColorRed = 13,248 + SetColorBlue = 13,248 + SetColorAlpha = 13,255 + MoveOpacity = 13,3,0 + SetVisible = 16,false + + Graphic = Bug/Twineedle needle + Focus = UserAndTarget + AngleOverride = InitialAngleToFocus + SetZ = 7,-50 + SetZoomX = 7,50 + SetZoomY = 7,80 + SetColorRed = 7,160 + SetColorGreen = 7,32 + SetColorBlue = 7,192 + SetColorAlpha = 7,128 + MoveX = 7,6,200 + MoveY = 7,6,-200 + SetVisible = 13,false + + Graphic = Bug/Twineedle hit + Focus = Target + SetX = 13,-8 + SetZ = 13,10 + SetZoomX = 13,0 + SetZoomY = 13,0 + MoveZoomX = 13,3,50 + MoveZoomY = 13,3,50 + SetColorRed = 15,248 + SetColorBlue = 15,248 + SetColorAlpha = 15,255 + MoveOpacity = 15,3,0 + SetVisible = 18,false + + Play = 0,Bug/Twineedle diff --git a/PBS/Animations/Dark/Bite.txt b/PBS/Animations/Dark/Bite.txt new file mode 100644 index 000000000..bc068fbfc --- /dev/null +++ b/PBS/Animations/Dark/Bite.txt @@ -0,0 +1,118 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,BITE] +Name = Essentials +NoUser = true + + FoeInvertX = true + MoveX = 7,1,-2 + MoveX = 8,2,2 + MoveX = 10,2,-2 + MoveX = 12,2,2 + MoveX = 14,1,0 + + Graphic = Dark/Bite teeth + Focus = Target + SetY = 0,-18 + SetZ = 0,10 + SetZoomX = 0,125 + SetZoomY = 0,125 + SetAngle = 0,180 + SetOpacity = 0,0 + MoveOpacity = 0,1,255 + MoveY = 0,3,-72 + MoveZoomY = 0,3,200 + MoveY = 4,3,-10,EaseOut + MoveZoomY = 4,3,100 + MoveY = 7,8,-48 + MoveZoomY = 7,8,150 + MoveOpacity = 11,4,0 + + Graphic = Dark/Bite teeth + Focus = Target + SetY = 0,18 + SetZ = 0,5 + SetZoomX = 0,125 + SetZoomY = 0,125 + SetOpacity = 0,0 + MoveOpacity = 0,1,255 + MoveY = 0,3,72 + MoveZoomY = 0,3,200 + MoveY = 4,3,10,EaseOut + MoveZoomY = 4,3,100 + MoveY = 7,8,48 + MoveZoomY = 7,8,150 + MoveOpacity = 11,4,0 + + Graphic = Dark/Bite teeth + Focus = Target + SetY = 4,-72 + SetZ = 4,20 + SetZoomX = 4,125 + SetZoomY = 4,200 + SetAngle = 4,180 + MoveOpacity = 4,2,0 + SetVisible = 6,false + + Graphic = Dark/Bite teeth + Focus = Target + SetY = 4,72 + SetZ = 4,15 + SetZoomX = 4,125 + SetZoomY = 4,200 + MoveOpacity = 4,2,0 + SetVisible = 6,false + + Graphic = Dark/Bite hit + Focus = Target + SetX = 4,-64 + SetZ = 4,30 + SetZoomX = 4,0 + SetZoomY = 4,0 + SetAngle = 4,-20 + SetColorRed = 4,248 + SetColorGreen = 4,248 + SetColorAlpha = 4,255 + MoveZoomX = 4,5,150 + MoveZoomY = 4,5,150 + MoveOpacity = 7,2,0 + SetVisible = 9,false + + Graphic = Dark/Bite hit + Focus = Target + SetX = 4,-64 + SetZ = 4,35 + SetZoomX = 4,0 + SetZoomY = 4,0 + SetAngle = 4,-20 + MoveZoomX = 4,5,130 + MoveZoomY = 4,5,130 + MoveOpacity = 7,2,0 + SetVisible = 9,false + + Graphic = Dark/Bite hit + Focus = Target + SetX = 4,64 + SetZ = 4,30 + SetZoomX = 4,0 + SetZoomY = 4,0 + SetColorRed = 4,248 + SetColorGreen = 4,248 + SetColorAlpha = 4,255 + MoveZoomX = 4,5,150 + MoveZoomY = 4,5,150 + MoveOpacity = 7,2,0 + SetVisible = 9,false + + Graphic = Dark/Bite hit + Focus = Target + SetX = 4,64 + SetZ = 4,35 + SetZoomX = 4,0 + SetZoomY = 4,0 + MoveZoomX = 4,5,130 + MoveZoomY = 4,5,130 + MoveOpacity = 7,2,0 + SetVisible = 9,false + + Play = 4,Dark/Bite diff --git a/PBS/Animations/Example anims/Common/Attract.txt b/PBS/Animations/Example anims/Common/Attract.txt new file mode 100644 index 000000000..78b685e1f --- /dev/null +++ b/PBS/Animations/Example anims/Common/Attract.txt @@ -0,0 +1,130 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Attract] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poi hear mus + Focus = User + SetFrame = 7,2 + SetX = 7,-29 + SetY = 7,-46 + SetZ = 7,28 + SetFrame = 8,3 + SetX = 8,-43 + SetY = 8,-31 + SetFrame = 9,4 + SetX = 9,-34 + SetY = 9,-29 + SetX = 10,-8 + SetY = 10,-11 + SetFrame = 11,5 + SetX = 11,-23 + SetY = 11,-6 + SetX = 12,-7 + SetY = 12,-22 + SetX = 13,6 + SetY = 13,-42 + SetX = 14,20 + SetY = 14,-69 + SetY = 15,-77 + SetOpacity = 15,192 + SetY = 16,-85 + SetOpacity = 16,128 + SetY = 17,-93 + SetOpacity = 17,64 + + Graphic = Examples/poi hear mus + Focus = User + SetFrame = 8,2 + SetX = 8,-35 + SetY = 8,-46 + SetZ = 8,29 + SetX = 9,-51 + SetY = 9,-35 + SetFrame = 10,3 + SetX = 10,-34 + SetY = 10,-10 + SetFrame = 11,4 + SetX = 11,-23 + SetY = 11,-8 + SetFrame = 12,5 + SetX = 12,-36 + SetY = 12,-6 + SetX = 13,-31 + SetY = 13,-25 + SetX = 14,-48 + SetY = 14,-46 + SetY = 15,-54 + SetOpacity = 15,192 + SetY = 16,-62 + SetOpacity = 16,128 + SetY = 17,-70 + SetOpacity = 17,64 + + Graphic = Examples/poi hear mus + Focus = User + SetFrame = 12,2 + SetX = 12,13 + SetY = 12,-3 + SetZ = 12,30 + SetFrame = 13,3 + SetX = 13,27 + SetY = 13,-24 + SetFrame = 14,4 + SetX = 14,28 + SetY = 14,-52 + SetX = 15,30 + SetY = 15,-56 + SetOpacity = 15,192 + SetY = 16,-64 + SetOpacity = 16,128 + SetY = 17,-72 + SetOpacity = 17,64 + + Graphic = Examples/poi hear mus + Focus = User + SetFrame = 0,2 + SetX = 0,-10 + SetY = 0,-29 + SetZ = 0,27 + SetX = 1,23 + SetY = 1,-31 + SetFrame = 2,3 + SetX = 2,48 + SetY = 2,-36 + SetX = 3,52 + SetY = 3,-47 + SetFrame = 4,4 + SetX = 4,31 + SetY = 4,-64 + SetFrame = 5,5 + SetX = 5,-36 + SetY = 5,-60 + SetX = 6,-59 + SetY = 6,-54 + SetX = 7,-76 + SetY = 7,-28 + SetFrame = 8,6 + SetX = 8,-41 + SetY = 8,-17 + SetX = 9,-15 + SetY = 9,-11 + SetX = 10,-8 + SetY = 10,-23 + SetX = 11,-9 + SetY = 11,-32 + SetY = 12,-49 + SetY = 13,-65 + SetY = 14,-89 + SetY = 15,-97 + SetOpacity = 15,192 + SetY = 16,-105 + SetOpacity = 16,128 + SetY = 17,-113 + SetOpacity = 17,64 + + Play = 0,infatuated diff --git a/PBS/Animations/Example anims/Common/Bind.txt b/PBS/Animations/Example anims/Common/Bind.txt new file mode 100644 index 000000000..ee087466c --- /dev/null +++ b/PBS/Animations/Example anims/Common/Bind.txt @@ -0,0 +1,46 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Bind] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Struggle + Focus = User + SetFrame = 0,1 + SetX = 0,56 + SetY = 0,6 + SetZ = 0,28 + SetX = 1,96 + SetY = 1,-2 + SetX = 2,104 + SetY = 2,6 + SetX = 3,80 + SetY = 3,-2 + SetX = 4,48 + SetX = 5,80 + SetX = 6,112 + SetY = 6,6 + SetX = 7,96 + + Graphic = Examples/Struggle + Focus = User + SetX = 0,-64 + SetY = 0,6 + SetZ = 0,27 + SetX = 1,-96 + SetY = 1,-2 + SetX = 2,-144 + SetY = 2,6 + SetX = 3,-120 + SetY = 3,-2 + SetX = 4,-88 + SetX = 5,-128 + SetX = 6,-168 + SetX = 7,-120 + + Play = 0,Slash10,80 + Play = 3,Slash10,80 + Play = 6,Slash10,80 diff --git a/PBS/Animations/Example anims/Common/Burn.txt b/PBS/Animations/Example anims/Common/Burn.txt new file mode 100644 index 000000000..96cf3ac9e --- /dev/null +++ b/PBS/Animations/Example anims/Common/Burn.txt @@ -0,0 +1,27 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Burn] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Flames + Focus = User + SetFrame = 0,2 + SetX = 0,0 + SetY = 0,0 + SetZ = 0,27 + SetZoomX = 0,200 + SetZoomY = 0,200 + SetFrame = 2,1 + SetFrame = 4,0 + SetFrame = 6,1 + SetFrame = 8,0 + SetFrame = 10,1 + SetFrame = 11,0 + SetFrame = 12,1 + SetFrame = 13,2 + + Play = 0,Fire2,80 diff --git a/PBS/Animations/Example anims/Common/Confusion.txt b/PBS/Animations/Example anims/Common/Confusion.txt new file mode 100644 index 000000000..5f6a36afe --- /dev/null +++ b/PBS/Animations/Example anims/Common/Confusion.txt @@ -0,0 +1,63 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Confusion] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/confused + Focus = User + SetX = 0,0 + SetY = 0,-33 + SetZ = 0,27 + SetFrame = 1,1 + SetY = 1,-32 + SetFrame = 2,2 + SetY = 2,-39 + SetFrame = 3,3 + SetX = 3,1 + SetY = 3,-33 + SetFrame = 4,4 + SetX = 4,0 + SetY = 4,-32 + SetFrame = 5,5 + SetX = 5,4 + SetY = 5,-37 + SetFrame = 6,6 + SetX = 6,5 + SetY = 6,-39 + SetFrame = 7,7 + SetX = 7,7 + SetFrame = 8,8 + SetX = 8,0 + SetY = 8,-41 + SetFrame = 9,9 + SetX = 9,-2 + SetY = 9,-37 + SetFrame = 10,10 + SetX = 10,12 + SetY = 10,-40 + SetFrame = 11,11 + SetX = 11,2 + SetY = 11,-43 + SetFrame = 12,12 + SetX = 12,-1 + SetFrame = 13,13 + SetX = 13,2 + SetY = 13,-44 + SetFrame = 14,14 + SetY = 14,-51 + SetFrame = 15,15 + SetX = 15,7 + SetY = 15,-54 + SetX = 16,8 + SetY = 16,-55 + SetOpacity = 16,233 + SetX = 17,10 + SetY = 17,-57 + SetOpacity = 17,154 + SetVisible = 18,false + + Play = 0,throw,80 diff --git a/PBS/Animations/Example anims/Common/FireSpin.txt b/PBS/Animations/Example anims/Common/FireSpin.txt new file mode 100644 index 000000000..0e157b921 --- /dev/null +++ b/PBS/Animations/Example anims/Common/FireSpin.txt @@ -0,0 +1,170 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,FireSpin] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = User + SetFrame = 0,16 + SetX = 0,-29 + SetY = 0,40 + SetZ = 0,27 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 0,16 + SetX = 0,9 + SetY = 0,42 + SetZ = 0,28 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 0,16 + SetX = 0,44 + SetY = 0,41 + SetZ = 0,29 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 1,16 + SetX = 1,-29 + SetY = 1,25 + SetZ = 1,30 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 1,16 + SetX = 1,10 + SetY = 1,27 + SetZ = 1,31 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 1,16 + SetX = 1,47 + SetY = 1,26 + SetZ = 1,32 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 2,16 + SetX = 2,-25 + SetY = 2,12 + SetZ = 2,33 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 2,16 + SetX = 2,11 + SetY = 2,11 + SetZ = 2,34 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 2,16 + SetX = 2,49 + SetY = 2,9 + SetZ = 2,35 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 3,16 + SetX = 3,-27 + SetY = 3,-4 + SetZ = 3,36 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 3,16 + SetX = 3,12 + SetY = 3,-5 + SetZ = 3,37 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 3,16 + SetX = 3,47 + SetY = 3,-7 + SetZ = 3,38 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 4,16 + SetX = 4,-28 + SetY = 4,-19 + SetZ = 4,39 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 4,16 + SetX = 4,13 + SetY = 4,-18 + SetZ = 4,40 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 4,16 + SetX = 4,51 + SetY = 4,-20 + SetZ = 4,41 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 5,16 + SetX = 5,-29 + SetY = 5,-34 + SetZ = 5,42 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 5,16 + SetX = 5,13 + SetY = 5,-33 + SetZ = 5,43 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 5,16 + SetX = 5,50 + SetY = 5,-35 + SetZ = 5,44 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 5,16 + SetX = 5,-10 + SetY = 5,41 + SetZ = 5,45 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 5,16 + SetX = 5,31 + SetY = 5,42 + SetZ = 5,46 + SetVisible = 6,false + + Play = 0,throw,80 diff --git a/PBS/Animations/Example anims/Common/Frozen.txt b/PBS/Animations/Example anims/Common/Frozen.txt new file mode 100644 index 000000000..8f3007feb --- /dev/null +++ b/PBS/Animations/Example anims/Common/Frozen.txt @@ -0,0 +1,94 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Frozen] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/016-Ice01 + Focus = User + SetFrame = 0,6 + SetX = 0,-56 + SetY = 0,-82 + SetZ = 0,28 + SetX = 1,-24 + SetY = 1,-66 + SetFrame = 8,7 + SetX = 8,0 + SetY = 8,-58 + SetX = 9,56 + SetY = 9,6 + SetX = 10,72 + SetY = 10,38 + SetFrame = 11,8 + SetX = 11,48 + SetY = 11,-82 + SetX = 12,72 + SetY = 12,-50 + SetFrame = 13,6 + SetX = 13,80 + SetY = 13,-2 + SetVisible = 14,false + + Graphic = Examples/016-Ice01 + Focus = User + SetFrame = 1,9 + SetX = 1,0 + SetY = 1,-2 + SetZ = 1,29 + SetVisible = 2,false + + Graphic = Examples/016-Ice01 + Focus = User + SetFrame = 6,11 + SetX = 6,0 + SetY = 6,-2 + SetZ = 6,29 + SetOpacity = 6,192 + SetOpacity = 7,255 + SetVisible = 8,false + + Graphic = Examples/016-Ice01 + Focus = User + SetFrame = 9,8 + SetX = 9,48 + SetY = 9,-82 + SetZ = 9,29 + SetFrame = 10,6 + SetX = 10,24 + SetY = 10,-42 + SetX = 11,-40 + SetY = 11,-18 + SetX = 12,-56 + SetY = 12,14 + SetFrame = 13,7 + SetX = 13,-32 + SetY = 13,46 + SetVisible = 14,false + + Graphic = Examples/016-Ice01 + Focus = User + SetFrame = 0,9 + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,10 + SetOpacity = 1,128 + SetOpacity = 2,255 + SetOpacity = 7,192 + SetFrame = 8,11 + SetOpacity = 8,255 + SetFrame = 9,12 + SetFrame = 10,10 + SetOpacity = 10,100 + SetFrame = 11,9 + SetFrame = 12,11 + SetFrame = 13,12 + SetFrame = 14,6 + SetX = 14,24 + SetY = 14,38 + SetOpacity = 14,255 + + Play = 0,Ice5,80 diff --git a/PBS/Animations/Example anims/Common/Hail.txt b/PBS/Animations/Example anims/Common/Hail.txt new file mode 100644 index 000000000..ef19b317f --- /dev/null +++ b/PBS/Animations/Example anims/Common/Hail.txt @@ -0,0 +1,271 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Hail] +Name = Example anim +NoUser = true +NoTarget = true + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,7 + SetX = 0,37 + SetY = 0,26 + SetZ = 0,27 + SetFrame = 1,8 + SetX = 1,207 + SetY = 1,56 + SetFrame = 2,7 + SetX = 2,84 + SetY = 2,43 + SetFrame = 3,8 + SetX = 3,171 + SetY = 3,56 + SetFrame = 4,9 + SetX = 4,118 + SetY = 4,97 + SetX = 5,357 + SetY = 5,200 + SetFrame = 6,8 + SetX = 6,10 + SetY = 6,9 + SetFrame = 7,7 + SetX = 7,109 + SetY = 7,105 + SetX = 8,136 + SetY = 8,77 + SetX = 9,69 + SetY = 9,208 + SetX = 10,136 + SetY = 10,107 + SetVisible = 11,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,7 + SetX = 0,164 + SetY = 0,136 + SetZ = 0,28 + SetX = 1,464 + SetY = 1,117 + SetVisible = 2,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,8 + SetX = 0,302 + SetY = 0,79 + SetZ = 0,29 + SetFrame = 1,9 + SetX = 1,201 + SetY = 1,204 + SetX = 2,228 + SetY = 2,98 + SetFrame = 3,8 + SetX = 3,278 + SetY = 3,164 + SetVisible = 4,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,9 + SetX = 0,440 + SetY = 0,194 + SetZ = 0,30 + SetX = 1,51 + SetY = 1,161 + SetFrame = 2,8 + SetX = 2,263 + SetY = 2,253 + SetFrame = 3,7 + SetX = 3,436 + SetY = 3,52 + SetFrame = 4,9 + SetX = 4,390 + SetY = 4,210 + SetVisible = 5,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,9 + SetX = 0,362 + SetY = 0,252 + SetZ = 0,31 + SetVisible = 1,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 2,7 + SetX = 2,78 + SetY = 2,206 + SetZ = 2,31 + SetVisible = 3,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 3,9 + SetX = 3,441 + SetY = 3,241 + SetZ = 3,28 + SetVisible = 4,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 4,9 + SetX = 4,259 + SetY = 4,87 + SetZ = 4,31 + SetFrame = 5,8 + SetX = 5,181 + SetY = 5,217 + SetFrame = 6,9 + SetX = 6,298 + SetY = 6,96 + SetX = 7,191 + SetY = 7,222 + SetX = 8,365 + SetY = 8,231 + SetX = 9,337 + SetY = 9,93 + SetX = 10,82 + SetY = 10,240 + SetFrame = 11,7 + SetX = 11,489 + SetY = 11,96 + SetFrame = 12,9 + SetX = 12,198 + SetY = 12,28 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 4,8 + SetX = 4,72 + SetY = 4,220 + SetZ = 4,32 + SetVisible = 5,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 5,9 + SetX = 5,225 + SetY = 5,69 + SetZ = 5,28 + SetVisible = 6,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 6,8 + SetX = 6,334 + SetY = 6,226 + SetZ = 6,29 + SetVisible = 7,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 6,9 + SetX = 6,465 + SetY = 6,116 + SetZ = 6,30 + SetFrame = 7,8 + SetX = 7,454 + SetY = 7,82 + SetX = 8,276 + SetY = 8,136 + SetX = 9,465 + SetY = 9,160 + SetFrame = 10,9 + SetX = 10,285 + SetY = 10,105 + SetFrame = 11,7 + SetX = 11,419 + SetY = 11,272 + SetFrame = 12,8 + SetX = 12,230 + SetY = 12,142 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 6,9 + SetX = 6,161 + SetY = 6,265 + SetZ = 6,32 + SetX = 7,296 + SetY = 7,172 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 8,8 + SetX = 8,180 + SetY = 8,199 + SetZ = 8,28 + SetX = 9,163 + SetY = 9,99 + SetVisible = 10,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 8,9 + SetX = 8,444 + SetY = 8,137 + SetZ = 8,29 + SetX = 9,303 + SetY = 9,240 + SetFrame = 10,8 + SetX = 10,444 + SetY = 10,89 + SetVisible = 11,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,9 + SetX = 9,28 + SetY = 9,57 + SetZ = 9,33 + SetFrame = 10,8 + SetX = 10,294 + SetY = 10,234 + SetFrame = 11,9 + SetX = 11,111 + SetY = 11,246 + SetX = 12,167 + SetY = 12,237 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 11,8 + SetX = 11,176 + SetY = 11,119 + SetZ = 11,28 + SetVisible = 12,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 11,7 + SetX = 11,281 + SetY = 11,268 + SetZ = 11,32 + SetFrame = 12,9 + SetX = 12,41 + SetY = 12,229 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 11,9 + SetX = 11,299 + SetY = 11,47 + SetZ = 11,34 + SetVisible = 12,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 12,8 + SetX = 12,474 + SetY = 12,59 + SetZ = 12,29 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 12,9 + SetX = 12,449 + SetY = 12,237 + SetZ = 12,35 diff --git a/PBS/Animations/Example anims/Common/HealthDown.txt b/PBS/Animations/Example anims/Common/HealthDown.txt new file mode 100644 index 000000000..6599a4d9b --- /dev/null +++ b/PBS/Animations/Example anims/Common/HealthDown.txt @@ -0,0 +1,196 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,HealthDown] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/! + Focus = User + SetFrame = 0,5 + SetX = 0,-50 + SetY = 0,-53 + SetZ = 0,27 + SetOpacity = 0,126 + SetToneRed = 0,255 + SetToneGreen = 0,64 + SetToneBlue = 0,-128 + SetY = 1,-33 + SetY = 2,-13 + SetY = 3,7 + SetY = 4,27 + SetY = 5,47 + SetOpacity = 5,79 + SetY = 6,67 + SetOpacity = 6,32 + SetX = 7,14 + SetY = 7,73 + SetX = 8,-1 + SetY = 8,63 + SetX = 9,25 + SetY = 9,92 + SetVisible = 10,false + + Graphic = Examples/! + Focus = User + SetFrame = 0,5 + SetX = 0,35 + SetY = 0,-52 + SetZ = 0,30 + SetOpacity = 0,126 + SetToneRed = 0,255 + SetToneGreen = 0,64 + SetToneBlue = 0,-128 + SetX = 1,14 + SetY = 1,-47 + SetY = 2,-27 + SetY = 3,-7 + SetY = 4,13 + SetY = 5,33 + SetY = 6,53 + SetOpacity = 6,79 + SetX = 7,-41 + SetY = 7,62 + SetVisible = 8,false + + Graphic = Examples/! + Focus = User + SetFrame = 0,5 + SetX = 0,22 + SetY = 0,-29 + SetZ = 0,33 + SetOpacity = 0,126 + SetToneRed = 0,255 + SetToneGreen = 0,64 + SetToneBlue = 0,-128 + SetX = 1,-16 + SetVisible = 2,false + + Graphic = Examples/! + Focus = User + SetFrame = 1,5 + SetX = 1,35 + SetY = 1,-32 + SetZ = 1,28 + SetOpacity = 1,126 + SetToneRed = 1,255 + SetToneGreen = 1,64 + SetToneBlue = 1,-128 + SetY = 2,-12 + SetY = 3,8 + SetY = 4,28 + SetY = 5,48 + SetOpacity = 5,79 + SetY = 6,68 + SetOpacity = 6,32 + SetX = 7,-16 + SetY = 7,91 + SetX = 8,-41 + SetY = 8,82 + SetVisible = 9,false + + Graphic = Examples/! + Focus = User + SetFrame = 1,5 + SetX = 1,22 + SetY = 1,-9 + SetZ = 1,29 + SetOpacity = 1,126 + SetToneRed = 1,255 + SetToneGreen = 1,64 + SetToneBlue = 1,-128 + SetY = 2,11 + SetY = 3,31 + SetY = 4,51 + SetY = 5,71 + SetOpacity = 5,79 + SetY = 6,91 + SetOpacity = 6,32 + SetX = 7,-1 + SetY = 7,43 + SetOpacity = 7,79 + SetX = 8,25 + SetY = 8,72 + SetVisible = 9,false + + Graphic = Examples/! + Focus = User + SetFrame = 2,5 + SetX = 2,-16 + SetY = 2,-9 + SetZ = 2,31 + SetOpacity = 2,126 + SetToneRed = 2,255 + SetToneGreen = 2,64 + SetToneBlue = 2,-128 + SetY = 3,11 + SetY = 4,31 + SetY = 5,51 + SetY = 6,71 + SetOpacity = 6,79 + SetX = 7,25 + SetY = 7,52 + SetOpacity = 7,126 + SetVisible = 8,false + + Graphic = Examples/! + Focus = User + SetFrame = 2,5 + SetX = 2,-1 + SetY = 2,-57 + SetZ = 2,32 + SetOpacity = 2,126 + SetToneRed = 2,255 + SetToneGreen = 2,64 + SetToneBlue = 2,-128 + SetY = 3,-37 + SetY = 4,-17 + SetY = 5,3 + SetY = 6,23 + SetVisible = 7,false + + Graphic = Examples/! + Focus = User + SetFrame = 2,5 + SetX = 2,-41 + SetY = 2,-38 + SetZ = 2,35 + SetOpacity = 2,126 + SetToneRed = 2,255 + SetToneGreen = 2,64 + SetToneBlue = 2,-128 + SetVisible = 3,false + + Graphic = Examples/! + Focus = User + SetFrame = 3,5 + SetX = 3,-41 + SetY = 3,-18 + SetZ = 3,33 + SetOpacity = 3,126 + SetToneRed = 3,255 + SetToneGreen = 3,64 + SetToneBlue = 3,-128 + SetY = 4,2 + SetY = 5,22 + SetY = 6,42 + SetVisible = 7,false + + Graphic = Examples/! + Focus = User + SetFrame = 3,5 + SetX = 3,25 + SetY = 3,-28 + SetZ = 3,34 + SetOpacity = 3,126 + SetToneRed = 3,255 + SetToneGreen = 3,64 + SetToneBlue = 3,-128 + SetY = 4,-8 + SetY = 5,12 + SetY = 6,32 + SetVisible = 7,false + + Play = 0,decrease,100,140 diff --git a/PBS/Animations/Example anims/Common/HealthUp.txt b/PBS/Animations/Example anims/Common/HealthUp.txt new file mode 100644 index 000000000..0c2746e34 --- /dev/null +++ b/PBS/Animations/Example anims/Common/HealthUp.txt @@ -0,0 +1,55 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,HealthUp] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 1,10 + SetX = 1,48 + SetY = 1,-42 + SetZ = 1,28 + SetFrame = 3,8 + SetFrame = 5,7 + SetFrame = 7,6 + SetFrame = 9,5 + SetFrame = 10,6 + SetX = 10,-40 + SetY = 10,-26 + SetVisible = 11,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 4,10 + SetX = 4,-40 + SetY = 4,-26 + SetZ = 4,29 + SetFrame = 6,8 + SetFrame = 8,7 + SetVisible = 10,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 0,10 + SetX = 0,8 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 2,8 + SetFrame = 4,7 + SetFrame = 6,6 + SetFrame = 8,5 + SetX = 10,48 + SetY = 10,-42 + SetFrame = 11,6 + SetX = 11,-40 + SetY = 11,-26 + SetFrame = 12,5 + SetVisible = 14,false + + Play = 0,Recovery,75 + Play = 2,Recovery,80 + Play = 5,Recovery,80 diff --git a/PBS/Animations/Example anims/Common/LeechSeed.txt b/PBS/Animations/Example anims/Common/LeechSeed.txt new file mode 100644 index 000000000..f6de11ef8 --- /dev/null +++ b/PBS/Animations/Example anims/Common/LeechSeed.txt @@ -0,0 +1,179 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,LeechSeed] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 0,11 + SetX = 0,200 + SetY = 0,-196 + SetZ = 0,27 + SetY = 1,-178 + SetFrame = 2,12 + SetX = 2,114 + SetY = 2,-196 + SetX = 3,59 + SetY = 3,-157 + SetX = 4,14 + SetY = 4,-89 + SetX = 5,4 + SetY = 5,0 + SetVisible = 6,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 1,11 + SetX = 1,164 + SetY = 1,-196 + SetZ = 1,28 + SetFrame = 2,12 + SetX = 2,169 + SetY = 2,-109 + SetX = 3,129 + SetY = 3,-50 + SetX = 4,84 + SetY = 4,-10 + SetX = 5,39 + SetY = 5,9 + SetVisible = 6,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 2,11 + SetX = 2,200 + SetY = 2,-196 + SetZ = 2,29 + SetFrame = 3,12 + SetX = 3,144 + SetY = 3,-157 + SetX = 4,100 + SetY = 4,-118 + SetX = 5,50 + SetY = 5,-70 + SetX = 6,-5 + SetY = 6,0 + SetX = 7,4 + SetVisible = 8,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 3,11 + SetX = 3,189 + SetY = 3,-196 + SetZ = 3,30 + SetFrame = 4,12 + SetX = 4,169 + SetY = 4,-118 + SetX = 5,129 + SetY = 5,-50 + SetX = 6,89 + SetY = 6,-20 + SetX = 7,44 + SetY = 7,0 + SetX = 8,4 + SetVisible = 9,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 4,12 + SetX = 4,144 + SetY = 4,-187 + SetZ = 4,31 + SetX = 5,94 + SetY = 5,-168 + SetX = 6,39 + SetY = 6,-118 + SetVisible = 7,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 7,12 + SetX = 7,0 + SetY = 7,-59 + SetZ = 7,27 + SetVisible = 8,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 9,10 + SetX = 9,4 + SetY = 9,0 + SetZ = 9,27 + SetFrame = 10,8 + SetFrame = 11,7 + SetFrame = 12,6 + SetFrame = 13,5 + SetFrame = 14,10 + SetX = 16,-15 + SetY = 16,-50 + SetX = 17,14 + SetY = 17,-79 + SetX = 18,-25 + SetY = 18,9 + SetX = 19,25 + SetY = 19,-20 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 10,10 + SetX = 10,-15 + SetY = 10,-50 + SetZ = 10,28 + SetFrame = 11,8 + SetFrame = 12,7 + SetFrame = 13,6 + SetFrame = 14,5 + SetFrame = 15,10 + SetX = 16,14 + SetY = 16,-79 + SetX = 17,-25 + SetY = 17,9 + SetX = 18,25 + SetY = 18,-20 + SetVisible = 19,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 11,10 + SetX = 11,14 + SetY = 11,-79 + SetZ = 11,29 + SetFrame = 12,8 + SetFrame = 13,7 + SetFrame = 14,6 + SetFrame = 15,5 + SetX = 16,-25 + SetY = 16,9 + SetX = 17,25 + SetY = 17,-20 + SetVisible = 18,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 12,10 + SetX = 12,-25 + SetY = 12,9 + SetZ = 12,30 + SetFrame = 13,8 + SetFrame = 14,7 + SetFrame = 15,6 + SetX = 16,25 + SetY = 16,-20 + SetVisible = 17,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 13,10 + SetX = 13,25 + SetY = 13,-20 + SetZ = 13,31 + SetFrame = 14,8 + SetFrame = 15,7 + SetVisible = 16,false diff --git a/PBS/Animations/Example anims/Common/Paralysis.txt b/PBS/Animations/Example anims/Common/Paralysis.txt new file mode 100644 index 000000000..d57b7e04c --- /dev/null +++ b/PBS/Animations/Example anims/Common/Paralysis.txt @@ -0,0 +1,66 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Paralysis] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Struggle + Focus = User + SetFrame = 1,1 + SetX = 1,40 + SetY = 1,6 + SetZ = 1,28 + SetX = 2,72 + SetY = 2,-10 + SetX = 3,56 + SetFrame = 4,0 + SetX = 4,-48 + SetFrame = 5,1 + SetX = 5,24 + SetY = 5,14 + SetFrame = 6,0 + SetX = 6,-104 + SetY = 6,6 + SetFrame = 7,1 + SetX = 7,40 + SetX = 8,72 + SetY = 8,-10 + SetX = 9,56 + SetFrame = 10,0 + SetX = 10,-48 + SetFrame = 11,1 + SetX = 11,24 + SetY = 11,14 + + Graphic = Examples/Struggle + Focus = User + SetX = 1,-48 + SetY = 1,-2 + SetZ = 1,27 + SetX = 2,-80 + SetY = 2,-18 + SetX = 3,-56 + SetY = 3,-2 + SetFrame = 4,1 + SetX = 4,64 + SetFrame = 5,0 + SetX = 5,-72 + SetFrame = 6,1 + SetX = 6,72 + SetY = 6,-10 + SetFrame = 7,0 + SetX = 7,-48 + SetY = 7,-2 + SetX = 8,-80 + SetY = 8,-18 + SetX = 9,-56 + SetY = 9,-2 + SetFrame = 10,1 + SetX = 10,64 + SetFrame = 11,0 + SetX = 11,-72 + + Play = 0,Paralyze3,80 diff --git a/PBS/Animations/Example anims/Common/ParentalBond.txt b/PBS/Animations/Example anims/Common/ParentalBond.txt new file mode 100644 index 000000000..8e6b912a0 --- /dev/null +++ b/PBS/Animations/Example anims/Common/ParentalBond.txt @@ -0,0 +1,22 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,ParentalBond] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Tackle_B + Focus = Target + SetX = 2,0 + SetY = 2,3 + SetZ = 2,27 + SetOpacity = 2,150 + SetOpacity = 3,255 + SetOpacity = 8,150 + SetOpacity = 9,100 + + Play = 0,Blow1,80 diff --git a/PBS/Animations/Example anims/Common/Poison.txt b/PBS/Animations/Example anims/Common/Poison.txt new file mode 100644 index 000000000..c4583c30a --- /dev/null +++ b/PBS/Animations/Example anims/Common/Poison.txt @@ -0,0 +1,31 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Poison] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/State1 + Focus = User + SetX = 1,0 + SetY = 1,-10 + SetZ = 1,27 + SetZoomX = 1,200 + SetZoomY = 1,200 + SetFrame = 2,1 + SetFrame = 3,2 + SetFrame = 4,3 + SetFrame = 5,4 + SetFrame = 6,5 + SetFrame = 7,6 + SetFrame = 8,7 + SetFrame = 9,8 + SetFrame = 10,9 + SetFrame = 11,10 + SetFrame = 12,11 + SetFrame = 13,12 + SetFrame = 14,13 + + Play = 0,Poison,80 diff --git a/PBS/Animations/Example anims/Common/Rain.txt b/PBS/Animations/Example anims/Common/Rain.txt new file mode 100644 index 000000000..24c12457f --- /dev/null +++ b/PBS/Animations/Example anims/Common/Rain.txt @@ -0,0 +1,295 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Rain] +Name = Example anim +NoUser = true +NoTarget = true + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,197 + SetY = 0,25 + SetZ = 0,27 + SetX = 1,72 + SetY = 1,49 + SetX = 2,60 + SetY = 2,42 + SetX = 3,43 + SetY = 3,62 + SetY = 4,66 + SetX = 5,480 + SetY = 5,78 + SetX = 6,201 + SetY = 6,65 + SetX = 7,80 + SetY = 7,62 + SetX = 8,265 + SetY = 8,218 + SetX = 9,99 + SetY = 9,55 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,275 + SetY = 0,47 + SetZ = 0,28 + SetX = 1,229 + SetY = 1,216 + SetX = 2,193 + SetY = 2,131 + SetX = 3,205 + SetY = 3,111 + SetX = 4,122 + SetY = 4,73 + SetX = 5,361 + SetY = 5,34 + SetX = 6,278 + SetY = 6,211 + SetX = 7,239 + SetY = 7,122 + SetX = 8,398 + SetY = 8,251 + SetX = 9,253 + SetY = 9,148 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,355 + SetY = 0,51 + SetZ = 0,29 + SetX = 1,109 + SetY = 1,217 + SetX = 2,265 + SetY = 2,233 + SetX = 3,289 + SetY = 3,227 + SetX = 4,148 + SetY = 4,143 + SetX = 5,404 + SetY = 5,152 + SetX = 6,397 + SetY = 6,257 + SetX = 7,172 + SetY = 7,23 + SetX = 8,270 + SetY = 8,110 + SetX = 9,254 + SetY = 9,274 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,450 + SetY = 0,50 + SetZ = 0,30 + SetX = 1,223 + SetY = 1,110 + SetX = 2,228 + SetY = 2,82 + SetX = 3,279 + SetY = 3,63 + SetX = 4,203 + SetY = 4,141 + SetX = 5,274 + SetY = 5,69 + SetX = 6,478 + SetY = 6,170 + SetX = 7,25 + SetY = 7,169 + SetX = 8,491 + SetY = 8,59 + SetX = 9,418 + SetY = 9,243 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,83 + SetY = 0,81 + SetZ = 0,31 + SetX = 1,399 + SetY = 1,120 + SetX = 2,350 + SetY = 2,43 + SetX = 3,31 + SetY = 3,176 + SetX = 4,101 + SetY = 4,242 + SetX = 5,54 + SetY = 5,71 + SetX = 6,480 + SetY = 6,53 + SetX = 7,263 + SetY = 7,251 + SetX = 8,492 + SetY = 8,204 + SetX = 9,181 + SetY = 9,238 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,231 + SetY = 0,170 + SetZ = 0,32 + SetX = 1,480 + SetY = 1,83 + SetX = 2,399 + SetY = 2,154 + SetX = 3,475 + SetY = 3,231 + SetX = 4,185 + SetY = 4,249 + SetX = 5,155 + SetY = 5,126 + SetX = 6,28 + SetY = 6,111 + SetX = 7,146 + SetY = 7,249 + SetX = 8,91 + SetY = 8,63 + SetX = 9,108 + SetY = 9,245 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,352 + SetY = 0,212 + SetZ = 0,33 + SetX = 1,362 + SetY = 1,63 + SetX = 2,488 + SetY = 2,60 + SetX = 3,482 + SetY = 3,85 + SetX = 4,290 + SetY = 4,114 + SetX = 5,210 + SetY = 5,242 + SetX = 6,119 + SetY = 6,59 + SetX = 7,29 + SetY = 7,266 + SetX = 8,35 + SetY = 8,173 + SetX = 9,25 + SetY = 9,205 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,467 + SetY = 0,254 + SetZ = 0,34 + SetX = 1,376 + SetY = 1,192 + SetX = 2,434 + SetY = 2,253 + SetX = 3,381 + SetY = 3,12 + SetX = 4,440 + SetY = 4,119 + SetX = 5,55 + SetY = 5,232 + SetX = 6,77 + SetY = 6,215 + SetX = 7,367 + SetY = 7,134 + SetX = 8,187 + SetY = 8,144 + SetX = 9,148 + SetY = 9,25 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 1,2 + SetX = 1,482 + SetY = 1,244 + SetZ = 1,35 + SetX = 2,121 + SetY = 2,249 + SetX = 3,382 + SetY = 3,209 + SetX = 4,378 + SetY = 4,150 + SetX = 5,422 + SetY = 5,252 + SetVisible = 6,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 2,2 + SetX = 2,27 + SetY = 2,241 + SetZ = 2,36 + SetX = 3,88 + SetY = 3,177 + SetX = 4,337 + SetY = 4,243 + SetX = 5,319 + SetY = 5,241 + SetVisible = 6,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 4,2 + SetX = 4,409 + SetY = 4,203 + SetZ = 4,37 + SetVisible = 5,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 7,2 + SetX = 7,471 + SetY = 7,126 + SetZ = 7,35 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 7,2 + SetX = 7,363 + SetY = 7,237 + SetZ = 7,36 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 7,2 + SetX = 7,443 + SetY = 7,194 + SetZ = 7,37 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,2 + SetX = 9,247 + SetY = 9,72 + SetZ = 9,35 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,2 + SetX = 9,365 + SetY = 9,42 + SetZ = 9,36 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,2 + SetX = 9,479 + SetY = 9,180 + SetZ = 9,37 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,2 + SetX = 9,474 + SetY = 9,41 + SetZ = 9,38 diff --git a/PBS/Animations/Example anims/Common/Sandstorm.txt b/PBS/Animations/Example anims/Common/Sandstorm.txt new file mode 100644 index 000000000..b823be125 --- /dev/null +++ b/PBS/Animations/Example anims/Common/Sandstorm.txt @@ -0,0 +1,409 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Sandstorm] +Name = Example anim +NoUser = true +NoTarget = true + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,-350 + SetY = 0,-30 + SetZ = 0,27 + SetX = 1,153 + SetY = 1,62 + SetX = 2,-350 + SetY = 2,-30 + SetX = 3,153 + SetY = 3,62 + SetX = 4,139 + SetY = 4,48 + SetX = 5,-350 + SetY = 5,-30 + SetX = 6,153 + SetY = 6,62 + SetX = 7,-350 + SetY = 7,-30 + SetX = 8,153 + SetY = 8,62 + SetX = 9,32 + SetY = 9,252 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,31 + SetY = 0,69 + SetZ = 0,28 + SetX = 1,56 + SetY = 1,85 + SetX = 2,31 + SetY = 2,69 + SetX = 3,56 + SetY = 3,85 + SetX = 4,42 + SetY = 4,82 + SetX = 5,31 + SetY = 5,69 + SetX = 6,56 + SetY = 6,85 + SetX = 7,31 + SetY = 7,69 + SetX = 8,56 + SetY = 8,85 + SetX = 9,119 + SetY = 9,175 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,156 + SetY = 0,106 + SetZ = 0,29 + SetX = 1,74 + SetY = 1,223 + SetX = 2,156 + SetY = 2,106 + SetX = 3,74 + SetY = 3,223 + SetX = 4,157 + SetY = 4,167 + SetX = 5,156 + SetY = 5,106 + SetX = 6,74 + SetY = 6,223 + SetX = 7,156 + SetY = 7,106 + SetX = 8,74 + SetY = 8,223 + SetX = 9,143 + SetY = 9,267 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,165 + SetY = 0,220 + SetZ = 0,30 + SetX = 1,220 + SetY = 1,207 + SetX = 2,165 + SetY = 2,220 + SetX = 3,220 + SetY = 3,207 + SetX = 4,58 + SetY = 4,225 + SetX = 5,165 + SetY = 5,220 + SetX = 6,220 + SetY = 6,207 + SetX = 7,165 + SetY = 7,220 + SetX = 8,220 + SetY = 8,207 + SetX = 9,222 + SetY = 9,197 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,267 + SetY = 0,178 + SetZ = 0,31 + SetX = 1,352 + SetY = 1,253 + SetX = 2,267 + SetY = 2,178 + SetX = 3,352 + SetY = 3,253 + SetX = 4,178 + SetY = 4,273 + SetX = 5,267 + SetY = 5,178 + SetX = 6,352 + SetY = 6,253 + SetX = 7,267 + SetY = 7,178 + SetX = 8,352 + SetY = 8,253 + SetX = 9,162 + SetY = 9,82 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,309 + SetY = 0,248 + SetZ = 0,32 + SetX = 1,464 + SetY = 1,227 + SetX = 2,309 + SetY = 2,248 + SetX = 3,464 + SetY = 3,227 + SetX = 4,284 + SetY = 4,217 + SetX = 5,309 + SetY = 5,248 + SetX = 6,464 + SetY = 6,227 + SetX = 7,309 + SetY = 7,248 + SetX = 8,464 + SetY = 8,227 + SetX = 9,49 + SetY = 9,61 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,388 + SetY = 0,142 + SetZ = 0,33 + SetX = 1,484 + SetY = 1,76 + SetX = 2,388 + SetY = 2,142 + SetX = 3,484 + SetY = 3,76 + SetX = 4,377 + SetY = 4,143 + SetX = 5,388 + SetY = 5,142 + SetX = 6,484 + SetY = 6,76 + SetX = 7,388 + SetY = 7,142 + SetX = 8,484 + SetY = 8,76 + SetX = 9,21 + SetY = 9,158 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,448 + SetY = 0,243 + SetZ = 0,34 + SetX = 1,378 + SetY = 1,130 + SetX = 2,448 + SetY = 2,243 + SetX = 3,378 + SetY = 3,130 + SetX = 4,403 + SetY = 4,259 + SetX = 5,448 + SetY = 5,243 + SetX = 6,378 + SetY = 6,130 + SetX = 7,448 + SetY = 7,243 + SetX = 8,378 + SetY = 8,130 + SetX = 9,350 + SetY = 9,240 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,35 + SetY = 0,216 + SetZ = 0,35 + SetX = 1,285 + SetY = 1,142 + SetX = 2,35 + SetY = 2,216 + SetX = 3,285 + SetY = 3,142 + SetX = 4,500 + SetY = 4,230 + SetX = 5,35 + SetY = 5,216 + SetX = 6,285 + SetY = 6,142 + SetX = 7,35 + SetY = 7,216 + SetX = 8,285 + SetY = 8,142 + SetX = 9,481 + SetY = 9,206 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,276 + SetY = 0,34 + SetZ = 0,36 + SetX = 1,316 + SetY = 1,22 + SetX = 2,276 + SetY = 2,34 + SetX = 3,316 + SetY = 3,22 + SetX = 4,481 + SetY = 4,77 + SetX = 5,276 + SetY = 5,34 + SetX = 6,316 + SetY = 6,22 + SetX = 7,276 + SetY = 7,34 + SetX = 8,316 + SetY = 8,22 + SetX = 9,456 + SetY = 9,64 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,487 + SetY = 0,32 + SetZ = 0,37 + SetVisible = 1,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,492 + SetY = 0,135 + SetZ = 0,38 + SetVisible = 1,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,387 + SetY = 0,18 + SetZ = 0,39 + SetVisible = 1,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,148 + SetY = 0,9 + SetZ = 0,40 + SetVisible = 1,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 2,3 + SetX = 2,487 + SetY = 2,32 + SetZ = 2,37 + SetVisible = 3,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 2,3 + SetX = 2,492 + SetY = 2,135 + SetZ = 2,38 + SetVisible = 3,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 2,3 + SetX = 2,387 + SetY = 2,18 + SetZ = 2,39 + SetVisible = 3,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 2,3 + SetX = 2,148 + SetY = 2,9 + SetZ = 2,40 + SetVisible = 3,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 4,3 + SetX = 4,358 + SetY = 4,16 + SetZ = 4,37 + SetX = 5,487 + SetY = 5,32 + SetVisible = 6,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 4,3 + SetX = 4,267 + SetY = 4,63 + SetZ = 4,38 + SetX = 5,492 + SetY = 5,135 + SetVisible = 6,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 5,3 + SetX = 5,387 + SetY = 5,18 + SetZ = 5,39 + SetVisible = 6,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 5,3 + SetX = 5,148 + SetY = 5,9 + SetZ = 5,40 + SetVisible = 6,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 7,3 + SetX = 7,487 + SetY = 7,32 + SetZ = 7,37 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 7,3 + SetX = 7,492 + SetY = 7,135 + SetZ = 7,38 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 7,3 + SetX = 7,387 + SetY = 7,18 + SetZ = 7,39 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 7,3 + SetX = 7,148 + SetY = 7,9 + SetZ = 7,40 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,3 + SetX = 9,311 + SetY = 9,55 + SetZ = 9,37 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,3 + SetX = 9,328 + SetY = 9,146 + SetZ = 9,38 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,3 + SetX = 9,251 + SetY = 9,305 + SetZ = 9,39 diff --git a/PBS/Animations/Example anims/Common/Shadow.txt b/PBS/Animations/Example anims/Common/Shadow.txt new file mode 100644 index 000000000..d640abfe7 --- /dev/null +++ b/PBS/Animations/Example anims/Common/Shadow.txt @@ -0,0 +1,83 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Shadow] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 2,5 + SetX = 2,56 + SetY = 2,30 + SetZ = 2,28 + SetFrame = 3,6 + SetX = 4,-88 + SetY = 4,-10 + SetFrame = 5,7 + SetX = 6,-24 + SetY = 6,14 + SetX = 7,32 + SetY = 7,-42 + SetX = 8,-16 + SetY = 8,-74 + SetX = 9,32 + SetY = 9,22 + SetVisible = 10,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 3,5 + SetX = 3,-88 + SetY = 3,-10 + SetZ = 3,29 + SetX = 4,-24 + SetY = 4,14 + SetFrame = 5,6 + SetX = 6,32 + SetY = 6,-42 + SetX = 7,-16 + SetY = 7,-74 + SetX = 8,32 + SetY = 8,22 + SetVisible = 9,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 5,5 + SetX = 5,32 + SetY = 5,-42 + SetZ = 5,30 + SetX = 6,-16 + SetY = 6,-74 + SetX = 7,32 + SetY = 7,22 + SetVisible = 8,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 0,5 + SetX = 0,-24 + SetY = 0,14 + SetZ = 0,27 + SetFrame = 1,6 + SetFrame = 2,7 + SetFrame = 3,8 + SetFrame = 4,7 + SetX = 4,56 + SetY = 4,30 + SetFrame = 5,8 + SetX = 6,-88 + SetY = 6,-10 + SetX = 7,-40 + SetY = 7,46 + SetX = 8,32 + SetY = 8,-42 + SetX = 9,-16 + SetY = 9,-74 + SetX = 10,32 + SetY = 10,22 + + Play = 0,Saint6,75 diff --git a/PBS/Animations/Example anims/Common/ShadowSky.txt b/PBS/Animations/Example anims/Common/ShadowSky.txt new file mode 100644 index 000000000..aaba06e98 --- /dev/null +++ b/PBS/Animations/Example anims/Common/ShadowSky.txt @@ -0,0 +1,16 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,ShadowSky] +Name = Example anim +NoUser = true +NoTarget = true + + Graphic = Examples/shadow sky + Focus = Foreground + SetOpacity = 0,0 + MoveOpacity = 0,5,255 + SetOpacity = 5,255 + SetOpacity = 15,255 + MoveOpacity = 15,5,0 + SetOpacity = 20,0 + diff --git a/PBS/Animations/Example anims/Common/Shiny.txt b/PBS/Animations/Example anims/Common/Shiny.txt new file mode 100644 index 000000000..91c66bef3 --- /dev/null +++ b/PBS/Animations/Example anims/Common/Shiny.txt @@ -0,0 +1,83 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Shiny] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 2,5 + SetX = 2,56 + SetY = 2,30 + SetZ = 2,28 + SetFrame = 3,6 + SetX = 4,-57 + SetY = 4,-18 + SetFrame = 5,7 + SetX = 6,-18 + SetY = 6,33 + SetX = 7,32 + SetY = 7,-42 + SetX = 8,-16 + SetY = 8,-29 + SetX = 9,32 + SetY = 9,22 + SetVisible = 10,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 3,5 + SetX = 3,-57 + SetY = 3,-18 + SetZ = 3,29 + SetX = 4,-18 + SetY = 4,33 + SetFrame = 5,6 + SetX = 6,32 + SetY = 6,-42 + SetX = 7,-16 + SetY = 7,-29 + SetX = 8,32 + SetY = 8,22 + SetVisible = 9,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 5,5 + SetX = 5,32 + SetY = 5,-42 + SetZ = 5,30 + SetX = 6,-16 + SetY = 6,-29 + SetX = 7,32 + SetY = 7,22 + SetVisible = 8,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 0,5 + SetX = 0,-24 + SetY = 0,14 + SetZ = 0,27 + SetFrame = 1,6 + SetFrame = 2,7 + SetFrame = 3,8 + SetFrame = 4,7 + SetX = 4,56 + SetY = 4,30 + SetFrame = 5,8 + SetX = 6,-57 + SetY = 6,-18 + SetX = 7,-18 + SetY = 7,33 + SetX = 8,32 + SetY = 8,-42 + SetX = 9,-16 + SetY = 9,-29 + SetX = 10,32 + SetY = 10,22 + + Play = 0,Shiny sparkle diff --git a/PBS/Animations/Example anims/Common/Sleep.txt b/PBS/Animations/Example anims/Common/Sleep.txt new file mode 100644 index 000000000..f3f6d956e --- /dev/null +++ b/PBS/Animations/Example anims/Common/Sleep.txt @@ -0,0 +1,77 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Sleep] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/028-State01 + Focus = User + SetFrame = 1,8 + SetX = 1,24 + SetY = 1,-18 + SetZ = 1,27 + SetZoomX = 1,50 + SetZoomY = 1,50 + MoveX = 1,4,52 + MoveY = 1,4,-67 + SetX = 5,52 + SetY = 5,-67 + SetVisible = 5,false + SetX = 6,-41 + SetY = 6,-17 + SetVisible = 6,true + MoveX = 6,4,-75 + MoveY = 6,4,-71 + SetX = 10,-75 + SetY = 10,-71 + SetVisible = 11,false + + Graphic = Examples/028-State01 + Focus = User + SetFrame = 5,8 + SetX = 5,-14 + SetY = 5,-32 + SetZ = 5,29 + SetZoomX = 5,50 + SetZoomY = 5,50 + SetVisible = 6,false + + Graphic = Examples/028-State01 + Focus = User + SetFrame = 7,8 + SetX = 7,40 + SetY = 7,-10 + SetZ = 7,29 + SetZoomX = 7,50 + SetZoomY = 7,50 + SetVisible = 8,false + + Graphic = Examples/028-State01 + Focus = User + SetFrame = 3,8 + SetX = 3,40 + SetY = 3,-42 + SetZ = 3,28 + SetZoomX = 3,50 + SetZoomY = 3,50 + SetX = 4,-8 + SetY = 4,-18 + SetX = 5,-32 + SetY = 5,-2 + SetX = 6,-18 + SetY = 6,-48 + SetX = 7,-23 + SetY = 7,-62 + SetX = 8,48 + SetY = 8,-26 + SetX = 9,57 + SetY = 9,-42 + SetX = 10,68 + SetY = 10,-58 + SetX = 11,79 + SetY = 11,-76 + + Play = 0,Sleep,80 diff --git a/PBS/Animations/Example anims/Common/StatDown.txt b/PBS/Animations/Example anims/Common/StatDown.txt new file mode 100644 index 000000000..f636b70d8 --- /dev/null +++ b/PBS/Animations/Example anims/Common/StatDown.txt @@ -0,0 +1,166 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,StatDown] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/! + Focus = User + SetFrame = 0,5 + SetX = 0,-50 + SetY = 0,-53 + SetZ = 0,27 + SetOpacity = 0,126 + SetY = 1,-33 + SetY = 2,-13 + SetY = 3,7 + SetY = 4,27 + SetY = 5,47 + SetOpacity = 5,79 + SetY = 6,67 + SetOpacity = 6,32 + SetX = 7,14 + SetY = 7,73 + SetX = 8,-1 + SetY = 8,63 + SetX = 9,25 + SetY = 9,92 + SetVisible = 10,false + + Graphic = Examples/! + Focus = User + SetFrame = 0,5 + SetX = 0,35 + SetY = 0,-52 + SetZ = 0,30 + SetOpacity = 0,126 + SetX = 1,14 + SetY = 1,-47 + SetY = 2,-27 + SetY = 3,-7 + SetY = 4,13 + SetY = 5,33 + SetY = 6,53 + SetOpacity = 6,79 + SetX = 7,-41 + SetY = 7,62 + SetVisible = 8,false + + Graphic = Examples/! + Focus = User + SetFrame = 0,5 + SetX = 0,22 + SetY = 0,-29 + SetZ = 0,33 + SetOpacity = 0,126 + SetX = 1,-16 + SetVisible = 2,false + + Graphic = Examples/! + Focus = User + SetFrame = 1,5 + SetX = 1,35 + SetY = 1,-32 + SetZ = 1,28 + SetOpacity = 1,126 + SetY = 2,-12 + SetY = 3,8 + SetY = 4,28 + SetY = 5,48 + SetOpacity = 5,79 + SetY = 6,68 + SetOpacity = 6,32 + SetX = 7,-16 + SetY = 7,91 + SetX = 8,-41 + SetY = 8,82 + SetVisible = 9,false + + Graphic = Examples/! + Focus = User + SetFrame = 1,5 + SetX = 1,22 + SetY = 1,-9 + SetZ = 1,29 + SetOpacity = 1,126 + SetY = 2,11 + SetY = 3,31 + SetY = 4,51 + SetY = 5,71 + SetOpacity = 5,79 + SetY = 6,91 + SetOpacity = 6,32 + SetX = 7,-1 + SetY = 7,43 + SetOpacity = 7,79 + SetX = 8,25 + SetY = 8,72 + SetVisible = 9,false + + Graphic = Examples/! + Focus = User + SetFrame = 2,5 + SetX = 2,-16 + SetY = 2,-9 + SetZ = 2,31 + SetOpacity = 2,126 + SetY = 3,11 + SetY = 4,31 + SetY = 5,51 + SetY = 6,71 + SetOpacity = 6,79 + SetX = 7,25 + SetY = 7,52 + SetOpacity = 7,126 + SetVisible = 8,false + + Graphic = Examples/! + Focus = User + SetFrame = 2,5 + SetX = 2,-1 + SetY = 2,-57 + SetZ = 2,32 + SetOpacity = 2,126 + SetY = 3,-37 + SetY = 4,-17 + SetY = 5,3 + SetY = 6,23 + SetVisible = 7,false + + Graphic = Examples/! + Focus = User + SetFrame = 2,5 + SetX = 2,-41 + SetY = 2,-38 + SetZ = 2,35 + SetOpacity = 2,126 + SetVisible = 3,false + + Graphic = Examples/! + Focus = User + SetFrame = 3,5 + SetX = 3,-41 + SetY = 3,-18 + SetZ = 3,33 + SetOpacity = 3,126 + SetY = 4,2 + SetY = 5,22 + SetY = 6,42 + SetVisible = 7,false + + Graphic = Examples/! + Focus = User + SetFrame = 3,5 + SetX = 3,25 + SetY = 3,-28 + SetZ = 3,34 + SetOpacity = 3,126 + SetY = 4,-8 + SetY = 5,12 + SetY = 6,32 + SetVisible = 7,false + + Play = 0,decrease diff --git a/PBS/Animations/Example anims/Common/StatUp.txt b/PBS/Animations/Example anims/Common/StatUp.txt new file mode 100644 index 000000000..722e6df3a --- /dev/null +++ b/PBS/Animations/Example anims/Common/StatUp.txt @@ -0,0 +1,115 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,StatUp] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/! + Focus = User + SetFrame = 0,6 + SetX = 0,7 + SetY = 0,106 + SetZ = 0,28 + SetOpacity = 0,126 + SetY = 1,74 + SetY = 2,42 + SetY = 3,2 + SetY = 4,-30 + SetY = 5,-62 + SetY = 6,-82 + SetY = 7,-102 + SetY = 8,-122 + SetOpacity = 8,63 + SetY = 9,-142 + SetOpacity = 9,0 + + Graphic = Examples/! + Focus = User + SetFrame = 0,6 + SetX = 0,55 + SetY = 0,138 + SetZ = 0,29 + SetOpacity = 0,126 + SetY = 1,114 + SetX = 2,63 + SetY = 2,82 + SetX = 3,55 + SetY = 3,50 + SetY = 4,18 + SetY = 5,-14 + SetY = 6,-34 + SetY = 7,-54 + SetY = 8,-74 + SetOpacity = 8,63 + SetY = 9,-94 + SetOpacity = 9,0 + + Graphic = Examples/! + Focus = User + SetFrame = 2,6 + SetX = 2,-9 + SetY = 2,138 + SetZ = 2,30 + SetOpacity = 2,126 + SetY = 3,106 + SetY = 4,74 + SetY = 5,42 + SetY = 6,22 + SetY = 7,2 + SetY = 8,-18 + SetOpacity = 8,63 + SetY = 9,-38 + SetOpacity = 9,0 + + Graphic = Examples/! + Focus = User + SetFrame = 3,6 + SetX = 3,39 + SetY = 3,138 + SetZ = 3,31 + SetOpacity = 3,126 + SetY = 4,106 + SetY = 5,74 + SetY = 6,54 + SetY = 7,34 + SetY = 8,14 + SetOpacity = 8,63 + SetY = 9,-6 + SetOpacity = 9,0 + + Graphic = Examples/! + Focus = User + SetFrame = 5,6 + SetX = 5,-25 + SetY = 5,138 + SetZ = 5,32 + SetOpacity = 5,126 + SetY = 6,98 + SetY = 8,78 + SetOpacity = 8,63 + SetY = 9,58 + SetOpacity = 9,0 + + Graphic = Examples/! + Focus = User + SetFrame = 0,6 + SetX = 0,-41 + SetY = 0,138 + SetZ = 0,27 + SetOpacity = 0,126 + SetY = 1,114 + SetY = 2,82 + SetY = 3,50 + SetY = 4,18 + SetY = 5,-14 + SetY = 6,-34 + SetY = 7,-54 + SetY = 8,-74 + SetOpacity = 8,63 + SetY = 9,-94 + SetOpacity = 9,0 + + Play = 0,increase diff --git a/PBS/Animations/Example anims/Common/Sun.txt b/PBS/Animations/Example anims/Common/Sun.txt new file mode 100644 index 000000000..671f69946 --- /dev/null +++ b/PBS/Animations/Example anims/Common/Sun.txt @@ -0,0 +1,28 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Sun] +Name = Example anim +NoUser = true +NoTarget = true + + Graphic = Examples/weather + Focus = Foreground + SetX = 0,64 + SetY = 0,64 + SetOpacity = 0,0 + MoveX = 0,4,94 + MoveY = 0,4,94 + MoveOpacity = 0,5,255 + SetX = 4,94 + SetY = 4,94 + SetOpacity = 5,255 + SetOpacity = 10,255 + MoveOpacity = 10,5,0 + SetX = 11,94 + SetY = 11,94 + MoveX = 11,4,64 + MoveY = 11,4,64 + SetX = 15,64 + SetY = 15,64 + SetOpacity = 15,0 + diff --git a/PBS/Animations/Example anims/Common/SuperShiny.txt b/PBS/Animations/Example anims/Common/SuperShiny.txt new file mode 100644 index 000000000..751d2a327 --- /dev/null +++ b/PBS/Animations/Example anims/Common/SuperShiny.txt @@ -0,0 +1,83 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,SuperShiny] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 2,5 + SetX = 2,56 + SetY = 2,30 + SetZ = 2,28 + SetFrame = 3,6 + SetX = 4,-57 + SetY = 4,-18 + SetFrame = 5,7 + SetX = 6,-18 + SetY = 6,33 + SetX = 7,32 + SetY = 7,-42 + SetX = 8,-16 + SetY = 8,-29 + SetX = 9,32 + SetY = 9,22 + SetVisible = 10,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 3,5 + SetX = 3,-57 + SetY = 3,-18 + SetZ = 3,29 + SetX = 4,-18 + SetY = 4,33 + SetFrame = 5,6 + SetX = 6,32 + SetY = 6,-42 + SetX = 7,-16 + SetY = 7,-29 + SetX = 8,32 + SetY = 8,22 + SetVisible = 9,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 5,5 + SetX = 5,32 + SetY = 5,-42 + SetZ = 5,30 + SetX = 6,-16 + SetY = 6,-29 + SetX = 7,32 + SetY = 7,22 + SetVisible = 8,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 0,5 + SetX = 0,-24 + SetY = 0,14 + SetZ = 0,27 + SetFrame = 1,6 + SetFrame = 2,7 + SetFrame = 3,8 + SetFrame = 4,7 + SetX = 4,56 + SetY = 4,30 + SetFrame = 5,8 + SetX = 6,-57 + SetY = 6,-18 + SetX = 7,-18 + SetY = 7,33 + SetX = 8,32 + SetY = 8,-42 + SetX = 9,-16 + SetY = 9,-29 + SetX = 10,32 + SetY = 10,22 + + Play = 0,Shiny sparkle diff --git a/PBS/Animations/Example anims/Common/Toxic.txt b/PBS/Animations/Example anims/Common/Toxic.txt new file mode 100644 index 000000000..ce67b7dee --- /dev/null +++ b/PBS/Animations/Example anims/Common/Toxic.txt @@ -0,0 +1,18 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Toxic] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/State1 + Focus = User + SetFrame = 1,0 + SetZoomX = 1,200 + SetZoomY = 1,200 + MoveFrame = 1,14,14 + SetFrame = 15,14 + + Play = 0,Poison,80,80 diff --git a/PBS/Animations/Example anims/Common/Wrap.txt b/PBS/Animations/Example anims/Common/Wrap.txt new file mode 100644 index 000000000..4f2b058ee --- /dev/null +++ b/PBS/Animations/Example anims/Common/Wrap.txt @@ -0,0 +1,46 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Common,Wrap] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Struggle + Focus = User + SetFrame = 0,1 + SetX = 0,56 + SetY = 0,6 + SetZ = 0,28 + SetX = 1,96 + SetY = 1,-2 + SetX = 2,104 + SetY = 2,6 + SetX = 3,80 + SetY = 3,-2 + SetX = 4,48 + SetX = 5,80 + SetX = 6,112 + SetY = 6,6 + SetX = 7,96 + + Graphic = Examples/Struggle + Focus = User + SetX = 0,-64 + SetY = 0,6 + SetZ = 0,27 + SetX = 1,-96 + SetY = 1,-2 + SetX = 2,-144 + SetY = 2,6 + SetX = 3,-120 + SetY = 3,-2 + SetX = 4,-88 + SetX = 5,-128 + SetX = 6,-168 + SetX = 7,-120 + + Play = 0,Slash10,80 + Play = 3,Slash10,80 + Play = 6,Slash10,80 diff --git a/PBS/Animations/Example anims/Move/ABSORB.txt b/PBS/Animations/Example anims/Move/ABSORB.txt new file mode 100644 index 000000000..33c6ff400 --- /dev/null +++ b/PBS/Animations/Example anims/Move/ABSORB.txt @@ -0,0 +1,243 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ABSORB] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 0,11 + SetX = 0,179 + SetY = 0,-207 + SetZ = 0,27 + SetX = 1,134 + SetY = 1,-196 + SetX = 2,54 + SetY = 2,-148 + SetX = 3,4 + SetY = 3,-70 + SetX = 4,-15 + SetY = 4,-50 + SetX = 5,29 + SetY = 5,0 + SetFrame = 6,13 + SetX = 6,39 + SetY = 6,-40 + SetX = 7,0 + SetY = 7,-20 + SetFrame = 8,11 + SetX = 8,19 + SetY = 8,-50 + SetFrame = 9,6 + SetX = 9,-30 + SetY = 9,-59 + SetFrame = 10,7 + SetFrame = 11,8 + SetX = 12,14 + SetY = 12,-118 + SetFlip = 13,true + SetX = 13,-10 + SetY = 13,9 + SetFlip = 14,false + SetX = 14,-20 + SetY = 14,-128 + SetFlip = 15,true + SetX = 15,-25 + SetY = 15,-50 + SetFlip = 16,false + SetX = 16,25 + SetY = 16,-79 + SetX = 17,0 + SetY = 17,-10 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 1,11 + SetX = 1,209 + SetY = 1,-187 + SetZ = 1,28 + SetX = 2,184 + SetY = 2,-118 + SetX = 3,119 + SetY = 3,-50 + SetX = 4,69 + SetY = 4,-20 + SetFrame = 5,12 + SetX = 5,9 + SetY = 5,-40 + SetFrame = 6,11 + SetX = 6,-15 + SetY = 6,-59 + SetX = 7,34 + SetY = 7,0 + SetFrame = 8,5 + SetX = 8,-30 + SetY = 8,-59 + SetX = 9,25 + SetY = 9,-20 + SetFrame = 10,6 + SetFrame = 11,7 + SetX = 11,14 + SetY = 11,-118 + SetFrame = 12,8 + SetX = 12,25 + SetY = 12,-20 + SetFrame = 13,7 + SetX = 13,-20 + SetY = 13,-128 + SetFlip = 14,true + SetX = 14,-25 + SetY = 14,-50 + SetFlip = 15,false + SetX = 15,25 + SetY = 15,-79 + SetX = 16,0 + SetY = 16,-10 + SetVisible = 17,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 1,12 + SetX = 1,184 + SetY = 1,-217 + SetZ = 1,29 + SetX = 2,134 + SetY = 2,-168 + SetX = 3,89 + SetY = 3,-118 + SetX = 4,34 + SetY = 4,-70 + SetFrame = 5,13 + SetX = 5,100 + SetY = 5,-59 + SetFrame = 6,11 + SetX = 6,84 + SetY = 6,-40 + SetFrame = 7,12 + SetX = 7,4 + SetY = 7,-79 + SetVisible = 8,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 2,13 + SetX = 2,200 + SetY = 2,-207 + SetZ = 2,30 + SetX = 3,169 + SetY = 3,-148 + SetX = 4,144 + SetY = 4,-109 + SetFrame = 5,11 + SetX = 5,19 + SetY = 5,-89 + SetFrame = 6,12 + SetX = 6,50 + SetY = 6,-128 + SetFrame = 7,11 + SetX = 7,79 + SetY = 7,-109 + SetVisible = 8,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 2,11 + SetX = 2,169 + SetY = 2,-217 + SetZ = 2,31 + SetX = 3,139 + SetY = 3,-196 + SetX = 4,79 + SetY = 4,-168 + SetX = 5,159 + SetY = 5,-98 + SetX = 6,139 + SetY = 6,-148 + SetVisible = 7,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 3,11 + SetX = 3,204 + SetY = 3,-178 + SetZ = 3,32 + SetX = 4,189 + SetY = 4,-139 + SetFrame = 5,12 + SetX = 5,114 + SetY = 5,-178 + SetVisible = 6,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 4,12 + SetX = 4,169 + SetY = 4,-207 + SetZ = 4,33 + SetFrame = 5,11 + SetX = 5,184 + SetY = 5,-196 + SetVisible = 6,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 9,5 + SetX = 9,14 + SetY = 9,-118 + SetZ = 9,29 + SetFrame = 10,6 + SetFrame = 11,7 + SetX = 11,25 + SetY = 11,-20 + SetFlip = 12,true + SetX = 12,-5 + SetY = 12,9 + SetFrame = 13,6 + SetX = 13,-25 + SetY = 13,-50 + SetFlip = 14,false + SetX = 14,25 + SetY = 14,-79 + SetX = 15,0 + SetY = 15,-10 + SetVisible = 16,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 10,5 + SetFlip = 10,true + SetX = 10,-5 + SetY = 10,9 + SetZ = 10,30 + SetFrame = 11,6 + SetFlip = 12,false + SetX = 12,-20 + SetY = 12,-128 + SetFrame = 13,5 + SetX = 13,25 + SetY = 13,-79 + SetX = 14,0 + SetY = 14,-10 + SetVisible = 15,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 11,5 + SetX = 11,-20 + SetY = 11,-128 + SetZ = 11,31 + SetFlip = 12,true + SetX = 12,-25 + SetY = 12,-50 + SetVisible = 13,false + + Play = 0,Absorb2,80 + Play = 2,Absorb2,80 + Play = 5,Absorb2,80 + Play = 7,Absorb2,80 + Play = 8,Saint7,80 diff --git a/PBS/Animations/Example anims/Move/ACID.txt b/PBS/Animations/Example anims/Move/ACID.txt new file mode 100644 index 000000000..43399b9a4 --- /dev/null +++ b/PBS/Animations/Example anims/Move/ACID.txt @@ -0,0 +1,74 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ACID] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison2 + Focus = UserAndTarget + SetFrame = 1,4 + SetX = 1,14 + SetY = 1,-20 + SetZ = 1,28 + SetFrame = 2,5 + SetX = 2,34 + SetY = 2,-70 + SetFrame = 3,6 + SetX = 3,69 + SetY = 3,-128 + SetX = 4,114 + SetY = 4,-187 + SetX = 5,154 + SetY = 5,-207 + SetY = 6,-217 + SetVisible = 7,false + + Graphic = Examples/poison2 + Focus = UserAndTarget + SetFrame = 3,4 + SetX = 3,19 + SetY = 3,-20 + SetZ = 3,29 + SetFrame = 4,5 + SetX = 4,59 + SetY = 4,-118 + SetFrame = 5,6 + SetX = 5,109 + SetY = 5,-207 + SetVisible = 6,false + + Graphic = Examples/poison2 + Focus = UserAndTarget + SetFrame = 0,3 + SetX = 0,14 + SetY = 0,-20 + SetZ = 0,27 + SetFrame = 1,4 + SetX = 1,39 + SetY = 1,-98 + SetFrame = 2,5 + SetX = 2,69 + SetY = 2,-148 + SetFrame = 3,6 + SetX = 3,134 + SetY = 3,-187 + SetFrame = 4,7 + SetX = 4,179 + SetY = 4,-178 + SetFrame = 5,8 + SetFrame = 6,9 + SetFrame = 7,10 + SetFrame = 8,11 + SetFrame = 9,12 + SetFrame = 10,13 + SetFrame = 11,14 + SetOpacity = 12,100 + SetVisible = 13,false + + Play = 0,throw,80 + Play = 3,Poison,80 diff --git a/PBS/Animations/Example anims/Move/ACIDARMOR.txt b/PBS/Animations/Example anims/Move/ACIDARMOR.txt new file mode 100644 index 000000000..b598f4b26 --- /dev/null +++ b/PBS/Animations/Example anims/Move/ACIDARMOR.txt @@ -0,0 +1,35 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ACIDARMOR] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison3 + Focus = User + SetFrame = 0,1 + SetX = 0,8 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,2 + SetFrame = 2,3 + SetFrame = 3,4 + SetFrame = 4,5 + SetX = 4,16 + SetY = 4,-10 + SetFrame = 5,6 + SetX = 5,8 + SetFrame = 6,7 + SetY = 6,-18 + SetFrame = 7,8 + SetFrame = 8,9 + SetFrame = 9,10 + SetFrame = 10,11 + SetFrame = 11,12 + SetFrame = 12,13 + + Play = 0,throw,80 + Play = 0,Sound2,80 + Play = 0,Pollen,80 diff --git a/PBS/Animations/Example anims/Move/ACIDSPRAY.txt b/PBS/Animations/Example anims/Move/ACIDSPRAY.txt new file mode 100644 index 000000000..f89b927b6 --- /dev/null +++ b/PBS/Animations/Example anims/Move/ACIDSPRAY.txt @@ -0,0 +1,152 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ACIDSPRAY] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = Target + SetX = 0,-43 + SetY = 0,-88 + SetZ = 0,27 + SetZoomX = 0,85 + SetZoomY = 0,85 + SetY = 1,-79 + SetX = 3,-49 + SetY = 3,-48 + SetX = 4,-44 + SetY = 4,-20 + SetX = 5,-45 + SetY = 5,-3 + SetFrame = 6,1 + SetX = 6,-19 + SetY = 6,8 + SetAngle = 6,180 + SetX = 7,-54 + SetY = 7,20 + SetFrame = 8,3 + SetX = 8,29 + SetY = 8,55 + SetZoomX = 8,79 + SetZoomY = 8,79 + + Graphic = Examples/fly copy + Focus = Target + SetX = 1,-18 + SetY = 1,-88 + SetZ = 1,28 + SetZoomX = 1,85 + SetZoomY = 1,85 + SetX = 3,-30 + SetY = 3,-66 + SetX = 4,-29 + SetY = 4,-41 + SetY = 5,-15 + SetFrame = 6,1 + SetX = 6,-46 + SetY = 6,-4 + SetAngle = 6,180 + SetX = 7,-27 + SetY = 7,29 + SetFrame = 8,3 + SetX = 8,6 + SetY = 8,32 + SetZoomX = 8,79 + SetZoomY = 8,79 + + Graphic = Examples/fly copy + Focus = Target + SetX = 1,10 + SetY = 1,-79 + SetZ = 1,29 + SetZoomX = 1,85 + SetZoomY = 1,85 + SetX = 3,0 + SetY = 3,-56 + SetX = 4,-8 + SetY = 4,-33 + SetVisible = 5,false + + Graphic = Examples/fly copy + Focus = Target + SetX = 2,34 + SetY = 2,-87 + SetZ = 2,30 + SetZoomX = 2,85 + SetZoomY = 2,85 + SetX = 3,24 + SetY = 3,-73 + SetX = 4,18 + SetY = 4,-25 + SetX = 5,17 + SetY = 5,-7 + SetFrame = 6,1 + SetX = 6,23 + SetY = 6,6 + SetAngle = 6,180 + SetX = 7,-4 + SetY = 7,31 + SetFrame = 8,3 + SetX = 8,-43 + SetY = 8,33 + SetZoomX = 8,79 + SetZoomY = 8,79 + + Graphic = Examples/fly copy + Focus = Target + SetX = 2,57 + SetY = 2,-84 + SetZ = 2,31 + SetZoomX = 2,85 + SetZoomY = 2,85 + SetX = 3,54 + SetY = 3,-59 + SetX = 4,47 + SetY = 4,-31 + SetX = 5,46 + SetY = 5,-13 + SetFrame = 6,1 + SetY = 6,5 + SetAngle = 6,180 + SetX = 7,15 + SetY = 7,20 + SetFrame = 8,3 + SetX = 8,-78 + SetY = 8,29 + SetZoomX = 8,79 + SetZoomY = 8,79 + + Graphic = Examples/fly copy + Focus = Target + SetFrame = 5,1 + SetX = 5,-23 + SetY = 5,-10 + SetZ = 5,32 + SetZoomX = 5,85 + SetZoomY = 5,85 + SetAngle = 5,180 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = Target + SetFrame = 6,1 + SetX = 6,-2 + SetY = 6,-5 + SetZ = 6,29 + SetZoomX = 6,85 + SetZoomY = 6,85 + SetAngle = 6,180 + SetFrame = 7,3 + SetX = 7,36 + SetY = 7,33 + SetX = 8,-20 + SetY = 8,38 + SetZoomX = 8,79 + SetZoomY = 8,79 + + Play = 0,Substitute,80 diff --git a/PBS/Animations/Example anims/Move/ACROBATICS.txt b/PBS/Animations/Example anims/Move/ACROBATICS.txt new file mode 100644 index 000000000..64d194e24 --- /dev/null +++ b/PBS/Animations/Example anims/Move/ACROBATICS.txt @@ -0,0 +1,46 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ACROBATICS] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 2,12 + SetX = 2,-8 + SetY = 2,37 + SetZ = 2,28 + SetZoomX = 2,41 + SetZoomY = 2,41 + SetZoomX = 3,39 + SetZoomY = 3,39 + SetZoomX = 5,62 + SetZoomY = 5,62 + SetX = 6,-24 + SetY = 6,35 + SetZoomX = 6,84 + SetZoomY = 6,84 + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 0,13 + SetX = 0,8 + SetY = 0,-10 + SetZ = 0,27 + SetZoomX = 0,25 + SetZoomY = 0,25 + SetZoomX = 1,47 + SetZoomY = 1,47 + SetZoomX = 3,70 + SetZoomY = 3,70 + SetZoomX = 4,81 + SetZoomY = 4,81 + SetZoomX = 5,86 + SetZoomY = 5,86 + + Play = 0,Take Down,100,112 diff --git a/PBS/Animations/Example anims/Move/ACUPRESSURE.txt b/PBS/Animations/Example anims/Move/ACUPRESSURE.txt new file mode 100644 index 000000000..85305dbfc --- /dev/null +++ b/PBS/Animations/Example anims/Move/ACUPRESSURE.txt @@ -0,0 +1,120 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ACUPRESSURE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/mixed status + Focus = Target + SetFrame = 0,13 + SetX = 0,25 + SetY = 0,-60 + SetZ = 0,27 + SetZoomX = 0,200 + SetZoomY = 0,200 + SetX = 1,23 + SetY = 1,-62 + SetX = 2,21 + SetX = 3,20 + SetY = 3,-60 + SetY = 4,-63 + SetX = 5,23 + SetY = 5,-62 + SetX = 6,19 + SetY = 6,-64 + SetX = 7,21 + SetY = 7,-61 + SetX = 8,19 + SetY = 8,-64 + SetVisible = 9,false + + Graphic = Examples/mixed status + Focus = Target + SetFrame = 4,14 + SetX = 4,1 + SetY = 4,-12 + SetZ = 4,28 + SetX = 5,5 + SetY = 5,-8 + SetX = 6,13 + SetY = 7,-6 + SetX = 8,11 + SetY = 8,-16 + SetVisible = 9,false + + Graphic = Examples/mixed status + Focus = Target + SetFrame = 5,15 + SetX = 5,-17 + SetY = 5,31 + SetZ = 5,29 + SetX = 6,-15 + SetY = 6,28 + SetX = 7,-17 + SetY = 7,29 + SetFrame = 8,14 + SetX = 8,62 + SetY = 8,20 + SetVisible = 9,false + + Graphic = Examples/mixed status + Focus = Target + SetFrame = 6,15 + SetX = 6,43 + SetY = 6,-4 + SetZ = 6,30 + SetFrame = 7,14 + SetX = 7,65 + SetY = 7,23 + SetFrame = 8,15 + SetX = 8,-18 + SetY = 8,25 + SetVisible = 9,false + + Graphic = Examples/mixed status + Focus = Target + SetFrame = 7,15 + SetX = 7,44 + SetY = 7,-5 + SetZ = 7,31 + SetY = 8,-6 + SetVisible = 9,false + + Graphic = Examples/mixed status + Focus = Target + SetFrame = 8,15 + SetX = 8,46 + SetY = 8,-4 + SetZ = 8,32 + SetVisible = 9,false + + Graphic = Examples/mixed status + Focus = Target + SetFrame = 8,14 + SetX = 8,61 + SetY = 8,19 + SetZ = 8,33 + SetVisible = 9,false + + Graphic = Examples/mixed status + Focus = Target + SetFrame = 8,15 + SetX = 8,-16 + SetY = 8,25 + SetZ = 8,34 + SetVisible = 9,false + + Graphic = Examples/mixed status + Focus = Target + SetFrame = 8,14 + SetX = 8,11 + SetY = 8,-16 + SetZ = 8,35 + SetVisible = 9,false + + Play = 0,Acupressure diff --git a/PBS/Animations/Example anims/Move/AERIALACE.txt b/PBS/Animations/Example anims/Move/AERIALACE.txt new file mode 100644 index 000000000..b124afb13 --- /dev/null +++ b/PBS/Animations/Example anims/Move/AERIALACE.txt @@ -0,0 +1,438 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,AERIALACE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + SetOpacity = 1,170 + SetOpacity = 2,85 + SetOpacity = 3,0 + SetOpacity = 6,255 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Aerial Ace + Focus = Target + SetX = 0,84 + SetY = 0,-50 + SetZ = 0,27 + SetOpacity = 0,128 + SetVisible = 1,false + + Graphic = USER + Focus = User + SetX = 1,-52 + SetY = 1,6 + SetZ = 1,27 + SetOpacity = 2,170 + SetOpacity = 3,85 + SetVisible = 4,false + + Graphic = Examples/Aerial Ace + Focus = Target + SetX = 1,58 + SetY = 1,-25 + SetZ = 1,28 + SetToneRed = 1,-37 + SetToneGreen = 1,-37 + SetToneBlue = 1,-37 + SetVisible = 2,false + + Graphic = USER + Focus = User + SetX = 2,-69 + SetY = 2,34 + SetZ = 2,28 + SetOpacity = 3,170 + SetOpacity = 4,85 + SetVisible = 5,false + + Graphic = Examples/Aerial Ace + Focus = Target + SetX = 2,27 + SetY = 2,2 + SetZ = 2,29 + SetToneRed = 2,-74 + SetToneGreen = 2,-74 + SetToneBlue = 2,-74 + SetVisible = 3,false + + Graphic = USER + Focus = User + SetX = 3,-28 + SetY = 3,48 + SetZ = 3,29 + SetX = 4,35 + SetY = 4,35 + SetX = 5,12 + SetY = 5,6 + SetVisible = 6,false + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 3,1 + SetX = 3,-13 + SetY = 3,41 + SetZ = 3,30 + SetVisible = 4,false + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 4,1 + SetX = 4,-53 + SetY = 4,77 + SetZ = 4,27 + SetToneRed = 4,214 + SetToneGreen = 4,100 + SetToneBlue = 4,100 + SetFrame = 5,3 + SetX = 5,-33 + SetY = 5,55 + SetToneRed = 5,0 + SetToneGreen = 5,0 + SetToneBlue = 5,0 + SetX = 6,6 + SetY = 6,22 + SetX = 7,31 + SetY = 7,-1 + SetFrame = 8,2 + SetX = 8,68 + SetY = 8,-34 + SetX = 9,92 + SetY = 9,-60 + SetOpacity = 9,128 + SetFrame = 10,6 + SetX = 10,-97 + SetY = 10,-64 + SetOpacity = 10,255 + SetX = 11,-116 + SetY = 11,-90 + SetOpacity = 11,128 + + Graphic = USER + Focus = User + SetX = 4,-28 + SetY = 4,48 + SetZ = 4,30 + SetOpacity = 4,170 + SetX = 5,35 + SetY = 5,35 + SetX = 6,12 + SetY = 6,6 + SetVisible = 7,false + + Graphic = USER + Focus = User + SetX = 5,-28 + SetY = 5,48 + SetZ = 5,31 + SetOpacity = 5,85 + SetX = 6,35 + SetY = 6,35 + SetX = 7,11 + SetY = 7,6 + SetVisible = 8,false + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 6,6 + SetX = 6,-3 + SetY = 6,22 + SetZ = 6,28 + SetOpacity = 6,128 + SetX = 7,7 + SetY = 7,-14 + SetOpacity = 7,255 + SetX = 8,-57 + SetY = 8,-4 + SetX = 9,-92 + SetY = 9,-30 + SetX = 10,-75 + SetY = 10,-93 + SetOpacity = 10,128 + SetX = 11,106 + SetY = 11,-90 + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 6,6 + SetX = 6,9 + SetY = 6,14 + SetZ = 6,29 + SetOpacity = 6,128 + SetX = 7,-16 + SetY = 7,2 + SetOpacity = 7,255 + SetX = 8,-34 + SetY = 8,-39 + SetX = 9,-77 + SetY = 9,-73 + SetX = 10,-31 + SetY = 10,-75 + SetX = 11,-39 + SetY = 11,-99 + SetOpacity = 11,128 + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 6,6 + SetX = 6,26 + SetY = 6,13 + SetZ = 6,32 + SetOpacity = 6,128 + SetX = 7,56 + SetY = 7,2 + SetOpacity = 7,255 + SetX = 8,95 + SetY = 8,49 + SetX = 9,118 + SetY = 9,62 + SetOpacity = 9,128 + SetX = 10,126 + SetY = 10,-37 + SetVisible = 11,false + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 6,6 + SetX = 6,24 + SetY = 6,29 + SetZ = 6,33 + SetOpacity = 6,128 + SetX = 7,55 + SetY = 7,31 + SetOpacity = 7,255 + SetX = 8,59 + SetY = 8,-39 + SetX = 9,69 + SetY = 9,-58 + SetVisible = 10,false + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 6,6 + SetX = 6,-21 + SetY = 6,16 + SetZ = 6,34 + SetOpacity = 6,128 + SetX = 7,21 + SetY = 7,-19 + SetOpacity = 7,255 + SetX = 8,36 + SetY = 8,-30 + SetX = 9,27 + SetY = 9,-64 + SetVisible = 10,false + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 7,6 + SetX = 7,35 + SetY = 7,-22 + SetZ = 7,30 + SetX = 8,8 + SetY = 8,-39 + SetX = 9,-28 + SetY = 9,-58 + SetX = 10,93 + SetY = 10,-72 + SetX = 11,27 + SetY = 11,-89 + SetOpacity = 11,128 + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 7,6 + SetX = 7,48 + SetY = 7,-10 + SetZ = 7,35 + SetX = 8,71 + SetY = 8,-18 + SetX = 9,103 + SetY = 9,-34 + SetVisible = 10,false + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 8,6 + SetX = 8,95 + SetY = 8,-7 + SetZ = 8,31 + SetX = 9,123 + SetY = 9,1 + SetOpacity = 9,128 + SetX = 10,26 + SetY = 10,-59 + SetOpacity = 10,255 + SetVisible = 11,false + + Play = 0,Ace,80 +#------------------------------- +[OppMove,AERIALACE] +Name = Example anim + + SetOpacity = 1,170 + SetOpacity = 2,85 + SetOpacity = 3,0 + SetOpacity = 5,255 + + + Graphic = Examples/Aerial Ace + Focus = Target + SetX = 0,101 + SetY = 0,-56 + SetZ = 0,27 + SetOpacity = 0,128 + SetX = 1,81 + SetY = 1,-39 + SetOpacity = 1,255 + SetFrame = 2,1 + SetX = 2,48 + SetY = 2,-8 + SetX = 3,16 + SetY = 3,24 + SetVisible = 4,false + + Graphic = USER + Focus = User + SetX = 1,-51 + SetY = 1,18 + SetZ = 1,28 + SetOpacity = 2,170 + SetOpacity = 3,85 + SetX = 4,49 + SetY = 4,12 + SetOpacity = 4,255 + SetOpacity = 5,170 + SetOpacity = 6,85 + SetVisible = 7,false + + Graphic = USER + Focus = User + SetX = 2,-16 + SetY = 2,44 + SetZ = 2,29 + SetX = 3,34 + SetY = 3,38 + SetOpacity = 4,170 + SetVisible = 5,false + + Graphic = USER + Focus = User + SetX = 3,-16 + SetY = 3,44 + SetZ = 3,30 + SetOpacity = 3,170 + SetOpacity = 4,85 + SetX = 5,34 + SetY = 5,38 + SetVisible = 6,false + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 5,7 + SetX = 5,54 + SetY = 5,27 + SetZ = 5,29 + SetOpacity = 5,128 + SetX = 6,1 + SetY = 6,-32 + SetOpacity = 6,255 + SetX = 7,-16 + SetY = 7,-52 + SetX = 8,-41 + SetY = 8,-55 + SetX = 9,-60 + SetY = 9,-64 + SetX = 10,-75 + SetY = 10,-73 + SetOpacity = 10,170 + SetX = 11,-97 + SetY = 11,-85 + SetOpacity = 11,85 + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 5,7 + SetX = 5,30 + SetY = 5,13 + SetZ = 5,31 + SetOpacity = 5,128 + SetX = 6,-36 + SetY = 6,19 + SetOpacity = 6,255 + SetX = 7,-49 + SetY = 7,16 + SetX = 8,-64 + SetY = 8,28 + SetX = 9,-93 + SetY = 9,32 + SetX = 10,-111 + SetY = 10,36 + SetOpacity = 10,170 + SetVisible = 11,false + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 5,7 + SetX = 5,-3 + SetY = 5,3 + SetZ = 5,32 + SetOpacity = 5,128 + SetX = 6,43 + SetY = 6,-35 + SetOpacity = 6,255 + SetX = 7,67 + SetY = 7,-57 + SetX = 8,76 + SetY = 8,-71 + SetX = 9,100 + SetY = 9,-95 + SetOpacity = 9,170 + SetX = 10,111 + SetY = 10,-102 + SetOpacity = 10,85 + SetVisible = 11,false + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 5,7 + SetX = 5,-27 + SetY = 5,26 + SetZ = 5,33 + SetOpacity = 5,128 + SetX = 6,69 + SetY = 6,20 + SetOpacity = 6,255 + SetX = 7,68 + SetY = 7,15 + SetX = 8,100 + SetY = 8,8 + SetX = 9,136 + SetY = 9,18 + SetX = 10,155 + SetY = 10,20 + SetOpacity = 10,170 + SetX = 11,170 + SetY = 11,22 + SetOpacity = 11,85 + + Graphic = Examples/Aerial Ace + Focus = Target + SetFrame = 5,7 + SetX = 5,19 + SetY = 5,50 + SetZ = 5,34 + SetOpacity = 5,128 + SetX = 6,45 + SetY = 6,53 + SetOpacity = 6,255 + SetX = 7,61 + SetY = 7,50 + SetX = 8,83 + SetY = 8,60 + SetVisible = 9,false + + Play = 0,Ace,80 diff --git a/PBS/Animations/Example anims/Move/AGILITY.txt b/PBS/Animations/Example anims/Move/AGILITY.txt new file mode 100644 index 000000000..13b74a245 --- /dev/null +++ b/PBS/Animations/Example anims/Move/AGILITY.txt @@ -0,0 +1,91 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,AGILITY] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/! + Focus = User + SetFrame = 0,5 + SetX = 0,-98 + SetY = 0,-36 + SetZ = 0,28 + SetAngle = 0,90 + SetX = 1,-73 + SetX = 2,-48 + SetX = 3,-18 + SetX = 4,7 + SetX = 5,32 + SetX = 6,57 + SetX = 7,82 + SetX = 8,107 + SetX = 9,132 + + Graphic = Examples/! + Focus = User + SetFrame = 0,5 + SetX = 0,-53 + SetY = 0,-93 + SetZ = 0,29 + SetAngle = 0,90 + SetX = 1,-23 + SetX = 2,12 + SetX = 3,47 + SetX = 4,82 + SetX = 5,117 + SetX = 6,152 + SetX = 7,187 + SetVisible = 8,false + + Graphic = Examples/! + Focus = User + SetFrame = 1,5 + SetX = 1,-88 + SetY = 1,49 + SetZ = 1,30 + SetAngle = 1,90 + SetX = 2,-63 + SetX = 3,-38 + SetX = 4,-13 + SetX = 5,12 + SetX = 6,37 + SetX = 7,62 + SetX = 8,87 + SetX = 9,112 + + Graphic = Examples/! + Focus = User + SetFrame = 2,5 + SetX = 2,-98 + SetY = 2,-80 + SetZ = 2,31 + SetAngle = 2,90 + SetX = 3,-63 + SetX = 4,-28 + SetX = 5,7 + SetX = 6,42 + SetX = 7,77 + SetX = 8,112 + SetX = 9,147 + + Graphic = Examples/! + Focus = User + SetFrame = 0,5 + SetX = 0,-76 + SetY = 0,13 + SetZ = 0,27 + SetAngle = 0,90 + SetX = 1,-46 + SetX = 2,-16 + SetX = 3,14 + SetX = 4,44 + SetX = 5,74 + SetX = 6,104 + SetX = 7,134 + SetX = 8,164 + SetX = 9,194 + + Play = 0,Psych Up,100,82 diff --git a/PBS/Animations/Example anims/Move/ALLYSWITCH.txt b/PBS/Animations/Example anims/Move/ALLYSWITCH.txt new file mode 100644 index 000000000..1c577cf6a --- /dev/null +++ b/PBS/Animations/Example anims/Move/ALLYSWITCH.txt @@ -0,0 +1,53 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ALLYSWITCH] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 0,10 + SetX = 0,9 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,11 + SetX = 1,11 + SetY = 1,0 + SetFrame = 2,12 + SetX = 2,9 + SetY = 2,-2 + SetZoomX = 3,110 + SetZoomY = 3,110 + SetY = 4,-4 + SetZoomX = 4,125 + SetZoomY = 4,125 + SetX = 5,13 + SetY = 5,-7 + SetZoomX = 5,165 + SetZoomY = 5,165 + SetX = 6,14 + SetY = 6,-8 + SetZoomX = 6,186 + SetZoomY = 6,186 + SetX = 7,15 + SetY = 7,-9 + SetZoomX = 7,202 + SetZoomY = 7,202 + SetY = 8,-11 + SetZoomX = 8,230 + SetZoomY = 8,230 + SetX = 9,20 + SetY = 9,-17 + SetZoomX = 9,300 + SetZoomY = 9,300 + SetOpacity = 14,212 + SetOpacity = 15,170 + SetOpacity = 16,127 + SetOpacity = 17,85 + SetOpacity = 18,42 + SetOpacity = 19,0 + + Play = 0,Uproar diff --git a/PBS/Animations/Example anims/Move/AMNESIA.txt b/PBS/Animations/Example anims/Move/AMNESIA.txt new file mode 100644 index 000000000..1deb700cd --- /dev/null +++ b/PBS/Animations/Example anims/Move/AMNESIA.txt @@ -0,0 +1,24 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,AMNESIA] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/mixed + Focus = User + SetFrame = 0,3 + SetX = 0,44 + SetY = 0,-16 + SetZoomX = 0,200 + SetZoomY = 0,200 + SetOpacity = 0,0 + MoveOpacity = 0,4,255 + SetOpacity = 4,255 + SetOpacity = 10,255 + MoveOpacity = 10,4,0 + SetOpacity = 14,0 + + Play = 0,Yawn diff --git a/PBS/Animations/Example anims/Move/ANCIENTPOWER.txt b/PBS/Animations/Example anims/Move/ANCIENTPOWER.txt new file mode 100644 index 000000000..5296beb64 --- /dev/null +++ b/PBS/Animations/Example anims/Move/ANCIENTPOWER.txt @@ -0,0 +1,384 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ANCIENTPOWER] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Ancient-PowerFilesheet + Focus = User + SetFrame = 0,10 + SetX = 0,-89 + SetY = 0,4 + SetZ = 0,27 + SetX = 1,-85 + SetY = 1,-19 + SetX = 2,-75 + SetY = 2,-34 + SetX = 3,-73 + SetY = 3,-52 + SetX = 4,-64 + SetY = 4,-79 + SetX = 5,-32 + SetY = 5,-100 + SetY = 6,-92 + SetY = 7,-100 + SetY = 8,-92 + SetX = 9,-48 + SetY = 9,-84 + SetX = 10,-64 + SetVisible = 12,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = User + SetFrame = 0,11 + SetX = 0,177 + SetY = 0,20 + SetZ = 0,28 + SetX = 1,176 + SetY = 1,-12 + SetX = 2,172 + SetY = 2,-31 + SetX = 3,163 + SetY = 3,-51 + SetX = 4,144 + SetY = 4,-67 + SetX = 5,125 + SetY = 5,-96 + SetY = 6,-88 + SetY = 7,-96 + SetY = 8,-88 + SetX = 9,128 + SetY = 9,-80 + SetX = 10,144 + SetY = 10,-88 + SetVisible = 12,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = User + SetFrame = 0,9 + SetX = 0,12 + SetY = 0,51 + SetZ = 0,29 + SetY = 1,27 + SetX = 2,11 + SetY = 2,12 + SetX = 3,12 + SetY = 3,-17 + SetX = 4,11 + SetY = 4,-44 + SetX = 5,12 + SetY = 5,-72 + SetY = 6,-64 + SetY = 7,-72 + SetY = 8,-64 + SetY = 9,-48 + SetY = 10,-24 + SetX = 11,40 + SetY = 11,-8 + SetVisible = 12,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = User + SetFrame = 6,6 + SetX = 6,-56 + SetY = 6,11 + SetZ = 6,30 + SetY = 7,-13 + SetX = 8,-48 + SetY = 8,-29 + SetX = 9,-16 + SetY = 9,-61 + SetX = 10,-32 + SetY = 10,-53 + SetX = 11,-16 + SetY = 11,-77 + SetVisible = 12,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = User + SetFrame = 6,8 + SetX = 6,112 + SetY = 6,17 + SetZ = 6,31 + SetY = 7,-7 + SetY = 8,-31 + SetX = 9,88 + SetY = 9,-63 + SetX = 10,104 + SetY = 10,-39 + SetY = 11,-7 + SetVisible = 12,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = User + SetFrame = 6,13 + SetX = 6,32 + SetY = 6,41 + SetZ = 6,32 + SetY = 7,17 + SetVisible = 8,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = User + SetFrame = 8,5 + SetX = 8,56 + SetY = 8,-3 + SetZ = 8,33 + SetY = 9,-27 + SetY = 10,-83 + SetX = 11,88 + SetY = 11,-91 + SetVisible = 12,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = User + SetFrame = 10,6 + SetX = 10,-16 + SetY = 10,21 + SetZ = 10,32 + SetX = 11,-24 + SetY = 11,-3 + SetVisible = 12,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = User + SetFrame = 10,10 + SetX = 10,56 + SetY = 10,56 + SetZ = 10,34 + SetY = 11,24 + SetVisible = 12,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = UserAndTarget + SetFrame = 12,10 + SetX = 12,-50 + SetY = 12,-93 + SetZ = 12,27 + SetY = 13,-106 + SetY = 14,-93 + SetY = 15,-81 + SetY = 16,-68 + SetY = 17,-56 + SetX = 20,-37 + SetY = 20,-68 + SetX = 21,-25 + SetY = 21,-93 + SetX = 22,0 + SetY = 22,-118 + SetX = 23,12 + SetY = 23,-131 + SetY = 24,-118 + SetX = 25,31 + SetY = 25,-131 + SetX = 26,56 + SetY = 26,-168 + SetX = 27,100 + SetY = 27,-181 + SetX = 28,150 + SetY = 28,-218 + SetX = 29,181 + SetVisible = 30,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = UserAndTarget + SetFrame = 12,11 + SetX = 12,125 + SetY = 12,-112 + SetZ = 12,28 + SetX = 13,131 + SetY = 13,-125 + SetY = 14,-112 + SetY = 15,-100 + SetY = 16,-87 + SetY = 17,-75 + SetX = 20,143 + SetY = 20,-100 + SetX = 21,162 + SetY = 21,-125 + SetX = 22,181 + SetY = 22,-150 + SetX = 23,206 + SetY = 23,-187 + SetVisible = 24,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = UserAndTarget + SetFrame = 12,9 + SetX = 12,31 + SetY = 12,0 + SetZ = 12,29 + SetX = 13,37 + SetY = 13,12 + SetY = 14,25 + SetY = 15,37 + SetY = 16,50 + SetY = 17,62 + SetX = 20,50 + SetY = 20,25 + SetX = 21,62 + SetY = 21,0 + SetX = 22,81 + SetY = 22,-37 + SetX = 23,87 + SetY = 23,-50 + SetX = 24,112 + SetY = 24,-75 + SetX = 25,131 + SetY = 25,-100 + SetX = 26,156 + SetY = 26,-137 + SetVisible = 27,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = UserAndTarget + SetFrame = 12,6 + SetX = 12,-6 + SetY = 12,-157 + SetZ = 12,30 + SetY = 13,-182 + SetY = 14,-170 + SetY = 15,-157 + SetY = 16,-145 + SetY = 17,-132 + SetX = 20,18 + SetY = 20,-145 + SetX = 21,37 + SetY = 21,-157 + SetX = 22,56 + SetY = 22,-182 + SetX = 23,62 + SetY = 23,-195 + SetX = 24,81 + SetY = 24,-207 + SetX = 25,106 + SetY = 25,-182 + SetX = 26,137 + SetY = 26,-195 + SetX = 27,181 + SetY = 27,-207 + SetX = 28,212 + SetY = 28,-182 + SetVisible = 29,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = UserAndTarget + SetFrame = 12,8 + SetX = 12,100 + SetY = 12,1 + SetZ = 12,31 + SetX = 13,112 + SetY = 13,-10 + SetY = 14,1 + SetY = 15,14 + SetY = 16,26 + SetY = 17,39 + SetX = 20,125 + SetY = 20,14 + SetX = 21,143 + SetY = 21,-10 + SetX = 22,162 + SetY = 22,-48 + SetX = 23,181 + SetY = 23,-98 + SetX = 24,200 + SetY = 24,-135 + SetVisible = 25,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = UserAndTarget + SetFrame = 12,6 + SetX = 12,-25 + SetY = 12,-17 + SetZ = 12,32 + SetX = 13,-31 + SetY = 14,-4 + SetY = 15,7 + SetY = 16,20 + SetY = 17,32 + SetX = 20,-12 + SetY = 20,20 + SetX = 21,6 + SetY = 21,7 + SetX = 22,25 + SetY = 22,-17 + SetX = 23,31 + SetY = 24,-4 + SetX = 25,50 + SetY = 25,-42 + SetX = 26,87 + SetY = 26,-79 + SetX = 27,125 + SetY = 27,-92 + SetX = 28,156 + SetY = 28,-129 + SetX = 29,187 + SetY = 29,-142 + SetX = 30,219 + SetY = 30,-175 + SetVisible = 31,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = UserAndTarget + SetFrame = 12,5 + SetX = 12,81 + SetY = 12,-154 + SetZ = 12,33 + SetX = 13,87 + SetY = 13,-179 + SetY = 14,-167 + SetY = 15,-154 + SetY = 16,-142 + SetY = 17,-129 + SetX = 20,100 + SetY = 20,-142 + SetX = 21,118 + SetY = 21,-154 + SetX = 22,137 + SetY = 22,-179 + SetX = 23,143 + SetY = 23,-193 + SetX = 24,168 + SetY = 24,-206 + SetX = 25,206 + SetY = 25,-218 + SetVisible = 26,false + + Graphic = Examples/Ancient-PowerFilesheet + Focus = UserAndTarget + SetFrame = 12,10 + SetX = 12,18 + SetY = 12,25 + SetZ = 12,34 + SetX = 13,25 + SetY = 13,12 + SetY = 14,25 + SetY = 15,37 + SetY = 16,50 + SetY = 17,62 + SetX = 20,37 + SetY = 20,25 + SetX = 21,56 + SetY = 21,0 + SetX = 22,75 + SetY = 22,-25 + SetX = 23,87 + SetY = 23,-12 + SetY = 24,0 + SetX = 25,137 + SetY = 25,-37 + SetX = 26,156 + SetY = 26,-75 + SetX = 27,187 + SetY = 27,-100 + SetX = 28,237 + SetY = 28,-137 + SetVisible = 29,false + + Play = 0,Earth4 + Play = 24,Earth5 diff --git a/PBS/Animations/Example anims/Move/AQUARING.txt b/PBS/Animations/Example anims/Move/AQUARING.txt new file mode 100644 index 000000000..64b71d41f --- /dev/null +++ b/PBS/Animations/Example anims/Move/AQUARING.txt @@ -0,0 +1,74 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,AQUARING] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = User + SetX = 2,5 + SetY = 2,12 + SetZ = 2,28 + SetFrame = 3,9 + SetX = 3,3 + SetY = 3,4 + SetFrame = 4,8 + SetX = 4,-16 + SetY = 4,0 + SetX = 5,-3 + SetY = 5,-3 + + Graphic = Examples/fly copy + Focus = User + SetX = 3,12 + SetY = 3,15 + SetZ = 3,29 + SetFrame = 4,7 + SetX = 4,-10 + SetY = 4,1 + SetX = 5,2 + SetY = 5,-4 + + Graphic = Examples/fly copy + Focus = User + SetFrame = 4,5 + SetX = 4,-4 + SetY = 4,-2 + SetZ = 4,30 + SetVisible = 5,false + + Graphic = Examples/fly copy + Focus = User + SetX = 4,2 + SetY = 4,8 + SetZ = 4,31 + SetVisible = 5,false + + Graphic = Examples/fly copy + Focus = User + SetX = 0,10 + SetY = 0,9 + SetZ = 0,27 + SetX = 1,11 + SetY = 1,11 + SetFrame = 2,5 + SetX = 2,4 + SetY = 2,-2 + SetZoomX = 2,110 + SetZoomY = 2,110 + SetFrame = 3,8 + SetX = 3,-5 + SetY = 3,2 + SetZoomX = 3,100 + SetZoomY = 3,100 + SetFrame = 4,9 + SetX = 4,-2 + SetY = 4,4 + SetFrame = 5,0 + SetX = 5,10 + SetY = 5,8 + + Play = 0,Weatherball,80 diff --git a/PBS/Animations/Example anims/Move/AROMATHERAPY.txt b/PBS/Animations/Example anims/Move/AROMATHERAPY.txt new file mode 100644 index 000000000..55904b151 --- /dev/null +++ b/PBS/Animations/Example anims/Move/AROMATHERAPY.txt @@ -0,0 +1,196 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,AROMATHERAPY] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Anima (1) + Focus = Foreground + SetX = 0,608 + SetY = 0,-50 + SetZ = 0,27 + SetX = 1,560 + SetY = 1,-2 + SetX = 2,496 + SetY = 2,30 + SetX = 3,416 + SetY = 3,70 + SetX = 4,296 + SetY = 4,134 + SetX = 5,176 + SetY = 5,190 + SetX = 6,120 + SetY = 6,222 + SetFrame = 7,2 + SetX = 7,104 + SetY = 7,118 + SetFrame = 8,3 + SetX = 8,224 + SetY = 8,190 + SetFrame = 9,2 + SetX = 9,248 + SetY = 9,174 + + Graphic = Examples/Anima (1) + Focus = Foreground + SetFrame = 1,1 + SetX = 1,664 + SetY = 1,22 + SetZ = 1,28 + SetX = 2,608 + SetY = 2,94 + SetX = 3,520 + SetY = 3,182 + SetX = 4,480 + SetY = 4,230 + SetFrame = 5,2 + SetX = 5,304 + SetY = 5,62 + SetX = 6,200 + SetY = 6,94 + SetFrame = 7,3 + SetX = 7,296 + SetY = 7,150 + SetFrame = 8,2 + SetX = 8,336 + SetY = 8,118 + SetFrame = 9,3 + SetX = 9,112 + SetY = 9,142 + + Graphic = Examples/Anima (1) + Focus = Foreground + SetFrame = 2,2 + SetX = 2,584 + SetY = 2,-34 + SetZ = 2,29 + SetX = 3,528 + SetY = 3,-2 + SetX = 4,424 + SetY = 4,38 + SetFrame = 5,3 + SetX = 5,312 + SetY = 5,134 + SetX = 6,256 + SetY = 6,214 + SetFrame = 7,1 + SetX = 7,88 + SetY = 7,126 + SetFrame = 8,3 + SetX = 8,184 + SetY = 8,86 + SetVisible = 9,false + + Graphic = Examples/Anima (1) + Focus = Foreground + SetFrame = 2,3 + SetX = 2,464 + SetY = 2,-42 + SetZ = 2,30 + SetX = 3,408 + SetY = 3,6 + SetX = 4,376 + SetY = 4,70 + SetFrame = 5,0 + SetX = 5,448 + SetY = 5,166 + SetX = 6,376 + SetY = 6,222 + SetFrame = 7,1 + SetX = 7,512 + SetY = 7,198 + SetVisible = 8,false + + Graphic = Examples/Anima (1) + Focus = Foreground + SetX = 3,672 + SetY = 3,46 + SetZ = 3,31 + SetX = 4,544 + SetY = 4,102 + SetFrame = 5,2 + SetX = 5,560 + SetY = 5,222 + SetFrame = 6,3 + SetX = 6,392 + SetY = 6,94 + SetFrame = 7,2 + SetX = 7,416 + SetY = 7,62 + SetVisible = 8,false + + Graphic = Examples/Anima (1) + Focus = Foreground + SetFrame = 3,2 + SetX = 3,664 + SetY = 3,118 + SetZ = 3,32 + SetX = 4,616 + SetY = 4,166 + SetFrame = 5,3 + SetX = 5,480 + SetY = 5,54 + SetFrame = 6,1 + SetX = 6,160 + SetY = 6,70 + SetFrame = 7,3 + SetX = 7,280 + SetY = 7,30 + SetVisible = 8,false + + Graphic = Examples/Anima (1) + Focus = Foreground + SetFrame = 3,3 + SetX = 3,640 + SetY = 3,-26 + SetZ = 3,33 + SetX = 4,576 + SetY = 4,14 + SetFrame = 5,1 + SetX = 5,224 + SetY = 5,22 + SetFrame = 6,0 + SetX = 6,128 + SetVisible = 7,false + + Graphic = Examples/Anima (1) + Focus = Foreground + SetFrame = 4,1 + SetX = 4,336 + SetY = 4,-26 + SetZ = 4,34 + SetFrame = 5,0 + SetX = 5,184 + SetY = 5,-34 + SetFrame = 6,1 + SetX = 6,600 + SetY = 6,118 + SetVisible = 7,false + + Graphic = Examples/Anima (1) + Focus = Foreground + SetFrame = 5,1 + SetX = 5,680 + SetY = 5,30 + SetZ = 5,35 + SetFrame = 6,2 + SetX = 6,504 + SetY = 6,6 + SetVisible = 7,false + + Graphic = Examples/Anima (1) + Focus = Foreground + SetFrame = 5,2 + SetX = 5,552 + SetY = 5,-26 + SetZ = 5,36 + SetFrame = 6,3 + SetX = 6,368 + SetVisible = 7,false + + Play = 0,Saint8,80 diff --git a/PBS/Animations/Example anims/Move/AURORABEAM.txt b/PBS/Animations/Example anims/Move/AURORABEAM.txt new file mode 100644 index 000000000..93ca837cf --- /dev/null +++ b/PBS/Animations/Example anims/Move/AURORABEAM.txt @@ -0,0 +1,311 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,AURORABEAM] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/023-Burst01 + Focus = User + SetFrame = 0,1 + SetX = 0,0 + SetY = 0,12 + SetZ = 0,27 + SetFrame = 1,2 + SetX = 1,185 + SetY = 1,-38 + SetZoomX = 1,50 + SetZoomY = 1,50 + SetFrame = 2,4 + SetX = 2,-20 + SetY = 2,-76 + SetFrame = 3,2 + SetX = 3,57 + SetY = 3,-45 + SetFrame = 4,1 + SetX = 4,0 + SetY = 4,12 + SetZoomX = 4,100 + SetZoomY = 4,100 + SetVisible = 6,false + + Graphic = Examples/023-Burst01 + Focus = User + SetFrame = 1,3 + SetX = 1,-26 + SetY = 1,-152 + SetZ = 1,28 + SetZoomX = 1,50 + SetZoomY = 1,50 + SetX = 2,102 + SetY = 2,-19 + SetFrame = 3,1 + SetX = 3,0 + SetY = 3,12 + SetZoomX = 3,100 + SetZoomY = 3,100 + SetFrame = 4,2 + SetX = 4,-7 + SetY = 4,6 + SetZoomX = 4,150 + SetZoomY = 4,150 + SetX = 5,0 + SetY = 5,0 + SetZoomX = 5,200 + SetZoomY = 5,200 + SetVisible = 6,false + + Graphic = Examples/023-Burst01 + Focus = User + SetFrame = 1,1 + SetX = 1,0 + SetY = 1,12 + SetZ = 1,29 + SetFrame = 2,5 + SetX = 2,64 + SetY = 2,-158 + SetZoomX = 2,50 + SetZoomY = 2,50 + SetFrame = 3,2 + SetX = 3,-20 + SetY = 3,-32 + SetFrame = 4,4 + SetX = 4,-45 + SetY = 4,-57 + SetFrame = 5,2 + SetX = 5,-58 + SetY = 5,-114 + SetVisible = 6,false + + Graphic = Examples/023-Burst01 + Focus = User + SetFrame = 2,1 + SetX = 2,0 + SetY = 2,12 + SetZ = 2,30 + SetFrame = 3,5 + SetX = 3,51 + SetZoomX = 3,50 + SetZoomY = 3,50 + SetX = 4,64 + SetY = 4,-32 + SetFrame = 5,3 + SetX = 5,44 + SetY = 5,-120 + SetVisible = 6,false + + Graphic = Examples/023-Burst01 + Focus = User + SetFrame = 2,3 + SetX = 2,-64 + SetY = 2,-158 + SetZ = 2,31 + SetZoomX = 2,50 + SetZoomY = 2,50 + SetFrame = 3,6 + SetX = 3,-45 + SetY = 3,-133 + SetFrame = 4,4 + SetX = 4,32 + SetY = 4,-38 + SetFrame = 5,5 + SetX = 5,108 + SetY = 5,-51 + SetVisible = 6,false + + Graphic = Examples/023-Burst01 + Focus = User + SetFrame = 2,5 + SetX = 2,217 + SetY = 2,12 + SetZ = 2,32 + SetZoomX = 2,50 + SetZoomY = 2,50 + SetFrame = 3,7 + SetX = 3,108 + SetY = 3,18 + SetFrame = 4,6 + SetX = 4,76 + SetY = 4,25 + SetX = 5,128 + SetVisible = 6,false + + Graphic = Examples/023-Burst01 + Focus = User + SetFrame = 2,3 + SetX = 2,185 + SetY = 2,-114 + SetZ = 2,33 + SetZoomX = 2,50 + SetZoomY = 2,50 + SetFrame = 3,5 + SetX = 3,51 + SetY = 3,-120 + SetX = 4,0 + SetY = 4,-51 + SetVisible = 5,false + + Graphic = Examples/023-Burst01 + Focus = User + SetFrame = 3,2 + SetX = 3,-13 + SetY = 3,-76 + SetZ = 3,34 + SetZoomX = 3,50 + SetZoomY = 3,50 + SetFrame = 4,4 + SetX = 4,-64 + SetY = 4,-171 + SetVisible = 5,false + + Graphic = Examples/023-Burst01 + Focus = User + SetFrame = 3,3 + SetX = 3,198 + SetY = 3,0 + SetZ = 3,35 + SetZoomX = 3,50 + SetZoomY = 3,50 + SetX = 4,70 + SetY = 4,-171 + SetVisible = 5,false + + Graphic = Examples/023-Burst01 + Focus = User + SetFrame = 3,4 + SetX = 3,134 + SetY = 3,-76 + SetZ = 3,36 + SetZoomX = 3,50 + SetZoomY = 3,50 + SetFrame = 4,2 + SetX = 4,172 + SetVisible = 5,false + + Graphic = Examples/023-Burst01 + Focus = User + SetFrame = 4,5 + SetX = 4,211 + SetY = 4,12 + SetZ = 4,37 + SetZoomX = 4,50 + SetZoomY = 4,50 + SetVisible = 5,false + + Graphic = Examples/023-Burst01 + Focus = UserAndTarget + SetFrame = 6,4 + SetX = 6,0 + SetY = 6,9 + SetZ = 6,27 + SetZoomX = 6,200 + SetZoomY = 6,200 + SetFrame = 7,1 + SetX = 7,29 + SetY = 7,-29 + SetZoomX = 7,100 + SetZoomY = 7,100 + SetX = 8,89 + SetY = 8,-109 + SetX = 9,154 + SetY = 9,-148 + SetX = 10,179 + SetY = 10,-178 + SetFrame = 12,3 + SetFrame = 13,1 + SetZoomX = 13,150 + SetZoomY = 13,150 + SetOpacity = 13,100 + SetY = 14,-196 + SetZoomX = 14,200 + SetZoomY = 14,200 + SetY = 15,-178 + SetZoomX = 15,100 + SetZoomY = 15,100 + SetOpacity = 15,50 + + Graphic = Examples/023-Burst01 + Focus = UserAndTarget + SetFrame = 6,1 + SetX = 6,0 + SetY = 6,18 + SetZ = 6,28 + SetX = 7,50 + SetY = 7,-59 + SetX = 8,125 + SetY = 8,-157 + SetX = 9,179 + SetY = 9,-178 + SetX = 10,150 + SetY = 10,-139 + SetX = 11,154 + SetY = 11,-148 + SetX = 12,179 + SetY = 12,-178 + SetVisible = 13,false + + Graphic = Examples/023-Burst01 + Focus = UserAndTarget + SetFrame = 7,2 + SetX = 7,50 + SetY = 7,-70 + SetZ = 7,29 + SetZoomX = 7,150 + SetZoomY = 7,150 + SetFrame = 8,1 + SetX = 8,29 + SetY = 8,-29 + SetZoomX = 8,100 + SetZoomY = 8,100 + SetX = 9,114 + SetY = 9,-109 + SetY = 10,-89 + SetFrame = 11,3 + SetX = 11,179 + SetY = 11,-178 + SetVisible = 12,false + + Graphic = Examples/023-Burst01 + Focus = UserAndTarget + SetFrame = 8,1 + SetX = 8,54 + SetY = 8,-59 + SetZ = 8,30 + SetX = 9,84 + SetY = 9,-79 + SetFrame = 10,3 + SetX = 10,179 + SetY = 10,-178 + SetVisible = 11,false + + Graphic = Examples/023-Burst01 + Focus = UserAndTarget + SetFrame = 8,2 + SetX = 8,125 + SetY = 8,-178 + SetZ = 8,31 + SetZoomX = 8,120 + SetZoomY = 8,120 + SetFrame = 9,1 + SetX = 9,54 + SetY = 9,-40 + SetZoomX = 9,100 + SetZoomY = 9,100 + SetVisible = 10,false + + Graphic = Examples/023-Burst01 + Focus = UserAndTarget + SetFrame = 9,3 + SetX = 9,184 + SetY = 9,-187 + SetZ = 9,32 + SetZoomX = 9,120 + SetZoomY = 9,120 + SetVisible = 10,false + + Play = 1,Twine,80 + Play = 10,Fire3,80 diff --git a/PBS/Animations/Example anims/Move/BARRIER.txt b/PBS/Animations/Example anims/Move/BARRIER.txt new file mode 100644 index 000000000..7a1ac3a17 --- /dev/null +++ b/PBS/Animations/Example anims/Move/BARRIER.txt @@ -0,0 +1,64 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,BARRIER] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 1,7 + SetX = 1,-28 + SetY = 1,-31 + SetZ = 1,28 + SetFrame = 2,8 + SetX = 2,53 + SetFrame = 3,7 + SetX = 3,56 + SetY = 3,-33 + SetFrame = 4,8 + SetX = 4,-15 + SetY = 4,30 + SetFrame = 5,7 + SetX = 5,-10 + SetY = 5,34 + SetFrame = 6,8 + SetX = 6,64 + SetY = 6,-22 + SetFrame = 7,7 + SetX = 7,69 + SetY = 7,-30 + SetFrame = 8,8 + SetX = 8,-20 + SetY = 8,-7 + SetFrame = 9,7 + SetX = 9,-17 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 0,15 + SetX = 0,8 + SetY = 0,-1 + SetZ = 0,27 + SetOpacity = 0,154 + SetX = 1,9 + SetY = 1,-6 + SetX = 2,8 + SetY = 2,-1 + SetY = 3,-5 + SetX = 4,11 + SetY = 4,-4 + SetX = 5,13 + SetY = 5,-8 + SetX = 6,14 + SetY = 6,-4 + SetX = 7,10 + SetY = 7,-6 + SetX = 8,11 + SetY = 8,1 + SetX = 9,-5 + SetY = 9,-11 + + Play = 0,Flash2,80 diff --git a/PBS/Animations/Example anims/Move/BEATUP.txt b/PBS/Animations/Example anims/Move/BEATUP.txt new file mode 100644 index 000000000..3bcb691e7 --- /dev/null +++ b/PBS/Animations/Example anims/Move/BEATUP.txt @@ -0,0 +1,247 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,BEATUP] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/many + Focus = Target + SetFrame = 0,17 + SetX = 0,0 + SetY = 0,-10 + SetZ = 0,27 + SetZoomX = 0,75 + SetZoomY = 0,75 + SetOpacity = 0,150 + SetZoomX = 1,100 + SetZoomY = 1,100 + SetOpacity = 1,255 + SetZoomX = 3,125 + SetZoomY = 3,125 + SetOpacity = 3,100 + + Graphic = Examples/many + Focus = Target + SetFrame = 1,20 + SetX = 1,8 + SetY = 1,-10 + SetZ = 1,28 + SetOpacity = 1,100 + SetFrame = 2,19 + SetX = 2,0 + SetY = 2,-2 + SetZoomX = 3,125 + SetZoomY = 3,125 + SetOpacity = 3,50 + + Play = 0,Blow4,80 +#------------------------------- +[Move,BEATUP,1] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/many + Focus = Target + SetFrame = 1,20 + SetX = 1,8 + SetY = 1,-10 + SetZ = 1,28 + SetOpacity = 1,100 + SetFrame = 2,19 + SetX = 2,0 + SetY = 2,-2 + SetZoomX = 3,125 + SetZoomY = 3,125 + SetOpacity = 3,50 + + Graphic = Examples/many + Focus = Target + SetFrame = 0,17 + SetX = 0,0 + SetY = 0,-10 + SetZ = 0,27 + SetZoomX = 0,75 + SetZoomY = 0,75 + SetOpacity = 0,150 + SetZoomX = 1,100 + SetZoomY = 1,100 + SetOpacity = 1,255 + SetZoomX = 3,125 + SetZoomY = 3,125 + SetOpacity = 3,100 + + Play = 0,Blow4,80 +#------------------------------- +[Move,BEATUP,2] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/many + Focus = Target + SetFrame = 0,17 + SetX = 0,0 + SetY = 0,-10 + SetZ = 0,27 + SetZoomX = 0,75 + SetZoomY = 0,75 + SetOpacity = 0,150 + SetZoomX = 1,100 + SetZoomY = 1,100 + SetOpacity = 1,255 + SetZoomX = 3,125 + SetZoomY = 3,125 + SetOpacity = 3,100 + + Graphic = Examples/many + Focus = Target + SetFrame = 1,20 + SetX = 1,8 + SetY = 1,-10 + SetZ = 1,28 + SetOpacity = 1,100 + SetFrame = 2,19 + SetX = 2,0 + SetY = 2,-2 + SetZoomX = 3,125 + SetZoomY = 3,125 + SetOpacity = 3,50 + + Play = 0,Blow4,80 +#------------------------------- +[Move,BEATUP,3] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/many + Focus = Target + SetFrame = 1,20 + SetX = 1,8 + SetY = 1,-10 + SetZ = 1,28 + SetOpacity = 1,100 + SetFrame = 2,19 + SetX = 2,0 + SetY = 2,-2 + SetZoomX = 3,125 + SetZoomY = 3,125 + SetOpacity = 3,50 + + Graphic = Examples/many + Focus = Target + SetFrame = 0,17 + SetX = 0,0 + SetY = 0,-10 + SetZ = 0,27 + SetZoomX = 0,75 + SetZoomY = 0,75 + SetOpacity = 0,150 + SetZoomX = 1,100 + SetZoomY = 1,100 + SetOpacity = 1,255 + SetZoomX = 3,125 + SetZoomY = 3,125 + SetOpacity = 3,100 + + Play = 0,Blow4,80 +#------------------------------- +[Move,BEATUP,4] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/many + Focus = Target + SetFrame = 0,17 + SetX = 0,0 + SetY = 0,-10 + SetZ = 0,27 + SetZoomX = 0,75 + SetZoomY = 0,75 + SetOpacity = 0,150 + SetZoomX = 1,100 + SetZoomY = 1,100 + SetOpacity = 1,255 + SetZoomX = 3,125 + SetZoomY = 3,125 + SetOpacity = 3,100 + + Graphic = Examples/many + Focus = Target + SetFrame = 1,20 + SetX = 1,8 + SetY = 1,-10 + SetZ = 1,28 + SetOpacity = 1,100 + SetFrame = 2,19 + SetX = 2,0 + SetY = 2,-2 + SetZoomX = 3,125 + SetZoomY = 3,125 + SetOpacity = 3,50 + + Play = 0,Blow4,80 +#------------------------------- +[Move,BEATUP,5] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/many + Focus = Target + SetFrame = 1,20 + SetX = 1,8 + SetY = 1,-10 + SetZ = 1,28 + SetOpacity = 1,100 + SetFrame = 2,19 + SetX = 2,0 + SetY = 2,-2 + SetZoomX = 3,125 + SetZoomY = 3,125 + SetOpacity = 3,50 + + Graphic = Examples/many + Focus = Target + SetFrame = 0,17 + SetX = 0,0 + SetY = 0,-10 + SetZ = 0,27 + SetZoomX = 0,75 + SetZoomY = 0,75 + SetOpacity = 0,150 + SetZoomX = 1,100 + SetZoomY = 1,100 + SetOpacity = 1,255 + SetZoomX = 3,125 + SetZoomY = 3,125 + SetOpacity = 3,100 + + Play = 0,Blow4,80 diff --git a/PBS/Animations/Example anims/Move/BIND.txt b/PBS/Animations/Example anims/Move/BIND.txt new file mode 100644 index 000000000..48c4a9bc3 --- /dev/null +++ b/PBS/Animations/Example anims/Move/BIND.txt @@ -0,0 +1,48 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,BIND] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Struggle + Focus = Target + SetFrame = 0,1 + SetX = 0,56 + SetY = 0,6 + SetZ = 0,28 + SetX = 1,96 + SetY = 1,-2 + SetX = 2,104 + SetY = 2,6 + SetX = 3,80 + SetY = 3,-2 + SetX = 4,48 + SetX = 5,80 + SetX = 6,112 + SetY = 6,6 + SetX = 7,96 + + Graphic = Examples/Struggle + Focus = Target + SetX = 0,-64 + SetY = 0,6 + SetZ = 0,27 + SetX = 1,-96 + SetY = 1,-2 + SetX = 2,-144 + SetY = 2,6 + SetX = 3,-120 + SetY = 3,-2 + SetX = 4,-88 + SetX = 5,-128 + SetX = 6,-168 + SetX = 7,-120 + + Play = 0,Slash10,80 + Play = 3,Slash10,80 + Play = 6,Slash10,80 diff --git a/PBS/Animations/Example anims/Move/BLASTBURN.txt b/PBS/Animations/Example anims/Move/BLASTBURN.txt new file mode 100644 index 000000000..2f285a123 --- /dev/null +++ b/PBS/Animations/Example anims/Move/BLASTBURN.txt @@ -0,0 +1,289 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,BLASTBURN] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Firebird + Focus = UserAndTarget + SetFrame = 0,5 + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetFrame = 1,13 + SetFlip = 1,true + SetAngle = 1,20 + SetX = 2,25 + SetY = 2,-98 + SetAngle = 2,0 + SetFrame = 3,10 + SetX = 3,69 + SetY = 3,-148 + SetAngle = 3,20 + SetX = 4,100 + SetY = 4,-178 + SetAngle = 4,0 + SetFrame = 5,16 + SetFlip = 5,false + SetX = 5,194 + SetY = 5,-157 + SetZoomX = 5,50 + SetZoomY = 5,50 + SetVisible = 6,false + + Graphic = Examples/Firebird + Focus = UserAndTarget + SetFrame = 5,11 + SetFlip = 5,true + SetX = 5,179 + SetY = 5,-178 + SetZ = 5,28 + SetVisible = 6,false + + Graphic = Examples/Firebird + Focus = Target + SetFrame = 6,11 + SetX = 6,-26 + SetY = 6,14 + SetZ = 6,27 + SetFrame = 7,16 + SetX = 7,-32 + SetY = 7,20 + SetFrame = 8,18 + SetX = 8,57 + SetY = 8,58 + SetFrame = 9,16 + SetX = 9,-39 + SetY = 9,14 + SetFrame = 10,17 + SetX = 10,-26 + SetY = 10,-5 + SetAngle = 10,180 + SetX = 11,64 + SetY = 11,14 + SetAngle = 11,90 + SetFrame = 12,11 + SetX = 12,-90 + SetY = 12,2 + SetAngle = 12,45 + SetFrame = 13,12 + SetX = 13,-84 + SetY = 13,65 + SetAngle = 13,270 + SetFrame = 14,19 + SetX = 14,-20 + SetY = 14,27 + SetAngle = 14,0 + SetFrame = 15,14 + SetX = 15,-52 + SetY = 15,8 + SetFrame = 16,19 + SetX = 16,-26 + SetOpacity = 16,100 + + Graphic = Examples/Firebird + Focus = Target + SetFrame = 6,16 + SetX = 6,-39 + SetY = 6,27 + SetZ = 6,28 + SetZoomX = 6,90 + SetZoomY = 6,90 + SetFrame = 7,15 + SetX = 7,-13 + SetY = 7,58 + SetZoomX = 7,50 + SetZoomY = 7,50 + SetFrame = 8,14 + SetX = 8,-39 + SetY = 8,65 + SetZoomX = 8,100 + SetZoomY = 8,100 + SetX = 9,51 + SetY = 9,58 + SetFrame = 10,17 + SetX = 10,12 + SetY = 10,90 + SetX = 11,-90 + SetY = 11,2 + SetAngle = 11,270 + SetFrame = 12,14 + SetX = 12,-45 + SetY = 12,-11 + SetX = 13,-32 + SetY = 13,71 + SetAngle = 13,0 + SetFrame = 14,18 + SetX = 14,38 + SetY = 14,65 + SetOpacity = 14,100 + SetFrame = 15,15 + SetX = 15,6 + SetY = 15,14 + SetOpacity = 15,255 + SetFrame = 16,10 + SetX = 16,-52 + SetOpacity = 16,100 + + Graphic = Examples/Firebird + Focus = Target + SetFrame = 6,12 + SetX = 6,-26 + SetY = 6,27 + SetZ = 6,29 + SetX = 7,6 + SetY = 7,8 + SetFrame = 8,16 + SetX = 8,-7 + SetY = 8,2 + SetFrame = 9,17 + SetY = 9,102 + SetFrame = 10,14 + SetX = 10,25 + SetY = 10,58 + SetAngle = 10,45 + SetFrame = 11,16 + SetX = 11,-64 + SetY = 11,20 + SetAngle = 11,0 + SetFrame = 12,15 + SetX = 12,51 + SetY = 12,65 + SetFrame = 13,16 + SetX = 13,-52 + SetY = 13,-5 + SetX = 14,-77 + SetY = 14,2 + SetOpacity = 14,100 + SetFrame = 15,19 + SetX = 15,-26 + SetY = 15,8 + SetOpacity = 15,255 + SetFrame = 16,12 + SetX = 16,12 + SetY = 16,14 + SetOpacity = 16,100 + + Graphic = Examples/Firebird + Focus = Target + SetFrame = 7,11 + SetX = 7,-20 + SetY = 7,58 + SetZ = 7,30 + SetVisible = 8,false + + Graphic = Examples/Firebird + Focus = Target + SetFrame = 9,16 + SetX = 9,-58 + SetY = 9,46 + SetZ = 9,30 + SetFrame = 10,15 + SetX = 10,70 + SetY = 10,-17 + SetAngle = 10,45 + SetFrame = 11,14 + SetX = 11,-52 + SetY = 11,65 + SetAngle = 11,0 + SetFrame = 12,16 + SetX = 12,51 + SetY = 12,-11 + SetFrame = 13,14 + SetX = 13,19 + SetY = 13,71 + SetFrame = 14,16 + SetX = 14,-26 + SetY = 14,-24 + SetOpacity = 14,100 + SetVisible = 15,false + + Graphic = Examples/Firebird + Focus = Target + SetFrame = 9,13 + SetX = 9,0 + SetY = 9,-5 + SetZ = 9,31 + SetFrame = 10,18 + SetX = 10,-39 + SetY = 10,2 + SetAngle = 10,135 + SetFrame = 11,15 + SetX = 11,38 + SetY = 11,65 + SetAngle = 11,0 + SetFrame = 12,18 + SetX = 12,-7 + SetY = 12,77 + SetFrame = 13,15 + SetX = 13,38 + SetY = 13,14 + SetFrame = 14,14 + SetX = 14,-58 + SetY = 14,71 + SetOpacity = 14,100 + SetVisible = 15,false + + Graphic = Examples/Firebird + Focus = Target + SetFrame = 9,13 + SetX = 9,57 + SetY = 9,71 + SetZ = 9,32 + SetFrame = 10,16 + SetX = 10,-45 + SetY = 10,27 + SetFrame = 11,12 + SetX = 11,-7 + SetY = 11,-11 + SetVisible = 12,false + + Graphic = Examples/Firebird + Focus = Target + SetFrame = 10,10 + SetX = 10,-13 + SetY = 10,-30 + SetZ = 10,33 + SetFrame = 11,11 + SetX = 11,-64 + SetVisible = 12,false + + Graphic = Examples/Firebird + Focus = Target + SetFrame = 10,14 + SetX = 10,-45 + SetY = 10,83 + SetZ = 10,34 + SetVisible = 11,false + + Graphic = Examples/Firebird + Focus = Target + SetFrame = 13,19 + SetX = 13,12 + SetY = 13,27 + SetZ = 13,32 + SetFrame = 14,12 + SetX = 14,57 + SetY = 14,-17 + SetOpacity = 14,100 + SetVisible = 15,false + + Graphic = Examples/Firebird + Focus = Target + SetFrame = 13,12 + SetX = 13,57 + SetY = 13,-17 + SetZ = 13,33 + SetOpacity = 13,100 + SetFrame = 14,14 + SetX = 14,12 + SetY = 14,8 + SetOpacity = 14,250 + SetVisible = 15,false + + Play = 3,Fire2,80 diff --git a/PBS/Animations/Example anims/Move/BLOCK.txt b/PBS/Animations/Example anims/Move/BLOCK.txt new file mode 100644 index 000000000..5a1dccd31 --- /dev/null +++ b/PBS/Animations/Example anims/Move/BLOCK.txt @@ -0,0 +1,19 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,BLOCK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/block + Focus = Target + SetX = 0,1 + SetY = 0,0 + SetZ = 0,27 + SetVisible = 10,false + + Play = 0,buzzer,80 diff --git a/PBS/Animations/Example anims/Move/BLUEFLARE.txt b/PBS/Animations/Example anims/Move/BLUEFLARE.txt new file mode 100644 index 000000000..0322f34d3 --- /dev/null +++ b/PBS/Animations/Example anims/Move/BLUEFLARE.txt @@ -0,0 +1,54 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,BLUEFLARE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/anim sheet 2 + Focus = Target + SetFrame = 4,13 + SetX = 4,6 + SetY = 4,0 + SetZ = 4,27 + SetFrame = 5,14 + SetX = 5,1 + SetY = 5,-2 + SetFrame = 6,15 + SetX = 6,8 + SetVisible = 7,false + + Graphic = Examples/anim sheet 2 + Focus = Target + SetFrame = 8,16 + SetX = 8,0 + SetY = 8,-1 + SetZ = 8,27 + SetFrame = 9,17 + SetX = 9,-1 + SetFrame = 10,18 + SetX = 10,0 + SetY = 10,0 + SetFrame = 11,19 + SetX = 11,1 + SetY = 11,-4 + + Graphic = Examples/anim sheet 2 + Focus = Target + SetFrame = 0,10 + SetX = 0,-2 + SetY = 0,7 + SetZ = 0,27 + SetFrame = 1,11 + SetX = 1,-5 + SetY = 1,-3 + SetFrame = 2,12 + SetX = 2,0 + SetY = 2,-2 + SetVisible = 3,false + + Play = 0,Slam,100,110 diff --git a/PBS/Animations/Example anims/Move/BODYSLAM.txt b/PBS/Animations/Example anims/Move/BODYSLAM.txt new file mode 100644 index 000000000..1f64daeb8 --- /dev/null +++ b/PBS/Animations/Example anims/Move/BODYSLAM.txt @@ -0,0 +1,22 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,BODYSLAM] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + + Play = 0,Damage1,80 diff --git a/PBS/Animations/Example anims/Move/BRICKBREAK.txt b/PBS/Animations/Example anims/Move/BRICKBREAK.txt new file mode 100644 index 000000000..c7e85ac26 --- /dev/null +++ b/PBS/Animations/Example anims/Move/BRICKBREAK.txt @@ -0,0 +1,37 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,BRICKBREAK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/many + Focus = Target + SetFrame = 0,13 + SetX = 0,-88 + SetY = 0,-58 + SetZ = 0,27 + SetX = 1,-64 + SetAngle = 1,345 + SetX = 2,-32 + SetY = 2,-34 + SetAngle = 2,330 + SetX = 3,0 + SetY = 3,-10 + SetAngle = 3,315 + SetX = 4,16 + SetY = 4,22 + SetAngle = 4,300 + SetX = 5,32 + SetY = 5,46 + SetAngle = 5,285 + SetX = 6,48 + SetY = 6,62 + SetX = 7,56 + SetY = 7,70 + + Play = 4,Blow7,80 diff --git a/PBS/Animations/Example anims/Move/BUBBLE.txt b/PBS/Animations/Example anims/Move/BUBBLE.txt new file mode 100644 index 000000000..45e15221f --- /dev/null +++ b/PBS/Animations/Example anims/Move/BUBBLE.txt @@ -0,0 +1,282 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,BUBBLE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 0,13 + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetX = 1,19 + SetY = 1,0 + SetX = 2,54 + SetY = 2,-40 + SetFrame = 3,12 + SetX = 3,79 + SetY = 3,-79 + SetX = 4,114 + SetY = 4,-109 + SetFrame = 5,11 + SetX = 5,159 + SetY = 5,-168 + SetX = 6,179 + SetY = 6,-178 + SetX = 7,189 + SetFrame = 8,13 + SetX = 8,64 + SetY = 8,-59 + SetFrame = 9,11 + SetX = 9,194 + SetY = 9,-187 + SetFrame = 10,13 + SetX = 10,200 + SetY = 10,-246 + SetFrame = 11,11 + SetY = 11,-267 + SetFrame = 12,15 + SetX = 12,179 + SetY = 12,-178 + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 1,13 + SetX = 1,4 + SetY = 1,-10 + SetZ = 1,28 + SetX = 2,19 + SetY = 2,-29 + SetFrame = 3,12 + SetX = 3,39 + SetY = 3,-59 + SetX = 4,64 + SetY = 4,-109 + SetFrame = 5,11 + SetX = 5,100 + SetY = 5,-128 + SetX = 6,129 + SetY = 6,-157 + SetFrame = 7,13 + SetX = 7,0 + SetY = 7,18 + SetX = 8,164 + SetY = 8,-217 + SetFrame = 9,12 + SetX = 9,169 + SetY = 9,-246 + SetFrame = 10,11 + SetX = 10,229 + SetY = 10,-237 + SetFrame = 11,12 + SetX = 11,225 + SetY = 11,-207 + SetVisible = 12,false + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 1,12 + SetX = 1,0 + SetY = 1,18 + SetZ = 1,29 + SetX = 2,39 + SetY = 2,-40 + SetX = 3,54 + SetY = 3,-89 + SetFrame = 4,11 + SetX = 4,89 + SetY = 4,-98 + SetFrame = 5,12 + SetX = 5,84 + SetY = 5,-157 + SetX = 6,119 + SetY = 6,-187 + SetX = 7,150 + SetY = 7,-237 + SetX = 8,189 + SetY = 8,-196 + SetFrame = 9,13 + SetX = 9,169 + SetFrame = 10,12 + SetX = 10,179 + SetY = 10,-207 + SetFrame = 11,13 + SetX = 11,175 + SetY = 11,-196 + SetVisible = 12,false + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 2,13 + SetX = 2,0 + SetY = 2,18 + SetZ = 2,30 + SetX = 3,29 + SetY = 3,-29 + SetX = 4,0 + SetY = 4,18 + SetX = 5,25 + SetY = 5,-29 + SetX = 6,64 + SetY = 6,-79 + SetFrame = 7,11 + SetX = 7,175 + SetY = 7,-226 + SetX = 8,214 + SetY = 8,-187 + SetFrame = 9,12 + SetX = 9,204 + SetY = 9,-237 + SetFrame = 10,13 + SetX = 10,200 + SetY = 10,-196 + SetFrame = 11,17 + SetX = 11,209 + SetY = 11,-226 + SetOpacity = 11,100 + SetVisible = 12,false + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 3,13 + SetX = 3,9 + SetY = 3,-20 + SetZ = 3,31 + SetX = 4,64 + SetY = 4,-59 + SetX = 5,134 + SetY = 5,-118 + SetX = 6,114 + SetY = 6,-148 + SetX = 7,119 + SetY = 7,-157 + SetFrame = 8,12 + SetX = 8,179 + SetY = 8,-256 + SetFrame = 9,11 + SetX = 9,194 + SetY = 9,-276 + SetX = 10,164 + SetY = 10,-256 + SetVisible = 11,false + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 3,12 + SetX = 3,0 + SetY = 3,18 + SetZ = 3,32 + SetX = 4,39 + SetY = 4,0 + SetX = 5,84 + SetY = 5,-59 + SetFrame = 6,13 + SetX = 6,159 + SetY = 6,-178 + SetY = 7,-187 + SetFrame = 8,11 + SetX = 8,204 + SetY = 8,-276 + SetFrame = 9,12 + SetX = 9,225 + SetY = 9,-178 + SetFrame = 10,17 + SetX = 10,179 + SetY = 10,-217 + SetOpacity = 10,100 + SetVisible = 11,false + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 4,13 + SetX = 4,29 + SetY = 4,-59 + SetZ = 4,33 + SetX = 5,50 + SetY = 5,-109 + SetFrame = 6,12 + SetX = 6,100 + SetY = 6,-79 + SetFrame = 7,13 + SetX = 7,79 + SetY = 7,-139 + SetFrame = 8,12 + SetX = 8,119 + SetY = 8,-187 + SetFrame = 9,13 + SetX = 9,144 + SetY = 9,-196 + SetVisible = 10,false + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 5,12 + SetX = 5,0 + SetY = 5,18 + SetZ = 5,34 + SetFrame = 6,13 + SetX = 6,79 + SetY = 6,-128 + SetFrame = 7,12 + SetX = 7,144 + SetFrame = 8,13 + SetX = 8,154 + SetY = 8,-168 + SetFrame = 9,12 + SetY = 9,-148 + SetVisible = 10,false + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 6,13 + SetX = 6,25 + SetY = 6,18 + SetZ = 6,35 + SetFrame = 7,12 + SetX = 7,69 + SetY = 7,-70 + SetX = 8,114 + SetY = 8,-118 + SetFrame = 9,13 + SetX = 9,125 + SetY = 9,-148 + SetVisible = 10,false + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 6,17 + SetX = 6,175 + SetY = 6,-217 + SetZ = 6,36 + SetOpacity = 6,100 + SetFlip = 7,true + SetX = 7,194 + SetY = 7,-187 + SetFrame = 8,13 + SetFlip = 8,false + SetX = 8,75 + SetY = 8,-98 + SetOpacity = 8,255 + SetFrame = 9,17 + SetFlip = 9,true + SetX = 9,200 + SetY = 9,-196 + SetOpacity = 9,100 + SetVisible = 10,false + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 8,17 + SetX = 8,179 + SetY = 8,-207 + SetZ = 8,37 + SetOpacity = 8,100 + SetVisible = 9,false + + Play = 0,Water5,80 diff --git a/PBS/Animations/Example anims/Move/BUBBLEBEAM.txt b/PBS/Animations/Example anims/Move/BUBBLEBEAM.txt new file mode 100644 index 000000000..d02455bbd --- /dev/null +++ b/PBS/Animations/Example anims/Move/BUBBLEBEAM.txt @@ -0,0 +1,511 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,BUBBLEBEAM] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetFrame = 0,13 + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetX = 1,39 + SetY = 1,-29 + SetX = 2,89 + SetY = 2,-70 + SetFrame = 3,12 + SetX = 3,25 + SetY = 3,-50 + SetX = 4,154 + SetY = 4,-157 + SetX = 5,114 + SetY = 5,-148 + SetX = 6,29 + SetY = 6,-20 + SetX = 7,75 + SetY = 7,-50 + SetFrame = 8,13 + SetX = 8,84 + SetY = 8,-139 + SetFrame = 9,2 + SetX = 9,94 + SetY = 9,-70 + SetFrame = 10,13 + SetX = 10,200 + SetY = 10,-246 + SetFrame = 11,12 + SetX = 11,44 + SetY = 11,-29 + SetX = 12,119 + SetY = 12,-109 + SetX = 13,179 + SetY = 13,-207 + SetX = 14,204 + SetFrame = 15,0 + SetX = 15,179 + SetY = 15,-178 + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetFrame = 1,13 + SetX = 1,9 + SetY = 1,-59 + SetZ = 1,28 + SetX = 2,50 + SetY = 2,-79 + SetFrame = 3,12 + SetX = 3,75 + SetY = 3,-89 + SetX = 4,134 + SetY = 4,-217 + SetX = 5,179 + SetY = 5,-178 + SetX = 6,189 + SetY = 6,-226 + SetFrame = 7,1 + SetX = 7,200 + SetY = 7,-178 + SetFrame = 8,13 + SetX = 8,164 + SetY = 8,-217 + SetFrame = 9,12 + SetX = 9,184 + SetY = 9,-267 + SetX = 10,69 + SetY = 10,-109 + SetX = 11,225 + SetY = 11,-207 + SetFrame = 12,2 + SetX = 12,204 + SetFrame = 13,12 + SetX = 13,189 + SetY = 13,-237 + SetFrame = 14,2 + SetX = 14,179 + SetY = 14,-196 + SetVisible = 15,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetFrame = 1,12 + SetX = 1,50 + SetY = 1,-70 + SetZ = 1,29 + SetX = 2,59 + SetY = 2,-118 + SetX = 3,69 + SetY = 3,-148 + SetX = 4,4 + SetY = 4,9 + SetX = 5,139 + SetY = 5,-196 + SetX = 6,119 + SetY = 6,-187 + SetX = 7,159 + SetY = 7,-237 + SetFrame = 8,1 + SetX = 8,164 + SetY = 8,-168 + SetFrame = 9,13 + SetX = 9,169 + SetY = 9,-196 + SetFrame = 10,12 + SetX = 10,179 + SetY = 10,-207 + SetFrame = 11,13 + SetX = 11,175 + SetY = 11,-196 + SetFrame = 12,11 + SetX = 12,164 + SetAngle = 12,90 + SetFrame = 13,4 + SetX = 13,194 + SetY = 13,-217 + SetAngle = 13,0 + SetVisible = 14,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetFrame = 2,13 + SetX = 2,0 + SetY = 2,18 + SetZ = 2,30 + SetX = 3,104 + SetY = 3,-168 + SetY = 4,-98 + SetX = 5,144 + SetY = 5,-109 + SetX = 6,64 + SetY = 6,-79 + SetFrame = 7,12 + SetX = 7,119 + SetY = 7,-226 + SetFrame = 8,2 + SetX = 8,159 + SetY = 8,-267 + SetFrame = 9,12 + SetX = 9,184 + SetY = 9,-217 + SetFrame = 10,13 + SetX = 10,200 + SetY = 10,-196 + SetFrame = 11,17 + SetX = 11,209 + SetY = 11,-226 + SetOpacity = 11,100 + SetFrame = 12,3 + SetX = 12,189 + SetY = 12,-139 + SetOpacity = 12,255 + SetFrame = 13,1 + SetX = 13,154 + SetY = 13,-196 + SetVisible = 14,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetX = 2,19 + SetY = 2,-20 + SetZ = 2,31 + SetFrame = 3,12 + SetX = 3,54 + SetY = 3,-70 + SetFrame = 4,13 + SetX = 4,114 + SetY = 4,-157 + SetX = 5,189 + SetY = 5,-207 + SetX = 6,154 + SetX = 7,119 + SetY = 7,-157 + SetFrame = 8,2 + SetX = 8,69 + SetY = 8,-98 + SetFrame = 9,12 + SetX = 9,75 + SetY = 9,-89 + SetX = 10,100 + SetY = 10,-59 + SetFrame = 11,3 + SetX = 11,194 + SetY = 11,-237 + SetFrame = 12,1 + SetX = 12,139 + SetY = 12,-98 + SetFrame = 13,7 + SetX = 13,184 + SetY = 13,-196 + SetOpacity = 13,50 + SetVisible = 14,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetFrame = 3,12 + SetX = 3,114 + SetY = 3,-109 + SetZ = 3,32 + SetX = 4,144 + SetY = 4,-118 + SetX = 5,100 + SetY = 5,-187 + SetX = 6,59 + SetY = 6,-118 + SetFrame = 7,13 + SetX = 7,164 + SetY = 7,-178 + SetFrame = 8,12 + SetX = 8,64 + SetY = 8,-128 + SetFrame = 9,1 + SetX = 9,9 + SetY = 9,-20 + SetFrame = 10,12 + SetX = 10,129 + SetY = 10,-217 + SetFrame = 11,11 + SetX = 11,50 + SetY = 11,-79 + SetAngle = 11,135 + SetFrame = 12,3 + SetX = 12,234 + SetY = 12,-128 + SetAngle = 12,0 + SetX = 13,150 + SetY = 13,-118 + SetVisible = 14,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetFrame = 3,1 + SetX = 3,64 + SetY = 3,-98 + SetZ = 3,33 + SetFrame = 4,12 + SetX = 4,54 + SetX = 5,139 + SetY = 5,-256 + SetX = 6,189 + SetY = 6,-148 + SetX = 7,14 + SetY = 7,-20 + SetX = 8,119 + SetY = 8,-187 + SetFrame = 9,3 + SetX = 9,164 + SetY = 9,-267 + SetFrame = 10,12 + SetX = 10,114 + SetY = 10,-168 + SetFrame = 11,1 + SetX = 11,75 + SetFrame = 12,3 + SetX = 12,189 + SetY = 12,-285 + SetVisible = 13,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetX = 3,25 + SetY = 3,-10 + SetZ = 3,34 + SetFrame = 4,2 + SetX = 4,114 + SetY = 4,-168 + SetFrame = 5,12 + SetX = 5,39 + SetY = 5,-118 + SetFrame = 6,6 + SetX = 6,204 + SetY = 6,-196 + SetOpacity = 6,100 + SetFrame = 7,2 + SetX = 7,139 + SetY = 7,-79 + SetOpacity = 7,255 + SetFrame = 8,12 + SetX = 8,129 + SetY = 8,-139 + SetX = 9,164 + SetY = 9,-148 + SetFrame = 10,3 + SetX = 10,134 + SetY = 10,-237 + SetX = 11,125 + SetY = 11,-207 + SetFrame = 12,1 + SetX = 12,64 + SetY = 12,-79 + SetVisible = 13,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetFrame = 4,2 + SetX = 4,44 + SetY = 4,-59 + SetZ = 4,35 + SetFrame = 5,12 + SetX = 5,79 + SetY = 5,-89 + SetFrame = 6,13 + SetX = 6,144 + SetY = 6,-139 + SetFrame = 7,12 + SetX = 7,104 + SetY = 7,-148 + SetFrame = 8,3 + SetX = 8,209 + SetY = 8,-139 + SetFrame = 9,13 + SetX = 9,125 + SetY = 9,-148 + SetFrame = 10,0 + SetX = 10,189 + SetY = 10,-187 + SetFrame = 11,3 + SetX = 11,129 + SetY = 11,-276 + SetFrame = 12,5 + SetX = 12,214 + SetY = 12,-217 + SetVisible = 13,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetFrame = 4,12 + SetX = 4,34 + SetY = 4,0 + SetZ = 4,36 + SetFrame = 5,3 + SetX = 5,144 + SetY = 5,-226 + SetFrame = 6,1 + SetX = 6,94 + SetY = 6,-89 + SetFrame = 7,12 + SetX = 7,54 + SetY = 7,-139 + SetY = 8,-178 + SetX = 9,94 + SetY = 9,-128 + SetFrame = 10,2 + SetX = 10,79 + SetY = 10,-59 + SetFrame = 11,0 + SetX = 11,225 + SetY = 11,-109 + SetVisible = 12,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetFrame = 4,12 + SetX = 4,125 + SetY = 4,-20 + SetZ = 4,37 + SetFrame = 5,3 + SetX = 5,119 + SetY = 5,-139 + SetFrame = 6,0 + SetX = 6,194 + SetY = 6,-207 + SetFrame = 7,7 + SetX = 7,200 + SetOpacity = 7,100 + SetVisible = 8,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetFrame = 4,12 + SetX = 4,89 + SetY = 4,-20 + SetZ = 4,38 + SetFrame = 5,2 + SetX = 5,4 + SetY = 5,-10 + SetFrame = 6,3 + SetX = 6,144 + SetY = 6,-217 + SetFrame = 7,2 + SetY = 7,-187 + SetFrame = 8,8 + SetX = 8,209 + SetY = 8,-196 + SetOpacity = 8,100 + SetFrame = 9,3 + SetY = 9,-157 + SetOpacity = 9,255 + SetX = 10,194 + SetY = 10,-109 + SetX = 11,169 + SetY = 11,-139 + SetVisible = 12,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetFrame = 4,12 + SetX = 4,69 + SetY = 4,-148 + SetZ = 4,39 + SetFrame = 5,3 + SetY = 5,-20 + SetX = 6,209 + SetY = 6,-139 + SetX = 7,14 + SetY = 7,-10 + SetX = 8,194 + SetY = 8,-226 + SetX = 9,150 + SetY = 9,-98 + SetFrame = 10,1 + SetX = 10,89 + SetY = 10,-139 + SetFrame = 11,3 + SetX = 11,14 + SetY = 11,0 + SetVisible = 12,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetX = 4,125 + SetY = 4,-70 + SetZ = 4,40 + SetFrame = 5,3 + SetX = 5,189 + SetY = 5,-139 + SetX = 6,44 + SetY = 6,-70 + SetX = 7,84 + SetFrame = 8,0 + SetX = 8,29 + SetY = 8,-59 + SetFrame = 9,1 + SetX = 9,54 + SetY = 9,-70 + SetFrame = 10,2 + SetX = 10,114 + SetY = 10,-40 + SetFrame = 11,4 + SetX = 11,219 + SetY = 11,-226 + SetVisible = 12,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetX = 6,44 + SetY = 6,18 + SetZ = 6,41 + SetFrame = 7,3 + SetX = 7,94 + SetY = 7,-157 + SetX = 8,134 + SetY = 8,-98 + SetFrame = 9,0 + SetX = 9,94 + SetY = 9,-168 + SetFrame = 10,3 + SetX = 10,25 + SetY = 10,-59 + SetVisible = 11,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetFrame = 6,3 + SetX = 6,139 + SetY = 6,-59 + SetZ = 6,42 + SetX = 7,154 + SetY = 7,-285 + SetX = 8,89 + SetY = 8,-187 + SetX = 9,154 + SetY = 9,-168 + SetFrame = 10,2 + SetX = 10,19 + SetY = 10,-10 + SetVisible = 11,false + + Graphic = Examples/018-Water01 + Focus = UserAndTarget + SetFrame = 9,12 + SetX = 9,50 + SetY = 9,-118 + SetZ = 9,37 + SetFrame = 10,3 + SetX = 10,129 + SetY = 10,-109 + SetFrame = 11,1 + SetX = 11,100 + SetY = 11,-59 + SetVisible = 12,false + + Play = 0,Water5,80 + Play = 3,Blow1,80 + Play = 7,Blow1,80 + Play = 9,Blow1,80 + Play = 11,Blow1,80 + Play = 13,Blow1,80 diff --git a/PBS/Animations/Example anims/Move/BULLETPUNCH.txt b/PBS/Animations/Example anims/Move/BULLETPUNCH.txt new file mode 100644 index 000000000..5ac86c488 --- /dev/null +++ b/PBS/Animations/Example anims/Move/BULLETPUNCH.txt @@ -0,0 +1,163 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,BULLETPUNCH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/punches + Focus = Target + SetFrame = 0,15 + SetX = 0,14 + SetY = 0,4 + SetZ = 0,27 + SetFrame = 1,14 + SetX = 1,22 + SetY = 1,-1 + SetFrame = 2,2 + SetX = 2,0 + SetY = 2,-2 + SetOpacity = 2,84 + SetFrame = 3,14 + SetX = 3,36 + SetY = 3,-29 + SetOpacity = 3,255 + SetFrame = 4,2 + SetX = 4,22 + SetY = 4,-18 + SetOpacity = 4,44 + SetFrame = 5,14 + SetX = 5,-16 + SetY = 5,39 + SetOpacity = 5,255 + SetFrame = 6,2 + SetX = 6,-33 + SetY = 6,37 + SetOpacity = 6,64 + SetFrame = 7,14 + SetX = 7,48 + SetOpacity = 7,255 + SetX = 8,51 + SetOpacity = 8,36 + SetX = 9,3 + SetY = 9,7 + SetOpacity = 9,255 + SetFrame = 10,2 + SetX = 10,12 + SetY = 10,-8 + SetOpacity = 10,44 + SetVisible = 11,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 0,2 + SetX = 0,2 + SetY = 0,3 + SetZ = 0,28 + SetX = 1,7 + SetY = 1,-1 + SetFrame = 2,14 + SetX = 2,19 + SetY = 2,2 + SetOpacity = 2,64 + SetFrame = 3,2 + SetX = 3,21 + SetY = 3,-24 + SetOpacity = 3,255 + SetFrame = 4,14 + SetX = 4,39 + SetY = 4,-23 + SetOpacity = 4,64 + SetFrame = 5,2 + SetX = 5,-29 + SetY = 5,35 + SetOpacity = 5,255 + SetFrame = 6,14 + SetX = 6,-20 + SetY = 6,32 + SetOpacity = 6,107 + SetFrame = 7,2 + SetX = 7,34 + SetY = 7,39 + SetOpacity = 7,255 + SetX = 8,41 + SetY = 8,35 + SetOpacity = 8,108 + SetX = 9,-14 + SetY = 9,11 + SetOpacity = 9,255 + SetFrame = 10,14 + SetX = 10,31 + SetY = 10,-8 + SetOpacity = 10,84 + SetVisible = 11,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 2,15 + SetX = 2,42 + SetY = 2,-27 + SetZ = 2,29 + SetVisible = 3,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 2,2 + SetX = 2,21 + SetY = 2,-29 + SetZ = 2,30 + SetVisible = 3,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 4,15 + SetX = 4,-12 + SetY = 4,46 + SetZ = 4,29 + SetVisible = 5,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 4,2 + SetX = 4,-32 + SetY = 4,37 + SetZ = 4,30 + SetVisible = 5,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 6,15 + SetX = 6,62 + SetY = 6,45 + SetZ = 6,29 + SetVisible = 7,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 6,2 + SetX = 6,43 + SetY = 6,39 + SetZ = 6,30 + SetVisible = 7,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 8,15 + SetX = 8,11 + SetY = 8,19 + SetZ = 8,29 + SetVisible = 9,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 8,2 + SetX = 8,-5 + SetY = 8,13 + SetZ = 8,30 + SetVisible = 9,false + + Play = 0,Comet Punch,100,59 diff --git a/PBS/Animations/Example anims/Move/BULLETSEED.txt b/PBS/Animations/Example anims/Move/BULLETSEED.txt new file mode 100644 index 000000000..3fb0b6d6b --- /dev/null +++ b/PBS/Animations/Example anims/Move/BULLETSEED.txt @@ -0,0 +1,546 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,BULLETSEED] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 0,25 + SetY = 0,-40 + SetZ = 0,27 + SetX = 1,64 + SetY = 1,-79 + SetX = 2,94 + SetY = 2,-118 + SetX = 3,134 + SetY = 3,-148 + SetX = 4,179 + SetY = 4,-187 + SetX = 5,175 + SetY = 5,-217 + SetX = 6,159 + SetY = 6,-246 + SetOpacity = 6,100 + SetX = 7,229 + SetY = 7,-256 + SetX = 8,154 + SetY = 8,-276 + SetX = 9,234 + SetY = 9,-196 + SetX = 10,175 + SetY = 10,-276 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 1,25 + SetY = 1,-40 + SetZ = 1,28 + SetX = 2,64 + SetY = 2,-79 + SetX = 3,100 + SetY = 3,-109 + SetX = 4,139 + SetY = 4,-139 + SetX = 5,179 + SetY = 5,-187 + SetX = 6,214 + SetY = 6,-237 + SetX = 7,169 + SetY = 7,-246 + SetX = 8,225 + SetY = 8,-217 + SetX = 9,184 + SetY = 9,-226 + SetVisible = 10,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 2,34 + SetY = 2,-40 + SetZ = 2,29 + SetX = 3,64 + SetY = 3,-70 + SetX = 4,104 + SetY = 4,-89 + SetX = 5,139 + SetY = 5,-139 + SetX = 6,179 + SetY = 6,-196 + SetX = 7,184 + SetY = 8,-178 + SetVisible = 9,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 3,34 + SetY = 3,-29 + SetZ = 3,30 + SetX = 4,69 + SetY = 4,-50 + SetX = 5,104 + SetY = 5,-89 + SetX = 6,139 + SetY = 6,-148 + SetX = 7,144 + SetVisible = 8,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 4,39 + SetY = 4,-10 + SetZ = 4,31 + SetX = 5,69 + SetY = 5,-50 + SetX = 6,100 + SetY = 6,-98 + SetVisible = 7,false + + Play = 0,throw,80 + Play = 2,throw,80 + Play = 5,throw,80 + Play = 5,Knock,80 + Play = 7,Knock,80 + Play = 8,throw,80 + Play = 9,Knock,80 +#------------------------------- +[Move,BULLETSEED,1] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 4,39 + SetY = 4,-10 + SetZ = 4,31 + SetX = 5,69 + SetY = 5,-50 + SetX = 6,100 + SetY = 6,-98 + SetVisible = 7,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 0,25 + SetY = 0,-40 + SetZ = 0,27 + SetX = 1,64 + SetY = 1,-79 + SetX = 2,94 + SetY = 2,-118 + SetX = 3,134 + SetY = 3,-148 + SetX = 4,179 + SetY = 4,-187 + SetX = 5,175 + SetY = 5,-217 + SetX = 6,159 + SetY = 6,-246 + SetOpacity = 6,100 + SetX = 7,229 + SetY = 7,-256 + SetX = 8,154 + SetY = 8,-276 + SetX = 9,234 + SetY = 9,-196 + SetX = 10,175 + SetY = 10,-276 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 1,25 + SetY = 1,-40 + SetZ = 1,28 + SetX = 2,64 + SetY = 2,-79 + SetX = 3,100 + SetY = 3,-109 + SetX = 4,139 + SetY = 4,-139 + SetX = 5,179 + SetY = 5,-187 + SetX = 6,214 + SetY = 6,-237 + SetX = 7,169 + SetY = 7,-246 + SetX = 8,225 + SetY = 8,-217 + SetX = 9,184 + SetY = 9,-226 + SetVisible = 10,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 2,34 + SetY = 2,-40 + SetZ = 2,29 + SetX = 3,64 + SetY = 3,-70 + SetX = 4,104 + SetY = 4,-89 + SetX = 5,139 + SetY = 5,-139 + SetX = 6,179 + SetY = 6,-196 + SetX = 7,184 + SetY = 8,-178 + SetVisible = 9,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 3,34 + SetY = 3,-29 + SetZ = 3,30 + SetX = 4,69 + SetY = 4,-50 + SetX = 5,104 + SetY = 5,-89 + SetX = 6,139 + SetY = 6,-148 + SetX = 7,144 + SetVisible = 8,false + + Play = 0,throw,80 + Play = 2,throw,80 + Play = 5,throw,80 + Play = 5,Knock,80 + Play = 7,Knock,80 + Play = 8,throw,80 + Play = 9,Knock,80 +#------------------------------- +[Move,BULLETSEED,2] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 3,34 + SetY = 3,-29 + SetZ = 3,30 + SetX = 4,69 + SetY = 4,-50 + SetX = 5,104 + SetY = 5,-89 + SetX = 6,139 + SetY = 6,-148 + SetX = 7,144 + SetVisible = 8,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 4,39 + SetY = 4,-10 + SetZ = 4,31 + SetX = 5,69 + SetY = 5,-50 + SetX = 6,100 + SetY = 6,-98 + SetVisible = 7,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 0,25 + SetY = 0,-40 + SetZ = 0,27 + SetX = 1,64 + SetY = 1,-79 + SetX = 2,94 + SetY = 2,-118 + SetX = 3,134 + SetY = 3,-148 + SetX = 4,179 + SetY = 4,-187 + SetX = 5,175 + SetY = 5,-217 + SetX = 6,159 + SetY = 6,-246 + SetOpacity = 6,100 + SetX = 7,229 + SetY = 7,-256 + SetX = 8,154 + SetY = 8,-276 + SetX = 9,234 + SetY = 9,-196 + SetX = 10,175 + SetY = 10,-276 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 1,25 + SetY = 1,-40 + SetZ = 1,28 + SetX = 2,64 + SetY = 2,-79 + SetX = 3,100 + SetY = 3,-109 + SetX = 4,139 + SetY = 4,-139 + SetX = 5,179 + SetY = 5,-187 + SetX = 6,214 + SetY = 6,-237 + SetX = 7,169 + SetY = 7,-246 + SetX = 8,225 + SetY = 8,-217 + SetX = 9,184 + SetY = 9,-226 + SetVisible = 10,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 2,34 + SetY = 2,-40 + SetZ = 2,29 + SetX = 3,64 + SetY = 3,-70 + SetX = 4,104 + SetY = 4,-89 + SetX = 5,139 + SetY = 5,-139 + SetX = 6,179 + SetY = 6,-196 + SetX = 7,184 + SetY = 8,-178 + SetVisible = 9,false + + Play = 0,throw,80 + Play = 2,throw,80 + Play = 5,throw,80 + Play = 5,Knock,80 + Play = 7,Knock,80 + Play = 8,throw,80 + Play = 9,Knock,80 +#------------------------------- +[Move,BULLETSEED,3] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 2,34 + SetY = 2,-40 + SetZ = 2,29 + SetX = 3,64 + SetY = 3,-70 + SetX = 4,104 + SetY = 4,-89 + SetX = 5,139 + SetY = 5,-139 + SetX = 6,179 + SetY = 6,-196 + SetX = 7,184 + SetY = 8,-178 + SetVisible = 9,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 3,34 + SetY = 3,-29 + SetZ = 3,30 + SetX = 4,69 + SetY = 4,-50 + SetX = 5,104 + SetY = 5,-89 + SetX = 6,139 + SetY = 6,-148 + SetX = 7,144 + SetVisible = 8,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 4,39 + SetY = 4,-10 + SetZ = 4,31 + SetX = 5,69 + SetY = 5,-50 + SetX = 6,100 + SetY = 6,-98 + SetVisible = 7,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 0,25 + SetY = 0,-40 + SetZ = 0,27 + SetX = 1,64 + SetY = 1,-79 + SetX = 2,94 + SetY = 2,-118 + SetX = 3,134 + SetY = 3,-148 + SetX = 4,179 + SetY = 4,-187 + SetX = 5,175 + SetY = 5,-217 + SetX = 6,159 + SetY = 6,-246 + SetOpacity = 6,100 + SetX = 7,229 + SetY = 7,-256 + SetX = 8,154 + SetY = 8,-276 + SetX = 9,234 + SetY = 9,-196 + SetX = 10,175 + SetY = 10,-276 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 1,25 + SetY = 1,-40 + SetZ = 1,28 + SetX = 2,64 + SetY = 2,-79 + SetX = 3,100 + SetY = 3,-109 + SetX = 4,139 + SetY = 4,-139 + SetX = 5,179 + SetY = 5,-187 + SetX = 6,214 + SetY = 6,-237 + SetX = 7,169 + SetY = 7,-246 + SetX = 8,225 + SetY = 8,-217 + SetX = 9,184 + SetY = 9,-226 + SetVisible = 10,false + + Play = 0,throw,80 + Play = 2,throw,80 + Play = 5,throw,80 + Play = 5,Knock,80 + Play = 7,Knock,80 + Play = 8,throw,80 + Play = 9,Knock,80 +#------------------------------- +[Move,BULLETSEED,4] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 1,25 + SetY = 1,-40 + SetZ = 1,28 + SetX = 2,64 + SetY = 2,-79 + SetX = 3,100 + SetY = 3,-109 + SetX = 4,139 + SetY = 4,-139 + SetX = 5,179 + SetY = 5,-187 + SetX = 6,214 + SetY = 6,-237 + SetX = 7,169 + SetY = 7,-246 + SetX = 8,225 + SetY = 8,-217 + SetX = 9,184 + SetY = 9,-226 + SetVisible = 10,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 2,34 + SetY = 2,-40 + SetZ = 2,29 + SetX = 3,64 + SetY = 3,-70 + SetX = 4,104 + SetY = 4,-89 + SetX = 5,139 + SetY = 5,-139 + SetX = 6,179 + SetY = 6,-196 + SetX = 7,184 + SetY = 8,-178 + SetVisible = 9,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 3,34 + SetY = 3,-29 + SetZ = 3,30 + SetX = 4,69 + SetY = 4,-50 + SetX = 5,104 + SetY = 5,-89 + SetX = 6,139 + SetY = 6,-148 + SetX = 7,144 + SetVisible = 8,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 4,39 + SetY = 4,-10 + SetZ = 4,31 + SetX = 5,69 + SetY = 5,-50 + SetX = 6,100 + SetY = 6,-98 + SetVisible = 7,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 0,25 + SetY = 0,-40 + SetZ = 0,27 + SetX = 1,64 + SetY = 1,-79 + SetX = 2,94 + SetY = 2,-118 + SetX = 3,134 + SetY = 3,-148 + SetX = 4,179 + SetY = 4,-187 + SetX = 5,175 + SetY = 5,-217 + SetX = 6,159 + SetY = 6,-246 + SetOpacity = 6,100 + SetX = 7,229 + SetY = 7,-256 + SetX = 8,154 + SetY = 8,-276 + SetX = 9,234 + SetY = 9,-196 + SetX = 10,175 + SetY = 10,-276 + + Play = 0,throw,80 + Play = 2,throw,80 + Play = 5,throw,80 + Play = 5,Knock,80 + Play = 7,Knock,80 + Play = 8,throw,80 + Play = 9,Knock,80 diff --git a/PBS/Animations/Example anims/Move/CHARGE.txt b/PBS/Animations/Example anims/Move/CHARGE.txt new file mode 100644 index 000000000..90368f69e --- /dev/null +++ b/PBS/Animations/Example anims/Move/CHARGE.txt @@ -0,0 +1,150 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,CHARGE] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/electric2 + Focus = User + SetX = 0,200 + SetY = 0,14 + SetZ = 0,27 + SetFrame = 1,7 + SetX = 1,168 + SetFrame = 2,0 + SetX = 2,88 + SetY = 2,6 + SetFrame = 3,7 + SetX = 3,56 + SetFrame = 4,1 + SetX = 4,48 + SetFrame = 5,2 + SetFrame = 6,6 + SetX = 6,-56 + SetY = 6,38 + SetFrame = 7,5 + SetX = 7,40 + SetY = 7,-34 + SetFrame = 8,1 + SetX = 8,-104 + SetFrame = 9,6 + SetX = 9,64 + SetY = 9,-50 + SetFrame = 10,5 + SetX = 10,-64 + SetY = 10,70 + SetFrame = 11,6 + SetOpacity = 11,100 + + Graphic = Examples/electric2 + Focus = User + SetFrame = 1,3 + SetX = 1,-160 + SetY = 1,6 + SetZ = 1,28 + SetFrame = 2,4 + SetX = 2,-128 + SetFrame = 3,3 + SetX = 3,-88 + SetFrame = 4,4 + SetX = 4,-64 + SetFrame = 5,5 + SetX = 5,-56 + SetY = 5,30 + SetFrame = 6,6 + SetX = 6,40 + SetY = 6,-34 + SetFrame = 7,2 + SetX = 7,-104 + SetFrame = 8,6 + SetX = 8,-80 + SetY = 8,78 + SetFrame = 9,2 + SetX = 9,-112 + SetY = 9,-26 + SetFrame = 10,1 + SetOpacity = 10,100 + SetFrame = 11,3 + SetX = 11,104 + SetY = 11,-2 + + Graphic = Examples/electric2 + Focus = User + SetFrame = 3,4 + SetX = 3,200 + SetY = 3,14 + SetZ = 3,29 + SetFrame = 4,3 + SetX = 4,152 + SetFrame = 5,4 + SetX = 5,88 + SetY = 5,6 + SetFrame = 6,0 + SetX = 6,-56 + SetY = 6,14 + SetFrame = 7,5 + SetX = 7,-80 + SetY = 7,78 + SetFrame = 8,7 + SetX = 8,48 + SetY = 8,-2 + SetVisible = 9,false + + Graphic = Examples/electric2 + Focus = User + SetX = 4,-200 + SetY = 4,14 + SetZ = 4,30 + SetFrame = 5,7 + SetX = 5,-152 + SetFrame = 6,1 + SetX = 6,-72 + SetY = 6,-34 + SetFrame = 7,3 + SetY = 7,14 + SetFrame = 8,5 + SetX = 8,64 + SetY = 8,-50 + SetVisible = 9,false + + Graphic = Examples/electric2 + Focus = User + SetX = 5,216 + SetY = 5,22 + SetZ = 5,31 + SetFrame = 6,3 + SetX = 6,176 + SetFrame = 7,4 + SetX = 7,88 + SetY = 7,14 + SetFrame = 8,2 + SetX = 8,48 + SetY = 8,54 + SetVisible = 9,false + + Graphic = Examples/electric2 + Focus = User + SetFrame = 7,1 + SetX = 7,48 + SetY = 7,62 + SetZ = 7,32 + SetVisible = 8,false + + Graphic = Examples/electric2 + Focus = User + SetFrame = 10,4 + SetX = 10,80 + SetY = 10,-2 + SetZ = 10,29 + SetFrame = 11,2 + SetX = 11,72 + SetY = 11,86 + + Play = 0,Thunder3,80 + Play = 2,Thunder3,80 + Play = 4,Thunder3,80 + Play = 5,Thunder3,80 + Play = 7,Thunder3,80 diff --git a/PBS/Animations/Example anims/Move/CHARM.txt b/PBS/Animations/Example anims/Move/CHARM.txt new file mode 100644 index 000000000..80b417202 --- /dev/null +++ b/PBS/Animations/Example anims/Move/CHARM.txt @@ -0,0 +1,75 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,CHARM] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/electric2 + Focus = Target + SetFrame = 2,9 + SetX = 2,56 + SetY = 2,46 + SetZ = 2,28 + SetFrame = 3,10 + SetX = 3,48 + SetY = 3,38 + SetFrame = 4,11 + SetX = 4,40 + SetY = 4,30 + SetFrame = 5,12 + SetY = 5,22 + SetFrame = 6,10 + SetX = 6,-32 + SetY = 6,-18 + SetFrame = 7,11 + SetY = 7,-26 + SetVisible = 8,false + + Graphic = Examples/electric2 + Focus = Target + SetFrame = 5,9 + SetX = 5,-8 + SetY = 5,6 + SetZ = 5,29 + SetVisible = 6,false + + Graphic = Examples/electric2 + Focus = Target + SetFrame = 0,9 + SetX = 0,-48 + SetY = 0,30 + SetZ = 0,27 + SetFrame = 1,10 + SetX = 1,-40 + SetY = 1,22 + SetFrame = 2,11 + SetX = 2,-32 + SetY = 2,14 + SetFrame = 3,12 + SetY = 3,6 + SetFrame = 4,13 + SetY = 4,-2 + SetX = 5,-40 + SetY = 5,-10 + SetOpacity = 5,100 + SetX = 6,40 + SetY = 6,14 + SetOpacity = 6,255 + SetX = 7,48 + SetY = 7,6 + SetOpacity = 7,100 + SetFrame = 8,12 + SetX = 8,-32 + SetY = 8,-34 + SetOpacity = 8,255 + SetFrame = 9,13 + SetX = 9,-40 + SetY = 9,-42 + SetX = 10,-48 + SetY = 10,-50 + SetOpacity = 10,100 diff --git a/PBS/Animations/Example anims/Move/CLEARSMOG.txt b/PBS/Animations/Example anims/Move/CLEARSMOG.txt new file mode 100644 index 000000000..53b1c5f9f --- /dev/null +++ b/PBS/Animations/Example anims/Move/CLEARSMOG.txt @@ -0,0 +1,27 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,CLEARSMOG] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 0,6 + SetX = 0,200 + SetY = 0,-196 + SetZ = 0,27 + SetX = 2,200 + SetY = 2,-201 + SetY = 3,-196 + SetX = 4,198 + SetY = 4,-198 + SetX = 5,199 + SetY = 5,-192 + SetX = 6,198 + + Play = 0,Snore,86 diff --git a/PBS/Animations/Example anims/Move/CLOSECOMBAT.txt b/PBS/Animations/Example anims/Move/CLOSECOMBAT.txt new file mode 100644 index 000000000..63860a0cd --- /dev/null +++ b/PBS/Animations/Example anims/Move/CLOSECOMBAT.txt @@ -0,0 +1,305 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,CLOSECOMBAT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 1,7 + SetX = 1,-23 + SetY = 1,29 + SetZ = 1,28 + SetFrame = 2,8 + SetX = 2,-40 + SetY = 2,58 + SetOpacity = 2,144 + SetX = 3,-43 + SetY = 3,52 + SetOpacity = 3,43 + SetFrame = 4,10 + SetX = 4,38 + SetY = 4,-21 + SetOpacity = 4,55 + SetFrame = 5,8 + SetX = 5,47 + SetY = 5,46 + SetOpacity = 5,54 + SetX = 6,-12 + SetY = 6,-18 + SetOpacity = 6,44 + SetFrame = 8,10 + SetX = 8,38 + SetY = 8,-10 + SetOpacity = 8,170 + SetFrame = 9,7 + SetX = 9,11 + SetY = 9,46 + SetOpacity = 9,255 + SetFrame = 10,10 + SetX = 10,50 + SetY = 10,23 + SetX = 11,41 + SetY = 11,27 + SetOpacity = 11,114 + SetX = 12,26 + SetY = 12,-5 + SetOpacity = 12,255 + SetX = 13,18 + SetY = 13,1 + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 1,9 + SetX = 1,-52 + SetY = 1,51 + SetZ = 1,29 + SetFrame = 2,10 + SetX = 2,-14 + SetY = 2,37 + SetOpacity = 2,172 + SetX = 3,-23 + SetY = 3,40 + SetOpacity = 3,81 + SetFrame = 4,11 + SetX = 4,20 + SetY = 4,-29 + SetOpacity = 4,63 + SetX = 5,33 + SetY = 5,28 + SetOpacity = 5,89 + SetX = 6,-19 + SetY = 6,-19 + SetOpacity = 6,74 + SetX = 8,23 + SetY = 8,-11 + SetOpacity = 8,178 + SetX = 9,33 + SetY = 9,35 + SetOpacity = 9,255 + SetY = 10,29 + SetX = 11,27 + SetOpacity = 11,164 + SetX = 12,9 + SetY = 12,-5 + SetOpacity = 12,255 + SetX = 13,4 + SetY = 13,7 + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 1,11 + SetX = 1,-31 + SetY = 1,41 + SetZ = 1,30 + SetX = 2,-23 + SetY = 2,38 + SetOpacity = 2,144 + SetY = 3,35 + SetOpacity = 3,36 + SetFrame = 4,8 + SetX = 4,11 + SetY = 4,13 + SetOpacity = 4,115 + SetX = 5,-44 + SetY = 5,-3 + SetOpacity = 5,154 + SetFrame = 6,7 + SetX = 6,-6 + SetY = 6,3 + SetOpacity = 6,255 + SetFrame = 7,8 + SetX = 7,-1 + SetY = 7,11 + SetFrame = 8,11 + SetX = 8,40 + SetY = 8,27 + SetVisible = 9,false + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 2,9 + SetX = 2,33 + SetY = 2,8 + SetZ = 2,31 + SetFrame = 3,10 + SetX = 3,-10 + SetY = 3,-11 + SetOpacity = 3,164 + SetFrame = 4,8 + SetX = 4,47 + SetY = 4,37 + SetOpacity = 4,154 + SetFrame = 5,10 + SetX = 5,-15 + SetY = 5,-14 + SetOpacity = 5,143 + SetFrame = 6,9 + SetX = 6,24 + SetY = 6,-10 + SetOpacity = 6,255 + SetFrame = 7,10 + SetX = 7,34 + SetY = 7,-9 + SetVisible = 8,false + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 2,9 + SetX = 2,-5 + SetY = 2,-13 + SetZ = 2,32 + SetFrame = 3,10 + SetX = 3,37 + SetY = 3,11 + SetOpacity = 3,144 + SetFrame = 4,11 + SetX = 4,30 + SetY = 4,23 + SetOpacity = 4,174 + SetX = 5,-27 + SetY = 5,-7 + SetOpacity = 5,144 + SetX = 6,17 + SetY = 6,0 + SetOpacity = 6,255 + SetX = 7,16 + SetY = 7,-2 + SetVisible = 8,false + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 2,11 + SetX = 2,16 + SetY = 2,-2 + SetZ = 2,33 + SetX = 3,13 + SetY = 3,-6 + SetOpacity = 3,154 + SetFrame = 4,9 + SetX = 4,-46 + SetY = 4,-7 + SetOpacity = 4,255 + SetFrame = 5,7 + SetX = 5,-9 + SetY = 5,14 + SetVisible = 6,false + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 3,7 + SetX = 3,29 + SetY = 3,42 + SetZ = 3,34 + SetX = 4,-15 + SetY = 4,-24 + SetFrame = 5,9 + SetX = 5,22 + SetY = 5,-1 + SetVisible = 6,false + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 3,7 + SetX = 3,-7 + SetY = 3,30 + SetZ = 3,35 + SetFrame = 4,11 + SetX = 4,-25 + SetY = 4,-14 + SetX = 5,14 + SetY = 5,7 + SetVisible = 6,false + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 3,11 + SetX = 3,15 + SetY = 3,31 + SetZ = 3,36 + SetVisible = 4,false + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 4,10 + SetX = 4,-1 + SetY = 4,-39 + SetZ = 4,27 + SetOpacity = 4,47 + SetFrame = 5,8 + SetX = 5,17 + SetY = 5,22 + SetOpacity = 5,20 + SetX = 6,-45 + SetY = 6,-5 + SetOpacity = 6,72 + SetX = 8,1 + SetY = 8,3 + SetOpacity = 8,154 + SetFrame = 9,9 + SetX = 9,44 + SetY = 9,25 + SetOpacity = 9,255 + SetFrame = 10,8 + SetX = 10,12 + SetY = 10,42 + SetX = 11,5 + SetY = 11,43 + SetOpacity = 11,154 + SetX = 12,-6 + SetY = 12,4 + SetOpacity = 12,255 + SetX = 13,-12 + SetY = 13,20 + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 11,7 + SetX = 11,-11 + SetY = 11,12 + SetZ = 11,30 + SetVisible = 12,false + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 11,9 + SetX = 11,18 + SetY = 11,7 + SetZ = 11,31 + SetVisible = 12,false + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 11,11 + SetX = 11,9 + SetY = 11,8 + SetZ = 11,32 + SetVisible = 12,false + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 13,9 + SetX = 13,-30 + SetY = 13,-27 + SetZ = 13,30 + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 13,7 + SetX = 13,0 + SetY = 13,-33 + SetZ = 13,31 + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 13,11 + SetX = 13,-10 + SetY = 13,-25 + SetZ = 13,32 + + Play = 0,Comet Punch,100,105 diff --git a/PBS/Animations/Example anims/Move/COMETPUNCH.txt b/PBS/Animations/Example anims/Move/COMETPUNCH.txt new file mode 100644 index 000000000..9690bf02a --- /dev/null +++ b/PBS/Animations/Example anims/Move/COMETPUNCH.txt @@ -0,0 +1,221 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,COMETPUNCH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 2,48 + SetY = 2,-18 + SetZ = 2,28 + SetX = 3,-16 + SetY = 3,-66 + SetFrame = 4,1 + SetFrame = 5,0 + SetX = 5,48 + SetY = 5,14 + SetVisible = 6,false + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 0,-32 + SetY = 0,6 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,1 + SetX = 3,48 + SetY = 3,-18 + SetFrame = 4,2 + SetX = 5,-16 + SetY = 5,-66 + SetFrame = 6,1 + SetX = 6,48 + SetY = 6,14 + SetFrame = 7,2 + + Play = 0,Blow1,80 + Play = 2,Blow1,80 + Play = 5,Blow1,80 +#------------------------------- +[Move,COMETPUNCH,1] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 0,-32 + SetY = 0,6 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,1 + SetX = 3,48 + SetY = 3,-18 + SetFrame = 4,2 + SetX = 5,-16 + SetY = 5,-66 + SetFrame = 6,1 + SetX = 6,48 + SetY = 6,14 + SetFrame = 7,2 + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 2,48 + SetY = 2,-18 + SetZ = 2,28 + SetX = 3,-16 + SetY = 3,-66 + SetFrame = 4,1 + SetFrame = 5,0 + SetX = 5,48 + SetY = 5,14 + SetVisible = 6,false + + Play = 0,Blow1,80 + Play = 2,Blow1,80 + Play = 5,Blow1,80 +#------------------------------- +[Move,COMETPUNCH,2] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 2,48 + SetY = 2,-18 + SetZ = 2,28 + SetX = 3,-16 + SetY = 3,-66 + SetFrame = 4,1 + SetFrame = 5,0 + SetX = 5,48 + SetY = 5,14 + SetVisible = 6,false + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 0,-32 + SetY = 0,6 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,1 + SetX = 3,48 + SetY = 3,-18 + SetFrame = 4,2 + SetX = 5,-16 + SetY = 5,-66 + SetFrame = 6,1 + SetX = 6,48 + SetY = 6,14 + SetFrame = 7,2 + + Play = 0,Blow1,80 + Play = 2,Blow1,80 + Play = 5,Blow1,80 +#------------------------------- +[Move,COMETPUNCH,3] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 0,-32 + SetY = 0,6 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,1 + SetX = 3,48 + SetY = 3,-18 + SetFrame = 4,2 + SetX = 5,-16 + SetY = 5,-66 + SetFrame = 6,1 + SetX = 6,48 + SetY = 6,14 + SetFrame = 7,2 + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 2,48 + SetY = 2,-18 + SetZ = 2,28 + SetX = 3,-16 + SetY = 3,-66 + SetFrame = 4,1 + SetFrame = 5,0 + SetX = 5,48 + SetY = 5,14 + SetVisible = 6,false + + Play = 0,Blow1,80 + Play = 2,Blow1,80 + Play = 5,Blow1,80 +#------------------------------- +[Move,COMETPUNCH,4] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 2,48 + SetY = 2,-18 + SetZ = 2,28 + SetX = 3,-16 + SetY = 3,-66 + SetFrame = 4,1 + SetFrame = 5,0 + SetX = 5,48 + SetY = 5,14 + SetVisible = 6,false + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 0,-32 + SetY = 0,6 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,1 + SetX = 3,48 + SetY = 3,-18 + SetFrame = 4,2 + SetX = 5,-16 + SetY = 5,-66 + SetFrame = 6,1 + SetX = 6,48 + SetY = 6,14 + SetFrame = 7,2 + + Play = 0,Blow1,80 + Play = 2,Blow1,80 + Play = 5,Blow1,80 diff --git a/PBS/Animations/Example anims/Move/CONFUSERAY.txt b/PBS/Animations/Example anims/Move/CONFUSERAY.txt new file mode 100644 index 000000000..320a13b50 --- /dev/null +++ b/PBS/Animations/Example anims/Move/CONFUSERAY.txt @@ -0,0 +1,70 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,CONFUSERAY] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/estranho + Focus = UserAndTarget + SetFrame = 0,1 + SetX = 0,19 + SetY = 0,-20 + SetZ = 0,27 + SetFrame = 1,2 + SetX = 1,29 + SetY = 1,-29 + SetFrame = 2,3 + SetX = 2,34 + SetY = 2,-40 + SetFrame = 3,4 + SetX = 3,44 + SetY = 3,-50 + SetFrame = 4,5 + SetX = 4,54 + SetY = 4,-59 + SetFrame = 5,6 + SetX = 5,64 + SetY = 5,-70 + SetFrame = 6,7 + SetX = 6,75 + SetY = 6,-79 + SetFrame = 7,8 + SetX = 7,84 + SetY = 7,-89 + SetFrame = 8,9 + SetX = 8,94 + SetY = 8,-98 + SetFrame = 9,10 + SetX = 9,104 + SetY = 9,-109 + SetFrame = 10,11 + SetX = 10,114 + SetY = 10,-118 + SetFrame = 11,12 + SetX = 11,125 + SetY = 11,-128 + SetFrame = 12,13 + SetX = 12,134 + SetY = 12,-139 + SetFrame = 13,14 + SetX = 13,144 + SetY = 13,-148 + SetFrame = 14,11 + SetX = 14,154 + SetY = 14,-157 + SetFrame = 15,12 + SetX = 15,164 + SetY = 15,-168 + SetFrame = 16,13 + SetX = 16,179 + SetY = 16,-178 + SetFrame = 17,14 + SetOpacity = 17,100 + + Play = 1,Twine,80 + Play = 12,Confuse,80 diff --git a/PBS/Animations/Example anims/Move/COTTONGUARD.txt b/PBS/Animations/Example anims/Move/COTTONGUARD.txt new file mode 100644 index 000000000..edfc1d8e3 --- /dev/null +++ b/PBS/Animations/Example anims/Move/COTTONGUARD.txt @@ -0,0 +1,97 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,COTTONGUARD] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/animsheet + Focus = User + SetFrame = 1,15 + SetX = 1,28 + SetY = 1,34 + SetZ = 1,28 + SetX = 2,38 + SetY = 2,23 + SetX = 3,39 + SetY = 3,19 + SetX = 4,26 + SetY = 4,10 + SetX = 5,37 + SetY = 5,32 + SetX = 6,26 + SetY = 6,-7 + SetVisible = 7,false + + Graphic = Examples/animsheet + Focus = User + SetFrame = 3,15 + SetX = 3,5 + SetY = 3,39 + SetZ = 3,29 + SetX = 4,42 + SetY = 4,35 + SetX = 5,18 + SetY = 5,13 + SetX = 6,13 + SetY = 6,28 + SetVisible = 7,false + + Graphic = Examples/animsheet + Focus = User + SetFrame = 3,15 + SetX = 3,39 + SetY = 3,42 + SetZ = 3,30 + SetX = 4,10 + SetY = 4,45 + SetX = 5,35 + SetY = 5,-10 + SetX = 6,50 + SetY = 6,41 + SetVisible = 7,false + + Graphic = Examples/animsheet + Focus = User + SetFrame = 3,15 + SetX = 3,48 + SetY = 3,-4 + SetZ = 3,31 + SetX = 4,62 + SetY = 4,12 + SetX = 5,52 + SetY = 5,8 + SetX = 6,10 + SetY = 6,45 + SetVisible = 7,false + + Graphic = Examples/animsheet + Focus = User + SetFrame = 4,15 + SetX = 4,1 + SetY = 4,13 + SetZ = 4,32 + SetVisible = 5,false + + Graphic = Examples/animsheet + Focus = User + SetFrame = 0,15 + SetX = 0,-15 + SetY = 0,39 + SetZ = 0,27 + SetX = 1,-5 + SetY = 1,48 + SetX = 2,7 + SetY = 2,44 + SetY = 3,-1 + SetX = 4,21 + SetY = 4,-14 + SetX = 5,7 + SetY = 5,43 + SetX = 6,56 + SetY = 6,9 + SetVisible = 7,false + + Play = 0,Substitute,80 diff --git a/PBS/Animations/Example anims/Move/COTTONSPORE.txt b/PBS/Animations/Example anims/Move/COTTONSPORE.txt new file mode 100644 index 000000000..2e3717c14 --- /dev/null +++ b/PBS/Animations/Example anims/Move/COTTONSPORE.txt @@ -0,0 +1,32 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,COTTONSPORE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Special5 + Focus = Target + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFrame = 6,6 + SetFrame = 7,7 + SetFrame = 8,8 + SetFrame = 9,9 + SetFrame = 10,10 + SetFrame = 11,11 + SetFrame = 12,12 + SetFrame = 13,13 + SetVisible = 14,false + + Play = 0,Sand,80 diff --git a/PBS/Animations/Example anims/Move/COUNTER.txt b/PBS/Animations/Example anims/Move/COUNTER.txt new file mode 100644 index 000000000..235f96260 --- /dev/null +++ b/PBS/Animations/Example anims/Move/COUNTER.txt @@ -0,0 +1,155 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,COUNTER] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/punches + Focus = UserAndTarget + SetX = 0,200 + SetY = 0,-196 + SetZ = 0,27 + SetFrame = 1,15 + SetX = 1,218 + SetY = 1,-225 + SetZoomX = 1,50 + SetZoomY = 1,50 + SetFrame = 2,0 + SetX = 2,200 + SetY = 2,-195 + SetZoomX = 2,100 + SetZoomY = 2,100 + SetFrame = 3,15 + SetX = 3,206 + SetY = 3,-176 + SetZoomX = 3,50 + SetZoomY = 3,50 + SetX = 4,175 + SetY = 4,-312 + SetX = 5,225 + SetY = 5,-187 + SetVisible = 6,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetX = 1,202 + SetY = 1,-195 + SetZ = 1,28 + SetFrame = 2,15 + SetX = 2,218 + SetY = 2,-240 + SetZoomX = 2,50 + SetZoomY = 2,50 + SetX = 3,181 + SetY = 3,-170 + SetX = 4,164 + SetY = 4,-315 + SetX = 5,212 + SetY = 5,-206 + SetVisible = 6,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 1,15 + SetX = 1,175 + SetY = 1,-195 + SetZ = 1,29 + SetZoomX = 1,50 + SetZoomY = 1,50 + SetX = 2,181 + SetY = 2,-228 + SetX = 3,187 + SetY = 3,-198 + SetX = 4,193 + SetY = 4,-337 + SetX = 5,225 + SetY = 5,-267 + SetVisible = 6,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 2,15 + SetX = 2,212 + SetY = 2,-192 + SetZ = 2,30 + SetZoomX = 2,50 + SetZoomY = 2,50 + SetX = 3,175 + SetY = 3,-251 + SetY = 4,-160 + SetX = 5,194 + SetY = 5,-175 + SetVisible = 6,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 3,15 + SetX = 3,218 + SetY = 3,-217 + SetZ = 3,31 + SetZoomX = 3,50 + SetZoomY = 3,50 + SetX = 4,206 + SetY = 4,-254 + SetX = 5,187 + SetY = 5,-265 + SetVisible = 6,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetX = 3,201 + SetY = 3,-196 + SetZ = 3,32 + SetFrame = 4,15 + SetX = 4,200 + SetZoomX = 4,50 + SetZoomY = 4,50 + SetX = 5,162 + SetY = 5,-334 + SetVisible = 6,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetX = 4,200 + SetY = 4,-200 + SetZ = 4,33 + SetFrame = 5,15 + SetX = 5,212 + SetY = 5,-289 + SetZoomX = 5,50 + SetZoomY = 5,50 + SetVisible = 6,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 5,15 + SetX = 5,175 + SetY = 5,-145 + SetZ = 5,34 + SetZoomX = 5,50 + SetZoomY = 5,50 + SetVisible = 6,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 5,15 + SetX = 5,193 + SetY = 5,-309 + SetZ = 5,35 + SetZoomX = 5,50 + SetZoomY = 5,50 + SetVisible = 6,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetX = 5,211 + SetY = 5,-206 + SetZ = 5,36 + SetVisible = 6,false + + Play = 0,MiningCollapse,80 diff --git a/PBS/Animations/Example anims/Move/CRUNCH.txt b/PBS/Animations/Example anims/Move/CRUNCH.txt new file mode 100644 index 000000000..cf94707b6 --- /dev/null +++ b/PBS/Animations/Example anims/Move/CRUNCH.txt @@ -0,0 +1,119 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,CRUNCH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/teeth + Focus = Target + SetX = 0,12 + SetY = 0,1 + SetZ = 0,27 + SetFrame = 1,1 + SetX = 1,7 + SetY = 1,2 + SetFrame = 2,2 + SetX = 2,3 + SetY = 2,3 + SetFrame = 3,3 + SetY = 3,1 + SetFrame = 4,4 + SetX = 4,-3 + SetY = 4,-4 + SetFrame = 5,5 + SetX = 5,5 + SetFrame = 6,6 + SetX = 6,4 + SetY = 6,0 + SetFrame = 7,7 + SetX = 7,5 + SetY = 7,3 + SetFrame = 8,8 + SetX = 8,4 + SetY = 8,-3 + SetFrame = 9,9 + SetX = 9,0 + SetY = 9,-2 + SetFrame = 10,10 + SetX = 10,11 + SetY = 10,2 + SetFrame = 11,11 + SetX = 11,7 + SetY = 11,-3 + SetFrame = 12,12 + SetX = 12,0 + SetY = 12,1 + SetVisible = 13,false + + Graphic = Examples/teeth + Focus = Target + SetFrame = 7,13 + SetX = 7,60 + SetY = 7,19 + SetZ = 7,28 + SetFrame = 8,14 + SetX = 8,34 + SetY = 8,-1 + SetX = 9,-5 + SetY = 9,16 + SetX = 10,-53 + SetY = 10,32 + SetVisible = 11,false + + Graphic = Examples/teeth + Focus = Target + SetFrame = 7,13 + SetX = 7,-41 + SetY = 7,-2 + SetZ = 7,29 + SetFrame = 8,14 + SetX = 8,-55 + SetY = 8,8 + SetX = 9,41 + SetY = 9,23 + SetFrame = 10,13 + SetX = 10,53 + SetY = 10,20 + SetVisible = 11,false + + Graphic = Examples/teeth + Focus = Target + SetFrame = 8,13 + SetX = 8,-41 + SetY = 8,-1 + SetZ = 8,30 + SetFrame = 9,14 + SetX = 9,-57 + SetY = 9,19 + SetFrame = 10,13 + SetX = 10,3 + SetY = 10,45 + SetVisible = 11,false + + Graphic = Examples/teeth + Focus = Target + SetFrame = 8,13 + SetX = 8,58 + SetY = 8,3 + SetZ = 8,31 + SetX = 9,7 + SetY = 9,56 + SetFrame = 10,14 + SetX = 10,20 + SetY = 10,18 + SetVisible = 11,false + + Graphic = Examples/teeth + Focus = Target + SetFrame = 10,14 + SetX = 10,-59 + SetY = 10,0 + SetZ = 10,32 + SetVisible = 11,false + + Play = 7,Super Fang,100,111 diff --git a/PBS/Animations/Example anims/Move/CRUSHCLAW.txt b/PBS/Animations/Example anims/Move/CRUSHCLAW.txt new file mode 100644 index 000000000..948584b47 --- /dev/null +++ b/PBS/Animations/Example anims/Move/CRUSHCLAW.txt @@ -0,0 +1,39 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,CRUSHCLAW] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/dragon claw + Focus = Target + SetFrame = 0,1 + SetX = 0,3 + SetY = 0,-12 + SetZ = 0,27 + SetFrame = 1,2 + SetX = 1,8 + SetY = 1,-9 + SetFrame = 2,3 + SetX = 2,18 + SetY = 2,-3 + SetFrame = 3,4 + SetX = 3,16 + SetY = 3,16 + SetFrame = 4,5 + SetX = 4,13 + SetY = 4,9 + SetFrame = 5,6 + SetY = 5,14 + SetFrame = 6,7 + SetX = 6,8 + SetFrame = 7,8 + SetX = 7,0 + SetVisible = 8,false + + Play = 0,Slash,100,135 + Play = 4,Slash,100,135 diff --git a/PBS/Animations/Example anims/Move/CURSE.txt b/PBS/Animations/Example anims/Move/CURSE.txt new file mode 100644 index 000000000..d0b18ee8c --- /dev/null +++ b/PBS/Animations/Example anims/Move/CURSE.txt @@ -0,0 +1,25 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,CURSE] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/ghost1 + Focus = User + SetFrame = 0,8 + SetX = 0,8 + SetY = 0,-82 + SetZ = 0,27 + SetAngle = 0,90 + SetY = 1,-42 + SetFrame = 2,9 + SetY = 2,-26 + SetY = 3,-18 + SetFrame = 4,10 + SetX = 4,0 + SetVisible = 8,false + + Play = 2,Darkness6,80 diff --git a/PBS/Animations/Example anims/Move/CUT.txt b/PBS/Animations/Example anims/Move/CUT.txt new file mode 100644 index 000000000..516e7780e --- /dev/null +++ b/PBS/Animations/Example anims/Move/CUT.txt @@ -0,0 +1,28 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,CUT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/004-Attack02 + Focus = Target + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFrame = 6,6 + SetFrame = 7,7 + SetFrame = 8,8 + + Play = 0,Slash10,80 + Play = 3,Slash2,80 + Play = 6,Slash11,80 diff --git a/PBS/Animations/Example anims/Move/DETECT.txt b/PBS/Animations/Example anims/Move/DETECT.txt new file mode 100644 index 000000000..8a31ea93b --- /dev/null +++ b/PBS/Animations/Example anims/Move/DETECT.txt @@ -0,0 +1,30 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,DETECT] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 0,8 + SetX = 0,38 + SetY = 0,-30 + SetZ = 0,27 + SetX = 1,39 + SetY = 1,-28 + SetFrame = 2,7 + SetX = 2,32 + SetY = 2,-23 + SetX = 3,36 + SetY = 3,-24 + SetFrame = 4,6 + SetX = 4,24 + SetY = 4,-22 + SetX = 5,25 + SetY = 5,-18 + SetVisible = 6,false + + Play = 0,Flash2,80,85 diff --git a/PBS/Animations/Example anims/Move/DISABLE.txt b/PBS/Animations/Example anims/Move/DISABLE.txt new file mode 100644 index 000000000..dc8c86dc2 --- /dev/null +++ b/PBS/Animations/Example anims/Move/DISABLE.txt @@ -0,0 +1,42 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,DISABLE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 4,8 + SetX = 4,200 + SetY = 4,-200 + SetZ = 4,28 + SetAngle = 4,45 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 6,7 + SetX = 6,203 + SetY = 6,-200 + SetZ = 6,29 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 0,10 + SetX = 0,200 + SetY = 0,-192 + SetZ = 0,27 + SetX = 1,200 + SetY = 1,-196 + SetFrame = 2,8 + SetY = 2,-195 + SetX = 3,200 + SetY = 3,-200 + SetX = 4,202 + SetY = 4,-196 + + Play = 0,Sword2,80,121 diff --git a/PBS/Animations/Example anims/Move/DIZZYPUNCH.txt b/PBS/Animations/Example anims/Move/DIZZYPUNCH.txt new file mode 100644 index 000000000..a39c73069 --- /dev/null +++ b/PBS/Animations/Example anims/Move/DIZZYPUNCH.txt @@ -0,0 +1,296 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,DIZZYPUNCH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/punches + Focus = Target + SetFrame = 0,1 + SetX = 0,0 + SetY = 0,1 + SetZ = 0,27 + SetFrame = 1,7 + SetY = 1,0 + SetY = 2,-5 + SetFrame = 4,1 + SetX = 4,3 + SetY = 4,0 + SetX = 6,-1 + SetY = 6,1 + SetX = 7,4 + SetY = 7,-5 + SetX = 8,0 + SetY = 8,0 + SetY = 9,1 + SetFrame = 10,7 + SetY = 10,0 + SetY = 11,-5 + SetFrame = 13,1 + SetX = 13,3 + SetY = 13,0 + SetX = 15,-1 + SetY = 15,1 + SetX = 16,4 + SetY = 16,-5 + SetX = 17,0 + SetY = 17,0 + + Graphic = Examples/punches + Focus = Target + SetFrame = 1,1 + SetX = 1,4 + SetY = 1,6 + SetZ = 1,28 + SetX = 2,6 + SetY = 2,2 + SetFrame = 4,11 + SetX = 4,61 + SetY = 4,-8 + SetX = 5,31 + SetY = 5,28 + SetX = 6,-6 + SetY = 6,32 + SetY = 7,22 + SetX = 8,23 + SetY = 8,15 + SetVisible = 9,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 2,11 + SetX = 2,63 + SetY = 2,-16 + SetZ = 2,29 + SetX = 4,85 + SetY = 4,9 + SetX = 5,44 + SetY = 5,46 + SetX = 6,-28 + SetY = 6,60 + SetX = 7,-20 + SetY = 7,50 + SetX = 8,38 + SetY = 8,43 + SetVisible = 9,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 2,11 + SetX = 2,87 + SetY = 2,-8 + SetZ = 2,30 + SetX = 4,-28 + SetY = 4,-28 + SetX = 5,-33 + SetY = 5,-58 + SetX = 6,27 + SetY = 6,-42 + SetX = 7,38 + SetY = 7,-46 + SetX = 8,-27 + SetY = 8,16 + SetVisible = 9,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 3,11 + SetX = 3,-38 + SetY = 3,-14 + SetZ = 3,31 + SetX = 4,-55 + SetY = 4,-36 + SetVisible = 5,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 3,11 + SetX = 3,-68 + SetY = 3,-5 + SetZ = 3,32 + SetVisible = 4,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 5,11 + SetX = 5,-7 + SetY = 5,-38 + SetZ = 5,32 + SetVisible = 6,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 6,11 + SetX = 6,48 + SetY = 6,-66 + SetZ = 6,31 + SetX = 7,58 + SetY = 7,-68 + SetX = 8,-48 + SetY = 8,33 + SetVisible = 9,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 7,11 + SetX = 7,-28 + SetY = 7,-29 + SetZ = 7,32 + SetX = 8,-7 + SetY = 8,-38 + SetVisible = 9,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 7,11 + SetX = 7,42 + SetY = 7,7 + SetZ = 7,33 + SetX = 8,-23 + SetY = 8,-60 + SetVisible = 9,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 8,11 + SetX = 8,43 + SetY = 8,-22 + SetZ = 8,34 + SetVisible = 9,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 8,11 + SetX = 8,63 + SetY = 8,-32 + SetZ = 8,35 + SetVisible = 9,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 10,1 + SetX = 10,4 + SetY = 10,6 + SetZ = 10,28 + SetX = 11,6 + SetY = 11,2 + SetFrame = 13,11 + SetX = 13,61 + SetY = 13,-8 + SetX = 14,31 + SetY = 14,28 + SetX = 15,-6 + SetY = 15,32 + SetY = 16,22 + SetX = 17,23 + SetY = 17,15 + + Graphic = Examples/punches + Focus = Target + SetFrame = 11,11 + SetX = 11,63 + SetY = 11,-16 + SetZ = 11,29 + SetX = 13,85 + SetY = 13,9 + SetX = 14,44 + SetY = 14,46 + SetX = 15,-28 + SetY = 15,60 + SetX = 16,-20 + SetY = 16,50 + SetX = 17,38 + SetY = 17,43 + + Graphic = Examples/punches + Focus = Target + SetFrame = 11,11 + SetX = 11,87 + SetY = 11,-8 + SetZ = 11,30 + SetX = 13,-28 + SetY = 13,-28 + SetX = 14,-33 + SetY = 14,-58 + SetX = 15,27 + SetY = 15,-42 + SetX = 16,38 + SetY = 16,-46 + SetX = 17,-27 + SetY = 17,16 + + Graphic = Examples/punches + Focus = Target + SetFrame = 12,11 + SetX = 12,-38 + SetY = 12,-14 + SetZ = 12,31 + SetX = 13,-55 + SetY = 13,-36 + SetVisible = 14,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 12,11 + SetX = 12,-68 + SetY = 12,-5 + SetZ = 12,32 + SetVisible = 13,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 14,11 + SetX = 14,-7 + SetY = 14,-38 + SetZ = 14,32 + SetVisible = 15,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 15,11 + SetX = 15,48 + SetY = 15,-66 + SetZ = 15,31 + SetX = 16,58 + SetY = 16,-68 + SetX = 17,-48 + SetY = 17,33 + + Graphic = Examples/punches + Focus = Target + SetFrame = 16,11 + SetX = 16,-28 + SetY = 16,-29 + SetZ = 16,32 + SetX = 17,-7 + SetY = 17,-38 + + Graphic = Examples/punches + Focus = Target + SetFrame = 16,11 + SetX = 16,42 + SetY = 16,7 + SetZ = 16,33 + SetX = 17,-23 + SetY = 17,-60 + + Graphic = Examples/punches + Focus = Target + SetFrame = 17,11 + SetX = 17,43 + SetY = 17,-22 + SetZ = 17,34 + + Graphic = Examples/punches + Focus = Target + SetFrame = 17,11 + SetX = 17,63 + SetY = 17,-32 + SetZ = 17,35 + + Play = 0,Dizzy Punch diff --git a/PBS/Animations/Example anims/Move/DOUBLEEDGE.txt b/PBS/Animations/Example anims/Move/DOUBLEEDGE.txt new file mode 100644 index 000000000..87679917e --- /dev/null +++ b/PBS/Animations/Example anims/Move/DOUBLEEDGE.txt @@ -0,0 +1,67 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,DOUBLEEDGE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Divine_Smash + Focus = User + SetFrame = 1,11 + SetX = 1,70 + SetY = 1,12 + SetZ = 1,28 + SetY = 2,-45 + SetX = 3,-32 + SetY = 3,-57 + SetVisible = 4,false + + Graphic = Examples/Divine_Smash + Focus = User + SetFrame = 2,11 + SetX = 2,-32 + SetY = 2,6 + SetZ = 2,29 + SetVisible = 3,false + + Graphic = Examples/Divine_Smash + Focus = Target + SetFrame = 5,14 + SetX = 5,-26 + SetY = 5,14 + SetZ = 5,27 + SetOpacity = 5,50 + SetFrame = 7,3 + SetOpacity = 7,255 + SetFrame = 9,4 + SetX = 10,-32 + SetAngle = 10,90 + + Graphic = Examples/Divine_Smash + Focus = Target + SetFrame = 8,4 + SetX = 8,-26 + SetY = 8,14 + SetZ = 8,28 + SetVisible = 9,false + + Graphic = Examples/Divine_Smash + Focus = User + SetFrame = 0,11 + SetX = 0,0 + SetY = 0,12 + SetZ = 0,27 + SetY = 1,-32 + SetY = 2,-95 + SetX = 3,70 + SetY = 3,-108 + SetX = 4,-32 + SetY = 4,-95 + SetVisible = 5,false + + Play = 0,throw,80 + Play = 6,Damage1,80 diff --git a/PBS/Animations/Example anims/Move/DOUBLEKICK.txt b/PBS/Animations/Example anims/Move/DOUBLEKICK.txt new file mode 100644 index 000000000..9d1d62120 --- /dev/null +++ b/PBS/Animations/Example anims/Move/DOUBLEKICK.txt @@ -0,0 +1,79 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,DOUBLEKICK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal1 + Focus = Target + SetFrame = 0,7 + SetX = 0,-48 + SetY = 0,-2 + SetZ = 0,27 + SetZoomX = 0,110 + SetZoomY = 0,110 + SetOpacity = 0,100 + SetZoomX = 1,100 + SetZoomY = 1,100 + SetOpacity = 1,255 + SetX = 3,56 + SetY = 3,-18 + SetOpacity = 5,100 + + Graphic = Examples/normal1 + Focus = Target + SetFrame = 2,7 + SetX = 2,56 + SetY = 2,-18 + SetZ = 2,28 + SetZoomX = 2,110 + SetZoomY = 2,110 + SetOpacity = 2,100 + SetVisible = 3,false + + Play = 1,Blow3,80 + Play = 3,Blow3,80 +#------------------------------- +[Move,DOUBLEKICK,1] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal1 + Focus = Target + SetFrame = 2,7 + SetX = 2,56 + SetY = 2,-18 + SetZ = 2,28 + SetZoomX = 2,110 + SetZoomY = 2,110 + SetOpacity = 2,100 + SetVisible = 3,false + + Graphic = Examples/normal1 + Focus = Target + SetFrame = 0,7 + SetX = 0,-48 + SetY = 0,-2 + SetZ = 0,27 + SetZoomX = 0,110 + SetZoomY = 0,110 + SetOpacity = 0,100 + SetZoomX = 1,100 + SetZoomY = 1,100 + SetOpacity = 1,255 + SetX = 3,56 + SetY = 3,-18 + SetOpacity = 5,100 + + Play = 1,Blow3,80 + Play = 3,Blow3,80 diff --git a/PBS/Animations/Example anims/Move/DOUBLESLAP.txt b/PBS/Animations/Example anims/Move/DOUBLESLAP.txt new file mode 100644 index 000000000..3d56a50ee --- /dev/null +++ b/PBS/Animations/Example anims/Move/DOUBLESLAP.txt @@ -0,0 +1,236 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,DOUBLESLAP] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/many + Focus = Target + SetFrame = 7,20 + SetX = 7,0 + SetY = 7,-2 + SetZ = 7,28 + SetVisible = 8,false + + Graphic = Examples/many + Focus = Target + SetFrame = 0,15 + SetX = 0,136 + SetY = 0,-2 + SetZ = 0,27 + SetX = 1,96 + SetX = 2,40 + SetX = 3,8 + SetFrame = 4,16 + SetX = 4,-160 + SetX = 5,-88 + SetX = 6,-40 + SetX = 7,0 + SetFrame = 8,19 + SetOpacity = 8,100 + + Graphic = Examples/many + Focus = Target + SetFrame = 3,20 + SetX = 3,8 + SetY = 3,-2 + SetZ = 3,28 + SetOpacity = 3,100 + SetFrame = 4,19 + SetVisible = 5,false + + Play = 3,Blow5,80 + Play = 7,Blow5,80 +#------------------------------- +[Move,DOUBLESLAP,1] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/many + Focus = Target + SetFrame = 3,20 + SetX = 3,8 + SetY = 3,-2 + SetZ = 3,28 + SetOpacity = 3,100 + SetFrame = 4,19 + SetVisible = 5,false + + Graphic = Examples/many + Focus = Target + SetFrame = 7,20 + SetX = 7,0 + SetY = 7,-2 + SetZ = 7,28 + SetVisible = 8,false + + Graphic = Examples/many + Focus = Target + SetFrame = 0,15 + SetX = 0,136 + SetY = 0,-2 + SetZ = 0,27 + SetX = 1,96 + SetX = 2,40 + SetX = 3,8 + SetFrame = 4,16 + SetX = 4,-160 + SetX = 5,-88 + SetX = 6,-40 + SetX = 7,0 + SetFrame = 8,19 + SetOpacity = 8,100 + + Play = 3,Blow5,80 + Play = 7,Blow5,80 +#------------------------------- +[Move,DOUBLESLAP,2] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/many + Focus = Target + SetFrame = 0,15 + SetX = 0,136 + SetY = 0,-2 + SetZ = 0,27 + SetX = 1,96 + SetX = 2,40 + SetX = 3,8 + SetFrame = 4,16 + SetX = 4,-160 + SetX = 5,-88 + SetX = 6,-40 + SetX = 7,0 + SetFrame = 8,19 + SetOpacity = 8,100 + + Graphic = Examples/many + Focus = Target + SetFrame = 3,20 + SetX = 3,8 + SetY = 3,-2 + SetZ = 3,28 + SetOpacity = 3,100 + SetFrame = 4,19 + SetVisible = 5,false + + Graphic = Examples/many + Focus = Target + SetFrame = 7,20 + SetX = 7,0 + SetY = 7,-2 + SetZ = 7,28 + SetVisible = 8,false + + Play = 3,Blow5,80 + Play = 7,Blow5,80 +#------------------------------- +[Move,DOUBLESLAP,3] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/many + Focus = Target + SetFrame = 7,20 + SetX = 7,0 + SetY = 7,-2 + SetZ = 7,28 + SetVisible = 8,false + + Graphic = Examples/many + Focus = Target + SetFrame = 0,15 + SetX = 0,136 + SetY = 0,-2 + SetZ = 0,27 + SetX = 1,96 + SetX = 2,40 + SetX = 3,8 + SetFrame = 4,16 + SetX = 4,-160 + SetX = 5,-88 + SetX = 6,-40 + SetX = 7,0 + SetFrame = 8,19 + SetOpacity = 8,100 + + Graphic = Examples/many + Focus = Target + SetFrame = 3,20 + SetX = 3,8 + SetY = 3,-2 + SetZ = 3,28 + SetOpacity = 3,100 + SetFrame = 4,19 + SetVisible = 5,false + + Play = 3,Blow5,80 + Play = 7,Blow5,80 +#------------------------------- +[Move,DOUBLESLAP,4] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/many + Focus = Target + SetFrame = 3,20 + SetX = 3,8 + SetY = 3,-2 + SetZ = 3,28 + SetOpacity = 3,100 + SetFrame = 4,19 + SetVisible = 5,false + + Graphic = Examples/many + Focus = Target + SetFrame = 7,20 + SetX = 7,0 + SetY = 7,-2 + SetZ = 7,28 + SetVisible = 8,false + + Graphic = Examples/many + Focus = Target + SetFrame = 0,15 + SetX = 0,136 + SetY = 0,-2 + SetZ = 0,27 + SetX = 1,96 + SetX = 2,40 + SetX = 3,8 + SetFrame = 4,16 + SetX = 4,-160 + SetX = 5,-88 + SetX = 6,-40 + SetX = 7,0 + SetFrame = 8,19 + SetOpacity = 8,100 + + Play = 3,Blow5,80 + Play = 7,Blow5,80 diff --git a/PBS/Animations/Example anims/Move/DRAGONBREATH.txt b/PBS/Animations/Example anims/Move/DRAGONBREATH.txt new file mode 100644 index 000000000..6ac276d29 --- /dev/null +++ b/PBS/Animations/Example anims/Move/DRAGONBREATH.txt @@ -0,0 +1,130 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,DRAGONBREATH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetX = 0,19 + SetY = 0,-29 + SetZ = 0,27 + SetX = 1,59 + SetY = 1,-59 + SetFrame = 2,1 + SetX = 2,100 + SetY = 2,-89 + SetFrame = 3,2 + SetX = 3,139 + SetY = 3,-128 + SetFrame = 4,3 + SetX = 4,164 + SetY = 4,-157 + SetFrame = 5,4 + SetX = 5,179 + SetY = 5,-178 + SetFrame = 6,5 + SetFrame = 7,6 + SetFrame = 8,7 + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetX = 1,39 + SetY = 1,-40 + SetZ = 1,28 + SetX = 2,69 + SetX = 3,125 + SetY = 3,-70 + SetFrame = 4,1 + SetX = 4,134 + SetY = 4,-79 + SetZoomX = 4,75 + SetZoomY = 4,75 + SetFrame = 5,0 + SetX = 5,154 + SetY = 5,-89 + SetZoomX = 5,100 + SetZoomY = 5,100 + SetVisible = 6,false + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetFlip = 2,true + SetX = 2,69 + SetY = 2,-59 + SetZ = 2,29 + SetFlip = 3,false + SetX = 3,109 + SetY = 3,-50 + SetX = 4,119 + SetY = 4,-59 + SetX = 5,139 + SetY = 5,-70 + SetZoomX = 5,75 + SetZoomY = 5,75 + SetVisible = 6,false + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetFlip = 2,true + SetX = 2,39 + SetY = 2,-29 + SetZ = 2,30 + SetX = 3,79 + SetY = 3,-40 + SetX = 4,94 + SetY = 4,-50 + SetZoomX = 4,75 + SetZoomY = 4,75 + SetVisible = 5,false + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetX = 2,84 + SetY = 2,-109 + SetZ = 2,31 + SetZoomX = 2,50 + SetZoomY = 2,50 + SetX = 3,79 + SetY = 3,-29 + SetZoomX = 3,100 + SetZoomY = 3,100 + SetVisible = 4,false + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetFrame = 3,1 + SetFlip = 3,true + SetX = 3,169 + SetY = 3,-109 + SetZ = 3,32 + SetZoomX = 3,50 + SetZoomY = 3,50 + SetVisible = 4,false + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetFrame = 3,1 + SetFlip = 3,true + SetX = 3,129 + SetY = 3,-128 + SetZ = 3,33 + SetZoomX = 3,40 + SetZoomY = 3,40 + SetVisible = 4,false + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetX = 3,64 + SetY = 3,-20 + SetZ = 3,34 + SetZoomX = 3,75 + SetZoomY = 3,75 + SetVisible = 4,false + + Play = 0,Fire4,80 diff --git a/PBS/Animations/Example anims/Move/DRAGONCLAW.txt b/PBS/Animations/Example anims/Move/DRAGONCLAW.txt new file mode 100644 index 000000000..7195e7d30 --- /dev/null +++ b/PBS/Animations/Example anims/Move/DRAGONCLAW.txt @@ -0,0 +1,27 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,DRAGONCLAW] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison + Focus = Target + SetFrame = 0,9 + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetX = 1,-24 + SetAngle = 1,25 + SetFrame = 2,10 + SetY = 2,6 + SetAngle = 2,0 + SetFrame = 3,11 + SetFrame = 4,12 + + Play = 0,Slash9,80 + Play = 0,Thunder4,80 diff --git a/PBS/Animations/Example anims/Move/DRAGONDANCE.txt b/PBS/Animations/Example anims/Move/DRAGONDANCE.txt new file mode 100644 index 000000000..93c8b84ab --- /dev/null +++ b/PBS/Animations/Example anims/Move/DRAGONDANCE.txt @@ -0,0 +1,45 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,DRAGONDANCE] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/electric1 + Focus = User + SetFrame = 3,9 + SetX = 3,8 + SetY = 3,-50 + SetZ = 3,28 + SetFrame = 4,10 + SetFrame = 5,11 + SetFrame = 6,12 + SetFrame = 7,9 + SetY = 7,-2 + SetFrame = 8,10 + SetVisible = 9,false + + Graphic = Examples/electric1 + Focus = User + SetFrame = 1,9 + SetX = 1,8 + SetY = 1,-2 + SetZ = 1,27 + SetFrame = 2,10 + SetFrame = 3,11 + SetFrame = 4,12 + SetFrame = 5,13 + SetFrame = 6,14 + SetFrame = 7,13 + SetY = 7,-50 + SetFrame = 8,14 + SetFrame = 9,11 + SetY = 9,-2 + SetFrame = 10,12 + SetFrame = 11,13 + SetFrame = 12,14 + SetOpacity = 12,100 + + Play = 0,Twine,80 diff --git a/PBS/Animations/Example anims/Move/DRAGONRAGE.txt b/PBS/Animations/Example anims/Move/DRAGONRAGE.txt new file mode 100644 index 000000000..ab2a7f0c6 --- /dev/null +++ b/PBS/Animations/Example anims/Move/DRAGONRAGE.txt @@ -0,0 +1,76 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,DRAGONRAGE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetX = 1,39 + SetY = 1,-40 + SetZ = 1,28 + SetX = 2,69 + SetX = 3,125 + SetY = 3,-70 + SetFrame = 4,1 + SetX = 4,134 + SetY = 4,-79 + SetZoomX = 4,75 + SetZoomY = 4,75 + SetFrame = 5,0 + SetX = 5,154 + SetY = 5,-89 + SetZoomX = 5,100 + SetZoomY = 5,100 + SetVisible = 6,false + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetFlip = 2,true + SetX = 2,69 + SetY = 2,-59 + SetZ = 2,29 + SetFlip = 3,false + SetX = 3,109 + SetY = 3,-50 + SetX = 4,119 + SetY = 4,-59 + SetVisible = 5,false + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetFlip = 3,true + SetX = 3,79 + SetY = 3,-40 + SetZ = 3,30 + SetVisible = 4,false + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetX = 0,19 + SetY = 0,-29 + SetZ = 0,27 + SetX = 1,59 + SetY = 1,-59 + SetFrame = 2,1 + SetX = 2,100 + SetY = 2,-89 + SetFrame = 3,2 + SetX = 3,139 + SetY = 3,-128 + SetFrame = 4,3 + SetX = 4,164 + SetY = 4,-157 + SetFrame = 5,4 + SetX = 5,179 + SetY = 5,-178 + SetFrame = 6,5 + SetFrame = 7,6 + SetFrame = 8,7 + + Play = 0,Fire6,80 diff --git a/PBS/Animations/Example anims/Move/DYNAMICPUNCH.txt b/PBS/Animations/Example anims/Move/DYNAMICPUNCH.txt new file mode 100644 index 000000000..a36b09d77 --- /dev/null +++ b/PBS/Animations/Example anims/Move/DYNAMICPUNCH.txt @@ -0,0 +1,59 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,DYNAMICPUNCH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/punches + Focus = Target + SetX = 1,5 + SetY = 1,3 + SetZ = 1,28 + SetX = 2,2 + SetX = 3,-1 + SetY = 3,11 + SetX = 4,2 + SetY = 4,3 + SetX = 5,0 + SetY = 5,12 + SetVisible = 7,false + + Graphic = Examples/punches + Focus = Target + SetX = 0,5 + SetY = 0,2 + SetZ = 0,27 + SetFrame = 1,15 + SetX = 1,2 + SetY = 1,0 + SetFrame = 2,14 + SetX = 2,5 + SetY = 2,-2 + SetX = 3,0 + SetY = 3,3 + SetZoomX = 3,150 + SetZoomY = 3,150 + SetOpacity = 3,250 + SetX = 4,2 + SetY = 4,-6 + SetZoomX = 4,180 + SetZoomY = 4,180 + SetOpacity = 4,194 + SetX = 5,4 + SetY = 5,0 + SetZoomX = 5,250 + SetZoomY = 5,250 + SetOpacity = 5,120 + SetFrame = 7,0 + SetX = 7,6 + SetY = 7,3 + SetZoomX = 7,150 + SetZoomY = 7,150 + SetOpacity = 7,255 + + Play = 0,Take Down,100,104 diff --git a/PBS/Animations/Example anims/Move/EMBER.txt b/PBS/Animations/Example anims/Move/EMBER.txt new file mode 100644 index 000000000..582e7a475 --- /dev/null +++ b/PBS/Animations/Example anims/Move/EMBER.txt @@ -0,0 +1,53 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,EMBER] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Flames + Focus = UserAndTarget + SetX = 9,142 + SetY = 9,-153 + SetZ = 9,27 + SetFlip = 10,true + SetX = 10,158 + SetY = 10,-168 + SetFrame = 11,1 + SetFlip = 11,false + SetFrame = 12,2 + + Graphic = Examples/Flames + Focus = UserAndTarget + SetFrame = 1,2 + SetX = 1,12 + SetY = 1,-31 + SetZ = 1,28 + SetFlip = 2,true + SetX = 2,28 + SetY = 2,-43 + SetFlip = 3,false + SetX = 3,44 + SetY = 3,-68 + SetFlip = 4,true + SetX = 4,60 + SetY = 4,-81 + SetFlip = 5,false + SetX = 5,77 + SetY = 5,-93 + SetFlip = 6,true + SetX = 6,93 + SetY = 6,-106 + SetFlip = 7,false + SetX = 7,109 + SetY = 7,-118 + SetFrame = 8,1 + SetX = 8,125 + SetY = 8,-143 + SetVisible = 9,false + + Play = 1,Fire2,80 diff --git a/PBS/Animations/Example anims/Move/ENCORE.txt b/PBS/Animations/Example anims/Move/ENCORE.txt new file mode 100644 index 000000000..25e7962d5 --- /dev/null +++ b/PBS/Animations/Example anims/Move/ENCORE.txt @@ -0,0 +1,84 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ENCORE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/BABACOMETRO + Focus = UserAndTarget + SetFrame = 0,16 + SetX = 0,-25 + SetY = 0,-59 + SetZ = 0,28 + SetX = 1,-15 + SetX = 2,-5 + SetFrame = 3,15 + SetX = 3,25 + SetFrame = 4,16 + SetX = 4,-25 + SetX = 5,-15 + SetFrame = 6,15 + SetX = 6,9 + SetFrame = 7,16 + SetX = 7,-15 + SetFrame = 8,15 + SetX = 8,29 + SetFrame = 9,16 + SetX = 9,-15 + SetX = 10,-5 + SetFrame = 11,15 + SetX = 11,25 + SetFrame = 12,16 + SetX = 12,-25 + SetX = 13,-15 + SetFrame = 14,15 + SetX = 14,9 + SetFrame = 15,16 + SetX = 15,-15 + SetX = 16,-30 + SetX = 17,-10 + SetFrame = 18,15 + SetX = 18,14 + + Graphic = Examples/BABACOMETRO + Focus = UserAndTarget + SetFrame = 0,15 + SetX = 0,34 + SetY = 0,-59 + SetZ = 0,27 + SetX = 1,25 + SetX = 2,9 + SetFrame = 3,16 + SetX = 3,-15 + SetFrame = 4,15 + SetX = 4,34 + SetX = 5,25 + SetFrame = 6,16 + SetX = 6,-5 + SetFrame = 7,15 + SetX = 7,25 + SetFrame = 8,16 + SetX = 8,-25 + SetFrame = 9,15 + SetX = 9,19 + SetX = 10,9 + SetFrame = 11,16 + SetX = 11,-15 + SetFrame = 12,15 + SetX = 12,34 + SetX = 13,25 + SetFrame = 14,16 + SetX = 14,-5 + SetFrame = 15,15 + SetX = 15,25 + SetX = 16,39 + SetX = 17,25 + SetFrame = 18,16 + SetX = 18,0 + + Play = 0,Applause,80 diff --git a/PBS/Animations/Example anims/Move/ENERGYBALL.txt b/PBS/Animations/Example anims/Move/ENERGYBALL.txt new file mode 100644 index 000000000..0b5fd8e4f --- /dev/null +++ b/PBS/Animations/Example anims/Move/ENERGYBALL.txt @@ -0,0 +1,39 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ENERGYBALL] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = Target + SetX = 0,9 + SetY = 0,21 + SetZ = 0,27 + SetZoomX = 0,80 + SetZoomY = 0,80 + SetZoomX = 1,90 + SetZoomY = 1,90 + SetZoomX = 2,100 + SetZoomY = 2,100 + SetZoomX = 3,110 + SetZoomY = 3,110 + SetZoomX = 4,120 + SetZoomY = 4,120 + SetZoomX = 5,130 + SetZoomY = 5,130 + SetZoomX = 6,140 + SetZoomY = 6,140 + SetZoomX = 7,150 + SetZoomY = 7,150 + SetZoomX = 8,160 + SetZoomY = 8,160 + SetZoomX = 9,170 + SetZoomY = 9,170 + SetVisible = 10,false + + Play = 0,Uproar,100,85 diff --git a/PBS/Animations/Example anims/Move/ERUPTION.txt b/PBS/Animations/Example anims/Move/ERUPTION.txt new file mode 100644 index 000000000..55ff8f16d --- /dev/null +++ b/PBS/Animations/Example anims/Move/ERUPTION.txt @@ -0,0 +1,94 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ERUPTION] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetFrame = 2,8 + SetX = 2,64 + SetY = 2,-89 + SetZ = 2,28 + SetAngle = 2,30 + SetX = 3,109 + SetY = 3,-128 + SetAngle = 3,15 + SetFrame = 4,9 + SetX = 4,129 + SetY = 4,-157 + SetFrame = 5,10 + SetX = 5,159 + SetY = 5,-178 + SetAngle = 5,10 + SetFrame = 6,11 + SetX = 6,184 + SetAngle = 6,0 + SetFrame = 7,10 + SetX = 7,104 + SetY = 7,-207 + SetAngle = 7,10 + SetVisible = 8,false + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetFrame = 4,8 + SetX = 4,14 + SetY = 4,-98 + SetZ = 4,29 + SetAngle = 4,30 + SetX = 5,39 + SetY = 5,-128 + SetAngle = 5,15 + SetFrame = 6,9 + SetX = 6,59 + SetY = 6,-178 + SetVisible = 7,false + + Graphic = Examples/fire5 + Focus = UserAndTarget + SetFrame = 0,8 + SetX = 0,25 + SetY = 0,-89 + SetZ = 0,27 + SetAngle = 0,30 + SetX = 1,54 + SetY = 1,-118 + SetAngle = 1,15 + SetFrame = 2,9 + SetX = 2,84 + SetY = 2,-168 + SetFrame = 3,10 + SetX = 3,109 + SetY = 3,-196 + SetAngle = 3,10 + SetFrame = 4,11 + SetX = 4,144 + SetAngle = 4,0 + SetFrame = 5,12 + SetX = 5,179 + SetY = 5,-178 + SetFrame = 6,13 + SetX = 6,184 + SetFrame = 7,12 + SetX = 7,194 + SetY = 7,-168 + SetFrame = 8,11 + SetX = 8,154 + SetY = 8,-207 + SetFrame = 9,12 + SetX = 9,179 + SetY = 9,-187 + SetFrame = 10,13 + SetX = 10,189 + SetY = 10,-157 + + Play = 0,Fire5,80 + Play = 0,Fire2,80 + Play = 3,Fire2,80 + Play = 6,Fire2,80 diff --git a/PBS/Animations/Example anims/Move/EXPLOSION.txt b/PBS/Animations/Example anims/Move/EXPLOSION.txt new file mode 100644 index 000000000..32707e51c --- /dev/null +++ b/PBS/Animations/Example anims/Move/EXPLOSION.txt @@ -0,0 +1,123 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,EXPLOSION] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Fire3 + Focus = Target + SetFrame = 0,5 + SetX = 0,40 + SetY = 0,-50 + SetZ = 0,28 + SetOpacity = 0,50 + SetFrame = 1,9 + SetFrame = 2,11 + SetX = 2,16 + SetY = 2,46 + SetOpacity = 2,255 + SetFrame = 3,12 + SetFrame = 4,13 + SetFrame = 5,14 + SetFrame = 6,15 + SetFrame = 7,16 + SetFrame = 8,17 + SetFrame = 9,18 + SetFrame = 10,19 + SetFrame = 11,20 + SetFrame = 12,21 + SetFrame = 13,12 + SetX = 13,8 + SetY = 13,-18 + SetFrame = 14,13 + SetFrame = 15,23 + SetX = 15,40 + SetY = 15,-50 + SetOpacity = 15,150 + SetVisible = 16,false + + Graphic = Examples/Fire3 + Focus = Target + SetFrame = 2,10 + SetX = 2,40 + SetY = 2,-50 + SetZ = 2,29 + SetOpacity = 2,100 + SetFrame = 3,11 + SetOpacity = 3,255 + SetFrame = 4,12 + SetFrame = 5,13 + SetFrame = 6,5 + SetX = 6,8 + SetY = 6,-18 + SetOpacity = 6,100 + SetFrame = 7,6 + SetOpacity = 7,255 + SetFrame = 8,7 + SetFrame = 9,8 + SetFrame = 10,9 + SetFrame = 11,10 + SetFrame = 12,11 + SetFrame = 13,21 + SetX = 13,40 + SetY = 13,-50 + SetFrame = 14,22 + SetVisible = 15,false + + Graphic = Examples/Fire3 + Focus = Target + SetFrame = 6,14 + SetX = 6,40 + SetY = 6,-50 + SetZ = 6,30 + SetFrame = 7,15 + SetFrame = 8,16 + SetFrame = 9,17 + SetFrame = 10,18 + SetFrame = 11,19 + SetFrame = 12,20 + SetVisible = 13,false + + Graphic = Examples/Fire3 + Focus = Target + SetFrame = 0,11 + SetX = 0,-88 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,12 + SetFrame = 2,13 + SetFrame = 3,14 + SetFrame = 4,15 + SetFrame = 5,16 + SetFrame = 6,17 + SetFrame = 7,18 + SetFrame = 8,19 + SetFrame = 9,20 + SetFrame = 10,21 + SetFrame = 11,22 + SetFrame = 12,23 + SetOpacity = 12,150 + SetFrame = 13,22 + SetX = 13,16 + SetY = 13,46 + SetOpacity = 13,255 + SetFrame = 14,23 + SetOpacity = 14,150 + SetFrame = 15,15 + SetX = 15,8 + SetY = 15,-18 + SetOpacity = 15,255 + SetFrame = 16,17 + SetOpacity = 16,200 + SetFrame = 17,19 + SetOpacity = 17,150 + + Play = 0,Explosion3,80 + Play = 2,Explosion7,80 + Play = 5,Explosion3,80 + Play = 8,Explosion2,80 diff --git a/PBS/Animations/Example anims/Move/FAKEOUT.txt b/PBS/Animations/Example anims/Move/FAKEOUT.txt new file mode 100644 index 000000000..f6193cc83 --- /dev/null +++ b/PBS/Animations/Example anims/Move/FAKEOUT.txt @@ -0,0 +1,49 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FAKEOUT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Fakeout + Focus = Target + SetFrame = 0,5 + SetFlip = 0,true + SetX = 0,96 + SetY = 0,6 + SetZ = 0,28 + SetX = 6,80 + SetX = 7,64 + SetFrame = 8,6 + SetX = 8,16 + SetX = 9,0 + SetX = 12,16 + SetFrame = 13,5 + SetX = 13,64 + SetX = 14,80 + SetX = 15,96 + SetVisible = 20,false + + Graphic = Examples/Fakeout + Focus = Target + SetFrame = 0,5 + SetX = 0,-96 + SetY = 0,6 + SetZ = 0,27 + SetX = 6,-80 + SetX = 7,-64 + SetFrame = 8,6 + SetX = 8,-16 + SetX = 9,0 + SetX = 12,-16 + SetFrame = 13,5 + SetX = 13,-64 + SetX = 14,-80 + SetX = 15,-96 + SetVisible = 20,false + + Play = 9,punch5,80,150 diff --git a/PBS/Animations/Example anims/Move/FAKETEARS.txt b/PBS/Animations/Example anims/Move/FAKETEARS.txt new file mode 100644 index 000000000..44b116f60 --- /dev/null +++ b/PBS/Animations/Example anims/Move/FAKETEARS.txt @@ -0,0 +1,104 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FAKETEARS] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison2 + Focus = User + SetX = 0,56 + SetY = 0,14 + SetZ = 0,27 + SetX = 1,64 + SetY = 1,6 + SetFlip = 2,true + SetX = 2,-80 + SetY = 2,-2 + SetFrame = 3,1 + SetFlip = 3,false + SetX = 3,83 + SetY = 3,-6 + SetFrame = 4,2 + SetX = 4,96 + SetY = 4,6 + SetX = 5,104 + SetY = 5,14 + SetFlip = 6,true + SetX = 6,-124 + SetY = 6,9 + SetFlip = 7,false + SetX = 7,120 + SetY = 7,2 + SetX = 8,130 + SetY = 8,10 + SetX = 9,142 + SetY = 9,24 + + Graphic = Examples/poison2 + Focus = User + SetFlip = 1,true + SetX = 1,-72 + SetY = 1,6 + SetZ = 1,28 + SetVisible = 2,false + + Graphic = Examples/poison2 + Focus = User + SetFrame = 2,1 + SetX = 2,72 + SetY = 2,-2 + SetZ = 2,29 + SetVisible = 3,false + + Graphic = Examples/poison2 + Focus = User + SetFrame = 3,1 + SetFlip = 3,true + SetX = 3,-88 + SetY = 3,-10 + SetZ = 3,28 + SetX = 4,-99 + SetY = 4,-15 + SetFrame = 5,2 + SetX = 5,-113 + SetY = 5,1 + SetFlip = 6,false + SetX = 6,112 + SetY = 6,-2 + SetX = 7,-121 + SetY = 7,-16 + SetX = 8,-135 + SetY = 8,-10 + SetX = 9,-144 + SetY = 9,3 + + Graphic = Examples/poison2 + Focus = User + SetFrame = 4,1 + SetX = 4,93 + SetY = 4,-7 + SetZ = 4,29 + SetX = 5,106 + SetY = 5,-8 + SetFlip = 6,true + SetX = 6,-131 + SetY = 6,-21 + SetVisible = 7,false + + Graphic = Examples/poison2 + Focus = User + SetFrame = 5,1 + SetFlip = 5,true + SetX = 5,-118 + SetY = 5,-20 + SetZ = 5,30 + SetVisible = 6,false + + Play = 0,Water1,40,70 + Play = 2,Water1,40,70 + Play = 4,Water1,40,70 diff --git a/PBS/Animations/Example anims/Move/FIERYDANCE.txt b/PBS/Animations/Example anims/Move/FIERYDANCE.txt new file mode 100644 index 000000000..a46e7c08c --- /dev/null +++ b/PBS/Animations/Example anims/Move/FIERYDANCE.txt @@ -0,0 +1,160 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FIERYDANCE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = Target + SetFrame = 0,16 + SetX = 0,35 + SetY = 0,-16 + SetZ = 0,27 + SetX = 1,40 + SetY = 1,-10 + SetFrame = 2,17 + SetX = 2,41 + SetY = 2,-4 + SetX = 3,32 + SetY = 3,-12 + SetFrame = 4,16 + SetX = 4,-26 + SetY = 4,6 + SetFrame = 5,15 + SetX = 5,-30 + SetY = 5,12 + SetX = 6,-45 + SetY = 6,-17 + SetFrame = 7,16 + SetX = 7,2 + SetY = 7,4 + SetX = 8,-17 + SetY = 8,31 + SetFrame = 9,15 + SetX = 9,-10 + SetY = 9,12 + SetX = 10,-11 + SetY = 10,5 + SetX = 11,4 + SetY = 11,1 + SetFrame = 12,18 + SetX = 12,1 + SetY = 12,-4 + + Graphic = Examples/fly copy + Focus = Target + SetFrame = 1,16 + SetX = 1,-20 + SetY = 1,-11 + SetZ = 1,28 + SetX = 2,-25 + SetY = 2,-14 + SetFrame = 3,17 + SetX = 3,-28 + SetY = 3,-12 + SetFrame = 4,16 + SetX = 4,29 + SetY = 4,8 + SetFrame = 5,15 + SetX = 5,14 + SetY = 5,-6 + SetX = 6,-2 + SetY = 6,-57 + SetFrame = 7,16 + SetX = 7,37 + SetY = 7,-14 + SetX = 8,34 + SetY = 8,14 + SetFrame = 9,17 + SetX = 9,38 + SetY = 9,4 + SetX = 10,23 + SetY = 10,-39 + SetVisible = 11,false + + Graphic = Examples/fly copy + Focus = Target + SetFrame = 1,16 + SetX = 1,27 + SetY = 1,-47 + SetZ = 1,29 + SetX = 2,23 + SetY = 2,-46 + SetFrame = 3,17 + SetX = 3,19 + SetY = 3,-56 + SetFrame = 4,18 + SetX = 4,20 + SetY = 4,-46 + SetFrame = 5,15 + SetX = 5,54 + SetY = 5,-55 + SetX = 6,35 + SetY = 6,-12 + SetFrame = 7,16 + SetX = 7,15 + SetY = 7,-42 + SetFrame = 8,17 + SetX = 8,4 + SetY = 8,-21 + SetX = 9,15 + SetY = 9,-46 + SetVisible = 10,false + + Graphic = Examples/fly copy + Focus = Target + SetFrame = 3,18 + SetX = 3,-46 + SetY = 3,-45 + SetZ = 3,30 + SetX = 4,-63 + SetY = 4,-48 + SetFrame = 5,15 + SetX = 5,51 + SetY = 5,22 + SetVisible = 6,false + + Graphic = Examples/fly copy + Focus = Target + SetFrame = 4,15 + SetX = 4,-11 + SetY = 4,-41 + SetZ = 4,31 + SetVisible = 5,false + + Graphic = Examples/fly copy + Focus = Target + SetFrame = 7,16 + SetX = 7,26 + SetY = 7,19 + SetZ = 7,30 + SetFrame = 8,17 + SetX = 8,40 + SetY = 8,-44 + SetVisible = 9,false + + Graphic = Examples/fly copy + Focus = Target + SetFrame = 7,16 + SetX = 7,-25 + SetY = 7,-33 + SetZ = 7,31 + SetFrame = 8,17 + SetX = 8,-42 + SetY = 8,-47 + SetVisible = 9,false + + Graphic = Examples/fly copy + Focus = Target + SetFrame = 7,16 + SetX = 7,-33 + SetY = 7,11 + SetZ = 7,32 + SetVisible = 8,false + + Play = 0,Wring Out,80 diff --git a/PBS/Animations/Example anims/Move/FINALGAMBIT.txt b/PBS/Animations/Example anims/Move/FINALGAMBIT.txt new file mode 100644 index 000000000..cb6c25af2 --- /dev/null +++ b/PBS/Animations/Example anims/Move/FINALGAMBIT.txt @@ -0,0 +1,74 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FINALGAMBIT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 0,7 + SetX = 0,-20 + SetY = 0,30 + SetZ = 0,27 + SetX = 1,-22 + SetY = 1,26 + SetX = 2,7 + SetY = 2,31 + SetFrame = 3,8 + SetX = 3,12 + SetY = 3,26 + SetFrame = 4,9 + SetX = 4,-17 + SetY = 4,4 + SetX = 5,4 + SetY = 5,1 + SetFrame = 6,10 + SetX = 6,3 + SetY = 6,12 + SetX = 7,-28 + SetY = 7,-20 + SetFrame = 8,7 + SetX = 8,21 + SetY = 8,11 + SetFrame = 9,8 + SetX = 9,20 + SetY = 9,12 + SetFrame = 10,9 + SetX = 10,-7 + SetY = 10,-12 + SetFrame = 11,10 + SetX = 11,2 + SetY = 11,11 + SetFrame = 12,7 + SetX = 12,27 + SetY = 12,-29 + SetFrame = 13,8 + SetX = 13,30 + SetY = 13,-22 + SetFrame = 14,7 + SetX = 14,16 + SetY = 14,17 + SetFrame = 15,10 + SetX = 15,3 + SetY = 15,18 + SetFrame = 16,7 + SetY = 16,41 + SetFrame = 17,10 + SetX = 17,0 + SetY = 17,40 + SetFrame = 18,7 + SetX = 18,-9 + SetY = 18,-20 + SetFrame = 19,9 + SetX = 19,32 + SetY = 19,-7 + SetFrame = 20,8 + SetX = 20,23 + SetY = 20,12 + + Play = 0,MiningCollapse diff --git a/PBS/Animations/Example anims/Move/FIREBLAST.txt b/PBS/Animations/Example anims/Move/FIREBLAST.txt new file mode 100644 index 000000000..99fb1590c --- /dev/null +++ b/PBS/Animations/Example anims/Move/FIREBLAST.txt @@ -0,0 +1,39 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FIREBLAST] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fire blast + Focus = Target + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetY = 2,-1 + SetFrame = 3,3 + SetY = 3,-4 + SetFrame = 4,4 + SetX = 4,-1 + SetY = 4,-5 + SetFrame = 5,5 + SetX = 5,0 + SetY = 5,2 + SetFrame = 6,6 + SetY = 6,-2 + SetFrame = 7,7 + SetY = 7,0 + SetFrame = 8,8 + SetX = 8,-2 + SetY = 8,-4 + SetFrame = 9,9 + SetX = 9,1 + SetY = 9,-7 + + Play = 0,Voltorb Flip Explosion,95,101 diff --git a/PBS/Animations/Example anims/Move/FIREFANG.txt b/PBS/Animations/Example anims/Move/FIREFANG.txt new file mode 100644 index 000000000..729a74a52 --- /dev/null +++ b/PBS/Animations/Example anims/Move/FIREFANG.txt @@ -0,0 +1,129 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FIREFANG] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/element fangs + Focus = Target + SetX = 0,7 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetX = 1,10 + SetY = 1,0 + SetFrame = 2,2 + SetX = 2,2 + SetY = 2,-3 + SetFrame = 3,3 + SetX = 3,8 + SetY = 3,3 + SetFrame = 4,4 + SetX = 4,-3 + SetY = 4,2 + SetFrame = 5,5 + SetX = 5,0 + SetY = 5,-2 + SetFrame = 6,6 + SetX = 6,2 + SetY = 6,0 + SetFrame = 7,7 + SetFrame = 8,8 + SetX = 8,7 + SetY = 8,-1 + SetFrame = 9,9 + SetX = 9,-2 + SetY = 9,-9 + SetFrame = 10,10 + SetX = 10,11 + SetY = 10,0 + SetFrame = 11,11 + SetX = 11,9 + SetY = 11,2 + SetFrame = 12,12 + SetY = 12,-3 + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 7,15 + SetX = 7,27 + SetY = 7,-8 + SetZ = 7,28 + SetY = 8,-7 + SetY = 9,-14 + SetX = 10,31 + SetY = 10,-7 + SetVisible = 11,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 8,15 + SetX = 8,34 + SetY = 8,-26 + SetZ = 8,29 + SetX = 9,30 + SetY = 9,-35 + SetX = 10,36 + SetY = 10,-27 + SetVisible = 11,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 8,15 + SetX = 8,-31 + SetY = 8,-23 + SetZ = 8,30 + SetX = 9,-35 + SetY = 9,-56 + SetX = 10,21 + SetY = 10,-43 + SetVisible = 11,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 9,15 + SetX = 9,-25 + SetY = 9,-63 + SetZ = 9,31 + SetX = 10,-36 + SetY = 10,-48 + SetVisible = 11,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 10,15 + SetX = 10,-26 + SetY = 10,-52 + SetZ = 10,32 + SetVisible = 11,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 10,15 + SetX = 10,-9 + SetY = 10,-56 + SetZ = 10,33 + SetVisible = 11,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 10,15 + SetX = 10,-28 + SetY = 10,8 + SetZ = 10,34 + SetVisible = 11,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 10,15 + SetX = 10,-19 + SetY = 10,-64 + SetZ = 10,35 + SetVisible = 11,false + + Play = 6,Vice Grip,100,114 diff --git a/PBS/Animations/Example anims/Move/FIREPLEDGE.txt b/PBS/Animations/Example anims/Move/FIREPLEDGE.txt new file mode 100644 index 000000000..f7ff5f3ee --- /dev/null +++ b/PBS/Animations/Example anims/Move/FIREPLEDGE.txt @@ -0,0 +1,39 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FIREPLEDGE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/anim sheet 2 + Focus = Target + SetFrame = 0,10 + SetX = 0,4 + SetY = 0,39 + SetZ = 0,27 + SetZoomY = 0,30 + SetX = 1,3 + SetY = 1,27 + SetZoomY = 1,50 + SetY = 2,15 + SetZoomY = 2,75 + SetX = 3,2 + SetY = 3,4 + SetZoomY = 3,100 + SetX = 4,3 + SetY = 4,15 + SetZoomY = 4,75 + SetX = 5,2 + SetY = 5,4 + SetZoomY = 5,100 + SetFrame = 6,12 + SetX = 6,0 + SetY = 6,2 + SetFrame = 7,11 + SetY = 7,-1 + + Play = 0,Mega Punch diff --git a/PBS/Animations/Example anims/Move/FIREPUNCH.txt b/PBS/Animations/Example anims/Move/FIREPUNCH.txt new file mode 100644 index 000000000..19ce0d427 --- /dev/null +++ b/PBS/Animations/Example anims/Move/FIREPUNCH.txt @@ -0,0 +1,138 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FIREPUNCH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/punches + Focus = Target + SetX = 0,3 + SetY = 0,1 + SetZ = 0,27 + SetFrame = 1,10 + SetX = 1,18 + SetY = 1,-8 + SetFrame = 2,9 + SetX = 2,19 + SetY = 2,0 + SetX = 3,20 + SetY = 3,8 + SetX = 4,22 + SetY = 4,11 + SetX = 5,26 + SetY = 5,5 + SetX = 6,11 + SetY = 6,-22 + SetVisible = 12,false + + Graphic = Examples/punches + Focus = Target + SetX = 1,6 + SetY = 1,-1 + SetZ = 1,28 + SetX = 2,0 + SetY = 2,2 + SetFrame = 3,10 + SetX = 3,-18 + SetY = 3,-24 + SetFrame = 4,9 + SetX = 4,-21 + SetY = 4,-6 + SetX = 5,11 + SetY = 5,-20 + SetX = 6,29 + SetY = 6,0 + SetVisible = 12,false + + Graphic = Examples/punches + Focus = Target + SetX = 3,1 + SetY = 3,5 + SetZ = 3,29 + SetFrame = 4,10 + SetX = 4,11 + SetY = 4,-27 + SetFrame = 5,9 + SetX = 5,-20 + SetY = 5,-5 + SetX = 6,9 + SetY = 6,17 + SetVisible = 12,false + + Graphic = Examples/punches + Focus = Target + SetX = 4,0 + SetY = 4,7 + SetZ = 4,30 + SetFrame = 5,10 + SetX = 5,-3 + SetY = 5,13 + SetFrame = 6,9 + SetX = 6,-14 + SetY = 6,2 + SetVisible = 12,false + + Graphic = Examples/punches + Focus = Target + SetX = 5,3 + SetY = 5,8 + SetZ = 5,31 + SetX = 6,8 + SetY = 6,10 + SetVisible = 12,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 7,9 + SetX = 7,19 + SetY = 7,-14 + SetZ = 7,32 + SetVisible = 12,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 8,9 + SetX = 8,-10 + SetY = 8,-15 + SetZ = 8,33 + SetVisible = 12,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 9,9 + SetX = 9,14 + SetY = 9,-32 + SetZ = 9,34 + SetVisible = 12,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 10,9 + SetX = 10,4 + SetY = 10,6 + SetZ = 10,35 + SetVisible = 12,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 11,9 + SetX = 11,19 + SetY = 11,14 + SetZ = 11,36 + SetVisible = 12,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 11,9 + SetX = 11,-7 + SetY = 11,19 + SetZ = 11,37 + SetVisible = 12,false + + Play = 0,Slam,100,115 + Play = 1,Explosion diff --git a/PBS/Animations/Example anims/Move/FIRESPIN.txt b/PBS/Animations/Example anims/Move/FIRESPIN.txt new file mode 100644 index 000000000..6a815e3a4 --- /dev/null +++ b/PBS/Animations/Example anims/Move/FIRESPIN.txt @@ -0,0 +1,50 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FIRESPIN] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/grass2 + Focus = Target + SetFrame = 0,9 + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetZoomX = 0,25 + SetZoomY = 0,25 + SetOpacity = 0,100 + SetFrame = 1,10 + SetZoomX = 1,50 + SetZoomY = 1,50 + SetOpacity = 1,150 + SetFrame = 2,11 + SetY = 2,-10 + SetZoomX = 2,75 + SetZoomY = 2,75 + SetOpacity = 2,200 + SetFrame = 3,12 + SetY = 3,-18 + SetZoomX = 3,100 + SetZoomY = 3,100 + SetOpacity = 3,255 + SetFrame = 4,9 + SetFrame = 5,10 + SetFrame = 6,11 + SetFrame = 7,12 + SetFrame = 8,9 + SetFrame = 9,10 + SetFrame = 10,11 + SetZoomX = 10,75 + SetZoomY = 10,75 + SetOpacity = 10,150 + SetFrame = 11,12 + SetZoomX = 11,50 + SetZoomY = 11,50 + SetOpacity = 11,100 + + Play = 0,Fire5,80 diff --git a/PBS/Animations/Example anims/Move/FLAIL.txt b/PBS/Animations/Example anims/Move/FLAIL.txt new file mode 100644 index 000000000..655f2c6a7 --- /dev/null +++ b/PBS/Animations/Example anims/Move/FLAIL.txt @@ -0,0 +1,67 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FLAIL] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/finger spoon + Focus = UserAndTarget + SetFrame = 0,7 + SetX = 0,176 + SetY = 0,-167 + SetZ = 0,27 + SetX = 1,192 + SetY = 1,-176 + SetX = 2,224 + SetY = 2,-168 + SetX = 3,209 + SetY = 3,-184 + SetFrame = 4,8 + SetX = 4,210 + SetY = 4,-187 + SetX = 5,225 + SetY = 5,-157 + SetX = 6,177 + SetY = 6,-151 + SetX = 7,194 + SetY = 7,-185 + SetX = 8,197 + SetY = 8,-164 + SetFrame = 9,7 + SetX = 9,176 + SetY = 9,-134 + SetX = 10,220 + SetY = 10,-156 + SetX = 11,202 + SetY = 11,-181 + SetX = 12,219 + SetY = 12,-160 + SetFrame = 13,8 + SetX = 13,192 + SetY = 13,-159 + SetX = 14,228 + SetY = 14,-173 + SetX = 15,203 + SetY = 15,-207 + SetX = 16,223 + SetY = 16,-142 + SetX = 17,221 + SetY = 17,-159 + SetX = 18,222 + SetX = 19,189 + SetY = 19,-164 + SetX = 20,196 + SetY = 20,-167 + SetX = 21,217 + SetY = 21,-187 + SetX = 22,214 + SetY = 22,-200 + SetX = 23,216 + SetY = 23,-201 + + Play = 0,Flail diff --git a/PBS/Animations/Example anims/Move/FLAMEBURST.txt b/PBS/Animations/Example anims/Move/FLAMEBURST.txt new file mode 100644 index 000000000..47f9db4b5 --- /dev/null +++ b/PBS/Animations/Example anims/Move/FLAMEBURST.txt @@ -0,0 +1,250 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FLAMEBURST] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Flames + Focus = Target + SetX = 0,1 + SetY = 0,5 + SetZ = 0,27 + SetY = 1,2 + SetX = 2,-9 + SetY = 2,13 + SetX = 3,-10 + SetY = 3,20 + SetX = 4,-7 + SetY = 4,30 + SetX = 5,-27 + SetY = 5,25 + SetX = 6,-38 + SetY = 6,36 + SetX = 7,-30 + SetY = 7,35 + SetX = 8,-25 + SetY = 8,28 + + Graphic = Examples/Flames + Focus = Target + SetX = 1,16 + SetY = 1,18 + SetZ = 1,28 + SetX = 2,-19 + SetY = 2,-6 + SetX = 3,12 + SetY = 3,26 + SetX = 4,-16 + SetY = 4,8 + SetX = 5,-28 + SetX = 6,-37 + SetY = 6,19 + SetX = 7,-40 + SetY = 7,15 + SetX = 8,-30 + SetY = 8,10 + + Graphic = Examples/Flames + Focus = Target + SetX = 1,-13 + SetY = 1,14 + SetZ = 1,29 + SetX = 2,13 + SetY = 2,15 + SetX = 3,7 + SetY = 3,8 + SetX = 4,0 + SetY = 4,12 + SetX = 5,-7 + SetY = 5,34 + SetX = 6,-41 + SetY = 6,-1 + SetX = 7,-28 + SetY = 7,-3 + SetX = 8,-4 + SetY = 8,34 + + Graphic = Examples/Flames + Focus = Target + SetX = 2,5 + SetY = 2,-2 + SetZ = 2,30 + SetX = 3,-17 + SetX = 4,15 + SetY = 4,23 + SetX = 5,-5 + SetY = 5,18 + SetX = 6,-32 + SetY = 6,-20 + SetX = 7,-12 + SetY = 7,15 + SetX = 8,-1 + SetY = 8,12 + + Graphic = Examples/Flames + Focus = Target + SetX = 3,15 + SetY = 3,-13 + SetZ = 3,31 + SetX = 4,-2 + SetY = 4,-7 + SetX = 5,-9 + SetY = 5,-1 + SetX = 6,-17 + SetY = 6,-5 + SetX = 7,-7 + SetY = 7,-1 + SetX = 8,-11 + SetY = 8,3 + + Graphic = Examples/Flames + Focus = Target + SetX = 3,26 + SetY = 3,15 + SetZ = 3,32 + SetX = 4,16 + SetY = 4,-4 + SetX = 5,-28 + SetY = 5,-12 + SetX = 6,-17 + SetY = 6,18 + SetX = 7,-2 + SetY = 7,34 + SetX = 8,-31 + SetY = 8,-9 + + Graphic = Examples/Flames + Focus = Target + SetX = 3,-4 + SetY = 3,-18 + SetZ = 3,33 + SetX = 4,-26 + SetY = 4,-6 + SetX = 5,2 + SetY = 5,-15 + SetX = 6,-13 + SetY = 6,40 + SetX = 7,12 + SetY = 7,13 + SetX = 8,-15 + SetY = 8,-14 + + Graphic = Examples/Flames + Focus = Target + SetX = 4,-15 + SetY = 4,-19 + SetZ = 4,34 + SetX = 5,-12 + SetY = 5,-23 + SetX = 6,8 + SetY = 6,41 + SetX = 7,15 + SetY = 7,-12 + SetX = 8,4 + SetY = 8,-9 + + Graphic = Examples/Flames + Focus = Target + SetX = 4,10 + SetY = 4,-19 + SetZ = 4,35 + SetX = 5,16 + SetY = 5,3 + SetX = 6,13 + SetY = 6,27 + SetX = 7,0 + SetY = 7,-22 + SetX = 8,18 + SetY = 8,11 + + Graphic = Examples/Flames + Focus = Target + SetX = 4,29 + SetY = 4,11 + SetZ = 4,36 + SetX = 5,16 + SetY = 5,29 + SetX = 6,10 + SetY = 6,4 + SetX = 7,-21 + SetY = 7,-23 + SetX = 8,28 + SetY = 8,37 + + Graphic = Examples/Flames + Focus = Target + SetX = 5,30 + SetY = 5,18 + SetZ = 5,37 + SetX = 6,29 + SetY = 6,12 + SetX = 7,22 + SetY = 7,40 + SetX = 8,36 + SetY = 8,-3 + + Graphic = Examples/Flames + Focus = Target + SetX = 5,36 + SetY = 5,-4 + SetZ = 5,38 + SetX = 6,4 + SetY = 6,-19 + SetX = 7,-2 + SetY = 7,50 + SetX = 8,25 + SetY = 8,-9 + + Graphic = Examples/Flames + Focus = Target + SetX = 5,21 + SetY = 5,-14 + SetZ = 5,39 + SetX = 6,-17 + SetY = 6,-20 + SetX = 7,-41 + SetY = 7,-17 + SetX = 8,12 + SetY = 8,-30 + + Graphic = Examples/Flames + Focus = Target + SetX = 6,38 + SetY = 6,34 + SetZ = 6,40 + SetX = 7,-7 + SetY = 7,-36 + SetX = 8,-11 + + Graphic = Examples/Flames + Focus = Target + SetX = 6,-40 + SetY = 6,-20 + SetZ = 6,41 + SetX = 7,-30 + SetY = 7,-30 + SetX = 8,-32 + SetY = 8,-22 + + Graphic = Examples/Flames + Focus = Target + SetX = 7,21 + SetY = 7,-35 + SetZ = 7,42 + SetX = 8,47 + SetY = 8,20 + + Graphic = Examples/Flames + Focus = Target + SetX = 7,7 + SetY = 7,-47 + SetZ = 7,43 + SetVisible = 8,false + + Play = 0,Voltorb Flip Explosion,100,110 + Play = 4,Voltorb Flip Explosion,100,110 diff --git a/PBS/Animations/Example anims/Move/FLAMECHARGE.txt b/PBS/Animations/Example anims/Move/FLAMECHARGE.txt new file mode 100644 index 000000000..40002a8e1 --- /dev/null +++ b/PBS/Animations/Example anims/Move/FLAMECHARGE.txt @@ -0,0 +1,85 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FLAMECHARGE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Flames + Focus = Target + SetFrame = 0,2 + SetX = 0,-28 + SetY = 0,17 + SetZ = 0,27 + + Graphic = Examples/Flames + Focus = Target + SetFrame = 0,2 + SetX = 0,-13 + SetY = 0,25 + SetZ = 0,28 + + Graphic = Examples/Flames + Focus = Target + SetFrame = 1,2 + SetX = 1,6 + SetY = 1,28 + SetZ = 1,29 + + Graphic = Examples/Flames + Focus = Target + SetFrame = 2,2 + SetX = 2,24 + SetY = 2,16 + SetZ = 2,30 + + Graphic = Examples/Flames + Focus = Target + SetFrame = 3,2 + SetX = 3,21 + SetY = 3,-6 + SetZ = 3,31 + + Graphic = Examples/Flames + Focus = Target + SetFrame = 4,2 + SetX = 4,9 + SetY = 4,-20 + SetZ = 4,32 + + Graphic = Examples/Flames + Focus = Target + SetFrame = 5,2 + SetX = 5,-6 + SetY = 5,-23 + SetZ = 5,33 + + Graphic = Examples/Flames + Focus = Target + SetFrame = 6,2 + SetX = 6,-24 + SetY = 6,-20 + SetZ = 6,34 + + Graphic = Examples/Flames + Focus = Target + SetFrame = 7,2 + SetX = 7,-27 + SetY = 7,-1 + SetZ = 7,35 + + Graphic = Examples/Flames + Focus = Target + SetFrame = 8,1 + SetX = 8,-2 + SetY = 8,8 + SetZ = 8,36 + SetFrame = 9,0 + SetX = 9,-3 + SetY = 9,3 + + Play = 0,Work Up,100,116 diff --git a/PBS/Animations/Example anims/Move/FLAMETHROWER.txt b/PBS/Animations/Example anims/Move/FLAMETHROWER.txt new file mode 100644 index 000000000..37e26bd4b --- /dev/null +++ b/PBS/Animations/Example anims/Move/FLAMETHROWER.txt @@ -0,0 +1,344 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FLAMETHROWER] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Flames + Focus = Target + SetFrame = 0,2 + SetX = 0,-219 + SetY = 0,119 + SetZ = 0,27 + SetVisible = 9,false + + Graphic = Examples/Flames + Focus = Target + SetFrame = 1,1 + SetX = 1,-201 + SetY = 1,111 + SetZ = 1,28 + SetVisible = 10,false + + Graphic = Examples/Flames + Focus = Target + SetFrame = 2,1 + SetX = 2,-187 + SetY = 2,97 + SetZ = 2,29 + SetVisible = 11,false + + Graphic = Examples/Flames + Focus = Target + SetFrame = 3,1 + SetX = 3,-161 + SetY = 3,79 + SetZ = 3,30 + SetVisible = 12,false + + Graphic = Examples/Flames + Focus = Target + SetFrame = 4,1 + SetX = 4,-129 + SetY = 4,57 + SetZ = 4,31 + SetVisible = 13,false + + Graphic = Examples/Flames + Focus = Target + SetFrame = 5,1 + SetX = 5,-99 + SetY = 5,30 + SetZ = 5,32 + SetVisible = 14,false + + Graphic = Examples/Flames + Focus = Target + SetX = 6,-69 + SetY = 6,8 + SetZ = 6,33 + SetVisible = 15,false + + Graphic = Examples/Flames + Focus = Target + SetX = 7,-32 + SetY = 7,-12 + SetZ = 7,34 + + Graphic = Examples/Flames + Focus = Target + SetX = 8,-5 + SetY = 8,-24 + SetZ = 8,35 + + Play = 0,Whirlwind,100,121 +#------------------------------- +[OppMove,FLAMETHROWER] +Name = Example anim + + + + Graphic = Examples/Flames + Focus = User + SetFrame = 0,2 + SetX = 0,-3 + SetY = 0,2 + SetZ = 0,27 + SetX = 1,0 + SetX = 2,-1 + SetY = 2,-1 + SetX = 3,2 + SetY = 3,-2 + SetX = 4,1 + SetY = 4,3 + SetX = 5,3 + SetY = 5,5 + SetX = 6,1 + SetY = 6,3 + SetX = 7,2 + SetY = 7,7 + SetX = 8,4 + SetY = 8,4 + SetX = 9,2 + SetY = 9,-2 + SetX = 10,0 + SetY = 10,-9 + SetFrame = 11,0 + SetX = 11,-236 + SetY = 11,122 + SetX = 12,-249 + SetY = 12,118 + SetX = 13,-245 + SetY = 13,120 + SetX = 14,-250 + SetY = 14,124 + SetX = 15,-253 + SetY = 15,119 + SetX = 16,-246 + SetY = 16,120 + SetX = 17,-255 + SetY = 17,119 + SetX = 18,-253 + SetY = 18,122 + SetVisible = 19,false + + Graphic = Examples/Flames + Focus = User + SetFrame = 1,2 + SetX = 1,-23 + SetY = 1,9 + SetZ = 1,28 + SetX = 2,-22 + SetY = 2,7 + SetY = 3,6 + SetX = 4,-17 + SetY = 4,11 + SetY = 5,14 + SetX = 6,-18 + SetY = 6,10 + SetX = 7,-21 + SetX = 8,-16 + SetY = 8,12 + SetX = 9,-22 + SetY = 9,13 + SetX = 10,-26 + SetY = 10,2 + SetFrame = 11,0 + SetX = 11,-208 + SetY = 11,94 + SetX = 12,-222 + SetY = 12,96 + SetX = 13,-211 + SetX = 14,-217 + SetY = 14,97 + SetX = 15,-226 + SetY = 15,99 + SetX = 16,-191 + SetY = 16,92 + SetX = 17,-210 + SetY = 17,87 + SetVisible = 18,false + + Graphic = Examples/Flames + Focus = User + SetFrame = 2,2 + SetX = 2,-42 + SetY = 2,16 + SetZ = 2,29 + SetX = 3,-45 + SetX = 4,-37 + SetY = 4,15 + SetX = 5,-36 + SetY = 5,18 + SetX = 6,-41 + SetY = 6,13 + SetX = 7,-47 + SetY = 7,18 + SetX = 8,-34 + SetY = 8,12 + SetX = 9,-49 + SetY = 9,15 + SetX = 10,-53 + SetY = 10,12 + SetFrame = 11,1 + SetX = 11,-179 + SetY = 11,74 + SetFrame = 12,0 + SetX = 12,-188 + SetY = 12,73 + SetX = 13,-177 + SetY = 13,64 + SetX = 14,-185 + SetY = 14,70 + SetFrame = 15,1 + SetX = 15,-195 + SetY = 15,82 + SetX = 16,-150 + SetY = 16,62 + SetVisible = 17,false + + Graphic = Examples/Flames + Focus = User + SetFrame = 3,1 + SetX = 3,-71 + SetY = 3,24 + SetZ = 3,30 + SetX = 4,-61 + SetY = 4,32 + SetX = 5,-59 + SetY = 5,23 + SetFrame = 6,2 + SetX = 6,-64 + SetY = 6,27 + SetFrame = 7,1 + SetX = 7,-73 + SetY = 7,26 + SetX = 8,-60 + SetX = 9,-85 + SetY = 9,22 + SetFrame = 10,2 + SetX = 10,-78 + SetY = 10,20 + SetFrame = 11,1 + SetX = 11,-147 + SetY = 11,47 + SetX = 12,-146 + SetY = 12,51 + SetX = 13,-142 + SetY = 13,47 + SetX = 14,-146 + SetY = 14,45 + SetX = 15,-155 + SetY = 15,59 + SetVisible = 16,false + + Graphic = Examples/Flames + Focus = User + SetFrame = 4,1 + SetX = 4,-85 + SetY = 4,41 + SetZ = 4,31 + SetX = 5,-88 + SetY = 5,31 + SetY = 6,37 + SetX = 7,-106 + SetY = 7,36 + SetX = 8,-95 + SetY = 8,32 + SetX = 9,-118 + SetY = 9,29 + SetX = 10,-112 + SetY = 10,34 + SetX = 11,-115 + SetY = 11,26 + SetX = 12,-109 + SetY = 12,32 + SetX = 13,-110 + SetY = 13,31 + SetX = 14,-106 + SetY = 14,28 + SetVisible = 15,false + + Graphic = Examples/Flames + Focus = User + SetFrame = 5,1 + SetX = 5,-117 + SetY = 5,38 + SetZ = 5,32 + SetY = 6,47 + SetX = 7,-137 + SetY = 7,43 + SetX = 8,-129 + SetY = 8,41 + SetX = 9,-154 + SetY = 9,38 + SetX = 10,-147 + SetY = 10,53 + SetX = 11,-80 + SetY = 11,14 + SetX = 12,-73 + SetX = 13,-74 + SetY = 13,19 + SetVisible = 14,false + + Graphic = Examples/Flames + Focus = User + SetFrame = 6,1 + SetX = 6,-146 + SetY = 6,56 + SetZ = 6,33 + SetX = 7,-169 + SetY = 7,51 + SetX = 8,-164 + SetY = 8,50 + SetX = 9,-188 + SetY = 9,54 + SetX = 10,-175 + SetY = 10,78 + SetFrame = 11,2 + SetX = 11,-52 + SetY = 11,-2 + SetFrame = 12,1 + SetX = 12,-35 + SetY = 12,-4 + SetVisible = 13,false + + Graphic = Examples/Flames + Focus = User + SetFrame = 8,1 + SetX = 8,-195 + SetY = 8,68 + SetZ = 8,34 + SetX = 9,-219 + SetY = 9,67 + SetX = 10,-211 + SetY = 10,94 + SetFrame = 11,2 + SetX = 11,-24 + SetY = 11,-9 + SetX = 12,-3 + SetY = 12,-15 + SetVisible = 13,false + + Graphic = Examples/Flames + Focus = User + SetX = 9,-248 + SetY = 9,98 + SetZ = 9,35 + SetX = 10,-241 + SetY = 10,109 + SetVisible = 11,false + + Graphic = Examples/Flames + Focus = User + SetX = 10,-262 + SetY = 10,131 + SetZ = 10,36 + SetVisible = 11,false + + Play = 0,Whirlwind,100,121 diff --git a/PBS/Animations/Example anims/Move/FLAMEWHEEL.txt b/PBS/Animations/Example anims/Move/FLAMEWHEEL.txt new file mode 100644 index 000000000..79ca15b5a --- /dev/null +++ b/PBS/Animations/Example anims/Move/FLAMEWHEEL.txt @@ -0,0 +1,358 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FLAMEWHEEL] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 0,9 + SetX = 0,21 + SetY = 0,-82 + SetZ = 0,27 + SetFrame = 8,15 + SetX = 8,210 + SetY = 8,-193 + SetFrame = 9,14 + SetX = 9,209 + SetY = 9,-207 + SetX = 10,210 + SetY = 10,-195 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 0,9 + SetX = 0,45 + SetY = 0,-51 + SetZ = 0,28 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 1,9 + SetX = 1,50 + SetY = 1,9 + SetZ = 1,29 + SetX = 7,49 + SetY = 7,-3 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 2,9 + SetX = 2,26 + SetY = 2,50 + SetZ = 2,30 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 3,9 + SetX = 3,0 + SetY = 3,46 + SetZ = 3,31 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 4,9 + SetX = 4,-11 + SetY = 4,6 + SetZ = 4,32 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 5,9 + SetX = 5,-9 + SetY = 5,-51 + SetZ = 5,33 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 6,9 + SetX = 6,1 + SetY = 6,-81 + SetZ = 6,34 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 7,10 + SetX = 7,24 + SetY = 7,-92 + SetZ = 7,35 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 7,10 + SetX = 7,46 + SetY = 7,-60 + SetZ = 7,36 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 7,10 + SetX = 7,46 + SetY = 7,-3 + SetZ = 7,37 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 7,10 + SetX = 7,31 + SetY = 7,34 + SetZ = 7,38 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 7,10 + SetX = 7,11 + SetY = 7,40 + SetZ = 7,39 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 7,10 + SetX = 7,-5 + SetY = 7,26 + SetZ = 7,40 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 7,10 + SetX = 7,-14 + SetY = 7,-10 + SetZ = 7,41 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 7,10 + SetX = 7,-12 + SetY = 7,-50 + SetZ = 7,42 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 7,10 + SetX = 7,-2 + SetY = 7,-81 + SetZ = 7,43 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 7,10 + SetX = 7,35 + SetY = 7,-81 + SetZ = 7,44 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 10,10 + SetX = 10,230 + SetY = 10,-156 + SetZ = 10,28 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 10,10 + SetX = 10,184 + SetY = 10,-231 + SetZ = 10,29 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 11,10 + SetX = 11,195 + SetY = 11,-150 + SetZ = 11,30 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 11,10 + SetX = 11,230 + SetY = 11,-270 + SetZ = 11,31 + + Play = 0,Trump Card,100,110 +#------------------------------- +[OppMove,FLAMEWHEEL] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 0,9 + SetX = 0,-10 + SetY = 0,51 + SetZ = 0,27 + SetFrame = 8,15 + SetX = 8,191 + SetY = 8,-204 + SetFrame = 9,14 + SetX = 9,196 + SetY = 9,-187 + SetX = 10,189 + SetY = 10,-189 + SetX = 11,192 + SetY = 11,-198 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 0,9 + SetX = 0,-25 + SetY = 0,32 + SetZ = 0,28 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 1,9 + SetX = 1,-29 + SetY = 1,-9 + SetZ = 1,29 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 2,9 + SetX = 2,-17 + SetY = 2,-37 + SetZ = 2,30 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 3,9 + SetX = 3,3 + SetY = 3,-21 + SetZ = 3,31 + SetX = 4,5 + SetY = 4,-25 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 4,9 + SetX = 4,14 + SetY = 4,6 + SetZ = 4,32 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 5,9 + SetX = 5,6 + SetY = 5,39 + SetZ = 5,33 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 6,10 + SetX = 6,-3 + SetY = 6,53 + SetZ = 6,34 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 6,10 + SetX = 6,-18 + SetY = 6,39 + SetZ = 6,35 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 6,10 + SetX = 6,-29 + SetY = 6,1 + SetZ = 6,36 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 6,10 + SetX = 6,-17 + SetY = 6,-26 + SetZ = 6,37 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 7,10 + SetX = 7,0 + SetY = 7,-18 + SetZ = 7,38 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 7,10 + SetX = 7,7 + SetY = 7,15 + SetZ = 7,39 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 7,10 + SetX = 7,3 + SetY = 7,40 + SetZ = 7,40 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 10,10 + SetX = 10,162 + SetY = 10,-142 + SetZ = 10,28 + SetX = 11,172 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 10,10 + SetX = 10,207 + SetY = 10,-215 + SetZ = 10,29 + SetX = 11,208 + SetY = 11,-231 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 11,10 + SetX = 11,214 + SetY = 11,-162 + SetZ = 11,30 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 11,10 + SetX = 11,165 + SetY = 11,-223 + SetZ = 11,31 + + Play = 0,Trump Card,100,110 diff --git a/PBS/Animations/Example anims/Move/FLASH.txt b/PBS/Animations/Example anims/Move/FLASH.txt new file mode 100644 index 000000000..7212898be --- /dev/null +++ b/PBS/Animations/Example anims/Move/FLASH.txt @@ -0,0 +1,32 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FLASH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Light1 + Focus = Target + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFrame = 6,6 + SetFrame = 7,7 + SetFrame = 8,8 + SetFrame = 9,9 + SetFrame = 10,10 + SetFrame = 11,11 + SetFrame = 12,12 + SetFrame = 13,13 + SetFrame = 14,14 + + Play = 0,Saint7,80 diff --git a/PBS/Animations/Example anims/Move/FLY.txt b/PBS/Animations/Example anims/Move/FLY.txt new file mode 100644 index 000000000..281bb99f4 --- /dev/null +++ b/PBS/Animations/Example anims/Move/FLY.txt @@ -0,0 +1,71 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FLY] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = Target + SetFrame = 0,3 + SetX = 0,-103 + SetY = 0,-118 + SetZ = 0,27 + SetAngle = 0,207 + SetX = 1,-72 + SetY = 1,-70 + SetX = 2,-49 + SetY = 2,-35 + SetX = 3,-28 + SetY = 3,-9 + SetX = 4,-5 + SetY = 4,22 + SetX = 5,40 + SetY = 5,88 + SetX = 6,17 + SetY = 6,58 + SetVisible = 7,false + + Play = 0,Take Down,80,110 +#------------------------------- +[Move,FLY,1] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = User + SetFrame = 0,5 + SetX = 0,6 + SetY = 0,36 + SetZ = 0,27 + SetX = 1,10 + SetY = 1,23 + SetFrame = 2,0 + SetX = 2,8 + SetY = 2,34 + SetFrame = 3,1 + SetX = 3,4 + SetY = 3,14 + SetFrame = 4,2 + SetX = 4,3 + SetY = 4,9 + SetFrame = 5,3 + SetX = 5,14 + SetY = 5,1 + SetFrame = 6,4 + SetX = 6,8 + SetY = 6,-30 + SetX = 7,6 + SetY = 7,-58 + SetVisible = 8,false + + Play = 0,Trump Card diff --git a/PBS/Animations/Example anims/Move/FOCUSENERGY.txt b/PBS/Animations/Example anims/Move/FOCUSENERGY.txt new file mode 100644 index 000000000..a883d7783 --- /dev/null +++ b/PBS/Animations/Example anims/Move/FOCUSENERGY.txt @@ -0,0 +1,37 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FOCUSENERGY] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Fire3 + Focus = User + SetFrame = 4,29 + SetX = 4,16 + SetY = 4,-2 + SetZ = 4,28 + SetFrame = 5,28 + SetVisible = 6,false + + Graphic = Examples/Fire3 + Focus = User + SetFrame = 0,29 + SetX = 0,16 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,28 + SetFrame = 2,27 + SetFrame = 3,26 + SetFrame = 4,25 + SetFrame = 5,24 + SetFrame = 6,27 + SetFrame = 7,26 + SetFrame = 8,25 + SetFrame = 9,24 + + Play = 0,Up,80 + Play = 3,Up,80 + Play = 6,Up,80 diff --git a/PBS/Animations/Example anims/Move/FOLLOWME.txt b/PBS/Animations/Example anims/Move/FOLLOWME.txt new file mode 100644 index 000000000..931917f38 --- /dev/null +++ b/PBS/Animations/Example anims/Move/FOLLOWME.txt @@ -0,0 +1,94 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FOLLOWME] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/finger spoon + Focus = User + SetX = 0,2 + SetY = 0,1 + SetZ = 0,27 + SetX = 1,-7 + SetY = 1,16 + SetX = 2,-25 + SetY = 2,41 + SetX = 3,-48 + SetY = 3,73 + SetX = 4,-85 + SetY = 4,94 + SetX = 5,-110 + SetY = 5,122 + SetX = 6,-105 + SetY = 6,118 + SetOpacity = 6,53 + SetFrame = 7,1 + SetX = 7,-140 + SetY = 7,142 + SetOpacity = 7,255 + SetX = 8,-165 + SetX = 9,-205 + SetY = 9,139 + SetVisible = 10,false + + Graphic = Examples/finger spoon + Focus = User + SetFrame = 6,1 + SetX = 6,-117 + SetY = 6,120 + SetZ = 6,28 + SetVisible = 7,false + + Play = 0,Follow Me,85,102 +#------------------------------- +[OppMove,FOLLOWME] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/finger spoon + Focus = User + SetX = 5,-102 + SetY = 5,110 + SetZ = 5,28 + SetVisible = 6,false + + Graphic = Examples/finger spoon + Focus = User + SetFrame = 0,1 + SetX = 0,-193 + SetY = 0,125 + SetZ = 0,27 + SetX = 1,-172 + SetY = 1,122 + SetX = 2,-154 + SetY = 2,116 + SetX = 3,-135 + SetY = 3,118 + SetX = 4,-123 + SetY = 4,117 + SetX = 5,-114 + SetY = 5,108 + SetOpacity = 5,78 + SetFrame = 6,0 + SetX = 6,-83 + SetY = 6,100 + SetOpacity = 6,255 + SetX = 7,-73 + SetY = 7,85 + SetX = 8,-53 + SetY = 8,58 + SetX = 9,-35 + SetY = 9,46 + SetX = 10,-12 + SetY = 10,29 + SetX = 11,4 + SetY = 11,15 + SetVisible = 12,false + + Play = 0,Follow Me,80 diff --git a/PBS/Animations/Example anims/Move/FORESIGHT.txt b/PBS/Animations/Example anims/Move/FORESIGHT.txt new file mode 100644 index 000000000..fc391383f --- /dev/null +++ b/PBS/Animations/Example anims/Move/FORESIGHT.txt @@ -0,0 +1,42 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FORESIGHT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal1 + Focus = Target + SetFrame = 0,8 + SetX = 0,-112 + SetY = 0,-74 + SetZ = 0,27 + SetZoomX = 0,50 + SetZoomY = 0,50 + SetOpacity = 0,150 + SetX = 1,-80 + SetY = 1,-42 + SetOpacity = 1,255 + SetX = 2,-40 + SetY = 2,-2 + SetX = 3,0 + SetY = 3,38 + SetX = 4,40 + SetY = 4,22 + SetX = 5,72 + SetY = 5,-10 + SetX = 6,80 + SetY = 6,-50 + SetX = 7,56 + SetY = 7,-66 + SetX = 8,8 + SetY = 8,-82 + SetX = 9,-48 + SetY = 9,-90 + SetX = 10,-64 + SetY = 10,-50 + SetY = 11,-10 diff --git a/PBS/Animations/Example anims/Move/FRENZYPLANT.txt b/PBS/Animations/Example anims/Move/FRENZYPLANT.txt new file mode 100644 index 000000000..2b1f3345b --- /dev/null +++ b/PBS/Animations/Example anims/Move/FRENZYPLANT.txt @@ -0,0 +1,44 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FRENZYPLANT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/grass2 + Focus = UserAndTarget + SetX = 0,34 + SetY = 0,-50 + SetZ = 0,27 + SetX = 1,50 + SetY = 1,-59 + SetX = 2,69 + SetY = 2,-79 + SetX = 3,100 + SetY = 3,-98 + SetX = 4,119 + SetY = 4,-128 + SetX = 5,144 + SetY = 5,-157 + SetX = 6,159 + SetY = 6,-168 + SetX = 7,200 + SetFrame = 8,1 + SetFrame = 9,2 + SetFrame = 10,3 + SetFrame = 11,4 + SetY = 11,-178 + SetFrame = 12,5 + SetY = 12,-187 + SetFrame = 13,6 + SetY = 13,-196 + SetFrame = 14,7 + SetFrame = 15,8 + SetOpacity = 16,100 + + Play = 0,Earth4,80 + Play = 8,Earth5,80 diff --git a/PBS/Animations/Example anims/Move/FURYATTACK.txt b/PBS/Animations/Example anims/Move/FURYATTACK.txt new file mode 100644 index 000000000..4c5dd909f --- /dev/null +++ b/PBS/Animations/Example anims/Move/FURYATTACK.txt @@ -0,0 +1,303 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FURYATTACK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = UserAndTarget + SetFrame = 0,5 + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetFrame = 1,6 + SetX = 1,69 + SetY = 1,-70 + SetFrame = 2,7 + SetX = 2,129 + SetY = 2,-148 + SetFrame = 3,0 + SetX = 3,179 + SetY = 3,-178 + SetFrame = 4,1 + SetFrame = 5,2 + SetFrame = 6,1 + SetFrame = 7,2 + + Graphic = Examples/003-Attack01 + Focus = UserAndTarget + SetFrame = 3,5 + SetX = 3,0 + SetY = 3,18 + SetZ = 3,28 + SetFrame = 4,6 + SetX = 4,55 + SetY = 4,-37 + SetFrame = 5,7 + SetX = 5,106 + SetY = 5,-121 + SetVisible = 6,false + + Play = 3,normaldamage,80 + Play = 5,normaldamage,80 +#------------------------------- +[Move,FURYATTACK,1] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = UserAndTarget + SetFrame = 3,5 + SetX = 3,0 + SetY = 3,18 + SetZ = 3,28 + SetFrame = 4,6 + SetX = 4,55 + SetY = 4,-37 + SetFrame = 5,7 + SetX = 5,106 + SetY = 5,-121 + SetVisible = 6,false + + Graphic = Examples/003-Attack01 + Focus = UserAndTarget + SetFrame = 0,5 + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetFrame = 1,6 + SetX = 1,69 + SetY = 1,-70 + SetFrame = 2,7 + SetX = 2,129 + SetY = 2,-148 + SetFrame = 3,0 + SetX = 3,179 + SetY = 3,-178 + SetFrame = 4,1 + SetFrame = 5,2 + SetFrame = 6,1 + SetFrame = 7,2 + + Play = 3,normaldamage,80 + Play = 5,normaldamage,80 +#------------------------------- +[Move,FURYATTACK,2] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = UserAndTarget + SetFrame = 0,5 + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetFrame = 1,6 + SetX = 1,69 + SetY = 1,-70 + SetFrame = 2,7 + SetX = 2,129 + SetY = 2,-148 + SetFrame = 3,0 + SetX = 3,179 + SetY = 3,-178 + SetFrame = 4,1 + SetFrame = 5,2 + SetFrame = 6,1 + SetFrame = 7,2 + + Graphic = Examples/003-Attack01 + Focus = UserAndTarget + SetFrame = 3,5 + SetX = 3,0 + SetY = 3,18 + SetZ = 3,28 + SetFrame = 4,6 + SetX = 4,55 + SetY = 4,-37 + SetFrame = 5,7 + SetX = 5,106 + SetY = 5,-121 + SetVisible = 6,false + + Play = 3,normaldamage,80 + Play = 5,normaldamage,80 +#------------------------------- +[Move,FURYATTACK,3] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = UserAndTarget + SetFrame = 3,5 + SetX = 3,0 + SetY = 3,18 + SetZ = 3,28 + SetFrame = 4,6 + SetX = 4,55 + SetY = 4,-37 + SetFrame = 5,7 + SetX = 5,106 + SetY = 5,-121 + SetVisible = 6,false + + Graphic = Examples/003-Attack01 + Focus = UserAndTarget + SetFrame = 0,5 + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetFrame = 1,6 + SetX = 1,69 + SetY = 1,-70 + SetFrame = 2,7 + SetX = 2,129 + SetY = 2,-148 + SetFrame = 3,0 + SetX = 3,179 + SetY = 3,-178 + SetFrame = 4,1 + SetFrame = 5,2 + SetFrame = 6,1 + SetFrame = 7,2 + + Play = 3,normaldamage,80 + Play = 5,normaldamage,80 +#------------------------------- +[Move,FURYATTACK,4] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = UserAndTarget + SetFrame = 0,5 + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetFrame = 1,6 + SetX = 1,69 + SetY = 1,-70 + SetFrame = 2,7 + SetX = 2,129 + SetY = 2,-148 + SetFrame = 3,0 + SetX = 3,179 + SetY = 3,-178 + SetFrame = 4,1 + SetFrame = 5,2 + SetFrame = 6,1 + SetFrame = 7,2 + + Graphic = Examples/003-Attack01 + Focus = UserAndTarget + SetFrame = 3,5 + SetX = 3,0 + SetY = 3,18 + SetZ = 3,28 + SetFrame = 4,6 + SetX = 4,55 + SetY = 4,-37 + SetFrame = 5,7 + SetX = 5,106 + SetY = 5,-121 + SetVisible = 6,false + + Play = 3,normaldamage,80 + Play = 5,normaldamage,80 +#------------------------------- +[OppMove,FURYATTACK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = UserAndTarget + SetFrame = 0,5 + SetX = 0,35 + SetY = 0,-50 + SetAngle = 0,180 + MoveX = 0,3,182 + MoveY = 0,3,-207 + SetFrame = 1,6 + SetFrame = 2,7 + SetX = 3,182 + SetY = 3,-207 + SetVisible = 3,false + + Graphic = Examples/003-Attack01 + Focus = Target + SetFrame = 3,0 + SetFrame = 4,1 + SetFrame = 5,2 + SetZoomX = 5,100 + SetZoomY = 5,100 + SetOpacity = 5,255 + MoveZoomX = 5,2,125 + MoveZoomY = 5,2,125 + MoveOpacity = 5,2,0 + SetZoomX = 7,125 + SetZoomY = 7,125 + SetVisible = 7,false + SetOpacity = 7,0 + + Graphic = Examples/003-Attack01 + Focus = UserAndTarget + SetFrame = 3,5 + SetX = 3,35 + SetY = 3,-50 + SetAngle = 3,180 + MoveX = 3,3,182 + MoveY = 3,3,-207 + SetFrame = 4,6 + SetFrame = 5,7 + SetX = 6,182 + SetY = 6,-207 + SetVisible = 6,false + + Graphic = Examples/003-Attack01 + Focus = Target + SetFrame = 6,0 + SetFrame = 7,1 + SetFrame = 8,2 + SetZoomX = 8,100 + SetZoomY = 8,100 + SetOpacity = 8,255 + MoveZoomX = 8,2,125 + MoveZoomY = 8,2,125 + MoveOpacity = 8,2,0 + SetZoomX = 10,125 + SetZoomY = 10,125 + SetVisible = 10,false + SetOpacity = 10,0 + + Play = 3,normaldamage,80 + Play = 6,normaldamage,80 diff --git a/PBS/Animations/Example anims/Move/FURYCUTTER.txt b/PBS/Animations/Example anims/Move/FURYCUTTER.txt new file mode 100644 index 000000000..acbfa5589 --- /dev/null +++ b/PBS/Animations/Example anims/Move/FURYCUTTER.txt @@ -0,0 +1,24 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FURYCUTTER] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Sword6 + Focus = Target + SetX = 0,0 + SetY = 0,-10 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFrame = 6,6 + + Play = 0,Slash10,80 diff --git a/PBS/Animations/Example anims/Move/FURYSWIPES.txt b/PBS/Animations/Example anims/Move/FURYSWIPES.txt new file mode 100644 index 000000000..1d777909e --- /dev/null +++ b/PBS/Animations/Example anims/Move/FURYSWIPES.txt @@ -0,0 +1,1076 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FURYSWIPES] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 0,6 + SetX = 0,53 + SetY = 0,-31 + SetZ = 0,27 + SetOpacity = 0,128 + SetX = 1,40 + SetY = 1,-15 + SetOpacity = 1,255 + SetX = 2,32 + SetY = 2,1 + SetX = 3,24 + SetY = 3,17 + SetToneRed = 4,-128 + SetToneGreen = 4,-128 + SetToneBlue = 4,-128 + SetX = 5,25 + SetOpacity = 5,128 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 2,7 + SetX = 2,13 + SetY = 2,29 + SetZ = 2,28 + SetFrame = 3,8 + SetX = 3,-13 + SetY = 3,41 + SetFrame = 4,10 + SetX = 4,48 + SetY = 4,62 + SetFrame = 5,6 + SetFlip = 5,true + SetX = 5,-64 + SetY = 5,-24 + SetOpacity = 5,128 + SetX = 6,-48 + SetY = 6,-8 + SetOpacity = 6,255 + SetX = 7,-32 + SetY = 7,8 + SetX = 8,-24 + SetY = 8,16 + SetToneRed = 9,-128 + SetToneGreen = 9,-128 + SetToneBlue = 9,-128 + SetOpacity = 10,128 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 3,8 + SetX = 3,19 + SetY = 3,42 + SetZ = 3,29 + SetFrame = 4,10 + SetX = 4,-18 + SetY = 4,61 + SetFrame = 5,5 + SetX = 5,-22 + SetY = 5,131 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 4,10 + SetX = 4,-52 + SetY = 4,31 + SetZ = 4,30 + SetFrame = 5,5 + SetX = 5,90 + SetY = 5,132 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 4,10 + SetX = 4,55 + SetY = 4,38 + SetZ = 4,31 + SetFrame = 5,5 + SetX = 5,123 + SetY = 5,0 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,-117 + SetY = 5,84 + SetZ = 5,32 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,-47 + SetY = 5,95 + SetZ = 5,33 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,15 + SetY = 5,81 + SetZ = 5,34 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,73 + SetY = 5,84 + SetZ = 5,35 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,99 + SetY = 5,47 + SetZ = 5,36 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 7,7 + SetX = 7,-14 + SetY = 7,32 + SetZ = 7,29 + SetFrame = 8,8 + SetX = 8,9 + SetY = 8,37 + SetFrame = 9,10 + SetX = 9,-17 + SetY = 9,88 + SetFrame = 10,11 + SetX = 10,-10 + SetY = 10,119 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 8,7 + SetX = 8,-22 + SetY = 8,42 + SetZ = 8,27 + SetFrame = 9,10 + SetX = 9,-76 + SetY = 9,48 + SetFrame = 10,11 + SetX = 10,-109 + SetY = 10,82 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 9,10 + SetX = 9,37 + SetY = 9,88 + SetZ = 9,30 + SetFrame = 10,11 + SetX = 10,-92 + SetY = 10,119 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 9,10 + SetX = 9,61 + SetY = 9,13 + SetZ = 9,31 + SetFrame = 10,11 + SetX = 10,46 + SetY = 10,110 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,75 + SetY = 10,68 + SetZ = 10,32 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,96 + SetY = 10,-7 + SetZ = 10,33 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,-53 + SetY = 10,92 + SetZ = 10,34 + SetVisible = 11,false + + Play = 0,Fury Swipes +#------------------------------- +[Move,FURYSWIPES,1] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 0,6 + SetX = 0,53 + SetY = 0,-31 + SetZ = 0,27 + SetOpacity = 0,128 + SetX = 1,40 + SetY = 1,-15 + SetOpacity = 1,255 + SetX = 2,32 + SetY = 2,1 + SetX = 3,24 + SetY = 3,17 + SetToneRed = 4,-128 + SetToneGreen = 4,-128 + SetToneBlue = 4,-128 + SetX = 5,25 + SetOpacity = 5,128 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 2,7 + SetX = 2,13 + SetY = 2,29 + SetZ = 2,28 + SetFrame = 3,8 + SetX = 3,-13 + SetY = 3,41 + SetFrame = 4,10 + SetX = 4,48 + SetY = 4,62 + SetFrame = 5,6 + SetFlip = 5,true + SetX = 5,-64 + SetY = 5,-24 + SetOpacity = 5,128 + SetX = 6,-48 + SetY = 6,-8 + SetOpacity = 6,255 + SetX = 7,-32 + SetY = 7,8 + SetX = 8,-24 + SetY = 8,16 + SetToneRed = 9,-128 + SetToneGreen = 9,-128 + SetToneBlue = 9,-128 + SetOpacity = 10,128 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 3,8 + SetX = 3,19 + SetY = 3,42 + SetZ = 3,29 + SetFrame = 4,10 + SetX = 4,-18 + SetY = 4,61 + SetFrame = 5,5 + SetX = 5,-22 + SetY = 5,131 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 4,10 + SetX = 4,-52 + SetY = 4,31 + SetZ = 4,30 + SetFrame = 5,5 + SetX = 5,90 + SetY = 5,132 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 4,10 + SetX = 4,55 + SetY = 4,38 + SetZ = 4,31 + SetFrame = 5,5 + SetX = 5,123 + SetY = 5,0 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,-117 + SetY = 5,84 + SetZ = 5,32 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,-47 + SetY = 5,95 + SetZ = 5,33 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,15 + SetY = 5,81 + SetZ = 5,34 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,73 + SetY = 5,84 + SetZ = 5,35 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,99 + SetY = 5,47 + SetZ = 5,36 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 7,7 + SetX = 7,-14 + SetY = 7,32 + SetZ = 7,29 + SetFrame = 8,8 + SetX = 8,9 + SetY = 8,37 + SetFrame = 9,10 + SetX = 9,-17 + SetY = 9,88 + SetFrame = 10,11 + SetX = 10,-10 + SetY = 10,119 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 8,7 + SetX = 8,-22 + SetY = 8,42 + SetZ = 8,27 + SetFrame = 9,10 + SetX = 9,-76 + SetY = 9,48 + SetFrame = 10,11 + SetX = 10,-109 + SetY = 10,82 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 9,10 + SetX = 9,37 + SetY = 9,88 + SetZ = 9,30 + SetFrame = 10,11 + SetX = 10,-92 + SetY = 10,119 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 9,10 + SetX = 9,61 + SetY = 9,13 + SetZ = 9,31 + SetFrame = 10,11 + SetX = 10,46 + SetY = 10,110 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,75 + SetY = 10,68 + SetZ = 10,32 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,96 + SetY = 10,-7 + SetZ = 10,33 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,-53 + SetY = 10,92 + SetZ = 10,34 + SetVisible = 11,false + + Play = 0,Fury Swipes +#------------------------------- +[Move,FURYSWIPES,2] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 0,6 + SetX = 0,53 + SetY = 0,-31 + SetZ = 0,27 + SetOpacity = 0,128 + SetX = 1,40 + SetY = 1,-15 + SetOpacity = 1,255 + SetX = 2,32 + SetY = 2,1 + SetX = 3,24 + SetY = 3,17 + SetToneRed = 4,-128 + SetToneGreen = 4,-128 + SetToneBlue = 4,-128 + SetX = 5,25 + SetOpacity = 5,128 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 2,7 + SetX = 2,13 + SetY = 2,29 + SetZ = 2,28 + SetFrame = 3,8 + SetX = 3,-13 + SetY = 3,41 + SetFrame = 4,10 + SetX = 4,48 + SetY = 4,62 + SetFrame = 5,6 + SetFlip = 5,true + SetX = 5,-64 + SetY = 5,-24 + SetOpacity = 5,128 + SetX = 6,-48 + SetY = 6,-8 + SetOpacity = 6,255 + SetX = 7,-32 + SetY = 7,8 + SetX = 8,-24 + SetY = 8,16 + SetToneRed = 9,-128 + SetToneGreen = 9,-128 + SetToneBlue = 9,-128 + SetOpacity = 10,128 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 3,8 + SetX = 3,19 + SetY = 3,42 + SetZ = 3,29 + SetFrame = 4,10 + SetX = 4,-18 + SetY = 4,61 + SetFrame = 5,5 + SetX = 5,-22 + SetY = 5,131 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 4,10 + SetX = 4,-52 + SetY = 4,31 + SetZ = 4,30 + SetFrame = 5,5 + SetX = 5,90 + SetY = 5,132 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 4,10 + SetX = 4,55 + SetY = 4,38 + SetZ = 4,31 + SetFrame = 5,5 + SetX = 5,123 + SetY = 5,0 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,-117 + SetY = 5,84 + SetZ = 5,32 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,-47 + SetY = 5,95 + SetZ = 5,33 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,15 + SetY = 5,81 + SetZ = 5,34 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,73 + SetY = 5,84 + SetZ = 5,35 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,99 + SetY = 5,47 + SetZ = 5,36 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 7,7 + SetX = 7,-14 + SetY = 7,32 + SetZ = 7,29 + SetFrame = 8,8 + SetX = 8,9 + SetY = 8,37 + SetFrame = 9,10 + SetX = 9,-17 + SetY = 9,88 + SetFrame = 10,11 + SetX = 10,-10 + SetY = 10,119 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 8,7 + SetX = 8,-22 + SetY = 8,42 + SetZ = 8,27 + SetFrame = 9,10 + SetX = 9,-76 + SetY = 9,48 + SetFrame = 10,11 + SetX = 10,-109 + SetY = 10,82 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 9,10 + SetX = 9,37 + SetY = 9,88 + SetZ = 9,30 + SetFrame = 10,11 + SetX = 10,-92 + SetY = 10,119 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 9,10 + SetX = 9,61 + SetY = 9,13 + SetZ = 9,31 + SetFrame = 10,11 + SetX = 10,46 + SetY = 10,110 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,75 + SetY = 10,68 + SetZ = 10,32 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,96 + SetY = 10,-7 + SetZ = 10,33 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,-53 + SetY = 10,92 + SetZ = 10,34 + SetVisible = 11,false + + Play = 0,Fury Swipes +#------------------------------- +[Move,FURYSWIPES,3] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 0,6 + SetX = 0,53 + SetY = 0,-31 + SetZ = 0,27 + SetOpacity = 0,128 + SetX = 1,40 + SetY = 1,-15 + SetOpacity = 1,255 + SetX = 2,32 + SetY = 2,1 + SetX = 3,24 + SetY = 3,17 + SetToneRed = 4,-128 + SetToneGreen = 4,-128 + SetToneBlue = 4,-128 + SetX = 5,25 + SetOpacity = 5,128 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 2,7 + SetX = 2,13 + SetY = 2,29 + SetZ = 2,28 + SetFrame = 3,8 + SetX = 3,-13 + SetY = 3,41 + SetFrame = 4,10 + SetX = 4,48 + SetY = 4,62 + SetFrame = 5,6 + SetFlip = 5,true + SetX = 5,-64 + SetY = 5,-24 + SetOpacity = 5,128 + SetX = 6,-48 + SetY = 6,-8 + SetOpacity = 6,255 + SetX = 7,-32 + SetY = 7,8 + SetX = 8,-24 + SetY = 8,16 + SetToneRed = 9,-128 + SetToneGreen = 9,-128 + SetToneBlue = 9,-128 + SetOpacity = 10,128 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 3,8 + SetX = 3,19 + SetY = 3,42 + SetZ = 3,29 + SetFrame = 4,10 + SetX = 4,-18 + SetY = 4,61 + SetFrame = 5,5 + SetX = 5,-22 + SetY = 5,131 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 4,10 + SetX = 4,-52 + SetY = 4,31 + SetZ = 4,30 + SetFrame = 5,5 + SetX = 5,90 + SetY = 5,132 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 4,10 + SetX = 4,55 + SetY = 4,38 + SetZ = 4,31 + SetFrame = 5,5 + SetX = 5,123 + SetY = 5,0 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,-117 + SetY = 5,84 + SetZ = 5,32 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,-47 + SetY = 5,95 + SetZ = 5,33 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,15 + SetY = 5,81 + SetZ = 5,34 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,73 + SetY = 5,84 + SetZ = 5,35 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,99 + SetY = 5,47 + SetZ = 5,36 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 7,7 + SetX = 7,-14 + SetY = 7,32 + SetZ = 7,29 + SetFrame = 8,8 + SetX = 8,9 + SetY = 8,37 + SetFrame = 9,10 + SetX = 9,-17 + SetY = 9,88 + SetFrame = 10,11 + SetX = 10,-10 + SetY = 10,119 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 8,7 + SetX = 8,-22 + SetY = 8,42 + SetZ = 8,27 + SetFrame = 9,10 + SetX = 9,-76 + SetY = 9,48 + SetFrame = 10,11 + SetX = 10,-109 + SetY = 10,82 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 9,10 + SetX = 9,37 + SetY = 9,88 + SetZ = 9,30 + SetFrame = 10,11 + SetX = 10,-92 + SetY = 10,119 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 9,10 + SetX = 9,61 + SetY = 9,13 + SetZ = 9,31 + SetFrame = 10,11 + SetX = 10,46 + SetY = 10,110 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,75 + SetY = 10,68 + SetZ = 10,32 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,96 + SetY = 10,-7 + SetZ = 10,33 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,-53 + SetY = 10,92 + SetZ = 10,34 + SetVisible = 11,false + + Play = 0,Fury Swipes +#------------------------------- +[Move,FURYSWIPES,4] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 0,6 + SetX = 0,53 + SetY = 0,-31 + SetZ = 0,27 + SetOpacity = 0,128 + SetX = 1,40 + SetY = 1,-15 + SetOpacity = 1,255 + SetX = 2,32 + SetY = 2,1 + SetX = 3,24 + SetY = 3,17 + SetToneRed = 4,-128 + SetToneGreen = 4,-128 + SetToneBlue = 4,-128 + SetX = 5,25 + SetOpacity = 5,128 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 2,7 + SetX = 2,13 + SetY = 2,29 + SetZ = 2,28 + SetFrame = 3,8 + SetX = 3,-13 + SetY = 3,41 + SetFrame = 4,10 + SetX = 4,48 + SetY = 4,62 + SetFrame = 5,6 + SetFlip = 5,true + SetX = 5,-64 + SetY = 5,-24 + SetOpacity = 5,128 + SetX = 6,-48 + SetY = 6,-8 + SetOpacity = 6,255 + SetX = 7,-32 + SetY = 7,8 + SetX = 8,-24 + SetY = 8,16 + SetToneRed = 9,-128 + SetToneGreen = 9,-128 + SetToneBlue = 9,-128 + SetOpacity = 10,128 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 3,8 + SetX = 3,19 + SetY = 3,42 + SetZ = 3,29 + SetFrame = 4,10 + SetX = 4,-18 + SetY = 4,61 + SetFrame = 5,5 + SetX = 5,-22 + SetY = 5,131 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 4,10 + SetX = 4,-52 + SetY = 4,31 + SetZ = 4,30 + SetFrame = 5,5 + SetX = 5,90 + SetY = 5,132 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 4,10 + SetX = 4,55 + SetY = 4,38 + SetZ = 4,31 + SetFrame = 5,5 + SetX = 5,123 + SetY = 5,0 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,-117 + SetY = 5,84 + SetZ = 5,32 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,-47 + SetY = 5,95 + SetZ = 5,33 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,15 + SetY = 5,81 + SetZ = 5,34 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,73 + SetY = 5,84 + SetZ = 5,35 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 5,5 + SetX = 5,99 + SetY = 5,47 + SetZ = 5,36 + SetVisible = 6,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 7,7 + SetX = 7,-14 + SetY = 7,32 + SetZ = 7,29 + SetFrame = 8,8 + SetX = 8,9 + SetY = 8,37 + SetFrame = 9,10 + SetX = 9,-17 + SetY = 9,88 + SetFrame = 10,11 + SetX = 10,-10 + SetY = 10,119 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 8,7 + SetX = 8,-22 + SetY = 8,42 + SetZ = 8,27 + SetFrame = 9,10 + SetX = 9,-76 + SetY = 9,48 + SetFrame = 10,11 + SetX = 10,-109 + SetY = 10,82 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 9,10 + SetX = 9,37 + SetY = 9,88 + SetZ = 9,30 + SetFrame = 10,11 + SetX = 10,-92 + SetY = 10,119 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 9,10 + SetX = 9,61 + SetY = 9,13 + SetZ = 9,31 + SetFrame = 10,11 + SetX = 10,46 + SetY = 10,110 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,75 + SetY = 10,68 + SetZ = 10,32 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,96 + SetY = 10,-7 + SetZ = 10,33 + SetVisible = 11,false + + Graphic = Examples/Scratch + Shadow Claw + Focus = Target + SetFrame = 10,11 + SetX = 10,-53 + SetY = 10,92 + SetZ = 10,34 + SetVisible = 11,false + + Play = 0,Fury Swipes diff --git a/PBS/Animations/Example anims/Move/FUTURESIGHT.txt b/PBS/Animations/Example anims/Move/FUTURESIGHT.txt new file mode 100644 index 000000000..b2c1fc874 --- /dev/null +++ b/PBS/Animations/Example anims/Move/FUTURESIGHT.txt @@ -0,0 +1,65 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,FUTURESIGHT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/face and eye + Focus = User + SetFrame = 0,10 + SetX = 0,17 + SetY = 0,0 + SetZ = 0,27 + SetFrame = 2,11 + SetX = 2,13 + SetY = 2,-2 + SetFrame = 3,12 + SetX = 3,3 + SetY = 3,-3 + SetFrame = 4,13 + SetX = 4,15 + SetY = 4,-5 + SetFrame = 5,14 + SetX = 5,3 + SetY = 5,-4 + SetOpacity = 8,192 + SetOpacity = 9,96 + + Play = 0,Flash2,80,78 +#------------------------------- +[Move,FUTURESIGHT,1] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/face and eye + Focus = Target + SetFrame = 0,10 + SetX = 0,17 + SetY = 0,0 + SetZ = 0,27 + SetFrame = 2,11 + SetX = 2,13 + SetY = 2,-2 + SetFrame = 3,12 + SetX = 3,3 + SetY = 3,-3 + SetFrame = 4,13 + SetX = 4,15 + SetY = 4,-5 + SetFrame = 5,14 + SetX = 5,3 + SetY = 5,-4 + SetOpacity = 8,192 + SetOpacity = 9,96 + + Play = 0,Flash2,80,78 diff --git a/PBS/Animations/Example anims/Move/GASTROACID.txt b/PBS/Animations/Example anims/Move/GASTROACID.txt new file mode 100644 index 000000000..cf2f45ae6 --- /dev/null +++ b/PBS/Animations/Example anims/Move/GASTROACID.txt @@ -0,0 +1,124 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,GASTROACID] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = Target + SetX = 0,-31 + SetY = 0,14 + SetZ = 0,27 + SetZoomX = 0,85 + SetZoomY = 0,85 + SetOpacity = 0,200 + SetX = 1,-32 + SetY = 1,-11 + SetX = 2,-69 + SetY = 2,-38 + SetX = 3,-42 + SetY = 3,-58 + SetX = 4,-26 + SetY = 4,-19 + SetX = 5,-20 + SetY = 5,-24 + SetX = 6,-4 + SetY = 6,-21 + SetX = 7,-3 + SetY = 7,-51 + SetX = 8,6 + SetY = 8,-17 + SetX = 9,-74 + SetY = 9,-13 + SetX = 10,-19 + + Graphic = Examples/fly copy + Focus = Target + SetX = 1,9 + SetY = 1,24 + SetZ = 1,28 + SetZoomX = 1,85 + SetZoomY = 1,85 + SetOpacity = 1,200 + SetX = 2,-15 + SetY = 2,-36 + SetX = 3,-25 + SetY = 3,12 + SetX = 4,10 + SetY = 4,-3 + SetX = 5,-68 + SetY = 5,-24 + SetX = 6,-48 + SetY = 6,-16 + SetX = 7,-9 + SetY = 7,0 + SetX = 8,-54 + SetY = 8,-32 + SetX = 9,-8 + SetY = 9,-5 + SetVisible = 10,false + + Graphic = Examples/fly copy + Focus = Target + SetX = 2,-21 + SetY = 2,18 + SetZ = 2,29 + SetZoomX = 2,85 + SetZoomY = 2,85 + SetOpacity = 2,200 + SetX = 3,-69 + SetY = 3,-10 + SetX = 4,-47 + SetY = 4,27 + SetVisible = 5,false + + Graphic = Examples/fly copy + Focus = Target + SetX = 3,18 + SetY = 3,23 + SetZ = 3,30 + SetZoomX = 3,85 + SetZoomY = 3,85 + SetOpacity = 3,200 + SetX = 4,-82 + SetY = 4,-27 + SetVisible = 5,false + + Graphic = Examples/fly copy + Focus = Target + SetX = 4,-40 + SetY = 4,-73 + SetZ = 4,31 + SetZoomX = 4,85 + SetZoomY = 4,85 + SetOpacity = 4,200 + SetVisible = 5,false + + Graphic = Examples/fly copy + Focus = Target + SetX = 6,-41 + SetY = 6,-69 + SetZ = 6,29 + SetZoomX = 6,85 + SetZoomY = 6,85 + SetOpacity = 6,200 + SetX = 7,-83 + SetY = 7,-60 + SetVisible = 8,false + + Graphic = Examples/fly copy + Focus = Target + SetX = 9,-36 + SetY = 9,-72 + SetZ = 9,29 + SetZoomX = 9,85 + SetZoomY = 9,85 + SetOpacity = 9,200 + SetVisible = 10,false + + Play = 0,Sweet Scent diff --git a/PBS/Animations/Example anims/Move/GIGADRAIN.txt b/PBS/Animations/Example anims/Move/GIGADRAIN.txt new file mode 100644 index 000000000..f5102f103 --- /dev/null +++ b/PBS/Animations/Example anims/Move/GIGADRAIN.txt @@ -0,0 +1,197 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,GIGADRAIN] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 0,8 + SetX = 0,169 + SetY = 0,-207 + SetZ = 0,27 + SetX = 1,129 + SetY = 1,-196 + SetX = 2,64 + SetY = 2,-157 + SetX = 3,25 + SetY = 3,-98 + SetX = 4,0 + SetY = 4,-29 + SetFrame = 5,9 + SetX = 5,4 + SetFrame = 6,10 + SetFrame = 7,11 + SetFrame = 8,12 + SetFrame = 9,13 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 0,9 + SetX = 0,189 + SetY = 0,-178 + SetZ = 0,28 + SetFrame = 1,8 + SetX = 1,209 + SetY = 1,-168 + SetX = 2,179 + SetY = 2,-118 + SetX = 3,139 + SetY = 3,-59 + SetX = 4,69 + SetY = 4,-10 + SetX = 5,14 + SetY = 5,-59 + SetX = 6,34 + SetY = 6,-79 + SetX = 7,25 + SetY = 7,-40 + SetX = 9,29 + SetY = 9,-20 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 1,9 + SetX = 1,169 + SetY = 1,-128 + SetZ = 1,29 + SetFrame = 2,8 + SetX = 2,164 + SetY = 2,-187 + SetX = 3,104 + SetY = 3,-139 + SetX = 4,44 + SetY = 4,-89 + SetX = 5,59 + SetY = 5,-50 + SetX = 6,114 + SetY = 6,-79 + SetX = 7,54 + SetY = 7,-50 + SetX = 8,0 + SetY = 8,-79 + SetFrame = 9,9 + SetX = 9,19 + SetY = 9,-40 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 1,9 + SetX = 1,164 + SetY = 1,-217 + SetZ = 1,30 + SetX = 2,109 + SetY = 2,-50 + SetFrame = 3,8 + SetX = 3,189 + SetY = 3,-157 + SetX = 4,150 + SetY = 4,-109 + SetX = 5,100 + SetY = 5,-139 + SetY = 6,-196 + SetX = 7,34 + SetY = 7,-139 + SetX = 8,79 + SetY = 8,-50 + SetVisible = 9,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 2,9 + SetX = 2,125 + SetY = 2,-207 + SetZ = 2,31 + SetFrame = 3,8 + SetX = 3,189 + SetX = 4,139 + SetY = 4,-178 + SetX = 5,164 + SetY = 5,-139 + SetX = 6,189 + SetY = 6,-207 + SetX = 7,154 + SetY = 7,-139 + SetFrame = 8,9 + SetX = 8,44 + SetY = 8,-40 + SetVisible = 9,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 2,9 + SetX = 2,194 + SetY = 2,-187 + SetZ = 2,32 + SetX = 3,29 + SetY = 3,9 + SetFrame = 4,8 + SetX = 4,194 + SetY = 4,-187 + SetX = 5,175 + SetY = 5,-217 + SetX = 6,100 + SetY = 6,-109 + SetX = 7,44 + SetY = 7,-79 + SetVisible = 8,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 3,9 + SetX = 3,84 + SetY = 3,-168 + SetZ = 3,33 + SetFrame = 4,8 + SetX = 4,189 + SetY = 4,-217 + SetX = 5,144 + SetY = 5,-168 + SetFrame = 6,9 + SetX = 6,150 + SetY = 6,-89 + SetX = 7,94 + SetY = 7,-59 + SetVisible = 8,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 3,9 + SetX = 3,154 + SetY = 3,-128 + SetZ = 3,34 + SetX = 4,29 + SetY = 4,-98 + SetX = 5,9 + SetY = 5,-79 + SetVisible = 6,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 4,9 + SetX = 4,114 + SetY = 4,-89 + SetZ = 4,35 + SetX = 5,39 + SetY = 5,-50 + SetVisible = 6,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 4,9 + SetX = 4,209 + SetY = 4,-187 + SetZ = 4,36 + SetX = 5,189 + SetY = 5,-139 + SetVisible = 6,false + + Play = 0,Absorb2,80 + Play = 2,Absorb2,80 + Play = 5,Absorb2,80 + Play = 7,Absorb2,80 diff --git a/PBS/Animations/Example anims/Move/GLARE.txt b/PBS/Animations/Example anims/Move/GLARE.txt new file mode 100644 index 000000000..80dd0a06b --- /dev/null +++ b/PBS/Animations/Example anims/Move/GLARE.txt @@ -0,0 +1,51 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,GLARE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/face and eye + Focus = UserAndTarget + SetFrame = 0,10 + SetX = 0,241 + SetY = 0,-212 + SetZ = 0,28 + SetFrame = 1,11 + SetX = 1,228 + SetY = 1,-215 + SetFrame = 2,12 + SetX = 2,224 + SetY = 2,-223 + SetFrame = 3,13 + SetX = 3,235 + SetY = 3,-209 + SetFrame = 4,14 + SetX = 4,169 + SetY = 4,-210 + SetVisible = 6,false + + Graphic = Examples/face and eye + Focus = UserAndTarget + SetFrame = 0,10 + SetX = 0,177 + SetY = 0,-217 + SetZ = 0,27 + SetFrame = 1,11 + SetX = 1,170 + SetY = 1,-218 + SetFrame = 2,12 + SetX = 2,160 + SetY = 2,-220 + SetFrame = 3,13 + SetX = 3,177 + SetY = 3,-209 + SetFrame = 4,14 + SetX = 4,228 + SetVisible = 6,false + + Play = 0,Scary Face,80 diff --git a/PBS/Animations/Example anims/Move/GRASSWHISTLE.txt b/PBS/Animations/Example anims/Move/GRASSWHISTLE.txt new file mode 100644 index 000000000..e6642b22d --- /dev/null +++ b/PBS/Animations/Example anims/Move/GRASSWHISTLE.txt @@ -0,0 +1,248 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,GRASSWHISTLE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal1 + Focus = UserAndTarget + SetX = 0,14 + SetY = 0,-29 + SetZ = 0,27 + SetFrame = 1,1 + SetX = 1,34 + SetY = 1,-70 + SetFrame = 2,2 + SetX = 2,59 + SetY = 2,-98 + SetFrame = 3,1 + SetX = 3,94 + SetY = 3,-109 + SetFrame = 4,0 + SetX = 4,125 + SetY = 4,-98 + SetFrame = 5,1 + SetX = 5,175 + SetY = 5,-118 + SetFrame = 6,0 + SetX = 6,209 + SetY = 6,-148 + SetFrame = 7,4 + SetX = 7,189 + SetY = 7,-139 + SetFrame = 8,3 + SetX = 8,200 + SetY = 8,-178 + SetFrame = 9,1 + SetY = 9,-168 + SetFrame = 10,2 + SetX = 10,179 + SetY = 10,-128 + SetFrame = 11,1 + SetX = 11,214 + SetY = 11,-178 + SetFrame = 12,4 + SetX = 12,200 + SetY = 12,-157 + SetX = 13,184 + SetY = 13,-118 + SetFrame = 14,5 + SetX = 14,214 + SetY = 14,-178 + SetFrame = 15,2 + SetY = 15,-157 + + Graphic = Examples/normal1 + Focus = UserAndTarget + SetFrame = 2,3 + SetX = 2,9 + SetY = 2,-50 + SetZ = 2,28 + SetFrame = 3,4 + SetX = 3,39 + SetY = 3,-89 + SetFrame = 4,5 + SetX = 4,69 + SetY = 4,-128 + SetFrame = 5,4 + SetX = 5,104 + SetY = 5,-98 + SetFrame = 6,3 + SetX = 6,144 + SetY = 6,-89 + SetFrame = 7,1 + SetX = 7,119 + SetY = 7,-79 + SetFrame = 8,2 + SetX = 8,159 + SetY = 8,-89 + SetFrame = 9,1 + SetX = 9,139 + SetY = 9,-70 + SetFrame = 10,4 + SetX = 10,119 + SetY = 10,-89 + SetFrame = 11,5 + SetX = 11,169 + SetY = 11,-128 + SetFrame = 12,3 + SetX = 12,150 + SetY = 12,-59 + SetFrame = 13,0 + SetX = 13,134 + SetY = 13,-50 + SetFrame = 14,1 + SetX = 14,175 + SetY = 14,-59 + SetVisible = 15,false + + Graphic = Examples/normal1 + Focus = UserAndTarget + SetFrame = 2,9 + SetX = 2,19 + SetY = 2,-128 + SetZ = 2,29 + SetFrame = 3,10 + SetX = 3,50 + SetY = 3,-157 + SetFrame = 4,2 + SetX = 4,19 + SetY = 4,-70 + SetFrame = 5,1 + SetX = 5,44 + SetY = 5,-98 + SetFrame = 6,0 + SetX = 6,79 + SetY = 6,-109 + SetFrame = 7,1 + SetX = 7,59 + SetFrame = 8,0 + SetX = 8,100 + SetY = 8,-79 + SetFrame = 9,3 + SetX = 9,75 + SetY = 9,-109 + SetFrame = 10,5 + SetX = 10,69 + SetY = 10,-89 + SetFrame = 11,4 + SetX = 11,100 + SetY = 11,-70 + SetFrame = 12,2 + SetX = 12,89 + SetY = 12,-89 + SetFrame = 13,11 + SetX = 13,150 + SetY = 13,-139 + SetFrame = 14,12 + SetX = 14,189 + SetY = 14,-207 + SetVisible = 15,false + + Graphic = Examples/normal1 + Focus = UserAndTarget + SetFrame = 4,11 + SetX = 4,84 + SetY = 4,-178 + SetZ = 4,30 + SetFrame = 5,12 + SetX = 5,139 + SetY = 5,-196 + SetFrame = 6,2 + SetX = 6,25 + SetY = 6,-89 + SetFrame = 7,12 + SetX = 7,179 + SetY = 7,-139 + SetFrame = 8,4 + SetX = 8,34 + SetY = 8,-89 + SetFrame = 9,12 + SetX = 9,204 + SetY = 9,-226 + SetFrame = 10,11 + SetX = 10,164 + SetY = 10,-157 + SetFrame = 11,1 + SetX = 11,54 + SetY = 11,-79 + SetFrame = 12,10 + SetX = 12,84 + SetY = 12,-139 + SetVisible = 13,false + + Graphic = Examples/normal1 + Focus = UserAndTarget + SetFrame = 4,9 + SetX = 4,44 + SetY = 4,-70 + SetZ = 4,31 + SetFrame = 5,10 + SetX = 5,94 + SetY = 5,-89 + SetFrame = 6,9 + SetX = 6,179 + SetY = 6,-187 + SetFrame = 7,10 + SetX = 7,104 + SetY = 7,-148 + SetFrame = 8,9 + SetX = 8,214 + SetY = 8,-178 + SetFrame = 9,10 + SetX = 9,114 + SetY = 9,-98 + SetVisible = 10,false + + Graphic = Examples/normal1 + Focus = UserAndTarget + SetFrame = 6,11 + SetX = 6,134 + SetY = 6,-89 + SetZ = 6,32 + SetVisible = 7,false + + Graphic = Examples/normal1 + Focus = UserAndTarget + SetFrame = 6,9 + SetX = 6,34 + SetY = 6,-139 + SetZ = 6,33 + SetVisible = 7,false + + Graphic = Examples/normal1 + Focus = UserAndTarget + SetFrame = 8,11 + SetX = 8,150 + SetY = 8,-168 + SetZ = 8,32 + SetVisible = 9,false + + Graphic = Examples/normal1 + Focus = UserAndTarget + SetFrame = 8,9 + SetX = 8,34 + SetY = 8,-59 + SetZ = 8,33 + SetVisible = 9,false + + Graphic = Examples/normal1 + Focus = UserAndTarget + SetFrame = 11,12 + SetX = 11,225 + SetY = 11,-226 + SetZ = 11,31 + SetVisible = 12,false + + Graphic = Examples/normal1 + Focus = UserAndTarget + SetFrame = 11,9 + SetX = 11,34 + SetY = 11,-109 + SetZ = 11,32 + SetVisible = 12,false diff --git a/PBS/Animations/Example anims/Move/GRUDGE.txt b/PBS/Animations/Example anims/Move/GRUDGE.txt new file mode 100644 index 000000000..9c86e7597 --- /dev/null +++ b/PBS/Animations/Example anims/Move/GRUDGE.txt @@ -0,0 +1,233 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,GRUDGE] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/ghost1 + Focus = User + SetX = 0,128 + SetY = 0,6 + SetZ = 0,27 + SetFrame = 1,1 + SetX = 1,72 + SetY = 1,22 + SetFrame = 2,2 + SetX = 2,32 + SetFrame = 3,3 + SetX = 3,-40 + SetY = 3,6 + SetFrame = 4,4 + SetX = 4,-88 + SetFrame = 5,5 + SetX = 5,-112 + SetY = 5,-10 + SetFrame = 6,6 + SetX = 6,-64 + SetY = 6,-34 + SetFrame = 7,7 + SetX = 7,-16 + SetY = 7,-42 + SetFrame = 8,0 + SetX = 8,40 + SetY = 8,-26 + SetFrame = 9,1 + SetX = 9,112 + SetY = 9,-10 + SetFrame = 10,2 + SetX = 10,96 + SetY = 10,6 + SetFrame = 11,3 + SetX = 11,80 + SetY = 11,22 + + Graphic = Examples/ghost1 + Focus = User + SetFrame = 1,3 + SetX = 1,128 + SetY = 1,6 + SetZ = 1,28 + SetFrame = 2,5 + SetX = 2,72 + SetY = 2,22 + SetFrame = 3,6 + SetX = 3,32 + SetFrame = 4,7 + SetX = 4,-40 + SetY = 4,6 + SetFrame = 5,0 + SetX = 5,-72 + SetFrame = 6,1 + SetX = 6,-96 + SetFrame = 7,2 + SetX = 7,-72 + SetY = 7,-26 + SetFrame = 8,3 + SetX = 8,-16 + SetY = 8,-34 + SetFrame = 9,4 + SetX = 9,40 + SetY = 9,-26 + SetFrame = 10,6 + SetX = 10,104 + SetFrame = 11,0 + SetX = 11,112 + SetY = 11,14 + + Graphic = Examples/ghost1 + Focus = User + SetFrame = 2,2 + SetX = 2,128 + SetY = 2,6 + SetZ = 2,29 + SetFrame = 3,3 + SetX = 3,72 + SetY = 3,22 + SetFrame = 4,4 + SetX = 4,32 + SetFrame = 5,5 + SetX = 5,-40 + SetY = 5,6 + SetFrame = 6,6 + SetX = 6,-56 + SetY = 6,22 + SetFrame = 7,7 + SetX = 7,-112 + SetY = 7,-2 + SetFrame = 8,0 + SetX = 8,-72 + SetFrame = 9,1 + SetX = 9,-16 + SetY = 9,-18 + SetFrame = 10,2 + SetX = 10,48 + SetY = 10,-34 + SetFrame = 11,3 + SetX = 11,80 + + Graphic = Examples/ghost1 + Focus = User + SetX = 3,128 + SetY = 3,6 + SetZ = 3,30 + SetFrame = 4,1 + SetX = 4,88 + SetY = 4,14 + SetFrame = 5,2 + SetX = 5,8 + SetY = 5,22 + SetFrame = 6,3 + SetX = 6,-8 + SetY = 6,46 + SetFrame = 7,4 + SetX = 7,-64 + SetY = 7,38 + SetFrame = 8,6 + SetX = 8,-112 + SetY = 8,14 + SetFrame = 9,7 + SetX = 9,-80 + SetY = 9,-18 + SetFrame = 10,0 + SetX = 10,-8 + SetY = 10,-42 + SetFrame = 11,1 + SetX = 11,40 + SetY = 11,-50 + + Graphic = Examples/ghost1 + Focus = User + SetFrame = 4,3 + SetX = 4,128 + SetY = 4,-18 + SetZ = 4,31 + SetFrame = 5,4 + SetX = 5,64 + SetY = 5,6 + SetFrame = 6,5 + SetY = 6,22 + SetFrame = 7,6 + SetX = 7,16 + SetY = 7,30 + SetFrame = 8,7 + SetX = 8,-72 + SetY = 8,38 + SetFrame = 9,0 + SetX = 9,-112 + SetY = 9,14 + SetFrame = 10,1 + SetX = 10,-72 + SetY = 10,-34 + SetFrame = 11,2 + SetX = 11,-24 + SetY = 11,-50 + + Graphic = Examples/ghost1 + Focus = User + SetX = 6,120 + SetY = 6,6 + SetZ = 6,32 + SetFrame = 7,1 + SetX = 7,80 + SetY = 7,30 + SetFrame = 8,2 + SetX = 8,-8 + SetY = 8,70 + SetFrame = 9,3 + SetX = 9,-72 + SetY = 9,38 + SetFrame = 10,4 + SetX = 10,-120 + SetY = 10,-2 + SetFrame = 11,5 + SetX = 11,-72 + SetY = 11,-42 + + Graphic = Examples/ghost1 + Focus = User + SetFrame = 7,5 + SetX = 7,120 + SetY = 7,-10 + SetZ = 7,33 + SetFrame = 8,6 + SetX = 8,72 + SetY = 8,30 + SetFrame = 9,7 + SetX = 9,-8 + SetY = 9,46 + SetFrame = 10,0 + SetX = 10,-64 + SetY = 10,38 + SetFrame = 11,1 + SetX = 11,-112 + SetY = 11,-2 + + Graphic = Examples/ghost1 + Focus = User + SetFrame = 8,2 + SetX = 8,112 + SetY = 8,6 + SetZ = 8,34 + SetFrame = 9,3 + SetX = 9,64 + SetY = 9,46 + SetFrame = 10,4 + SetX = 10,-8 + SetFrame = 11,5 + SetX = 11,-56 + SetY = 11,22 + + Graphic = Examples/ghost1 + Focus = User + SetFrame = 10,7 + SetX = 10,48 + SetY = 10,30 + SetZ = 10,35 + SetFrame = 11,0 + SetX = 11,8 + SetY = 11,38 + + Play = 0,Fire1,80 diff --git a/PBS/Animations/Example anims/Move/GUST.txt b/PBS/Animations/Example anims/Move/GUST.txt new file mode 100644 index 000000000..5e87b6350 --- /dev/null +++ b/PBS/Animations/Example anims/Move/GUST.txt @@ -0,0 +1,65 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,GUST] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Gust + Focus = Target + SetX = 0,0 + SetY = 0,5 + SetZ = 0,27 + SetX = 1,16 + SetX = 2,32 + SetY = 2,3 + SetX = 3,48 + SetX = 4,56 + SetY = 4,-5 + SetFlip = 5,true + SetX = 5,61 + SetY = 5,-9 + SetX = 6,56 + SetY = 6,-17 + SetX = 7,44 + SetY = 7,-25 + SetX = 8,36 + SetY = 8,-29 + SetX = 9,16 + SetY = 9,-31 + SetFlip = 10,false + SetX = 10,1 + SetX = 11,-10 + SetY = 11,-29 + SetX = 12,-24 + SetY = 12,-27 + SetX = 13,-32 + SetY = 13,-25 + SetX = 14,-52 + SetY = 14,-21 + SetFlip = 15,true + SetX = 15,-64 + SetY = 15,-13 + SetX = 16,-56 + SetY = 16,-5 + SetX = 17,-50 + SetY = 17,-1 + SetX = 18,-40 + SetY = 18,3 + SetX = 19,-26 + SetFlip = 20,false + SetX = 20,1 + SetY = 20,2 + SetFrame = 21,1 + SetX = 21,0 + SetY = 21,-2 + SetOpacity = 21,150 + SetOpacity = 22,255 + SetOpacity = 25,150 + + Play = 0,gust,80,82 + Play = 21,hit,80 diff --git a/PBS/Animations/Example anims/Move/HAIL.txt b/PBS/Animations/Example anims/Move/HAIL.txt new file mode 100644 index 000000000..a8a823c0e --- /dev/null +++ b/PBS/Animations/Example anims/Move/HAIL.txt @@ -0,0 +1,275 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,HAIL] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,7 + SetX = 0,37 + SetY = 0,26 + SetZ = 0,27 + SetFrame = 1,8 + SetX = 1,207 + SetY = 1,56 + SetFrame = 2,7 + SetX = 2,84 + SetY = 2,43 + SetFrame = 3,8 + SetX = 3,171 + SetY = 3,56 + SetFrame = 4,9 + SetX = 4,118 + SetY = 4,97 + SetX = 5,357 + SetY = 5,200 + SetFrame = 6,8 + SetX = 6,10 + SetY = 6,9 + SetFrame = 7,7 + SetX = 7,109 + SetY = 7,105 + SetX = 8,136 + SetY = 8,77 + SetX = 9,69 + SetY = 9,208 + SetX = 10,136 + SetY = 10,107 + SetVisible = 11,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,7 + SetX = 0,164 + SetY = 0,136 + SetZ = 0,28 + SetX = 1,464 + SetY = 1,117 + SetVisible = 2,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,8 + SetX = 0,302 + SetY = 0,79 + SetZ = 0,29 + SetFrame = 1,9 + SetX = 1,201 + SetY = 1,204 + SetX = 2,228 + SetY = 2,98 + SetFrame = 3,8 + SetX = 3,278 + SetY = 3,164 + SetVisible = 4,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,9 + SetX = 0,440 + SetY = 0,194 + SetZ = 0,30 + SetX = 1,51 + SetY = 1,161 + SetFrame = 2,8 + SetX = 2,263 + SetY = 2,253 + SetFrame = 3,7 + SetX = 3,436 + SetY = 3,52 + SetFrame = 4,9 + SetX = 4,390 + SetY = 4,210 + SetVisible = 5,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,9 + SetX = 0,362 + SetY = 0,252 + SetZ = 0,31 + SetVisible = 1,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 2,7 + SetX = 2,78 + SetY = 2,206 + SetZ = 2,31 + SetVisible = 3,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 3,9 + SetX = 3,441 + SetY = 3,241 + SetZ = 3,28 + SetVisible = 4,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 4,9 + SetX = 4,259 + SetY = 4,87 + SetZ = 4,31 + SetFrame = 5,8 + SetX = 5,181 + SetY = 5,217 + SetFrame = 6,9 + SetX = 6,298 + SetY = 6,96 + SetX = 7,191 + SetY = 7,222 + SetX = 8,365 + SetY = 8,231 + SetX = 9,337 + SetY = 9,93 + SetX = 10,82 + SetY = 10,240 + SetFrame = 11,7 + SetX = 11,489 + SetY = 11,96 + SetFrame = 12,9 + SetX = 12,198 + SetY = 12,28 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 4,8 + SetX = 4,72 + SetY = 4,220 + SetZ = 4,32 + SetVisible = 5,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 5,9 + SetX = 5,225 + SetY = 5,69 + SetZ = 5,28 + SetVisible = 6,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 6,8 + SetX = 6,334 + SetY = 6,226 + SetZ = 6,29 + SetVisible = 7,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 6,9 + SetX = 6,465 + SetY = 6,116 + SetZ = 6,30 + SetFrame = 7,8 + SetX = 7,454 + SetY = 7,82 + SetX = 8,276 + SetY = 8,136 + SetX = 9,465 + SetY = 9,160 + SetFrame = 10,9 + SetX = 10,285 + SetY = 10,105 + SetFrame = 11,7 + SetX = 11,419 + SetY = 11,272 + SetFrame = 12,8 + SetX = 12,230 + SetY = 12,142 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 6,9 + SetX = 6,161 + SetY = 6,265 + SetZ = 6,32 + SetX = 7,296 + SetY = 7,172 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 8,8 + SetX = 8,180 + SetY = 8,199 + SetZ = 8,28 + SetX = 9,163 + SetY = 9,99 + SetVisible = 10,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 8,9 + SetX = 8,444 + SetY = 8,137 + SetZ = 8,29 + SetX = 9,303 + SetY = 9,240 + SetFrame = 10,8 + SetX = 10,444 + SetY = 10,89 + SetVisible = 11,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,9 + SetX = 9,28 + SetY = 9,57 + SetZ = 9,33 + SetFrame = 10,8 + SetX = 10,294 + SetY = 10,234 + SetFrame = 11,9 + SetX = 11,111 + SetY = 11,246 + SetX = 12,167 + SetY = 12,237 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 11,8 + SetX = 11,176 + SetY = 11,119 + SetZ = 11,28 + SetVisible = 12,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 11,7 + SetX = 11,281 + SetY = 11,268 + SetZ = 11,32 + SetFrame = 12,9 + SetX = 12,41 + SetY = 12,229 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 11,9 + SetX = 11,299 + SetY = 11,47 + SetZ = 11,34 + SetVisible = 12,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 12,8 + SetX = 12,474 + SetY = 12,59 + SetZ = 12,29 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 12,9 + SetX = 12,449 + SetY = 12,237 + SetZ = 12,35 + + Play = 0,Natural Gift,100,147 diff --git a/PBS/Animations/Example anims/Move/HARDEN.txt b/PBS/Animations/Example anims/Move/HARDEN.txt new file mode 100644 index 000000000..47024032c --- /dev/null +++ b/PBS/Animations/Example anims/Move/HARDEN.txt @@ -0,0 +1,22 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,HARDEN] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 0,15 + SetX = 0,5 + SetY = 0,-3 + SetZ = 0,27 + SetOpacity = 0,70 + SetOpacity = 1,105 + SetOpacity = 2,140 + SetOpacity = 6,105 + SetOpacity = 7,70 + + Play = 0,Harden diff --git a/PBS/Animations/Example anims/Move/HEADBUTT.txt b/PBS/Animations/Example anims/Move/HEADBUTT.txt new file mode 100644 index 000000000..ce0c4edc1 --- /dev/null +++ b/PBS/Animations/Example anims/Move/HEADBUTT.txt @@ -0,0 +1,25 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,HEADBUTT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetAngle = 2,90 + SetFrame = 3,2 + SetAngle = 3,0 + SetZoomX = 4,120 + SetZoomY = 4,120 + SetOpacity = 5,100 + + Play = 0,Blow3,80 diff --git a/PBS/Animations/Example anims/Move/HEATWAVE.txt b/PBS/Animations/Example anims/Move/HEATWAVE.txt new file mode 100644 index 000000000..883729855 --- /dev/null +++ b/PBS/Animations/Example anims/Move/HEATWAVE.txt @@ -0,0 +1,108 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,HEATWAVE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/011-Weapon06 + Focus = UserAndTarget + SetFrame = 0,8 + SetX = 0,100 + SetY = 0,-89 + SetZ = 0,27 + SetFrame = 1,9 + SetZoomX = 1,110 + SetZoomY = 1,110 + SetOpacity = 1,240 + SetFrame = 2,10 + SetZoomX = 2,120 + SetZoomY = 2,120 + SetOpacity = 2,220 + SetFrame = 3,9 + SetFlip = 3,true + SetZoomX = 3,130 + SetZoomY = 3,130 + SetOpacity = 3,200 + SetFrame = 4,8 + SetZoomX = 4,140 + SetZoomY = 4,140 + SetOpacity = 4,190 + SetFlip = 5,false + SetZoomX = 5,150 + SetZoomY = 5,150 + SetOpacity = 5,175 + SetFrame = 6,9 + SetZoomX = 6,160 + SetZoomY = 6,160 + SetOpacity = 6,155 + SetFrame = 7,10 + SetZoomX = 7,170 + SetZoomY = 7,170 + SetOpacity = 7,130 + SetFrame = 8,9 + SetZoomX = 8,180 + SetZoomY = 8,180 + SetOpacity = 8,110 + SetFrame = 9,8 + SetZoomX = 9,190 + SetZoomY = 9,190 + SetOpacity = 9,95 + SetFrame = 10,9 + SetFlip = 10,true + SetZoomX = 10,200 + SetZoomY = 10,200 + SetOpacity = 10,80 + SetFrame = 11,10 + SetFlip = 11,false + SetZoomX = 11,220 + SetZoomY = 11,220 + SetOpacity = 11,75 + SetFrame = 12,9 + SetZoomX = 12,250 + SetZoomY = 12,250 + SetOpacity = 12,70 + SetFrame = 13,8 + SetZoomX = 13,300 + SetZoomY = 13,300 + SetOpacity = 13,65 + SetFrame = 14,9 + SetZoomX = 14,350 + SetZoomY = 14,350 + SetOpacity = 14,60 + SetFrame = 15,10 + SetZoomX = 15,400 + SetZoomY = 15,400 + SetOpacity = 15,55 + SetFrame = 16,9 + SetZoomX = 16,450 + SetZoomY = 16,450 + SetOpacity = 16,50 + SetFrame = 17,8 + SetZoomX = 17,500 + SetZoomY = 17,500 + SetOpacity = 17,45 + SetFrame = 18,9 + SetZoomX = 18,550 + SetZoomY = 18,550 + SetOpacity = 18,40 + SetFrame = 19,10 + SetZoomX = 19,600 + SetZoomY = 19,600 + SetFrame = 20,9 + SetZoomX = 20,500 + SetZoomY = 20,500 + SetOpacity = 20,35 + SetFrame = 21,8 + SetZoomX = 21,400 + SetZoomY = 21,400 + SetOpacity = 21,30 + + Play = 0,Fire1,80 + Play = 2,Fire2,80 + Play = 6,Fire2,80 + Play = 8,Fire2,80 diff --git a/PBS/Animations/Example anims/Move/HIGHJUMPKICK.txt b/PBS/Animations/Example anims/Move/HIGHJUMPKICK.txt new file mode 100644 index 000000000..75473236d --- /dev/null +++ b/PBS/Animations/Example anims/Move/HIGHJUMPKICK.txt @@ -0,0 +1,37 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,HIGHJUMPKICK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal1 + Focus = Target + SetFrame = 0,7 + SetX = 0,120 + SetY = 0,46 + SetZ = 0,27 + SetZoomX = 0,75 + SetZoomY = 0,75 + SetX = 1,104 + SetY = 1,14 + SetX = 2,72 + SetY = 2,-18 + SetX = 3,8 + SetY = 3,-42 + SetX = 4,-56 + SetY = 4,-34 + SetX = 5,-96 + SetY = 5,-10 + SetX = 6,-136 + SetY = 6,22 + SetX = 7,-144 + SetY = 7,38 + SetOpacity = 7,100 + + Play = 0,throw,80 + Play = 3,Blow4,80 diff --git a/PBS/Animations/Example anims/Move/HORNATTACK.txt b/PBS/Animations/Example anims/Move/HORNATTACK.txt new file mode 100644 index 000000000..93f55e195 --- /dev/null +++ b/PBS/Animations/Example anims/Move/HORNATTACK.txt @@ -0,0 +1,40 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,HORNATTACK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Cosmo-01 + Focus = UserAndTarget + SetFrame = 4,9 + SetX = 4,204 + SetY = 4,-217 + SetZ = 4,28 + SetZoomX = 4,50 + SetZoomY = 4,50 + SetOpacity = 4,100 + SetVisible = 5,false + + Graphic = Examples/Cosmo-01 + Focus = UserAndTarget + SetFrame = 0,7 + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetX = 1,39 + SetY = 1,-50 + SetX = 2,84 + SetY = 2,-109 + SetX = 3,129 + SetY = 3,-139 + SetX = 4,179 + SetY = 4,-178 + SetFrame = 5,9 + SetOpacity = 5,25 + + Play = 3,normaldamage,80 diff --git a/PBS/Animations/Example anims/Move/HYDROPUMP.txt b/PBS/Animations/Example anims/Move/HYDROPUMP.txt new file mode 100644 index 000000000..9c644a9e0 --- /dev/null +++ b/PBS/Animations/Example anims/Move/HYDROPUMP.txt @@ -0,0 +1,80 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,HYDROPUMP] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/icewater + Focus = Target + SetFrame = 2,14 + SetX = 2,96 + SetY = 2,-2 + SetZ = 2,28 + SetFrame = 3,13 + SetFrame = 4,12 + SetFrame = 5,11 + SetFrame = 6,10 + SetFrame = 7,9 + SetFrame = 8,8 + SetFrame = 9,7 + SetFrame = 11,8 + SetFrame = 12,10 + SetFrame = 13,12 + SetVisible = 14,false + + Graphic = Examples/icewater + Focus = Target + SetFrame = 5,14 + SetX = 5,-88 + SetY = 5,-2 + SetZ = 5,29 + SetFrame = 6,13 + SetFrame = 7,12 + SetFrame = 8,11 + SetFrame = 9,10 + SetFrame = 10,9 + SetFrame = 11,8 + SetFrame = 12,7 + SetFrame = 13,8 + SetVisible = 14,false + + Graphic = Examples/icewater + Focus = Target + SetFrame = 0,14 + SetX = 0,0 + SetY = 0,22 + SetZ = 0,27 + SetFrame = 1,13 + SetFrame = 2,12 + SetFrame = 3,11 + SetX = 3,8 + SetFrame = 4,10 + SetX = 4,16 + SetFrame = 5,9 + SetX = 5,-8 + SetFrame = 6,8 + SetX = 6,0 + SetFrame = 7,7 + SetFlip = 9,true + SetX = 9,-8 + SetFrame = 10,8 + SetFlip = 10,false + SetFrame = 11,9 + SetX = 11,-16 + SetFrame = 12,11 + SetX = 12,-8 + SetFrame = 13,13 + SetFrame = 14,10 + SetX = 14,-88 + SetY = 14,-2 + SetFrame = 15,12 + SetFrame = 16,14 + + Play = 1,Water1,80 + Play = 5,Water1,80 + Play = 9,Water1,80 diff --git a/PBS/Animations/Example anims/Move/HYPERFANG.txt b/PBS/Animations/Example anims/Move/HYPERFANG.txt new file mode 100644 index 000000000..b685b89f4 --- /dev/null +++ b/PBS/Animations/Example anims/Move/HYPERFANG.txt @@ -0,0 +1,28 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,HYPERFANG] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal2 + Focus = Target + SetX = 0,-8 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetX = 2,0 + SetY = 2,6 + SetFrame = 3,3 + SetFrame = 4,4 + SetX = 4,-8 + SetY = 4,14 + SetOpacity = 6,150 + SetOpacity = 7,100 + + Play = 0,Slash9,80 diff --git a/PBS/Animations/Example anims/Move/ICEBALL.txt b/PBS/Animations/Example anims/Move/ICEBALL.txt new file mode 100644 index 000000000..fa6a4f44a --- /dev/null +++ b/PBS/Animations/Example anims/Move/ICEBALL.txt @@ -0,0 +1,37 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ICEBALL] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/icewater + Focus = UserAndTarget + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetX = 1,9 + SetY = 1,-40 + SetX = 2,34 + SetY = 2,-79 + SetX = 3,59 + SetY = 3,-109 + SetX = 4,104 + SetY = 4,-148 + SetX = 5,139 + SetY = 5,-168 + SetX = 6,179 + SetY = 6,-178 + SetFrame = 7,1 + SetFrame = 8,2 + SetFrame = 9,3 + SetFrame = 10,4 + SetFrame = 11,5 + SetFrame = 12,6 + + Play = 0,throw,80 + Play = 7,Earth3,80 diff --git a/PBS/Animations/Example anims/Move/ICEFANG.txt b/PBS/Animations/Example anims/Move/ICEFANG.txt new file mode 100644 index 000000000..8b3b8e743 --- /dev/null +++ b/PBS/Animations/Example anims/Move/ICEFANG.txt @@ -0,0 +1,128 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ICEFANG] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/element fangs + Focus = Target + SetX = 0,11 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetX = 1,6 + SetY = 1,-4 + SetFrame = 2,2 + SetX = 2,5 + SetY = 2,1 + SetFrame = 3,3 + SetX = 3,4 + SetY = 3,-2 + SetFrame = 4,4 + SetX = 4,5 + SetY = 4,-8 + SetFrame = 5,5 + SetX = 5,8 + SetY = 5,5 + SetFrame = 6,6 + SetX = 6,2 + SetY = 6,-2 + SetFrame = 7,7 + SetX = 7,6 + SetY = 7,-1 + SetFrame = 8,8 + SetX = 8,5 + SetY = 8,-6 + SetFrame = 9,9 + SetX = 9,-2 + SetY = 9,-4 + SetFrame = 10,10 + SetX = 10,13 + SetY = 10,3 + SetFrame = 11,11 + SetX = 11,4 + SetY = 11,-2 + SetFrame = 12,12 + SetX = 12,7 + SetY = 12,-1 + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 7,16 + SetX = 7,-54 + SetY = 7,15 + SetZ = 7,28 + SetOpacity = 7,208 + SetX = 8,-56 + SetY = 8,-49 + SetOpacity = 8,164 + SetX = 9,-31 + SetY = 9,-53 + SetOpacity = 9,154 + SetX = 10,-30 + SetY = 10,50 + SetOpacity = 10,255 + SetX = 11,59 + SetY = 11,71 + SetOpacity = 11,204 + SetVisible = 12,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 8,16 + SetX = 8,-52 + SetY = 8,15 + SetZ = 8,29 + SetOpacity = 8,133 + SetX = 9,-42 + SetY = 9,41 + SetOpacity = 9,159 + SetX = 10,78 + SetY = 10,-48 + SetOpacity = 10,234 + SetX = 11,94 + SetY = 11,10 + SetOpacity = 11,224 + SetVisible = 12,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 8,16 + SetX = 8,89 + SetY = 8,-31 + SetZ = 8,30 + SetOpacity = 8,213 + SetX = 9,26 + SetY = 9,70 + SetOpacity = 9,212 + SetX = 10,18 + SetY = 10,78 + SetOpacity = 10,174 + SetVisible = 11,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 9,16 + SetX = 9,15 + SetY = 9,-66 + SetZ = 9,31 + SetOpacity = 9,144 + SetX = 10,-64 + SetOpacity = 10,224 + SetVisible = 11,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 10,16 + SetX = 10,66 + SetY = 10,-6 + SetZ = 10,32 + SetOpacity = 10,154 + SetVisible = 11,false + + Play = 6,Super Fang,80 diff --git a/PBS/Animations/Example anims/Move/ICEPUNCH.txt b/PBS/Animations/Example anims/Move/ICEPUNCH.txt new file mode 100644 index 000000000..9143b35e6 --- /dev/null +++ b/PBS/Animations/Example anims/Move/ICEPUNCH.txt @@ -0,0 +1,200 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ICEPUNCH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/punches + Focus = Target + SetFrame = 0,6 + SetX = 0,0 + SetY = 0,-3 + SetZ = 0,27 + SetFrame = 1,7 + SetY = 1,-5 + SetFrame = 2,8 + SetX = 2,25 + SetY = 2,20 + SetFrame = 3,6 + SetX = 3,1 + SetY = 3,-3 + SetFrame = 4,8 + SetX = 4,8 + SetY = 4,-22 + SetX = 5,-11 + SetY = 5,-17 + SetX = 6,28 + SetY = 6,49 + SetX = 8,-35 + SetY = 8,39 + SetX = 9,3 + SetY = 9,40 + SetX = 10,-23 + SetY = 10,-87 + + Graphic = Examples/punches + Focus = Target + SetFrame = 1,6 + SetX = 1,3 + SetY = 1,0 + SetZ = 1,28 + SetX = 2,1 + SetFrame = 3,8 + SetX = 3,47 + SetY = 3,39 + SetX = 4,-57 + SetY = 4,58 + SetX = 5,36 + SetY = 5,-42 + SetX = 6,-59 + SetY = 6,-15 + SetX = 8,25 + SetY = 8,52 + SetX = 9,-71 + SetY = 9,79 + SetX = 10,16 + SetY = 10,-54 + + Graphic = Examples/punches + Focus = Target + SetFrame = 2,8 + SetX = 2,-36 + SetY = 2,11 + SetZ = 2,29 + SetX = 3,-50 + SetY = 3,28 + SetX = 4,65 + SetY = 4,63 + SetX = 5,54 + SetY = 5,24 + SetX = 6,-2 + SetY = 6,-91 + SetX = 8,-4 + SetY = 8,-19 + SetX = 9,-54 + SetY = 9,-42 + SetX = 10,84 + SetY = 10,81 + + Graphic = Examples/punches + Focus = Target + SetFrame = 3,8 + SetX = 3,-1 + SetY = 3,-33 + SetZ = 3,30 + SetX = 4,9 + SetY = 4,68 + SetX = 5,-37 + SetY = 5,39 + SetX = 6,-67 + SetY = 6,-48 + SetX = 8,-46 + SetY = 8,-6 + SetX = 9,51 + SetY = 9,-49 + SetVisible = 10,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 3,8 + SetX = 3,8 + SetY = 3,22 + SetZ = 3,31 + SetX = 4,-9 + SetY = 4,7 + SetX = 5,-43 + SetY = 5,-8 + SetX = 6,-86 + SetY = 6,35 + SetX = 8,30 + SetY = 8,15 + SetX = 9,61 + SetY = 9,21 + SetVisible = 10,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 4,8 + SetX = 4,24 + SetY = 4,31 + SetZ = 4,32 + SetX = 5,7 + SetY = 5,44 + SetX = 6,48 + SetY = 6,14 + SetX = 8,9 + SetY = 8,-68 + SetFrame = 9,6 + SetX = 9,0 + SetY = 9,-1 + SetVisible = 10,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 4,6 + SetX = 4,-6 + SetY = 4,3 + SetZ = 4,33 + SetFrame = 5,8 + SetX = 5,15 + SetY = 5,7 + SetX = 6,43 + SetY = 6,-19 + SetX = 8,3 + SetY = 8,21 + SetVisible = 9,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 5,8 + SetX = 5,-52 + SetY = 5,-63 + SetZ = 5,34 + SetX = 6,-4 + SetY = 6,13 + SetX = 8,75 + SetY = 8,-16 + SetVisible = 9,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 5,6 + SetX = 5,-3 + SetY = 5,-3 + SetZ = 5,35 + SetX = 6,-1 + SetY = 6,5 + SetX = 8,-2 + SetY = 8,-4 + SetVisible = 9,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 7,8 + SetX = 7,8 + SetY = 7,8 + SetZ = 7,36 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 7,8 + SetX = 7,-21 + SetY = 7,-11 + SetZ = 7,37 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 7,8 + SetX = 7,9 + SetY = 7,-13 + SetZ = 7,38 + SetVisible = 8,false + + Play = 0,Shell Smash,100,131 diff --git a/PBS/Animations/Example anims/Move/ICICLESPEAR.txt b/PBS/Animations/Example anims/Move/ICICLESPEAR.txt new file mode 100644 index 000000000..efc798786 --- /dev/null +++ b/PBS/Animations/Example anims/Move/ICICLESPEAR.txt @@ -0,0 +1,171 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ICICLESPEAR] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 0,5 + SetFlip = 0,true + SetX = 0,50 + SetY = 0,-50 + SetZ = 0,27 + SetAngle = 0,135 + SetX = 1,100 + SetY = 1,-79 + SetX = 2,129 + SetY = 2,-128 + SetX = 3,159 + SetY = 3,-139 + SetFrame = 4,6 + SetX = 4,169 + SetY = 4,-148 + SetFrame = 5,7 + SetX = 5,175 + SetY = 5,-157 + + Play = 0,throw,80 + Play = 2,Crash,50,115 + Play = 2,Ice2,80 +#------------------------------- +[Move,ICICLESPEAR,1] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 0,5 + SetFlip = 0,true + SetX = 0,50 + SetY = 0,-50 + SetZ = 0,27 + SetAngle = 0,135 + SetX = 1,100 + SetY = 1,-79 + SetX = 2,129 + SetY = 2,-128 + SetX = 3,159 + SetY = 3,-139 + SetFrame = 4,6 + SetX = 4,169 + SetY = 4,-148 + SetFrame = 5,7 + SetX = 5,175 + SetY = 5,-157 + + Play = 0,throw,80 + Play = 2,Crash,50,115 + Play = 2,Ice2,80 +#------------------------------- +[Move,ICICLESPEAR,2] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 0,5 + SetFlip = 0,true + SetX = 0,50 + SetY = 0,-50 + SetZ = 0,27 + SetAngle = 0,135 + SetX = 1,100 + SetY = 1,-79 + SetX = 2,129 + SetY = 2,-128 + SetX = 3,159 + SetY = 3,-139 + SetFrame = 4,6 + SetX = 4,169 + SetY = 4,-148 + SetFrame = 5,7 + SetX = 5,175 + SetY = 5,-157 + + Play = 0,throw,80 + Play = 2,Crash,50,115 + Play = 2,Ice2,80 +#------------------------------- +[Move,ICICLESPEAR,3] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 0,5 + SetFlip = 0,true + SetX = 0,50 + SetY = 0,-50 + SetZ = 0,27 + SetAngle = 0,135 + SetX = 1,100 + SetY = 1,-79 + SetX = 2,129 + SetY = 2,-128 + SetX = 3,159 + SetY = 3,-139 + SetFrame = 4,6 + SetX = 4,169 + SetY = 4,-148 + SetFrame = 5,7 + SetX = 5,175 + SetY = 5,-157 + + Play = 0,throw,80 + Play = 2,Crash,50,115 + Play = 2,Ice2,80 +#------------------------------- +[Move,ICICLESPEAR,4] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 0,5 + SetFlip = 0,true + SetX = 0,50 + SetY = 0,-50 + SetZ = 0,27 + SetAngle = 0,135 + SetX = 1,100 + SetY = 1,-79 + SetX = 2,129 + SetY = 2,-128 + SetX = 3,159 + SetY = 3,-139 + SetFrame = 4,6 + SetX = 4,169 + SetY = 4,-148 + SetFrame = 5,7 + SetX = 5,175 + SetY = 5,-157 + + Play = 0,throw,80 + Play = 2,Crash,50,115 + Play = 2,Ice2,80 diff --git a/PBS/Animations/Example anims/Move/ICYWIND.txt b/PBS/Animations/Example anims/Move/ICYWIND.txt new file mode 100644 index 000000000..612d8c1cd --- /dev/null +++ b/PBS/Animations/Example anims/Move/ICYWIND.txt @@ -0,0 +1,72 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ICYWIND] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Ice1 + Focus = UserAndTarget + SetX = 1,4 + SetY = 1,-50 + SetZ = 1,28 + SetFrame = 2,1 + SetX = 2,39 + SetY = 2,-70 + SetFrame = 3,2 + SetX = 3,69 + SetY = 3,-89 + SetFrame = 4,3 + SetX = 4,94 + SetY = 4,-118 + SetFlip = 5,true + SetX = 5,134 + SetY = 5,-139 + SetVisible = 6,false + + Graphic = Examples/Ice1 + Focus = UserAndTarget + SetX = 3,34 + SetY = 3,-70 + SetZ = 3,29 + SetFrame = 4,1 + SetX = 4,59 + SetY = 4,-89 + SetZoomX = 4,75 + SetZoomY = 4,75 + SetVisible = 5,false + + Graphic = Examples/Ice1 + Focus = UserAndTarget + SetX = 0,9 + SetY = 0,-50 + SetZ = 0,27 + SetFrame = 1,1 + SetX = 1,29 + SetY = 1,-59 + SetFrame = 2,2 + SetX = 2,84 + SetY = 2,-109 + SetFrame = 3,3 + SetX = 3,114 + SetY = 3,-139 + SetFrame = 4,4 + SetX = 4,144 + SetY = 4,-157 + SetFlip = 5,true + SetX = 5,179 + SetY = 5,-168 + SetFlip = 6,false + SetY = 6,-178 + SetFrame = 7,3 + SetFrame = 8,2 + SetFrame = 9,1 + SetFrame = 10,0 + SetOpacity = 10,100 + + Play = 0,throw,80 + Play = 1,Ice8,80 diff --git a/PBS/Animations/Example anims/Move/INFERNO.txt b/PBS/Animations/Example anims/Move/INFERNO.txt new file mode 100644 index 000000000..8041564ff --- /dev/null +++ b/PBS/Animations/Example anims/Move/INFERNO.txt @@ -0,0 +1,347 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,INFERNO] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Flames + Focus = Target + SetX = 0,-16 + SetY = 0,32 + SetZ = 0,27 + SetX = 1,-23 + SetY = 1,26 + SetX = 2,-24 + SetY = 2,25 + SetX = 3,-31 + SetY = 3,33 + SetX = 4,-37 + SetY = 4,38 + SetX = 5,-25 + SetY = 5,33 + SetX = 6,-20 + SetY = 6,32 + SetX = 7,-30 + SetX = 8,-24 + SetY = 8,34 + SetX = 9,-8 + SetY = 9,33 + + Graphic = Examples/Flames + Focus = Target + SetX = 0,21 + SetY = 0,27 + SetZ = 0,28 + SetX = 1,26 + SetY = 1,25 + SetX = 2,-1 + SetY = 2,34 + SetX = 3,-8 + SetY = 3,36 + SetX = 4,-12 + SetY = 4,40 + SetX = 5,-1 + SetY = 5,37 + SetY = 6,30 + SetX = 7,-5 + SetY = 7,31 + SetX = 8,2 + SetY = 8,38 + SetX = 9,-33 + SetY = 9,33 + + Graphic = Examples/Flames + Focus = Target + SetX = 1,3 + SetY = 1,23 + SetZ = 1,29 + SetX = 2,23 + SetY = 2,27 + SetX = 3,-15 + SetY = 3,18 + SetX = 4,9 + SetY = 4,39 + SetX = 5,-6 + SetY = 5,19 + SetX = 6,-3 + SetY = 6,14 + SetX = 7,-16 + SetY = 7,11 + SetX = 8,-7 + SetY = 8,21 + SetX = 9,-13 + SetY = 9,12 + + Graphic = Examples/Flames + Focus = Target + SetX = 1,-7 + SetY = 1,9 + SetZ = 1,30 + SetX = 2,-4 + SetY = 2,13 + SetX = 3,16 + SetY = 3,38 + SetX = 4,-22 + SetY = 4,22 + SetX = 5,-1 + SetY = 5,-1 + SetX = 6,-28 + SetY = 6,6 + SetX = 7,-40 + SetY = 7,12 + SetX = 8,19 + SetY = 8,27 + SetX = 9,-32 + SetY = 9,4 + + Graphic = Examples/Flames + Focus = Target + SetX = 1,18 + SetY = 1,11 + SetZ = 1,31 + SetX = 2,13 + SetY = 2,14 + SetX = 3,5 + SetY = 3,21 + SetX = 4,3 + SetY = 4,25 + SetX = 5,18 + SetY = 5,11 + SetX = 6,24 + SetY = 6,22 + SetX = 7,-29 + SetY = 7,-4 + SetX = 8,22 + SetY = 8,5 + SetX = 9,-35 + SetY = 9,-18 + + Graphic = Examples/Flames + Focus = Target + SetX = 2,-20 + SetY = 2,7 + SetZ = 2,32 + SetX = 3,25 + SetY = 3,19 + SetX = 4,-38 + SetY = 4,13 + SetX = 5,20 + SetY = 5,35 + SetX = 6,2 + SetY = 6,-1 + SetX = 7,-1 + SetY = 7,-6 + SetX = 8,-2 + SetY = 8,-3 + SetX = 9,-14 + SetY = 9,-8 + + Graphic = Examples/Flames + Focus = Target + SetX = 2,2 + SetY = 2,-1 + SetZ = 2,33 + SetX = 3,-35 + SetY = 3,9 + SetX = 4,-6 + SetY = 4,8 + SetX = 5,16 + SetY = 5,-13 + SetX = 6,18 + SetY = 6,4 + SetX = 7,-16 + SetY = 7,-20 + SetX = 8,-25 + SetY = 8,10 + SetX = 9,7 + SetY = 9,9 + + Graphic = Examples/Flames + Focus = Target + SetX = 2,-35 + SetY = 2,-4 + SetZ = 2,34 + SetX = 3,-11 + SetY = 3,2 + SetX = 4,20 + SetY = 4,36 + SetX = 5,-27 + SetY = 5,5 + SetX = 6,-16 + SetY = 6,-20 + SetX = 7,20 + SetY = 7,29 + SetX = 8,-33 + SetY = 8,-9 + SetX = 9,22 + SetY = 9,32 + + Graphic = Examples/Flames + Focus = Target + SetX = 3,9 + SetY = 3,3 + SetZ = 3,35 + SetX = 4,18 + SetY = 4,17 + SetX = 5,-41 + SetY = 5,21 + SetVisible = 6,false + + Graphic = Examples/Flames + Focus = Target + SetX = 3,-27 + SetY = 3,-7 + SetZ = 3,36 + SetX = 4,11 + SetY = 4,-2 + SetX = 5,-21 + SetY = 5,-17 + SetVisible = 6,false + + Graphic = Examples/Flames + Focus = Target + SetX = 3,28 + SetY = 3,-1 + SetZ = 3,37 + SetX = 4,-27 + SetY = 4,-3 + SetVisible = 5,false + + Graphic = Examples/Flames + Focus = Target + SetX = 3,-4 + SetY = 3,-15 + SetZ = 3,38 + SetX = 4,1 + SetY = 4,-12 + SetVisible = 5,false + + Graphic = Examples/Flames + Focus = Target + SetX = 4,-17 + SetY = 4,-22 + SetZ = 4,39 + SetVisible = 5,false + + Graphic = Examples/Flames + Focus = Target + SetX = 4,-41 + SetY = 4,-17 + SetZ = 4,40 + SetVisible = 5,false + + Graphic = Examples/Flames + Focus = Target + SetX = 4,18 + SetY = 4,-20 + SetZ = 4,41 + SetVisible = 5,false + + Graphic = Examples/Flames + Focus = Target + SetX = 4,-2 + SetY = 4,-38 + SetZ = 4,42 + SetVisible = 5,false + + Graphic = Examples/Flames + Focus = Target + SetX = 7,11 + SetY = 7,12 + SetZ = 7,35 + SetX = 8,-11 + SetY = 8,-21 + SetX = 9,33 + SetY = 9,11 + + Graphic = Examples/Flames + Focus = Target + SetX = 7,16 + SetY = 7,-15 + SetZ = 7,36 + SetX = 8,0 + SetY = 8,-18 + SetX = 9,13 + SetY = 9,-8 + + Graphic = Examples/Flames + Focus = Target + SetX = 7,3 + SetY = 7,-25 + SetZ = 7,37 + SetX = 8,30 + SetY = 8,-13 + SetVisible = 9,false + + Graphic = Examples/Flames + Focus = Target + SetX = 7,-43 + SetY = 7,-17 + SetZ = 7,38 + SetX = 8,-37 + SetY = 8,-26 + SetVisible = 9,false + + Graphic = Examples/Flames + Focus = Target + SetX = 7,-29 + SetY = 7,-35 + SetZ = 7,39 + SetX = 8,-16 + SetY = 8,-37 + SetVisible = 9,false + + Graphic = Examples/Flames + Focus = Target + SetX = 7,-1 + SetY = 7,-44 + SetZ = 7,40 + SetX = 8,8 + SetY = 8,-39 + SetVisible = 9,false + + Graphic = Examples/Flames + Focus = Target + SetX = 7,35 + SetY = 7,-19 + SetZ = 7,41 + SetX = 8,32 + SetY = 8,-34 + SetVisible = 9,false + + Graphic = Examples/Flames + Focus = Target + SetX = 7,38 + SetY = 7,7 + SetZ = 7,42 + SetX = 8,-42 + SetY = 8,-48 + SetVisible = 9,false + + Graphic = Examples/Flames + Focus = Target + SetX = 8,39 + SetY = 8,20 + SetZ = 8,43 + SetVisible = 9,false + + Graphic = Examples/Flames + Focus = Target + SetX = 8,30 + SetY = 8,42 + SetZ = 8,44 + SetVisible = 9,false + + Graphic = Examples/Flames + Focus = Target + SetX = 8,12 + SetY = 8,-63 + SetZ = 8,45 + SetVisible = 9,false + + Play = 0,Wring Out,100,150 diff --git a/PBS/Animations/Example anims/Move/IRONHEAD.txt b/PBS/Animations/Example anims/Move/IRONHEAD.txt new file mode 100644 index 000000000..514c8e6ac --- /dev/null +++ b/PBS/Animations/Example anims/Move/IRONHEAD.txt @@ -0,0 +1,77 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,IRONHEAD] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Iron Head + Focus = Target + SetFrame = 1,2 + SetX = 1,0 + SetY = 1,1 + SetZ = 1,27 + SetFrame = 2,1 + SetFrame = 5,3 + SetFrame = 6,0 + SetOpacity = 7,128 + + Graphic = Examples/Iron Head + Focus = Target + SetFrame = 2,5 + SetX = 2,-53 + SetY = 2,18 + SetZ = 2,28 + SetX = 3,-106 + SetY = 3,32 + SetX = 4,-100 + SetY = 4,82 + SetOpacity = 4,128 + SetVisible = 5,false + + Graphic = Examples/Iron Head + Focus = Target + SetFrame = 2,6 + SetX = 2,53 + SetY = 2,22 + SetZ = 2,29 + SetX = 3,101 + SetY = 3,36 + SetX = 4,123 + SetY = 4,86 + SetOpacity = 4,128 + SetVisible = 5,false + + Graphic = Examples/Iron Head + Focus = Target + SetFrame = 3,7 + SetX = 3,-105 + SetY = 3,-14 + SetZ = 3,30 + SetX = 4,-118 + SetY = 4,-69 + SetVisible = 5,false + + Graphic = Examples/Iron Head + Focus = Target + SetFrame = 3,8 + SetX = 3,77 + SetY = 3,-27 + SetZ = 3,31 + SetX = 4,129 + SetY = 4,-42 + SetVisible = 5,false + + Graphic = Examples/Iron Head + Focus = Target + SetFrame = 3,8 + SetX = 3,-109 + SetY = 3,-63 + SetZ = 3,32 + SetVisible = 4,false + + Play = 0,Damage1 diff --git a/PBS/Animations/Example anims/Move/JUMPKICK.txt b/PBS/Animations/Example anims/Move/JUMPKICK.txt new file mode 100644 index 000000000..de0ba19a9 --- /dev/null +++ b/PBS/Animations/Example anims/Move/JUMPKICK.txt @@ -0,0 +1,36 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,JUMPKICK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal1 + Focus = Target + SetFrame = 0,7 + SetX = 0,120 + SetY = 0,46 + SetZ = 0,27 + SetZoomX = 0,75 + SetZoomY = 0,75 + SetX = 1,104 + SetY = 1,14 + SetX = 2,72 + SetY = 2,-18 + SetX = 3,8 + SetY = 3,-42 + SetX = 4,-56 + SetY = 4,-34 + SetX = 5,-96 + SetY = 5,-10 + SetX = 6,-136 + SetY = 6,22 + SetX = 7,-144 + SetY = 7,38 + SetOpacity = 7,100 + + Play = 3,Blow3,80 diff --git a/PBS/Animations/Example anims/Move/KARATECHOP.txt b/PBS/Animations/Example anims/Move/KARATECHOP.txt new file mode 100644 index 000000000..654194936 --- /dev/null +++ b/PBS/Animations/Example anims/Move/KARATECHOP.txt @@ -0,0 +1,38 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,KARATECHOP] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/many + Focus = Target + SetFrame = 0,13 + SetX = 0,-152 + SetY = 0,-66 + SetZ = 0,27 + SetX = 1,-112 + SetY = 1,-58 + SetAngle = 1,350 + SetX = 2,-72 + SetAngle = 2,340 + SetX = 3,-48 + SetY = 3,-42 + SetAngle = 3,330 + SetX = 4,-24 + SetY = 4,-26 + SetAngle = 4,320 + SetX = 5,-8 + SetY = 5,-10 + SetFrame = 6,8 + SetX = 6,0 + SetY = 6,-2 + SetAngle = 6,0 + SetFrame = 7,9 + + Play = 0,Wind1,80 + Play = 7,Blow3,80 diff --git a/PBS/Animations/Example anims/Move/KINESIS.txt b/PBS/Animations/Example anims/Move/KINESIS.txt new file mode 100644 index 000000000..c0708ee70 --- /dev/null +++ b/PBS/Animations/Example anims/Move/KINESIS.txt @@ -0,0 +1,35 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,KINESIS] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/finger spoon + Focus = Target + SetFrame = 0,2 + SetX = 0,-1 + SetY = 0,-2 + SetZ = 0,27 + SetX = 1,1 + SetX = 2,0 + SetY = 2,-1 + SetFrame = 3,4 + SetY = 3,-6 + SetFrame = 4,3 + SetX = 4,2 + SetY = 4,-3 + SetFrame = 5,4 + SetY = 5,-2 + SetY = 6,-3 + SetFrame = 7,5 + SetX = 7,0 + SetY = 7,-2 + SetX = 8,1 + SetY = 8,-3 + + Play = 0,Trump Card,86 diff --git a/PBS/Animations/Example anims/Move/LEAFBLADE.txt b/PBS/Animations/Example anims/Move/LEAFBLADE.txt new file mode 100644 index 000000000..cd9e16f77 --- /dev/null +++ b/PBS/Animations/Example anims/Move/LEAFBLADE.txt @@ -0,0 +1,45 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,LEAFBLADE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Sword5 + Focus = Target + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFrame = 6,6 + SetFrame = 7,7 + SetFrame = 8,8 + SetFrame = 9,9 + SetFrame = 10,10 + SetFrame = 11,11 + SetFrame = 12,12 + SetFrame = 13,13 + SetFrame = 14,14 + SetFrame = 15,15 + SetFrame = 16,16 + SetFrame = 17,17 + SetFrame = 18,18 + SetFrame = 19,19 + SetFrame = 20,20 + SetFrame = 21,21 + SetFrame = 22,22 + SetFrame = 23,23 + + Play = 0,Sword1,80 + Play = 3,Slash3,80 + Play = 7,Slash3,80 + Play = 11,Slash3,80 + Play = 15,Slash3,80 diff --git a/PBS/Animations/Example anims/Move/LEECHLIFE.txt b/PBS/Animations/Example anims/Move/LEECHLIFE.txt new file mode 100644 index 000000000..192c4747d --- /dev/null +++ b/PBS/Animations/Example anims/Move/LEECHLIFE.txt @@ -0,0 +1,161 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,LEECHLIFE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 0,14 + SetX = 0,29 + SetY = 0,0 + SetZ = 0,27 + SetX = 1,75 + SetY = 1,-70 + SetX = 2,129 + SetY = 2,-128 + SetX = 3,179 + SetY = 3,-178 + SetZoomX = 4,110 + SetZoomY = 4,110 + SetOpacity = 4,100 + SetFrame = 5,9 + SetX = 5,119 + SetY = 5,-187 + SetZoomX = 5,100 + SetZoomY = 5,100 + SetOpacity = 5,255 + SetFrame = 6,10 + SetX = 6,64 + SetY = 6,-157 + SetFrame = 7,11 + SetX = 7,9 + SetY = 7,-98 + SetFrame = 8,12 + SetX = 8,-5 + SetY = 8,-50 + SetX = 9,39 + SetY = 9,0 + SetFrame = 10,13 + SetX = 10,-20 + SetY = 10,-10 + SetFrame = 11,12 + SetX = 11,14 + SetY = 11,9 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 4,8 + SetX = 4,164 + SetY = 4,-196 + SetZ = 4,28 + SetFrame = 5,10 + SetX = 5,159 + SetY = 5,-50 + SetFrame = 6,12 + SetX = 6,119 + SetY = 6,9 + SetFrame = 7,13 + SetX = 7,39 + SetFrame = 8,11 + SetX = 8,19 + SetY = 8,-40 + SetFrame = 9,12 + SetX = 9,-15 + SetY = 9,-109 + SetFrame = 10,11 + SetX = 10,89 + SetY = 10,9 + SetFrame = 11,12 + SetX = 11,-25 + SetY = 11,-20 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 4,9 + SetX = 4,200 + SetY = 4,-109 + SetZ = 4,29 + SetFrame = 5,8 + SetX = 5,169 + SetY = 5,-207 + SetFrame = 6,9 + SetX = 6,119 + SetY = 6,-157 + SetFrame = 7,10 + SetX = 7,79 + SetY = 7,-109 + SetFrame = 8,11 + SetX = 8,109 + SetY = 8,-50 + SetFrame = 9,10 + SetX = 9,150 + SetY = 9,-29 + SetFrame = 10,11 + SetX = 10,4 + SetY = 10,-89 + SetVisible = 11,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 6,9 + SetX = 6,200 + SetY = 6,-168 + SetZ = 6,30 + SetFrame = 7,10 + SetX = 7,154 + SetY = 7,-109 + SetFrame = 8,11 + SetX = 8,29 + SetY = 8,-196 + SetFrame = 9,10 + SetX = 9,69 + SetY = 9,-148 + SetVisible = 10,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 6,8 + SetX = 6,164 + SetY = 6,-226 + SetZ = 6,31 + SetFrame = 7,9 + SetX = 7,100 + SetX = 8,200 + SetY = 8,-118 + SetVisible = 9,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 7,8 + SetX = 7,194 + SetY = 7,-217 + SetZ = 7,32 + SetFrame = 8,9 + SetX = 8,109 + SetVisible = 9,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 7,8 + SetX = 7,150 + SetY = 7,-226 + SetZ = 7,33 + SetVisible = 8,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 7,8 + SetX = 7,209 + SetY = 7,-148 + SetZ = 7,34 + SetVisible = 8,false + + Play = 0,throw,80 + Play = 2,Twine,80 + Play = 3,Bow1,80 diff --git a/PBS/Animations/Example anims/Move/LEECHSEED.txt b/PBS/Animations/Example anims/Move/LEECHSEED.txt new file mode 100644 index 000000000..90e8a1620 --- /dev/null +++ b/PBS/Animations/Example anims/Move/LEECHSEED.txt @@ -0,0 +1,206 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,LEECHSEED] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 4,14 + SetY = 4,-29 + SetZ = 4,29 + SetX = 5,39 + SetY = 5,-118 + SetX = 6,69 + SetY = 6,-168 + SetVisible = 7,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 8,175 + SetY = 8,-207 + SetZ = 8,29 + SetVisible = 9,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 10,229 + SetY = 10,-148 + SetZ = 10,29 + SetVisible = 11,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 12,3 + SetX = 12,229 + SetY = 12,-148 + SetZ = 12,29 + SetFrame = 14,1 + SetFrame = 16,2 + SetFrame = 18,1 + SetFrame = 20,2 + SetVisible = 24,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 0,14 + SetY = 0,-29 + SetZ = 0,27 + SetX = 1,54 + SetY = 1,-128 + SetX = 2,94 + SetY = 2,-187 + SetX = 3,134 + SetY = 3,-217 + SetX = 4,164 + SetX = 5,189 + SetY = 5,-187 + SetX = 6,200 + SetY = 6,-148 + SetX = 7,119 + SetY = 7,-207 + SetFrame = 8,3 + SetX = 8,200 + SetY = 8,-148 + SetFrame = 10,1 + SetFrame = 12,2 + SetFrame = 14,1 + SetFrame = 16,2 + SetFrame = 20,1 + SetVisible = 24,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 2,14 + SetY = 2,-29 + SetZ = 2,28 + SetX = 3,44 + SetY = 3,-139 + SetX = 4,79 + SetY = 4,-217 + SetX = 5,109 + SetY = 5,-237 + SetX = 6,134 + SetY = 6,-226 + SetX = 7,159 + SetY = 7,-178 + SetX = 8,169 + SetY = 8,-148 + SetX = 9,204 + SetY = 9,-187 + SetFrame = 10,3 + SetX = 10,169 + SetY = 10,-148 + SetFrame = 12,1 + SetFrame = 14,2 + SetFrame = 16,1 + SetFrame = 18,2 + SetFrame = 20,1 + SetVisible = 24,false +#------------------------------- +[OppMove,LEECHSEED] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 2,0 + SetY = 2,-3 + SetZ = 2,28 + SetX = 3,25 + SetY = 3,37 + SetX = 4,60 + SetY = 4,56 + SetX = 5,100 + SetY = 5,37 + SetX = 6,155 + SetY = 6,-21 + SetX = 7,205 + SetY = 7,-120 + SetFrame = 8,3 + SetX = 8,200 + SetY = 8,-239 + SetFrame = 10,1 + SetFrame = 12,2 + SetFrame = 14,1 + SetFrame = 16,2 + SetVisible = 24,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 4,0 + SetY = 4,-3 + SetZ = 4,29 + SetX = 5,25 + SetY = 5,26 + SetX = 6,60 + SetY = 6,37 + SetVisible = 7,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 8,135 + SetY = 8,-71 + SetZ = 8,29 + SetVisible = 9,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 10,175 + SetY = 10,-239 + SetZ = 10,29 + SetVisible = 11,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 12,3 + SetX = 12,175 + SetY = 12,-239 + SetZ = 12,29 + SetFrame = 14,1 + SetFrame = 16,2 + SetFrame = 18,1 + SetFrame = 20,2 + SetVisible = 24,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetX = 0,0 + SetY = 0,-3 + SetZ = 0,27 + SetX = 1,25 + SetY = 1,26 + SetX = 2,55 + SetY = 2,37 + SetX = 3,100 + SetY = 3,17 + SetX = 4,135 + SetY = 4,-42 + SetX = 5,175 + SetY = 5,-140 + SetX = 6,200 + SetY = 6,-239 + SetX = 7,105 + SetY = 7,7 + SetX = 8,230 + SetY = 8,-239 + SetX = 9,160 + SetY = 9,-159 + SetFrame = 10,3 + SetX = 10,225 + SetY = 10,-239 + SetFrame = 12,1 + SetFrame = 14,2 + SetFrame = 16,1 + SetFrame = 18,2 + SetVisible = 24,false diff --git a/PBS/Animations/Example anims/Move/LEER.txt b/PBS/Animations/Example anims/Move/LEER.txt new file mode 100644 index 000000000..3ea45e950 --- /dev/null +++ b/PBS/Animations/Example anims/Move/LEER.txt @@ -0,0 +1,50 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,LEER] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leer + Focus = UserAndTarget + SetX = 0,14 + SetY = 0,-29 + SetZ = 0,27 + SetFrame = 1,1 + SetY = 1,-32 + SetFrame = 2,2 + SetX = 2,15 + SetY = 2,-35 + SetFrame = 3,3 + SetX = 3,12 + SetY = 3,-32 + SetFrame = 4,4 + SetX = 4,19 + SetY = 4,-35 + + Play = 0,Saint9 +#------------------------------- +[OppMove,LEER] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leer + Focus = User + SetX = 0,-39 + SetY = 0,-26 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + + Play = 0,Saint9 diff --git a/PBS/Animations/Example anims/Move/LICK.txt b/PBS/Animations/Example anims/Move/LICK.txt new file mode 100644 index 000000000..db69d7770 --- /dev/null +++ b/PBS/Animations/Example anims/Move/LICK.txt @@ -0,0 +1,25 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,LICK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/ghost1 + Focus = Target + SetFrame = 0,11 + SetX = 0,16 + SetY = 0,46 + SetZ = 0,27 + SetY = 1,22 + SetFrame = 2,12 + SetY = 2,-2 + SetY = 3,-26 + SetFrame = 4,13 + SetY = 4,-42 + SetY = 5,-50 + SetOpacity = 6,100 diff --git a/PBS/Animations/Example anims/Move/LIGHTSCREEN.txt b/PBS/Animations/Example anims/Move/LIGHTSCREEN.txt new file mode 100644 index 000000000..a26cc5494 --- /dev/null +++ b/PBS/Animations/Example anims/Move/LIGHTSCREEN.txt @@ -0,0 +1,95 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,LIGHTSCREEN] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 1,10 + SetX = 1,58 + SetY = 1,-39 + SetZ = 1,28 + SetFrame = 2,11 + SetX = 2,62 + SetY = 2,-41 + SetFrame = 3,6 + SetX = 3,50 + SetY = 3,-33 + SetY = 4,-34 + SetFrame = 5,11 + SetX = 5,-16 + SetY = 5,15 + SetFrame = 6,6 + SetX = 6,44 + SetY = 6,-35 + SetX = 7,-35 + SetY = 7,35 + SetX = 8,-37 + SetY = 8,49 + SetFrame = 9,11 + SetX = 9,7 + SetY = 9,-50 + SetFrame = 10,6 + SetX = 10,46 + SetY = 10,-39 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 4,10 + SetX = 4,-16 + SetY = 4,15 + SetZ = 4,29 + SetFrame = 5,6 + SetX = 5,28 + SetY = 5,-24 + SetX = 6,-27 + SetY = 6,29 + SetX = 7,46 + SetY = 7,-30 + SetX = 8,66 + SetY = 8,64 + SetX = 9,-45 + SetY = 9,48 + SetX = 10,-7 + SetY = 10,-38 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 7,6 + SetX = 7,56 + SetY = 7,64 + SetZ = 7,30 + SetX = 8,37 + SetY = 8,-24 + SetX = 9,61 + SetY = 9,66 + SetX = 10,-37 + SetY = 10,39 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 8,10 + SetX = 8,0 + SetY = 8,-54 + SetZ = 8,31 + SetFrame = 9,6 + SetX = 9,37 + SetY = 9,-31 + SetX = 10,64 + SetY = 10,66 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 1,15 + SetBlending = 1,1 + SetX = 1,6 + SetY = 1,-1 + SetZ = 1,27 + SetOpacity = 1,154 + + Play = 3,Flash2,100,170 + Play = 6,Flash2,100,180 diff --git a/PBS/Animations/Example anims/Move/LOCKON.txt b/PBS/Animations/Example anims/Move/LOCKON.txt new file mode 100644 index 000000000..041b9a4f6 --- /dev/null +++ b/PBS/Animations/Example anims/Move/LOCKON.txt @@ -0,0 +1,111 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,LOCKON] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/mixed + Focus = Target + SetFrame = 2,4 + SetX = 2,11 + SetY = 2,-1 + SetZ = 2,28 + SetZoomX = 2,200 + SetZoomY = 2,200 + SetX = 3,10 + SetY = 3,1 + SetVisible = 4,false + + Graphic = Examples/mixed + Focus = Target + SetFrame = 4,5 + SetX = 4,20 + SetY = 4,-8 + SetZ = 4,27 + SetZoomX = 4,200 + SetZoomY = 4,200 + SetX = 5,22 + SetY = 5,-4 + SetY = 6,-9 + SetVisible = 7,false + + Graphic = Examples/mixed + Focus = Target + SetFrame = 7,6 + SetX = 7,12 + SetY = 7,-7 + SetZ = 7,28 + SetZoomX = 7,200 + SetZoomY = 7,200 + SetVisible = 8,false + + Graphic = Examples/mixed + Focus = Target + SetFrame = 8,6 + SetX = 8,11 + SetY = 8,-7 + SetZ = 8,27 + SetZoomX = 8,200 + SetZoomY = 8,200 + SetX = 9,10 + SetY = 9,-8 + SetX = 10,9 + SetY = 10,-7 + SetY = 11,-5 + SetFrame = 12,7 + SetX = 12,10 + SetY = 12,-6 + SetX = 14,9 + SetY = 14,-8 + SetX = 15,13 + SetX = 16,9 + SetY = 16,-5 + SetFrame = 17,8 + SetX = 17,13 + SetY = 17,-8 + SetX = 18,11 + SetY = 18,-6 + SetX = 19,15 + SetY = 19,-4 + SetX = 20,11 + SetY = 20,-8 + SetFrame = 21,9 + SetX = 21,10 + SetY = 21,-10 + SetX = 22,8 + SetY = 22,-8 + SetX = 23,7 + SetY = 23,-6 + SetX = 24,11 + SetY = 24,-7 + SetX = 25,13 + SetX = 26,10 + SetY = 26,-8 + SetX = 27,11 + SetY = 27,-4 + SetOpacity = 27,236 + SetX = 28,9 + SetY = 28,-6 + SetOpacity = 28,239 + SetX = 29,12 + SetY = 29,-3 + SetOpacity = 29,168 + + Graphic = Examples/mixed + Focus = Target + SetFrame = 0,4 + SetX = 0,11 + SetY = 0,3 + SetZ = 0,27 + SetZoomX = 0,200 + SetZoomY = 0,200 + SetX = 1,13 + SetY = 1,-2 + SetVisible = 2,false + + Play = 0,Lock On,88 diff --git a/PBS/Animations/Example anims/Move/LOVELYKISS.txt b/PBS/Animations/Example anims/Move/LOVELYKISS.txt new file mode 100644 index 000000000..d73ef1ee6 --- /dev/null +++ b/PBS/Animations/Example anims/Move/LOVELYKISS.txt @@ -0,0 +1,118 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,LOVELYKISS] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poi hear mus + Focus = UserAndTarget + SetFrame = 0,4 + SetX = 0,208 + SetY = 0,-146 + SetZ = 0,27 + SetX = 1,199 + SetY = 1,-190 + SetX = 2,198 + SetY = 2,-175 + SetFrame = 3,5 + SetX = 3,174 + SetY = 3,-189 + SetX = 4,172 + SetY = 4,-184 + SetX = 5,180 + SetY = 5,-145 + SetX = 6,187 + SetX = 7,181 + SetY = 7,-140 + SetX = 8,175 + SetY = 8,-181 + SetX = 9,178 + SetY = 9,-184 + + Graphic = Examples/poi hear mus + Focus = UserAndTarget + SetFrame = 1,5 + SetX = 1,193 + SetY = 1,-203 + SetZ = 1,28 + SetFrame = 2,4 + SetX = 2,216 + SetY = 2,-162 + SetFrame = 3,5 + SetX = 3,187 + SetY = 3,-168 + SetY = 4,-145 + SetX = 5,194 + SetY = 5,-181 + SetX = 6,165 + SetY = 6,-171 + SetX = 7,159 + SetY = 7,-170 + SetX = 8,190 + SetY = 8,-196 + SetFrame = 9,6 + SetX = 9,185 + SetY = 9,-262 + + Graphic = Examples/poi hear mus + Focus = UserAndTarget + SetFrame = 1,3 + SetX = 1,217 + SetY = 1,-132 + SetZ = 1,29 + SetFrame = 2,5 + SetX = 2,190 + SetY = 2,-209 + SetX = 3,182 + SetY = 3,-217 + SetX = 4,183 + SetY = 4,-231 + SetX = 5,172 + SetY = 5,-209 + SetX = 6,184 + SetY = 6,-204 + SetX = 7,186 + SetY = 7,-198 + SetX = 8,178 + SetY = 8,-226 + SetX = 9,189 + SetY = 9,-215 + + Graphic = Examples/poi hear mus + Focus = UserAndTarget + SetFrame = 5,5 + SetX = 5,189 + SetY = 5,-240 + SetZ = 5,30 + SetX = 6,163 + SetY = 6,-225 + SetX = 7,159 + SetX = 8,157 + SetY = 8,-235 + SetX = 9,187 + SetY = 9,-237 + + Graphic = Examples/poi hear mus + Focus = UserAndTarget + SetFrame = 6,5 + SetX = 6,180 + SetY = 6,-262 + SetZ = 6,31 + SetX = 7,177 + SetY = 7,-256 + SetVisible = 8,false + + Graphic = Examples/poi hear mus + Focus = UserAndTarget + SetFrame = 7,5 + SetX = 7,158 + SetY = 7,-257 + SetZ = 7,32 + SetVisible = 8,false + + Play = 0,Lovely Kiss,85 diff --git a/PBS/Animations/Example anims/Move/LOWKICK.txt b/PBS/Animations/Example anims/Move/LOWKICK.txt new file mode 100644 index 000000000..032758c3a --- /dev/null +++ b/PBS/Animations/Example anims/Move/LOWKICK.txt @@ -0,0 +1,32 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,LOWKICK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal1 + Focus = Target + SetFrame = 0,7 + SetX = 0,96 + SetY = 0,62 + SetZ = 0,27 + SetZoomX = 0,75 + SetZoomY = 0,75 + SetOpacity = 0,100 + SetX = 1,40 + SetY = 1,38 + SetOpacity = 1,255 + SetX = 2,16 + SetY = 2,22 + SetX = 3,8 + SetY = 3,14 + SetZoomX = 4,100 + SetZoomY = 4,100 + SetOpacity = 5,100 + + Play = 2,Blow1,80 diff --git a/PBS/Animations/Example anims/Move/LUCKYCHANT.txt b/PBS/Animations/Example anims/Move/LUCKYCHANT.txt new file mode 100644 index 000000000..96770684e --- /dev/null +++ b/PBS/Animations/Example anims/Move/LUCKYCHANT.txt @@ -0,0 +1,321 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,LUCKYCHANT] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 0,14 + SetX = 0,-9 + SetY = 0,4 + SetZ = 0,27 + SetOpacity = 0,220 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 0,8 + SetX = 0,-48 + SetY = 0,-9 + SetZ = 0,28 + SetX = 1,42 + SetY = 1,55 + SetX = 2,-32 + SetY = 2,51 + SetX = 3,-22 + SetY = 3,39 + SetX = 4,-33 + SetY = 4,37 + SetX = 5,-39 + SetY = 5,24 + SetX = 6,-29 + SetY = 6,-11 + SetX = 7,-26 + SetY = 7,-14 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 0,8 + SetX = 0,-48 + SetY = 0,8 + SetZ = 0,29 + SetX = 1,-43 + SetY = 1,34 + SetX = 2,-38 + SetY = 2,38 + SetX = 3,-12 + SetY = 3,48 + SetX = 4,-19 + SetY = 4,38 + SetX = 5,-28 + SetY = 5,31 + SetX = 6,-18 + SetY = 6,-21 + SetX = 7,-14 + SetY = 7,-28 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 1,8 + SetX = 1,-41 + SetY = 1,47 + SetZ = 1,30 + SetX = 2,-26 + SetY = 2,33 + SetX = 3,-29 + SetY = 3,48 + SetX = 4,-28 + SetY = 4,26 + SetX = 5,-22 + SetY = 5,44 + SetX = 6,-37 + SetY = 6,2 + SetX = 7,-1 + SetY = 7,-32 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 1,8 + SetX = 1,-23 + SetY = 1,54 + SetZ = 1,31 + SetX = 2,33 + SetY = 2,39 + SetX = 3,-38 + SetY = 3,31 + SetX = 4,-7 + SetY = 4,50 + SetX = 5,-32 + SetY = 5,12 + SetY = 6,24 + SetX = 7,10 + SetY = 7,-32 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 2,8 + SetX = 2,48 + SetY = 2,33 + SetZ = 2,32 + SetX = 3,-33 + SetY = 3,17 + SetX = 4,8 + SetY = 4,56 + SetX = 5,-40 + SetY = 5,3 + SetX = 6,-18 + SetY = 6,37 + SetX = 7,-12 + SetY = 7,-43 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 2,8 + SetX = 2,39 + SetY = 2,48 + SetZ = 2,33 + SetX = 3,-45 + SetY = 3,2 + SetX = 4,13 + SetY = 4,50 + SetX = 5,-10 + SetY = 5,40 + SetX = 6,-5 + SetY = 6,49 + SetX = 7,-41 + SetY = 7,-1 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 2,8 + SetX = 2,22 + SetY = 2,49 + SetZ = 2,34 + SetX = 3,41 + SetY = 3,37 + SetX = 4,28 + SetY = 4,47 + SetX = 5,-4 + SetY = 5,54 + SetX = 6,9 + SetY = 6,58 + SetX = 7,-30 + SetY = 7,8 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 2,8 + SetX = 2,43 + SetY = 2,15 + SetZ = 2,35 + SetX = 3,51 + SetY = 3,34 + SetX = 4,39 + SetY = 4,47 + SetX = 5,7 + SetY = 5,49 + SetX = 6,27 + SetY = 6,53 + SetX = 7,-38 + SetY = 7,29 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 2,8 + SetX = 2,-26 + SetY = 2,13 + SetZ = 2,36 + SetX = 3,48 + SetY = 3,20 + SetX = 4,45 + SetY = 4,33 + SetX = 5,23 + SetY = 5,54 + SetX = 6,44 + SetY = 6,42 + SetX = 7,-19 + SetY = 7,31 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 3,8 + SetX = 3,55 + SetY = 3,9 + SetZ = 3,37 + SetY = 4,30 + SetX = 5,31 + SetY = 5,43 + SetX = 6,57 + SetY = 6,23 + SetX = 7,-18 + SetY = 7,49 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 3,8 + SetX = 3,-31 + SetY = 3,0 + SetZ = 3,38 + SetX = 4,51 + SetY = 4,17 + SetX = 5,44 + SetY = 5,38 + SetX = 6,59 + SetY = 6,5 + SetX = 7,1 + SetY = 7,43 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 3,8 + SetX = 3,45 + SetY = 3,-2 + SetZ = 3,39 + SetX = 4,60 + SetY = 4,6 + SetX = 5,55 + SetY = 5,26 + SetX = 6,-53 + SetY = 6,14 + SetX = 7,17 + SetY = 7,59 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 4,8 + SetX = 4,43 + SetY = 4,-5 + SetZ = 4,40 + SetX = 5,50 + SetY = 5,6 + SetX = 6,-60 + SetY = 6,29 + SetX = 7,33 + SetY = 7,41 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 4,8 + SetX = 4,-39 + SetY = 4,10 + SetZ = 4,41 + SetVisible = 5,false + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 6,8 + SetX = 6,-58 + SetY = 6,-3 + SetZ = 6,41 + SetX = 7,49 + SetY = 7,22 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 6,8 + SetX = 6,-44 + SetY = 6,-20 + SetZ = 6,42 + SetX = 7,62 + SetY = 7,9 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 7,8 + SetX = 7,47 + SetY = 7,-2 + SetZ = 7,43 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 7,8 + SetX = 7,58 + SetY = 7,-14 + SetZ = 7,44 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 7,8 + SetX = 7,36 + SetY = 7,-32 + SetZ = 7,45 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 7,8 + SetX = 7,23 + SetY = 7,-41 + SetZ = 7,46 + SetOpacity = 9,128 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 7,8 + SetX = 7,29 + SetY = 7,-28 + SetZ = 7,47 + SetOpacity = 9,128 + + Play = 0,Lucky Chant diff --git a/PBS/Animations/Example anims/Move/MAGICCOAT.txt b/PBS/Animations/Example anims/Move/MAGICCOAT.txt new file mode 100644 index 000000000..fdadd7da7 --- /dev/null +++ b/PBS/Animations/Example anims/Move/MAGICCOAT.txt @@ -0,0 +1,167 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,MAGICCOAT] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 0,15 + SetX = 0,1 + SetY = 0,2 + SetZ = 0,27 + SetOpacity = 0,37 + SetOpacity = 1,74 + SetOpacity = 9,72 + SetOpacity = 10,37 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 2,7 + SetX = 2,4 + SetY = 2,-69 + SetZ = 2,28 + SetX = 3,-12 + SetY = 3,65 + SetX = 4,62 + SetY = 4,53 + SetX = 5,-49 + SetY = 5,2 + SetX = 6,-33 + SetY = 6,52 + SetFrame = 7,8 + SetX = 7,1 + SetY = 7,51 + SetX = 8,8 + SetY = 8,55 + SetX = 9,-32 + SetY = 9,-7 + SetX = 10,6 + SetY = 10,50 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 2,7 + SetX = 2,19 + SetY = 2,-50 + SetZ = 2,29 + SetX = 3,-31 + SetY = 3,3 + SetX = 4,69 + SetY = 4,41 + SetX = 5,-38 + SetY = 5,9 + SetX = 6,-25 + SetY = 6,47 + SetFrame = 7,8 + SetX = 7,18 + SetY = 7,55 + SetX = 8,-5 + SetY = 8,58 + SetX = 9,-40 + SetY = 9,4 + SetFrame = 10,7 + SetX = 10,63 + SetY = 10,-41 + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 2,7 + SetX = 2,44 + SetY = 2,63 + SetZ = 2,30 + SetX = 3,-44 + SetY = 3,-1 + SetY = 4,73 + SetX = 5,59 + SetY = 5,-8 + SetX = 6,12 + SetY = 6,-44 + SetFrame = 7,8 + SetX = 7,13 + SetY = 7,-27 + SetFrame = 8,7 + SetX = 8,50 + SetY = 8,-32 + SetFrame = 9,8 + SetX = 9,61 + SetY = 9,14 + SetVisible = 10,false + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 2,7 + SetX = 2,21 + SetY = 2,68 + SetZ = 2,31 + SetX = 3,33 + SetY = 3,-42 + SetX = 4,-55 + SetY = 4,66 + SetX = 5,59 + SetY = 5,8 + SetX = 6,25 + SetY = 6,-37 + SetFrame = 7,8 + SetX = 7,2 + SetY = 7,-38 + SetFrame = 8,7 + SetX = 8,52 + SetY = 8,-17 + SetVisible = 9,false + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 2,7 + SetX = 2,-47 + SetY = 2,51 + SetZ = 2,32 + SetX = 3,46 + SetY = 3,-25 + SetVisible = 4,false + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 2,7 + SetX = 2,-47 + SetY = 2,24 + SetZ = 2,33 + SetVisible = 3,false + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 6,7 + SetX = 6,57 + SetY = 6,55 + SetZ = 6,32 + SetVisible = 7,false + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 6,7 + SetX = 6,69 + SetY = 6,64 + SetZ = 6,33 + SetVisible = 7,false + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 8,7 + SetX = 8,-27 + SetY = 8,-19 + SetZ = 8,32 + SetVisible = 9,false + + Graphic = Examples/anim sheet + Focus = User + SetFrame = 8,7 + SetX = 8,-15 + SetY = 8,-7 + SetZ = 8,33 + SetVisible = 9,false + + Play = 0,Sword2,80 + Play = 4,Sword2,80 diff --git a/PBS/Animations/Example anims/Move/MEANLOOK.txt b/PBS/Animations/Example anims/Move/MEANLOOK.txt new file mode 100644 index 000000000..ea658f769 --- /dev/null +++ b/PBS/Animations/Example anims/Move/MEANLOOK.txt @@ -0,0 +1,28 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,MEANLOOK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/face and eye + Focus = Target + SetFrame = 0,10 + SetX = 0,0 + SetY = 0,-4 + SetZ = 0,27 + SetFrame = 1,11 + SetY = 1,0 + SetFrame = 2,12 + SetY = 2,-2 + SetFrame = 3,13 + SetX = 3,1 + SetY = 3,-1 + SetFrame = 4,14 + SetX = 4,0 + SetY = 4,-3 + SetY = 5,-2 diff --git a/PBS/Animations/Example anims/Move/MEGADRAIN.txt b/PBS/Animations/Example anims/Move/MEGADRAIN.txt new file mode 100644 index 000000000..35acf3c6e --- /dev/null +++ b/PBS/Animations/Example anims/Move/MEGADRAIN.txt @@ -0,0 +1,353 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,MEGADRAIN] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 0,8 + SetX = 0,169 + SetY = 0,-207 + SetZ = 0,27 + SetX = 1,129 + SetY = 1,-196 + SetX = 2,64 + SetY = 2,-157 + SetX = 3,25 + SetY = 3,-98 + SetX = 4,0 + SetY = 4,-29 + SetFrame = 5,9 + SetX = 5,4 + SetFrame = 6,10 + SetFrame = 7,11 + SetFrame = 8,12 + SetFrame = 9,13 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 1,8 + SetX = 1,209 + SetY = 1,-168 + SetZ = 1,28 + SetX = 2,179 + SetY = 2,-118 + SetX = 3,139 + SetY = 3,-59 + SetX = 4,69 + SetY = 4,-10 + SetX = 5,14 + SetY = 5,-59 + SetX = 6,34 + SetY = 6,-79 + SetX = 7,25 + SetY = 7,-40 + SetX = 9,29 + SetY = 9,-20 + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 2,8 + SetX = 2,164 + SetY = 2,-187 + SetZ = 2,29 + SetX = 3,104 + SetY = 3,-139 + SetX = 4,44 + SetY = 4,-89 + SetX = 5,59 + SetY = 5,-50 + SetX = 6,114 + SetY = 6,-79 + SetX = 7,54 + SetY = 7,-50 + SetX = 8,0 + SetY = 8,-79 + SetVisible = 9,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 3,8 + SetX = 3,189 + SetY = 3,-157 + SetZ = 3,30 + SetX = 4,150 + SetY = 4,-109 + SetX = 5,100 + SetY = 5,-139 + SetY = 6,-196 + SetX = 7,34 + SetY = 7,-139 + SetX = 8,79 + SetY = 8,-50 + SetVisible = 9,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 3,8 + SetX = 3,189 + SetY = 3,-207 + SetZ = 3,31 + SetX = 4,139 + SetY = 4,-178 + SetX = 5,164 + SetY = 5,-139 + SetX = 6,189 + SetY = 6,-207 + SetX = 7,154 + SetY = 7,-139 + SetVisible = 8,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 4,8 + SetX = 4,194 + SetY = 4,-187 + SetZ = 4,32 + SetX = 5,175 + SetY = 5,-217 + SetX = 6,100 + SetY = 6,-109 + SetX = 7,44 + SetY = 7,-79 + SetVisible = 8,false + + Graphic = Examples/rockice + Focus = UserAndTarget + SetFrame = 4,8 + SetX = 4,189 + SetY = 4,-217 + SetZ = 4,33 + SetX = 5,144 + SetY = 5,-168 + SetVisible = 6,false + + Play = 0,Absorb2,80 + Play = 2,Absorb2,80 + Play = 5,Absorb2,80 + Play = 7,Absorb2,80 +#------------------------------- +[OppMove,MEGADRAIN] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 0,11 + SetX = 0,200 + SetY = 0,-192 + SetZ = 0,27 + SetX = 1,183 + SetY = 1,-214 + SetFrame = 2,12 + SetX = 2,127 + SetY = 2,-121 + SetX = 3,140 + SetY = 3,-42 + SetX = 4,185 + SetY = 4,-110 + SetX = 5,9 + SetY = 5,-6 + SetVisible = 6,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 1,11 + SetX = 1,199 + SetY = 1,-220 + SetZ = 1,28 + SetFrame = 2,12 + SetX = 2,150 + SetY = 2,-154 + SetX = 3,70 + SetY = 3,-150 + SetX = 4,115 + SetY = 4,-189 + SetX = 5,-8 + SetY = 5,-4 + SetVisible = 6,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 2,11 + SetX = 2,199 + SetY = 2,-190 + SetZ = 2,29 + SetFrame = 3,12 + SetX = 3,135 + SetY = 3,-160 + SetX = 4,100 + SetY = 4,-81 + SetX = 5,31 + SetY = 5,-71 + SetX = 6,-7 + SetY = 6,-3 + SetX = 7,-7 + SetY = 7,-1 + SetVisible = 8,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 3,11 + SetX = 3,196 + SetY = 3,-200 + SetZ = 3,30 + SetFrame = 4,12 + SetX = 4,27 + SetY = 4,-131 + SetX = 5,70 + SetY = 5,-150 + SetX = 6,0 + SetY = 6,-117 + SetX = 7,-4 + SetY = 7,-73 + SetX = 8,-11 + SetY = 8,-4 + SetVisible = 9,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 4,12 + SetX = 4,60 + SetY = 4,-1 + SetZ = 4,31 + SetX = 5,105 + SetY = 5,-31 + SetX = 6,46 + SetY = 6,-26 + SetVisible = 7,false + + Graphic = Examples/leech-seed + Focus = UserAndTarget + SetFrame = 7,12 + SetX = 7,21 + SetY = 7,-3 + SetZ = 7,27 + SetVisible = 8,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 9,10 + SetX = 9,-8 + SetY = 9,-1 + SetZ = 9,27 + SetFrame = 10,8 + SetX = 10,-12 + SetY = 10,0 + SetFrame = 11,7 + SetX = 11,-5 + SetFrame = 12,6 + SetX = 12,-7 + SetY = 12,-4 + SetFrame = 13,5 + SetX = 13,-8 + SetFrame = 14,10 + SetX = 14,-13 + SetY = 14,-6 + SetX = 15,-8 + SetY = 15,-4 + SetX = 16,30 + SetY = 16,21 + SetX = 17,-8 + SetY = 17,60 + SetX = 18,15 + SetY = 18,-18 + SetX = 19,-18 + SetY = 19,25 + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 10,10 + SetX = 10,11 + SetY = 10,26 + SetZ = 10,28 + SetFrame = 11,8 + SetX = 11,25 + SetFrame = 12,7 + SetX = 12,29 + SetY = 12,53 + SetFrame = 13,6 + SetX = 13,31 + SetY = 13,59 + SetFrame = 14,5 + SetX = 14,25 + SetY = 14,56 + SetFrame = 15,10 + SetX = 15,28 + SetY = 15,31 + SetX = 16,-2 + SetY = 16,64 + SetX = 17,21 + SetY = 17,-17 + SetX = 18,-27 + SetY = 18,31 + SetVisible = 19,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 11,10 + SetX = 11,-11 + SetY = 11,37 + SetZ = 11,29 + SetFrame = 12,8 + SetX = 12,-10 + SetY = 12,62 + SetFrame = 13,7 + SetX = 13,-13 + SetY = 13,64 + SetFrame = 14,6 + SetX = 14,-23 + SetY = 14,62 + SetFrame = 15,5 + SetX = 15,3 + SetY = 15,23 + SetX = 16,16 + SetY = 16,-17 + SetX = 17,-25 + SetY = 17,26 + SetVisible = 18,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 12,10 + SetX = 12,14 + SetY = 12,-48 + SetZ = 12,30 + SetFrame = 13,8 + SetX = 13,23 + SetY = 13,-57 + SetFrame = 14,7 + SetX = 14,14 + SetY = 14,-42 + SetFrame = 15,6 + SetX = 15,21 + SetY = 15,-26 + SetX = 16,-24 + SetY = 16,28 + SetVisible = 17,false + + Graphic = Examples/leech-seed + Focus = User + SetFrame = 13,10 + SetX = 13,-11 + SetY = 13,14 + SetZ = 13,31 + SetFrame = 14,8 + SetX = 14,-13 + SetFrame = 15,7 + SetX = 15,-17 + SetY = 15,39 + SetVisible = 16,false + + Play = 0,Present - Heal diff --git a/PBS/Animations/Example anims/Move/MEGAHORN.txt b/PBS/Animations/Example anims/Move/MEGAHORN.txt new file mode 100644 index 000000000..10c313535 --- /dev/null +++ b/PBS/Animations/Example anims/Move/MEGAHORN.txt @@ -0,0 +1,128 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,MEGAHORN] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 0,44 + SetY = 0,-59 + SetZ = 0,27 + SetZoomX = 0,150 + SetZoomY = 0,150 + SetFrame = 5,14 + SetX = 5,-10 + SetY = 5,-40 + SetZoomX = 5,25 + SetZoomY = 5,25 + SetFrame = 6,0 + SetX = 6,44 + SetY = 6,-59 + SetZoomX = 6,150 + SetZoomY = 6,150 + SetX = 7,94 + SetY = 7,-109 + SetX = 8,144 + SetY = 8,-148 + SetX = 9,164 + SetY = 9,-178 + SetVisible = 11,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 0,14 + SetX = 0,-60 + SetY = 0,-168 + SetZ = 0,28 + SetZoomX = 0,25 + SetZoomY = 0,25 + SetX = 1,-30 + SetY = 1,-109 + SetX = 2,9 + SetY = 2,-50 + SetX = 3,19 + SetY = 3,-89 + SetX = 4,64 + SetY = 4,-109 + SetX = 5,50 + SetY = 5,18 + SetVisible = 6,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 0,14 + SetX = 0,114 + SetY = 0,28 + SetZ = 0,29 + SetZoomX = 0,25 + SetZoomY = 0,25 + SetX = 1,44 + SetY = 1,-118 + SetX = 2,39 + SetY = 2,-70 + SetX = 3,84 + SetY = 3,-168 + SetX = 4,-30 + SetY = 4,-79 + SetFrame = 5,0 + SetX = 5,44 + SetY = 5,-59 + SetZoomX = 5,150 + SetZoomY = 5,150 + SetVisible = 6,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 0,14 + SetX = 0,59 + SetY = 0,-187 + SetZ = 0,30 + SetZoomX = 0,25 + SetZoomY = 0,25 + SetX = 1,75 + SetY = 1,0 + SetX = 2,44 + SetY = 2,-29 + SetVisible = 3,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 2,14 + SetX = 2,-5 + SetY = 2,-178 + SetZ = 2,31 + SetZoomX = 2,25 + SetZoomY = 2,25 + SetVisible = 3,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 4,14 + SetX = 4,64 + SetY = 4,39 + SetZ = 4,30 + SetZoomX = 4,25 + SetZoomY = 4,25 + SetVisible = 5,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 9,14 + SetX = 9,169 + SetY = 9,-196 + SetZ = 9,28 + SetOpacity = 9,100 + SetZoomX = 10,125 + SetZoomY = 10,125 + SetOpacity = 10,50 + SetVisible = 11,false + + Play = 0,Up,80 + Play = 4,throw,80 + Play = 7,Slash10,80 diff --git a/PBS/Animations/Example anims/Move/MEGAKICK.txt b/PBS/Animations/Example anims/Move/MEGAKICK.txt new file mode 100644 index 000000000..10858a323 --- /dev/null +++ b/PBS/Animations/Example anims/Move/MEGAKICK.txt @@ -0,0 +1,41 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,MEGAKICK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 3,0 + SetY = 3,14 + SetZ = 3,28 + SetVisible = 4,false + + Graphic = Examples/003-Attack01 + Focus = Target + SetFrame = 0,9 + SetX = 0,-8 + SetY = 0,-10 + SetZ = 0,27 + SetY = 1,-2 + SetAngle = 1,45 + SetX = 2,0 + SetY = 2,14 + SetAngle = 2,90 + SetAngle = 3,0 + SetOpacity = 3,100 + SetFrame = 4,0 + SetOpacity = 4,255 + SetFrame = 5,1 + SetFrame = 7,2 + SetZoomX = 8,120 + SetZoomY = 8,120 + SetOpacity = 9,100 + + Play = 0,Wind7,80 + Play = 3,Blow5,80 diff --git a/PBS/Animations/Example anims/Move/MEGAPUNCH.txt b/PBS/Animations/Example anims/Move/MEGAPUNCH.txt new file mode 100644 index 000000000..12ffb87c8 --- /dev/null +++ b/PBS/Animations/Example anims/Move/MEGAPUNCH.txt @@ -0,0 +1,65 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,MEGAPUNCH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/punches + Focus = Target + SetX = 2,12 + SetY = 2,8 + SetZ = 2,28 + SetX = 3,13 + SetX = 4,11 + SetY = 4,5 + SetX = 6,16 + SetX = 7,13 + SetY = 7,10 + SetX = 8,11 + SetY = 8,11 + SetX = 9,15 + SetY = 9,5 + SetOpacity = 9,200 + + Graphic = Examples/punches + Focus = Target + SetX = 0,0 + SetY = 0,-1 + SetZ = 0,27 + SetX = 1,1 + SetY = 1,-3 + SetFrame = 2,7 + SetX = 2,0 + SetY = 2,1 + SetZoomX = 2,50 + SetZoomY = 2,50 + SetX = 3,2 + SetY = 3,3 + SetZoomX = 3,70 + SetZoomY = 3,70 + SetX = 4,1 + SetY = 4,1 + SetZoomX = 4,80 + SetZoomY = 4,80 + SetX = 6,2 + SetY = 6,-4 + SetZoomX = 6,100 + SetZoomY = 6,100 + SetX = 7,1 + SetY = 7,-2 + SetZoomX = 7,105 + SetZoomY = 7,105 + SetX = 8,-1 + SetZoomX = 8,120 + SetZoomY = 8,120 + SetX = 9,1 + SetY = 9,-5 + SetZoomX = 9,140 + SetZoomY = 9,140 + + Play = 0,Mega Punch,100,105 diff --git a/PBS/Animations/Example anims/Move/METALCLAW.txt b/PBS/Animations/Example anims/Move/METALCLAW.txt new file mode 100644 index 000000000..6ec3334c6 --- /dev/null +++ b/PBS/Animations/Example anims/Move/METALCLAW.txt @@ -0,0 +1,39 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,METALCLAW] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/dragon claw + Focus = UserAndTarget + SetFrame = 0,1 + SetX = 0,202 + SetY = 0,-240 + SetZ = 0,27 + SetFrame = 1,2 + SetX = 1,206 + SetY = 1,-235 + SetFrame = 2,3 + SetX = 2,214 + SetY = 2,-226 + SetFrame = 3,4 + SetX = 3,212 + SetY = 3,-196 + SetFrame = 4,5 + SetX = 4,210 + SetY = 4,-207 + SetFrame = 5,6 + SetY = 5,-200 + SetFrame = 6,7 + SetX = 6,206 + SetFrame = 7,8 + SetX = 7,200 + SetVisible = 8,false + + Play = 0,metal,100,110 + Play = 4,metal diff --git a/PBS/Animations/Example anims/Move/METEORMASH.txt b/PBS/Animations/Example anims/Move/METEORMASH.txt new file mode 100644 index 000000000..bc7ee7c0c --- /dev/null +++ b/PBS/Animations/Example anims/Move/METEORMASH.txt @@ -0,0 +1,162 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,METEORMASH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 0,2 + SetX = 0,204 + SetY = 0,-196 + SetZ = 0,27 + SetX = 1,208 + SetY = 1,-193 + SetX = 2,204 + SetY = 2,-196 + SetX = 6,208 + SetY = 6,-193 + SetX = 7,204 + SetY = 7,-196 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 1,15 + SetX = 1,203 + SetY = 1,-115 + SetZ = 1,28 + SetFrame = 2,14 + SetX = 2,201 + SetY = 2,-114 + SetX = 3,200 + SetY = 3,-115 + SetX = 4,182 + SetY = 4,-257 + SetX = 5,202 + SetY = 5,-140 + SetFrame = 6,15 + SetX = 6,238 + SetY = 6,-170 + SetFrame = 7,14 + SetX = 7,187 + SetY = 7,-126 + SetX = 8,168 + SetY = 8,-290 + SetFrame = 9,15 + SetX = 9,225 + SetY = 9,-129 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 1,15 + SetX = 1,165 + SetY = 1,-168 + SetZ = 1,29 + SetFrame = 2,14 + SetX = 2,160 + SetY = 2,-184 + SetY = 3,-189 + SetFrame = 4,15 + SetX = 4,227 + SetY = 4,-128 + SetFrame = 5,14 + SetX = 5,223 + SetY = 5,-148 + SetFrame = 6,15 + SetX = 6,178 + SetY = 6,-129 + SetFrame = 7,14 + SetX = 7,216 + SetY = 7,-259 + SetX = 8,161 + SetY = 8,-220 + SetFrame = 9,15 + SetX = 9,182 + SetY = 9,-117 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 2,15 + SetX = 2,227 + SetY = 2,-254 + SetZ = 2,30 + SetFrame = 3,14 + SetX = 3,221 + SetY = 3,-228 + SetFrame = 4,15 + SetX = 4,228 + SetY = 4,-234 + SetFrame = 5,14 + SetX = 5,219 + SetY = 5,-242 + SetX = 6,171 + SetY = 6,-232 + SetX = 7,233 + SetY = 7,-176 + SetFrame = 8,15 + SetX = 8,221 + SetY = 8,-239 + SetFrame = 9,14 + SetX = 9,214 + SetY = 9,-260 + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 2,15 + SetX = 2,235 + SetY = 2,-145 + SetZ = 2,31 + SetFrame = 3,14 + SetY = 3,-137 + SetFrame = 4,15 + SetX = 4,201 + SetY = 4,-132 + SetX = 5,243 + SetY = 5,-190 + SetFrame = 6,14 + SetX = 6,178 + SetY = 6,-189 + SetFrame = 7,15 + SetX = 7,170 + SetY = 7,-268 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 3,15 + SetX = 3,188 + SetY = 3,-243 + SetZ = 3,32 + SetVisible = 4,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 5,15 + SetX = 5,166 + SetY = 5,-185 + SetZ = 5,32 + SetFrame = 6,14 + SetX = 6,232 + SetY = 6,-200 + SetFrame = 7,15 + SetX = 7,161 + SetY = 7,-217 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = UserAndTarget + SetFrame = 5,15 + SetX = 5,189 + SetY = 5,-245 + SetZ = 5,33 + SetFrame = 6,14 + SetX = 6,200 + SetY = 6,-250 + SetVisible = 7,false + + Play = 0,superdamage diff --git a/PBS/Animations/Example anims/Move/METRONOME.txt b/PBS/Animations/Example anims/Move/METRONOME.txt new file mode 100644 index 000000000..ac25c1ed0 --- /dev/null +++ b/PBS/Animations/Example anims/Move/METRONOME.txt @@ -0,0 +1,90 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,METRONOME] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/finger spoon + Focus = User + SetX = 0,-210 + SetY = 0,126 + SetZ = 0,27 + SetZoomX = 0,200 + SetZoomY = 0,200 + SetX = 1,-197 + SetY = 1,137 + SetX = 2,-184 + SetX = 3,-170 + SetY = 3,138 + SetX = 4,-182 + SetY = 4,132 + SetX = 5,-205 + SetX = 6,-222 + SetY = 6,137 + SetX = 7,-206 + SetY = 7,131 + SetX = 8,-187 + SetY = 8,140 + SetX = 9,-171 + SetY = 9,142 + SetX = 10,-162 + SetY = 10,130 + SetX = 11,-185 + SetY = 11,129 + SetX = 12,-200 + SetY = 12,134 + SetX = 13,-208 + SetY = 13,142 + SetX = 14,-201 + SetY = 14,149 + + Play = 0,Metronome,94 +#------------------------------- +[OppMove,METRONOME] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/finger spoon + Focus = User + SetFrame = 0,1 + SetX = 0,-2 + SetY = 0,4 + SetZ = 0,27 + SetZoomX = 0,200 + SetZoomY = 0,200 + SetX = 1,-9 + SetY = 1,5 + SetX = 2,-18 + SetY = 2,4 + SetX = 3,-24 + SetY = 3,8 + SetX = 4,-11 + SetY = 4,11 + SetX = 5,7 + SetY = 5,14 + SetX = 6,22 + SetY = 6,10 + SetX = 7,15 + SetY = 7,11 + SetX = 8,-7 + SetY = 8,12 + SetX = 9,-16 + SetY = 9,14 + SetX = 10,-2 + SetY = 10,16 + SetX = 11,14 + SetY = 11,19 + SetX = 12,25 + SetY = 12,15 + SetX = 13,19 + SetY = 13,18 + SetX = 14,8 + SetY = 14,17 + + Play = 0,Metronome,80 diff --git a/PBS/Animations/Example anims/Move/MIST.txt b/PBS/Animations/Example anims/Move/MIST.txt new file mode 100644 index 000000000..f72d36316 --- /dev/null +++ b/PBS/Animations/Example anims/Move/MIST.txt @@ -0,0 +1,60 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,MIST] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = User + SetFrame = 4,6 + SetX = 4,30 + SetY = 4,5 + SetZ = 4,28 + SetX = 5,9 + SetY = 5,-30 + SetX = 6,38 + SetY = 6,17 + SetVisible = 7,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 5,6 + SetX = 5,42 + SetY = 5,20 + SetZ = 5,29 + SetX = 6,-3 + SetY = 6,-32 + SetVisible = 7,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 0,6 + SetX = 0,1 + SetY = 0,3 + SetZ = 0,27 + SetOpacity = 0,144 + SetX = 1,8 + SetY = 1,0 + SetOpacity = 1,174 + SetX = 2,1 + SetY = 2,4 + SetOpacity = 2,209 + SetX = 3,-2 + SetY = 3,3 + SetOpacity = 3,255 + SetX = 4,-22 + SetY = 4,4 + SetX = 5,-25 + SetY = 5,7 + SetX = 6,-33 + SetY = 6,23 + SetX = 7,4 + SetY = 7,0 + SetX = 8,8 + SetY = 8,-3 + SetOpacity = 8,200 + + Play = 0,Smokescreen,80 diff --git a/PBS/Animations/Example anims/Move/MISTBALL.txt b/PBS/Animations/Example anims/Move/MISTBALL.txt new file mode 100644 index 000000000..80e223951 --- /dev/null +++ b/PBS/Animations/Example anims/Move/MISTBALL.txt @@ -0,0 +1,64 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,MISTBALL] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetX = 3,201 + SetY = 3,-181 + SetZ = 3,28 + SetOpacity = 3,200 + SetX = 4,203 + SetY = 4,-178 + SetY = 5,-179 + SetOpacity = 5,143 + SetX = 6,205 + SetY = 6,-178 + SetOpacity = 6,69 + SetFrame = 7,5 + SetX = 7,203 + SetY = 7,-192 + SetOpacity = 7,144 + SetVisible = 8,false + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetX = 0,200 + SetY = 0,-196 + SetZ = 0,27 + SetOpacity = 0,200 + SetX = 1,199 + SetY = 1,-195 + SetX = 2,198 + SetY = 2,-193 + SetFrame = 3,5 + SetX = 3,200 + SetY = 3,-198 + SetOpacity = 3,255 + SetX = 4,201 + SetY = 4,-200 + SetZoomX = 4,110 + SetZoomY = 4,110 + SetX = 5,200 + SetY = 5,-198 + SetZoomX = 5,100 + SetZoomY = 5,100 + SetX = 6,202 + SetY = 6,-195 + SetFrame = 7,6 + SetX = 7,200 + SetY = 7,-196 + SetX = 8,195 + SetY = 8,-206 + SetX = 9,194 + SetY = 9,-192 + SetVisible = 12,false + + Play = 5,Wring Out,80 diff --git a/PBS/Animations/Example anims/Move/MOONLIGHT.txt b/PBS/Animations/Example anims/Move/MOONLIGHT.txt new file mode 100644 index 000000000..74eb377bb --- /dev/null +++ b/PBS/Animations/Example anims/Move/MOONLIGHT.txt @@ -0,0 +1,34 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,MOONLIGHT] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal2 + Focus = User + SetFrame = 0,12 + SetX = 0,0 + SetY = 0,110 + SetZ = 0,27 + SetZoomX = 0,50 + SetZoomY = 0,50 + SetY = 1,94 + SetY = 2,62 + SetY = 3,14 + SetY = 4,-26 + SetY = 5,-58 + SetY = 6,-82 + SetY = 7,-106 + SetZoomX = 7,60 + SetZoomY = 7,60 + SetZoomX = 8,70 + SetZoomY = 8,70 + SetOpacity = 8,150 + SetZoomX = 9,80 + SetZoomY = 9,80 + SetOpacity = 9,100 + + Play = 0,Saint6,80 diff --git a/PBS/Animations/Example anims/Move/MORNINGSUN.txt b/PBS/Animations/Example anims/Move/MORNINGSUN.txt new file mode 100644 index 000000000..5128233be --- /dev/null +++ b/PBS/Animations/Example anims/Move/MORNINGSUN.txt @@ -0,0 +1,41 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,MORNINGSUN] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Heal3 + Focus = User + SetFrame = 10,15 + SetX = 10,0 + SetY = 10,-26 + SetZ = 10,28 + SetOpacity = 10,100 + SetVisible = 11,false + + Graphic = Examples/Heal3 + Focus = User + SetX = 0,0 + SetY = 0,-26 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFrame = 6,6 + SetFrame = 7,7 + SetFrame = 8,8 + SetFrame = 9,9 + SetFrame = 10,10 + SetFrame = 11,16 + SetFrame = 12,17 + SetFrame = 13,15 + SetOpacity = 13,150 + SetFrame = 14,16 + SetOpacity = 14,100 + + Play = 0,Saint7,80 diff --git a/PBS/Animations/Example anims/Move/NIGHTMARE.txt b/PBS/Animations/Example anims/Move/NIGHTMARE.txt new file mode 100644 index 000000000..f53881f0d --- /dev/null +++ b/PBS/Animations/Example anims/Move/NIGHTMARE.txt @@ -0,0 +1,166 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,NIGHTMARE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/022-Darkness01 + Focus = Target + SetFrame = 1,6 + SetX = 1,40 + SetY = 1,-50 + SetZ = 1,28 + SetFrame = 2,7 + SetFrame = 3,8 + SetFrame = 4,9 + SetFlip = 5,true + SetX = 5,-40 + SetY = 5,-18 + SetFrame = 6,5 + SetFlip = 6,false + SetX = 6,-8 + SetY = 6,22 + SetOpacity = 6,120 + SetFrame = 7,9 + SetX = 7,40 + SetY = 7,-10 + SetOpacity = 7,255 + SetZoomX = 8,110 + SetZoomY = 8,110 + SetOpacity = 8,150 + SetFlip = 9,true + SetX = 9,-48 + SetY = 9,-26 + SetZoomX = 9,100 + SetZoomY = 9,100 + SetOpacity = 9,255 + SetZoomX = 10,110 + SetZoomY = 10,110 + SetOpacity = 10,150 + SetFrame = 11,13 + SetX = 11,-8 + SetY = 11,-2 + SetZoomX = 11,100 + SetZoomY = 11,100 + + Graphic = Examples/022-Darkness01 + Focus = Target + SetFrame = 2,6 + SetFlip = 2,true + SetX = 2,-40 + SetY = 2,-18 + SetZ = 2,29 + SetFrame = 3,7 + SetFrame = 4,8 + SetFrame = 5,4 + SetFlip = 5,false + SetX = 5,-8 + SetY = 5,22 + SetOpacity = 5,110 + SetFrame = 6,8 + SetX = 6,40 + SetY = 6,-10 + SetOpacity = 6,255 + SetFrame = 7,7 + SetFlip = 7,true + SetX = 7,-48 + SetY = 7,-26 + SetFrame = 8,8 + SetFrame = 9,11 + SetX = 9,-8 + SetY = 9,-2 + SetOpacity = 9,200 + SetFrame = 10,12 + SetOpacity = 10,255 + SetVisible = 11,false + + Graphic = Examples/022-Darkness01 + Focus = Target + SetFrame = 4,3 + SetX = 4,-8 + SetY = 4,22 + SetZ = 4,30 + SetOpacity = 4,100 + SetFrame = 5,7 + SetX = 5,40 + SetY = 5,-10 + SetOpacity = 5,255 + SetFrame = 6,6 + SetFlip = 6,true + SetX = 6,-48 + SetY = 6,-66 + SetFrame = 7,12 + SetFlip = 7,false + SetX = 7,8 + SetY = 7,-2 + SetFrame = 8,13 + SetOpacity = 8,150 + SetVisible = 9,false + + Graphic = Examples/022-Darkness01 + Focus = Target + SetFrame = 4,6 + SetX = 4,40 + SetY = 4,-10 + SetZ = 4,31 + SetFrame = 5,10 + SetX = 5,8 + SetY = 5,-2 + SetOpacity = 5,100 + SetFrame = 6,11 + SetOpacity = 6,200 + SetVisible = 7,false + + Graphic = Examples/022-Darkness01 + Focus = Target + SetFrame = 8,10 + SetFlip = 8,true + SetX = 8,-8 + SetY = 8,-2 + SetZ = 8,31 + SetOpacity = 8,100 + SetVisible = 9,false + + Graphic = Examples/022-Darkness01 + Focus = Target + SetX = 0,0 + SetY = 0,6 + SetZ = 0,27 + SetOpacity = 0,100 + SetFrame = 1,1 + SetOpacity = 1,150 + SetFrame = 2,2 + SetOpacity = 2,200 + SetFrame = 3,1 + SetFlip = 3,true + SetOpacity = 3,255 + SetFrame = 4,0 + SetOpacity = 4,150 + SetFrame = 5,9 + SetFlip = 5,false + SetX = 5,40 + SetY = 5,-50 + SetZoomX = 5,110 + SetZoomY = 5,110 + SetFlip = 6,true + SetX = 6,-40 + SetY = 6,-18 + SetFrame = 7,4 + SetFlip = 7,false + SetX = 7,-8 + SetY = 7,22 + SetZoomX = 7,100 + SetZoomY = 7,100 + SetOpacity = 7,100 + SetFrame = 8,3 + SetOpacity = 8,90 + SetFrame = 9,4 + SetOpacity = 9,80 + SetFrame = 10,5 + SetOpacity = 10,70 + SetOpacity = 11,50 diff --git a/PBS/Animations/Example anims/Move/OUTRAGE.txt b/PBS/Animations/Example anims/Move/OUTRAGE.txt new file mode 100644 index 000000000..5fe66452b --- /dev/null +++ b/PBS/Animations/Example anims/Move/OUTRAGE.txt @@ -0,0 +1,212 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,OUTRAGE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Fogo - 01 + Focus = UserAndTarget + SetFrame = 0,4 + SetX = 0,-20 + SetY = 0,-98 + SetZ = 0,27 + SetZoomX = 0,50 + SetZoomY = 0,50 + SetFrame = 1,3 + SetFrame = 2,2 + SetFrame = 3,3 + SetFlip = 3,true + SetFrame = 4,4 + SetFrame = 5,8 + SetFlip = 5,false + SetX = 5,104 + SetY = 5,-139 + SetFrame = 6,9 + SetX = 6,139 + SetY = 6,-207 + SetFlip = 7,true + SetX = 7,159 + SetY = 7,-237 + SetOpacity = 7,100 + SetFlip = 8,false + SetX = 8,209 + SetY = 8,-187 + SetX = 9,150 + SetY = 9,-237 + SetFrame = 10,8 + SetFlip = 10,true + SetX = 10,114 + SetY = 10,-207 + SetOpacity = 10,255 + SetFrame = 11,9 + SetX = 11,129 + SetY = 11,-237 + SetOpacity = 11,100 + SetFlip = 12,false + SetX = 12,189 + SetY = 12,-196 + + Graphic = Examples/Fogo - 01 + Focus = UserAndTarget + SetFrame = 2,5 + SetX = 2,39 + SetY = 2,-40 + SetZ = 2,28 + SetZoomX = 2,50 + SetZoomY = 2,50 + SetOpacity = 2,100 + SetFrame = 3,6 + SetX = 3,59 + SetY = 3,-79 + SetOpacity = 3,255 + SetFrame = 4,7 + SetX = 4,79 + SetY = 4,-109 + SetFlip = 5,true + SetX = 5,39 + SetY = 5,-217 + SetFrame = 6,8 + SetX = 6,64 + SetY = 6,-256 + SetOpacity = 6,100 + SetFlip = 7,false + SetX = 7,169 + SetY = 7,-139 + SetOpacity = 7,255 + SetX = 8,234 + SetY = 8,-70 + SetOpacity = 8,100 + SetFrame = 9,7 + SetFlip = 9,true + SetX = 9,89 + SetY = 9,-157 + SetOpacity = 9,255 + SetFrame = 10,8 + SetFlip = 10,false + SetX = 10,79 + SetY = 10,-246 + SetX = 11,164 + SetY = 11,-148 + SetVisible = 12,false + + Graphic = Examples/Fogo - 01 + Focus = UserAndTarget + SetFrame = 3,5 + SetFlip = 3,true + SetX = 3,-30 + SetY = 3,-98 + SetZ = 3,29 + SetZoomX = 3,50 + SetZoomY = 3,50 + SetFrame = 4,6 + SetX = 4,9 + SetY = 4,-168 + SetFlip = 5,false + SetX = 5,94 + SetY = 5,-40 + SetFrame = 6,7 + SetX = 6,139 + SetY = 6,-98 + SetFlip = 7,true + SetX = 7,25 + SetY = 7,-246 + SetOpacity = 7,100 + SetFrame = 8,8 + SetFlip = 8,false + SetX = 8,125 + SetY = 8,-187 + SetOpacity = 8,255 + SetFrame = 9,7 + SetX = 9,54 + SetY = 9,-207 + SetX = 10,125 + SetY = 10,-118 + SetVisible = 11,false + + Graphic = Examples/Fogo - 01 + Focus = UserAndTarget + SetFrame = 4,5 + SetX = 4,44 + SetY = 4,0 + SetZ = 4,30 + SetZoomX = 4,50 + SetZoomY = 4,50 + SetFlip = 5,true + SetX = 5,-10 + SetY = 5,-109 + SetFrame = 6,6 + SetX = 6,0 + SetY = 6,-178 + SetFrame = 7,7 + SetFlip = 7,false + SetX = 7,189 + SetY = 7,-40 + SetOpacity = 7,100 + SetFrame = 8,6 + SetFlip = 8,true + SetX = 8,59 + SetY = 8,-109 + SetOpacity = 8,255 + SetFlip = 9,false + SetX = 9,75 + SetY = 9,-59 + SetVisible = 10,false + + Graphic = Examples/Fogo - 01 + Focus = UserAndTarget + SetFrame = 5,5 + SetX = 5,75 + SetY = 5,-10 + SetZ = 5,31 + SetZoomX = 5,50 + SetZoomY = 5,50 + SetOpacity = 5,100 + SetFrame = 6,6 + SetX = 6,129 + SetOpacity = 6,255 + SetFrame = 7,7 + SetX = 7,94 + SetY = 7,-139 + SetFrame = 8,6 + SetX = 8,29 + SetVisible = 9,false + + Graphic = Examples/Fogo - 01 + Focus = UserAndTarget + SetFrame = 5,5 + SetX = 5,29 + SetY = 5,-40 + SetZ = 5,32 + SetZoomX = 5,50 + SetZoomY = 5,50 + SetFrame = 6,6 + SetX = 6,59 + SetY = 6,-79 + SetFrame = 7,5 + SetFlip = 7,true + SetX = 7,34 + SetY = 7,-59 + SetFlip = 8,false + SetY = 8,-10 + SetVisible = 9,false + + Graphic = Examples/Fogo - 01 + Focus = UserAndTarget + SetFrame = 7,5 + SetX = 7,0 + SetY = 7,-59 + SetZ = 7,33 + SetZoomX = 7,50 + SetZoomY = 7,50 + SetVisible = 8,false + + Play = 0,Fire2,80 + Play = 0,Explosion6,80 + Play = 2,Fire2,80 + Play = 5,Fire2,80 + Play = 8,Fire2,80 diff --git a/PBS/Animations/Example anims/Move/OVERHEAT.txt b/PBS/Animations/Example anims/Move/OVERHEAT.txt new file mode 100644 index 000000000..7bc8f2d89 --- /dev/null +++ b/PBS/Animations/Example anims/Move/OVERHEAT.txt @@ -0,0 +1,142 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,OVERHEAT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fire4 + Focus = UserAndTarget + SetX = 0,4 + SetY = 0,-70 + SetZ = 0,27 + SetFrame = 1,1 + SetY = 1,-79 + SetFrame = 2,2 + SetY = 2,-89 + SetFrame = 3,3 + SetY = 3,-98 + SetFrame = 4,4 + SetY = 4,-109 + SetFrame = 5,5 + SetY = 5,-118 + SetFrame = 6,6 + SetY = 6,-128 + SetFrame = 7,7 + SetY = 7,-139 + SetFrame = 8,8 + SetY = 8,-148 + SetFrame = 9,9 + SetY = 9,-157 + SetFrame = 10,10 + SetY = 10,-168 + SetFrame = 11,11 + SetY = 11,-178 + + Graphic = Examples/fire4 + Focus = UserAndTarget + SetX = 1,34 + SetY = 1,-70 + SetZ = 1,28 + SetX = 2,39 + SetY = 2,-40 + SetVisible = 3,false + + Graphic = Examples/fire4 + Focus = UserAndTarget + SetX = 2,64 + SetY = 2,-157 + SetZ = 2,29 + SetX = 3,89 + SetY = 3,-89 + SetX = 4,-60 + SetY = 4,-217 + SetFrame = 5,1 + SetX = 5,-75 + SetY = 5,-256 + SetX = 6,194 + SetY = 6,-20 + SetVisible = 7,false + + Graphic = Examples/fire4 + Focus = UserAndTarget + SetX = 2,19 + SetY = 2,0 + SetZ = 2,30 + SetFrame = 3,1 + SetX = 3,89 + SetY = 3,-226 + SetX = 4,169 + SetY = 4,0 + SetFrame = 5,2 + SetX = 5,239 + SetY = 5,9 + SetOpacity = 5,100 + SetFrame = 6,1 + SetFlip = 6,true + SetX = 6,125 + SetY = 6,-267 + SetOpacity = 6,255 + SetVisible = 7,false + + Graphic = Examples/fire4 + Focus = UserAndTarget + SetX = 3,-25 + SetY = 3,-89 + SetZ = 3,31 + SetX = 4,9 + SetY = 4,-148 + SetY = 5,-237 + SetVisible = 6,false + + Graphic = Examples/fire4 + Focus = UserAndTarget + SetX = 3,100 + SetY = 3,-10 + SetZ = 3,32 + SetX = 4,50 + SetY = 4,-40 + SetX = 5,109 + SetY = 5,-29 + SetVisible = 6,false + + Graphic = Examples/fire4 + Focus = UserAndTarget + SetX = 4,144 + SetY = 4,-157 + SetZ = 4,28 + SetFrame = 5,1 + SetX = 5,184 + SetY = 5,-178 + SetX = 6,9 + SetY = 6,-285 + SetFrame = 7,2 + SetFlip = 7,true + SetX = 7,264 + SetY = 7,-20 + SetOpacity = 7,100 + SetVisible = 8,false + + Graphic = Examples/fire4 + Focus = UserAndTarget + SetX = 4,-35 + SetY = 4,-59 + SetZ = 4,33 + SetX = 5,-75 + SetY = 5,-50 + SetVisible = 6,false + + Graphic = Examples/fire4 + Focus = UserAndTarget + SetX = 4,39 + SetY = 4,-139 + SetZ = 4,34 + SetX = 5,84 + SetY = 5,-226 + SetVisible = 6,false + + Play = 0,Fire3,80 diff --git a/PBS/Animations/Example anims/Move/PAYDAY.txt b/PBS/Animations/Example anims/Move/PAYDAY.txt new file mode 100644 index 000000000..fcccfe30e --- /dev/null +++ b/PBS/Animations/Example anims/Move/PAYDAY.txt @@ -0,0 +1,74 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,PAYDAY] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 2,12 + SetX = 2,0 + SetY = 2,18 + SetZ = 2,28 + SetX = 3,34 + SetY = 3,-118 + SetX = 4,59 + SetY = 4,-226 + SetX = 5,134 + SetY = 5,-267 + SetX = 6,54 + SetY = 6,-256 + SetX = 7,75 + SetY = 7,-267 + SetX = 8,144 + SetY = 8,-226 + SetVisible = 9,false + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 4,12 + SetX = 4,0 + SetY = 4,18 + SetZ = 4,29 + SetX = 5,19 + SetY = 5,-139 + SetVisible = 7,false + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 5,12 + SetX = 5,0 + SetY = 5,18 + SetZ = 5,30 + SetVisible = 6,false + + Graphic = Examples/008-Weapon03 + Focus = UserAndTarget + SetFrame = 0,12 + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetX = 1,34 + SetY = 1,-128 + SetX = 2,75 + SetY = 2,-207 + SetX = 3,104 + SetY = 3,-246 + SetX = 4,154 + SetY = 4,-226 + SetX = 5,179 + SetY = 5,-178 + SetX = 7,144 + SetY = 7,-226 + SetX = 8,179 + SetY = 8,-178 + + Play = 0,Select,80 + Play = 2,Select,80 + Play = 5,Select,80 + Play = 7,Select,80 diff --git a/PBS/Animations/Example anims/Move/PETALDANCE.txt b/PBS/Animations/Example anims/Move/PETALDANCE.txt new file mode 100644 index 000000000..cced47093 --- /dev/null +++ b/PBS/Animations/Example anims/Move/PETALDANCE.txt @@ -0,0 +1,125 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,PETALDANCE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Anima (1) + Focus = Target + SetX = 2,192 + SetY = 2,-138 + SetZ = 2,28 + SetX = 3,160 + SetY = 3,-90 + SetFrame = 4,1 + SetFlip = 4,true + SetX = 4,120 + SetY = 4,-34 + SetX = 5,64 + SetY = 5,30 + SetFrame = 6,2 + SetX = 6,24 + SetY = 6,70 + SetX = 7,8 + SetY = 7,126 + SetFrame = 8,1 + SetFlip = 8,false + SetX = 8,168 + SetY = 8,70 + SetFrame = 9,2 + SetX = 9,16 + SetY = 9,-26 + SetZoomX = 9,120 + SetZoomY = 9,120 + SetVisible = 10,false + + Graphic = Examples/Anima (1) + Focus = Target + SetFrame = 3,2 + SetX = 3,-40 + SetY = 3,-146 + SetZ = 3,29 + SetX = 4,0 + SetY = 4,-98 + SetFrame = 5,3 + SetX = 5,32 + SetY = 5,-58 + SetX = 6,80 + SetY = 6,-10 + SetFrame = 7,1 + SetX = 7,128 + SetY = 7,46 + SetFrame = 8,2 + SetFlip = 8,true + SetX = 8,-288 + SetY = 8,-34 + SetVisible = 9,false + + Graphic = Examples/Anima (1) + Focus = Target + SetX = 5,-64 + SetY = 5,-138 + SetZ = 5,30 + SetX = 6,-104 + SetY = 6,-90 + SetX = 7,-192 + SetY = 7,-66 + SetFrame = 8,1 + SetX = 8,-24 + SetY = 8,-74 + SetVisible = 9,false + + Graphic = Examples/Anima (1) + Focus = Target + SetFrame = 7,1 + SetX = 7,-64 + SetY = 7,-154 + SetZ = 7,31 + SetVisible = 8,false + + Graphic = Examples/Anima (1) + Focus = Target + SetFrame = 0,3 + SetX = 0,-160 + SetY = 0,-130 + SetZ = 0,27 + SetX = 1,-144 + SetY = 1,-90 + SetFrame = 2,2 + SetX = 2,-112 + SetY = 2,-58 + SetX = 3,-64 + SetY = 3,-2 + SetFlip = 4,true + SetX = 4,-8 + SetX = 5,-24 + SetY = 5,6 + SetFrame = 6,3 + SetX = 6,-64 + SetY = 6,30 + SetX = 7,-120 + SetY = 7,78 + SetFrame = 8,1 + SetX = 8,-184 + SetY = 8,126 + SetFrame = 9,2 + SetX = 9,-312 + SetY = 9,-10 + SetFlip = 10,false + SetX = 10,80 + SetY = 10,22 + SetZoomX = 10,120 + SetZoomY = 10,120 + SetFrame = 11,0 + SetFlip = 11,true + SetX = 11,184 + SetY = 11,86 + SetZoomX = 11,100 + SetZoomY = 11,100 + + Play = 0,Saint6,80 diff --git a/PBS/Animations/Example anims/Move/PINMISSILE.txt b/PBS/Animations/Example anims/Move/PINMISSILE.txt new file mode 100644 index 000000000..f75e28415 --- /dev/null +++ b/PBS/Animations/Example anims/Move/PINMISSILE.txt @@ -0,0 +1,526 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,PINMISSILE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,19 + SetY = 2,-79 + SetZ = 2,28 + SetX = 3,44 + SetY = 3,-139 + SetX = 4,79 + SetY = 4,-187 + SetAngle = 4,345 + SetX = 5,109 + SetY = 5,-217 + SetAngle = 5,335 + SetX = 6,84 + SetY = 6,-196 + SetAngle = 6,345 + SetX = 7,200 + SetY = 7,-207 + SetAngle = 7,300 + SetFrame = 8,14 + SetX = 8,194 + SetAngle = 8,0 + SetOpacity = 8,50 + SetVisible = 9,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 4,29 + SetY = 4,-98 + SetZ = 4,29 + SetX = 5,54 + SetY = 5,-148 + SetFrame = 6,14 + SetX = 6,184 + SetY = 6,-217 + SetZoomX = 6,125 + SetZoomY = 6,125 + SetOpacity = 6,50 + SetX = 7,214 + SetY = 7,-207 + SetZoomX = 7,100 + SetZoomY = 7,100 + SetZoomX = 8,125 + SetZoomY = 8,125 + SetVisible = 9,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 5,14 + SetX = 5,184 + SetY = 5,-207 + SetZ = 5,30 + SetOpacity = 5,50 + SetVisible = 6,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 0,25 + SetY = 0,-70 + SetZ = 0,27 + SetX = 1,39 + SetY = 1,-128 + SetX = 2,64 + SetY = 2,-178 + SetAngle = 2,345 + SetX = 3,89 + SetY = 3,-187 + SetAngle = 3,335 + SetX = 4,129 + SetY = 4,-217 + SetAngle = 4,325 + SetX = 5,169 + SetY = 5,-207 + SetAngle = 5,300 + SetX = 6,144 + SetY = 6,-226 + SetAngle = 6,325 + SetX = 7,125 + SetY = 7,-237 + SetX = 8,179 + SetY = 8,-207 + SetAngle = 8,300 + SetFrame = 9,14 + SetX = 9,194 + SetZoomX = 9,125 + SetZoomY = 9,125 + SetAngle = 9,0 + SetOpacity = 9,50 + + Play = 0,throw,80 + Play = 2,throw,80 + Play = 4,throw,80 + Play = 4,Slash10,80 + Play = 6,Slash10,80 + Play = 8,Slash10,80 +#------------------------------- +[Move,PINMISSILE,1] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 0,25 + SetY = 0,-70 + SetZ = 0,27 + SetX = 1,39 + SetY = 1,-128 + SetX = 2,64 + SetY = 2,-178 + SetAngle = 2,345 + SetX = 3,89 + SetY = 3,-187 + SetAngle = 3,335 + SetX = 4,129 + SetY = 4,-217 + SetAngle = 4,325 + SetX = 5,169 + SetY = 5,-207 + SetAngle = 5,300 + SetX = 6,144 + SetY = 6,-226 + SetAngle = 6,325 + SetX = 7,125 + SetY = 7,-237 + SetX = 8,179 + SetY = 8,-207 + SetAngle = 8,300 + SetFrame = 9,14 + SetX = 9,194 + SetZoomX = 9,125 + SetZoomY = 9,125 + SetAngle = 9,0 + SetOpacity = 9,50 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,19 + SetY = 2,-79 + SetZ = 2,28 + SetX = 3,44 + SetY = 3,-139 + SetX = 4,79 + SetY = 4,-187 + SetAngle = 4,345 + SetX = 5,109 + SetY = 5,-217 + SetAngle = 5,335 + SetX = 6,84 + SetY = 6,-196 + SetAngle = 6,345 + SetX = 7,200 + SetY = 7,-207 + SetAngle = 7,300 + SetFrame = 8,14 + SetX = 8,194 + SetAngle = 8,0 + SetOpacity = 8,50 + SetVisible = 9,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 4,29 + SetY = 4,-98 + SetZ = 4,29 + SetX = 5,54 + SetY = 5,-148 + SetFrame = 6,14 + SetX = 6,184 + SetY = 6,-217 + SetZoomX = 6,125 + SetZoomY = 6,125 + SetOpacity = 6,50 + SetX = 7,214 + SetY = 7,-207 + SetZoomX = 7,100 + SetZoomY = 7,100 + SetZoomX = 8,125 + SetZoomY = 8,125 + SetVisible = 9,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 5,14 + SetX = 5,184 + SetY = 5,-207 + SetZ = 5,30 + SetOpacity = 5,50 + SetVisible = 6,false + + Play = 0,throw,80 + Play = 2,throw,80 + Play = 4,throw,80 + Play = 4,Slash10,80 + Play = 6,Slash10,80 + Play = 8,Slash10,80 +#------------------------------- +[Move,PINMISSILE,2] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 5,14 + SetX = 5,184 + SetY = 5,-207 + SetZ = 5,30 + SetOpacity = 5,50 + SetVisible = 6,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 0,25 + SetY = 0,-70 + SetZ = 0,27 + SetX = 1,39 + SetY = 1,-128 + SetX = 2,64 + SetY = 2,-178 + SetAngle = 2,345 + SetX = 3,89 + SetY = 3,-187 + SetAngle = 3,335 + SetX = 4,129 + SetY = 4,-217 + SetAngle = 4,325 + SetX = 5,169 + SetY = 5,-207 + SetAngle = 5,300 + SetX = 6,144 + SetY = 6,-226 + SetAngle = 6,325 + SetX = 7,125 + SetY = 7,-237 + SetX = 8,179 + SetY = 8,-207 + SetAngle = 8,300 + SetFrame = 9,14 + SetX = 9,194 + SetZoomX = 9,125 + SetZoomY = 9,125 + SetAngle = 9,0 + SetOpacity = 9,50 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,19 + SetY = 2,-79 + SetZ = 2,28 + SetX = 3,44 + SetY = 3,-139 + SetX = 4,79 + SetY = 4,-187 + SetAngle = 4,345 + SetX = 5,109 + SetY = 5,-217 + SetAngle = 5,335 + SetX = 6,84 + SetY = 6,-196 + SetAngle = 6,345 + SetX = 7,200 + SetY = 7,-207 + SetAngle = 7,300 + SetFrame = 8,14 + SetX = 8,194 + SetAngle = 8,0 + SetOpacity = 8,50 + SetVisible = 9,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 4,29 + SetY = 4,-98 + SetZ = 4,29 + SetX = 5,54 + SetY = 5,-148 + SetFrame = 6,14 + SetX = 6,184 + SetY = 6,-217 + SetZoomX = 6,125 + SetZoomY = 6,125 + SetOpacity = 6,50 + SetX = 7,214 + SetY = 7,-207 + SetZoomX = 7,100 + SetZoomY = 7,100 + SetZoomX = 8,125 + SetZoomY = 8,125 + SetVisible = 9,false + + Play = 0,throw,80 + Play = 2,throw,80 + Play = 4,throw,80 + Play = 4,Slash10,80 + Play = 6,Slash10,80 + Play = 8,Slash10,80 +#------------------------------- +[Move,PINMISSILE,3] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 4,29 + SetY = 4,-98 + SetZ = 4,29 + SetX = 5,54 + SetY = 5,-148 + SetFrame = 6,14 + SetX = 6,184 + SetY = 6,-217 + SetZoomX = 6,125 + SetZoomY = 6,125 + SetOpacity = 6,50 + SetX = 7,214 + SetY = 7,-207 + SetZoomX = 7,100 + SetZoomY = 7,100 + SetZoomX = 8,125 + SetZoomY = 8,125 + SetVisible = 9,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 5,14 + SetX = 5,184 + SetY = 5,-207 + SetZ = 5,30 + SetOpacity = 5,50 + SetVisible = 6,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 0,25 + SetY = 0,-70 + SetZ = 0,27 + SetX = 1,39 + SetY = 1,-128 + SetX = 2,64 + SetY = 2,-178 + SetAngle = 2,345 + SetX = 3,89 + SetY = 3,-187 + SetAngle = 3,335 + SetX = 4,129 + SetY = 4,-217 + SetAngle = 4,325 + SetX = 5,169 + SetY = 5,-207 + SetAngle = 5,300 + SetX = 6,144 + SetY = 6,-226 + SetAngle = 6,325 + SetX = 7,125 + SetY = 7,-237 + SetX = 8,179 + SetY = 8,-207 + SetAngle = 8,300 + SetFrame = 9,14 + SetX = 9,194 + SetZoomX = 9,125 + SetZoomY = 9,125 + SetAngle = 9,0 + SetOpacity = 9,50 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,19 + SetY = 2,-79 + SetZ = 2,28 + SetX = 3,44 + SetY = 3,-139 + SetX = 4,79 + SetY = 4,-187 + SetAngle = 4,345 + SetX = 5,109 + SetY = 5,-217 + SetAngle = 5,335 + SetX = 6,84 + SetY = 6,-196 + SetAngle = 6,345 + SetX = 7,200 + SetY = 7,-207 + SetAngle = 7,300 + SetFrame = 8,14 + SetX = 8,194 + SetAngle = 8,0 + SetOpacity = 8,50 + SetVisible = 9,false + + Play = 0,throw,80 + Play = 2,throw,80 + Play = 4,throw,80 + Play = 4,Slash10,80 + Play = 6,Slash10,80 + Play = 8,Slash10,80 +#------------------------------- +[Move,PINMISSILE,4] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,19 + SetY = 2,-79 + SetZ = 2,28 + SetX = 3,44 + SetY = 3,-139 + SetX = 4,79 + SetY = 4,-187 + SetAngle = 4,345 + SetX = 5,109 + SetY = 5,-217 + SetAngle = 5,335 + SetX = 6,84 + SetY = 6,-196 + SetAngle = 6,345 + SetX = 7,200 + SetY = 7,-207 + SetAngle = 7,300 + SetFrame = 8,14 + SetX = 8,194 + SetAngle = 8,0 + SetOpacity = 8,50 + SetVisible = 9,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 4,29 + SetY = 4,-98 + SetZ = 4,29 + SetX = 5,54 + SetY = 5,-148 + SetFrame = 6,14 + SetX = 6,184 + SetY = 6,-217 + SetZoomX = 6,125 + SetZoomY = 6,125 + SetOpacity = 6,50 + SetX = 7,214 + SetY = 7,-207 + SetZoomX = 7,100 + SetZoomY = 7,100 + SetZoomX = 8,125 + SetZoomY = 8,125 + SetVisible = 9,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 5,14 + SetX = 5,184 + SetY = 5,-207 + SetZ = 5,30 + SetOpacity = 5,50 + SetVisible = 6,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 0,25 + SetY = 0,-70 + SetZ = 0,27 + SetX = 1,39 + SetY = 1,-128 + SetX = 2,64 + SetY = 2,-178 + SetAngle = 2,345 + SetX = 3,89 + SetY = 3,-187 + SetAngle = 3,335 + SetX = 4,129 + SetY = 4,-217 + SetAngle = 4,325 + SetX = 5,169 + SetY = 5,-207 + SetAngle = 5,300 + SetX = 6,144 + SetY = 6,-226 + SetAngle = 6,325 + SetX = 7,125 + SetY = 7,-237 + SetX = 8,179 + SetY = 8,-207 + SetAngle = 8,300 + SetFrame = 9,14 + SetX = 9,194 + SetZoomX = 9,125 + SetZoomY = 9,125 + SetAngle = 9,0 + SetOpacity = 9,50 + + Play = 0,throw,80 + Play = 2,throw,80 + Play = 4,throw,80 + Play = 4,Slash10,80 + Play = 6,Slash10,80 + Play = 8,Slash10,80 diff --git a/PBS/Animations/Example anims/Move/POISONFANG.txt b/PBS/Animations/Example anims/Move/POISONFANG.txt new file mode 100644 index 000000000..e83f39361 --- /dev/null +++ b/PBS/Animations/Example anims/Move/POISONFANG.txt @@ -0,0 +1,72 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,POISONFANG] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 7,13 + SetX = 7,-30 + SetY = 7,11 + SetZ = 7,28 + SetX = 8,-25 + SetY = 8,4 + SetVisible = 9,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 7,13 + SetX = 7,66 + SetY = 7,10 + SetZ = 7,29 + SetX = 8,60 + SetY = 8,5 + SetVisible = 9,false + + Graphic = Examples/element fangs + Focus = Target + SetX = 0,6 + SetY = 0,8 + SetZ = 0,27 + SetFrame = 1,1 + SetY = 1,7 + SetFrame = 2,2 + SetX = 2,5 + SetY = 2,-3 + SetFrame = 3,3 + SetX = 3,2 + SetY = 3,6 + SetFrame = 4,4 + SetX = 4,1 + SetY = 4,5 + SetFrame = 5,5 + SetX = 5,8 + SetY = 5,-1 + SetFrame = 6,6 + SetX = 6,6 + SetY = 6,2 + SetFrame = 7,7 + SetX = 7,8 + SetY = 7,7 + SetFrame = 8,8 + SetY = 8,-3 + SetFrame = 9,9 + SetX = 9,3 + SetY = 9,1 + SetFrame = 10,10 + SetX = 10,8 + SetFrame = 11,11 + SetX = 11,5 + SetY = 11,0 + SetFrame = 12,12 + SetX = 12,7 + SetY = 12,2 + SetVisible = 13,false + + Play = 6,Voltorb Flip Mark,100,161 diff --git a/PBS/Animations/Example anims/Move/POISONGAS.txt b/PBS/Animations/Example anims/Move/POISONGAS.txt new file mode 100644 index 000000000..a115cea77 --- /dev/null +++ b/PBS/Animations/Example anims/Move/POISONGAS.txt @@ -0,0 +1,187 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,POISONGAS] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison + Focus = UserAndTarget + SetFrame = 0,8 + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetX = 1,25 + SetY = 1,-50 + SetX = 2,59 + SetY = 2,-79 + SetX = 3,94 + SetY = 3,-118 + SetX = 4,139 + SetY = 4,-157 + SetX = 5,179 + SetY = 5,-178 + SetFrame = 6,7 + SetFrame = 7,6 + SetFrame = 8,5 + SetFrame = 9,4 + SetFrame = 10,3 + SetFrame = 11,2 + SetFrame = 12,1 + SetOpacity = 12,200 + SetFrame = 13,0 + SetOpacity = 13,100 + + Graphic = Examples/poison + Focus = UserAndTarget + SetFrame = 1,7 + SetX = 1,0 + SetY = 1,18 + SetZ = 1,28 + SetFrame = 2,6 + SetX = 2,25 + SetY = 2,-50 + SetFrame = 3,5 + SetX = 3,59 + SetY = 3,-79 + SetFrame = 4,4 + SetX = 4,94 + SetY = 4,-118 + SetFrame = 5,5 + SetFlip = 5,true + SetX = 5,139 + SetY = 5,-157 + SetFrame = 6,4 + SetFlip = 6,false + SetX = 6,150 + SetY = 6,-128 + SetX = 7,134 + SetY = 7,-139 + SetX = 8,144 + SetY = 8,-148 + SetFrame = 9,2 + SetFlip = 9,true + SetX = 9,150 + SetY = 9,-118 + SetFrame = 10,0 + SetFlip = 10,false + SetX = 10,134 + SetY = 10,-139 + SetVisible = 11,false + + Graphic = Examples/poison + Focus = UserAndTarget + SetFrame = 2,1 + SetX = 2,0 + SetY = 2,18 + SetZ = 2,29 + SetFrame = 3,2 + SetX = 3,25 + SetY = 3,-50 + SetFrame = 4,3 + SetX = 4,59 + SetY = 4,-79 + SetX = 5,94 + SetY = 5,-118 + SetFrame = 6,5 + SetX = 6,100 + SetY = 6,-89 + SetX = 7,114 + SetFrame = 8,7 + SetX = 8,100 + SetY = 8,-139 + SetFrame = 9,3 + SetX = 9,125 + SetFrame = 10,1 + SetX = 10,159 + SetY = 10,-98 + SetVisible = 11,false + + Graphic = Examples/poison + Focus = UserAndTarget + SetFrame = 3,8 + SetX = 3,29 + SetY = 3,0 + SetZ = 3,30 + SetFrame = 4,1 + SetX = 4,25 + SetY = 4,-50 + SetFrame = 5,5 + SetX = 5,69 + SetY = 5,-109 + SetFrame = 6,1 + SetX = 6,159 + SetY = 6,-98 + SetX = 7,79 + SetY = 7,-118 + SetFrame = 8,2 + SetX = 8,104 + SetY = 8,-109 + SetVisible = 9,false + + Graphic = Examples/poison + Focus = UserAndTarget + SetFrame = 3,5 + SetX = 3,0 + SetY = 3,18 + SetZ = 3,31 + SetX = 4,54 + SetY = 4,-29 + SetFrame = 5,0 + SetX = 5,50 + SetY = 5,-70 + SetX = 6,100 + SetY = 6,-148 + SetFlip = 7,true + SetX = 7,84 + SetY = 7,-40 + SetVisible = 8,false + + Graphic = Examples/poison + Focus = UserAndTarget + SetFrame = 5,4 + SetFlip = 5,true + SetX = 5,79 + SetY = 5,-40 + SetZ = 5,32 + SetFrame = 6,1 + SetFlip = 6,false + SetX = 6,125 + SetY = 6,-59 + SetX = 7,69 + SetY = 7,-50 + SetVisible = 8,false + + Graphic = Examples/poison + Focus = UserAndTarget + SetFrame = 6,5 + SetX = 6,79 + SetY = 6,-50 + SetZ = 6,33 + SetFrame = 7,7 + SetX = 7,150 + SetY = 7,-59 + SetVisible = 8,false + + Graphic = Examples/poison + Focus = UserAndTarget + SetFrame = 6,6 + SetX = 6,89 + SetY = 6,-118 + SetZ = 6,34 + SetVisible = 7,false + + Graphic = Examples/poison + Focus = UserAndTarget + SetFrame = 6,2 + SetFlip = 6,true + SetX = 6,59 + SetY = 6,-79 + SetZ = 6,35 + SetVisible = 7,false + + Play = 0,Wind8,80 diff --git a/PBS/Animations/Example anims/Move/POISONPOWDER.txt b/PBS/Animations/Example anims/Move/POISONPOWDER.txt new file mode 100644 index 000000000..1181fdc94 --- /dev/null +++ b/PBS/Animations/Example anims/Move/POISONPOWDER.txt @@ -0,0 +1,32 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,POISONPOWDER] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Special5 + Focus = Target + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFrame = 6,6 + SetFrame = 7,7 + SetFrame = 8,8 + SetFrame = 9,9 + SetFrame = 10,10 + SetFrame = 11,11 + SetFrame = 12,12 + SetFrame = 13,13 + SetVisible = 14,false + + Play = 0,Sand,80 diff --git a/PBS/Animations/Example anims/Move/POISONSTING.txt b/PBS/Animations/Example anims/Move/POISONSTING.txt new file mode 100644 index 000000000..7076f226c --- /dev/null +++ b/PBS/Animations/Example anims/Move/POISONSTING.txt @@ -0,0 +1,76 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,POISONSTING] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = UserAndTarget + SetFrame = 0,5 + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetX = 1,29 + SetY = 1,-40 + SetFrame = 2,6 + SetX = 2,64 + SetY = 2,-79 + SetX = 3,100 + SetY = 3,-128 + SetX = 4,125 + SetY = 4,-157 + SetFrame = 5,7 + SetX = 5,134 + SetY = 5,-148 + SetX = 6,175 + SetY = 6,-178 + SetFrame = 7,9 + SetX = 7,179 + SetFrame = 8,3 + SetFrame = 9,4 + + Play = 0,throw,80 + Play = 6,Slash10,80 +#------------------------------- +[OppMove,POISONSTING] +Name = Example anim + + + + Graphic = Examples/003-Attack01 + Focus = UserAndTarget + SetFrame = 0,5 + SetX = 0,25 + SetY = 0,-67 + SetAngle = 0,180 + SetX = 1,50 + SetY = 1,-90 + SetFrame = 2,6 + SetX = 2,75 + SetY = 2,-112 + SetX = 3,100 + SetY = 3,-135 + SetX = 4,125 + SetY = 4,-157 + SetFrame = 5,7 + SetX = 5,150 + SetY = 5,-179 + SetX = 6,175 + SetY = 6,-203 + SetVisible = 6,false + + Graphic = Examples/003-Attack01 + Focus = Target + SetFrame = 6,3 + SetVisible = 6,true + SetFrame = 7,4 + SetFrame = 8,2 + SetFrame = 9,2 + + Play = 0,throw,80 + Play = 6,Slash10,80 diff --git a/PBS/Animations/Example anims/Move/POISONTAIL.txt b/PBS/Animations/Example anims/Move/POISONTAIL.txt new file mode 100644 index 000000000..aa07cc83b --- /dev/null +++ b/PBS/Animations/Example anims/Move/POISONTAIL.txt @@ -0,0 +1,32 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,POISONTAIL] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/firepoison + Focus = Target + SetFrame = 0,8 + SetX = 0,8 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,9 + SetX = 1,0 + SetFrame = 2,10 + SetY = 2,-10 + SetFrame = 3,11 + SetFrame = 4,12 + SetX = 4,-8 + SetFrame = 5,13 + SetFrame = 6,14 + SetZoomX = 7,110 + SetZoomY = 7,110 + SetOpacity = 7,100 + + Play = 0,Blow3,80 + Play = 0,Poison,80 diff --git a/PBS/Animations/Example anims/Move/PSYCHIC.txt b/PBS/Animations/Example anims/Move/PSYCHIC.txt new file mode 100644 index 000000000..7eeed1c22 --- /dev/null +++ b/PBS/Animations/Example anims/Move/PSYCHIC.txt @@ -0,0 +1,107 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,PSYCHIC] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/efftest4 + Focus = Target + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,28 + SetFrame = 1,1 + SetFrame = 2,2 + SetVisible = 3,false + + Graphic = Examples/efftest4 + Focus = Target + SetFrame = 5,2 + SetX = 5,0 + SetY = 5,-2 + SetZ = 5,28 + SetZoomX = 5,160 + SetZoomY = 5,160 + SetOpacity = 5,180 + SetZoomX = 6,190 + SetZoomY = 6,190 + SetZoomX = 7,250 + SetZoomY = 7,250 + SetZoomX = 8,300 + SetZoomY = 8,300 + SetFrame = 9,8 + SetZoomX = 9,100 + SetZoomY = 9,100 + SetOpacity = 9,255 + SetFrame = 10,7 + SetFrame = 11,6 + SetFrame = 12,2 + SetZoomX = 12,300 + SetZoomY = 12,300 + SetOpacity = 12,180 + SetX = 14,-8 + SetY = 14,-10 + SetY = 15,-2 + SetX = 17,0 + SetZoomX = 17,100 + SetZoomY = 17,100 + SetOpacity = 17,75 + + Graphic = Examples/efftest4 + Focus = Target + SetFrame = 9,2 + SetX = 9,0 + SetY = 9,-2 + SetZ = 9,29 + SetZoomX = 9,300 + SetZoomY = 9,300 + SetOpacity = 9,180 + SetVisible = 12,false + + Graphic = Examples/efftest4 + Focus = Target + SetFrame = 0,14 + SetX = 0,0 + SetY = 0,-10 + SetZ = 0,27 + SetFrame = 1,13 + SetFrame = 2,0 + SetFrame = 3,2 + SetY = 3,-2 + SetZoomX = 3,120 + SetZoomY = 3,120 + SetZoomX = 4,140 + SetZoomY = 4,140 + SetOpacity = 4,220 + SetFrame = 5,3 + SetZoomX = 5,100 + SetZoomY = 5,100 + SetOpacity = 5,150 + SetFrame = 6,4 + SetFrame = 7,3 + SetOpacity = 7,100 + SetFrame = 8,4 + SetFrame = 9,3 + SetOpacity = 9,50 + SetFrame = 10,4 + SetFrame = 11,3 + SetFrame = 12,5 + SetOpacity = 12,255 + SetFrame = 13,11 + SetOpacity = 13,150 + SetFrame = 14,12 + SetOpacity = 14,255 + SetFrame = 15,11 + SetZoomX = 15,80 + SetZoomY = 15,80 + SetFrame = 16,12 + SetZoomX = 16,70 + SetZoomY = 16,70 + SetOpacity = 16,150 + SetVisible = 17,false + + Play = 2,Darkness2,80 diff --git a/PBS/Animations/Example anims/Move/PSYCHOCUT.txt b/PBS/Animations/Example anims/Move/PSYCHOCUT.txt new file mode 100644 index 000000000..537f2b77f --- /dev/null +++ b/PBS/Animations/Example anims/Move/PSYCHOCUT.txt @@ -0,0 +1,251 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,PSYCHOCUT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Psycho Cut + Focus = Target + SetFrame = 0,15 + SetX = 0,-244 + SetY = 0,152 + SetZ = 0,27 + SetOpacity = 0,128 + SetX = 1,-243 + SetY = 1,161 + SetOpacity = 1,236 + SetX = 2,-246 + SetY = 2,165 + SetOpacity = 2,107 + SetVisible = 3,false + + Graphic = Examples/Psycho Cut + Focus = Target + SetFrame = 1,13 + SetX = 1,-221 + SetY = 1,160 + SetZ = 1,28 + SetFrame = 2,12 + SetX = 2,-242 + SetY = 2,156 + SetFrame = 3,11 + SetX = 3,-250 + SetY = 3,167 + SetVisible = 4,false + + Graphic = Examples/Psycho Cut + Focus = Target + SetFrame = 4,10 + SetX = 4,-258 + SetY = 4,187 + SetZ = 4,27 + SetVisible = 5,false + + Graphic = Examples/Psycho Cut + Focus = Target + SetFrame = 5,8 + SetX = 5,-253 + SetY = 5,196 + SetZ = 5,28 + SetVisible = 6,false + + Graphic = Examples/Psycho Cut + Focus = Target + SetFrame = 6,7 + SetX = 6,-240 + SetY = 6,200 + SetZ = 6,27 + SetVisible = 7,false + + Graphic = Examples/Psycho Cut + Focus = Target + SetFrame = 7,6 + SetX = 7,-224 + SetY = 7,192 + SetZ = 7,28 + SetVisible = 8,false + + Graphic = Examples/Psycho Cut + Focus = Target + SetFrame = 8,5 + SetX = 8,-221 + SetY = 8,171 + SetZ = 8,27 + SetFrame = 9,0 + SetX = 9,-188 + SetY = 9,137 + SetFrame = 11,1 + SetX = 11,-147 + SetY = 11,113 + SetX = 12,-120 + SetY = 12,104 + SetZoomX = 12,120 + SetZoomY = 12,120 + SetX = 13,-106 + SetY = 13,94 + SetZoomX = 13,140 + SetZoomY = 13,140 + SetX = 14,-90 + SetY = 14,88 + SetZoomX = 14,160 + SetZoomY = 14,160 + SetFrame = 15,2 + SetX = 15,-58 + SetY = 15,69 + SetZoomX = 15,180 + SetZoomY = 15,180 + SetOpacity = 15,200 + SetX = 16,-26 + SetY = 16,47 + SetOpacity = 16,139 + SetX = 17,-1 + SetY = 17,27 + SetOpacity = 17,100 + SetX = 18,55 + SetY = 18,1 + SetOpacity = 18,60 + SetVisible = 19,false + + Graphic = Examples/Psycho Cut + Focus = Target + SetFrame = 9,13 + SetX = 9,-223 + SetY = 9,157 + SetZ = 9,28 + SetFrame = 10,12 + SetX = 10,-238 + SetY = 10,144 + SetOpacity = 10,200 + SetFrame = 11,11 + SetX = 11,-257 + SetY = 11,159 + SetOpacity = 11,100 + SetFrame = 12,10 + SetX = 12,-261 + SetY = 12,168 + SetOpacity = 12,50 + SetVisible = 13,false + + Play = 0,Psycho Cut +#------------------------------- +[OppMove,PSYCHOCUT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Psycho Cut + Focus = UserAndTarget + SetFrame = 0,12 + SetX = 0,-9 + SetY = 0,-23 + SetZ = 0,28 + SetOpacity = 0,128 + SetFrame = 1,11 + SetX = 1,7 + SetY = 1,-45 + SetOpacity = 1,255 + SetFrame = 2,10 + SetX = 2,10 + SetY = 2,-65 + SetFrame = 3,8 + SetX = 3,3 + SetY = 3,-84 + SetFrame = 4,7 + SetX = 4,-9 + SetY = 4,-95 + SetFrame = 5,6 + SetX = 5,-21 + SetY = 5,-78 + SetFrame = 6,5 + SetX = 6,-25 + SetY = 6,-54 + SetFrame = 7,13 + SetX = 7,-24 + SetY = 7,-42 + SetFrame = 8,12 + SetX = 8,-9 + SetY = 8,-23 + SetFrame = 9,11 + SetX = 9,7 + SetY = 9,-45 + SetFrame = 10,0 + SetFlip = 10,true + SetX = 10,27 + SetY = 10,-73 + SetOpacity = 10,128 + SetFrame = 11,2 + SetX = 11,50 + SetY = 11,-106 + SetOpacity = 11,255 + SetFrame = 12,1 + SetX = 12,67 + SetY = 12,-115 + SetZoomX = 12,125 + SetZoomY = 12,125 + SetFrame = 13,2 + SetX = 13,78 + SetY = 13,-135 + SetZoomX = 13,150 + SetZoomY = 13,150 + SetFrame = 14,1 + SetX = 14,103 + SetY = 14,-148 + SetZoomX = 14,160 + SetZoomY = 14,160 + SetFrame = 15,2 + SetX = 15,125 + SetY = 15,-175 + SetZoomX = 15,170 + SetZoomY = 15,170 + SetFrame = 16,1 + SetX = 16,153 + SetY = 16,-185 + SetZoomX = 16,180 + SetZoomY = 16,180 + SetOpacity = 16,192 + SetFrame = 17,2 + SetX = 17,182 + SetY = 17,-226 + SetOpacity = 17,128 + SetX = 18,210 + SetY = 18,-262 + SetOpacity = 18,64 + + Graphic = Examples/Psycho Cut + Focus = UserAndTarget + SetFrame = 0,15 + SetX = 0,-3 + SetY = 0,-46 + SetZ = 0,27 + SetOpacity = 0,128 + SetAngle = 1,45 + SetOpacity = 1,255 + SetAngle = 2,90 + SetAngle = 3,135 + SetAngle = 4,180 + SetAngle = 5,225 + SetAngle = 6,270 + SetAngle = 7,316 + SetAngle = 8,0 + SetAngle = 9,45 + SetAngle = 10,90 + SetAngle = 11,135 + SetAngle = 12,180 + SetAngle = 13,225 + SetAngle = 14,270 + SetAngle = 15,315 + SetOpacity = 15,170 + SetAngle = 16,0 + SetOpacity = 16,85 + SetVisible = 17,false + + Play = 0,Psycho Cut diff --git a/PBS/Animations/Example anims/Move/QUICKATTACK.txt b/PBS/Animations/Example anims/Move/QUICKATTACK.txt new file mode 100644 index 000000000..82407ce21 --- /dev/null +++ b/PBS/Animations/Example anims/Move/QUICKATTACK.txt @@ -0,0 +1,73 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,QUICKATTACK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + SetOpacity = 1,170 + SetOpacity = 2,85 + SetOpacity = 6,255 + + SetX = 0,0 + SetY = 0,0 + + Graphic = USER + Focus = User + SetX = 1,-52 + SetY = 1,6 + SetZ = 1,27 + SetOpacity = 2,170 + SetOpacity = 3,85 + SetVisible = 4,false + + Graphic = USER + Focus = User + SetX = 2,-69 + SetY = 2,34 + SetZ = 2,28 + SetOpacity = 3,170 + SetOpacity = 4,85 + SetVisible = 5,false + + Graphic = USER + Focus = User + SetX = 3,-28 + SetY = 3,48 + SetZ = 3,29 + SetZ = 4,4 + SetOpacity = 4,170 + SetOpacity = 5,85 + SetVisible = 6,false + + Graphic = USER + Focus = User + SetX = 4,35 + SetY = 4,35 + SetZ = 4,30 + SetZ = 5,5 + SetOpacity = 5,170 + SetOpacity = 6,85 + SetVisible = 7,false + + Graphic = USER + Focus = User + SetX = 5,12 + SetY = 5,6 + SetZ = 5,31 + SetZ = 6,6 + SetOpacity = 6,170 + SetOpacity = 7,85 + SetVisible = 8,false + + Graphic = Examples/Tackle_B + Focus = Target + SetX = 7,0 + SetY = 7,0 + SetZ = 7,27 + SetOpacity = 7,128 + SetOpacity = 8,255 + SetOpacity = 11,128 + SetVisible = 12,false + + Play = 7,Blow4 diff --git a/PBS/Animations/Example anims/Move/RAINDANCE.txt b/PBS/Animations/Example anims/Move/RAINDANCE.txt new file mode 100644 index 000000000..caf99aef1 --- /dev/null +++ b/PBS/Animations/Example anims/Move/RAINDANCE.txt @@ -0,0 +1,297 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,RAINDANCE] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,197 + SetY = 0,25 + SetZ = 0,27 + SetX = 1,72 + SetY = 1,49 + SetX = 2,60 + SetY = 2,42 + SetX = 3,43 + SetY = 3,62 + SetY = 4,66 + SetX = 5,480 + SetY = 5,78 + SetX = 6,201 + SetY = 6,65 + SetX = 7,80 + SetY = 7,62 + SetX = 8,265 + SetY = 8,218 + SetX = 9,99 + SetY = 9,55 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,275 + SetY = 0,47 + SetZ = 0,28 + SetX = 1,229 + SetY = 1,216 + SetX = 2,193 + SetY = 2,131 + SetX = 3,205 + SetY = 3,111 + SetX = 4,122 + SetY = 4,73 + SetX = 5,361 + SetY = 5,34 + SetX = 6,278 + SetY = 6,211 + SetX = 7,239 + SetY = 7,122 + SetX = 8,398 + SetY = 8,251 + SetX = 9,253 + SetY = 9,148 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,355 + SetY = 0,51 + SetZ = 0,29 + SetX = 1,109 + SetY = 1,217 + SetX = 2,265 + SetY = 2,233 + SetX = 3,289 + SetY = 3,227 + SetX = 4,148 + SetY = 4,143 + SetX = 5,404 + SetY = 5,152 + SetX = 6,397 + SetY = 6,257 + SetX = 7,172 + SetY = 7,23 + SetX = 8,270 + SetY = 8,110 + SetX = 9,254 + SetY = 9,274 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,450 + SetY = 0,50 + SetZ = 0,30 + SetX = 1,223 + SetY = 1,110 + SetX = 2,228 + SetY = 2,82 + SetX = 3,279 + SetY = 3,63 + SetX = 4,203 + SetY = 4,141 + SetX = 5,274 + SetY = 5,69 + SetX = 6,478 + SetY = 6,170 + SetX = 7,25 + SetY = 7,169 + SetX = 8,491 + SetY = 8,59 + SetX = 9,418 + SetY = 9,243 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,83 + SetY = 0,81 + SetZ = 0,31 + SetX = 1,399 + SetY = 1,120 + SetX = 2,350 + SetY = 2,43 + SetX = 3,31 + SetY = 3,176 + SetX = 4,101 + SetY = 4,242 + SetX = 5,54 + SetY = 5,71 + SetX = 6,480 + SetY = 6,53 + SetX = 7,263 + SetY = 7,251 + SetX = 8,492 + SetY = 8,204 + SetX = 9,181 + SetY = 9,238 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,231 + SetY = 0,170 + SetZ = 0,32 + SetX = 1,480 + SetY = 1,83 + SetX = 2,399 + SetY = 2,154 + SetX = 3,475 + SetY = 3,231 + SetX = 4,185 + SetY = 4,249 + SetX = 5,155 + SetY = 5,126 + SetX = 6,28 + SetY = 6,111 + SetX = 7,146 + SetY = 7,249 + SetX = 8,91 + SetY = 8,63 + SetX = 9,108 + SetY = 9,245 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,352 + SetY = 0,212 + SetZ = 0,33 + SetX = 1,362 + SetY = 1,63 + SetX = 2,488 + SetY = 2,60 + SetX = 3,482 + SetY = 3,85 + SetX = 4,290 + SetY = 4,114 + SetX = 5,210 + SetY = 5,242 + SetX = 6,119 + SetY = 6,59 + SetX = 7,29 + SetY = 7,266 + SetX = 8,35 + SetY = 8,173 + SetX = 9,25 + SetY = 9,205 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,2 + SetX = 0,467 + SetY = 0,254 + SetZ = 0,34 + SetX = 1,376 + SetY = 1,192 + SetX = 2,434 + SetY = 2,253 + SetX = 3,381 + SetY = 3,12 + SetX = 4,440 + SetY = 4,119 + SetX = 5,55 + SetY = 5,232 + SetX = 6,77 + SetY = 6,215 + SetX = 7,367 + SetY = 7,134 + SetX = 8,187 + SetY = 8,144 + SetX = 9,148 + SetY = 9,25 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 1,2 + SetX = 1,482 + SetY = 1,244 + SetZ = 1,35 + SetX = 2,121 + SetY = 2,249 + SetX = 3,382 + SetY = 3,209 + SetX = 4,378 + SetY = 4,150 + SetX = 5,422 + SetY = 5,252 + SetVisible = 6,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 2,2 + SetX = 2,27 + SetY = 2,241 + SetZ = 2,36 + SetX = 3,88 + SetY = 3,177 + SetX = 4,337 + SetY = 4,243 + SetX = 5,319 + SetY = 5,241 + SetVisible = 6,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 4,2 + SetX = 4,409 + SetY = 4,203 + SetZ = 4,37 + SetVisible = 5,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 7,2 + SetX = 7,471 + SetY = 7,126 + SetZ = 7,35 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 7,2 + SetX = 7,363 + SetY = 7,237 + SetZ = 7,36 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 7,2 + SetX = 7,443 + SetY = 7,194 + SetZ = 7,37 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,2 + SetX = 9,247 + SetY = 9,72 + SetZ = 9,35 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,2 + SetX = 9,365 + SetY = 9,42 + SetZ = 9,36 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,2 + SetX = 9,479 + SetY = 9,180 + SetZ = 9,37 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,2 + SetX = 9,474 + SetY = 9,41 + SetZ = 9,38 diff --git a/PBS/Animations/Example anims/Move/RAZORLEAF.txt b/PBS/Animations/Example anims/Move/RAZORLEAF.txt new file mode 100644 index 000000000..f2d14ebf7 --- /dev/null +++ b/PBS/Animations/Example anims/Move/RAZORLEAF.txt @@ -0,0 +1,179 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,RAZORLEAF] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/grass + Focus = UserAndTarget + SetFrame = 1,1 + SetX = 1,12 + SetY = 1,-31 + SetZ = 1,27 + SetFrame = 2,5 + SetX = 2,36 + SetY = 2,-62 + SetFrame = 3,6 + SetX = 3,64 + SetY = 3,-103 + SetFrame = 4,7 + SetX = 4,109 + SetY = 4,-143 + SetFrame = 5,1 + SetX = 5,158 + SetY = 5,-168 + SetFrame = 6,6 + SetX = 6,114 + SetY = 6,-140 + SetFrame = 7,7 + SetX = 7,158 + SetY = 7,-168 + SetFrame = 8,5 + SetX = 8,85 + SetY = 8,-100 + SetFrame = 9,6 + SetX = 9,109 + SetY = 9,-131 + SetFrame = 10,7 + SetX = 10,158 + SetY = 10,-168 + SetFrame = 11,2 + SetX = 11,154 + SetY = 11,-71 + SetFrame = 12,0 + SetX = 12,158 + SetY = 12,-168 + + Graphic = Examples/grass + Focus = UserAndTarget + SetX = 2,20 + SetY = 2,-162 + SetZ = 2,28 + SetX = 3,-3 + SetY = 3,-181 + SetFrame = 4,1 + SetX = 4,28 + SetY = 4,-81 + SetFrame = 5,5 + SetX = 5,73 + SetY = 5,-109 + SetFrame = 6,0 + SetX = 6,53 + SetY = 6,-200 + SetFrame = 7,1 + SetX = 7,44 + SetY = 7,-81 + SetFrame = 8,0 + SetX = 8,-7 + SetY = 8,-171 + SetFrame = 9,2 + SetX = 9,68 + SetY = 9,-175 + SetX = 10,57 + SetY = 10,-146 + SetVisible = 11,false + + Graphic = Examples/grass + Focus = UserAndTarget + SetFrame = 3,2 + SetX = 3,101 + SetY = 3,-25 + SetZ = 3,29 + SetX = 4,105 + SetY = 4,28 + SetX = 5,36 + SetY = 5,-225 + SetX = 6,121 + SetY = 6,-21 + SetFrame = 7,0 + SetX = 7,81 + SetY = 7,-15 + SetFrame = 8,3 + SetX = 8,114 + SetY = 8,71 + SetVisible = 9,false + + Graphic = Examples/grass + Focus = UserAndTarget + SetFrame = 4,3 + SetX = 4,64 + SetY = 4,-228 + SetZ = 4,30 + SetX = 5,-7 + SetY = 5,-71 + SetX = 6,162 + SetY = 6,-103 + SetX = 7,182 + SetY = 7,-75 + SetVisible = 8,false + + Graphic = Examples/grass + Focus = UserAndTarget + SetX = 4,162 + SetY = 4,-90 + SetZ = 4,31 + SetFrame = 5,2 + SetX = 5,138 + SetY = 5,90 + SetVisible = 6,false + + Graphic = Examples/grass + Focus = UserAndTarget + SetFrame = 4,2 + SetX = 4,20 + SetY = 4,-137 + SetZ = 4,32 + SetFrame = 5,0 + SetX = 5,170 + SetY = 5,-46 + SetVisible = 6,false + + Graphic = Examples/grass + Focus = UserAndTarget + SetFrame = 5,2 + SetX = 5,68 + SetY = 5,-200 + SetZ = 5,33 + SetVisible = 6,false + + Graphic = Examples/grass + Focus = UserAndTarget + SetFrame = 5,3 + SetX = 5,117 + SetY = 5,-125 + SetZ = 5,34 + SetVisible = 6,false + + Graphic = Examples/grass + Focus = UserAndTarget + SetFrame = 7,2 + SetX = 7,125 + SetY = 7,-181 + SetZ = 7,31 + SetVisible = 8,false + + Graphic = Examples/grass + Focus = UserAndTarget + SetX = 7,20 + SetY = 7,-175 + SetZ = 7,32 + SetVisible = 8,false + + Graphic = Examples/grass + Focus = UserAndTarget + SetFrame = 10,3 + SetX = 10,178 + SetY = 10,-65 + SetZ = 10,29 + SetVisible = 11,false + + Play = 1,Slash8,80 + Play = 3,Slash8,80 + Play = 6,Slash8,80 + Play = 8,Slash8,80 + Play = 10,Slash8,80 diff --git a/PBS/Animations/Example anims/Move/REFLECT.txt b/PBS/Animations/Example anims/Move/REFLECT.txt new file mode 100644 index 000000000..f2e98a5d7 --- /dev/null +++ b/PBS/Animations/Example anims/Move/REFLECT.txt @@ -0,0 +1,95 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,REFLECT] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal2 + Focus = User + SetX = 1,-56 + SetY = 1,-114 + SetZ = 1,28 + SetX = 2,-80 + SetY = 2,-74 + SetX = 3,-96 + SetY = 3,-10 + SetOpacity = 3,200 + SetX = 4,-88 + SetY = 4,62 + SetOpacity = 4,255 + SetX = 5,-104 + SetY = 5,118 + SetX = 6,32 + SetY = 6,142 + SetX = 7,-72 + SetY = 7,126 + + Graphic = Examples/normal2 + Focus = User + SetX = 1,80 + SetY = 1,-106 + SetZ = 1,29 + SetX = 2,104 + SetY = 2,-58 + SetX = 3,96 + SetY = 3,-2 + SetX = 4,128 + SetY = 4,62 + SetX = 5,112 + SetY = 5,134 + SetX = 6,-48 + SetY = 6,54 + SetX = 7,48 + SetY = 7,134 + + Graphic = Examples/normal2 + Focus = User + SetX = 2,8 + SetY = 2,-114 + SetZ = 2,30 + SetY = 3,-74 + SetX = 4,40 + SetY = 4,6 + SetX = 5,-8 + SetY = 5,70 + SetX = 6,80 + SetY = 6,30 + SetVisible = 7,false + + Graphic = Examples/normal2 + Focus = User + SetX = 3,-56 + SetY = 3,-114 + SetZ = 3,31 + SetX = 4,-32 + SetY = 4,-58 + SetX = 5,-64 + SetY = 5,-18 + SetVisible = 6,false + + Graphic = Examples/normal2 + Focus = User + SetX = 4,48 + SetY = 4,-106 + SetZ = 4,32 + SetX = 5,16 + SetY = 5,-42 + SetVisible = 6,false + + Graphic = Examples/normal2 + Focus = User + SetFrame = 0,11 + SetX = 0,-8 + SetY = 0,-10 + SetZ = 0,27 + SetOpacity = 0,75 + SetOpacity = 1,100 + SetOpacity = 2,150 + SetOpacity = 3,255 + SetOpacity = 6,150 + SetOpacity = 7,100 + + Play = 0,Saint7,80 diff --git a/PBS/Animations/Example anims/Move/REST.txt b/PBS/Animations/Example anims/Move/REST.txt new file mode 100644 index 000000000..6ce812696 --- /dev/null +++ b/PBS/Animations/Example anims/Move/REST.txt @@ -0,0 +1,38 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,REST] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = User + SetFrame = 0,20 + SetX = 0,-27 + SetY = 0,-29 + SetZ = 0,27 + SetX = 1,-46 + SetY = 1,-47 + SetX = 2,-64 + SetY = 2,-66 + SetX = 3,-77 + SetY = 3,-75 + SetFrame = 4,21 + SetX = 4,-67 + SetY = 4,-58 + SetFrame = 5,22 + SetX = 5,-90 + SetY = 5,-95 + SetFrame = 6,20 + SetX = 6,-36 + SetY = 6,-46 + SetFrame = 7,21 + SetX = 7,-54 + SetY = 7,-59 + SetFrame = 8,22 + SetX = 8,-76 + SetY = 8,-86 + + Play = 0,Refresh,80 diff --git a/PBS/Animations/Example anims/Move/ROAR.txt b/PBS/Animations/Example anims/Move/ROAR.txt new file mode 100644 index 000000000..6cf93c9e6 --- /dev/null +++ b/PBS/Animations/Example anims/Move/ROAR.txt @@ -0,0 +1,104 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ROAR] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Growl + Focus = Target + SetX = 0,-191 + SetY = 0,119 + SetZ = 0,29 + SetAngle = 0,10 + SetX = 1,-170 + SetY = 1,98 + SetX = 2,-156 + SetY = 2,80 + SetX = 3,-111 + SetY = 3,57 + SetX = 4,-83 + SetY = 4,59 + + Graphic = Examples/Growl + Focus = Target + SetFrame = 0,1 + SetX = 0,-208 + SetY = 0,103 + SetZ = 0,27 + SetX = 1,-194 + SetY = 1,74 + SetX = 2,-170 + SetY = 2,46 + SetX = 3,-132 + SetY = 3,16 + SetX = 4,-102 + SetY = 4,-7 + + Graphic = Examples/Growl + Focus = Target + SetFrame = 0,2 + SetX = 0,-202 + SetY = 0,149 + SetZ = 0,28 + SetX = 1,-175 + SetY = 1,142 + SetAngle = 1,6 + SetX = 2,-161 + SetY = 2,124 + SetX = 3,-126 + SetY = 3,117 + SetX = 4,-92 + SetY = 4,143 + + Play = 0,Wring Out,100,160 +#------------------------------- +[OppMove,ROAR] +Name = Example anim + + + + Graphic = Examples/Growl + Focus = User + SetFrame = 0,1 + SetFlip = 0,true + SetX = 0,-32 + SetY = 0,-26 + SetZ = 0,28 + SetX = 1,-56 + SetY = 1,-30 + SetX = 2,-88 + SetY = 2,-55 + SetX = 3,-136 + SetY = 3,-61 + + Graphic = Examples/Growl + Focus = User + SetFrame = 0,1 + SetX = 0,-32 + SetY = 0,36 + SetZ = 0,29 + SetX = 1,-56 + SetY = 1,49 + SetX = 2,-88 + SetY = 2,68 + SetX = 3,-120 + SetY = 3,104 + + Graphic = Examples/Growl + Focus = User + SetFlip = 0,true + SetX = 0,-40 + SetY = 0,4 + SetZ = 0,27 + SetX = 1,-72 + SetX = 2,-88 + SetY = 2,-4 + SetX = 3,-136 + SetY = 3,12 + + Play = 0,Wring Out,100,160 diff --git a/PBS/Animations/Example anims/Move/ROCKSMASH.txt b/PBS/Animations/Example anims/Move/ROCKSMASH.txt new file mode 100644 index 000000000..1537b5de1 --- /dev/null +++ b/PBS/Animations/Example anims/Move/ROCKSMASH.txt @@ -0,0 +1,23 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ROCKSMASH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/rockice + Focus = Target + SetX = 0,8 + SetY = 0,-10 + SetZ = 0,27 + SetFrame = 3,1 + SetFrame = 4,2 + SetFrame = 5,3 + SetFrame = 6,4 + + Play = 2,Earth1,80 + Play = 2,Blow6,80 diff --git a/PBS/Animations/Example anims/Move/ROCKTHROW.txt b/PBS/Animations/Example anims/Move/ROCKTHROW.txt new file mode 100644 index 000000000..45ccd4ffc --- /dev/null +++ b/PBS/Animations/Example anims/Move/ROCKTHROW.txt @@ -0,0 +1,39 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ROCKTHROW] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Earth1 + Focus = UserAndTarget + SetFrame = 3,1 + SetX = 3,175 + SetY = 3,-178 + SetZ = 3,28 + SetVisible = 4,false + + Graphic = Examples/Earth1 + Focus = UserAndTarget + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetFrame = 1,1 + SetX = 1,54 + SetY = 1,-59 + SetX = 2,139 + SetY = 2,-157 + SetFrame = 3,2 + SetX = 3,175 + SetY = 3,-178 + SetFrame = 4,3 + SetFrame = 5,4 + SetFrame = 6,5 + SetFrame = 7,6 + + Play = 0,throw,80 + Play = 3,Earth1,80 diff --git a/PBS/Animations/Example anims/Move/ROLLINGKICK.txt b/PBS/Animations/Example anims/Move/ROLLINGKICK.txt new file mode 100644 index 000000000..9f065d109 --- /dev/null +++ b/PBS/Animations/Example anims/Move/ROLLINGKICK.txt @@ -0,0 +1,49 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ROLLINGKICK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal1 + Focus = Target + SetFrame = 4,7 + SetX = 4,-24 + SetY = 4,-18 + SetZ = 4,28 + SetOpacity = 4,50 + SetX = 5,0 + SetY = 5,-2 + SetX = 6,16 + SetY = 6,14 + SetOpacity = 6,25 + SetVisible = 7,false + + Graphic = Examples/normal1 + Focus = Target + SetFrame = 0,7 + SetX = 0,-152 + SetY = 0,6 + SetZ = 0,27 + SetZoomX = 0,75 + SetZoomY = 0,75 + SetX = 1,-120 + SetY = 1,-42 + SetX = 2,-96 + SetY = 2,-74 + SetX = 3,-72 + SetY = 3,-66 + SetX = 4,-24 + SetY = 4,-18 + SetX = 5,32 + SetY = 5,30 + SetX = 6,56 + SetY = 6,54 + SetX = 7,64 + SetY = 7,62 + + Play = 4,Blow4,80 diff --git a/PBS/Animations/Example anims/Move/SANDATTACK.txt b/PBS/Animations/Example anims/Move/SANDATTACK.txt new file mode 100644 index 000000000..58eb9f735 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SANDATTACK.txt @@ -0,0 +1,627 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SANDATTACK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetX = 0,4 + SetY = 0,87 + SetZ = 0,27 + SetVisible = 1,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 1,2 + SetX = 1,14 + SetY = 1,39 + SetZ = 1,29 + SetX = 2,39 + SetY = 2,0 + SetX = 3,64 + SetY = 3,-40 + SetX = 4,89 + SetY = 4,-79 + SetX = 5,114 + SetY = 5,-118 + SetX = 6,139 + SetY = 6,-157 + SetX = 7,164 + SetY = 7,-196 + SetFrame = 8,0 + SetFlip = 8,true + SetX = 8,-10 + SetY = 8,98 + SetX = 9,14 + SetY = 9,68 + SetX = 10,41 + SetY = 10,26 + SetX = 11,68 + SetY = 11,-14 + SetX = 12,94 + SetY = 12,-54 + SetX = 13,121 + SetY = 13,-96 + SetX = 14,147 + SetY = 14,-135 + SetX = 15,175 + SetY = 15,-178 + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 1,1 + SetX = 1,4 + SetY = 1,9 + SetZ = 1,30 + SetX = 2,33 + SetY = 2,-25 + SetX = 3,61 + SetY = 3,-59 + SetX = 4,89 + SetY = 4,-93 + SetX = 5,117 + SetY = 5,-128 + SetX = 6,146 + SetY = 6,-162 + SetX = 7,175 + SetY = 7,-196 + SetVisible = 8,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetX = 1,25 + SetY = 1,68 + SetZ = 1,31 + SetX = 2,56 + SetY = 2,34 + SetX = 3,86 + SetY = 3,1 + SetX = 4,117 + SetY = 4,-29 + SetX = 5,147 + SetY = 5,-64 + SetX = 6,178 + SetY = 6,-96 + SetX = 7,209 + SetY = 7,-128 + SetVisible = 8,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 2,2 + SetX = 2,-5 + SetY = 2,68 + SetZ = 2,27 + SetFrame = 3,0 + SetX = 3,29 + SetY = 3,39 + SetX = 4,56 + SetY = 4,0 + SetX = 5,83 + SetY = 5,-37 + SetX = 6,109 + SetY = 6,-75 + SetX = 7,135 + SetY = 7,-110 + SetX = 8,162 + SetY = 8,-150 + SetX = 9,189 + SetY = 9,-187 + SetVisible = 10,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetX = 3,39 + SetY = 3,57 + SetZ = 3,28 + SetX = 4,69 + SetY = 4,25 + SetX = 5,100 + SetY = 5,-7 + SetX = 6,129 + SetY = 6,-40 + SetX = 7,159 + SetY = 7,-73 + SetX = 8,189 + SetY = 8,-104 + SetX = 9,219 + SetY = 9,-139 + SetVisible = 10,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 3,2 + SetX = 3,19 + SetY = 3,28 + SetZ = 3,32 + SetX = 4,49 + SetY = 4,-7 + SetX = 5,78 + SetY = 5,-43 + SetX = 6,107 + SetY = 6,-79 + SetX = 7,135 + SetY = 7,-115 + SetX = 8,165 + SetY = 8,-151 + SetX = 9,194 + SetY = 9,-187 + SetVisible = 10,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 4,1 + SetX = 4,-10 + SetY = 4,57 + SetZ = 4,33 + SetX = 5,4 + SetY = 5,28 + SetX = 6,33 + SetY = 6,-14 + SetX = 7,61 + SetY = 7,-57 + SetX = 8,89 + SetY = 8,-98 + SetX = 9,117 + SetY = 9,-140 + SetX = 10,146 + SetY = 10,-184 + SetX = 11,175 + SetY = 11,-226 + SetVisible = 12,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetX = 5,29 + SetY = 5,78 + SetZ = 5,34 + SetX = 6,59 + SetY = 6,39 + SetX = 7,88 + SetY = 7,0 + SetX = 8,117 + SetY = 8,-40 + SetX = 9,146 + SetY = 9,-79 + SetX = 10,175 + SetY = 10,-118 + SetX = 11,204 + SetY = 11,-157 + SetVisible = 12,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 5,2 + SetX = 5,25 + SetY = 5,68 + SetZ = 5,35 + SetX = 6,56 + SetY = 6,29 + SetX = 7,86 + SetY = 7,-7 + SetX = 8,117 + SetY = 8,-45 + SetX = 9,147 + SetY = 9,-82 + SetX = 10,178 + SetY = 10,-120 + SetX = 11,209 + SetY = 11,-157 + SetVisible = 12,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 6,2 + SetX = 6,-5 + SetY = 6,78 + SetZ = 6,36 + SetX = 7,14 + SetY = 7,39 + SetX = 8,41 + SetY = 8,-3 + SetX = 9,68 + SetY = 9,-43 + SetX = 10,94 + SetY = 10,-84 + SetX = 11,121 + SetY = 11,-125 + SetX = 12,147 + SetY = 12,-165 + SetX = 13,175 + SetY = 13,-207 + SetVisible = 14,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetX = 7,34 + SetY = 7,68 + SetZ = 7,37 + SetX = 8,63 + SetY = 8,29 + SetX = 9,91 + SetY = 9,-7 + SetX = 10,119 + SetY = 10,-45 + SetX = 11,147 + SetY = 11,-82 + SetX = 12,175 + SetY = 12,-120 + SetX = 13,204 + SetY = 13,-157 + SetVisible = 14,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetX = 7,39 + SetY = 7,78 + SetZ = 7,38 + SetX = 8,71 + SetY = 8,43 + SetX = 9,100 + SetY = 9,9 + SetX = 10,132 + SetY = 10,-25 + SetX = 11,162 + SetY = 11,-59 + SetX = 12,193 + SetY = 12,-93 + SetX = 13,225 + SetY = 13,-128 + SetVisible = 14,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 9,2 + SetX = 9,25 + SetY = 9,57 + SetZ = 9,30 + SetX = 10,53 + SetY = 10,17 + SetX = 11,81 + SetY = 11,-23 + SetX = 12,109 + SetY = 12,-64 + SetX = 13,137 + SetY = 13,-104 + SetX = 14,165 + SetY = 14,-145 + SetX = 15,194 + SetY = 15,-187 + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 9,1 + SetFlip = 9,true + SetX = 9,39 + SetY = 9,39 + SetZ = 9,31 + SetX = 10,71 + SetY = 10,1 + SetX = 11,100 + SetY = 11,-34 + SetX = 12,132 + SetY = 12,-70 + SetX = 13,162 + SetY = 13,-104 + SetX = 14,193 + SetY = 14,-140 + SetX = 15,225 + SetY = 15,-178 + + Play = 0,Sand +#------------------------------- +[OppMove,SANDATTACK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 0,2 + SetX = 0,5 + SetY = 0,-46 + SetZ = 0,27 + SetX = 1,25 + SetY = 1,-71 + SetX = 2,54 + SetY = 2,-98 + SetX = 3,84 + SetY = 3,-125 + SetX = 4,112 + SetY = 4,-153 + SetX = 5,141 + SetY = 5,-179 + SetX = 6,171 + SetY = 6,-206 + SetX = 7,200 + SetY = 7,-234 + SetFrame = 8,0 + SetX = 8,15 + SetY = 8,-71 + SetAngle = 8,270 + SetX = 9,50 + SetY = 9,-90 + SetX = 10,78 + SetY = 10,-110 + SetX = 11,105 + SetY = 11,-129 + SetX = 12,132 + SetY = 12,-150 + SetX = 13,160 + SetY = 13,-170 + SetX = 14,187 + SetY = 14,-189 + SetX = 15,215 + SetY = 15,-209 + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 1,1 + SetX = 1,35 + SetY = 1,-42 + SetZ = 1,28 + SetX = 2,65 + SetY = 2,-65 + SetX = 3,95 + SetY = 3,-89 + SetX = 4,125 + SetY = 4,-112 + SetX = 5,155 + SetY = 5,-135 + SetX = 6,185 + SetY = 6,-159 + SetX = 7,215 + SetY = 7,-184 + SetVisible = 8,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetX = 1,25 + SetY = 1,-71 + SetZ = 1,29 + SetX = 2,55 + SetY = 2,-92 + SetX = 3,85 + SetY = 3,-112 + SetX = 4,115 + SetY = 4,-132 + SetX = 5,145 + SetY = 5,-153 + SetX = 6,175 + SetY = 6,-173 + SetX = 7,205 + SetY = 7,-193 + SetVisible = 8,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 2,1 + SetX = 2,10 + SetY = 2,-31 + SetZ = 2,30 + SetX = 3,45 + SetY = 3,-51 + SetX = 4,72 + SetY = 4,-73 + SetX = 5,100 + SetY = 5,-95 + SetX = 6,128 + SetY = 6,-115 + SetX = 7,155 + SetY = 7,-135 + SetX = 8,182 + SetY = 8,-157 + SetX = 9,210 + SetY = 9,-179 + SetVisible = 10,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetX = 3,35 + SetY = 3,-81 + SetZ = 3,31 + SetX = 4,64 + SetY = 4,-98 + SetX = 5,92 + SetY = 5,-112 + SetX = 6,120 + SetY = 6,-129 + SetX = 7,148 + SetY = 7,-146 + SetX = 8,176 + SetY = 8,-162 + SetX = 9,205 + SetY = 9,-179 + SetVisible = 10,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 3,2 + SetX = 3,35 + SetY = 3,-81 + SetZ = 3,32 + SetX = 4,62 + SetY = 4,-106 + SetX = 5,89 + SetY = 5,-132 + SetX = 6,115 + SetY = 6,-159 + SetX = 7,141 + SetY = 7,-185 + SetX = 8,168 + SetY = 8,-210 + SetX = 9,195 + SetY = 9,-239 + SetVisible = 10,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetX = 4,-9 + SetY = 4,-71 + SetZ = 4,33 + SetX = 5,25 + SetY = 5,-110 + SetX = 6,52 + SetY = 6,-132 + SetX = 7,78 + SetY = 7,-156 + SetX = 8,105 + SetY = 8,-179 + SetX = 9,131 + SetY = 9,-201 + SetX = 10,158 + SetY = 10,-225 + SetX = 11,185 + SetY = 11,-248 + SetVisible = 12,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 5,2 + SetX = 5,40 + SetY = 5,-71 + SetZ = 5,34 + SetX = 6,68 + SetY = 6,-90 + SetX = 7,96 + SetY = 7,-110 + SetX = 8,125 + SetY = 8,-129 + SetX = 9,153 + SetY = 9,-150 + SetX = 10,181 + SetY = 10,-170 + SetX = 11,210 + SetY = 11,-189 + SetVisible = 12,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetX = 5,35 + SetY = 5,-81 + SetZ = 5,35 + SetX = 6,64 + SetY = 6,-98 + SetX = 7,93 + SetY = 7,-112 + SetX = 8,122 + SetY = 8,-129 + SetX = 9,151 + SetY = 9,-146 + SetX = 10,181 + SetY = 10,-162 + SetX = 11,210 + SetY = 11,-179 + SetVisible = 12,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFlip = 6,true + SetX = 6,5 + SetY = 6,-71 + SetZ = 6,36 + SetX = 7,40 + SetY = 7,-90 + SetX = 8,68 + SetY = 8,-110 + SetX = 9,96 + SetY = 9,-129 + SetX = 10,125 + SetY = 10,-150 + SetX = 11,153 + SetY = 11,-170 + SetX = 12,180 + SetY = 12,-189 + SetX = 13,210 + SetY = 13,-209 + SetVisible = 14,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 7,2 + SetX = 7,45 + SetY = 7,-51 + SetZ = 7,37 + SetX = 8,74 + SetY = 8,-68 + SetX = 9,101 + SetY = 9,-84 + SetX = 10,130 + SetY = 10,-101 + SetX = 11,158 + SetY = 11,-117 + SetX = 12,186 + SetY = 12,-132 + SetX = 13,215 + SetY = 13,-150 + SetVisible = 14,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 7,1 + SetFlip = 7,true + SetX = 7,20 + SetY = 7,-60 + SetZ = 7,38 + SetX = 8,47 + SetY = 8,-85 + SetX = 9,75 + SetY = 9,-110 + SetX = 10,103 + SetY = 10,-135 + SetX = 11,130 + SetY = 11,-159 + SetX = 12,157 + SetY = 12,-184 + SetX = 13,185 + SetY = 13,-209 + SetVisible = 14,false + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetX = 9,35 + SetY = 9,-90 + SetZ = 9,28 + SetX = 10,64 + SetY = 10,-106 + SetX = 11,92 + SetY = 11,-120 + SetX = 12,120 + SetY = 12,-135 + SetX = 13,148 + SetY = 13,-150 + SetX = 14,176 + SetY = 14,-164 + SetX = 15,205 + SetY = 15,-179 + + Graphic = Examples/Sand-Attack + Focus = UserAndTarget + SetFrame = 9,2 + SetX = 9,35 + SetY = 9,-90 + SetZ = 9,29 + SetX = 10,62 + SetY = 10,-112 + SetX = 11,90 + SetY = 11,-135 + SetX = 12,117 + SetY = 12,-159 + SetX = 13,145 + SetY = 13,-181 + SetX = 14,172 + SetY = 14,-204 + SetX = 15,200 + SetY = 15,-228 + + Play = 0,Sand diff --git a/PBS/Animations/Example anims/Move/SANDSTORM.txt b/PBS/Animations/Example anims/Move/SANDSTORM.txt new file mode 100644 index 000000000..2d12b1b84 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SANDSTORM.txt @@ -0,0 +1,411 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SANDSTORM] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,-350 + SetY = 0,-30 + SetZ = 0,27 + SetX = 1,153 + SetY = 1,62 + SetX = 2,-350 + SetY = 2,-30 + SetX = 3,153 + SetY = 3,62 + SetX = 4,139 + SetY = 4,48 + SetX = 5,-350 + SetY = 5,-30 + SetX = 6,153 + SetY = 6,62 + SetX = 7,-350 + SetY = 7,-30 + SetX = 8,153 + SetY = 8,62 + SetX = 9,32 + SetY = 9,252 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,31 + SetY = 0,69 + SetZ = 0,28 + SetX = 1,56 + SetY = 1,85 + SetX = 2,31 + SetY = 2,69 + SetX = 3,56 + SetY = 3,85 + SetX = 4,42 + SetY = 4,82 + SetX = 5,31 + SetY = 5,69 + SetX = 6,56 + SetY = 6,85 + SetX = 7,31 + SetY = 7,69 + SetX = 8,56 + SetY = 8,85 + SetX = 9,119 + SetY = 9,175 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,156 + SetY = 0,106 + SetZ = 0,29 + SetX = 1,74 + SetY = 1,223 + SetX = 2,156 + SetY = 2,106 + SetX = 3,74 + SetY = 3,223 + SetX = 4,157 + SetY = 4,167 + SetX = 5,156 + SetY = 5,106 + SetX = 6,74 + SetY = 6,223 + SetX = 7,156 + SetY = 7,106 + SetX = 8,74 + SetY = 8,223 + SetX = 9,143 + SetY = 9,267 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,165 + SetY = 0,220 + SetZ = 0,30 + SetX = 1,220 + SetY = 1,207 + SetX = 2,165 + SetY = 2,220 + SetX = 3,220 + SetY = 3,207 + SetX = 4,58 + SetY = 4,225 + SetX = 5,165 + SetY = 5,220 + SetX = 6,220 + SetY = 6,207 + SetX = 7,165 + SetY = 7,220 + SetX = 8,220 + SetY = 8,207 + SetX = 9,222 + SetY = 9,197 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,267 + SetY = 0,178 + SetZ = 0,31 + SetX = 1,352 + SetY = 1,253 + SetX = 2,267 + SetY = 2,178 + SetX = 3,352 + SetY = 3,253 + SetX = 4,178 + SetY = 4,273 + SetX = 5,267 + SetY = 5,178 + SetX = 6,352 + SetY = 6,253 + SetX = 7,267 + SetY = 7,178 + SetX = 8,352 + SetY = 8,253 + SetX = 9,162 + SetY = 9,82 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,309 + SetY = 0,248 + SetZ = 0,32 + SetX = 1,464 + SetY = 1,227 + SetX = 2,309 + SetY = 2,248 + SetX = 3,464 + SetY = 3,227 + SetX = 4,284 + SetY = 4,217 + SetX = 5,309 + SetY = 5,248 + SetX = 6,464 + SetY = 6,227 + SetX = 7,309 + SetY = 7,248 + SetX = 8,464 + SetY = 8,227 + SetX = 9,49 + SetY = 9,61 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,388 + SetY = 0,142 + SetZ = 0,33 + SetX = 1,484 + SetY = 1,76 + SetX = 2,388 + SetY = 2,142 + SetX = 3,484 + SetY = 3,76 + SetX = 4,377 + SetY = 4,143 + SetX = 5,388 + SetY = 5,142 + SetX = 6,484 + SetY = 6,76 + SetX = 7,388 + SetY = 7,142 + SetX = 8,484 + SetY = 8,76 + SetX = 9,21 + SetY = 9,158 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,448 + SetY = 0,243 + SetZ = 0,34 + SetX = 1,378 + SetY = 1,130 + SetX = 2,448 + SetY = 2,243 + SetX = 3,378 + SetY = 3,130 + SetX = 4,403 + SetY = 4,259 + SetX = 5,448 + SetY = 5,243 + SetX = 6,378 + SetY = 6,130 + SetX = 7,448 + SetY = 7,243 + SetX = 8,378 + SetY = 8,130 + SetX = 9,350 + SetY = 9,240 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,35 + SetY = 0,216 + SetZ = 0,35 + SetX = 1,285 + SetY = 1,142 + SetX = 2,35 + SetY = 2,216 + SetX = 3,285 + SetY = 3,142 + SetX = 4,500 + SetY = 4,230 + SetX = 5,35 + SetY = 5,216 + SetX = 6,285 + SetY = 6,142 + SetX = 7,35 + SetY = 7,216 + SetX = 8,285 + SetY = 8,142 + SetX = 9,481 + SetY = 9,206 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,276 + SetY = 0,34 + SetZ = 0,36 + SetX = 1,316 + SetY = 1,22 + SetX = 2,276 + SetY = 2,34 + SetX = 3,316 + SetY = 3,22 + SetX = 4,481 + SetY = 4,77 + SetX = 5,276 + SetY = 5,34 + SetX = 6,316 + SetY = 6,22 + SetX = 7,276 + SetY = 7,34 + SetX = 8,316 + SetY = 8,22 + SetX = 9,456 + SetY = 9,64 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,487 + SetY = 0,32 + SetZ = 0,37 + SetVisible = 1,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,492 + SetY = 0,135 + SetZ = 0,38 + SetVisible = 1,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,387 + SetY = 0,18 + SetZ = 0,39 + SetVisible = 1,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 0,3 + SetX = 0,148 + SetY = 0,9 + SetZ = 0,40 + SetVisible = 1,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 2,3 + SetX = 2,487 + SetY = 2,32 + SetZ = 2,37 + SetVisible = 3,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 2,3 + SetX = 2,492 + SetY = 2,135 + SetZ = 2,38 + SetVisible = 3,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 2,3 + SetX = 2,387 + SetY = 2,18 + SetZ = 2,39 + SetVisible = 3,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 2,3 + SetX = 2,148 + SetY = 2,9 + SetZ = 2,40 + SetVisible = 3,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 4,3 + SetX = 4,358 + SetY = 4,16 + SetZ = 4,37 + SetX = 5,487 + SetY = 5,32 + SetVisible = 6,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 4,3 + SetX = 4,267 + SetY = 4,63 + SetZ = 4,38 + SetX = 5,492 + SetY = 5,135 + SetVisible = 6,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 5,3 + SetX = 5,387 + SetY = 5,18 + SetZ = 5,39 + SetVisible = 6,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 5,3 + SetX = 5,148 + SetY = 5,9 + SetZ = 5,40 + SetVisible = 6,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 7,3 + SetX = 7,487 + SetY = 7,32 + SetZ = 7,37 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 7,3 + SetX = 7,492 + SetY = 7,135 + SetZ = 7,38 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 7,3 + SetX = 7,387 + SetY = 7,18 + SetZ = 7,39 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 7,3 + SetX = 7,148 + SetY = 7,9 + SetZ = 7,40 + SetVisible = 8,false + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,3 + SetX = 9,311 + SetY = 9,55 + SetZ = 9,37 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,3 + SetX = 9,328 + SetY = 9,146 + SetZ = 9,38 + + Graphic = Examples/weather + Focus = Foreground + SetFrame = 9,3 + SetX = 9,251 + SetY = 9,305 + SetZ = 9,39 diff --git a/PBS/Animations/Example anims/Move/SCARYFACE.txt b/PBS/Animations/Example anims/Move/SCARYFACE.txt new file mode 100644 index 000000000..9fcb97680 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SCARYFACE.txt @@ -0,0 +1,36 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SCARYFACE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal2 + Focus = Target + SetFrame = 0,10 + SetX = 0,0 + SetY = 0,6 + SetZ = 0,27 + SetOpacity = 0,150 + SetZoomX = 1,125 + SetZoomY = 1,125 + SetOpacity = 1,200 + SetZoomX = 2,150 + SetZoomY = 2,150 + SetOpacity = 2,255 + SetZoomX = 3,175 + SetZoomY = 3,175 + SetZoomX = 4,200 + SetZoomY = 4,200 + SetZoomX = 5,225 + SetZoomY = 5,225 + SetOpacity = 6,150 + SetZoomX = 7,200 + SetZoomY = 7,200 + SetOpacity = 7,100 + + Play = 2,Stare,80 diff --git a/PBS/Animations/Example anims/Move/SCREECH.txt b/PBS/Animations/Example anims/Move/SCREECH.txt new file mode 100644 index 000000000..24a9eba30 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SCREECH.txt @@ -0,0 +1,59 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SCREECH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Growl + Focus = UserAndTarget + SetFrame = 0,1 + SetX = 0,39 + SetY = 0,-128 + SetZ = 0,28 + SetY = 1,-139 + SetFrame = 2,2 + SetY = 2,18 + SetFrame = 3,1 + SetY = 3,-139 + SetY = 5,-148 + SetY = 6,-139 + SetY = 7,-157 + SetY = 8,-148 + SetY = 9,-139 + + Graphic = Examples/Growl + Focus = UserAndTarget + SetFrame = 0,2 + SetX = 0,39 + SetY = 0,9 + SetZ = 0,29 + SetY = 1,0 + SetFrame = 2,1 + SetY = 2,-148 + SetFrame = 3,2 + SetY = 3,-10 + SetY = 4,18 + SetY = 5,0 + SetY = 6,9 + SetY = 7,0 + SetY = 9,9 + + Graphic = Examples/Growl + Focus = UserAndTarget + SetX = 0,39 + SetY = 0,-59 + SetZ = 0,27 + SetY = 1,-70 + SetY = 2,-50 + SetY = 3,-70 + SetY = 4,-50 + SetY = 6,-70 + SetY = 7,-79 + SetY = 9,-70 + + PlayUserCry = 0 diff --git a/PBS/Animations/Example anims/Move/SELFDESTRUCT.txt b/PBS/Animations/Example anims/Move/SELFDESTRUCT.txt new file mode 100644 index 000000000..eeacc7d57 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SELFDESTRUCT.txt @@ -0,0 +1,138 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SELFDESTRUCT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/030-Explosion01 + Focus = Target + SetX = 0,-88 + SetY = 0,-18 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,5 + SetFrame = 5,6 + SetFrame = 6,5 + SetX = 6,80 + SetY = 6,46 + SetFrame = 7,6 + SetFrame = 8,3 + SetX = 8,-24 + SetY = 8,70 + SetFrame = 9,5 + SetFrame = 10,6 + SetFrame = 11,3 + SetX = 11,-48 + SetY = 11,-26 + SetFrame = 12,5 + SetFrame = 13,6 + SetFrame = 14,5 + SetX = 14,64 + SetY = 14,22 + SetFrame = 15,6 + SetX = 16,-24 + SetY = 16,86 + + Graphic = Examples/030-Explosion01 + Focus = Target + SetX = 2,80 + SetY = 2,46 + SetZ = 2,28 + SetFrame = 3,4 + SetX = 3,-88 + SetY = 3,-18 + SetFrame = 4,2 + SetX = 4,80 + SetY = 4,46 + SetFrame = 5,3 + SetFrame = 6,1 + SetX = 6,-24 + SetY = 6,70 + SetFrame = 7,2 + SetFrame = 8,4 + SetFrame = 9,1 + SetX = 9,-48 + SetY = 9,-26 + SetFrame = 10,2 + SetFrame = 11,4 + SetFrame = 12,2 + SetX = 12,64 + SetY = 12,22 + SetFrame = 13,3 + SetX = 14,-24 + SetY = 14,86 + SetFrame = 15,5 + SetVisible = 16,false + + Graphic = Examples/030-Explosion01 + Focus = Target + SetFrame = 3,1 + SetX = 3,80 + SetY = 3,46 + SetZ = 3,29 + SetVisible = 4,false + + Graphic = Examples/030-Explosion01 + Focus = Target + SetFrame = 5,4 + SetX = 5,80 + SetY = 5,46 + SetZ = 5,29 + SetVisible = 6,false + + Graphic = Examples/030-Explosion01 + Focus = Target + SetX = 5,-24 + SetY = 5,70 + SetZ = 5,30 + SetVisible = 6,false + + Graphic = Examples/030-Explosion01 + Focus = Target + SetX = 8,-48 + SetY = 8,-26 + SetZ = 8,29 + SetVisible = 9,false + + Graphic = Examples/030-Explosion01 + Focus = Target + SetX = 10,64 + SetY = 10,22 + SetZ = 10,29 + SetFrame = 11,1 + SetX = 12,-24 + SetY = 12,86 + SetFrame = 13,4 + SetX = 13,64 + SetY = 13,22 + SetX = 14,-24 + SetY = 14,86 + SetVisible = 15,false + + Graphic = Examples/030-Explosion01 + Focus = Target + SetX = 11,-24 + SetY = 11,78 + SetZ = 11,30 + SetVisible = 12,false + + Graphic = Examples/030-Explosion01 + Focus = Target + SetFrame = 13,2 + SetX = 13,-24 + SetY = 13,86 + SetZ = 13,30 + SetVisible = 14,false + + Play = 0,Explosion1,80 + Play = 3,Explosion2,80 + Play = 6,Explosion3,80 + Play = 10,Explosion4,80 + Play = 12,Explosion7,80 diff --git a/PBS/Animations/Example anims/Move/SHADOWBALL.txt b/PBS/Animations/Example anims/Move/SHADOWBALL.txt new file mode 100644 index 000000000..4e910574f --- /dev/null +++ b/PBS/Animations/Example anims/Move/SHADOWBALL.txt @@ -0,0 +1,66 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SHADOWBALL] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/009-Weapon04 + Focus = UserAndTarget + SetFrame = 7,12 + SetX = 7,105 + SetY = 7,-234 + SetZ = 7,28 + SetZoomX = 7,25 + SetZoomY = 7,25 + SetVisible = 8,false + + Graphic = Examples/009-Weapon04 + Focus = UserAndTarget + SetFrame = 8,11 + SetX = 8,129 + SetY = 8,-215 + SetZ = 8,27 + SetZoomX = 8,50 + SetZoomY = 8,50 + SetOpacity = 8,100 + SetFrame = 9,10 + SetX = 9,146 + SetY = 9,-190 + SetZoomX = 9,100 + SetZoomY = 9,100 + SetOpacity = 9,255 + SetFrame = 10,11 + SetX = 10,150 + SetY = 10,-175 + SetFrame = 11,12 + SetX = 11,158 + SetY = 11,-168 + SetFrame = 12,11 + SetOpacity = 12,100 + SetFrame = 13,10 + SetOpacity = 13,50 + + Graphic = Examples/009-Weapon04 + Focus = UserAndTarget + SetFrame = 1,13 + SetX = 1,12 + SetY = 1,-31 + SetZ = 1,27 + SetX = 2,20 + SetY = 2,-75 + SetX = 3,36 + SetY = 3,-112 + SetX = 4,57 + SetY = 4,-146 + SetX = 5,77 + SetY = 5,-181 + SetX = 6,93 + SetY = 6,-193 + SetVisible = 7,false + + Play = 0,Collapse1,80 diff --git a/PBS/Animations/Example anims/Move/SIGNALBEAM.txt b/PBS/Animations/Example anims/Move/SIGNALBEAM.txt new file mode 100644 index 000000000..cefcfb09b --- /dev/null +++ b/PBS/Animations/Example anims/Move/SIGNALBEAM.txt @@ -0,0 +1,415 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SIGNALBEAM] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Ultra Beam + Focus = Target + SetFrame = 0,1 + SetX = 0,-160 + SetY = 0,54 + SetZ = 0,27 + SetFrame = 1,2 + SetX = 1,-152 + SetY = 1,62 + SetX = 2,-144 + SetY = 2,70 + SetX = 3,-136 + SetY = 3,78 + SetX = 4,-48 + SetY = 4,-50 + SetX = 5,-128 + SetY = 5,86 + SetX = 6,-136 + SetY = 6,78 + SetX = 7,-144 + SetY = 7,70 + SetX = 8,-152 + SetY = 8,54 + SetX = 9,56 + SetY = 9,70 + SetX = 10,48 + SetY = 10,62 + SetX = 11,8 + SetY = 11,30 + SetX = 12,-144 + SetY = 12,62 + SetX = 13,-136 + SetY = 13,70 + SetX = 14,-128 + SetY = 14,78 + SetX = 16,-16 + SetY = 16,-10 + SetX = 17,8 + SetY = 17,38 + SetX = 18,136 + SetY = 18,-74 + SetX = 19,56 + SetY = 19,78 + + Graphic = Examples/Ultra Beam + Focus = Target + SetFrame = 0,2 + SetX = 0,-72 + SetY = 0,62 + SetZ = 0,30 + SetY = 1,46 + SetX = 2,-88 + SetY = 2,14 + SetX = 3,-104 + SetY = 3,6 + SetX = 5,-88 + SetY = 5,30 + SetX = 6,-72 + SetY = 6,38 + SetX = 7,-64 + SetY = 7,54 + SetY = 8,78 + SetY = 10,62 + SetX = 11,-72 + SetY = 11,46 + SetX = 12,-88 + SetY = 12,30 + SetX = 13,-96 + SetY = 13,6 + SetX = 14,-104 + SetY = 14,-2 + SetX = 15,-88 + SetX = 16,-80 + SetY = 16,22 + SetX = 17,-72 + SetY = 17,54 + SetX = 18,-64 + SetY = 18,70 + SetFrame = 19,3 + SetX = 19,-32 + SetY = 19,-42 + + Graphic = Examples/Ultra Beam + Focus = Target + SetFrame = 0,3 + SetX = 0,-120 + SetY = 0,94 + SetZ = 0,32 + SetX = 1,-128 + SetY = 1,86 + SetX = 2,-136 + SetY = 2,78 + SetX = 3,-144 + SetY = 3,70 + SetX = 4,144 + SetY = 4,-66 + SetX = 5,40 + SetY = 5,38 + SetX = 6,24 + SetY = 6,22 + SetX = 7,-112 + SetY = 7,102 + SetX = 8,-104 + SetY = 8,110 + SetX = 9,-40 + SetY = 9,-50 + SetX = 10,-112 + SetY = 10,102 + SetX = 11,16 + SetY = 11,6 + SetX = 12,-128 + SetY = 12,86 + SetX = 13,56 + SetY = 13,54 + SetX = 14,72 + SetY = 14,62 + SetX = 15,56 + SetY = 15,46 + SetX = 16,24 + SetY = 16,22 + SetX = 17,0 + SetY = 17,-2 + SetX = 18,-24 + SetY = 18,-34 + SetFrame = 19,2 + SetX = 19,128 + SetY = 19,22 + + Graphic = Examples/Ultra Beam + Focus = Target + SetFrame = 0,3 + SetX = 0,-80 + SetY = 0,6 + SetZ = 0,35 + SetX = 1,-72 + SetX = 2,-56 + SetY = 2,46 + SetX = 3,-40 + SetY = 3,62 + SetY = 4,70 + SetX = 5,-48 + SetY = 5,62 + SetY = 6,54 + SetX = 7,-64 + SetY = 7,38 + SetX = 8,-80 + SetY = 8,22 + SetX = 9,-96 + SetX = 10,-80 + SetY = 10,30 + SetX = 11,-56 + SetY = 11,46 + SetX = 12,-40 + SetY = 12,62 + SetY = 13,70 + SetY = 14,78 + SetY = 15,62 + SetX = 16,-56 + SetY = 16,54 + SetX = 17,-64 + SetY = 17,46 + SetX = 18,-72 + SetY = 18,22 + SetVisible = 19,false + + Graphic = Examples/Ultra Beam + Focus = Target + SetFrame = 1,2 + SetX = 1,0 + SetY = 1,14 + SetZ = 1,28 + SetX = 2,-32 + SetY = 2,-34 + SetX = 3,-56 + SetY = 3,-58 + SetX = 4,160 + SetY = 4,-50 + SetX = 6,152 + SetY = 6,-58 + SetX = 7,144 + SetY = 7,-66 + SetX = 8,136 + SetY = 8,-74 + SetX = 9,-160 + SetY = 9,46 + SetX = 11,-152 + SetY = 11,54 + SetX = 12,144 + SetY = 12,-66 + SetX = 13,152 + SetY = 13,-58 + SetX = 14,160 + SetY = 14,-50 + SetX = 16,152 + SetY = 16,-58 + SetX = 17,-144 + SetY = 17,62 + SetVisible = 18,false + + Graphic = Examples/Ultra Beam + Focus = Target + SetFrame = 1,2 + SetX = 1,80 + SetY = 1,-34 + SetZ = 1,31 + SetX = 2,56 + SetY = 2,-66 + SetX = 3,32 + SetY = 3,-82 + SetY = 4,-74 + SetX = 5,48 + SetY = 5,-50 + SetX = 6,64 + SetY = 6,-34 + SetX = 7,80 + SetY = 7,-10 + SetX = 8,112 + SetY = 8,6 + SetY = 9,-10 + SetX = 10,104 + SetY = 10,-2 + SetX = 11,80 + SetY = 11,-18 + SetX = 12,56 + SetY = 12,-34 + SetX = 13,40 + SetY = 13,-58 + SetY = 14,-74 + SetX = 15,56 + SetY = 15,-58 + SetX = 16,64 + SetY = 16,-42 + SetX = 17,88 + SetY = 17,-10 + SetX = 18,104 + SetY = 18,-2 + SetFrame = 19,3 + SetX = 19,64 + SetY = 19,-66 + + Graphic = Examples/Ultra Beam + Focus = Target + SetFrame = 1,3 + SetX = 1,-8 + SetY = 1,-42 + SetZ = 1,34 + SetX = 2,24 + SetY = 2,6 + SetX = 3,152 + SetY = 3,-66 + SetX = 4,64 + SetY = 4,54 + SetX = 5,152 + SetY = 5,-58 + SetX = 6,168 + SetY = 6,-42 + SetX = 7,176 + SetY = 7,-34 + SetX = 8,184 + SetY = 8,-26 + SetX = 10,-16 + SetX = 11,168 + SetY = 11,-42 + SetX = 12,40 + SetY = 12,38 + SetX = 13,152 + SetY = 13,-58 + SetX = 14,-144 + SetY = 14,62 + SetX = 15,152 + SetY = 15,-58 + SetX = 16,-120 + SetY = 16,86 + SetX = 17,-112 + SetY = 17,94 + SetVisible = 18,false + + Graphic = Examples/Ultra Beam + Focus = Target + SetFrame = 1,3 + SetX = 1,80 + SetY = 1,-58 + SetZ = 1,36 + SetX = 2,96 + SetY = 2,-26 + SetX = 3,112 + SetY = 3,-2 + SetX = 4,128 + SetX = 5,112 + SetY = 5,6 + SetX = 6,96 + SetY = 6,-18 + SetX = 7,72 + SetY = 7,-34 + SetY = 8,-58 + SetY = 9,-66 + SetY = 10,-50 + SetX = 11,96 + SetY = 11,-18 + SetX = 12,104 + SetY = 12,-10 + SetX = 13,120 + SetY = 13,-2 + SetX = 14,128 + SetY = 14,6 + SetX = 15,112 + SetY = 15,-2 + SetX = 16,104 + SetY = 16,-10 + SetX = 17,88 + SetY = 17,-18 + SetX = 18,72 + SetY = 18,-42 + SetVisible = 19,false + + Graphic = Examples/Ultra Beam + Focus = Target + SetFrame = 2,2 + SetX = 2,144 + SetY = 2,-74 + SetZ = 2,29 + SetX = 3,152 + SetY = 3,-58 + SetX = 4,-128 + SetY = 4,86 + SetX = 5,-32 + SetY = 5,-26 + SetX = 6,-8 + SetY = 6,6 + SetX = 7,16 + SetY = 7,30 + SetX = 8,48 + SetY = 8,62 + SetX = 9,128 + SetY = 9,-82 + SetX = 11,136 + SetY = 11,-74 + SetX = 12,-24 + SetY = 12,-2 + SetX = 13,-32 + SetY = 13,-42 + SetX = 14,-48 + SetY = 14,-58 + SetX = 15,-32 + SetY = 15,-50 + SetX = 16,-136 + SetY = 16,70 + SetX = 17,144 + SetY = 17,-66 + SetX = 18,32 + SetY = 18,62 + SetFrame = 19,3 + SetX = 19,176 + SetY = 19,-26 + + Graphic = Examples/Ultra Beam + Focus = Target + SetFrame = 2,3 + SetX = 2,160 + SetY = 2,-58 + SetZ = 2,33 + SetX = 3,56 + SetY = 3,38 + SetX = 4,-144 + SetY = 4,70 + SetX = 5,-136 + SetY = 5,78 + SetX = 6,-120 + SetY = 6,94 + SetX = 7,-8 + SetY = 7,-10 + SetX = 8,-32 + SetY = 8,-42 + SetX = 9,-104 + SetY = 9,110 + SetX = 10,176 + SetY = 10,-34 + SetX = 11,-120 + SetY = 11,94 + SetX = 12,160 + SetY = 12,-50 + SetX = 13,-136 + SetY = 13,78 + SetX = 14,144 + SetY = 14,-66 + SetX = 15,-136 + SetY = 15,70 + SetX = 16,168 + SetY = 16,-42 + SetX = 17,176 + SetY = 17,-34 + SetX = 18,184 + SetY = 18,-26 + SetVisible = 19,false + + Graphic = Examples/Ultra Beam + Focus = Target + SetFrame = 19,2 + SetX = 19,144 + SetY = 19,-66 + SetZ = 19,28 + + Play = 0,Teleport,80 + Play = 2,Twine,80 diff --git a/PBS/Animations/Example anims/Move/SILVERWIND.txt b/PBS/Animations/Example anims/Move/SILVERWIND.txt new file mode 100644 index 000000000..e281bc919 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SILVERWIND.txt @@ -0,0 +1,309 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SILVERWIND] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Heal5 + Focus = Target + SetFrame = 0,12 + SetX = 0,-216 + SetY = 0,-106 + SetZ = 0,27 + SetZoomX = 0,20 + SetZoomY = 0,20 + SetX = 1,-176 + SetY = 1,-74 + SetX = 2,-136 + SetY = 2,-34 + SetX = 3,-80 + SetY = 3,6 + SetX = 4,-16 + SetY = 4,46 + SetX = 5,56 + SetY = 5,86 + SetX = 6,120 + SetY = 6,118 + SetX = 7,176 + SetY = 7,142 + SetX = 8,304 + SetY = 8,70 + + Graphic = Examples/Heal5 + Focus = Target + SetFrame = 1,12 + SetX = 1,-288 + SetY = 1,-66 + SetZ = 1,28 + SetZoomX = 1,20 + SetZoomY = 1,20 + SetX = 2,-120 + SetY = 2,-138 + SetX = 3,-72 + SetY = 3,-98 + SetX = 4,-16 + SetY = 4,-50 + SetX = 5,64 + SetY = 5,-10 + SetX = 6,136 + SetY = 6,14 + SetX = 7,224 + SetY = 7,46 + SetX = 8,192 + SetY = 8,134 + + Graphic = Examples/Heal5 + Focus = Target + SetFrame = 1,12 + SetX = 1,-248 + SetY = 1,-138 + SetZ = 1,29 + SetZoomX = 1,20 + SetZoomY = 1,20 + SetX = 2,-232 + SetY = 2,-2 + SetX = 3,-168 + SetY = 3,54 + SetX = 4,-88 + SetY = 4,102 + SetX = 5,-16 + SetY = 5,142 + SetX = 6,64 + SetY = 6,70 + SetX = 7,128 + SetY = 7,110 + SetX = 8,272 + SetY = 8,38 + + Graphic = Examples/Heal5 + Focus = Target + SetFrame = 2,12 + SetX = 2,-192 + SetY = 2,-90 + SetZ = 2,30 + SetZoomX = 2,20 + SetZoomY = 2,20 + SetX = 3,-136 + SetY = 3,-42 + SetX = 4,-72 + SetY = 4,6 + SetX = 5,0 + SetY = 5,46 + SetX = 6,-40 + SetY = 6,134 + SetX = 7,192 + SetY = 7,6 + SetX = 8,72 + SetY = 8,126 + + Graphic = Examples/Heal5 + Focus = Target + SetFrame = 2,12 + SetX = 2,-280 + SetY = 2,-90 + SetZ = 2,31 + SetZoomX = 2,20 + SetZoomY = 2,20 + SetX = 3,-224 + SetY = 3,-26 + SetX = 4,-160 + SetY = 4,38 + SetX = 5,-104 + SetY = 5,94 + SetX = 6,96 + SetY = 6,-26 + SetX = 7,-112 + SetY = 7,134 + SetX = 8,104 + SetY = 8,38 + + Graphic = Examples/Heal5 + Focus = Target + SetFrame = 3,12 + SetX = 3,-144 + SetY = 3,-138 + SetZ = 3,32 + SetZoomX = 3,20 + SetZoomY = 3,20 + SetX = 4,-80 + SetY = 4,-106 + SetX = 5,0 + SetY = 5,-66 + SetX = 6,-160 + SetY = 6,78 + SetX = 7,-8 + SetY = 7,62 + SetFrame = 8,11 + SetFlip = 8,true + SetX = 8,-48 + SetY = 8,14 + SetZoomX = 8,100 + SetZoomY = 8,100 + SetOpacity = 8,50 + + Graphic = Examples/Heal5 + Focus = Target + SetFrame = 3,12 + SetX = 3,-288 + SetY = 3,-106 + SetZ = 3,33 + SetZoomX = 3,20 + SetZoomY = 3,20 + SetX = 4,-256 + SetY = 4,-50 + SetX = 5,-208 + SetY = 5,22 + SetX = 6,-88 + SetY = 6,-2 + SetX = 7,-192 + SetY = 7,118 + SetX = 8,-120 + SetY = 8,126 + + Graphic = Examples/Heal5 + Focus = Target + SetX = 3,-168 + SetY = 3,-58 + SetZ = 3,34 + SetOpacity = 3,50 + SetFrame = 4,12 + SetX = 4,-216 + SetY = 4,-122 + SetZoomX = 4,20 + SetZoomY = 4,20 + SetOpacity = 4,255 + SetX = 5,-152 + SetY = 5,-58 + SetX = 6,-232 + SetY = 6,54 + SetX = 7,280 + SetY = 7,-18 + SetX = 8,240 + + Graphic = Examples/Heal5 + Focus = Target + SetFrame = 4,12 + SetX = 4,24 + SetY = 4,-138 + SetZ = 4,35 + SetZoomX = 4,20 + SetZoomY = 4,20 + SetX = 5,-280 + SetY = 5,-10 + SetX = 6,192 + SetY = 6,-66 + SetFrame = 7,11 + SetFlip = 7,true + SetX = 7,-48 + SetY = 7,14 + SetZoomX = 7,100 + SetZoomY = 7,100 + SetOpacity = 7,50 + SetVisible = 8,false + + Graphic = Examples/Heal5 + Focus = Target + SetFrame = 4,1 + SetX = 4,-168 + SetY = 4,-58 + SetZ = 4,36 + SetOpacity = 4,50 + SetFrame = 5,12 + SetX = 5,112 + SetY = 5,-106 + SetZoomX = 5,20 + SetZoomY = 5,20 + SetOpacity = 5,255 + SetFrame = 6,9 + SetX = 6,72 + SetY = 6,38 + SetZoomX = 6,100 + SetZoomY = 6,100 + SetOpacity = 6,50 + SetFrame = 7,10 + SetVisible = 8,false + + Graphic = Examples/Heal5 + Focus = Target + SetFrame = 5,10 + SetX = 5,40 + SetY = 5,-90 + SetZ = 5,37 + SetOpacity = 5,50 + SetFrame = 6,11 + SetFrame = 7,12 + SetX = 7,-40 + SetY = 7,-42 + SetZoomX = 7,20 + SetZoomY = 7,20 + SetOpacity = 7,255 + SetVisible = 8,false + + Graphic = Examples/Heal5 + Focus = Target + SetFrame = 5,12 + SetX = 5,-200 + SetY = 5,-130 + SetZ = 5,38 + SetZoomX = 5,20 + SetZoomY = 5,20 + SetX = 6,-248 + SetY = 6,134 + SetX = 7,-176 + SetY = 7,46 + SetVisible = 8,false + + Graphic = Examples/Heal5 + Focus = Target + SetFrame = 5,12 + SetX = 5,-296 + SetY = 5,70 + SetZ = 5,39 + SetZoomX = 5,20 + SetZoomY = 5,20 + SetX = 6,-120 + SetY = 6,-90 + SetX = 7,136 + SetY = 7,-66 + SetVisible = 8,false + + Graphic = Examples/Heal5 + Focus = Target + SetFrame = 5,12 + SetX = 5,-288 + SetY = 5,-90 + SetZ = 5,40 + SetZoomX = 5,20 + SetZoomY = 5,20 + SetX = 6,-240 + SetY = 6,-42 + SetVisible = 7,false + + Graphic = Examples/Heal5 + Focus = Target + SetFrame = 5,12 + SetX = 5,-8 + SetY = 5,-146 + SetZ = 5,41 + SetZoomX = 5,20 + SetZoomY = 5,20 + SetX = 6,56 + SetY = 6,-98 + SetVisible = 7,false + + Graphic = Examples/Heal5 + Focus = Target + SetFlip = 5,true + SetX = 5,-200 + SetY = 5,46 + SetZ = 5,42 + SetOpacity = 5,50 + SetFrame = 6,1 + SetVisible = 7,false + + Play = 0,Wind8,80 diff --git a/PBS/Animations/Example anims/Move/SING.txt b/PBS/Animations/Example anims/Move/SING.txt new file mode 100644 index 000000000..cddd0ba75 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SING.txt @@ -0,0 +1,1256 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SING] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 0,7 + SetX = 0,-184 + SetY = 0,115 + SetZ = 0,27 + SetFrame = 1,8 + SetX = 1,-172 + SetY = 1,131 + SetX = 2,-165 + SetY = 2,127 + SetFrame = 3,9 + SetX = 3,-143 + SetY = 3,97 + SetX = 4,-129 + SetY = 4,98 + SetFrame = 5,10 + SetX = 5,-132 + SetY = 5,102 + SetFrame = 6,7 + SetX = 6,-120 + SetY = 6,67 + SetFrame = 7,8 + SetX = 7,-74 + SetY = 7,76 + SetFrame = 8,9 + SetX = 8,-48 + SetY = 8,46 + SetFrame = 9,10 + SetX = 9,-144 + SetY = 9,127 + SetFrame = 10,8 + SetX = 10,-129 + SetY = 10,124 + SetFrame = 11,11 + SetX = 11,-34 + SetY = 11,19 + SetX = 12,-135 + SetY = 12,112 + SetX = 13,-122 + SetY = 13,106 + SetX = 14,-91 + SetY = 14,92 + SetFrame = 15,9 + SetX = 15,-156 + SetY = 15,126 + SetFrame = 16,11 + SetX = 16,-143 + SetY = 16,119 + SetFrame = 17,10 + SetX = 17,-103 + SetY = 17,124 + SetFrame = 18,9 + SetX = 18,-68 + SetY = 18,90 + SetX = 19,-39 + SetY = 19,74 + SetFrame = 20,10 + SetX = 20,-137 + SetY = 20,129 + SetX = 21,-88 + SetY = 21,122 + SetX = 22,-155 + SetY = 22,147 + SetX = 23,-129 + SetY = 23,140 + SetFrame = 24,11 + SetX = 24,17 + SetY = 24,-6 + SetFrame = 25,9 + SetX = 25,-112 + SetY = 25,121 + SetFrame = 26,11 + SetX = 26,-98 + SetY = 26,112 + SetFrame = 27,10 + SetX = 27,-66 + SetY = 27,111 + SetFrame = 28,9 + SetX = 28,-119 + SetY = 28,117 + SetFrame = 29,10 + SetX = 29,-99 + SetY = 29,122 + SetFrame = 30,9 + SetX = 30,-69 + SetY = 30,106 + SetX = 31,-133 + SetY = 31,125 + SetFrame = 32,11 + SetX = 32,-106 + SetY = 32,117 + SetFrame = 33,9 + SetX = 33,-70 + SetY = 33,101 + SetX = 34,-104 + SetY = 34,111 + SetFrame = 35,10 + SetX = 35,-67 + SetY = 35,116 + SetFrame = 36,11 + SetX = 36,-166 + SetY = 36,138 + SetFrame = 37,9 + SetX = 37,-85 + SetY = 37,101 + SetFrame = 38,10 + SetX = 38,-35 + SetY = 38,75 + SetX = 39,20 + SetY = 39,46 + SetFrame = 40,8 + SetX = 40,43 + SetY = 40,8 + SetFrame = 41,11 + SetX = 41,47 + SetY = 41,-6 + SetFrame = 42,10 + SetX = 42,26 + SetY = 42,-8 + SetFrame = 43,11 + SetY = 43,-3 + SetX = 44,-29 + SetY = 44,-31 + SetFrame = 45,10 + SetX = 45,4 + SetY = 45,-39 + SetFrame = 46,11 + SetX = 46,16 + SetY = 46,-48 + SetX = 47,26 + SetY = 47,-60 + SetX = 48,52 + SetX = 49,48 + SetY = 49,-82 + SetFrame = 50,8 + SetX = 50,51 + SetY = 50,-87 + SetFrame = 51,10 + SetX = 51,54 + SetY = 51,-85 + SetVisible = 52,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 1,7 + SetX = 1,-173 + SetY = 1,116 + SetZ = 1,28 + SetX = 2,-167 + SetY = 2,113 + SetFrame = 3,8 + SetX = 3,-147 + SetY = 3,105 + SetFrame = 4,10 + SetX = 4,-139 + SetY = 4,110 + SetFrame = 5,8 + SetX = 5,-133 + SetY = 5,111 + SetX = 6,-91 + SetY = 6,98 + SetFrame = 7,7 + SetX = 7,-100 + SetY = 7,53 + SetX = 8,-84 + SetY = 8,54 + SetFrame = 9,9 + SetX = 9,-140 + SetY = 9,96 + SetFrame = 10,11 + SetX = 10,-46 + SetY = 10,27 + SetFrame = 11,9 + SetX = 11,-125 + SetY = 11,109 + SetX = 12,-1 + SetY = 12,0 + SetFrame = 13,8 + SetX = 13,-120 + SetY = 13,104 + SetFrame = 14,9 + SetX = 14,-83 + SetY = 14,89 + SetFrame = 15,8 + SetX = 15,-148 + SetY = 15,136 + SetFrame = 16,10 + SetX = 16,-143 + SetY = 16,124 + SetFrame = 17,8 + SetX = 17,-92 + SetY = 17,115 + SetFrame = 18,10 + SetX = 18,-60 + SetY = 18,104 + SetFrame = 19,11 + SetX = 19,-66 + SetY = 19,66 + SetX = 20,-140 + SetY = 20,105 + SetFrame = 21,9 + SetX = 21,-75 + SetY = 21,97 + SetX = 22,-140 + SetY = 22,122 + SetFrame = 23,8 + SetX = 23,-112 + SetY = 23,132 + SetFrame = 24,10 + SetX = 24,-3 + SetY = 24,17 + SetX = 25,-131 + SetY = 25,126 + SetFrame = 26,8 + SetX = 26,-98 + SetY = 26,113 + SetFrame = 27,9 + SetX = 27,-40 + SetY = 27,95 + SetFrame = 28,10 + SetX = 28,-127 + SetY = 28,126 + SetFrame = 29,11 + SetX = 29,-98 + SetY = 29,97 + SetX = 30,-91 + SetY = 30,94 + SetX = 31,-154 + SetY = 31,113 + SetFrame = 32,9 + SetX = 32,-97 + SetY = 32,105 + SetFrame = 33,10 + SetX = 33,-62 + SetY = 33,112 + SetFrame = 34,11 + SetX = 34,-107 + SetY = 34,110 + SetX = 35,-87 + SetY = 35,80 + SetFrame = 36,9 + SetX = 36,-137 + SetY = 36,130 + SetFrame = 37,11 + SetX = 37,-88 + SetY = 37,99 + SetX = 38,-24 + SetY = 38,52 + SetX = 39,-10 + SetY = 39,34 + SetFrame = 40,10 + SetX = 40,15 + SetY = 40,17 + SetX = 41,41 + SetY = 41,5 + SetFrame = 42,11 + SetX = 42,-8 + SetY = 42,-19 + SetFrame = 43,9 + SetX = 43,27 + SetY = 43,-10 + SetFrame = 44,10 + SetX = 44,-24 + SetY = 44,-9 + SetFrame = 45,11 + SetX = 45,9 + SetY = 45,-48 + SetFrame = 46,8 + SetX = 46,13 + SetY = 46,-41 + SetFrame = 47,10 + SetX = 47,23 + SetY = 47,-39 + SetX = 48,44 + SetY = 48,-48 + SetY = 49,-51 + SetFrame = 50,11 + SetX = 50,45 + SetY = 50,-89 + SetVisible = 51,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 2,8 + SetX = 2,-148 + SetY = 2,120 + SetZ = 2,29 + SetVisible = 3,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 4,10 + SetX = 4,-127 + SetY = 4,106 + SetZ = 4,29 + SetFrame = 5,7 + SetX = 5,-128 + SetY = 5,78 + SetFrame = 6,9 + SetX = 6,-90 + SetY = 6,77 + SetFrame = 7,8 + SetX = 7,-78 + SetY = 7,70 + SetX = 8,-150 + SetY = 8,147 + SetFrame = 9,11 + SetX = 9,-42 + SetY = 9,49 + SetFrame = 10,10 + SetX = 10,-46 + SetY = 10,36 + SetFrame = 11,11 + SetX = 11,-154 + SetY = 11,102 + SetFrame = 12,9 + SetX = 12,-124 + SetY = 12,99 + SetFrame = 13,10 + SetX = 13,17 + SetY = 13,11 + SetX = 14,43 + SetY = 14,12 + SetX = 15,-55 + SetY = 15,78 + SetFrame = 16,9 + SetX = 16,-110 + SetY = 16,116 + SetX = 17,-91 + SetY = 17,85 + SetFrame = 18,11 + SetX = 18,-80 + SetY = 18,82 + SetFrame = 19,8 + SetX = 19,-157 + SetY = 19,151 + SetFrame = 20,9 + SetX = 20,-30 + SetY = 20,51 + SetFrame = 21,11 + SetX = 21,-108 + SetY = 21,95 + SetFrame = 22,10 + SetX = 22,-63 + SetY = 22,96 + SetFrame = 23,9 + SetX = 23,-118 + SetY = 23,113 + SetFrame = 24,10 + SetX = 24,-32 + SetY = 24,72 + SetFrame = 25,11 + SetX = 25,-12 + SetY = 25,22 + SetFrame = 26,10 + SetX = 26,36 + SetY = 26,15 + SetFrame = 27,11 + SetX = 27,-68 + SetY = 27,85 + SetX = 28,-37 + SetY = 28,73 + SetFrame = 29,9 + SetX = 29,-8 + SetY = 29,42 + SetFrame = 30,10 + SetX = 30,19 + SetY = 30,31 + SetX = 31,-44 + SetY = 31,98 + SetX = 32,-37 + SetY = 32,81 + SetFrame = 33,11 + SetX = 33,-162 + SetY = 33,139 + SetFrame = 34,10 + SetX = 34,13 + SetY = 34,87 + SetFrame = 35,9 + SetX = 35,-43 + SetY = 35,84 + SetFrame = 36,10 + SetX = 36,-50 + SetY = 36,88 + SetX = 37,-1 + SetY = 37,41 + SetFrame = 38,8 + SetX = 38,-29 + SetY = 38,49 + SetFrame = 39,9 + SetX = 39,26 + SetY = 39,11 + SetFrame = 40,11 + SetX = 40,19 + SetY = 40,22 + SetFrame = 41,9 + SetX = 41,33 + SetY = 41,-33 + SetX = 42,23 + SetY = 42,-41 + SetFrame = 43,10 + SetX = 43,10 + SetY = 43,-19 + SetFrame = 44,9 + SetX = 44,-20 + SetY = 44,-46 + SetX = 45,12 + SetY = 45,-45 + SetFrame = 46,10 + SetX = 46,31 + SetY = 46,-53 + SetFrame = 47,9 + SetX = 47,53 + SetY = 47,-47 + SetX = 48,52 + SetY = 48,-52 + SetX = 49,53 + SetY = 49,-91 + SetFrame = 50,10 + SetX = 50,40 + SetY = 50,-76 + SetVisible = 51,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 8,7 + SetX = 8,-162 + SetY = 8,102 + SetZ = 8,30 + SetFrame = 9,9 + SetX = 9,-33 + SetY = 9,34 + SetX = 10,-127 + SetY = 10,96 + SetX = 11,-29 + SetY = 11,11 + SetFrame = 12,10 + SetX = 12,10 + SetY = 12,17 + SetFrame = 13,9 + SetX = 13,35 + SetY = 13,-6 + SetFrame = 14,11 + SetX = 14,46 + SetY = 14,0 + SetX = 15,-53 + SetY = 15,68 + SetFrame = 16,8 + SetX = 16,-11 + SetY = 16,56 + SetFrame = 17,11 + SetX = 17,-31 + SetY = 17,46 + SetFrame = 18,10 + SetX = 18,61 + SetY = 18,-1 + SetX = 19,-153 + SetY = 19,140 + SetX = 20,-21 + SetY = 20,66 + SetFrame = 21,9 + SetX = 21,16 + SetY = 21,22 + SetFrame = 22,11 + SetX = 22,-60 + SetY = 22,90 + SetFrame = 23,9 + SetX = 23,-6 + SetY = 23,45 + SetX = 24,-27 + SetY = 24,77 + SetX = 25,-1 + SetY = 25,39 + SetFrame = 26,10 + SetX = 26,42 + SetY = 26,20 + SetFrame = 27,11 + SetX = 27,35 + SetY = 27,-2 + SetFrame = 28,9 + SetX = 28,-40 + SetY = 28,67 + SetFrame = 29,10 + SetX = 29,-6 + SetY = 29,52 + SetFrame = 30,9 + SetX = 30,41 + SetY = 30,17 + SetFrame = 31,11 + SetX = 31,-72 + SetY = 31,86 + SetFrame = 32,9 + SetX = 32,-14 + SetY = 32,69 + SetX = 33,-131 + SetY = 33,130 + SetX = 34,6 + SetY = 34,52 + SetFrame = 35,10 + SetX = 35,55 + SetY = 35,17 + SetFrame = 36,11 + SetX = 36,-36 + SetY = 36,58 + SetFrame = 37,9 + SetX = 37,21 + SetY = 37,25 + SetFrame = 38,10 + SetX = 38,48 + SetY = 38,17 + SetVisible = 39,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 13,8 + SetX = 13,-102 + SetY = 13,93 + SetZ = 13,31 + SetX = 14,-158 + SetY = 14,142 + SetFrame = 15,9 + SetX = 15,64 + SetY = 15,-18 + SetFrame = 16,10 + SetX = 16,-28 + SetY = 16,52 + SetFrame = 17,8 + SetX = 17,0 + SetY = 17,54 + SetFrame = 18,9 + SetX = 18,58 + SetY = 18,-13 + SetX = 19,43 + SetY = 19,-24 + SetFrame = 20,8 + SetX = 20,-39 + SetY = 20,56 + SetFrame = 21,11 + SetX = 21,-16 + SetY = 21,23 + SetFrame = 22,10 + SetX = 22,32 + SetY = 22,17 + SetX = 23,-28 + SetY = 23,59 + SetFrame = 24,11 + SetX = 24,-163 + SetY = 24,138 + SetX = 25,-32 + SetY = 25,38 + SetX = 26,19 + SetY = 26,-10 + SetFrame = 27,8 + SetX = 27,32 + SetY = 27,13 + SetFrame = 28,10 + SetX = 28,39 + SetY = 28,20 + SetFrame = 29,8 + SetX = 29,8 + SetY = 29,57 + SetX = 30,-153 + SetY = 30,144 + SetFrame = 31,10 + SetX = 31,10 + SetY = 31,37 + SetFrame = 32,11 + SetX = 32,-39 + SetY = 32,49 + SetFrame = 33,10 + SetX = 33,3 + SetY = 33,50 + SetX = 34,37 + SetY = 34,18 + SetFrame = 35,11 + SetX = 35,24 + SetY = 35,2 + SetFrame = 36,10 + SetX = 36,39 + SetY = 36,23 + SetFrame = 37,11 + SetX = 37,-5 + SetY = 37,8 + SetFrame = 38,9 + SetX = 38,38 + SetY = 38,-6 + SetVisible = 39,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 15,8 + SetX = 15,45 + SetY = 15,-5 + SetZ = 15,32 + SetX = 16,-32 + SetY = 16,61 + SetVisible = 17,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 15,9 + SetX = 15,53 + SetY = 15,-11 + SetZ = 15,33 + SetFrame = 16,11 + SetX = 16,32 + SetY = 16,-12 + SetVisible = 17,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 16,8 + SetX = 16,33 + SetY = 16,-7 + SetZ = 16,34 + SetVisible = 17,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 16,10 + SetX = 16,33 + SetY = 16,-3 + SetZ = 16,35 + SetVisible = 17,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 18,8 + SetX = 18,42 + SetY = 18,3 + SetZ = 18,32 + SetX = 19,41 + SetY = 19,-1 + SetFrame = 20,11 + SetX = 20,28 + SetY = 20,-3 + SetFrame = 21,10 + SetX = 21,7 + SetY = 21,26 + SetX = 22,40 + SetY = 22,9 + SetVisible = 23,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 24,9 + SetX = 24,-129 + SetY = 24,128 + SetZ = 24,32 + SetVisible = 25,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 25,10 + SetX = 25,29 + SetY = 25,2 + SetZ = 25,33 + SetVisible = 26,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 27,9 + SetX = 27,-152 + SetY = 27,130 + SetZ = 27,32 + SetX = 28,37 + SetY = 28,-8 + SetVisible = 29,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 27,11 + SetX = 27,-175 + SetY = 27,121 + SetZ = 27,33 + SetVisible = 28,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 31,9 + SetX = 31,18 + SetY = 31,34 + SetZ = 31,32 + SetFrame = 32,10 + SetX = 32,39 + SetY = 32,28 + SetFrame = 33,11 + SetX = 33,6 + SetY = 33,43 + SetFrame = 34,9 + SetX = 34,63 + SetY = 34,0 + SetX = 35,49 + SetY = 35,16 + SetVisible = 36,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 31,11 + SetX = 31,16 + SetY = 31,29 + SetZ = 31,33 + SetVisible = 32,false + + Play = 0,Sing,80 +#------------------------------- +[OppMove,SING] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 0,7 + SetX = 0,-20 + SetY = 0,-4 + SetZ = 0,27 + SetFrame = 1,9 + SetX = 1,-15 + SetY = 1,21 + SetFrame = 2,8 + SetX = 2,-26 + SetY = 2,58 + SetFrame = 3,10 + SetX = 3,-52 + SetY = 3,86 + SetX = 4,-2 + SetY = 4,10 + SetFrame = 5,11 + SetX = 5,-19 + SetY = 5,0 + SetX = 6,-172 + SetY = 6,150 + SetFrame = 7,8 + SetX = 7,-28 + SetY = 7,76 + SetFrame = 8,10 + SetX = 8,-64 + SetY = 8,96 + SetFrame = 9,9 + SetX = 9,-86 + SetY = 9,105 + SetFrame = 10,10 + SetX = 10,-119 + SetY = 10,143 + SetX = 11,-153 + SetY = 11,159 + SetFrame = 12,11 + SetX = 12,-102 + SetY = 12,100 + SetFrame = 13,8 + SetX = 13,-129 + SetY = 13,157 + SetFrame = 14,9 + SetX = 14,-36 + SetY = 14,79 + SetFrame = 15,11 + SetX = 15,-81 + SetY = 15,117 + SetX = 16,0 + SetY = 16,14 + SetFrame = 17,10 + SetX = 17,-29 + SetY = 17,71 + SetFrame = 18,11 + SetX = 18,-68 + SetY = 18,104 + SetX = 19,-95 + SetY = 19,127 + SetFrame = 20,9 + SetX = 20,-140 + SetY = 20,143 + SetFrame = 21,11 + SetX = 21,-71 + SetY = 21,103 + SetFrame = 22,10 + SetX = 22,-103 + SetY = 22,152 + SetFrame = 23,9 + SetX = 23,-146 + SetY = 23,146 + SetX = 24,-43 + SetY = 24,98 + SetX = 25,-88 + SetY = 25,129 + SetFrame = 26,11 + SetX = 26,-15 + SetY = 26,20 + SetX = 27,-58 + SetY = 27,75 + SetX = 28,-198 + SetY = 28,144 + SetX = 29,-228 + SetY = 29,145 + SetFrame = 30,10 + SetX = 30,-234 + SetX = 31,-204 + SetY = 31,118 + SetX = 32,-201 + SetFrame = 33,11 + SetX = 33,-191 + SetY = 33,75 + SetFrame = 34,10 + SetX = 34,-223 + SetY = 34,139 + SetX = 35,-194 + SetY = 35,99 + SetFrame = 36,11 + SetX = 36,-220 + SetY = 36,80 + SetFrame = 37,10 + SetX = 37,-217 + SetY = 37,79 + SetX = 38,-225 + SetY = 38,47 + SetX = 39,-182 + SetY = 39,12 + SetOpacity = 39,243 + SetFrame = 40,11 + SetX = 40,-201 + SetY = 40,23 + SetOpacity = 40,255 + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 0,8 + SetX = 0,-19 + SetY = 0,29 + SetZ = 0,28 + SetFrame = 1,10 + SetX = 1,-34 + SetY = 1,50 + SetFrame = 2,9 + SetX = 2,-28 + SetY = 2,47 + SetFrame = 3,11 + SetX = 3,-80 + SetY = 3,81 + SetX = 4,-90 + SetY = 4,107 + SetFrame = 5,10 + SetX = 5,-1 + SetY = 5,29 + SetFrame = 6,9 + SetX = 6,-156 + SetY = 6,136 + SetX = 7,-9 + SetY = 7,70 + SetX = 8,-40 + SetY = 8,92 + SetFrame = 9,8 + SetX = 9,-102 + SetY = 9,109 + SetFrame = 10,9 + SetX = 10,-97 + SetY = 10,129 + SetFrame = 11,8 + SetX = 11,-142 + SetY = 11,148 + SetFrame = 12,10 + SetX = 12,-70 + SetY = 12,111 + SetX = 13,-144 + SetY = 13,148 + SetFrame = 14,11 + SetX = 14,-42 + SetY = 14,85 + SetFrame = 15,10 + SetX = 15,-52 + SetY = 15,125 + SetX = 16,-7 + SetY = 16,30 + SetFrame = 17,11 + SetX = 17,-24 + SetY = 17,58 + SetFrame = 18,10 + SetX = 18,-75 + SetY = 18,115 + SetX = 19,-100 + SetY = 19,140 + SetX = 20,-132 + SetY = 20,160 + SetFrame = 21,9 + SetX = 21,-39 + SetY = 21,107 + SetX = 22,-84 + SetY = 22,144 + SetFrame = 23,10 + SetX = 23,-153 + SetY = 23,149 + SetX = 24,-34 + SetY = 24,120 + SetX = 25,-78 + SetY = 25,146 + SetX = 26,-23 + SetY = 26,47 + SetFrame = 27,9 + SetX = 27,-51 + SetY = 27,75 + SetFrame = 28,10 + SetX = 28,-201 + SetY = 28,162 + SetFrame = 29,9 + SetX = 29,-221 + SetY = 29,143 + SetX = 30,-208 + SetY = 30,127 + SetX = 31,-211 + SetY = 31,108 + SetFrame = 32,11 + SetX = 32,-225 + SetY = 32,90 + SetFrame = 33,10 + SetX = 33,-202 + SetY = 33,95 + SetFrame = 34,9 + SetX = 34,-231 + SetY = 34,125 + SetX = 35,-203 + SetY = 35,67 + SetFrame = 36,10 + SetX = 36,-191 + SetY = 36,101 + SetFrame = 37,9 + SetX = 37,-193 + SetY = 37,67 + SetFrame = 38,8 + SetX = 38,-212 + SetY = 38,65 + SetX = 39,-180 + SetY = 39,67 + SetX = 40,-201 + SetY = 40,4 + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 4,9 + SetX = 4,-84 + SetY = 4,104 + SetZ = 4,29 + SetFrame = 5,8 + SetX = 5,-122 + SetY = 5,137 + SetFrame = 6,10 + SetX = 6,-15 + SetY = 6,33 + SetFrame = 7,11 + SetX = 7,-50 + SetY = 7,66 + SetX = 8,-68 + SetY = 8,70 + SetFrame = 9,10 + SetX = 9,-79 + SetY = 9,111 + SetFrame = 10,8 + SetX = 10,-121 + SetY = 10,119 + SetFrame = 11,11 + SetX = 11,-170 + SetY = 11,131 + SetFrame = 12,8 + SetX = 12,-56 + SetY = 12,115 + SetFrame = 13,11 + SetX = 13,-141 + SetY = 13,126 + SetX = 14,-65 + SetY = 14,78 + SetFrame = 15,9 + SetX = 15,-46 + SetY = 15,123 + SetFrame = 16,10 + SetX = 16,-97 + SetY = 16,161 + SetFrame = 17,9 + SetX = 17,-132 + SetY = 17,144 + SetX = 18,-43 + SetY = 18,120 + SetX = 19,4 + SetY = 19,22 + SetX = 20,-19 + SetY = 20,57 + SetFrame = 21,8 + SetX = 21,-162 + SetY = 21,163 + SetX = 22,-116 + SetY = 22,143 + SetFrame = 23,11 + SetX = 23,-150 + SetY = 23,146 + SetFrame = 24,10 + SetX = 24,-68 + SetY = 24,116 + SetFrame = 25,8 + SetX = 25,-79 + SetY = 25,138 + SetFrame = 26,11 + SetX = 26,-145 + SetY = 26,150 + SetFrame = 27,10 + SetX = 27,-38 + SetY = 27,105 + SetFrame = 28,9 + SetX = 28,-172 + SetY = 28,152 + SetFrame = 29,8 + SetX = 29,-203 + SetY = 29,157 + SetX = 30,-217 + SetY = 30,151 + SetX = 31,-188 + SetY = 31,126 + SetX = 32,-204 + SetY = 32,175 + SetFrame = 33,9 + SetX = 33,-195 + SetY = 33,96 + SetFrame = 34,11 + SetX = 34,-215 + SetY = 34,112 + SetFrame = 35,10 + SetX = 35,-186 + SetY = 35,73 + SetFrame = 36,9 + SetX = 36,-187 + SetY = 36,67 + SetFrame = 37,11 + SetX = 37,-229 + SetY = 37,77 + SetFrame = 38,10 + SetX = 38,-195 + SetY = 38,59 + SetX = 39,-206 + SetY = 39,46 + SetX = 40,-215 + SetY = 40,43 + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 4,10 + SetX = 4,-79 + SetY = 4,131 + SetZ = 4,30 + SetX = 5,-109 + SetY = 5,145 + SetFrame = 6,11 + SetX = 6,-14 + SetY = 6,25 + SetVisible = 7,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 9,11 + SetX = 9,-3 + SetY = 9,17 + SetZ = 9,30 + SetX = 10,-6 + SetY = 10,29 + SetFrame = 11,10 + SetX = 11,-36 + SetY = 11,85 + SetFrame = 12,9 + SetX = 12,7 + SetY = 12,8 + SetFrame = 13,10 + SetX = 13,-7 + SetY = 13,45 + SetVisible = 14,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 10,9 + SetX = 10,-4 + SetY = 10,28 + SetZ = 10,31 + SetFrame = 11,11 + SetX = 11,-35 + SetY = 11,84 + SetX = 12,-5 + SetY = 12,26 + SetX = 13,-13 + SetY = 13,44 + SetVisible = 14,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 11,11 + SetX = 11,-65 + SetY = 11,76 + SetZ = 11,32 + SetVisible = 12,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 13,10 + SetX = 13,-23 + SetY = 13,62 + SetZ = 13,32 + SetVisible = 14,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 16,11 + SetX = 16,-97 + SetY = 16,156 + SetZ = 16,30 + SetFrame = 17,8 + SetX = 17,-151 + SetY = 17,155 + SetVisible = 18,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 16,10 + SetX = 16,-102 + SetY = 16,156 + SetZ = 16,31 + SetFrame = 17,9 + SetX = 17,-146 + SetY = 17,149 + SetVisible = 18,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 19,11 + SetX = 19,-6 + SetY = 19,39 + SetZ = 19,30 + SetFrame = 20,10 + SetX = 20,-12 + SetY = 20,77 + SetX = 21,-147 + SetY = 21,171 + SetX = 22,6 + SetY = 22,28 + SetFrame = 23,9 + SetX = 23,-16 + SetY = 23,55 + SetVisible = 24,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 20,8 + SetX = 20,-17 + SetY = 20,87 + SetZ = 20,31 + SetFrame = 21,11 + SetX = 21,-92 + SetY = 21,108 + SetVisible = 22,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 23,10 + SetX = 23,-15 + SetY = 23,83 + SetZ = 23,31 + SetVisible = 24,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 23,11 + SetX = 23,-49 + SetY = 23,60 + SetZ = 23,32 + SetVisible = 24,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 26,9 + SetX = 26,-112 + SetY = 26,144 + SetZ = 26,30 + SetX = 27,-148 + SetY = 27,151 + SetFrame = 28,11 + SetX = 28,-84 + SetY = 28,115 + SetFrame = 29,10 + SetX = 29,-106 + SetY = 29,156 + SetX = 30,-109 + SetY = 30,157 + SetX = 31,-158 + SetY = 31,173 + SetFrame = 32,11 + SetX = 32,-234 + SetY = 32,154 + SetFrame = 33,10 + SetX = 33,-223 + SetY = 33,164 + SetVisible = 34,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 26,8 + SetX = 26,-134 + SetY = 26,154 + SetZ = 26,31 + SetX = 27,-166 + SetY = 27,159 + SetFrame = 28,9 + SetX = 28,-76 + SetY = 28,109 + SetFrame = 29,11 + SetX = 29,-105 + SetY = 29,149 + SetFrame = 30,9 + SetX = 30,-121 + SetY = 30,148 + SetX = 31,-166 + SetY = 31,158 + SetFrame = 32,10 + SetX = 32,-203 + SetY = 32,167 + SetFrame = 33,11 + SetX = 33,-252 + SetY = 33,147 + SetVisible = 34,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 27,10 + SetX = 27,-143 + SetY = 27,165 + SetZ = 27,32 + SetX = 28,-57 + SetY = 28,126 + SetVisible = 29,false + + Graphic = Examples/poi hear mus + Focus = Target + SetFrame = 30,11 + SetX = 30,-122 + SetY = 30,156 + SetZ = 30,32 + SetVisible = 31,false + + Play = 0,Sing,95 diff --git a/PBS/Animations/Example anims/Move/SKETCH.txt b/PBS/Animations/Example anims/Move/SKETCH.txt new file mode 100644 index 000000000..3b73e6b1d --- /dev/null +++ b/PBS/Animations/Example anims/Move/SKETCH.txt @@ -0,0 +1,58 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SKETCH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal2 + Focus = Target + SetFrame = 0,14 + SetX = 0,-232 + SetY = 0,-66 + SetZ = 0,27 + SetZoomX = 0,75 + SetZoomY = 0,75 + SetX = 1,-200 + SetY = 1,-42 + SetX = 2,-160 + SetY = 2,-10 + SetX = 3,-96 + SetY = 3,38 + SetX = 4,-16 + SetY = 4,78 + SetX = 5,80 + SetY = 5,70 + SetX = 6,40 + SetY = 6,38 + SetX = 7,-64 + SetY = 7,6 + SetX = 8,-160 + SetY = 8,-42 + SetX = 9,-168 + SetY = 9,-90 + SetX = 10,-112 + SetY = 10,-58 + SetX = 11,-64 + SetY = 11,-26 + SetX = 12,16 + SetY = 12,14 + SetX = 13,96 + SetY = 13,54 + SetX = 14,120 + SetY = 14,62 + SetX = 15,104 + SetY = 15,14 + SetX = 16,40 + SetY = 16,-42 + SetX = 17,-40 + SetY = 17,-114 + + Play = 0,Slash6,80 + Play = 6,Slash6,80 + Play = 10,Slash6,80 + Play = 15,Slash6,80 diff --git a/PBS/Animations/Example anims/Move/SLAM.txt b/PBS/Animations/Example anims/Move/SLAM.txt new file mode 100644 index 000000000..0244cf238 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SLAM.txt @@ -0,0 +1,22 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SLAM] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + + Play = 0,Blow6,80 diff --git a/PBS/Animations/Example anims/Move/SLASH.txt b/PBS/Animations/Example anims/Move/SLASH.txt new file mode 100644 index 000000000..d5f3cdd0e --- /dev/null +++ b/PBS/Animations/Example anims/Move/SLASH.txt @@ -0,0 +1,57 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SLASH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/zan03 + Focus = Target + SetX = 0,-104 + SetY = 0,-90 + SetZ = 0,28 + SetFrame = 1,1 + SetX = 1,-40 + SetY = 1,-42 + SetFrame = 2,2 + SetX = 2,-8 + SetY = 2,-26 + SetX = 3,0 + SetY = 3,-2 + SetVisible = 4,false + + Graphic = Examples/zan03 + Focus = Target + SetX = 0,-80 + SetY = 0,-122 + SetZ = 0,29 + SetFrame = 1,1 + SetX = 1,-64 + SetY = 1,-10 + SetFrame = 2,2 + SetX = 2,-48 + SetX = 3,-32 + SetY = 3,22 + SetVisible = 4,false + + Graphic = Examples/zan03 + Focus = Target + SetX = 0,-128 + SetY = 0,-58 + SetZ = 0,27 + SetFrame = 1,1 + SetX = 1,-16 + SetY = 1,-66 + SetFrame = 2,2 + SetX = 2,24 + SetY = 2,-42 + SetFrame = 3,3 + SetX = 3,32 + SetY = 3,-18 + SetVisible = 4,false + + Play = 0,Slash3,80 diff --git a/PBS/Animations/Example anims/Move/SLEEPPOWDER.txt b/PBS/Animations/Example anims/Move/SLEEPPOWDER.txt new file mode 100644 index 000000000..541629a64 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SLEEPPOWDER.txt @@ -0,0 +1,32 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SLEEPPOWDER] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Special5 + Focus = Target + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFrame = 6,6 + SetFrame = 7,7 + SetFrame = 8,8 + SetFrame = 9,9 + SetFrame = 10,10 + SetFrame = 11,11 + SetFrame = 12,12 + SetFrame = 13,13 + SetVisible = 14,false + + Play = 0,Sand,80 diff --git a/PBS/Animations/Example anims/Move/SLUDGE.txt b/PBS/Animations/Example anims/Move/SLUDGE.txt new file mode 100644 index 000000000..1baabd24a --- /dev/null +++ b/PBS/Animations/Example anims/Move/SLUDGE.txt @@ -0,0 +1,48 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SLUDGE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/State1 + Focus = Target + SetFrame = 5,5 + SetX = 5,-26 + SetY = 5,14 + SetZ = 5,27 + SetFrame = 6,6 + SetFrame = 7,7 + SetFrame = 8,8 + SetFrame = 9,9 + SetFrame = 10,10 + SetFrame = 11,11 + SetFrame = 12,12 + SetFrame = 13,13 + + Graphic = Examples/State1 + Focus = UserAndTarget + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetFrame = 1,1 + SetX = 1,34 + SetY = 1,-59 + SetAngle = 1,325 + SetFrame = 2,2 + SetX = 2,94 + SetY = 2,-118 + SetFrame = 3,3 + SetX = 3,144 + SetY = 3,-148 + SetFrame = 4,4 + SetX = 4,179 + SetY = 4,-207 + SetVisible = 5,false + + Play = 0,throw,80 + Play = 7,Poison,80 diff --git a/PBS/Animations/Example anims/Move/SLUDGEBOMB.txt b/PBS/Animations/Example anims/Move/SLUDGEBOMB.txt new file mode 100644 index 000000000..64a222f88 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SLUDGEBOMB.txt @@ -0,0 +1,99 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SLUDGEBOMB] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison4 + Focus = UserAndTarget + SetX = 0,9 + SetY = 0,-10 + SetZ = 0,28 + SetX = 1,34 + SetY = 1,-20 + SetX = 2,4 + SetX = 3,39 + SetY = 3,-118 + SetX = 4,89 + SetY = 4,-187 + SetX = 5,129 + SetY = 5,-226 + SetFrame = 6,6 + SetX = 6,100 + SetY = 6,-139 + SetVisible = 7,false + + Graphic = Examples/poison4 + Focus = UserAndTarget + SetFrame = 1,1 + SetX = 1,14 + SetY = 1,-40 + SetZ = 1,29 + SetFrame = 2,0 + SetX = 2,64 + SetY = 2,-59 + SetX = 3,104 + SetY = 3,-128 + SetX = 4,154 + SetY = 4,-139 + SetFrame = 5,5 + SetX = 5,84 + SetY = 5,-118 + SetVisible = 6,false + + Graphic = Examples/poison4 + Focus = UserAndTarget + SetFrame = 2,2 + SetX = 2,29 + SetY = 2,-59 + SetZ = 2,30 + SetFrame = 3,3 + SetX = 3,50 + SetY = 3,-89 + SetFrame = 4,4 + SetX = 4,69 + SetY = 4,-109 + SetVisible = 5,false + + Graphic = Examples/poison4 + Focus = UserAndTarget + SetX = 0,4 + SetY = 0,-20 + SetZ = 0,27 + SetX = 1,29 + SetY = 1,-79 + SetX = 2,54 + SetY = 2,-118 + SetX = 3,119 + SetY = 3,-187 + SetX = 4,179 + SetY = 4,-178 + SetX = 5,169 + SetFrame = 7,7 + SetX = 7,114 + SetY = 7,-157 + SetFrame = 8,8 + SetX = 8,125 + SetY = 8,-168 + SetFrame = 9,9 + SetX = 9,139 + SetY = 9,-178 + SetFrame = 10,10 + SetX = 10,159 + SetFrame = 11,11 + SetX = 11,175 + SetFrame = 12,12 + SetX = 12,179 + SetFrame = 13,13 + SetFrame = 14,14 + SetFrame = 15,1 + SetFrame = 16,0 + + Play = 3,Poison,80 + Play = 5,Poison,80 + Play = 7,Poison,80 diff --git a/PBS/Animations/Example anims/Move/SMOG.txt b/PBS/Animations/Example anims/Move/SMOG.txt new file mode 100644 index 000000000..5ff287bb9 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SMOG.txt @@ -0,0 +1,27 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SMOG] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison + Focus = Target + SetFrame = 0,8 + SetX = 0,8 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,7 + SetFrame = 2,6 + SetFrame = 3,5 + SetFrame = 4,4 + SetFrame = 5,3 + SetFrame = 6,2 + SetFrame = 7,1 + SetFrame = 8,0 + + Play = 0,Wind8,80 diff --git a/PBS/Animations/Example anims/Move/SMOKESCREEN.txt b/PBS/Animations/Example anims/Move/SMOKESCREEN.txt new file mode 100644 index 000000000..997371657 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SMOKESCREEN.txt @@ -0,0 +1,158 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SMOKESCREEN] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Anima (2) + Focus = Target + SetFrame = 0,4 + SetX = 0,0 + SetY = 0,6 + SetZ = 0,27 + SetFrame = 1,3 + SetFrame = 2,2 + SetFrame = 3,1 + SetFrame = 4,0 + SetFlip = 5,true + SetZoomX = 5,110 + SetZoomY = 5,110 + SetFrame = 6,1 + SetZoomX = 6,100 + SetZoomY = 6,100 + SetFrame = 7,2 + SetFrame = 8,3 + SetFrame = 9,4 + SetFlip = 10,false + SetX = 10,-48 + SetY = 10,-18 + SetX = 11,24 + SetY = 11,-34 + SetFrame = 12,2 + SetX = 12,56 + SetY = 12,14 + SetFrame = 13,3 + SetFrame = 14,4 + SetOpacity = 14,150 + + Graphic = Examples/Anima (2) + Focus = Target + SetFrame = 2,4 + SetX = 2,-48 + SetY = 2,-18 + SetZ = 2,28 + SetFrame = 3,3 + SetFrame = 4,2 + SetFrame = 5,1 + SetFrame = 6,0 + SetFrame = 7,1 + SetFrame = 8,2 + SetFrame = 9,3 + SetX = 10,24 + SetY = 10,-34 + SetFrame = 11,1 + SetX = 11,56 + SetY = 11,14 + SetFrame = 12,3 + SetX = 12,-64 + SetFrame = 13,4 + SetOpacity = 13,150 + SetVisible = 14,false + + Graphic = Examples/Anima (2) + Focus = Target + SetFrame = 3,4 + SetX = 3,24 + SetY = 3,-34 + SetZ = 3,29 + SetFrame = 4,3 + SetFrame = 5,2 + SetFrame = 6,1 + SetFrame = 7,0 + SetFrame = 8,1 + SetFrame = 9,2 + SetFrame = 10,0 + SetX = 10,56 + SetY = 10,14 + SetFrame = 11,2 + SetX = 11,-64 + SetFrame = 12,3 + SetFlip = 12,true + SetX = 12,-32 + SetY = 12,30 + SetFrame = 13,4 + SetOpacity = 13,150 + SetVisible = 14,false + + Graphic = Examples/Anima (2) + Focus = Target + SetFrame = 3,4 + SetFlip = 3,true + SetX = 3,-32 + SetY = 3,30 + SetZ = 3,30 + SetFlip = 4,false + SetX = 4,56 + SetY = 4,14 + SetFrame = 5,3 + SetFrame = 6,2 + SetFrame = 7,1 + SetFrame = 8,0 + SetFlip = 9,true + SetZoomX = 9,125 + SetZoomY = 9,125 + SetFrame = 10,1 + SetFlip = 10,false + SetX = 10,-64 + SetZoomX = 10,100 + SetZoomY = 10,100 + SetFrame = 11,2 + SetFlip = 11,true + SetX = 11,-32 + SetY = 11,30 + SetVisible = 12,false + + Graphic = Examples/Anima (2) + Focus = Target + SetFrame = 4,3 + SetFlip = 4,true + SetX = 4,-32 + SetY = 4,30 + SetZ = 4,31 + SetFrame = 5,4 + SetFlip = 5,false + SetX = 5,-64 + SetY = 5,14 + SetFrame = 6,3 + SetFrame = 7,2 + SetFrame = 8,1 + SetFrame = 9,0 + SetFrame = 10,1 + SetFlip = 10,true + SetX = 10,-32 + SetY = 10,30 + SetVisible = 11,false + + Graphic = Examples/Anima (2) + Focus = Target + SetFrame = 5,2 + SetFlip = 5,true + SetX = 5,-32 + SetY = 5,30 + SetZ = 5,32 + SetFrame = 6,1 + SetFrame = 7,0 + SetFlip = 8,false + SetZoomX = 8,125 + SetZoomY = 8,125 + SetFlip = 9,true + SetZoomX = 9,100 + SetZoomY = 9,100 + SetVisible = 10,false + + Play = 0,Wind8,80 diff --git a/PBS/Animations/Example anims/Move/SPIDERWEB.txt b/PBS/Animations/Example anims/Move/SPIDERWEB.txt new file mode 100644 index 000000000..8e06fb50c --- /dev/null +++ b/PBS/Animations/Example anims/Move/SPIDERWEB.txt @@ -0,0 +1,74 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SPIDERWEB] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/ghost2 + Focus = UserAndTarget + SetFrame = 3,12 + SetFlip = 3,true + SetX = 3,179 + SetY = 3,-196 + SetZ = 3,28 + SetOpacity = 3,20 + SetFrame = 4,13 + SetFlip = 4,false + SetX = 4,119 + SetY = 4,-128 + SetZoomX = 4,110 + SetZoomY = 4,110 + SetAngle = 4,330 + SetOpacity = 4,255 + SetX = 5,125 + SetZoomX = 5,100 + SetZoomY = 5,100 + SetX = 6,139 + SetY = 6,-148 + SetZoomX = 6,75 + SetZoomY = 6,75 + SetX = 7,150 + SetY = 7,-157 + SetZoomX = 7,50 + SetZoomY = 7,50 + SetVisible = 8,false + + Graphic = Examples/ghost2 + Focus = UserAndTarget + SetFrame = 0,13 + SetX = 0,50 + SetY = 0,-29 + SetZ = 0,27 + SetZoomX = 0,50 + SetZoomY = 0,50 + SetAngle = 0,330 + SetX = 1,59 + SetY = 1,-50 + SetZoomX = 1,75 + SetZoomY = 1,75 + SetX = 2,69 + SetY = 2,-70 + SetZoomX = 2,100 + SetZoomY = 2,100 + SetX = 3,94 + SetY = 3,-98 + SetZoomX = 3,110 + SetZoomY = 3,110 + SetFrame = 4,12 + SetFlip = 4,true + SetX = 4,179 + SetY = 4,-196 + SetZoomX = 4,100 + SetZoomY = 4,100 + SetAngle = 4,0 + SetOpacity = 4,50 + SetOpacity = 5,255 + SetOpacity = 8,150 + SetOpacity = 9,50 + + Play = 0,throw,80 diff --git a/PBS/Animations/Example anims/Move/SPIKECANNON.txt b/PBS/Animations/Example anims/Move/SPIKECANNON.txt new file mode 100644 index 000000000..b9e1cf760 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SPIKECANNON.txt @@ -0,0 +1,396 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SPIKECANNON] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 0,14 + SetY = 0,-20 + SetZ = 0,27 + SetX = 1,69 + SetY = 1,-70 + SetX = 2,129 + SetY = 2,-139 + SetX = 3,179 + SetY = 3,-178 + SetY = 4,-187 + SetX = 5,184 + SetY = 5,-157 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 1,25 + SetY = 1,-40 + SetZ = 1,28 + SetX = 2,64 + SetY = 2,-79 + SetX = 3,104 + SetY = 3,-128 + SetX = 4,169 + SetY = 4,-118 + SetX = 5,150 + SetY = 5,-187 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,69 + SetY = 2,-29 + SetZ = 2,29 + SetX = 3,109 + SetY = 3,-70 + SetX = 4,119 + SetY = 4,-148 + SetFrame = 5,14 + SetX = 5,189 + SetY = 5,-178 + SetOpacity = 5,50 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,19 + SetY = 2,-50 + SetZ = 2,30 + SetX = 3,54 + SetY = 3,-89 + SetFrame = 4,14 + SetX = 4,189 + SetY = 4,-217 + SetOpacity = 4,50 + SetX = 5,159 + SetY = 5,-207 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 3,14 + SetX = 3,184 + SetY = 3,-196 + SetZ = 3,31 + SetOpacity = 3,50 + SetVisible = 4,false + + Play = 0,Slash10,80 + Play = 2,Slash10,80 + Play = 4,Slash10,80 +#------------------------------- +[Move,SPIKECANNON,1] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 3,14 + SetX = 3,184 + SetY = 3,-196 + SetZ = 3,31 + SetOpacity = 3,50 + SetVisible = 4,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 0,14 + SetY = 0,-20 + SetZ = 0,27 + SetX = 1,69 + SetY = 1,-70 + SetX = 2,129 + SetY = 2,-139 + SetX = 3,179 + SetY = 3,-178 + SetY = 4,-187 + SetX = 5,184 + SetY = 5,-157 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 1,25 + SetY = 1,-40 + SetZ = 1,28 + SetX = 2,64 + SetY = 2,-79 + SetX = 3,104 + SetY = 3,-128 + SetX = 4,169 + SetY = 4,-118 + SetX = 5,150 + SetY = 5,-187 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,69 + SetY = 2,-29 + SetZ = 2,29 + SetX = 3,109 + SetY = 3,-70 + SetX = 4,119 + SetY = 4,-148 + SetFrame = 5,14 + SetX = 5,189 + SetY = 5,-178 + SetOpacity = 5,50 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,19 + SetY = 2,-50 + SetZ = 2,30 + SetX = 3,54 + SetY = 3,-89 + SetFrame = 4,14 + SetX = 4,189 + SetY = 4,-217 + SetOpacity = 4,50 + SetX = 5,159 + SetY = 5,-207 + + Play = 0,Slash10,80 + Play = 2,Slash10,80 + Play = 4,Slash10,80 +#------------------------------- +[Move,SPIKECANNON,2] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,19 + SetY = 2,-50 + SetZ = 2,30 + SetX = 3,54 + SetY = 3,-89 + SetFrame = 4,14 + SetX = 4,189 + SetY = 4,-217 + SetOpacity = 4,50 + SetX = 5,159 + SetY = 5,-207 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 3,14 + SetX = 3,184 + SetY = 3,-196 + SetZ = 3,31 + SetOpacity = 3,50 + SetVisible = 4,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 0,14 + SetY = 0,-20 + SetZ = 0,27 + SetX = 1,69 + SetY = 1,-70 + SetX = 2,129 + SetY = 2,-139 + SetX = 3,179 + SetY = 3,-178 + SetY = 4,-187 + SetX = 5,184 + SetY = 5,-157 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 1,25 + SetY = 1,-40 + SetZ = 1,28 + SetX = 2,64 + SetY = 2,-79 + SetX = 3,104 + SetY = 3,-128 + SetX = 4,169 + SetY = 4,-118 + SetX = 5,150 + SetY = 5,-187 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,69 + SetY = 2,-29 + SetZ = 2,29 + SetX = 3,109 + SetY = 3,-70 + SetX = 4,119 + SetY = 4,-148 + SetFrame = 5,14 + SetX = 5,189 + SetY = 5,-178 + SetOpacity = 5,50 + + Play = 0,Slash10,80 + Play = 2,Slash10,80 + Play = 4,Slash10,80 +#------------------------------- +[Move,SPIKECANNON,3] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,69 + SetY = 2,-29 + SetZ = 2,29 + SetX = 3,109 + SetY = 3,-70 + SetX = 4,119 + SetY = 4,-148 + SetFrame = 5,14 + SetX = 5,189 + SetY = 5,-178 + SetOpacity = 5,50 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,19 + SetY = 2,-50 + SetZ = 2,30 + SetX = 3,54 + SetY = 3,-89 + SetFrame = 4,14 + SetX = 4,189 + SetY = 4,-217 + SetOpacity = 4,50 + SetX = 5,159 + SetY = 5,-207 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 3,14 + SetX = 3,184 + SetY = 3,-196 + SetZ = 3,31 + SetOpacity = 3,50 + SetVisible = 4,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 0,14 + SetY = 0,-20 + SetZ = 0,27 + SetX = 1,69 + SetY = 1,-70 + SetX = 2,129 + SetY = 2,-139 + SetX = 3,179 + SetY = 3,-178 + SetY = 4,-187 + SetX = 5,184 + SetY = 5,-157 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 1,25 + SetY = 1,-40 + SetZ = 1,28 + SetX = 2,64 + SetY = 2,-79 + SetX = 3,104 + SetY = 3,-128 + SetX = 4,169 + SetY = 4,-118 + SetX = 5,150 + SetY = 5,-187 + + Play = 0,Slash10,80 + Play = 2,Slash10,80 + Play = 4,Slash10,80 +#------------------------------- +[Move,SPIKECANNON,4] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 1,25 + SetY = 1,-40 + SetZ = 1,28 + SetX = 2,64 + SetY = 2,-79 + SetX = 3,104 + SetY = 3,-128 + SetX = 4,169 + SetY = 4,-118 + SetX = 5,150 + SetY = 5,-187 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,69 + SetY = 2,-29 + SetZ = 2,29 + SetX = 3,109 + SetY = 3,-70 + SetX = 4,119 + SetY = 4,-148 + SetFrame = 5,14 + SetX = 5,189 + SetY = 5,-178 + SetOpacity = 5,50 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 2,19 + SetY = 2,-50 + SetZ = 2,30 + SetX = 3,54 + SetY = 3,-89 + SetFrame = 4,14 + SetX = 4,189 + SetY = 4,-217 + SetOpacity = 4,50 + SetX = 5,159 + SetY = 5,-207 + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetFrame = 3,14 + SetX = 3,184 + SetY = 3,-196 + SetZ = 3,31 + SetOpacity = 3,50 + SetVisible = 4,false + + Graphic = Examples/poison3 + Focus = UserAndTarget + SetX = 0,14 + SetY = 0,-20 + SetZ = 0,27 + SetX = 1,69 + SetY = 1,-70 + SetX = 2,129 + SetY = 2,-139 + SetX = 3,179 + SetY = 3,-178 + SetY = 4,-187 + SetX = 5,184 + SetY = 5,-157 + + Play = 0,Slash10,80 + Play = 2,Slash10,80 + Play = 4,Slash10,80 diff --git a/PBS/Animations/Example anims/Move/SPIKES.txt b/PBS/Animations/Example anims/Move/SPIKES.txt new file mode 100644 index 000000000..6717254d8 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SPIKES.txt @@ -0,0 +1,85 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SPIKES] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal2 + Focus = User + SetFrame = 3,13 + SetX = 3,0 + SetY = 3,12 + SetZ = 3,28 + SetZoomX = 3,50 + SetZoomY = 3,50 + SetX = 4,25 + SetY = 4,-70 + SetX = 5,57 + SetY = 5,-114 + SetX = 6,0 + SetY = 6,6 + SetX = 7,19 + SetY = 7,-76 + SetX = 8,243 + SetY = 8,-158 + SetX = 9,281 + SetY = 9,-95 + SetX = 10,179 + SetX = 12,230 + SetY = 12,-114 + SetX = 13,179 + SetY = 13,-95 + + Graphic = Examples/normal2 + Focus = User + SetFrame = 6,13 + SetX = 6,115 + SetY = 6,-139 + SetZ = 6,29 + SetZoomX = 6,50 + SetZoomY = 6,50 + SetX = 7,179 + SetY = 7,-95 + SetX = 8,76 + SetY = 8,-139 + SetX = 9,179 + SetY = 9,-95 + SetX = 10,281 + + Graphic = Examples/normal2 + Focus = User + SetFrame = 0,13 + SetX = 0,0 + SetY = 0,-13 + SetZ = 0,27 + SetZoomX = 0,50 + SetZoomY = 0,50 + SetX = 1,12 + SetY = 1,-63 + SetX = 2,38 + SetY = 2,-108 + SetX = 3,83 + SetY = 3,-139 + SetX = 4,140 + SetY = 4,-133 + SetX = 5,179 + SetY = 5,-95 + SetX = 7,160 + SetY = 7,-164 + SetX = 8,179 + SetY = 8,-95 + SetY = 9,-177 + SetX = 10,230 + SetY = 10,-114 + SetX = 12,179 + SetY = 12,-95 + SetX = 13,230 + SetY = 13,-114 + + Play = 1,throw,80 + Play = 5,Sword1,80 + Play = 8,Sword1,80 + Play = 10,Sword1,80 diff --git a/PBS/Animations/Example anims/Move/SPLASH.txt b/PBS/Animations/Example anims/Move/SPLASH.txt new file mode 100644 index 000000000..a32e7d618 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SPLASH.txt @@ -0,0 +1,91 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SPLASH] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/poison2 + Focus = User + SetFlip = 1,true + SetX = 1,-72 + SetY = 1,6 + SetZ = 1,28 + SetVisible = 2,false + + Graphic = Examples/poison2 + Focus = User + SetFrame = 2,1 + SetX = 2,72 + SetY = 2,-2 + SetZ = 2,29 + SetVisible = 3,false + + Graphic = Examples/poison2 + Focus = User + SetFrame = 3,1 + SetFlip = 3,true + SetX = 3,-88 + SetY = 3,-10 + SetZ = 3,28 + SetX = 4,-96 + SetY = 4,-18 + SetFrame = 5,2 + SetX = 5,-112 + SetY = 5,-2 + SetFrame = 6,1 + SetFlip = 6,false + SetX = 6,112 + SetY = 6,-18 + SetFrame = 7,0 + SetFlip = 7,true + SetX = 7,-80 + SetFrame = 8,1 + SetX = 8,-96 + SetY = 8,-26 + SetFrame = 9,2 + SetX = 9,-120 + + Graphic = Examples/poison2 + Focus = User + SetX = 4,80 + SetY = 4,-2 + SetZ = 4,29 + SetX = 5,96 + SetY = 5,-10 + SetFlip = 6,true + SetX = 6,-64 + SetVisible = 7,false + + Graphic = Examples/poison2 + Focus = User + SetX = 0,56 + SetY = 0,14 + SetZ = 0,27 + SetX = 1,64 + SetY = 1,6 + SetFlip = 2,true + SetX = 2,-80 + SetY = 2,-2 + SetFrame = 3,1 + SetFlip = 3,false + SetX = 3,80 + SetFrame = 4,2 + SetX = 4,96 + SetY = 4,6 + SetX = 5,104 + SetY = 5,14 + SetFlip = 6,true + SetX = 6,-120 + SetFrame = 7,1 + SetFlip = 7,false + SetX = 7,120 + SetY = 7,-26 + SetFrame = 8,2 + SetX = 8,136 + SetX = 9,144 + SetY = 9,-18 + + Play = 0,Water2,40,70 diff --git a/PBS/Animations/Example anims/Move/SPORE.txt b/PBS/Animations/Example anims/Move/SPORE.txt new file mode 100644 index 000000000..167e95ac0 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SPORE.txt @@ -0,0 +1,32 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SPORE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Special5 + Focus = Target + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFrame = 6,6 + SetFrame = 7,7 + SetFrame = 8,8 + SetFrame = 9,9 + SetFrame = 10,10 + SetFrame = 11,11 + SetFrame = 12,12 + SetFrame = 13,13 + SetVisible = 14,false + + Play = 0,Sand,80 diff --git a/PBS/Animations/Example anims/Move/STEALTHROCK.txt b/PBS/Animations/Example anims/Move/STEALTHROCK.txt new file mode 100644 index 000000000..2a4d0e404 --- /dev/null +++ b/PBS/Animations/Example anims/Move/STEALTHROCK.txt @@ -0,0 +1,667 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,STEALTHROCK] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 0,5 + SetX = 0,128 + SetY = 0,224 + SetZ = 0,27 + SetX = 1,150 + SetY = 1,192 + SetFrame = 2,6 + SetX = 2,180 + SetY = 2,158 + SetFrame = 3,8 + SetX = 3,208 + SetY = 3,124 + SetFrame = 4,7 + SetX = 4,248 + SetY = 4,104 + SetFrame = 5,0 + SetX = 5,290 + SetY = 5,96 + SetFrame = 6,1 + SetX = 6,336 + SetY = 6,110 + SetFrame = 7,3 + SetX = 7,370 + SetY = 7,136 + SetFrame = 8,2 + SetX = 8,384 + SetY = 8,166 + SetFrame = 9,0 + SetX = 9,290 + SetY = 9,96 + SetFrame = 10,1 + SetX = 10,336 + SetY = 10,110 + SetFrame = 11,3 + SetX = 11,370 + SetY = 11,136 + SetFrame = 12,2 + SetX = 12,384 + SetY = 12,166 + SetFrame = 13,0 + SetX = 13,290 + SetY = 13,96 + SetFrame = 14,1 + SetX = 14,336 + SetY = 14,110 + SetFrame = 15,3 + SetX = 15,370 + SetY = 15,136 + SetFrame = 16,2 + SetX = 16,384 + SetY = 16,166 + SetFrame = 17,0 + SetX = 17,290 + SetY = 17,96 + SetFrame = 18,1 + SetX = 18,336 + SetY = 18,110 + SetFrame = 19,3 + SetX = 19,370 + SetY = 19,136 + SetFrame = 20,2 + SetX = 20,384 + SetY = 20,166 + SetFrame = 21,0 + SetX = 21,323 + SetY = 21,169 + SetOpacity = 22,192 + SetOpacity = 23,128 + SetOpacity = 24,64 + SetFrame = 25,2 + SetX = 25,288 + SetY = 25,181 + SetOpacity = 25,255 + SetOpacity = 26,192 + SetOpacity = 27,128 + SetOpacity = 28,64 + SetVisible = 29,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 4,5 + SetX = 4,128 + SetY = 4,224 + SetZ = 4,28 + SetX = 5,150 + SetY = 5,192 + SetFrame = 6,6 + SetX = 6,180 + SetY = 6,158 + SetFrame = 7,8 + SetX = 7,208 + SetY = 7,124 + SetFrame = 8,7 + SetX = 8,248 + SetY = 8,104 + SetFrame = 9,5 + SetX = 9,150 + SetY = 9,192 + SetFrame = 10,6 + SetX = 10,180 + SetY = 10,158 + SetFrame = 11,8 + SetX = 11,208 + SetY = 11,124 + SetFrame = 12,7 + SetX = 12,248 + SetY = 12,104 + SetFrame = 13,5 + SetX = 13,150 + SetY = 13,192 + SetFrame = 14,6 + SetX = 14,180 + SetY = 14,158 + SetFrame = 15,8 + SetX = 15,208 + SetY = 15,124 + SetFrame = 16,7 + SetX = 16,248 + SetY = 16,104 + SetFrame = 17,1 + SetX = 17,352 + SetY = 17,186 + SetFrame = 18,2 + SetX = 18,475 + SetY = 18,175 + SetOpacity = 18,192 + SetFrame = 19,1 + SetX = 19,352 + SetY = 19,186 + SetOpacity = 19,128 + SetFrame = 20,2 + SetX = 20,475 + SetY = 20,175 + SetOpacity = 20,64 + SetFrame = 21,3 + SetX = 21,395 + SetY = 21,190 + SetOpacity = 21,255 + SetOpacity = 22,192 + SetOpacity = 23,128 + SetOpacity = 24,64 + SetFrame = 25,1 + SetX = 25,444 + SetY = 25,176 + SetOpacity = 25,255 + SetOpacity = 26,192 + SetOpacity = 27,128 + SetOpacity = 28,64 + SetVisible = 29,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetX = 7,431 + SetY = 7,188 + SetZ = 7,29 + SetOpacity = 7,128 + SetFrame = 8,5 + SetX = 8,128 + SetY = 8,224 + SetOpacity = 8,255 + SetFrame = 9,0 + SetX = 9,431 + SetY = 9,188 + SetFrame = 10,3 + SetX = 10,295 + SetY = 10,174 + SetFrame = 12,5 + SetX = 12,128 + SetY = 12,224 + SetFrame = 13,3 + SetX = 13,295 + SetY = 13,174 + SetOpacity = 14,192 + SetOpacity = 15,128 + SetOpacity = 16,64 + SetFrame = 17,2 + SetX = 17,475 + SetY = 17,175 + SetOpacity = 17,255 + SetFrame = 18,1 + SetX = 18,352 + SetY = 18,186 + SetOpacity = 18,192 + SetFrame = 19,2 + SetX = 19,475 + SetY = 19,175 + SetOpacity = 19,128 + SetFrame = 20,1 + SetX = 20,352 + SetY = 20,186 + SetOpacity = 20,64 + SetFrame = 21,2 + SetX = 21,288 + SetY = 21,181 + SetOpacity = 21,255 + SetVisible = 25,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 7,3 + SetX = 7,295 + SetY = 7,174 + SetZ = 7,31 + SetOpacity = 7,128 + SetFrame = 8,0 + SetX = 8,431 + SetY = 8,188 + SetOpacity = 8,192 + SetVisible = 9,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 8,3 + SetX = 8,295 + SetY = 8,174 + SetZ = 8,30 + SetOpacity = 8,192 + SetOpacity = 9,255 + SetFrame = 10,0 + SetX = 10,431 + SetY = 10,188 + SetOpacity = 14,192 + SetOpacity = 15,128 + SetOpacity = 16,64 + SetX = 17,323 + SetY = 17,169 + SetOpacity = 17,255 + SetFrame = 21,1 + SetX = 21,444 + SetY = 21,176 + SetVisible = 25,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 11,1 + SetX = 11,352 + SetY = 11,186 + SetZ = 11,31 + SetOpacity = 11,128 + SetFrame = 12,3 + SetX = 12,295 + SetY = 12,174 + SetOpacity = 12,255 + SetFrame = 13,1 + SetX = 13,352 + SetY = 13,186 + SetFrame = 16,2 + SetX = 16,475 + SetY = 16,175 + SetFrame = 17,3 + SetX = 17,395 + SetY = 17,190 + SetVisible = 21,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 11,2 + SetX = 11,475 + SetY = 11,175 + SetZ = 11,32 + SetOpacity = 11,128 + SetOpacity = 12,192 + SetOpacity = 13,255 + SetFrame = 16,1 + SetX = 16,352 + SetY = 16,186 + SetVisible = 17,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 12,1 + SetX = 12,352 + SetY = 12,186 + SetZ = 12,33 + SetOpacity = 12,192 + SetVisible = 13,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetX = 15,323 + SetY = 15,169 + SetZ = 15,33 + SetOpacity = 15,128 + SetOpacity = 16,192 + SetVisible = 17,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 15,3 + SetX = 15,395 + SetY = 15,190 + SetZ = 15,34 + SetOpacity = 15,128 + SetOpacity = 16,192 + SetVisible = 17,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 19,1 + SetX = 19,444 + SetY = 19,176 + SetZ = 19,32 + SetOpacity = 19,128 + SetFrame = 20,2 + SetX = 20,288 + SetY = 20,181 + SetOpacity = 20,192 + SetVisible = 21,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 19,2 + SetX = 19,288 + SetY = 19,181 + SetZ = 19,33 + SetOpacity = 19,128 + SetFrame = 20,1 + SetX = 20,444 + SetY = 20,176 + SetOpacity = 20,192 + SetVisible = 21,false + + Play = 0,Slam,80 +#------------------------------- +[OppMove,STEALTHROCK] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 0,5 + SetX = 0,376 + SetY = 0,84 + SetZ = 0,27 + SetX = 1,332 + SetY = 1,72 + SetFrame = 2,6 + SetX = 2,294 + SetY = 2,62 + SetFrame = 3,8 + SetX = 3,250 + SetY = 3,74 + SetFrame = 4,7 + SetX = 4,214 + SetY = 4,104 + SetFrame = 5,0 + SetX = 5,178 + SetY = 5,142 + SetFrame = 6,1 + SetX = 6,152 + SetY = 6,178 + SetFrame = 7,3 + SetX = 7,128 + SetY = 7,224 + SetFrame = 8,2 + SetX = 8,114 + SetY = 8,274 + SetFrame = 9,0 + SetX = 9,178 + SetY = 9,142 + SetFrame = 10,1 + SetX = 10,152 + SetY = 10,178 + SetFrame = 11,3 + SetX = 11,128 + SetY = 11,224 + SetFrame = 12,2 + SetX = 12,114 + SetY = 12,274 + SetFrame = 13,0 + SetX = 13,178 + SetY = 13,142 + SetFrame = 14,1 + SetX = 14,152 + SetY = 14,178 + SetFrame = 15,3 + SetX = 15,128 + SetY = 15,224 + SetFrame = 16,2 + SetX = 16,114 + SetY = 16,274 + SetFrame = 17,0 + SetX = 17,178 + SetY = 17,142 + SetFrame = 18,1 + SetX = 18,152 + SetY = 18,178 + SetFrame = 19,3 + SetX = 19,128 + SetY = 19,224 + SetFrame = 20,2 + SetX = 20,114 + SetY = 20,274 + SetFrame = 21,0 + SetX = 21,99 + SetY = 21,265 + SetOpacity = 22,192 + SetOpacity = 23,128 + SetOpacity = 24,64 + SetFrame = 25,2 + SetX = 25,64 + SetY = 25,277 + SetOpacity = 25,255 + SetOpacity = 26,192 + SetOpacity = 27,128 + SetOpacity = 28,64 + SetVisible = 29,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 4,5 + SetX = 4,376 + SetY = 4,84 + SetZ = 4,28 + SetX = 5,332 + SetY = 5,72 + SetFrame = 6,6 + SetX = 6,294 + SetY = 6,62 + SetFrame = 7,8 + SetX = 7,250 + SetY = 7,74 + SetFrame = 8,7 + SetX = 8,214 + SetY = 8,104 + SetFrame = 9,5 + SetX = 9,332 + SetY = 9,72 + SetFrame = 10,6 + SetX = 10,294 + SetY = 10,62 + SetFrame = 11,8 + SetX = 11,250 + SetY = 11,74 + SetFrame = 12,7 + SetX = 12,214 + SetY = 12,104 + SetFrame = 13,5 + SetX = 13,332 + SetY = 13,72 + SetFrame = 14,6 + SetX = 14,294 + SetY = 14,62 + SetFrame = 15,8 + SetX = 15,250 + SetY = 15,74 + SetFrame = 16,7 + SetX = 16,214 + SetY = 16,104 + SetFrame = 17,1 + SetX = 17,128 + SetY = 17,282 + SetFrame = 18,2 + SetX = 18,251 + SetY = 18,271 + SetOpacity = 18,192 + SetFrame = 19,1 + SetX = 19,128 + SetY = 19,282 + SetOpacity = 19,128 + SetFrame = 20,2 + SetX = 20,251 + SetY = 20,271 + SetOpacity = 20,64 + SetFrame = 21,3 + SetX = 21,171 + SetY = 21,286 + SetOpacity = 21,255 + SetOpacity = 22,192 + SetOpacity = 23,128 + SetOpacity = 24,64 + SetFrame = 25,1 + SetX = 25,220 + SetY = 25,272 + SetOpacity = 25,255 + SetOpacity = 26,192 + SetOpacity = 27,128 + SetOpacity = 28,64 + SetVisible = 29,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetX = 7,207 + SetY = 7,284 + SetZ = 7,29 + SetOpacity = 7,128 + SetFrame = 8,5 + SetX = 8,376 + SetY = 8,84 + SetOpacity = 8,255 + SetFrame = 9,0 + SetX = 9,207 + SetY = 9,284 + SetFrame = 10,3 + SetX = 10,71 + SetY = 10,270 + SetFrame = 12,5 + SetX = 12,376 + SetY = 12,84 + SetFrame = 13,3 + SetX = 13,71 + SetY = 13,270 + SetOpacity = 14,192 + SetOpacity = 15,128 + SetOpacity = 16,64 + SetFrame = 17,2 + SetX = 17,251 + SetY = 17,271 + SetOpacity = 17,255 + SetFrame = 18,1 + SetX = 18,128 + SetY = 18,282 + SetOpacity = 18,192 + SetFrame = 19,2 + SetX = 19,251 + SetY = 19,271 + SetOpacity = 19,128 + SetFrame = 20,1 + SetX = 20,128 + SetY = 20,282 + SetOpacity = 20,64 + SetFrame = 21,2 + SetX = 21,64 + SetY = 21,277 + SetOpacity = 21,255 + SetVisible = 25,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 7,3 + SetX = 7,71 + SetY = 7,270 + SetZ = 7,31 + SetOpacity = 7,128 + SetFrame = 8,0 + SetX = 8,207 + SetY = 8,284 + SetOpacity = 8,192 + SetVisible = 9,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 8,3 + SetX = 8,71 + SetY = 8,270 + SetZ = 8,30 + SetOpacity = 8,192 + SetOpacity = 9,255 + SetFrame = 10,0 + SetX = 10,207 + SetY = 10,284 + SetOpacity = 14,192 + SetOpacity = 15,128 + SetOpacity = 16,64 + SetX = 17,99 + SetY = 17,265 + SetOpacity = 17,255 + SetFrame = 21,1 + SetX = 21,220 + SetY = 21,272 + SetVisible = 25,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 11,1 + SetX = 11,128 + SetY = 11,282 + SetZ = 11,31 + SetOpacity = 11,128 + SetFrame = 12,3 + SetX = 12,71 + SetY = 12,270 + SetOpacity = 12,255 + SetFrame = 13,1 + SetX = 13,128 + SetY = 13,282 + SetFrame = 16,2 + SetX = 16,251 + SetY = 16,271 + SetFrame = 17,3 + SetX = 17,171 + SetY = 17,286 + SetVisible = 21,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 11,2 + SetX = 11,251 + SetY = 11,271 + SetZ = 11,32 + SetOpacity = 11,128 + SetOpacity = 12,192 + SetOpacity = 13,255 + SetFrame = 16,1 + SetX = 16,128 + SetY = 16,282 + SetVisible = 17,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 12,1 + SetX = 12,128 + SetY = 12,282 + SetZ = 12,33 + SetOpacity = 12,192 + SetVisible = 13,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetX = 15,99 + SetY = 15,265 + SetZ = 15,33 + SetOpacity = 15,128 + SetOpacity = 16,192 + SetVisible = 17,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 15,3 + SetX = 15,171 + SetY = 15,286 + SetZ = 15,34 + SetOpacity = 15,128 + SetOpacity = 16,192 + SetVisible = 17,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 19,1 + SetX = 19,220 + SetY = 19,272 + SetZ = 19,32 + SetOpacity = 19,128 + SetFrame = 20,2 + SetX = 20,64 + SetY = 20,277 + SetOpacity = 20,192 + SetVisible = 21,false + + Graphic = Examples/Rock Tomb + Focus = Foreground + SetFrame = 19,2 + SetX = 19,64 + SetY = 19,277 + SetZ = 19,33 + SetOpacity = 19,128 + SetFrame = 20,1 + SetX = 20,220 + SetY = 20,272 + SetOpacity = 20,192 + SetVisible = 21,false + + Play = 0,Slam,80 diff --git a/PBS/Animations/Example anims/Move/STOMP.txt b/PBS/Animations/Example anims/Move/STOMP.txt new file mode 100644 index 000000000..283a0bc10 --- /dev/null +++ b/PBS/Animations/Example anims/Move/STOMP.txt @@ -0,0 +1,24 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,STOMP] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/normal1 + Focus = Target + SetFrame = 0,6 + SetX = 0,0 + SetY = 0,-114 + SetZ = 0,27 + SetY = 1,-74 + SetY = 2,-42 + SetY = 3,-26 + SetY = 4,-18 + SetVisible = 6,false + + Play = 2,Blow6,80 diff --git a/PBS/Animations/Example anims/Move/STRINGSHOT.txt b/PBS/Animations/Example anims/Move/STRINGSHOT.txt new file mode 100644 index 000000000..ccbee4066 --- /dev/null +++ b/PBS/Animations/Example anims/Move/STRINGSHOT.txt @@ -0,0 +1,131 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,STRINGSHOT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/water3 + Focus = UserAndTarget + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetZoomX = 0,25 + SetZoomY = 0,25 + SetX = 1,64 + SetY = 1,-70 + SetZoomX = 1,50 + SetZoomY = 1,50 + SetX = 2,129 + SetY = 2,-148 + SetZoomX = 2,75 + SetZoomY = 2,75 + SetVisible = 3,false + + Graphic = Examples/water3 + Focus = UserAndTarget + SetX = 1,0 + SetY = 1,18 + SetZ = 1,28 + SetZoomX = 1,25 + SetZoomY = 1,25 + SetX = 2,64 + SetY = 2,-70 + SetZoomX = 2,50 + SetZoomY = 2,50 + SetX = 3,119 + SetY = 3,-128 + SetZoomX = 3,75 + SetZoomY = 3,75 + SetVisible = 4,false + + Graphic = Examples/water3 + Focus = UserAndTarget + SetX = 2,0 + SetY = 2,18 + SetZ = 2,29 + SetZoomX = 2,25 + SetZoomY = 2,25 + SetX = 3,59 + SetY = 3,-59 + SetZoomX = 3,50 + SetZoomY = 3,50 + SetX = 4,119 + SetY = 4,-98 + SetZoomX = 4,75 + SetZoomY = 4,75 + SetVisible = 5,false + + Graphic = Examples/water3 + Focus = Target + SetX = 3,-2 + SetY = 3,14 + SetZ = 3,27 + SetZoomX = 4,95 + SetZoomY = 4,95 + SetZoomX = 5,90 + SetZoomY = 5,90 + SetX = 6,-2 + SetY = 6,14 + SetZoomX = 7,95 + SetZoomY = 7,95 + SetZoomX = 8,100 + SetZoomY = 8,100 + SetZoomX = 10,95 + SetZoomY = 10,95 + SetZoomX = 11,90 + SetZoomY = 11,90 + SetZoomX = 13,95 + SetZoomY = 13,95 + SetZoomX = 14,100 + SetZoomY = 14,100 + SetOpacity = 15,100 + + Graphic = Examples/water3 + Focus = Target + SetX = 4,-2 + SetY = 4,39 + SetZ = 4,28 + SetZoomX = 5,90 + SetZoomY = 5,90 + SetX = 6,-2 + SetY = 6,39 + SetZoomX = 7,95 + SetZoomY = 7,95 + SetZoomX = 8,100 + SetZoomY = 8,100 + SetZoomX = 10,95 + SetZoomY = 10,95 + SetZoomX = 11,90 + SetZoomY = 11,90 + SetZoomX = 13,95 + SetZoomY = 13,95 + SetZoomX = 14,100 + SetZoomY = 14,100 + SetOpacity = 15,100 + + Graphic = Examples/water3 + Focus = Target + SetX = 5,-2 + SetY = 5,65 + SetZ = 5,29 + SetZoomX = 6,96 + SetZoomY = 6,96 + SetZoomX = 7,100 + SetZoomY = 7,100 + SetZoomX = 10,95 + SetZoomY = 10,95 + SetZoomX = 11,90 + SetZoomY = 11,90 + SetZoomX = 13,95 + SetZoomY = 13,95 + SetZoomX = 14,100 + SetZoomY = 14,100 + SetOpacity = 15,100 + + Play = 0,throw,80 + Play = 0,Battle1,80 diff --git a/PBS/Animations/Example anims/Move/STRUGGLE.txt b/PBS/Animations/Example anims/Move/STRUGGLE.txt new file mode 100644 index 000000000..c55f28116 --- /dev/null +++ b/PBS/Animations/Example anims/Move/STRUGGLE.txt @@ -0,0 +1,62 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,STRUGGLE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Struggle + Focus = User + SetFrame = 0,1 + SetX = 0,40 + SetY = 0,6 + SetZ = 0,28 + SetX = 1,48 + SetY = 1,14 + SetY = 2,-2 + SetFrame = 3,0 + SetFlip = 3,true + SetY = 3,14 + SetX = 4,56 + SetY = 4,-2 + SetFrame = 5,1 + SetFlip = 5,false + SetX = 5,48 + SetY = 5,6 + SetY = 6,-10 + SetX = 7,40 + SetY = 7,6 + SetFrame = 8,0 + SetX = 8,-48 + SetY = 8,-18 + SetX = 9,-56 + SetY = 9,14 + + Graphic = Examples/Struggle + Focus = User + SetX = 0,-40 + SetY = 0,6 + SetZ = 0,27 + SetY = 1,22 + SetX = 2,-32 + SetY = 2,6 + SetFrame = 3,1 + SetFlip = 3,true + SetY = 3,-2 + SetX = 4,-40 + SetY = 4,14 + SetFrame = 5,0 + SetFlip = 5,false + SetY = 5,-2 + SetX = 6,-32 + SetY = 6,-18 + SetX = 7,-48 + SetY = 7,6 + SetFrame = 8,1 + SetX = 8,40 + SetY = 8,-10 + SetY = 9,6 diff --git a/PBS/Animations/Example anims/Move/STUNSPORE.txt b/PBS/Animations/Example anims/Move/STUNSPORE.txt new file mode 100644 index 000000000..a5a8b6c98 --- /dev/null +++ b/PBS/Animations/Example anims/Move/STUNSPORE.txt @@ -0,0 +1,32 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,STUNSPORE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Special5 + Focus = Target + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFrame = 6,6 + SetFrame = 7,7 + SetFrame = 8,8 + SetFrame = 9,9 + SetFrame = 10,10 + SetFrame = 11,11 + SetFrame = 12,12 + SetFrame = 13,13 + SetVisible = 14,false + + Play = 0,Sand,80 diff --git a/PBS/Animations/Example anims/Move/SUNNYDAY.txt b/PBS/Animations/Example anims/Move/SUNNYDAY.txt new file mode 100644 index 000000000..6b17fee1f --- /dev/null +++ b/PBS/Animations/Example anims/Move/SUNNYDAY.txt @@ -0,0 +1,39 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SUNNYDAY] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/weather + Focus = Foreground + SetX = 0,64 + SetY = 0,64 + SetZ = 0,28 + SetOpacity = 0,64 + SetX = 1,72 + SetY = 1,72 + SetOpacity = 1,128 + SetX = 2,80 + SetY = 2,80 + SetOpacity = 2,192 + SetX = 3,88 + SetY = 3,88 + SetOpacity = 3,224 + SetX = 4,94 + SetY = 4,94 + SetOpacity = 4,255 + SetX = 12,88 + SetY = 12,88 + SetOpacity = 12,224 + SetX = 13,80 + SetY = 13,80 + SetOpacity = 13,192 + SetX = 14,72 + SetY = 14,72 + SetOpacity = 14,128 + SetX = 15,64 + SetY = 15,64 + SetOpacity = 15,64 diff --git a/PBS/Animations/Example anims/Move/SUPERSONIC.txt b/PBS/Animations/Example anims/Move/SUPERSONIC.txt new file mode 100644 index 000000000..0576fece5 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SUPERSONIC.txt @@ -0,0 +1,115 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SUPERSONIC] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Struggle + Focus = UserAndTarget + SetFrame = 2,1 + SetX = 2,14 + SetY = 2,0 + SetZ = 2,28 + SetAngle = 2,20 + SetX = 3,29 + SetY = 3,-29 + SetZoomX = 3,120 + SetZoomY = 3,120 + SetX = 4,59 + SetY = 4,-70 + SetZoomX = 4,130 + SetZoomY = 4,130 + SetX = 5,75 + SetY = 5,-79 + SetZoomX = 5,120 + SetZoomY = 5,120 + SetX = 6,59 + SetY = 6,-59 + SetX = 7,84 + SetY = 7,-98 + SetZoomX = 7,130 + SetZoomY = 7,130 + SetX = 8,89 + SetY = 8,-89 + SetZoomX = 8,120 + SetZoomY = 8,120 + SetX = 9,79 + SetX = 10,84 + SetY = 10,-70 + SetZoomX = 10,130 + SetZoomY = 10,130 + SetVisible = 11,false + + Graphic = Examples/Struggle + Focus = UserAndTarget + SetFrame = 4,1 + SetX = 4,25 + SetY = 4,-20 + SetZ = 4,29 + SetAngle = 4,20 + SetX = 5,34 + SetY = 5,-29 + SetVisible = 6,false + + Graphic = Examples/Struggle + Focus = UserAndTarget + SetFrame = 7,1 + SetX = 7,44 + SetY = 7,-50 + SetZ = 7,29 + SetAngle = 7,20 + SetX = 8,50 + SetY = 8,-40 + SetVisible = 9,false + + Graphic = Examples/Struggle + Focus = UserAndTarget + SetFrame = 0,1 + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetAngle = 1,20 + SetX = 2,34 + SetY = 2,-29 + SetZoomX = 2,120 + SetZoomY = 2,120 + SetX = 3,64 + SetY = 3,-70 + SetZoomX = 3,130 + SetZoomY = 3,130 + SetX = 4,100 + SetY = 4,-109 + SetZoomX = 4,150 + SetZoomY = 4,150 + SetX = 5,119 + SetY = 5,-128 + SetX = 6,100 + SetY = 6,-109 + SetZoomX = 6,130 + SetZoomY = 6,130 + SetX = 7,129 + SetY = 7,-139 + SetZoomX = 7,150 + SetZoomY = 7,150 + SetX = 8,134 + SetX = 9,129 + SetZoomX = 9,130 + SetZoomY = 9,130 + SetY = 10,-128 + SetZoomX = 10,150 + SetZoomY = 10,150 + SetX = 11,114 + SetY = 11,-98 + SetX = 12,179 + SetY = 12,-178 + SetZoomX = 12,100 + SetZoomY = 12,100 + SetAngle = 12,0 + SetOpacity = 12,100 + + Play = 0,Twine,80 diff --git a/PBS/Animations/Example anims/Move/SWAGGER.txt b/PBS/Animations/Example anims/Move/SWAGGER.txt new file mode 100644 index 000000000..4a6da9df1 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SWAGGER.txt @@ -0,0 +1,44 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SWAGGER] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/mixed status + Focus = Target + SetFrame = 4,4 + SetX = 4,21 + SetY = 4,-56 + SetZ = 4,27 + SetX = 5,18 + SetY = 5,-58 + SetX = 6,-12 + SetY = 6,-28 + SetX = 7,-10 + SetY = 7,-24 + SetX = 8,49 + SetY = 8,-30 + SetX = 9,43 + SetY = 9,-33 + SetX = 10,-23 + SetY = 10,-50 + SetX = 11,-22 + SetX = 12,23 + SetY = 12,-37 + SetX = 13,21 + SetY = 13,-41 + SetX = 14,-17 + SetY = 14,-27 + SetX = 15,-10 + SetY = 15,-24 + SetX = 16,25 + SetY = 16,-31 + SetX = 17,27 + SetY = 17,-35 + + Play = 0,Swagger diff --git a/PBS/Animations/Example anims/Move/SWEETKISS.txt b/PBS/Animations/Example anims/Move/SWEETKISS.txt new file mode 100644 index 000000000..1638522c6 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SWEETKISS.txt @@ -0,0 +1,84 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SWEETKISS] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/electric2 + Focus = Target + SetFrame = 8,9 + SetX = 8,-16 + SetY = 8,-42 + SetZ = 8,28 + SetX = 9,-8 + SetY = 9,-50 + SetFrame = 10,10 + SetX = 10,0 + SetY = 10,-58 + SetY = 11,-66 + SetFrame = 12,8 + SetFlip = 12,true + SetX = 12,-88 + SetY = 12,-50 + SetZoomX = 12,75 + SetZoomY = 12,75 + SetVisible = 18,false + + Graphic = Examples/electric2 + Focus = Target + SetFrame = 0,8 + SetX = 0,56 + SetY = 0,38 + SetZ = 0,27 + SetZoomX = 0,50 + SetZoomY = 0,50 + SetOpacity = 0,100 + SetX = 1,32 + SetY = 1,22 + SetZoomX = 1,75 + SetZoomY = 1,75 + SetOpacity = 1,200 + SetX = 2,0 + SetY = 2,14 + SetOpacity = 2,255 + SetX = 3,-16 + SetY = 3,6 + SetX = 4,-32 + SetY = 4,-10 + SetX = 5,-56 + SetY = 5,-34 + SetX = 6,-72 + SetY = 6,-42 + SetX = 7,-80 + SetFlip = 8,true + SetX = 8,-88 + SetY = 8,-50 + SetFrame = 12,11 + SetFlip = 12,false + SetX = 12,-8 + SetY = 12,-74 + SetZoomX = 12,100 + SetZoomY = 12,100 + SetX = 13,-16 + SetY = 13,-82 + SetFrame = 14,12 + SetY = 14,-90 + SetX = 15,-8 + SetY = 15,-98 + SetFrame = 16,13 + SetX = 16,0 + SetY = 16,-106 + SetY = 17,-114 + SetFrame = 18,8 + SetFlip = 18,true + SetX = 18,-88 + SetY = 18,-50 + SetZoomX = 18,75 + SetZoomY = 18,75 + + Play = 4,Saint1,80 diff --git a/PBS/Animations/Example anims/Move/SWIFT.txt b/PBS/Animations/Example anims/Move/SWIFT.txt new file mode 100644 index 000000000..8ab32024a --- /dev/null +++ b/PBS/Animations/Example anims/Move/SWIFT.txt @@ -0,0 +1,145 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SWIFT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/007-Weapon02 + Focus = UserAndTarget + SetFrame = 0,11 + SetX = 0,0 + SetY = 0,18 + SetZ = 0,27 + SetX = 1,39 + SetY = 1,-20 + SetX = 2,69 + SetY = 2,-59 + SetX = 3,125 + SetY = 3,-128 + SetX = 4,179 + SetY = 4,-178 + SetFrame = 5,13 + SetX = 5,100 + SetY = 5,-168 + SetX = 6,125 + SetY = 6,-196 + SetFrame = 7,11 + SetX = 7,175 + SetY = 7,-226 + SetX = 8,125 + SetY = 8,-207 + SetFrame = 9,13 + SetX = 9,139 + SetY = 9,-139 + SetX = 10,179 + SetY = 10,-187 + SetFrame = 11,12 + + Graphic = Examples/007-Weapon02 + Focus = UserAndTarget + SetFrame = 1,12 + SetX = 1,0 + SetY = 1,18 + SetZ = 1,28 + SetX = 2,34 + SetY = 2,-20 + SetX = 3,84 + SetY = 3,-79 + SetX = 4,125 + SetY = 4,-139 + SetX = 5,164 + SetY = 5,-178 + SetFrame = 6,11 + SetX = 6,134 + SetY = 6,-139 + SetX = 7,129 + SetY = 7,-217 + SetFrame = 8,12 + SetX = 8,159 + SetY = 8,-178 + SetX = 9,104 + SetY = 9,-118 + SetX = 10,144 + SetY = 10,-157 + SetVisible = 11,false + + Graphic = Examples/007-Weapon02 + Focus = UserAndTarget + SetFrame = 2,13 + SetX = 2,0 + SetY = 2,-10 + SetZ = 2,29 + SetX = 3,39 + SetY = 3,-70 + SetX = 4,75 + SetY = 4,-118 + SetFrame = 5,11 + SetX = 5,100 + SetY = 5,-59 + SetX = 6,84 + SetY = 6,-139 + SetFrame = 7,12 + SetX = 7,125 + SetY = 7,-128 + SetFrame = 8,13 + SetX = 8,104 + SetY = 8,-89 + SetVisible = 9,false + + Graphic = Examples/007-Weapon02 + Focus = UserAndTarget + SetFrame = 3,11 + SetX = 3,50 + SetY = 3,0 + SetZ = 3,30 + SetX = 4,75 + SetY = 4,-29 + SetX = 5,34 + SetY = 5,-98 + SetFrame = 6,12 + SetX = 6,79 + SetY = 6,-79 + SetFrame = 7,13 + SetX = 7,69 + SetY = 7,-59 + SetFrame = 8,12 + SetX = 8,59 + SetVisible = 9,false + + Graphic = Examples/007-Weapon02 + Focus = UserAndTarget + SetFrame = 3,11 + SetX = 3,-10 + SetY = 3,-29 + SetZ = 3,31 + SetX = 4,14 + SetY = 4,-70 + SetFrame = 5,12 + SetX = 5,39 + SetY = 5,-29 + SetFrame = 6,13 + SetX = 6,44 + SetY = 6,-20 + SetFrame = 7,12 + SetX = 7,29 + SetVisible = 8,false + + Graphic = Examples/007-Weapon02 + Focus = UserAndTarget + SetFrame = 4,12 + SetX = 4,0 + SetY = 4,28 + SetZ = 4,32 + SetFrame = 5,13 + SetFrame = 6,12 + SetVisible = 7,false + + Play = 0,Saint3,80 + Play = 2,Saint3,80 + Play = 5,Saint3,80 + Play = 8,Saint3,80 diff --git a/PBS/Animations/Example anims/Move/SWORDSDANCE.txt b/PBS/Animations/Example anims/Move/SWORDSDANCE.txt new file mode 100644 index 000000000..42aa2e934 --- /dev/null +++ b/PBS/Animations/Example anims/Move/SWORDSDANCE.txt @@ -0,0 +1,127 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SWORDSDANCE] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = User + SetFrame = 0,10 + SetX = 0,52 + SetY = 0,123 + SetZ = 0,28 + SetX = 1,50 + SetY = 1,81 + SetX = 2,-36 + SetY = 2,54 + SetX = 3,-34 + SetY = 3,-15 + SetX = 4,51 + SetY = 4,-64 + SetFrame = 5,13 + SetX = 5,-43 + SetY = 5,11 + SetX = 6,-15 + SetY = 6,31 + SetFrame = 7,14 + SetX = 7,19 + SetY = 7,-15 + SetFrame = 8,13 + SetX = 8,-1 + SetY = 8,21 + SetX = 9,-67 + SetY = 9,33 + SetX = 10,-53 + SetY = 10,2 + SetX = 11,-52 + SetY = 11,-51 + + Graphic = Examples/fly copy + Focus = User + SetFrame = 1,11 + SetX = 1,9 + SetY = 1,-92 + SetZ = 1,29 + SetFrame = 2,10 + SetX = 2,51 + SetY = 2,59 + SetX = 3,43 + SetY = 3,-21 + SetFrame = 4,11 + SetX = 4,12 + SetY = 4,66 + SetFrame = 5,12 + SetX = 5,-2 + SetY = 5,7 + SetX = 6,9 + SetY = 6,17 + SetVisible = 7,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 4,13 + SetX = 4,74 + SetY = 4,23 + SetZ = 4,30 + SetVisible = 5,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 4,13 + SetX = 4,-81 + SetY = 4,15 + SetZ = 4,31 + SetVisible = 5,false + + Graphic = Examples/fly copy + Focus = User + SetFrame = 8,13 + SetX = 8,-23 + SetY = 8,27 + SetZ = 8,29 + SetFrame = 9,12 + SetX = 9,51 + SetY = 9,10 + SetFrame = 10,13 + SetX = 10,-80 + SetY = 10,-14 + SetY = 11,-56 + + Graphic = Examples/fly copy + Focus = User + SetFrame = 0,10 + SetX = 0,-41 + SetY = 0,119 + SetZ = 0,27 + SetX = 1,-43 + SetY = 1,81 + SetFrame = 2,11 + SetX = 2,7 + SetY = 2,-38 + SetX = 3,0 + SetY = 3,37 + SetFrame = 4,10 + SetX = 4,-22 + SetY = 4,-61 + SetFrame = 5,13 + SetX = 5,40 + SetY = 5,12 + SetX = 6,13 + SetY = 6,18 + SetX = 7,1 + SetY = 7,27 + SetFrame = 8,12 + SetX = 8,33 + SetY = 8,7 + SetFrame = 9,13 + SetX = 9,-33 + SetY = 9,24 + SetFrame = 10,12 + SetX = 10,77 + SetY = 10,-43 + SetX = 11,81 + + Play = 0,Swords Dance,90 diff --git a/PBS/Animations/Example anims/Move/TAILGLOW.txt b/PBS/Animations/Example anims/Move/TAILGLOW.txt new file mode 100644 index 000000000..291d84fe1 --- /dev/null +++ b/PBS/Animations/Example anims/Move/TAILGLOW.txt @@ -0,0 +1,43 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,TAILGLOW] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Light1 + Focus = User + SetX = 0,0 + SetY = 0,-2 + SetZ = 0,27 + SetOpacity = 0,50 + SetFrame = 1,1 + SetOpacity = 1,255 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFrame = 6,6 + SetZoomX = 7,110 + SetZoomY = 7,110 + SetZoomX = 8,115 + SetZoomY = 8,115 + SetZoomX = 9,110 + SetZoomY = 9,110 + SetZoomX = 10,100 + SetZoomY = 10,100 + SetZoomX = 11,110 + SetZoomY = 11,110 + SetZoomX = 12,115 + SetZoomY = 12,115 + SetZoomX = 13,110 + SetZoomY = 13,110 + SetZoomX = 14,100 + SetZoomY = 14,100 + SetZoomX = 15,110 + SetZoomY = 15,110 + SetOpacity = 15,100 + + Play = 0,Saint4,80 diff --git a/PBS/Animations/Example anims/Move/TELEPORT.txt b/PBS/Animations/Example anims/Move/TELEPORT.txt new file mode 100644 index 000000000..b96e1355e --- /dev/null +++ b/PBS/Animations/Example anims/Move/TELEPORT.txt @@ -0,0 +1,64 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,TELEPORT] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/! + Focus = User + SetFrame = 0,6 + SetX = 0,-5 + SetY = 0,150 + SetZ = 0,28 + SetX = 1,-14 + SetY = 1,114 + SetX = 2,-9 + SetY = 2,100 + SetX = 3,-16 + SetY = 3,60 + SetX = 4,-12 + SetY = 4,32 + SetX = 5,-5 + SetY = 5,-8 + SetX = 6,-4 + SetY = 6,-40 + + Graphic = Examples/! + Focus = User + SetFrame = 1,6 + SetX = 1,17 + SetY = 1,139 + SetZ = 1,29 + SetX = 2,20 + SetY = 2,76 + SetX = 3,5 + SetY = 3,31 + SetX = 4,16 + SetY = 4,-10 + SetX = 5,18 + SetY = 5,-21 + SetX = 6,14 + SetY = 6,-89 + + Graphic = Examples/! + Focus = User + SetFrame = 0,6 + SetX = 0,-54 + SetY = 0,134 + SetZ = 0,27 + SetX = 1,-41 + SetY = 1,80 + SetX = 2,-35 + SetY = 2,81 + SetX = 3,-37 + SetY = 3,44 + SetX = 4,-34 + SetY = 4,6 + SetY = 5,-42 + SetX = 6,-24 + SetY = 6,-71 + + Play = 0,Trump Card,80 diff --git a/PBS/Animations/Example anims/Move/THUNDER.txt b/PBS/Animations/Example anims/Move/THUNDER.txt new file mode 100644 index 000000000..1cff2e36e --- /dev/null +++ b/PBS/Animations/Example anims/Move/THUNDER.txt @@ -0,0 +1,94 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,THUNDER] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Trovao + Focus = Target + SetFrame = 1,12 + SetFlip = 1,true + SetX = 1,-8 + SetY = 1,-10 + SetZ = 1,28 + SetFrame = 2,8 + SetFlip = 2,false + SetY = 2,-50 + SetFrame = 3,12 + SetY = 3,-18 + SetFrame = 4,8 + SetX = 4,8 + SetY = 4,-42 + SetFrame = 5,12 + SetX = 5,-16 + SetY = 5,-10 + SetVisible = 6,false + + Graphic = Examples/Trovao + Focus = Target + SetFrame = 2,9 + SetX = 2,16 + SetY = 2,54 + SetZ = 2,29 + SetFrame = 3,14 + SetX = 3,-8 + SetFrame = 4,11 + SetX = 4,0 + SetY = 4,14 + SetFrame = 5,10 + SetX = 5,-8 + SetY = 5,22 + SetVisible = 6,false + + Graphic = Examples/Trovao + Focus = Target + SetFrame = 9,1 + SetX = 9,-8 + SetY = 9,6 + SetZ = 9,28 + SetOpacity = 9,100 + SetVisible = 10,false + + Graphic = Examples/Trovao + Focus = Target + SetFrame = 0,12 + SetFlip = 0,true + SetX = 0,8 + SetY = 0,-154 + SetZ = 0,27 + SetFrame = 1,13 + SetX = 1,-32 + SetFrame = 2,7 + SetFlip = 2,false + SetX = 2,-8 + SetY = 2,-162 + SetFrame = 3,13 + SetX = 3,16 + SetY = 3,-130 + SetFrame = 4,7 + SetX = 4,0 + SetY = 4,-138 + SetFrame = 5,13 + SetX = 5,8 + SetY = 5,-130 + SetFrame = 6,3 + SetX = 6,-8 + SetY = 6,6 + SetFrame = 7,4 + SetFrame = 8,2 + SetFlip = 9,true + SetFrame = 10,0 + SetFlip = 10,false + SetOpacity = 10,100 + SetFlip = 11,true + SetZoomX = 11,150 + SetZoomY = 11,150 + SetOpacity = 11,20 + SetVisible = 12,false + + Play = 0,Thunder1,80 diff --git a/PBS/Animations/Example anims/Move/THUNDERBOLT.txt b/PBS/Animations/Example anims/Move/THUNDERBOLT.txt new file mode 100644 index 000000000..2940c11d8 --- /dev/null +++ b/PBS/Animations/Example anims/Move/THUNDERBOLT.txt @@ -0,0 +1,51 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,THUNDERBOLT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/017-Thunder01 + Focus = Target + SetX = 5,0 + SetY = 5,-2 + SetZ = 5,28 + SetFrame = 6,2 + SetY = 6,-42 + SetOpacity = 6,100 + SetVisible = 7,false + + Graphic = Examples/017-Thunder01 + Focus = Target + SetFrame = 0,2 + SetX = 0,0 + SetY = 0,-42 + SetZ = 0,27 + SetFrame = 1,3 + SetFrame = 2,4 + SetFrame = 3,5 + SetFrame = 4,4 + SetFlip = 4,true + SetOpacity = 4,200 + SetFrame = 5,3 + SetOpacity = 5,100 + SetFrame = 6,1 + SetFlip = 6,false + SetY = 6,-2 + SetOpacity = 6,255 + SetFlip = 7,true + SetFrame = 8,0 + SetFlip = 9,false + SetZoomX = 9,120 + SetZoomY = 9,120 + SetOpacity = 9,100 + SetFrame = 10,1 + SetOpacity = 10,50 + SetFlip = 11,true + SetOpacity = 11,20 + + Play = 0,Thunder9,80 diff --git a/PBS/Animations/Example anims/Move/THUNDERFANG.txt b/PBS/Animations/Example anims/Move/THUNDERFANG.txt new file mode 100644 index 000000000..355d5a1a0 --- /dev/null +++ b/PBS/Animations/Example anims/Move/THUNDERFANG.txt @@ -0,0 +1,92 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,THUNDERFANG] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 6,14 + SetX = 6,-57 + SetY = 6,-23 + SetZ = 6,28 + SetX = 7,-58 + SetX = 8,-57 + SetY = 8,-26 + SetVisible = 9,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 7,17 + SetX = 7,87 + SetY = 7,-29 + SetZ = 7,29 + SetX = 8,-70 + SetY = 8,28 + SetVisible = 9,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 8,14 + SetX = 8,97 + SetY = 8,28 + SetZ = 8,30 + SetVisible = 9,false + + Graphic = Examples/element fangs + Focus = Target + SetFrame = 8,17 + SetX = 8,87 + SetY = 8,-36 + SetZ = 8,31 + SetVisible = 9,false + + Graphic = Examples/element fangs + Focus = Target + SetX = 0,7 + SetY = 0,0 + SetZ = 0,27 + SetFrame = 1,1 + SetY = 1,-6 + SetFrame = 2,2 + SetX = 2,2 + SetY = 2,-4 + SetFrame = 3,3 + SetX = 3,6 + SetY = 3,2 + SetFrame = 4,4 + SetX = 4,2 + SetY = 4,-1 + SetFrame = 5,5 + SetX = 5,8 + SetY = 5,5 + SetFrame = 6,6 + SetX = 6,2 + SetY = 6,4 + SetFrame = 7,7 + SetX = 7,5 + SetY = 7,3 + SetFrame = 8,8 + SetX = 8,4 + SetY = 8,-4 + SetFrame = 9,9 + SetX = 9,2 + SetY = 9,4 + SetFrame = 10,10 + SetX = 10,10 + SetY = 10,-1 + SetFrame = 11,11 + SetX = 11,3 + SetY = 11,-2 + SetFrame = 12,12 + SetX = 12,0 + SetY = 12,1 + SetVisible = 13,false + + Play = 6,Super Fang + Play = 7,Uproar,83,137 diff --git a/PBS/Animations/Example anims/Move/THUNDERPUNCH.txt b/PBS/Animations/Example anims/Move/THUNDERPUNCH.txt new file mode 100644 index 000000000..883697401 --- /dev/null +++ b/PBS/Animations/Example anims/Move/THUNDERPUNCH.txt @@ -0,0 +1,126 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,THUNDERPUNCH] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/punches + Focus = Target + SetFrame = 0,1 + SetX = 0,1 + SetY = 0,1 + SetZ = 0,27 + SetX = 1,0 + SetY = 1,-3 + SetFrame = 2,3 + SetX = 2,11 + SetY = 2,-20 + SetX = 3,45 + SetY = 3,-42 + SetX = 4,-3 + SetY = 4,6 + SetX = 5,-21 + SetY = 5,8 + SetX = 6,90 + SetY = 6,-50 + SetX = 7,26 + SetY = 7,-85 + SetX = 8,-41 + SetY = 8,46 + SetX = 9,103 + SetY = 9,-95 + + Graphic = Examples/punches + Focus = Target + SetFrame = 2,3 + SetX = 2,28 + SetY = 2,-14 + SetZ = 2,28 + SetX = 3,-6 + SetY = 3,12 + SetX = 4,26 + SetY = 4,9 + SetX = 5,6 + SetY = 5,30 + SetX = 6,56 + SetY = 6,-80 + SetX = 7,94 + SetY = 7,-41 + SetX = 8,66 + SetY = 8,-49 + SetX = 9,-79 + SetY = 9,88 + + Graphic = Examples/punches + Focus = Target + SetFrame = 2,1 + SetX = 2,1 + SetY = 2,-4 + SetZ = 2,29 + SetX = 3,2 + SetY = 3,2 + SetFrame = 4,3 + SetX = 4,45 + SetY = 4,-29 + SetX = 5,7 + SetY = 5,-38 + SetX = 6,-73 + SetY = 6,48 + SetX = 7,-67 + SetY = 7,42 + SetFrame = 8,1 + SetX = 8,2 + SetY = 8,-2 + SetX = 9,-1 + + Graphic = Examples/punches + Focus = Target + SetFrame = 4,3 + SetX = 4,3 + SetY = 4,-26 + SetZ = 4,30 + SetX = 5,59 + SetY = 5,-41 + SetX = 6,-27 + SetY = 6,75 + SetX = 7,-26 + SetY = 7,67 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 4,1 + SetX = 4,5 + SetY = 4,3 + SetZ = 4,31 + SetX = 5,1 + SetY = 5,-3 + SetY = 6,1 + SetFrame = 7,3 + SetX = 7,40 + SetY = 7,-36 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 7,3 + SetX = 7,-33 + SetY = 7,39 + SetZ = 7,32 + SetVisible = 8,false + + Graphic = Examples/punches + Focus = Target + SetFrame = 7,1 + SetX = 7,0 + SetY = 7,1 + SetZ = 7,33 + SetVisible = 8,false + + Play = 0,Mega Punch,100,89 + Play = 0,Work Up,100,111 diff --git a/PBS/Animations/Example anims/Move/THUNDERSHOCK.txt b/PBS/Animations/Example anims/Move/THUNDERSHOCK.txt new file mode 100644 index 000000000..a08afebb5 --- /dev/null +++ b/PBS/Animations/Example anims/Move/THUNDERSHOCK.txt @@ -0,0 +1,33 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,THUNDERSHOCK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/electric1 + Focus = Target + SetFrame = 0,8 + SetX = 0,-8 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,7 + SetFrame = 2,6 + SetFrame = 3,5 + SetFrame = 4,4 + SetFrame = 5,3 + SetFrame = 6,2 + SetFrame = 7,1 + SetFrame = 8,0 + SetFrame = 9,1 + SetFlip = 9,true + SetFrame = 10,3 + SetFrame = 11,5 + SetFrame = 12,7 + SetOpacity = 12,100 + + Play = 0,Thunder1,80 diff --git a/PBS/Animations/Example anims/Move/THUNDERWAVE.txt b/PBS/Animations/Example anims/Move/THUNDERWAVE.txt new file mode 100644 index 000000000..8885029bc --- /dev/null +++ b/PBS/Animations/Example anims/Move/THUNDERWAVE.txt @@ -0,0 +1,65 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,THUNDERWAVE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/T Shock + Focus = Target + SetX = 6,8 + SetY = 6,18 + SetZ = 6,28 + SetFrame = 7,6 + SetX = 7,-16 + SetFrame = 8,2 + SetX = 8,24 + SetFrame = 9,6 + SetX = 9,-24 + SetFrame = 10,5 + SetFrame = 12,6 + SetX = 12,-40 + SetX = 13,-32 + SetFrame = 14,5 + SetX = 14,-24 + SetX = 15,-16 + + Graphic = Examples/T Shock + Focus = Target + SetFrame = 6,5 + SetX = 6,-16 + SetY = 6,18 + SetZ = 6,29 + SetVisible = 7,false + + Graphic = Examples/T Shock + Focus = Target + SetX = 1,8 + SetY = 1,-54 + SetZ = 1,27 + SetY = 2,-38 + SetFrame = 3,1 + SetY = 3,-14 + SetFrame = 4,0 + SetY = 4,2 + SetFrame = 5,1 + SetY = 5,18 + SetFrame = 6,2 + SetX = 6,24 + SetFrame = 7,3 + SetFrame = 8,5 + SetX = 8,-16 + SetFrame = 9,2 + SetX = 9,32 + SetFrame = 10,3 + SetFrame = 12,2 + SetX = 12,40 + SetX = 13,48 + SetFrame = 14,3 + SetX = 14,40 + + Play = 2,Paralyze1,80 diff --git a/PBS/Animations/Example anims/Move/TOXIC.txt b/PBS/Animations/Example anims/Move/TOXIC.txt new file mode 100644 index 000000000..c91404eb2 --- /dev/null +++ b/PBS/Animations/Example anims/Move/TOXIC.txt @@ -0,0 +1,120 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,TOXIC] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/State1 + Focus = Target + SetX = 2,56 + SetY = 2,-10 + SetZ = 2,28 + SetFrame = 3,1 + SetFrame = 4,2 + SetFrame = 5,3 + SetFrame = 6,4 + SetFrame = 7,5 + SetFrame = 8,6 + SetFrame = 9,7 + SetFrame = 10,8 + SetFrame = 11,9 + SetFrame = 12,10 + SetFrame = 13,11 + SetX = 14,16 + SetY = 14,46 + SetX = 15,-32 + SetY = 15,6 + SetFrame = 16,12 + SetX = 17,-56 + SetY = 17,38 + + Graphic = Examples/State1 + Focus = Target + SetX = 3,16 + SetY = 3,46 + SetZ = 3,29 + SetFrame = 4,1 + SetFrame = 5,2 + SetFrame = 6,3 + SetFrame = 7,4 + SetFrame = 8,5 + SetFrame = 9,6 + SetFrame = 10,7 + SetFrame = 11,8 + SetFrame = 12,9 + SetFrame = 13,10 + SetX = 14,-32 + SetY = 14,6 + SetX = 15,-56 + SetY = 15,38 + SetFrame = 16,11 + SetVisible = 17,false + + Graphic = Examples/State1 + Focus = Target + SetX = 4,-32 + SetY = 4,6 + SetZ = 4,30 + SetFrame = 5,1 + SetFrame = 6,2 + SetFrame = 7,3 + SetFrame = 8,4 + SetFrame = 9,5 + SetFrame = 10,6 + SetFrame = 11,7 + SetFrame = 12,8 + SetFrame = 13,9 + SetX = 14,-56 + SetY = 14,38 + SetVisible = 15,false + + Graphic = Examples/State1 + Focus = Target + SetX = 5,-56 + SetY = 5,38 + SetZ = 5,31 + SetFrame = 6,1 + SetFrame = 7,2 + SetFrame = 8,3 + SetFrame = 9,4 + SetFrame = 10,5 + SetFrame = 11,6 + SetFrame = 12,7 + SetFrame = 13,8 + SetVisible = 14,false + + Graphic = Examples/State1 + Focus = Target + SetX = 0,-80 + SetY = 0,22 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFrame = 6,6 + SetFrame = 7,7 + SetFrame = 8,8 + SetFrame = 9,9 + SetFrame = 10,10 + SetFrame = 11,11 + SetFrame = 12,12 + SetFrame = 13,13 + SetFrame = 14,12 + SetX = 14,56 + SetY = 14,-10 + SetX = 15,16 + SetY = 15,46 + SetFrame = 16,13 + SetX = 17,-32 + SetY = 17,6 + + Play = 0,Poison,80 + Play = 4,Poison,80 + Play = 8,Poison,80 diff --git a/PBS/Animations/Example anims/Move/TRICKROOM.txt b/PBS/Animations/Example anims/Move/TRICKROOM.txt new file mode 100644 index 000000000..37bed1560 --- /dev/null +++ b/PBS/Animations/Example anims/Move/TRICKROOM.txt @@ -0,0 +1,31 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,TRICKROOM] +Name = Example anim +NoTarget = true + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/mixed status + Focus = Foreground + SetFrame = 0,5 + SetX = 0,310 + SetY = 0,210 + SetZoomX = 0,446 + SetZoomY = 0,273 + SetX = 1,311 + SetY = 1,209 + SetX = 3,313 + SetY = 3,211 + SetX = 4,311 + SetX = 5,313 + SetY = 5,212 + SetX = 6,311 + SetY = 7,211 + SetX = 8,313 + SetY = 8,213 + SetX = 9,310 + SetY = 9,211 + + Play = 0,MiningPing,100,84 diff --git a/PBS/Animations/Example anims/Move/TWISTER.txt b/PBS/Animations/Example anims/Move/TWISTER.txt new file mode 100644 index 000000000..a8e9f2f0c --- /dev/null +++ b/PBS/Animations/Example anims/Move/TWISTER.txt @@ -0,0 +1,40 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,TWISTER] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/water3 + Focus = Target + SetFrame = 0,11 + SetX = 0,0 + SetY = 0,-18 + SetZ = 0,27 + SetFrame = 1,10 + SetFrame = 2,9 + SetFrame = 3,8 + SetFrame = 4,7 + SetFrame = 5,6 + SetFrame = 6,5 + SetFrame = 7,4 + SetFrame = 8,3 + SetFrame = 9,2 + SetFrame = 10,1 + SetFrame = 11,2 + SetFlip = 11,true + SetFrame = 12,5 + SetFrame = 13,6 + SetFrame = 14,7 + SetFrame = 15,9 + SetFrame = 16,10 + + Play = 0,Water3,80 + Play = 0,Twine,80 + Play = 2,Water1,80 + Play = 5,Water2,80 + Play = 9,Water1,80 diff --git a/PBS/Animations/Example anims/Move/VINEWHIP.txt b/PBS/Animations/Example anims/Move/VINEWHIP.txt new file mode 100644 index 000000000..b58d1680c --- /dev/null +++ b/PBS/Animations/Example anims/Move/VINEWHIP.txt @@ -0,0 +1,45 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,VINEWHIP] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/003-Attack01 + Focus = Target + SetX = 2,-16 + SetY = 2,22 + SetZ = 2,28 + SetOpacity = 2,150 + SetFrame = 3,6 + SetX = 3,-48 + SetOpacity = 3,255 + SetFrame = 4,5 + SetX = 4,-80 + SetY = 4,46 + SetVisible = 5,false + + Graphic = Examples/003-Attack01 + Focus = Target + SetFrame = 0,5 + SetX = 0,64 + SetY = 0,-82 + SetZ = 0,27 + SetFrame = 1,6 + SetX = 1,24 + SetY = 1,-50 + SetFrame = 2,7 + SetX = 2,-16 + SetY = 2,-2 + SetFrame = 3,1 + SetY = 3,22 + SetFrame = 4,2 + SetFrame = 5,3 + SetFrame = 6,4 + SetVisible = 7,false + + Play = 2,Slash1,80 diff --git a/PBS/Animations/Example anims/Move/WATERGUN.txt b/PBS/Animations/Example anims/Move/WATERGUN.txt new file mode 100644 index 000000000..608706d27 --- /dev/null +++ b/PBS/Animations/Example anims/Move/WATERGUN.txt @@ -0,0 +1,243 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,WATERGUN] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 0,5 + SetX = 0,25 + SetY = 0,-37 + SetZ = 0,27 + SetZoomX = 0,50 + SetZoomY = 0,50 + SetOpacity = 0,235 + SetX = 7,43 + SetY = 7,-62 + SetX = 8,62 + SetY = 8,-87 + SetVisible = 9,false + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 1,5 + SetX = 1,43 + SetY = 1,-67 + SetZ = 1,28 + SetZoomX = 1,50 + SetZoomY = 1,50 + SetOpacity = 1,235 + SetY = 2,-53 + SetX = 3,44 + SetY = 3,-67 + SetX = 7,62 + SetY = 7,-92 + SetX = 8,81 + SetY = 8,-117 + SetVisible = 10,false + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 2,5 + SetX = 2,62 + SetY = 2,-79 + SetZ = 2,29 + SetZoomX = 2,50 + SetZoomY = 2,50 + SetOpacity = 2,235 + SetY = 3,-96 + SetX = 7,81 + SetY = 7,-121 + SetX = 8,100 + SetY = 8,-159 + SetVisible = 11,false + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 3,5 + SetX = 3,81 + SetY = 3,-123 + SetZ = 3,30 + SetZoomX = 3,50 + SetZoomY = 3,50 + SetOpacity = 3,235 + SetX = 7,100 + SetY = 7,-160 + SetX = 8,118 + SetY = 8,-185 + SetVisible = 12,false + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 4,5 + SetX = 4,96 + SetY = 4,-156 + SetZ = 4,31 + SetZoomX = 4,50 + SetZoomY = 4,50 + SetOpacity = 4,235 + SetX = 7,118 + SetY = 7,-181 + SetX = 8,137 + SetY = 8,-193 + SetVisible = 13,false + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 5,5 + SetX = 5,118 + SetY = 5,-179 + SetZ = 5,32 + SetZoomX = 5,50 + SetZoomY = 5,50 + SetOpacity = 5,235 + SetX = 7,137 + SetY = 7,-192 + SetX = 8,162 + SetY = 8,-204 + SetVisible = 14,false + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 6,5 + SetX = 6,138 + SetY = 6,-195 + SetZ = 6,33 + SetZoomX = 6,50 + SetZoomY = 6,50 + SetOpacity = 6,235 + SetX = 7,162 + SetY = 7,-207 + SetX = 8,187 + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 8,6 + SetX = 8,196 + SetY = 8,-181 + SetZ = 8,34 + SetZoomX = 8,70 + SetOpacity = 8,224 + + Play = 0,Yawn,88 +#------------------------------- +[OppMove,WATERGUN] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 0,5 + SetX = 0,25 + SetY = 0,23 + SetZ = 0,27 + SetZoomX = 0,50 + SetZoomY = 0,50 + SetOpacity = 0,235 + SetVisible = 9,false + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 1,5 + SetX = 1,43 + SetY = 1,0 + SetZ = 1,28 + SetZoomX = 1,50 + SetZoomY = 1,50 + SetOpacity = 1,235 + SetVisible = 10,false + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 2,5 + SetX = 2,62 + SetY = 2,-34 + SetZ = 2,29 + SetZoomX = 2,50 + SetZoomY = 2,50 + SetOpacity = 2,235 + SetVisible = 11,false + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 3,5 + SetX = 3,81 + SetY = 3,-59 + SetZ = 3,30 + SetZoomX = 3,50 + SetZoomY = 3,50 + SetOpacity = 3,235 + SetVisible = 12,false + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 4,5 + SetX = 4,98 + SetY = 4,-101 + SetZ = 4,31 + SetZoomX = 4,50 + SetZoomY = 4,50 + SetOpacity = 4,235 + SetVisible = 13,false + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 5,5 + SetX = 5,118 + SetY = 5,-129 + SetZ = 5,32 + SetZoomX = 5,50 + SetZoomY = 5,50 + SetOpacity = 5,235 + SetVisible = 14,false + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 6,5 + SetX = 6,142 + SetY = 6,-156 + SetZ = 6,33 + SetZoomX = 6,50 + SetZoomY = 6,50 + SetOpacity = 6,235 + SetVisible = 15,false + + Graphic = Examples/fly copy + Focus = UserAndTarget + SetFrame = 7,5 + SetX = 7,169 + SetY = 7,-189 + SetZ = 7,34 + SetZoomX = 7,50 + SetZoomY = 7,50 + SetOpacity = 7,235 + SetVisible = 9,false + + Graphic = Examples/fly copy + Focus = Target + SetFrame = 8,6 + SetX = 8,0 + SetY = 8,-4 + SetZ = 8,35 + SetOpacity = 8,240 + SetVisible = 9,false + + Graphic = Examples/fly copy + Focus = Target + SetFrame = 9,6 + SetX = 9,1 + SetY = 9,-4 + SetZ = 9,34 + + Play = 0,Yawn,88 diff --git a/PBS/Animations/Example anims/Move/WATERPULSE.txt b/PBS/Animations/Example anims/Move/WATERPULSE.txt new file mode 100644 index 000000000..c05c59827 --- /dev/null +++ b/PBS/Animations/Example anims/Move/WATERPULSE.txt @@ -0,0 +1,52 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,WATERPULSE] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + SetToneBlue = 15,255 + SetToneBlue = 18,0 + + Graphic = Examples/Water pulse + Focus = UserAndTarget + SetX = 0,2 + SetY = 0,7 + SetZ = 0,27 + SetX = 1,62 + SetY = 1,-50 + SetX = 2,81 + SetY = 2,-62 + SetX = 3,87 + SetY = 3,-75 + SetX = 4,106 + SetY = 4,-100 + SetX = 5,118 + SetY = 5,-125 + SetX = 6,137 + SetY = 6,-150 + SetX = 7,163 + SetY = 7,-171 + SetX = 8,182 + SetY = 8,-178 + SetFrame = 9,1 + SetX = 9,178 + SetY = 9,-187 + SetFrame = 10,2 + SetX = 10,173 + SetY = 10,-182 + SetFrame = 11,3 + SetX = 11,176 + SetY = 11,-185 + SetFrame = 12,4 + SetX = 12,172 + SetY = 12,-193 + SetFrame = 13,5 + SetX = 13,173 + SetY = 13,-159 + SetFrame = 14,6 + SetX = 14,168 + SetVisible = 15,false diff --git a/PBS/Animations/Example anims/Move/WHIRLWIND.txt b/PBS/Animations/Example anims/Move/WHIRLWIND.txt new file mode 100644 index 000000000..7fa8a6bfd --- /dev/null +++ b/PBS/Animations/Example anims/Move/WHIRLWIND.txt @@ -0,0 +1,25 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,WHIRLWIND] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Wind1 + Focus = Target + SetX = 0,8 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFrame = 6,6 + SetFrame = 7,7 + + Play = 0,Wind1,80 diff --git a/PBS/Animations/Example anims/Move/WILLOWISP.txt b/PBS/Animations/Example anims/Move/WILLOWISP.txt new file mode 100644 index 000000000..fa269461b --- /dev/null +++ b/PBS/Animations/Example anims/Move/WILLOWISP.txt @@ -0,0 +1,85 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,WILLOWISP] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/015-Fire01 + Focus = UserAndTarget + SetFrame = 1,5 + SetFlip = 1,true + SetX = 1,4 + SetY = 1,-70 + SetZ = 1,28 + SetAngle = 1,90 + SetFrame = 2,6 + SetX = 2,34 + SetY = 2,-98 + SetFrame = 3,7 + SetX = 3,89 + SetY = 3,-148 + SetX = 4,159 + SetY = 4,-118 + SetFrame = 5,2 + SetFlip = 5,false + SetX = 5,179 + SetY = 5,-178 + SetAngle = 5,0 + SetVisible = 6,false + + Graphic = Examples/015-Fire01 + Focus = UserAndTarget + SetFrame = 2,5 + SetFlip = 2,true + SetX = 2,75 + SetY = 2,-59 + SetZ = 2,29 + SetAngle = 2,90 + SetFrame = 3,6 + SetX = 3,125 + SetY = 3,-89 + SetFrame = 4,1 + SetFlip = 4,false + SetX = 4,179 + SetY = 4,-178 + SetAngle = 4,0 + SetVisible = 5,false + + Graphic = Examples/015-Fire01 + Focus = UserAndTarget + SetX = 3,179 + SetY = 3,-178 + SetZ = 3,30 + SetVisible = 4,false + + Graphic = Examples/015-Fire01 + Focus = UserAndTarget + SetFrame = 0,5 + SetFlip = 0,true + SetX = 0,25 + SetY = 0,-59 + SetZ = 0,27 + SetAngle = 0,90 + SetFrame = 1,6 + SetX = 1,54 + SetY = 1,-89 + SetFrame = 2,7 + SetX = 2,104 + SetY = 2,-148 + SetFrame = 3,5 + SetX = 3,150 + SetY = 3,-187 + SetX = 4,134 + SetX = 5,175 + SetY = 5,-178 + SetFrame = 6,3 + SetFlip = 6,false + SetX = 6,179 + SetAngle = 6,0 + + Play = 0,Fire2,80 diff --git a/PBS/Animations/Example anims/Move/WINGATTACK.txt b/PBS/Animations/Example anims/Move/WINGATTACK.txt new file mode 100644 index 000000000..8f7ad1dc5 --- /dev/null +++ b/PBS/Animations/Example anims/Move/WINGATTACK.txt @@ -0,0 +1,32 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,WINGATTACK] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Wind1 + Focus = Target + SetX = 0,8 + SetY = 0,-2 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFrame = 6,6 + SetFrame = 7,7 + SetFrame = 8,8 + SetFrame = 9,9 + SetFrame = 11,10 + SetFrame = 12,11 + SetFrame = 13,12 + SetFrame = 14,13 + + Play = 0,Wind1,80 + Play = 2,Wind5,80 diff --git a/PBS/Animations/Example anims/Move/WRAP.txt b/PBS/Animations/Example anims/Move/WRAP.txt new file mode 100644 index 000000000..e909f2dee --- /dev/null +++ b/PBS/Animations/Example anims/Move/WRAP.txt @@ -0,0 +1,48 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,WRAP] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Struggle + Focus = Target + SetFrame = 0,1 + SetX = 0,56 + SetY = 0,6 + SetZ = 0,28 + SetX = 1,96 + SetY = 1,-2 + SetX = 2,104 + SetY = 2,6 + SetX = 3,80 + SetY = 3,-2 + SetX = 4,48 + SetX = 5,80 + SetX = 6,112 + SetY = 6,6 + SetX = 7,96 + + Graphic = Examples/Struggle + Focus = Target + SetX = 0,-64 + SetY = 0,6 + SetZ = 0,27 + SetX = 1,-96 + SetY = 1,-2 + SetX = 2,-144 + SetY = 2,6 + SetX = 3,-120 + SetY = 3,-2 + SetX = 4,-88 + SetX = 5,-128 + SetX = 6,-168 + SetX = 7,-120 + + Play = 0,Slash10,80 + Play = 3,Slash10,80 + Play = 6,Slash10,80 diff --git a/PBS/Animations/Example anims/Move/WRINGOUT.txt b/PBS/Animations/Example anims/Move/WRINGOUT.txt new file mode 100644 index 000000000..9c3b8cc23 --- /dev/null +++ b/PBS/Animations/Example anims/Move/WRINGOUT.txt @@ -0,0 +1,57 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,WRINGOUT] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Fakeout + Focus = Target + SetFrame = 0,5 + SetX = 0,-111 + SetY = 0,-12 + SetZ = 0,27 + SetX = 1,-101 + SetY = 1,43 + SetX = 2,-61 + SetY = 2,81 + SetX = 3,-23 + SetY = 3,87 + SetX = 4,7 + SetY = 4,72 + SetX = 5,15 + SetY = 5,31 + SetX = 6,24 + SetY = 6,8 + SetX = 7,-9 + SetY = 7,-21 + SetX = 8,-70 + SetY = 8,-30 + SetX = 9,-96 + SetY = 9,22 + SetX = 10,-85 + SetY = 10,70 + SetX = 11,-26 + SetY = 11,82 + SetX = 12,16 + SetY = 12,57 + SetX = 13,17 + SetY = 13,12 + SetX = 14,-8 + SetY = 14,-17 + SetX = 15,-64 + SetY = 15,-23 + SetX = 16,-94 + SetY = 16,19 + SetX = 17,-79 + SetY = 17,62 + SetX = 18,-18 + SetY = 18,89 + SetX = 19,46 + SetY = 19,65 + + Play = 0,Wring Out diff --git a/PBS/Animations/Example anims/Move/XSCISSOR.txt b/PBS/Animations/Example anims/Move/XSCISSOR.txt new file mode 100644 index 000000000..3439ae9f6 --- /dev/null +++ b/PBS/Animations/Example anims/Move/XSCISSOR.txt @@ -0,0 +1,45 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,XSCISSOR] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/X-Scizzor + Focus = Target + SetFrame = 0,1 + SetX = 0,-65 + SetY = 0,-60 + SetZ = 0,28 + SetX = 1,-33 + SetY = 1,-34 + SetFrame = 2,0 + SetX = 2,0 + SetY = 2,0 + SetX = 3,-37 + SetY = 3,39 + SetFrame = 4,1 + SetX = 4,71 + SetY = 4,69 + + Graphic = Examples/X-Scizzor + Focus = Target + SetX = 0,71 + SetY = 0,-59 + SetZ = 0,27 + SetX = 1,36 + SetY = 1,-34 + SetFrame = 2,1 + SetX = 2,0 + SetY = 2,0 + SetX = 3,34 + SetY = 3,39 + SetFrame = 4,0 + SetX = 4,-77 + SetY = 4,68 + + Play = 0,Slash,80 diff --git a/PBS/Animations/Example anims/Move/ZAPCANNON.txt b/PBS/Animations/Example anims/Move/ZAPCANNON.txt new file mode 100644 index 000000000..107f988f2 --- /dev/null +++ b/PBS/Animations/Example anims/Move/ZAPCANNON.txt @@ -0,0 +1,29 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ZAPCANNON] +Name = Example anim + + SetX = 0,0 + SetY = 0,0 + + SetX = 0,0 + SetY = 0,0 + + Graphic = Examples/Thunder2 + Focus = Target + SetX = 0,0 + SetY = 0,-10 + SetZ = 0,27 + SetFrame = 1,1 + SetFrame = 2,2 + SetFrame = 3,3 + SetFrame = 4,4 + SetFrame = 5,5 + SetFlip = 6,true + SetAngle = 6,180 + SetFrame = 7,4 + SetOpacity = 7,100 + SetFrame = 8,3 + SetAngle = 8,18 + + Play = 0,Thunder9,80 diff --git a/PBS/Animations/Fighting/Bulk Up.txt b/PBS/Animations/Fighting/Bulk Up.txt new file mode 100644 index 000000000..da9c956e7 --- /dev/null +++ b/PBS/Animations/Fighting/Bulk Up.txt @@ -0,0 +1,19 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,BULKUP] +Name = Essentials +NoTarget = true + + MoveZoomX = 0,7,150 + MoveZoomY = 0,7,50 + SetZoomX = 8,175 + MoveZoomX = 8,7,50 + MoveZoomY = 8,7,150 + MoveZoomX = 16,3,100 + MoveZoomY = 16,3,100 + MoveZoomX = 20,3,150 + MoveZoomY = 20,3,150 + MoveZoomX = 24,3,100 + MoveZoomY = 24,3,100 + + Play = 0,Fighting/Bulk Up diff --git a/PBS/Animations/Fighting/Mach Punch.txt b/PBS/Animations/Fighting/Mach Punch.txt new file mode 100644 index 000000000..ce0bcdb6e --- /dev/null +++ b/PBS/Animations/Fighting/Mach Punch.txt @@ -0,0 +1,107 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,MACHPUNCH] +Name = Essentials +NoUser = true + + FoeInvertX = true + MoveX = 14,1,-2 + MoveX = 15,2,2 + MoveX = 17,2,-2 + MoveX = 19,2,2 + MoveX = 21,1,0 + + Graphic = Fighting/Mach Punch fist + Focus = Target + SetZ = 0,30 + SetZoomX = 0,600 + SetZoomY = 0,600 + MoveZoomX = 0,4,150 + MoveZoomY = 0,4,150 + MoveAngle = 0,4,30 + SetVisible = 4,false + + Graphic = Fighting/Mach Punch fist + Focus = Target + SetZ = 0,15 + SetZoomX = 0,600 + SetZoomY = 0,600 + SetColorRed = 0,192 + SetColorBlue = 0,128 + SetColorAlpha = 0,128 + MoveZoomX = 0,5,500 + MoveZoomY = 0,5,500 + MoveOpacity = 0,5,0 + MoveColorRed = 0,5,0 + MoveColorBlue = 0,5,0 + SetVisible = 5,false + + Graphic = Fighting/Mach Punch fist + Focus = Target + SetZ = 0,20 + SetZoomX = 0,450 + SetZoomY = 0,450 + SetColorRed = 0,144 + SetColorBlue = 0,96 + SetColorAlpha = 0,128 + MoveZoomX = 0,7,325 + MoveZoomY = 0,7,325 + MoveOpacity = 0,7,0 + MoveColorRed = 1,6,0 + MoveColorBlue = 1,6,0 + SetVisible = 7,false + + Graphic = Fighting/Mach Punch fist + Focus = Target + SetZ = 0,25 + SetZoomX = 0,300 + SetZoomY = 0,300 + SetColorRed = 0,96 + SetColorBlue = 0,64 + SetColorAlpha = 0,128 + MoveZoomX = 0,8,150 + MoveZoomY = 0,8,150 + MoveOpacity = 0,8,0 + MoveColorRed = 2,6,0 + MoveColorBlue = 2,6,0 + SetVisible = 8,false + + Graphic = Fighting/Mach Punch hit + Focus = Target + SetZ = 4,5 + SetZoomX = 4,60 + SetZoomY = 4,60 + SetColorRed = 4,128 + SetColorGreen = 4,128 + SetColorBlue = 4,248 + SetColorAlpha = 4,128 + MoveZoomX = 4,4,150 + MoveZoomY = 4,4,150 + MoveOpacity = 6,2,0 + SetVisible = 8,false + + Graphic = Fighting/Mach Punch hit + Focus = Target + SetZ = 4,10 + SetZoomX = 4,50 + SetZoomY = 4,50 + MoveZoomX = 4,4,130 + MoveZoomY = 4,4,130 + MoveOpacity = 6,2,0 + SetVisible = 8,false + + Graphic = Fighting/Mach Punch spark + Focus = Target + Spawner = RandomDirection + SpawnQuantity = 12 + SetZ = 5,4 + SetZoomX = 5,50 + SetZoomY = 5,50 + SetOpacity = 5,0 + MoveOpacity = 5,1,255 + SetFrame = 7,1 + MoveZoomX = 9,6,0 + MoveZoomY = 9,6,0 + SetVisible = 15,false + + Play = 0,Fighting/Mach Punch diff --git a/PBS/Animations/Ghost/Astonish.txt b/PBS/Animations/Ghost/Astonish.txt new file mode 100644 index 000000000..5a87af4d8 --- /dev/null +++ b/PBS/Animations/Ghost/Astonish.txt @@ -0,0 +1,161 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,ASTONISH] +Name = Essentials + + FoeInvertX = true + FoeInvertY = true + MoveX = 0,2,48 + MoveX = 6,2,0 + + FoeInvertX = true + MoveZoomY = 4,3,125 + MoveZoomY = 8,3,100 + + Graphic = Ghost/Astonish hit + Focus = Target + SetY = 7,-32 + SetZ = 7,10 + SetZoomX = 7,0 + SetZoomY = 7,0 + SetOpacity = 7,0 + SetColorRed = 7,248 + SetColorGreen = 7,248 + SetColorBlue = 7,32 + MoveOpacity = 7,3,255 + MoveColorAlpha = 7,3,255 + MoveZoomX = 7,5,160 + MoveZoomY = 7,5,160 + MoveOpacity = 10,2,0 + SetVisible = 12,false + + Graphic = Ghost/Astonish spark + Focus = Target + SetX = 7,-28 + SetY = 7,-36 + SetZ = 7,5 + SetZoomX = 7,15 + SetZoomY = 7,15 + SetOpacity = 7,0 + MoveOpacity = 7,1,255 + MoveZoomX = 7,4,30 + MoveZoomY = 7,4,30 + MoveY = 7,6,-69,EaseOut + MoveX = 7,9,-102 + MoveY = 13,3,-54,EaseIn + MoveOpacity = 13,3,0 + + Graphic = Ghost/Astonish spark + Focus = Target + SetX = 7,-12 + SetY = 7,-29 + SetZ = 7,5 + SetZoomX = 7,15 + SetZoomY = 7,15 + SetOpacity = 7,0 + MoveOpacity = 7,1,255 + MoveZoomX = 7,4,30 + MoveZoomY = 7,4,30 + MoveY = 7,6,-124,EaseOut + MoveX = 7,9,-52 + MoveY = 13,3,-101,EaseIn + MoveOpacity = 13,3,0 + + Graphic = Ghost/Astonish spark + Focus = Target + SetX = 7,-5 + SetY = 7,-31 + SetZ = 7,5 + SetZoomX = 7,15 + SetZoomY = 7,15 + SetOpacity = 7,0 + MoveOpacity = 7,1,255 + MoveZoomX = 7,4,30 + MoveZoomY = 7,4,30 + MoveY = 7,6,-108,EaseOut + MoveX = 7,9,21 + MoveY = 13,3,-90,EaseIn + MoveOpacity = 13,3,0 + + Graphic = Ghost/Astonish spark + Focus = Target + SetX = 7,-5 + SetY = 7,-31 + SetZ = 7,5 + SetZoomX = 7,15 + SetZoomY = 7,15 + SetOpacity = 7,0 + MoveOpacity = 7,1,255 + MoveZoomX = 7,4,30 + MoveZoomY = 7,4,30 + MoveY = 7,7,-97,EaseOut + MoveX = 7,10,81 + MoveY = 14,3,-85,EaseIn + MoveOpacity = 14,3,0 + + Graphic = Ghost/Astonish spark + Focus = Target + SetX = 7,-5 + SetY = 7,-31 + SetZ = 7,5 + SetZoomX = 7,15 + SetZoomY = 7,15 + SetOpacity = 7,0 + MoveOpacity = 7,1,255 + MoveZoomX = 7,4,30 + MoveZoomY = 7,4,30 + MoveY = 7,7,-142,EaseOut + MoveX = 7,10,-18 + MoveY = 14,3,-122,EaseIn + MoveOpacity = 14,3,0 + + Graphic = Ghost/Astonish spark + Focus = Target + SetX = 7,-4 + SetY = 7,-24 + SetZ = 7,5 + SetZoomX = 7,15 + SetZoomY = 7,15 + SetOpacity = 7,0 + MoveOpacity = 7,1,255 + MoveZoomX = 7,4,30 + MoveZoomY = 7,4,30 + MoveY = 7,6,-130,EaseOut + MoveX = 7,9,85 + MoveY = 13,3,-104,EaseIn + MoveOpacity = 13,3,0 + + Graphic = Ghost/Astonish spark + Focus = Target + SetX = 7,-5 + SetY = 7,-31 + SetZ = 7,5 + SetZoomX = 7,15 + SetZoomY = 7,15 + SetOpacity = 7,0 + MoveOpacity = 7,1,255 + MoveZoomX = 7,4,30 + MoveZoomY = 7,4,30 + MoveY = 7,6,-95,EaseOut + MoveX = 7,10,-124 + MoveY = 13,4,-79,EaseIn + MoveOpacity = 14,3,0 + + Graphic = Ghost/Astonish spark + Focus = Target + SetX = 7,3 + SetY = 7,-33 + SetZ = 7,5 + SetZoomX = 7,15 + SetZoomY = 7,15 + SetOpacity = 7,0 + MoveOpacity = 7,1,255 + MoveZoomX = 7,4,30 + MoveZoomY = 7,4,30 + MoveX = 7,6,68 + MoveY = 7,6,-63,EaseOut + MoveX = 13,3,105 + MoveY = 13,3,-56,EaseIn + MoveOpacity = 13,3,0 + + Play = 2,Ghost/Astonish diff --git a/PBS/Animations/Normal/Defense Curl.txt b/PBS/Animations/Normal/Defense Curl.txt new file mode 100644 index 000000000..71e49be55 --- /dev/null +++ b/PBS/Animations/Normal/Defense Curl.txt @@ -0,0 +1,40 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,DEFENSECURL] +Name = Essentials +NoTarget = true + + + Graphic = Normal/Defense Curl ball + Focus = User + SetY = 0,32 + SetZ = 0,10 + SetZoomX = 0,250 + SetZoomY = 0,250 + SetOpacity = 0,128 + MoveZoomX = 0,3,150 + MoveZoomY = 0,3,150 + SetOpacity = 5,255 + MoveZoomX = 9,4,300 + MoveZoomY = 9,4,300 + MoveOpacity = 9,4,0 + SetVisible = 13,false + + Graphic = Normal/Defense Curl swish + Focus = User + SetY = 7,32 + SetZ = 7,5 + SetZoomX = 7,90 + SetZoomY = 7,90 + SetAngle = 7,90 + SetOpacity = 7,160 + MoveAngle = 7,10,810 + SetColorRed = 12,160 + SetColorGreen = 12,160 + SetColorBlue = 12,248 + SetColorAlpha = 12,255 + MoveZoomX = 12,5,130 + MoveZoomY = 12,5,130 + MoveOpacity = 16,1,0 + + Play = 0,Normal/Defense Curl diff --git a/PBS/Animations/Normal/Growl.txt b/PBS/Animations/Normal/Growl.txt new file mode 100644 index 000000000..70c02ddd0 --- /dev/null +++ b/PBS/Animations/Normal/Growl.txt @@ -0,0 +1,288 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,GROWL] +Name = Essentials + + + FoeInvertX = true + MoveX = 28,1,-2 + MoveX = 29,2,2 + MoveX = 31,2,-2 + MoveX = 33,2,2 + MoveX = 35,1,0 + + Graphic = Normal/Growl ring + Focus = User + SetZ = 0,10 + SetZoomX = 0,0 + SetZoomY = 0,0 + SetOpacity = 0,0 + MoveOpacity = 0,9,248 + MoveColorRed = 0,9,248 + MoveColorGreen = 0,9,64 + MoveColorAlpha = 0,9,255 + MoveZoomX = 0,18,300 + MoveZoomY = 0,18,300 + MoveOpacity = 9,9,0 + SetVisible = 18,false + + Graphic = Normal/Growl ring + Focus = User + SetZ = 0,10 + SetZoomX = 0,0 + SetZoomY = 0,0 + SetOpacity = 0,0 + MoveColorRed = 0,9,248 + MoveColorGreen = 0,9,64 + MoveColorAlpha = 0,9,255 + MoveZoomX = 0,18,270 + MoveZoomY = 0,18,270 + MoveOpacity = 2,7,160 + MoveOpacity = 9,9,0 + SetVisible = 18,false + + Graphic = Normal/Growl ring + Focus = User + SetZ = 0,10 + SetZoomX = 0,0 + SetZoomY = 0,0 + SetOpacity = 0,0 + MoveColorRed = 0,9,248 + MoveColorGreen = 0,9,64 + MoveColorAlpha = 0,9,255 + MoveZoomX = 0,18,240 + MoveZoomY = 0,18,240 + MoveOpacity = 4,5,96 + MoveOpacity = 9,9,0 + SetVisible = 18,false + + Graphic = Normal/Growl zap + Focus = User + SetY = 0,-8 + SetZ = 0,19 + SetZoomX = 0,40 + SetZoomY = 0,50 + SetOpacity = 0,0 + SetColorRed = 0,248 + SetColorGreen = 0,248 + SetColorAlpha = 0,248 + MoveOpacity = 0,8,255 + MoveY = 0,12,-138 + MoveZoomX = 0,12,120 + MoveZoomY = 0,12,150 + MoveOpacity = 8,4,0 + SetVisible = 12,false + + Graphic = Normal/Growl zap + Focus = User + SetY = 8,-52 + SetZ = 8,20 + SetZoomX = 8,60 + SetZoomY = 8,75 + SetOpacity = 8,0 + SetColorRed = 8,248 + SetColorGreen = 8,248 + SetColorAlpha = 8,248 + MoveOpacity = 8,4,255 + MoveY = 8,10,-141 + MoveZoomX = 8,10,120 + MoveZoomY = 8,10,150 + MoveOpacity = 12,6,0 + SetVisible = 18,false + + Graphic = Normal/Growl zap + Focus = User + SetX = 0,-3 + SetY = 0,-4 + SetZ = 0,20 + SetZoomX = 0,40 + SetZoomY = 0,50 + SetAngle = 0,60 + SetOpacity = 0,0 + SetColorRed = 0,248 + SetColorGreen = 0,248 + SetColorAlpha = 0,248 + MoveOpacity = 0,8,255 + MoveX = 0,12,-124 + MoveY = 0,12,-68 + MoveZoomX = 0,12,120 + MoveZoomY = 0,12,150 + MoveOpacity = 8,4,0 + SetVisible = 12,false + + Graphic = Normal/Growl zap + Focus = User + SetX = 8,-39 + SetY = 8,-26 + SetZ = 8,20 + SetZoomX = 8,60 + SetZoomY = 8,75 + SetAngle = 8,60 + SetOpacity = 8,0 + SetColorRed = 8,248 + SetColorGreen = 8,248 + SetColorAlpha = 8,248 + MoveOpacity = 8,4,255 + MoveX = 8,10,-125 + MoveY = 8,10,-78 + MoveZoomX = 8,10,120 + MoveZoomY = 8,10,150 + MoveOpacity = 12,6,0 + SetVisible = 18,false + + Graphic = Normal/Growl zap + Focus = User + SetX = 0,-3 + SetY = 0,4 + SetZ = 0,20 + SetZoomX = 0,40 + SetZoomY = 0,50 + SetAngle = 0,120 + SetOpacity = 0,0 + SetColorRed = 0,248 + SetColorGreen = 0,248 + SetColorAlpha = 0,248 + MoveOpacity = 0,8,255 + MoveX = 0,12,-124 + MoveY = 0,12,68 + MoveZoomX = 0,12,120 + MoveZoomY = 0,12,150 + MoveOpacity = 8,4,0 + SetVisible = 12,false + + Graphic = Normal/Growl zap + Focus = User + SetX = 8,-39 + SetY = 8,26 + SetZ = 8,20 + SetZoomX = 8,60 + SetZoomY = 8,75 + SetAngle = 8,120 + SetOpacity = 8,0 + SetColorRed = 8,248 + SetColorGreen = 8,248 + SetColorAlpha = 8,248 + MoveOpacity = 8,4,255 + MoveX = 8,10,-125 + MoveY = 8,10,78 + MoveZoomX = 8,10,120 + MoveZoomY = 8,10,150 + MoveOpacity = 12,6,0 + SetVisible = 18,false + + Graphic = Normal/Growl zap + Focus = User + SetY = 0,8 + SetZ = 0,20 + SetZoomX = 0,40 + SetZoomY = 0,50 + SetOpacity = 0,0 + SetColorRed = 0,248 + SetColorGreen = 0,248 + SetColorAlpha = 0,248 + MoveOpacity = 0,8,255 + MoveY = 0,12,139 + MoveZoomX = 0,12,120 + MoveZoomY = 0,12,150 + MoveOpacity = 8,4,0 + SetVisible = 12,false + + Graphic = Normal/Growl zap + Focus = User + SetY = 8,50 + SetZ = 8,20 + SetZoomX = 8,60 + SetZoomY = 8,75 + SetAngle = 8,180 + SetOpacity = 8,0 + SetColorRed = 8,248 + SetColorGreen = 8,248 + SetColorAlpha = 8,248 + MoveOpacity = 8,4,255 + MoveY = 8,10,141 + MoveZoomX = 8,10,120 + MoveZoomY = 8,10,150 + MoveOpacity = 12,6,0 + SetVisible = 18,false + + Graphic = Normal/Growl zap + Focus = User + SetX = 0,3 + SetY = 0,4 + SetZ = 0,20 + SetZoomX = 0,40 + SetZoomY = 0,50 + SetAngle = 0,240 + SetOpacity = 0,0 + SetColorRed = 0,248 + SetColorGreen = 0,248 + SetColorAlpha = 0,248 + MoveOpacity = 0,8,255 + MoveX = 0,12,124 + MoveY = 0,12,68 + MoveZoomX = 0,12,120 + MoveZoomY = 0,12,150 + MoveOpacity = 8,4,0 + SetVisible = 12,false + + Graphic = Normal/Growl zap + Focus = User + SetX = 8,39 + SetY = 8,26 + SetZ = 8,20 + SetZoomX = 8,60 + SetZoomY = 8,75 + SetAngle = 8,240 + SetOpacity = 8,0 + SetColorRed = 8,248 + SetColorGreen = 8,248 + SetColorAlpha = 8,248 + MoveOpacity = 8,4,255 + MoveX = 8,10,125 + MoveY = 8,10,78 + MoveZoomX = 8,10,120 + MoveZoomY = 8,10,150 + MoveOpacity = 12,6,0 + SetVisible = 18,false + + Graphic = Normal/Growl zap + Focus = User + SetX = 0,3 + SetY = 0,-4 + SetZ = 0,20 + SetZoomX = 0,40 + SetZoomY = 0,50 + SetAngle = 0,300 + SetOpacity = 0,0 + SetColorRed = 0,248 + SetColorGreen = 0,248 + SetColorAlpha = 0,248 + MoveOpacity = 0,8,255 + MoveX = 0,12,124 + MoveY = 0,12,-68 + MoveZoomX = 0,12,120 + MoveZoomY = 0,12,150 + MoveOpacity = 8,4,0 + SetVisible = 12,false + + Graphic = Normal/Growl zap + Focus = User + SetX = 8,39 + SetY = 8,-26 + SetZ = 8,20 + SetZoomX = 8,60 + SetZoomY = 8,75 + SetAngle = 8,300 + SetOpacity = 8,0 + SetColorRed = 8,248 + SetColorGreen = 8,248 + SetColorAlpha = 8,248 + MoveOpacity = 8,4,255 + MoveX = 8,10,125 + MoveY = 8,10,-78 + MoveZoomX = 8,10,120 + MoveZoomY = 8,10,150 + MoveOpacity = 12,6,0 + SetVisible = 18,false + + PlayUserCry = 0 diff --git a/PBS/Animations/Normal/Growth.txt b/PBS/Animations/Normal/Growth.txt new file mode 100644 index 000000000..0622fc0d7 --- /dev/null +++ b/PBS/Animations/Normal/Growth.txt @@ -0,0 +1,23 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,GROWTH] +Name = Essentials +NoTarget = true + + SetColorRed = 0,248 + SetColorGreen = 0,248 + SetColorBlue = 0,248 + MoveZoomX = 0,4,115 + MoveZoomY = 0,4,115 + MoveColorAlpha = 0,4,96 + MoveZoomX = 5,4,100 + MoveZoomY = 5,4,100 + MoveColorAlpha = 5,4,0 + MoveZoomX = 12,4,115 + MoveZoomY = 12,4,115 + MoveColorAlpha = 12,4,96 + MoveZoomX = 17,4,100 + MoveZoomY = 17,4,100 + MoveColorAlpha = 17,4,0 + + Play = 0,Normal/Growth diff --git a/PBS/Animations/Normal/Pound.txt b/PBS/Animations/Normal/Pound.txt new file mode 100644 index 000000000..a99c85538 --- /dev/null +++ b/PBS/Animations/Normal/Pound.txt @@ -0,0 +1,49 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,POUND] +Name = Essentials + + + FoeInvertX = true + MoveX = 0,1,-2 + MoveX = 1,2,2 + MoveX = 3,2,-2 + MoveX = 5,2,2 + MoveX = 7,1,0 + + Graphic = Normal/Pound hit + Focus = Target + SetZ = 0,10 + SetZoomX = 0,50 + SetZoomY = 0,50 + SetColorRed = 0,248 + SetColorGreen = 0,248 + SetColorBlue = 0,192 + SetColorAlpha = 0,255 + MoveZoomX = 0,5,150 + MoveZoomY = 0,5,150 + MoveColorBlue = 1,1,0 + MoveOpacity = 1,4,0 + SetVisible = 5,false + + Graphic = Normal/Pound spark + Focus = Target + Spawner = RandomDirectionGravity + SpawnQuantity = 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 + 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 + + Play = 0,Normal/Pound diff --git a/PBS/Animations/Normal/Scratch.txt b/PBS/Animations/Normal/Scratch.txt new file mode 100644 index 000000000..68b637381 --- /dev/null +++ b/PBS/Animations/Normal/Scratch.txt @@ -0,0 +1,80 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,SCRATCH] +Name = Essentials + + + FoeInvertX = true + MoveX = 0,1,-2 + MoveX = 1,2,2 + MoveX = 3,2,-2 + MoveX = 5,2,2 + MoveX = 7,1,0 + + Graphic = Normal/Scratch marks + Focus = Target + SetX = 0,51 + SetY = 0,-102 + SetZ = 0,30 + SetZoomX = 0,75 + SetAngle = 0,150 + SetOpacity = 0,0 + SetColorRed = 0,248 + SetColorGreen = 0,248 + SetColorAlpha = 0,255 + MoveOpacity = 0,1,255 + MoveX = 0,3,-44 + MoveY = 0,3,60 + MoveColorGreen = 2,1,144 + MoveOpacity = 2,5,0 + SetVisible = 7,false + + Graphic = Normal/Scratch marks + Focus = Target + SetX = 1,19 + SetY = 1,-50 + SetZ = 1,25 + SetZoomX = 1,75 + SetAngle = 1,150 + SetOpacity = 1,128 + SetColorRed = 1,248 + SetColorGreen = 1,248 + SetColorAlpha = 1,255 + MoveOpacity = 1,7,0 + SetVisible = 8,false + + Graphic = Normal/Scratch marks + Focus = Target + SetX = 2,-12 + SetY = 2,6 + SetZ = 2,25 + SetZoomX = 2,75 + SetAngle = 2,150 + SetOpacity = 2,128 + SetColorRed = 2,248 + SetColorGreen = 2,248 + SetColorAlpha = 2,255 + MoveOpacity = 2,7,0 + SetVisible = 9,false + + Graphic = Normal/Scratch spark + Focus = Target + Spawner = RandomDirectionGravity + SpawnQuantity = 12 + 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 + 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 + + Play = 0,Normal/Scratch diff --git a/PBS/Animations/Normal/Tackle.txt b/PBS/Animations/Normal/Tackle.txt new file mode 100644 index 000000000..168c1e3f0 --- /dev/null +++ b/PBS/Animations/Normal/Tackle.txt @@ -0,0 +1,67 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,TACKLE] +Name = Essentials + + FoeInvertX = true + FoeInvertY = true + MoveX = 0,1,28 + MoveY = 0,1,-16 + MoveX = 3,1,0 + MoveY = 3,1,0 + + FoeInvertX = true + MoveX = 4,1,-2 + MoveX = 5,2,2 + MoveX = 7,2,-2 + MoveX = 9,2,2 + MoveX = 11,1,0 + + Graphic = Normal/Tackle hit + Focus = Target + SetZ = 4,10 + SetZoomX = 4,75 + SetZoomY = 4,75 + SetColorRed = 4,248 + SetColorGreen = 4,248 + SetColorBlue = 4,192 + SetColorAlpha = 4,255 + MoveZoomX = 4,1,100 + MoveZoomY = 4,1,100 + SetVisible = 5,false + + Graphic = Normal/Tackle hit + Focus = Target + SetFrame = 5,1 + SetZ = 5,10 + SetZoomX = 5,60 + SetZoomY = 5,60 + SetColorRed = 5,248 + SetColorGreen = 5,192 + SetColorAlpha = 5,255 + MoveZoomX = 5,4,100 + MoveZoomY = 5,4,100 + MoveOpacity = 5,4,0 + SetVisible = 9,false + + Graphic = Normal/Tackle spark + Focus = Target + Spawner = RandomDirectionGravity + SpawnQuantity = 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 + MoveZoomX = 8,9,0 + MoveZoomY = 8,9,0 + MoveOpacity = 8,9,0 + MoveColorGreen = 8,9,96,EaseOut + MoveColorBlue = 8,9,32,EaseOut + SetVisible = 17,false + + Play = 4,Normal/Tackle diff --git a/PBS/Animations/Normal/Tail Whip.txt b/PBS/Animations/Normal/Tail Whip.txt new file mode 100644 index 000000000..fccf6fa2b --- /dev/null +++ b/PBS/Animations/Normal/Tail Whip.txt @@ -0,0 +1,24 @@ +# See the documentation on the wiki to learn how to edit this file. +#------------------------------- +[Move,TAILWHIP] +Name = Essentials +NoTarget = true + + MoveX = 0,2,32,EaseOut + MoveY = 0,2,16,EaseIn + MoveX = 2,2,0,EaseIn + MoveY = 2,2,24,EaseOut + MoveX = 4,2,-32,EaseOut + MoveY = 4,2,16,EaseIn + MoveX = 6,2,0,EaseIn + MoveY = 6,2,0,EaseOut + MoveX = 10,2,32,EaseOut + MoveY = 10,2,16,EaseIn + MoveX = 12,2,0,EaseIn + MoveY = 12,2,24,EaseOut + MoveX = 14,2,-32,EaseOut + MoveY = 14,2,16,EaseIn + MoveX = 16,2,0,EaseIn + MoveY = 16,2,0,EaseOut + + Play = 0,Normal/Tail Whip diff --git a/animmaker.exe b/animmaker.exe deleted file mode 100644 index 6977937ac..000000000 Binary files a/animmaker.exe and /dev/null differ diff --git a/animmaker.txt b/animmaker.txt deleted file mode 100644 index 80d33e749..000000000 --- a/animmaker.txt +++ /dev/null @@ -1,26 +0,0 @@ -animmaker.exe - Converts sprites to RPG Maker XP format animations -(C) 2008 Peter O. - -Usage: animmaker xmlfile.xml -('xmlfile.xml' is the path to any XML file, see below) - -Example of XML file: - - - - - - - - - - - - - -