[XP] Enemy Elements

Started by ThallionDarkshine, November 14, 2012, 04:12:45 pm

Previous topic - Next topic

ThallionDarkshine

November 14, 2012, 04:12:45 pm Last Edit: April 24, 2013, 01:57:07 pm by ThallionDarkshine
Enemy Elements
Authors: ThallionDarkshine
Version: 0.2
Type: Enemy Stat Add-on
Key Term: Enemy Add-on



Introduction

This script adds some variety to your random battles. You can define different "elements" for enemies, each of which can change different stats such as MaxHP, MaxSP, Strength, Dexterity, and many more. Then, you can give each enemy a different set of possible "elements" that the script will randomly choose from to apply. Thus, you could make weaker enemies with the "element" of minion, as I did in the script.


Features


  • Spices up random battles.

  • You don't have to give any enemy an "element" if you don't want to.

  • Use an unlimited number of "elements".

  • Use combinations of elements.




Screenshots

You can't really capture stat changes in a screenshot.


Demo

None as of yet.


Script

Spoiler: ShowHide

class Game_Enemy
 ELEMENTS = {
   :minion => [[:maxhp, -50], [:atk, -25], [:maxsp, -63], [:exp, -50], [:gold, -50]],
   :brute => [[:maxhp, 12], [:atk, 3], [:maxsp, -21], [:exp, 4], [:gold, 4], [:dex, -9], [:agi, -8], [:mdef, -14]],
 }
 
 def self.elements(id)
   return case id
          when 0 then []
          else []
          end
 end
 
 alias tdks_elmnt_init initialize
 def initialize(troop_id, member_index)
   @maxhp_mod = @maxsp_mod = 100
   tdks_elmnt_init(troop_id, member_index)
   elements = Game_Enemy.elements(@enemy_id)
   @elements = elements.length > 0 ? elements[rand(elements.length)] : nil
   @atk_mod=@pdef_mod=@mdef_mod=@str_mod=@dex_mod=@agi_mod=@int_mod=@maxhp_mod=@maxsp_mod=@eva_mod=@exp_mod=@gold_mod=100
   @elements.each{|element|Game_Enemy::ELEMENTS[element].each{|i|instance_variable_set("@#{i[0]}_mod",i[1]+instance_variable_get("@#{i[0]}_mod"))}if Game_Enemy::ELEMENTS.keys.include?(element)}if @elements
   @hp = maxhp
   @sp = maxsp
 end
 
 alias tdks_eels_base_maxhp base_maxhp
 def base_maxhp
   return tdks_eels_base_maxhp * @maxhp_mod / 100
 end
 
 alias tdks_eels_base_maxsp base_maxsp
 def base_maxsp
   return tdks_eels_base_maxsp * @maxsp_mod / 100
 end
 
 alias tdks_eels_base_str base_str
 def base_str
   return tdks_eels_base_str * @str_mod / 100
 end
 
 alias tdks_eels_base_dex base_dex
 def base_dex
   return tdks_eels_base_dex * @dex_mod / 100
 end
 
 alias tdks_eels_base_agi base_agi
 def base_agi
   return tdks_eels_base_agi * @agi_mod / 100
 end
 
 alias tdks_eels_base_int base_int
 def base_int
   return tdks_eels_base_int * @int_mod / 100
 end
 
 alias tdks_eels_base_atk base_atk
 def base_atk
   return tdks_eels_base_atk * @atk_mod / 100
 end
 
 alias tdks_eels_base_pdef base_pdef
 def base_pdef
   return tdks_eels_base_pdef * @pdef_mod / 100
 end
 
 alias tdks_eels_base_mdef base_mdef
 def base_mdef
   return tdks_eels_base_mdef * @mdef_mod / 100
 end
 
 alias tdks_eels_base_eva base_eva
 def base_eva
   return tdks_eels_base_eva * @eva_mod / 100
 end
 
 alias tdks_eels_exp exp
 def exp
   return tdks_eels_exp * @exp_mod / 100
 end
 
 alias tdks_eels_gold gold
 def gold
   return tdks_eels_gold * @gold_mod / 100
 end
end



Instructions

To configure the script, go to the line 2.
Add any elements you want into the hash, using the format:
ELEMENT_NAME_AS_SYMBOL (that means it starts with ":") => [[STAT_NAME_AS_SYMBOL, PERCENT_CHANGE], [STAT_NAME_AS_SYMBOL, PERCENT_CHANGE]]

The different stats you can change are:
MaxHP -
:maxhp

MaxSP -
:maxsp

Strength -
:str

Dexterity -
:dex

Agility -
:agi

Intelligence -
:int

Attack -
:atk

Physical Defense -
:pdef

Magic Defence -
:mdef

Evasion -
:eva

Experience -
:exp

Gold Drop -
:gold


To make different enemies have a possibility of having different elements, go to line 7 of the script.
Add this to add a new enemy that has elements:
when ENEMY_ID then [[ELEMENT1_SET1, ELEMENT2_SET1], [ELEMENT1_SET2, ELEMENT2_SET2, ELEMENT2_SET3]]

Add as many element sets and elements as you want.


Compatibility

Probably compatible with everything except maybe enemy leveling scripts.


Credits and Thanks


  • ThallionDarkshine




Author's Notes

Nothing
--------------------------------------------------------------------------------

Heretic86

How does this script differ from the default "Element Efficiency"?
Current Scripts:
Heretic's Moving Platforms

Current Demos:
Collection of Art and 100% Compatible Scripts

(Script Demos are all still available in the Collection link above.  I lost some individual demos due to a server crash.)

ThallionDarkshine

Sorry, should have realized that the name would confuse people.
This script allows you to create basically enemy classes which give them stat changes. Thus this could make interesting battles by having multiple classes of the same enemy, each of which with different stats.

LiTTleDRAgo

November 14, 2012, 10:07:08 pm #3 Last Edit: November 14, 2012, 10:08:48 pm by LiTTleDRAgo
can you provide a demo?
I didn't understand how to use it

ThallionDarkshine

I don't think a demo would help, so I'll show you an example configuration and explain it.


ELEMENTS = {
  :minion => [[:maxhp, -50],[:str, -7],[:maxsp, -17]]
  :brute => [[:maxhp, 23],[:str, 4],[:dex, -7]]
}

def self.elements(id)
  return case id
             when 1 then [[:minion],[:minion, :brute],[]]
             else []
             end
end


