Jump to content
DP3

Actor Voices in Battle

Recommended Posts

vampirewarrior, please don't double post within 72 hours. Next time please use the edit link instead (located to the left of the 'quote' button in your posts). Thanks.

Share this post


Link to post
Share on other sites

Eric doesnt have a voice folder. I keep getting error saying no sound effect for eric file blah blah balh or something.

Copied one of the other folders named it eric.

 

A few mins later---->That fixed it!!

 

The demo was really nice and the voices made a very nice atmosphere. I was really suprised that such a simple script could do so very much.

Great Job!!!

 

Do you plan to make any other "sound" scripts?

Ideas I had

 

Voices for messages with scene reactions like you weak and strong enemy variances

Sound for events or common events and maybe walking and travel also.

Sounds for item classes or weapons?

Edited by ShinGamix

Share this post


Link to post
Share on other sites

A video tutorial has been added for this script. If you weren't understanding things before. Hopefully this will clear things up. :)

Do you plan to make any other "sound" scripts?

Ideas I had

 

Voices for messages with scene reactions like you weak and strong enemy variances

Sound for events or common events and maybe walking and travel also.

Sounds for item classes or weapons?

They sound alright, send me a request via PM pertaining to what you're looking for.

Mostly because this is an off-topic discussion and Mods do not endorse that.

Edited by DP3

Share this post


Link to post
Share on other sites

I have created a Patch for this script and Yanfly's 'Victory Aftermath'.

Check 'Patches' Section under first post.

Share this post


Link to post
Share on other sites

Hiya, I've started to use this script and it's been working more than amazingly already! I know it's probably a longshot to ask, but could you add maybe a way to make enemies have voices as well? I'd love for that to be a feature in a future update. Thanks in advance if ya respond!

Share this post


Link to post
Share on other sites

This is a very cool script! It's perfect for my game except for one problem that I can't figure out.

 

When an actor attacks and has multiple attacks (attack times+), it only plays one attack sound when the attacks start.

 

Is there a way to make it play a random attack sound at each attack during a combo?

Share this post


Link to post
Share on other sites

Updated Script.

  • Combo Hits now have multiple voices for each attack, at your discretion of course.
  • Additional Editable Options, you can now allow/disallow an actor to respond when they're healing themselves.
  • Moghunter's 'Battle Result' Patch, additional voices can be played when you've received loot.

Whoa yanfly aftermath compatibility patch. Next moghunter victory patch please :P.

Done, thanks for suggestion.

 

 

Hiya, I've started to use this script and it's been working more than amazingly already! I know it's probably a longshot to ask, but could you add maybe a way to make enemies have voices as well? I'd love for that to be a feature in a future update. Thanks in advance if ya respond!

-> Enemy Voices in Battle

 

 

Is there a way to make it play a random attack sound at each attack during a combo?

Added that feature. Thank you for the suggestion. Edited by DP3

Share this post


Link to post
Share on other sites

  • Fixed a bug whereby upon leveling up in battle, you'd receive the same experience and spoils continuously for a little while. You'll now only see that message once if you weren't already before.

Share this post


Link to post
Share on other sites

So since the multiple hits update, the attack voice does not play in my game at all. I'm using ACE and Yami battle engines. Everything else works fine, though.

Share this post


Link to post
Share on other sites

Here's a patch for you

 

class Game_Actor < Game_Battler
  def use_item( *args )
    DiamondandPlatinum3::BattleVoices::play_skill_or_item_voice(@actor_id, args[0]) if args[0]
    dp3_gameactor_useitem_1s098yu9j( *args )
  end
end
Edited by DP3

Share this post


Link to post
Share on other sites

No matter what I do, I've been getting this error and my battletest crashes. "line 1277; NoMethodError"
The play testing won't even start.

I left big sections blank because I have no need for my characters to comment on every single moment.

I have literally blown six to seven hours of my night off trying to get this to not crash my game.

Since I've only recently gotten into RPG Maker, is is rapidly becoming a dealbreaker for me.
I'm about to give up on this idea of a fan game entirely.

post-42676-0-21698100-1398957845_thumb.jpg

Edited by Moonprincess

Share this post


Link to post
Share on other sites

Considering the editable region allows you to add and remove lines, showing me that picture with the line number does not help me.

Since you've thrown that many hours into the issue, I'll assume you've done the basics in regards to attempting to fix the issue.

 

More than likely it's a compatibility problem.

Therefore I'll have to ask for a demo containing this problem before I can do anything.

Share this post


Link to post
Share on other sites

