Weather Effect in Battle สภาพอากาศมีผลต่อการต่อสู้ V 2.0
สกรีนช๊อต :
เจอพายุเข้าไปก็โดนลด HP หมดทั้งฮีโร่ทั้งมอน
ไม่ใช่แค่ลด HP ได้อย่างเดียว สามารถตั้งให้ เพิ่ม HP ด้วยก็ได้
ตอนนี้เพิ่มลดอาการได้แล้วจริงๆ นะครับ สกรีนช๊อตอันเก่า ไม่ได้แก้ 
สคริปต์เขียนโดย : 
jojo741963
รายละเอียด :
เมื่อมีสภาพอากาศที่กำหนด จะเพิ่ม / ลด  HP ของ ฮีโร่ / ศัตรู ตามไอดีที่กำหนดได้
เมื่อมีสภาพอากาศที่กำหนด จะเพิ่ม / ลด  อาการที่กำหนด ของ ฮีโร่ / ศัตรู ตามไอดีที่กำหนดได้
วิธีการใช้งาน : วางสคริปต์นี้เหนือสคริปต์ Main และใต้สคริปต์ Scene_Debug
แล้วก็ตั้งค่าได้ในหัวข้อนั้นๆ นะครับ 
เช่น ถ้าต้องการตั้งค่า ให้ิ เพิ่ม/ลด HP ของฮีโร่ เมื่อฝนตก ให้ไปตั้งค่าที่
Code:
ID_Hero_DamageHP_Rain
และ เซ็ตของมอนเตอร์ ในสภาพอื่นๆ ตามต้องการ (ลองสำรวจในสคริปต์ดูนะครับ)
โดยให้ตั้งค่าในรูปแบบดังนี้นะครับ
ไอดี => ความเสียหายโดยคิดเป็น 1 ใน ตัวเลขที่กำหนดของ MaxHP,
ตัวอย่าง 
(ของฮีโร่)
1 => 8,
หมายความว่า ฮีโร่ไอดี 1 จะได้รับความเสียหาย 1 ใน 8 ของ MaxHP ของฮีโร่นั้นๆ
ซึ่งหากต้องการให้เปลี่ยนเป็นเพิ่ม HP แทน ก็
ให้เปลี่ยนเลขด้านหลังเป็นจำนวนเต็มลบ เช่น 
8 เป็น 
-8 แทน
เนื่องจากเมื่อลบด้วยลบ ก็จะกลายเป็นการบวกแทน
การเซ็ตค่าอาการก็เช่นกัน
Code:
ID_Hero_Add_State_Rain
คือส่วนของ ไอดีของฮีโร่ ที่จะๆได้รับอาการนั้นๆ
เมื่อมีสภาพอากาศนั้นๆ (ดังในตัวอย่างคือ ฝนตก)
โดยให้ตั้งค่าในรูปแบบดังนี้นะครับ
ไอดี => ไอดีของอาการที่จะเพิ่ม,
ซึ่งหากต้องการให้เปลี่ยนเป็นลดอาการแทน
ก็ให้สร้างอาการเฉพาะ ของฮีโร่นั้นๆ แล้วกำหนดช่องอาการด้านขวา
ที่ต้องการเป็น
ลด แทน ก็จะลดอาการนั้นได้
ข้อตกลงการนำไปใช้งาน : จะเอาไปใช้หรือแจกที่ไหนก็ได้ แต่อย่าลืมให้เครดิตผู้สร้างนะงับ
เดโม่ของสคริปต์ :
สภาพอากาศมีผลต่อการต่อสู้ v2
โค๊ดสคริปต์
[shcode=rails]
#==============================================================================
# **  Weather Effect in Battle
#------------------------------------------------------------------------------
# * Created by: jojo741963
# * Version: 2.0
#    17-11-2013
#------------------------------------------------------------------------------
#  รายละเอียดของสคริปต์นี้  :
#      เมื่อมีสภาพอากาศที่กำหนด จะเพิ่ม / ลด  HP ของ ฮีโร่ / ศัตรู ตามไอดีที่กำหนดได้
#      เมื่อมีสภาพอากาศที่กำหนด จะเพิ่ม / ลด  อาการ ของ ฮีโร่ / ศัตรู ตามไอดีที่กำหนดได้
#------------------------------------------------------------------------------
#  จินตนาการในอนาคต :
#     - เมื่อมีสภาพอากาศที่กำหนด เพิ่ม / ลด SP ให้กับ ฮีโร่/ศัตรู ตามไอดีที่กำหนดได้
#     - เพิ่มสภาพอากาศใหม่ๆ ให้เลือกใช้มากขึ้น
#     - ทำ สกิล / ไอเท็ม เสกสภาพอากาศได้ตามต้องการ และจะกลับเป็นเหมือนเดิมหลังสู้เสร็จ
#         หรือนับตามจำนวนเทิร์น
#     - ถ้าทำให้เสกสภาพอากาศได้ ทำไอเท็มให้ สามารถเพิ่มระยะเวลาของสภาพอากาศนั้นๆ
#------------------------------------------------------------------------------
#  วิธีการใช้งานสคริปต์นี้ :
#     วางสคริปต์นี้เหนือสคริปต์ Main และใต้สคริปต์ Scene_Debug
#     แล้วเซ็ตค่าได้ด่านล่างเลยครับ
#==============================================================================
module WEATHER_EFFECT
  # กำหนดข้อความที่จะแสดง ยังมีบัค คือข้อความจะไม่โชว์รอบที่สอง เลยเอาออก
  #Rain_Text = "ฝนยังคงกำลังตกอยู่"
  #Storm_Text = "พายุยังคงกำลังพัดอยู่"
  #Snow_Text = "หิมะยังคงกำลังตกอยู่"
  
  #===========================================
  #=============      เพิ่ม / ลด HP       ===============
  #===========================================
  #=================== ฝนตก ===================
  # ไอดีของฮีโร่ที่ต้องการ => สร้างความเสียหาย 1 ใน จำนวนที่ต้องการ ของ MaxHP
  # ตัวอย่าง  1 => 8, แปลว่า ฮีโร่ไอดี 1 ได้รับความเสียหาย 1 ใน 8 ของ HP
  # ถ้าต้องการให้เพิ่ม HP แทน ให้เปลี่ยน เป็นจำนวนเต็มลบ เช่น 8 เป็น -8 
  ID_Hero_DamageHP_Rain = {
  2 => 8,
  7 => 16,
  }
  ID_Enemy_DamageHP_Rain = {
  1 => 8,
  3 => -8,
  }
  #=================== ฝนตก ===================
  
  #=================== พายุ ===================
  ID_Hero_DamageHP_Storm = {
  1 => 8,
  2 => 8,
  7 => 8,
  8 => 8,
  }
  ID_Enemy_DamageHP_Storm = {
  1 => 8,
  3 => 8,
  7 => 8,
  }
  #=================== พายุ ===================
  
  #=================== หิมะ ===================
  ID_Hero_DamageHP_Snow = {
  1 => -8,
  7 => -8,
  8 => 16,
  }
  ID_Enemy_DamageHP_Snow = {
  7 => -8,
  }
  #=================== หิมะ ===================
  
  #===========================================
  #==============      เพิ่มอาการ       ================
  #===========================================
  #=================== ฝนตก ===================
  # ไอดีของฮีโร่ที่ต้องการ => ไอดีของอาการที่ต้องการให้เพิ่ม
  # ตัวอย่าง  1 => 8, แปลว่า ฮีโร่ไอดี 1 ได้รับความเสียหาย 1 ใน 8 ของ HP
  # ถ้าต้องการให้เพิ่ม HP แทน ให้เปลี่ยน เป็นจำนวนเต็มลบ เช่น 8 เป็น -8 
  ID_Hero_Add_State_Rain = {
  1 => 13,
  2 => 14,
  }
  ID_Enemy_Add_State_Rain = {
  1 => 12,
  3 => 16,
  }
  #=================== ฝนตก ===================
  
  #=================== พายุ ===================
  ID_Hero_Add_State_Storm = {
  1 => 9,
  2 => 9,
  7 => 9,
  8 => 9,
  }
  ID_Enemy_Add_State_Storm = {
  1 => 9,
  3 => 9,
  7 => 9,
  }
  #=================== พายุ ===================
  
  #=================== หิมะ ===================
  ID_Hero_Add_State_Snow = {
  1 => 15,
  7 => 15,
  8 => 15,
  }
  ID_Enemy_Add_State_Snow = {
  7 => 16,
  }
  #=================== หิมะ ===================
  
  # เช็คว่าไอดีของ ฮีโร่ / ศัตรู ตัวนั้นๆ จะมีการ เพิ่ม / ลด พลังเท่าใด
  def self.damage(hero, weather, id)
    if hero
      case weather
      when 1 #ฝนตก
        if ID_Hero_DamageHP_Rain.include?(id)
          return ID_Hero_DamageHP_Rain[id]
        end
      when 2 #พายุ
        if ID_Hero_DamageHP_Storm.include?(id)
          return ID_Hero_DamageHP_Storm[id]
        end
      when 3 #หิมะ
        if ID_Hero_DamageHP_Snow.include?(id)
          return ID_Hero_DamageHP_Snow[id]
        end
      end
    else
      case weather
      when 1 #ฝนตก
        if ID_Enemy_DamageHP_Rain.include?(id)
          return ID_Enemy_DamageHP_Rain[id]
        end
      when 2 #พายุ
        if ID_Enemy_DamageHP_Storm.include?(id)
          return ID_Enemy_DamageHP_Storm[id]
        end
      when 3 #หิมะ
        if ID_Enemy_DamageHP_Snow.include?(id)
          return ID_Enemy_DamageHP_Snow[id]
        end
      end 
    end
  end
  
  # เช็คว่าไอดีของ ฮีโร่ / ศัตรู ตัวนั้นๆ จะมีการ เพิ่มอาการอะไร
  def self.add_state(hero, weather, id)
    if hero
      case weather
      when 1 #ฝนตก
        if ID_Hero_Add_State_Rain.include?(id)
          return ID_Hero_Add_State_Rain[id]
        end
      when 2 #พายุ
        if ID_Hero_Add_State_Storm.include?(id)
          return ID_Hero_Add_State_Storm[id]
        end
      when 3 #หิมะ
        if ID_Hero_Add_State_Snow.include?(id)
          return ID_Hero_Add_State_Snow[id]
        end
      end
    else
      case weather
      when 1 #ฝนตก
        if ID_Enemy_Add_State_Rain.include?(id)
          return ID_Enemy_Add_State_Rain[id]
        end
      when 2 #พายุ
        if ID_Enemy_Add_State_Storm.include?(id)
          return ID_Enemy_Add_State_Storm[id]
        end
      when 3 #หิมะ
        if ID_Enemy_Add_State_Snow.include?(id)
          return ID_Enemy_Add_State_Snow[id]
        end
      end 
    end
  end
  