In this example configuration, there are two different elements or classes. Minions are weaker enemies, while brutes are stronger.

The enemy with the id of 1 has several possible sets of elements. The first possible set is [:minion], meaning that the enemy has the class and stat changes of minion. The second possible set is [:minion, :brute], meaning that the enemy has both the class and stat changes of both minion and brute. The last class is [], meaning that the enemy has no classes.

When the player encounters the enemy with the id of 1, the script will randomly choose one of the sets to use for the enemy.

Vexus

So if I got this, if the monster in id 1 has brute element he would have a boost in his hp by 23 and 4 more strength but 7 less dexterity?

If yes this could be a cool script to have.
Current Project/s:

Heretic86

Quote from: ThallionDarkshine on November 14, 2012, 09:15:23 pm
Sorry, should have realized that the name would confuse people.
This script allows you to create basically enemy classes which give them stat changes. Thus this could make interesting battles by having multiple classes of the same enemy, each of which with different stats.


That makes much more sense.  So we can start off with like two Ghosts, one is a Water Ghost and the other is a Fire Ghost.  Gotcha.
Current Scripts:
Heretic's Moving Platforms

Current Demos:
Collection of Art and 100% Compatible Scripts

(Script Demos are all still available in the Collection link above.  I lost some individual demos due to a server crash.)

ThallionDarkshine

@vexus - You're pretty much right, except it does it by percent.

G_G

All it basically does is just a set of elements by random. If you set Ghost to have 4 different possible sets of elements, for every Ghost that gets created, it'll randomly choose one of those element sets. Each element set containing as many, or as few, elements as you want, with each element granting/decreasing attributes.

It's actually a really unique idea. Nice job Thallion.

ThallionDarkshine

Thanks, game_guy, I'm actually really surprised that you didn't think of it back when you were making millions of awesome scripts.

Agatio17

When I fight with this script an error occurs in lane 26:

TypeError

nil can't be coerced into Fixnum

Any solution? I like so much this script, please any solution ^^

PD: Sorry for bad english

ThallionDarkshine

Did you change anything in the configuration?

Agatio17

No, only copy and paste the script. I don't use the normal battle system, can this affect to this script?

ThallionDarkshine

Yeah, can you post the battle system script that you use?

Agatio17

It's a script for final fantasy typical battles, probably is too complex to use this script :(

#==============================================================================
# ¦ New_Battle
#------------------------------------------------------------------------------
# Compiled By : MakirouAru
#==============================================================================
# ¥£¥ XRXS_BP 3. Ÿ--˜ŽžHP‰ñ•œ ver.1.01 ¥£¥
# by fukuyama, ÷‰ë Ý"y

# Battle_End_Recovery
#
# í"¬Œã,̉ñ•œˆ--ƒ,ƒWƒ...[ƒ‹
#
# Request: stay
# Script: fukuyama
# Test: ƒmƒRƒmŽq
#
# URL: http://www4.big.or.jp/~fukuyama/rgss/Battle_End_Recovery.txt
#

module Battle_End_Recovery

module Scene_Battle_Module

# ‰ñ•œ--¦•Ï",ÌID
@@recovery_rate_variable_id = nil

# ‰ñ•œ--¦,ÌŽæ"¾
def battle_end_recovery_rate
if @@recovery_rate_variable_id.nil?
  @@recovery_rate_variable_id =
     $data_system.variables.index 'í"¬Œã,̉ñ•œ--¦'
  if @@recovery_rate_variable_id.nil?
     @@recovery_rate_variable_id = false
  end
end
return 0 unless @@recovery_rate_variable_id
return $game_variables[@@recovery_rate_variable_id]
end

# í"¬Œã,̉ñ•œˆ--
def battle_end_recovery

# ‰ñ•œ--¦
recovery_rate = battle_end_recovery_rate

# ‰ñ•œ--¦•Ï",ª,OˆÈŠO,©,ƒAƒNƒ^[,ª¶'¶,µ,Ä,¢,éê‡Aí"¬Œã,̉ñ•œˆ--,ðs,¤
if recovery_rate != 0 and not actor.dead?

  # ƒp[ƒeƒB,̃AƒNƒ^[-ˆ,Ƀ‹[ƒv
  $game_party.actors.each do |actor|

     # ‰ñ•œ--ŒvŽZ
     recovery_hp = (actor.maxhp / 100.0 * recovery_rate).truncate
     recovery_sp = (actor.maxsp / 100.0 * recovery_rate).truncate

     # ŽÀÛ,ɉñ•œ
     actor.hp += recovery_hp
     actor.sp += recovery_sp

     # ƒAƒjƒ[ƒVƒ‡ƒ"Ý'è
     actor.damage = - recovery_hp
     actor.damage_pop = true

  end

  # ƒXƒe[ƒ^ƒXƒEƒBƒ"ƒhƒE,ðXV
  @status_window.refresh

end
end

end # module Scene_Battle_Module
end # module Battle_End_Recovery

#------------------------------
# í"¬ƒV[ƒ",̍Ä'è‹`
#------------------------------
class Scene_Battle

# Scene_Battle--pƒ,ƒWƒ...[ƒ‹,ðƒCƒ"ƒNƒ‹[ƒh
include Battle_End_Recovery::Scene_Battle_Module

# Œ³,̃tƒF[ƒY,TŠJŽn,É•-¼,ð,Â,¯,é
alias battle_end_recovery_original_start_phase5 start_phase5

# ƒtƒF[ƒY,TŠJŽn,ðÄ'è‹`
def start_phase5

# í"¬Œã,̉ñ•œˆ--,ðŒÄ,яo,•
battle_end_recovery

# Œ³,̃tƒF[ƒY,TŠJŽn,ðŒÄ,яo,•
battle_end_recovery_original_start_phase5

end
end

# Battle_End_Recovery
# ¥£¥ XRXS_BP10. LEVEL UP!ƒEƒBƒ"ƒhƒE ¥£¥
# by ÷‰ë Ý"y

$data_system_level_up_se = ""  # ƒŒƒxƒ‹ƒAƒbƒvSEB"",Å-³,µB
$data_system_level_up_me = "" # ƒŒƒxƒ‹ƒAƒbƒvME

