Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Deathwing Combo Attack 1.0

Deathwing Combo Attack 1.0 16 года 3 мес. назад #23069

  • Dagon
  • Dagon аватар
  • Вне сайта
  • Путник
  • Сообщений: 2
Название: Deathwing Combo Attack
Автор: Dagon Deathwing
Дата написания: 21.08.2008 14:09
Версия: 1.1

Описание: Данный скрипт вводит комбо атаки, как в FFXII.
=begin
 
Deathwing Combo Attack
 
Автор: Dagon Deathwing
Дата написания: 21.08.2008 14:09
Версия: 1.1
 
1.0 - закончена первая версия.
1.1 - устранена ошибка с безоружностью.
 
Описание: Данный скрипт вводит комбо атаки, как в FFXII.
 
Установка: Скопируйте выше Main и установите значения.
 
- ENEMIES_CAN_USE_COMBO
Могут ли враги использовать комбо атаки.
true - да
false - нет
 
- DEFAULT_COMBO_RATE
Процентная вероятность использования комбо атаки для всего оружия и всех врагов.
Чтобы установить конкретное значение для оружия или врага, вставьте
 combo_rate n  в поле Note оружия или врага.
 
- MAX_N_ATTACK
Максимально возможная длина комбо атаки, для всего оружия и всех врагов.
 
- DEFAULT_COMBO_RATE_TABLE
Таблица вероятности проведения определенного числа ударов в зависимости от НР.
 
[HP, combo rate 2, combo rate 3... combo rate n,
 HP, combo rate 2, combo rate 3... combo rate n,
 HP, combo rate 2, combo rate 3... combo rate n,
 ..............................................]
 
Счисление начинается снизу вверх справа налево.
НР - текущее количество НР (в десятых процента).
combo rate n - вероятность для использования конкретного числа ударов.
combo rate 2 - 2 удара, combo rate 3 - 3, combo rate 4 - 4, combo rate n -
максимальное число ударов. Вероятность записывается в десятых процента.
 
- COMBO_RATE_TABLE[weapon id]
Можете вставить после строки  COMBO_RATE_TABLE = []  данную строку, и задать
таблицу для конкретного оружия.
 
- ENEMIES_COMBO_RATE_TABLE[enemies id]
Можете вставить после строки  ENEMIES_COMBO_RATE_TABLE = []  данную строку, и
задать таблицу для конкретного врага.
 
 
Совместимость: совместим со всем, не затрагивающим  make_attack_targets . Если
что-то его затрагивает - исправите сами, даже ребенок с этим справится.
 
И если будете использовать мой скрипт - не забудьте указать мое имя.
 
ВНИМАНИЕ!!! Требуется TagNote 2.0+!!!
 
=end
 
$deathwing = {} if $deathwing == nil
$deathwing[ ComboAttack ] = true
 
module Deathwing
 
  module ComboAttack
 
    ENEMIES_CAN_USE_COMBO = true
    DEFAULT_COMBO_RATE = 5
    MAX_N_ATTACK = 8
 
    DEFAULT_COMBO_RATE_TABLE = [1000, 600,400,200, 80, 20,  0,  0,
                                 500, 750,500,250,100, 50, 10,  5,
                                 200, 900,600,300,125, 75, 40, 10,
                                  75,1000,700,400,200,140,100, 50]
 
    COMBO_RATE_TABLE = [] #  - Не удалять и не изменять.
    
    ENEMIES_COMBO_RATE_TABLE = [] #  - Не удалять и не изменять.

  end
 
end
 
 
class Game_BattleAction
 
  include TAGNOTE
 
  def make_attack_targets
    targets = []
    if battler.confusion?
      targets.push(friends_unit.random_target)
    elsif battler.berserker?
      targets.push(opponents_unit.random_target)
    else
      targets.push(opponents_unit.smooth_target(@target_index))
    end
    if battler.dual_attack      # Chain attack
      targets += targets
    end
 
 
 
 
 
    if battler.actor?
      weapon_id = battler.weapon_id
      if battler.weapons.compact != []
        percent_combo = combo_attack_percent(weapon_id)
      else
        percent_combo = Deathwing::ComboAttack::DEFAULT_COMBO_RATE
      end
        if percent_combo   rand(100)
          combo_n = creation_combo_attack_number
          targets *= combo_n
        end  
    else
      if Deathwing::ComboAttack::ENEMIES_CAN_USE_COMBO
        percent_combo = enemy_combo_attack_percent
        if percent_combo   rand(100)
          combo_n = creation_combo_attack_number
          targets *= combo_n
        end
      end
    end
 
    return targets.compact
  end
 
 
  def combo_attack_percent(id)
    prcnt = get_tag($data_weapons[id].note, combo_rate )
    return prcnt.to_f unless prcnt == nil
    return Deathwing::ComboAttack::DEFAULT_COMBO_RATE
  end
 
  def enemy_combo_attack_percent
    prcnt = get_tag(battler.enemy.note, combo_rate )
    return prcnt.to_f unless prcnt == nil
    return Deathwing::ComboAttack::DEFAULT_COMBO_RATE
  end
 
  def combo_rate_table(id)
    q = Deathwing::ComboAttack::COMBO_RATE_TABLE[id]
    return q unless q != nil
    return Deathwing::ComboAttack::DEFAULT_COMBO_RATE_TABLE
  end
 
 
 
  def creation_combo_attack_number
    if battler.actor?
      weapon_id = battler.weapon_id
      q = Deathwing::ComboAttack::COMBO_RATE_TABLE[weapon_id]
      if q == nil
        q = Deathwing::ComboAttack::DEFAULT_COMBO_RATE_TABLE
      end
    else
      q = Deathwing::ComboAttack::ENEMIES_COMBO_RATE_TABLE[battler.id]
      if q == nil
        q = Deathwing::ComboAttack::DEFAULT_COMBO_RATE_TABLE
      end
    end
 
    fn = Deathwing::ComboAttack::MAX_N_ATTACK
    fl = q.length
    ln = fl / fn
    pb_hp = (battler.hp * 1000) / battler.maxhp
 
    i = 1
    y = true
    o = fn
    u = ln
 
    while u   0
      fhp = q[(ln * (u - 1))]
        if pb_hp   fhp or pb_hp == fhp
          while o   1
            fu = q[o + (ln * (u - 1)) - 1]
              if fu   rand(1000) and y
                i = o
                y = false
              end
            o -= 1
          end
        end
      u -= 1
    end
 
 
  return i
 
  end
 
 
end
Администратор запретил публиковать записи гостям.
Модераторы: NeKotZima
Время создания страницы: 0.204 секунд