Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
Sign in to follow this  
themarie

Help in SBS

Recommended Posts

Hello all , :biggrin_002:

 

Well I have the sied view battle system But I want to custom things like :

 

-The place of the skill menu , ( when you started the battle you choose fight , you have the command window ," fight skill ..." and for example when you choose skill the skill menu appears in the bottom , I read the scripts and I didn't find how to change it and like I said Im not good on scripting that's why I need help ^^ ( for the Item menu also )

 

Screens :

81732693.png

( example of the Item menu and it's the same thing as the skill menu )

I just wanted to know if it's possible to do that ^^

Thank you :)

Edited by themarie

Share this post


Link to post
Share on other sites

Whenever you ask a question regarding a script, you need to post that script.

 

Make sure you put it in spoiler and code tags, too -- like this:

 

 

class script

[indent]def initialize

[indent]print "your script"[/indent]

end

[/indent]end

 

[color=#000000][/spo[/color]iler[color=#000000]][/c[/color]ode]

Share this post


Link to post
Share on other sites

Can re write your question, sorry I'm just having a hard time understanding what u want. Then I can help as I might know what you're asking for just need clarification.

Share this post


Link to post
Share on other sites

I can almost guarantee you, that there is a VERY easy fix for this...however we have NO idea what script you are using so we have no idea what needs to be edited...

Share this post


Link to post
Share on other sites

Well on the screen it's the Item window , I just wanted to know If I can move it ,cuz I didn't find how to move it on my scripts

Core scripts :

 

#==============================================================================
# Sideview Battle System Configurations Version 2.2xp
#==============================================================================
#  Original Script by: 
#               Enu (http://rpgex.sakura.ne.jp/home/)
#  Conversion to XP by:
#               Atoa
#  Original translation versions by: 
#               Kylock
#  Translation continued by:
#               Mr. Bubble
#  XP version Translation by:
#               cairn
#  Special thanks:
#               Shu (for translation help)
#               Moonlight (for her passionate bug support for this script)
#               NightWalker (for his community support for this script)
#               XRXS (for the script of damage gravity, which was modified and 
#                     used as the system's base of damage exibition)
#               Squall (for the FF styled damage script, which was modified
#                       and added to the damage exibition system)
#               KGC (for the STBreaker script, which was the base for the 
#                    attribute limit system)
#               Herena Isaberu (for her support in XP version bug fixes)
#               Enu (for making an awesome battle system)
#==============================================================================

#==============================================================================
# ■ module N01
#------------------------------------------------------------------------------
#  Sideview Battle System Config
#==============================================================================
module N01
#--------------------------------------------------------------------------
# ● Settings
#-------------------------------------------------------------------------- 
 # Battle member starting positions
 #                   X   Y     X   Y     X   Y     X   Y
 ACTOR_POSITION = [[460,180],[480,210],[500,240],[520,270]]

 # Maximum party members that can fight at the same time.
 # Remember to add/remove coordinates in ACTOR_POSITION if you adjust
 # the MAX_MEMBER value.
 MAX_MEMBER = 4

 # Delay time after a battler completes an action in frames.
 ACTION_WAIT = 6

 # Delay time before enemy collapse (defeat of enemy) animation in frames.
 COLLAPSE_WAIT = 6

 # Delay before victory is processed in frames.
 WIN_WAIT = 30

 # Animation ID for any unarmed attack.
 NO_WEAPON = 4

 # Damage modifications when using two weapons.  Values are percentages.
 #               1st Wpn, 2nd Wpn
 TWO_SWORDS_STYLE = [100,50]

 # Auto-Life State: Revivial Animation ID
 RESURRECTION = 25

 # POP Window indicator words.  For no word results, use "".
 POP_MISS    = "Miss"        # Attack missed 
 POP_EVA     = "Evade"       # Attack avoided
 POP_CRI     = "Critical"    # Attack scored a critical hit

 # Set to false to remove shadow under actors
 SHADOW = true  

 # true: Use actor's walking graphic. 
 # false: Don't use actor's walking graphic.
 # If false, battler file with "_1" is required since walking file is not used.
 # "_1" and subsequent files ("_2", "_3", etc.) should be uniform in size.
 WALK_ANIME = true

 # Number of frames in a battler animation file. (horizontal frames)
 ANIME_PATTERN = 4

 # Number of types of battler animation file. (vertical frames)
 ANIME_KIND = 4

#==============================================================================
# ■ Single Action Engine
#------------------------------------------------------------------------------
# These are utilized by sequenced actions and have no utility alone.
#==============================================================================
# A single-action cannot be used by itself unless it is used as part of a
# sequence.
 ANIME = {
#--------------------------------------------------------------------------
# ● Battler Animations
#--------------------------------------------------------------------------
 # No.    - Battler graphic file used.
 #             0: Normal Battler Graphic.  In the case of Actors, 0 refers to
 #                 default walking graphic.
 #             n: "Character Name + _n", where n refers to the file number
 #                 extension.  An example file would be "$Ralph_1".  These 
 #                 files are placed in the Characters folder.
 #                 Use "1" for non-standard battler, like Minkoff's.
 #
 # Row    - Vertical position (row) of cells in battler graphic file. (0~3)
 # Speed  - Refresh rate of animation. Lower numbers are faster.
 # Loop   - [0: "Round-Trip" Loop]    Example: 1 2 3 2 1 2 3 2 1 ...
 #          [1: "One-Way" Loop]       Example: 1 2 3 1 2 3 1 2 3 ...
 #          [2: One Loop, no repeat]  Example: 1 2 3 .
 # Wait   - Time, in frames, before animation loops again.
 #          Does not apply if Loop=2
 # Fixed  - Defines loop behavior or specific fixed cell display.
 #          -2: Reverse Loop Animation
 #          -1: Normal Loop Animation
 #           0: No Loop Animation
 #         0~3: Fixed cell display.  Refers to cell on character sprite 
 #              sheet starting where 0 = left-most cell.
 # Z      - Set battler's Z priority.
 # Shadow - Set true to display battler shadow during animation; false to hide.
 # Weapon - Weapon animation to play with battler animation.  For no weapon
 #          animation, use "".

 # Action Name          No. Row Speed Loop Wait Fixed  Z Shadow  Weapon
 "WAIT"              => [ 0,  1,  15,   0,   0,  -1,   0, true,"" ],
 "WAIT(FIXED)"       => [ 0,  1,  10,   2,   0,   0,   0, true,"" ],
 "RIGHT(FIXED)"      => [ 0,  2,  10,   1,   2,   0,   0, true,"" ],
 "DAMAGE"            => [ 0,  3,   4,   2,   0,  -1,   0, true,"" ],
 "ATTACK_FAIL"       => [ 0,  3,  10,   1,   8,   1,   0, true,"" ],
 "MOVE_TO"           => [ 0,  1,   1,   1,   0,  -1,   0, true,"" ],
 "MOVE_AWAY"         => [ 0,  2,   2,   1,   0,  -1,   0, true,"" ],
 "ABOVE_DISPLAY"     => [ 0,  1,   2,   1,   0,  -1, 600, true,"" ],
 "WPN_SWING_V"       => [ 0,  1,   1,   2,   0,  -1,   2, true,"VERT_SWING"],
 "WPN_SWING_VL"      => [ 0,  1,   1,   2,   0,  -1,   2, true,"VERT_SWINGL"],
 "WPN_SWING_VS"      => [ 0,  1,   6,   2,   0,  -1,   2, true,"VERT_SWING"],
 "WPN_SWING_UNDER"   => [ 0,  1,   2,   2,   0,  -1,   2, true,"UNDER_SWING"],
 "WPN_SWING_OVER"    => [ 0,  1,   2,   2,   0,  -1,   2, true,"OVER_SWING"],
 "WPN_RAISED"        => [ 0,  1,   2,   2,  28,  -1,   2, true,"RAISED"],

#--------------------------------------------------------------------------
# ● Weapon Animations
#--------------------------------------------------------------------------
 # Weapon Animations can only be used with Battler Animations as seen 
 # and defined above.
 #
 # Xa - Distance weapon sprite is moved on the X-axis.
 # Ya - Distance weapon sprite is moved on the Y-axis.  Please note that
 #      the Y-axis is inverted. This means negative values move up, positive 
 #      values move down.
 # Za - If true, weapon sprite is displayed over battler sprite.
 #      If false, weapon sprite is displayed behind battler sprite.
 # A1 - Starting angle of weapon sprite rotation.  Negative numbers will 
 #      result in counter-clockwise rotation.
 # A2 - Ending angle of weapon sprite rotation.  Rotation will stop here.
 # Or - Rotation Origin - [0: Center] [1: Upper Left] [2: Upper Right]
 #                        [3:Bottom Left] [4:Bottom Right]
 # Inv - Invert - If true, horizontally inverts weapon sprite.
 # Xs - X scale - Stretches weapon sprite horizontally by a factor of X.
 #                Values may be decimals. (0.6, 0.9, etc.)
 # Ys - Y scale - Stretches weapon sprite vertically by a factor of Y.
 #                Values may be decimals. (0.6, 0.9, etc.)
 # Xp - X pitch - For adjusting the X axis. This number changes the initial 
 #                X coordinate.
 # Yp - Y pitch - For adjusting the Y axis. This number changes the initial 
 #                Y coordinate.
 # Weapon2 - If set to true, Two Weapon Style's Weapon 2 sprite will be used
 #           instead.

 # Action Name        Xa   Ya  Za    A1    A2  Or  Inv  Xs  Ys   Xp   Yp Weapon2
 "VERT_SWING"   => [  6,   8,false,-135,  45,  4,false,   1,  1,  -6, -12,false],
 "VERT_SWINGL"  => [  6,   8,false,-135,  45,  4,false,   1,  1,  -6, -12, true],
 "UNDER_SWING"  => [  6,   8,false, 270,  45,  4,false,   1,  1,  -6, -12,false],
 "OVER_SWING"   => [  6,   8,false,  45,-100,  4,false,   1,  1,  -6, -12,false],
 "RAISED"       => [  6,  -4,false,  90, -45,  4,false,   1,  1,  -6, -12,false],

#--------------------------------------------------------------------------
# ● Battler Movements
#--------------------------------------------------------------------------
 # Origin - Defines the origin of movement based on an (x,y) coordinate plane.
 #          1 unit = 1 pixel
 #             [0: Battler's Current Position] 
 #             [1: Battler's Selected Target] 
 #             [2: Screen; (0,0) is at upper-left of screen] 
 #             [3: Battle Start Position]
 # X - X-axis pixels from origin.
 # Y - Y-axis pixels from origin.  Please note that the Y-axis is 
 #     inverted. This means negative values move up, positive values move down.
 # Time - Travel time.  Larger numbers are slower.  The distance is 
 #        divided by one frame of movement.
 # Accel - Positive values accelerates frames.  Negative values decelerates.
 # Jump - Negative values produce a jumping arc.  Positive values produce
 #        a reverse arc.  [0: No jump] 
 # Animation - Battler Animation utilized during movement.

 #                           Origin  X   Y  Time  Accel Jump Animation
 "NO_MOVE"                 => [  0,   0,   0,  1,   0,   0,  "WAIT(FIXED)"],
 "START_POSITION"          => [  0,  54,   0,  1,   0,   0,  "MOVE_TO"],
 "BEFORE_MOVE"             => [  3, -32,   0, 18,  -1,   0,  "MOVE_TO"],
 "AFTER_MOVE"              => [  0,  32,   0,  8,  -1,   0,  "MOVE_TO"],
 "4_MAN_ATTACK_1"          => [  2, 564, 186, 12,  -1,   0,  "MOVE_TO"],
 "4_MAN_ATTACK_2"          => [  2, 564, 212, 12,  -1,   0,  "MOVE_TO"],
 "4_MAN_ATTACK_3"          => [  2, 504, 174, 12,  -1,   0,  "MOVE_TO"],
 "4_MAN_ATTACK_4"          => [  2, 504, 254, 12,  -1,   0,  "MOVE_TO"],
 "DEAL_DAMAGE"             => [  0,  32,   0,  4,  -1,   0,  "DAMAGE"],
 "EXTRUDE"                 => [  0,  12,   0,  1,   1,   0,  "DAMAGE"],
 "FLEE_SUCCESS"            => [  0, 300,   0,300,   1,   0,  "MOVE_AWAY"],
 "FLEE_FAIL"               => [  0,  48,   0, 16,   1,   0,  "MOVE_AWAY"],
 "VICTORY_JUMP"            => [  0,   0,   0, 20,   0,  -5,  "MOVE_TO"],
 "MOVING_TARGET"           => [  1,   0,   0, 18,  -1,   0,  "MOVE_TO"],
 "MOVING_TARGET_FAST"      => [  1,   0, -12,  8,   0,  -2,  "MOVE_TO"],
 "PREV_MOVING_TARGET"      => [  1,  24,   0, 12,  -1,   0,  "MOVE_TO"],
 "PREV_MOVING_TARGET_FAST" => [  1,  24,   0,  1,   0,   0,  "MOVE_TO"],
 "MOVING_TARGET_RIGHT"     => [  1,  96,  32, 16,  -1,   0,  "MOVE_TO"],
 "MOVING_TARGET_LEFT"      => [  1,  96, -32, 16,  -1,   0,  "MOVE_TO"],
 "JUMP_TO"                 => [  0, -32,   0,  8,  -1,  -4,  "MOVE_TO"],
 "JUMP_AWAY"               => [  0,  32,   0,  8,  -1,  -4,  "MOVE_AWAY"],
 "JUMP_TO_TARGET"          => [  1,  12, -12, 12,  -1,  -6,  "MOVE_TO"],
 "THROW_ALLY"              => [  0, -24,   0, 16,   0,  -2,  "MOVE_TO"],
 "TRAMPLE"                 => [  1,  12, -32, 12,  -1,  -6,  "ABOVE_DISPLAY"],
 "PREV_JUMP_ATTACK"        => [  0, -32,   0, 12,  -1,  -2,  "WPN_SWING_V"],
 "PREV_STEP_ATTACK"        => [  1,  12,   0, 12,  -1,  -5,  "WPN_SWING_VS"],
 "REAR_SWEEP_ATTACK"       => [  1,  12,   0, 16,   0,  -3,  "WPN_SWING_V"],
 "JUMP_FIELD_ATTACK"       => [  1,   0,   0, 16,   0,  -5,  "WPN_SWING_V"],
 "DASH_ATTACK"             => [  1, -96,   0, 16,   2,   0,  "WPN_SWING_V"],
 "RIGHT_DASH_ATTACK"       => [  1, -96,  32, 16,   2,   0,  "WPN_SWING_V"],
 "LEFT_DASH_ATTACK"        => [  1, -96, -32, 16,   2,   0,  "WPN_SWING_V"],
 "RIGHT_DASH_ATTACK2"      => [  1,-128,  48, 16,   2,   0,  "WPN_SWING_V"],
 "LEFT_DASH_ATTACK2"       => [  1,-128, -48, 16,   2,   0,  "WPN_SWING_V"],

#--------------------------------------------------------------------------
# ● Battler Float Animations
#--------------------------------------------------------------------------
 # These types of single-actions defines the movement of battlers from their
 # own shadows.  Please note that it is not possible to move horizontally
 # while floating from a shadow.
 #
 # Type - Always "float".
 # A - Starting float height. Negative values move up.
 #                            Positive values move down.
 # B - Ending float height.  This height is maintained until another action.
 # Time - Duration of movement from point A to point B
 # Animation - Specifies the Battler Animation to be used.

 #                   Type     A    B  Time  Animation
 "FLOAT_"      => ["float", -22, -20,  2, "WAIT(FIXED)"],
 "FLOAT_2"     => ["float", -20, -18,  2, "WAIT(FIXED)"],
 "FLOAT_3"     => ["float", -18, -20,  2, "WAIT(FIXED)"],
 "FLOAT_4"     => ["float", -20, -22,  2, "WAIT(FIXED)"],
 "JUMP_STOP"   => ["float",   0, -80,  4, "WAIT(FIXED)"],
 "JUMP_LAND"   => ["float", -80,   0,  4, "WAIT(FIXED)"],
 "LIFT"        => ["float",   0, -30,  4, "WAIT(FIXED)"],

#--------------------------------------------------------------------------
# ● Battler Position Reset
#-------------------------------------------------------------------------- 
 # These types of single-actions define when a battler's turn is over and
 # will reset the battler back to its starting coordinates.  This type of
 # single-action is required in all sequences.  
 # 
 # Please note that after a sequence has used this type of single-action, 
 # no more damage can be done by the battler since its turn is over.
 #
 # Type - Always "reset"
 # Time - Time it takes to return to starting coordinates.  Movement speed
 #        fluctuates depending on distance from start coordinates.
 # Accel - Positive values accelerate.  Negative values decelerate.
 # Jump - Negative values produce a jumping arc.  Positive values produce
 #        a reverse arc.  [0: No jump] 
 # Animation - Specifies the Battler Animation to be used.

 #                   Type   Time Accel Jump Animation
 "COORD_RESET"   => ["reset", 16,  0,   0,  "MOVE_TO"],
 "FLEE_RESET"    => ["reset", 16,  0,   0,  "MOVE_AWAY"],

#--------------------------------------------------------------------------
# ● Forced Battler Actions
#--------------------------------------------------------------------------
 # These types of single-actions allow forced control of other battlers
 # that you define.
 #
 # Type - Specifies action type.  "SINGLE" or "SEQUENCE"
 #
 # Object -    The battler that will execute the action defined under Action 
 #          Name. 0 is for selected target, and any other number is a State 
 #          number (1~999), and affects all battlers with the State on them.  
 #             By adding a - (minus sign) followed by a Skill ID number (1~999),
 #          it will define the actors that know the specified skill, besides 
 #          the original actor.
 #             If you want to designate an actor by their index ID number, 
 #          add 1000 to their index ID number. If the system cannot designate 
 #          the index number(such as if actor is dead or ran away), it will 
 #          select the nearest one starting from 0.  If a response fails, 
 #          the action will be canceled. (Example: Ylva's actor ID is 4.  A
 #          value of 1004 would define Ylva as the Object.)
 #
 # Reset Type - Specifies method of returning the battler to its original
 #                 location.
 # Action Name - Specifies action used.  If Type is SINGLE, then Action Name
 #               must be a single-action function.  If Type is SEQUENCE, 
 #               the Action Name must an action sequence name.

 #                         Type   Object   Reset Type      Action Name
 "LIGHT_BLOWBACK"    => ["SINGLE",     0,  "COORD_RESET",  "EXTRUDE"],
 "RIGHT_TURN"        => ["SINGLE",     0,  "COORD_RESET",  "CLOCKWISE_TURN"],
 "DROP_DOWN"         => ["SINGLE",     0,  "COORD_RESET",  "Y_SHRINK"],
 "IMPACT_1"          => ["SINGLE",     0,  "COORD_RESET",  "OBJ_TO_SELF"],
 "LIFT_ALLY"         => ["SINGLE",     0,             "",  "LIFT"],
 "ULRIKA_ATTACK"     => ["SEQUENCE",   18, "COORD_RESET",  "ULRIKA_ATTACK_1"],
 "4_MAN_ATK_1"       => ["SEQUENCE", -101, "COORD_RESET",  "4_MAN_ATTACK_1"],
 "4_MAN_ATK_2"       => ["SEQUENCE", -102, "COORD_RESET",  "4_MAN_ATTACK_2"],
 "4_MAN_ATK_3"       => ["SEQUENCE", -103, "COORD_RESET",  "4_MAN_ATTACK_3"],
 "ALLY_FLING"        => ["SEQUENCE", 1000, "COORD_RESET",  "THROW"],

#--------------------------------------------------------------------------
# ● Target Modification
#--------------------------------------------------------------------------
 # Changes battler's target in battle.  Original target will still be stored.  
 # Current battler is the only battler capable of causing damage.
 #
 # Type - Always "target"
 #
 # Object -    The battler that will have its target modified.  0 is selected 
 #          target, any other number is a State ID number (1~999), and 
 #          changes all battlers with that state on them to target the new 
 #          designated target.
 #             If you want to designate an actor by their index ID number, 
 #          add 1000 to their index ID number. If the system cannot designate 
 #          the index number(such as if actor is dead or ran away), it will 
 #          select the nearest one starting from 0.  If a response fails, 
 #          the action will be canceled. (Example: Ylva's actor ID is 4.  A
 #          value of 1004 would define Ylva as the Object.)
 #
 # Target - New Target. [0=Self]  [1=Self's Target]
 #                      [2=Self's Target After Modification]
 #                      [3=Reset to Previous Target (if 2 was used)]

 # Target Mod name            Type   Object  Target
 "REAL_TARGET"           => ["target",    0,  0],
 "TWO_UNIFIED_TARGETS"   => ["target",   18,  1],
 "FOUR_UNIFIED_TARGETS"  => ["target",   19,  1],
 "ALLY_TO_THROW"         => ["target", 1000,  2],
 "THROW_TARGET"          => ["target", 1000,  3],

#--------------------------------------------------------------------------
# ● Skill Linking
#--------------------------------------------------------------------------
 # Linking to the next skill will stop any current action.  Linking to the 
 # next skill will also require and consume MP/HP cost of that skill.
 #
 # Type - Always "der"
 # Chance - Chance, in percent, to link to the defined skill ID. (0~100)
 # Link - true: actor does not require Skill ID learned to link.
 #        false: actor requires Skill ID learned.
 # Skill ID - ID of the skill that will be linked to.

 # Action Name           Type  Chance Link Skill ID
 "LINK_SKILL_91"     => ["der", 100, true,  91],
 "LINK_SKILL_92"     => ["der", 100, true,  92],

#--------------------------------------------------------------------------
# ● Action Conditions
#--------------------------------------------------------------------------
 # If the condition is not met, all current actions are canceled.
 #
 # A: Type - always "nece"
 # B: Object - Object that Condition refers to. [0=Self] [1=Target] 
 #                                           [2=All Enemies] [3=All Allies]
 # C: Content - [0=State] [1=Parameter] [2=Switch] [3=Variable] [4=Skill]
 # 
 # D: Condition - This value is determined by the value you set for Content.
 # [0] State: State ID
 # [1] Parameter: [0=Current HP] [1=Current MP] [2=ATK] [3=DEX] [4=AGI] [5=INT]
 # [2] Switch: Game Switch Number
 # [3] Variable: Game Variable Number
 # [4] Skill: Skill ID
 #
 # E: Supplement - Supplement for the Condition as defined above.
 # [0] State: Amount required.  If number is positive, the condition is how 
 #            many have the state, while a negative number are those who 
 #            don't have the state.
 # [1] Parameter: If Object is more than one battler, average is used.
 #                Success if Parameter is greater than value.  If Value
 #                is negative, then success if lower.
 # [2] Switch: [true: Switch ON succeeds] [false: Switch OFF succeeds]
 # [3] Variable: Game variable value used to determine if condition is met.  If
 #               supplement value is positive, Game Variable must have more
 #               than the defined amount to succeed.  If supplement value has a
 #               minus symbol (-) attached, Game Variable must have less than
 #               the defined amount to succeed.  (Ex: -250 means the Game
 #               Variable must have a value less than 250 to succeed.)
 # [4] Skill: Required amount of battlers that have the specified skill 
 #            ID learned.

 #                       Type  Obj  Cont  Cond   Supplement
 #                         A     B   C    D    E
 "2_MAN_ATK_COND"  => ["nece",   3,  0,  18,   1],
 "4_MAN_ATK_COND"  => ["nece",   3,  0,  19,   3],
 "FLOAT_STATE"     => ["nece",   0,  0,  17,   1],
 "CAT_STATE"       => ["nece",   0,  0,  20,   1],

#--------------------------------------------------------------------------
# ● Battler Rotation
#--------------------------------------------------------------------------
 # Rotates battler image.  Weapon Animations are not automatically adjusted
 # for Battler Rotation like with Invert settings.
 #
 # Type - always "angle"
 # Time - Duration duration of rotation animation in frames.
 # Start - Starting angle. 0-360 degrees.  Can be negative.
 # End - Ending Angle. 0-360 degrees.  Can be negative.
 # Return - true: End of rotation is the same as end of duration.
 #          false: Rotation animation as defined.

 #                           Type   Time Start  End  Return
 "FALLEN"                => ["angle",  1, -90, -90,false],
 "CLOCKWISE_TURN"        => ["angle", 48,   0,-360,false],
 "COUNTERCLOCKWISE_TURN" => ["angle",  6,   0, 360,false],

#--------------------------------------------------------------------------
# ● Battler Zoom
#--------------------------------------------------------------------------
 # Stretch and shrink battler sprites with these single-actions.
 #
 # Type - always "zoom"
 # Time - Duration of zoom animation in frames.
 # X - X scale - Stretches battler sprite horizontally by a factor of X.
 #               1.0 is normal size, 0.5 is half size.
 # Y - Y scale - Stretches battler sprite vertically by a factor of Y.
 #               1.0 would be normal size, 0.5 would be half size.
 # Return - true: End of rotation is the same as end of duration.
 #          false: Zoom animation as defined.
 #          Battler zoom is still temporary.

 #                   Type  Time   X    Y   Return
 "X_SHRINK"         => ["zoom", 16, 0.5, 1.0, true],
 "Y_SHRINK"         => ["zoom", 16, 1.0, 0.5, true],

#--------------------------------------------------------------------------
# ● Damage and Database-Assigned Animations
#--------------------------------------------------------------------------
 # These single-actions deal with animations, particularly with those assigned 
 # in the Database for Weapons, Skills and Items.  These are what causes
 # any damage/healing/state/etc. application from Weapons, Skills and Items. 
 #
 # A difference between "anime" and "m_a" single-actions is that 
 # "anime" triggered animations will move with the Object on the screen.  The
 # Z-axis of animations will always be over battler sprites.  If "OBJ_ANIM" 
 # is added at the beginning of the name, it will be both damage and defined
 # animation.
 #
 # Type - always "anime"
 # ID - (-1): Uses assigned animation from game Database.
 #      (-2): Uses equipped Weapon animation as assigned in the Database.
 #   (1~999): Database Animation ID.
 # Object - [0=Self] [1=Target] 
 # Invert - If set to true, the animation is inverted horizontally.
 # Wait - true: Sequence will not continue until animation is completed.
 #        false: Sequence will continue regardless of animation length.
 # Weapon2 - true: If wielding two weapons, damage and animation will be
 #                 based off Weapon 2.

 #                         Type   ID  Object Invert  Wait  Weapon2
 "OBJ_ANIM"        => ["anime",  -1,  1, false,false, false],
 "OBJ_ANIM_WEIGHT" => ["anime",  -1,  1, false, true, false],
 "OBJ_ANIM_WEAPON" => ["anime",  -2,  1, false,false, false],
 "OBJ_ANIM_L"      => ["anime",  -1,  1, false,false,  true],
 "HIT_ANIM"        => ["anime",  14,  1, false,false, false],
 "KILL_HIT_ANIM"   => ["anime",  67,  1, false,false, false],

#--------------------------------------------------------------------------
# ● Movement and Display of Animations
#--------------------------------------------------------------------------
 # These single-actions provide motion options for animations used for 
 # effects such as long-ranged attacks and projectiles.  Weapon sprites
 # may also substitute animations.
 #
 # A difference between "m_a" and "anime" single-actions is that "m_a"
 # animations will stay where the Object was even if the Object moved.
 #
 # Type - always "m_a"
 # ID - 1~999: Database Animation ID
 #          0: No animation displayed.
 # Object - Animation's target. [0=Target] [1=Enemy's Area] 
 #                              [2=Party's Area] [4=Self]
 # Pass -  [0: Animation stops when it reaches the Object.] 
 #         [1: Animation passes through the Object and continues.] 
 # Time - Duration of animation travel time and display.  Larger values
 #        decrease travel speed.  Increase this value if the animation
 #        being played is cut short.
 # Arc - Trajectory - Positive values produce a low arc. 
 #                    Negative values produce a high arc.
 #                    [0: No Arc]
 # Xp - X Pitch - This value adjusts the initial X coordinate of the 
 #                animation. Enemy calculation will be automatically inverted.
 # Yp - Y Pitch - This value adjusts the initial X coordinate of the 
 #                animation.
 # Start - Defines origin of animation movement.
 #              [0=Self] [1=Target] [2=No Movement] 
 # Z-axis - true: Animation will be over the battler sprite.
 #          false: Animation will be behind battler sprite.
 # Weapon - Insert only "Throwing Weapon Rotation" and
 #          "Throwing Skill Rotation" actions. For no weapon sprite, use "".

 #                        Type   ID Object Pass Time Arc  Xp Yp Start Z Weapon
 "START_MAGIC_ANIM"  => ["m_a",  2,   4,  0,  52,   0,  0,  0, 2,false,""],
 "OBJ_TO_SELF"       => ["m_a", 51,   0,  0,  18,   0,  0,  0, 1,false,""],
 "START_WEAPON_THROW"=> ["m_a",  0,   0,  0,  16, -24,  0,  0, 0,false,"WPN_ROTATION"],
 "END_WEAPON_THROW"  => ["m_a",  0,   0,  0,  16,  24,  0,  0, 1,false,"WPN_ROTATION"],
 "STAND_CAST"        => ["m_a",100,   1,  0,  64,   0,  0,  0, 2, true,""],

#--------------------------------------------------------------------------
# ● Throwing Weapon Rotation
#--------------------------------------------------------------------------
 # These are used to rotate weapon sprites that are "thrown" with Movement of
 # Animation single-actions.  These must be used while the sprite is in flight.
 # You may assign a different weapon graphic to be thrown in this 
 # configuration script under Throwing Weapon Graphic Settings.
 #
 # Start - Starting angle in degrees (0-360)
 # End - Ending angle in degrees. (0-360)
 # Time - Duration, in frames, of a single rotation.  Rotation will continue
 #        until the animation is complete.

 #                     Start  Angle  Time
 "WPN_ROTATION"     => [   0, 360,  8],

#--------------------------------------------------------------------------
# ● Throwing Skill Rotation
#--------------------------------------------------------------------------
 # Different from Throwing Weapon Rotation. These single-actions are used to 
 # rotate weapon sprites that are "thrown" with Movement of Animation single 
 # actions. These are specifically used with skills. You may assign a different weapon graphic to be 
 # thrown in this configuration script under Throwing Weapon Graphic Settings.  
 #
 # Start - Starting angle in degrees (0-360)
 # End - Ending angle in degrees. (0-360)
 # Time - Duration, in frames, of a single rotation.  Rotation will continue
 #        until the animation is complete.
 # Type - Always "skill".

 # Weapon Action Name     Start  End Time  Type
 "WPN_THROW"           => [   0, 360,  8, "skill"],

#--------------------------------------------------------------------------
# ● Status Balloon Animation
#--------------------------------------------------------------------------
 # Uses Balloon.png in the System folder.
 #
 # Type - Always "balloon"
 # Row - Determines row from the Balloon.png (0~9)
 # Loop - Balloon loop behavior.  Balloon disappears when loop is
 #        complete. [0="One-Way" Loop] [1="Round-Trip" Loop]

 # Emote Name         Type        Row  Loop
 "STATUS-NORMAL"   => ["balloon",   6,  1],
 "STATUS-CRITICAL" => ["balloon",   5,  1],
 "STATUS-SLEEP"    => ["balloon",   9,  1],

#--------------------------------------------------------------------------
# ● Sound Effect Actions
#--------------------------------------------------------------------------
 # Type1 - always "sound"
 # Type2 - ["se","bgm","bgs"]
 # Pitch - Value between 50 and 150.
 # Vol - Volume - Value between 0 and 100.
 # Filename - Name of the sound to be played.

 #                   Type1  Type2  Pitch Vol   Filename
 "062-Swing01"   => ["sound", "se",  80, 100, "062-Swing01"],
#--------------------------------------------------------------------------
# ● Game Speed Modifier
#--------------------------------------------------------------------------
 # Type - always "fps"
 # Speed - Speed in Frames Per Second.  40 is normal frame rate.
 # Use with care as this function modifies FPS directly and will conversly
 #    affect any active timers or time systems.

 #                Type  Speed
 "FPS_SLOW"    => ["fps",  20],
 "FPS_NORMAL"  => ["fps",  40],

#--------------------------------------------------------------------------
# ● State Granting Effects
#--------------------------------------------------------------------------
 # Type - always "sta+"
 # Object - [0=Self] [1=Target] [2=All Enemies] [3=All Allies] 
 #          [4=All Allies (excluding user)]
 # State ID - State ID to be granted.

 #                      Type  Object  State ID
 "2_MAN_TECH_GRANT" => ["sta+",  0,  18],
 "4_MAN_TECH_GRANT" => ["sta+",  0,  19],
 "CATFORM_GRANT"    => ["sta+",  0,  20],

#--------------------------------------------------------------------------
# ● State Removal Effects
#--------------------------------------------------------------------------
 # Type - always "sta-"
 # Object - [0=Self] [1=Target] [2=All Enemies] [3=All Allies] 
 #          [4=All Allies (excluding user)]
 # State ID - State ID to be removed.

 #                    Type  Object  State ID
 "2_MAN_TECH_REVOKE" => ["sta-",  3,  18],
 "4_MAN_TECH_REVOKE" => ["sta-",  3,  19],

#--------------------------------------------------------------------------
# ● Battler Transformation Effects
#--------------------------------------------------------------------------
 # Type - always "change"
 # Reset - true: Battler sprite reverts back to default file after battle.
 #         false: Transformation is permanent after battle.
 # Filename - Battler graphics file that will be transformed to.

 #                         Type   Reset  Filename
 "TRANSFORM_CAT"     => ["change", true,"007-Fighter07"],
 "TRANSFORM_CANCEL"  => ["change", true,"040-Mage08"],

#--------------------------------------------------------------------------
# ● Cut-In Image Effects
#--------------------------------------------------------------------------
 # Only one image can be displayed at a time.
 #
 # X1 - Image's starting X-coordinate.
 # Y1 - Starting Y-coordinate.
 # X2 - Ending X-coordinate.
 # Y2 - Ending Y-coordinate.
 # Time - Length of time from start to end. Higher value is slower.
 # Z-axis - true: Image appears over BattleStatus Window.
 #          false: Image appears behind BattleStatus Window.
 # Filename - File name from .Graphics\Pictures folder.

 #                  Type    X1   Y1   X2   Y2 Time Z-axis  Filename
 "CUT_IN_START" => ["pic",-280,  48,   0,  64, 14, false,"016-Thief01"],
 "CUT_IN_END"   => ["pic",   0,  48, 640,  64, 12, false,"016-Thief01"],

#--------------------------------------------------------------------------
# ● Game Switch Settings 
#--------------------------------------------------------------------------
 # Type - Always "switch"
 # Switch - Switch number from the game database.
 # ON/OFF - [true:Switch ON] [false:Switch OFF]
 # 
 #                         Type    Switch  ON/OFF
 "GAME_SWITCH_1_ON"    => ["switch",   1,  true],

#--------------------------------------------------------------------------
# ● Game Variable Settings 
#--------------------------------------------------------------------------
 # Type - Always "variable"
 # Var - Variable Number from the game database.
 # Oper - [0=Set] [1=Add] [2=Sub] [3=Mul] [4=Div] [5=Mod] 
 # X - value of the operation.
 # 
 #                         Type       Var   Oper   X
 "GAME_VAR_1_+1"       => ["variable",   1,   1,    1],

#--------------------------------------------------------------------------
# ● Script Operation Settings
#--------------------------------------------------------------------------
 # Type - Always "script"
 # 
 # Inserts a simple script code into the action sequence. In the sample, 
 # where it says p=1 can be replaced with any script. Character strings 
 # and anything beyond functions will not work. (?) 
 #                    Type    
 "TEST_SCRIPT"   => ["script", " 

 p = 1 

 "],

#--------------------------------------------------------------------------
# ● Special Modifiers - DO NOT CHANGE THESE NAMES
#--------------------------------------------------------------------------
 # Clear image - Clears images such as Cut-in graphics.
 # Afterimage ON - Activates Afterimage of battler.
 # Afterimage OFF - Deactivates Afterimage.
 # Invert - Invert animation. Use Invert again in a sequence to cancel
 #          because "COORD_RESET" does not reset Invert.
 # Don't Wait - Any actions after Don't Wait is applied are done instantly.  
 #              Apply "Don't Wait" again in a sequence to trigger off.
 # Can Collapse - Triggers collapse of battler when HP is 0.
 #                Required in every damage sequence.
 # Two Wpn Only - The single-action following Two Wpn Only will only execute
 #                if the actor is wielding two weapons.  If the actor is not,
 #                the single-action will be skipped and will move on to the next.
 # One Wpn Only - The single-action following One Wpn Only will only execute
 #                if the actor is wielding one weapon.  If the actor is not,
 #                the single-action will be skipped and will move on to the next.
 # Process Skill - The Return marker for individual processing of a skill.
 # Process Skill End - The End marker for individual processing of a skill.
 # Start Pos Change - Changes the Start Position to wherever the battler
 #                    currently is on screen.
 # Start Pos Return - Returns battler to original Start Position.
 # Cancel Action - Trigger the "end" of battler's turn which will cause the
 #                 the next battler's turn to execute.
 #                 This includes the function of Can Collapse, and no 
 #                 additional damage can be dealt by the battler after this.
 # End - This is used when no action is automatically recognized.
 #
 # Note: If you wish to understand how Process Skill and Process Skill End 
 #       functions, please examine the "SKILL_ALL" sequence in this Config
 #       and use the Float All skill provided in the demo to see how it works.

 "Clear image"       => ["Clear image"],
 "Afterimage ON"     => ["Afterimage ON"],
 "Afterimage OFF"    => ["Afterimage OFF"],
 "Invert"            => ["Invert"],
 "Don't Wait"        => ["Don't Wait"],
 "Can Collapse"      => ["Can Collapse"],
 "Two Wpn Only"      => ["Two Wpn Only"],
 "One Wpn Only"      => ["One Wpn Only"],
 "Process Skill"     => ["Process Skill"],
 "Process Skill End" => ["Process Skill End"],
 "Start Pos Change"  => ["Start Pos Change"],
 "Start Pos Return"  => ["Start Pos Return"],
 "Cancel Action"     => ["Cancel Action"],
 "End"               => ["End"]

#--------------------------------------------------------------------------
# ● About Wait
#--------------------------------------------------------------------------
 # When there is only a numerical value as a single-action name, it will be 
 # considered a delay, in frames, before the Action Sequence continues. 
 # (i.e. "10", "42")  Because of this, single-action function names for the
 # effects defined above cannot be entirely numerical.  Any Battler Animations 
 # that have been prompted will persist when Waiting.
 }
#==============================================================================
# ■ Action Sequence
#------------------------------------------------------------------------------
# Action sequences are made of the single-action functions defined above.
#==============================================================================
 # Action Sequences defined here can be used for Actor/Enemy actions below.
 # Sequences are processed left to right in order.
 ACTION = {
#------------------------------- Basic Actions --------------------------------

 "BATTLE_START"       => ["START_POSITION","COORD_RESET"],

 "WAIT"               => ["WAIT"],

 "WAIT-CRITICAL"      => ["NO_MOVE","WAIT(FIXED)","STATUS-CRITICAL","22"],

 "WAIT-NORMAL"        => ["NO_MOVE","WAIT(FIXED)","STATUS-NORMAL","22"],

 "WAIT-SLEEP"         => ["NO_MOVE","WAIT(FIXED)","STATUS-SLEEP","22"],

 "WAIT-FLOAT"         => ["WAIT(FIXED)","6","FLOAT_","4",
                         "FLOAT_2","4","FLOAT_3","4",
                         "FLOAT_4","4"],

 "DEAD"               => ["FALLEN","ATTACK_FAIL"],

 "DAMAGE"             => ["DEAL_DAMAGE","COORD_RESET"],

 "FLEE"               => ["FLEE_SUCCESS"],

 "ENEMY_FLEE"         => ["FLEE_SUCCESS","COORD_RESET"],

 "FLEE_FAIL"          => ["FLEE_FAIL","WAIT(FIXED)","8","COORD_RESET"],

 "COMMAND_INPUT"      => ["BEFORE_MOVE"],

 "COMMAND_SELECT"     => ["COORD_RESET"],

 "GUARD_ATTACK"       => ["WAIT(FIXED)","4","FLOAT_STATE","FLOAT_",
                         "2","FLOAT_2","2","FLOAT_3","2",
                         "FLOAT_4","2"],

 "EVADE_ATTACK"       => ["JUMP_AWAY","JUMP_AWAY","WAIT(FIXED)","16",
                         "COORD_RESET"],

 "ENEMY_EVADE_ATTACK" => ["JUMP_AWAY","WAIT(FIXED)","16","COORD_RESET"],

 "VICTORY"            => ["WAIT(FIXED)","16","RIGHT(FIXED)","VICTORY_JUMP",
                         "WAIT(FIXED)","Don't Wait","CAT_STATE",
                         "START_MAGIC_ANIM","TRANSFORM_CANCEL","WAIT(FIXED)","Don't Wait"],

 "RESET_POSITION"     => ["COORD_RESET"],

#---------------------- "Forced Action" Sequences --------------------------

 "ULRIKA_ATTACK_1"    => ["2","MOVING_TARGET_LEFT","WAIT(FIXED)",
                         "START_MAGIC_ANIM","WPN_SWING_UNDER","WPN_RAISED",
                         "48","RIGHT_DASH_ATTACK","64","FLEE_RESET"], 

 "4_MAN_ATTACK_1"     => ["2","4_MAN_ATTACK_2","WAIT(FIXED)","START_MAGIC_ANIM",
                         "WPN_SWING_UNDER","WPN_RAISED","90",
                         "LEFT_DASH_ATTACK","96","FLEE_RESET"],

 "4_MAN_ATTACK_2"     => ["2","4_MAN_ATTACK_3","WAIT(FIXED)","START_MAGIC_ANIM",
                         "WPN_SWING_UNDER","WPN_RAISED","60","RIGHT_DASH_ATTACK2","RIGHT_TURN",
                         "OBJ_ANIM","128","FLEE_RESET"],

 "4_MAN_ATTACK_3"     => ["2","4_MAN_ATTACK_4","WAIT(FIXED)","START_MAGIC_ANIM",
                         "WPN_SWING_UNDER","WPN_RAISED","34","LEFT_DASH_ATTACK2","RIGHT_TURN",
                         "OBJ_ANIM","144","FLEE_RESET"],

 "THROW"              => ["CLOCKWISE_TURN","4","MOVING_TARGET_FAST","JUMP_AWAY","4",
                         "WAIT(FIXED)","JUMP_AWAY","WAIT(FIXED)","32"],

#---------------------- Basic Action Oriented ------------------------------

 "NORMAL_ATTACK"      => ["PREV_MOVING_TARGET","WPN_SWING_V","OBJ_ANIM_WEIGHT",
                         "12","WPN_SWING_VL","OBJ_ANIM_L","Two Wpn Only","16",
                         "Can Collapse","FLEE_RESET"],

 "ENEMY_UNARMED_ATK"  => ["PREV_MOVING_TARGET","WPN_SWING_V","OBJ_ANIM_WEIGHT",
                         "Can Collapse","FLEE_RESET"],

 "SKILL_USE"          => ["BEFORE_MOVE","WAIT(FIXED)","START_MAGIC_ANIM",
                         "WPN_SWING_UNDER","WPN_RAISED","WPN_SWING_V",
                         "OBJ_ANIM_WEIGHT","Can Collapse","24","COORD_RESET"],

 "SKILL_ALL"          => ["BEFORE_MOVE","START_MAGIC_ANIM","WPN_SWING_UNDER","WPN_RAISED",
                         "Process Skill","WPN_SWING_V","OBJ_ANIM","24",
                         "Process Skill End","Can Collapse","COORD_RESET"],

 "ITEM_USE"           => ["PREV_MOVING_TARGET","WAIT(FIXED)","24","OBJ_ANIM_WEIGHT",
                         "Can Collapse","COORD_RESET"],

#------------------------------ Skill Sequences -------------------------------

 "MULTI_ATTACK"       => ["Afterimage ON","PREV_STEP_ATTACK","WPN_SWING_VL","OBJ_ANIM_WEAPON",
                         "WAIT(FIXED)","16","OBJ_ANIM_WEAPON","WPN_SWING_UNDER",
                         "WPN_SWING_OVER","4","JUMP_FIELD_ATTACK","WPN_SWING_VL",
                         "OBJ_ANIM_WEAPON","WAIT(FIXED)","16","OBJ_ANIM_WEAPON",
                         "Invert","WPN_SWING_V","WPN_SWING_VL","12","Invert",
                         "JUMP_FIELD_ATTACK","WPN_SWING_VL","OBJ_ANIM_WEAPON",
                         "JUMP_AWAY","JUMP_AWAY","WAIT(FIXED)",
                         "OBJ_ANIM_WEAPON","DASH_ATTACK","WPN_SWING_VL","Can Collapse",
                         "Afterimage OFF","16","FLEE_RESET"],

 "MULTI_ATTACK_RAND"  => ["PREV_STEP_ATTACK","WPN_SWING_VL","OBJ_ANIM_WEAPON","WAIT(FIXED)","16",
                         "PREV_STEP_ATTACK","WPN_SWING_VL","OBJ_ANIM_WEAPON","WAIT(FIXED)","16",
                         "PREV_STEP_ATTACK","WPN_SWING_VL","OBJ_ANIM_WEAPON","WAIT(FIXED)","16",
                         "PREV_STEP_ATTACK","WPN_SWING_VL","OBJ_ANIM_WEAPON","Can Collapse","COORD_RESET"],

 "RAPID_MULTI_ATTACK"      => ["PREV_MOVING_TARGET","WPN_SWING_V","LIGHT_BLOWBACK","OBJ_ANIM_WEAPON",
                         "PREV_MOVING_TARGET_FAST","WPN_SWING_V","LIGHT_BLOWBACK","WPN_SWING_VL","OBJ_ANIM_WEAPON",
                         "PREV_MOVING_TARGET_FAST","WPN_SWING_V","LIGHT_BLOWBACK","WPN_SWING_VL","OBJ_ANIM_WEAPON",
                         "PREV_MOVING_TARGET_FAST","WPN_SWING_V","LIGHT_BLOWBACK","WPN_SWING_VL","OBJ_ANIM_WEAPON",
                         "PREV_MOVING_TARGET_FAST","WPN_SWING_V","LIGHT_BLOWBACK","WPN_SWING_VL","OBJ_ANIM_WEAPON",
                         "PREV_MOVING_TARGET_FAST","WPN_SWING_V","LIGHT_BLOWBACK","WPN_SWING_VL","OBJ_ANIM_WEAPON",
                         "Can Collapse","12","COORD_RESET"],

 "2-MAN_ATTACK"      => ["2_MAN_ATK_COND","TWO_UNIFIED_TARGETS","ULRIKA_ATTACK",
                         "MOVING_TARGET_RIGHT","WAIT(FIXED)","START_MAGIC_ANIM","WPN_SWING_UNDER",
                         "WPN_RAISED","48","KILL_HIT_ANIM","LEFT_DASH_ATTACK","64","OBJ_ANIM",
                         "Can Collapse","FLEE_RESET","2_MAN_TECH_REVOKE"],

 "2-MAN_ATTACK_ASSIST"=> ["2_MAN_TECH_GRANT"],  

 "4-MAN_ATTACK"       => ["4_MAN_ATK_COND","FOUR_UNIFIED_TARGETS","4_MAN_ATK_1",
                         "4_MAN_ATK_2","4_MAN_ATK_3","4_MAN_ATTACK_1","WAIT(FIXED)",
                         "START_MAGIC_ANIM","WPN_SWING_UNDER","WPN_RAISED","90",
                         "KILL_HIT_ANIM","RIGHT_DASH_ATTACK","64","OBJ_ANIM_WEIGHT",
                         "Can Collapse","FLEE_RESET","4_MAN_TECH_REVOKE"],

 "4-MAN_ATTACK_ASSIST"=> ["4_MAN_TECH_GRANT"],

 "THROW_WEAPON"       => ["BEFORE_MOVE","WPN_SWING_V","062-Swing01","WAIT(FIXED)",
                         "START_WEAPON_THROW","12","OBJ_ANIM_WEAPON","Can Collapse",
                         "END_WEAPON_THROW","COORD_RESET"],

 "MULTI_SHOCK"        => ["JUMP_TO","JUMP_STOP","Process Skill",
                         "REAL_TARGET","WPN_SWING_V","IMPACT_1","8",
                         "OBJ_ANIM_WEAPON","Process Skill End","Can Collapse",
                         "JUMP_LAND","COORD_RESET"],

 "SHOCK_WAVE"         => ["REAL_TARGET","WPN_SWING_V","IMPACT_1","20",
                         "OBJ_ANIM_WEIGHT","Can Collapse"],

 "SKILL_90_SEQUENCE"  => ["PREV_MOVING_TARGET","OBJ_ANIM","WPN_SWING_V",
                         "16","LINK_SKILL_91","COORD_RESET"],

 "SKILL_91_SEQUENCE"  => ["FLEE_FAIL","START_MAGIC_ANIM","WPN_SWING_UNDER","WPN_RAISED",
                         "8","OBJ_ANIM","LINK_SKILL_92","COORD_RESET"],

 "CUT_IN"             => ["WAIT(FIXED)","START_MAGIC_ANIM","CUT_IN_START",
                         "75","CUT_IN_END","8","PREV_MOVING_TARGET",
                         "WPN_SWING_V","OBJ_ANIM_WEIGHT","Can Collapse",
                         "Clear image","FLEE_RESET"],

 "STOMP"              => ["JUMP_TO_TARGET","HIT_ANIM","DROP_DOWN","JUMP_AWAY",
                         "TRAMPLE","HIT_ANIM","DROP_DOWN","JUMP_AWAY",
                         "TRAMPLE","OBJ_ANIM","DROP_DOWN","JUMP_AWAY",
                         "JUMP_AWAY","Can Collapse","WAIT(FIXED)","8","FLEE_RESET"],

 "ALL_ATTACK_1"         => ["BEFORE_MOVE","WAIT(FIXED)","START_MAGIC_ANIM","WPN_SWING_UNDER",
                         "WPN_RAISED","STAND_CAST","WPN_SWING_V","48",
                         "OBJ_ANIM_WEIGHT","Can Collapse","COORD_RESET"],

 "TRANSFORM_CAT"        => ["JUMP_TO","WAIT(FIXED)","START_MAGIC_ANIM","32",
                         "TRANSFORM_CAT","WAIT(FIXED)","CATFORM_GRANT","32","JUMP_AWAY"],                     

 "THROW_FRIEND"      => ["ALLY_TO_THROW","MOVING_TARGET","LIFT_ALLY","4",
                         "062-Swing01","THROW_TARGET","ALLY_FLING",
                         "THROW_ALLY","WAIT(FIXED)","OBJ_ANIM","COORD_RESET",
                         "WAIT(FIXED)","32"],



#------------------------------------------------------------------------------- 
 "End"              => ["End"]}
end
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  Actor Basic Action Settings
#==============================================================================
class Game_Actor < Game_Battler
 #--------------------------------------------------------------------------
 # ● Actor Unarmed Attack Animation Sequence
 #-------------------------------------------------------------------------- 
 # when 1 <- Actor ID number
 #   return "NORMAL_ATTACK" <- Corresponding action sequence name.
 def non_weapon
   case @actor_id
   when 1 # Actor ID
     return "NORMAL_ATTACK"
   end
   # Default action sequence for all unassigned Actor IDs.
   return "NORMAL_ATTACK"
 end
 #--------------------------------------------------------------------------
 # ● Actor Wait/Idle Animation
 #-------------------------------------------------------------------------- 
 def normal
   case @actor_id
   when 1
     return "WAIT"
   end
   # Default action sequence for all unassigned Actor IDs.
   return "WAIT"
 end
 #--------------------------------------------------------------------------
 # ● Actor Critical (1/4th HP) Animation
 #-------------------------------------------------------------------------- 
 def pinch
   case @actor_id
   when 1
     return "WAIT-CRITICAL"
   end
   # Default action sequence for all unassigned Actor IDs.
   return "WAIT-CRITICAL"
 end
 #--------------------------------------------------------------------------
 # ● Actor Guarding Animation
 #-------------------------------------------------------------------------- 
 def defence
   case @actor_id
   when 1
     return "GUARD_ATTACK"
   end
   # Default action sequence for all unassigned Actor IDs.
   return "GUARD_ATTACK"
 end
 #--------------------------------------------------------------------------
 # ● Actor Damage Taken Animation
 #-------------------------------------------------------------------------- 
 def damage_hit
   case @actor_id
   when 1
     return "DAMAGE"
   end
   # Default action sequence for all unassigned Actor IDs.
   return "DAMAGE"
 end  
 #--------------------------------------------------------------------------
 # ● Actor Evasion Animation
 #-------------------------------------------------------------------------- 
 def evasion
   case @actor_id
   when 1
     return "EVADE_ATTACK"
   end
   # Default action sequence for all unassigned Actor IDs.
   return "EVADE_ATTACK"
 end  
 #--------------------------------------------------------------------------
 # ● Actor Command Input Animation
 #-------------------------------------------------------------------------- 
 def command_b
   case @actor_id
   when 1
     return "COMMAND_INPUT"
   end
   # Default action sequence for all unassigned Actor IDs.
   return "COMMAND_INPUT"
 end
 #--------------------------------------------------------------------------
 # ● Actor Command Selected Animation
 #-------------------------------------------------------------------------- 
 def command_a
   case @actor_id
   when 1
     return "COMMAND_SELECT"
   end
   # Default action sequence for all unassigned Actor IDs.
   return "COMMAND_SELECT"
 end
 #--------------------------------------------------------------------------
 # ● Actor Flee Success Animation
 #-------------------------------------------------------------------------- 
 def run_success
   case @actor_id
   when 1
     return "FLEE"
   end
   # Default action sequence for all unassigned Actor IDs.
   return "FLEE"
 end
 #--------------------------------------------------------------------------
 # ● Actor Flee Failure Animation
 #-------------------------------------------------------------------------- 
 def run_ng
   case @actor_id
   when 1
     return "FLEE_FAIL"
   end
   # Default action sequence for all unassigned Actor IDs.
   return "FLEE_FAIL"
 end
 #--------------------------------------------------------------------------
 # ● Actor Victory Animation
 #-------------------------------------------------------------------------- 
 def win
   case @actor_id
   when 1
     return "VICTORY"
   end
   # Default action sequence for all unassigned Actor IDs.
   return "VICTORY"
 end
 #--------------------------------------------------------------------------
 # ● Actor Battle Start Animation
 #--------------------------------------------------------------------------  
 def first_action
   case @actor_id
   when 1
     return "BATTLE_START"
   end
   # Default action sequence for all unassigned Actor IDs.
   return "BATTLE_START"
 end
 #--------------------------------------------------------------------------
 # ● Actor Return Action when actions are interuptted/canceled
 #--------------------------------------------------------------------------  
 def recover_action
   case @actor_id
   when 1
     return "RESET_POSITION"
   end
  # Default action sequence for all unassigned Actor IDs.
   return "RESET_POSITION"
 end
 #--------------------------------------------------------------------------
 # ● Actor Shadow
 #-------------------------------------------------------------------------- 
 # return "shadow01" <- Image file name in .Graphics\Characters
 # return "" <- No shadow used.
 def shadow
   case @actor_id
   when 1
     return "shadow00"
   end
   # Default shadow for all unassigned Actor IDs.
   return "shadow00"
 end 
 #--------------------------------------------------------------------------
 # ● Actor Shadow Adjustment
 #-------------------------------------------------------------------------- 
 # return [ X-Coordinate, Y-Coordinate] 
 def shadow_plus
   case @actor_id
   when 1
     return [ 0, 4]
   end
   # Default shadow positioning for all unassigned Actor IDs.
   return [ 0, 4]
 end
end
#==============================================================================
# ■ Game_Enemy
#------------------------------------------------------------------------------
#  Enemy Basic Action Settings
#==============================================================================
class Game_Enemy < Game_Battler
 #--------------------------------------------------------------------------
 # ● Enemy Unarmed Attack Animation Sequence
 #--------------------------------------------------------------------------
 # when 1 <- EnemyID#
 #   return "ENEMY_UNARMED_ATK" <- Corresponding action sequence name.
 def base_action
   case @enemy_id
   when 1
     return "ENEMY_UNARMED_ATK"
   end
   # Default action sequence for all unassigned Enemy IDs.
   return "ENEMY_UNARMED_ATK"
 end 
 #--------------------------------------------------------------------------
 # ● Enemy Wait/Idle Animation
 #-------------------------------------------------------------------------- 
 def normal
   case @enemy_id
   when 1
     return "WAIT"
   end
   # Default action sequence for all unassigned Enemy IDs.
   return "WAIT"
 end
 #--------------------------------------------------------------------------
 # ● Enemy Critical (1/4th HP) Animation
 #-------------------------------------------------------------------------- 
 def pinch
   case @enemy_id
   when 1
     return "WAIT"
   end
   # Default action sequence for all unassigned Enemy IDs.
   return "WAIT"
 end
 #--------------------------------------------------------------------------
 # ● Enemy Guarding Animation
 #--------------------------------------------------------------------------  
 def defence
   case @enemy_id
   when 1
     return "GUARD_ATTACK"
   end
   # Default action sequence for all unassigned Enemy IDs.
   return "GUARD_ATTACK"
 end
 #--------------------------------------------------------------------------
 # ● Enemy Damage Taken Animation
 #-------------------------------------------------------------------------- 
 def damage_hit
   case @enemy_id
   when 1
     return "DAMAGE"
   end
   # Default action sequence for all unassigned Enemy IDs.
   return "DAMAGE"
 end
 #--------------------------------------------------------------------------
 # ● Enemy Evasion Animation
 #-------------------------------------------------------------------------- 
 def evasion
   case @enemy_id
   when 1
     return "ENEMY_EVADE_ATTACK"
   end
   # Default action sequence for all unassigned Enemy IDs.
   return "ENEMY_EVADE_ATTACK"
 end
 #--------------------------------------------------------------------------
 # ● Enemy Flee Animation
 #-------------------------------------------------------------------------- 
 def run_success
   case @enemy_id
   when 1
     return "ENEMY_FLEE"
   end
   # Default action sequence for all unassigned Enemy IDs.
   return "ENEMY_FLEE"
 end
 #--------------------------------------------------------------------------
 # ● Enemy Battle Start Animation
 #--------------------------------------------------------------------------  
 def first_action
   case @enemy_id
   when 1
     return "BATTLE_START"
   end
   # Default action sequence for all unassigned Enemy IDs.
   return "BATTLE_START"
 end
 #--------------------------------------------------------------------------
 # ● Enemy Return Action when action is interuptted/discontinued
 #--------------------------------------------------------------------------  
 def recover_action
   case @enemy_id
   when 1
     return "RESET_POSITION"
   end
   # Default action sequence for all unassigned Enemy IDs.
   return "RESET_POSITION"
 end
 #--------------------------------------------------------------------------
 # ● Enemy Shadow
 #-------------------------------------------------------------------------- 
 # return "shadow01" <- Image file name in .Graphics\Characters
 # return "" <- No shadow used.
 def shadow
   case @enemy_id
   when 1
     return "shadow01"
   when 30
     return ""
   end
   # Default shadow for all unassigned Enemy IDs.
   return "shadow01"
 end 
 #--------------------------------------------------------------------------
 # ● Enemy Shadow Adjustment
 #-------------------------------------------------------------------------- 
 # return [ X-Coordinate, Y-Coordinate] 
 def shadow_plus
   case @enemy_id
   when 1
     return [ 0, -8]
   end
   # Default shadow positioning for all unassigned Enemy IDs.
   return [ 0, 0]
 end 
 #--------------------------------------------------------------------------
 # ● Enemy Equipped Weapon
 #-------------------------------------------------------------------------- 
 # return 0  (Unarmed/No weapon equipped.)
 # return 1  (Weapon ID number. (1~999))
 def weapon
   case @enemy_id
   when 1 # Enemy ID
     return 0 # Weapon ID
   end
   # Default weapon for all unassigned Enemy IDs.
   return 0
 end 
 #--------------------------------------------------------------------------
 # ● Enemy Screen Positioning Adjustment
 #-------------------------------------------------------------------------- 
 # return [ 0, 0]  <- [X-coordinate、Y-coordinate]
 def position_plus
   case @enemy_id
   when 1
     return [0, 0]
   end
   # Default positioning for all unassigned Enemy IDs.
   return [ 0, 0]
 end
 #--------------------------------------------------------------------------
 # ● Enemy Collapse Animation Settings
 #--------------------------------------------------------------------------
 # return 1  (Enemy sprite stays on screen after death.)
 # return 2  (Enemy disappears from the battle like normal.)
 # return 3  (Special collapse animation.) <- Good for bosses.
 def collapse_type
   case @enemy_id
   when 1
     return 2
   when 30
     return 3
   end
   # Default collapse for all unassigned Enemy IDs.
   return 2
 end
 #--------------------------------------------------------------------------
 # ● Enemy Multiple Action Settings
 #--------------------------------------------------------------------------
 # Maximum Actions, Probability, Speed Adjustment
 # return [ 2, 100, 100]
 #
 # Maximum Actions - Maximum number of actions enemy may execute in a turn.
 # Probability - % value. Chance for a successive action.
 # Speed Adjustment - % value that decreases enemy's speed after
 #                       each successive action.
 def action_time
   case @enemy_id
   when 1
     return [ 1, 100, 100]
   end
   # Default action for all unassigned Enemy IDs.
   return [ 1, 100, 100]
 end
 #--------------------------------------------------------------------------
 # ● Enemy Animated Battler Settings
 #--------------------------------------------------------------------------
 # return true - Enemy battler uses same animation frames as actors.
 # return false - Default enemy battler.
 # [settings]
 # 1.Enemy animated battler file must be in .Graphics\Characters folder.
 # 2.Enemy battler file names must match between .Graphics\Characters and
 #   .Graphics/Battlers folders.
 def anime_on
   case @enemy_id
   when 1
     return false
   end
   # Default setting for all unassigned Enemy IDs.
   return false
 end
 #--------------------------------------------------------------------------
 # ● Enemy Invert Settings
 #--------------------------------------------------------------------------
 # return false  <- Normal
 # return true   <- Inverts enemy image
 def action_mirror
   case @enemy_id
   when 1
     return false
   end
   # Default setting for all unassigned Enemy IDs.
   return false
 end
end

#==============================================================================
# ■ module RPG
#------------------------------------------------------------------------------
#  State Action Settings
#==============================================================================
class RPG::State
#--------------------------------------------------------------------------
# ● State Affliction Wait Animation Settings
#-------------------------------------------------------------------------- 
# when 1  <- State ID number
#   return "DEAD"  <- Action sequence when afflicted by specified state.
 def base_action
   case @id
   when 1  # Incapacitated(HP0). Has the highest priority.
     return "DEAD"
   when 2,3,4,5,7  
     return "WAIT-NORMAL"
   when 6  
     return "WAIT-SLEEP"
   when 17  
     return "WAIT-FLOAT"
   end
   # Default action sequence for all unassigned State IDs.
   return "WAIT"
 end
#--------------------------------------------------------------------------
# ● State Enhancement Extension Settings
#--------------------------------------------------------------------------
# Note about REFLECT and NULL states:
#      An item/skill is considered physical if "Physical Attack" is 
#      checked under "Options" in your Database.  Otherwise, it is magical.
#
# "AUTOLIFE/50"      - Automatically revives when Incapacitated.
#                      Value after "/" is % of MAXHP restored when revived.
# "MAGREFLECT/39"    - Reflects magical skills to the original caster.
#                      Value after "/" is Animation ID when triggered.
# "MAGNULL/39"       - Nullify magical skills and effects.
#                      Value after "/" is Animation ID when triggered.
# "PHYREFLECT/39"    - Reflects physical skills to the original caster.
#                      Value after "/" is Animation ID when triggered.
# "PHYNULL/39"       - Nullify physical skills and effects.
#                      Value after "/" is Animation ID when triggered.
# "COSTABSORB"       - Absorbs the MP (or HP) cost of an incoming skill when
#                      affected.  This will not appear as POP Damage.  This 
#                      function is similar to Celes' "Runic" from FF6.
# "ZEROTURNLIFT"     - State is lifted at the end of turn regardless.
# "EXCEPTENEMY"      - Enemies will not use animation sequence assigned 
#                      under State Affliction Wait Animation Settings when
#                      afflicted. (Actors still will.)
# "NOPOP"            - State name will not appear as POP Damage.
# "HIDEICON"         - State icon will not appear in the BattleStatus Window.
# "NOSTATEANIME"     - State's caster and enemies will not use animation 
#                      sequence assigned under State Affliction Wait Animation 
#                      Settings when afflicted.
# "SLIPDAMAGE"       - Apply slip damage.  Assign values under Slip Damage Settings.
# "REGENERATION"     - Apply regeneration.  Assign values under Slip Damage Settings.
# "NONE"             - No extension. Used as a default.
 def extension
   case @id
   when 1  # Incapacitated State.  Has highest priority.
     return ["NOPOP","EXCEPTENEMY"]
   when 2  # Poison
     return ["SLIPDAMAGE"]
   when 18 # 2-Man Tech
     return ["ZEROTURNLIFT","HIDEICON"]
   when 19 # 4-Man Tech
     return ["ZEROTURNLIFT","HIDEICON"]
   when 20 # Cat Transformation
     return ["HIDEICON","NOSTATEANIME"]
   end
   # Default extension for unassigned State IDs.
   return ["NONE"]
 end
#--------------------------------------------------------------------------
# ● Slip Damage Settings
#--------------------------------------------------------------------------
# Also includes regeneration options.
#
# when 1 <- State ID. Slip Damage only applies if "SLIPDAMAGE" is assigned above.
#      Multiple settings may be applied. Ex)[["hp",0,5,true],["mp",0,5,true]]
#                           
#        Type, Constant, %, POP?, Allow Death
# return [["hp",    0,  10, true,  true]]
#
# Type       – "hp" or "mp".
# Constant   – Set a constant value to apply each turn. 
#              Positive values are damage.  Negative values are recovery. 
# %          - Set a percentage value to apply each turn based on MAX HP/MP. 
#              Positive values are damage. Negative values are recovery.
# POP?       - Determines whether or not you want slip damage value to 
#              appear as POP Damage.
# Allow Death - true: Slip damage can kill.
#               false: Slip damage will not kill. (Battler will be left at 1 HP)
 def slip_extension
   case @id
   when 2  # Poison
     return [["hp", 0, 10, true, true]]
   end
   return []
 end
end 
#==============================================================================
# ■ module RPG
#------------------------------------------------------------------------------
#  Weapon Action Settings
#==============================================================================
class RPG::Weapon
#--------------------------------------------------------------------------
# ● Weapon Animation Sequence Settings
#-------------------------------------------------------------------------- 
# Assigns a specific animation sequence when using a weapon.
#
# when 1 <- Weapon ID number
# return "NORMAL_ATTACK" <- Action sequence for assigned Weapon ID.
 def base_action
   case @id
   when 1
     return "NORMAL_ATTACK"
   end
   # Default action sequence for unassigned Weapon IDs.
   return "NORMAL_ATTACK"
 end
#--------------------------------------------------------------------------
# ● Weapon Graphic Assignment Settings
#--------------------------------------------------------------------------
# Allows use of a seperate weapon graphic besides the one assigned 
# from Iconset.png
#
# return "001-Weapon01" <- Weapon image file name.  If "", none is used. 
#                          File must be in the .Graphics\Characters folder 
#                          of your project.
 def graphic
   case @id
   when 1
     return ""
   end
   # Default weapon graphic for unassigned Weapon IDs.
   return ""
 end
#--------------------------------------------------------------------------
# ● Throwing Weapon Graphic Settings
#--------------------------------------------------------------------------
# Allows use of a seperate throwing weapon graphic besides the one assigned
# from Iconset.png.  This is useful for arrows when you don't want the bow
# to be thrown.
#
# return "001-Weapon01" <- Weapon image file name.  If "", none is used. 
#                          File must be in the .Graphics\Characters folder 
#                          of your project.
 def flying_graphic
   case @id
   when 1
     return ""
   end
   # Default throwing weapon graphic for unassigned Weapon IDs.
   return ""
 end
end  
#==============================================================================
# ■ module RPG
#------------------------------------------------------------------------------
#  Skill Action Settings
#==============================================================================
class RPG::Skill
#--------------------------------------------------------------------------
# ● Skill ID Sequence Assignments
#-------------------------------------------------------------------------- 
# Assign a skill ID from the Database to execute a defined action sequence.
# Only action sequence names can be assigned.  Single-action names cannot 
# be directly assigned here.
 def base_action
   case @id
   when 84
     return "THROW_WEAPON"
   when 85
     return "MULTI_ATTACK"
   when 86
     return "RAPID_MULTI_ATTACK"  
   when 87
     return "MULTI_SHOCK"  
   when 88
     return "SHOCK_WAVE" 
   when 89
     return "MULTI_ATTACK_RAND"  
   when 90
     return "SKILL_90_SEQUENCE"  
   when 91
     return "SKILL_91_SEQUENCE"  
   when 92
     return "NORMAL_ATTACK"  
   when 93
     return "CUT_IN"  
   when 94
     return "STOMP"
   when 95
     return "ALL_ATTACK_1"
   when 96
     return "SKILL_ALL"
   when 97 
     return "TRANSFORM_CAT"
   when 98
     return "2-MAN_ATTACK"
   when 99
     return "2-MAN_ATTACK_ASSIST"
   when 100
     return "4-MAN_ATTACK"
   when 101
     return "4-MAN_ATTACK_ASSIST"
   when 102
     return "4-MAN_ATTACK_ASSIST"
   when 103
     return "4-MAN_ATTACK_ASSIST"
   when 104
     return "THROW_FRIEND"
   end
   # Default action sequence for unassigned Skill IDs.
   return "NORMAL_ATTACK" if self.atk_f > 0
   return "SKILL_USE"
 end
#--------------------------------------------------------------------------
# ● Skill Enhancement Extension Settings
#--------------------------------------------------------------------------
# Multiple extensions may be applied to a skill ID.
# If "CONSUMEHP" is applied along with any other extensions that deal with
# MP in a forumla, it will be HP instead. 
# This script WILL have compatibility issues with KGC_MPCostAlter.
#
# "NOEVADE"          -Cannot be evaded regardless.
# "CONSUMEHP"        -Consumes HP instead of MP.
# "%COSTMAX"         -Consumes % of MAXMP.  Example: Actor MAXMP500, 
#                     10 set in Database, MP50 cost.
# "%COSTNOW"         -Consumes % of current MP.
# "IGNOREREFLECT"    -Ignores damage reflection states.
# "%DAMAGEMAX/30"    -Changes damage formula of skill to:
#                     damage = ENEMY MAX HP * [integer] / 100
#                     [integer] is the number you apply after "/".
# "%DAMAGENOW/30"    -Changes damage formula of skill to:
#                     damage = ENEMY CURRENT HP * [integer] / 100
#                     [integer] is the number you apply after "/".
# "COSTPOWER"        -Changes damage formula of skill to:
#                     damage = base damage * cost / MAX MP
#                     The more the skill costs, the more damage it will do.
# "HPNOWPOWER"       -Changes damage formula of skill to:
#                     damage = base damage * CURRENT HP / MAX HP
#                     The less current HP you have, the less damage.
# "MPNOWPOWER"       -Changes damage formula of skill to:
#                     damage = base damage * CURRENT MP / MAX MP
#                     The less current MP you have, the less damage.
# "NOHALFMPCOST"     -"Half MP Cost" from armor options will not apply.
# "HELPHIDE"         -Help window when casting will not appear.
# "TARGETALL"        -Will affect all enemies and allies simultaneously.
# "RANDOMTARGET"     -Target is chosen at random.
# "OTHERS"           -Skill will not affect caster.
# "NOOVERKILL"       -Damage will not be applied after the target reaches zero HP.
# "NOFLASH"          -Battler will not flash when taking action.
# "FAST"             -Battler will be the first to take action in the turn
# "SLOW"             -Battler will be the last to take action in the turn
# "SPDAMAGE"         -Damage is dealt to the target's SP instead of HP.
# "%DMGABSORB/50"    -Part of the damage is converted into HP/SP to the user
#                      of the skill. Recovered % is the number after "/".
# "NONE"             -No extension. Used as a default.
 def extension
   case @id
   when 86
     return ["NOOVERKILL"]
   when 89
     return ["RANDOMTARGET"]
   when 94
     return ["NOOVERKILL"]
   when 96
     return ["TARGETALL"]
   when 98
     return ["NOOVERKILL"]
   when 99
     return ["HELPHIDE","NOFLASH","FAST"]
   when 100
     return ["NOOVERKILL"]
   when 101
     return ["HELPHIDE","NOFLASH","FAST"]
   when 102
     return ["HELPHIDE","NOFLASH","FAST"]
   when 103
     return ["HELPHIDE","NOFLASH","FAST"]
   end
   # Default extensions for unassigned Skill IDs.
   return ["NONE"]
 end
#--------------------------------------------------------------------------
# ● Skill Throwing Weapon Graphic Settings
#--------------------------------------------------------------------------
# - Allows use of a seperate throwing weapon graphic besides the one assigned
#   from Iconset.png.  This section is specifically for skills.
#
# return "001-Weapon01" <- Weapon image file name.  If "", none is used. 
#                          File must be in the .Graphics\Characters folder 
#                          of your project.
 def flying_graphic
   case @id
   when 1
     return ""
   end
   # Default throwing skill graphic for unassigned Weapon IDs.
   return ""
 end
end  
#==============================================================================
# ■ module RPG 
#------------------------------------------------------------------------------
#  Item Action Settings
#==============================================================================
class RPG::Item
#--------------------------------------------------------------------------
# ● Item ID Sequence Assignment
#--------------------------------------------------------------------------  
 def base_action
   case @id
   when 1
     return "ITEM_USE"
   end
   # Default action sequence for unassigned Item IDs.
   return "ITEM_USE"
 end
#--------------------------------------------------------------------------
# ● Item Enhancement Extension Settings
#-------------------------------------------------------------------------- 
# "NOEVADE"          -Cannot be evaded regardless.
# "IGNOREREFLECT"    -Ignores damage reflection states.
# "HELPHIDE"         -Help window when casting will not appear.
# "TARGETALL"        -Will affect all enemies and allies simultaneously.
# "RANDOMTARGET"     -Target is chosen at random.
# "OTHERS"           -Item will not affect caster.
# "NOOVERKILL"       -Damage will not be applied after the target reaches zero HP.
# "NOFLASH"          -Battler will not flash when taking action.
# "FAST"             -Battler will be the first to take action in the turn
# "SLOW"             -Battler will be the last to take action in the turn
# "NONE"             -No extension. Used as a default.
 def extension
   case @id
   when 1
     return ["NONE"]
   end
   # Default extensions for unassigned Item IDs.
   return ["NONE"]
 end
end

    Classe script 
         Def initialize
                     #==============================================================================
# Sideview Battle System XP Configurations Version 2.2xp
#==============================================================================
# These configurations are exclusive for the RPG Maker XP
# These are new configuration constants used so the script can work on RMXP
# These are essential for the script to work well and smoothly
# These were separated from the previous configuration to allow you
# to use the whole configurations already settled for RMVX.
# To avoid conflicts with the script's basic configuration,
# it is recomended to place this script below the other configuration
# Some requested functions present in other script were added here
# as basic functions of the script, to avoid incompatibility.
#==============================================================================

module N01

 # Character Animation Repeat
 NEW_PATTERN_REPEAT = true
 # true = XP style, the frames will follow this sequence: 1, 2, 3, 4, 1, 2, 3...
 # false = VX style, the frames will follow this sequence: 1, 2, 3, 2, 1, 2, 3...  

 # Choose the Damage Alogarithm
 DAMAGE_ALGORITHM_TYPE = 0
 # 0 = Default XP Style, no changes
 # 1 = Default XP Modified, def/mdef reduces damage in % ( 10 def = 1% )
 # 2 = Default VX, Vitality replaces Dexterity, the status Attack, P.Def and
 #     M.Def are totally ignored. (Edit the menus script to remove these status)
 # 3 = Customized, an mix of XP e VX alogarithm, Vitality replaces Dexterity

 # Names of the status Evasion and Vitality (Vitality is only used if 
 # DAMAGE_ALGORITHM_TYPE > 1
 STAT_EVA = "Esvasion"
 STAT_VIT = "Vitality"

 # Define here the character's attack power when unarmed.
 UNARMED_ATTACK = 10

 # Define here the character's attack animation when unarmed.
 UNARMED_ANIM = 4

 # No animated battler, remaining the same way as the enemies.
 # Only let it as true if you want a battle system with completely not animated
 # allies.
 NO_ANIM_BATTLER = false

 # Show status effects balloons on the battles?
 BALLOON_ANIM  = true

 # Show effects' animations on the battles?
 STATE_ANIM = true

 # EXP division by the number of members on party
 EXP_SHARE = true

 # Cursor position on the target
 # 0 = customizable
 # 1 = below the target
 # 2 = above the target (adjusts self to the target's height)
 CURSOR_TYPE = 2

 # Readjust the cursor's position.
 CURSOR_POSITION = [ 0,  0]

 # Command Window Position
 COMMAND_WINDOW_POSITION = [0, 160]

 # Show Battler Name window?
 BATTLER_NAME_WINDOW = false

 # Effects' icons configuration
 # Icons must have the same name of effect plus "_st"
 # Ex.: Status Venom, must have an icon named "Venom_st"
 Icon_max = 5   # Maximum amount of showed icons
 Icon_X   = 24  # X size of the icon (width)
 Icon_Y   = 24  # Y size of the icon (height)
 X_Adjust = 0   # Readjustment of the X position
 Y_Adjust = 0   # Readjustment of the Y position

 # State Cycle times
 STATE_CYCLE_TIME = 4

 # Damage Exhibition configuration
 #                Red Green Blue
 HP_DMG_COLOR  = [255, 255, 255] # HP damage color
 HP_REC_COLOR  = [176, 255, 144] # HP cure color
 SP_DMG_COLOR  = [144,  96, 255] # SP damage color
 SP_REC_COLOR  = [255, 144, 255] # SP cure color
 CRT_DMG_COLOR = [255, 144,  96] # Critical damage color
 CRT_TXT_COLOR = [255,  96,   0] # Critical damage text color
 DAMAGE_FONT   = "Arial Black"   # Damage exhibition font
 DMG_F_SIZE    = 32     # Size of the damage exhibition font
 DMG_DURATION  = 40     # Duration, in frames, that the damage stays on screen      
 CRITIC_TEXT   = true   # Show text when critical damage is delt?
 CRITIC_FLASH  = false  # Flash effect when critical damage is dealt?
 MULTI_POP     = false  # Style in which the damage is shown true = normal / false = FF styled
 POP_MOVE      = false  # Moviment for damage exhibition?
 DMG_SPACE     = 12     # Space between the damage digits
 DMG_X_MOVE    = 2      # X movement of the damage (only if POP_MOVE = true)
 DMG_Y_MOVE    = 6      # Y movement of the damage
 DMG_GRAVITY   = 0.98   # Gravity effect, affects on the heeight the damage "jumps"

 # Configurations of the Battle Window
 STATUS_OPACITY  = 160  # Opacity of the Battle Window
 MENU_OPACITY    = 160  # Opacity of the Item/Skills window
 HELP_OPACITY    = 160  # Opacity of the Help Window
 COMMAND_OPACITY = 160  # Opacity of the Commands Window
 HIDE_WINDOW     = true # Hide status window when selecting items/skills?

 # Name of the sound file used when a dodge occurs.
 # This file must be on the Audio/SE folder of your project
 EVASION_EFFECT = "015-Jump01"

 # Message shown when a flee attempt succeeds
 ESCAPE_SUCCESS = "Escaped"

 # Message shown when a flee attempt fails
 ESCAPE_FAIL = "Failed!"

 # Allow Ambushes to occur?
 BACK_ATTACK = true

 # Define here the Ambush occurance rate
 BACK_ATTACK_RATE = 10

 # Define the message shown when an Ambush occurs
 BACK_ATTACK_ALERT = "Ambushed!"

 # Invert the character's position when an ambush occurs?
 BACK_ATTACK_MIRROR = true

 # Invert the battle background when an Ambush occurs?
 BACK_ATTACK_BATTLE_BACK_MIRROR = true

 # Here you can configurate the system (itens, skills, switchs) to protect 
 # the character from Ambushes. The item must be equiped, the skill must be
 # learned, and switches must be ON so the Ambush protection works. 
 # Only one of the 3 need to match the requirements to work.
 # In other words, the item can be equiped, but the skill not learned and the
 # switch OFF for the item's effect to take place.
 # For one item/skill/switch only: = [1]
 # For multiple: = [1,2]

 # Weapons' ID's
 NON_BACK_ATTACK_WEAPONS = []
 # Shields' ID's
 NON_BACK_ATTACK_ARMOR1 = []
 # Helmets' ID's
 NON_BACK_ATTACK_ARMOR2 = []
 # Armors' ID's
 NON_BACK_ATTACK_ARMOR3 = []
 # Accesories' ID's
 NON_BACK_ATTACK_ARMOR4 = []
 # Skills' ID's
 NON_BACK_ATTACK_SKILLS = []
 # Number of the Switch - when ON, the chance for Ambushes is zero
 NO_BACK_ATTACK_SWITCH = []
 # Number of the Switch - when ON, the chance for Ambushes is 100%
 BACK_ATTACK_SWITCH = []

 # Allow Preemptive Attacks to occur?
 PREEMPTIVE =  true

 # Define here the occurance rate of Preemptive Attacks
 PREEMPTIVE_RATE = 10

 # Define here the message shown when a Preemptive Attack occurs
 PREEMPTIVE_ALERT = "Preemptive!"

 # Here you can configurate the system (itens, skills, switchs) to increase 
 # the occurance of Preemptive Attacks. The item must be equiped, the skill must
 # be learned, and switches must be ON so the Ambush protection works. 
 # Only one of the 3 need to match the requirements to work.
 # In other words, the item can be equiped, but the skill not learned and the
 # switch OFF for the item's effect to take place.
 # For one item/skill/switch only: = [1]
 # For multiple: = [1,2]

 # Weapons' ID's
 PREEMPTIVE_WEAPONS = []
 # Shields' ID's
 PREEMPTIVE_ARMOR1 = []
 # Helmets' ID's
 PREEMPTIVE_ARMOR2 = []
 # Armors' ID's
 PREEMPTIVE_ARMOR3 = []
 # Accesories' ID's
 PREEMPTIVE_ARMOR4 = []
 # Skills' ID's
 PREEMPTIVE_SKILLS = []
 # Number of the Switch - when ON, the chance for Preemptive Attacks is zero
 NO_PREEMPTIVE_SWITCH = []
 # Number of the Switch - when ON, the chance for Preemptive Attacks is 100%
 PREEMPTIVE_SWITCH = []

end

#==============================================================================
# Sideview Battle System Version 2.2xp
#==============================================================================
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < RPG::Sprite
 #--------------------------------------------------------------------------
 APPEAR    = 3
 DISAPPEAR = 4
 COLLAPSE  = 5
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 def initialize(viewport, battler = nil)
   super(viewport)
   @battler = battler
   @battler_visible = false
   @effect_type = 0
   @effect_duration = 0
   @move_x = 0
   @move_y = 0
   @move_z = 0
   @distanse_x = 0
   @distanse_y = 0
   @moving_x = 0
   @moving_y = 0
   @move_speed_x = 0
   @move_speed_y = 0
   @move_speed_plus_x = 0
   @move_speed_plus_y = 0
   @move_boost_x = 0
   @move_boost_y = 0
   @jump_time = 0
   @jump_time_plus = 0
   @jump_up = 0
   @jump_down = 0
   @jump_size = 0
   @float_time = 0
   @float_up = 0
   @jump_plus = 0
   @angle = 0
   @angling = 0
   @angle_time = 0
   @angle_reset = 0
   @zoom_x = 0
   @zoom_y = 0
   @zooming_x = 0
   @zooming_y = 0
   @zoom_time = 0
   @zoom_reset = 0
   @target_battler = []
   @now_targets = []
   @pattern = 0
   @pattern_back = false
   @wait = 0
   @unloop_wait = 0
   @action = []
   @anime_kind = 0
   @anime_speed = 0
   @frame = 0
   @anime_loop = 0
   @anime_end = false
   @anime_freeze = false
   @anime_freeze_kind = false
   @anime_moving = false
   @base_width = ANIME_PATTERN
   @base_height = ANIME_KIND
   @join = false
   @width = 0 
   @height = 0
   @picture_time = 0
   @individual_targets = []
   @balloon_duration = 65
   @reverse = false
   return @battler_visible = false if @battler == nil
   @anime_flug = true if @battler.actor? && !NO_ANIM_BATTLER
   @anime_flug = true if !@battler.actor? && @battler.anime_on
   @weapon_R = Sprite_Weapon.new(viewport,@battler) if @anime_flug
   make_battler
 end
 #--------------------------------------------------------------------------
 def make_battler
   @battler.base_position
   @battler_hue = @battler.battler_hue
   if @anime_flug
     @battler_name = @battler.battler_name if !@battler.actor?
     @battler_name = @battler.character_name if @battler.actor?
     @battler_hue = @battler.character_hue if @battler.actor?
     self.mirror = true if !@battler.actor? && @battler.action_mirror
     self.mirror = false if !@battler.actor? && @battler.action_mirror and $back_attack
     self.bitmap = RPG::Cache.character(@battler_name, @battler_hue) if WALK_ANIME
     begin
       self.bitmap = RPG::Cache.character(@battler_name + "_1", @battler_hue) unless WALK_ANIME
     rescue
       self.bitmap = RPG::Cache.character(@battler_name, @battler_hue) unless WALK_ANIME
     end
     @width = self.bitmap.width / @base_width
     @height = self.bitmap.height / @base_height
     @sx = @pattern * @width
     @sy = @anime_kind * @height
     self.src_rect.set(@sx, @sy, @width, @height)
   else
     @battler_name = @battler.battler_name
     self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
     @width = bitmap.width
     @height = bitmap.height
   end
   unless @back_attack_flug 
     if self.mirror && $back_attack
       self.mirror = false
     elsif $back_attack
       self.mirror = true
     end
     @back_attack_flug = true
   end
   @battler.reset_coordinate
   self.ox = @width / 2
   self.oy = @height * 2 / 3
   update_move
   @move_anime = Sprite_MoveAnime.new(viewport,battler)
   @picture = Sprite.new
   make_shadow if SHADOW
 end
 #--------------------------------------------------------------------------
 def update_battler_graphic
   return if @graphic_change or !WALK_ANIME or @anime_freeze or @battler.dead?
   if @battler.actor? and @anime_flug
     @battler.base_position
     @battler_name = @battler.character_name if @battler.actor?
     @battler_hue = @battler.character_hue if @battler.actor?
     self.bitmap = RPG::Cache.character(@battler_name, @battler_hue)if WALK_ANIME
     begin
       self.bitmap = RPG::Cache.character(@battler_name + "_1", @battler_hue) unless WALK_ANIME
     rescue
       self.bitmap = RPG::Cache.character(@battler_name, @battler_hue) unless WALK_ANIME
     end
     @width = self.bitmap.width / @base_width
     @height = self.bitmap.height / @base_height
     @sx = @pattern * @width
     @sy = @anime_kind * @height
     self.src_rect.set(@sx, @sy, @width, @height)
     self.ox = @width / 2
     self.oy = @height * 2 / 3
   end
   unless @back_attack_flug 
     if self.mirror && $back_attack
       self.mirror = false
     elsif $back_attack
       self.mirror = true
     end
     @back_attack_flug = true
   end
 end
 #--------------------------------------------------------------------------
 def make_shadow
   @shadow.dispose if @shadow != nil
   @battler_hue = @battler.battler_hue
   @shadow = Sprite.new(viewport)
   @shadow.z = 200
   @shadow.visible = false
   @shadow.bitmap = RPG::Cache.character(@battler.shadow, @battler_hue)
   @shadow_height = @shadow.bitmap.height
   @shadow_plus_x = @battler.shadow_plus[0] - @width / 2
   @shadow_plus_y = @battler.shadow_plus[1]
   @shadow.zoom_x = @width * 1.0 / @shadow.bitmap.width
   update_shadow
   @skip_shadow = true
 end
 #--------------------------------------------------------------------------
 def dispose
   self.bitmap.dispose if self.bitmap != nil
   @weapon_R.dispose if @weapon_R != nil
   @move_anime.dispose if @move_anime != nil
   @picture.dispose if @picture != nil
   @shadow.dispose if @shadow != nil
   @balloon.dispose if @balloon != nil
   mirage_off
   super
 end  
 #--------------------------------------------------------------------------
 def damage_action(action)
   if action[0] == "absorb"
     action[0] = nil
     now_hp = @battler.hp
     now_sp = @battler.sp
     @battler.hp += action[3] if action[2] == "hp"
     @battler.sp += action[3] if action[2] == "sp"
     @battler.damage = now_hp - @battler.hp if action[2] == "hp"
     @battler.damage = now_sp - @battler.sp if action[2] == "sp"
     @battler.sp_damage = true if @battler.damage != 0 && action[2] == "sp"
     action[2] = false
   end
   unless @battler.evaded or @battler.missed or action[0] == nil
     @battler.animation_id = action[0]
     @battler.animation_hit = true
     @battler.anime_mirror = action[1]
   end
   dmg = @battler.damage
   dmg = 0 unless dmg.is_a?(Numeric)
   start_action(@battler.damage_hit) if dmg > 0 && action[2]
   if @battler.evaded or @battler.missed
     start_action(@battler.evasion) if action[2]
     Audio.se_play("Audio/SE/" + EVASION_EFFECT) if action[2]
   end
   damage_pop
 end
 #--------------------------------------------------------------------------
 def damage_pop
   damage(@battler.damage, @battler.critical, @battler.sp_damage)
   @battler.damage = nil
   @battler.sp_damage = false
   @battler.critical = false
   @battler.damage_pop = false
 end  
 #--------------------------------------------------------------------------
 def first_action
   action = @battler.first_action unless @battler.restriction == 4
   action = $data_states[@battler.state_id].base_action if @battler.states[0] != nil && @battler.restriction == 4
   start_action(action)
   @skip_shadow = false
 end
 #--------------------------------------------------------------------------
 def start_action(kind)
   reset
   stand_by
   @action = ACTION[kind].dup
   active = @action.shift
   @action.push("End")
   @active_action = ANIME[active]
   @wait = active.to_i if @active_action == nil
   action
 end
 #--------------------------------------------------------------------------
 def start_one_action(kind,back)
   reset
   stand_by
   @action = [back]
   @action.push("End")
   @active_action = ANIME[kind]
   action
 end
 #--------------------------------------------------------------------------
 def next_action
   return @wait -= 1 if @wait > 0
   return if @anime_end == false
   return @unloop_wait -= 1 if @unloop_wait > 0
   active = @action.shift
   @active_action = ANIME[active]
   @wait = active.to_i if @active_action == nil
   action
 end
 #--------------------------------------------------------------------------
 def stand_by
   @repeat_action = @battler.normal
   @repeat_action = @battler.pinch if @battler.hp <= @battler.maxhp / 4
   @repeat_action = @battler.defence if @battler.guarding?
   unless @battler.state_id == nil
     for state in @battler.battler_states.reverse
       next if state.extension.include?("NOSTATEANIME")
       next if @battler.is_a?(Game_Enemy) && state.extension.include?("EXCEPTENEMY")
       @repeat_action = state.base_action
     end 
   end
 end 
 #--------------------------------------------------------------------------
 def push_stand_by
   action = @battler.normal
   action = @battler.pinch if @battler.hp <= @battler.maxhp / 4
   action = @battler.defence if @battler.guarding?
   for state in @battler.battler_states.reverse
     next if state.extension.include?("NOSTATEANIME")
     next if @battler.is_a?(Game_Enemy) && state.extension.include?("EXCEPTENEMY")
     action = state.base_action
   end
   @repeat_action = action
   @action.delete("End")
   act = ACTION[action].dup
   for i in 0...act.size
     @action.push(act[i])
   end  
   @action.push("End")
   @anime_end = true
   @angle = self.angle = 0
 end
 #--------------------------------------------------------------------------
 def reset
   self.zoom_x = self.zoom_y = 1
   self.oy = @height * 2 / 3
   @angle = self.angle = 0
   @anime_end = true
   @non_repeat = false
   @anime_freeze = false
   @unloop_wait = 0
 end  
 #--------------------------------------------------------------------------
 def jump_reset
   @battler.jump = @jump_time = @jump_time_plus = @jump_up = @jump_down = 0 
   @jump_size = @jump_plus = @float_time = @float_up = 0 
 end
 #--------------------------------------------------------------------------
 def get_target(target)
   return if @battler.individual
   @target_battler = target
 end
 #--------------------------------------------------------------------------
 def send_action(action)
   @battler.play = 0
   @battler.play = action if @battler.active
 end
 #--------------------------------------------------------------------------
 def battler_join
   if @battler.exist? && !@battler_visible
     return if !@battler.exist? and @battler.is_a?(Game_Enemy)
     if @battler.revival && @anime_flug
       return @battler.revival = false 
     elsif @battler.revival && !@anime_flug
       @battler.revival = false
       return self.visible = true
     end  
     @anime_flug = true if @battler.actor? && !NO_ANIM_BATTLER
     @anime_flug = true if !@battler.actor? && @battler.anime_on
     make_battler 
     first_action if !@battler.actor? 
   end
   first_action if @battler.actor? and !@battler_visible
 end
 #--------------------------------------------------------------------------
 def update
   super
   return self.bitmap = nil && loop_animation(nil) if @battler == nil
   battler_join
   next_action
   update_battler_graphic
   update_anime_pattern
   update_target
   update_force_action
   update_move
   update_shadow if @shadow != nil
   @weapon_R.update if @weapon_action
   update_float if @float_time > 0
   update_angle if @angle_time > 0
   update_zoom if @zoom_time > 0
   update_mirage if @mirage_flug
   update_picture if @picture_time > 0
   update_move_anime if @anime_moving
   update_balloon if @balloon_duration <= 64
   damage_pop if @battler.damage_pop
   setup_new_effect
   update_effect
   update_battler_bitmap
 end
 #--------------------------------------------------------------------------
 def update_anime_pattern
   return @frame -= 1 if @frame != 0
   @weapon_R.action if @weapon_action && @weapon_R != nil
   if NEW_PATTERN_REPEAT
     if @pattern_back
       if @anime_loop == 0
         if @reverse
           @pattern -= 1
           @pattern = (@pattern < 0 ? @base_width - 1 : @pattern)
           if @pattern == -1
             @pattern_back = false 
             @anime_end = true
           end  
         else
           @pattern += 1
           @pattern = (@pattern > @base_width - 1 ? 0 : @pattern)
           if @pattern == @base_width
             @pattern_back = false 
             @anime_end = true
           end
         end
       else
         @anime_end = true
         if @anime_loop == 1
           @pattern = 0 if !@reverse
           @pattern = @base_width - 1 if @reverse
           @pattern_back = false
         end  
       end
     else
       if @reverse
         @pattern -= 1
         @pattern = (@pattern < 0 ? @base_width - 1 : @pattern)
         @pattern_back = true if @pattern == 0
       else
         @pattern += 1
         @pattern = (@pattern > @base_width - 1 ? 0 : @pattern)
         @pattern_back = true if @pattern == @base_width - 1
       end 
     end
   else
     if @pattern_back
       if @anime_loop == 0
         if @reverse
           @pattern += 1
           if @pattern == @base_width - 1
             @pattern_back = false 
             @anime_end = true
           end
         else  
           @pattern -= 1
           if @pattern == 0
             @pattern_back = false 
             @anime_end = true
           end  
         end  
       else
         @anime_end = true
         if @anime_loop == 1
           @pattern = 0 if !@reverse
           @pattern = @base_width - 1 if @reverse
           @pattern_back = false
         end  
       end  
     else
       if @reverse
         @pattern -= 1
         @pattern_back = true if @pattern == 0
       else  
         @pattern += 1
         @pattern_back = true if @pattern == @base_width - 1
       end  
     end
   end
   @frame = @anime_speed
   return if @anime_freeze
   return unless @anime_flug
   @sx = @pattern * @width
   @sy = @anime_kind * @height
   self.src_rect.set(@sx, @sy, @width, @height)
 end
 #--------------------------------------------------------------------------
 def update_target
   return if @battler.force_target == 0
   return if @battler.individual
   @target_battler = @battler.force_target[1]
   @battler.force_target = 0
 end  
 #--------------------------------------------------------------------------
 def update_force_action
   action = @battler.force_action
   return if action == 0
   @battler.force_action = 0
   return if @battler.active
   return collapse_action if action[0] == "N01collapse"
   return start_one_action(action[2],action[1]) if action[0] == "SINGLE"
   start_action(action[2])
   return if action[1] == ""
   @action.delete("End")
   @action.push(action[1])
   @action.push("End")
 end   
 #--------------------------------------------------------------------------
 def update_move
   if @move_speed_plus_x > 0
     @move_x += @moving_x
     @battler.move_x = @move_x
     @move_speed_plus_x -= 1
   elsif @move_speed_x > 0
     if @move_boost_x != 0
       @moving_x += @move_boost_x
     end  
     @move_x += @moving_x
     @battler.move_x = @move_x
     @move_speed_x -= 1
   end
   if @move_speed_plus_y > 0
     @move_y += @moving_y
     @battler.move_y = @move_y
     @move_speed_plus_y -= 1
   elsif @move_speed_y > 0
     if @move_boost_y != 0
       @moving_y += @move_boost_y 
     end
     @move_y += @moving_y
     @battler.move_y = @move_y
     @move_speed_y -= 1
   end
   if @jump_up != 0
     @jump_plus += @jump_up
     @battler.jump = @jump_plus
     @jump_up = @jump_up / 2
     @jump_time -= 1
     if @jump_time == 0 or @jump_up == @jump_sign
       @jump_down = @jump_up * 2 * @jump_sign * @jump_sign2
       @jump_time_plus += @jump_time * 2
       @jump_up = 0
       return
     end  
   end
   if @jump_down != 0 
     if @jump_time_plus != 0
       @jump_time_plus -= 1
     elsif @jump_down != @jump_size
       @jump_plus += @jump_down 
       @battler.jump = @jump_plus
       @jump_down = @jump_down * 2
       if @jump_down == @jump_size
         if @jump_flug
           @jump_flug = false
         else
           @jump_plus += @jump_down 
           @battler.jump = @jump_plus
           @jump_down = @jump_size = 0
         end
       end  
     end
   end
   self.x = @battler.position_x
   self.y = @battler.position_y
   self.z = @battler.position_z
 end
 #--------------------------------------------------------------------------
 def update_shadow
   @shadow.opacity = self.opacity
   @shadow.x = self.x + @shadow_plus_x
   @shadow.y = self.y + @shadow_plus_y - @jump_plus
 end
 #--------------------------------------------------------------------------
 def update_float
   @float_time -= 1
   @jump_plus += @float_up
   @battler.jump = @jump_plus
 end   
 #--------------------------------------------------------------------------
 def update_angle
   @angle += @angling
   self.angle = @angle
   @angle_time -= 1
   return @angle = 0 if @angle_time == 0
   self.angle = 0 if @angle_reset
 end  
 #--------------------------------------------------------------------------
 def update_zoom
   @zoom_x += @zooming_x
   @zoom_y += @zooming_y
   self.zoom_x = @zoom_x
   self.zoom_y = @zoom_y
   @zoom_time -= 1
   return if @zoom_time != 0
   @zoom_x = @zoom_y = 0
   self.oy = @height 
   self.zoom_x = self.zoom_y = 1 if @zoom_reset
 end  
 #--------------------------------------------------------------------------
 def update_mirage
   mirage(@mirage0) if @mirage_count == 1
   mirage(@mirage1) if @mirage_count == 3
   mirage(@mirage2) if @mirage_count == 5
   @mirage_count += 1
   @mirage_count = 0 if @mirage_count == 6
 end
 #--------------------------------------------------------------------------
 def update_picture
   @picture_time -= 1
   @picture.x += @moving_pic_x
   @picture.y += @moving_pic_y
 end  
 #--------------------------------------------------------------------------
 def update_move_anime
   @move_anime.update
   @anime_moving = false if @move_anime.finish?
   @move_anime.action_reset if @move_anime.finish?
 end  
 #--------------------------------------------------------------------------
 def setup_new_effect
   if @battler.blink
     blink_on
   else
     blink_off
   end
   if @battler.white_flash
     whiten
     @battler.white_flash = false
   end
   effects_update
   if not @battler_visible and @battler.exist?
     @effect_type = APPEAR
     @effect_duration = 16
     @battler_visible = true
   end
   if @battler_visible and @battler.hidden
     @effect_type = DISAPPEAR
     @effect_duration = 32
     @battler_visible = false
   end
   if @battler.collapse
     @effect_type = COLLAPSE
     @effect_duration = 48
     @battler.collapse = false
     @battler_visible = false
   end
   if @battler_visible && @battler.animation_id != 0
     animation = $data_animations[@battler.animation_id]
     @battler.animation_hit = true unless @battler.evaded or @battler.missed
     animation(animation, @battler.animation_hit)
     if @active_battler.is_a?(Game_Enemy)
       if @battler.actor? and @battler.anime_mirror
         @battler.anime_mirror = false
       elsif @battler.actor? and !@battler.anime_mirror
         @battler.anime_mirror = true 
       end
     end
     animation_mirror(@battler.anime_mirror)
     @battler.animation_id = 0
     @battler.anime_mirror = false
   end
 end
 #--------------------------------------------------------------------------
 def effects_update
   if @battler.damage == nil and @battler.state_animation_id != @state_animation_id and STATE_ANIM and @battler_visible 
     @state_animation_id = @battler.state_animation_id == nil ? 0 : @battler.state_animation_id
     loop_animation($data_animations[@state_animation_id])
   end
 end
 #--------------------------------------------------------------------------
 def update_effect
   if @effect_duration > 0
     @effect_duration -= 1
     case @effect_type
     when APPEAR
       update_appear
     when DISAPPEAR
       update_disappear
     when COLLAPSE
       update_collapse
     end
   end
 end
 #--------------------------------------------------------------------------
 def update_whiten
   self.blend_type = 0
   self.color.set(255, 255, 255, 128)
   self.opacity = 255
   self.color.alpha = 128 - (16 - @effect_duration) * 10
 end
 #--------------------------------------------------------------------------
 def update_appear
   self.blend_type = 0
   self.color.set(0, 0, 0, 0)
   self.opacity = (16 - @effect_duration) * 16
 end
 #--------------------------------------------------------------------------
 def update_disappear
   self.blend_type = 0
   self.color.set(0, 0, 0, 0)
   self.opacity = 256 - (32 - @effect_duration) * 10
 end
 #--------------------------------------------------------------------------
 def update_collapse
   normal_collapse if @collapse_type == 2
   boss_collapse if @collapse_type == 3
 end
 #--------------------------------------------------------------------------
 def update_balloon
   @balloon_duration -= 1 if @balloon_duration > 0 && !@balloon_back
   @balloon_duration += 1 if @balloon_back
   if @balloon_duration == 64
     @balloon_back = false
     @balloon.visible = false
   elsif @balloon_duration == 0
     @balloon.visible = false if @balloon_loop == 0
     @balloon_back = true if @balloon_loop == 1
   end    
   @balloon.x = self.x
   @balloon.y = self.y
   @balloon.z = self.y
   @balloon.opacity = self.opacity
   sx = 7 * 32 if @balloon_duration < 12
   sx = (7 - (@balloon_duration - 12) / 8) * 32 unless @balloon_duration < 12
   @balloon.src_rect.set(sx, @balloon_id * 32, 32, 32)
   @balloon.visible = false if @battler.dead?
 end
 #--------------------------------------------------------------------------
 def update_battler_bitmap
   return if @graphic_change
   return if @battler.actor?
   if @battler.battler_name != @battler_name or @battler.battler_hue != @battler_hue
     @battler_name = @battler.battler_name
     @battler_hue = @battler.battler_hue
     make_battler
     self.opacity = 0 if @battler.dead? or @battler.hidden
   end
 end
 #--------------------------------------------------------------------------
 def action 
   return if @active_action == nil
   action = @active_action[0]
   return mirroring if action == "Invert"
   return angling if action == "angle"
   return zooming if action == "zoom"
   return mirage_on if action == "Afterimage ON"
   return mirage_off if action == "Afterimage OFF"
   return picture if action == "pic"
   return @picture.visible = false && @picture_time = 0 if action == "Clear image" 
   return graphics_change if action == "change"
   return battle_anime if action == "anime"
   return balloon_anime if action == "balloon"
   return sound if action == "sound"
   return $game_switches[@active_action[1]] = @active_action[2] if action == "switch"
   return variable if action == "variable"
   return two_swords if action == "Two Wpn Only"
   return non_two_swords if action == "One Wpn Only"
   return necessary if action == "nece"
   return derivating if action == "der"
   return individual_action if action == "Process Skill"
   return individual_action_end if action == "Process Skill End"
   return non_repeat if action == "Don't Wait"
   return @battler.change_base_position(self.x, self.y) if action == "Start Pos Change"
   return @battler.base_position if action == "Start Pos Return"
   return change_target if action == "target"
   return send_action(action) if action == "Can Collapse"
   return send_action(action) if action == "Cancel Action"
   return state_on if action == "sta+"
   return state_off if action == "sta-"
   return Graphics.frame_rate = @active_action[1] if action == "fps"
   return floating if action == "float"
   return eval(@active_action[1]) if action == "script"
   return force_action if @active_action.size == 4
   return reseting if @active_action.size == 5
   return moving if @active_action.size == 7
   return battler_anime if @active_action.size == 9
   return moving_anime if @active_action.size == 11
   return anime_finish if action == "End"
 end
 #--------------------------------------------------------------------------
 def mirroring  
   if self.mirror
     self.mirror = false
     @weapon_R.mirroring if @anime_flug
   else
     self.mirror = true
     @weapon_R.mirroring if @anime_flug
   end
 end  
 #--------------------------------------------------------------------------
 def angling  
   jump_reset
   @angle_time = @active_action[1]
   start_angle = @active_action[2]
   end_angle = @active_action[3]
   @angle_reset = @active_action[4]
   start_angle *= -1 if $back_attack
   end_angle *= -1 if $back_attack
   start_angle *= -1 if @battler.is_a?(Game_Enemy)
   end_angle *= -1 if @battler.is_a?(Game_Enemy)
   if @angle_time <= 0
     self.angle = end_angle
     return  @angle_time = 0
   end  
   @angling = (end_angle - start_angle) / @angle_time
   @angle = (end_angle - start_angle) % @angle_time + start_angle
 end
 #--------------------------------------------------------------------------
 def zooming  
   jump_reset
   @zoom_time = @active_action[1]
   zoom_x = @active_action[2] - 1
   zoom_y = @active_action[3] - 1
   @zoom_reset = @active_action[4]
   @zoom_x = @zoom_y = 1
   return @zoom_time = 0 if @zoom_time <= 0
   @zooming_x = zoom_x / @zoom_time
   @zooming_y = zoom_y / @zoom_time
 end  
 #--------------------------------------------------------------------------
 def mirage_on
   return if @battler.dead?
   @mirage0 = Sprite.new(self.viewport)
   @mirage1 = Sprite.new(self.viewport)
   @mirage2 = Sprite.new(self.viewport)
   @mirage_flug = true
   @mirage_count = 0
 end  
 #--------------------------------------------------------------------------
 def mirage(body)
   body.bitmap = self.bitmap.dup
   body.x = self.x
   body.y = self.y
   body.ox = self.ox
   body.oy = self.oy
   body.z = self.z
   body.mirror = self.mirror
   body.angle = @angle
   body.opacity = 160
   body.zoom_x = self.zoom_x
   body.zoom_y = self.zoom_y   
   body.src_rect.set(@sx, @sy, @width, @height) if @anime_flug
   body.src_rect.set(0, 0, @width, @height) unless @anime_flug
 end   
 #--------------------------------------------------------------------------
 def mirage_off
   @mirage_flug = false
   @mirage0.dispose if @mirage0 != nil
   @mirage1.dispose if @mirage1 != nil
   @mirage2.dispose if @mirage2 != nil
 end   
 #--------------------------------------------------------------------------
 def picture 
   pic_x = @active_action[1]
   pic_y = @active_action[2]
   pic_end_x = @active_action[3]
   pic_end_y = @active_action[4]
   @picture_time = @active_action[5]
   @moving_pic_x = (pic_end_x - pic_x)/ @picture_time
   @moving_pic_y = (pic_end_y - pic_y)/ @picture_time
   plus_x = (pic_end_x - pic_x)% @picture_time
   plus_y = (pic_end_y - pic_y)% @picture_time
   @picture.bitmap = RPG::Cache.picture(@active_action[7])
   @picture.x = pic_x + plus_x
   @picture.y = pic_y + plus_y
   @picture.z = 1
   @picture.z = 1900
   @picture.z = 3000 if @active_action[6]
   @picture.visible = true
 end 
 #--------------------------------------------------------------------------
 def graphics_change  
   return if @battler.is_a?(Game_Enemy)
   @battler_name = @active_action[2]
   @bitmap = RPG::Cache.character(@battler_name , @battler_hue) if WALK_ANIME
   @bitmap = RPG::Cache.character(@battler_name + "_1", @battler_hue) unless WALK_ANIME
   @width = @bitmap.width / @base_width
   @height = @bitmap.height / @base_height
   @battler.graphic_change(@active_action[2]) unless @active_action[1]
   @graphic_change = true
 end  
 #--------------------------------------------------------------------------
 def battle_anime
   return if @active_action[5] && !@battler.actor?
   return if @active_action[5] && @battler.weapons[1] == nil
   if @battler.actor?
     return if !@active_action[5] && @battler.weapons[0] == nil && @battler.weapons[1] != nil
   end
   anime_id = @active_action[1]
   if $back_attack
     mirror = true if @active_action[3] == false
     mirror = false if @active_action[3]
   end
   if anime_id < 0
     if @battler.current_action.kind == 1 && anime_id != -2
       anime_id = $data_skills[@battler.current_action.skill_id].animation2_id 
     elsif @battler.current_action.kind == 2 && anime_id != -2
       anime_id = $data_items[@battler.current_action.item_id].animation2_id
     else
       anime_id = NO_WEAPON
       if @battler.actor?
         weapon_id = @battler.weapon_id
         anime_id = UNARMED_ANIM
         anime_id = battler.weapons[0].animation2_id if battler.weapons[0] != nil
         anime_id = battler.weapons[1].animation2_id if @active_action[5]
       else
         weapon_id = @battler.weapon
         anime_id = $data_weapons[weapon_id].animation2_id if weapon_id != 0
       end
     end
     @wait = $data_animations[anime_id].frame_max if $data_animations[anime_id] != nil && @active_action[4]
     waitflug = true
     damage_action = [anime_id, mirror, true]
     return @battler.play = ["OBJ_ANIM",damage_action] if @battler.active
   end
   if @active_action[2] == 0 && $data_animations[anime_id] != nil
     @battler.animation_id = anime_id
     @battler.animation_hit = true
     @battler.anime_mirror = mirror
   elsif $data_animations[anime_id] != nil
     for target in @target_battler
       target.animation_id = anime_id
       target.anime_mirror = mirror
     end  
   end
   @wait = $data_animations[anime_id].frame_max if $data_animations[anime_id] != nil && @active_action[4] && !waitflug
 end
 #--------------------------------------------------------------------------
 def sound   
   pitch = @active_action[2] 
   vol =  @active_action[3]
   name = @active_action[4] 
   case @active_action[1]
   when "se"
     Audio.se_play("Audio/SE/" + name, vol, pitch)
   when "bgm"
     if @active_action[4] == ""
       now_bgm = RPG::BGM.last
       name = now_bgm.name
     end
     Audio.bgm_play("Audio/BGM/" + name, vol, pitch)
   when "bgs"
     if @active_action[4] == ""
       now_bgs = RPG::BGS.last
       name = now_bgs.name
     end
     Audio.bgs_play("Audio/BGS/" + name, vol, pitch)
   end
 end
 #--------------------------------------------------------------------------
 def balloon_anime
   return if self.opacity == 0
   if @balloon == nil
     @balloon = Sprite.new 
     @balloon.bitmap = RPG::Cache.picture("Balloon")
     @balloon.ox = @width / 16
     @balloon.oy = 320 / 10  + @height / 3 
   end
   @balloon_id = @active_action[1]
   @balloon_loop = @active_action[2]
   @balloon_duration = 64
   @balloon_back = false
   update_balloon
   @balloon.visible = true
   @balloon.visible = false unless BALLOON_ANIM
 end  
 #--------------------------------------------------------------------------
 def variable
   operand = @active_action[3]
   case @active_action[2]
   when 0
     $game_variables[@active_action[1]] = operand
   when 1
     $game_variables[@active_action[1]] += operand
   when 2
     $game_variables[@active_action[1]] -= operand
   when 3
     $game_variables[@active_action[1]] *= operand
   when 4
     $game_variables[@active_action[1]] /= operand
   when 5
     $game_variables[@active_action[1]] %= operand
   end
 end  
 #--------------------------------------------------------------------------
 def two_swords
   return @action.shift unless @battler.actor?
   return @action.shift if @battler.weapons[1] == nil
   active = @action.shift
   @active_action = ANIME[active]
   @wait = active.to_i if @active_action == nil
   action
 end
 #--------------------------------------------------------------------------
 def non_two_swords
   return unless @battler.actor?
   return @action.shift if @battler.weapons[1] != nil
   active = @action.shift
   @active_action = ANIME[active]
   @wait = active.to_i if @active_action == nil
   action
 end
 #--------------------------------------------------------------------------
 def necessary
   nece1 = @active_action[3]
   nece2 = @active_action[4]
   case @active_action[1]
   when 0
     target = [$game_party.actors[@battler.index]] if @battler.actor?
     target = [$game_troop.enemies[@battler.index]] if @battler.is_a?(Game_Enemy)
   when 1
     target = @target_battler
   when 2
     target = $game_troop.enemies
   when 3
     target = $game_party.actors
   end 
   return start_action(@battler.recover_action) if target.size == 0
   case @active_action[2]
   when 0
     state_on = true if nece2 > 0
     state_member = nece2.abs
     if nece2 == 0
       state_member = $game_party.actors.size if @battler.actor?
       state_member = $game_troop.enemies.size if @battler.is_a?(Game_Enemy)
     end  
     for member in target
       state_member -= 1 if member.state?(nece1)
     end
     if state_member == 0 && state_on
       return
     elsif state_member == nece2.abs
       return if state_on == nil
     end  
   when 1  
     num_over = true if nece2 > 0
     num = 0
     for member in target
       case  nece1
       when 0 
         num += member.hp
       when 1 
         num += member.mp
       when 2
         num += member.atk
       when 3 
         num += member.dex
       when 4
         num += member.agi
       when 5 
         num += member.int
       end
     end
     num = num / target.size
     if num > nece2.abs && num_over
       return
     elsif num < nece2.abs
       return if num_over == nil
     end
   when 2
     if $game_switches[nece1]
       return if nece2
     else
       return unless nece2
     end  
   when 3
     if nece2 > 0
       return if $game_variables[nece1] > nece2
     else
       return unless $game_variables[nece1] > nece2.abs
     end
   when 4
     skill_member = nece2.abs
     for member in target
       skill_member -= 1 if member.skill_learn?(nece1)
       return if skill_member == 0
     end  
   end 
   return @action = ["End"] if @non_repeat
   action = @battler.recover_action
   action = @battler.defence if @battler.guarding?
   return start_action(action)
 end  
 #--------------------------------------------------------------------------
 def derivating 
   return unless @active_action[2] && !@battler.skill_learn?(@active_action[3])
   return if rand(100) > @active_action[1]
   @battler.derivation = @active_action[3]
   @action = ["End"]
 end
 #--------------------------------------------------------------------------
 def individual_action
   @battler.individual = true
   @individual_act = @action.dup
   send_action(["Individual"])
   @individual_targets = @target_battler.dup
   @target_battler = [@individual_targets.shift]
 end
 #--------------------------------------------------------------------------
 def individual_action_end
   return @battler.individual = false if @individual_targets.size == 0
   @action = @individual_act.dup
   @target_battler = [@individual_targets.shift]
 end  
 #--------------------------------------------------------------------------
 def non_repeat
   @repeat_action = []
   @non_repeat = true
   anime_finish
 end  
 #--------------------------------------------------------------------------
 def change_target
   return @target_battler = @now_targets.dup if @active_action[2] == 3
   target = [@battler] if @active_action[2] == 0
   target = @target_battler.dup if @active_action[2] != 0
   if @active_action[2] == 2
     @now_targets = @target_battler.dup
     @target_battler = []
   end  
   if @active_action[1] >= 1000
     members = $game_party.actors if @battler.actor?
     members = $game_troop.enemies unless @battler.actor?
     index = @active_action[1] - 1000
     if index < members.size
       if members[index].exist? && @battler.index != index
         members[index].force_target = ["N01target_change", target]
         @target_battler = [members[index]] if @active_action[2] == 2
         change = true
       else
         for member in members
           next if @battler.index == member.index
           next unless member.exist?
           member.force_target = ["N01target_change", target]
           @target_battler = [member] if @active_action[2] == 2
           break change = true
         end
       end
     end
   elsif @active_action[1] > 0
     for member in $game_party.actors + $game_troop.enemies
       if member.state?(@active_action[1])
         member.force_target = ["N01target_change", target]
         @target_battler.push(member) if @active_action[2] == 2
         change = true
       end  
     end  
   elsif @active_action[1] < 0
     skill_id = @active_action[1].abs
     for actor in $game_party.actors
       if actor.skill_learn?(skill_id)
         actor.force_target = ["N01target_change", target]
         @target_battler.push(target) if @active_action[2] == 2
         change = true
       end  
     end
   else
     for member in @target_battler
       member.force_target = ["N01target_change", target]
       @target_battler.push(member) if @active_action[2] == 2
       change = true
     end
   end
   return if change
   return @action = ["End"] if @non_repeat
   return start_action(@battler.recover_action)
 end    
 #--------------------------------------------------------------------------
 def state_on
   state_id = @active_action[2]
   case @active_action[1]
   when 0
     @battler.add_state(state_id)
   when 1
     if @target_battler != nil
       for target in @target_battler
         target.add_state(state_id)
       end
     end
   when 2
     for target in $game_troop.enemies
       target.add_state(state_id)
     end
   when 3
     for target in $game_party.actors
       target.add_state(state_id)
     end
   when 4
     for target in $game_party.actors
       if target.index != @battler.index
         target.add_state(state_id)
       end  
     end
   end
   start_action(@battler.recover_action) unless @battler.movable?
 end 
 #--------------------------------------------------------------------------
 def state_off  
   state_id = @active_action[2]
   case @active_action[1]
   when 0
     @battler.remove_state(state_id)
   when 1
     if @target_battler != nil
       for target in @target_battler
         target.remove_state(state_id)
       end
     end
   when 2
     for target in $game_troop.enemies
       target.remove_state(state_id)
     end
   when 3
     for target in $game_party.actors
       target.remove_state(state_id)
     end
   when 4
     for target in $game_party.actors
       if target.index != @battler.index
         target.remove_state(state_id)
       end  
     end
   end
 end  
 #--------------------------------------------------------------------------
 def floating  
   jump_reset
   @jump_plus = @active_action[1]
   float_end = @active_action[2]
   @float_time = @active_action[3]
   @float_up = (float_end - @jump_plus)/ @float_time
   @wait = @float_time
   if @anime_flug
     move_anime = ANIME[@active_action[4]]
     if move_anime != nil
       @active_action = move_anime
       battler_anime
       @anime_end = true
     end 
   end
   @battler.jump = @jump_plus
 end      
 #--------------------------------------------------------------------------
 def force_action
   kind = @active_action[0]
   rebirth = @active_action[2]
   play = @active_action[3]
   action = [kind,rebirth,play]
   if @active_action[1] >= 1000
     members = $game_party.actors if @battler.actor?
     members = $game_troop.enemies unless @battler.actor?
     index = @active_action[1] - 1000
     if index < members.size
       if members[index].exist? && @battler.index != index
         return members[index].force_action = action
       else
         for target in members
           next if @battler.index == target.index
           next unless target.exist?
           force = true
           break target.force_action = action
         end
       end
     end
     return if force
     return @action = ["End"] if @non_repeat
     return start_action(@battler.recover_action)
   elsif @active_action[1] == 0
     for target in @target_battler
       target.force_action = action if target != nil
     end
   elsif @active_action[1] > 0
     for target in $game_party.actors + $game_troop.enemies
       target.force_action = action if target.state?(@active_action[1])
     end
   elsif @active_action[1] < 0  
     return if @battler.is_a?(Game_Enemy)
     for actor in $game_party.actors
       unless actor.id == @battler.id
         actor.force_action = action if actor.skill_id_learn?(@active_action[1].abs)
       end
     end
   end 
 end
 #--------------------------------------------------------------------------
 def reseting
   jump_reset
   self.angle = 0
   @distanse_x   = @move_x * -1
   @distanse_y   = @move_y * -1
   @move_speed_x = @active_action[1]
   @move_speed_y = @move_speed_x
   @move_boost_x = @active_action[2]
   @move_boost_y = @move_boost_x
   @jump         = @active_action[3]
   move_distance
   if @anime_flug
     move_anime = ANIME[@active_action[4]]
     if move_anime != nil 
       @active_action = move_anime
       battler_anime
     end 
     @anime_end = true
   end
 end
 #--------------------------------------------------------------------------
 def moving  
   jump_reset
   xx = @active_action[1]
   xx *= -1 if $back_attack
   case @active_action[0]
   when 0
     @distanse_x = xx
     @distanse_y = @active_action[2]
   when 1
     if @target_battler == nil
       @distanse_x = xx
       @distanse_y = @active_action[2]
     else
       target_x = 0
       target_y = 0
       time = 0
       for i in 0...@target_battler.size
         if @target_battler[i] != nil
           time += 1
           target_x += @target_battler[i].position_x
           target_y += @target_battler[i].position_y
         end  
       end 
       if time == 0
         @distanse_x = xx
         @distanse_y = @active_action[2]
       else  
         target_x = target_x / time
         target_y = target_y / time
         @distanse_y = target_y - self.y + @active_action[2]
         if @battler.actor?
           @distanse_x = target_x - self.x + xx
         else
           @distanse_x = self.x - target_x + xx
         end  
       end  
     end  
   when 2
     if @battler.actor?
       @distanse_x = xx - self.x
       @distanse_x = 640 + xx - self.x if $back_attack
     else
       @distanse_x = self.x - xx
       @distanse_x = self.x - (Graphics.width + xx) if $back_attack
     end 
     @distanse_y = @active_action[2] - self.y
   when 3
     if @battler.actor?
       @distanse_x = xx + @battler.base_position_x - self.x 
     else
       @distanse_x = xx + self.x - @battler.base_position_x
     end 
     @distanse_y = @active_action[2] + @battler.base_position_y - @battler.position_y
   end
   @move_speed_x = @active_action[3]
   @move_speed_y = @active_action[3]
   @move_boost_x = @active_action[4]
   @move_boost_y = @active_action[4]
   @jump         = @active_action[5]
   @jump_plus = 0
   move_distance
   if @anime_flug
     move_anime = ANIME[@active_action[6]]
     if move_anime != nil 
       @active_action = move_anime
       battler_anime
     end  
     @anime_end = true
   end
 end
 #--------------------------------------------------------------------------
 def move_distance
   if @move_speed_x == 0
     @moving_x = 0
     @moving_y = 0
   else  
     @moving_x = @distanse_x / @move_speed_x
     @moving_y = @distanse_y / @move_speed_y
     over_x = @distanse_x % @move_speed_x
     over_y = @distanse_y % @move_speed_y
     @move_x += over_x
     @move_y += over_y
     @battler.move_x = @move_x
     @battler.move_y = @move_y
     @distanse_x -= over_x
     @distanse_y -= over_y
   end  
   if @distanse_x == 0
     @move_speed_x = 0
   end
   if @distanse_y == 0
     @move_speed_y = 0
   end
   boost_x = @moving_x
   move_x = 0
   if @move_boost_x > 0 && @distanse_x != 0
     if @distanse_x == 0
       @move_boost_x = 0
     elsif @distanse_x < 0
       @move_boost_x *= -1
     end
     for i in 0...@move_speed_x
       boost_x += @move_boost_x
       move_x += boost_x
       over_distance = @distanse_x - move_x
       if @distanse_x > 0 && over_distance < 0
         @move_speed_x = i 
         break
       elsif @distanse_x < 0 && over_distance > 0
         @move_speed_x = i 
         break
       end 
     end
     before = over_distance + boost_x
     @move_speed_plus_x = (before / @moving_x).abs
     @move_x += before % @moving_x
     @battler.move_x = @move_x
   elsif @move_boost_x < 0 && @distanse_x != 0
     if @distanse_x == 0
       @move_boost_x = 0
     elsif @distanse_x < 0
       @move_boost_x *= -1
     end
     for i in 0...@move_speed_x
       boost_x += @move_boost_x
       move_x += boost_x
       lost_distance = @distanse_x - move_x
       before = lost_distance
       if @distanse_x > 0 && boost_x < 0
         @move_speed_x = i - 1
         before = lost_distance + boost_x
         break
       elsif @distanse_x < 0 && boost_x > 0
         @move_speed_x= i - 1
         before = lost_distance + boost_x
         break
       end
     end
     plus = before / @moving_x
     @move_speed_plus_x = plus.abs
     @move_x += before % @moving_x
     @battler.move_x = @move_x
   end
   boost_y = @moving_y
   move_y = 0
   if @move_boost_y > 0 && @distanse_y != 0
     if @distanse_y == 0
       @move_boost_y = 0
     elsif @distanse_y < 0
       @move_boost_y *= -1
     end
     for i in 0...@move_speed_y
       boost_y += @move_boost_y
       move_y += boost_y
       over_distance = @distanse_y - move_y
       if @distanse_y > 0 && over_distance < 0
         @move_speed_y = i 
         break
       elsif @distanse_y < 0 && over_distance > 0
         @move_speed_y = i 
         break
       end 
     end
     before = over_distance + boost_y
     @move_speed_plus_y = (before / @moving_y).abs
     @move_y += before % @moving_y
     @battler.move_y = @move_y
   elsif @move_boost_y < 0 && @distanse_y != 0
     if @distanse_y == 0
       @move_boost_y = 0
     elsif @distanse_y < 0
       @move_boost_y *= -1
     end
     for i in 0...@move_speed_y
       boost_y += @move_boost_y
       move_y += boost_y
       lost_distance = @distanse_y - move_y
       before = lost_distance
       if @distanse_y > 0 && boost_y < 0
         @move_speed_y = i 
         before = lost_distance + boost_y
         break
       elsif @distanse_y < 0 && boost_y > 0
         @move_speed_y = i 
         before = lost_distance + boost_y
         break
       end
     end
     plus = before / @moving_y
     @move_speed_plus_y = plus.abs
     @move_y += before % @moving_y
     @battler.move_y = @move_y
   end
   x = @move_speed_plus_x + @move_speed_x
   y = @move_speed_plus_y + @move_speed_y
   if x > y
     end_time = x
   else
     end_time = y
   end
   @wait = end_time
   if @jump != 0
     if @wait == 0
       @wait = @active_action[3]
     end  
     @jump_time = @wait / 2
     @jump_time_plus = @wait % 2
     @jump_sign = 0
     @jump_sign2 = 0
     if @jump < 0
       @jump_sign = -1
       @jump_sign2 = 1
       @jump = @jump * -1
     else
       @jump_sign = 1
       @jump_sign2 = -1
     end
     @jump_up = 2 ** @jump * @jump_sign
     if @jump_time == 0
       @jump_up = 0
     elsif @jump_time != 1
       @jump_size = @jump_up * @jump_sign * @jump_sign2
     else
       @jump_size = @jump_up * 2 * @jump_sign * @jump_sign2
       @jump_flug = true
     end  
   end
 end
 #--------------------------------------------------------------------------
 def battler_anime
   @anime_kind  = @active_action[1]
   @anime_speed = @active_action[2]
   @anime_loop  = @active_action[3]
   @unloop_wait = @active_action[4]
   @anime_end = true
   @reverse = false
   if @weapon_R != nil && @active_action[8] != ""
     weapon_kind = ANIME[@active_action[8]]
     two_swords_flug = weapon_kind[11]
     return if two_swords_flug && !@battler.actor?
     return if two_swords_flug && @battler.weapons[1] == nil && @battler.actor?
     if @battler.actor? && @battler.weapons[0] == nil && !two_swords_flug
       @weapon_R.action_reset
     elsif @battler.actor? && @battler.weapons[1] == nil && two_swords_flug
       @weapon_R.action_reset
     elsif !@battler.actor? && @battler.weapon == 0
       @weapon_R.action_reset
     else
       @weapon_R.action_reset
       if @active_action[5] != -1
         @weapon_R.freeze(@active_action[5])
       end
       @weapon_R.weapon_graphics unless two_swords_flug
       @weapon_R.weapon_graphics(true) if two_swords_flug
       @weapon_R.weapon_action(@active_action[8],@anime_loop)
       @weapon_action = true
       @weapon_R.action 
     end
   elsif @weapon_R != nil
     @weapon_R.action_reset
   end  
   @anime_end = false
   if @active_action[5] != -1 && @active_action[5] != -2
     @anime_freeze = true
     @anime_end = true
   elsif @active_action[5] == -2
     @anime_freeze = false
     @reverse = true
     @pattern = @base_width - 1
     if @weapon_action && @weapon_R != nil
       @weapon_R.action 
       @weapon_R.update
     end
   else  
     @anime_freeze = false
     @pattern = 0
     if @weapon_action && @weapon_R != nil
       @weapon_R.action 
       @weapon_R.update
     end
   end  
   @pattern_back = false
   @frame = @anime_speed
   @battler.move_z = @active_action[6]
   if @shadow != nil
     @shadow.visible = true if @active_action[7]
     @shadow.visible = false unless @active_action[7]
     @shadow.visible = false if @skip_shadow
   end
   file_name = ""
   unless @active_action[0] == 0
     file_name = "_" + @active_action[0].to_s
   end  
   return unless @anime_flug
   begin
     self.bitmap = RPG::Cache.character(@battler_name + file_name, @battler_hue)
   rescue
     self.bitmap = RPG::Cache.character(@battler_name, @battler_hue)
   end
   @sx = @pattern * @width
   @sy = @anime_kind * @height
   @sx = @active_action[5] * @width if @anime_freeze
   self.src_rect.set(@sx, @sy, @width, @height)
 end
 #--------------------------------------------------------------------------
 def moving_anime
   @move_anime.action_reset if @anime_moving
   @anime_moving = true
   mirror = false
   mirror = true if $back_attack
   id = @active_action[1]
   target = @active_action[2]
   x = y = mem = 0
   if target == 0
     if @target_battler == nil
       x = self.x
       y = self.y
     else
       if @target_battler[0] == nil
         x = self.x
         y = self.y
       else  
         x = @target_battler[0].position_x
         y = @target_battler[0].position_y
       end  
     end  
   elsif target == 1
     if @battler.actor?
       for target in $game_troop.enemies
         x += target.position_x
         y += target.position_y
         mem += 1
       end
       x = x / mem
       y = y / mem
     else
       for target in $game_party.actors
         x += target.position_x
         y += target.position_y
         mem += 1
       end
       x = x / mem
       y = y / mem
     end
   elsif target == 2
     if @battler.actor?
       for target in $game_party.actors
         x += target.position_x
         y += target.position_y
         mem += 1
       end
       x = x / mem
       y = y / mem
     else
       for target in $game_troop.enemies
         x += target.position_x
         y += target.position_y
         mem += 1
       end
       x = x / mem
       y = y / mem
     end
   else
     x = self.x
     y = self.y
   end  
   plus_x = @active_action[6]
   plus_y = @active_action[7]
   plus_x *= -1 if @battler.is_a?(Game_Enemy)
   distanse_x = x - self.x - plus_x
   distanse_y = y - self.y - plus_y
   type = @active_action[3]
   speed = @active_action[4]
   orbit = @active_action[5]
   if @active_action[8] == 0
     @move_anime.base_x = self.x + plus_x
     @move_anime.base_y = self.y + plus_y
   elsif @active_action[8] == 1 
     @move_anime.base_x = x + plus_x
     @move_anime.base_y = y + plus_y
     distanse_y = distanse_y * -1
     distanse_x = distanse_x * -1
   else 
     @move_anime.base_x = x
     @move_anime.base_y = y
     distanse_x = distanse_y = 0
   end
   if @active_action[10] == ""
     weapon = ""  
   elsif @anime_flug != true
     weapon = ""  
   else
     if @battler.actor?
       battler = $game_party.actors[@battler.index] 
       weapon_id = battler.weapon_id
     else  
       battler = $game_troop.enemies[@battler.index]
       weapon_id = battler.weapon
     end  
     weapon_act = ANIME[@active_action[10]].dup if @active_action[10] != ""
     if weapon_id != 0 && weapon_act.size == 3
       weapon_file = $data_weapons[weapon_id].flying_graphic
       if weapon_file == ""
         weapon_name = $data_weapons[weapon_id].graphic
         icon_weapon = false
         if weapon_name == ""
           weapon_name = $data_weapons[weapon_id].icon_name
           icon_weapon = true
         end  
       else
         icon_weapon = false
         weapon_name = weapon_file
       end
       weapon = @active_action[10]
     elsif weapon_act.size == 3
       weapon = ""
     elsif weapon_act != nil && $data_skills[@active_battler.current_action.skill_id] != nil
       icon_weapon = false
       weapon_name = $data_skills[@battler.current_action.skill.id].flying_graphic
       weapon = @active_action[10]
     end
   end
   @move_anime.z = 1
   @move_anime.z = 1000 if @active_action[9]
   @move_anime.anime_action(id,mirror,distanse_x,distanse_y,type,speed,orbit,weapon,weapon_name,icon_weapon)
 end  
 #--------------------------------------------------------------------------
 def anime_finish
   return individual_action_end if @individual_targets.size != 0
   send_action(@active_action[0]) if @battler.active
   mirage_off if @mirage_flug
   start_action(@repeat_action) unless @non_repeat
 end   
 #--------------------------------------------------------------------------
 def collapse_action
   @non_repeat = true
   @effect_type = COLLAPSE
   @collapse_type = @battler.collapse_type unless @battler.actor?
   @battler_visible = false unless @battler.actor?
   @effect_duration = COLLAPSE_WAIT + 32 if @collapse_type == 2
   @effect_duration = 360 if @collapse_type == 3
 end  
 #--------------------------------------------------------------------------
 def normal_collapse
   if @effect_duration == 31
     $game_system.se_play($data_system.enemy_collapse_se)
     self.blend_type = 1
     self.color.set(255, 64, 64, 255)
   end
   self.opacity = 256 - (48 - @effect_duration) * 6 if @effect_duration <= 31
 end  
 #--------------------------------------------------------------------------
 def boss_collapse
   if @effect_duration == 320
     Audio.se_play("Audio/SE/124-Thunder02", 100, 80)
     self.flash(Color.new(255, 255, 255), 60)
     viewport.flash(Color.new(255, 255, 255), 20)
   end
   if @effect_duration == 290
     Audio.se_play("Audio/SE/124-Thunder02", 100, 80)
     self.flash(Color.new(255, 255, 255), 60)
     viewport.flash(Color.new(255, 255, 255), 20)
   end
   if @effect_duration == 250
     Audio.se_play("Audio/SE/049-Explosion02",100, 50)
     reset
     self.blend_type = 1
     self.color.set(255, 128, 128, 128)
   end
   if @effect_duration < 250
     self.src_rect.set(0, @effect_duration - 250, @width, @height - @shadow.bitmap.height / 2)
     self.x += 10 if @effect_duration % 2 == 0
     self.opacity = @effect_duration - 20
     return if @effect_duration < 100
     Audio.se_play("Audio/SE/049-Explosion02",100, 50) if @effect_duration % 80 == 0
   end
 end
end

      Classe Script 
            Def initialize
#==============================================================================
# Sideview Battle System Version 2.2xp
#==============================================================================
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < RPG::Sprite
 #--------------------------------------------------------------------------
 APPEAR    = 3
 DISAPPEAR = 4
 COLLAPSE  = 5
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 def initialize(viewport, battler = nil)
   super(viewport)
   @battler = battler
   @battler_visible = false
   @effect_type = 0
   @effect_duration = 0
   @move_x = 0
   @move_y = 0
   @move_z = 0
   @distanse_x = 0
   @distanse_y = 0
   @moving_x = 0
   @moving_y = 0
   @move_speed_x = 0
   @move_speed_y = 0
   @move_speed_plus_x = 0
   @move_speed_plus_y = 0
   @move_boost_x = 0
   @move_boost_y = 0
   @jump_time = 0
   @jump_time_plus = 0
   @jump_up = 0
   @jump_down = 0
   @jump_size = 0
   @float_time = 0
   @float_up = 0
   @jump_plus = 0
   @angle = 0
   @angling = 0
   @angle_time = 0
   @angle_reset = 0
   @zoom_x = 0
   @zoom_y = 0
   @zooming_x = 0
   @zooming_y = 0
   @zoom_time = 0
   @zoom_reset = 0
   @target_battler = []
   @now_targets = []
   @pattern = 0
   @pattern_back = false
   @wait = 0
   @unloop_wait = 0
   @action = []
   @anime_kind = 0
   @anime_speed = 0
   @frame = 0
   @anime_loop = 0
   @anime_end = false
   @anime_freeze = false
   @anime_freeze_kind = false
   @anime_moving = false
   @base_width = ANIME_PATTERN
   @base_height = ANIME_KIND
   @join = false
   @width = 0 
   @height = 0
   @picture_time = 0
   @individual_targets = []
   @balloon_duration = 65
   @reverse = false
   return @battler_visible = false if @battler == nil
   @anime_flug = true if @battler.actor? && !NO_ANIM_BATTLER
   @anime_flug = true if !@battler.actor? && @battler.anime_on
   @weapon_R = Sprite_Weapon.new(viewport,@battler) if @anime_flug
   make_battler
 end
 #--------------------------------------------------------------------------
 def make_battler
   @battler.base_position
   @battler_hue = @battler.battler_hue
   if @anime_flug
     @battler_name = @battler.battler_name if !@battler.actor?
     @battler_name = @battler.character_name if @battler.actor?
     @battler_hue = @battler.character_hue if @battler.actor?
     self.mirror = true if !@battler.actor? && @battler.action_mirror
     self.mirror = false if !@battler.actor? && @battler.action_mirror and $back_attack
     self.bitmap = RPG::Cache.character(@battler_name, @battler_hue) if WALK_ANIME
     begin
       self.bitmap = RPG::Cache.character(@battler_name + "_1", @battler_hue) unless WALK_ANIME
     rescue
       self.bitmap = RPG::Cache.character(@battler_name, @battler_hue) unless WALK_ANIME
     end
     @width = self.bitmap.width / @base_width
     @height = self.bitmap.height / @base_height
     @sx = @pattern * @width
     @sy = @anime_kind * @height
     self.src_rect.set(@sx, @sy, @width, @height)
   else
     @battler_name = @battler.battler_name
     self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
     @width = bitmap.width
     @height = bitmap.height
   end
   unless @back_attack_flug 
     if self.mirror && $back_attack
       self.mirror = false
     elsif $back_attack
       self.mirror = true
     end
     @back_attack_flug = true
   end
   @battler.reset_coordinate
   self.ox = @width / 2
   self.oy = @height * 2 / 3
   update_move
   @move_anime = Sprite_MoveAnime.new(viewport,battler)
   @picture = Sprite.new
   make_shadow if SHADOW
 end
 #--------------------------------------------------------------------------
 def update_battler_graphic
   return if @graphic_change or !WALK_ANIME or @anime_freeze or @battler.dead?
   if @battler.actor? and @anime_flug
     @battler.base_position
     @battler_name = @battler.character_name if @battler.actor?
     @battler_hue = @battler.character_hue if @battler.actor?
     self.bitmap = RPG::Cache.character(@battler_name, @battler_hue)if WALK_ANIME
     begin
       self.bitmap = RPG::Cache.character(@battler_name + "_1", @battler_hue) unless WALK_ANIME
     rescue
       self.bitmap = RPG::Cache.character(@battler_name, @battler_hue) unless WALK_ANIME
     end
     @width = self.bitmap.width / @base_width
     @height = self.bitmap.height / @base_height
     @sx = @pattern * @width
     @sy = @anime_kind * @height
     self.src_rect.set(@sx, @sy, @width, @height)
     self.ox = @width / 2
     self.oy = @height * 2 / 3
   end
   unless @back_attack_flug 
     if self.mirror && $back_attack
       self.mirror = false
     elsif $back_attack
       self.mirror = true
     end
     @back_attack_flug = true
   end
 end
 #--------------------------------------------------------------------------
 def make_shadow
   @shadow.dispose if @shadow != nil
   @battler_hue = @battler.battler_hue
   @shadow = Sprite.new(viewport)
   @shadow.z = 200
   @shadow.visible = false
   @shadow.bitmap = RPG::Cache.character(@battler.shadow, @battler_hue)
   @shadow_height = @shadow.bitmap.height
   @shadow_plus_x = @battler.shadow_plus[0] - @width / 2
   @shadow_plus_y = @battler.shadow_plus[1]
   @shadow.zoom_x = @width * 1.0 / @shadow.bitmap.width
   update_shadow
   @skip_shadow = true
 end
 #--------------------------------------------------------------------------
 def dispose
   self.bitmap.dispose if self.bitmap != nil
   @weapon_R.dispose if @weapon_R != nil
   @move_anime.dispose if @move_anime != nil
   @picture.dispose if @picture != nil
   @shadow.dispose if @shadow != nil
   @balloon.dispose if @balloon != nil
   mirage_off
   super
 end  
 #--------------------------------------------------------------------------
 def damage_action(action)
   if action[0] == "absorb"
     action[0] = nil
     now_hp = @battler.hp
     now_sp = @battler.sp
     @battler.hp += action[3] if action[2] == "hp"
     @battler.sp += action[3] if action[2] == "sp"
     @battler.damage = now_hp - @battler.hp if action[2] == "hp"
     @battler.damage = now_sp - @battler.sp if action[2] == "sp"
     @battler.sp_damage = true if @battler.damage != 0 && action[2] == "sp"
     action[2] = false
   end
   unless @battler.evaded or @battler.missed or action[0] == nil
     @battler.animation_id = action[0]
     @battler.animation_hit = true
     @battler.anime_mirror = action[1]
   end
   dmg = @battler.damage
   dmg = 0 unless dmg.is_a?(Numeric)
   start_action(@battler.damage_hit) if dmg > 0 && action[2]
   if @battler.evaded or @battler.missed
     start_action(@battler.evasion) if action[2]
     Audio.se_play("Audio/SE/" + EVASION_EFFECT) if action[2]
   end
   damage_pop
 end
 #--------------------------------------------------------------------------
 def damage_pop
   damage(@battler.damage, @battler.critical, @battler.sp_damage)
   @battler.damage = nil
   @battler.sp_damage = false
   @battler.critical = false
   @battler.damage_pop = false
 end  
 #--------------------------------------------------------------------------
 def first_action
   action = @battler.first_action unless @battler.restriction == 4
   action = $data_states[@battler.state_id].base_action if @battler.states[0] != nil && @battler.restriction == 4
   start_action(action)
   @skip_shadow = false
 end
 #--------------------------------------------------------------------------
 def start_action(kind)
   reset
   stand_by
   @action = ACTION[kind].dup
   active = @action.shift
   @action.push("End")
   @active_action = ANIME[active]
   @wait = active.to_i if @active_action == nil
   action
 end
 #--------------------------------------------------------------------------
 def start_one_action(kind,back)
   reset
   stand_by
   @action = [back]
   @action.push("End")
   @active_action = ANIME[kind]
   action
 end
 #--------------------------------------------------------------------------
 def next_action
   return @wait -= 1 if @wait > 0
   return if @anime_end == false
   return @unloop_wait -= 1 if @unloop_wait > 0
   active = @action.shift
   @active_action = ANIME[active]
   @wait = active.to_i if @active_action == nil
   action
 end
 #--------------------------------------------------------------------------
 def stand_by
   @repeat_action = @battler.normal
   @repeat_action = @battler.pinch if @battler.hp <= @battler.maxhp / 4
   @repeat_action = @battler.defence if @battler.guarding?
   unless @battler.state_id == nil
     for state in @battler.battler_states.reverse
       next if state.extension.include?("NOSTATEANIME")
       next if @battler.is_a?(Game_Enemy) && state.extension.include?("EXCEPTENEMY")
       @repeat_action = state.base_action
     end 
   end
 end 
 #--------------------------------------------------------------------------
 def push_stand_by
   action = @battler.normal
   action = @battler.pinch if @battler.hp <= @battler.maxhp / 4
   action = @battler.defence if @battler.guarding?
   for state in @battler.battler_states.reverse
     next if state.extension.include?("NOSTATEANIME")
     next if @battler.is_a?(Game_Enemy) && state.extension.include?("EXCEPTENEMY")
     action = state.base_action
   end
   @repeat_action = action
   @action.delete("End")
   act = ACTION[action].dup
   for i in 0...act.size
     @action.push(act[i])
   end  
   @action.push("End")
   @anime_end = true
   @angle = self.angle = 0
 end
 #--------------------------------------------------------------------------
 def reset
   self.zoom_x = self.zoom_y = 1
   self.oy = @height * 2 / 3
   @angle = self.angle = 0
   @anime_end = true
   @non_repeat = false
   @anime_freeze = false
   @unloop_wait = 0
 end  
 #--------------------------------------------------------------------------
 def jump_reset
   @battler.jump = @jump_time = @jump_time_plus = @jump_up = @jump_down = 0 
   @jump_size = @jump_plus = @float_time = @float_up = 0 
 end
 #--------------------------------------------------------------------------
 def get_target(target)
   return if @battler.individual
   @target_battler = target
 end
 #--------------------------------------------------------------------------
 def send_action(action)
   @battler.play = 0
   @battler.play = action if @battler.active
 end
 #--------------------------------------------------------------------------
 def battler_join
   if @battler.exist? && !@battler_visible
     return if !@battler.exist? and @battler.is_a?(Game_Enemy)
     if @battler.revival && @anime_flug
       return @battler.revival = false 
     elsif @battler.revival && !@anime_flug
       @battler.revival = false
       return self.visible = true
     end  
     @anime_flug = true if @battler.actor? && !NO_ANIM_BATTLER
     @anime_flug = true if !@battler.actor? && @battler.anime_on
     make_battler 
     first_action if !@battler.actor? 
   end
   first_action if @battler.actor? and !@battler_visible
 end
 #--------------------------------------------------------------------------
 def update
   super
   return self.bitmap = nil && loop_animation(nil) if @battler == nil
   battler_join
   next_action
   update_battler_graphic
   update_anime_pattern
   update_target
   update_force_action
   update_move
   update_shadow if @shadow != nil
   @weapon_R.update if @weapon_action
   update_float if @float_time > 0
   update_angle if @angle_time > 0
   update_zoom if @zoom_time > 0
   update_mirage if @mirage_flug
   update_picture if @picture_time > 0
   update_move_anime if @anime_moving
   update_balloon if @balloon_duration <= 64
   damage_pop if @battler.damage_pop
   setup_new_effect
   update_effect
   update_battler_bitmap
 end
 #--------------------------------------------------------------------------
 def update_anime_pattern
   return @frame -= 1 if @frame != 0
   @weapon_R.action if @weapon_action && @weapon_R != nil
   if NEW_PATTERN_REPEAT
     if @pattern_back
       if @anime_loop == 0
         if @reverse
           @pattern -= 1
           @pattern = (@pattern < 0 ? @base_width - 1 : @pattern)
           if @pattern == -1
             @pattern_back = false 
             @anime_end = true
           end  
         else
           @pattern += 1
           @pattern = (@pattern > @base_width - 1 ? 0 : @pattern)
           if @pattern == @base_width
             @pattern_back = false 
             @anime_end = true
           end
         end
       else
         @anime_end = true
         if @anime_loop == 1
           @pattern = 0 if !@reverse
           @pattern = @base_width - 1 if @reverse
           @pattern_back = false
         end  
       end
     else
       if @reverse
         @pattern -= 1
         @pattern = (@pattern < 0 ? @base_width - 1 : @pattern)
         @pattern_back = true if @pattern == 0
       else
         @pattern += 1
         @pattern = (@pattern > @base_width - 1 ? 0 : @pattern)
         @pattern_back = true if @pattern == @base_width - 1
       end 
     end
   else
     if @pattern_back
       if @anime_loop == 0
         if @reverse
           @pattern += 1
           if @pattern == @base_width - 1
             @pattern_back = false 
             @anime_end = true
           end
         else  
           @pattern -= 1
           if @pattern == 0
             @pattern_back = false 
             @anime_end = true
           end  
         end  
       else
         @anime_end = true
         if @anime_loop == 1
           @pattern = 0 if !@reverse
           @pattern = @base_width - 1 if @reverse
           @pattern_back = false
         end  
       end  
     else
       if @reverse
         @pattern -= 1
         @pattern_back = true if @pattern == 0
       else  
         @pattern += 1
         @pattern_back = true if @pattern == @base_width - 1
       end  
     end
   end
   @frame = @anime_speed
   return if @anime_freeze
   return unless @anime_flug
   @sx = @pattern * @width
   @sy = @anime_kind * @height
   self.src_rect.set(@sx, @sy, @width, @height)
 end
 #--------------------------------------------------------------------------
 def update_target
   return if @battler.force_target == 0
   return if @battler.individual
   @target_battler = @battler.force_target[1]
   @battler.force_target = 0
 end  
 #--------------------------------------------------------------------------
 def update_force_action
   action = @battler.force_action
   return if action == 0
   @battler.force_action = 0
   return if @battler.active
   return collapse_action if action[0] == "N01collapse"
   return start_one_action(action[2],action[1]) if action[0] == "SINGLE"
   start_action(action[2])
   return if action[1] == ""
   @action.delete("End")
   @action.push(action[1])
   @action.push("End")
 end   
 #--------------------------------------------------------------------------
 def update_move
   if @move_speed_plus_x > 0
     @move_x += @moving_x
     @battler.move_x = @move_x
     @move_speed_plus_x -= 1
   elsif @move_speed_x > 0
     if @move_boost_x != 0
       @moving_x += @move_boost_x
     end  
     @move_x += @moving_x
     @battler.move_x = @move_x
     @move_speed_x -= 1
   end
   if @move_speed_plus_y > 0
     @move_y += @moving_y
     @battler.move_y = @move_y
     @move_speed_plus_y -= 1
   elsif @move_speed_y > 0
     if @move_boost_y != 0
       @moving_y += @move_boost_y 
     end
     @move_y += @moving_y
     @battler.move_y = @move_y
     @move_speed_y -= 1
   end
   if @jump_up != 0
     @jump_plus += @jump_up
     @battler.jump = @jump_plus
     @jump_up = @jump_up / 2
     @jump_time -= 1
     if @jump_time == 0 or @jump_up == @jump_sign
       @jump_down = @jump_up * 2 * @jump_sign * @jump_sign2
       @jump_time_plus += @jump_time * 2
       @jump_up = 0
       return
     end  
   end
   if @jump_down != 0 
     if @jump_time_plus != 0
       @jump_time_plus -= 1
     elsif @jump_down != @jump_size
       @jump_plus += @jump_down 
       @battler.jump = @jump_plus
       @jump_down = @jump_down * 2
       if @jump_down == @jump_size
         if @jump_flug
           @jump_flug = false
         else
           @jump_plus += @jump_down 
           @battler.jump = @jump_plus
           @jump_down = @jump_size = 0
         end
       end  
     end
   end
   self.x = @battler.position_x
   self.y = @battler.position_y
   self.z = @battler.position_z
 end
 #--------------------------------------------------------------------------
 def update_shadow
   @shadow.opacity = self.opacity
   @shadow.x = self.x + @shadow_plus_x
   @shadow.y = self.y + @shadow_plus_y - @jump_plus
 end
 #--------------------------------------------------------------------------
 def update_float
   @float_time -= 1
   @jump_plus += @float_up
   @battler.jump = @jump_plus
 end   
 #--------------------------------------------------------------------------
 def update_angle
   @angle += @angling
   self.angle = @angle
   @angle_time -= 1
   return @angle = 0 if @angle_time == 0
   self.angle = 0 if @angle_reset
 end  
 #--------------------------------------------------------------------------
 def update_zoom
   @zoom_x += @zooming_x
   @zoom_y += @zooming_y
   self.zoom_x = @zoom_x
   self.zoom_y = @zoom_y
   @zoom_time -= 1
   return if @zoom_time != 0
   @zoom_x = @zoom_y = 0
   self.oy = @height 
   self.zoom_x = self.zoom_y = 1 if @zoom_reset
 end  
 #--------------------------------------------------------------------------
 def update_mirage
   mirage(@mirage0) if @mirage_count == 1
   mirage(@mirage1) if @mirage_count == 3
   mirage(@mirage2) if @mirage_count == 5
   @mirage_count += 1
   @mirage_count = 0 if @mirage_count == 6
 end
 #--------------------------------------------------------------------------
 def update_picture
   @picture_time -= 1
   @picture.x += @moving_pic_x
   @picture.y += @moving_pic_y
 end  
 #--------------------------------------------------------------------------
 def update_move_anime
   @move_anime.update
   @anime_moving = false if @move_anime.finish?
   @move_anime.action_reset if @move_anime.finish?
 end  
 #--------------------------------------------------------------------------
 def setup_new_effect
   if @battler.blink
     blink_on
   else
     blink_off
   end
   if @battler.white_flash
     whiten
     @battler.white_flash = false
   end
   effects_update
   if not @battler_visible and @battler.exist?
     @effect_type = APPEAR
     @effect_duration = 16
     @battler_visible = true
   end
   if @battler_visible and @battler.hidden
     @effect_type = DISAPPEAR
     @effect_duration = 32
     @battler_visible = false
   end
   if @battler.collapse
     @effect_type = COLLAPSE
     @effect_duration = 48
     @battler.collapse = false
     @battler_visible = false
   end
   if @battler_visible && @battler.animation_id != 0
     animation = $data_animations[@battler.animation_id]
     @battler.animation_hit = true unless @battler.evaded or @battler.missed
     animation(animation, @battler.animation_hit)
     if @active_battler.is_a?(Game_Enemy)
       if @battler.actor? and @battler.anime_mirror
         @battler.anime_mirror = false
       elsif @battler.actor? and !@battler.anime_mirror
         @battler.anime_mirror = true 
       end
     end
     animation_mirror(@battler.anime_mirror)
     @battler.animation_id = 0
     @battler.anime_mirror = false
   end
 end
 #--------------------------------------------------------------------------
 def effects_update
   if @battler.damage == nil and @battler.state_animation_id != @state_animation_id and STATE_ANIM and @battler_visible 
     @state_animation_id = @battler.state_animation_id == nil ? 0 : @battler.state_animation_id
     loop_animation($data_animations[@state_animation_id])
   end
 end
 #--------------------------------------------------------------------------
 def update_effect
   if @effect_duration > 0
     @effect_duration -= 1
     case @effect_type
     when APPEAR
       update_appear
     when DISAPPEAR
       update_disappear
     when COLLAPSE
       update_collapse
     end
   end
 end
 #--------------------------------------------------------------------------
 def update_whiten
   self.blend_type = 0
   self.color.set(255, 255, 255, 128)
   self.opacity = 255
   self.color.alpha = 128 - (16 - @effect_duration) * 10
 end
 #--------------------------------------------------------------------------
 def update_appear
   self.blend_type = 0
   self.color.set(0, 0, 0, 0)
   self.opacity = (16 - @effect_duration) * 16
 end
 #--------------------------------------------------------------------------
 def update_disappear
   self.blend_type = 0
   self.color.set(0, 0, 0, 0)
   self.opacity = 256 - (32 - @effect_duration) * 10
 end
 #--------------------------------------------------------------------------
 def update_collapse
   normal_collapse if @collapse_type == 2
   boss_collapse if @collapse_type == 3
 end
 #--------------------------------------------------------------------------
 def update_balloon
   @balloon_duration -= 1 if @balloon_duration > 0 && !@balloon_back
   @balloon_duration += 1 if @balloon_back
   if @balloon_duration == 64
     @balloon_back = false
     @balloon.visible = false
   elsif @balloon_duration == 0
     @balloon.visible = false if @balloon_loop == 0
     @balloon_back = true if @balloon_loop == 1
   end    
   @balloon.x = self.x
   @balloon.y = self.y
   @balloon.z = self.y
   @balloon.opacity = self.opacity
   sx = 7 * 32 if @balloon_duration < 12
   sx = (7 - (@balloon_duration - 12) / 8) * 32 unless @balloon_duration < 12
   @balloon.src_rect.set(sx, @balloon_id * 32, 32, 32)
   @balloon.visible = false if @battler.dead?
 end
 #--------------------------------------------------------------------------
 def update_battler_bitmap
   return if @graphic_change
   return if @battler.actor?
   if @battler.battler_name != @battler_name or @battler.battler_hue != @battler_hue
     @battler_name = @battler.battler_name
     @battler_hue = @battler.battler_hue
     make_battler
     self.opacity = 0 if @battler.dead? or @battler.hidden
   end
 end
 #--------------------------------------------------------------------------
 def action 
   return if @active_action == nil
   action = @active_action[0]
   return mirroring if action == "Invert"
   return angling if action == "angle"
   return zooming if action == "zoom"
   return mirage_on if action == "Afterimage ON"
   return mirage_off if action == "Afterimage OFF"
   return picture if action == "pic"
   return @picture.visible = false && @picture_time = 0 if action == "Clear image" 
   return graphics_change if action == "change"
   return battle_anime if action == "anime"
   return balloon_anime if action == "balloon"
   return sound if action == "sound"
   return $game_switches[@active_action[1]] = @active_action[2] if action == "switch"
   return variable if action == "variable"
   return two_swords if action == "Two Wpn Only"
   return non_two_swords if action == "One Wpn Only"
   return necessary if action == "nece"
   return derivating if action == "der"
   return individual_action if action == "Process Skill"
   return individual_action_end if action == "Process Skill End"
   return non_repeat if action == "Don't Wait"
   return @battler.change_base_position(self.x, self.y) if action == "Start Pos Change"
   return @battler.base_position if action == "Start Pos Return"
   return change_target if action == "target"
   return send_action(action) if action == "Can Collapse"
   return send_action(action) if action == "Cancel Action"
   return state_on if action == "sta+"
   return state_off if action == "sta-"
   return Graphics.frame_rate = @active_action[1] if action == "fps"
   return floating if action == "float"
   return eval(@active_action[1]) if action == "script"
   return force_action if @active_action.size == 4
   return reseting if @active_action.size == 5
   return moving if @active_action.size == 7
   return battler_anime if @active_action.size == 9
   return moving_anime if @active_action.size == 11
   return anime_finish if action == "End"
 end
 #--------------------------------------------------------------------------
 def mirroring  
   if self.mirror
     self.mirror = false
     @weapon_R.mirroring if @anime_flug
   else
     self.mirror = true
     @weapon_R.mirroring if @anime_flug
   end
 end  
 #--------------------------------------------------------------------------
 def angling  
   jump_reset
   @angle_time = @active_action[1]
   start_angle = @active_action[2]
   end_angle = @active_action[3]
   @angle_reset = @active_action[4]
   start_angle *= -1 if $back_attack
   end_angle *= -1 if $back_attack
   start_angle *= -1 if @battler.is_a?(Game_Enemy)
   end_angle *= -1 if @battler.is_a?(Game_Enemy)
   if @angle_time <= 0
     self.angle = end_angle
     return  @angle_time = 0
   end  
   @angling = (end_angle - start_angle) / @angle_time
   @angle = (end_angle - start_angle) % @angle_time + start_angle
 end
 #--------------------------------------------------------------------------
 def zooming  
   jump_reset
   @zoom_time = @active_action[1]
   zoom_x = @active_action[2] - 1
   zoom_y = @active_action[3] - 1
   @zoom_reset = @active_action[4]
   @zoom_x = @zoom_y = 1
   return @zoom_time = 0 if @zoom_time <= 0
   @zooming_x = zoom_x / @zoom_time
   @zooming_y = zoom_y / @zoom_time
 end  
 #--------------------------------------------------------------------------
 def mirage_on
   return if @battler.dead?
   @mirage0 = Sprite.new(self.viewport)
   @mirage1 = Sprite.new(self.viewport)
   @mirage2 = Sprite.new(self.viewport)
   @mirage_flug = true
   @mirage_count = 0
 end  
 #--------------------------------------------------------------------------
 def mirage(body)
   body.bitmap = self.bitmap.dup
   body.x = self.x
   body.y = self.y
   body.ox = self.ox
   body.oy = self.oy
   body.z = self.z
   body.mirror = self.mirror
   body.angle = @angle
   body.opacity = 160
   body.zoom_x = self.zoom_x
   body.zoom_y = self.zoom_y   
   body.src_rect.set(@sx, @sy, @width, @height) if @anime_flug
   body.src_rect.set(0, 0, @width, @height) unless @anime_flug
 end   
 #--------------------------------------------------------------------------
 def mirage_off
   @mirage_flug = false
   @mirage0.dispose if @mirage0 != nil
   @mirage1.dispose if @mirage1 != nil
   @mirage2.dispose if @mirage2 != nil
 end   
 #--------------------------------------------------------------------------
 def picture 
   pic_x = @active_action[1]
   pic_y = @active_action[2]
   pic_end_x = @active_action[3]
   pic_end_y = @active_action[4]
   @picture_time = @active_action[5]
   @moving_pic_x = (pic_end_x - pic_x)/ @picture_time
   @moving_pic_y = (pic_end_y - pic_y)/ @picture_time
   plus_x = (pic_end_x - pic_x)% @picture_time
   plus_y = (pic_end_y - pic_y)% @picture_time
   @picture.bitmap = RPG::Cache.picture(@active_action[7])
   @picture.x = pic_x + plus_x
   @picture.y = pic_y + plus_y
   @picture.z = 1
   @picture.z = 1900
   @picture.z = 3000 if @active_action[6]
   @picture.visible = true
 end 
 #--------------------------------------------------------------------------
 def graphics_change  
   return if @battler.is_a?(Game_Enemy)
   @battler_name = @active_action[2]
   @bitmap = RPG::Cache.character(@battler_name , @battler_hue) if WALK_ANIME
   @bitmap = RPG::Cache.character(@battler_name + "_1", @battler_hue) unless WALK_ANIME
   @width = @bitmap.width / @base_width
   @height = @bitmap.height / @base_height
   @battler.graphic_change(@active_action[2]) unless @active_action[1]
   @graphic_change = true
 end  
 #--------------------------------------------------------------------------
 def battle_anime
   return if @active_action[5] && !@battler.actor?
   return if @active_action[5] && @battler.weapons[1] == nil
   if @battler.actor?
     return if !@active_action[5] && @battler.weapons[0] == nil && @battler.weapons[1] != nil
   end
   anime_id = @active_action[1]
   if $back_attack
     mirror = true if @active_action[3] == false
     mirror = false if @active_action[3]
   end
   if anime_id < 0
     if @battler.current_action.kind == 1 && anime_id != -2
       anime_id = $data_skills[@battler.current_action.skill_id].animation2_id 
     elsif @battler.current_action.kind == 2 && anime_id != -2
       anime_id = $data_items[@battler.current_action.item_id].animation2_id
     else
       anime_id = NO_WEAPON
       if @battler.actor?
         weapon_id = @battler.weapon_id
         anime_id = UNARMED_ANIM
         anime_id = battler.weapons[0].animation2_id if battler.weapons[0] != nil
         anime_id = battler.weapons[1].animation2_id if @active_action[5]
       else
         weapon_id = @battler.weapon
         anime_id = $data_weapons[weapon_id].animation2_id if weapon_id != 0
       end
     end
     @wait = $data_animations[anime_id].frame_max if $data_animations[anime_id] != nil && @active_action[4]
     waitflug = true
     damage_action = [anime_id, mirror, true]
     return @battler.play = ["OBJ_ANIM",damage_action] if @battler.active
   end
   if @active_action[2] == 0 && $data_animations[anime_id] != nil
     @battler.animation_id = anime_id
     @battler.animation_hit = true
     @battler.anime_mirror = mirror
   elsif $data_animations[anime_id] != nil
     for target in @target_battler
       target.animation_id = anime_id
       target.anime_mirror = mirror
     end  
   end
   @wait = $data_animations[anime_id].frame_max if $data_animations[anime_id] != nil && @active_action[4] && !waitflug
 end
 #--------------------------------------------------------------------------
 def sound   
   pitch = @active_action[2] 
   vol =  @active_action[3]
   name = @active_action[4] 
   case @active_action[1]
   when "se"
     Audio.se_play("Audio/SE/" + name, vol, pitch)
   when "bgm"
     if @active_action[4] == ""
       now_bgm = RPG::BGM.last
       name = now_bgm.name
     end
     Audio.bgm_play("Audio/BGM/" + name, vol, pitch)
   when "bgs"
     if @active_action[4] == ""
       now_bgs = RPG::BGS.last
       name = now_bgs.name
     end
     Audio.bgs_play("Audio/BGS/" + name, vol, pitch)
   end
 end
 #--------------------------------------------------------------------------
 def balloon_anime
   return if self.opacity == 0
   if @balloon == nil
     @balloon = Sprite.new 
     @balloon.bitmap = RPG::Cache.picture("Balloon")
     @balloon.ox = @width / 16
     @balloon.oy = 320 / 10  + @height / 3 
   end
   @balloon_id = @active_action[1]
   @balloon_loop = @active_action[2]
   @balloon_duration = 64
   @balloon_back = false
   update_balloon
   @balloon.visible = true
   @balloon.visible = false unless BALLOON_ANIM
 end  
 #--------------------------------------------------------------------------
 def variable
   operand = @active_action[3]
   case @active_action[2]
   when 0
     $game_variables[@active_action[1]] = operand
   when 1
     $game_variables[@active_action[1]] += operand
   when 2
     $game_variables[@active_action[1]] -= operand
   when 3
     $game_variables[@active_action[1]] *= operand
   when 4
     $game_variables[@active_action[1]] /= operand
   when 5
     $game_variables[@active_action[1]] %= operand
   end
 end  
 #--------------------------------------------------------------------------
 def two_swords
   return @action.shift unless @battler.actor?
   return @action.shift if @battler.weapons[1] == nil
   active = @action.shift
   @active_action = ANIME[active]
   @wait = active.to_i if @active_action == nil
   action
 end
 #--------------------------------------------------------------------------
 def non_two_swords
   return unless @battler.actor?
   return @action.shift if @battler.weapons[1] != nil
   active = @action.shift
   @active_action = ANIME[active]
   @wait = active.to_i if @active_action == nil
   action
 end
 #--------------------------------------------------------------------------
 def necessary
   nece1 = @active_action[3]
   nece2 = @active_action[4]
   case @active_action[1]
   when 0
     target = [$game_party.actors[@battler.index]] if @battler.actor?
     target = [$game_troop.enemies[@battler.index]] if @battler.is_a?(Game_Enemy)
   when 1
     target = @target_battler
   when 2
     target = $game_troop.enemies
   when 3
     target = $game_party.actors
   end 
   return start_action(@battler.recover_action) if target.size == 0
   case @active_action[2]
   when 0
     state_on = true if nece2 > 0
     state_member = nece2.abs
     if nece2 == 0
       state_member = $game_party.actors.size if @battler.actor?
       state_member = $game_troop.enemies.size if @battler.is_a?(Game_Enemy)
     end  
     for member in target
       state_member -= 1 if member.state?(nece1)
     end
     if state_member == 0 && state_on
       return
     elsif state_member == nece2.abs
       return if state_on == nil
     end  
   when 1  
     num_over = true if nece2 > 0
     num = 0
     for member in target
       case  nece1
       when 0 
         num += member.hp
       when 1 
         num += member.mp
       when 2
         num += member.atk
       when 3 
         num += member.dex
       when 4
         num += member.agi
       when 5 
         num += member.int
       end
     end
     num = num / target.size
     if num > nece2.abs && num_over
       return
     elsif num < nece2.abs
       return if num_over == nil
     end
   when 2
     if $game_switches[nece1]
       return if nece2
     else
       return unless nece2
     end  
   when 3
     if nece2 > 0
       return if $game_variables[nece1] > nece2
     else
       return unless $game_variables[nece1] > nece2.abs
     end
   when 4
     skill_member = nece2.abs
     for member in target
       skill_member -= 1 if member.skill_learn?(nece1)
       return if skill_member == 0
     end  
   end 
   return @action = ["End"] if @non_repeat
   action = @battler.recover_action
   action = @battler.defence if @battler.guarding?
   return start_action(action)
 end  
 #--------------------------------------------------------------------------
 def derivating 
   return unless @active_action[2] && !@battler.skill_learn?(@active_action[3])
   return if rand(100) > @active_action[1]
   @battler.derivation = @active_action[3]
   @action = ["End"]
 end
 #--------------------------------------------------------------------------
 def individual_action
   @battler.individual = true
   @individual_act = @action.dup
   send_action(["Individual"])
   @individual_targets = @target_battler.dup
   @target_battler = [@individual_targets.shift]
 end
 #--------------------------------------------------------------------------
 def individual_action_end
   return @battler.individual = false if @individual_targets.size == 0
   @action = @individual_act.dup
   @target_battler = [@individual_targets.shift]
 end  
 #--------------------------------------------------------------------------
 def non_repeat
   @repeat_action = []
   @non_repeat = true
   anime_finish
 end  
 #--------------------------------------------------------------------------
 def change_target
   return @target_battler = @now_targets.dup if @active_action[2] == 3
   target = [@battler] if @active_action[2] == 0
   target = @target_battler.dup if @active_action[2] != 0
   if @active_action[2] == 2
     @now_targets = @target_battler.dup
     @target_battler = []
   end  
   if @active_action[1] >= 1000
     members = $game_party.actors if @battler.actor?
     members = $game_troop.enemies unless @battler.actor?
     index = @active_action[1] - 1000
     if index < members.size
       if members[index].exist? && @battler.index != index
         members[index].force_target = ["N01target_change", target]
         @target_battler = [members[index]] if @active_action[2] == 2
         change = true
       else
         for member in members
           next if @battler.index == member.index
           next unless member.exist?
           member.force_target = ["N01target_change", target]
           @target_battler = [member] if @active_action[2] == 2
           break change = true
         end
       end
     end
   elsif @active_action[1] > 0
     for member in $game_party.actors + $game_troop.enemies
       if member.state?(@active_action[1])
         member.force_target = ["N01target_change", target]
         @target_battler.push(member) if @active_action[2] == 2
         change = true
       end  
     end  
   elsif @active_action[1] < 0
     skill_id = @active_action[1].abs
     for actor in $game_party.actors
       if actor.skill_learn?(skill_id)
         actor.force_target = ["N01target_change", target]
         @target_battler.push(target) if @active_action[2] == 2
         change = true
       end  
     end
   else
     for member in @target_battler
       member.force_target = ["N01target_change", target]
       @target_battler.push(member) if @active_action[2] == 2
       change = true
     end
   end
   return if change
   return @action = ["End"] if @non_repeat
   return start_action(@battler.recover_action)
 end    
 #--------------------------------------------------------------------------
 def state_on
   state_id = @active_action[2]
   case @active_action[1]
   when 0
     @battler.add_state(state_id)
   when 1
     if @target_battler != nil
       for target in @target_battler
         target.add_state(state_id)
       end
     end
   when 2
     for target in $game_troop.enemies
       target.add_state(state_id)
     end
   when 3
     for target in $game_party.actors
       target.add_state(state_id)
     end
   when 4
     for target in $game_party.actors
       if target.index != @battler.index
         target.add_state(state_id)
       end  
     end
   end
   start_action(@battler.recover_action) unless @battler.movable?
 end 
 #--------------------------------------------------------------------------
 def state_off  
   state_id = @active_action[2]
   case @active_action[1]
   when 0
     @battler.remove_state(state_id)
   when 1
     if @target_battler != nil
       for target in @target_battler
         target.remove_state(state_id)
       end
     end
   when 2
     for target in $game_troop.enemies
       target.remove_state(state_id)
     end
   when 3
     for target in $game_party.actors
       target.remove_state(state_id)
     end
   when 4
     for target in $game_party.actors
       if target.index != @battler.index
         target.remove_state(state_id)
       end  
     end
   end
 end  
 #--------------------------------------------------------------------------
 def floating  
   jump_reset
   @jump_plus = @active_action[1]
   float_end = @active_action[2]
   @float_time = @active_action[3]
   @float_up = (float_end - @jump_plus)/ @float_time
   @wait = @float_time
   if @anime_flug
     move_anime = ANIME[@active_action[4]]
     if move_anime != nil
       @active_action = move_anime
       battler_anime
       @anime_end = true
     end 
   end
   @battler.jump = @jump_plus
 end      
 #--------------------------------------------------------------------------
 def force_action
   kind = @active_action[0]
   rebirth = @active_action[2]
   play = @active_action[3]
   action = [kind,rebirth,play]
   if @active_action[1] >= 1000
     members = $game_party.actors if @battler.actor?
     members = $game_troop.enemies unless @battler.actor?
     index = @active_action[1] - 1000
     if index < members.size
       if members[index].exist? && @battler.index != index
         return members[index].force_action = action
       else
         for target in members
           next if @battler.index == target.index
           next unless target.exist?
           force = true
           break target.force_action = action
         end
       end
     end
     return if force
     return @action = ["End"] if @non_repeat
     return start_action(@battler.recover_action)
   elsif @active_action[1] == 0
     for target in @target_battler
       target.force_action = action if target != nil
     end
   elsif @active_action[1] > 0
     for target in $game_party.actors + $game_troop.enemies
       target.force_action = action if target.state?(@active_action[1])
     end
   elsif @active_action[1] < 0  
     return if @battler.is_a?(Game_Enemy)
     for actor in $game_party.actors
       unless actor.id == @battler.id
         actor.force_action = action if actor.skill_id_learn?(@active_action[1].abs)
       end
     end
   end 
 end
 #--------------------------------------------------------------------------
 def reseting
   jump_reset
   self.angle = 0
   @distanse_x   = @move_x * -1
   @distanse_y   = @move_y * -1
   @move_speed_x = @active_action[1]
   @move_speed_y = @move_speed_x
   @move_boost_x = @active_action[2]
   @move_boost_y = @move_boost_x
   @jump         = @active_action[3]
   move_distance
   if @anime_flug
     move_anime = ANIME[@active_action[4]]
     if move_anime != nil 
       @active_action = move_anime
       battler_anime
     end 
     @anime_end = true
   end
 end
 #--------------------------------------------------------------------------
 def moving  
   jump_reset
   xx = @active_action[1]
   xx *= -1 if $back_attack
   case @active_action[0]
   when 0
     @distanse_x = xx
     @distanse_y = @active_action[2]
   when 1
     if @target_battler == nil
       @distanse_x = xx
       @distanse_y = @active_action[2]
     else
       target_x = 0
       target_y = 0
       time = 0
       for i in 0...@target_battler.size
         if @target_battler[i] != nil
           time += 1
           target_x += @target_battler[i].position_x
           target_y += @target_battler[i].position_y
         end  
       end 
       if time == 0
         @distanse_x = xx
         @distanse_y = @active_action[2]
       else  
         target_x = target_x / time
         target_y = target_y / time
         @distanse_y = target_y - self.y + @active_action[2]
         if @battler.actor?
           @distanse_x = target_x - self.x + xx
         else
           @distanse_x = self.x - target_x + xx
         end  
       end  
     end  
   when 2
     if @battler.actor?
       @distanse_x = xx - self.x
       @distanse_x = 640 + xx - self.x if $back_attack
     else
       @distanse_x = self.x - xx
       @distanse_x = self.x - (Graphics.width + xx) if $back_attack
     end 
     @distanse_y = @active_action[2] - self.y
   when 3
     if @battler.actor?
       @distanse_x = xx + @battler.base_position_x - self.x 
     else
       @distanse_x = xx + self.x - @battler.base_position_x
     end 
     @distanse_y = @active_action[2] + @battler.base_position_y - @battler.position_y
   end
   @move_speed_x = @active_action[3]
   @move_speed_y = @active_action[3]
   @move_boost_x = @active_action[4]
   @move_boost_y = @active_action[4]
   @jump         = @active_action[5]
   @jump_plus = 0
   move_distance
   if @anime_flug
     move_anime = ANIME[@active_action[6]]
     if move_anime != nil 
       @active_action = move_anime
       battler_anime
     end  
     @anime_end = true
   end
 end
 #--------------------------------------------------------------------------
 def move_distance
   if @move_speed_x == 0
     @moving_x = 0
     @moving_y = 0
   else  
     @moving_x = @distanse_x / @move_speed_x
     @moving_y = @distanse_y / @move_speed_y
     over_x = @distanse_x % @move_speed_x
     over_y = @distanse_y % @move_speed_y
     @move_x += over_x
     @move_y += over_y
     @battler.move_x = @move_x
     @battler.move_y = @move_y
     @distanse_x -= over_x
     @distanse_y -= over_y
   end  
   if @distanse_x == 0
     @move_speed_x = 0
   end
   if @distanse_y == 0
     @move_speed_y = 0
   end
   boost_x = @moving_x
   move_x = 0
   if @move_boost_x > 0 && @distanse_x != 0
     if @distanse_x == 0
       @move_boost_x = 0
     elsif @distanse_x < 0
       @move_boost_x *= -1
     end
     for i in 0...@move_speed_x
       boost_x += @move_boost_x
       move_x += boost_x
       over_distance = @distanse_x - move_x
       if @distanse_x > 0 && over_distance < 0
         @move_speed_x = i 
         break
       elsif @distanse_x < 0 && over_distance > 0
         @move_speed_x = i 
         break
       end 
     end
     before = over_distance + boost_x
     @move_speed_plus_x = (before / @moving_x).abs
     @move_x += before % @moving_x
     @battler.move_x = @move_x
   elsif @move_boost_x < 0 && @distanse_x != 0
     if @distanse_x == 0
       @move_boost_x = 0
     elsif @distanse_x < 0
       @move_boost_x *= -1
     end
     for i in 0...@move_speed_x
       boost_x += @move_boost_x
       move_x += boost_x
       lost_distance = @distanse_x - move_x
       before = lost_distance
       if @distanse_x > 0 && boost_x < 0
         @move_speed_x = i - 1
         before = lost_distance + boost_x
         break
       elsif @distanse_x < 0 && boost_x > 0
         @move_speed_x= i - 1
         before = lost_distance + boost_x
         break
       end
     end
     plus = before / @moving_x
     @move_speed_plus_x = plus.abs
     @move_x += before % @moving_x
     @battler.move_x = @move_x
   end
   boost_y = @moving_y
   move_y = 0
   if @move_boost_y > 0 && @distanse_y != 0
     if @distanse_y == 0
       @move_boost_y = 0
     elsif @distanse_y < 0
       @move_boost_y *= -1
     end
     for i in 0...@move_speed_y
       boost_y += @move_boost_y
       move_y += boost_y
       over_distance = @distanse_y - move_y
       if @distanse_y > 0 && over_distance < 0
         @move_speed_y = i 
         break
       elsif @distanse_y < 0 && over_distance > 0
         @move_speed_y = i 
         break
       end 
     end
     before = over_distance + boost_y
     @move_speed_plus_y = (before / @moving_y).abs
     @move_y += before % @moving_y
     @battler.move_y = @move_y
   elsif @move_boost_y < 0 && @distanse_y != 0
     if @distanse_y == 0
       @move_boost_y = 0
     elsif @distanse_y < 0
       @move_boost_y *= -1
     end
     for i in 0...@move_speed_y
       boost_y += @move_boost_y
       move_y += boost_y
       lost_distance = @distanse_y - move_y
       before = lost_distance
       if @distanse_y > 0 && boost_y < 0
         @move_speed_y = i 
         before = lost_distance + boost_y
         break
       elsif @distanse_y < 0 && boost_y > 0
         @move_speed_y = i 
         before = lost_distance + boost_y
         break
       end
     end
     plus = before / @moving_y
     @move_speed_plus_y = plus.abs
     @move_y += before % @moving_y
     @battler.move_y = @move_y
   end
   x = @move_speed_plus_x + @move_speed_x
   y = @move_speed_plus_y + @move_speed_y
   if x > y
     end_time = x
   else
     end_time = y
   end
   @wait = end_time
   if @jump != 0
     if @wait == 0
       @wait = @active_action[3]
     end  
     @jump_time = @wait / 2
     @jump_time_plus = @wait % 2
     @jump_sign = 0
     @jump_sign2 = 0
     if @jump < 0
       @jump_sign = -1
       @jump_sign2 = 1
       @jump = @jump * -1
     else
       @jump_sign = 1
       @jump_sign2 = -1
     end
     @jump_up = 2 ** @jump * @jump_sign
     if @jump_time == 0
       @jump_up = 0
     elsif @jump_time != 1
       @jump_size = @jump_up * @jump_sign * @jump_sign2
     else
       @jump_size = @jump_up * 2 * @jump_sign * @jump_sign2
       @jump_flug = true
     end  
   end
 end
 #--------------------------------------------------------------------------
 def battler_anime
   @anime_kind  = @active_action[1]
   @anime_speed = @active_action[2]
   @anime_loop  = @active_action[3]
   @unloop_wait = @active_action[4]
   @anime_end = true
   @reverse = false
   if @weapon_R != nil && @active_action[8] != ""
     weapon_kind = ANIME[@active_action[8]]
     two_swords_flug = weapon_kind[11]
     return if two_swords_flug && !@battler.actor?
     return if two_swords_flug && @battler.weapons[1] == nil && @battler.actor?
     if @battler.actor? && @battler.weapons[0] == nil && !two_swords_flug
       @weapon_R.action_reset
     elsif @battler.actor? && @battler.weapons[1] == nil && two_swords_flug
       @weapon_R.action_reset
     elsif !@battler.actor? && @battler.weapon == 0
       @weapon_R.action_reset
     else
       @weapon_R.action_reset
       if @active_action[5] != -1
         @weapon_R.freeze(@active_action[5])
       end
       @weapon_R.weapon_graphics unless two_swords_flug
       @weapon_R.weapon_graphics(true) if two_swords_flug
       @weapon_R.weapon_action(@active_action[8],@anime_loop)
       @weapon_action = true
       @weapon_R.action 
     end
   elsif @weapon_R != nil
     @weapon_R.action_reset
   end  
   @anime_end = false
   if @active_action[5] != -1 && @active_action[5] != -2
     @anime_freeze = true
     @anime_end = true
   elsif @active_action[5] == -2
     @anime_freeze = false
     @reverse = true
     @pattern = @base_width - 1
     if @weapon_action && @weapon_R != nil
       @weapon_R.action 
       @weapon_R.update
     end
   else  
     @anime_freeze = false
     @pattern = 0
     if @weapon_action && @weapon_R != nil
       @weapon_R.action 
       @weapon_R.update
     end
   end  
   @pattern_back = false
   @frame = @anime_speed
   @battler.move_z = @active_action[6]
   if @shadow != nil
     @shadow.visible = true if @active_action[7]
     @shadow.visible = false unless @active_action[7]
     @shadow.visible = false if @skip_shadow
   end
   file_name = ""
   unless @active_action[0] == 0
     file_name = "_" + @active_action[0].to_s
   end  
   return unless @anime_flug
   begin
     self.bitmap = RPG::Cache.character(@battler_name + file_name, @battler_hue)
   rescue
     self.bitmap = RPG::Cache.character(@battler_name, @battler_hue)
   end
   @sx = @pattern * @width
   @sy = @anime_kind * @height
   @sx = @active_action[5] * @width if @anime_freeze
   self.src_rect.set(@sx, @sy, @width, @height)
 end
 #--------------------------------------------------------------------------
 def moving_anime
   @move_anime.action_reset if @anime_moving
   @anime_moving = true
   mirror = false
   mirror = true if $back_attack
   id = @active_action[1]
   target = @active_action[2]
   x = y = mem = 0
   if target == 0
     if @target_battler == nil
       x = self.x
       y = self.y
     else
       if @target_battler[0] == nil
         x = self.x
         y = self.y
       else  
         x = @target_battler[0].position_x
         y = @target_battler[0].position_y
       end  
     end  
   elsif target == 1
     if @battler.actor?
       for target in $game_troop.enemies
         x += target.position_x
         y += target.position_y
         mem += 1
       end
       x = x / mem
       y = y / mem
     else
       for target in $game_party.actors
         x += target.position_x
         y += target.position_y
         mem += 1
       end
       x = x / mem
       y = y / mem
     end
   elsif target == 2
     if @battler.actor?
       for target in $game_party.actors
         x += target.position_x
         y += target.position_y
         mem += 1
       end
       x = x / mem
       y = y / mem
     else
       for target in $game_troop.enemies
         x += target.position_x
         y += target.position_y
         mem += 1
       end
       x = x / mem
       y = y / mem
     end
   else
     x = self.x
     y = self.y
   end  
   plus_x = @active_action[6]
   plus_y = @active_action[7]
   plus_x *= -1 if @battler.is_a?(Game_Enemy)
   distanse_x = x - self.x - plus_x
   distanse_y = y - self.y - plus_y
   type = @active_action[3]
   speed = @active_action[4]
   orbit = @active_action[5]
   if @active_action[8] == 0
     @move_anime.base_x = self.x + plus_x
     @move_anime.base_y = self.y + plus_y
   elsif @active_action[8] == 1 
     @move_anime.base_x = x + plus_x
     @move_anime.base_y = y + plus_y
     distanse_y = distanse_y * -1
     distanse_x = distanse_x * -1
   else 
     @move_anime.base_x = x
     @move_anime.base_y = y
     distanse_x = distanse_y = 0
   end
   if @active_action[10] == ""
     weapon = ""  
   elsif @anime_flug != true
     weapon = ""  
   else
     if @battler.actor?
       battler = $game_party.actors[@battler.index] 
       weapon_id = battler.weapon_id
     else  
       battler = $game_troop.enemies[@battler.index]
       weapon_id = battler.weapon
     end  
     weapon_act = ANIME[@active_action[10]].dup if @active_action[10] != ""
     if weapon_id != 0 && weapon_act.size == 3
       weapon_file = $data_weapons[weapon_id].flying_graphic
       if weapon_file == ""
         weapon_name = $data_weapons[weapon_id].graphic
         icon_weapon = false
         if weapon_name == ""
           weapon_name = $data_weapons[weapon_id].icon_name
           icon_weapon = true
         end  
       else
         icon_weapon = false
         weapon_name = weapon_file
       end
       weapon = @active_action[10]
     elsif weapon_act.size == 3
       weapon = ""
     elsif weapon_act != nil && $data_skills[@active_battler.current_action.skill_id] != nil
       icon_weapon = false
       weapon_name = $data_skills[@battler.current_action.skill.id].flying_graphic
       weapon = @active_action[10]
     end
   end
   @move_anime.z = 1
   @move_anime.z = 1000 if @active_action[9]
   @move_anime.anime_action(id,mirror,distanse_x,distanse_y,type,speed,orbit,weapon,weapon_name,icon_weapon)
 end  
 #--------------------------------------------------------------------------
 def anime_finish
   return individual_action_end if @individual_targets.size != 0
   send_action(@active_action[0]) if @battler.active
   mirage_off if @mirage_flug
   start_action(@repeat_action) unless @non_repeat
 end   
 #--------------------------------------------------------------------------
 def collapse_action
   @non_repeat = true
   @effect_type = COLLAPSE
   @collapse_type = @battler.collapse_type unless @battler.actor?
   @battler_visible = false unless @battler.actor?
   @effect_duration = COLLAPSE_WAIT + 32 if @collapse_type == 2
   @effect_duration = 360 if @collapse_type == 3
 end  
 #--------------------------------------------------------------------------
 def normal_collapse
   if @effect_duration == 31
     $game_system.se_play($data_system.enemy_collapse_se)
     self.blend_type = 1
     self.color.set(255, 64, 64, 255)
   end
   self.opacity = 256 - (48 - @effect_duration) * 6 if @effect_duration <= 31
 end  
 #--------------------------------------------------------------------------
 def boss_collapse
   if @effect_duration == 320
     Audio.se_play("Audio/SE/124-Thunder02", 100, 80)
     self.flash(Color.new(255, 255, 255), 60)
     viewport.flash(Color.new(255, 255, 255), 20)
   end
   if @effect_duration == 290
     Audio.se_play("Audio/SE/124-Thunder02", 100, 80)
     self.flash(Color.new(255, 255, 255), 60)
     viewport.flash(Color.new(255, 255, 255), 20)
   end
   if @effect_duration == 250
     Audio.se_play("Audio/SE/049-Explosion02",100, 50)
     reset
     self.blend_type = 1
     self.color.set(255, 128, 128, 128)
   end
   if @effect_duration < 250
     self.src_rect.set(0, @effect_duration - 250, @width, @height - @shadow.bitmap.height / 2)
     self.x += 10 if @effect_duration % 2 == 0
     self.opacity = @effect_duration - 20
     return if @effect_duration < 100
     Audio.se_play("Audio/SE/049-Explosion02",100, 50) if @effect_duration % 80 == 0
   end
 end
end

#==============================================================================
# Sideview Battle System Version 2.2xp
#==============================================================================
#==============================================================================
# ■ Atoa Module
#==============================================================================
$atoa_script = {} if $atoa_script.nil?
$atoa_script["SBS Tankentai"] = true

#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 attr_accessor :spriteset
 #--------------------------------------------------------------------------
 def main
   fix_weapon_init
   start
   create_viewport
   process_transition
   update_battle
   terminate
   fix_weapon_end
 end
 #--------------------------------------------------------------------------
 def start
   @battle_start = true
   $game_temp.in_battle = true
   $game_temp.battle_turn = 0
   $game_temp.battle_event_flags.clear
   $game_temp.battle_abort = false
   $game_temp.battle_main_phase = false
   $game_temp.battleback_name = $game_map.battleback_name
   $game_temp.forcing_battler = nil
   $game_system.battle_interpreter.setup(nil, 0)
   @troop_id = $game_temp.battle_troop_id
   $game_troop.setup(@troop_id)
   for enemy in $game_troop.enemies
     enemy.true_immortal = enemy.immortal
   end
 end
 #--------------------------------------------------------------------------
 def create_viewport
   s1 = $data_system.words.attack
   s2 = $data_system.words.skill
   s3 = $data_system.words.guard
   s4 = $data_system.words.item
   @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
   @actor_command_window.y = 160
   @actor_command_window.back_opacity = 160
   @actor_command_window.active = false
   @actor_command_window.visible = false
   @party_command_window = Window_PartyCommand.new
   @help_window = Window_Help.new
   @help_window.back_opacity = 160
   @help_window.visible = false
   @active_battler_window = Window_NameCommand.new(@active_battler, 240, 64)
   @active_battler_window.visible = false
   @status_window = Window_BattleStatus.new
   @message_window = Window_Message.new
   @spriteset = Spriteset_Battle.new
   @wait_count, @escape_ratio = 0, 50
 end
 #--------------------------------------------------------------------------
 def process_transition
   if $data_system.battle_transition == ""
     Graphics.transition(20)
   else
     Graphics.transition(40, "Graphics/Transitions/" + $data_system.battle_transition)
   end
   start_phase1
 end
 #--------------------------------------------------------------------------
 def update_battle
   loop do
     Graphics.update
     Input.update
     update
     break if $scene != self
   end
 end
 #--------------------------------------------------------------------------
 def terminate
   $game_map.refresh
   Graphics.freeze
   @actor_command_window.dispose
   @party_command_window.dispose
   @help_window.dispose
   @status_window.dispose
   @message_window.dispose
   @skill_window.dispose if @skill_window != nil
   @item_window.dispose if @item_window != nil
   @result_window.dispose if @result_window != nil
   @spriteset.dispose
   if $scene.is_a?(Scene_Title)
     Graphics.transition
     Graphics.freeze
   end
   $scene = nil if $BTEST and not $scene.is_a?(Scene_Gameover)
 end
 #--------------------------------------------------------------------------
 def fix_weapon_init
   for member in $game_party.actors
     if member.weapons[0] == nil and member.weapons[1] != nil
       weapon_to_equip = member.armor1_id
       member.equip(1, 0)
       member.equip(0, weapon_to_equip)
       member.two_swords_change = true
     end
   end  
 end
 #--------------------------------------------------------------------------
 def fix_weapon_end
   for member in $game_party.actors
     if member.two_swords_change
       weapon_to_re_equip = member.weapon_id
       member.equip(0, 0)
       member.equip(1, weapon_to_re_equip)
       member.two_swords_change = false
     end  
   end
 end
 #--------------------------------------------------------------------------
 def update_basic
   Graphics.update
   Input.update
   $game_system.update
   $game_screen.update
   @spriteset.update
 end  
 #--------------------------------------------------------------------------
 def update_effects
   for battler in $game_party.actors + $game_troop.enemies
     if battler.exist?
       battler_sprite = @spriteset.actor_sprites[battler.index] if battler.actor?
       battler_sprite = @spriteset.enemy_sprites[battler.index] if battler.is_a?(Game_Enemy)
       battler_sprite.effects_update
     end
   end
 end
 #--------------------------------------------------------------------------
 def wait(duration)
   for i in 0...duration
     update_basic
   end
 end
 #--------------------------------------------------------------------------
 def pop_help(obj)
   @help_window.set_text(obj, 1)
   loop do
     update_basic
     break @help_window.visible = false if Input.trigger?(Input::C)
   end
 end
 #--------------------------------------------------------------------------
 alias start_phase1_n01 start_phase1 
 def start_phase1 
   for member in $game_party.actors + $game_troop.enemies
     member.dead_anim = member.dead? ? true : false
     @spriteset.set_stand_by_action(member.actor?, member.index) unless member.dead_anim
   end
   start_phase1_n01 
   $clear_enemies_actions = false
   if $preemptive
     pop_help(PREEMPTIVE_ALERT)
     $clear_enemies_actions = true
   end
   @battle_start = false unless $back_attack 
   return unless $back_attack 
   pop_help(BACK_ATTACK_ALERT)
   @battle_start = false
   $game_party.clear_actions
   start_phase4
 end
 #--------------------------------------------------------------------------
 alias start_phase4_n01 start_phase4
 def start_phase4
   start_phase4_n01
   @active_battler_window.visible = false
   if $clear_enemies_actions
     $clear_enemies_actions = false
     $game_troop.clear_actions
   end
 end
 #--------------------------------------------------------------------------
 def judge
   if $game_party.all_dead? or $game_party.actors.size == 0
     if $game_temp.battle_can_lose
       $game_system.bgm_play($game_temp.map_bgm)
       battle_end(2)
       return true
     end
     $game_temp.gameover = true
     return true
   end
   for enemy in $game_troop.enemies
     return false if enemy.exist?
   end
   process_victory
   return true
 end
 #--------------------------------------------------------------------------
 def update_phase2_escape
   enemies_agi = enemies_number = 0
   for enemy in $game_troop.enemies
     if enemy.exist?
       enemies_agi += enemy.agi
       enemies_number += 1
     end
   end
   enemies_agi /= [enemies_number, 1].max
   actors_agi = actors_number = 0
   for actor in $game_party.actors
     if actor.exist?
       actors_agi += actor.agi
       actors_number += 1
     end
   end
   actors_agi /= [actors_number, 1].max
   @success = rand(100) < @escape_ratio * actors_agi / enemies_agi
   @party_command_window.visible = false
   @party_command_window.active = false
   wait(2)
   if @success
     $game_system.se_play($data_system.escape_se)
     for actor in $game_party.actors
       unless actor.dead?
         @spriteset.set_action(true, actor.index, actor.run_success)
       end
     end
     pop_help(ESCAPE_SUCCESS)
     $game_system.bgm_play($game_temp.map_bgm)
     battle_end(1)
   else
     @escape_ratio += 5
     $game_party.clear_actions
     $game_system.se_play($data_system.escape_se)
     for actor in $game_party.actors
       unless actor.dead?
         @spriteset.set_action(true, actor.index,actor.run_ng)
       end
     end
     pop_help(ESCAPE_FAIL)
     start_phase4
   end
 end
 #--------------------------------------------------------------------------
 def process_victory
   for enemy in $game_troop.enemies
     break boss_wait = true if enemy.collapse_type == 3
   end
   wait(440) if boss_wait
   wait(WIN_WAIT) unless boss_wait
   for actor in $game_party.actors
     unless actor.restriction == 4
       @spriteset.set_action(true, actor.index,actor.win)
     end
   end
   start_phase5
 end
 #--------------------------------------------------------------------------
 def start_phase5
   @phase = 5
   $game_system.me_play($game_system.battle_end_me)
   $game_system.bgm_play($game_temp.map_bgm)
   treasures = []
   for enemy in $game_troop.enemies
     gold = gold.nil? ? enemy.gold : gold + enemy.gold
     treasures << treasure_drop(enemy) unless enemy.hidden
   end
   exp = gain_exp
   treasures = treasures.compact
   $game_party.gain_gold(gold)
   for item in treasures
     case item
     when RPG::Item
       $game_party.gain_item(item.id, 1)
     when RPG::Weapon
       $game_party.gain_weapon(item.id, 1)
     when RPG::Armor
       $game_party.gain_armor(item.id, 1)
     end
   end
   @result_window = Window_BattleResult.new(exp, gold, treasures)
   @result_window.add_multi_drops if $atoa_script['Multi Drop']
   @phase5_wait_count = 100
 end
 #--------------------------------------------------------------------------
 def treasure_drop(enemy)
   if rand(100) < enemy.treasure_prob
     treasure = $data_items[enemy.item_id] if enemy.item_id > 0
     treasure = $data_weapons[enemy.weapon_id] if enemy.weapon_id > 0
     treasure = $data_armors[enemy.armor_id] if enemy.armor_id > 0
   end
   return treasure
 end
 #--------------------------------------------------------------------------
 def gain_exp
   exp = exp_gained
   for i in 0...$game_party.actors.size
     actor = $game_party.actors[i]
     if actor.cant_get_exp? == false
       last_level = actor.level
       actor.exp += exp
       if actor.level > last_level
         @status_window.level_up(i)
       end
     end
   end
   return exp
 end
 #--------------------------------------------------------------------------
 def exp_gained
   for enemy in $game_troop.enemies
     exp = exp.nil? ? enemy.exp : exp + enemy.exp
   end
   if EXP_SHARE
     actor_number = 0
     for actor in $game_party.actors
       actor_number += 1 unless actor.cant_get_exp?
     end
     exp = exp / [actor_number, 1].max
   end
   return exp
 end
 #--------------------------------------------------------------------------
 alias acbs_update_phase5 update_phase5
 def update_phase5
   @result_window.update
   acbs_update_phase5
 end
 #--------------------------------------------------------------------------
 alias phase3_next_actor_n01 phase3_next_actor
 def phase3_next_actor
   if @active_battler != nil && @active_battler.inputable?
     @spriteset.set_action(true, @actor_index, @active_battler.command_a)
   end
   @wait_count = 32 if @actor_index == $game_party.actors.size-1 
   phase3_next_actor_n01
   if @active_battler != nil && @active_battler.inputable?
     @spriteset.set_action(true, @actor_index,@active_battler.command_b)
   end  
 end  
 #--------------------------------------------------------------------------
 alias phase3_prior_actor_n01 phase3_prior_actor
 def phase3_prior_actor
   if @active_battler != nil && @active_battler.inputable?
     @active_battler.current_action.clear
     @spriteset.set_action(true, @actor_index,@active_battler.command_a)
   end
   phase3_prior_actor_n01
   if @active_battler != nil && @active_battler.inputable?
     @active_battler.current_action.clear
     @spriteset.set_action(true, @actor_index,@active_battler.command_b)
   end
 end
 #--------------------------------------------------------------------------
 alias start_phase2_n01 start_phase2
 def start_phase2
   @active_battler_window.visible = false
   start_phase2_n01
 end
 #--------------------------------------------------------------------------
 alias phase3_setup_command_window_n01 phase3_setup_command_window
 def phase3_setup_command_window
   phase3_setup_command_window_n01
   @actor_command_window.x = COMMAND_WINDOW_POSITION[0]
   @actor_command_window.y = COMMAND_WINDOW_POSITION[1]
   @actor_command_window.z = 2000
   @actor_command_window.index = 0
   @actor_command_window.back_opacity = COMMAND_OPACITY
   @active_battler_window.refresh(@active_battler)
   @active_battler_window.visible = true if BATTLER_NAME_WINDOW
 end
 #--------------------------------------------------------------------------
 alias acbs_update_phase3_basic_command_scenebattle update_phase3_basic_command
 def update_phase3_basic_command
   if Input.trigger?(Input::C)
     case @actor_command_window.commands[@actor_command_window.index]
     when $data_system.words.attack
       $game_system.se_play($data_system.decision_se)
       @active_battler.current_action.kind = 0
       @active_battler.current_action.basic = 0
       @actor_command_window.active = false
       @actor_command_window.visible = false
       start_enemy_select
       return
     when $data_system.words.item
       $game_system.se_play($data_system.decision_se)
       @active_battler.current_action.kind = 2
       start_item_select
       return
     when $data_system.words.guard 
       $game_system.se_play($data_system.decision_se)
       @active_battler.current_action.kind = 0
       @active_battler.current_action.basic = 1
       phase3_next_actor
       return
     end
   end
   acbs_update_phase3_basic_command_scenebattle
 end
 #--------------------------------------------------------------------------
 def now_action(battler = @active_battler)
   return if battler.nil?
   @now_action = nil
   case battler.current_action.kind
   when 0
     @now_action = $data_weapons[battler.weapon_id] if battler.current_action.basic == 0
   when 1
     @now_action = $data_skills[battler.current_action.skill_id]
   when 2
     @now_action = $data_items[battler.current_action.item_id]
   end
 end
 #--------------------------------------------------------------------------
 def start_enemy_select
   now_action
   @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport2)
   @enemy_arrow.help_window = @help_window
   @actor_command_window.active = false
   @actor_command_window.visible = false
   @active_battler_window.visible = false
   @status_window.visible = true
 end
 #--------------------------------------------------------------------------
 alias start_actor_select_n01 start_actor_select
 def start_actor_select
   now_action
   start_actor_select_n01
   @status_window.visible = true
   @active_battler_window.visible = false
   @actor_arrow.input_right if @now_action.extension.include?("OTHERS")
 end
 #--------------------------------------------------------------------------
 alias update_phase3_actor_select_n01 update_phase3_actor_select
 def update_phase3_actor_select
   @actor_arrow.input_update_target if @now_action.extension.include?("OTHERS") and @actor_arrow.index == @active_battler.index
   update_phase3_actor_select_n01
 end
 #--------------------------------------------------------------------------
 alias update_phase3_n01 update_phase3
 def update_phase3
   if @enemy_arrow_all != nil
     update_phase3_select_all_enemies
     return
   elsif @actor_arrow_all != nil
     update_phase3_select_all_actors
     return
   elsif @battler_arrow_all != nil
     update_phase3_select_all_battlers
     return
   end
   update_phase3_n01
 end
 #--------------------------------------------------------------------------
 alias update_phase3_skill_select_n01 update_phase3_skill_select
 def update_phase3_skill_select
   @status_window.visible = false  if HIDE_WINDOW
   if Input.trigger?(Input::C)
     @skill = @skill_window.skill
     if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     @active_battler.current_action.skill_id = @skill.id
     @skill_window.visible = false
     if @skill.extension.include?("TARGETALL")
       $game_system.se_play($data_system.decision_se)
       start_select_all_battlers
       return
     end
     if (@skill.extension.include?("RANDOMTARGET") and @skill.scope <= 2) or @skill.scope == 2
       $game_system.se_play($data_system.decision_se)
       start_select_all_enemies
       return
     end
     if (@skill.extension.include?("RANDOMTARGET") and @skill.scope > 2) or @skill.scope == 4
       $game_system.se_play($data_system.decision_se)
       start_select_all_actors
       return
     end
   end
   update_phase3_skill_select_n01
 end
 #--------------------------------------------------------------------------
 alias update_phase3_item_select_n01 update_phase3_item_select
 def update_phase3_item_select
   @status_window.visible = false if HIDE_WINDOW
   if Input.trigger?(Input::C)
     @item = @item_window.item
     if @item == nil or not $game_party.item_can_use?(@item.id)
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     @active_battler.current_action.item_id = @item.id
     @item_window.visible = false
     if @item.extension.include?("TARGETALL")
       $game_system.se_play($data_system.decision_se)
       start_select_all_battlers
       return
     end
     if @item.extension.include?("RANDOMTARGET") and @item.scope <= 2 or @item.scope == 2
       $game_system.se_play($data_system.decision_se)
       start_select_all_enemies
       return
     end
     if (@item.extension.include?("RANDOMTARGET") and @item.scope > 2) or @item.scope == 4
       $game_system.se_play($data_system.decision_se)
       start_select_all_actors
       return
     end
   end
   update_phase3_item_select_n01
 end
 #--------------------------------------------------------------------------
 def update_phase3_select_all_enemies
   @enemy_arrow_all.update_multi_arrow
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     end_select_all_enemies
     return
   end
   if Input.trigger?(Input::C)
     $game_system.se_play($data_system.decision_se)
     if @skill_window != nil
       end_skill_select
     end 
     if @item_window != nil
       end_item_select
     end
     end_select_all_enemies
     phase3_next_actor
     return
   end
 end
 #--------------------------------------------------------------------------
 def update_phase3_select_all_actors
   @actor_arrow_all.update_multi_arrow
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     end_select_all_actors
     return
   end
   if Input.trigger?(Input::C)
     $game_system.se_play($data_system.decision_se)
     if @skill_window != nil
       end_skill_select
     end 
     if @item_window != nil
       end_item_select
     end
     end_select_all_actors
     phase3_next_actor
     return
   end
 end      
 #--------------------------------------------------------------------------
 def update_phase3_select_all_battlers
   @battler_arrow_all.update_multi_arrow
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     end_select_all_battlers
     return
   end
   if Input.trigger?(Input::C)
     $game_system.se_play($data_system.decision_se)
     if @skill_window != nil
       end_skill_select
     end 
     if @item_window != nil
       end_item_select
     end
     end_select_all_battlers
     phase3_next_actor
     return
   end
 end      
 #--------------------------------------------------------------------------
 def start_select_all_enemies
   now_action
   @status_window.visible = true
   @active_battler_window.visible = false
   @enemy_arrow_all = Arrow_Enemy_All.new(@spriteset.viewport2)
 end
 #--------------------------------------------------------------------------
 def start_select_all_actors
   now_action
   @status_window.visible = true
   @active_battler_window.visible = false
   @actor_arrow_all = Arrow_Actor_All.new(@spriteset.viewport2)
 end
 #--------------------------------------------------------------------------
 def start_select_all_battlers
   now_action
   @status_window.visible = true
   @active_battler_window.visible = false 
   @battler_arrow_all = Arrow_Battler_All.new(@spriteset.viewport2)
 end
 #--------------------------------------------------------------------------
 def end_select_all_actors
   @actor_arrow_all.dispose_multi_arrow
   @actor_arrow_all = nil
   @active_battler_window.visible = true if @actor_command_window.index == 0 and BATTLER_NAME_WINDOW
 end
 #--------------------------------------------------------------------------
 def end_select_all_enemies
   @enemy_arrow_all.dispose_multi_arrow
   @enemy_arrow_all = nil
   @active_battler_window.visible = true if @actor_command_window.index == 0 and BATTLER_NAME_WINDOW
 end
 #--------------------------------------------------------------------------
 def end_select_all_battlers
   @battler_arrow_all.dispose_multi_arrow
   @battler_arrow_all = nil
   @active_battler_window.visible = true if @actor_command_window.index == 0 and BATTLER_NAME_WINDOW
 end
 #--------------------------------------------------------------------------
 alias end_enemy_select_n01 end_enemy_select
 def end_enemy_select
   end_enemy_select_n01
   @active_battler_window.visible = true if @actor_command_window.index == 0 and BATTLER_NAME_WINDOW
 end
 #--------------------------------------------------------------------------
 alias start_skill_select_n01 start_skill_select
 def start_skill_select
   start_skill_select_n01
   @status_window.visible = false if HIDE_WINDOW
   @active_battler_window.visible = false
 end
 #--------------------------------------------------------------------------
 alias end_skill_select_n01 end_skill_select
 def end_skill_select
   end_skill_select_n01
   @status_window.visible = true
   @active_battler_window.visible = true if BATTLER_NAME_WINDOW
 end
 #--------------------------------------------------------------------------
 alias start_item_select_n01 start_item_select
 def start_item_select
   start_item_select_n01
   @status_window.visible = false if HIDE_WINDOW
   @active_battler_window.visible = false
 end
 #--------------------------------------------------------------------------
 alias end_item_select_n01 end_item_select
 def end_item_select
   end_item_select_n01
   @status_window.visible = true
   @active_battler_window.visible = true if BATTLER_NAME_WINDOW
 end
 #--------------------------------------------------------------------------
 alias make_action_orders_n01 make_action_orders
 def make_action_orders
   make_action_orders_n01
   for battler in @action_battlers
     skill_id = battler.current_action.skill_id
     item_id = battler.current_action.item_id
     next if battler.current_action.kind == 0
     extension = $data_skills[skill_id].extension if skill_id != 0
     extension = $data_items[item_id].extension if item_id != 0
     battler.current_action.speed = 9999 if extension.include?("FAST")
     battler.current_action.speed = -1 if extension.include?("SLOW")
   end
   @action_battlers.sort! {|a,b|
     b.current_action.speed - a.current_action.speed }
   for enemy in $game_troop.enemies
     if enemy.action_time[0] != 1
       action_time = 0
       for i in 1...enemy.action_time[0]
         action_time += 1 if rand(100) < enemy.action_time[1]
       end
       enemy.act_time = action_time
       action_time.times do
         enemy_order_time(enemy)
         action_time -= 1
         break if action_time == 0
       end  
       enemy.adj_speed = nil
     end
   end
 end
 #--------------------------------------------------------------------------
 def enemy_order_time(enemy)
   enemy.make_action_speed2(enemy.action_time[2])
   select_time = 0
   for member in @action_battlers
     select_time += 1
     break @action_battlers.push(enemy) if member.current_action.speed < enemy.adj_speed
     break @action_battlers.push(enemy) if select_time == @action_battlers.size
   end
 end  
 #--------------------------------------------------------------------------
 def update_phase4_step1
   return if @spriteset.effect?
   return @wait_count -= 1 if @wait_count > 0
   @help_window.visible = false
   return if judge
   if $game_temp.forcing_battler == nil
     setup_battle_event
      return if $game_system.battle_interpreter.running?
   end
   if $game_temp.forcing_battler != nil
     @action_battlers.delete($game_temp.forcing_battler)
     @action_battlers.unshift($game_temp.forcing_battler)
   end
   if @action_battlers.size == 0
     turn_ending
     start_phase2
     return
   end
   @animation1_id = 0
   @animation2_id = 0
   @common_event_id = 0
   @active_battler = @action_battlers.shift
   return if @active_battler.index == nil
   @active_battler.remove_states_auto
   @status_window.refresh
   @phase4_step = 2
 end
 #--------------------------------------------------------------------------
 def turn_ending
   for member in $game_party.actors + $game_troop.enemies
     member.current_action.clear
     next unless member.exist?
     member.slip_damage = false
     actor = member.actor?
     for state in member.battler_states
       member.remove_state(state.id) if state.extension.include?("ZEROTURNLIFT")
     end
     damage = 0
     for state in member.battler_states
       next unless state.extension.include?("SLIPDAMAGE")
       for ext in state.slip_extension
         if ext[0] == "hp"
           base_damage = ext[1] + member.maxhp * ext[2] / 100
           damage += base_damage + base_damage * (rand(5) - rand(5)) / 100
           slip_pop = ext[3]
           slip_dead = ext[4]
           slip_damage_flug = true
           member.slip_damage = true
         end
       end  
     end
     if member.slip_damage && member.exist? && !slip_damage_flug
       damage += member.apply_variance(member.maxhp / 10, 10)
       slip_dead = false
       slip_pop = true
       slip_damage_flug = true
       member.slip_damage = true
     end
     damage = member.hp - 1 if damage >= member.hp && slip_dead = false
     member.hp -= damage
     member.damage = damage if damage > 0
     member.perform_collapse if member.dead? && member.slip_damage
     @spriteset.set_damage_pop(actor, member.index, damage) if slip_pop
     @spriteset.set_stand_by_action(actor, member.index) if member.hp <= 0 and not member.dead_anim
     member.dead_anim = member.dead? ? true : false
   end
   @status_window.refresh
   wait(DMG_DURATION / 2) if slip_damage_flug
   slip_damage_flug = false
   for member in $game_party.actors + $game_troop.enemies
     next unless member.exist?
     actor = member.actor?
     damage = 0
     for state in member.battler_states
       next unless state.extension.include?("SLIPDAMAGE")
       for ext in state.slip_extension
         if ext[0] == "mp"
           base_damage = ext[1] + member.maxsp * ext[2] / 100
           damage += base_damage + base_damage * (rand(5) - rand(5)) / 100
           slip_pop = ext[3]
           slip_damage_flug = true
         end
       end
       member.sp_damage = true
       member.sp -= damage
       member.damage = damage if damage > 0
       @spriteset.set_damage_pop(actor, member.index, damage) if slip_pop
     end
   end
   @status_window.refresh
   wait(DMG_DURATION / 2) if slip_damage_flug
   for member in $game_party.actors + $game_troop.enemies
     next unless member.exist?
     actor = member.actor?
     damage = 0
     for state in member.battler_states
       next unless state.extension.include?("REGENERATION")
       for ext in state.slip_extension
         if ext[0] == "hp"
           base_damage = ext[1] + member.maxhp * ext[2] / 100
           damage += base_damage + base_damage * (rand(5) - rand(5)) / 100
           slip_pop = ext[3]
           slip_damage_flug = true
         end
       end
       member.hp -= damage
       member.damage = damage if damage < 0
       @spriteset.set_damage_pop(actor, member.index, damage) if slip_pop
     end   
   end
   @status_window.refresh
   wait(DMG_DURATION / 2) if slip_damage_flug
   for member in $game_party.actors + $game_troop.enemies
     next unless member.exist?
     actor = member.actor?
     damage = 0
     for state in member.battler_states
       next unless state.extension.include?("REGENERATION")
       for ext in state.slip_extension
         if ext[0] == "mp"
           base_damage = ext[1] + member.maxhp * ext[2] / 100
           damage += base_damage + base_damage * (rand(5) - rand(5)) / 100
           slip_pop = ext[3]
           slip_damage_flug = true
         end
       end
       member.sp_damage = true
       member.sp -= damage  
       member.damage = damage if damage < 0
       @spriteset.set_damage_pop(actor, member.index, damage) if slip_pop
     end
   end
   @status_window.refresh
   wait(DMG_DURATION / 2) if slip_damage_flug
 end
 #--------------------------------------------------------------------------
 alias update_phase4_step2_n01 update_phase4_step2
 def update_phase4_step2
   for member in $game_party.actors + $game_troop.enemies
     member.dead_anim = member.dead? ? true : false
   end
   if @active_battler.current_action.kind != 0
     obj = $data_skills[@active_battler.current_action.skill_id] if @active_battler.current_action.kind == 1
     obj = $data_items[@active_battler.current_action.item_id] if @active_battler.current_action.kind == 2
     @active_battler.white_flash = false if obj != nil &&obj.extension.include?("NOFLASH")
   end 
   @active_battler.active = true
   update_phase4_step2_n01
   if @active_battler != nil && @active_battler.derivation != 0
     @active_battler.current_action.kind = 1
     @active_battler.current_action.skill_id = @active_battler.derivation
     @action_battlers.unshift(@active_battler)
   end
   if @active_battler != nil && !@active_battler.actor? && @active_battler.act_time != 0
     @active_battler.make_action
     @active_battler.act_time -= 1
   end
   update_phase4_step6
 end
 #--------------------------------------------------------------------------
 alias update_phase4_step6_n01 update_phase4_step6
 def update_phase4_step6
   update_phase4_step6_n01
   @active_battler.active = false if @active_battler != nil
 end
 #--------------------------------------------------------------------------
 def make_basic_action_result
   if @active_battler.current_action.basic == 0
     execute_action_attack
     return
   end
   if @active_battler.current_action.basic == 1
     @help_window.set_text("#{@active_battler.name} defends", 1)
     @help_window.visible = true
     @active_battler.active = false
     @active_battler.defense_pose = true
     @spriteset.set_stand_by_action(@active_battler.actor?, @active_battler.index)
     wait(45)
     @help_window.visible = false
     return
   end
   if @active_battler.is_a?(Game_Enemy) and @active_battler.current_action.basic == 2
     @spriteset.set_action(false, @active_battler.index, @active_battler.run_success)
     $game_system.se_play($data_system.escape_se)
     @active_battler.escape
     pop_help("#{@active_battler.name} escaped...")
     return
   end
   if @active_battler.current_action.basic == 3
     @active_battler.active = false
     $game_temp.forcing_battler = nil
     @phase4_step = 1
     return
   end
 end
 #--------------------------------------------------------------------------
 def execute_action_attack
   if @active_battler.actor?
     if @active_battler.weapon_id == 0
       action = @active_battler.non_weapon 
       immortaling
     else  
       action = $data_weapons[@active_battler.weapon_id].base_action
       if $data_weapons[@active_battler.weapon_id].plus_state_set.include?(1)
         for member in $game_party.actors + $game_troop.enemies
           next if member.immortal
           next if member.dead?
           member.dying = true
         end
       else
         immortaling 
       end 
     end  
   else
     if @active_battler.weapon == 0
       action = @active_battler.base_action
       immortaling
     else
       action = $data_weapons[@active_battler.weapon].base_action
       if $data_weapons[@active_battler.weapon].plus_state_set.include?(1)
         for member in $game_party.actors + $game_troop.enemies
           next if member.immortal
           next if member.dead?
           member.dying = true
         end
       else
         immortaling 
       end
     end  
   end 
   target_decision
   @spriteset.set_action(@active_battler.actor?, @active_battler.index, action)
   playing_action
 end
 #--------------------------------------------------------------------------
 def make_attack_targets
   @target_battlers = []
   if @active_battler.is_a?(Game_Enemy)
     if @active_battler.restriction == 3
       target = $game_troop.random_target_enemy
     elsif @active_battler.restriction == 2
       target = $game_party.random_target_actor
     else
       index = @active_battler.current_action.target_index
       target = $game_party.smooth_target_actor(index)
     end
   end
   if @active_battler.actor?
     if @active_battler.restriction == 3
       target = $game_party.random_target_actor
     elsif @active_battler.restriction == 2
       target = $game_troop.random_target_enemy
     else
       index = @active_battler.current_action.target_index
       target = $game_troop.smooth_target_enemy(index)
     end
   end
   @target_battlers = [target]
   return @target_battlers
 end
 #--------------------------------------------------------------------------
 def make_skill_action_result
   skill = $data_skills[@active_battler.current_action.skill_id]
   if skill.plus_state_set.include?(1)
     for member in $game_party.actors + $game_troop.enemies
       next if member.immortal
       next if member.dead?
       member.dying = true
     end
   else
     immortaling 
   end
   return unless @active_battler.skill_can_use?(skill.id)
   target_decision(skill)
   @active_battler.consum_skill_cost(skill)
   @status_window.refresh
   @spriteset.set_action(@active_battler.actor?, @active_battler.index, skill.base_action)
   @help_window.set_text(skill.name, 1) unless skill.extension.include?("HELPHIDE")
   playing_action
   @common_event_id = skill.common_event_id
 end 
 #--------------------------------------------------------------------------
 def make_item_action_result
   item = $data_items[@active_battler.current_action.item_id]
   unless $game_party.item_can_use?(item.id)
     @phase4_step = 1
     return
   end
   if @item.consumable
     $game_party.lose_item(item.id, 1)
   end
   immortaling
   target_decision(item)
   @spriteset.set_action(@active_battler.actor?, @active_battler.index, item.base_action)
   @help_window.set_text(item.name, 1) unless item.extension.include?("HELPHIDE")
   playing_action
   @common_event_id = item.common_event_id
 end
 #--------------------------------------------------------------------------
 def target_decision(obj = nil)
   if obj != nil
     set_target_battlers(obj.scope)
     if obj.extension.include?("TARGETALL")
       @target_battlers = []
       if obj.scope != 5 or obj.scope != 6
         for target in $game_troop.enemies + $game_party.actors
           @target_battlers.push(target) if target.exist?
         end
       else
         for target in $game_troop.enemies + $game_party.actors
           @target_battlers.push(target) if target != nil && target.hp0?
         end
       end
     end
     @target_battlers.delete(@active_battler) if obj.extension.include?("OTHERS")
     if obj.extension.include?("RANDOMTARGET")
       randum_targets = @target_battlers.dup
       @target_battlers = [randum_targets[rand(randum_targets.size)]]
     end
   else
     @target_battlers = make_attack_targets
   end
   if @target_battlers.size == 0
     action = @active_battler.recover_action
     @spriteset.set_action(@active_battler.actor?, @active_battler.index, action)
   end
   @spriteset.set_target(@active_battler.actor?, @active_battler.index, @target_battlers)
 end   
 #--------------------------------------------------------------------------
 def playing_action
   loop do
     update_basic
     update_effects
     action = @active_battler.play
     next if action == 0
     @active_battler.play = 0
     if action[0] == "Individual"
       individual
     elsif action == "Can Collapse"
       unimmortaling
     elsif action == "Cancel Action"
       break action_end
     elsif action == "End"
       break action_end
     elsif action[0] == "OBJ_ANIM"
       damage_action(action[1])
     end
   end
 end
 #--------------------------------------------------------------------------
 def individual
   @individual_target = @target_battlers
   @stand_by_target = @target_battlers.dup
 end 
 #--------------------------------------------------------------------------
 def immortaling
   for member in $game_party.actors + $game_troop.enemies
     member.immortal = true unless member.dead?
   end  
 end  
 #--------------------------------------------------------------------------
 def unimmortaling
   return if @active_battler.individual
   for member in $game_party.actors + $game_troop.enemies
     member.immortal = false
     member.add_state(1) if member.dead?
     if member.dead? and not member.dead_anim
       member.perform_collapse
       @spriteset.set_stand_by_action(member.actor?, member.index)
     end
     member.dead_anim = member.dead? ? true : false
     next unless member.dead?
     resurrection(member)
   end
   update_basic
   @status_window.refresh
 end
 #--------------------------------------------------------------------------
 def resurrection(target)
   for state in target.battler_states
     for ext in state.extension
       name = ext.split('')
       next unless name[0] == "A"
       wait(25)
       name = name.join
       name.slice!("AUTOLIFE/")
       target.hp = target.maxhp * name.to_i / 100
       target.remove_state(1)
       target.remove_state(state.id)
       target.animation_id = RESURRECTION
       target.animation_hit = true
       target.anime_mirror = true if $back_attack
       @status_window.refresh
       wait($data_animations[RESURRECTION].frame_max * 2)
     end  
   end
 end
 #--------------------------------------------------------------------------
 def magic_reflection(target, obj)
   return if obj != nil and $data_skills[@active_battler.current_action.skill_id].int_f == 0
   for state in target.battler_states
     for ext in state.extension
       name = ext.split('')
       next unless name[0] == "M"
       if name[3] == "R"
         name = name.join
         name.slice!("MAGREFLECT/")
         target.animation_id = name.to_i
         target.animation_hit = true
         target.anime_mirror = true if $back_attack
         @reflection = true
       else
         name = name.join
         name.slice!("MAGNULL/")
         target.animation_id = name.to_i
         target.animation_hit = true
         target.anime_mirror = true if $back_attack
         @invalid = true
       end  
     end  
   end
 end
 #--------------------------------------------------------------------------
 def physics_reflection(target, obj)
   return if obj != nil && $data_skills[@active_battler.current_action.skill_id].str_f == 0
   for state in target.battler_states
     for ext in state.extension
       name = ext.split('')
       next unless name[0] == "P"
       if name[3] == "R"
         name = name.join
         name.slice!("PHYREFLECT/")
         target.animation_id = name.to_i
         target.animation_hit = true
         target.anime_mirror = true if $back_attack
         @reflection = true
       else
         name = name.join
         name.slice!("PHYNULL/")
         target.animation_id = name.to_i
         target.animation_hit = true
         target.anime_mirror = true if $back_attack
         @invalid = true
       end 
     end  
   end
 end
 #--------------------------------------------------------------------------
 def absorb_cost(target, obj)
   for state in target.battler_states
     if state.extension.include?("COSTABSORB")
       cost = @active_battler.calc_sp_cost(@active_battler, obj)
       return target.hp += cost if obj.extension.include?("HPCONSUME")
       return target.mp += cost
     end  
   end 
 end
 #--------------------------------------------------------------------------
 def absorb_attack(obj, target, index, actor)
   for ext in obj.extension
     return if target.evaded or target.missed or target.damage == 0 or target.damage == nil
     name = ext.split('')
     next unless name[3] == "G" and name[1] == "D" 
     name = name.join
     name.slice!("%DMGABSORB/")
     kind = "hp" unless target.sp_damage
     kind = "sp" if target.sp_damage
     absorb = target.damage * name.to_i / 100
     @wide_attack = true if obj.scope == 2 or obj.scope == 4 or obj.scope == 6 or obj.extension.include?("TARGETALL")
     if @wide_attack && @absorb == nil && @target_battlers.size != 1
       @absorb = absorb
       @absorb_target_size = @target_battlers.size - 2
     elsif @absorb != nil && @absorb_target_size > 0
       @absorb += absorb
       @absorb_target_size -= 1
     elsif @absorb != nil
       @absorb += absorb
       absorb_action = ["absorb", nil, kind, @absorb]
       @spriteset.set_damage_action(actor, index, absorb_action)
       @absorb = nil
       @absorb_target_size = nil
       @active_battler.perform_collapse
     else
       absorb_action = ["absorb", nil, kind, absorb]
       @spriteset.set_damage_action(actor, index, absorb_action)
       @active_battler.perform_collapse
     end  
   end
 end  
 #--------------------------------------------------------------------------
 def action_end
   @individual_target = nil
   @help_window.visible = false if @help_window != nil && @help_window.visible
   @active_battler.active = false
   unimmortaling
   for member in $game_troop.enemies
     member.non_dead = false if member.non_dead
   end
   if @active_battler.reflex != nil
     if @active_battler.current_action.kind == 1
       obj = $data_skills[@active_battler.current_action.skill_id]
       @active_battler.perfect_skill_effect(@active_battler, obj)
     elsif @active_battler.current_action.kind == 2
       obj = $data_items[@active_battler.current_action.item_id]
       @active_battler.item_effect(@active_battler, obj)
     else
       @active_battler.perfect_attack_effect(@active_battler)
     end
     pop_damage(@active_battler, obj, @active_battler.reflex)
     @active_battler.perform_collapse
     @active_battler.reflex = nil
     wait(COLLAPSE_WAIT)
   end
   if @active_battler.derivation != 0
     @active_battler.current_action.skill_id = @active_battler.derivation
     @active_battler.current_action.kind = 1
     @active_battler.derivation = 0
     @action_battlers.unshift(@active_battler)
   else
     @spriteset.set_stand_by_action(@active_battler.actor?, @active_battler.index)
     wait(ACTION_WAIT + 20)
   end
 end  
 #--------------------------------------------------------------------------
 def damage_action(action)
   @target_battlers = [@individual_target.shift] if @active_battler.individual
   if @active_battler.current_action.kind == 1
     obj = $data_skills[@active_battler.current_action.skill_id]
     for target in @target_battlers
       return if target == nil
       if obj.scope == 5 or obj.scope == 6
         return unless target.dead?
       else
         return if target.dead?
       end
       if target.hp == 0 && obj.scope != 5 && obj.scope != 6
         target.perfect_skill_effect(@active_battler, obj)
       elsif obj.extension.include?("NOEVADE")
         target.perfect_skill_effect(@active_battler, obj)
       else
         magic_reflection(target, obj) unless obj.extension.include?("IGNOREREFLECT")
         physics_reflection(target, obj) unless obj.extension.include?("IGNOREREFLECT")
         target.skill_effect(@active_battler, obj) unless @reflection or @invalid
       end
       pop_damage(target, obj, action) unless @reflection or @invalid
       absorb_cost(target, obj)
       @active_battler.reflex = action if @reflection
       @reflection = false
       @invalid = false
     end
   elsif @active_battler.current_action.kind == 2
     obj = $data_items[@active_battler.current_action.item_id]
     for target in @target_battlers
       return if target == nil 
       if obj.scope == 5 or obj.scope == 6
         return unless target.dead?
       else
         return if target.dead?
       end 
       target.revival = true if obj.scope == 5 or obj.scope == 6
       target.item_effect(obj)
       pop_damage(target, obj, action)
     end
   else 
     for target in @target_battlers
       return if target == nil or target.dead?
       physics_reflection(target, nil)
       target.perfect_attack_effect(@active_battler) if target.hp <= 0
       target.attack_effect(@active_battler) unless target.hp <= 0 unless @reflection or @invalid
       pop_damage(target, obj, action) unless @reflection or @invalid
       @active_battler.reflex = action if @reflection
       @reflection = false
       @invalid = false
     end
   end
   return if obj == nil
   target_decision(obj) if obj.extension.include?("RANDOMTARGET")
 end
 #--------------------------------------------------------------------------
 def pop_damage(target, obj, action)
   index = @active_battler.index
   actor = @active_battler.actor?
   if obj != nil && obj.extension.size != 0
     absorb_attack(obj, target, index, actor)
     action[2] = false if obj.extension.include?("NOOVERKILL")
   end
   @spriteset.set_damage_action(target.actor?, target.index, action)
   @status_window.refresh
 end
end  

#==============================================================================
# ■ Scene_Map
#==============================================================================
class Scene_Map
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 alias call_battle_n01 call_battle
 #--------------------------------------------------------------------------
 def call_battle
   $back_attack = $preemptive = false
   preemptive_or_back_attack
   call_battle_n01
 end
 #--------------------------------------------------------------------------
 def preemptive_or_back_attack  
   enemies_agi = 0
   for enemy in $game_troop.enemies
     enemies_agi += enemy.agi
   end
   enemies_agi /= [$game_troop.enemies.size, 1].max
   actors_agi = 0
   for actor in $game_party.actors
     actors_agi += actor.agi
   end
   actors_agi /= [$game_party.actors.size, 1].max
   preemptive_plus
   if actors_agi >= enemies_agi
     percent_preemptive = PREEMPTIVE_RATE * ($preemptive_plus ? 3 : 1)
     percent_back_attack = BACK_ATTACK_RATE / 2
   else
     percent_preemptive = (PREEMPTIVE_RATE / 2) * ($preemptive_plus ? 3 : 1)
     percent_back_attack = BACK_ATTACK_RATE
   end
   if rand(100) < percent_preemptive
     $preemptive = true
   elsif rand(100) < percent_back_attack
     $back_attack = true
   end
   special_back_attack_conditions
   special_preemptive_conditions
   $preemptive = false if $back_attack or !PREEMPTIVE
   $back_attack = false if !BACK_ATTACK
 end
 #--------------------------------------------------------------------------
 def special_back_attack_conditions
   for i in 0...BACK_ATTACK_SWITCH.size
     return $back_attack = true if $game_switches[bACK_ATTACK_SWITCH[i]]
   end
   for i in 0...NO_BACK_ATTACK_SWITCH.size
     return $back_attack = false if $game_switches[NON_BACK_ATTACK_SWITCH[i]]
   end
   for actor in $game_party.actors
     return $back_attack = false if NON_BACK_ATTACK_WEAPONS.include?(actor.weapon_id)
     return $back_attack = false if NON_BACK_ATTACK_ARMOR1.include?(actor.armor1_id)
     return $back_attack = false if NON_BACK_ATTACK_ARMOR2.include?(actor.armor2_id)
     return $back_attack = false if NON_BACK_ATTACK_ARMOR3.include?(actor.armor3_id)
     return $back_attack = false if NON_BACK_ATTACK_ARMOR4.include?(actor.armor4_id)
     for i in 0...NON_BACK_ATTACK_SKILLS.size
       return $back_attack = false if actor.skill_id_learn?(NON_BACK_ATTACK_SKILLS[i])
     end  
   end
 end
 #--------------------------------------------------------------------------
 def special_preemptive_conditions
   for i in 0...PREEMPTIVE_SWITCH.size
     return $preemptive = true if $game_switches[PREEMPTIVE_SWITCH[i]]
   end
   for i in 0...NO_PREEMPTIVE_SWITCH.size
     return $preemptive = false if $game_switches[NON_PREEMPTIVE_SWITCH[i]]
   end
 end
 #--------------------------------------------------------------------------
 def preemptive_plus
   $preemptive_plus = false
   for actor in $game_party.actors
    return $preemptive_plus = true if PREEMPTIVE_WEAPONS.include?(actor.weapon_id)
    return $preemptive_plus = true if PREEMPTIVE_ARMOR1.include?(actor.armor1_id)
    return $preemptive_plus = true if PREEMPTIVE_ARMOR2.include?(actor.armor2_id)
    return $preemptive_plus = true if PREEMPTIVE_ARMOR3.include?(actor.armor3_id)
    return $preemptive_plus = true if PREEMPTIVE_ARMOR4.include?(actor.armor4_id)
     for i in 0...PREEMPTIVE_SKILLS.size
       return $preemptive_plus = true if actor.skill_id_learn?(PREEMPTIVE_SKILLS[i])
     end  
   end
 end
end

#==============================================================================
# ■ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
 #--------------------------------------------------------------------------
 attr_reader   :viewport1                
 attr_reader   :viewport2               
 attr_accessor :actor_sprites
 attr_accessor :enemy_sprites
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 def initialize
   @viewport1 = Viewport.new(0, 0, 640, 480)
   @viewport2 = Viewport.new(0, 0, 640, 480)
   @viewport3 = Viewport.new(0, 0, 640, 480)
   @viewport4 = Viewport.new(0, 0, 640, 480)
   @viewport2.z = 101
   @viewport3.z = 200
   @viewport4.z = 5000
   @battleback_sprite = Sprite.new(@viewport1)
   @battleback_sprite.mirror = true if $back_attack && BACK_ATTACK_BATTLE_BACK_MIRROR
   @enemy_sprites = []
   for enemy in $game_troop.enemies
     @enemy_sprites.push(Sprite_Battler.new(@viewport2, enemy))
   end
   @actor_sprites = []
   for i in 0...$game_party.actors.size
     @actor_sprites.push(Sprite_Battler.new(@viewport2, $game_party.actors[i]))
   end
   @weather = RPG::Weather.new(@viewport1)
   @picture_sprites = []
   for i in 51..100
     @picture_sprites.push(Sprite_Picture.new(@viewport3, $game_screen.pictures[i]))
   end
   @timer_sprite = Sprite_Timer.new
   update
 end
 #--------------------------------------------------------------------------
 def update
   if $game_party.actors.size > @actor_sprites.size
     for i in @actor_sprites.size...$game_party.actors.size
       @actor_sprites.push(Sprite_Battler.new(@viewport2, $game_party.actors[i]))
     end
   elsif @actor_sprites.size > $game_party.actors.size
     for i in 0...@actor_sprites.size
       @actor_sprites[i].dispose
     end
     @actor_sprites = []
     for i in 0...$game_party.actors.size
       @actor_sprites.push(Sprite_Battler.new(@viewport2, $game_party.actors[i]))
     end
   end
   for i in 0...$game_party.actors.size
     @actor_sprites[i].battler = $game_party.actors[i]
   end
   if @battleback_name != $game_temp.battleback_name
     @battleback_name = $game_temp.battleback_name
     if @battleback_sprite.bitmap != nil
       @battleback_sprite.bitmap.dispose
     end
     @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
     @battleback_sprite.src_rect.set(0, 0, 640, 480)
   end
   for sprite in @enemy_sprites + @actor_sprites
     sprite.update
   end
   @weather.type = $game_screen.weather_type
   @weather.max = $game_screen.weather_max
   @weather.update
   for sprite in @picture_sprites
     sprite.update
   end
   @timer_sprite.update
   @viewport1.tone = $game_screen.tone
   @viewport1.ox = $game_screen.shake
   @viewport2.tone = $game_screen.tone
   @viewport2.ox = $game_screen.shake
   @viewport4.color = $game_screen.flash_color
   @viewport1.update
   @viewport2.update
   @viewport4.update
 end
 #--------------------------------------------------------------------------
 def set_damage_action(actor, index, action)
   return if index.nil?
   @actor_sprites[index].damage_action(action) if actor
   @enemy_sprites[index].damage_action(action) unless actor
 end
 #--------------------------------------------------------------------------
 def set_damage_pop(actor, index, damage)
   return if index.nil?
   @actor_sprites[index].damage_pop if actor
   @enemy_sprites[index].damage_pop unless actor
 end
 #--------------------------------------------------------------------------
 def set_target(actor, index, target)
   return if index.nil?
   @actor_sprites[index].get_target(target) if actor
   @enemy_sprites[index].get_target(target) unless actor
 end
 #--------------------------------------------------------------------------
 def set_action(actor, index, kind)
   return if index.nil?
   @actor_sprites[index].start_action(kind) if actor
   @enemy_sprites[index].start_action(kind) unless actor
 end  
 #--------------------------------------------------------------------------
 def set_stand_by_action(actor, index)
   return if index.nil?
   @actor_sprites[index].push_stand_by if actor
   @enemy_sprites[index].push_stand_by unless actor
 end
end

#==============================================================================
# ■ Sprite_MoveAnime
#==============================================================================
class Sprite_MoveAnime < RPG::Sprite
 #--------------------------------------------------------------------------
 attr_accessor :battler
 attr_accessor :base_x
 attr_accessor :base_y
 #--------------------------------------------------------------------------
 def initialize(viewport,battler = nil)
   super(viewport)
   @battler = battler
   self.visible = false
   @base_x = 0
   @base_y = 0
   @move_x = 0
   @move_y = 0
   @moving_x = 0
   @moving_y = 0
   @orbit = 0
   @orbit_plus = 0
   @orbit_time = 0
   @through = false
   @finish = false
   @time = 0
   @angle = 0
   @angling = 0
 end
 #--------------------------------------------------------------------------
 def anime_action(id,mirror,distanse_x,distanse_y,type,speed,orbit,weapon,icon_index,icon_weapon)
   @time = speed
   @moving_x = distanse_x / speed
   @moving_y = distanse_y / speed
   @through = true if type == 1
   @orbit_plus = orbit
   @orbit_time = @time
   if weapon != ""
     action = ANIME[weapon].dup
     @angle = action[0]
     end_angle = action[1]
     time = action[2]
     @angling = (end_angle - @angle)/ time
     self.angle = @angle
     self.mirror = mirror
     if icon_weapon
       self.bitmap = RPG::Cache.icon(icon_index)
       self.ox = 12
       self.oy = 12
     else 
       self.bitmap = RPG::Cache.character(icon_index, 0)
       self.ox = self.bitmap.width / 2
       self.oy = self.bitmap.height / 2
     end  
     self.visible = true
     self.z = 1000
   end  
   self.x = @base_x + @move_x
   self.y = @base_y + @move_y + @orbit
   if id != 0 && !icon_weapon
     animation($data_animations[id],true)
   elsif id != 0 && icon_weapon
     loop_animation($data_animations[id])
   end
 end  
 #--------------------------------------------------------------------------  
 def action_reset
   @moving_x = @moving_y = @move_x = @move_y = @base_x = @base_y = @orbit = 0
   @orbit_time = @angling = @angle = 0    
   @through = self.visible = @finish = false
   dispose_animation
 end   
 #--------------------------------------------------------------------------
 def finish?
   return @finish
 end 
 #--------------------------------------------------------------------------
 def update
   super
   @time -= 1
   if @time >= 0
     @move_x += @moving_x
     @move_y += @moving_y
     if @time < @orbit_time / 2
       @orbit_plus = @orbit_plus * 5 / 4
     elsif @time == @orbit_time / 2
       @orbit_plus *= -1
     else
       @orbit_plus = @orbit_plus * 2 / 3
     end  
     @orbit += @orbit_plus
   end    
   @time = 100 if @time < 0 && @through
   @finish = true if @time < 0 && !@through
   self.x = @base_x + @move_x
   self.y = @base_y + @move_y + @orbit
   if self.x < -200 or self.x > 840 or self.y < -200 or self.y > 680
     @finish = true
   end
   if self.visible
     @angle += @angling
     self.angle = @angle
   end  
 end
end

#==============================================================================
# ■ Sprite_Weapon
#==============================================================================
class Sprite_Weapon < RPG::Sprite
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 attr_accessor :battler
 #--------------------------------------------------------------------------
 def initialize(viewport,battler = nil)
   super(viewport)
   @battler = battler
   @action = []
   @move_x = 0
   @move_y = 0
   @move_z = 0
   @plus_x = 0
   @plus_y = 0
   @angle = 0
   @zoom_x = 1
   @zoom_y = 1
   @moving_x = 0
   @moving_y = 0
   @angling = 0
   @zooming_x = 1
   @zooming_y = 1
   @freeze = -1
   @mirroring = false
   @time = ANIME_PATTERN + 1
   weapon_graphics 
 end
 #--------------------------------------------------------------------------
 def dispose
   self.bitmap.dispose if self.bitmap != nil
   super
 end
 #--------------------------------------------------------------------------
 def weapon_graphics(left = false)
   if @battler.actor?
     weapon = @battler.weapons[0] unless left
     weapon = @battler.weapons[1] if left
   else
     weapon = $data_weapons[@battler.weapon]
     @mirroring = true if @battler.action_mirror
   end
   return if weapon == nil
   if weapon.graphic == ""
     self.bitmap = RPG::Cache.icon(weapon.icon_name)
     @weapon_width = @weapon_height = 24
   else
     self.bitmap = RPG::Cache.icon(weapon.graphic)
     @weapon_width = self.bitmap.width
     @weapon_height = self.bitmap.height
   end
 end
 #--------------------------------------------------------------------------
 def freeze(action)
   @freeze = action
 end
 #--------------------------------------------------------------------------
 def weapon_action(action,loop)
   if action == ""
     self.visible = false
   elsif @weapon_id == 0
     self.visible = false
   else
     @action = ANIME[action]
     act0 = @action[0]
     act1 = @action[1]
     act2 = @action[2]
     act3 = @action[3]
     act4 = @action[4]
     act5 = @action[5]
     act6 = @action[6]
     act7 = @action[7]
     act8 = @action[8]
     act9 = @action[9]
     act10 = @action[10]
     if @mirroring
       act0 *= -1
       act3 *= -1
       act4 *= -1
       act9 *= -1
     end
     if $back_attack && BACK_ATTACK
       act0 *= -1
       act3 *= -1
       act4 *= -1
       act9 *= -1
     end
     time = ANIME_PATTERN 
     if act2
       self.z = @battler.position_z + 1
     else
       self.z = @battler.position_z - 1
     end
     if act6
       if self.mirror
         self.mirror = false
       else
         self.mirror = true
       end
     end
     if @mirroring
       if self.mirror
         self.mirror = false
       else
         self.mirror = true
       end
     end 
     if $back_attack && BACK_ATTACK
       if self.mirror
         self.mirror = false
       else
         self.mirror = true
       end
     end  
     @moving_x = act0 / time
     @moving_y = act1 / time
     @angle = act3
     self.angle = @angle
     @angling = (act4 - act3)/ time
     @angle += (act4 - act3) % time
     @zooming_x = (1 - act7) / time
     @zooming_y = (1 - act8) / time
     if self.mirror
       case act5
       when 1
         act5 = 2
       when 2
         act5 = 1
       when 3
         act5 = 4
       when 4
         act5 = 3
       end  
     end    
     case act5
     when 0
       self.ox = @weapon_width / 2
       self.oy = @weapon_height / 2
     when 1
       self.ox = 0
       self.oy = 0
     when 2
       self.ox = @weapon_width
       self.oy = 0
     when 3
       self.ox = 0
       self.oy = @weapon_height
     when 4
       self.ox = @weapon_width
       self.oy = @weapon_height
     end  
     @plus_x = act9
     @plus_y = act10
     @loop = true if loop == 0
     @angle -= @angling
     @zoom_x -= @zooming_x
     @zoom_y -= @zooming_y
     @move_x -= @moving_x
     @move_y -= @moving_y 
     @move_z = 1000 if act2
     if @freeze != -1
       for i in 0..@freeze + 1
         @angle += @angling
         @zoom_x += @zooming_x
         @zoom_y += @zooming_y
         @move_x += @moving_x
         @move_y += @moving_y 
       end
       @angling = 0
       @zooming_x = 0
       @zooming_y = 0
       @moving_x = 0
       @moving_y = 0
     end 
     self.visible = true
   end 
 end  
 #--------------------------------------------------------------------------
 def action_reset
   @moving_x = @moving_y = @move_x = @move_y = @plus_x = @plus_y = 0
   @angling = @zooming_x = @zooming_y = @angle = self.angle = @move_z = 0
   @zoom_x = @zoom_y = self.zoom_x = self.zoom_y = 1
   self.mirror = self.visible = @loop = false
   @freeze = -1
   @action = []
   @time = ANIME_PATTERN + 1
 end 
 #--------------------------------------------------------------------------
 def action_loop
   @angling *= -1
   @zooming_x *= -1
   @zooming_y *= -1
   @moving_x *= -1
   @moving_y *= -1
 end  
 #--------------------------------------------------------------------------
 def mirroring 
   return @mirroring = false if @mirroring
   @mirroring = true
 end  
 #--------------------------------------------------------------------------
 def action
   return if @time <= 0
   @time -= 1
   @angle += @angling
   @zoom_x += @zooming_x
   @zoom_y += @zooming_y
   @move_x += @moving_x
   @move_y += @moving_y 
   if @loop && @time == 0
     @time = ANIME_PATTERN + 1
     action_loop
   end 
 end  
 #--------------------------------------------------------------------------
 def update
   super
   self.angle = @angle
   self.zoom_x = @zoom_x
   self.zoom_y = @zoom_y
   self.x = @battler.position_x + @move_x + @plus_x
   self.y = @battler.position_y + @move_y + @plus_y
   self.z = @battler.position_z + @move_z - 1
 end
end

#==============================================================================
# Game_Party
#==============================================================================
class Game_Party
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 def add_actor(actor_id)
   actor = $game_actors[actor_id]
   if @actors.size < MAX_MEMBER and not @actors.include?(actor)
     @actors.push(actor)
     $game_player.refresh
   end
 end
end

#==============================================================================
# ■ RPG::Weapon
#==============================================================================
class RPG::Weapon
 #--------------------------------------------------------------------------
 def magic?
   return false
 end
end

#==============================================================================
# ■ RPG::Skill
#==============================================================================
class RPG::Skill
 #--------------------------------------------------------------------------
 def magic?
   return @atk_f == 0 ? true : false
 end
end

#==============================================================================
# ■ RPG::Item
#==============================================================================
class RPG::Item
 #--------------------------------------------------------------------------
 def magic?
   return false
 end
end

#==============================================================================
# ■ RPG::Cache
#==============================================================================
module RPG::Cache
 def self.faces(filename, hue = 0)
   self.load_bitmap('Graphics/Faces/', filename, hue)
 end
end

#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 attr_accessor :sp_damage
 attr_accessor :collapse
 attr_accessor :move_x
 attr_accessor :move_y
 attr_accessor :move_z
 attr_accessor :jump
 attr_accessor :active
 attr_accessor :non_dead
 attr_accessor :slip_damage
 attr_accessor :derivation
 attr_accessor :individual
 attr_accessor :play
 attr_accessor :force_action
 attr_accessor :force_target
 attr_accessor :revival
 attr_accessor :reflex
 attr_accessor :absorb
 attr_accessor :anime_mirror
 attr_accessor :dying
 attr_accessor :state_animation_id
 attr_accessor :dead_anim
 attr_accessor :missed
 attr_accessor :evaded
 attr_accessor :true_immortal
 attr_accessor :defense_pose
 attr_reader   :base_position_x
 attr_reader   :base_position_y  
 attr_reader   :base_height  
 #--------------------------------------------------------------------------
 alias initialize_n01 initialize
 def initialize
   initialize_n01
   @move_x = @move_y = @move_z = @plus_y = @jump = @derivation = @act_time = 0
   @force_action = @force_target = @base_position_x = @base_position_y = 0
   @absorb = @play = @now_state = @state_frame = @state_animation_id = 0
   @active = @non_dead = @individual = @slip_damage = @revival = false
   @collapse = @sp_damage = @anime_mirror = @dying = false
   @evaded = @missed = false
   @anim_states = []
 end 
 #--------------------------------------------------------------------------
 def state_id
   return @states[@states.size - 1]
 end
 #--------------------------------------------------------------------------
 def in_danger
   return @hp <= self.maxhp / 4
 end
 #--------------------------------------------------------------------------
 def battler_states
   bat_states = []
   for i in self.states
     bat_states.push($data_states[i])
   end
   return bat_states
 end
 #--------------------------------------------------------------------------
 def apply_variance(damage, variance)
   if damage != 0
     amp = [damage.abs * variance / 100, 0].max
     damage += rand(amp+1) + rand(amp+1) - amp
   end
   return damage
 end
 #--------------------------------------------------------------------------
 def state_animation_id
   return 0 if @states.empty?
   return 0 if @states.include?(1)
   @state_frame -= 1 if @state_frame > 0
   return @state_animation_id if @state_frame > 0
   if @anim_states.empty?
     for state in @states
       @anim_states << state if $data_states[state].animation_id > 0
     end
   end
   now_state = @anim_states.shift
   return 0 if now_state.nil?
   @state_animation_id = $data_states[now_state].animation_id
   return 0 if $data_animations[@state_animation_id].nil?
   @state_frame = $data_animations[@state_animation_id].frame_max * STATE_CYCLE_TIME * 2
   return @state_animation_id
 end
 #--------------------------------------------------------------------------
 def skill_can_use?(skill_id)
   skill = $data_skills[skill_id]
   if skill.extension.include?("CONSUMEHP")
     return false if calc_sp_cost(self, skill) >= self.hp
   else  
     return false if calc_sp_cost(self, skill) > self.sp
   end
   return false if dead?
   return false if skill.atk_f == 0 and self.restriction == 1
   occasion = skill.occasion
   return (occasion == 0 or occasion == 1) if $game_temp.in_battle
   return (occasion == 0 or occasion == 2)
 end  
 #--------------------------------------------------------------------------
 def calc_sp_cost(user, skill)
   cost = skill.sp_cost
   if skill.extension.include?("%COSTMAX")
     return user.maxhp * cost / 100 if skill.extension.include?("CONSUMEHP")
     return user.maxsp * cost / 100
   elsif skill.extension.include?("%COSTNOW")
     return user.hp * cost / 100 if skill.extension.include?("CONSUMEHP")
     return user.sp * cost / 100
   end
   return cost
 end 
 #--------------------------------------------------------------------------
 def consum_skill_cost(skill)
   return false unless skill_can_use?(skill.id)
   cost = calc_sp_cost(self, skill)
   return self.hp -= cost if skill.extension.include?("CONSUMEHP")
   return self.sp -= cost
 end 
 #--------------------------------------------------------------------------
 def attack_effect(attacker)
   self.critical = @evaded = @missed = false
   hit_result = (rand(100) < attacker.hit)
   set_attack_result(attacker) if hit_result
   weapon = attacker.actor? ? $data_weapons[attacker.weapon_id] : nil
   if hit_result
     set_attack_state_change(attacker)
   else
     self.critical = false
     @missed = true
   end
   self.damage = POP_EVA if @evaded
   self.damage = POP_MISS if @missed
   return true
 end
 #--------------------------------------------------------------------------
 def perfect_attack_effect(attacker)
   self.critical = @evaded = @missed = false
   set_attack_result(attacker)
   weapon = attacker.actor? ? $data_weapons[attacker.weapon_id] : nil
   set_attack_state_change(attacker)
   return true
 end
 #--------------------------------------------------------------------------
 def set_attack_result(attacker)
   set_attack_damage_value(attacker)
   if self.damage > 0
     self.damage /= 2 if self.guarding?
     set_attack_critical(attacker)
     set_critical_damage(attacker) if self.critical
   end
   apply_variance(15) if self.damage.abs > 0
   set_attack_hit_value(attacker)
 end
 #--------------------------------------------------------------------------
 def set_attack_damage_value(attacker)
   case DAMAGE_ALGORITHM_TYPE
   when 0
     atk = [attacker.atk - (self.pdef / 2), 0].max
     str = [20 + attacker.str, 0].max
   when 1
     atk = [attacker.atk - ((attacker.atk * self.pdef) / 1000), 0].max
     str = [20 + attacker.str, 0].max
   when 2
     atk = 20
     str = [(attacker.str * 4) - (self.dex * 2) , 0].max
   when 3
     atk = [(10 + attacker.atk) - (self.pdef / 2), 0].max
     str = [(20 + attacker.str) - (self.dex / 2), 0].max
   end
   self.damage = atk * str / 20
   self.damage = 1 if self.damage == 0 and (rand(100) > 40)
   self.damage *= elements_correct(attacker.element_set)
   self.damage /= 100
 end
 #--------------------------------------------------------------------------
 def apply_variance(variance)
   amp = [self.damage.abs * variance / 100, 1].max
   self.damage += rand(amp + 1) + rand(amp + 1) - amp
 end
 #--------------------------------------------------------------------------
 def set_attack_hit_value(attacker)
   atk_hit = DAMAGE_ALGORITHM_TYPE > 1 ? attacker.agi : attacker.dex
   eva = (8 * self.agi / atk_hit) + self.eva
   hit = self.damage < 0 ? 100 : 100 - eva
   hit = self.cant_evade? ? 100 : hit
   hit_result = (rand(100) < hit)
   @evaded = true unless hit_result
 end
 #--------------------------------------------------------------------------
 def set_attack_critical(attacker)
   atk_crt = DAMAGE_ALGORITHM_TYPE > 1 ? attacker.agi : attacker.dex
   self.critical = rand(100) < 5 * atk_crt / self.agi
 end
 #--------------------------------------------------------------------------
 def set_critical_damage(attacker)
   self.damage += self.damage
 end
 #--------------------------------------------------------------------------
 def set_attack_state_change(attacker)
   remove_states_shock
   effective = apply_damage(attacker)
   @state_changed = false
   states_plus(attacker.plus_state_set)
   states_minus(attacker.minus_state_set)
   return effective
 end
 #--------------------------------------------------------------------------
 def skill_effect(user, skill)
   self.critical = @evaded = @missed = false
   if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
      ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
     return false
   end
   effective = false
   effective |= skill.common_event_id > 0
   hit = skill.hit
   hit *= set_skill_hit(user, skill)
   hit_result = (rand(100) < hit)
   effective |= hit < 100
   effective |= set_skill_result(user, skill, effective) if hit_result
   if hit_result
     effective |= set_skill_state_change(user, skill, effective)
   else
     @missed = true unless @evaded
   end
   self.damage = nil unless $game_temp.in_battle
   self.damage = POP_EVA if @evaded
   self.damage = POP_MISS if @missed
   return effective
 end
 #--------------------------------------------------------------------------
 def perfect_skill_effect(user, skill)
   self.critical = @evaded = @missed = false
   if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
      ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
     return false
   end
   effective = false
   effective |= skill.common_event_id > 0
   effective |= set_skill_result(user, skill, effective)
   effective |= set_skill_state_change(user, skill, effective)
   self.damage = nil unless $game_temp.in_battle
   return effective
 end
 #--------------------------------------------------------------------------
 def set_skill_hit(user, skill)
   if skill.magic?
     return 1
   else
     return user.hit / 100
   end
 end
 #--------------------------------------------------------------------------
 def set_skill_result(user, skill, effective)
   set_skill_damage_value(user, skill)
   if self.damage > 0 
     self.damage /= 2 if self.guarding?
   end
   apply_variance(skill.variance) if skill.variance > 0 and self.damage.abs > 0
   effective |= set_skill_hit_value(user, skill, effective)
   return effective
 end
 #--------------------------------------------------------------------------
 def set_skill_damage_value(user, skill)
   power = set_skill_power(user, skill)
   if power > 0
     case DAMAGE_ALGORITHM_TYPE
     when 0,3
       power -= (self.pdef * skill.pdef_f) / 200
       power -= (self.mdef * skill.mdef_f) / 200
     when 1
       power -= (power * (self.pdef * skill.pdef_f)) / 100000
       power -= (power * (self.mdef * skill.mdef_f)) / 100000
     when 2
       power -= ((self.dex * 2 * skill.pdef_f) / 100)
       power -= ((self.int * 1 * skill.mdef_f) / 100)
     end
     power = [power, 0].max
   end
   rate = set_skill_rate(user, skill) unless DAMAGE_ALGORITHM_TYPE == 2
   rate = [rate, 0].max
   self.damage = power * rate / 20
   self.damage *= elements_correct(skill.element_set)
   self.damage /= 100
 end
 #--------------------------------------------------------------------------
 def set_skill_power(user, skill)
   case DAMAGE_ALGORITHM_TYPE
   when 0,1,3
     power = skill.power + ((user.atk * skill.atk_f) / 100)
   when 2
     user_str = (user.str * 4 * skill.str_f / 100)
     user_int = (user.int * 2 * skill.int_f / 100)
     if skill.power > 0
       power = skill.power + user_str + user_int
     else
       power = skill.power - user_str - user_int
     end
   end
   return power
 end
 #--------------------------------------------------------------------------
 def set_skill_rate(user, skill)
   case DAMAGE_ALGORITHM_TYPE
   when 0,1,2
     rate = 20
   when 3
     rate = 40
     rate -= (self.dex / 2 * skill.pdef_f / 200)
     rate -= ((self.dex + self.int)/ 4 * skill.mdef_f / 200)
   end
   rate += (user.str * skill.str_f / 100)
   rate += (user.dex * skill.dex_f / 100)
   rate += (user.agi * skill.agi_f / 100)
   rate += (user.int * skill.int_f / 100)
   return rate
 end
 #--------------------------------------------------------------------------
 def set_skill_hit_value(user, skill, effective)
   atk_hit = DAMAGE_ALGORITHM_TYPE > 1 ? user.agi : user.dex
   eva = 8 * self.agi / atk_hit + self.eva
   hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
   hit = self.cant_evade? ? 100 : hit
   hit_result = (rand(100) < hit)
   @evaded = true unless hit_result
   effective |= hit < 100
   return effective
 end
 #--------------------------------------------------------------------------
 def set_skill_state_change(user, skill, effective = false)
   if skill.power != 0 and not skill.magic?
     remove_states_shock
     effective = true
   end
   effective |= apply_damage(user)
   @state_changed = false
   effective |= states_plus(skill.plus_state_set)
   effective |= states_minus(skill.minus_state_set)
   if skill.power == 0
     self.damage = ""
     @missed = true unless @state_changed
   end
   return effective
 end
 #--------------------------------------------------------------------------
 def apply_damage(user)
   return true if @evaded or @missed or not self.damage.is_a?(Numeric)
   if self.sp_damage
     last_sp = self.sp 
     self.sp -= self.damage
     effective = self.sp != last_sp
   else
     last_hp = self.hp 
     self.hp -= self.damage
     effective = self.hp != last_hp
   end
   return effective
 end
 #--------------------------------------------------------------------------
 def item_effect(item)
   self.critical = @evaded = @missed = false
   if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
      ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
     return false
   end
   effective = false
   effective |= item.common_event_id > 0
   hit_result = (rand(100) < item.hit)
   @missed = true unless hit_result
   effective |= item.hit < 100
   if hit_result == true
     effective |= make_item_damage_value(item)
   else
     @missed = true
   end
   self.damage = nil unless $game_temp.in_battle
   self.damage = POP_MISS if @missed
   return effective
 end
 #--------------------------------------------------------------------------
 def perfect_item_effect(item)
   self.critical = @evaded = @missed = false
   if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
      ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
     return false
   end
   effective = false
   effective |= item.common_event_id > 0
   effective |= item.hit < 100
   effective |= make_item_damage_value(item)
   self.damage = nil unless $game_temp.in_battle
   self.damage = POP_MISS if @missed
   return effective
 end
 #--------------------------------------------------------------------------
 def make_item_damage_value(item)
   recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp
   recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp
   if recover_hp < 0
     recover_hp += self.pdef * item.pdef_f / 20
     recover_hp += self.mdef * item.mdef_f / 20
     recover_hp = [recover_hp, 0].min
   end
   recover_hp *= elements_correct(item.element_set)
   recover_hp /= 100
   recover_sp *= elements_correct(item.element_set)
   recover_sp /= 100
   if item.variance > 0 and recover_hp.abs > 0
     amp = [recover_hp.abs * item.variance / 100, 1].max
     recover_hp += rand(amp+1) + rand(amp+1) - amp
   end
   if item.variance > 0 and recover_sp.abs > 0
     amp = [recover_sp.abs * item.variance / 100, 1].max
     recover_sp += rand(amp+1) + rand(amp+1) - amp
   end
   recover_hp /= 2 if recover_hp < 0 and self.guarding?
   self.damage = -recover_hp 
   last_hp = self.hp
   last_sp = self.sp
   self.hp += recover_hp
   self.sp += recover_sp
   effective |= self.hp != last_hp
   effective |= self.sp != last_sp
   @state_changed = false
   effective |= states_plus(item.plus_state_set)
   effective |= states_minus(item.minus_state_set)
   if item.parameter_type > 0 and item.parameter_points != 0
     case item.parameter_type
     when 1
       @maxhp_plus += item.parameter_points
     when 2
       @maxsp_plus += item.parameter_points
     when 3
       @str_plus += item.parameter_points
     when 4
       @dex_plus += item.parameter_points
     when 5
       @agi_plus += item.parameter_points
     when 6
       @int_plus += item.parameter_points
     end
     effective = true
   end
   if item.recover_hp_rate == 0 and item.recover_hp == 0
     self.damage = ""
     if item.recover_sp_rate == 0 and item.recover_sp == 0 and
        (item.parameter_type == 0 or item.parameter_points == 0)
       unless @state_changed
         @missed = true
       end
     end
   end
   return effective
 end
 #--------------------------------------------------------------------------
 alias skill_effect_n01 skill_effect
 def skill_effect(user, skill)
   now_hp = self.hp
   if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
      ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
     return false
   end
   effective = skill_effect_n01(user, skill)
   return if effective == false
   check_extension(skill)
   if @ratio_maxdamage != nil
     self.damage = self.maxhp * @ratio_maxdamage / 100 unless @sp_damage
     self.damage = self.maxsp * @ratio_maxdamage / 100 if @sp_damage
   end
   if @ratio_nowdamage != nil
     self.damage = self.hp * @ratio_nowdamage / 100 unless @sp_damage
     self.damage = self.sp * @ratio_nowdamage / 100 if @sp_damage
   end
   if @cost_damage
     cost = calc_sp_cost(user, skill)
     if skill.extension.include?("CONSUMEHP")
       self.damage = self.damage * cost / user.maxhp
     else
       self.damage = self.damage * cost / user.maxsp
     end  
   end 
   self.damage = self.damage * user.hp / user.maxhp if @nowhp_damage
   self.damage = self.damage * user.sp / user.maxsp if @nowsp_damage
   if @sp_damage 
     self.hp = now_hp
     self.sp -= self.damage
   elsif @extension
     self.hp = now_hp
     self.hp -= self.damage
   end
   return true
 end
 #--------------------------------------------------------------------------
 alias perfect_skill_effect_n01 perfect_skill_effect
 def perfect_skill_effect(user, skill)
   now_hp = self.hp
   if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
      ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
     return false
   end
   effective = perfect_skill_effect_n01(user, skill)
   return if effective == false
   check_extension(skill)
   if @ratio_maxdamage != nil
     self.damage = self.maxhp * @ratio_maxdamage / 100 unless @sp_damage
     self.damage = self.maxsp * @ratio_maxdamage / 100 if @sp_damage
   end
   if @ratio_nowdamage != nil
     self.damage = self.hp * @ratio_nowdamage / 100 unless @sp_damage
     self.damage = self.sp * @ratio_nowdamage / 100 if @sp_damage
   end
   if @cost_damage
     cost = calc_sp_cost(user, skill)
     if skill.extension.include?("CONSUMEHP")
       self.damage = self.damage * cost / user.maxhp
     else
       self.damage = self.damage * cost / user.maxsp
     end  
   end 
   self.damage = self.damage * user.hp / user.maxhp if @nowhp_damage
   self.damage = self.damage * user.sp / user.maxsp if @nowsp_damage
   if @sp_damage 
     self.hp = now_hp
     self.sp -= self.damage
   elsif @extension
     self.hp = now_hp
     self.hp -= self.damage
   end
   return true
 end
 #--------------------------------------------------------------------------
 def check_extension(skill)
   @extension = false
   @sp_damage = false
   @cost_damage = false
   @nowhp_damage = false
   @nowsp_damage = false
   @ratio_maxdamage = nil
   @ratio_nowdamage = nil
   for ext in skill.extension
     break if self.damage == "Errou!" or self.damage == "" or self.damage == 0
     if ext == "SPDAMAGE"
       next @sp_damage = true
     elsif ext == "COSTPOWER"  
       @extension = true
       next @cost_damage = true 
     elsif ext == "HPNOWPOWER"
       @extension = true
       next @nowhp_damage = true 
     elsif ext == "MPNOWPOWER"
       @extension = true
       next @nowsp_damage = true
     else
       name = ext.split('')
       if name[7] == "M"
         name = name.join
         name.slice!("%DAMAGEMAX/")
         @extension = true
         next @ratio_maxdamage = name.to_i
       elsif name[7] == "N"
         name = name.join
         name.slice!("%DAMAGENOW/")
         @extension = true
         next @ratio_nowdamage = name.to_i
       end  
     end
   end  
 end
 #--------------------------------------------------------------------------
 def change_base_position(x, y)
   @base_position_x = x
   @base_position_y = y
 end
 #--------------------------------------------------------------------------
 def reset_coordinate
   @move_x = @move_y = @move_z = @jump = @derivation = 0
   @active = @non_dead = @individual = false    
 end
end  

#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
 #--------------------------------------------------------------------------
 attr_reader   :armor5_id
 attr_reader   :armor6_id
 attr_reader   :armor7_id
 attr_accessor :actor_height
 attr_accessor :two_swords_change
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 def actor?
   return true
 end
 #--------------------------------------------------------------------------
 def weapons
   return [$data_weapons[@weapon_id]]
 end
 #--------------------------------------------------------------------------
 def armors
   result = []
   result << $data_armors[@armor1_id]
   result << $data_armors[@armor2_id]
   result << $data_armors[@armor3_id]
   result << $data_armors[@armor4_id]
   return result
 end
 #--------------------------------------------------------------------------
 def equips
   return weapons + armors
 end
 #--------------------------------------------------------------------------
 def skill_id_learn?(skill_id)
   return @skills.include?(skill_id)
 end
 #-------------------------------------------------------------------------- 
 def exp=(exp)
   @exp = [exp, 0].max
   while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
     @level += 1
     for j in $data_classes[@class_id].learnings
       if j.level == @level
         learn_skill(j.skill_id)
       end
     end
   end
   while @exp < @exp_list[@level]
     @level -= 1
   end
   @hp = [@hp, self.maxhp].min
   @sp = [@sp, self.maxsp].min
 end
 #-------------------------------------------------------------------------- 
 def base_atk
   n = 0
   for item in weapons.compact do n += item.atk end
   n = UNARMED_ATTACK if weapons[0] == nil and weapons[1] == nil 
   return n
 end
 #-------------------------------------------------------------------------- 
 def base_pdef
   n = 0
   for item in equips.compact do n += item.pdef end
   return n
 end
 #-------------------------------------------------------------------------- 
 def base_mdef
   n = 0
   for item in equips.compact do n += item.mdef end
   return n
 end
 #-------------------------------------------------------------------------- 
 def base_eva
   n = 0
   for item in armors.compact do n += item.eva end
   return n
 end
 #-------------------------------------------------------------------------- 
 def graphic_change(character_name)
   @character_name = character_name
 end
 #--------------------------------------------------------------------------
 def perform_collapse
   $game_system.se_play($data_system.actor_collapse_se) if $game_temp.in_battle and dead? 
 end
 #--------------------------------------------------------------------------
 def base_position
   base = ACTOR_POSITION[self.index]
   @base_position_x = base[0]
   @base_position_y = base[1]
   @base_position_x = 640 - base[0] if $back_attack and BACK_ATTACK_MIRROR
 end
 #--------------------------------------------------------------------------
 def actor_height
   @base_height = 0 if CURSOR_TYPE != 1 
   @base_height = 72 if CURSOR_TYPE == 1
   return @base_height
 end
 #--------------------------------------------------------------------------
 def position_x
   return 0 if self.index == nil
   return @base_position_x + @move_x
 end
 #--------------------------------------------------------------------------
 def position_y
   return 0 if self.index == nil
   return @base_position_y + @move_y + @jump
 end
 #--------------------------------------------------------------------------
 def position_z
   return 0 if self.index == nil
   return position_y + @move_z - @jump + 200
 end  
end

#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 attr_accessor :adj_speed
 attr_accessor :act_time
 #--------------------------------------------------------------------------
 def actor?
   return false
 end
 #--------------------------------------------------------------------------
 def make_action_speed2(adj)
   @adj_speed = @current_action.speed if @adj_speed == nil
   @adj_speed = @adj_speed * adj / 100
 end
 #--------------------------------------------------------------------------
 def perform_collapse
   @force_action = ["N01collapse"] if $game_temp.in_battle and dead?
 end
 #--------------------------------------------------------------------------
 def element_set2
   return []
 end
 #--------------------------------------------------------------------------
 def base_position
   return if self.index == nil
   bitmap = Bitmap.new("Graphics/Battlers/" + @battler_name) if !self.anime_on
   bitmap = Bitmap.new("Graphics/Characters/" + @battler_name) if self.anime_on && WALK_ANIME
   bitmap = Bitmap.new("Graphics/Characters/" + @battler_name + "_1") if self.anime_on && !WALK_ANIME
   height = bitmap.height
   @base_position_x = self.screen_x + self.position_plus[0]
   @base_position_y = self.screen_y + self.position_plus[1] - height / 3 + 32
   @base_position_x = 640 - self.screen_x - self.position_plus[0] if $back_attack and BACK_ATTACK_MIRROR
   @base_height = 0 if CURSOR_TYPE == 0
   @base_height = height / 3 + 64 if CURSOR_TYPE == 1 if !self.anime_on
   @base_height = height /12 + 64 if CURSOR_TYPE == 1 if self.anime_on
   @base_height = -(height / 3) if CURSOR_TYPE == 2 if !self.anime_on
   @base_height = -(height /12) if CURSOR_TYPE == 2 if self.anime_on
   bitmap.dispose 
 end
 #--------------------------------------------------------------------------
 def enemy_height
   return @base_height
 end
 #--------------------------------------------------------------------------
 def position_x
   return @base_position_x - @move_x
 end
 #--------------------------------------------------------------------------
 def position_y
   return @base_position_y + @move_y + @jump
 end
 #--------------------------------------------------------------------------
 def position_z
   return position_y + @move_z - @jump + 200
 end
end

#==============================================================================
# Arrow_Base
#==============================================================================
class Arrow_Base < Sprite
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 def update_multi_arrow
   return if @arrows == nil or @arrows == []
   for i in 0...@arrows.size
     @blink_count = (@blink_count + 1) % 40 
     if @blink_count < 20
       @arrows[i].src_rect.set(128, 96, 32, 32) if @arrows[i] != nil
     else
       @arrows[i].src_rect.set(160, 96, 32, 32) if @arrows[i] != nil
     end
   end
 end
 #--------------------------------------------------------------------------
 def dispose_multi_arrow
   for i in 0...@arrows.size
     @arrows[i].dispose if @arrows[i] != nil
   end
 end
end

#==============================================================================
# Arrow_Enemy_All
#==============================================================================
class Arrow_Enemy_All < Arrow_Base
 #--------------------------------------------------------------------------
 def initialize(viewport)
   super(viewport)
   @arrows = []
   for battler in $game_troop.enemies
     if battler.exist?
       @arrows[battler.index] = Arrow_Enemy.new(viewport)
       @arrows[battler.index].index = battler.index
     end
   end
 end
 #--------------------------------------------------------------------------
 def update_multi_arrow
   super
   for i in 0...@arrows.size
     enemy = $game_troop.enemies[i] 
     if enemy  != nil && @arrows[i] != nil && @arrows[i].enemy != nil
       @arrows[i].x = @arrows[i].enemy.position_x + CURSOR_POSITION[0]
       @arrows[i].y = @arrows[i].enemy.position_y + CURSOR_POSITION[1] + enemy.enemy_height
     end
   end
 end
end

#==============================================================================
# Arrow_Actor_All
#==============================================================================
class Arrow_Actor_All < Arrow_Base
 #--------------------------------------------------------------------------
 def initialize(viewport)
   super(viewport)
   @arrows = []
   for battler in $game_party.actors
     if battler.exist?
       @arrows[battler.index] = Arrow_Actor.new(viewport)
       @arrows[battler.index].index = battler.index
     end
   end
 end
 #--------------------------------------------------------------------------
 def update_multi_arrow
   super
   for i in 0...@arrows.size
     actor = $game_party.actors[i]
     if actor  != nil && @arrows[i] != nil && @arrows[i].actor != nil
       @arrows[i].x = @arrows[i].actor.position_x + CURSOR_POSITION[0]
       @arrows[i].y = @arrows[i].actor.position_y + CURSOR_POSITION[1] + actor.actor_height
     end
   end
 end
end

#==============================================================================
# Arrow_Battler_All
#==============================================================================
class Arrow_Battler_All < Arrow_Base
 #--------------------------------------------------------------------------
 def initialize(viewport)
   super(viewport)
   @arrows = []
   s = 0
   for battler in $game_party.actors + $game_troop.enemies
     @arrows[s] = Arrow_Actor.new(viewport) if battler.actor?
     @arrows[s] = Arrow_Enemy.new(viewport) if battler.is_a?(Game_Enemy)
     @arrows[s].index = battler.index
     s += 1
   end
 end
 #--------------------------------------------------------------------------
 def update_multi_arrow
   super
   s = 0
   for i in 0...@arrows.size
     if @arrows[i].is_a?(Arrow_Actor)
       actor = $game_party.actors[i] 
       if @arrows[i].actor != nil
         @arrows[i].x = @arrows[i].actor.position_x + CURSOR_POSITION[0]
         @arrows[i].y = @arrows[i].actor.position_y + CURSOR_POSITION[1] + actor.actor_height
         s += 1
       end
     elsif @arrows[i].is_a?(Arrow_Enemy)
       enemy = $game_troop.enemies[i - s]
       if @arrows[i].enemy != nil or @arrows[i] != nil
         @arrows[i].x = @arrows[i].enemy.position_x + CURSOR_POSITION[0]
         @arrows[i].y = @arrows[i].enemy.position_y + CURSOR_POSITION[1] + enemy.enemy_height
       end
     end
   end
 end
end

#==============================================================================
# ■ Arrow_Enemy
#==============================================================================
class Arrow_Enemy < Arrow_Base
 #--------------------------------------------------------------------------
 def update
   super
   $game_troop.enemies.size.times do
     break if self.enemy.exist?
     @index += 1
     @index %= $game_troop.enemies.size
   end
   if Input.repeat?(Input::RIGHT)
     cursor_up if $back_attack
     cursor_down unless $back_attack
   end
   if Input.repeat?(Input::LEFT)
     cursor_up unless $back_attack
     cursor_down if $back_attack
   end
   if Input.repeat?(Input::UP)
     cursor_down
   end
   if Input.repeat?(Input::DOWN)
     cursor_up
   end
   if self.enemy != nil
     self.x = self.enemy.position_x + CURSOR_POSITION[0]
     self.y = self.enemy.position_y + CURSOR_POSITION[1] + enemy.enemy_height
   end
 end
 #--------------------------------------------------------------------------
 def cursor_up
   $game_system.se_play($data_system.cursor_se)
   $game_troop.enemies.size.times do
     @index += $game_troop.enemies.size - 1
     @index %= $game_troop.enemies.size
     break if self.enemy.exist?
   end
 end
 #--------------------------------------------------------------------------
 def cursor_down
   $game_system.se_play($data_system.cursor_se)
   $game_troop.enemies.size.times do
     @index += 1
     @index %= $game_troop.enemies.size
     break if self.enemy.exist?
   end
 end
end

#==============================================================================
# ■ Arrow_Actor
#==============================================================================
class Arrow_Actor < Arrow_Base
 #--------------------------------------------------------------------------
 def update
   super
   if Input.repeat?(Input::RIGHT)
     cursor_up if $back_attack
     cursor_down unless $back_attack
   end
   if Input.repeat?(Input::LEFT)
     cursor_up unless $back_attack
     cursor_down if $back_attack
   end
   if Input.repeat?(Input::UP)
     cursor_up
   end
   if Input.repeat?(Input::DOWN)
     cursor_down
   end
   if self.actor != nil
     self.x = self.actor.position_x + CURSOR_POSITION[0]
     self.y = self.actor.position_y + CURSOR_POSITION[1] + actor.actor_height
   end
 end
 #--------------------------------------------------------------------------
 def cursor_up
   $game_system.se_play($data_system.cursor_se)
   @index += $game_party.actors.size - 1
   @index %= $game_party.actors.size
 end
 #--------------------------------------------------------------------------
 def cursor_down
   $game_system.se_play($data_system.cursor_se)
   @index += 1
   @index %= $game_party.actors.size
 end
 #--------------------------------------------------------------------------
 def input_right
   @index += 1
   @index %= $game_party.actors.size
 end
 #--------------------------------------------------------------------------
 def input_update_target
   if Input.repeat?(Input::RIGHT)
     if @index == self.actor.index     
       cursor_up if $back_attack
       cursor_down unless $back_attack
     end
   end
   if Input.repeat?(Input::LEFT)
     if @index == self.actor.index
       cursor_up unless $back_attack
       cursor_down if $back_attack
     end
   end
   if Input.repeat?(Input::UP)
     cursor_up if @index == self.actor.index
   end
   if Input.repeat?(Input::DOWN)
     cursor_down if @index == self.actor.index
   end
   if self.actor != nil
     self.x = self.actor.screen_x
     self.y = self.actor.screen_y
   end
 end
end

#==============================================================================
# ■ Game_Troop
#==============================================================================
class Game_Troop
 def clear_actions
   for enemies in @enemies
     enemies.current_action.clear
   end
 end
end

#==============================================================================
# ■ Window_Command
#==============================================================================
class Window_Command < Window_Selectable
 #--------------------------------------------------------------------------
 attr_accessor :commands
end

#==============================================================================
# ■ Window_Base
#==============================================================================
class Window_Base < Window
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 def draw_actor_state(actor, x, y, width = 0)
   status_icon = []
   for i in actor.states
     if $data_states[i].rating >= 1
       begin
         status_icon.push(RPG::Cache.icon($data_states[i].name + "_st"))
         break if status_icon.size > (Icon_max - 1)
       rescue
       end
     end
   end
   for icon in status_icon
     self.contents.blt(x + X_Adjust, y + Y_Adjust + 4, icon, Rect.new(0, 0, Icon_X, Icon_Y), 255)
     x += Icon_X + 2
   end
 end
 #--------------------------------------------------------------------------
 def draw_actor_parameter(actor, x, y, type)
   case type
   when 0
     parameter_name = $data_system.words.atk
     parameter_value = actor.atk
   when 1
     parameter_name = $data_system.words.pdef
     parameter_value = actor.pdef
   when 2
     parameter_name = $data_system.words.mdef
     parameter_value = actor.mdef
   when 3
     parameter_name = $data_system.words.str
     parameter_value = actor.str
   when 4
     parameter_name = (DAMAGE_ALGORITHM_TYPE == 0 ? STAT_VIT : $data_system.words.dex)
     parameter_value = actor.dex
   when 5
     parameter_name = $data_system.words.agi
     parameter_value = actor.agi
   when 6
     parameter_name = $data_system.words.int
     parameter_value = actor.int
   when 7
     parameter_name = STAT_EVA
     parameter_value = actor.eva
   end
   self.contents.font.color = system_color
   self.contents.draw_text(x, y, 120, 32, parameter_name)
   self.contents.font.color = normal_color
   self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
 end
end

#==============================================================================
# ■ Window_Help
#==============================================================================
class Window_Help < Window_Base
 #--------------------------------------------------------------------------
 def initialize
   super(0, 0, 640, 64)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.z = 2000 if $game_temp.in_battle
   self.back_opacity = HELP_OPACITY if $game_temp.in_battle
 end
 #--------------------------------------------------------------------------
 def set_text_update(text, align = 0)
   self.contents.clear
   self.contents.font.color = normal_color
   self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
   @text = text
   @align = align
   @actor = nil
   self.visible = true
 end
 #--------------------------------------------------------------------------
 def set_enemy(enemy)
   text = enemy.name
   set_text_update(text, 1)
   text_width = self.contents.text_size(text).width
   x = (text_width + self.width)/2
   status_icon = []
   for i in enemy.states
     if $data_states[i].rating >= 1
       begin
         status_icon.push(RPG::Cache.icon($data_states[i].name + "_st"))
         break if status_icon.size > (Icon_max - 1)
       rescue
       end
     end
   end
   for icon in status_icon
     self.contents.blt(x + X_Adjust, y + Y_Adjust + 4, icon, Rect.new(0, 0, Icon_X, Icon_Y), 255)
     x += Icon_X + 2
   end
 end
end

#==============================================================================
# ■ Window_Skill
#==============================================================================
class Window_Skill < Window_Selectable
 #--------------------------------------------------------------------------
 def initialize(actor)
   super(0, 128, 640, 352)
   @actor = actor
   @column_max = 2
   refresh
   self.index = 0
   if $game_temp.in_battle
     self.y = 320
     self.height = 160
     self.z = 2100
     self.back_opacity = MENU_OPACITY
   end
 end
 #--------------------------------------------------------------------------
 def draw_item(index)
   skill = @data[index]
   if @actor.skill_can_use?(skill.id)
     self.contents.font.color = normal_color
   else
     self.contents.font.color = disabled_color
   end
   x = 4 + index % 2 * (288 + 32)
   y = index / 2 * 32
   rect = Rect.new(x, y, self.width / @column_max - 32, 32)
   self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
   bitmap = RPG::Cache.icon(skill.icon_name)
   opacity = self.contents.font.color == normal_color ? 255 : 128
   self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
   self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
   cost = @actor.calc_sp_cost(@actor, skill)
   self.contents.draw_text(x + 232, y, 48, 32, cost.to_s, 2)
 end
end

#==============================================================================
# ■ Window_Item
#==============================================================================
class Window_Item < Window_Selectable
 #--------------------------------------------------------------------------
 def initialize
   super(0, 64, 640, 416)
   @column_max = 2
   refresh
   self.index = 0
   if $game_temp.in_battle
     self.y = 320
     self.height = 160
     self.z = 2100
     self.back_opacity = MENU_OPACITY
   end
 end
end

#==============================================================================
# ■ Window_PartyCommand
#==============================================================================
class Window_PartyCommand < Window_Selectable
 #--------------------------------------------------------------------------
 alias initialize_n01 initialize
 #--------------------------------------------------------------------------
 def initialize
   initialize_n01
   self.z = 2000
 end
end

#==============================================================================
# ■ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
 #--------------------------------------------------------------------------
 def initialize
   super(0, 320, 640, 160)
   self.contents = Bitmap.new(width - 32, height - 32)
   @level_up_flags = []
   for i in 0...$game_party.actors.size
     @level_up_flags.push(false)
   end
   self.z = 2000
   self.opacity = STATUS_OPACITY
   refresh
 end
 #--------------------------------------------------------------------------
 def update
   super
 end
end

#==============================================================================
# ■ Window_NameCommand
#==============================================================================
class Window_BattleResult < Window_Base
 #--------------------------------------------------------------------------
 def initialize(exp, gold, treasures)
   @exp = exp
   @gold = gold
   @treasures = treasures
   super(160, 0, 320, @treasures.size * 32 + 64)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.y = 160 - height / 2
   self.back_opacity = 160
   self.z = 2000
   self.visible = false
   refresh
 end
end

#==============================================================================
# ■ Window_NameCommand
#==============================================================================
class Window_NameCommand < Window_Base
 #--------------------------------------------------------------------------
 def initialize(actor, x, y)
   super(x, y, 160, 64)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = Font.default_name
   self.z = 2000
   self.back_opacity = COMMAND_OPACITY
   refresh(actor)
 end
 #--------------------------------------------------------------------------
 def refresh(actor)
   self.contents.clear
   self.contents.font.color = normal_color
   self.contents.draw_text(0, 0, 128, 32, actor.name, 1) if actor != nil
 end
end

#==============================================================================
# ■ RPG::Sprite 
#==============================================================================
class RPG::Sprite < ::Sprite
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 def initialize(viewport = nil)
   super(viewport)
   @_whiten_duration = 0
   @_appear_duration = 0
   @_escape_duration = 0
   @_collapse_duration = 0
   @_damage_duration = 0
   @_animation_duration = 0
   @_blink = false
   @_damage_durations = []
   @time = 0
 end
 #--------------------------------------------------------------------------
 def appear
 end
 #--------------------------------------------------------------------------
 def escape
 end
 #--------------------------------------------------------------------------
 def collapse
 end
 #--------------------------------------------------------------------------
 def damage(value, critical, sp_damage = nil)
   dispose_damage(0...@_damage_durations.size)
   @_damage_sprites = []
   if value.is_a?(Numeric)
     damage_string = value.abs.to_s
   else
     damage_string = value.to_s
   end
   @damage_size = 1 if !MULTI_POP
   @damage_size = damage_string.size if MULTI_POP
   for i in 0...@damage_size
     letter = damage_string[i..i] if MULTI_POP
     letter = damage_string if !MULTI_POP
     bitmap = Bitmap.new(160, 48)
     bitmap.font.name = DAMAGE_FONT
     bitmap.font.size = DMG_F_SIZE
     bitmap.font.color.set(0, 0, 0)
     bitmap.draw_text(-1, 12-1,160, 36, letter, 1)
     bitmap.draw_text(+1, 12-1,160, 36, letter, 1)
     bitmap.draw_text(-1, 12+1,160, 36, letter, 1)
     bitmap.draw_text(+1, 12+1,160, 36, letter, 1)
     if value.is_a?(Numeric) and value < 0
       bitmap.font.color.set(HP_REC_COLOR[0],HP_REC_COLOR[1],HP_REC_COLOR[2]) if !sp_damage
       bitmap.font.color.set(SP_REC_COLOR[0],SP_REC_COLOR[1],SP_REC_COLOR[2]) if sp_damage
     else
       bitmap.font.color.set(HP_DMG_COLOR[0],HP_DMG_COLOR[1],HP_DMG_COLOR[2]) if !sp_damage
       bitmap.font.color.set(SP_DMG_COLOR[0],SP_DMG_COLOR[1],SP_DMG_COLOR[2]) if sp_damage
       bitmap.font.color.set(CRT_DMG_COLOR[0],CRT_DMG_COLOR[1],CRT_DMG_COLOR[2]) if critical 
     end
     bitmap.draw_text(0, 12,160, 36, letter, 1)
     if critical and CRITIC_TEXT and i == 0
       x_pop = (MULTI_POP ? (damage_string.size - 1) * (DMG_SPACE / 2) : 0)
       bitmap.font.size = ((DMG_F_SIZE * 2) / 3).to_i
       bitmap.font.color.set(0, 0, 0)
       bitmap.draw_text(-1 + x_pop, -1, 160, 20, POP_CRI, 1)
       bitmap.draw_text(+1 + x_pop, -1, 160, 20, POP_CRI, 1)
       bitmap.draw_text(-1 + x_pop, +1, 160, 20, POP_CRI, 1)
       bitmap.draw_text(+1 + x_pop, +1, 160, 20, POP_CRI, 1)
       bitmap.font.color.set(CRT_TXT_COLOR[0],CRT_TXT_COLOR[1],CRT_TXT_COLOR[2]) if critical 
       bitmap.draw_text(0 + x_pop, 0, 160, 20, POP_CRI, 1)
     end
     if critical and CRITIC_FLASH
       $game_screen.start_flash(Color.new(255, 255, 255, 255),10)
     end
     @_damage_sprites[i] = ::Sprite.new(self.viewport)
     @_damage_sprites[i].bitmap = bitmap
     @_damage_sprites[i].ox = 80
     @_damage_sprites[i].oy = 20
     @_damage_sprites[i].x = self.x + i * DMG_SPACE
     @_damage_sprites[i].y = self.y - self.oy / 2
     @_damage_sprites[i].z = DMG_DURATION + 3000 + i * 2
   end
 end
 #--------------------------------------------------------------------------
 def dispose
   dispose_damage(0...@_damage_durations.size)
   dispose_animation
   dispose_loop_animation
   if @damage_sprites != nil
     for damage_sprite in @damage_sprites
       damage_sprite.dispose
     end
   end
   super
 end
 #--------------------------------------------------------------------------
 def update
   super
   @damage_sprites   = [] if @damage_sprites.nil?
   @damage_durations = [] if @damage_durations.nil?
   if @_damage_sprites != nil
     for sprite in @_damage_sprites 
       if sprite != nil and sprite.visible
         x = DMG_X_MOVE
         y = DMG_Y_MOVE
         d = sprite.z - 3000
         m = self.mirror
         @damage_sprites.push(Sprite_Damage.new(sprite, x, y, d, m))
         sprite.visible = false
       end
     end
   end
   for damage_sprite in @damage_sprites
     damage_sprite.update
   end
   for i in 0...@damage_sprites.size
     @damage_sprites[i] = nil if @damage_sprites[i].disposed?
   end
   @damage_sprites.compact!
   if @_whiten_duration > 0
     @_whiten_duration -= 1
     self.color.alpha = 128 - (16 - @_whiten_duration) * 10
   end
   if @_animation != nil and (Graphics.frame_count % 2 == 0)
     @_animation_duration -= 1
     update_animation
   end
   if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
     update_loop_animation
     @_loop_animation_index += 1
     @_loop_animation_index %= @_loop_animation.frame_max
   end
   if @_blink
     @_blink_count = (@_blink_count + 1) % 32
     if @_blink_count < 16
       alpha = (16 - @_blink_count) * 6
     else
       alpha = (@_blink_count - 16) * 6
     end
     self.color.set(255, 255, 255, alpha)
   end
   @@_animations.clear
 end
 #--------------------------------------------------------------------------
 def dispose_damage(index)
   return if @_damage_sprites == nil
   if @_damage_sprites[index].is_a?(::Sprite) and @_damage_sprites[index].bitmap != nil
     @_damage_sprites[index].bitmap.dispose
     @_damage_sprites[index].dispose
     @_damage_durations[index] = 0
   end
 end
 #--------------------------------------------------------------------------
 def dispose_animation
   if @_animation_sprites != nil
     sprite = @_animation_sprites[0]
     if sprite != nil
       @@_reference_count[sprite.bitmap] -= 1
       if @@_reference_count[sprite.bitmap] == 0
         sprite.bitmap.dispose
       end
     end
     for sprite in @_animation_sprites
       sprite.dispose
     end
     @_animation_sprites = nil
     @_animation = nil
   end
   @mirror = false
 end
 #--------------------------------------------------------------------------
 def animation_mirror(mirror_effect)
   @mirror = mirror_effect
 end
 #--------------------------------------------------------------------------
 def animation_set_sprites(sprites, cell_data, position)
   for i in 0..15
     sprite = sprites[i]
     pattern = cell_data[i, 0]
     if sprite == nil or pattern == nil or pattern == -1
       sprite.visible = false if sprite != nil
       next
     end
     sprite.visible = true
     sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
     if position == 3
       if self.viewport != nil
         sprite.x = self.viewport.rect.width / 2
         sprite.y = self.viewport.rect.height - 160
       else
         sprite.x = 320
         sprite.y = 240
       end
     else
       sprite.x = self.x - self.ox + self.src_rect.width / 2
       sprite.y = self.y - self.oy + self.src_rect.height / 2
       sprite.y -= self.src_rect.height / 4 if position == 0
       sprite.y += self.src_rect.height / 4 if position == 2
     end
     sprite.x += cell_data[i, 1]
     sprite.y += cell_data[i, 2]
     sprite.z = 2000
     if @mirror
       sprite.ox = 88
     else
       sprite.ox = 104
     end
     sprite.oy = 96
     sprite.zoom_x = cell_data[i, 3] / 100.0
     sprite.zoom_y = cell_data[i, 3] / 100.0
     sprite.angle = cell_data[i, 4]
     sprite.mirror = (cell_data[i, 5] == 1)
     if @mirror
       if sprite.mirror
         sprite.mirror = false
       else  
         sprite.mirror = true
       end
     end
     sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
     sprite.blend_type = cell_data[i, 7]
   end
 end
end

#==============================================================================
# ■ Sprite_Damage
#==============================================================================
class Sprite_Damage < Sprite
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 def initialize(sprite, init_x_speed, init_y_speed, duration, mirror)
   super(nil)
   self.bitmap = sprite.bitmap.dup unless sprite.bitmap.nil?
   self.opacity = 255
   self.x = sprite.x
   self.y = sprite.y
   self.z = 3000
   self.ox = sprite.ox
   self.oy = sprite.oy
   @damage_mirror = mirror
   @now_x_speed = init_x_speed
   @now_y_speed = init_y_speed
   @potential_x_energy = 0.0
   @potential_y_energy = 0.0
   @duration = duration
 end
 #--------------------------------------------------------------------------
 def update
   @duration -= 1
   return unless @duration <= DMG_DURATION
   super
   n = self.oy + @now_y_speed
   if n <= 0
     @now_y_speed *= -1
     @now_y_speed /=  2
     @now_x_speed /=  2
   end
   self.oy  = [n, 0].max
   @potential_y_energy += DMG_GRAVITY
   speed = @potential_y_energy.floor
   @now_y_speed        -= speed
   @potential_y_energy -= speed
   @potential_x_energy += @now_x_speed if @damage_mirror if POP_MOVE
   @potential_x_energy -= @now_x_speed if !@damage_mirror if POP_MOVE
   speed = @potential_x_energy.floor
   self.ox             += speed
   @potential_x_energy -= speed
   case @duration
   when 1..10
     self.opacity -= 25
   when 0
     self.dispose
   end
 end
end

Additional Scripts :

      classe script 
          Def initialize
                  #==============================================================================
# Add-On: Battle Window
# by Atoa
#==============================================================================
# This Add-On grants the user a high custmization level of the battle windows
# Allowing font change, size and position of the text on the window.
# And also allowing the change of the position, size and opacity of the window.
#==============================================================================

module Atoa

 # Exhibition Type (take a look at the 'IMPORTANT WARNING' just bellow)
 Display_Type = 0
 # If Display_Type = 0 the character attributes will be shown 
 # on the traditional XPway , horizontaly.
 # Ex.:
 # Ash        Trevor     Monique
 # HP  741    HP  695    HP  486 
 # SP  541    SP  591    SP  661
 #
 # If Display_Type = 1 the character attributes will be shwon 
 # verticaly.
 # Ex.:
 # Ash     HP  741  SP  541
 # Trevor  HP  695  SP  591
 # Monique HP  486  SP  661
 #
 # If 'Display_Type = 2', the position will be custom. Adjust the postions below
 #

 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 #                          ***IMPORTANT WARNING**                          #
 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 #
 # If you change the value of 'Display_Type', you must readjust *ALL*
 # X/Y coordinates of the texts. The change isn't automatic.
 # Stay alert about this.
 #
 #============================================================================

 # Only valid if 'Display_Type = 0', allows the centralization of the status
 # windows if the group has less then 4 members
 Horizontal_Centralize = true

 # Only valid if 'Display_Type = 2', adjust the base position of the attributes
 # of each character
 Custom_Stat_Position = [[0,0],[8,24],[16,48],[18,72]]

 # Configuration of the Attributes Battle Window
 # Battle_Window = [Position X, Position Y, Width, Height, Opacity, Trasparent Edge]
 Battle_Window = [0 , 0, 650, 125, 100, false]
 # Leave the last value true to add the opacity to the edge of the window
 # Needed if you wish to make 100% transparent windows

 # The text format will be applied to the values in the menu?
 Text_Format_in_Menu = true
 # true = all format config are applied to the values in the menu
 # false = the format configs are valid only in battle

 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # CONFIGURATION OF THE WINDOW CONTENT                                        #
 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

 # Configuration of the name exhibition
 # Name_Config = [Position X, Position Y, Font Name, Font Size, Bold]
 Name_Config = [0, -8, 'Arial', 22, false]

 # Configuration of the HP text exhibition
 # HP_Text = [Position X, Position Y, Font Name, Font Size, Bold]
 HP_Text = [0, 40, 'Arial', 22, false]

 # Configuration of the HP digits exhibition
 # HP_Number = [Font Name, Font Size, Bold, Show Max HP]
 HP_Number = ['Arial', 22, false, true]

 # Configuration of the Max HP digits exhibition
 # Max_HP_Number = [Font Name, Font Size, Bold]
 Max_HP_Number = ['Arial', 22, false]   

 # Configuration of the SP text exhibition
 # SP_Text = [Position X, Position Y, Font Name, Font Size, Bold]
 SP_Text = [0, 64, 'Arial', 22, false]

 # Configuration of the SP digits exhibition
 # SP_Number = [Font Name, Font Size, Bold, Show Max HP]
 SP_Number = ['Arial', 22, false, true]   

 # Configuration of the Max SP digits exhibition
 # Max_SP_Number = [Font Name, Font Size, Bold]
 Max_SP_Number = ['Arial', 22, false]   

 # Configuration of the States exhibition
 # State_Config = [Position X, Position Y]
 State_Config = [0, 88]
 # Show Level Up Message in status window?
 Lvl_UP_FLAG = true
 # Level Up Message
 Lvl_Up_Msg = 'LEVEL UP!'
 # The level up message is shown in the same place as the states

 # Configuration of the Level exhibition
 Draw_Level = true # Show level in status window?
 Level_Name = 'Lv' # Name of the 'Level' Status shown in the window

 # Configuration of the Level text exhibition
 # Level_Text = [Position X, Position Y, Font Name, Font Size, Bold]
 Level_Text = [0, 16, 'Arial', 22, false]

 # Configuration of the Level digits exhibition
 # Level_Number = [Font Name, Font Size, Bold]
 Level_Number = ['Arial', 22, false]   

 # Configuration of the Exp exhibition:(only in menu when Text_Format_in_Menu = true)
 Exp_Name = 'Exp' # Name of the 'Exp' Status shown in the window

 # Configuration of the Exp text exhibition
 # Exp_Text =  [Font Name, Font Size, Bold]
 Exp_Text = ['Arial', 22, false]

 # Configuration of the Exp digits exhibition
 # Exp_Number =  [Font Name, Font Size, Bold]
 Exp_Number = ['Arial', 22, false]

 # Configuration of the Next Exp digits exhibition
 # Next_Exp_Number = [Font Name, Font Size, Bold]
 Next_Exp_Number = ['Arial', 22, true]

 # Configuration of the Face exhibition
 # To use faces, you must create an folder named 'Faces' in the Graphics folder
 # The face graphic must have the same as the actor character graphic
 # Show Faces? true = show / false = don't show
 Show_Faces = true
 # Face_Config = [Position X, Position Y, Opacity]
 Face_Config = [29, 100, 255]

 # Extension for Face file name, use if you want the battle faces file names
 # to be different from the normal faces
 Face_Extension = ''
 # The text extension must be add to all faces file names
 # E.g.: Face_Extension = '_bt'
 # 001-Fighter01_bt

 # Use the character hue on the face?
 Use_Character_Hue = true
 # true = use the hue
 # true = dont't use the hue

 # Configuration of the Char Graphic exhibition
 # Show Char Graphic? true = show / false = don't show
 Show_Char = false
 # Char_Config = [Posição X, Posição Y, Transparencia, Show only half]
 Char_Config = [96, 60, 255, true]
end

#==============================================================================
# ■ Atoa Module
#==============================================================================
$atoa_script = {} if $atoa_script.nil?
$atoa_script['Battle Windows'] = true

#==============================================================================
# ■ Window_Base
#==============================================================================
class Window_Base
 #--------------------------------------------------------------------------
 include Atoa
 #--------------------------------------------------------------------------
 alias battler_window_draw_actor_name draw_actor_name
 def draw_actor_name(actor, x, y)
   if $game_temp.in_battle or Text_Format_in_Menu
     self.contents.font.color = normal_color
     self.contents.font.name = Name_Config[2]
     self.contents.font.size = Name_Config[3]
     self.contents.font.bold = Name_Config[4]
     self.contents.draw_text(x, y, 120, 32, actor.name)
     set_default_font
   else
     battler_window_draw_actor_name(actor, x, y)
   end
 end
 #--------------------------------------------------------------------------
 alias battler_window_draw_actor_level draw_actor_level
 def draw_actor_level(actor, x, y)
   if $game_temp.in_battle or Text_Format_in_Menu
     self.contents.font.color = system_color
     self.contents.font.name = Level_Text[2]
     self.contents.font.size = Level_Text[3]
     self.contents.font.bold = Level_Text[4]
     size = contents.text_size(Level_Name).width
     self.contents.draw_text(x, y, size + 4, 32, Level_Name)
     self.contents.font.color = normal_color
     self.contents.font.name = Level_Number[0]
     self.contents.font.size = Level_Number[1]
     self.contents.font.bold = Level_Number[2]
     self.contents.draw_text(x + size, y, 24, 32, actor.level.to_s, 2)
     set_default_font
   else
     battler_window_draw_actor_level(actor, x, y)
   end
 end
 #--------------------------------------------------------------------------
 alias battler_window_draw_actor_hp draw_actor_hp
 def draw_actor_hp(actor, x, y, width = 144)
   if $game_temp.in_battle or Text_Format_in_Menu
     self.contents.font.color = system_color
     self.contents.font.name = HP_Text[2]
     self.contents.font.size = HP_Text[3]
     self.contents.font.bold = HP_Text[4]
     self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
     if width - 32 >= 108
       hp_x = x + width - 108
       flag = true
     elsif width - 32 >= 48
       hp_x = x + width - 48
       flag = false
     end
     self.contents.font.color = actor.hp == 0 ? knockout_color :
       actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
     self.contents.font.name = HP_Number[0]
     self.contents.font.size = HP_Number[1]
     self.contents.font.bold = HP_Number[2]
     self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
     if flag
       self.contents.font.color = normal_color
       self.contents.font.name = HP_Text[2]
       self.contents.font.size = HP_Text[3]
       self.contents.font.bold = HP_Text[4]
       self.contents.draw_text(hp_x + 48, y, 12, 32, '/', 1)
       self.contents.font.name = Max_HP_Number[0]
       self.contents.font.size = Max_HP_Number[1]
       self.contents.font.bold = Max_HP_Number[2]
       self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
     end
     set_default_font
   else
     battler_window_draw_actor_hp(actor, x, y, width)
   end
 end
 #--------------------------------------------------------------------------
 alias battler_window_draw_actor_sp draw_actor_sp
 def draw_actor_sp(actor, x, y, width = 144)
   if $game_temp.in_battle or Text_Format_in_Menu
     self.contents.font.color = system_color
     self.contents.font.name = SP_Text[2]
     self.contents.font.size = SP_Text[3]
     self.contents.font.bold = SP_Text[4]
     self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
     if width - 32 >= 108
       sp_x = x + width - 108
       flag = true
     elsif width - 32 >= 48
       sp_x = x + width - 48
       flag = false
     end
     self.contents.font.color = actor.sp == 0 ? knockout_color :
       actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
     self.contents.font.name = SP_Number[0]
     self.contents.font.size = SP_Number[1]
     self.contents.font.bold = SP_Number[2]
     self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
     if flag
       self.contents.font.color = normal_color
       self.contents.font.name = SP_Text[2]
       self.contents.font.size = SP_Text[3]
       self.contents.font.bold = SP_Text[4]
       self.contents.draw_text(sp_x + 48, y, 12, 32, '/', 1)
       self.contents.font.name = Max_SP_Number[0]
       self.contents.font.size = Max_SP_Number[1]
       self.contents.font.bold = Max_SP_Number[2]
       self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
     end
     set_default_font
   else
     battler_window_draw_actor_sp(actor, x, y, width)
   end
 end
 #--------------------------------------------------------------------------
 alias battler_window_draw_actor_exp draw_actor_exp
 def draw_actor_exp(actor, x, y)
   if Text_Format_in_Menu
     self.contents.font.color = system_color
     self.contents.font.name = Exp_Text[0]
     self.contents.font.size = Exp_Text[1]
     self.contents.font.bold = Exp_Text[2]
     self.contents.draw_text(x, y, 32, 32, Exp_Name)
     self.contents.font.color = normal_color
     self.contents.font.name = Exp_Number[0]
     self.contents.font.size = Exp_Number[1]
     self.contents.font.bold = Exp_Number[2]
     self.contents.draw_text(x + 12, y, 96, 32, actor.exp_s, 2)
     self.contents.font.color = normal_color
     self.contents.font.name = Exp_Text[0]
     self.contents.font.size = Exp_Text[1]
     self.contents.font.bold = Exp_Text[2]
     self.contents.draw_text(x + 108, y, 12, 32, '/', 1)
     self.contents.font.name = Next_Exp_Number[0]
     self.contents.font.size = Next_Exp_Number[1]
     self.contents.font.bold = Next_Exp_Number[2]
     self.contents.draw_text(x + 120, y, 96, 32, actor.next_exp_s)
     set_default_font
   else
     battler_window_draw_actor_exp(actor, x, y, width)
   end
 end
 #--------------------------------------------------------------------------
 def draw_actor_battle_face(actor, x, y, opacity = 255)
   begin
     face_hue = Use_Character_Hue ? actor.character_hue : 0
     face = RPG::Cache.faces(actor.character_name + Face_Extension, face_hue)
     fw = face.width
     fh = face.height
     src_rect = Rect.new(0, 0, fw, fh)
     self.contents.blt(x - fw / 23, y - fh, face, src_rect, opacity)
   rescue
   end
 end
 #--------------------------------------------------------------------------
 def draw_actor_battle_graphic(actor, x, y, opacity = 255)
   begin
     bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
     cw = bitmap.width /  4
     ch = bitmap.height / (Char_Config[3] ? 6 : 4)
     src_rect = Rect.new(0, 0, cw, ch)
     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, opacity)
   rescue
   end
 end
 #--------------------------------------------------------------------------
 def set_default_font
   self.contents.font.name = Font.default_name
   self.contents.font.size = Font.default_size
   self.contents.font.bold = false
 end
end

#==============================================================================
# ■ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
 #--------------------------------------------------------------------------
 def initialize
   super(Battle_Window[0], Battle_Window[1], Battle_Window[2], Battle_Window[3])
   self.contents = Bitmap.new(width - 32, height - 32)
   @level_up_flags = []
   for i in 0...$game_party.actors.size
     @level_up_flags << false
   end
   self.z = 900
   self.back_opacity = Battle_Window[4]
   self.opacity = Battle_Window[4] if Battle_Window[5]
   refresh
 end
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   @item_max = $game_party.actors.size
   for i in 0...$game_party.actors.size
     self.contents.font.size = 22
     hp_w = HP_Number[3] ? 140 : 80
     sp_w = SP_Number[3] ? 140 : 80
     actor = $game_party.actors[i]
     case Display_Type
     when 0 
       actor_x = Horizontal_Centralize ? ((624 / MAX_MEMBER) * ((4 - $game_party.actors.size)/2.0 + i)).floor : i * (624 / MAX_MEMBER)
       actor_y = 0
     when 1 
       actor_x = 0
       actor_y = i * 32
     when 2 
       actor_x = Custom_Stat_Position[i][0]
       actor_y = Custom_Stat_Position[i][1]
     end
     draw_actor_battle_face(actor, actor_x + Face_Config[0], actor_y + Face_Config[1], Face_Config[2]) if Show_Faces
     draw_actor_battle_graphic(actor, actor_x + Char_Config[0], actor_y + Char_Config[1], Char_Config[2]) if Show_Char
     draw_actor_name(actor, actor_x + Name_Config[0], actor_y + Name_Config[1])
     draw_actor_hp(actor, actor_x + HP_Text[0], actor_y + HP_Text[1], hp_w)
     draw_actor_sp(actor, actor_x + SP_Text[0], actor_y + SP_Text[1], sp_w)
     draw_actor_level(actor, actor_x + Level_Text[0], actor_y + Level_Text[1]) if Draw_Level
     if @level_up_flags[i] and Lvl_UP_FLAG
       self.contents.font.color = normal_color
       self.contents.draw_text(actor_x + State_Config[0], actor_y + State_Config[1], 132, 32, Lvl_Up_Msg )
     else
       draw_actor_state(actor, actor_x + State_Config[0], actor_y + State_Config[1])
     end
   end
 end
 #--------------------------------------------------------------------------
 def update
   super
 end
end

        class script 
             def initialize
                   #==============================================================================
# Advanced Status
# by Atoa
#==============================================================================
# This script add a lot of new stats and features for actors
# 
# He adds the following features:
# - Multi Slot for equips
# - 2 Weapons System
# - 2 Handed Weapons
# - Multiple Auto Status for Weapons and Armors
# - SP cost changing equips
# - Status Limit Settings
# - New Status for Equips
# - New status and elemental resist system
#
# IMPORTANT:
# - If you using the multi slot equip system, the event command for changing 
#   equips will be screwed.
#   So if you need to force any equip change with events, make an Script Call
#   and add this command:
#    $game_actors[Actor ID].equip(Slot Index, Equip ID)
#      Slot Index = remember that indexes starts from 0, so the 1st slot will
#        be index 0, the 2nd will be index 1...
#
# - Some functions are really complex, if you're a noob, don't mess with them.
#   Learn the basic of RGSS before trying the advanced features
#==============================================================================

module N01
 # Do not remove or change these lines
 constants = ['Equip_Lock','Auto_Status','Armor_Lock','Sp_Cost_Change_Equip',
   'Weapon_Lock','Max_Level','Speacial_Status','Element_Resist','State_Resist',
   'Equip_Set','Set_Effect','Equip_Skills','Weapon_Damage_Type'] 
 for i in 0...constants.size
   eval(constants[i] + " = {}") 
 end
 # Do not remove or change these lines

 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # VISUALIZATION SETTINGS
 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # Here yo can set some values to change the equip and status menu
 # This script isn't comatible with complex equip and status menu systems, 
 # so use this area to customize your menus

 # Exhibition style of the equip menu
 Equip_Menu_Syle = 0
 # 0 = Default, shows atk, pdef, mdef
 # 1 = Default, shows atk, pdef, mdef, str, dex, int, agi
 # 2 = Default, shows str, dex, int, agi
 # 3 and 4 = custom, shows all status (including the news)

 # Window Opacity
 Equip_Window_Opacity = 255

 # Show map on background
 Show_Map_Equip_Menu = false

 # Background image
 Equip_Menu_Back = nil
 # If you want to use your own backgruon image, add the filename here.
 # the graphic must be on the Windowskin folder.
 # if the value = nil, no image will be used.
 # Remember to reduce the window transparency.

 # Define here which symbols/letters will be used to show status alteration
 # On the side there are a few exemples on symbols you can also use
 Stat_Nil  = '>' # '■' '↔' '±' '=' '>'
 Stat_Up   = '>' # '▲' '↑' '»' '+' '>'
 Stat_Down = '>' # '▼' '↓' '«' '-' '>'

 # New Status Exhibition
 Extra_Status = [7,8,9]
 # 7 = Evasion
 # 8 = Hit Rate
 # 9 = Critical Rate
 # 10 = Critical Damage
 # 11 = Critical Rate Resist
 # 12 = Critical Damage Resist

 # Name of the new status
 Stat_Eva = 'Evasion'
 Stat_Hit = 'Hit'
 Stat_Crt = 'Critical'
 Stat_Dmg = 'Critical Damage'
 Stat_Res_Crt = 'Critical Resist'
 Stat_Res_Dmg = 'Critical Damage Resist'
 #=============================================================================

 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # DUAL WIELDING SETTINGS
 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # Here you can set wich actors or classes can use two weapons

 # Second Attack Pose ID
 Second_Attack_Pose = 12

 # This set if the tow_swords style will use the total actors attack in both
 # attacks or calculate each attack separately
 Use_Old_Two_Sword_Beahave = false
 # true = use old behave, the total attack is used and multiplied by the values
 #        in "TWO_SWORDS_STYLE" on the Basic config
 # false = use the new behave, where each damage is calculed separately, depending
 #       on the weapon in each hand

 # Attack power rate for normal attacks when using more than one weapon
 Dual_Attack_Power = 75

 # Attack power rate for skills when using more than one weapon
 Dual_Skill_Power = 75

 # Actors that uses two weapons, add here their ids
 Two_Swords_Actors = []

 # Classes that uses two weapons, add here their ids
 Two_Swords_Classes = []

 # You can add or remove the dual wielding feature with script calls.
 # 
 # $game_party.two_swords_actors_add(Actor ID)
 #  to add the dual wielding to an actor.
 #
 # $game_party.two_swords_actors_remove(Actor ID)
 #  to remove the dual wielding from an actor.
 #
 # $game_party.two_swords_classes_add(Class ID)
 #  to add the dual wielding to an class.
 #
 # $game_party.two_swords_classes_remove(Class ID)
 #  to remove the dual wielding from an class.
 #
 #=============================================================================

 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # RIGHT HAND AND LEFT HAND EQUIP SETTINGS
 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # Here you can set wich hand the equip can be used
 # Just add their ids bellow

 # Two Handed weapons
 Two_Hands_Weapons = []

 # Right Hand only Weapons
 Right_Hand_Weapons = []

 # Left Hand only Weapons
 Left_Hand_Weapons = []
 #=============================================================================

 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # SKILL COST CHANGE EQIPMENTS
 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # Here you can set equipments that changes the SP cost for skill
 # ou diminuem o custo de SP das habilidades

 # Sp_Cost_Change_Equip[equip_kind]= {id => change}
 #  equip_kind = kind of the equipment
 #    'Weapon' for weapons, 'Armor' for armors
 #  id = equip ID
 #  change = rate of change in the SP cost, postive values are reductions,
 #    negative values are increases
 Sp_Cost_Change_Equip['Weapon'] = {38 => 25}
 Sp_Cost_Change_Equip['Armor'] = {37 => -50}
 #=============================================================================

 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # CONFIGURAÇÕES DOS SLOTS DE EQUIPAMENTOS
 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # Here you can set the equipment multi slot configurations

 # Equipment Kinds
 # The order of the values here define the order that the equipment will be
 # shown in the menu
 # If you repeat an value, means that the actor can equip more than one
 # equip of that type,
 Equip_Kinds = [0,1,2,3,5,4,4]
 # 0 = Weapons (if you add more than one value equal zero, all these equips
 #     will be considered 'right hand', so they won't remove the shield)
 # 1 = Shields (any equip set as 'Shield' will be exchanged by an weapon if
 #     the actor have the dual wielding)
 # 2 = Helmets
 # 3 = Armors
 # 4 = Accessories
 # Values above 5 are the extra slots, use to creat equipments like Boots, Capes...
 # You must set the IDs of the extra slots equips in 'Extra_Equips_ID'
 #
 # It's recomended that you leave only one 'Weapon' and one 'Shield', once
 # it interfere in the Dual Wielding and 2 Haded Weapons

 # You can change this value individually for each actor making an script call
 # and adding this command:
 # $game_actors[actor_id].equip_kind = [x,y,z]
 #   actor_id = actor ID
 #   [x,y,z] = new equip kind configuration

 # IDs of the equipments
 # Extra_Equips_ID = {kind => [equips_ids]}
 #  kind = equipment type, set on Equip_Kinds
 #  equips_ids = id of the armors of this equip type
 Extra_Equips_ID = {5 => [38,39]}

 # Name of the equips shown in the equip and status window
 Equip_Names = ['Right Hand', 'Left Hand', 'Helmet', 'Armor', 'Boots', 
                'Accessory', 'Accessory']
 # The order here is the order that the names are shown in the menu, set
 # them according to the values set in 'Equip_Kinds'.
 # if you change the value of the kinds with script calls, remember to change
 # the names.

 # You can change this value individually for each actor making an script call
 # and adding this command:
 # $game_actors[actor_id].equip_names = [x,y,z]
 #   actor_id = actor ID
 #   [x,y,z] = new equip names configuration

 # Equipment Lock, these lines allows you to 'lock' an determined type of 
 # equipment, don't allow the actor to stay without equipment of this type
 # You can change equips freely, but can't remove.
 # E.g.: You have an Bow user character, and don't want him to stay without bows.

 #  Equip_Lock[equip_kind] = {actor_id =>[equip_type_id]}
 #    equip_kind = kind of the equipment
 #      'Weapon' for weapons, 'Armor' for armors
 #    actor_id = actor id
 #    equip_type_id = id of the equipment
 #      0 = right hand weapon
 #      1 = left hand weapon or shield
 #      2,3,4... = armors
 Equip_Lock['Weapon']= {1 => [0], 2 => [0], 3 => [0], 4 => [0], 
                        5 => [0], 6 => [0], 7 => [0], 8 => [0]}

 Equip_Lock['Armor']= {1 => [1], 2 => [1]}
 #=============================================================================

 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # WEAPON ATTACK STATUS CONFIGURATION
 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # here you can change the base status for damage of weapons
 # You cam make weapons that causes damage based on dex, int or other status
 #  
 # Weapon_Damage_Type = {Weapon_ID => {Status => Mult}}
 #   Weapon_ID = Weapon ID
 #   Status = Status that define the base damage of weapon. Can be:
 #     'maxhp',maxsp','hp','sp','level','str','dex','int','agi','atk',
 #     'def','mdef','eva','hit'
 #   If you create an new status on game actor, you can add it too
 #   Mult = Multiplier of the status, can be decimals.

 Weapon_Damage_Type = {39 => {'str'=> 0.5, 'agi' => 0.5}, 40 => {'int'=> 1},
   41 => {'hp'=> 0.1}, 42 => {'level'=> 10},}
 #=============================================================================

 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # STATUS LIMIT SETTINGS
 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # Here you can set new limits for status and level

 # Default level limit
 Max_Level_Default = 99

 # Individual level limit
 # Max_Level[iD] = X
 #  ID = Actor ID
 #  X = Max level
 Max_Level[1] = 99
 Max_Level[2] = 99
 Max_Level[3] = 99
 Max_Level[4] = 99

 # Actor status limit
 Actor_Max_Hp  = 9999
 Actor_Max_Sp  = 9999
 Actor_Max_Str = 999
 Actor_Max_Dex = 999
 Actor_Max_Agi = 999
 Actor_Max_Int = 999
 Actor_Max_Atk = 999
 Actor_Max_PDef = 999
 Actor_Max_MDef = 999

 # Base status Multiplier
 # These values change the base status of the character
 # Can be decimals(E.g.: 2.7)
 Actor_Mult_Hp  = 1
 Actor_Mult_Sp  = 1
 Actor_Mult_Str = 1
 Actor_Mult_Dex = 1
 Actor_Mult_Agi = 1
 Actor_Mult_Int = 1
 #=============================================================================

 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # NEW STATUS SETTINGS
 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # Settings for the new status, here you can add new status for weapons and armors

 # Auto_Status = You can set one or more auto status to an Weapon or Armor
 # Auto_Status[equip_kind] = { A => [ B, C, D...]} 
 #   equip_kind = kind of the equipment
 #     'Weapon' for weapons, 'Armor' for armors
 #   A = Weapon ID or Armor ID
 #   B,C,D = ID dos status permanentes.
 #
 Auto_Status['Weapon'] = {}

 Auto_Status['Armor'] = {}

 # Speacial_Status = New Status for Weapons or Armors and
 # Speacial_Status[Action_Type] = { Action_ID => {Status => Value}} 
 #   equip_kind = kind of the equipment
 #     'Weapon' for weapons, 'Armor' for armors
 #   Action_ID = Weapon ID or Armor ID
 #   Status = Status Changed, can be equal:
 #     'hit' = Hit Rate: Hit Rate Modifier
 #     'crt' = Critical Rate: Changes the chance of causing critical hits.
 #     'dmg' = Critical Damage: Changes the damage dealt by critical hits.
 #     'rcrt' = Critical Rate Resist: Changes the chance of reciving citical hits
 #     'rdmg' = Critical Damage Resist: Changes the damage recived by critical hits.
 Speacial_Status['Weapon'] = {}

 Speacial_Status['Armor'] = {}
 #=============================================================================

 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # ELEMENTAL AND STATUS RESISTANCE SETTINGS
 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # Here you can set an new style for the elemental and status resistance, allowing
 # you to set elemental resistance based on actors IDs and set increases and/or
 # decreases in resistance for equipments and status

 # Use the new status resist style?
 Use_New_Resist = true

 # Style of the resistance acumulation
 Addition_Type = 0
 # 0 = The values are added, considering all values
 # 1 = The values are added, considering only the higher and the lower values
 # 2 = The value used are the average, considering all values
 # 3 = The value used are the average, considering only the higher and the lower values

 # Element_Resist[Type] = {Type_ID => {Element_ID => Resist_Value}
 #   Type = type of the object that gives the resistance
 #     'Actor' = actor's natural resistance
 #     'State' = resistance given by states
 #     'Armor' = resistance given by armors
 #     'Weapon' = resistance given by weapons
 #   Type_ID = id of the actor, state, armor or weapon
 #   Element_ID = ID of the element that will have the value change
 #   Resist_Value = Resistance change value, must be an Integer.
 #     positive values are increases in resistance, negative are reductions.
 #     E.g.: an actor imune to fire equips an armor that gives -1 fire resistance
 #       will have the fire resistance changed from imune to resistant.
 Element_Resist['Actor'] = {1 => {4 => -1, 2 => -1}, 2 => {4 => 2, 2 => -1},
                            3 => {4 => 2, 2 => -1}, 4 => {4 => 2, 2 => -1}}
 Element_Resist['State'] = {}

 Element_Resist['Armor'] = {}

 Element_Resist['Weapon'] = {}


 # State_Resist[Type] = {Type_ID => {State_ID => Resist_Value}
 #   Type = type of the object that gives the resistance
 #     'Actor' = actor's natural resistance
 #     'State' = resistance given by states
 #     'Armor' = resistance given by armors
 #     'Weapon' = resistance given by weapons
 #   Type_ID = id of the actor, state, armor or weapon
 #   State_ID = ID of the state that will have the value change
 #   Resist_Value = Resistance change value, must be an Integer.
 #     positive values are increases in resistance, negative are reductions.
 State_Resist['Actor'] = {}

 State_Resist['State'] = {}

 State_Resist['Armor'] = {}

 State_Resist['Weapon'] = {}
 #=============================================================================


 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # EQUIPMENT SKILLS SETTINGS
 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # Here you can set equipments that adds skills for the actors when equiped,
 # you can also set an minimum level for the skills to be learned
 #
 # Equip_Skills[Equip_Type] = {Equip_ID => {Min_Level => Skill_ID}}
 #  Equip_Type = 'Weapon' for weapons, 'Armor' for armor
 #  Equips_ID = ID do equipamento
 #  Min_Level = minimum level required for learning the skill
 #  Skill_ID = id of the skill learned
 Equip_Skills['Weapon'] = {}

 Equip_Skills['Armor'] = {}
 #=============================================================================

 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # EQUIPMENT SET SETTINGS
 #¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 # These configurations allows you to creat "equip sets"
 # Sets are equipments that offer extra effects when used togther
 # 
 # The configuration are divided in two parts:
 #  - Equip_Set: where you configure wich equip is part of a set
 #  - Set_Effect: where you configure the effects of the set
 #

 # Equip_Set[set_ID] = {Equip_Type => [Equips_IDs]}
 #  Set_ID = Set ID, this value must be the same as the one in 'Set_Effect'
 #  Equip_Type = 'Weapon' for weapons, 'Armor' for armor
 #  Equips_IDs = Equiment IDs
 Equip_Set[1] = {'Armor' => [12,24,28]}

 Equip_Set[2] = {'Weapon' => [4], 'Armor' => [4,8,16]}

 # Set_Effect[set_ID] = {Effect_Type => Effects}
 #  Set_ID = Set ID, this value must be the same as the one in 'Equip_Set'
 #  Effect_Type = type of the effect
 #    'status' = change on the actor status
 #    'auto states' = auto states
 #    'skills' = skills learned
 #    'states' = elemental resistance change (only if 'Use_New_Resist = true')
 #    'elements' = states resistance change (only if 'Use_New_Resist = true')
 #  Effects = the chages caused, varies according to 'Effect_Type'
 #     - if 'Effect_Type' = 'status'
 #       'status' => {stat => value}
 #       value = value of change in the status
 #       stat = the status changed, must be one of the values bellow
 #        'maxhp' = Max Hp
 #        'maxsp' = Max Sp
 #        'level' = Level
 #        'atk'  = Attack
 #        'pdef' = Physical Defense
 #        'mdef' = Magic Defense
 #        'str'  = Strength
 #        'dex'  = Dexterity
 #        'int'  = Intelligence
 #        'agi'  = Agility
 #        'eva'  = Evasion
 #        'hit'  = Hit Rate
 #        'crt'  = Critical Rate
 #        'dmg'  = Critical Damage
 #        'rcrt' = Critical Rate Resist.
 #        'rdmg' = Critical Damage Resist.
 #     - if 'Effect_Type' = 'auto states'
 #       'auto states' => [states_ids]
 #         states_ids = ids of the auto states
 #     - if 'Effect_Type' = 'skills'
 #       'skills' => {min_level => skill_id}
 #         min_level = minimum level required for learning the skill
 #         skill_id = id of the skill learned
 #     - if 'Effect_Type' = 'states'
 #       'states' => {state_id => resist_value}
 #         state_id = id of the state
 #         resist_value = value of resitance change
 #     - se 'Effect_Type' = 'elements'
 #       'elements' => {element_id => resist_value}
 #         element_id = id of the element
 #         resist_value = value of resitance change
 Set_Effect[1] = {'status' => {'maxsp' => 500, 'int' => 100}}

 Set_Effect[2] = {'status' => {'maxhp' => 200, 'maxsp' => 200}, 'auto states' => [22], 
   'skills' => {1 => 31, 20 => 32}, 'states' => {1 => 1, 4 => 3},
   'elements' => {1 => 1, 3 => 1, 5 => 1}}
 #=============================================================================
end

#==============================================================================
# ■ Atoa Module
#==============================================================================
$atoa_script['SBS Actor Status'] = true

#==============================================================================
# ■ RPG::Weapon
#==============================================================================
class RPG::Weapon
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 attr_accessor :multi_auto_state_id
 attr_accessor :crt
 attr_accessor :dmg
 attr_accessor :hit
 attr_accessor :rcrt
 attr_accessor :rdmg
 attr_accessor :scope
 attr_accessor :element_resist
 #--------------------------------------------------------------------------
 alias acbs_initialize_actorstatus_rpgweapon initialize
 def initialize
   acbs_initialize_actorstatus_rpgweapon
   @multi_auto_state_id, @element_resist, @state_resist = [], [], []
 end
 #--------------------------------------------------------------------------
 def element_resist
   return @element_resist unless @element_resist.nil?
   resist = Element_Resist.dup
   @element_resist = []
   for i in 1...$data_system.elements.size
     if resist['Weapon'] != nil && resist['Weapon'][@id] != nil && 
        resist['Weapon'][@id][i] != nil
       @element_resist[i] = resist['Weapon'][@id][i]
     else
       @element_resist[i] = 0
     end
   end
   return @element_resist
 end
 #--------------------------------------------------------------------------
 def state_resist
   return @state_resist unless @state_resist.nil?
   resist = State_Resist.dup
   @state_resist = []
   for i in 1...$data_states.size
     if resist['Weapon'] != nil && resist['Weapon'][@id] != nil && 
        resist['Weapon'][@id][i] != nil
       @state_resist[i] = resist['Weapon'][@id][i]
     else
       @state_resist[i] = 0
     end
   end
   return @state_resist
 end
 #--------------------------------------------------------------------------
 def multi_auto_state_id
   st = Auto_Status['Weapon']
   return @multi_auto_state_id = st != nil && st[@id] != nil ? st[@id] : []
 end
 #--------------------------------------------------------------------------
 def hit
   wpn = Speacial_Status['Weapon']
   return wpn[@id] != nil && wpn[@id]['hit'] != nil ? wpn[@id]['hit'] : 0
 end
 #--------------------------------------------------------------------------
 def crt
   wpn = Speacial_Status['Weapon']
   return wpn[@id] != nil && wpn[@id]['crt'] != nil ? wpn[@id]['crt'] : 0
 end
 #--------------------------------------------------------------------------
 def dmg
   wpn = Speacial_Status['Weapon']
   return wpn[@id] != nil && wpn[@id]['dmg'] != nil ? wpn[@id]['dmg'] : 0
 end
 #--------------------------------------------------------------------------
 def rcrt
   wpn = Speacial_Status['Weapon']
   return wpn[@id] != nil && wpn[@id]['rcrt'] != nil ? wpn[@id]['rcrt'] : 0
 end
 #--------------------------------------------------------------------------
 def rdmg
   wpn = Speacial_Status['Weapon']
   return wpn[@id] != nil && wpn[@id]['rdmg'] != nil ? wpn[@id]['rdmg'] : 0
 end
 #--------------------------------------------------------------------------
 def type_id
   return 0
 end
end

#==============================================================================
# ■ RPG::Armor
#==============================================================================
class RPG::Armor
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 attr_accessor :multi_auto_state_id
 attr_accessor :crt
 attr_accessor :dmg
 attr_accessor :hit
 attr_accessor :rcrt
 attr_accessor :rdmg 
 attr_accessor :element_resist
 #--------------------------------------------------------------------------
 alias acbs_initialize_actorstatus_rpgarmor initialize
 def initialize
   acbs_initialize_actorstatus_rpgarmor
   @multi_auto_state_id, @element_resist, @state_resist = [], [], []
 end
 #--------------------------------------------------------------------------
 def element_resist
   return @element_resist unless @element_resist.nil?
   resist = Element_Resist.dup
   @element_resist = []
   for i in 1...$data_system.elements.size
     if resist['Armor'] != nil && resist['Armor'][@id] != nil && 
        resist['Armor'][@id][i] != nil
       @element_resist[i] = resist['Armor'][@id][i]
     else
       @element_resist[i] = 0
     end
   end
   return @element_resist
 end
 #--------------------------------------------------------------------------
 def state_resist
   return @state_resist unless @state_resist.nil?
   resist = State_Resist.dup
   @state_resist = []
   for i in 1...$data_states.size
     if resist['Armor'] != nil && resist['Armor'][@id] != nil && 
        resist['Armor'][@id][i] != nil
       @state_resist[i] = resist['Armor'][@id][i]
     else
       @state_resist[i] = 0
     end
   end
   return @state_resist
 end
 #--------------------------------------------------------------------------
 def multi_auto_state_id
   st = Auto_Status['Armor']
   return @multi_auto_state_id = st != nil && st[@id] != nil ? st[@id] : []
 end
 #--------------------------------------------------------------------------
 def hit
   arm = Speacial_Status['Armor']
   return arm[@id] != nil && arm[@id]['hit'] != nil ? arm[@id]['hit'] : 0
 end
 #--------------------------------------------------------------------------
 def crt
   arm = Speacial_Status['Armor']
   return arm[@id] != nil && arm[@id]['crt'] != nil ? arm[@id]['crt'] : 0
 end
 #--------------------------------------------------------------------------
 def dmg
   arm = Speacial_Status['Armor']
   return arm[@id] != nil && arm[@id]['dmg'] != nil ? arm[@id]['dmg'] : 0
 end
 #--------------------------------------------------------------------------
 def rcrt
   arm = Speacial_Status['Armor']
   return arm[@id] != nil && arm[@id]['rcrt'] != nil ? arm[@id]['rcrt'] : 0
 end
 #--------------------------------------------------------------------------
 def rdmg
   arm = Speacial_Status['Armor']
   return arm[@id] != nil && arm[@id]['rdmg'] != nil ? arm[@id]['rdmg'] : 0
 end
 #--------------------------------------------------------------------------
 def type_id
   if Extra_Equips_ID != nil
     for kind in Extra_Equips_ID.dup
       return kind[0] if kind[1].include?(@id)
     end
   end
   return @kind + 1
 end
end

#==============================================================================
# ■ RPG::State
#==============================================================================
class RPG::State
 #--------------------------------------------------------------------------
 attr_accessor :element_resist
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 alias acbs_initialize_actorstatus_rpgstate initialize
 def initialize
   acbs_initialize_actorstatus_rpgstate
   @element_resist, @state_resist = [], []
 end
 #--------------------------------------------------------------------------
 def element_resist
   return @element_resist unless @element_resist.nil?
   resist = Element_Resist.dup
   @element_resist = []
   for i in 1...$data_system.elements.size
     if resist['State'] != nil && resist['State'][@id] != nil && 
        resist['State'][@id][i] != nil
       @element_resist[i] = resist['State'][@id][i]
     else
       @element_resist[i] = 0
     end
   end
   return @element_resist
 end
 #--------------------------------------------------------------------------
 def state_resist
   return @state_resist unless @state_resist.nil?
   resist = State_Resist.dup
   @state_resist = []
   for i in 1...$data_states.size
     if resist['State'] != nil && resist['State'][@id] != nil && 
        resist['State'][@id][i] != nil
       @state_resist[i] = resist['State'][@id][i]
     else
       @state_resist[i] = 0
     end
   end
   return @state_resist
 end
end

#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 attr_accessor :two_swords_actors
 attr_accessor :two_swords_classes
 #--------------------------------------------------------------------------
 alias acbs_initialize_actorstatus_gameparty initialize
 def initialize
   acbs_initialize_actorstatus_gameparty
   @two_swords_actors = two_swords_actors
   @two_swords_classes = two_swords_classes
 end
 #--------------------------------------------------------------------------
 def two_swords_actors
   return @two_swords_actors.nil? ? Two_Swords_Actors.dup : @two_swords_actors
 end
 #--------------------------------------------------------------------------
 def two_swords_actors_add(id)
   actor = $game_actors[id]
   actor.remove_left_equip_actor
   @two_swords_actors << id
   @two_swords_actors.compact!
 end
 #--------------------------------------------------------------------------
 def two_swords_actors_remove(id)
   actor = $game_actors[id]
   actor.remove_left_equip_actor
   @two_swords_actors.delete(id)
   @two_swords_actors.compact!
 end
 #--------------------------------------------------------------------------
 def two_swords_classes
   return @two_swords_classes.nil? ? Two_Swords_Classes.dup : @two_swords_classes
 end
 #--------------------------------------------------------------------------
 def two_swords_classes_add(id)
   for actor in @actors
     actor.remove_left_equip_class(id)
   end
   @two_swords_classes << id
   @two_swords_classes.compact!
 end
 #--------------------------------------------------------------------------
 def two_swords_classes_remove(id)
   for actor in @actors
     actor.remove_left_equip_class(id)
   end
   @two_swords_classes.delete(id)
   @two_swords_classes.compact!
 end
end

#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 attr_accessor :crt
 attr_accessor :dmg
 attr_accessor :rcrt
 attr_accessor :rdmg
 attr_accessor :multi_attack
 attr_accessor :current_weapon
 attr_accessor :second_attack
 #--------------------------------------------------------------------------
 alias acbs_initialize_actorstatus_gamebattler initialize
 def initialize
   acbs_initialize_actorstatus_gamebattler
   @multi_attack = @second_attack = false
 end
 #--------------------------------------------------------------------------
 def crt
   return 5
 end
 #--------------------------------------------------------------------------
 def dmg
   return 100
 end
 #--------------------------------------------------------------------------
 def rcrt
   return 0
 end
 #--------------------------------------------------------------------------
 def rdmg
   return 0
 end
 #--------------------------------------------------------------------------
 def set_attack_critical(attacker)
   atk_crt = DAMAGE_ALGORITHM_TYPE > 1 ? attacker.agi : attacker.dex
   res_crt = attacker.crt - self.rcrt
   self.critical = rand(100) < [res_crt, 1].max * atk_crt / self.agi
 end
 #--------------------------------------------------------------------------
 def set_critical_damage(attacker)
   dmg_crt = attacker.dmg - self.rdmg
   self.damage += (self.damage * [dmg_crt, 1].max) / 100
 end
 #--------------------------------------------------------------------------
 def state_rate(state_id)
   table = [0,100,80,60,40,20,0]
   if Use_New_Resist
     result = state_rate_ranks(state_id)
   else
     result = table[self.state_ranks[state_id]]
   end
   return result
 end
 #--------------------------------------------------------------------------
 def states_plus(plus_state_set)
   effective = false
   for i in plus_state_set
     unless self.state_guard?(i)
       effective |= self.state_full?(i) == false
       if $data_states[i].nonresistance
         @state_changed = true
         add_state(i)
       elsif self.state_full?(i) == false
         state = state_rate(i)
         if rand(100) < state
           @state_changed = true
           add_state(i)
         end
       end
     end
   end
   return effective
 end
 #--------------------------------------------------------------------------
 alias acbs_elements_correct_actorstatus elements_correct
 def elements_correct(element_set)
   if Use_New_Resist
     value = 100
     absorb = false
     for i in element_set
       element = element_rate_rank(i)
       element *= -1 if element < 0 and absorb == true
       value *= element / 100
       absorb = true if element < 0 and absorb == false
     end
     return value.to_i
   else
     acbs_elements_correct_actorstatus(element_set)
   end
 end
 #--------------------------------------------------------------------------
 alias set_attack_damage_value_actorstatus set_attack_damage_value
 def set_attack_damage_value(attacker)
   if attacker.actor? and attacker.weapons.size > 0
     if attacker.actor? and attacker.weapons[0] != nil and attacker.weapons[1] != nil
       if Use_Old_Two_Sword_Beahave
         mulitiplier = attacker.second_attack ? TWO_SWORDS_STYLE[0] : TWO_SWORDS_STYLE[1]
       else
         mulitiplier = Dual_Attack_Power
       end
       wpn = (attacker.weapons[0].atk * mulitiplier) / 100
       wpn = (attacker.weapons[1].atk * mulitiplier) / 100 if attacker.second_attack
       weapon = attacker.second_attack ? attacker.weapons[1] : attacker.weapons[0]
     else
       weapon = attacker.weapons[0]
       wpn = attacker.atk
     end
     if Weapon_Damage_Type.include?(weapon.id)
       pwr = 0
       for stat in Weapon_Damage_Type[weapon.id]
         pwr += eval("(attacker.#{stat[0]} * #{stat[1]}).to_i")
       end
     else
       pwr = attacker.str
     end
     case DAMAGE_ALGORITHM_TYPE
     when 0
       atk = [wpn - (self.pdef / 2), 0].max
       str = [20 + pwr, 0].max
     when 1
       atk = [wpn - ((wpn * self.pdef) / 1000), 0].max
       str = [20 + pwr, 0].max
     when 2
       atk = 20
       str = [(pwr * 3) - (self.dex * 2) , 0].max
     when 3
       atk = [(10 + wpn) - (self.pdef / 2), 0].max
       str = [(20 + pwr) - (self.dex / 2), 0].max
     end
     self.damage = atk * str / 20
     self.damage = 1 if self.damage == 0 and (rand(100) > 40)
     self.damage *= elements_correct(weapon.element_set)
     self.damage /= 100
     attacker.second_attack = true if attacker.actor? and attacker.weapons[0] != nil and attacker.weapons[1] != nil
   else
     set_attack_damage_value_actorstatus(attacker)
   end
 end
 #--------------------------------------------------------------------------
 alias acbs_set_skill_power_actor_status_n01 set_skill_power
 def set_skill_power(user, skill)
   if user.actor?
     if user.actor? and user.weapons[0] != nil and user.weapons[1] != nil
       if Use_Old_Two_Sword_Beahave
         mulitiplier = ((TWO_SWORDS_STYLE[0] + TWO_SWORDS_STYLE[1]) / 2)
       else
         mulitiplier = Dual_Attack_Power
       end
       wpn = (user.atk * mulitiplier) / 100
     else
       wpn = user.atk
     end
     if Weapon_Damage_Type.include?(user.weapons[0].id)
       pwr = 0
       for stat in Weapon_Damage_Type[user.weapons[0].id]
         pwr += eval("(user.#{stat[0]} * #{stat[1]}).to_i")
       end
     else
       pwr = user.str
     end
     case DAMAGE_ALGORITHM_TYPE
     when 0,1,3
       power = skill.power + ((wpn * skill.atk_f) / 100)
     when 2
       user_str = (pwr * 4 * skill.str_f / 100)
       user_int = (user.int * 2 * skill.int_f / 100)
       if skill.power > 0
         power = skill.power + user_str + user_int
       else
         power = skill.power - user_str - user_int
       end
     end
     return power
   else
     return acbs_set_skill_power_actor_status_n01(user, skill)
   end
 end
end

#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
 #--------------------------------------------------------------------------
 attr_accessor :weapon_fix
 attr_accessor :armor_fix
 attr_accessor :equip_kind
 attr_accessor :equip_names
 attr_accessor :weapons
 attr_accessor :equip_id
 attr_accessor :two_swords_style
 #--------------------------------------------------------------------------
 alias acbs_initialize_actorstatus_gameactor initialize
 def initialize(actor_id)
   reset_set_status
   acbs_initialize_actorstatus_gameactor(actor_id)
   @equipment_skills = []
   @equip_id = []
   @equip_kind = equip_kind
   @equip_names = equip_names
   @element_resist = element_resist
   @state_resist = state_resist
   for i in 0...@equip_kind.size
     id = @equip_kind[i]
     if id == 0 and i == 0
       @equip_id[i] = @weapon_id
     elsif id != 0 and (1..4).include?(id)
       @equip_id[i] = eval("@armor#{id}_id")
     else
       @equip_id[i] = 0
     end
   end
   @weapon_fix = [@weapon_fix]
   @weapon_fix[1] = @armor1_fix if two_swords_style
   @armor_fix = [false]
   for i in 0...@equip_kind.size
     id = @equip_kind[i]
     if (1..4).include?(id) and not (id == 1 and two_swords_style)
       @armor_fix[i] = eval("@armor#{id}_fix")
     elsif id > 0 and not (id == 1 and two_swords_style)
       @armor_fix[i] = false
     end
   end 
   @armor_fix[1] = @armor1_fix unless two_swords_style
   @equip_id[1] = 0 if Two_Hands_Weapons.include?(@weapon_id) or two_swords_style
   gain_equip_skills
   update_equip_set
   @elemental_resist = elemental_resist
   @states_resist = states_resist
   for equip in armors do update_auto_state(nil, equip) end
   for equip in equips do update_multi_auto_state(nil, equip) end
 end
 #--------------------------------------------------------------------------
 def element_resist
   return @element_resist unless @element_resist.nil?
   resist = Element_Resist.dup
   @element_resist = []
   for i in 1..$data_system.elements.size
     if resist['Actor'] != nil && resist['Actor'][@actor_id] != nil && 
        resist['Actor'][@actor_id][i] != nil
       @element_resist[i] = resist['Actor'][@actor_id][i]
     else
       @element_resist[i] = 0
     end
   end
   return @element_resist
 end
 #--------------------------------------------------------------------------
 def element_resist=(elements)
   return @element_resist unless elements.is_a?(Hash)
   resist = elements.dup
   @element_resist = []
   for i in 1...$data_system.elements.size
     if resist != nil && resist[i] != nil
       @element_resist[i] = resist[i]
     else
       @element_resist[i] = 0
     end
   end
   return @element_resist
 end
 #--------------------------------------------------------------------------
 def state_resist
   return @state_resist unless @state_resist.nil?
   resist = State_Resist.dup
   @state_resist = []
   for i in 1...$data_states.size
     if resist['Actor'] != nil && resist['Actor'][@actor_id] != nil && 
        resist['Actor'][@actor_id][i] != nil
       @state_resist[i] = resist['Actor'][@actor_id][i]
     else
       @state_resist[i] = 0
     end
   end
   return @state_resist
 end
 #--------------------------------------------------------------------------
 def state_resist=(states)
   return @state_resist unless states.is_a?(Hash)
   resist = states.dup
   @state_resist = []
   for i in 1...$data_states.size
     if resist != nil && resist[i] != nil
       @state_resist[i] = resist[i]
     else
       @state_resist[i] = 0
     end
   end
   return @state_resist
 end
 #--------------------------------------------------------------------------
 def equip_names
   return @equip_names.nil? ? Equip_Names : @equip_names
 end
 #--------------------------------------------------------------------------
 def equip_names=(n)
   @equip_names = n
 end
 #--------------------------------------------------------------------------
 def equip_kind
   return @equip_kind.nil? ? Equip_Kinds : @equip_kind
 end
 #--------------------------------------------------------------------------
 def equip_kind=(n)
   for i in 0...@equip_kind.size
     equip(i, 0) if @equip_kind[i] != n[i]
   end
   @equip_kind = n
   set_equip_id
 end
 #--------------------------------------------------------------------------
 def set_equip_id
   for i in 0...@equip_kind.size
     @equip_id[i] = 0 if @equip_id[i] == nil
   end
 end
 #--------------------------------------------------------------------------
 def two_swords_style
   return true if $game_party.two_swords_actors.include?(@actor_id)
   return true if $game_party.two_swords_classes.include?(@class_id)
   return false
 end
 #--------------------------------------------------------------------------
 def weapons
   result = []
   for i in 0...@equip_kind.size
     id = @equip_kind[i]
     if id == 0 or (id == 1 and two_swords_style)
       result << $data_weapons[@equip_id[i]]
     end
   end
   return result.compact
 end
 #--------------------------------------------------------------------------
 def armors
   result = []
   for i in 0...@equip_kind.size
     id = @equip_kind[i]
     if id > 1 or (id == 1 and not two_swords_style)
       result << $data_armors[@equip_id[i]]
     end
   end
   return result.compact
 end
 #--------------------------------------------------------------------------
 def equips
   return weapons + armors
 end  
 #--------------------------------------------------------------------------
 def elemental_resist
   @elemental_resist = [0]
   for i in 1...$data_system.elements.size
     value = $data_classes[@class_id].element_ranks[i]
     case Addition_Type
     when 0,2
       value += @element_resist[i]
       element_size = 1
       for kind in 0...@equip_kind.size
         id = @equip_kind[kind]
         if id == 0 or (id == 1 and two_swords_style)
           eqp = $data_weapons[@equip_id[kind]]
         else
           eqp = $data_armors[@equip_id[kind]]
         end
         value += eqp.element_resist[i] if eqp != nil
         element_size += 1 if eqp != nil and eqp.element_resist[i] != 0
       end
       for state in @states
         value += $data_states[state].element_resist[i]
         element_size += 1 if $data_states[state].element_resist[i] != 0
       end
       for set in @set_elemental_resist
         value += set[i] if set[i] != nil
         element_size += 1 if set[i] != nil and set[i] != 0
       end
       value /= element_size if Addition_Type == 2      
     when 1,3
       h, l = 0, 0
       h = @element_resist[i] if @element_resist[i] > 0
       l = @element_resist[i] if @element_resist[i] < 0
       for kind in 0...@equip_kind.size
         id = @equip_kind[kind]
         if id == 0 or (id == 1 and two_swords_style)
           eqp = $data_weapons[@equip_id[kind]]
         else
           eqp = $data_armors[@equip_id[kind]]
         end          
         if eqp.element_resist[i] > h and eqp.element_resist[i] > 0
           h = eqp.element_resist[i]
         elsif eqp.element_resist[i] < l and eqp.element_resist[i] < 0
           l = eqp.element_resist[i]
         end
       end
       for state in @states
         st = $data_states[state]
         if st.element_resist[i] > h and st.element_resist[i] > 0
           h = st.element_resist[i]
         elsif st.element_resist[i] < l and st.element_resist[i] < 0
           l = st.element_resist[i]
         end
       end
       for set in @set_elemental_resist
         if set[i] != nil and set[i] > h and set[i] > 0
           h = set[i]
         elsif set[i] != nil and set[i] < l and set[i] < 0
           l = set[i]
         end
       end
       value = h + l
       value /= 2 if h != 0 and l != 0 and Addition_Type == 2
     end
     @elemental_resist << [[value.to_i, 6].min, 1].max
   end
  return @elemental_resist
 end
 #--------------------------------------------------------------------------
 def states_resist
   @states_resist = [0]
   for i in 1...$data_states.size
     value = $data_classes[@class_id].state_ranks[i]
     case Addition_Type
     when 0,2
       value += @state_resist[i]
       state_size = 1
       for kind in 0...@equip_kind.size
         id = @equip_kind[kind]
         if id == 0 or (id == 1 and two_swords_style)
           eqp = $data_weapons[@equip_id[kind]]
         else
           eqp = $data_armors[@equip_id[kind]]
         end
         value += eqp.state_resist[i] if eqp != nil
         state_size += 1 if eqp != nil and eqp.state_resist[i] != 0
       end
       for state in @states
         value += $data_states[state].state_resist[i]
         state_size += 1 if $data_states[state].state_resist[i] != 0
       end
       for set in @set_state_resist
         value += set[i] if set[i] != nil
         element_size += 1 if set[i] != nil and set[i] != 0
       end
       value /= state_size if Addition_Type == 2
     when 1,3
       h, l = 0, 0
       h = @state_resist[i] if @state_resist[i] > 0
       l = @state_resist[i] if @state_resist[i] < 0
       for kind in 0...@equip_kind.size
         id = @equip_kind[kind]
         if id == 0 or (id == 1 and two_swords_style)
           eqp = $data_weapons[@equip_id[kind]]
         else
           eqp = $data_armors[@equip_id[kind]]
         end          
         if eqp.state_resist[i] > h and eqp.state_resist[i] > 0
           h = eqp.state_resist[i]        
         elsif eqp.state_resist[i] < l and eqp.state_resist[i] < 0
           l = eqp.state_resist[i]        
         end
       end
       for state in @states
         st = $data_states[state]
         if st.state_resist[i] > h and st.state_resist[i] > 0
           h = st.state_resist[i]        
         elsif st.state_resist[i] < l and st.state_resist[i] < 0
           l = st.state_resist[i]        
         end
       end
       for set in @set_state_resist
         if set[i] != nil and set[i] > h and set[i] > 0
           h = set[i]
         elsif set[i] != nil and set[i] < l and set[i] < 0
           l = set[i]
         end
       end
       value = h + l
       value /= 2 if h != 0 and l != 0
     end
     @states_resist << [[value.to_i, 6].min, 1].max
   end
   return @states_resist
 end
 #--------------------------------------------------------------------------
 def element_rate_rank(element_id)
   table = [0,200,150,100,50,0,-100]
   result = table[elemental_resist[element_id]]
   return result
 end
 #--------------------------------------------------------------------------
 def state_rate_ranks(state_id)
   table = [0,100,80,60,40,20,0]
   result = table[states_resist[state_id]]
   return result
 end
 #--------------------------------------------------------------------------
 def state_guard?(state_id)
   for i in 0...@equip_kind.size
     id = @equip_kind[i]
     if id > 1 or (id == 1 and not two_swords_style)
       armor = $data_armors[@equip_id[i]]
       return true if armor != nil && armor.guard_state_set.include?(state_id)
     end
   end
   return false
 end
 #--------------------------------------------------------------------------
 def sp_change_equip
   sp_equip = 100
   for equip in equips.compact
     if equip.is_a?(RPG::Weapon) and Sp_Cost_Change_Equip['Weapon'] != nil and
        Sp_Cost_Change_Equip['Weapon'].include?(equip.id)
       sp_equip = (((100 - Sp_Cost_Change_Equip['Weapon'][equip.id]) * sp_equip)/ 100)
     elsif equip.is_a?(RPG::Armor) and Sp_Cost_Change_Equip['Armor'] != nil and
        Sp_Cost_Change_Equip['Armor'].include?(equip.id)
       sp_equip = (((100 - Sp_Cost_Change_Equip['Armor'][equip.id]) * sp_equip)/ 100)
     end
   end
   return [sp_equip, 0].max
 end
 #-------------------------------------------------------------------------- 
 unless @alias_acbs_calc_sp_cost_actorstatus
   alias acbs_calc_sp_cost_actorstatus calc_sp_cost 
   @alias_acbs_calc_sp_cost_actorstatus = true
 end
 def calc_sp_cost(user, skill)
   cost = acbs_calc_sp_cost_actorstatus(user, skill)
   return (cost * sp_change_equip) / 100
 end
 #-------------------------------------------------------------------------- 
 def exp=(exp)
   lose_equip_skills
   forget_set_skills
   @exp = [exp, 0].max
   while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
     @level += 1
     for j in $data_classes[@class_id].learnings
       if j.level == @level
         learn_skill(j.skill_id)
       end
     end
   end
   while @exp < @exp_list[@level]
     @level -= 1
   end
   @hp = [@hp, self.maxhp].min
   @sp = [@sp, self.maxsp].min
   gain_equip_skills
   update_equip_set
 end
 #-------------------------------------------------------------------------- 
 def make_exp_list
   actor = $data_actors[@actor_id]
   @exp_list[1] = 0
   pow_i = 2.4 + actor.exp_inflation / 100.0
   (2..(self.final_level + 1)).each { |i|
     if i > self.final_level
       @exp_list[i] = 0
     else
       n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
       @exp_list[i] = @exp_list[i-1] + Integer(n)
     end
   }
 end
 #-------------------------------------------------------------------------- 
 def level=(level)
   level = [[level, self.final_level].min, 1].max
   self.exp = @exp_list[level]
 end
 #-------------------------------------------------------------------------- 
 def final_level
   return Max_Level[@actor_id] != nil ? Max_Level[@actor_id] : Max_Level_Default
 end  
 #-------------------------------------------------------------------------- 
 def base_parameter(type)
   if @level >= 100
     calc_text = ("(param[99] - param[98]) * (level - 99)").dup
     calc_text.gsub!(/level/i) {"@level"}
     calc_text.gsub!(/param\[(\d+)\]/i) {
       "$data_actors[@actor_id].parameters[type, #{$1.to_i}]"}
     return $data_actors[@actor_id].parameters[type, 99] + eval(calc_text)
   end
   return $data_actors[@actor_id].parameters[type, @level]
 end
 #--------------------------------------------------------------------------
 def base_maxhp
   n = base_parameter(0)
   n *= Actor_Mult_Hp
   return [[n.to_i, 1].max, Actor_Max_Hp].min
 end
 #--------------------------------------------------------------------------
 def maxhp
   n = base_maxhp + @maxhp_plus + @set_maxhp
   for i in @states do n *= $data_states[i].maxhp_rate / 100.0 end
   return [[n.to_i, 1].max, Actor_Max_Hp].min
 end
 #--------------------------------------------------------------------------
 def base_maxsp
   n = base_parameter(1)
   n *= Actor_Mult_Sp
   return [[n.to_i, 1].max, Actor_Max_Sp].min
 end
 #--------------------------------------------------------------------------
 def maxsp
   n = base_maxsp + @maxsp_plus + @set_maxsp
   for i in @states do n *= $data_states[i].maxsp_rate / 100.0 end
   return [[n.to_i, 0].max, Actor_Max_Sp].min
 end
 #--------------------------------------------------------------------------
 def base_str
   n = base_parameter(2)
   n *= Actor_Mult_Str
   for item in equips.compact do n += item.str_plus end
   return [[n.to_i, 1].max, Actor_Max_Str].min
 end
 #--------------------------------------------------------------------------
 def str
   n = base_str + @str_plus + @set_str
   for i in @states do n *= $data_states[i].str_rate / 100.0 end
   return [[n.to_i, 1].max, Actor_Max_Str].min
 end
 #--------------------------------------------------------------------------
 def base_dex
   n = base_parameter(3)
   n *= Actor_Mult_Dex
   for item in equips.compact do n += item.dex_plus end
   return [[n.to_i, 1].max, Actor_Max_Dex].min
 end
 #--------------------------------------------------------------------------
 def dex
   n = base_dex + @dex_plus + @set_dex
   for i in @states do n *= $data_states[i].dex_rate / 100.0 end
   return [[n.to_i, 1].max, Actor_Max_Dex].min
 end
 #--------------------------------------------------------------------------
 def base_agi
   n = base_parameter(4)
   n *= Actor_Mult_Agi
   for item in equips.compact do n += item.agi_plus end
   return [[n.to_i, 1].max, Actor_Max_Agi].min
 end
 #--------------------------------------------------------------------------
 def agi
   n = base_agi + @agi_plus + @set_agi
   for i in @states do n *= $data_states[i].agi_rate / 100.0 end
   return [[n.to_i, 1].max, Actor_Max_Agi].min
 end
 #--------------------------------------------------------------------------
 def base_int
   n = base_parameter(5)
   n *= Actor_Mult_Int
   for item in equips.compact do n += item.int_plus end
   return [[n.to_i, 1].max, Actor_Max_Int].min
 end
 #--------------------------------------------------------------------------
 def int
   n = base_int + @int_plus + @set_int
   for i in @states do n *= $data_states[i].int_rate / 100.0 end
   return [[n.to_i, 1].max, Actor_Max_Int].min
 end
 #--------------------------------------------------------------------------
 def maxhp=(maxhp)
   @maxhp_plus += maxhp - self.maxhp
   @maxhp_plus = [[@maxhp_plus, -Actor_Max_Hp].max, Actor_Max_Hp].min
   @hp = [@hp, self.maxhp].min
 end
 #--------------------------------------------------------------------------
 def maxsp=(maxsp)
   @maxsp_plus += maxsp - self.maxsp
   @maxsp_plus = [[@maxsp_plus, -Actor_Max_Sp].max, Actor_Max_Sp].min
   @sp = [@sp, self.maxsp].min
 end
 #--------------------------------------------------------------------------
 def str=(str)
   @str_plus += str - self.str
   @str_plus = [[@str_plus, -Actor_Max_Str].max, Actor_Max_Str].min
 end
 #--------------------------------------------------------------------------
 def dex=(dex)
   @dex_plus += dex - self.dex
   @dex_plus = [[@dex_plus, -Actor_Max_Dex].max, Actor_Max_Dex].min
 end
 #--------------------------------------------------------------------------
 def agi=(agi)
   @agi_plus += agi - self.agi
   @agi_plus = [[@agi_plus, -Actor_Max_Agi].max, Actor_Max_Agi].min
 end
 #--------------------------------------------------------------------------
 def int=(int)
   @int_plus += int - self.int
   @int_plus = [[@int_plus, -Actor_Max_Int].max, Actor_Max_Int].min
 end
 #-------------------------------------------------------------------------- 
 def base_atk
   n = 0
   for item in weapons.compact do n += item.atk end
   n += @set_atk
   unarmed = UNARMED_ATTACK
   n = unarmed if weapons.empty?
   return [[n.to_i, 0].max, Actor_Max_Atk].min
 end
 #-------------------------------------------------------------------------- 
 def base_pdef
   n = 0
   for item in equips.compact do n += item.pdef end
   n += @set_pdef
   return [[n.to_i, 0].max, Actor_Max_PDef].min
 end
 #-------------------------------------------------------------------------- 
 def base_mdef
   n = 0
   for item in equips.compact do n += item.mdef end
   n += @set_mdef
   return [[n.to_i, 0].max, Actor_Max_MDef].min
 end
 #-------------------------------------------------------------------------- 
 def base_eva
   n = 0
   for item in armors.compact do n += item.eva end
   n += @set_eva
   return n
 end
 #------------------------------------------------------------------------------
 def update_multi_auto_state(old, new)
   if old != nil
     for state in old.multi_auto_state_id do remove_state(state, true) end
   end
   if new != nil and not self.dead?
     for state in new.multi_auto_state_id do add_state(state, true) end
   end
 end
 #------------------------------------------------------------------------------
 def hit
   n = super
   for item in equips.compact do n += item.hit end
   n += @set_hit
   return n.to_i
 end
 #--------------------------------------------------------------------------
 def crt
   n = super
   for item in equips.compact do n += item.crt end
   n += @set_crt
   return n.to_i
 end
 #--------------------------------------------------------------------------
 def dmg
   n = super
   for item in equips.compact do n += item.dmg end
   n += @set_dmg
   return n.to_i
 end
 #--------------------------------------------------------------------------
 def rcrt
   n = super
   for item in equips.compact do n += item.rcrt end
   n += @set_rcrt
   return n.to_i
 end
 #--------------------------------------------------------------------------
 def rdmg
   n = super
   for item in equips.compact do n += item.rdmg end
   n += @set_rdmg
   return n.to_i
 end
 #--------------------------------------------------------------------------
 def lock_equip(type)
   equip = (type == 0 or (type == 1 and two_swords_style)) ? 'Weapon' : 'Armor'
   id = @equip_kind[type]
   if Equip_Lock[equip] != nil
     eqp = Equip_Lock[equip].dup
   else
     return false
   end
   return (eqp.include?(@actor_id) and eqp[@actor_id].include?(id))
 end
 #--------------------------------------------------------------------------
 def equip(equip_type, id)
   type = @equip_kind[equip_type]
   if type == 0  
     if id == 0 or $game_party.weapon_number(id) > 0
       update_multi_auto_state($data_weapons[@equip_id[equip_type]], $data_weapons[id])
       $game_party.gain_weapon(@equip_id[equip_type], 1)
       @equip_id[equip_type] = id
       $game_party.lose_weapon(id, 1)
     end
   elsif type == 1
     if two_swords_style
       if id == 0 or $game_party.weapon_number(id) > 0
         update_multi_auto_state($data_weapons[@equip_id[equip_type]], $data_weapons[id])
         $game_party.gain_weapon(@equip_id[equip_type], 1)
         @equip_id[equip_type] = id
         $game_party.lose_weapon(id, 1)
       end
     else
       if id == 0 or $game_party.armor_number(id) > 0
         update_auto_state($data_armors[@equip_id[equip_type]], $data_armors[id])
         update_multi_auto_state($data_armors[@equip_id[equip_type]], $data_armors[id])
         $game_party.gain_armor(@equip_id[equip_type], 1)
         @equip_id[equip_type] = id
         $game_party.lose_armor(id, 1)
       end
     end
   elsif type > 1
     if id == 0 or $game_party.armor_number(id) > 0
       update_auto_state($data_armors[@equip_id[equip_type]], $data_armors[id])
       update_multi_auto_state($data_armors[@equip_id[equip_type]], $data_armors[id])
       $game_party.gain_armor(@equip_id[equip_type], 1)
       @equip_id[equip_type] = id
       $game_party.lose_armor(id, 1)
     end
   end
   gain_equip_skills
   update_equip_set
 end
 #-------------------------------------------------------------------------- 
 def gain_equip_skills
   lose_equip_skills
   for kind in 0...@equip_kind.size
     id = @equip_kind[kind]
     if id == 0 or (id == 1 and two_swords_style)
       eqp = $data_weapons[@equip_id[kind]]
     else
       eqp = $data_armors[@equip_id[kind]]
     end
     if Equip_Skills[eqp.type] != nil and Equip_Skills[eqp.type][eqp.id] != nil
       skills = Equip_Skills[eqp.type][eqp.id].dup
       for skill in skills
         get_new_equip_skill(skill[1]) if skill[0] <= @level
       end
     end
   end
 end
 #-------------------------------------------------------------------------- 
 def lose_equip_skills
   for lose_skills in @equipment_skills
     self.forget_skill(lose_skills)
   end
   @equipment_skills.clear
 end
 #-------------------------------------------------------------------------- 
 def get_new_equip_skill(skill)
   unless self.skill_learn?(skill) or @equipment_skills.include?(skill)
     @equipment_skills << skill
     self.learn_skill(skill)
   end
 end
 #--------------------------------------------------------------------------
 def update_equip_set
   for state in @set_auto_states
     remove_state(state, true)
   end
   reset_set_status
   weapons_id = []
   armors_id = []
   for weapon in weapons
     weapons_id << weapon.id if weapon != nil
   end
   for armor in armors
     armors_id << armor.id if armor != nil
   end
   for set in Equip_Set
     armors_set = weapons_set = false
     if set[1]['Weapon'] != nil
       weapons_set_id = set[1]['Weapon'].dup
       weapons_set_id.uniq!
       set_size = 0
       for id in weapons_set_id
         set_size += 1 if weapons_id.include?(id)
       end
       weapons_set = true if set_size == weapons_set_id.size
     else
       weapons_set = true
     end
     if set[1]['Armor'] != nil
       armors_set_id = set[1]['Armor'].dup
       armors_set_id.uniq!
       set_size = 0
       for id in armors_set_id
         set_size += 1 if armors_id.include?(id)
       end
       armors_set = true if set_size == armors_set_id.size
     else
       armors_set = true
     end
     apply_set_efect(set[0]) if armors_set and weapons_set
   end
   for state in @set_auto_states
     add_state(state, true)
   end
   learn_set_skill
 end
 #--------------------------------------------------------------------------
 def reset_set_status
   status = ['maxhp','maxsp','atk','pdef','mdef','str','dex','int','agi','eva','hit',
     'crt','dmg','rcrt','rdmg']
   for st in status
     eval("@set_#{st} = 0")
   end
   @set_auto_states = []
   @set_elemental_resist = []
   @set_state_resist = []
   forget_set_skills
 end
 #--------------------------------------------------------------------------
 def apply_set_efect(set_id)
   return if Set_Effect[set_id].nil?
   set = Set_Effect[set_id].dup
   if set['status'] != nil
     for st in Set_Effect[set_id]['status']
       eval("@set_#{st[0]} += #{st[1]} if @set_#{st[0]} != nil")
     end
   end
   @set_skills << set['skills'] if  set['skills']
   @set_elemental_resist << set['elements'] if set['elements'] != nil
   @set_state_resist << set['states'] if set['states'] != nil
   @set_auto_states << set['auto states'] if set['auto states'] != nil
   @set_auto_states.flatten!
   @set_auto_states.uniq!
 end
 #--------------------------------------------------------------------------
 def forget_set_skills
   @set_skills = [] if @set_skills.nil?
   for skills in @set_skills
     for skill in skills
       self.forget_skill(skill[1])
     end
   end
   @set_skills.clear
 end
 #--------------------------------------------------------------------------
 def learn_set_skill
   for skills in @set_skills
     for skill in skills
       get_new_equip_skill(skill[1]) if skill[0] <= @level
     end
   end
 end
 #--------------------------------------------------------------------------
 def equippable?(item)
   if item.is_a?(RPG::Weapon)
     return true if $data_classes[@class_id].weapon_set.include?(item.id)
   end
   if item.is_a?(RPG::Armor)
     if $data_classes[@class_id].armor_set.include?(item.id) and not
        (item.type_id == 1 and two_swords_style)
       return true
     end
   end
   return false
 end
 #--------------------------------------------------------------------------
 def remove_left_equip_actor
   for i in 0...@equip_kind.size
     equip(i, 0) if @equip_kind[i] == 1
   end
 end
 #--------------------------------------------------------------------------
 def remove_left_equip_class(class_id)
   if class_id == @class_id
     for i in 0...@equip_kind.size
       equip(i, 0) if @equip_kind[i] == 1
     end
   end
 end
 #--------------------------------------------------------------------------
 def remove_equip_class_change(class_id, old_class_id)
   if ($game_party.two_swords_classes.include?(class_id) and not
      $game_party.two_swords_classes.include?(old_class_id)) or
      ($game_party.two_swords_classes.include?(old_class_id) and not
      $game_party.two_swords_classes.include?(class_id))
     for i in 0...@equip_kind.size
       equip(i, 0) if @equip_kind[i] == 1
     end
   end
 end
 #--------------------------------------------------------------------------
 def class_id=(class_id)
   remove_equip_class_change(class_id, @class_id)
   if $data_classes[class_id] != nil
     @class_id = class_id
     for i in 0...@equip_kind.size
       if @equip_kind[i] == 0 or (@equip_kind[i] == 1 and two_swords_style)
         equip(i, 0) unless equippable?($data_weapons[@equip_id[i]])
       else
         equip(i, 0) unless equippable?($data_weapons[@equip_id[i]])
       end
     end
   end
 end
end

#==============================================================================
# ■  Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
 #--------------------------------------------------------------------------
 def element_rate_rank(element_id)
   table = [0,200,150,100,50,0,-100]
   result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
   value = $data_enemies[@enemy_id].element_ranks[element_id]
   case Addition_Type
   when 0,2
     for i in @states
       value += $data_states[i].element_resist[element_id]
       element_size += 1 if $data_states[i].element_resist[element_id] != 0
     end
     value /= element_size if Addition_Type == 2
   when 1,3
     h, l = 0, 0
     h = @element_resist[element_id] if @element_resist[element_id] > 0
     l = @element_resist[element_id] if @element_resist[element_id] < 0
     for i in @states
       st = $data_states[i]
       if st.element_resist[element_id] > h and st.element_resist[element_id] > 0
         h = st.element_resist[element_id]        
       elsif st.element_resist[element_id] < l and st.element_resist[element_id] < 0
         l = st.element_resist[element_id]        
       end
     end
     value = h + l
     value /= 2 if h != 0 and l != 0
   end
   result = table[[[value.to_i, 6].min,1].max]
   return result
 end
 #--------------------------------------------------------------------------
 def state_rate_ranks(state_id)
   table = [0,100,80,60,40,20,0]
   result = table[$data_enemies[@enemy_id].state_ranks[state_id]]
   value = $data_enemies[@enemy_id].state_ranks[state_id]
   case Addition_Type
   when 0,2
     for i in @states
       value += $data_states[i].state_resist[state_id]
       state_size += 1 if $data_states[i].state_resist[state_id] != 0
     end
     value /= state_size if Addition_Type == 2
   when 1,3
     h, l = 0, 0
     h = @state_resist[state_id] if @state_resist[state_id] > 0
     l = @state_resist[state_id] if @state_resist[state_id] < 0
     for i in @states
       st = $data_states[i]
       if st.state_resist[state_id] > h and st.state_resist[state_id] > 0
         h = st.state_resist[state_id]        
       elsif st.state_resist[state_id] < l and st.state_resist[state_id] < 0
         l = st.state_resist[state_id]        
       end
     end
     value = h + l
     value /= 2 if h != 0 and l != 0 and Addition_Type == 2
   end
   result = table[[[value.to_i, 6].min,1].max]
   return result
 end
end

#==============================================================================
# ■  Window_Base
#==============================================================================
class Window_Base < Window
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 def draw_actor_parameter(actor, x, y, type, w = 132)
   case type
   when 0
     parameter_name = $data_system.words.atk
     parameter_value = actor.atk
   when 1
     parameter_name = $data_system.words.pdef
     parameter_value = actor.pdef
   when 2
     parameter_name = $data_system.words.mdef
     parameter_value = actor.mdef
   when 3
     parameter_name = $data_system.words.str
     parameter_value = actor.str
   when 4
     parameter_name = $data_system.words.dex
     parameter_value = actor.dex
   when 5
     parameter_name = $data_system.words.agi
     parameter_value = actor.agi
   when 6
     parameter_name = $data_system.words.int
     parameter_value = actor.int
   when 7
     parameter_name = Stat_Eva
     parameter_value = actor.eva
   when 8
     parameter_name = Stat_Hit
     parameter_value = actor.hit
   when 9
     parameter_name = Stat_Crt
     parameter_value = actor.crt
   when 10
     parameter_name = Stat_Dmg
     parameter_value = actor.dmg
   when 11
     parameter_name = Stat_Res_Crt
     parameter_value = actor.rcrt
   when 12
     parameter_name = Stat_Res_Dmg
     parameter_value = actor.rdmg
   end
   self.contents.font.color = system_color
   self.contents.draw_text(x, y, w + 32, 32, parameter_name)
   self.contents.font.color = normal_color
   self.contents.draw_text(x + w, y, 64, 32, parameter_value.to_s, 2)
 end
end

#==============================================================================
# ■ Window_Status
#==============================================================================
class Window_Status < Window_Base
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   draw_actor_graphic(@actor, 40, 112)
   draw_actor_name(@actor, 4, 0)
   draw_actor_class(@actor, 4 + 144, 0)
   draw_actor_level(@actor, 96, 32)
   draw_actor_state(@actor, 96, 64)
   draw_actor_hp(@actor, 96, 112, 172)
   draw_actor_sp(@actor, 96, 144, 172)
   for i in 0..2
     draw_actor_parameter(@actor, 96, 164 + [(236/(Extra_Status.size + 6)), 20].max * i, i)
   end
   for i in 3..6
     draw_actor_parameter(@actor, 96, 168 + [(236/(Extra_Status.size + 6)), 20].max * i, i)
   end
   for i in 7..(Extra_Status.size + 6)
     draw_actor_parameter(@actor, 96, 172 + [(236/(Extra_Status.size + 6)), 20].max * i,
       Extra_Status[i - 7])
   end
   self.contents.font.color = system_color
   self.contents.draw_text(320, 48, 80, 32, 'EXP')
   self.contents.draw_text(320, 80, 80, 32, 'Próximo')
   self.contents.draw_text(400, 128, 128, 32, 'Equipamentos')
   self.contents.font.color = normal_color
   self.contents.draw_text(400, 48, 84, 32, @actor.exp_s, 2)
   self.contents.draw_text(400, 80, 84, 32, @actor.next_rest_exp_s, 2)
   self.contents.font.color = system_color    
   data = []
   for i in 0...@actor.equip_kind.size
     id = @actor.equip_kind[i]
     if id == 0
       data.push($data_weapons[@actor.equip_id[i]])
     elsif id == 1 and @actor.two_swords_style
       data.push($data_weapons[@actor.equip_id[i]])
     elsif id != 0 or (id == 1 and not @actor.two_swords_style)
       data.push($data_armors[@actor.equip_id[i]])
     end
   end
   self.contents.font.color = system_color
   return if data.size == 0
   for i in 0...@actor.equip_names.size
     name = @actor.equip_names[i]
     self.contents.draw_text(320, 160 + [(280/data.size), 24].max * i, 92, 32, name)
   end
   for i in 0...data.size
     draw_item_name(data[i], 412, 160 + [(280/data.size), 24].max * i)
   end
 end
 #--------------------------------------------------------------------------
 def dummy
   self.contents.font.color = system_color
   self.contents.draw_text(400, 128, 128, 32, 'Equipamentos')
   data = []
   for i in 0...@actor.equip_kind.size
     id = @actor.equip_kind[i]
     if id == 0
       data.push($data_weapons[@actor.equip_id[i]])
     elsif id == 1 and @actor.two_swords_style
       data.push($data_weapons[@actor.equip_id[i]])
     elsif id != 0 or (id == 1 and not @actor.two_swords_style)
       data.push($data_armors[@actor.equip_id[i]])
     end
   end
   self.contents.font.color = system_color
   return if data.size == 0
   for i in 0...@actor.equip_names.size
     name = @actor.equip_names[i]
     self.contents.draw_text(320, 160 + [(280/data.size), 24].max * i, 92, 32, name)
   end
   for i in 0...data.size
     draw_item_name(data[i], 412, 160 + [(280/data.size), 24].max * i)
   end
 end
end

#==============================================================================
# Window_Selectable_Equip
#==============================================================================
class Window_Selectable_Equip < Window_Base
 #--------------------------------------------------------------------------
 attr_reader   :index
 attr_reader   :help_window
 #--------------------------------------------------------------------------
 def initialize(x, y, width, height)
   super(x, y, width, height)
   @item_max = 1
   @column_max = 1
   @index = -1
 end
 #--------------------------------------------------------------------------
 def index=(index)
   @index = index
   update_help if self.active and @help_window != nil
   update_cursor_rect
 end
 #--------------------------------------------------------------------------
 def row_max
   return (@item_max + @column_max - 1) / @column_max
 end
 #--------------------------------------------------------------------------
 def top_row
   return self.oy / 32
 end
 #--------------------------------------------------------------------------
 def top_row=(row)
   row = 0 if row < 0
   row = row_max - 1 if row > row_max - 1
   self.oy = row * 32
 end
 #--------------------------------------------------------------------------
 def page_row_max
   return (self.height - 32) / 32
 end
 #--------------------------------------------------------------------------
 def page_item_max
   return page_row_max * @column_max
 end
 #---------------------------------------------------------------------------
 def help_window=(help_window)
   @help_window = help_window
   update_help if self.active and @help_window != nil
 end
 #---------------------------------------------------------------------------
 def update_cursor_rect
   return self.cursor_rect.empty if @index < 0
   row = @index / @column_max
   self.top_row = row if row < self.top_row
   if row > self.top_row + (self.page_row_max - 1)
     self.top_row = row - (self.page_row_max - 1)
   end
   cursor_width = self.width / @column_max - 32
   x = @index % @column_max * (cursor_width + 32)
   y = @index / @column_max * 32 - self.oy
   self.cursor_rect.set(x, y, cursor_width, 32)
 end
 #---------------------------------------------------------------------------
 def update
   super
   if self.active and @item_max > 0 and @index >= 0
     if Input.repeat?(Input::DOWN)
       if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
          @index < @item_max - @column_max
         $game_system.se_play($data_system.cursor_se)
         @index = (@index + @column_max) % @item_max
       end
     end
     if Input.repeat?(Input::UP)
       if (@column_max == 1 and Input.trigger?(Input::UP)) or
          @index >= @column_max
         $game_system.se_play($data_system.cursor_se)
         @index = (@index - @column_max + @item_max) % @item_max
       end
     end
     if Input.repeat?(Input::RIGHT)
       if @column_max >= 2 and @index < @item_max - 1
         $game_system.se_play($data_system.cursor_se)
         @index += 1
       end
     end
     if Input.repeat?(Input::LEFT)
       if @column_max >= 2 and @index > 0
         $game_system.se_play($data_system.cursor_se)
         @index -= 1
       end
     end
     if Input.repeat?(Input::R)
       @index == @item_max if @index < @item_max
     end
     if Input.repeat?(Input::L)
       @index == @item_max if @index < @item_max
     end
   end
   if self.active and @help_window != nil
     update_help
   end
   update_cursor_rect
 end
end

#==============================================================================
# ■ Window_EquipRight
#==============================================================================
class Window_EquipRight < Window_Selectable_Equip
 #--------------------------------------------------------------------------  
 attr_accessor :data
 #--------------------------------------------------------------------------  
 include N01
 #--------------------------------------------------------------------------  
 def initialize(actor)
   case Equip_Menu_Syle
   when 0,2
     super(272, 64, 368, 192)
   when 1
     super(272, 64, 368, 224)
   when 3
     super(272, 64, 368, 192)
   when 4
     super(0, 64, 368, 192)
   end
   self.contents = Bitmap.new(width - 32, actor.equip_kind.size * 32)
   @actor = actor
   self.opacity = Equip_Window_Opacity
   refresh
   self.index = 0
 end
 #--------------------------------------------------------------------------  
 def item
   return @data[self.index]
 end
 #--------------------------------------------------------------------------  
 def refresh
   self.contents.clear
   @data = []
   for i in 0...@actor.equip_kind.size
     id = @actor.equip_kind[i]
     if id == 0
       @data.push($data_weapons[@actor.equip_id[i]])
     elsif id == 1 and @actor.two_swords_style
       @data.push($data_weapons[@actor.equip_id[i]])
     elsif id != 0 or (id == 1 and not @actor.two_swords_style)
       @data.push($data_armors[@actor.equip_id[i]])
     end
   end
   @item_max = @data.size
   self.contents.font.color = system_color
   for i in 0...@actor.equip_names.size
     name = @actor.equip_names[i]
     self.contents.draw_text(4, 32 * i, 92, 32, name)
   end
   for i in 0...@data.size
     draw_item_name(@data[i], 92, 32 * i)
   end
 end
 #--------------------------------------------------------------------------
 def update_help
   @help_window.set_text(self.item == nil ? '' : self.item.description)
 end
end

#==============================================================================
# ■ Window_EquipLeft
#==============================================================================
class Window_EquipLeft < Window_Selectable
 #--------------------------------------------------------------------------
 include N01
 #--------------------------------------------------------------------------
 attr_accessor :new_equip
 attr_accessor :last_atk
 attr_accessor :last_pdef
 attr_accessor :last_mdef
 attr_accessor :last_str
 attr_accessor :last_dex
 attr_accessor :last_agi
 attr_accessor :last_int
 attr_accessor :last_eva
 attr_accessor :last_hit
 attr_accessor :last_crt
 attr_accessor :last_dmg
 attr_accessor :last_rcrt
 attr_accessor :last_rdmg
 #--------------------------------------------------------------------------
 def initialize(actor)
   case Equip_Menu_Syle
   when 0,2
     super(0, 64, 272, 192)
   when 1
     super(0, 64, 272, 224)
   when 3
     super(0, 64, 272, 416)
   when 4
     super(368, 64, 272, 416)
   end
   self.contents = Bitmap.new(width - 32, height - 32)
   self.opacity = Equip_Window_Opacity
   @actor = actor
   @new_equip, @last_equip = nil, nil
   @last_atk = @actor.atk
   @last_pdef = @actor.pdef
   @last_mdef = @actor.mdef
   @last_str = @actor.str
   @last_dex = @actor.dex
   @last_agi = @actor.agi
   @last_int = @actor.int
   @last_eva = @actor.eva
   @last_hit = @actor.hit
   @last_ctr = @actor.crt
   @last_dmg = @actor.dmg
   @last_rcrt = @actor.rcrt
   @last_rdmg = @actor.rdmg
   refresh
 end 
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   @equip_stat, @base_stat, @new_stat = false, false, false
   case Equip_Menu_Syle
   when 0
     @equip_stat = true
     y_adjust = 64
     draw_actor_name(@actor, 12, 0)
     draw_actor_level(@actor, 12, 32)
   when 1
     @equip_stat, @base_stat = true, true
     y_adjust = 0
   when 2
     @base_stat = true
     y_adjust = 32
     draw_actor_name(@actor, 12, 0)
   when 3,4
     @equip_stat, @base_stat, @new_stat = true, true, true
     y_adjust = 0
   end
   self.contents.font.color = system_color
   y = 0
   for i in 0..12
     if ((0..2).include?(i) and @equip_stat) or ((3..6).include?(i) and @base_stat) or
        ((7..12).include?(i) and @new_stat)
       draw_actor_parameter(@actor, 12, y * 28 + y_adjust, i, 104)
       draw_change_arrow(y, y_adjust, i)
       y += 1
     end
   end
 end
 #--------------------------------------------------------------------------
 def draw_change_arrow(y, adjust, type)
   case type
   when 0
     old_value = @actor.atk
     new_value = @new_atk
   when 1
     old_value = @actor.pdef
     new_value = @new_pdef
   when 2
     old_value = @actor.mdef
     new_value = @new_mdef
   when 3
     old_value = @actor.str
     new_value = @new_str
   when 4
     old_value = @actor.dex
     new_value = @new_dex
   when 5
     old_value = @actor.agi
     new_value = @new_agi
   when 6
     old_value = @actor.int
     new_value = @new_int
   when 7
     old_value = @actor.eva
     new_value = @new_eva
   when 8
     old_value = @actor.hit
     new_value = @new_hit
   when 9
     old_value = @actor.crt
     new_value = @new_crt
   when 10
     old_value = @actor.dmg
     new_value = @new_dmg
   when 11
     old_value = @actor.rcrt
     new_value = @new_rcrt
   when 12
     old_value = @actor.rdmg
     new_value = @new_rdmg
   end
   if new_value != nil
     if old_value == new_value
       self.contents.font.color = text_color(7)      
       self.contents.draw_text(172, y * 28 + adjust, 40, 32, Stat_Nil, 1)
       self.contents.font.color = normal_color
     elsif old_value < new_value
       self.contents.font.color = text_color(4)      
       self.contents.draw_text(172, y * 28 + adjust, 40, 32, Stat_Up, 1)
       self.contents.font.color = text_color(3)
     elsif old_value > new_value
       self.contents.font.color = text_color(6)      
       self.contents.draw_text(172, y * 28+ adjust, 40, 32, Stat_Down, 1)
       self.contents.font.color = text_color(2)
     end
     self.contents.draw_text(192, y * 28 + adjust, 48, 32, new_value.to_s, 2)
   end
 end
 #--------------------------------------------------------------------------
 def set_new_parameters(new_atk = nil, new_pdef  = nil, new_mdef = nil, new_str  = nil,
       new_dex = nil, new_agi = nil, new_int = nil, new_eva = nil, new_hit = nil, 
       new_crt = nil, new_dmg = nil, new_rcrt = nil, new_rdmg = nil)
   if @new_str != new_str or @new_dex != new_dex or @new_agi != new_agi or 
      @new_int != new_int or @new_atk != new_atk or @new_pdef != new_pdef or
      @new_mdef != new_mdef or @new_eva != new_eva or @new_hit != new_hit or
      @new_crt != new_crt or @new_dmg != new_dmg or @new_rcrt != new_rcrt or
      @new_rdmg != new_rdmg
     @last_equip = @new_equip
     @new_atk = new_atk
     @new_pdef = new_pdef
     @new_mdef = new_mdef
     @new_str = new_str
     @new_dex = new_dex
     @new_agi = new_agi
     @new_int = new_int
     @new_eva = new_eva
     @new_hit = new_hit
     @new_crt = new_crt
     @new_dmg = new_dmg
     @new_rcrt = new_rcrt
     @new_rdmg = new_rdmg
     refresh
   end
 end
end

#==============================================================================
# Window_EquipItem
#==============================================================================
class Window_EquipItem < Window_Selectable
 #--------------------------------------------------------------------------
 attr_accessor :data
 #--------------------------------------------------------------------------
 def initialize(actor, equip_type)
   case Equip_Menu_Syle
   when 0,2
     super(0, 256, 640, 224)
     @column_max = 2
   when 1
     super(0, 288, 640, 192)
     @column_max = 2
   when 3
     super(272, 256, 368, 224)
     @column_max = 1
   when 4
     super(0, 256, 368, 224)
     @column_max = 1
   end
   @actor = actor
   @equip_type = equip_type
   refresh
   self.active = false
   self.index = -1
 end
 #--------------------------------------------------------------------------
 def refresh
   if self.contents != nil
     self.contents.dispose
     self.contents = nil
   end
   @data = []
   if @equip_type == 0 or (@equip_type == 1 and @actor.two_swords_style)
     weapon_set = $data_classes[@actor.class_id].weapon_set
     for i in 1...$data_weapons.size
       next if Two_Hands_Weapons.include?(i) and @equip_type == 1
       next if Right_Hand_Weapons.include?(i) and @equip_type == 1
       next if Left_Hand_Weapons.include?(i) and @equip_type == 0
       if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
         @data.push($data_weapons[i])
       end
     end
   end
   if @equip_type > 1 or (@equip_type == 1 and not @actor.two_swords_style)
     armor_set = $data_classes[@actor.class_id].armor_set
     for i in 1...$data_armors.size
       if $game_party.armor_number(i) > 0 and armor_set.include?(i)
         if $data_armors[i].type_id == @equip_type
           @data.push($data_armors[i])
         end
       end
     end
   end
   @data.push(nil) unless @actor.lock_equip(@equip_type)
   @item_max = @data.size
   self.contents = Bitmap.new(width - 32, [row_max, 1].max * 32)
   self.opacity = Equip_Window_Opacity
   for i in 0...(@actor.lock_equip(@equip_type) ? @item_max : @item_max - 1)
     draw_item(i)
   end
 end
 #-------------------------------------------------------------------------- 
 def draw_item(index)
   item = @data[index]
   case Equip_Menu_Syle
   when 0,1,2
     x = 4 + index % 2 * (288 + 32)
     y = index / 2 * 32
   when 3,4
     x = 4
     y = index * 32
   end
   case item
   when RPG::Weapon
     number = $game_party.weapon_number(item.id)
   when RPG::Armor
     number = $game_party.armor_number(item.id)
   end
   bitmap = RPG::Cache.icon(item.icon_name)
   self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
   self.contents.font.color = normal_color
   self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
   self.contents.draw_text(x + 240, y, 16, 32, ':', 1)
   self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
 end
end

#==============================================================================
# ■ Scene_Equip
#==============================================================================
class Scene_Equip
 #-------------------------------------------------------------------------- 
 include N01
 #-------------------------------------------------------------------------- 
 def main
   @actor = $game_party.actors[@actor_index]
   @spriteset = Spriteset_Map.new if Show_Map_Equip_Menu
   if Equip_Menu_Back != nil
     @back_image = Sprite.new
     @back_image.bitmap = RPG::Cache.windowskin(Equip_Menu_Back)
   end
   @help_window = Window_Help.new
   @left_window = Window_EquipLeft.new(@actor)
   @right_window = Window_EquipRight.new(@actor)
   @right_window.index = @equip_index
   item_window_update
   @right_window.help_window = @help_window
   for i in 0...@actor.equip_kind.size
     eval("@item_window#{i + 1}.help_window = @help_window")
   end
   refresh
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     break if $scene != self
   end
   Graphics.freeze
   @help_window.dispose
   @back_image.dispose if Equip_Menu_Back != nil
   @spriteset.dispose if Show_Map_Equip_Menu
   @left_window.dispose
   @right_window.dispose
   item_window_dispose  
 end
 #-------------------------------------------------------------------------- 
 def refresh
   @help_window.opacity = Equip_Window_Opacity
   if @right_window.index > @right_window.data.size - 1
     @right_window.index = @right_window.data.size - 1
   end
   for i in 0...@actor.equip_kind.size
     eval("@item_window#{i + 1}.visible = (@right_window.index == #{i})")
   end
   item1 = @right_window.item
   eval("@item_window = @item_window#{@right_window.index + 1}")
   @left_window.set_new_parameters if @right_window.active
   if @item_window.active
     @item2 = @item_window.item
     last_hp = @actor.hp
     last_sp = @actor.sp
     @actor.equip(@right_window.index, @item2 == nil ? 0 : @item2.id)
     re_equip = []
     if @item2 != nil and @item2.type_id == 0 and Two_Hands_Weapons.include?(@item2.id)
       for i in 0...@actor.equip_kind.size
         id = @actor.equip_kind[i]
         if id == 1
           re_equip << [i, @actor.equip_id[i]]
           @actor.equip(i, 0)
         end
       end
     elsif @item2 != nil and (@item2.type_id == 1 or (@item2.type_id == 0 and 
        @actor.two_swords_style))
       for i in 0...@actor.equip_kind.size
         id = @actor.equip_kind[i]
         if @right_window.index != i and id == 0 and 
            Two_Hands_Weapons.include?(@actor.equip_id[id])
           re_equip << [i, @actor.equip_id[i]]
           @actor.equip(i, 0)
         end
       end
     end
     new_atk = @actor.atk
     new_pdef = @actor.pdef
     new_mdef = @actor.mdef
     new_str = @actor.str
     new_dex = @actor.dex
     new_agi = @actor.agi
     new_int = @actor.int
     new_eva = @actor.eva
     new_hit = @actor.hit
     new_crt = @actor.crt
     new_dmg = @actor.dmg
     new_rcrt = @actor.rcrt
     new_rdmg = @actor.rdmg
     @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
     for equip in re_equip
       @actor.equip(equip[0], equip[1])
     end
     @actor.hp = last_hp
     @actor.sp = last_sp
     @left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex, 
       new_agi, new_int, new_eva, new_hit, new_crt, new_dmg, new_rcrt, new_rdmg)
   end
 end
 #-------------------------------------------------------------------------- 
 def item_window_update
   for i in 0...@actor.equip_kind.size
     type = @actor.equip_kind[i]
     eval("@item_window#{i+1} = Window_EquipItem.new(@actor, type)")
   end
   for i in 0...@actor.equip_kind.size
     eval("@item_window#{i + 1}.help_window = @help_window")
   end
   refresh
 end
 #-------------------------------------------------------------------------- 
 def item_window_dispose
   for i in 0...@actor.equip_kind.size
     eval("@item_window#{i+1}.dispose if @item_window#{i+1} != nil")
   end
 end
 #-------------------------------------------------------------------------- 
 def update_item
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     @right_window.active = true
     @item_window.active = false
     @item_window.index = -1
     return
   end
   if Input.trigger?(Input::C)
     item = @item_window.item
     @actor.equip(@right_window.index, item == nil ? 0 : item.id)
     update_hands(item)
     @right_window.active = true
     @item_window.active = false
     @item_window.index = -1
     @right_window.refresh
     @item_window.refresh
     $game_system.se_play($data_system.equip_se)
     return
   end
 end
 #-------------------------------------------------------------------------- 
 def update_right
   if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
     @item_window.index = -1
     @item_window.refresh
   end
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     $scene = Scene_Menu.new(2)
     return
   end
   if Input.trigger?(Input::C)
     if @actor.equip_fix?(@right_window.index) or (@item_window.data.size == 0 and 
         @actor.lock_equip(@right_window.index))
       return $game_system.se_play($data_system.buzzer_se)
     end
     $game_system.se_play($data_system.decision_se)
     @right_window.active = false
     @item_window.active = true
     @item_window.index = 0
     return
   end
   if Input.trigger?(Input::R)
     $game_system.se_play($data_system.cursor_se)
     @actor_index += $game_party.actors.size + 1
     @actor_index %= $game_party.actors.size
     $scene = Scene_Equip.new(@actor_index, @right_window.index)
     return
   end
   if Input.trigger?(Input::L)
     $game_system.se_play($data_system.cursor_se)
     @actor_index += $game_party.actors.size - 1
     @actor_index %= $game_party.actors.size
     $scene = Scene_Equip.new(@actor_index, @right_window.index)
     return
   end
 end
 #-------------------------------------------------------------------------- 
 def update_hands(item)
   if item != nil and item.type_id == 0 and Two_Hands_Weapons.include?(item.id)
     for i in 0...@actor.equip_kind.size
       id = @actor.equip_kind[i]
       @actor.equip(i, 0) if id == 1
     end
   elsif item != nil and (item.type_id == 1 or (item.type_id == 0 and @actor.two_swords_style))
     for i in 0...@actor.equip_kind.size
       id = @actor.equip_kind[i]
       if @right_window.index != i and id == 0 and 
          Two_Hands_Weapons.include?(@actor.equip_id[id])
         @actor.equip(i, 0)
       end
     end
   end
 end
end

#==============================================================================
# ■ Window_ShopStatus
#==============================================================================
class Window_ShopStatus < Window_Base
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   if @item == nil
     return
   end
   case @item
   when RPG::Item
     number = $game_party.item_number(@item.id)
   when RPG::Weapon
     number = $game_party.weapon_number(@item.id)
   when RPG::Armor
     number = $game_party.armor_number(@item.id)
   end
   self.contents.font.color = system_color
   self.contents.draw_text(4, 0, 200, 32, 'Você tem')
   self.contents.font.color = normal_color
   self.contents.draw_text(204, 0, 32, 32, number.to_s, 2)
   if @item.is_a?(RPG::Item)
     return
   end
   for i in 0...$game_party.actors.size
     actor = $game_party.actors[i]
     if actor.equippable?(@item)
       self.contents.font.color = normal_color
     else
       self.contents.font.color = disabled_color
     end
     self.contents.draw_text(4, 64 + 64 * i, 120, 32, actor.name)
     for n in 0...actor.equip_kind.size
       id = actor.equip_kind[n]
       if @item.is_a?(RPG::Weapon) 
         item1 = $data_weapons[actor.equip_id[n]] if id == 0
       else
         if $data_armors[actor.equip_id[n]].type == @item.type_id and not
            (@item.type_id == 1 and actor.two_swords_style)
           item1 = $data_armors[actor.equip_id[n]]
         end
       end
     end
     if actor.equippable?(@item)
       change = 0
       if @item.is_a?(RPG::Weapon)
         atk1 = item1 != nil ? item1.atk : 0
         atk2 = @item != nil ? @item.atk : 0
         change = atk2 - atk1
       elsif @item.is_a?(RPG::Armor) && @item.kind <= 2
         pdef1 = item1 != nil ? item1.pdef : 0
         mdef1 = item1 != nil ? item1.mdef : 0
         pdef2 = @item != nil ? @item.pdef : 0
         mdef2 = @item != nil ? @item.mdef : 0
         change = pdef2 - pdef1 + mdef2 - mdef1
       elsif @item.is_a?(RPG::Armor) &&  @item.kind > 2
         change = 0
         item1 = nil
       end
       if change > 0 and actor.equippable?(@item)
         self.contents.font.color = text_color(3)
       elsif change < 0 and actor.equippable?(@item)
         self.contents.font.color = text_color(2)
       end
       self.contents.draw_text(64, 64 + 64 * i, 128, 32,sprintf('%+d', change), 2)
       self.contents.font.color = normal_color
     end
     if item1 != nil
       x = 4
       y = 64 + 64 * i + 32
       bitmap = RPG::Cache.icon(item1.icon_name)
       opacity = self.contents.font.color == normal_color ? 255 : 128
       self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
       self.contents.draw_text(x + 28, y, 212, 32, item1.name)
     end
   end
 end
 #--------------------------------------------------------------------------
 def item=(item)
   if @item != item
     @item = item
     refresh
   end
 end
end

#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
 #--------------------------------------------------------------------------
 alias aas_turn_ending_n01 turn_ending
 def turn_ending
   for member in $game_party.actors + $game_troop.enemies
     member.second_attack = false
   end
   aas_turn_ending_n01
 end
 #--------------------------------------------------------------------------
 alias aas_action_end_n01 action_end
 def action_end
   aas_action_end_n01
   for member in $game_party.actors + $game_troop.enemies
     member.second_attack = false
   end
 end
end

 

Edited by Kiriashi

Share this post


Link to post
Share on other sites

I searched But I just find how to move the command window and change colors , position of the battlers faces ect ..But I didn't find how to move the Item menu and the skills menu

I want to move them cuz they are at the bottom

( sorry the spoiler didn't work :mellow: )

Edited by themarie

Share this post


Link to post
Share on other sites

Actually the class Window_Item is under Sideview 2. and there you can change where you want the item window to go. It starts at line 3047.

and the skill window starts at 3008.

 

To move windows around just go to the line on both windows that say:

super(x, y, width, height)

and just change the x and y coordinates around, and to change the size of the window change change the width and the height.

 

Hopefully this is what your asking, as I'm still confused on the question.

Share this post


Link to post
Share on other sites

Actually the class Window_Item is under Sideview 2. and there you can change where you want the item window to go. It starts at line 3047.

and the skill window starts at 3008.

 

To move windows around just go to the line on both windows that say:

super(x, y, width, height)

and just change the x and y coordinates around, and to change the size of the window change change the width and the height.

 

Hopefully this is what your asking, as I'm still confused on the question.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...