#==============================================================================
# ¡ Window_LevelUpWindow
#------------------------------------------------------------------------------
# @ƒoƒgƒ‹I--¹ŽžAƒŒƒxƒ‹ƒAƒbƒv,µ,½ê‡,ɃXƒe[ƒ^ƒX,ð•\Ž¦,•,éƒEƒBƒ"ƒhƒE,Å,•B
#==============================================================================
class Window_LevelUpWindow < Window_Base
#--------------------------------------------------------------------------
# œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
#--------------------------------------------------------------------------
def initialize(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
super(0, 128, 160, 192)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
self.z = 500
end
#--------------------------------------------------------------------------
# œ ƒŠƒtƒŒƒbƒVƒ...
#--------------------------------------------------------------------------
def refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
self.contents.clear
self.contents.font.color = system_color
self.contents.font.name = "Celestia Redux","Palatino Linotype","Book Antiqua","Times New Roman"
self.contents.font.size = 14
self.contents.draw_text( 0,  0, 160, 24, "Nivel↑")
self.contents.font.size = 18
self.contents.draw_text( 0, 28, 160, 24, $data_system.words.hp)
self.contents.draw_text( 0, 50, 160, 24, $data_system.words.sp)
self.contents.font.size = 14
self.contents.draw_text( 0, 72, 80, 24, $data_system.words.str)
self.contents.draw_text( 0, 94, 80, 24, $data_system.words.dex)
self.contents.draw_text( 0, 116, 80, 24, $data_system.words.agi)
self.contents.draw_text( 0, 138, 80, 24, $data_system.words.int)
self.contents.draw_text(92,  0, 128, 24, "»")
self.contents.draw_text(76, 28, 128, 24, "»")
self.contents.draw_text(76, 50, 128, 24, "»")
self.contents.draw_text(76, 72, 128, 24, "»")
self.contents.draw_text(76, 94, 128, 24, "»")
self.contents.draw_text(76, 116, 128, 24, "»")
self.contents.draw_text(76, 138, 128, 24, "»")
self.contents.font.color = normal_color
self.contents.draw_text( 0,  0, 88, 24, last_lv.to_s, 2)
self.contents.draw_text( 0, 28, 72, 24, "+" + up_hp.to_s, 2)
self.contents.draw_text( 0, 50, 72, 24, "+" + up_sp.to_s, 2)
self.contents.draw_text( 0, 72, 72, 24, "+" + up_str.to_s, 2)
self.contents.draw_text( 0, 94, 72, 24, "+" + up_dex.to_s, 2)
self.contents.draw_text( 0, 116, 72, 24, "+" + up_agi.to_s, 2)
self.contents.draw_text( 0, 138, 72, 24, "+" + up_int.to_s, 2)
self.contents.font.size = 20
self.contents.draw_text( 0,  0, 128, 24, actor.level.to_s, 2)
self.contents.draw_text( 0, 26, 128, 24, actor.maxhp.to_s, 2)
self.contents.draw_text( 0, 48, 128, 24, actor.maxsp.to_s, 2)
self.contents.draw_text( 0, 70, 128, 24, actor.str.to_s, 2)
self.contents.draw_text( 0, 92, 128, 24, actor.dex.to_s, 2)
self.contents.draw_text( 0, 114, 128, 24, actor.agi.to_s, 2)
self.contents.draw_text( 0, 136, 128, 24, actor.int.to_s, 2)
end
end
#==============================================================================
# ¡ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# œ 'ljÁEŒöŠJƒCƒ"ƒXƒ^ƒ"ƒX•Ï"
#--------------------------------------------------------------------------
attr_accessor :level_up_flags             # ¡SUBE DE NIVEL!•\Ž¦
end
#==============================================================================
# ¡ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# œ 'ljÁEŒöŠJƒCƒ"ƒXƒ^ƒ"ƒX•Ï"
#--------------------------------------------------------------------------
attr_accessor :exp_gain_ban             # EXPŽæ"¾ˆêŽž‹ÖŽ~
#--------------------------------------------------------------------------
# œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
#--------------------------------------------------------------------------
alias xrxs_bp10_initialize initialize
def initialize
@exp_gain_ban = false
xrxs_bp10_initialize
end
#--------------------------------------------------------------------------
# œ ƒXƒe[ƒg [EXP ,ðŠl"¾,Å,«,È,¢] "»'è
#--------------------------------------------------------------------------
alias xrxs_bp10_cant_get_exp? cant_get_exp?
def cant_get_exp?
if @exp_gain_ban == true
return true
else
return xrxs_bp10_cant_get_exp?
end
end
end
#==============================================================================
# ¡ Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# œ ƒAƒtƒ^[ƒoƒgƒ‹ƒtƒF[ƒYŠJŽn
#--------------------------------------------------------------------------
alias xrxs_bp10_start_phase5 start_phase5
def start_phase5
# EXP Šl"¾‹ÖŽ~
for i in 0...$game_party.actors.size
$game_party.actors[i].exp_gain_ban = true
end
xrxs_bp10_start_phase5
# EXP Šl"¾‹ÖŽ~,̉ðœ
for i in 0...$game_party.actors.size
$game_party.actors[i].exp_gain_ban = false
end
# EXP,ð‰Šú‰»
@exp_gained = 0
for enemy in $game_troop.enemies
# Šl"¾ EXP,ð'ljÁ         # ƒGƒlƒ~[,ª‰B,êó'Ô,Å,È,¢ê‡
@exp_gained += enemy.exp if not enemy.hidden
end
if $game_variables[59] >= 1
    $game_variables[60] = 100
    $game_variables[59] *= 25
    $game_variables[60] += $game_variables[59]
    @exp_gained *= $game_variables[60]
    @exp_gained /= 100
    $game_variables[60] = 0
    $game_variables[59] = 0
  end
# Ý'è
@phase5_step      = 0
@exp_gain_actor    = -1
# ƒŠƒUƒ‹ƒgƒEƒBƒ"ƒhƒE,ð•\Ž¦
@result_window.y -= 64
@result_window.visible = true
# ƒŒƒxƒ‹ƒAƒbƒv"»'è,Ö
phase5_next_levelup
end
#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒAƒtƒ^[ƒoƒgƒ‹ƒtƒF[ƒY)
#--------------------------------------------------------------------------
alias xrxs_bp10_update_phase5 update_phase5
def update_phase5
case @phase5_step
when 1
update_phase5_step1
else
xrxs_bp10_update_phase5
# ƒŒƒxƒ‹ƒAƒbƒv,µ,Ä,¢,éê‡,Í‹­§ƒoƒgƒ‹I--¹
battle_end(0) if @levelup_window != nil and @phase5_wait_count <= 0
end
end
#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒAƒtƒ^[ƒoƒgƒ‹ƒtƒF[ƒY 1 : ƒŒƒxƒ‹ƒAƒbƒv)
#--------------------------------------------------------------------------
def update_phase5_step1
# C ƒ{ƒ^ƒ",ª‰Ÿ,³,ê,½ê‡
if Input.trigger?(Input::C)
# ƒEƒBƒ"ƒhƒE,ð•Â,¶,ÄŽŸ,̃AƒNƒ^[,Ö
@levelup_window.visible = false if @levelup_window != nil
@status_window.level_up_flags[@exp_gain_actor] = false
phase5_next_levelup
end
end
#--------------------------------------------------------------------------
# œ ŽŸ,̃AƒNƒ^[,̃Œƒxƒ‹ƒAƒbƒv•\Ž¦,Ö
#--------------------------------------------------------------------------
def phase5_next_levelup
begin
# ŽŸ,̃AƒNƒ^[,Ö
@exp_gain_actor += 1
# ÅŒã,̃AƒNƒ^[,̏ꍇ
if @exp_gain_actor >= $game_party.actors.size
  # ƒAƒtƒ^[ƒoƒgƒ‹ƒtƒF[ƒYŠJŽn
  @phase5_step = 0
  return
end
actor = $game_party.actors[@exp_gain_actor]
if actor.cant_get_exp? == false
  # Œ»Ý,Ì"\--Í'l,ð•ÛŽ
  last_level = actor.level
  last_maxhp = actor.maxhp
  last_maxsp = actor.maxsp
  last_str = actor.str
  last_dex = actor.dex
  last_agi = actor.agi
  last_int = actor.int
  # ŒoŒ±'lŽæ"¾,ÌŒˆ'è"IuŠÔ("ä
  actor.exp += @exp_gained
  $game_switches[29] = true
  @result_window.visible = true
  # "»'è
  if actor.level > last_level
     # ƒŒƒxƒ‹ƒAƒbƒv,µ,½ê‡
     @status_window.level_up(@exp_gain_actor)
     if $data_system_level_up_se != ""
      Audio.se_stop
      Audio.se_play($data_system_level_up_se)
     end
     if $data_system_level_up_me != ""
      Audio.me_stop
      Audio.me_play($data_system_level_up_me)
     end
     @levelup_window = Window_LevelUpWindow.new(actor, last_level,
      actor.maxhp - last_maxhp, actor.maxsp - last_maxsp, actor.str - last_str,
      actor.dex - last_dex, actor.agi - last_agi, actor.int - last_int)
     @levelup_window.x = 160 * @exp_gain_actor
     @levelup_window.visible = true
     @phase5_wait_count = 40
     @phase5_step      = 1
     # ƒXƒe[ƒ^ƒXƒEƒBƒ"ƒhƒE,ðƒŠƒtƒŒƒbƒVƒ...
     @status_window.refresh
     return
  end
end
end until false
end
end
# ¥£¥ XRXS_17. ƒXƒŠƒbƒvƒ_ƒ[ƒW-hŒä^Œø‰--Ú×‰» ver.1.51 ¥£¥
# by ÷‰ë Ý"y, fukuyama
#==============================================================================
# ¡ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# œ ƒXƒŠƒbƒvƒ_ƒ[ƒW,ÌŒø‰"K--p
#--------------------------------------------------------------------------
alias xrxs_bp7_slip_damage_effect slip_damage_effect
def slip_damage_effect
# "'l,̏‰Šú‰»
slip_damage_percent = 0
slip_damage_plus = 0
# Œ»Ý•t‰Á,³,ê,Ä,¢,éƒXƒe[ƒg,Ì'†,©,çƒXƒŠƒbƒvƒ_ƒ[ƒW--L,è,̃,ƒm,ð'T,•
for i in @states
if $data_states[i].slip_damage
  # ,»,̃Xƒe[ƒg,ªŽ,Á,Ä,¢,éƒXƒŠƒbƒvƒ_ƒ[ƒW,Ì
  # Lvƒvƒ‰ƒXƒXƒe[ƒg,Ü,½,ÍLvƒ}ƒCƒiƒXƒXƒe[ƒg,ð"»'èB
  for j in $data_states[i].plus_state_set
     if $data_states[j] != nil
      if $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)(%|")/
         slip_damage_percent += $1.to_i
      elsif $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)$/
         slip_damage_plus += $1.to_i
      end
     end
  end
  for j in $data_states[i].minus_state_set
     if $data_states[j] != nil
      if $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)(%|")/
         slip_damage_percent -= $1.to_i
      elsif $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)$/
         slip_damage_plus -= $1.to_i
      end
     end
  end
