Combat System — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
(Расчет урона оружия)
Строка 1: Строка 1:
 
== Расчет урона оружия ==
 
== Расчет урона оружия ==
  
 +
<pre>
 +
dam = {<weapon.dam.min> <weapon.dam.max>} //базовый урон оружия случайное число от мин до макс (до удара)
  
{{Статья проекта
+
dam = ((<dam> * <weapon.repair>) / <weapon.max_repair>) //понижение урона от повреждения оружия
| Название                = <!-- Название проекта. Параметр должен совпадать с названием проекта без префикса «Проект:» -->
+
| Лого проекта            = <!-- Ссылку на картинку с логотипом проекта. Показывает её с размером 48 пикселей. -->
+
| Присоединиться          = <!-- Ссылка на часть проекта (подстраницу или раздел страницы), в которой перечислены его участники. -->
+
| цель                    = <!-- Заменяет строку «создание и улучшение статей по темам, связанным с [[Основная статья|Основной статьёй]]» -->
+
| Основная статья        = <!-- Используется для генерации строки «создание и улучшение статей по темам, связанным с [[Основная статья|Основной статьёй]]» -->
+
| Основной статьёй        = <!-- Используется для генерации строки «создание и улучшение статей по темам, связанным с [[Основная статья|Основной статьёй]]» -->
+
| с                      = <!-- Параметр необходим только в том случае, когда «„с“ статьёй» необходимо заменить на «„со“ статьёй» -->
+
| редактировать          = <!-- Скрывает ссылку «её отредактировать» -->
+
| помочь                  = <!-- Скрывает строку «и поработать над требуемыми статьями» (если в проекте нет подстраницы /К улучшению, строка скрыта независимо от этого параметра) -->
+
| кнопка                  = <!-- Добавляет кнопку «Написать сообщение на форум проекта» -->
+
| важность                = {{{важность|}}}
+
| уровень                = {{{уровень|}}}
+
| подпроект              = {{{подпроект|}}}
+
| важность для подпроекта = {{{важность для подпроекта|}}}
+
}}
+
  
 +
dam = (<dam> * (<tactics> + 500)) / 1000) //бонус от тактики (помним что все навыки считаются как 100.0 или 1000)
  
  dam = {<weapon.dam.min> <weapon.dam.max>} //базовый урон оружия случайное число от мин до макс (до удара)<br />
+
dam = (<dam> + ((<dam> * <str>) / 500)) //бонус от силы
  dam = ((<dam> * <weapon.repair>) / <weapon.max_repair>) //понижение урона от повреждения оружия<br />
+
  dam = (<dam> * (<tactics> + 500)) / 1000) //бонус от тактики (помним что все навыки считаются как 100.0 или 1000)<br />
+
  dam = (<dam> + ((<dam> * <str>) / 500)) //бонус от силы<br />
+
  dam = (<dam> + ((<dam> * <anatomy>) / 5000)) //бонус от анатомии<br />
+
  dam = ((<dam> * (100 + (<skill> / 10))) / 200) //бонус от боевого навыка<br />
+
  //расчет бонуса от магии или цвета оружия (см.таблицу цветов)<br />
+
  if <weapon.damage_plus><br />
+
      dam = (<dam> + <weapon.damage_plus>)<br />
+
  elseif (<weapon.magic>)<br />
+
      dam = (<dam> + ((((<weapon.magic> / 70) + 1) * 5) / 2))<br />
+
  endif<br />
+
  
 +
dam = (<dam> + ((<dam> * <anatomy>) / 5000)) //бонус от анатомии
 +
 +
dam = ((<dam> * (100 + (<skill> / 10))) / 200) //бонус от боевого навыка
 +
 +
 +
//расчет бонуса от магии или цвета оружия (см.таблицу цветов)
 +
if <weapon.damage_plus>
 +
  dam = (<dam> + <weapon.damage_plus>)
 +
elseif (<weapon.magic>)
 +
  dam = (<dam> + ((((<weapon.magic> / 70) + 1) * 5) / 2))
 +
endif
  
  
Строка 38: Строка 26:
 
   dam = <dam> * 2/3
 
   dam = <dam> * 2/3
 
endif
 
endif
 +
</pre>
  
</code>
+
- Часть формул может быть скрыта или представлена не в том виде, в котором она существует на данный момент. Это сделано ввиду существующих коллизий. Их список возможно будет представлен позже.
  
