Оновити 'О магии'

Ivor Barhansky 2023-01-24 15:52:22 +00:00
parent ee304e4466
commit 056b3a5fe7

@ -7,4 +7,52 @@
Любой урон может быть: моментальным, отложенным или циклическим. *Либо вообще любое заклинание, просто не использовать некоторые дикие комбинации.*
При формировании заклинания нацеленного на урон, проверяется успех каста, потом проверяются защиты цели, потом вызывается наноситель урона.
При формировании заклинания нацеленного на эффект, проверяется успех каста, потом проверяются защиты цели (если применимо), потом вызывается вешатель эффектов.
При формировании заклинания нацеленного на эффект, проверяется успех каста, потом проверяются защиты цели (если применимо), потом вызывается вешатель эффектов.
```PHP
# Псевдокод
function castDamage($caster, $manaCost, $amountDamage, $target)
{
$this->damageMana($manaCost, $caster);
if ($user->mana < 0) {
return false; # Да, хардкор.
}
$this->damageHealth($amountDamage, $target)
}
function castEffect($caster, $manaCost, $effectId, $target)
{
$this->damageMana($manaCost, $caster);
if ($user->mana < 0) {
return false; # Да, хардкор.
}
$this->setEffect($effectId, $target)
}
function fireball($caster, ...$targets)
{
$manaCost = 50;
$baseDamage = -10; # Урон отнимается от здоровья.
foreach ($targets as $target) {
$damage = calculateDamage($baseDamage, $target->resists);
castDamage($caster, $manaCost, $damage, $target);
}
}
function heal($caster, ...$targets)
{
$manaCost = 10;
$baseDamage = 4; # Лечение это отрицательный урон.
foreach ($targets as $target) {
$damage = calculateDamage($baseDamage, $target->resists);
castDamage($caster, $manaCost, $damage, $target);
}
}
function smallHealingPotion($caster) # Зелье лечения
{
heal($caster, $caster);
}
```