end
end
if slip_damage_percent == 0 and slip_damage_plus == 0
xrxs_bp7_slip_damage_effect
else
# -h‹ï,ªƒXƒŠƒbƒv-hŒä,ª, ,éê‡,ð"»'è
for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  armor = $data_armors[i]
  next if armor == nil
  for j in armor.guard_state_set
     if $data_states[j] != nil
      if $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)(%|")/
         if slip_damage_percent > 0
          slip_damage_percent = [slip_damage_percent - $1.to_i, 0].max
         end
      end
      if $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)$/
         if slip_damage_percent > 0
          slip_damage_plus = [slip_damage_plus - $1.to_i, 0].max
         end
      end
     end
  end
end
# ƒ_ƒ[ƒW,ðÝ'è
self.damage = self.maxhp * slip_damage_percent / 100 + slip_damage_plus
# •ªŽU
if self.damage.abs > 0
  amp = [self.damage.abs * 15 / 100, 1].max
  self.damage += rand(amp+1) + rand(amp+1) - amp
end
# HP ,©,çƒ_ƒ[ƒW,ðŒ¸ŽZ
self.hp -= self.damage
# ƒƒ\ƒbƒhI--¹
return true
end
end
end
# ¥£¥ XRXS_BP 1. CP§"±"ü ver.15 ¥£¥
# by ÷‰ë Ý"y, ˜aŠó, Jack-R

