Vlue 271 Posted May 21, 2014 (edited) Pets and Summons v1.1a By Vlue Introduction This script allows you to create skills that temporarily add actors into the party. These actors (or pets, summons, whatever) will last until the end of the battle, unless they die first... or their turn timer runs up (optional). Summoned pets will be at the same level as the actor who used the skill, with options to adjust level for specific skills. Yay notetags!Features - Summon actors into battle - Summoned actors last for duration of battle or until dead or by timer, whichever comes first - Different skills can summon same actor at different levelsHow to Use Plug and play, set up notetags as needed.Script Pastebanana as usual, compatibility mode is for use with scripts that display actor sprites: Stand Alone: http://pastebin.com/zuGyMX7z Compatibility: http://pastebin.com/ef084qjGFAQ Q. But, what if I don't want to summon pets... A. Then don't use this script.Credit and Thanks - By Vlue - Free to use in any project (commercial or otherwise) with credit givenAuthor's Notes Pets and totems and beasts, oh my! Edited June 6, 2014 by Vlue 7 Share this post Link to post Share on other sites
Euphoria 147 Posted May 21, 2014 Damn Vlue, you've been busy! Another great script. You should take a break and help me learn RGSS3 better! Banana 1 Share this post Link to post Share on other sites
+ Sughayyer 163 Posted May 22, 2014 I'm not done breaking your last script beyond repair and you've already released another cool one?! 1 Share this post Link to post Share on other sites
cazziuz 9 Posted May 31, 2014 (edited) Greetings, i was wondering if this is usable with any side view combat systems ? , i have tested it with yanflys battle engine and a few others as well and as of now none of them work , it always crashes the game as soon s a actor is summoned ,or when the summoned actors turn is about to start it crashes , am i dong something wrong or is it just not compatible ? -Cazziuz Edited May 31, 2014 by cazziuz Share this post Link to post Share on other sites
Vlue 271 Posted June 1, 2014 It should work, I've tested it with a few. Have you tried it with this script below the others? or above? I can't remember which one it had to be... Share this post Link to post Share on other sites
cazziuz 9 Posted June 1, 2014 @Vlue yeah i have tried it both above and below all the other scripts , and when i try it with the Mog Hunter scripts in conjunction with the ATB that they have in their master demo it wont even start a battle process before crashing , also i downloaded your script compilation from your steam page , and after looking at your script and the way it works there , It doesn't allow for a visual reference or battler of any type , even after setting one on the summoned actor in the data base , all it does is show up on the window that has the character names during battle. Mabye I am doing something wrong ? any help in this matter would be amazing , cause this script is so easy to use as far as setting up goes ,and if it would have a visual battler that appears when the actor is summoned it would be perfect for the game i am working on ,thanks in advance for any and all help in this matter . -Cazziuz Share this post Link to post Share on other sites
Vlue 271 Posted June 1, 2014 Yah, the older versions wouldn't show, it's a newer feature. (I should update the compilation). Are you using the latest version as well? (1.4d) And if still nothing, if you link the scripts that aren't working, I can take a look. Share this post Link to post Share on other sites
cazziuz 9 Posted June 1, 2014 (edited) Yeah im using the newer version now , thank you for pointing that out , but now when i try to use with Battle Engine Symphony it summons the visual , but for some reason , neither the visual or the actor is able to be seen unless they are attacking ? maybe im just not doing something right ? and i know its this script causing the visual issues , because after i test it i then remove it an the battlers are easily visible ,both while they are attacking and just in line waiting to be given commands. also the summoned creature , is there a way to set where it goes to in the line up ? it looks as if the summoned creature is in the same spot as the actor who summons it ? I know im asking a bunch of question and i apologize ,but this script is amazing and will be perfect for my project( a trading card game) and i cant thank you enough for releasing it to the public to use. **EDIT** after i posted this i went and switched the summon script out in your compilation for the newer one and i got a error here is a screen shot of the error : Edited June 1, 2014 by cazziuz Share this post Link to post Share on other sites
Machaeus 0 Posted June 1, 2014 Hey, I'm a scripting/programming/coding-in-general moron and I was trying to figure out how to make this work. I failed. I copypasted your script into a new Insert, where the Script Editor says to put things. I have no other outside scripts...and that's about where I started needing help. Would you be so kind as to walk a noob through the basic process? Thanks in advance! Share this post Link to post Share on other sites
cazziuz 9 Posted June 1, 2014 (edited) in the data base , under the skills tab ,make a new skill named pretty much anything you want ( i used Summon) in the new skills not tag box use this : <SUMMON actor_id, timer, level_bonus (optional)> the break down on that is actor_id is the data base id number of the actor you are trying to summon, ie Eric is actor id 1 , the timer part is just what it says ( i don't use the timer so i am not certain what it count down as , probably rounds though) and the last part of it is a number equal to the number of levels higher than you that the summon will be summoned at (again i don't use this feature so i cant really tell you much about it ) so to summon Eric the note-tag should ready like this : <SUMMON 1, 0, 3> this means actor 1 (Eric) is summoned till he dies or battle is over and is 3 levels higher than you after you make the skill go to the actors tab of the database and add the skill to who ever is going to use it (actor tab--->features--->skill tab--->add skill-->drop down menu--->select skill) then depending on how you set up the skill it should work . hope this helps -Cazziuz Edited June 1, 2014 by cazziuz Share this post Link to post Share on other sites
+ Shack_Keeper 30 Posted June 2, 2014 That's pretty sweet there sir! I enjoy a good pet, summon, or whatever.... Share this post Link to post Share on other sites
Vlue 271 Posted June 2, 2014 Yeah im using the newer version now , thank you for pointing that out , but now when i try to use with Battle Engine Symphony it summons the visual , but for some reason , neither the visual or the actor is able to be seen unless they are attacking ? maybe im just not doing something right ? and i know its this script causing the visual issues , because after i test it i then remove it an the battlers are easily visible ,both while they are attacking and just in line waiting to be given commands. also the summoned creature , is there a way to set where it goes to in the line up ? it looks as if the summoned creature is in the same spot as the actor who summons it ? I know im asking a bunch of question and i apologize ,but this script is amazing and will be perfect for my project( a trading card game) and i cant thank you enough for releasing it to the public to use. **EDIT** after i posted this i went and switched the summon script out in your compilation for the newer one and i got a error here is a screen shot of the error : If you link the Symphony script thingy in question, I can take a look. And nothing wrong with asking a bunch of questions! Share this post Link to post Share on other sites
cazziuz 9 Posted June 2, 2014 Here is a link to the Battle Engine Symphony : https://github.com/suppayami/rmvxa-collection/blob/master/battle-symphony/battle-symphony-116c.rb and here is the actual script **warning** it is kinda long #==============================================================================## â–¼ Yami Engine Symphony - Battle Symphony# -- Version: 1.16c (2014.03.24)# -- Level: Easy, Normal, Hard, Very Hard# -- Requires: n/a##==============================================================================$imported = {} if $imported.nil?$imported["YES-BattleSymphony"] = true#==============================================================================# â–¼ Updates# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# 2014.03.24 - Release Build 1.16c.# 2014.02.26 - Release Build 1.16b.# 2014.01.20 - Release Build 1.16.# 2013.03.04 - Release Build 1.15.# 2013.02.07 - Release Build 1.14.# 2013.02.01 - Release Build 1.13.# 2013.01.12 - Release Build 1.12.# 2013.01.09 - Release Build 1.11.# 2013.01.03 - Release Build 1.10.# 2012.11.29 - Release Build 1.09.# 2012.11.29 - Release Build 1.08.# 2012.11.28 - Release Build 1.07.# 2012.11.25 - Release Build 1.06.# 2012.11.24 - Release Build 1.05.# 2012.11.16 - Release Build 1.04.# 2012.11.15 - Release Build 1.03.# 2012.11.12 - Release Build 1.02.# 2012.11.08 - Release Build 1.01.# 2012.10.20 - Finished Script.# 2012.07.01 - Started Script.##==============================================================================# â–¼ Introduction# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# Core Engine of Symphony. This script provides a complicated visual battle# which can be customized and many add-on awaited in the future.# -----------------------------------------------------------------------------# There are 8 Sections of Script:## Section I. Basic Settings (S-01)# Section II. Default Actions (S-02)# Section III. AutoSymphony (S-03)# Section IV. Default Symphony Tags (S-04)# Section V. Imports Symphony Tags (S-05)# Section VI. Sprites Initialization (S-06)# Section VII. Icons Sprites Initialization (S-07)# Section VIII. Core Script (S-08)## You can search these sections by the code next to them (S-xx).##==============================================================================# â–¼ Compatibility# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that# it will run with RPG Maker VX without adjusting.## To make this script work correctly with YEA - Battle Engine Ace, you have to# put this script under YEA - Battle Engine Ace.##==============================================================================# â–¼ Credits# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# Symphony Tags: Yanfly (From his Melody Tags).# Inspired: Yanfly, Nessiah, EvilEagles.# Testers: Many Guys in RPG Maker Community.# Many Descriptions: Yanfly (From his Yanfly Engine Melody)##==============================================================================#==============================================================================# Section I. Basic Settings (S-01)# -----------------------------------------------------------------------------# These are all basic requirements for running Battle Engine Symphony.# Please pay attention to those settings before you touch and read next# sections and add-ons.#==============================================================================module SYMPHONYmodule View# Set this to false to set Battle View to Empty.# All Sprites of actors as well as Icon (Weapon, Item...) will be hide.# All other Symphony Tags are still available.EMPTY_VIEW = false# Set Party default Direction. For Number of Direction, check NumPad on the# Keyboard. Troop Direction will be opposited with Party Direction.PARTY_DIRECTION = 4# Set Party default Location. If You have more than 4 Actors in Battle, You# have to add more index in the hash below.# For example: If you have 5 Actors, You will have to add default Location# for 5th Actor by adding: 4 => [Location X, Location Y],# (Don't forget the comma at the end of each line)ACTORS_POSITION = { # Begin.0 => [480, 224],1 => [428, 244],2 => [472, 264],3 => [422, 284],} # End.end # Viewmodule Visual# Set this to false to disable Weapon Icon creating for non-charset Battlers.# Recommend not to enable this, unless You use a Battler which doesn't show# its own weapon in the Battler-set.WEAPON_ICON_NON_CHARSET = false# Set this to true to disable auto Move Posing. When set this to false,# You can let the actor to change to any pose while moving.DISABLE_AUTO_MOVE_POSE = true# Set this to true to enable shadow beneath battler.BATTLER_SHADOW = true# Enemies default attack animation ID.# First Attack Animation and Second Attack Animation can be defined by# notetags and respectively.ENEMY_ATTACK_ANIMATION = 1end # Visualmodule Fixes# Set this to false to disable auto turn-off the immortal flag. Many people# forgot to turn-off immortal flag in an actions sequence, so the targets# remain alive even their HP reach zero.# Auto Turn-off Immortal will be push to Finish Actions.AUTO_IMMORTAL_OFF = trueend # Fixesend # SYMPHONY#==============================================================================# Section II. Default Actions (S-02)# -----------------------------------------------------------------------------# These are all Default Actions of Symphony. There are Magic Action,# Physical Action, Item Action and some Misc Actions. If You are really# good at Symphony Tags and want to customize all of these actions, please# pay attention here.# Note: You can use Symphony Tags in each skills so You don't have to check# this if these actions settings are good for You.#==============================================================================module SYMPHONYmodule DEFAULT_ACTIONS#==========================================================================# Default Magic Actions# -------------------------------------------------------------------------# These are the default magic actions for all Magic Skills as well as Certain# hit Skills. Battlers will play these actions when use a Magic/Certain Hit# Skill unless You customize it with Symphony Tags.#==========================================================================MAGIC_SETUP =[["MESSAGE"],["MOVE USER", ["FORWARD", "WAIT"]],["POSE", ["USER", "CAST"]],["STANCE", ["USER", "CAST"]],] # Do not remove this.MAGIC_WHOLE =[["IMMORTAL", ["TARGETS", "TRUE"]],["AUTO SYMPHONY", ["SKILL FULL"]],] # Do not remove this.MAGIC_TARGET =[] # Do not remove this.MAGIC_FOLLOW =[["WAIT FOR MOVE"],] # Do not remove this.MAGIC_FINISH =[["IMMORTAL", ["TARGETS", "FALSE"]],["AUTO SYMPHONY", ["RETURN ORIGIN"]],["WAIT FOR MOVE"],["WAIT", ["12", "SKIP"]],] # Do not remove this.#==========================================================================# Default Physical Actions# -------------------------------------------------------------------------# These are the default physical actions for all Physical Skills as well as# Normal Attack. Battlers will play these actions when use a Physical# Skill unless You customize it with Symphony Tags.#==========================================================================PHYSICAL_SETUP =[["MESSAGE"],["MOVE USER", ["FORWARD", "WAIT"]],] # Do not remove this.PHYSICAL_WHOLE =[] # Do not remove this.PHYSICAL_TARGET =[["IMMORTAL", ["TARGETS", "TRUE"]],["POSE", ["USER", "FORWARD"]],["STANCE", ["USER", "FORWARD"]],["MOVE USER", ["TARGET", "BODY", "WAIT"]],["AUTO SYMPHONY", ["SINGLE SWING"]],["AUTO SYMPHONY", ["SKILL FULL", "unless attack"]],["AUTO SYMPHONY", ["ATTACK FULL", "if attack"]],] # Do not remove this.PHYSICAL_FOLLOW =[["WAIT FOR MOVE"],] # Do not remove this.PHYSICAL_FINISH =[["IMMORTAL", ["TARGETS", "FALSE"]],["ICON DELETE", ["USER", "WEAPON"]],["AUTO SYMPHONY", ["RETURN ORIGIN"]],["WAIT FOR MOVE"],["WAIT", ["12", "SKIP"]],] # Do not remove this.#==========================================================================# Default Item Actions# -------------------------------------------------------------------------# These are the default item actions for all Items. Battlers will play these# actions when use an Item unless You customize it with Symphony Tags.#==========================================================================ITEM_SETUP =[["MESSAGE"],["MOVE USER", ["FORWARD", "WAIT"]],["AUTO SYMPHONY", ["ITEM FLOAT"]],] # Do not remove this.ITEM_WHOLE =[["IMMORTAL", ["TARGETS", "TRUE"]],["AUTO SYMPHONY", ["ITEM FULL"]],] # Do not remove this.ITEM_TARGET =[] # Do not remove this.ITEM_FOLLOW =[["WAIT FOR MOVE"],["IMMORTAL", ["TARGETS", "FALSE"]],] # Do not remove this.ITEM_FINISH =[["AUTO SYMPHONY", ["RETURN ORIGIN"]],["WAIT FOR MOVE"],["WAIT", ["12", "SKIP"]],] # Do not remove this.#==========================================================================# Critical Action# -------------------------------------------------------------------------# This is the critical action. This action will be played when a battler# scores a critical hit.#==========================================================================CRITICAL_ACTIONS =[["SCREEN", ["FLASH", "30", "255", "255", "255"]],] # Do not remove this.#==========================================================================# Miss Action# -------------------------------------------------------------------------# This is the miss action. This action will be played when a battler attacks# miss.#==========================================================================MISS_ACTIONS =[["POSE", ["TARGET", "EVADE"]],] # Do not remove this.#==========================================================================# Evade Action# -------------------------------------------------------------------------# This is the evade action. This action will be played when a battler evades.#==========================================================================EVADE_ACTIONS =[["POSE", ["TARGET", "EVADE"]],] # Do not remove this.#==========================================================================# Fail Action# -------------------------------------------------------------------------# This is the fail action. This action will be played when a battler fails# on casting skill.#==========================================================================FAIL_ACTIONS =[] # Do not remove this.#==========================================================================# Damaged Action# -------------------------------------------------------------------------# This is the damaged action. This action will be played when a battler is# damaged.#==========================================================================DAMAGED_ACTION = [["POSE", ["TARGET", "DAMAGE"]],["STANCE", ["TARGET", "STRUCK"]],] # Do not remove this.#==========================================================================# Counter Action# -------------------------------------------------------------------------# This is the counter action. This action will be played when a battler# counters an attack.#==========================================================================COUNTER_ACTION = [["MOVE COUNTER SUBJECT", ["FORWARD", "WAIT"]],["AUTO SYMPHONY", ["SINGLE SWING COUNTER"]],["AUTO SYMPHONY", ["SKILL FULL COUNTER"]],["ICON DELETE", ["COUNTER SUBJECT", "WEAPON"]],["POSE", ["COUNTER SUBJECT", "BREAK"]],["STANCE", ["COUNTER SUBJECT", "BREAK"]],] # Do not remove this.#==========================================================================# Reflect Action# -------------------------------------------------------------------------# This is the reflect action. This action will be played when a battler# reflects a magic.#==========================================================================REFLECT_ACTION = [["MOVE REFLECT SUBJECT", ["FORWARD", "WAIT"]],["POSE", ["REFLECT SUBJECT", "CAST"]],["STANCE", ["REFLECT SUBJECT", "CAST"]],["AUTO SYMPHONY", ["SKILL FULL COUNTER"]],["POSE", ["REFLECT SUBJECT", "BREAK"]],["STANCE", ["REFLECT SUBJECT", "BREAK"]],] # Do not remove this.#==========================================================================# Substitute Action# -------------------------------------------------------------------------# This is the substitute action. This action will be played when a battler# performs substitute.#==========================================================================SUBSTITUTE_ACTION = [["TELEPORT SUBSTITUTE SUBJECT", ["TARGET", "BODY", "WAIT"]],] # Do not remove this.SUBSTITUTE_END_ACTION = [["TELEPORT SUBSTITUTE SUBJECT", ["ORIGIN", "WAIT"]],] # Do not remove this.end # DEFAULT_ACTIONSend # SYMPHONY#==============================================================================# Section III. AutoSymphony (S-03)# -----------------------------------------------------------------------------# These are all Settings of AutoSymphony. You can make a sequence of Actions# and Symphony Tags and reuse it with a single tag: AutoSymphony.#==============================================================================module SYMPHONYAUTO_SYMPHONY = { # Start# "Key" => [symphony Sequence],#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# autosymphony: return origin# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This AutoSymphony returns the active battler and all of its targets back# to their original locations. Used often at the end of a skill, item,# or any other action sequence.# --- WARNING --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This is a default-used AutoSymphony. Do not remove this.#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="RETURN ORIGIN" => [["STANCE", ["USER", "ORIGIN"]],["MOVE USER", ["ORIGIN", "WAIT"]],["POSE", ["USER", "BREAK"]],["MOVE EVERYTHING", ["ORIGIN"]],], # end RETURN ORIGIN#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# autosymphony: single swing# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This causes the active battler to perform a single-handed weapon swing# downwards.# --- WARNING --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This is a default-used AutoSymphony. Do not remove this.#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="SINGLE SWING" => [["ICON CREATE", ["USER", "WEAPON"]],["ICON", ["USER", "WEAPON", "SWING"]],["POSE", ["USER", "2H SWING"]],["STANCE", ["USER", "ATTACK"]],], # end SINGLE SWING#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# autosymphony: single swing counter# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This causes the countering battler to perform a single-handed weapon# swing downwards.# --- WARNING --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This is a default-used AutoSymphony. Do not remove this.#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="SINGLE SWING COUNTER" => [["ICON CREATE", ["COUNTER SUBJECT", "WEAPON"]],["ICON", ["COUNTER SUBJECT", "WEAPON", "SWING"]],["POSE", ["COUNTER SUBJECT", "2H SWING"]],["STANCE", ["USER", "ATTACK"]],], # end SINGLE SWING COUNTER#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# autosymphony: item float# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This causes the active battler to enter a "Cast" stance to make the# active battler appear to throw the item upward. The icon of the item# is then created and floats upward.# --- WARNING --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This is a default-used AutoSymphony. Do not remove this.#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="ITEM FLOAT" => [["POSE", ["USER", "CAST"]],["STANCE", ["USER", "ITEM"]],["ICON CREATE", ["USER", "ITEM"]],["ICON", ["USER", "ITEM", "FLOAT", "WAIT"]],], # end ITEM FLOAT#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# autosymphony: attack full# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This triggers the full course for an attack effect. Attack's animation# plays and waits until it ends. The damage, status changes, and anything# else the attack may do to the target. Once the attack effect is over,# the target is sent sliding backwards a little bit.# --- WARNING --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This is a default-used AutoSymphony. Do not remove this.#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="ATTACK FULL" => [["ATTACK EFFECT", ["COUNTER CHECK"]],["ATTACK ANIMATION", ["WAIT"]],["ATTACK EFFECT", ["WHOLE"]],["MOVE TARGETS", ["BACKWARD"]],], # end ATTACK FULL#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# autosymphony: skill full# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This trigger the full course for a skill's effect. The skill animation# plays and waits to the end. The damage, status changes, and anything# else the skill may do to the target. Once the skill effect is over, the# target is sent sliding backwards a little bit.# --- WARNING --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This is a default-used AutoSymphony. Do not remove this.#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="SKILL FULL" => [["SKILL EFFECT", ["COUNTER CHECK"]],["SKILL EFFECT", ["REFLECT CHECK"]],["SKILL ANIMATION", ["WAIT"]],["SKILL EFFECT", ["WHOLE"]],["MOVE TARGETS", ["BACKWARD", "unless skill.for_friend?"]],], # end SKILL FULL#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# autosymphony: skill full counter# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This trigger the full course for a skill's effect. The skill animation# plays and waits to the end. The damage, status changes, and anything# else the skill may do to the target. Once the skill effect is over, the# target is sent sliding backwards a little bit.# This trigger is used in countering/reflecting skill.# --- WARNING --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This is a default-used AutoSymphony. Do not remove this.#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="SKILL FULL COUNTER" => [["ATTACK ANIMATION", ["TARGETS", "WAIT", "if attack"]],["SKILL ANIMATION", ["TARGETS", "WAIT", "unless attack"]],["SKILL EFFECT", ["WHOLE"]],["MOVE TARGETS", ["BACKWARD", "unless skill.for_friend?"]],], # end SKILL FULL COUNTER#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# autosymphony: item full# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This triggers the full course for an item's effect. The item animation# plays and waits to the end. The damage, status changes, and anything# else the item may do to the target. Once the skill effect is over, the# target is sent sliding backwards a little bit.# --- WARNING --- - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This is a default-used AutoSymphony. Do not remove this.#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="ITEM FULL" => [["SKILL EFFECT", ["COUNTER CHECK"]],["SKILL EFFECT", ["REFLECT CHECK", "unless skill.for_all?"]],["SKILL ANIMATION", ["WAIT"]],["ICON", ["USER", "ITEM", "FADE OUT", "WAIT"]],["ICON DELETE", ["USER", "ITEM"]],["SKILL EFFECT", ["WHOLE"]],["MOVE TARGETS", ["BACKWARD", "unless item.for_friend?"]],], # end ITEM FULL} # Do not remove this.end # SYMPHONY#==============================================================================# Section IV. Default Symphony Tags (S-04)# -----------------------------------------------------------------------------# These are all Default Symphony Tags. They define actions that will be played# when the tags are called. All these tags are optimized for the best# performance through testings.# -----------------------------------------------------------------------------# Do not edit anything below here unless You have read carefully the Tutorial# at Creating and Editing Symphony Tags.#==============================================================================#==============================================================================# â– Scene_Battle - Defines Tags Names#==============================================================================#==============================================================================# â– Scene_Battle - Defines Tags Names#==============================================================================class Scene_Battle < Scene_Base#--------------------------------------------------------------------------# new method: perform_actions_list#--------------------------------------------------------------------------def perform_actions_list(actions, targets)#--- Create Formers ---former_action = @actionformer_values = (@action_values != nil) ? @action_values.clone : nilformer_targets = (@action_targets != nil) ? @action_targets.clone : nilformer_item = (@scene_item != nil) ? @scene_item.clone : nil#--- Create Current ---@action_targets = targetsactions.each { |action|@action = action[0].upcase; @action_values = action[1]@action_values.each { |s| s.upcase! if s.is_a?(String) } if @action_valuesbreak unless SceneManager.scene_is?(Scene_Battle)break if @subject && @subject.dead?next unless action_condition_metcase @action.upcasewhen /ANIMATION[ ](\d+)|SKILL ANIMATION|ATTACK ANIMATION|ANIMATION/iaction_animationwhen /ATTACK EFFECT|SKILL EFFECT/iaction_skill_effectwhen /AUTO SYMPHONY|AUTOSYMPHONY/iaction_autosymphonywhen /ICON CREATE|CREATE ICON/iaction_create_iconwhen /ICON DELETE|DELETE ICON/iaction_delete_iconwhen "ICON", "ICON EFFECT"action_icon_effectwhen /ICON THROW[ ](.*)/iaction_icon_throwwhen /IF[ ](.+)/iaction_conditionwhen /JUMP[ ](.*)/iaction_movewhen /MESSAGE/iaction_messagewhen /MOVE[ ](.*)/iaction_movewhen /IMMORTAL/iaction_immortalwhen /POSE/iaction_posewhen /STANCE/iaction_stancewhen /UNLESS[ ](.+)/iaction_conditionwhen /TELEPORT[ ](.*)/iaction_movewhen "WAIT", "WAIT SKIP", "WAIT FOR ANIMATION", "WAIT FOR MOVE","WAIT FOR MOVEMENT", "ANI WAIT"action_waitelseimported_symphonyend}#--- Release Formers ---@action = former_action@action_values = former_values@action_targets = former_targets@scene_item = former_itemendend # Scene_Battle#==============================================================================# â– Scene_Battle - Defines Tags Actions#==============================================================================class Scene_Battle < Scene_Base#--------------------------------------------------------------------------# new method: action_condition_met#--------------------------------------------------------------------------def action_condition_mettarget = @action_targets[0]targets = @action_targetsuser = @subjectskill = item = @scene_itemattack = falseif @counter_subject || (user.current_action && user.current_action.attack?)attack = trueendweapons = user.weapons if user.actor?@action_condition ||= []@action_condition.pop if @action.upcase == "END"if @action_condition.size > 0@action_condition.each { |action_condition|action_condition =~ /(IF|UNLESS)[ ](.+)/icondition_type = $1.upcasecondition_value = $2.downcase#---if condition_type == "IF"return false unless eval(condition_value)elsif condition_type == "UNLESS"return false if eval(condition_value)end}endif @action_values@action_values.each { |value|case valuewhen /IF[ ](.*)/ieval("return false unless " + $1.to_s.downcase)when /UNLESS[ ](.*)/ieval("return false if " + $1.to_s.downcase)end}endreturn trueend#--------------------------------------------------------------------------# new method: get_action_mains#--------------------------------------------------------------------------def get_action_mainsresult = []case @action.upcasewhen /(?:USER)/iresult.push(@subject) if @subjectwhen /(?:TARGET|TARGETS)/iresult = @action_targetswhen /(?:COUNTER SUBJECT)/iresult = [@counter_subject]when /(?:REFLECT SUBJECT)/iresult = [@reflect_subject]when /(?:SUBSTITUTE SUBJECT)/iresult = [@substitute_subject]when /(?:ACTORS|PARTY|ACTORS LIVING)/iresult = $game_party.alive_memberswhen /(?:ALL ACTORS|ACTORS ALL)/iresult = $game_party.battle_memberswhen /(?:ACTORS NOT USER|PARTY NOT USER)/iresult = $game_party.alive_membersresult.delete(@subject) if @subjectwhen /(?:ENEMIES|TROOP|ENEMIES LIVING)/iresult = $game_troop.alive_memberswhen /(?:ALL ENEMIES|ENEMIES ALL)/iresult = $game_troop.battle_memberswhen /(?:ENEMIES NOT USER|ENEMIES NOT USER)/iresult = $game_troop.alive_membersresult.delete(@subject) if @subjectwhen /ACTOR[ ](\d+)/iresult.push($game_party.battle_members[$1.to_i])when /ENEMY[ ](\d+)/iresult.push($game_troop.battle_members[$1.to_i])when /(?:EVERYTHING|EVERYBODY)/iresult = $game_party.alive_members + $game_troop.alive_memberswhen /(?:EVERYTHING NOT USER|EVERYBODY NOT USER)/iresult = $game_party.alive_members + $game_troop.alive_membersresult.delete(@subject) if @subjectwhen /(?:ALLIES|FRIENDS)/iresult = @subject.friends_unit.alive_members if @subjectwhen /(?:OPPONENTS|RIVALS)/iresult = @subject.opponents_unit.alive_members if @subjectwhen /(?:FRIENDS NOT USER)/iif @subjectresult = @subject.friends_unit.alive_membersresult.delete(@subject)endwhen /(?:FOCUS)/iresult = @action_targetsresult.push(@subject) if @subjectwhen /(?:NOT FOCUS|NON FOCUS)/iresult = $game_party.alive_members + $game_troop.alive_membersresult -= @action_targetsresult.delete(@subject) if @subjectelse;endreturn result.compactend#--------------------------------------------------------------------------# new method: get_action_targets#--------------------------------------------------------------------------def get_action_targetsresult = []@action_values.reverse.each { |value|next if value.nil?case value.upcasewhen /(?:USER)/iresult.push(@subject) if @subjectwhen /(?:TARGET|TARGETS)/iresult = @action_targetswhen /(?:COUNTER SUBJECT)/iresult = [@counter_subject]when /(?:REFLECT SUBJECT)/iresult = [@reflect_subject]when /(?:SUBSTITUTE SUBJECT)/iresult = [@substitute_subject]when /(?:ACTORS|PARTY|ACTORS LIVING)/iresult = $game_party.alive_memberswhen /(?:ALL ACTORS|ACTORS ALL)/iresult = $game_party.battle_memberswhen /(?:ACTORS NOT USER|PARTY NOT USER)/iresult = $game_party.alive_membersresult.delete(@subject) if @subjectwhen /(?:ENEMIES|TROOP|ENEMIES LIVING)/iresult = $game_troop.alive_memberswhen /(?:ALL ENEMIES|ENEMIES ALL)/iresult = $game_troop.battle_memberswhen /(?:ENEMIES NOT USER|ENEMIES NOT USER)/iresult = $game_troop.alive_membersresult.delete(@subject) if @subjectwhen /ACTOR[ ](\d+)/iresult.push($game_party.battle_members[$1.to_i])when /ENEMY[ ](\d+)/iresult.push($game_troop.battle_members[$1.to_i])when /(?:EVERYTHING|EVERYBODY)/iresult = $game_party.alive_members + $game_troop.alive_memberswhen /(?:EVERYTHING NOT USER|EVERYBODY NOT USER)/iresult = $game_party.alive_members + $game_troop.alive_membersresult.delete(@subject) if @subjectwhen /(?:ALLIES|FRIENDS)/iresult = @subject.friends_unit.alive_members if @subjectwhen /(?:OPPONENTS|RIVALS)/iresult = @subject.opponents_unit.alive_members if @subjectwhen /(?:FRIENDS NOT USER)/iif @subjectresult = @subject.friends_unit.alive_membersresult.delete(@subject)endwhen /(?:NOT FOCUS|NON FOCUS)/iresult = $game_party.alive_members + $game_troop.alive_membersresult -= @action_targetsresult.delete(@subject)when /(?:FOCUS)/iresult = @action_targetsresult.push(@subject) if @subjectelse;end}return result.compactend#--------------------------------------------------------------------------# new method: action_animation#--------------------------------------------------------------------------def action_animationtargets = get_action_targetstargets = @action_targets if ["SKILL ANIMATION", "ATTACK ANIMATION"].include?(@action.upcase)return if targets.size == 0#---case @action.upcasewhen /ANIMATION[ ](\d+)/ianimation_id = [$1.to_i]when "SKILL ANIMATION", "ANIMATION"return unless @subject.current_action.itemanimation_id = [@subject.current_action.item.animation_id]when "ATTACK ANIMATION"animation_id = [@subject.atk_animation_id1]animation_id = [@subject.atk_animation_id2] if @subject.atk_animation_id2 > 0 && @action_values[1].to_i == 2when "LAST ANIMATION"animation_id = [@last_animation_id]endmirror = true if @action_values.include?("MIRROR")#---animation_id = [@subject.atk_animation_id1] if animation_id == [-1]#---ani_count = 0animation_id.each { |id|wait_for_animation if ani_count > 0mirror = !mirror if ani_count > 0animation = $data_animations[id]#---return unless animationif animation.to_screen?; targets[0].animation_id = id; endif !animation.to_screen?targets.each {|target| target.animation_id = id}endtargets.each {|target| target.animation_mirror = mirror}ani_count += 1}@last_animation_id = animation_id[0]return unless @action_values.include?("WAIT")wait_for_animationend#--------------------------------------------------------------------------# new method: action_skill_effect#--------------------------------------------------------------------------def action_skill_effectreturn unless @subjectreturn unless @subject.alive?return unless @subject.current_action.itemtargets = @action_targets.uniq#--- substitute ---substitutes = []targets.each { |target|substitutes.push(target.friends_unit.substitute_battler)}substitutes = substitutes.uniq#---item = @subject.current_action.item#---if @action_values.include?("CLEAR")targets.each { |target| target.result.set_calc; target.result.clear }returnend#---if @action_values.include?("COUNTER CHECK")targets.each { |target| target.result.set_counter }returnelsif @action_values.include?("REFLECT CHECK")targets.each { |target| target.result.set_reflection }returnend#---array = []array.push("calc") if @action_values.include?("CALC")array = ["perfect"] if @action_values.include?("PERFECT")@action_values.each {|value| array.push(value.downcase) unless ["PERFECT", "CALC"].include?(value)}array = ["calc", "dmg", "effect"] if @action_values.include?("WHOLE") || @action_values.size == 0#--- substitute flag ---if substitutessubstitutes.each { |substitute|next unless substitutesubstitute.result.clear_bes_flagarray.each {|value| str = "substitute.result.set_#{value}"; eval(str)}}end#---targets.each { |target|target.result.clear_bes_flagarray.each {|value| str = "target.result.set_#{value}"; eval(str)}item.repeats.times { invoke_item(target, item) }target.result.clear_change_target@substitute_subject.result.clear_change_target if @substitute_subject}end#--------------------------------------------------------------------------# new method: action_autosymphony#--------------------------------------------------------------------------def action_autosymphonykey = @action_values[0].to_s.upcasereturn unless SYMPHONY::AUTO_SYMPHONY.include?(key)actions_list = SYMPHONY::AUTO_SYMPHONY[key]perform_actions_list(actions_list, @action_targets)end#--------------------------------------------------------------------------# new method: action_create_icon#--------------------------------------------------------------------------def action_create_icontargets = get_action_targetsreturn if targets.size == 0return if SYMPHONY::View::EMPTY_VIEW#---case @action_values[1]when "WEAPON", "WEAPON1"symbol = :weapon1attachment = :hand1when "WEAPON2"symbol = :weapon2attachment = :hand2when "SHIELD"symbol = :shieldattachment = :shieldwhen "ITEM"symbol = :itemattachment = :middleelsesymbol = @action_values[1]attachment = :middleend#---case @action_values[2]when "HAND", "HAND1"attachment = :hand1when "HAND2", "SHIELD"attachment = :hand2when "ITEM"attachment = :itemwhen "MIDDLE", "BODY"attachment = :middlewhen "TOP", "HEAD"attachment = :topwhen "BOTTOM", "FEET", "BASE"attachment = :baseend#---targets.each { |target|next if target.sprite.nil?next if !target.use_charset? && !SYMPHONY::Visual::WEAPON_ICON_NON_CHARSET && [:weapon1, :weapon2].include?(symbol)target.create_icon(symbol, @action_values[3].to_i)next if target.icons[symbol].nil?target.icons[symbol].set_origin(attachment)}end#--------------------------------------------------------------------------# new method: action_delete_icon#--------------------------------------------------------------------------def action_delete_icontargets = get_action_targetsreturn if targets.size == 0#---case @action_values[1]when "WEAPON", "WEAPON1"symbol = :weapon1when "WEAPON2"symbol = :weapon2when "SHIELD"symbol = :shieldwhen "ITEM"symbol = :itemelsesymbol = @action_values[1]end#---targets.each { |target| target.delete_icon(symbol) }end#--------------------------------------------------------------------------# new method: action_icon_effect#--------------------------------------------------------------------------def action_icon_effecttargets = get_action_targetsreturn if targets.size == 0#---case @action_values[1]when "WEAPON", "WEAPON1"symbol = :weapon1when "WEAPON2"symbol = :weapon2when "SHIELD"symbol = :shieldwhen "ITEM"symbol = :itemelsesymbol = @action_values[1]end#---targets.each { |target|icon = target.icons[symbol]next if icon.nil?total_frames = 8case @action_values[2]when "ANGLE"angle = @action_values[3].to_iicon.set_angle(angle)when "ROTATE", "REROTATE"angle = @action_values[3].to_iangle = -angle if @action_values[2] == "REROTATE"total_frames = @action_values[4].to_itotal_frames = 8 if total_frames == 0icon.create_angle(angle, total_frames)when /ANIMATION[ ](\d+)/ianimation = $1.to_iif $data_animations[animation].nil?; return; endtotal_frames = $data_animations[animation].frame_maxtotal_frames *= 4 unless $imported["YEA-CoreEngine"]total_frames *= YEA::CORE::ANIMATION_RATE if $imported["YEA-CoreEngine"]icon.start_animation($data_animations[animation])when /MOVE_X[ ](\d+)/imove_x = $1.to_itotal_frames = @action_values[3].to_itotal_frames = 8 if total_frames == 0icon.create_movement(move_x, icon.y, total_frames)when /MOVE_Y[ ](\d+)/imove_y = $1.to_itotal_frames = @action_values[3].to_itotal_frames = 8 if total_frames == 0icon.create_movement(icon.x, move_y, total_frames)when /CUR_X[ ]([\-]?\d+)/imove_x = icon.x + $1.to_itotal_frames = @action_values[3].to_itotal_frames = 8 if total_frames == 0icon.create_movement(move_x, icon.y, total_frames)when /CUR_Y[ ]([\-]?\d+)/imove_y = icon.y + $1.to_itotal_frames = @action_values[3].to_itotal_frames = 8 if total_frames == 0icon.create_movement(icon.x, move_y, total_frames)when "FADE IN"total_frames = @action_values[3].to_itotal_frames = 8 if total_frames == 0rate = Integer(256.0/total_frames)icon.set_fade(rate)when "FADE OUT"total_frames = @action_values[3].to_itotal_frames = 8 if total_frames == 0rate = Integer(256.0/total_frames)icon.set_fade(-rate)when "FLOAT"total_frames = @action_values[3].to_itotal_frames = 24 if total_frames == 0icon.create_move_direction(8, total_frames, total_frames)when "SWING"total_frames = 10icon.set_angle(0)icon.create_angle(90, total_frames)when "UPSWING"total_frames = 10icon.set_angle(90)icon.create_angle(0, total_frames)when "STAB", "THRUST"total_frames = 8direction = Direction.direction(target.pose)direction = Direction.opposite(direction) if target.sprite.mirrorcase directionwhen 8icon_direction = 8icon.set_angle(-45)when 4icon_direction = 4icon.set_angle(45)when 6icon_direction = 6icon.set_angle(-135)when 2icon_direction = 2icon.set_angle(135)endicon.create_move_direction(Direction.opposite(icon_direction), 40, 1)icon.updateicon.create_move_direction(icon_direction, 32, total_frames)when "CLAW"total_frames = 8direction = Direction.direction(target.pose)direction = Direction.opposite(direction) if target.sprite.mirrorcase directionwhen 8icon_direction = 7back_direction = 3when 4icon_direction = 1back_direction = 9when 6icon_direction = 3back_direction = 7when 2icon_direction = 9back_direction = 1endicon.create_move_direction(back_direction, 32, 1)icon.updateicon.create_move_direction(icon_direction, 52, total_frames)end#---if @action_values.include?("WAIT")update_basic while icon.effecting?end}end#--------------------------------------------------------------------------# new method: action_icon_throw#--------------------------------------------------------------------------def action_icon_throwmains = get_action_mainstargets = get_action_targetsreturn if mains.size == 0#---case @action_values[1]when "WEAPON", "WEAPON1"symbol = :weapon1when "WEAPON2"symbol = :weapon2when "SHIELD"symbol = :shieldwhen "ITEM"symbol = :itemelsesymbol = @action_values[1]end#---mains.each { |main|icon = main.icons[symbol]next if icon.nil?total_frames = @action_values[3].to_itotal_frames = 12 if total_frames <= 0arc = @action_values[2].to_f#---targets.each { |target|move_x = target.screen_xmove_y = target.screen_y - target.sprite.height / 2icon.create_movement(move_x, move_y, total_frames)icon.create_arc(arc)if @action_values.include?("WAIT")update_basic while icon.effecting?end}}end#--------------------------------------------------------------------------# new method: action_condition#--------------------------------------------------------------------------def action_condition@action_condition ||= []@action_condition.push(@action.dup)end#--------------------------------------------------------------------------# new method: action_message#--------------------------------------------------------------------------def action_messageuser = @subjectreturn unless useritem = @subject.current_action.itemreturn unless item@log_window.display_use_item(@subject, item)end#--------------------------------------------------------------------------# new method: action_move#--------------------------------------------------------------------------def action_movemovers = get_action_mainsreturn unless movers.size > 0return if SYMPHONY::View::EMPTY_VIEW#--- Get Location ---case @action_values[0]#---when "FORWARD", "BACKWARD"distance = @action_values[1].to_idistance = @action_values[0] == "FORWARD" ? 16 : 8 if distance <= 0frames = @action_values[2].to_iframes = 8 if frames <= 0movers.each { |mover|next unless mover.exist?direction = mover.directiondestination_x = mover.screen_xdestination_y = mover.screen_ycase directionwhen 1; move_x = distance / -2; move_y = distance / 2when 2; move_x = distance * 0; move_y = distance * 1when 3; move_x = distance / -2; move_y = distance / 2when 4; move_x = distance * -1; move_y = distance * 0when 6; move_x = distance * 1; move_y = distance * 0when 7; move_x = distance / -2; move_y = distance / -2when 8; move_x = distance * 0; move_y = distance * -1when 9; move_x = distance / 2; move_y = distance / -2else; returnenddestination_x += @action_values[0] == "FORWARD" ? move_x : - move_xdestination_y += @action_values[0] == "FORWARD" ? move_y : - move_ymover.face_coordinate(destination_x, destination_y) unless @action_values[0] == "BACKWARD"mover.create_movement(destination_x, destination_y, frames)case @action.upcasewhen /JUMP[ ](.*)/iarc_scan = $1.scan(/(?:ARC)[ ](\d+)/i)arc = $1.to_imover.create_jump(arc)end}#---when "ORIGIN", "RETURN"frames = @action_values[1].to_iframes = 20 if frames <= 0movers.each { |mover|next unless mover.exist?destination_x = mover.origin_xdestination_y = mover.origin_ynext if destination_x == mover.screen_x && destination_y == mover.screen_yif @action_values[0] == "ORIGIN"mover.face_coordinate(destination_x, destination_y)endmover.create_movement(destination_x, destination_y, frames)case @action.upcasewhen /JUMP[ ](.*)/iarc_scan = $1.scan(/(?:ARC)[ ](\d+)/i)arc = $1.to_imover.create_jump(arc)end}#---when "TARGET", "TARGETS", "USER"frames = @action_values[2].to_iframes = 20 if frames <= 0#---case @action_values[0]when "USER"targets = [@subject]when "TARGET", "TARGETS"targets = @action_targetsend#---destination_x = destination_y = 0case @action_values[1]when "BASE", "FOOT", "FEET"targets.each { |target|destination_x += target.screen_x; destination_y += target.screen_yside_l = target.screen_x - target.sprite.width/2side_r = target.screen_x + target.sprite.width/2side_u = target.screen_y - target.sprite.heightside_d = target.screen_ymovers.each { |mover|next unless mover.exist?if side_l > mover.origin_xdestination_x -= target.sprite.width/2destination_x -= mover.sprite.width/2elsif side_r < mover.origin_xdestination_x += target.sprite.width/2destination_x += mover.sprite.width/2elsif side_u > mover.origin_y - mover.sprite.heightdestination_y -= target.sprite.heightelsif side_d < mover.origin_y - mover.sprite.heightdestination_y += mover.sprite.heightend}}#---when "BODY", "MIDDLE", "MID"targets.each { |target|destination_x += target.screen_xdestination_y += target.screen_y - target.sprite.height / 2side_l = target.screen_x - target.sprite.width/2side_r = target.screen_x + target.sprite.width/2side_u = target.screen_y - target.sprite.heightside_d = target.screen_ymovers.each { |mover|next unless mover.exist?if side_l > mover.origin_xdestination_x -= target.sprite.width/2destination_x -= mover.sprite.width/2elsif side_r < mover.origin_xdestination_x += target.sprite.width/2destination_x += mover.sprite.width/2elsif side_u > mover.origin_y - mover.sprite.heightdestination_y -= target.sprite.heightelsif side_d < mover.origin_y - mover.sprite.heightdestination_y += mover.sprite.heightenddestination_y += mover.sprite.heightdestination_y -= mover.sprite.height/2if $imported["BattleSymphony-8D"] && $imported["BattleSymphony-HB"]destination_y += mover.sprite.height if mover.use_8d? && target.use_hb?destination_y -= mover.sprite.height/4 if mover.use_hb? && target.use_8d?end}}#---when "CENTER"targets.each { |target|destination_x += target.screen_xdestination_y += target.screen_y - target.sprite.height/2}#---when "HEAD", "TOP"targets.each { |target|destination_x += target.screen_xdestination_y += target.screen_y - target.sprite.heightside_l = target.screen_x - target.sprite.width/2side_r = target.screen_x + target.sprite.width/2side_u = target.screen_y - target.sprite.heightside_d = target.screen_ymovers.each { |mover|next unless mover.exist?if side_l > mover.origin_xdestination_x -= target.sprite.width/2destination_x -= mover.sprite.width/2elsif side_r < mover.origin_xdestination_x += target.sprite.width/2destination_x += mover.sprite.width/2elsif side_u > mover.origin_y - mover.sprite.heightdestination_y -= target.sprite.heightelsif side_d < mover.origin_y - mover.sprite.heightdestination_y += mover.sprite.heightenddestination_y += mover.sprite.heightdestination_y -= mover.sprite.height/2if $imported["BattleSymphony-8D"] && $imported["BattleSymphony-HB"]destination_y += mover.sprite.height if mover.use_8d? && target.use_hb?destination_y -= mover.sprite.height/4 if mover.use_hb? && target.use_8d?end}}#---when "BACK"targets.each { |target|destination_x += target.screen_xdestination_y += target.screen_y - target.sprite.heightside_l = target.screen_x - target.sprite.width/2side_r = target.screen_x + target.sprite.width/2side_u = target.screen_y - target.sprite.heightside_d = target.screen_ymovers.each { |mover|next unless mover.exist?if side_l > mover.origin_xdestination_x += target.sprite.width/2destination_x += mover.sprite.width/2elsif side_r < mover.origin_xdestination_x -= target.sprite.width/2destination_x -= mover.sprite.width/2elsif side_u > mover.origin_y - mover.sprite.heightdestination_y -= target.sprite.heightelsif side_d < mover.origin_y - mover.sprite.heightdestination_y += mover.sprite.heightenddestination_y += mover.sprite.heightdestination_y -= mover.sprite.height/2if $imported["BattleSymphony-8D"] && $imported["BattleSymphony-HB"]destination_y += mover.sprite.height if mover.use_8d? && target.use_hb?destination_y -= mover.sprite.height/4 if mover.use_hb? && target.use_8d?end}}#---elsetargets.each { |target|destination_x += target.screen_xdestination_y += target.screen_y}end#---destination_x /= targets.sizedestination_y /= targets.sizemovers.each { |mover|next unless mover.exist?next if mover.screen_x == destination_x && mover.screen_y == destination_ycase @action.upcasewhen /MOVE[ ](.*)/imover.face_coordinate(destination_x, destination_y)mover.create_movement(destination_x, destination_y, frames)when /TELEPORT[ ](.*)/imover.screen_x = destination_xmover.screen_y = destination_ywhen /JUMP[ ](.*)/iarc_scan = $1.scan(/(?:ARC)[ ](\d+)/i)arc = $1.to_imover.face_coordinate(destination_x, destination_y)mover.create_movement(destination_x, destination_y, frames)mover.create_jump(arc)end}#---end#---return unless @action_values.include?("WAIT")wait_for_moveend#--------------------------------------------------------------------------# new method: action_immortal#--------------------------------------------------------------------------def action_immortaltargets = get_action_targetsreturn unless targets.size > 0targets.each { |target|next unless target.alive?case @action_values[1].upcasewhen "TRUE", "ON", "ENABLE"target.immortal = truewhen "OFF", "FALSE", "DISABLE"target.immortal = falsetarget.refreshperform_collapse_check(target)end}end#--------------------------------------------------------------------------# new method: action_pose#--------------------------------------------------------------------------def action_posetargets = get_action_targetsreturn unless targets.size > 0#---case @action_values[1]when "BREAK", "CANCEL", "RESET", "NORMAL"targets.each { |target| target.break_pose }returnwhen "IDLE", "READY"pose_key = :readywhen "DAMAGE", "DMG"pose_key = :damagewhen "PIYORI", "CRITICAL", "DAZED", "DAZE", "DIZZY"pose_key = :criticalwhen "MARCH", "FORWARD"pose_key = :marchingwhen "VICTORY", "POSE"pose_key = :victorywhen "EVADE", "DODGE"pose_key = :dodgewhen "DOWN", "DOWNED", "FALLEN"pose_key = :fallenwhen "2H", "2H SWING"pose_key = :swing2hwhen "1H", "1H SWING"pose_key = :swing1hwhen "2H REVERSE", "2H SWING REVERSE"pose_key = :r2hswingreverse_pose = truewhen "1H REVERSE", "1H SWING REVERSE"pose_key = :r1hswingreverse_pose = truewhen "CAST", "INVOKE", "ITEM", "MAGIC"pose_key = :castwhen "CHANT", "CHANNEL", "CHARGE"pose_key = :channelingelse; returnend#---return unless $imported["BattleSymphony-8D"]#---targets.each { |target|next unless target.exist?next unless target.use_8d?target.pose = pose_keytarget.force_pose = truetarget.reverse_pose = reverse_pose}end#--------------------------------------------------------------------------# new method: action_stance#--------------------------------------------------------------------------def action_stancetargets = get_action_targetsreturn unless targets.size > 0#---case @action_values[1]when "BREAK", "CANCEL", "RESET", "NORMAL"targets.each { |target| target.break_pose }returnwhen "IDLE", "READY"pose_key = :idlewhen "DAMAGE", "DMG", "STRUCK"pose_key = :struckwhen "PIYORI", "CRITICAL", "DAZED", "DAZE", "DIZZY", "WOOZY"pose_key = :woozywhen "VICTORY"pose_key = :victorywhen "EVADE", "DODGE", "DEFEND"pose_key = :defendwhen "DOWN", "DOWNED", "FALLEN", "DEAD"pose_key = :deadwhen "SWING", "ATTACK", "SLASH"pose_key = :attackwhen "CAST", "INVOKE", "MAGIC"pose_key = :magicwhen "ITEM"pose_key = :itemwhen "SKILL", "PHYSICAL"pose_key = :skillwhen "FORWARD", "MOVE", "TARGET"pose_key = :advancewhen "ORIGIN", "BACK", "RETREAT"pose_key = :retreatelsepose_key = @action_values[1].downcase.to_symend#---return if !$imported["BattleSymphony-HB"] && !$imported["BattleSymphony-CBS"]#---targets.each { |target|next unless target.exist?next if !target.use_hb? && !target.use_cbs?target.pose = pose_keytarget.force_pose = true}end#--------------------------------------------------------------------------# action_wait#--------------------------------------------------------------------------def action_waitcase @actionwhen "WAIT FOR ANIMATION"wait_for_animationreturnwhen "WAIT FOR MOVE", "WAIT FOR MOVEMENT"wait_for_movereturnendframes = @action_values[0].to_iframes *= $imported["YEA-CoreEngine"] ? YEA::CORE::ANIMATION_RATE : 4 if @action == "ANI WAIT"skip = @action_values.include?("SKIP")skip = true if @action == "WAIT SKIP"skip ? wait(frames) : abs_wait(frames)endend # Scene_Battle#==============================================================================# Section V. Imports Symphony Tags (S-05)# -----------------------------------------------------------------------------# This section is the field for You to create your own Symphony Tags. Please# read carefully the Tutorial at Creating Symphony Tags before touching this.#==============================================================================#==============================================================================# â– Scene_Battle - Imported Symphony Configuration#==============================================================================class Scene_Battle < Scene_Base#--------------------------------------------------------------------------# new method: imported_symphony#--------------------------------------------------------------------------def imported_symphonycase @action.upcase#--- Start Importing ---#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-# sample symphony# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# This is the most basic sample, it will put a line which contains# action name and action values in Console.#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-when /SAMPLE SYMPHONY/iaction_sample_symphony#--- End Importing ---elseif SYMPHONY::AUTO_SYMPHONY.include?(@action.upcase)@action_values = [@action.upcase]@action = "AUTO SYMPHONY"action_autosymphonyendendendend # Scene_Battle#==============================================================================# â– Scene_Battle - Imported Symphony Actions#==============================================================================class Scene_Battle < Scene_Base#--------------------------------------------------------------------------# new method: action_sample_symphony#--------------------------------------------------------------------------def action_sample_symphonystr = "#{@action.upcase}: "@action_values.each {|value| str += "#{value} "}puts strendend # Scene_Battle#==============================================================================# Section VI. Sprites Initialization (S-06)# -----------------------------------------------------------------------------# This section is the first section of core script. It will Initializes and# Creates Sprites for all Battlers and Maintains them.# -----------------------------------------------------------------------------# Do not touch below script unless You know what You do and How it works.#==============================================================================#==============================================================================# â– Game_Battler#==============================================================================class Game_Battler < Game_BattlerBase#--------------------------------------------------------------------------# * Public Instance Variables#--------------------------------------------------------------------------attr_accessor :origin_xattr_accessor :origin_yattr_accessor :screen_xattr_accessor :screen_yattr_accessor :poseattr_accessor :immortalattr_accessor :iconsattr_accessor :directionattr_accessor :force_poseattr_accessor :reverse_pose#--------------------------------------------------------------------------# alias method: initialize#--------------------------------------------------------------------------alias bes_initialize initializedef initializebes_initialize@screen_x = 0@screen_y = 0#---@move_x_rate = 0@move_y_rate = 0#---@immortal = false#---@icons = {}@force_pose = false@reverse_pose = false#---@hp = 1 # Fix Change Party in Battle.#---@arc = 0@parabola = {}@f = 0@arc_y = 0end#--------------------------------------------------------------------------# new method: use_charset?#--------------------------------------------------------------------------def use_charset?return falseend#--------------------------------------------------------------------------# new method: use_8d?#--------------------------------------------------------------------------def use_8d?falseend#--------------------------------------------------------------------------# new method: use_hb?#--------------------------------------------------------------------------def use_hb?falseend#--------------------------------------------------------------------------# new method: use_cbs?#--------------------------------------------------------------------------def use_cbs?falseend#--------------------------------------------------------------------------# new method: emptyview?#--------------------------------------------------------------------------def emptyview?return SYMPHONY::View::EMPTY_VIEWend#--------------------------------------------------------------------------# new method: battler#--------------------------------------------------------------------------def battlerself.actor? ? self.actor : self.enemyend#--------------------------------------------------------------------------# new method: use_custom_charset?#--------------------------------------------------------------------------def use_custom_charset?if $imported["BattleSymphony-8D"]; return true if use_8d?; endif $imported["BattleSymphony-HB"]; return true if use_hb?; endreturn falseend#--------------------------------------------------------------------------# new method: screen_z#--------------------------------------------------------------------------def screen_zreturn 100end#--------------------------------------------------------------------------# alias method: on_battle_start#--------------------------------------------------------------------------alias bes_on_battle_start on_battle_startdef on_battle_startreset_position#---bes_on_battle_start#---return if self.actor? && !$game_party.battle_members.include?(self)set_default_positionend#--------------------------------------------------------------------------# new method: set_default_position#--------------------------------------------------------------------------def set_default_position@move_rate_x = 0@move_rate_y = 0#---@destination_x = self.screen_x@destination_y = self.screen_yend#--------------------------------------------------------------------------# new method: correct_origin_position#--------------------------------------------------------------------------def correct_origin_position# Compatibleend#--------------------------------------------------------------------------# new method: reset_position#--------------------------------------------------------------------------def reset_positionbreak_poseend#--------------------------------------------------------------------------# new method: break_pose#--------------------------------------------------------------------------def break_pose@direction = SYMPHONY::View::PARTY_DIRECTION@direction = Direction.opposite(@direction) if self.enemy?#---@pose = Direction.pose(@direction)#---@force_pose = false@reverse_pose = falseend#--------------------------------------------------------------------------# new method: pose=#--------------------------------------------------------------------------def pose=(pose)@pose = posereturn if self.actor? && !$game_party.battle_members.include?(self)self.sprite.correct_change_pose if SceneManager.scene.spritesetend#--------------------------------------------------------------------------# new method: can_collapse?#--------------------------------------------------------------------------def can_collapse?return false unless dead?unless actor?return false unless sprite.battler_visiblearray = [:collapse, :boss_collapse, :instant_collapse]return false if array.include?(sprite.effect_type)endreturn trueend#--------------------------------------------------------------------------# new method: weapons#--------------------------------------------------------------------------def weaponsreturn []end#--------------------------------------------------------------------------# new method: equips#--------------------------------------------------------------------------def equipsreturn []end#--------------------------------------------------------------------------# alias method: add_state#--------------------------------------------------------------------------alias bes_add_state add_statedef add_state(state_id)bes_add_state(state_id)#--- Fix Death pose ---return unless SceneManager.scene_is?(Scene_Battle)break_pose if state_id == death_state_idendend # Game_Battler#==============================================================================# â– Game_Actor#==============================================================================class Game_Actor < Game_Battler#--------------------------------------------------------------------------# overwrite method: use_sprite?#--------------------------------------------------------------------------def use_sprite?return trueend#--------------------------------------------------------------------------# new method: use_charset?#--------------------------------------------------------------------------def use_charset?return trueend#--------------------------------------------------------------------------# new method: set_default_position#--------------------------------------------------------------------------def set_default_positionsuperreturn if @origin_x && @origin_yreturn unless $game_party.battle_members.include?(self)@origin_x = @screen_x = @destination_x = SYMPHONY::View::ACTORS_POSITION[index][0]@origin_y = @screen_y = @destination_y = SYMPHONY::View::ACTORS_POSITION[index][1]return unless emptyview?@origin_x = @screen_x = @destination_x = self.screen_x@origin_y = @screen_y = @destination_y = self.screen_yend#--------------------------------------------------------------------------# new method: reset_position#--------------------------------------------------------------------------def reset_positionsuper@origin_x = @origin_y = nilend#--------------------------------------------------------------------------# alias method: screen_x#--------------------------------------------------------------------------alias bes_screen_x screen_xdef screen_xemptyview? ? bes_screen_x : @screen_xend#--------------------------------------------------------------------------# alias method: screen_y#--------------------------------------------------------------------------alias bes_screen_y screen_ydef screen_yemptyview? ? bes_screen_y : @screen_yend#--------------------------------------------------------------------------# new method: correct_origin_position#--------------------------------------------------------------------------def correct_origin_positionreturn if @origin_x && @origin_y@origin_x = @screen_x = SYMPHONY::View::ACTORS_POSITION[index][0]@origin_y = @screen_y = SYMPHONY::View::ACTORS_POSITION[index][1]return unless emptyview?@origin_x = @screen_x = @destination_x = self.screen_x@origin_y = @screen_y = @destination_y = self.screen_yend#--------------------------------------------------------------------------# new method: sprite#--------------------------------------------------------------------------def spriteindex = $game_party.battle_members.index(self)return nil unless indexreturn nil unless SceneManager.scene_is?(Scene_Battle)return SceneManager.scene.spriteset.actor_sprites[index]end#--------------------------------------------------------------------------# overwrite method: perform_collapse_effect#--------------------------------------------------------------------------def perform_collapse_effectif $game_party.in_battle@sprite_effect_type = :collapse unless self.use_custom_charset?Sound.play_actor_collapseendendend # Game_Actor#==============================================================================# â– Game_Enemy#==============================================================================class Game_Enemy < Game_Battler#--------------------------------------------------------------------------# new method: correct_origin_position#--------------------------------------------------------------------------def correct_origin_position@origin_x ||= @screen_x@origin_y ||= @screen_yend#--------------------------------------------------------------------------# new method: use_charset?#--------------------------------------------------------------------------def use_charset?return superend#--------------------------------------------------------------------------# new method: sprite#--------------------------------------------------------------------------def spritereturn nil unless SceneManager.scene_is?(Scene_Battle)return SceneManager.scene.spriteset.enemy_sprites.reverse[self.index]end#--------------------------------------------------------------------------# new method: atk_animation_id1#--------------------------------------------------------------------------def atk_animation_id1return enemy.atk_animation_id1end#--------------------------------------------------------------------------# new method: atk_animation_id2#--------------------------------------------------------------------------def atk_animation_id2return enemy.atk_animation_id2endend # Game_Enemy#==============================================================================# â– Sprite_Battler#==============================================================================class Sprite_Battler < Sprite_Base#--------------------------------------------------------------------------# * Public Instance Variables#--------------------------------------------------------------------------attr_accessor :effect_typeattr_accessor :battler_visible#--------------------------------------------------------------------------# new method: pose#--------------------------------------------------------------------------alias bes_initialize initializedef initialize(viewport, battler = nil)bes_initialize(viewport, battler)correct_change_pose if @battler#---self.visible = false if SYMPHONY::View::EMPTY_VIEW && (@battler.nil? || @battler.actor?)#---return if SYMPHONY::View::EMPTY_VIEW#---return unless SYMPHONY::Visual::BATTLER_SHADOW#---@charset_shadow = Sprite.new(viewport)@charset_shadow.bitmap = Cache.system("Shadow")@charset_shadow.ox = @charset_shadow.width / 2@charset_shadow.oy = @charset_shadow.heightend#--------------------------------------------------------------------------# new method: pose#--------------------------------------------------------------------------def pose@battler.poseend#--------------------------------------------------------------------------# alias method: update#--------------------------------------------------------------------------alias bes_update updatedef updatebes_update#---return if SYMPHONY::View::EMPTY_VIEW#---return unless SYMPHONY::Visual::BATTLER_SHADOW#---@charset_shadow.opacity = self.opacity@charset_shadow.visible = self.visible@charset_shadow.x = self.x + (self.mirror ? 0 : - 2)@charset_shadow.y = self.y + 2@charset_shadow.z = self.z - 1#---@charset_shadow.opacity = 0 if @battler.nil?end#--------------------------------------------------------------------------# alias method: dispose#--------------------------------------------------------------------------alias bes_dispose disposedef disposebes_disposedispose_shadowend#--------------------------------------------------------------------------# new method: dispose_shadow#--------------------------------------------------------------------------def dispose_shadow@charset_shadow.dispose if @charset_shadowend#--------------------------------------------------------------------------# alias method: update_bitmap#--------------------------------------------------------------------------alias bes_update_bitmap update_bitmapdef update_bitmapcorrect_change_pose if @timer.nil?@battler.use_charset? ? update_charset : bes_update_bitmapend#--------------------------------------------------------------------------# alias method: update_origin#--------------------------------------------------------------------------alias bes_update_origin update_origindef update_origin@battler.update_visual@battler.use_charset? ? update_charset_origin : bes_update_originend#--------------------------------------------------------------------------# new method: update_charset#--------------------------------------------------------------------------def update_charset@battler.set_default_position unless pose#---update_charset_bitmapupdate_src_rectend#--------------------------------------------------------------------------# new method: correct_change_pose#--------------------------------------------------------------------------def correct_change_pose@pattern = 1@timer = 15@back_step = false@last_pose = poseend#--------------------------------------------------------------------------# new method: update_charset_origin#--------------------------------------------------------------------------def update_charset_originif bitmapself.ox = @cw / 2self.oy = @chendend#--------------------------------------------------------------------------# new method: graphic_changed?#--------------------------------------------------------------------------def graphic_changed?@character_name != @battler.character_name ||@character_index != @battler.character_indexend#--------------------------------------------------------------------------# new method: set_character_bitmap#--------------------------------------------------------------------------def set_character_bitmapself.bitmap = Cache.character(@character_name)sign = @character_name[/^[\!\$]./]if sign && sign.include?('$')@cw = bitmap.width / 3@ch = bitmap.height / 4else@cw = bitmap.width / 12@ch = bitmap.height / 8endend#--------------------------------------------------------------------------# new method: update_charset_bitmap#--------------------------------------------------------------------------def update_charset_bitmapif graphic_changed?@character_name = @battler.character_name@character_index = @battler.character_indexset_character_bitmapendend#--------------------------------------------------------------------------# new method: update_src_rect#--------------------------------------------------------------------------def update_src_rect@timer -= 1if @battler.force_posearray = []array = Direction.index_8d(pose) if $imported["BattleSymphony-8D"] && @battler.use_8d?if !@battler.reverse_pose && @pattern < 2 && @timer <= 0@pattern += 1@timer = array[2].nil? ? 15 : array[2]elsif @battler.reverse_pose && @pattern > 0 && @timer <= 0@pattern -= 1@timer = array[2].nil? ? 15 : array[2]endelse#--- Quick Fix@pattern = 2 if @pattern > 2@pattern = 0 if @pattern < 0#--- Endif @timer <= 0@pattern += @back_step ? -1 : 1@back_step = true if @pattern >= 2@back_step = false if @pattern <= 0@timer = 15endend#---@battler.break_pose unless posedirection = Direction.direction(pose)character_index = @character_index#---if $imported["BattleSymphony-8D"] && @battler.use_8d?array = Direction.index_8d(pose)character_index = array[0]direction = array[1]endsx = (character_index % 4 * 3 + @pattern) * @cwsy = (character_index / 4 * 4 + (direction - 2) / 2) * @chself.src_rect.set(sx, sy, @cw, @ch)end#--------------------------------------------------------------------------# overwrite method: revert_to_normal#--------------------------------------------------------------------------def revert_to_normalself.blend_type = 0self.color.set(0, 0, 0, 0)self.opacity = 255end#--------------------------------------------------------------------------# alias method: animation_set_sprites# Make Animation Opacity independent of Sprite Opacity#--------------------------------------------------------------------------alias bes_animation_set_sprites animation_set_spritesdef animation_set_sprites(frame)bes_animation_set_sprites(frame)cell_data = frame.cell_data@ani_sprites.each_with_index do |sprite, i|next unless spritepattern = cell_data[i, 0]if !pattern || pattern < 0sprite.visible = falsenextendsprite.opacity = cell_data[i, 6]endendend # Sprite_Battler#==============================================================================# â– Spriteset_Battle#==============================================================================class Spriteset_Battle#--------------------------------------------------------------------------# public instance variables#--------------------------------------------------------------------------attr_accessor :actor_spritesattr_accessor :enemy_sprites#--------------------------------------------------------------------------# overwrite method: create_actors# Fixed Large Party.#--------------------------------------------------------------------------def create_actorsmax_members = $game_party.max_battle_members@actor_sprites = Array.new(max_members) { Sprite_Battler.new(@viewport1) }end#--------------------------------------------------------------------------# overwrite method: update_actors# Fixed Change Party.#--------------------------------------------------------------------------def update_actors@actor_sprites.each_with_index do |sprite, i|party_member = $game_party.battle_members[i]if party_member != sprite.battlersprite.battler = $game_party.battle_members[i]#---if party_memberparty_member.reset_positionparty_member.correct_origin_positionparty_member.break_pose if party_member.dead?endsprite.init_visibility if sprite.battler && !sprite.battler.use_custom_charset?endsprite.updateendendend # Spriteset_Battle#==============================================================================# Section VII. Icons Sprites Initialization (S-07)# -----------------------------------------------------------------------------# This section is the second section of core script. It will Initializes and# Creates Sprites for all Object like Weapons, Items and Maintains them.# -----------------------------------------------------------------------------# Do not touch below script unless You know what You do and How it works.#==============================================================================#==============================================================================# â– Sprite_Object#==============================================================================class Sprite_Object < Sprite_Base#--------------------------------------------------------------------------# initialize#--------------------------------------------------------------------------def initialize(viewport = nil)super(viewport)#---@dest_angle = 0@dest_x = 0@dest_y = 0#---@angle_rate = 0@move_x_rate = 0@move_y_rate = 0@fade_rate = 0#---@arc = 0@parabola = {}@f = 0@arc_y = 0#---@battler = nil@offset_x = 0@offset_y = 0@offset_z = 0@attach_x = 0@attach_y = 0@attachment = :middleend#--------------------------------------------------------------------------# set_battler#--------------------------------------------------------------------------def set_battler(battler = nil)@battler = battlerupdateend#--------------------------------------------------------------------------# set_position#--------------------------------------------------------------------------def set_position(x, y)@dest_x = self.x = x@dest_y = self.y = yend#--------------------------------------------------------------------------# set_angle#--------------------------------------------------------------------------def set_angle(angle)@dest_angle = self.angle = angle@dest_angle = self.angle = -angle if mirror_battler?end#--------------------------------------------------------------------------# set_icon#--------------------------------------------------------------------------def set_icon(index)return if index <= 0bitmap = Cache.system("Iconset")self.bitmap ||= bitmapself.src_rect.set(index % 16 * 24, index / 16 * 24, 24, 24)self.ox = self.oy = 12end#--------------------------------------------------------------------------# set_origin#--------------------------------------------------------------------------def set_origin(type)@offset_z = 2@attachment = typecase typewhen :itemself.ox = 12self.oy = 12@offset_y = -@battler.sprite.height@offset_x = -@battler.sprite.width / 2when :hand1self.ox = 24self.oy = 24@attach_y = -@battler.sprite.height/3@attach_x = -@battler.sprite.width/5when :hand2self.ox = 24self.oy = 24@attach_y = -@battler.sprite.height/3@attach_x = @battler.sprite.width/5when :middleself.ox = 12self.oy = 12@offset_y = -@battler.sprite.height/2when :topself.ox = 12self.oy = 24@offset_y = -@battler.sprite.heightwhen :baseself.ox = 12self.oy = 24endself.y = @battler.screen_y + @attach_y + @offset_y + @arc_yend#--------------------------------------------------------------------------# set_fade#--------------------------------------------------------------------------def set_fade(rate)@fade_rate = rateend#--------------------------------------------------------------------------# create_angle#--------------------------------------------------------------------------def create_angle(angle, frames = 8)return if angle == self.angle@dest_angle = angle@dest_angle = - @dest_angle if mirror_battler?frames = [frames, 1].max@angle_rate = [(self.angle - @dest_angle).abs / frames, 2].maxend#--------------------------------------------------------------------------# create_arc#--------------------------------------------------------------------------def create_arc(arc)@arc = arc@parabola[:x] = 0@parabola[:y0] = 0@parabola[:y1] = @dest_y - self.y@parabola[:h] = - (@parabola[:y0] + @arc * 5)@parabola[] = (self.x - @dest_x).absend#--------------------------------------------------------------------------# create_movement#--------------------------------------------------------------------------def create_movement(destination_x, destination_y, frames = 12)return if self.x == destination_x && self.y == destination_y@arc = 0@dest_x = destination_x@dest_y = destination_yframes = [frames, 1].max@f = frames.to_f / 2@move_x_rate = [(self.x - @dest_x).abs / frames, 2].max@move_y_rate = [(self.y - @dest_y).abs / frames, 2].maxend#--------------------------------------------------------------------------# create_move_direction#--------------------------------------------------------------------------def create_move_direction(direction, distance, frames = 12)case directionwhen 1; move_x = distance / -2; move_y = distance / 2when 2; move_x = distance * 0; move_y = distance * 1when 3; move_x = distance / -2; move_y = distance / 2when 4; move_x = distance * -1; move_y = distance * 0when 6; move_x = distance * 1; move_y = distance * 0when 7; move_x = distance / -2; move_y = distance / -2when 8; move_x = distance * 0; move_y = distance * -1when 9; move_x = distance / 2; move_y = distance / -2else; returnend#---move_x += self.xmove_y += self.y#---create_movement(move_x, move_y, frames)end#--------------------------------------------------------------------------# update#--------------------------------------------------------------------------def updatesuperupdate_angle@arc == 0 ? update_movement : update_arcupdate_positionupdate_opacityend#--------------------------------------------------------------------------# update_angle#--------------------------------------------------------------------------def update_anglereturn if @angle_rate == 0@angle_rate = 0 if self.angle == @dest_anglevalue = [(self.angle - @dest_angle).abs, @angle_rate].minself.angle += (@dest_angle > self.angle) ? value : -valueend#--------------------------------------------------------------------------# update_arc#--------------------------------------------------------------------------def update_arcreturn unless [@move_x_rate, @move_y_rate].any? { |x| x != 0 }#---value = [(self.x - @dest_x).abs, @move_x_rate].min@offset_x += (@dest_x > self.x) ? value : -value@parabola[:x] += value#---if @dest_x == self.xself.y = @dest_yelsea = (2*(@parabola[:y0]+@parabola[:y1])-4*@parabola[:h])/(@parabola[]**2)b = (@parabola[:y1]-@parabola[:y0]-a*(@parabola[]**2))/@parabola[]@arc_y = a * @parabola[:x] * @parabola[:x] + b * @parabola[:x] + @parabola[:y0]end#---@move_x_rate = 0 if self.x == @dest_x@move_y_rate = 0 if self.y == @dest_yend#--------------------------------------------------------------------------# update_movement#--------------------------------------------------------------------------def update_movementreturn unless [@move_x_rate, @move_y_rate].any? { |x| x != 0 }@move_x_rate = 0 if self.x == @dest_x@move_y_rate = 0 if self.y == @dest_yvalue = [(self.x - @dest_x).abs, @move_x_rate].min@offset_x += (@dest_x > self.x) ? value : -valuevalue = [(self.y - @dest_y).abs, @move_y_rate].min@offset_y += (@dest_y > self.y) ? value : -valueend#--------------------------------------------------------------------------# update_position#--------------------------------------------------------------------------def update_positionif @battler != nilself.mirror = mirror_battler?update_attachment(self.mirror)attach_x = self.mirror ? -@attach_x : @attach_xself.x = @battler.screen_x + attach_x + @offset_xself.y = @battler.screen_y + @attach_y + @offset_y + @arc_yself.z = @battler.screen_z + @offset_zelseself.x = @offset_xself.y = @offset_yself.z = @offset_zendend#--------------------------------------------------------------------------# update_attachment#--------------------------------------------------------------------------def update_attachment(mirror = false)case @attachmentwhen :hand1self.ox = mirror ? 0 : 24self.oy = 24@attach_y = -@battler.sprite.height/3@attach_x = -@battler.sprite.width/5when :hand2self.ox = mirror ? 0 : 24self.oy = 24@attach_y = -@battler.sprite.height/3@attach_x = @battler.sprite.width/5else@attach_x = 0@attach_y = 0endend#--------------------------------------------------------------------------# update_attachment#--------------------------------------------------------------------------def update_opacityself.opacity += @fade_rateend#--------------------------------------------------------------------------# mirror_battler?#--------------------------------------------------------------------------def mirror_battler?return false if @battler.sprite == nildirection = Direction.direction(@battler.pose)return true if [9, 6, 3].include?(direction)return true if @battler.sprite.mirrorreturn falseend#--------------------------------------------------------------------------# effecting?#--------------------------------------------------------------------------def effecting?[@angle_rate,@move_y_rate,@move_x_rate,@fade_rate].any? { |x| x > 0 }endend # Sprite_Object#==============================================================================# Section VIII. Core Script (S-08)# -----------------------------------------------------------------------------# This section is the most important section of Core SCript. It will Initialize# Database as well as Symphony Tags and put them in actions.# -----------------------------------------------------------------------------# Do not touch below script unless You know what You do and How it works.#==============================================================================#==============================================================================# â– Regular Expression#==============================================================================module REGEXPmodule SYMPHONYSETUP_ANI_ON = /<(?:SETUP_ACTION|setup action|setup)>/iSETUP_ANI_OFF = /<\/(?:SETUP_ACTION|setup action|setup)>/iWHOLE_ANI_ON = /<(?:WHOLE_ACTION|whole action|whole)>/iWHOLE_ANI_OFF = /<\/(?:WHOLE_ACTION|whole action|whole)>/iTARGET_ANI_ON = /<(?:TARGET_ACTION|target action|target)>/iTARGET_ANI_OFF = /<\/(?:TARGET_ACTION|target action|target)>/iFOLLOW_ANI_ON = /<(?:FOLLOW_ACTION|follow action|follow)>/iFOLLOW_ANI_OFF = /<\/(?:FOLLOW_ACTION|follow action|follow)>/iFINISH_ANI_ON = /<(?:FINISH_ACTION|finish action|finish)>/iFINISH_ANI_OFF = /<\/(?:FINISH_ACTION|finish action|finish)>/iSYMPHONY_TAG_NONE = /[ ]*(.*)/iSYMPHONY_TAG_VALUES = /[ ]*(.*):[ ]*(.*)/iATK_ANI1 = /<(?:ATK_ANI_1|atk ani 1):[ ]*(\d+)>/iATK_ANI2 = /<(?:ATK_ANI_2|atk ani 2):[ ]*(\d+)>/iendend# Scan values: /\w+[\s*\w+]*/i#==============================================================================# â– DataManager#==============================================================================module DataManager#--------------------------------------------------------------------------# alias method: load_database#--------------------------------------------------------------------------class < def self.load_databaseload_database_besload_notetags_besend#--------------------------------------------------------------------------# new method: load_notetags_bes#--------------------------------------------------------------------------def self.load_notetags_besgroups = [$data_skills, $data_items, $data_weapons, $data_enemies]groups.each { |group|group.each { |obj|next if obj.nil?obj.battle_symphony_initialize}}endend # DataManager#==============================================================================# â– RPG::BaseItem#==============================================================================class RPG::BaseItem#--------------------------------------------------------------------------# * Public Instance Variables#--------------------------------------------------------------------------attr_accessor :setup_actions_listattr_accessor :whole_actions_listattr_accessor :target_actions_listattr_accessor :follow_actions_listattr_accessor :finish_actions_listattr_accessor :atk_animation_id1attr_accessor :atk_animation_id2#--------------------------------------------------------------------------# new method: battle_symphony_initialize#--------------------------------------------------------------------------def battle_symphony_initializecreate_default_animationcreate_default_symphonycreate_tags_symphonyend#--------------------------------------------------------------------------# new method: create_default_animation#--------------------------------------------------------------------------def create_default_animation@atk_animation_id1 = SYMPHONY::Visual::ENEMY_ATTACK_ANIMATION@atk_animation_id2 = 0self.note.split(/[\r\n]+/).each { |line|case linewhen REGEXP::SYMPHONY::ATK_ANI1@atk_animation_id1 = $1.to_iwhen REGEXP::SYMPHONY::ATK_ANI2@atk_animation_id2 = $1.to_iend}end#--------------------------------------------------------------------------# new method: create_default_symphony#--------------------------------------------------------------------------def create_default_symphony@setup_actions_list = []; @finish_actions_list = []@whole_actions_list = []; @target_actions_list = []@follow_actions_list = []#---if self.is_a?(RPG::Skill) and !self.physical?@setup_actions_list = SYMPHONY::DEFAULT_ACTIONS::MAGIC_SETUP@whole_actions_list = SYMPHONY::DEFAULT_ACTIONS::MAGIC_WHOLE@target_actions_list = SYMPHONY::DEFAULT_ACTIONS::MAGIC_TARGET@follow_actions_list = SYMPHONY::DEFAULT_ACTIONS::MAGIC_FOLLOW@finish_actions_list = SYMPHONY::DEFAULT_ACTIONS::MAGIC_FINISHreturnelsif self.is_a?(RPG::Skill) and self.physical?@setup_actions_list = SYMPHONY::DEFAULT_ACTIONS::PHYSICAL_SETUP@whole_actions_list = SYMPHONY::DEFAULT_ACTIONS::PHYSICAL_WHOLE@target_actions_list = SYMPHONY::DEFAULT_ACTIONS::PHYSICAL_TARGET@follow_actions_list = SYMPHONY::DEFAULT_ACTIONS::PHYSICAL_FOLLOW@finish_actions_list = SYMPHONY::DEFAULT_ACTIONS::PHYSICAL_FINISHreturnelsif self.is_a?(RPG::Item)@setup_actions_list = SYMPHONY::DEFAULT_ACTIONS::ITEM_SETUP@whole_actions_list = SYMPHONY::DEFAULT_ACTIONS::ITEM_WHOLE@target_actions_list = SYMPHONY::DEFAULT_ACTIONS::ITEM_TARGET@follow_actions_list = SYMPHONY::DEFAULT_ACTIONS::ITEM_FOLLOW@finish_actions_list = SYMPHONY::DEFAULT_ACTIONS::ITEM_FINISHreturnendend#--------------------------------------------------------------------------# new method: create_tags_symphony#--------------------------------------------------------------------------def create_tags_symphonyself.note.split(/[\r\n]+/).each { |line|case linewhen REGEXP::SYMPHONY::SETUP_ANI_ON@symphony_tag = true@setup_actions_list = []@setup_action_flag = truewhen REGEXP::SYMPHONY::SETUP_ANI_OFF@symphony_tag = false@setup_action_flag = falsewhen REGEXP::SYMPHONY::WHOLE_ANI_ON@symphony_tag = true@whole_actions_list = []@whole_action_flag = truewhen REGEXP::SYMPHONY::WHOLE_ANI_OFF@symphony_tag = false@whole_action_flag = falsewhen REGEXP::SYMPHONY::TARGET_ANI_ON@symphony_tag = true@target_actions_list = []@target_action_flag = truewhen REGEXP::SYMPHONY::TARGET_ANI_OFF@symphony_tag = false@target_action_flag = falsewhen REGEXP::SYMPHONY::FOLLOW_ANI_ON@symphony_tag = true@follow_actions_list = []@follow_action_flag = truewhen REGEXP::SYMPHONY::FOLLOW_ANI_OFF@symphony_tag = false@follow_action_flag = falsewhen REGEXP::SYMPHONY::FINISH_ANI_ON@symphony_tag = true@finish_actions_list = []@finish_action_flag = truewhen REGEXP::SYMPHONY::FINISH_ANI_OFF@symphony_tag = false@finish_action_flag = false#---elsenext unless @symphony_tagcase linewhen REGEXP::SYMPHONY::SYMPHONY_TAG_VALUESaction = $1value = $2.scan(/[^, ]+[^,]*/i)when REGEXP::SYMPHONY::SYMPHONY_TAG_NONEaction = $1value = [nil]else; nextendarray = [action, value]if @setup_action_flag@setup_actions_list.push(array)elsif @whole_action_flag@whole_actions_list.push(array)elsif @target_action_flag@target_actions_list.push(array)elsif @follow_action_flag@follow_actions_list.push(array)elsif @finish_action_flag@finish_actions_list.push(array)endend}end#--------------------------------------------------------------------------# new method: valid_actions?#--------------------------------------------------------------------------def valid_actions?(phase)case phasewhen :setupreturn @setup_actions_list.size > 0when :wholereturn @whole_actions_list.size > 0when :targetreturn @target_actions_list.size > 0when :followreturn @follow_actions_list.size > 0when :finishreturn @finish_actions_list.size > 0endendend # RPG::BaseItem#==============================================================================# â– Direction#==============================================================================module Direction#--------------------------------------------------------------------------# self.pose#--------------------------------------------------------------------------def self.pose(direction)case directionwhen 4; return :leftwhen 6; return :rightwhen 8; return :upwhen 2; return :downwhen 7; return :leftwhen 1; return :leftwhen 9; return :rightwhen 3; return :rightendend#--------------------------------------------------------------------------# self.non8d_pose#--------------------------------------------------------------------------def self.non8d_pose(pose)case posewhen :down_l; return :leftwhen :down_r; return :rightwhen :up_l; return :leftwhen :up_r; return :rightendend#--------------------------------------------------------------------------# self.pose#--------------------------------------------------------------------------def self.direction(pose)case posewhen :left; return 4when :right; return 6when :up; return 8when :down; return 2endend#--------------------------------------------------------------------------# self.opposite#--------------------------------------------------------------------------def self.opposite(direction)case directionwhen 1; return 9when 2; return 8when 3; return 7when 4; return 6when 6; return 4when 7; return 3when 8; return 2when 9; return 1else; return directionendend#--------------------------------------------------------------------------# self.face_coordinate#--------------------------------------------------------------------------def self.face_coordinate(screen_x, screen_y, destination_x, destination_y)x1 = Integer(screen_x)x2 = Integer(destination_x)y1 = Graphics.height - Integer(screen_y)y2 = Graphics.height - Integer(destination_y)return if x1 == x2 and y1 == y2#---angle = Integer(Math.atan2((y2-y1),(x2-x1)) * 1800 / Math::PI)if (0..225) === angle or (-225..0) === angledirection = 6elsif (226..675) === angledirection = 9elsif (676..1125) === angledirection = 8elsif (1126..1575) === angledirection = 7elsif (1576..1800) === angle or (-1800..-1576) === angledirection = 4elsif (-1575..-1126) === angledirection = 1elsif (-1125..-676) === angledirection = 2elsif (-675..-226) === angledirection = 3endreturn directionendend # Direction#==============================================================================# â– Game_ActionResult#==============================================================================class Game_ActionResult#--------------------------------------------------------------------------# alias method: clear_hit_flags#--------------------------------------------------------------------------alias bes_clear_hit_flags clear_hit_flagsdef clear_hit_flagsreturn unless @calcbes_clear_hit_flags@temp_missed = @temp_evaded = @temp_critical = nilend#--------------------------------------------------------------------------# new method: clear_bes_flag#--------------------------------------------------------------------------def clear_bes_flag@perfect_hit = false@calc = false@dmg = false@effect = falseend#--------------------------------------------------------------------------# new method: clear_change_target#--------------------------------------------------------------------------def clear_change_target@check_counter = false@check_reflection = falseend#--------------------------------------------------------------------------# new method: set_perfect#--------------------------------------------------------------------------def set_perfect@perfect_hit = trueend#--------------------------------------------------------------------------# new method: set_calc#--------------------------------------------------------------------------def set_calc@calc = trueend#--------------------------------------------------------------------------# new method: set_dmg#--------------------------------------------------------------------------def set_dmg@dmg = trueend#--------------------------------------------------------------------------# new method: set_effect#--------------------------------------------------------------------------def set_effect@effect = trueend#--------------------------------------------------------------------------# new method: set_counter#--------------------------------------------------------------------------def set_counter@check_counter = trueend#--------------------------------------------------------------------------# new method: set_reflection#--------------------------------------------------------------------------def set_reflection@check_reflection = trueend#--------------------------------------------------------------------------# new method: used=#--------------------------------------------------------------------------def evaded=(flag)@evaded = @temp_evaded.nil? ? flag : @temp_evadedend#--------------------------------------------------------------------------# new method: used=#--------------------------------------------------------------------------def critical=(flag)@critical = @temp_critical.nil? ? flag : @temp_criticalend#--------------------------------------------------------------------------# new method: used=#--------------------------------------------------------------------------def misssed=(flag)@missed = @temp_missed.nil? ? flag : @temp_missedend#--------------------------------------------------------------------------# alias method: hit?#--------------------------------------------------------------------------alias bes_hit? hit?def hit?bes_hit? || (@used && @perfect_hit)end#--------------------------------------------------------------------------# new method: dmg?#--------------------------------------------------------------------------def dmg?@dmg || !SceneManager.scene_is?(Scene_Battle)end#--------------------------------------------------------------------------# new method: effect?#--------------------------------------------------------------------------def effect?@effect || !SceneManager.scene_is?(Scene_Battle)end#--------------------------------------------------------------------------# new method: has_damage?#--------------------------------------------------------------------------def has_damage?[@hp_damage, @mp_damage, @tp_damage].any? { |x| x > 0 }end#--------------------------------------------------------------------------# new method: check_counter?#--------------------------------------------------------------------------def check_counter?@check_counterend#--------------------------------------------------------------------------# new method: check_reflection?#--------------------------------------------------------------------------def check_reflection?@check_reflectionendend # Game_ActionResult#==============================================================================# â– Game_Battler#==============================================================================class Game_Battler < Game_BattlerBase#--------------------------------------------------------------------------# new method: backup_actions#--------------------------------------------------------------------------def backup_actions@backup_actions = @actions.dup if @actionsend#--------------------------------------------------------------------------# new method: restore_actions#--------------------------------------------------------------------------def restore_actions@actions = @backup_actions.dup if @backup_actions@backup_actions.clear@backup_actions = nilend#--------------------------------------------------------------------------# alias method: item_cnt#--------------------------------------------------------------------------alias bes_item_cnt item_cntdef item_cnt(user, item)return 0 unless @result.check_counter?return bes_item_cnt(user, item)end#--------------------------------------------------------------------------# alias method: item_mrf#--------------------------------------------------------------------------alias bes_item_mrf item_mrfdef item_mrf(user, item)return 0 unless @result.check_reflection?return 0 if @magic_reflectionreturn bes_item_mrf(user, item)end#--------------------------------------------------------------------------# alias method: state_resist_set#--------------------------------------------------------------------------alias bes_state_resist_set state_resist_setdef state_resist_setresult = bes_state_resist_setresult += [death_state_id] if @immortalresultend#--------------------------------------------------------------------------# alias method: execute_damage#--------------------------------------------------------------------------alias bes_execute_damage execute_damagedef execute_damage(user)return unless @result.dmg?bes_execute_damage(user)end#--------------------------------------------------------------------------# alias method: make_damage_value#--------------------------------------------------------------------------alias bes_make_damage_value make_damage_valuedef make_damage_value(user, item)return unless @result.dmg?bes_make_damage_value(user, item)end#--------------------------------------------------------------------------# alias method: item_effect_apply#--------------------------------------------------------------------------alias bes_item_effect_apply item_effect_applydef item_effect_apply(user, item, effect)return unless @result.effect?bes_item_effect_apply(user, item, effect)end#--------------------------------------------------------------------------# alias method: item_user_effect#--------------------------------------------------------------------------alias bes_item_user_effect item_user_effectdef item_user_effect(user, item)return unless @result.effect?bes_item_user_effect(user, item)end#--------------------------------------------------------------------------# alias method: make_miss_popups#--------------------------------------------------------------------------if $imported["YEA-BattleEngine"]alias bes_make_miss_popups make_miss_popupsdef make_miss_popups(user, item)@result.restore_damage unless @result.effect?bes_make_miss_popups(user, item)unless @result.effect?@result.store_damage@result.clear_damage_valuesendendend#--------------------------------------------------------------------------# new method: face_coordinate#--------------------------------------------------------------------------def face_coordinate(destination_x, destination_y)direction = Direction.face_coordinate(self.screen_x, self.screen_y, destination_x, destination_y)#direction = Direction.opposite(direction) if self.sprite.mirror@direction = directionreturn if $imported["BattleSymphony-HB"] && self.use_hb?return if SYMPHONY::Visual::DISABLE_AUTO_MOVE_POSE && self.use_custom_charset?@pose = Direction.pose(direction)end#--------------------------------------------------------------------------# new method: create_movement#--------------------------------------------------------------------------def create_movement(destination_x, destination_y, frames = 12)return if @screen_x == destination_x && @screen_y == destination_y@destination_x = destination_x@destination_y = destination_yframes = [frames, 1].max@f = frames.to_f / 2@move_x_rate = [(@screen_x - @destination_x).abs / frames, 2].max@move_y_rate = [(@screen_y - @destination_y).abs / frames, 2].maxend#--------------------------------------------------------------------------# new method: create_jump#--------------------------------------------------------------------------def create_jump(arc)@arc = arc@parabola[:x] = 0@parabola[:y0] = 0@parabola[:y1] = @destination_y - @screen_y@parabola[:h] = - (@parabola[:y0] + @arc * 5)@parabola[] = (@screen_x - @destination_x).absend#--------------------------------------------------------------------------# new method: create_icon#--------------------------------------------------------------------------def create_icon(symbol, icon_id = 0)delete_icon(symbol)#---icon = Sprite_Object.new(self.sprite.viewport)case symbolwhen :weapon1object = self.weapons[0]icon_id = object.nil? ? nil : object.icon_indexwhen :weapon2object = dual_wield? ? self.weapons[1] : nilicon_id = object.nil? ? nil : object.icon_indexwhen :shieldobject = dual_wield? ? nil : self.equips[1]icon_id = object.nil? ? nil : object.icon_indexwhen :itemobject = self.current_action.itemicon_id = object.nil? ? nil : object.icon_indexelse; endreturn if icon_id.nil? || icon_id <= 0icon.set_icon(icon_id)icon.set_battler(self)#---@icons[symbol] = iconend#--------------------------------------------------------------------------# new method: delete_icon#--------------------------------------------------------------------------def delete_icon(symbol)return unless @icons[symbol]@icons[symbol].dispose@icons.delete(symbol)end#--------------------------------------------------------------------------# new method: clear_icons#--------------------------------------------------------------------------def clear_icons@icons.each { |key, value|value.dispose@icons.delete(key)}end#--------------------------------------------------------------------------# new method: update_movement#--------------------------------------------------------------------------def update_movementreturn unless self.is_moving?@move_x_rate = 0 if @screen_x == @destination_x || @move_x_rate.nil?@move_y_rate = 0 if @screen_y == @destination_y || @move_y_rate.nil?value = [(@screen_x - @destination_x).abs, @move_x_rate].min@screen_x += (@destination_x > @screen_x) ? value : -valuevalue = [(@screen_y - @destination_y).abs, @move_y_rate].min@screen_y += (@destination_y > @screen_y) ? value : -valueend#--------------------------------------------------------------------------# new method: update_jump#--------------------------------------------------------------------------def update_jumpreturn unless self.is_moving?#---value = [(@screen_x - @destination_x).abs, @move_x_rate].min@screen_x += (@destination_x > @screen_x) ? value : -value@parabola[:x] += value@screen_y -= @arc_y#---if @destination_x == @screen_x@screen_y = @destination_y@arc_y = 0@arc = 0elsea = (2.0*(@parabola[:y0]+@parabola[:y1])-4*@parabola[:h])/(@parabola[]**2)b = (@parabola[:y1]-@parabola[:y0]-a*(@parabola[]**2))/@parabola[]@arc_y = a * @parabola[:x] * @parabola[:x] + b * @parabola[:x] + @parabola[:y0]end#---@screen_y += @arc_y@move_x_rate = 0 if @screen_x == @destination_x@move_y_rate = 0 if @screen_y == @destination_yend#--------------------------------------------------------------------------# new method: update_icons#--------------------------------------------------------------------------def update_icons@icons ||= {}@icons.each_value { |value| value.update }end#--------------------------------------------------------------------------# new method: update_visual#--------------------------------------------------------------------------def update_visualreturn unless SceneManager.scene_is?(Scene_Battle)return unless SceneManager.scene.spritesetcorrect_origin_position#---@arc == 0 ? update_movement : update_jumpupdate_iconsend#--------------------------------------------------------------------------# new method: is_moving?#--------------------------------------------------------------------------def is_moving?[@move_x_rate, @move_y_rate].any? { |x| x != 0 }end#--------------------------------------------------------------------------# new method: is_moving?#--------------------------------------------------------------------------def dual_attack?self.actor? && self.current_action.attack? && self.dual_wield? && self.weapons.size > 1endend # Game_Battler#==============================================================================# â– Sprite_Battler#==============================================================================class Sprite_Battler < Sprite_Base#--------------------------------------------------------------------------# new method: is_moving?#--------------------------------------------------------------------------def is_moving?return unless @battler@battler.is_moving?endend # Sprite_Battler#==============================================================================# â– Spriteset_Battle#==============================================================================class Spriteset_Battle#--------------------------------------------------------------------------# new method: is_moving?#--------------------------------------------------------------------------def is_moving?self.battler_sprites.any? { |sprite| sprite.is_moving? }endend # Spriteset_Battle#==============================================================================# â– Window_BattleLog#==============================================================================class Window_BattleLog < Window_Selectableend # Window_BattleLog#==============================================================================# â– Scene_Battle#==============================================================================class Scene_Battle < Scene_Base#--------------------------------------------------------------------------# overwrite method: use_item#--------------------------------------------------------------------------def use_item@scene_item = item = @subject.current_action.itemtargets = @subject.current_action.make_targets.compact#---attack = @subject.current_action.attack?weapon = @subject.weapons[0]w_action = attack && weapon#---targets = targets * 2 if attack && @subject.dual_attack?#--- Setup Actions ---actions_list = item.setup_actions_listactions_list = weapon.setup_actions_list if w_action && weapon.valid_actions?(:setup)perform_actions_list(actions_list, targets)#--- Item Costs ---@subject.use_item(item)refresh_status#--- YEA - Cast Animationprocess_casting_animation if $imported["YEA-CastAnimations"]#--- YEA - Lunatic Objectif $imported["YEA-LunaticObjects"]lunatic_object_effect(:before, item, @subject, @subject)end#--- Whole Actions ---actions_list = item.whole_actions_listactions_list = weapon.whole_actions_list if w_action && weapon.valid_actions?(:whole)perform_actions_list(actions_list, targets)#--- Target Actions ---actions_list = item.target_actions_listactions_list = weapon.target_actions_list if w_action && weapon.valid_actions?(:target)targets.each { |target|next if target.dead?perform_actions_list(actions_list, [target])}#--- Follow Actions ---actions_list = item.follow_actions_listactions_list = weapon.follow_actions_list if w_action && weapon.valid_actions?(:follow)perform_actions_list(actions_list, targets)#--- Finish Actions ---actions_list = item.finish_actions_listactions_list = weapon.finish_actions_list if w_action && weapon.valid_actions?(:finish)immortal_flag = ["IMMORTAL", ["TARGETS", "FALSE"]]if !actions_list.include?(immortal_flag)if SYMPHONY::Fixes::AUTO_IMMORTAL_OFFactions_list = [immortal_flag] + actions_listendendperform_actions_list(actions_list, targets)#--- YEA - Lunatic Objectif $imported["YEA-LunaticObjects"]lunatic_object_effect(:after, item, @subject, @subject)endtargets.each { |target|next unless target.actor?@status_window.draw_item(target.index)}end#--------------------------------------------------------------------------# alias method: invoke_item#--------------------------------------------------------------------------alias bes_invoke_item invoke_itemdef invoke_item(target, item)if $imported["YEA-TargetManager"]target = alive_random_target(target, item) if item.for_random?endbes_invoke_item(target, item)#--- Critical Actions ---actions_list = SYMPHONY::DEFAULT_ACTIONS::CRITICAL_ACTIONSperform_actions_list(actions_list, [target]) if target.result.critical#--- Miss Actions ---actions_list = SYMPHONY::DEFAULT_ACTIONS::MISS_ACTIONSperform_actions_list(actions_list, [target]) if target.result.missed#--- Evade Actions ---actions_list = SYMPHONY::DEFAULT_ACTIONS::EVADE_ACTIONSperform_actions_list(actions_list, [target]) if target.result.evaded#--- Fail Actions ---actions_list = SYMPHONY::DEFAULT_ACTIONS::FAIL_ACTIONSperform_actions_list(actions_list, [target]) if !target.result.success#--- Damaged Actionsactions_list = SYMPHONY::DEFAULT_ACTIONS::DAMAGED_ACTIONperform_actions_list(actions_list, [target]) if target.result.has_damage?end#--------------------------------------------------------------------------# alias method: execute_action#--------------------------------------------------------------------------alias bes_execute_action execute_actiondef execute_actionbes_execute_action#--- Reset Flags ---($game_party.battle_members + $game_troop.members).each { |battler|battler.result.set_calc; battler.result.clearbattler.clear_iconsbattler.set_default_positionbattler.break_pose}$game_troop.screen.clear_bes_ve if $imported["BattleSymphony-VisualEffect"]@status_window.draw_item(@status_window.index)end#--------------------------------------------------------------------------# overwrite method: invoke_counter_attack#--------------------------------------------------------------------------def invoke_counter_attack(target, item)@log_window.display_counter(target, item)last_subject = @subject@counter_subject = target@subject = target#---@subject.backup_actions#---@subject.make_actions@subject.current_action.set_attack#---actions_list = SYMPHONY::DEFAULT_ACTIONS::COUNTER_ACTIONperform_actions_list(actions_list, [last_subject])#---@subject.clear_actions@subject = last_subject#---@counter_subject.restore_actions#---@counter_subject = nil@log_window.display_action_results(@subject, item)refresh_statusperform_collapse_check(@subject)perform_collapse_check(target)end#--------------------------------------------------------------------------# overwrite method: invoke_magic_reflection#--------------------------------------------------------------------------def invoke_magic_reflection(target, item)@subject.magic_reflection = true@log_window.display_reflection(target, item)last_subject = @subject@reflect_subject = target@subject = target#---@subject.backup_actions#---@subject.make_actionsif item.is_a?(RPG::Skill); @subject.current_action.set_skill(item.id)else; @subject.current_action.set_item(item.id); end#---actions_list = SYMPHONY::DEFAULT_ACTIONS::REFLECT_ACTIONperform_actions_list(actions_list, [last_subject])#---@subject.clear_actions@subject = last_subject#---@reflect_subject.restore_actions#---@reflect_subject = nil@log_window.display_action_results(@subject, item)refresh_statusperform_collapse_check(@subject)perform_collapse_check(target)@subject.magic_reflection = falseend#--------------------------------------------------------------------------# alias method: apply_substitute#--------------------------------------------------------------------------alias bes_apply_substitute apply_substitutedef apply_substitute(target, item)substitute = bes_apply_substitute(target, item)if target != substitute@substitute_subject = substituteendreturn substituteend#--------------------------------------------------------------------------# new method: wait_for_move#--------------------------------------------------------------------------def wait_for_moveupdate_for_waitupdate_for_wait while @spriteset.is_moving?end#--------------------------------------------------------------------------# new method: spriteset#--------------------------------------------------------------------------def spriteset@spritesetend#--------------------------------------------------------------------------# compatible overwrite method: separate_ani?#--------------------------------------------------------------------------if $imported["YEA-BattleEngine"]def separate_ani?(target, item)return falseendend;> Share this post Link to post Share on other sites
Vlue 271 Posted June 3, 2014 Using just Battle Symphony and Pet Summons, I have none of the errors or graphical problems you are having. It could be another script causing problems then, also make sure that Pets and Summons is below Battle Symphony. Share this post Link to post Share on other sites
cazziuz 9 Posted June 3, 2014 (edited) Thanks for taking a look , i also have nothing but the two scripts , and the pet script is below the combat engine. so i have no ideal as to what the issue may be , but if it willhelp here are some screens : actor there while attackingbeing attacked after summondog attakingcombat starts first glimps of nothing there dogs character graphicsonly those two scriptsmain actor with summon skillVictory image posting as you can see in the images the actor images are not there in combat unless they are attacking ? and for me this only happnes when i have this script in the game , if i take it out then the battle engine works fine,but if i take it out i wont be able make my game hte way i want,lol , perhaps you can suggest a visual combat system that works better with your script? also the error i screen shotted earlier was from you script compilation , all i did was change the pet script that was in there , for the new one. again sorry for all the questions , and thank you for your time and help in this . -Cazziuz Edited June 3, 2014 by cazziuz Share this post Link to post Share on other sites
koshinto 0 Posted June 6, 2014 I'm also trying to get this to work using the Symphony Battle System, if its not too much trouble, could we get a list of compatible battle systems that this will work for? Respectfully, Koshinto Share this post Link to post Share on other sites
Vlue 271 Posted June 6, 2014 Using just Symphony and Pets, it works just fine for me. I'd need to know what other scripts you are using that's interfering. Add-ons for symphony maybe, etc. Share this post Link to post Share on other sites
koshinto 0 Posted June 6, 2014 Using just Symphony and Pets, it works just fine for me. I'd need to know what other scripts you are using that's interfering. Add-ons for symphony maybe, etc. Right now I'm just using the Symphony Battle System and your Summons and Pets script. Opened up a new project to start from scratch and try it out, so there are no other addons. Not even for Symphony, the only two things I added was the battle system (with no addons) and the pet summon. It could just be though, I'm really new to all of this. I created my new skill: Summoning, added it to the character and tagged it <SUMMON 2, 0, 1> My main character Eric is invisible, but when I use the skill he reappears while the animation goes off, but then nothing else happens. I'll tinker around some more as I'm sure its something I'm doing wrong. It hasn't crashed on me yet, just invisible character with no actor being summoned when the skill goes off. Thanks for the reply. Respectfully, Koshinto Share this post Link to post Share on other sites
Vlue 271 Posted June 6, 2014 No, I found it. (Finally) There's a compatibility version of this script linked now in the OP up there, use that version instead to fix invisible sprites. Share this post Link to post Share on other sites
koshinto 0 Posted June 6, 2014 No, I found it. (Finally) There's a compatibility version of this script linked now in the OP up there, use that version instead to fix invisible sprites. Awesome! Thanks, I'll try it out right now. Thanks for the hasty reply, hope I didn't take up too much of your time. Respectfully, Koshinto Share this post Link to post Share on other sites
koshinto 0 Posted June 6, 2014 Got it to work Thanks for all of your help! Respectfully, Koshinto Share this post Link to post Share on other sites
THEAQIB 59 Posted June 7, 2014 Been searching fr a summon script.. Thank you Vlue.. Will test out soon.. Share this post Link to post Share on other sites
Argotz 3 Posted June 7, 2014 (edited) First,this is a sweet script. Secondly, is there a way to set where the summoned pet goes? As it is its summoned right beside the actor who summoned it. I saw while I was reading the thread that someone had asked something about it ,but i didn't see a response? Edited June 7, 2014 by Argotz 1 Share this post Link to post Share on other sites
koshinto 0 Posted June 7, 2014 First,this is a sweet script. Secondly, is there a way to set where the summoned pet goes? As it is its summoned right beside the actor who summoned it. I saw while I was reading the thread that someone had asked something about it ,but i didn't see a response? Yeah, ran into another issue, I'm tinkering with the script to see if I can't fix it. I'll list the issues below. 1. When summoning, I get duplicates of my party. Example. Eric summons Natasia, for a few seconds, I'll see 2 Erics and 2 Natasia. The duplicated pair will disappear after a few seconds and I'm able to continue the fight just fine. 2. The summoned actor will move and attack when Eric (the main character) moves or attacks. Example. Eric attacks and Natasia moves along with him (stuck at the hip style) She doesn't attack, but is more or less dragged along while Eric attacks. If Eric gets hit and takes damage, the summoned actor will have the "taken damage" animation, even the attack was a single target hit to Eric. Anyone run into the same problems? Respectfully, Koshinto Share this post Link to post Share on other sites
Thereisnoname 4 Posted June 7, 2014 (edited) Yes I did but my game does freeze completly^^ I am using VE Animated Battle (I am trying out a few things and yeah^^ Screw up as much as possible ) Doesn´t really matter what who or with which party I summon something it will stick the last actor (If I only have one it will stick to him and there would be two from them... but the game does freeze with a 100% Chance with my current settings... well maybe I screwed smth up like I seem to do with the Loop Animation but I don`t think so... I assigned a charset and stuff so yeah..^^) The summoning time doesn`t matter as well how it seems^^ And I tried both scripts as well and it`s located below Animated Battle and no change at all^^ Nah it just doesn`t work completly... doesn´t matter which one... If you summon something it crashes but if you have it in your script list (doesn`t matter were) the character will face "downside"(hope that`s the right word... uh he will look "south" down smth like that) after the second round^^ Edited June 7, 2014 by Thereisnoname Share this post Link to post Share on other sites