RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
Soul Engine Ace - Sprites and Character Effects

0 Members and 1 Guest are viewing this topic.

*
Scripter
Rep:
Level 40
Crownless King
Soul Engine Ace - Sprites and Character Effects
Version: 1.0
Author: Soulpour777
Date: February 10, 2014

Version History


  • <Version 1> Initial Release - Handles Walk, Dash, Strafe and Breath

Description


SEA - Sprites and Character Effects are included under the Sprite / Character Related Scripts. For more information about the complete lists of scripts, please refer to this page (http://infinitytears.wordpress.com/wall-of-rgss/soul-engine-ace/). These series of scripts also include the first version of my Soul_Character_Effects Core Script, which lets you handle the effects easily rather than going on to searching bit by bit of the script.

Features

  • Add / Remove Sprite / Character Shadows - The developer can cast or remove shadows for their players, sprites or events.
  • Change Walking and Running Speed
  • Breath Effect - Creates a Breathing Effect when your character is idle.
  • Strafe Effect - Let's you activate and deactivate the Strafe Mode.

Screenshots


^ Shadows, right? You can also notice that I added the breathing effect, so once you test the demo, you can actually change the way you want the breathing to happen. It has both X and Y elements, so you can do both zooming effect.


Instructions

All instructions are inside the script.

Script


Character Effects Core Script
Code: [Select]
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# SEA - Soul Character Effects
# Author: Soulpour777
# Category: ? Core Script
# Version 1.0 - Holds Character Speed, Strafe and Breath Only. Other scripts
# under the Character Effects are independent.
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Description: This core script handles all effects for the sprites and
# for the game characters.
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This is a pre-requisite to some Character Related Scripts.
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# All SEA scripts are bound under my Terms of Use.
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This module holds all character effects clusters.
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

$imported = {} if $imported.nil?
$imported["Soul_Character_Effects"] = true

module Soul_Character_Effects
 
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # Character Strafe
  # Set this up for the Strafing Mechanics.
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  module StrafeKey
    STRAFE = Input::R # Key to Activate Strafing (W)
    CANCEL_STRAFE = Input::L # Key to Deactivate Strafing (Q)
  end
 
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # Character Animation - Breath Effect
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  module CharacterAnimation
    ZOOM_WAIT = 0 # zoom wait time initial
    ZOOM_Y_ADD = 0.010 # this is the zoom y (upwards) set up
    ZOOM_WAIT = 20 #zooming waiting time
    ZOOM_Y_COMPARE = 1.0 #
    ZOOM_Y_DEC = 0.005 #decreasing zoom for breathing effect
    ZOOM_WAIT_IF_ONE = 60 # if the zoom_y is lesser than 1.0...
    ZOOM_EQUAL_TIME = 1.05
    BREATH_MOVE = false # do you wish for the character to breath while moving?
  end
 
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # Dash Speed
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  module DashSpeed
    # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # Variables - Start Editing Here
    # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
   
    # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    D_Speed = 20 # Speed of Dashing
    Dash_Key = Input::SHIFT # Key for Dashing
    StandardSpeed = 4 # Walking Speed
    # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
   
    # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # Run is On
    # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    def self.run_is_on
      $game_system.run_is_allowed = true
    end
   
    # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # Run is Off
    # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    def self.run_is_off
      $game_system.run_is_allowed = false
      $game_player.move_speed = DashSpeed::D_Speed
    end
   
    # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # Running Method
    # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    def self.is_running?
      if Input.press?(DashSpeed::Dash_Key)
        return true
      else
        return false
      end
    end

  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # Run is Off
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  def self.run_is_off
    $game_system.run_is_allowed = false
  end
 
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # Run is On
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  def self.run_is_on
    $game_system.run_is_allowed = true
  end 
 end

end



Character Speed:
Code: [Select]
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# SEA - Character Speed
# Author: Soulpout777
# Version 1.0
# Script Type: Character Related
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Description: This script changes the actual movement of dashing and walking.
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Pre-requisites: Soul_Character_Effects Core Script
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# All SEA scripts are bound under my terms of use. Please preserve this
# script banner.
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$imported = {} if $imported.nil?
$imported["Character_Speed"] = true
#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
#  This class handles system data. It saves the disable state of saving and
# menus. Instances of this class are referenced by $game_system.
#==============================================================================
class Game_System
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  attr_accessor :run_is_allowed
  attr_accessor :run_is_on
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # Alias Listings
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  alias dash_character_init initialize
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # Initialize (aliased)
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  def initialize
    @run_is_allowed = true
    @run_is_on = true
    dash_character_init() #Call Original Method
  end
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
end

#==============================================================================
# ** Game_Character
#------------------------------------------------------------------------------
#  A character class with mainly movement route and other such processing
# added. It is used as a super class of Game_Player, Game_Follower,
# GameVehicle, and Game_Event.
#==============================================================================
class Game_Character < Game_CharacterBase
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  attr_accessor :move_speed
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  This class performs the map screen processing.
#==============================================================================
class Scene_Map < Scene_Base
 
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # Alias Listings
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  alias dash_upd update
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # Update Method (aliased)
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  def update
    if $game_system.run_is_allowed
      if Input.press?(Soul_Character_Effects::DashSpeed::Dash_Key) && $game_system.run_is_on
        $game_player.move_speed = Soul_Character_Effects::DashSpeed::D_Speed
      else
        $game_player.move_speed = Soul_Character_Effects::DashSpeed::StandardSpeed
      end
    end
    dash_upd()
  end
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
end


Character Shadow:
Code: [Select]
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# SEA - Upgraded Character Shadow
# Author: SoulPour777
# Version 3
# Category: Sprite / Character Related
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Version History:
# Version 1 - First release, buggy and undisposed sprites located.
# Version 2 - Does not support Animated Parallax EX and lags. Used global
# variables instead of placing them in Game System.
# Version 3 - Created variables and accessors from inside Game System for
# better configuration.
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Pre-requisites: None
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Description: Adds a standard / custom shadow to sprites and your character.
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# All SEA scripts are bound under my terms of Use. Please preserve this script
# banner.
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

$imported = {} if $imported.nil?
$imported["Character_Shadow"] = true

class Game_System
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # Variable Handlers in Game System
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  attr_accessor :custom_sprite_shadow
  attr_accessor :player_sprite_shadow
  attr_accessor :player_z_level
  attr_accessor :jump_pixel_shadow
 
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # Alias Listings
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  alias setup_shadow initialize
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
  def initialize
    @custom_sprite_shadow = "" # Custom Shadow Image Name
    @player_sprite_shadow = true # Would you like to display a Shadow?
    @player_z_level = 1 # Zoom Level of Player's Sprite
    @jump_pixel_shadow = 20 # Shadow Zoom Level
    setup_shadow # Call Original Method
  end
 
end

# -----------------------------------------------------------------------------#
# Game Character Class
# -----------------------------------------------------------------------------#
class Game_Character
  attr_reader :jump_x_plus, :jump_y_plus, :jump_count
  alias :soul_jump :jump unless $@
  # ----------------------------------
  # Jump
  # ----------------------------------
  def jump(x_plus, y_plus)
    @jump_x_plus = x_plus
    @jump_y_plus = y_plus
    soul_jump(x_plus, y_plus)
  end
end

# -----------------------------------------------------------------------------#
# Game Event Class
# -----------------------------------------------------------------------------#
class Game_Event
  attr_reader :erased, :event
end

# -----------------------------------------------------------------------------#
# class Soul_Spr_Shadow
# -----------------------------------------------------------------------------#
class Soul_Spr_Shadow < Sprite
 
  def initialize(viewport, event, zoom_level = 1.0)
    super(viewport)
    @event = event
    unless (shadow_name = $game_system.custom_sprite_shadow).empty?
      self.bitmap = Bitmap.new("Graphics//Pictures//#{shadow_name}")
    else
      self.bitmap = Cache.system("Shadow")
    end
    self.x = @event.screen_x
    self.y = @event.screen_y
    self.ox = self.bitmap.width / 2
    self.oy = self.bitmap.height - self.bitmap.height / 6
    self.zoom_x = zoom_level
    self.zoom_y = zoom_level
  end
 
  def update
# ---------------------------------------------------------------------------- #
# ** if the event is inactive
# ---------------------------------------------------------------------------- #
    unless @event == $game_player
      if @event.erased or @event.list.nil?
        self.visible = false
        return
      end
    end

    self.z = @event.screen_z - 1 # ** shadow drawn below the sprite
    self.visible = !@event.transparent
    self.opacity = @event.opacity
   
    jump_x = @event.jump_x_plus
    jump_y = @event.jump_y_plus
    screen_y = @event.screen_y
    screen_x = @event.screen_x
    jump_count = @event.jump_count
   
    if @event.jumping?
# ---------------------------------------------------------------------------- #
# Y Lock
# ---------------------------------------------------------------------------- #
      if jump_y == 0
        self.x = screen_x
        self.y = soul_coords(@event.y)
# ---------------------------------------------------------------------------- #
# ** if the character is jumping straight down.
# ---------------------------------------------------------------------------- #
      elsif jump_y > 0 and jump_x == 0
        self.x = screen_x
        y_offset_per_tile = $game_system.jump_pixel_shadow / 5
        if jump_y > 3
          self.y = screen_y + y_offset_per_tile * 4
        else
          self.y = screen_y + jump_y * y_offset_per_tile + 1
        end
#==============================================================================
# ** Jump
#------------------------------------------------------------------------------
      else
        self.x = screen_x
        self.y = screen_y
      end
#==============================================================================
# ** No Jump
#------------------------------------------------------------------------------
    else
      self.x = screen_x
      self.y = screen_y
    end
  end
 
#==============================================================================
# ** Coords
#------------------------------------------------------------------------------
  def soul_coords(y)
    real_y = y * 256
    ($game_map.adjust_y(real_y) + 8007) / 8 - 1000 + 32 - 4
  end
end

#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
#  This class brings together map screen sprites, tilemaps, etc. It's used
# within the Scene_Map class.
#==============================================================================
class Spriteset_Map
  alias :soul_old_upd :update unless $@
 
  def update
    create_Soul_Spr_Shadow_sprites unless @Soul_Spr_Shadow_sprites
    soul_old_upd
    update_Soul_Spr_Shadows
  end
 
  def create_Soul_Spr_Shadow_sprites
    shadow_events = $game_map.events.select do |index, game_event|
      unless game_event.erased
        game_event.event.pages.first.list.first.parameters.first =~ /<soul_shadow(.+?>|>)/
      end
    end.flatten.select { |x| x.is_a?(Game_Event) }
   
# ---------------------------------------------------------------------------- #
# Zoom Level
# ---------------------------------------------------------------------------- #
    @Soul_Spr_Shadow_sprites = shadow_events.map do |shadow_event|
      command = shadow_event.event.pages.first.list.first.parameters.first
      match = command.match(/<soul_shadow:(\d+?)>/)
      if match
        zoom_level = match[1].to_f / 100
      else
        zoom_level = 1.0
      end
      Soul_Spr_Shadow.new(@viewport1, shadow_event, zoom_level)
    end
   
# ---------------------------------------------------------------------------- #
# Determine the function of the Shadow is turned On.
# ---------------------------------------------------------------------------- #
    if $game_system.player_sprite_shadow
      @Soul_Spr_Shadow_sprites << Soul_Spr_Shadow.new(@viewport1, $game_player, $game_system.player_z_level)
    end
  end
 
  def update_Soul_Spr_Shadows
    @Soul_Spr_Shadow_sprites.each do |sprite|
      sprite.update
    end
  end
end

Character Strafe
Code: [Select]
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# SEA - Character Strafe
# Author: Soulpour777
# Version 1.0
# Category: Character Effects Related
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Description: Let's you strafe from a desired position.
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Prerequisites: Soul Character Effects Core Script
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

class Game_Player < Game_Character
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # Alias Listings
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  alias character_strafe_move_by_input move_by_input
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
  def move_by_input
   if Input.trigger?(Soul_Character_Effects::StrafeKey::STRAFE)
      @old_dir_fix = @direction_fix if !@old_dir_fix
      @direction_fix = true
    elsif @old_dir_fix
      @direction_fix = @old_dir_fix
      @old_dir_fix = nil
    elsif Input.trigger?(Soul_Character_Effects::StrafeKey::CANCEL_STRAFE)
      @direction_fix = @old_dir_fix
      @old_dir_fix = nil
     end
   character_strafe_move_by_input
  end
end

Breath Script
Code: [Select]
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# SEA - Breath Effect
# Author: Soulpour777
# Version 1.0
# Category: Character Related
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Description: Creates a breathing effect when idle.
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Pre-requisites: Soul Character Core Script
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

class Sprite_Character < Sprite_Base
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # Alias Listings
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  alias character_effects_upd update
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
  def update
    character_effects_upd #Call Original Method
    update_breath
  end
 
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # update breath effect
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  def update_breath
    if sprite_is_controllable?(@character)
      @zoom_wait,b = [(@zoom_wait||0)-1,0].max, Soul_Character_Effects::CharacterAnimation::ZOOM_EQUAL_TIME
      if self.zoom_y < b && !@up && @zoom_wait == 0
        self.zoom_y += Soul_Character_Effects::CharacterAnimation::ZOOM_Y_ADD
        @up, @zoom_wait = true, Soul_Character_Effects::CharacterAnimation::ZOOM_WAIT if self.zoom_y >= b
      elsif self.zoom_y >= Soul_Character_Effects::CharacterAnimation::ZOOM_Y_COMPARE && @up && @zoom_wait == 0
        self.zoom_y -= Soul_Character_Effects::CharacterAnimation::ZOOM_Y_DEC
        @up, @zoom_wait = false,Soul_Character_Effects::CharacterAnimation::ZOOM_WAIT_IF_ONE if self.zoom_y <= Soul_Character_Effects::CharacterAnimation::ZOOM_Y_COMPARE
      end
    else
      self.zoom_y = @character.instance_variable_get(:@zoom_y) || 1
    end
  end
 
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  # Sprite Controllable?
  # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  def sprite_is_controllable?(character)
    return false if $game_map.interpreter.running?
    return false if character.move_route_forcing
    return Soul_Character_Effects::CharacterAnimation::BREATH_MOVE if character.moving?
    return false if character.transparent
    return false if !character.is_a?(Game_Player)
    return true
  end
 
end

Credit


  • Soulpour777

Thanks

  • LittleDrago - original idea for the breath effect
  • Xzygon - for the original idea of the strafe

Support


If there are any questions, comments, suggestions or anything about the script, please don't hesitate to comment or PM me here at RMRK. I will answer immediately as soon as I read your message.

Known Compatibility Issues

 - Breathing Effect: Only for one player games and suitable for ABSes, such as XAS Hero Edition Ace or SAS4.

Demo


Demo Link Here: https://dl.dropboxusercontent.com/u/36246420/Soul%20Engine%20Ace/DEMOS/SEA%20-%20Character%20Effects.exe

Author's Notes


Please do note that my breath as of the moment only supports one character. It is mostly used for games that only uses one character or that, for ABSes such as XAS or Sapphire Action System IV.

Terms of Use


All SEA scripts are bound under my terms of use. If any terms of use from RMRK are present and does not contradict any of my terms or is not on my terms, please do add those.


If you like my work, please do support me on Patreon.
https://www.patreon.com/Soulpour777?ty=h

***
Rep:
Level 89
This is so cool, but how can I actually set shadow for events other than player?
Regards,
Mike

**
Rep: +0/-0Level 40
RMRK Junior
I cannot believe that character shadows are not a stock feature of vx Ace  ???

Anyway brilliant script Soulpour,you put in mad work around here.

*
Scripter
Rep:
Level 40
Crownless King
Thanks, glad you liked it :)


If you like my work, please do support me on Patreon.
https://www.patreon.com/Soulpour777?ty=h

***
Rep:
Level 89
Could you please reply me question above?
Regards,
Mike

*
Scripter
Rep:
Level 40
Crownless King
This script does not support it. There's another script I made for that:
http://infinitytears.wordpress.com/2014/01/19/kyrie-engine-shadow-system/
This script does adding shadow for the events.


If you like my work, please do support me on Patreon.
https://www.patreon.com/Soulpour777?ty=h