#==============================================================================
# ¡ Scene_Battle_CP
#==============================================================================
class Scene_Battle_CP
#--------------------------------------------------------------------------
# œ ŒöŠJƒCƒ"ƒXƒ^ƒ"ƒX•Ï"
#--------------------------------------------------------------------------
attr_accessor  :stop                  # CP‰ÁŽZƒXƒgƒbƒv
#----------------------------------------------------------------------------
# œ ƒIƒuƒWƒFƒNƒg,̏‰Šú‰»
#----------------------------------------------------------------------------
def initialize
@battlers = []
@cancel = false
@agi_total = 0
# "z--ñ @count_battlers ,ð‰Šú‰»
@count_battlers = []
# ƒGƒlƒ~[,ð"z--ñ @count_battlers ,É'ljÁ
for enemy in $game_troop.enemies
@count_battlers.push(enemy)
end
# ƒAƒNƒ^[,ð"z--ñ @count_battlers ,É'ljÁ
for actor in $game_party.actors
@count_battlers.push(actor)
end
for battler in @count_battlers
@agi_total += battler.agi
end
for battler in @count_battlers
battler.cp = [[65535 * (rand(15) + 85) / 100 * battler.agi / @agi_total * 4, 0].max, 65535].min
end
end
#----------------------------------------------------------------------------
# œ CPƒJƒEƒ"ƒg,ÌŠJŽn
#----------------------------------------------------------------------------
def start
if @cp_thread != nil then
return
end
@cancel = false
@stop = false
# ,±,±,©,çƒXƒŒƒbƒh
@cp_thread = Thread.new do
while @cancel != true

  if @stop != true
     self.update # XV
     sleep(0.05)
  end
end
end
# ,±,±,Ü,ŃXƒŒƒbƒh
end
#----------------------------------------------------------------------------
# œ CPƒJƒEƒ"ƒgƒAƒbƒv
#----------------------------------------------------------------------------
def update
if @count_battlers != nil then
for battler in @count_battlers
  # s"®o--ˆ,È,¯,ê,Î-³Ž‹
  if battler.dead? == true #or battler.movable? == false then
     battler.cp = 0
     next
  end
  # ,±,±,Ì 1.3,ð•Ï,¦,é,±,Æ,Ł«ƒXƒs[ƒh,ð•ÏX‰Â"\B,½,¾,µ¬""_,ÍŽg--p,•,é,±,ƁB
  battler.cp = [[battler.cp + 1.3 * 4096 * battler.agi / @agi_total, 0].max, 65535].min
end
end
end
#----------------------------------------------------------------------------
# œ CPƒJƒEƒ"ƒg,ÌŠJŽn
#----------------------------------------------------------------------------
def stop
@cancel = true
if @cp_thread != nil then
@cp_thread.join
@cp_thread = nil
end
end
end
#==============================================================================
# ¡ Game_Battler
#==============================================================================
class Game_Battler
attr_accessor :now_guarding             # Œ»Ý-hŒä'†ƒtƒ‰ƒO
attr_accessor :cp                      # Œ»ÝCP
attr_accessor :slip_state_update_ban    # ƒXƒŠƒbƒvEƒXƒe[ƒgŽ©"®ˆ--,Ì‹ÖŽ~
#--------------------------------------------------------------------------
# œ ƒRƒ}ƒ"ƒh"ü--͉Â"\"»'è
#--------------------------------------------------------------------------
def inputable?
return (not @hidden and restriction <= 1 and @cp >=65535)
end
#--------------------------------------------------------------------------
# œ ƒXƒe[ƒg [ƒXƒŠƒbƒvƒ_ƒ[ƒW] "»'è
#--------------------------------------------------------------------------
alias xrxs_bp1_slip_damage? slip_damage?
def slip_damage?
return false if @slip_state_update_ban
return xrxs_bp1_slip_damage?
end
#--------------------------------------------------------------------------
# œ ƒXƒe[ƒgŽ©'R‰ðœ (ƒ^[ƒ",²,Æ,ÉŒÄ,яo,µ)
#--------------------------------------------------------------------------
alias xrxs_bp1_remove_states_auto remove_states_auto
def remove_states_auto
return if @slip_state_update_ban
xrxs_bp1_remove_states_auto
end
end
#==============================================================================
# ¡ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# œ ƒZƒbƒgƒAƒbƒv
#--------------------------------------------------------------------------
alias xrxs_bp1_setup setup
def setup(actor_id)
xrxs_bp1_setup(actor_id)
@hate = 100 # init-value is 100
@cp = 0
@now_guarding = false
@slip_state_update_ban = false
end
end
#==============================================================================
# ¡ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
#--------------------------------------------------------------------------
alias xrxs_bp1_initialize initialize
def initialize(troop_id, member_index)
xrxs_bp1_initialize(troop_id, member_index)
@hate = 100 # init-value is 100
@cp = 0
@now_guarding = false
@slip_state_update_ban = false
end
end
#==============================================================================
# ¡ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# œ ŒöŠJƒCƒ"ƒXƒ^ƒ"ƒX•Ï"
#--------------------------------------------------------------------------
attr_accessor  :update_cp_only                  # CPƒ[ƒ^[,Ì,Ý,̍XV
#--------------------------------------------------------------------------
# œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
#--------------------------------------------------------------------------
alias xrxs_bp1_initialize initialize
def initialize
@update_cp_only = false
xrxs_bp1_initialize
end
#--------------------------------------------------------------------------
# œ ƒŠƒtƒŒƒbƒVƒ...
#--------------------------------------------------------------------------
alias xrxs_bp1_refresh refresh
def refresh
if @update_cp_only == false
xrxs_bp1_refresh
end
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 160 + 4
draw_actor_cp_meter(actor, actor_x, 96, 120, 0)
end
end
#--------------------------------------------------------------------------
def draw_actor_name(actor, x, y)
self.contents.font.color = normal_color
self.contents.font.size = 24
self.contents.draw_text(x, y, 120, 32, actor.name)
end
#--------------------------------------------------------------------------
# œ CPƒ[ƒ^[ ,Ì•`‰æ
#--------------------------------------------------------------------------
def draw_actor_cp_meter(actor, x, y, width = 156, type = 0)
self.contents.font.color = system_color
self.contents.fill_rect(x-1, y+27, width+2,6, Color.new(0, 0, 0, 255))
if actor.cp == nil
actor.cp = 0
end
w = width * [actor.cp,65535].min / 65535
self.contents.fill_rect(x, y+28, w,1, Color.new(182, 194, 224, 255))
self.contents.fill_rect(x, y+29, w,1, Color.new(140, 164, 208, 255))
self.contents.fill_rect(x, y+30, w,1, Color.new(75, 113, 158, 255))
self.contents.fill_rect(x, y+31, w,1, Color.new(58, 86, 120, 255))
end
end