end
#ทำให้ทุกครั้งที่เข้าเฟต 4 จะมีการเพิ่มผลของสภาพอากาศ
class Scene_Battle
  alias weather_effect_start_phase4 start_phase4
  def start_phase4
    weather_effect_start_phase4
    make_weather_effect
  end
  #--------------------------------------------------------------------------
  # - ผลของสภาพอากาศ
  #--------------------------------------------------------------------------
  def make_weather_effect
    case $game_screen.weather_type #คำสั่งแสดงข้อความที่เป็นบัค เลยเอาออก
    when 1
      #$game_temp.message_text = WEATHER_EFFECT::Rain_Text
    when 2
      #$game_temp.message_text = WEATHER_EFFECT::Storm_Text
    when 3
      #$game_temp.message_text = WEATHER_EFFECT::Snow_Text
    end
    weather_effect($game_screen.weather_type) if $game_screen.weather_type != 0
  end
  #--------------------------------------------------------------------------
  # - เพิ่ม / ลด พลังของ ฮีโร่ / ศัตรู ตามสภาพอากาศที่กำหนด
  #--------------------------------------------------------------------------
  def weather_effect(weather_type)
    #สำหรับฮีโร่
    for actor in $game_party.actors
      if actor.exist?
        
        case weather_type # 0 = None, 1 = Rain, 2 = Storm, 3 = Snow
        when 1 
          if WEATHER_EFFECT::ID_Hero_DamageHP_Rain.include?(actor.id)
            damage = actor.maxhp / WEATHER_EFFECT.damage(true, weather_type, actor.id)
            actor.hp -= damage
            actor.damage_pop = true
            actor.damage = damage
          end
          if WEATHER_EFFECT::ID_Hero_Add_State_Rain.include?(actor.id)
            actor.add_state(WEATHER_EFFECT.add_state(true, weather_type, actor.id), false)
          end
        when 2
          if WEATHER_EFFECT::ID_Hero_DamageHP_Storm.include?(actor.id)
            damage = actor.maxhp / WEATHER_EFFECT.damage(true, weather_type, actor.id)
            actor.hp -= damage
            actor.damage_pop = true
            actor.damage = damage
          end
          if WEATHER_EFFECT::ID_Hero_Add_State_Storm.include?(actor.id)
            actor.add_state(WEATHER_EFFECT.add_state(true, weather_type, actor.id), false)
          end
        when 3
          if WEATHER_EFFECT::ID_Hero_DamageHP_Snow.include?(actor.id)
            damage = actor.maxhp / WEATHER_EFFECT.damage(true, weather_type, actor.id)
            actor.hp -= damage
            actor.damage_pop = true
            actor.damage = damage
          end
          if WEATHER_EFFECT::ID_Hero_Add_State_Snow.include?(actor.id)
            actor.add_state(WEATHER_EFFECT.add_state(true, weather_type, actor.id), false)
          end
        end
        
      end
    end
    #สำหรับศัตรู
    for enemy in $game_troop.enemies
      if enemy.exist?
        
        case weather_type # 0 = None, 1 = Rain, 2 = Storm, 3 = Snow
        when 1
          if WEATHER_EFFECT::ID_Enemy_DamageHP_Rain.include?(enemy.id)
            damage = enemy.maxhp / WEATHER_EFFECT.damage(false, weather_type, enemy.id)
            enemy.hp -= damage
            enemy.damage_pop = true
            enemy.damage = damage
          end
          if WEATHER_EFFECT::ID_Enemy_Add_State_Rain.include?(enemy.id)
            enemy.add_state(WEATHER_EFFECT.add_state(false, weather_type, enemy.id), false)
          end
        when 2
          if WEATHER_EFFECT::ID_Enemy_DamageHP_Storm.include?(enemy.id)
            damage = enemy.maxhp / WEATHER_EFFECT.damage(false, weather_type, enemy.id)
            enemy.hp -= damage
            enemy.damage_pop = true
            enemy.damage = damage
          end
          if WEATHER_EFFECT::ID_Enemy_Add_State_Storm.include?(enemy.id)
            enemy.add_state(WEATHER_EFFECT.add_state(false, weather_type, enemy.id), false)
          end
        when 3
          if WEATHER_EFFECT::ID_Enemy_DamageHP_Snow.include?(enemy.id)
            damage = enemy.maxhp / WEATHER_EFFECT.damage(false, weather_type, enemy.id)
            enemy.hp -= damage
            enemy.damage_pop = true
            enemy.damage = damage
          end
          if WEATHER_EFFECT::ID_Enemy_Add_State_Snow.include?(enemy.id)
            enemy.add_state(WEATHER_EFFECT.add_state(false, weather_type, enemy.id), false)
          end
        end
        
      end
    end
    #จบ-
  end
  
end
[/shcode]