- Часть формул может быть скрыта или представлена не в том виде, в котором она существует на данный момент. Это сделано ввиду существующих коллизий. Их список возможно будет представлен позже.
+
 
 +
 
 +
=== Таблица цветов ===
 +
 
 +
<pre>
 +
    weapon/armor magic plus:
 +
    of Ruin +5
 +
    of Might +10
 +
    of Force +15
 +
    of Power +20
 +
    of Vanquishing +25
 +
</pre>
 +
<pre>
 +
    weapon/armor damage plus:
 +
    Hot/Rose +0
 +
    Agapite +5
 +
    Flame/Gold +5
 +
    Orion +5
 +
    Verite +5
 +
    Dwarf + 10
 +
    Shadow +10
 +
    Valorite +15
 +
    Holy/Silver +15
 +
    Crystal +15
 +
    Infernal/Magma +20
 +
    Obsidian +25
 +
    Mythic +25
 +
</pre>
 +
 
 +
<pre>
 +
    Titan Leather +5
 +
    Daemon Leather +10
 +
    Red Leather +5
 +
    Blue Leather +20
 +
    Green Leather +20
 +
    Yellow Leather +20
 +
    Gray Leather +15
 +
    Gold Leather +20
 +
    Silver Leather +20
 +
    Crystal Leather +20
 +
    Black Leather +20
 +
</pre>
 +
 
 +
<pre>
 +
    dragon_increase:        armor.magic = ((<str> + 15) * 10)
 +
    titan_increase:        armor.magic = ((<str> + 15) * 10)
 +
    chrome_increase:        armor.magic = ((<str> + 15) * 10)
 +
    platinum_increase:      armor.magic = ((<str> + 15) * 10)
 +
 
 +
 
 +
    i_dragon_claw:          weapon.magic = ((<swordsmanship> * 2) / 3)
 +
    i_titan_fist:          weapon.magic = ((<macefighting> * 2) / 3)
 +
    i_chrome_lance:        weapon.magic = ((<fencing> * 2) / 3)
 +
    i_platinum_broadsword:  weapon.magic = ((<swordsmanship> * 2) / 3)
 +
</pre>
 +
 
 +
 
 +
=== Расчет защиты ===
 +
 
 +
 
 +
<pre>
 +
//выбор слоя для защиты
 +
 
 +
armor_base = //базовая защита в зависимости от типа доспехов
 +
               
 +
dfns = (<armor_base> * LAYER_[]_AC_K) / 1000 //коэффициент защиты конкретного слоя
 +
               
 +
dfns =  (<dfns> * <armor.more1l>) / <armor.more1h> //понижение защиты от повреждения доспеха
 +
 
 +
//расчет бонуса от магии или цвета доспеха (см.таблицу цветов)
 +
 
 +
if <armor.armor_plus>
 +
  dfns = <dfns> + <armor.armor_plus>
 +
elseif (<armor.attr> & attr_magic)
 +
  dfns = <dfns> + (<armor.magic> / 70)
 +
endif
 +
 
 +
 
 +
//Бонус защиты от магических и алхимических эффектов
 +
spell_effect = 1
 +
potion_effect = 1
 +
 
 +
dfns = <dfns> + <p_layer_i.armor_bonus> //повышение защиты от бонуса слоев, непосредственно не участвующих в защите (квестовые предметы)
 +
</pre>
 +
 
 +
 
 +
 
 +
=== Расчет парирования ===
 +
 
 +
<pre>
 +
shield_size = //коэффициент размера щита
 +
 
 +
if (rand(75) < <shield_size>) //удача на абсорбацию урона щитом, если успех, то рассчитывает далее.
 +
 
 +
 
 +
//расчет бонуса от магии или цвета щита (см.таблицу цветов)
 +
if <shield.shield_plus>
 +
  absorbed = <absorbed> + <shield.shield_plus> + 9
 +
elseif (<shield.attr> & attr_magic)
 +
  absorbed = <absorbed > + (<shield.magic> / 70) + 9>
 +
endif
 +
absorbed  = (<shield_size> * <absorbed>) / 100
 +
absorbed  = (<absorbed > * (100 + (<parrying> / 10))) / 200
 +
absorbed = <absorbed> * <shield.repair> / <shield.max_repair> //понижение поглощения в зависимости от повреждения щита
 +
</pre>

Версия 22:01, 24 января 2024

Расчет урона оружия