#==============================================================================
# ¡ Scene_Battle
#==============================================================================
class Scene_Battle
# ,±,±,ÉŒø‰‰¹,ðÝ'è,•,é,ƁAƒAƒNƒ^[ƒRƒ}ƒ"ƒh,ªƒ|ƒbƒv,µ,½,Æ,«,ÉŒø‰‰¹,ðÄ¶
$data_system_command_up_se = ""
#--------------------------------------------------------------------------
# œ ƒoƒgƒ‹I--¹
#     result : Œ‹‰ (0:Ÿ--˜ 1:"s-k 2:"¦'-)
#--------------------------------------------------------------------------
alias xrxs_bp1_battle_end battle_end
def battle_end(result)
# CPƒJƒEƒ"ƒg'âŽ~
@cp_thread.stop
xrxs_bp1_battle_end(result)
end
#--------------------------------------------------------------------------
# œ ƒvƒŒƒoƒgƒ‹ƒtƒF[ƒYŠJŽn
#--------------------------------------------------------------------------
alias xrxs_bp1_start_phase1 start_phase1
def start_phase1
@agi_total = 0
@cp_thread = Scene_Battle_CP.new
# ƒAƒNƒ^[ƒRƒ}ƒ"ƒhƒEƒBƒ"ƒhƒE,ðÄì¬
s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.guard
s4 = $data_system.words.item
@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4, "Huir"])
@actor_command_window.y = 128
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
@actor_command_window.draw_item(4, $game_temp.battle_can_escape ? @actor_command_window.normal_color : @actor_command_window.disabled_color)
xrxs_bp1_start_phase1
end
#--------------------------------------------------------------------------
# œ ƒp[ƒeƒBƒRƒ}ƒ"ƒhƒtƒF[ƒYŠJŽn
#--------------------------------------------------------------------------
alias xrxs_bp1_start_phase2 start_phase2
def start_phase2
xrxs_bp1_start_phase2
@party_command_window.active = false
@party_command_window.visible = false
# ŽŸ,Ö
start_phase3
end
#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒp[ƒeƒBƒRƒ}ƒ"ƒhƒtƒF[ƒY)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase2 update_phase2
def update_phase2
# C ƒ{ƒ^ƒ",ª‰Ÿ,³,ê,½ê‡
if Input.trigger?(Input::C)
# ƒp[ƒeƒBƒRƒ}ƒ"ƒhƒEƒBƒ"ƒhƒE,̃J[ƒ\ƒ‹ˆ'u,Å•ªŠò
case @party_command_window.index
when 0 # í,¤
  # Œˆ'è SE ,ð‰‰'t
  $game_system.se_play($data_system.decision_se)
  @cp_thread.start
  # ƒAƒNƒ^[ƒRƒ}ƒ"ƒhƒtƒF[ƒYŠJŽn
  start_phase3
end
return
end
xrxs_bp1_update_phase2
end
#--------------------------------------------------------------------------
# œ ŽŸ,̃AƒNƒ^[,̃Rƒ}ƒ"ƒh"ü--Í,Ö
#--------------------------------------------------------------------------
def phase3_next_actor
# ƒ‹[ƒv
begin
# ƒAƒNƒ^[,Ì-¾-ŃGƒtƒFƒNƒg OFF
if @active_battler != nil
  @active_battler.blink = false
end
# ÅŒã,̃AƒNƒ^[,̏ꍇ
if @actor_index == $game_party.actors.size-1
  # ƒƒCƒ"ƒtƒF[ƒYŠJŽn
  @cp_thread.start
  start_phase4
  return
end
# ƒAƒNƒ^[,̃Cƒ"ƒfƒbƒNƒX,ði,ß,é
@actor_index += 1
@active_battler = $game_party.actors[@actor_index]
@active_battler.blink = true
if @active_battler.inputable? == false
  @active_battler.current_action.kind = -1
end
# ƒAƒNƒ^[,ªƒRƒ}ƒ"ƒh"ü--Í,ðŽó,¯•t,¯,È,¢ó'Ô,È,ç,à,¤ˆê"x
end until @active_battler.inputable?
@cp_thread.stop
# ƒAƒNƒ^[ƒRƒ}ƒ"ƒhƒEƒBƒ"ƒhƒE,ðƒZƒbƒgƒAƒbƒv
@active_battler.now_guarding = false
phase3_setup_command_window
end
#--------------------------------------------------------------------------
# œ 'O,̃AƒNƒ^[,̃Rƒ}ƒ"ƒh"ü--Í,Ö
#--------------------------------------------------------------------------
def phase3_prior_actor
# ƒ‹[ƒv
begin
# ƒAƒNƒ^[,Ì-¾-ŃGƒtƒFƒNƒg OFF
if @active_battler != nil
  @active_battler.blink = false
end
# Å‰,̃AƒNƒ^[,̏ꍇ
if @actor_index == 0
  # Å‰,Ö-ß,é
  start_phase3
  return
end
# ƒAƒNƒ^[,̃Cƒ"ƒfƒbƒNƒX,ð-ß,•
@actor_index -= 1
@active_battler = $game_party.actors[@actor_index]
@active_battler.blink = true
# ƒAƒNƒ^[,ªƒRƒ}ƒ"ƒh"ü--Í,ðŽó,¯•t,¯,È,¢ó'Ô,È,ç,à,¤ˆê"x
end until @active_battler.inputable?
@cp_thread.stop
# ƒAƒNƒ^[ƒRƒ}ƒ"ƒhƒEƒBƒ"ƒhƒE,ðƒZƒbƒgƒAƒbƒv
@active_battler.now_guarding = false
phase3_setup_command_window
end
#--------------------------------------------------------------------------
# œ ƒAƒNƒ^[ƒRƒ}ƒ"ƒhƒEƒBƒ"ƒhƒE,̃ZƒbƒgƒAƒbƒv
#--------------------------------------------------------------------------
alias xrxs_bp1_phase3_setup_command_window phase3_setup_command_window
def phase3_setup_command_window
# Œø‰‰¹,̍ж
Audio.se_play($data_system_command_up_se) if $data_system_command_up_se != ""
# -ß,•
xrxs_bp1_phase3_setup_command_window
end
#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒAƒNƒ^[ƒRƒ}ƒ"ƒhƒtƒF[ƒY : Šî-{ƒRƒ}ƒ"ƒh)
#--------------------------------------------------------------------------
alias xrxs_bsp1_update_phase3_basic_command update_phase3_basic_command
def update_phase3_basic_command
# C ƒ{ƒ^ƒ",ª‰Ÿ,³,ê,½ê‡
if Input.trigger?(Input::C)
# ƒAƒNƒ^[ƒRƒ}ƒ"ƒhƒEƒBƒ"ƒhƒE,̃J[ƒ\ƒ‹ˆ'u,Å•ªŠò
case @actor_command_window.index
when 4 # "¦,°,é
  if $game_temp.battle_can_escape
     # Œˆ'è SE ,ð‰‰'t
     $game_system.se_play($data_system.decision_se)
     # ƒAƒNƒVƒ‡ƒ",ðÝ'è
     @active_battler.current_action.kind = 0
     @active_battler.current_action.basic = 4
     # ŽŸ,̃AƒNƒ^[,̃Rƒ}ƒ"ƒh"ü--Í,Ö
     phase3_next_actor
  else
     # ƒuƒU[ SE ,ð‰‰'t
     $game_system.se_play($data_system.buzzer_se)
  end
  return