Hello! very nice script. I'm actually stuck and dont found any solution for :

 

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ACTOR MISSED THE ENEMY
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; MISSED_ENEMY = { # <= Do Not Touch This Line
 
    # What Actor One Will Say when they missed the enemy
    1 => [
           "Missed Enemy01", 100, 100, 60,
         ],
 
 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ACTOR EVADED ENEMY ATTACK
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; DODGED_ENEMY = { # <= Do Not Touch This Line
 
    # What Actor One Will Say when they evaded an enemy attack
    1 => [
           "Dodged Enemy Attack01", 100, 100, 35,

           ],

 

----------

As you see i have edit it and add sound in good folder and all.
but instead voice attak, voice encounters, this two voice dont work.

So i have tried to active the line like in exemple, and remove the sound from my folder sound. And it normaly crash. Here no crash. Like if this part of your script is ignored.

 

 

And somehing else:

For actor 1, there's 10 different attak, it's too much, if i delete a line, i have an error telling me "missing sound and all and all" exactly when you forget to add sound linked to the voice line.
But why when you delete 5 to 10 "attack" it still ask for theses sounds?
So i have to put 10 sounds and in fact have each time a copy, with just a different name... Why i cant just delete a line to set my desires sounds to 1 to 5?

I have to have 10. :unsure:

Anyway, thanks a lot :)

I use yanfly battle engine, class system, and other yanfly stuff... but i think it's not a compability problem cause some voice work perfectly. I dont understand :s

Edited by Axyal

Share this post


Link to post
Share on other sites

This is great! At first everything worked but attack and skill voices then i saw this patch. Now EVERYTHING works. btw I use Battle Symphony by Yami if that helps trouble shoot issues with voices not working for attack and skills. Thanks for this script!

 

Here's a patch for you
 


class Game_Actor < Game_Battler
  def use_item( *args )
    DiamondandPlatinum3::BattleVoices::play_skill_or_item_voice(@actor_id, args[0]) if args[0]
    dp3_gameactor_useitem_1s098yu9j( *args )
  end
end

Share this post


Link to post
Share on other sites
Excuse me, I am currently using your script in my fan game, and everything seems to be working fine except that I encountered one problem.
When using a healing/reviving skill, the specified lines for the actor were not played, both when healing a teammate and receiving the heal.

Eventually, I came across the patch above, and that seems to fix it. Recovery skills actually worked, and the response to it were also played.
However, after applying that patch, the lines for using offensive skills such as "Agi" or "Lunge" were played twice.
Which means if I have 3 lines for that skill, it will randomly pick 2 lines instead of just 1.
 
If you're still providing support for this script, I would highly appreciate it. I can also send you a video on the scripts and note tags of my project if need be.

Share this post


Link to post
Share on other sites
Spoiler

#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#             Actor Voices in Battle
#             Version: 2.6
#             Author: DiamondandPlatinum3
#             Date: December 11, 2012     (Original)
#                   October 1, 2013    (Most Recent Update)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Description:
#
#    This script grants you the ability to have your actors talk throughout
#    battle; it will pick an actor at random at the start of battle to say
#    something relevant about what they expect from this battle.
#    
#    After that, the actors will get voices when attacking and when getting
#    damaged, also when using a skill.
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#------------------------------------------------------------------------------
#  Instructions:
#  
#   ~ There is a Video Tutorial explaining a lot of this script. You may watch
#     it here:      http://www.youtube.com/watch?v=CaQhoZg_FgI
#
#
#   ~ In the Editable Region Below, you must set a folder to which will contain
#     all of your new voices. 
#     In addition, inside of THAT folder, you must also create a new folder for 
#     each enemy and name the folder by that enemy name.
#     Example: Eric, Terence, Natalie
#
#
#   ~ You can set up most of this script in the editable region below; you can
#     set up battle voices for specific skills & items manually however.
#     You do this by inserting the following code into the notetag of the
#     Skill/Item:
#
#       ~ActorVoice: ID, "Voice_Filename"
#
#               or
#
#       ~ActorVoice: ID, "Voice_Filename", Volume, Pitch, Wait Frames
#
#
#     Replace the ID with the id of the actor who you are using this tag with.
#     Replace the "Voice_Filename" with the filename of the SE you will be playing
#
#     You do not need to insert Volume, Pitch or Wait Frames afterwards, but you
#     can if you wish to specify them.
#     You may use this same tag on a skill twice to allow for more than one voice
#     per skill or for different actors.
#
#
#
#   ~ In case your game allows for actors to be given custom names by the player,
#      you may additionally set up a hardcoded name for them, so as to keep 
#      voices in one folder where they can be accessed.
#         To do so, you only simply need to use the following in a script call:
#
#             set_actor_voice_name(id, name)
# 
#         Where (ID = Actor_ID) and (name = "Folder Name")
#
#      From now on, the script will check this folder for this specific actor's
#      voices rather than elsewhere.
#       Also note that this can be changed at anytime, so if for whatever reason
#       your Actor changes gender throughout your game, you can always change 
#       the folder to a more feminine sounding actor.
#
#
#
#   ~ A Screenshot example of the above may be found here:
#       http://goo.gl/HO7n0   ~ Showing the usage of the notetag for skills
#       http://goo.gl/zH0aO   ~ Setting up Multiple Voices
#       http://goo.gl/EP0Nf   ~ Showing the usage of the notetag for items
#
#       http://i.imgur.com/Oqc9BGA.png  ~ Voices Folder
#       http://i.imgur.com/cq1JPBc.png  ~ Individual Folders
#
#
#
#   ~ In the editable region section your actors can have more than one thing to
#     say. It's the same pattern of: "filename", volume, pitch, frames_to_wait, repeat;
#     until you finish it, I trust your common sense to figure out how :)
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#------------------------------------------------------------------------------
#  Engine Modifications:
#
#   ~ class Scene_Battle:
#       post_start                (aliased)
#       apply_item_effects        (aliased)
#       show_normal_animation     (overwritten)
#
#
#   ~ class Game_Actor:
#       use_item                  (aliased)
#       die                       (aliased)
#       change_exp                (aliased)
#       item_effect_recover_hp    (aliased)
#       item_effect_recover_mp    (aliased)
#       execute_damage            (aliased)
#       remove_state              (aliased)
#       on_damage                 (aliased)
#
#
#   ~ module BattleManager
#       setup                     (aliased)
#       process_escape            (aliased)
#       process_victory           (aliased)
#       process_defeat            (aliased)
#
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
($diamondandplatinum3_scripts ||= {})[:BattleVoices] = true
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
module DiamondandPlatinum3
module BattleVoices
  #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  #                                                        -=
  #                 Editable Region        ////            ==
  #                                                        =-
  #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
  # You must create a new folder inside of your SE Audio folder and name it
  # Whatever you decided to call it just below
  FOLDER_DIRECTORY_NAME = "Battle_Voices" 
 
 
  # This Event Switch when turned on will mute the voice being played.
  # They will still play, you just won't hear them
  #
  # If you leave the event switch id as zero, that means you can NEVER turn off the
  # Battle Voices
  EVENT_SWITCH_ID = 0
 
 
  # If your actor has been inflicted with any of these states, they will have their
  # voices muted until it is cured.
  # State No.4 by default is the Silence state, which is a reasonable for muting
  # you. you can add more states after it by adding another ID number and a comma
  #
  # If you do not want any state to mute you, simply erase everything inside the square brackets
  SILENCE_STATES = [ 4, ]
 
 
  # Here you can choose the Skills which your Actor Voices will not play for.
  # By default, Skills 1-7 are skills which are used with certain commands.
  # Some of those commands have their own specific Actor Voice, such as Attacking
  # or Escaping, as such it is advisable to input the Skill ID referring to those
  # commands in this option.
  # If you are using the Default Skillset, you can leave this option as is.
  # However if you're using custom skills, please make sure they're not being
  # omitted inside of this option.
  #
  # You may also use this option to stop custom skills from having voices if you'd
  # prefer.
  SKILLS_NOT_TO_PLAY_VOICE_FOR = [ 1, 2, 3, 4, 5, 6, 7, ]
 
 
  # If you've been playing and noticed that battle voices tend to happen a bit too often
  # for your liking, you may use this Option to decrease the frequency in which they will
  # say general things (like attacking, using items, etc). Non-general voices (such as
  # specific skills) will still play whenever they are used.
  #
  # This works as a percentage out of 100.
  VOICE_FREQUENCY = 100
 
 
  # If an attack has multiple hits, do you want the actor in question to keep
  # screaming battle cries for each hit?
  PLAY_MULTIPLE_VOICES_FOR_MULTIPLE_HITS = true
 
 
  #=============================================================================
  #    Battle Start Voices
  #-----------------------------------------------------------------------------
  #   The Editable Parts Below will only be said when a battle starts
  #=============================================================================
 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * TOO MANY ENEMIES?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  TOO_MANY_ENEMIES = {  # <= Do Not Touch This Line
 
    # If The enemy troop in battle has this many MORE members than you do,
    # an actor will say something about how you are outnumbered
    :ratio => 2 ,
 
   
    # "SE Filename", Volume, Pitch, Frames_to_Wait,
    #       Repeat if you want more voices
   
    # What Actor One Will Say
    1 => [
           "Encounter Too Many Enemies1", 80, 100, 0,
           "Encounter Too Many Enemies2", 80, 100, 0,
         ],
 
 
    # What Actor Two Will Say
    2 => [
           "Encounter Too Many Enemies1", 80, 100, 0,
           "Encounter Too Many Enemies2", 80, 100, 0,
         ],
   
   
         
    # You Add more voices for actors by doing the same as the above and modifying
    # the number to match the actor id (ie. Terence by default is Actor 3).
    # If you skip an actor, then no voice will be played for them.
 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * PARTY NEEDS HEALING?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; PARTY_NEEDS_HEALING = { # <= Do Not Touch This Line
 
    # If party total HP is below this Ratio, an Actor will say something about it
    # This Ratio is a percentage, so by default if your total party hp is below
    # 40%, then an actor may mention that everyone is hurt
    :ratio => 40 ,
 
   
    # What Actor Two Will Say
    2 => [
           "Encounter Party Needs Healing1", 80, 100, 0,
         ],
       
       
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * VERY WEAK ENEMIES?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
  }; VERY_WEAK_ENEMIES = { # <= Do Not Touch This Line
 
    # Your stats are always 100%, so if the enemy troop stats are below
    # the editable ratio below; that means they are considered VERY WEAK.
    # By default this is 40%.
    :ratio => 40 ,
 
   
    # What Actor One Will Say
    1 => [
           "Encounter Very Weak Enemies1", 80, 100, 0,
         ],    
 
 
    # What Actor Two Will Say
    2 => [
           "Encounter Very Weak Enemies1", 80, 100, 0,
         ],
 
         
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WEAK ENEMIES?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; WEAK_ENEMIES = { # <= Do Not Touch This Line
 
    # Same as Very Weak Enemies, but should be higher
    :ratio => 80 ,
 
   
    # What Actor One Will Say
    1 => [
           "Encounter Weak Enemies1", 80, 100, 0,
         ],
 
 
    # What Actor Two Will Say
    2 => [
           "Encounter Weak Enemies1", 80, 100, 0,
           "Encounter Weak Enemies2", 80, 100, 0,
         ],
         
         
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * EQUAL ENEMIES?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; EQUAL_ENEMIES = { # <= Do Not Touch This Line
 
  # There is no Ratio for Equal Enemies
 
  # What Actor One Will Say
  1 => [
         "Encounter Equal Enemies1", 80, 100, 0,
         "Encounter Equal Enemies2", 80, 100, 0,
         "Encounter Equal Enemies3", 80, 100, 0,
       ],
   
 
  # What Actor Two Will Say
  2 => [
         "Encounter Equal Enemies1", 80, 100, 0,
         "Encounter Equal Enemies2", 80, 100, 0,
       ],
       
       
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * STRONG ENEMIES?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; STRONG_ENEMIES = { # <= Do Not Touch This Line
 
    # If your stats are 100% and the enemy is 120%, they are 20% stronger than you
    :ratio => 120 ,
   
 
    # What Actor One Will Say
    1 => [
           "Encounter Strong Enemies1", 80, 100, 0,
           "Encounter Strong Enemies2", 80, 100, 0,
         ],  
     
         
    # What Actor Two Will Say
    2 => [
           "Encounter Strong Enemies1", 80, 100, 0,
           "Encounter Strong Enemies2", 80, 100, 0,
         ],
 
         
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * VERY STRONG ENEMIES?
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; VERY_STRONG_ENEMIES = { # <= Do Not Touch This Line
 
    # Same as Strong Enemies, but should be higher
    :ratio => 160 ,
 
 
    # What Actor One Will Say
    1 => [
           "Encounter Very Strong Enemies1", 80, 100, 0,
           "Encounter Very Strong Enemies2", 80, 100, 0,
         ],
 
     
    # What Actor Two Will Say
    2 => [
           "Encounter Very Strong Enemies1", 80, 100, 0,
           "Encounter Very Strong Enemies2", 80, 100, 0,
         ],
         
         
         
         
 
 
  #=============================================================================
  #    Battle Skills/Items Voices
  #-----------------------------------------------------------------------------
  #   These are generic things that your actors will say when using an skill/item
  #   in battle. You can use note tags on specific skills/items, this is
  #   just for the more generic skill/items (meaning your actor will always say something).
  #=============================================================================
 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN USING AN ITEM
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; USING_ITEMS = { # <= Do Not Touch This Line
 
    # What Actor One Will Say when using an generic item
    1 => [
           "Using Item1", 80, 100, 10,      # Waits 10 frames before applying item effects
         ],  
 
 
    # What Actor Two Will Say when using an generic item
    2 => [
           "Using Item1", 80, 100, 10,
         ],
         
         
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN USING A SKILL
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; USING_SKILLS = { # <= Do Not Touch This Line
 
    # What Actor One Will Say when using a generic skill
    1 => [
           #"Using Generic Skill01", 80, 100, 0,
         ],  
 
 
    # What Actor Two Will Say when using a generic skill
    2 => [
           #"Using Generic Skill01", 80, 100, 0,
         ],
 
       
       
 
 
 
  #=============================================================================
  #    Battle Voices
  #-----------------------------------------------------------------------------
  #   These voices are heard throughout the battle, such as when attacking,
  #   using a skill or taking damage, etc
  #=============================================================================
 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ACTOR IS ATTACKING
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; ACTOR_ATTACKING = { # <= Do Not Touch This Line
 
    # What Actor One Will Say when Normal Attacking
    1 => [
           "Attack01", 80, 100, 0,
           "Attack02", 80, 100, 0,
           "Attack03", 80, 100, 0,
           "Attack04", 80, 100, 0,
           "Attack05", 80, 100, 0,
           "Attack06", 80, 100, 0,
           "Attack07", 80, 100, 0,
           "Attack08", 80, 100, 0,
           "Attack09", 80, 100, 0,
           "Attack10", 80, 100, 0,
         ],
 
     
    # What Actor Two Will Say when Normal Attacking
    2 => [
           "Attack01", 80, 100, 0,
           "Attack02", 80, 100, 0,
           "Attack03", 80, 100, 0,
         ],
         
         
    12 =>[
           "attack", 80, 100, 0,
         ],
         
 
 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ACTOR MISSED THE ENEMY
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; MISSED_ENEMY = { # <= Do Not Touch This Line
 
    # What Actor One Will Say when they missed the enemy
    1 => [
           #"Missed Enemy01", 80, 100, 0,
         ],
 
 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ACTOR EVADED ENEMY ATTACK
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; DODGED_ENEMY = { # <= Do Not Touch This Line
 
    # What Actor One Will Say when they evaded an enemy attack
    1 => [
           #"Dodged Enemy Attack01", 80, 100, 0,
         ],
       
       
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ACTOR TAKES LITTLE DAMAGE
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; LITTLE_DAMAGE = { # <= Do Not Touch This Line
 
    # Percentage of Health that must be lost from an individual attack for these
    # to be played
    :ratio => 15 ,
 
   
    # What Actor One Will Say when Hurt this much
    1 => [
           "Little Damage1", 80, 100, 10,
           "Little Damage2", 80, 100, 10,
           "Little Damage3", 80, 100, 10,
         ],
     
     
    # What Actor Two Will Say when Hurt this much
    2 => [
           "Little Damage1", 80, 100, 10,
           "Little Damage2", 80, 100, 10,
         ],
         
         
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ACTOR TAKES SIGNIFICANT DAMAGE
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; SIGNIFICANT_DAMAGE = { # <= Do Not Touch This Line
 
    # Percentage of Health that must be lost from an individual attack for these
    # to be played
    :ratio => 35 ,
 
    # What Actor One Will Say when Hurt this much
    1 => [
           "Significant Damage1", 80, 100, 10,
           "Significant Damage2", 80, 100, 10,
           "Significant Damage3", 80, 100, 10,
         ],  
     
 
    # What Actor Two Will Say when Hurt this much
    2 => [
           "Significant Damage1", 80, 100, 10,
         ],
         
     
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ACTOR TAKES HEAVY DAMAGE
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; HEAVY_DAMAGE = { # <= Do Not Touch This Line
 
    # Percentage of Health that must be lost from an individual attack for these
    # to be played
    :ratio => 50 ,
 
    # What Actor One Will Say when Hurt this much
    1 => [
           "Heavy Damage1", 80, 100, 10,
           "Heavy Damage2", 80, 100, 10,
           "Heavy Damage3", 80, 100, 10,
         ],
     
 
    # What Actor Two Will Say when Hurt this much
    2 => [
           "Heavy Damage1", 80, 100, 10,
           "Heavy Damage2", 80, 100, 10,
         ],
         
         
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ACTOR TAKES MASSIVE DAMAGE
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; MASSIVE_DAMAGE = { # <= Do Not Touch This Line
 
    # Percentage of Health that must be lost from an individual attack for these
    # to be played
    :ratio => 65 ,
 
 
    # What Actor One Will Say when Hurt this much
    1 => [
           "Massive Damage1", 80, 100, 10,
         ],  
 
 
    # What Actor Two Will Say when Hurt this much
    2 => [
           "Massive Damage1", 80, 100, 10,
         ],  
 
         
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ACTOR TAKES DAMAGE, BUT NOTHING THEY CAN'T SHRUG OFF
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; DEFAULT_DAMAGE = { # <= Do Not Touch This Line
 
 
    # What Actor One Will Say when Hurt in battle
    1 => [
           "Default Damage1", 80, 100, 10,
         ],  
 
 
    # What Actor Two Will Say when Hurt in battle
    2 => [
           "Default Damage1", 80, 100, 10,
         ],
 
 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ACTOR HAS THEIR HP OR MP RESTORED, EITHER BY ITEMS OR MAGIC
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; HP_MP_RESTORE = { # <= Do Not Touch This Line
    
    # Allowed to speak if this actor healed themself?
    :self_heal_speak  =>  true ,
    
 
    # What Actor One Will Say when Healed in battle
    1 => [
           "HP_MP Restore1", 80, 100, 10,
         ],
 
 
    # What Actor Two Will Say when Healed in battle
    2 => [
           "HP_MP Restore1", 80, 100, 10,
         ],
 
 
         
         
         
  #=============================================================================
  #    Death & Revive Voices
  #-----------------------------------------------------------------------------
  #   These voices are heard when an actor is knockout in battle or when they
  #   are revived in battle either via magic or items
  #=============================================================================
 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ACTOR HAS JUST BEEN KO'D IN BATTLE
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # Voices to play when an actor dies
  }; DEATH_VOICE = { # <= Do Not Touch This Line
 
 
    # What Actor One Will Say when they die
    1 => [
           "Death Cry1", 80, 100, 10,
         ],
 
 
    # What Actor Two Will Say when they die
    2 => [
           "Death Cry1", 80, 100, 10,
           "Death Cry2", 80, 100, 10,
         ],
 
 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ACTOR HAS JUST BEEN REVIVED IN BATTLE
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; REVIVED_VOICE = { # <= Do Not Touch This Line
 
 
    # What Actor One Will Say when Revived in battle
    1 => [
           "HP_MP Restore1", 80, 100, 10,
         ],
                                                 
         
         
         
         
  #=============================================================================
  #    Escape Voices
  #-----------------------------------------------------------------------------
  #   These voices are heard when you are attempting to escape from battle and
  #   includes: Escape Attempt Voices, Escape Success Voices & Escape Failure Voices.
  #   An Actor will be chosen at random to speak when an Escape Attempt is performed
  #=============================================================================
 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ATTEMPTING TO ESCAPE FROM BATTLE
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; ESCAPE_ATTEMPT_VOICE = { # <= Do Not Touch This Line
 
 
    # What Actor One Will Say when they attempt to escape battle
    1 => [
           "Escape Attempt1", 80, 100, 10,
           "Escape Attempt2", 80, 100, 10,
           "Escape Attempt3", 80, 100, 10,
         ],      
     
 
    # What Actor Two Will Say when they attempt to escape battle
    2 => [
           "Escape Attempt1", 80, 100, 10,
         ],
 
 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ESCAPE IS SUCCESSFUL
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; SUCCESSFUL_ESCAPE = { # <= Do Not Touch This Line
 
 
    # What Actor One Will Say when they successfully escape from battle
    1 => [
           "Successful Escape1", 80, 100, 0,
           "Successful Escape2", 80, 100, 0,
         ],  
 
 
    # What Actor Two Will Say when they successfully escape from battle
    2 => [
           "Successful Escape1", 80, 100, 0,
         ],
 
 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN ESCAPE WAS A FAILURE
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; FAILED_ESCAPE = { # <= Do Not Touch This Line
 
 
    # What Actor One Will Say when they fail to escape from battle
    1 => [
           "Failed Escape1", 80, 100, 0,
           "Failed Escape2", 80, 100, 0,
         ],  
 
 
    # What Actor Two Will Say when they fail to escape from battle
    2 => [
           "Failed Escape1", 80, 100, 0,
         ],
         
         
         
         
         
  #=============================================================================
  #    Battle Victory Voices
  #-----------------------------------------------------------------------------
  #   These voices are heard when you are victorious in battle, this includes:
  #   Tough Battle Voices, Long Battle Voices, Quick Battle Voices, Level Up Voices
  #=============================================================================
 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN BATTLE TOOK ITS TOLL ON YOUR PARTY
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; THAT_WAS_TOUGH = { # <= Do Not Touch This Line
 
    # By default this is 50%, so if you win a battle with 50% LESS HP than what
    # you went in with, these voices will play
    :ratio => 50 ,
 
 
    # What Actor One Will Say when this occurs
    1 => [
           "That Was Tough Victory1", 80, 100, 0,
           "That Was Tough Victory2", 80, 100, 0,
         ],
 
 
    # What Actor Two Will Say when this occurs
    2 => [
           "That Was Tough Victory1", 80, 100, 0,
         ],
         
         
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN BATTLE DIDN'T TAKE VERY LONG
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; THAT_WAS_EASY = { # <= Do Not Touch This Line
 
 
    # By default this is 3, so if a battle took three turns or less,
    # the following voices will play
    :ratio => 3 ,
 
 
    # What Actor One Will Say when a battle didn't take too long
    1 => [
           "That Was Easy Victory1", 80, 100, 0,
           "That Was Easy Victory2", 80, 100, 0,
           "That Was Easy Victory3", 80, 100, 0,
           "That Was Easy Victory4", 80, 100, 0,
         ],
     
     
    # What Actor Two Will Say when a battle didn't take too long
    2 => [
           "That Was Easy Victory1", 80, 100, 0,
           "That Was Easy Victory2", 80, 100, 0,
           "That Was Easy Victory3", 80, 100, 0,
         ],
         
         
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN BATTLE TOOK A VERY LONG TIME
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; BATTLE_TOOK_AGES = { # <= Do Not Touch This Line
 
    # By default this is 15, so it means the battle needs to have
    # taken 15 turns or more for the following voices to be played
    :ratio => 15 ,
 
 
    # What Actor Two Will Say when battle took a long time
    2 => [
           "Battle Took Ages Victory1", 80, 100, 0,
         ],
         
     
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * WHEN VICTORY LEADS TO LEVEL UP
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; LEVELUP_VICTORY = { # <= Do Not Touch This Line
 
    # You MUST use the wait frame timer (last number per voice) per voice as
    # appropriate. Due to RPGMaker liking to make everyone level up at the same
    # time, the wait timer is the only way to stop everyone who just leveled up
    # from talking at once.
 
 
    # What Actor One Will Say when LevelUp Occurs
    1 => [
           "Normal Victory1", 80, 100, 120,
         ],
         
    # What Actor Two Will Say when LevelUp Occurs
    2 => [
           "Normal Victory1", 80, 100, 120,
         ],
 
         
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * NORMAL VICTORY
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  }; NORMAL_VICTORY = { # <= Do Not Touch This Line
 
  # This is what your actors will say normally if the aboves are not met
 
 
    # What Actor One Will Say when a battle resulted in victory
    1 => [
           "Normal Victory1", 80, 100, 0,
           "Normal Victory2", 80, 100, 0,
           "Normal Victory3", 80, 100, 0,
           "Normal Victory4", 80, 100, 0,
           "Normal Victory5", 80, 100, 0,
           "Normal Victory6", 80, 100, 0,
         ],
     
     
    # What Actor Two Will Say when a battle resulted in victory
    2 => [
           "Normal Victory1", 80, 100, 0,
           "Normal Victory2", 80, 100, 0,
           "Normal Victory3", 80, 100, 0,
           "Normal Victory4", 80, 100, 0,
           "Normal Victory5", 80, 100, 0,
           "Normal Victory6", 80, 100, 0,
         ],
         
         
         
         
         
         
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#                                                        -=
};    # End Of Editable Region           ////            ==
#                                                        =-
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
 
 
 
 
 
  CURRENT_VERSION = 2.6
  ENEMY_VOICES_IMPORTED = !$diamondandplatinum3_scripts[:EnemyBattleVoices].nil?
  #------------------------------------------------------------------------
  # * New Method: Check Version Compatibility
  #------------------------------------------------------------------------
  def self.check_version_compatibility( version )
    return :outdated_version if version > CURRENT_VERSION
    return :outdated_patch   if version < CURRENT_VERSION
    return :compatible
  end
  #------------------------------------------------------------------------
  # * New Method: Play Voice
  #------------------------------------------------------------------------
  def self.play_voice( voice_array, actor_id )
    return true if check_if_actor_muted(actor_id)
   
    # If voice_array is not nil AND not empty
    if voice_array && !voice_array.empty?
      index = rand(voice_array.size / 4) * 4
      if voice_array[index].is_a?(String) && voice_array[index + 1].is_a?(Integer) && voice_array[index + 2].is_a?(Integer)
       
        # Get the Actor Folder Name
        if !$game_system.actor_voices_names.nil? && $game_system.actor_voices_names.size > actor_id && $game_system.actor_voices_names[actor_id].is_a?(String) && $game_system.actor_voices_names[actor_id] != ""
          actor_folder_name = $game_system.actor_voices_names[actor_id]
        else
          actor_folder_name = $game_actors[actor_id].name
        end
        
        # Get Path to File
        pathtofile = "/" + FOLDER_DIRECTORY_NAME + "/" + actor_folder_name + "/" + voice_array[index]
       
        # Play Voice
        RPG::SE.new(pathtofile, voice_array[index + 1], voice_array[index + 2]).play
       
        # Wait if necessary
        SceneManager.scene.wait(voice_array[index + 3]) unless !voice_array[index + 3].is_a?(Integer) || !SceneManager.scene_is?(Scene_Battle)
        return true
      end
    end
    # We return true and false because during battle start and victory, if an actor
    # doesn't have a voice clip for one condition, we'll try to find another met
    # condition in which the actor DOES have a voice.
    return false
  end
  #------------------------------------------------------------------------
  # * New Method: Allowed to Play Voice?
  #------------------------------------------------------------------------
  def self.allowed_to_play_voice?()
    return SceneManager.scene_is?(Scene_Battle)
  end
  #------------------------------------------------------------------------
  # * New Method: Allowed to Speak?
  #------------------------------------------------------------------------
  def self.allowed_to_speak?()
    return rand(100) < VOICE_FREQUENCY
  end
  #------------------------------------------------------------------------
  # * New Method: Check For Mute Actor
  #------------------------------------------------------------------------
  def self.check_if_actor_muted(actor_id)
    # Don't Play Sound if Muted
    return true if $game_switches[EVENT_SWITCH_ID]
    return $game_actors[actor_id].states.any? { |state| SILENCE_STATES.include?(state.id) }
  end
  #------------------------------------------------------------------------
  # * New Method: Get Random Battle Actor ID
  #------------------------------------------------------------------------
  def self.get_battle_actor_id()
    # Get a Battle Actor ID, who is to speak
    actor_ids = []
    $game_party.battle_members.each do |ally|
      actor_ids.push(ally.id) if ally.alive?
    end
    return actor_ids[rand(actor_ids.size)]
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Party Needs Healing" Voice
  #------------------------------------------------------------------------
  def self.play_party_needs_healing_voice(actor_id = 0)
    return true if !allowed_to_play_voice?()
    actor_id = actor_id != 0 ? actor_id : get_battle_actor_id()
    return play_voice(PARTY_NEEDS_HEALING[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Too Many Enemies" Voice
  #------------------------------------------------------------------------
  def self.play_too_many_enemies_voice(actor_id = 0)
    return true if !allowed_to_play_voice?()
    actor_id = actor_id != 0 ? actor_id : get_battle_actor_id()
    return play_voice(TOO_MANY_ENEMIES[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Very Weak Enemies" Voice
  #------------------------------------------------------------------------
  def self.play_very_weak_enemies_voice(actor_id = 0)
    return true if !allowed_to_play_voice?()
    actor_id = actor_id != 0 ? actor_id : get_battle_actor_id()
    return play_voice(VERY_WEAK_ENEMIES[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Weak Enemies" Voice
  #------------------------------------------------------------------------
  def self.play_weak_enemies_voice(actor_id = 0)
    return true if !allowed_to_play_voice?()
    actor_id = actor_id != 0 ? actor_id : get_battle_actor_id()
    return play_voice(WEAK_ENEMIES[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Equal Enemies" Voice
  #------------------------------------------------------------------------
  def self.play_equal_enemies_voice(actor_id = 0)
    return true if !allowed_to_play_voice?()
    actor_id = actor_id != 0 ? actor_id : get_battle_actor_id()
    return play_voice(EQUAL_ENEMIES[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Strong Enemies" Voice
  #------------------------------------------------------------------------
  def self.play_strong_enemies_voice(actor_id = 0)
    return true if !allowed_to_play_voice?()
    actor_id = actor_id != 0 ? actor_id : get_battle_actor_id()
    return play_voice(STRONG_ENEMIES[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Very Strong Enemies" Voice
  #------------------------------------------------------------------------
  def self.play_very_strong_enemies_voice(actor_id = 0)
    return true if !allowed_to_play_voice?()
    actor_id = actor_id != 0 ? actor_id : get_battle_actor_id()
    return play_voice(VERY_STRONG_ENEMIES[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "I Missed Enemy" Voice
  #------------------------------------------------------------------------
  def self.play_missed_enemies_voice(actor_id)
    return true if !allowed_to_play_voice?() || !allowed_to_speak?()
    return play_voice(MISSED_ENEMY[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "I Evaded Enemy" Voice
  #------------------------------------------------------------------------
  def self.play_evaded_enemy_voice(actor_id)
    return true if !allowed_to_play_voice?() || !allowed_to_speak?()
    return play_voice(DODGED_ENEMY[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Normal Attack" Voice
  #------------------------------------------------------------------------
  def self.play_normal_attack_voice(actor_id)
    return true if !allowed_to_play_voice?() || !allowed_to_speak?()
    return play_voice(ACTOR_ATTACKING[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Using Skill" Voice
  #------------------------------------------------------------------------
  def self.play_skill_voice(actor_id, skill_id)
    return true if !allowed_to_play_voice?()
    voice = []
    $data_skills[skill_id].note.scan(/~ActorVoice:\s*#{actor_id.to_s}\,*\s*\"(.+?)\"\,*\s*(\d*)\,*\s*(\d*)\,*\s*(\d*)/im).collect{ |voice_info|
      unless voice_info.empty?
        voice.push(voice_info[0])
        voice.push(voice_info[1] != "" ? voice_info[1].to_i : 80)
        voice.push(voice_info[2] != "" ? voice_info[2].to_i : 100)
        voice.push(voice_info[3] != "" ? voice_info[3].to_i : 0)
      end
    }
   
    # Modify Skill Voice to Generic Skill Voice if there is no specific voice for this Skill
    if voice.empty?
      return true if SKILLS_NOT_TO_PLAY_VOICE_FOR.include?(skill_id) || !allowed_to_speak?()
      voice = USING_SKILLS[actor_id]
    end
   
    return play_voice( voice, actor_id )
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Using Item" Voice
  #------------------------------------------------------------------------
  def self.play_item_voice(actor_id, item_id)
    return true if !allowed_to_play_voice?()
    voice = []
    $data_items[item_id].note.scan(/~ActorVoice:\s*#{actor_id.to_s}\,*\s*\"(.+?)\"\,*\s*(\d*)\,*\s*(\d*)\,*\s*(\d*)/im).collect{ |voice_info|
      unless voice_info.empty?
        voice.push(voice_info[0])
        voice.push(voice_info[1] != "" ? voice_info[1].to_i : 80)
        voice.push(voice_info[2] != "" ? voice_info[2].to_i : 100)
        voice.push(voice_info[3] != "" ? voice_info[3].to_i : 0)
      end
    }
   
    # Modify Item Voice to Generic Item Voice if there is no specific voice for this item
    if voice.empty?
      return true if !allowed_to_speak?()
      voice = USING_ITEMS[actor_id]
    end
   
    return play_voice( voice, actor_id )
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Using Skill/Item" Voice
  #------------------------------------------------------------------------
  def self.play_skill_or_item_voice(actor_id, item)
    #~~~~~ Using A Skill ~~~~~#
    if item.is_a?(RPG::Skill)
      if item.id == 1 # Attack
        play_normal_attack_voice(actor_id)
      else # Another skill besides Attack
        play_skill_voice(actor_id, item.id)
      end
 
    #~~~~~ Using An Item ~~~~~#
    else
      play_item_voice(actor_id, item.id)
    end
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Death" Voice
  #------------------------------------------------------------------------
  def self.play_death_voice(actor_id)
    return true if !allowed_to_play_voice?()
    return play_voice(DEATH_VOICE[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "I Leveled Up" Voice
  #------------------------------------------------------------------------
  def self.play_leveledup_voice(actor_id)
    return true if !allowed_to_play_voice?()
    return false unless LEVELUP_VICTORY[actor_id] # Array is not nil
    # Wait For Actor To Finish Talking
    index = rand(LEVELUP_VICTORY[actor_id].size / 4) * 4
    voice = [LEVELUP_VICTORY[actor_id][index],      LEVELUP_VICTORY[actor_id][index + 1],
             LEVELUP_VICTORY[actor_id][index + 2],  LEVELUP_VICTORY[actor_id][index + 3]]
    # Return False if Failed to Play Voice
    return false unless play_voice(voice, actor_id)
    # Wait for Voice to Quell if Necessary
    if voice[3].is_a?(Integer)
      voice[3].times{ |i| SceneManager.scene.update_basic() }
    end
    return true
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Restored HP/MP" Voice
  #------------------------------------------------------------------------
  def self.play_healed_voice(actor_id)
    return true if !allowed_to_play_voice?() || !allowed_to_speak?()
    return play_voice(HP_MP_RESTORE[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Revived" Voice
  #------------------------------------------------------------------------
  def self.play_revived_voice(actor_id)
    return true if !allowed_to_play_voice?()
    return play_voice(REVIVED_VOICE[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Default Damage" Voice
  #------------------------------------------------------------------------
  def self.play_default_damage_voice(actor_id)
    return true if !allowed_to_play_voice?() || !allowed_to_speak?()
    return play_voice(DEFAULT_DAMAGE[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Little Damage" Voice
  #------------------------------------------------------------------------
  def self.play_little_damage_voice(actor_id)
    return true if !allowed_to_play_voice?() || !allowed_to_speak?()
    return play_voice(LITTLE_DAMAGE[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Significant Damage" Voice
  #------------------------------------------------------------------------
  def self.play_significant_damage_voice(actor_id)
    return true if !allowed_to_play_voice?() || !allowed_to_speak?()
    return play_voice(SIGNIFICANT_DAMAGE[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Heavy Damage" Voice
  #------------------------------------------------------------------------
  def self.play_heavy_damage_voice(actor_id)
    return true if !allowed_to_play_voice?() || !allowed_to_speak?()
    return play_voice(HEAVY_DAMAGE[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Massive Damage" Voice
  #------------------------------------------------------------------------
  def self.play_massive_damage_voice(actor_id)
    return true if !allowed_to_play_voice?() || !allowed_to_speak?()
    return play_voice(MASSIVE_DAMAGE[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Escape Attempt" Voice
  #------------------------------------------------------------------------
  def self.play_escape_attempt_voice(actor_id)
    return true if !allowed_to_play_voice?()
    return play_voice(ESCAPE_ATTEMPT_VOICE[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Escape Successful" Voice
  #------------------------------------------------------------------------
  def self.play_escape_successful_voice(actor_id, force_allow = false)
    # When You Escape, you are now on Scene_Map instead of Scene_Battle
    # So force_allow will let you play the voice if you did infact just escape from battle
    return true if !allowed_to_play_voice?() && !force_allow
    return play_voice(SUCCESSFUL_ESCAPE[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Escape Failed" Voice
  #------------------------------------------------------------------------
  def self.play_escape_failed_voice(actor_id)
    return true if !allowed_to_play_voice?()
    return play_voice(FAILED_ESCAPE[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Default Victory" Voice
  #------------------------------------------------------------------------
  def self.play_default_victory_voice(actor_id = 0)
    return true if !allowed_to_play_voice?()
    actor_id = actor_id != 0 ? actor_id : get_battle_actor_id()
    return play_voice(NORMAL_VICTORY[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Battle Was Easy" Voice
  #------------------------------------------------------------------------
  def self.play_battle_was_easy_voice(actor_id = 0)
    return true if !allowed_to_play_voice?()
    actor_id = actor_id != 0 ? actor_id : get_battle_actor_id()
    return play_voice(THAT_WAS_EASY[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Very Long Battle" Voice
  #------------------------------------------------------------------------
  def self.play_very_long_battle_voice(actor_id = 0)
    return true if !allowed_to_play_voice?()
    actor_id = actor_id != 0 ? actor_id : get_battle_actor_id()
    return play_voice(BATTLE_TOOK_AGES[actor_id], actor_id)
  end
  #------------------------------------------------------------------------
  # * New Method: Play "Party Was Badly Injured" Voice
  #------------------------------------------------------------------------
  def self.play_party_was_badly_injured_voice(actor_id = 0)
    return true if !allowed_to_play_voice?()
    actor_id = actor_id != 0 ? actor_id : get_battle_actor_id()
    return play_voice(THAT_WAS_TOUGH[actor_id], actor_id)
  end
 
end # BattleVoices Module
end # DiamondandPlatinum3 Module
 
 
 
 
#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
#  This class handles system data. It saves the disable state of saving and 
# menus. Instances of this class are referenced by $game_system.
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias dp3_gamesys_init_1s098yu9j                                 initialize
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :actor_voices_names
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(*args)
    dp3_gamesys_init_1s098yu9j(*args) # Call Original Method
    actor_voices_names = Array.new()
  end
end


#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # * Set Actor Voice Name
  #--------------------------------------------------------------------------
  def set_actor_voice_name(id, name)
    unless id.is_a?(Integer); msgbox_p("You did not insert a Valid ID for the Actor"); return; end
    unless name.is_a?(String); msgbox_p("You did not insert a Valid Name for the Actor"); return; end
    
    $game_system.actor_voices_names = Array.new() if $game_system.actor_voices_names.nil?
    $game_system.actor_voices_names[id] = name
  end
end


#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================
 
class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias dp3_scenebattle_poststart_1s098yu9j               post_start
  alias dp3_scenebattle_applyitemeffects_1s098yu9j        apply_item_effects
 
  #--------------------------------------------------------------------------
  # * Aliased Method: Post-Start Processing
  #--------------------------------------------------------------------------
  def post_start(*args)
    dp3_play_battle_start_voice()    
    dp3_scenebattle_poststart_1s098yu9j()
  end
 
  #--------------------------------------------------------------------------
  # * New Method: Play Battle Start Voice
  #--------------------------------------------------------------------------
  def dp3_play_battle_start_voice
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Party Needs Healing?
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    party_total_hp = party_current_hp = 0
    $game_party.battle_members.each {|ally| party_total_hp += ally.mhp }
    party_current_hp = party_total_hp
    $game_party.battle_members.each {|ally| party_current_hp -= (ally.mhp - ally.hp) }
   
    if party_current_hp < party_total_hp * (DiamondandPlatinum3::BattleVoices::PARTY_NEEDS_HEALING[:ratio] * 0.01)
      return if DiamondandPlatinum3::BattleVoices::play_party_needs_healing_voice()
    end
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Too many enemies?
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    if $game_troop.members.size > $game_party.members.size + DiamondandPlatinum3::BattleVoices::TOO_MANY_ENEMIES[:ratio]
      return if DiamondandPlatinum3::BattleVoices::play_too_many_enemies_voice()
    end
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Which side is stronger?
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    strongest_enemy_stats   = [ 0, 0, 0, 0 ]
    strongest_party_stats   = [ 0, 0, 0, 0 ]
   
    $game_troop.members.each do |enemy|
      strongest_enemy_stats[0] = enemy.atk if enemy.atk > strongest_enemy_stats[0]
      strongest_enemy_stats[1] = enemy.def if enemy.def > strongest_enemy_stats[1]
      strongest_enemy_stats[2] = enemy.mat if enemy.mat > strongest_enemy_stats[2]
      strongest_enemy_stats[3] = enemy.mdf if enemy.mdf > strongest_enemy_stats[3]
    end
   
    $game_party.battle_members.each do |ally|
      strongest_party_stats[0] = ally.atk if ally.atk > strongest_party_stats[0]
      strongest_party_stats[1] = ally.def if ally.def > strongest_party_stats[1]
      strongest_party_stats[2] = ally.mat if ally.mat > strongest_party_stats[2]
      strongest_party_stats[3] = ally.mdf if ally.mdf > strongest_party_stats[3]
    end
   
   
    enemy_power = strongest_enemy_stats[0] + strongest_enemy_stats[1] + strongest_enemy_stats[2] + strongest_enemy_stats[3]
    party_power = strongest_party_stats[0] + strongest_party_stats[1] + strongest_party_stats[2] + strongest_party_stats[3]
   
   
    return DiamondandPlatinum3::BattleVoices::play_very_weak_enemies_voice()     if enemy_power < party_power * (DiamondandPlatinum3::BattleVoices::VERY_WEAK_ENEMIES[:ratio] * 0.01)
    return DiamondandPlatinum3::BattleVoices::play_weak_enemies_voice()          if enemy_power < party_power * (DiamondandPlatinum3::BattleVoices::WEAK_ENEMIES[:ratio] * 0.01)
    return DiamondandPlatinum3::BattleVoices::play_very_strong_enemies_voice()   if enemy_power > party_power * (DiamondandPlatinum3::BattleVoices::VERY_STRONG_ENEMIES[:ratio] * 0.01)
    return DiamondandPlatinum3::BattleVoices::play_strong_enemies_voice()        if enemy_power > party_power * (DiamondandPlatinum3::BattleVoices::STRONG_ENEMIES[:ratio] * 0.01)
    return DiamondandPlatinum3::BattleVoices::play_equal_enemies_voice()
  end # def dp3_play_battle_start_voice
 
 
  #--------------------------------------------------------------------------
  # * Aliased Method: Apply Skill/Item Effect
  #--------------------------------------------------------------------------
  def apply_item_effects(*args)
    # Call Original Method
    dp3_scenebattle_applyitemeffects_1s098yu9j(*args)
    args[0].dp3_set_actor_said_thank_you_already() if args[0].actor?
   
    # If Result was a Miss, and an actor was not targeting an actor
    if !args[0].result.hit?
      if !args[0].actor? && @subject.actor?
        DiamondandPlatinum3::BattleVoices::play_missed_enemies_voice(@subject.id)
      elsif args[0].actor? && !@subject.actor?
        DiamondandPlatinum3::BattleVoices::play_evaded_enemy_voice(args[0].id)
      end
    end
  end

  #--------------------------------------------------------------------------
  # * Overwritten Method: Show Normal Animation
  #--------------------------------------------------------------------------
  def show_normal_animation(*args)
    @dp3_speak_for_multiple_hits = true             # New Line
    animation = $data_animations[args[1]]
    if animation
      args[0].each do |target|
        dp3_on_animation_begin(target)              # New Line
        target.animation_id = args[1]
        target.animation_mirror = args[2]
        abs_wait_short unless animation.to_screen?
        dp3_on_animation_end(target)                # New Line
      end
      abs_wait_short if animation.to_screen?
    end
  end
  
  #--------------------------------------------------------------------------
  # * New Method: On Animation Begin (Multihit Included)
  #--------------------------------------------------------------------------
  def dp3_on_animation_begin(target)
    if @dp3_speak_for_multiple_hits
      if @subject.actor? && !target.actor?
        @dp3_speak_for_multiple_hits = DiamondandPlatinum3::BattleVoices::PLAY_MULTIPLE_VOICES_FOR_MULTIPLE_HITS
        DiamondandPlatinum3::BattleVoices::play_skill_or_item_voice(@subject.id, @subject.current_action.item)
      end
    end
  end
  
  #--------------------------------------------------------------------------
  # * New Method: On Animation End (Multihit Included)
  #--------------------------------------------------------------------------
  def dp3_on_animation_end(target)
  end
 
end # Class
 
 
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  This class handles actors. It is used within the Game_Actors class
# ($game_actors) and is also referenced from the Game_Party class ($game_party).
#==============================================================================
 
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias dp3_gameactor_useitem_1s098yu9j                 use_item
  alias dp3_gameactor_die_1s098yu9j                     die
  alias dp3_gameactor_changeexp_1s098yu9j               change_exp
  alias dp3_gameactor_itemeffectrecoverhp_1s098yu9j     item_effect_recover_hp
  alias dp3_gameactor_itemeffectrecovermp_1s098yu9j     item_effect_recover_mp
  alias dp3_gameactor_executedamage_1s098yu9j           execute_damage
  alias dp3_gameactor_removestate_1s098yu9j             remove_state
  alias dp3_gameactor_ondamage_1s098yu9j                on_damage
 
  #--------------------------------------------------------------------------
  # * Aliased Method: Use Skill/Item
  #--------------------------------------------------------------------------
  def use_item( *args )
    DiamondandPlatinum3::BattleVoices::play_item_voice(@actor_id, args[0].id) if args[0].is_a?(RPG::Item)
   
    # Call Original Method
    dp3_gameactor_useitem_1s098yu9j( *args )
  end
 
  #--------------------------------------------------------------------------
  # * Aliased Method: Knock Out
  #--------------------------------------------------------------------------
  def die( *args )
    DiamondandPlatinum3::BattleVoices::play_death_voice(@actor_id)
   
    # Call Original Method
    dp3_gameactor_die_1s098yu9j( *args )
  end
 
  #--------------------------------------------------------------------------
  # * Aliased Method: Change Experience
  #--------------------------------------------------------------------------
  def change_exp(*args)
    last_level = @level
    dp3_gameactor_changeexp_1s098yu9j(*args) # Call Original Method
    if @level > last_level
      DiamondandPlatinum3::BattleVoices::play_leveledup_voice(@actor_id)
    end
  end  
 
  #--------------------------------------------------------------------------
  # * Aliased Method: [HP Recovery] Effect
  #--------------------------------------------------------------------------
  def item_effect_recover_hp( *args )
    if args[0] != self && !@dp3__actor_said_thank_you
      DiamondandPlatinum3::BattleVoices::play_healed_voice(@actor_id)
      @dp3__actor_said_thank_you = true
    end
   
    # Call Original Method
    dp3_gameactor_itemeffectrecoverhp_1s098yu9j( *args )
  end
 
  #--------------------------------------------------------------------------
  # * Aliased Method: [MP Recovery] Effect
  #--------------------------------------------------------------------------
  def item_effect_recover_mp( *args )
    if args[0] != self && !@dp3__actor_said_thank_you
      DiamondandPlatinum3::BattleVoices::play_healed_voice(@actor_id)
      @dp3__actor_said_thank_you = true
    end
    # Call Original Method
    dp3_gameactor_itemeffectrecovermp_1s098yu9j( *args )
  end
 
 
  #--------------------------------------------------------------------------
  # * Aliased Method: Execute Damage
  #--------------------------------------------------------------------------
  def execute_damage(*args)
    current_hp = self.hp
    current_mp = self.mp
    dp3_gameactor_executedamage_1s098yu9j(*args)

    # Play Healed Voice if Healed and Allowed
    if current_hp < self.hp || current_mp < self.mp
      if args[0].enemy?
        if args[0] == self
          if DiamondandPlatinum3::BattleVoices::HP_MP_RESTORE[:self_heal_speak]
            DiamondandPlatinum3::BattleVoices::play_healed_voice(@actor_id)
          end
        else
          DiamondandPlatinum3::BattleVoices::play_healed_voice(@actor_id)
        end
      end
    end
  end
 
 
  #--------------------------------------------------------------------------
  # * Aliased Method: [Remove Debuff] Effect
  #--------------------------------------------------------------------------
  def remove_state(*args)
    play_voice = state?(death_state_id) && args[0] == death_state_id
    dp3_gameactor_removestate_1s098yu9j(*args) # Call Original Method
    DiamondandPlatinum3::BattleVoices::play_revived_voice(@actor_id) if play_voice
  end
 
 
 
  #--------------------------------------------------------------------------
  # * Aliased Method: Processing When Suffering Damage
  #--------------------------------------------------------------------------
  def on_damage(*args)
    dp3_play_appropriate_actor_damage_voice( args[0] ) if args[0] > 0 && (self.hp - args[0]) > 0
   
    # Call Original Method
    dp3_gameactor_ondamage_1s098yu9j( *args )
  end
 
  #--------------------------------------------------------------------------
  # * New Method: Get Actor Damage Voice Array
  #--------------------------------------------------------------------------
  def dp3_play_appropriate_actor_damage_voice( value )
    #~~~~~ Play Massive Damage Voice ~~~~~#
    if value > self.mhp * (DiamondandPlatinum3::BattleVoices::MASSIVE_DAMAGE[:ratio] * 0.01)
      return true if DiamondandPlatinum3::BattleVoices::play_massive_damage_voice(@actor_id)
    end
    #~~~~~ Play Heavy Damage Voice ~~~~~#
    if value > self.mhp * (DiamondandPlatinum3::BattleVoices::HEAVY_DAMAGE[:ratio] * 0.01)
      return true if DiamondandPlatinum3::BattleVoices::play_heavy_damage_voice(@actor_id)
    end
    #~~~~~ Play Significant Damage Voice ~~~~~#
    if value > self.mhp * (DiamondandPlatinum3::BattleVoices::SIGNIFICANT_DAMAGE[:ratio] * 0.01)
      return true if DiamondandPlatinum3::BattleVoices::play_significant_damage_voice(@actor_id)
    end
    #~~~~~ Play Little Damage Voice ~~~~~#
    if value > self.mhp * (DiamondandPlatinum3::BattleVoices::LITTLE_DAMAGE[:ratio] * 0.01)
      return true if DiamondandPlatinum3::BattleVoices::play_little_damage_voice(@actor_id)
    end
    #~~~~~ Play Pitance Damage Voice ~~~~~#
    return DiamondandPlatinum3::BattleVoices::play_default_damage_voice(@actor_id)
  end
 
  #--------------------------------------------------------------------------
  # * New Method: Set "Thank You" Voice Availability
  #--------------------------------------------------------------------------
  def dp3_set_actor_said_thank_you_already()
    @dp3__actor_said_thank_you = false
  end
end
 
 
 
 
 
 
 
 
 
#==============================================================================
# ** BattleManager
#------------------------------------------------------------------------------
#  This module manages battle progress.
#==============================================================================
 
module BattleManager
  class << self
    #------------------------------------------------------------------------
    # * Alias Listings
    #------------------------------------------------------------------------
    alias dp3_battlemanager_setup_1s098yu9j               setup
    alias dp3_battlemanager_processescape_1s098yu9j       process_escape
    alias dp3_battlemanager_processvictory_1s098yu9j      process_victory
    alias dp3_battlemanager_processdefeat_1s098yu9j       process_defeat
   
    #------------------------------------------------------------------------
    # * Aliased Method: Setup
    #------------------------------------------------------------------------
    def setup( *args )
      @dp3_party_start_total_hp = 0
      $game_party.battle_members.each { |ally| @dp3_party_start_total_hp += ally.hp }
   
     
      # Call Original Method
      dp3_battlemanager_setup_1s098yu9j( *args )
    end
   
    #------------------------------------------------------------------------
    # * Aliased Method: Escape Processing
    #------------------------------------------------------------------------
    def process_escape( *args )
      # Play Begin Escape Voice
      actor_to_speak = DiamondandPlatinum3::BattleVoices::get_battle_actor_id()
      DiamondandPlatinum3::BattleVoices::play_escape_attempt_voice(actor_to_speak)
     
      # Call Original Method
      escaped = dp3_battlemanager_processescape_1s098yu9j( *args )
     
      # Play Voice for either successful or unsucessful escape
      if escaped
        DiamondandPlatinum3::BattleVoices::play_escape_successful_voice(actor_to_speak, true)
      else
        DiamondandPlatinum3::BattleVoices::play_escape_failed_voice(actor_to_speak)
      end
     
      # Finish Up
      return escaped
    end
    #------------------------------------------------------------------------
    # * Aliased Method: Victory Processing
    #------------------------------------------------------------------------
    def process_victory(*args)
      dp3_play_victory_voice()
     
      # Call Original Method
      return dp3_battlemanager_processvictory_1s098yu9j(*args)
    end
   
    #--------------------------------------------------------------------------
    # * Aliased Method: Defeat Processing
    #--------------------------------------------------------------------------
    def process_defeat(*args)
      # This method is merely here in case the @can_lose instance variable is on.
      # Actors will say thank you when being revived after defeat. So to counteract
      # this we set the mute event_switch on
      es_id                   = DiamondandPlatinum3::BattleVoices::EVENT_SWITCH_ID
      es_on                   = ($game_switches[es_id] ||= false)
      $game_switches[es_id]   = true
      defeated                = dp3_battlemanager_processdefeat_1s098yu9j(*args)
      $game_switches[es_id]   = es_on
      return defeated
    end
 
    #------------------------------------------------------------------------
    # * New Method: Play Victory Voice
    #------------------------------------------------------------------------
    def dp3_play_victory_voice
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # Battle Took Ages?
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      if $game_troop.turn_count >= DiamondandPlatinum3::BattleVoices::BATTLE_TOOK_AGES[:ratio]
        return if DiamondandPlatinum3::BattleVoices::play_very_long_battle_voice()
      end
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # Party Was Badly Injured?
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      party_current_hp = 0
      $game_party.battle_members.each {|ally| party_current_hp += ally.hp }
      if party_current_hp < @dp3_party_start_total_hp * (DiamondandPlatinum3::BattleVoices::THAT_WAS_TOUGH[:ratio] * 0.01)
        return if DiamondandPlatinum3::BattleVoices::play_party_was_badly_injured_voice()
      end
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # Battle Was Easy?
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      if $game_troop.turn_count <= DiamondandPlatinum3::BattleVoices::THAT_WAS_EASY[:ratio]
        return if DiamondandPlatinum3::BattleVoices::play_battle_was_easy_voice()
      end
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # Default Victory Speech
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      DiamondandPlatinum3::BattleVoices::play_default_victory_voice()
    end # def
  end # class
end # module

 

 

Share this post


Link to post
Share on other sites

Hi there, don't mind me. I'm no longer an active user (3 years away and counting) but did a google search of my username and came across this thread.
My website that I used to host all of my scripts on is no longer active either. However in case you were still looking or interested, you can find all of my scripts available on pastebin.
https://pastebin.com/u/diamondandplatinum3

Cheers.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×