1553 lines
63 KiB
JavaScript
1553 lines
63 KiB
JavaScript
//=============================================================================
|
||
// Yanfly Engine Plugins - Battle Engine Extension - Action Sequence Pack 1
|
||
// YEP_X_ActSeqPack1.js
|
||
//=============================================================================
|
||
|
||
var Imported = Imported || {};
|
||
Imported.YEP_X_ActSeqPack1 = true;
|
||
|
||
var Yanfly = Yanfly || {};
|
||
Yanfly.ASP1 = Yanfly.ASP1 || {};
|
||
Yanfly.ASP1.version = 1.13;
|
||
|
||
//=============================================================================
|
||
/*:
|
||
* @plugindesc v1.13 (Requires YEP_BattleEngineCore.js) Basic functions are
|
||
* added to the Battle Engine Core's action sequences.
|
||
* @author Yanfly Engine Plugins
|
||
*
|
||
* @param Default Volume
|
||
* @desc This will be the volume of the BGM played.
|
||
* @type number
|
||
* @min 0
|
||
* @max 100
|
||
* @default 90
|
||
*
|
||
* @param Default Pitch
|
||
* @type number
|
||
* @min 0
|
||
* @max 100
|
||
* @desc This will be the pitch of the BGM played.
|
||
* @default 100
|
||
*
|
||
* @param Default Pan
|
||
* @type number
|
||
* @min 0
|
||
* @max 100
|
||
* @desc This will be the pan of the BGM played.
|
||
* @default 0
|
||
*
|
||
* @help
|
||
* ============================================================================
|
||
* Introduction
|
||
* ============================================================================
|
||
*
|
||
* The Action Sequence Pack 1 plugin is an extension plugin for Yanfly Engine
|
||
* Plugins' Battle Engine Core. This extension plugin will not work without the
|
||
* main plugin.
|
||
*
|
||
* This extension plugin contains the more basic functions used for customized
|
||
* action sequences on a technical scale. Here, you are able to change switches,
|
||
* operate variables, add states, change damage rates, and more.
|
||
*
|
||
* ============================================================================
|
||
* Action Sequences - ala Melody
|
||
* ============================================================================
|
||
*
|
||
* Battle Engine Core includes Yanfly Engine Melody's Battle Engine system,
|
||
* where each individual aspect of the skill and item effects can be controlled
|
||
* to a degree. These are called Action Sequences, where each command in the
|
||
* action sequence causes the game to perform a distinct individual action.
|
||
*
|
||
* Each skill and item consists of five different action sequences. They are as
|
||
* follows:
|
||
*
|
||
* 1. Setup Actions
|
||
* They prepare the active battler before carrying out the bulk of the action
|
||
* and its individual effects. Usually what you see here are things such as the
|
||
* active battler moving forward a bit, unsheathing their weapon, etc. This step
|
||
* will occur before the active battler expends their skill or item costs.
|
||
*
|
||
* 2. Whole Actions
|
||
* These actions will affect all of the targets simultaneously. Although this
|
||
* section does not need to be used, most actions will use this for displaying
|
||
* animations upon all enemies. This step occurs after skill and item costs.
|
||
*
|
||
* 3. Target Actions
|
||
* This section will affect all of the targets individually. Used primarily
|
||
* for physical attacks that will deliver more personal forms of damage. Actions
|
||
* that occur here will not affect other targets unless specifically ordered to
|
||
* do so otherwise.
|
||
*
|
||
* 4. Follow Actions
|
||
* This section will dedicate towards cleanup work after the individual
|
||
* targeting actions. Here, it'll do things such as removing immortal flags,
|
||
* start up common events, and more.
|
||
*
|
||
* 5. Finish Actions
|
||
* This section will have the active battler close up the action sequence.
|
||
* Usually stuff like running waits and holds at the last minute for skills and
|
||
* items, moving back to place, and others.
|
||
*
|
||
* Now that you know each of the five steps each action sequence goes through,
|
||
* here's the tags you can insert inside of skills and items. Pay attention to
|
||
* each tag name.
|
||
*
|
||
* 1. <setup action> 5. <finish action>
|
||
* action list action list
|
||
* action list action list
|
||
* </setup action> </finish action>
|
||
*
|
||
* 2. <whole action> 3. <target action> 4. <follow action>
|
||
* action list action list action list
|
||
* action list action list action list
|
||
* </whole action> </target action> </follow action>
|
||
*
|
||
* They will do their own respective action sets. The methods to insert for the
|
||
* action list can be found below in the core of the Help Manual.
|
||
*
|
||
* Furthermore, to prevent overflooding every single one of your database item's
|
||
* noteboxes with action sequence lists, there's a shortcut you can take to copy
|
||
* all of the setup actions, whole actions, target actions, follow actions, and
|
||
* finish actions with just one line.
|
||
*
|
||
* <action copy: x:y>
|
||
*
|
||
* Replace x with "item" or "skill" to set the type for the action list code to
|
||
* directly copy. The integer y is then the ID assigned for that particular
|
||
* object type. For example, to copy 45th skill's action sequences, the code
|
||
* would be <action copy: skill:45> for anything that will accept these action
|
||
* codes. If you do use this notetag, it will take priority over any custom
|
||
* that you've placed in the notebox.
|
||
*
|
||
* ============================================================================
|
||
* Target Typing
|
||
* ============================================================================
|
||
*
|
||
* You may notice that in some of the actions below will say "refer to target
|
||
* typing" which is this section right here. Here's a quick run down on the
|
||
* various targets you may select.
|
||
*
|
||
* user; This will select the active battler.
|
||
* target, targets; These will select the active targets in question.
|
||
* actors, existing actors; These will select all living actors.
|
||
* all actors; This will select all actors including dead ones.
|
||
* dead actors: This will select only dead actors.
|
||
* actors not user; This will select all living actors except for the user.
|
||
* actor x; This will select the actor in slot x.
|
||
* character x; This will select the specific character with actor ID x.
|
||
* enemies, existing enemies; This will select all living enemies.
|
||
* all enemies; This will select all enemies, even dead.
|
||
* dead enemies: This will select only dead enemies.
|
||
* enemies not user; This will select all enemies except for the user.
|
||
* enemy x; This will select the enemy in slot x.
|
||
* friends; This will select the battler's alive allies.
|
||
* all friends; This will select the all of battler's allies, even dead.
|
||
* dead friends; This will select the battler's dead allies.
|
||
* friends not user; This will select the battler's allies except itself.
|
||
* friend x: This will select the battler's ally in slot x.
|
||
* opponents; This will select the battler's alive opponents.
|
||
* all opponents; This will select the all of the battler's opponents.
|
||
* dead opponents; This will select the battler's dead opponents.
|
||
* opponent x: This will select the battler's opponent in slot x.
|
||
* all alive; Selects all living actors and enemies.
|
||
* all members; Selects all living and dead actors and enemies.
|
||
* all dead; Selects all dead actors and enemies.
|
||
* all not user; This will select all living battlers except user.
|
||
* focus; Selects the active battler and its targets.
|
||
* not focus; Selects everything but the active battler and its targets.
|
||
*
|
||
* ============================================================================
|
||
* Action Sequences - Action List
|
||
* ============================================================================
|
||
*
|
||
* The following contains a list of the actions you can use inside the five
|
||
* action sequences. Each action has a unique function and requires certain
|
||
* formats to operate properly.
|
||
*
|
||
*=============================================================================
|
||
* ACTION ANIMATION: (target), (mirror)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Plays the animation assigned to the skill/item. The animation will
|
||
* automatically select the skill's/item's assigned targets. If 'target' is
|
||
* used, it will specify a target to play the animation on. If 'mirror' is
|
||
* used, it will mirror the animation.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: action animation
|
||
* action animation: target
|
||
* action animation: user, mirror
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* ACTION COMMON EVENT
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Plays the common event found within the skill's/item's traits list. This
|
||
* will only play the last common event on the list, following the game
|
||
* engine's original process. Nothing else will continue on the action list
|
||
* until the common event is finished (unless it is a forced action, in which
|
||
* case, it will wait until the action is complete first).
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: action common event
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* ACTION EFFECT: target
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Causes the target(s) to take damage/healing from the skill/item and
|
||
* incurs any changes made to the target(s) such as buffs and states.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: action effect
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* ADD stat BUFF: target, (turns), (show)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Affects the target with 'stat' buff. Replace 'stat' with 'hp', 'mp', 'atk',
|
||
* 'def', 'mat', 'mdf', 'agi', or 'luk'. If you include a number after the
|
||
* target, it will buff the target by that many turns. Include 'show' and it
|
||
* will show the target getting the buff applied in the battle log.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: add atk buff: user, 3, show
|
||
* add def buff: target, 8
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* ADD stat DEBUFF: target, (turns), (show)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Affects the target with 'stat' debuff. Replace 'stat' with 'hp', 'mp',
|
||
* 'atk', 'def', 'mat', 'mdf', 'agi', or 'luk'. If you include a number after
|
||
* the target, it will debuff the target by that many turns. Include 'show' and
|
||
* it will show the target getting the debuff applied in the battle log.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: add atk debuff: user, 3, show
|
||
* add def debuff: target, 8
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* ADD STATE X: target, (show)
|
||
* ADD STATE X, Y, Z: target (show)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Affects the target with X state (including Y and Z if used in that format).
|
||
* If 'show' is included, it will display any state related messages.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: add state 5: target
|
||
* add state 6, 7, 8: user, show
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* ANIMATION X: target, (mirror)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Plays animation X on target. 'Mirror' will cause the animation to appear
|
||
* mirrored. Keep in mind that animations played on actors will automatically
|
||
* be mirrored and setting the mirror option will reverse it and have it appear
|
||
* unmirrored.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: animation 5: user
|
||
* animation 6: target, mirror
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* ANIMATION WAIT: X
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Waits x animaiton frames. Each frame for an animation does not last one game
|
||
* frame, but instead, several. To make life easier, you can use this to have
|
||
* the game wait x frames played for the animation.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: animation 5: user
|
||
* animation 6: target, mirror
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* BGM: STOP
|
||
* BGM: MEMORIZE
|
||
* BGM: MEMORY
|
||
* BGM: filename, (volume), (pitch), (pan)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Changes the current background music at hand. 'Stop' will stop any BGM from
|
||
* playing. 'Memorize' will memorize the current BGM. 'Memory' will replay the
|
||
* memorized BGM if there is one playing. If you choose a filename (without the
|
||
* filename extensions), the game will play that BGM instead. Using this
|
||
* option opens up access to the volume, pitch, and pan control, all of which
|
||
* are optional to use. If no values are inputed for volume, pitch, and pan,
|
||
* the game will use the settings in this plugin's parameters.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: bgm: stop
|
||
* bgm: memorize
|
||
* bgm: memory
|
||
* bgm: Battle7
|
||
* bgm: Theme2, 80, 100, 0
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* BGS: STOP
|
||
* BGS: MEMORIZE
|
||
* BGS: MEMORY
|
||
* BGS: filename, (volume), (pitch), (pan)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Changes the current background sound at hand. 'Stop' will stop any BGS from
|
||
* playing. 'Memorize' will memorize the current BGS. 'Memory' will replay the
|
||
* memorized BGS if there is one playing. If you choose a filename (without the
|
||
* filename extensions), the game will play that BGS instead. Using this
|
||
* option opens up access to the volume, pitch, and pan control, all of which
|
||
* are optional to use. If no values are inputed for volume, pitch, and pan,
|
||
* the game will use the settings in this plugin's parameters.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: bgs: stop
|
||
* bgs: memorize
|
||
* bgs: memory
|
||
* bgs: City
|
||
* bgs: Darkness, 80, 100, 0
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* BREAK ACTION
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* This will force the remainder of the action sequences for the part of the
|
||
* skill/item to shut down and be skipped.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: break action
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* CAST ANIMATION
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Plays an animation on the skill's user. Will not occur if the action is
|
||
* an item or the user's default normal attack.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: cast animation
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* CLEAR BATTLE LOG
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Clears all the messages at the top of the screen.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: clear battle log
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* CHANGE SWITCH X: on/off/toggle/switch z
|
||
* CHANGE SWITCH X..Y: on/off/toggle/switch z
|
||
* CHANGE SWITCH X TO Y: on/off/toggle/switch z
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Changes Game Switch X to on, off, toggle (switching between on/off), or
|
||
* to whatever value the switch y is.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: change switch 1: on
|
||
* change switch 2..4: off
|
||
* change switch 5 to 8: toggle
|
||
* change switch 9: switch 5
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* CHANGE VARIABLE X = Y
|
||
* CHANGE VARIABLE X += Y
|
||
* CHANGE VARIABLE X -= Y
|
||
* CHANGE VARIABLE X *= Y
|
||
* CHANGE VARIABLE X /= Y
|
||
* CHANGE VARIABLE X %= Y
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Changes variable X in the middle of the action sequence to be modified
|
||
* by value Y. Y can be either an integer or a piece of code.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: change variable 1 = 2
|
||
* change variable 3 += 4
|
||
* change variable 5 -= 6
|
||
* change variable 7 *= 8
|
||
* change variable 9 /= 10
|
||
* change variable 11 %= 12
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* COLLAPSE: target, (force)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* If the target is to be dead at this point, this will be the point in the
|
||
* action sequence where you can promt the game to kill the target as long
|
||
* as the target has 0 HP. If you want to force the death of the target,
|
||
* include the 'force' command after the targets.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: collapse: user
|
||
* collapse: target, force
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* COMMON EVENT: X
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Plays common event X at that point in the action sequence. Nothing else
|
||
* will continue until the common event is finished (unless it is a forced
|
||
* action, in which case, it will wait until the action is complete first).
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: common event: 1
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* DEATH BREAK
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* If a user were to die for any reason during the middle of the skill
|
||
* (either via counter attack or reflection), this will force the remainder
|
||
* of the action sequences for the part of the skill/item to shut down and
|
||
* be skipped.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: death break
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* DISPLAY ACTION
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Displays the action's name at the top of the battle log. It will remain
|
||
* there until the battle log is cleared.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: display action
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* EVAL: code
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* For those who'd like to do something that the current Battle Engine doesn't
|
||
* support, you can use an eval function to have a piece of code occur. Users
|
||
* beware, for those unfamiliar with JavaScript should avoid handling this
|
||
* action sequence command.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: eval: $gameParty.loseItem($dataItems[3], 10)
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* GAIN ITEM X: Y LOSE ITEM X: Y
|
||
* GAIN WEAPON X: Y LOSE WEAPON X: Y
|
||
* GAIN ARMOR X: Y LOSE ARMOR X: Y
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Your party will gain/lose item x, weapon x, or armor x in the amount of
|
||
* y. If you choose to omit y, it will default to 1.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: gain item 1: 20
|
||
* lose weapon 2
|
||
* gain armor 3: 50
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* GOLD +x
|
||
* GOLD -x
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Your party will gain/lose gold in the middle of battle by x amount.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: gold +2000
|
||
* gold -500
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* IF ... ELSE STATEMENTS
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* For those familiar with programming, you can use if...else statements to
|
||
* perform different actions based on different conditions. Use 'if' to
|
||
* specify a block of code to be executed, if a specified condition is true.
|
||
* Use 'else' to specify a block of code to be executed, if the same
|
||
* condition is false. Use 'else if' to specify a new condition to test, if
|
||
* the first condition is false. Use 'end' to specify where the conditions
|
||
* are to end.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example:
|
||
* if $gameSwitches.value(1)
|
||
* action effect
|
||
* else if $gameSwitches.value(2)
|
||
* action effect
|
||
* action effect
|
||
* else
|
||
* action effect
|
||
* action effect
|
||
* action effect
|
||
* end
|
||
*
|
||
* *Note: You do not have to indent the code in between to work. It just
|
||
* looks better that way in your action sequences.
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* IMMORTAL: targets, true/false
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Sets the targets to a state of immortality so that they don't die in the
|
||
* middle of an attack. This is to ensure every action effect goes through.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: immortal: targets true
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* HP +X: target, (show)
|
||
* HP -X: target, (show)
|
||
* HP +X%: target, (show)
|
||
* HP -X%: target, (show)
|
||
* HP +VARIABLE X: target, (show)
|
||
* HP -VARIABLE X: target, (show)
|
||
* HP +VARIABLE X%: target, (show)
|
||
* HP -VARIABLE X%: target, (show)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Target(s) gains HP equal to X values. To show the popup, insert 'show'
|
||
* after the target in the action sequence line. Including 'show' is
|
||
* entirely optional. If 'show' is omitted, no popup will be displayed.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: hp +500: user
|
||
* hp -variable 5: target
|
||
* hp +25%: target
|
||
* hp -variable 7: user
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* ME: STOP
|
||
* ME: filename, (volume), (pitch), (pan)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Causes the battle to play a music fanfare. 'Stop' will stop any ME from
|
||
* playing. If you choose a filename (without the filename extensions), the
|
||
* game will play that ME instead. Using this option opens up access to the
|
||
* volume, pitch, and pan control, all of which are optional to use. If no
|
||
* values are inputed for volume, pitch, and pan, the game will use the
|
||
* settings in this plugin's parameters.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: me: stop
|
||
* me: Victory1
|
||
* me: Darkness, 80, 100, 0
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* MOTION WAIT: target
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Makes the game wait 12 frames if the target(s) performing the action is an
|
||
* actor. If the target(s) is not an actor, no waiting will be done.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: motion wait: user
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* MP +X: target, (show)
|
||
* MP -X: target, (show)
|
||
* MP +X%: target, (show)
|
||
* MP -X%: target, (show)
|
||
* MP +VARIABLE X: target, (show)
|
||
* MP -VARIABLE X: target, (show)
|
||
* MP +VARIABLE X%: target, (show)
|
||
* MP -VARIABLE X%: target, (show)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Target(s) gains MP equal to X values. To show the popup, insert 'show'
|
||
* after the target in the action sequence line. Including 'show' is
|
||
* entirely optional. If 'show' is omitted, no popup will be displayed.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: mp +500: user
|
||
* mp -variable 5: target
|
||
* mp +25%: target
|
||
* mp -variable 7: user
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* PERFORM ACTION
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Causes actors to step forward and swing their weapon, thrust it, however
|
||
* the motion that is determined will be automatically done by the game.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: perform action
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* PERFORM FINISH
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Causes actor to move back to its home spot.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: perform finish
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* PERFORM START
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Causes actor to move forward from its home spot.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: perform start
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* REFRESH STATUS
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Refreshes the status window in the middle of an action sequence.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: refresh status
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* REMOVE stat BUFF: target, (show)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Removes the 'stat' buff from target. Replace 'stat' with 'hp', 'mp', 'atk',
|
||
* 'def', 'mat', 'mdf', 'agi', or 'luk'. Include 'show' and it will show the
|
||
* target getting the buff removed in the battle log.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: remove atk buff: user, show
|
||
* remove def buff: target
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* REMOVE stat DEBUFF: target, (show)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Removes the 'stat' debuff from target. Replace 'stat' with 'hp', 'mp',
|
||
* 'atk', 'def', 'mat', 'mdf', 'agi', or 'luk'. Include 'show' and it will
|
||
* show the target getting the debuff removed in the battle log.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: remove atk debuff: user, show
|
||
* remove def debuff: target
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* REMOVE STATE X: target (show)
|
||
* REMOVE STATE X, Y, Z: target (show)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Removes X state (including Y and Z if used in that format) from target.
|
||
* If 'show' is included, it will display any state related messages.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: remove state 5: target
|
||
* remove state 6, 7, 8: user, show
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* SE: filename, (volume), (pitch), (pan)
|
||
* SE: PLAY OK
|
||
* SE: PLAY CURSOR
|
||
* SE: PLAY CANCEL
|
||
* SE: PLAY BUZZER
|
||
* SE: PLAY EQUIP
|
||
* SE: PLAY SAVE
|
||
* SE: PLAY LOAD
|
||
* SE: PLAY BATTLE START
|
||
* SE: PLAY ESCAPE
|
||
* SE: PLAY ENEMY ATTACK
|
||
* SE: PLAY ENEMY DAMAGE
|
||
* SE: PLAY ENEMY COLLAPSE
|
||
* SE: PLAY BOSS COLLAPSE 1
|
||
* SE: PLAY BOSS COLLAPSE 2
|
||
* SE: PLAY ACTOR DAMAGE
|
||
* SE: PLAY ACTOR COLLAPSE
|
||
* SE: PLAY RECOVERY
|
||
* SE: PLAY MISS
|
||
* SE: PLAY EVASION
|
||
* SE: PLAY MAGIC EVASION
|
||
* SE: PLAY REFLECTION
|
||
* SE: PLAY SHOP
|
||
* SE: PLAY USE ITEM
|
||
* SE: PLAY USE SKILL
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Causes the battle to play a Sound Effect. If you choose a filename (without
|
||
* the filename extensions), the game will play that ME instead. Using this
|
||
* option opens up access to the volume, pitch, and pan control, all of which
|
||
* are optional to use. If no values are inputed for volume, pitch, and pan,
|
||
* the game will use the settings in this plugin's parameters. Using the action
|
||
* sequences with 'play x' in them will cause the game to play a system sound
|
||
* set within RPG Maker's database.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: se: play enemy attack
|
||
* se: Ice1
|
||
* se: Laser2, 80, 100, 0
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* TP +X: target, (show)
|
||
* TP -X: target, (show)
|
||
* TP +X%: target, (show)
|
||
* TP -X%: target, (show)
|
||
* TP +VARIABLE X: target, (show)
|
||
* TP -VARIABLE X: target, (show)
|
||
* TP +VARIABLE X%: target, (show)
|
||
* TP -VARIABLE X%: target, (show)
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Target(s) gains TP equal to X values. To show the popup, insert 'show'
|
||
* after the target in the action sequence line. Including 'show' is
|
||
* entirely optional. If 'show' is omitted, no popup will be displayed. For
|
||
* TP to actually show popups, another plugin is needed to display TP popups.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: tp +500: user
|
||
* tp -variable 5: target
|
||
* tp +25%: target
|
||
* tp -variable 7: user
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* WAIT: frames
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Makes the game wait a certain amount of frames before going on to the
|
||
* next action in the action sequence.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: wait: 60
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* WAIT FOR ANIMATION
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Waits for all animations to finish before going on to the next action in
|
||
* the action sequence.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: wait for animation
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* WAIT FOR EFFECT
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Waits for all effects to finish playing before continuing on.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: wait for effect
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* WAIT FOR MOVEMENT
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Waits for all battler movements to finish before going on to the next
|
||
* action in the action sequence.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: wait for movement
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* WAIT FOR NEW LINE
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Waits for a new line to appear in the log window before going on to the
|
||
* next action in the action sequence.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: wait for new line
|
||
*=============================================================================
|
||
*
|
||
*=============================================================================
|
||
* WAIT FOR POPUPS
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Waits for all popups to finish playing before going on to the next action.
|
||
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
* Usage Example: wait for popups
|
||
*=============================================================================
|
||
*
|
||
* ============================================================================
|
||
* Changelog
|
||
* ============================================================================
|
||
*
|
||
* Version 1.13:
|
||
* - Bypass the isDevToolsOpen() error when bad code is inserted into a script
|
||
* call or custom Lunatic Mode code segment due to updating to MV 1.6.1.
|
||
*
|
||
* Version 1.12:
|
||
* - Updated for RPG Maker MV version 1.5.0.
|
||
*
|
||
* Version 1.11:
|
||
* - Lunatic Mode fail safes added.
|
||
*
|
||
* Version 1.10a:
|
||
* - Changed the 'Change Variable' action sequence to read more effectively.
|
||
* - Documentation update for 'Action Common Event' and 'Common Event' to
|
||
* indicate that they will not work immediately if used as a forced action
|
||
* since another event is already running.
|
||
*
|
||
* Version 1.09:
|
||
* - Fixed a bug that didn't allow for HP and MP buff/debuff removal.
|
||
*
|
||
* Version 1.08:
|
||
* - Added 'Break Action' action sequence effect to completely cancel out all
|
||
* of the remaining action effects.
|
||
*
|
||
* Version 1.07:
|
||
* - Fixed a bug with the forcing a Collapse action sequence.
|
||
*
|
||
* Version 1.06:
|
||
* - If using the Add State action sequence to add the Death state, it will
|
||
* remove immortality settings.
|
||
*
|
||
* Version 1.05:
|
||
* - Optimized status window to refresh at a minimum.
|
||
*
|
||
* Version 1.04:
|
||
* - Updated help file to include Character X for target typing.
|
||
*
|
||
* Version 1.03:
|
||
* - Fixed a bug that didn't make the sounds played work properly (again).
|
||
*
|
||
* Version 1.02:
|
||
* - Fixed a bug that didn't make the sounds played work properly.
|
||
*
|
||
* Version 1.01:
|
||
* - Fixed a small bug that didn't allow Change Variable to work properly with
|
||
* evaluated strings.
|
||
*
|
||
* Version 1.00:
|
||
* - Finished plugin!
|
||
*/
|
||
//=============================================================================
|
||
|
||
if (Imported.YEP_BattleEngineCore) {
|
||
|
||
//=============================================================================
|
||
// Parameters
|
||
//=============================================================================
|
||
|
||
Yanfly.Parameters = PluginManager.parameters('YEP_X_ActSeqPack1');
|
||
Yanfly.Param = Yanfly.Param || {};
|
||
|
||
Yanfly.Param.SoundVolume = Number(Yanfly.Parameters['Default Volume']);
|
||
Yanfly.Param.SoundPitch = Number(Yanfly.Parameters['Default Pitch']);
|
||
Yanfly.Param.SoundPan = Number(Yanfly.Parameters['Default Pan']);
|
||
|
||
//=============================================================================
|
||
// BattleManager
|
||
//=============================================================================
|
||
|
||
Yanfly.ASP1.BattleManager_processActionSequence =
|
||
BattleManager.processActionSequence;
|
||
BattleManager.processActionSequence = function (actionName, actionArgs) {
|
||
// ADD X BUFF
|
||
if (actionName.match(/ADD[ ](.*)[ ]BUFF/i)) {
|
||
return this.actionAddBuff(actionName, actionArgs);
|
||
}
|
||
// ADD X DEBUFF
|
||
if (actionName.match(/ADD[ ](.*)[ ]DEBUFF/i)) {
|
||
return this.actionAddDebuff(actionName, actionArgs);
|
||
}
|
||
// ADD STATE X
|
||
if (actionName.match(/(?:ADD_STATE|ADD STATE)[ ](\d+(?:\s*,\s*\d+)*)/i)) {
|
||
return this.actionAddState(actionName, actionArgs);
|
||
}
|
||
// ANIMATION X
|
||
if (actionName.match(/ANIMATION[ ](\d+)/i)) {
|
||
return this.actionAnimation(parseInt(RegExp.$1), actionArgs);
|
||
}
|
||
// BGM, MUSIC, SONG
|
||
if (['BGM', 'MUSIC', 'SONG'].contains(actionName)) {
|
||
return this.actionBgmPlay(actionArgs);
|
||
}
|
||
// BGS, AMBIENCE
|
||
if (['BGS', 'AMBIENCE'].contains(actionName)) {
|
||
return this.actionBgsPlay(actionArgs);
|
||
}
|
||
// BREAK ACTION
|
||
if (actionName === 'BREAK ACTION') {
|
||
return this.actionBreakAction();
|
||
}
|
||
// COLLAPSE: target, (force)
|
||
if (actionName === 'COLLAPSE') {
|
||
return this.actionCollapse(actionArgs);
|
||
}
|
||
// COMMON EVENT: event id
|
||
if (actionName === 'COMMON EVENT') {
|
||
return this.actionCommonEvent(actionArgs[0]);
|
||
}
|
||
// CHANGE SWITCH X
|
||
if (actionName.match(/CHANGE[ ]SWITCH[ ](.*)/i)) {
|
||
return this.actionChangeSwitch(actionName, actionArgs);
|
||
}
|
||
// CHANGE VARIABLE X
|
||
if (actionName.match(/CHANGE[ ]VARIABLE[ ](.*)/i)) {
|
||
return this.actionChangeVariable(actionName);
|
||
}
|
||
// EVAL, SCRIPT
|
||
if (['EVAL', 'SCRIPT'].contains(actionName)) {
|
||
return this.actionEval(actionArgs);
|
||
}
|
||
// GAIN ITEM (item, weapon, armor) X
|
||
if (actionName.match(/GAIN[ ](.*)[ ](\d+)/i) ||
|
||
actionName.match(/LOSE[ ](.*)[ ](\d+)/i)) {
|
||
return this.actionGainItem(actionName, actionArgs);
|
||
}
|
||
// GOLD +/- VALUE
|
||
if (actionName.match(/GOLD[ ]([\+\-]\d+)/i)) {
|
||
return this.actionGoldModify(parseInt(RegExp.$1));
|
||
}
|
||
// ME, FANFARE
|
||
if (['ME', 'FANFARE'].contains(actionName)) {
|
||
return this.actionMePlay(actionArgs);
|
||
}
|
||
// REFRESH STATUS, REFRESH WINDOW
|
||
if (['REFRESH STATUS', 'REFRESH WINDOW'].contains(actionName)) {
|
||
return this.actionRefreshStatus();
|
||
}
|
||
// REMOVE X BUFF
|
||
if (actionName.match(/REMOVE[ ](.*)[ ]BUFF/i)) {
|
||
return this.actionRemoveBuff(actionName, actionArgs);
|
||
}
|
||
// REMOVE X DEBUFF
|
||
if (actionName.match(/REMOVE[ ](.*)[ ]DEBUFF/i)) {
|
||
return this.actionRemoveDebuff(actionName, actionArgs);
|
||
}
|
||
// REMOVE STATE X
|
||
if
|
||
(actionName.match(/(?:REMOVE_STATE|REMOVE STATE)[ ](\d+(?:\s*,\s*\d+)*)/i)) {
|
||
return this.actionRemoveState(actionName, actionArgs);
|
||
}
|
||
// SE, SOUND, SFX
|
||
if (['SE', 'SOUND', 'SFX'].contains(actionName)) {
|
||
return this.actionSePlay(actionArgs);
|
||
}
|
||
// HP +/- VALUE
|
||
if (actionName.match(/HP[ ](.*)/i)) {
|
||
return this.actionHpModify(actionName, actionArgs);
|
||
}
|
||
// MP +/- VALUE
|
||
if (actionName.match(/MP[ ](.*)/i)) {
|
||
return this.actionMpModify(actionName, actionArgs);
|
||
}
|
||
// TP +/- VALUE
|
||
if (actionName.match(/TP[ ](.*)/i)) {
|
||
return this.actionTpModify(actionName, actionArgs);
|
||
}
|
||
return Yanfly.ASP1.BattleManager_processActionSequence.call(this,
|
||
actionName, actionArgs);
|
||
};
|
||
|
||
BattleManager.getParamId = function (stat) {
|
||
switch (stat) {
|
||
case 'HP':
|
||
case 'MAXHP':
|
||
case 'MAX HP':
|
||
return 0;
|
||
break;
|
||
case 'MP':
|
||
case 'MAXMP':
|
||
case 'MAX MP':
|
||
case 'SP':
|
||
case 'MAXSP':
|
||
case 'MAX SP':
|
||
return 1;
|
||
break;
|
||
case 'ATK':
|
||
case 'STR':
|
||
return 2;
|
||
break;
|
||
case 'DEF':
|
||
return 3;
|
||
break;
|
||
case 'MAT':
|
||
case 'INT' || 'SPI':
|
||
return 4;
|
||
break;
|
||
case 'MDF':
|
||
case 'RES':
|
||
return 5;
|
||
break;
|
||
case 'AGI':
|
||
case 'SPD':
|
||
return 6;
|
||
break;
|
||
case 'LUK':
|
||
return 7;
|
||
break;
|
||
}
|
||
return -1;
|
||
};
|
||
|
||
BattleManager.actionAddBuff = function (actionName, actionArgs) {
|
||
var targets = this.makeActionTargets(actionArgs[0]);
|
||
if (targets.length < 1) return false;
|
||
var show = false;
|
||
for (var i = 0; i < actionArgs.length; ++i) {
|
||
var actionArg = actionArgs[i];
|
||
if (actionArg.toUpperCase() === 'SHOW') show = true;
|
||
}
|
||
if (actionName.match(/ADD[ ](.*)[ ]BUFF/i)) {
|
||
var paramId = this.getParamId(String(RegExp.$1).toUpperCase());
|
||
} else {
|
||
return true;
|
||
}
|
||
if (actionArgs[1] && parseInt(actionArgs[1]) > 0) {
|
||
var turns = parseInt(actionArgs[1]);
|
||
} else {
|
||
var turns = 5;
|
||
}
|
||
if (paramId < 0) return true;
|
||
targets.forEach(function (target) {
|
||
target.addBuff(paramId, turns);
|
||
if (show) this._logWindow.displayActionResults(this._subject, target);
|
||
}, this);
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionAddDebuff = function (actionName, actionArgs) {
|
||
var targets = this.makeActionTargets(actionArgs[0]);
|
||
if (targets.length < 1) return false;
|
||
var show = false;
|
||
for (var i = 0; i < actionArgs.length; ++i) {
|
||
var actionArg = actionArgs[i];
|
||
if (actionArg.toUpperCase() === 'SHOW') show = true;
|
||
}
|
||
if (actionName.match(/ADD[ ](.*)[ ]DEBUFF/i)) {
|
||
var paramId = this.getParamId(String(RegExp.$1).toUpperCase());
|
||
} else {
|
||
return true;
|
||
}
|
||
if (actionArgs[1] && parseInt(actionArgs[1]) > 0) {
|
||
var turns = parseInt(actionArgs[1]);
|
||
} else {
|
||
var turns = 5;
|
||
}
|
||
if (paramId < 0) return true;
|
||
targets.forEach(function (target) {
|
||
target.addDebuff(paramId, turns);
|
||
if (show) this._logWindow.displayActionResults(this._subject, target);
|
||
}, this);
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionAddState = function (actionName, actionArgs) {
|
||
var targets = this.makeActionTargets(actionArgs[0]);
|
||
if (targets.length < 1) return false;
|
||
var show = false;
|
||
for (var i = 0; i < actionArgs.length; ++i) {
|
||
var actionArg = actionArgs[i];
|
||
if (actionArg.toUpperCase() === 'SHOW') show = true;
|
||
}
|
||
if (actionName.match(/(?:ADD_STATE|ADD STATE)[ ](\d+(?:\s*,\s*\d+)*)/i)) {
|
||
var states = JSON.parse('[' + RegExp.$1.match(/\d+/g) + ']');
|
||
} else {
|
||
return true;
|
||
}
|
||
targets.forEach(function (target) {
|
||
for (var i = 0; i < states.length; ++i) {
|
||
stateId = states[i];
|
||
if (stateId === target.deathStateId()) {
|
||
if (target._prevImmortalState === false) target.forceRemoveImmortal();
|
||
}
|
||
target.addState(stateId);
|
||
if (show) this._logWindow.displayActionResults(this._subject, target);
|
||
}
|
||
}, this);
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionAnimation = function (aniId, actionArgs) {
|
||
if (aniId <= 0) return;
|
||
var targets = this.makeActionTargets(actionArgs[0]);
|
||
if (targets.length < 1) return false;
|
||
var mirror = false;
|
||
if (actionArgs[1] && actionArgs[1].toUpperCase() === 'MIRROR') mirror = true;
|
||
this._logWindow.showNormalAnimation(targets, aniId, mirror);
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionBgmPlay = function (actionArgs) {
|
||
if (actionArgs.length < 1) return true;
|
||
if (actionArgs[0].toUpperCase() === 'STOP') {
|
||
AudioManager.stopBgm();
|
||
} else if (actionArgs[0].toUpperCase() === 'MEMORIZE') {
|
||
this._battleMemorizedBgm = AudioManager.saveBgm();
|
||
return true;
|
||
} else if (actionArgs[0].toUpperCase() === 'MEMORY') {
|
||
if (this._battleMemorizedBgm) {
|
||
AudioManager.replayBgm(this._battleMemorizedBgm);
|
||
}
|
||
} else {
|
||
var name = actionArgs[0];
|
||
if (!name) return true;
|
||
var vol = actionArgs[1] || Yanfly.Param.SoundVolume;
|
||
var pitch = actionArgs[2] || Yanfly.Param.SoundPitch;
|
||
var pan = actionArgs[3] || Yanfly.Param.SoundPan;
|
||
var bgm = {
|
||
name: name,
|
||
volume: vol,
|
||
pitch: pitch,
|
||
pan: pan
|
||
};
|
||
AudioManager.playBgm(bgm);
|
||
}
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionBgsPlay = function (actionArgs) {
|
||
if (actionArgs.length < 1) return true;
|
||
if (actionArgs[0].toUpperCase() === 'STOP') {
|
||
AudioManager.stopBgs();
|
||
} else if (actionArgs[0].toUpperCase() === 'MEMORIZE') {
|
||
this._battleMemorizedBgs = AudioManager.saveBgs();
|
||
return true;
|
||
} else if (actionArgs[0].toUpperCase() === 'MEMORY') {
|
||
if (this._battleMemorizedBgs) {
|
||
AudioManager.replayBgs(this._battleMemorizedBgs);
|
||
}
|
||
} else {
|
||
var name = actionArgs[0];
|
||
if (!name) return true;
|
||
var vol = actionArgs[1] || Yanfly.Param.SoundVolume;
|
||
var pitch = actionArgs[2] || Yanfly.Param.SoundPitch;
|
||
var pan = actionArgs[3] || Yanfly.Param.SoundPan;
|
||
var bgs = {
|
||
name: name,
|
||
volume: vol,
|
||
pitch: pitch,
|
||
pan: pan
|
||
};
|
||
AudioManager.playBgs(bgs);
|
||
}
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionBreakAction = function () {
|
||
this._targets = [];
|
||
this._actionList = [];
|
||
this._individualTargets = [];
|
||
this._phase = 'phaseChange';
|
||
return false;
|
||
};
|
||
|
||
BattleManager.actionCollapse = function (actionArgs) {
|
||
var targets = this.makeActionTargets(actionArgs[0]);
|
||
var force = false;
|
||
if (actionArgs[1]) var force = (actionArgs[1].toUpperCase() === 'FORCE');
|
||
targets.forEach(function (target) {
|
||
if (force) {
|
||
target.removeImmortal();
|
||
target.addState(target.deathStateId());
|
||
}
|
||
if (target.isDeathStateAffected()) target.performCollapse();
|
||
|
||
}, this);
|
||
return false;
|
||
};
|
||
|
||
BattleManager.actionCommonEvent = function (id) {
|
||
if ($gameTroop.isEventRunning()) {
|
||
var ev = $dataCommonEvents[id];
|
||
if (!ev) return;
|
||
var list = ev.list;
|
||
var interpreter = $gameTroop._interpreter;
|
||
interpreter.setupChild(list, 0);
|
||
} else {
|
||
$gameTemp.reserveCommonEvent(id);
|
||
}
|
||
return false;
|
||
};
|
||
|
||
BattleManager.actionChangeSwitch = function (actionName, actionArgs) {
|
||
var subject = this._subject;
|
||
var user = this._subject;
|
||
var target = this._targets[0];
|
||
var targets = this._targets;
|
||
var action = this._action;
|
||
var item = this._action.item();
|
||
var switches = [];
|
||
if (actionName.match(/SWITCH[ ](\d+)/i)) {
|
||
switches = [parseInt(RegExp.$1)];
|
||
} else if (actionName.match(/SWITCH[ ](\d+)..(\d+)/i)) {
|
||
switches = [getRange(parseInt(RegExp.$1), parseInt(RegExp.$2))];
|
||
} else if (actionName.match(/SWITCH[ ](\d+)[ ]TO[ ](\d+)/i)) {
|
||
switches = [getRange(parseInt(RegExp.$1), parseInt(RegExp.$2))];
|
||
} else {
|
||
return true;
|
||
}
|
||
var result = actionArgs[0].toUpperCase();
|
||
var value;
|
||
if (['ON', 'TRUE'].contains(result)) {
|
||
value = true;
|
||
} else if (['OFF', 'FALSE'].contains(result)) {
|
||
value = false;
|
||
} else if (['TOGGLE', 'OPPOSITE', 'REVERSE'].contains(result)) {
|
||
value = 'toggle';
|
||
} else if (result.match(/SWITCH[ ](\d+)/i)) {
|
||
value = $gameSwitches.value(parseInt(RegExp.$1));
|
||
}
|
||
switches.forEach(function (switchId) {
|
||
if (value === 'toggle') {
|
||
$gameSwitches.setValue(switchId, !$gameSwitches.value(switchId));
|
||
} else {
|
||
$gameSwitches.setValue(switchId, value);
|
||
}
|
||
}, this);
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionChangeVariable = function (actionName) {
|
||
var cV1 =
|
||
/CHANGE[ ](?:VARIABLE|VAR)[ ](\d+)[ ](.*)[ ](?:VARIABLE|VAR)[ ](\d+)/i;
|
||
var cV2 = /CHANGE[ ](?:VARIABLE|VAR)[ ](\d+)[ ](.*?)[ ](.*)/i;
|
||
var subject = this._subject;
|
||
var user = this._subject;
|
||
var target = this._targets[0];
|
||
var targets = this._targets;
|
||
var action = this._action;
|
||
var item = this._action.item();
|
||
if (this._actSeq[0].match(cV1)) {
|
||
var mainVar = parseInt(RegExp.$1);
|
||
var operation = String(RegExp.$2);
|
||
var editVar = $gameVariables.value(parseInt(RegExp.$3));
|
||
} else if (this._actSeq[0].match(cV2)) {
|
||
var mainVar = parseInt(RegExp.$1);
|
||
var operation = String(RegExp.$2);
|
||
var editVar = eval(String(RegExp.$3));
|
||
} else {
|
||
return true;
|
||
}
|
||
var mainValue = $gameVariables.value(mainVar);
|
||
if (['='].contains(operation)) {
|
||
$gameVariables.setValue(mainVar, eval(editVar));
|
||
} else if (['+=', '+'].contains(operation)) {
|
||
$gameVariables.setValue(mainVar, mainValue + eval(editVar));
|
||
} else if (['-=', '-'].contains(operation)) {
|
||
$gameVariables.setValue(mainVar, mainValue - eval(editVar));
|
||
} else if (['*=', '*'].contains(operation)) {
|
||
$gameVariables.setValue(mainVar, mainValue * eval(editVar));
|
||
} else if (['/=', '/'].contains(operation)) {
|
||
$gameVariables.setValue(mainVar, mainValue / eval(editVar));
|
||
} else if (['%=', '%'].contains(operation)) {
|
||
$gameVariables.setValue(mainVar, mainValue % eval(editVar));
|
||
}
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionEval = function (actionArgs) {
|
||
if (actionArgs.length < 1) return true;
|
||
var subject = this._subject;
|
||
var user = this._subject;
|
||
var target = this._targets[0];
|
||
var targets = this._targets;
|
||
var action = this._action;
|
||
var item = this._action.item();
|
||
var text = String(actionArgs[0]);
|
||
for (var i = 1; i < actionArgs.length; ++i) {
|
||
text = text + ', ' + String(actionArgs[i]);
|
||
}
|
||
try {
|
||
eval(text);
|
||
} catch (e) {
|
||
Yanfly.Util.displayError(e, text, 'ACTION SEQUENCE EVAL ERROR');
|
||
}
|
||
return false;
|
||
};
|
||
|
||
BattleManager.actionGainItem = function (actionName, actionArgs) {
|
||
var gainItem;
|
||
var type;
|
||
var itemId;
|
||
if (actionName.match(/GAIN[ ](.*)[ ](\d+)/i)) {
|
||
gainItem = true;
|
||
type = String(RegExp.$1).toUpperCase();
|
||
itemId = parseInt(RegExp.$2);
|
||
} else if (actionName.match(/LOSE[ ](.*)[ ](\d+)/i)) {
|
||
gainItem = false;
|
||
type = String(RegExp.$1).toUpperCase();
|
||
itemId = parseInt(RegExp.$2);
|
||
} else {
|
||
return true;
|
||
}
|
||
var item;
|
||
if (type === 'ITEM') {
|
||
item = $dataItems[itemId];
|
||
} else if (['WPN', 'WEAPON'].contains(type)) {
|
||
item = $dataWeapons[itemId];
|
||
} else if (['ARM', 'ARMOR', 'ARMOUR'].contains(type)) {
|
||
item = $dataArmors[itemId];
|
||
} else {
|
||
return true;
|
||
}
|
||
var amount = Math.max(1, parseInt(actionArgs[0]));
|
||
if (isNaN(amount)) amount = 1;
|
||
if (gainItem) $gameParty.gainItem(item, amount);
|
||
if (!gainItem) $gameParty.loseItem(item, amount);
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionGoldModify = function (value) {
|
||
$gameParty.gainGold(value);
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionHpModify = function (actionName, actionArgs) {
|
||
var targets = this.makeActionTargets(actionArgs[0]);
|
||
if (targets.length < 1) return false;
|
||
var change;
|
||
var percent;
|
||
if (actionName.match(/HP[ ]([+-])(?:VARIABLE|VAR)[ ](\d+)/i)) {
|
||
change = parseInt($gameVariables.value(parseInt(RegExp.$2)));
|
||
if (String(RegExp.$1) === '-') change *= -1;
|
||
percent = false;
|
||
} else if
|
||
(actionName.match(/HP[ ]([+-])(?:VARIABLE|VAR)[ ](\d+)([%%])/i)) {
|
||
change = parseInt($gameVariables.value(parseInt(RegExp.$2)));
|
||
if (String(RegExp.$1) === '-') change *= -1;
|
||
percent = true;
|
||
} else if (actionName.match(/HP[ ]([\+\-]\d+)([%%])/i)) {
|
||
change = parseInt(RegExp.$1);
|
||
percent = true;
|
||
} else if (actionName.match(/HP[ ]([\+\-]\d+)/i)) {
|
||
change = parseInt(RegExp.$1);
|
||
percent = false;
|
||
} else {
|
||
return false;
|
||
}
|
||
var show = false;
|
||
for (var i = 0; i < actionArgs.length; ++i) {
|
||
var actionArg = actionArgs[i];
|
||
if (actionArg.toUpperCase() === 'SHOW') show = true;
|
||
}
|
||
var value;
|
||
targets.forEach(function (target) {
|
||
target.clearResult();
|
||
value = percent ? (target.mhp * change * 0.01) : change;
|
||
target.gainHp(parseInt(value));
|
||
if (show) {
|
||
target.startDamagePopup();
|
||
this._logWindow.displayActionResults(this._subject, target);
|
||
}
|
||
}, this);
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionMePlay = function (actionArgs) {
|
||
if (actionArgs.length < 1) return true;
|
||
if (actionArgs[0].toUpperCase() === 'STOP') {
|
||
AudioManager.stopMe();
|
||
} else {
|
||
var name = actionArgs[0];
|
||
if (!name) return true;
|
||
var vol = actionArgs[1] || Yanfly.Param.SoundVolume;
|
||
var pitch = actionArgs[2] || Yanfly.Param.SoundPitch;
|
||
var pan = actionArgs[3] || Yanfly.Param.SoundPan;
|
||
var me = {
|
||
name: name,
|
||
volume: vol,
|
||
pitch: pitch,
|
||
pan: pan
|
||
};
|
||
AudioManager.playMe(me);
|
||
}
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionMpModify = function (actionName, actionArgs) {
|
||
var targets = this.makeActionTargets(actionArgs[0]);
|
||
if (targets.length < 1) return false;
|
||
var change;
|
||
var percent;
|
||
if (actionName.match(/MP[ ]([+-])(?:VARIABLE|VAR)[ ](\d+)/i)) {
|
||
change = parseInt($gameVariables.value(parseInt(RegExp.$2)));
|
||
if (String(RegExp.$1) === '-') change *= -1;
|
||
percent = false;
|
||
} else if
|
||
(actionName.match(/MP[ ]([+-])(?:VARIABLE|VAR)[ ](\d+)([%%])/i)) {
|
||
change = parseInt($gameVariables.value(parseInt(RegExp.$2)));
|
||
if (String(RegExp.$1) === '-') change *= -1;
|
||
percent = true;
|
||
} else if (actionName.match(/MP[ ]([\+\-]\d+)([%%])/i)) {
|
||
change = parseInt(RegExp.$1);
|
||
percent = true;
|
||
} else if (actionName.match(/MP[ ]([\+\-]\d+)/i)) {
|
||
change = parseInt(RegExp.$1);
|
||
percent = false;
|
||
} else {
|
||
return false;
|
||
}
|
||
var show = false;
|
||
for (var i = 0; i < actionArgs.length; ++i) {
|
||
var actionArg = actionArgs[i];
|
||
if (actionArg.toUpperCase() === 'SHOW') show = true;
|
||
}
|
||
var value;
|
||
targets.forEach(function (target) {
|
||
target.clearResult();
|
||
value = percent ? (target.mmp * change * 0.01) : change;
|
||
target.gainMp(parseInt(value));
|
||
if (show) {
|
||
target.startDamagePopup();
|
||
this._logWindow.displayActionResults(this._subject, target);
|
||
}
|
||
}, this);
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionRefreshStatus = function () {
|
||
this._statusWindow.refresh();
|
||
return false;
|
||
};
|
||
|
||
BattleManager.actionRemoveBuff = function (actionName, actionArgs) {
|
||
var targets = this.makeActionTargets(actionArgs[0]);
|
||
if (targets.length < 1) return false;
|
||
var show = false;
|
||
for (var i = 0; i < actionArgs.length; ++i) {
|
||
var actionArg = actionArgs[i];
|
||
if (actionArg.toUpperCase() === 'SHOW') show = true;
|
||
}
|
||
if (actionName.match(/REMOVE[ ](.*)[ ]BUFF/i)) {
|
||
var paramId = this.getParamId(String(RegExp.$1).toUpperCase());
|
||
} else {
|
||
return true;
|
||
}
|
||
if (paramId < 0) return true;
|
||
targets.forEach(function (target) {
|
||
if (target.isBuffAffected(paramId)) {
|
||
target.removeBuff(paramId);
|
||
if (show) this._logWindow.displayActionResults(this._subject, target);
|
||
}
|
||
}, this);
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionRemoveDebuff = function (actionName, actionArgs) {
|
||
var targets = this.makeActionTargets(actionArgs[0]);
|
||
if (targets.length < 1) return false;
|
||
var show = false;
|
||
for (var i = 0; i < actionArgs.length; ++i) {
|
||
var actionArg = actionArgs[i];
|
||
if (actionArg.toUpperCase() === 'SHOW') show = true;
|
||
}
|
||
if (actionName.match(/REMOVE[ ](.*)[ ]DEBUFF/i)) {
|
||
var paramId = this.getParamId(String(RegExp.$1).toUpperCase());
|
||
} else {
|
||
return true;
|
||
}
|
||
if (paramId < 0) return true;
|
||
targets.forEach(function (target) {
|
||
if (target.isDebuffAffected(paramId)) {
|
||
target.removeBuff(paramId);
|
||
if (show) this._logWindow.displayActionResults(this._subject, target);
|
||
}
|
||
}, this);
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionRemoveState = function (actionName, actionArgs) {
|
||
var targets = this.makeActionTargets(actionArgs[0]);
|
||
if (targets.length < 1) return false;
|
||
var show = false;
|
||
for (var i = 0; i < actionArgs.length; ++i) {
|
||
var actionArg = actionArgs[i];
|
||
if (actionArg.toUpperCase() === 'SHOW') show = true;
|
||
}
|
||
if
|
||
(actionName.match(/(?:REMOVE_STATE|REMOVE STATE)[ ](\d+(?:\s*,\s*\d+)*)/i)) {
|
||
var states = JSON.parse('[' + RegExp.$1.match(/\d+/g) + ']');
|
||
} else {
|
||
return true;
|
||
}
|
||
targets.forEach(function (target) {
|
||
for (var i = 0; i < states.length; ++i) {
|
||
stateId = states[i];
|
||
if (target.isStateAffected(stateId)) {
|
||
target.removeState(stateId);
|
||
if (show) this._logWindow.displayActionResults(this._subject, target);
|
||
}
|
||
}
|
||
}, this);
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionSePlay = function (actionArgs) {
|
||
if (actionArgs.length < 1) return true;
|
||
if (actionArgs[0].toUpperCase() === 'PLAY CURSOR') {
|
||
SoundManager.playCursor();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY OK') {
|
||
SoundManager.playOk();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY CANCEL') {
|
||
SoundManager.playCancel();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY BUZZER') {
|
||
SoundManager.playBuzzer();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY EQUIP') {
|
||
SoundManager.playEquip();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY SAVE') {
|
||
SoundManager.playSave();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY LOAD') {
|
||
SoundManager.playLoad();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY BATTLE START') {
|
||
SoundManager.playBattleStart();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY ESCAPE') {
|
||
SoundManager.playEscape();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY ENEMY ATTACK') {
|
||
SoundManager.playEnemyAttack();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY ENEMY DAMAGE') {
|
||
SoundManager.playEnemyDamage();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY ENEMY COLLAPSE') {
|
||
SoundManager.playEnemyCollapse();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY BOSS COLLAPSE 1') {
|
||
SoundManager.playBossCollapse1();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY BOSS COLLAPSE 2') {
|
||
SoundManager.playBossCollapse2();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY ACTOR DAMAGE') {
|
||
SoundManager.playActorDamage();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY ACTOR COLLAPSE') {
|
||
SoundManager.playActorCollapse();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY RECOVERY') {
|
||
SoundManager.playRecovery();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY MISS') {
|
||
SoundManager.playMiss();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY EVASION') {
|
||
SoundManager.playEvasion();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY MAGIC EVASION') {
|
||
SoundManager.playMagicEvasion();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY REFLECTION') {
|
||
SoundManager.playReflection();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY SHOP') {
|
||
SoundManager.playShop();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY USE ITEM') {
|
||
SoundManager.playUseItem();
|
||
} else if (actionArgs[0].toUpperCase() === 'PLAY USE SKILL') {
|
||
SoundManager.playUseSkill();
|
||
} else {
|
||
var name = actionArgs[0];
|
||
if (!name) return true;
|
||
var vol = actionArgs[1] || Yanfly.Param.SoundVolume;
|
||
var pitch = actionArgs[2] || Yanfly.Param.SoundPitch;
|
||
var pan = actionArgs[3] || Yanfly.Param.SoundPan;
|
||
var se = {
|
||
name: name,
|
||
volume: vol,
|
||
pitch: pitch,
|
||
pan: pan
|
||
};
|
||
AudioManager.playSe(se);
|
||
}
|
||
return true;
|
||
};
|
||
|
||
BattleManager.actionTpModify = function (actionName, actionArgs) {
|
||
var targets = this.makeActionTargets(actionArgs[0]);
|
||
if (targets.length < 1) return false;
|
||
var change;
|
||
var percent;
|
||
if (actionName.match(/TP[ ]([+-])(?:VARIABLE|VAR)[ ](\d+)/i)) {
|
||
change = parseInt($gameVariables.value(parseInt(RegExp.$2)));
|
||
if (String(RegExp.$1) === '-') change *= -1;
|
||
percent = false;
|
||
} else if
|
||
(actionName.match(/TP[ ]([+-])(?:VARIABLE|VAR)[ ](\d+)([%%])/i)) {
|
||
change = parseInt($gameVariables.value(parseInt(RegExp.$2)));
|
||
if (String(RegExp.$1) === '-') change *= -1;
|
||
percent = true;
|
||
} else if (actionName.match(/TP[ ]([\+\-]\d+)([%%])/i)) {
|
||
change = parseInt(RegExp.$1);
|
||
percent = true;
|
||
} else if (actionName.match(/TP[ ]([\+\-]\d+)/i)) {
|
||
change = parseInt(RegExp.$1);
|
||
percent = false;
|
||
} else {
|
||
return false;
|
||
}
|
||
var show = false;
|
||
for (var i = 0; i < actionArgs.length; ++i) {
|
||
var actionArg = actionArgs[i];
|
||
if (actionArg.toUpperCase() === 'SHOW') show = true;
|
||
}
|
||
var value;
|
||
targets.forEach(function (target) {
|
||
target.clearResult();
|
||
value = percent ? (target.maxTp() * change * 0.01) : change;
|
||
target.gainTp(parseInt(value));
|
||
if (show) {
|
||
target.startDamagePopup();
|
||
this._logWindow.displayActionResults(this._subject, target);
|
||
}
|
||
}, this);
|
||
return true;
|
||
};
|
||
|
||
//=============================================================================
|
||
// Utilities
|
||
//=============================================================================
|
||
|
||
Yanfly.Util = Yanfly.Util || {};
|
||
|
||
Yanfly.Util.displayError = function (e, code, message) {
|
||
console.log(message);
|
||
console.log(code || 'NON-EXISTENT');
|
||
console.error(e);
|
||
if (Utils.RPGMAKER_VERSION && Utils.RPGMAKER_VERSION >= "1.6.0") return;
|
||
if (Utils.isNwjs() && Utils.isOptionValid('test')) {
|
||
if (!require('nw.gui').window.isDevToolsOpen()) {
|
||
require('nw.gui').window.showDevTools();
|
||
}
|
||
}
|
||
};
|
||
|
||
//=============================================================================
|
||
// End of File
|
||
//=============================================================================
|
||
};
|