end
end
xrxs_bsp1_update_phase3_basic_command
end
#--------------------------------------------------------------------------
# œ ƒƒCƒ"ƒtƒF[ƒYŠJŽn
#--------------------------------------------------------------------------
alias xrxs_bp1_start_phase4 start_phase4
def start_phase4
xrxs_bp1_start_phase4
# ƒGƒlƒ~[ƒAƒNƒVƒ‡ƒ"ì¬
for enemy in $game_troop.enemies
if enemy.cp < 65535
  enemy.current_action.clear
  enemy.current_action.kind = -1 # ƒ^[ƒ""ò,Î,µB
  next
end
enemy.make_action
end
# s"®‡˜ì¬
make_action_orders
end
#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒƒCƒ"ƒtƒF[ƒY ƒXƒeƒbƒv 1 : ƒAƒNƒVƒ‡ƒ"€"õ)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase4_step1 update_phase4_step1
def update_phase4_step1
# ‰Šú‰»
@phase4_act_continuation = 0
# Ÿ"s"»'è
if judge
@cp_thread.stop
# Ÿ--˜,Ü,½,Í"s-k,̏ꍇ : ƒƒ\ƒbƒhI--¹
return
end
# -¢s"®ƒoƒgƒ‰["z--ñ,̐æ"ª,©,çŽæ"¾
@active_battler = @action_battlers[0]
# ƒXƒe[ƒ^ƒXXV,ðCP,¾,¯,ÉŒÀ'èB
@status_window.update_cp_only = true
# ƒXƒe[ƒgXV,ð‹ÖŽ~B
@active_battler.slip_state_update_ban = true if @active_battler != nil
# -ß,•
xrxs_bp1_update_phase4_step1
# ‹ÖŽ~,ð‰ðœ
@status_window.update_cp_only = false
@active_battler.slip_state_update_ban = false if @active_battler != nil
end
#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒƒCƒ"ƒtƒF[ƒY ƒXƒeƒbƒv 2 : ƒAƒNƒVƒ‡ƒ"ŠJŽn)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase4_step2 update_phase4_step2
def update_phase4_step2
# ‹­§ƒAƒNƒVƒ‡ƒ",Å,È,¯,ê,Î
unless @active_battler.current_action.forcing
# CP,ª'«,è,Ä,¢,È,¢ê‡
if @phase4_act_continuation == 0 and @active_battler.cp < 65535
  @phase4_step = 6
  return
end
# §-ñ,ª ["G,ð'íUŒ,,•,é] ,© [-¡•û,ð'íUŒ,,•,é] ,̏ꍇ
if @active_battler.restriction == 2 or @active_battler.restriction == 3
  # ƒAƒNƒVƒ‡ƒ",ɍUŒ,,ðÝ'è
  @active_battler.current_action.kind = 0
  @active_battler.current_action.basic = 0
end
# §-ñ,ª [s"®,Å,«,È,¢] ,̏ꍇ
if @active_battler.restriction == 4
  # ƒAƒNƒVƒ‡ƒ"‹­§'ΏÛ,̃oƒgƒ‰[,ðƒNƒŠƒA
  $game_temp.forcing_battler = nil
  if @phase4_act_continuation == 0 and @active_battler.cp >= 65535
     # ƒXƒe[ƒgŽ©'R‰ðœ
     @active_battler.remove_states_auto
     # CPÁ"ï
     @active_battler.cp = [(@active_battler.cp - 65535),0].max
     # ƒXƒe[ƒ^ƒXƒEƒBƒ"ƒhƒE,ðƒŠƒtƒŒƒbƒVƒ...
     @status_window.refresh
  end
  # ƒXƒeƒbƒv 1 ,Ɉڍs
  @phase4_step = 1
  return
end
end
# ƒAƒNƒVƒ‡ƒ",ÌŽí•,Å•ªŠò
case @active_battler.current_action.kind
when 0
# UŒ,¥-hŒäE"¦,°,éE‰½,à,µ,È,¢Žž,Ì‹¤'Á"ïCP
@active_battler.cp -=     0 if @phase4_act_continuation == 0
when 1
# ƒXƒLƒ‹Žg--pŽž,̏Á"ïCP
@active_battler.cp -= 65535 if @phase4_act_continuation == 0
when 2
# ƒAƒCƒeƒ€Žg--pŽž,̏Á"ïCP
@active_battler.cp -= 65535 if @phase4_act_continuation == 0
when -1
# CP,ª--­,Ü,Á,Ä,¢,È,¢
@phase4_step = 6
return
end
# CP‰ÁŽZ,ðˆêŽž'âŽ~,•,é
@cp_thread.stop = true
# ƒXƒe[ƒgŽ©'R‰ðœ
@active_battler.remove_states_auto
xrxs_bp1_update_phase4_step2
end
#--------------------------------------------------------------------------
# œ Šî-{ƒAƒNƒVƒ‡ƒ" Œ‹‰ì¬
#--------------------------------------------------------------------------
alias xrxs_bp1_make_basic_action_result make_basic_action_result
def make_basic_action_result
# UŒ,,̏ꍇ
if @active_battler.current_action.basic == 0 and @phase4_act_continuation == 0
@active_battler.cp -= 65535 # UŒ,Žž,ÌCPÁ"ï
end
# -hŒä,̏ꍇ
if @active_battler.current_action.basic == 1 and @phase4_act_continuation == 0
@active_battler.cp -= 32767 # -hŒäŽž,ÌCPÁ"ï
end
# "G,Ì"¦,°,é,̏ꍇ
if @active_battler.is_a?(Game_Enemy) and
@active_battler.current_action.basic == 2 and @phase4_act_continuation == 0
@active_battler.cp -= 65535 # "¦'-Žž,ÌCPÁ"ï
end
# ‰½,à,µ,È,¢,̏ꍇ
if @active_battler.current_action.basic == 3 and @phase4_act_continuation == 0
@active_battler.cp -= 32767 # ‰½,à,µ,È,¢Žž,ÌCPÁ"ï
end
# "¦,°,é,̏ꍇ
if @active_battler.current_action.basic == 4 and @phase4_act_continuation == 0
@active_battler.cp -= 65535 # "¦'-Žž,ÌCPÁ"ï
# "¦'-‰Â"\,Å,Í,È,¢ê‡
if $game_temp.battle_can_escape == false
  # ƒuƒU[ SE ,ð‰‰'t
  $game_system.se_play($data_system.buzzer_se)
  return