dam = {<weapon.dam.min> <weapon.dam.max>} //базовый урон оружия случайное число от мин до макс (до удара)

dam = ((<dam> * <weapon.repair>) / <weapon.max_repair>) //понижение урона от повреждения оружия

dam = (<dam> * (<tactics> + 500)) / 1000) //бонус от тактики (помним что все навыки считаются как 100.0 или 1000)

dam = (<dam> + ((<dam> * <str>) / 500)) //бонус от силы

dam = (<dam> + ((<dam> * <anatomy>) / 5000)) //бонус от анатомии

dam = ((<dam> * (100 + (<skill> / 10))) / 200) //бонус от боевого навыка


//расчет бонуса от магии или цвета оружия (см.таблицу цветов)
if <weapon.damage_plus>
   dam = (<dam> + <weapon.damage_plus>)
elseif (<weapon.magic>)
   dam = (<dam> + ((((<weapon.magic> / 70) + 1) * 5) / 2))
endif


if (<weapon.дистанционное>) && (<distance> <= 1) && НЕТ great_elven_archer //бонус от кольца при стрельбе вплотную
   dam = <dam> * 2/3
endif
- Часть формул может быть скрыта или представлена не в том виде, в котором она существует на данный момент. Это сделано ввиду существующих коллизий. Их список возможно будет представлен позже.


Таблица цветов

    weapon/armor magic plus:
    of Ruin +5
    of Might +10
    of Force +15
    of Power +20
    of Vanquishing +25
    weapon/armor damage plus:
    Hot/Rose +0
    Agapite +5
    Flame/Gold +5 
    Orion +5
    Verite +5
    Dwarf + 10
    Shadow +10
    Valorite +15
    Holy/Silver +15
    Crystal +15
    Infernal/Magma +20
    Obsidian +25
    Mythic +25
    Titan Leather +5
    Daemon Leather +10
    Red Leather +5
    Blue Leather +20
    Green Leather +20
    Yellow Leather +20
    Gray Leather +15
    Gold Leather +20
    Silver Leather +20
    Crystal Leather +20
    Black Leather +20
    dragon_increase:        armor.magic = ((<str> + 15) * 10)
    titan_increase:         armor.magic = ((<str> + 15) * 10)
    chrome_increase:        armor.magic = ((<str> + 15) * 10)
    platinum_increase:      armor.magic = ((<str> + 15) * 10)


    i_dragon_claw:          weapon.magic = ((<swordsmanship> * 2) / 3)
    i_titan_fist:           weapon.magic = ((<macefighting> * 2) / 3)
    i_chrome_lance:         weapon.magic = ((<fencing> * 2) / 3)
    i_platinum_broadsword:  weapon.magic = ((<swordsmanship> * 2) / 3)


Расчет защиты

//выбор слоя для защиты

armor_base = //базовая защита в зависимости от типа доспехов
                
dfns = (<armor_base> * LAYER_[]_AC_K) / 1000 //коэффициент защиты конкретного слоя
                
dfns =  (<dfns> * <armor.more1l>) / <armor.more1h> //понижение защиты от повреждения доспеха

//расчет бонуса от магии или цвета доспеха (см.таблицу цветов)

if <armor.armor_plus>
   dfns = <dfns> + <armor.armor_plus>
elseif (<armor.attr> & attr_magic)
   dfns = <dfns> + (<armor.magic> / 70)
endif


//Бонус защиты от магических и алхимических эффектов
spell_effect = 1
potion_effect = 1

dfns = <dfns> + <p_layer_i.armor_bonus> //повышение защиты от бонуса слоев, непосредственно не участвующих в защите (квестовые предметы)


Расчет парирования

shield_size = //коэффициент размера щита

if (rand(75) < <shield_size>) //удача на абсорбацию урона щитом, если успех, то рассчитывает далее.


//расчет бонуса от магии или цвета щита (см.таблицу цветов)
if <shield.shield_plus>
   absorbed = <absorbed> + <shield.shield_plus> + 9
elseif (<shield.attr> & attr_magic)
   absorbed = <absorbed > + (<shield.magic> / 70) + 9>
endif
absorbed  = (<shield_size> * <absorbed>) / 100
absorbed  = (<absorbed > * (100 + (<parrying> / 10))) / 200
absorbed = <absorbed> * <shield.repair> / <shield.max_repair> //понижение поглощения в зависимости от повреждения щита