end
# Œˆ'è SE ,ð‰‰'t
$game_system.se_play($data_system.decision_se)
# "¦'-ˆ--
update_phase2_escape
return
end
xrxs_bp1_make_basic_action_result
end
#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒƒCƒ"ƒtƒF[ƒY ƒXƒeƒbƒv 5 : ƒ_ƒ[ƒW•\Ž¦)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase4_step5 update_phase4_step5
def update_phase4_step5
# ƒXƒŠƒbƒvƒ_ƒ[ƒW
if @active_battler.hp > 0 and @active_battler.slip_damage?
@active_battler.slip_damage_effect
@active_battler.damage_pop = true
end
xrxs_bp1_update_phase4_step5
end
#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒƒCƒ"ƒtƒF[ƒY ƒXƒeƒbƒv 6 : ƒŠƒtƒŒƒbƒVƒ...)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase4_step6 update_phase4_step6
def update_phase4_step6
# CP‰ÁŽZ,ðÄŠJ,•,é
@cp_thread.stop = false
# ƒwƒ‹ƒvƒEƒBƒ"ƒhƒE,ð‰B,•
@help_window.visible = false
xrxs_bp1_update_phase4_step6
end
end
# ¥£¥ XRXS_BP 7. ƒoƒgƒ‹ƒXƒe[ƒ^ƒXEƒNƒŠƒAƒfƒUƒCƒ" ver.1.02 ¥£¥
# by ÷‰ë Ý"y, TOMY

#==============================================================================
# ¡ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# œ ŒöŠJƒCƒ"ƒXƒ^ƒ"ƒX•Ï"
#--------------------------------------------------------------------------
attr_accessor  :update_cp_only                  # CPƒ[ƒ^[,Ì,Ý,̍XV
#--------------------------------------------------------------------------
# œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
#--------------------------------------------------------------------------
alias xrxs_bp7_initialize initialize
def initialize
xrxs_bp7_initialize
# «Full-View,̏ꍇ,͉º"ñs,Ì # ,ðÁ,µ,Ä,­,¾,³,¢B
#self.opacity = 0
#self.back_opacity = 0
end
#--------------------------------------------------------------------------
# œ ƒŠƒtƒŒƒbƒVƒ...
#--------------------------------------------------------------------------
alias xrxs_bp7_refresh refresh
def refresh
if @update_cp_only
xrxs_bp7_refresh
return
end
# •`Ž,ð‹ÖŽ~,µ,È,ª,ç-ß,•
@draw_ban = true
xrxs_bp7_refresh
# •`Ž,Ì‹ÖŽ~,ð‰ðœ
@draw_ban = false
# •`Ž,ðŠJŽn
@item_max = $game_party.actors.size
end
end
#==============================================================================
# ¡ Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# œ -¼'O,Ì•`‰æ
#--------------------------------------------------------------------------
alias xrxs_bp7_draw_actor_name draw_actor_name
def draw_actor_name(actor, x, y)
xrxs_bp7_draw_actor_name(actor, x, y) if @draw_ban != true
end
#--------------------------------------------------------------------------
# œ ƒXƒe[ƒg,Ì•`‰æ
#--------------------------------------------------------------------------
alias xrxs_bp7_draw_actor_state draw_actor_state
def draw_actor_state(actor, x, y, width = 120)
xrxs_bp7_draw_actor_state(actor, x, y, width) if @draw_ban != true
end
#==============================================================================
# ž ŠO•"ƒ‰ƒCƒuƒ‰ƒŠ
#==============================================================================
class Window_Base
#--------------------------------------------------------------------------
# œ ƒ‰ƒCƒ"•`‰æ by ÷‰ë Ý"y
#--------------------------------------------------------------------------
def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)
# •`Ž‹----£,ÌŒvŽZB'å,«,ß,É'¼ŠpŽž,Ì'•,³B
distance = (start_x - end_x).abs + (start_y - end_y).abs
# •`ŽŠJŽn
if end_color == start_color
for i in 1..distance
  x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  self.contents.fill_rect(x, y, width, width, start_color)
end
else
for i in 1..distance
  x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  r = start_color.red  * (distance-i)/distance + end_color.red  * i/distance
  g = start_color.green * (distance-i)/distance + end_color.green * i/distance
  b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance
  a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance
  self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a))
end
end
end
#--------------------------------------------------------------------------
# œ ‰e•¶Žš•`‰æ by TOMY
#--------------------------------------------------------------------------
def draw_shadow_text(x, y, width, height, string, align = 0)
# Œ³,̐F,ð•Û'¶,µ,Ä,¨,­
color = self.contents.font.color.dup
# •Žš,ʼne•`‰æ
self.contents.font.color = Color.new(0, 0, 0)
self.contents.draw_text(x + 2, y + 2, width, height, string, align)
# Œ³,̐F,É-ß,µ,Ä•`‰æ
self.contents.font.color = color
self.contents.draw_text(x, y, width, height, string, align)
end
end
end

ThallionDarkshine


Agatio17

Thanks you so much, excellent script ^^

ThallionDarkshine

Update to version 0.2. Added aliasing to improve compatibility.