class HPPlayerSpell
{
const SpellDB = [
'conjunctivitis' => [
'rand1' => 15, 'rand2' => 38,
'text' => color("0,13", "%caster% has shot a jet of ").color("13,0", "blinding light at %target% ").color("0,13", "causing %value% damage!"),
'modifiers' => [
'HPPlayerSpell::ModMonsterHitDmg' => ['death_eater', 30, 60]
]
]
];
public static function CalculateSpellValue($spell, $caster, $target, $special, &$success, &$text)
{
$spell = strtolower($spell);
if (!self::Castable($spell, $caster, $target, $special, $text))
{
$success = false;
return 0;
}
$spellentry = self::SpellDB[$spell];
$value = Veletlenszam($spellentry['rand1'], $spellentry['rand2']);
foreach ($spellentry['modifiers'] as $modifier => $modifierparams)
{
$modifier($caster, $target, $special, $spellentry, $value, $modifierparams);
}
self::ModWandDamage($caster, $target, $special, $value);
$text = str_replace(['caster', 'target', 'value'], [self::GetPlayerName($caster), self::GetPlayerName($target), $value], $spellentry['text']);
return $value;
}
public static function Castable($spell, $caster, $target, $special, &$reason)
{
if (!isset(self::SpellDB[$spell]))
{
$reason = "Spell not found in Spell DB";
return false;
}
if (isset(self::SpellDB[$spell]['checks']))
{
foreach (self::SpellDB[$spell]['checks'] as $check)
{
if (!$check($caster, $target, $special, $reason))
return false;
}
}
return true;
}
public static function ModMonsterHitDmg($caster, $target, $special, &$spellentry, &$spellvalue, $params)
{
if ($params[0] == $target)
$spellvalue = Veletlenszam($params[1], $params[2]);
}
public static function ModWandDamage($caster, $target, $special, &$spellentry, &$spellvalue, $params = [])
{
$spellvalue += UserStore::Call('GetEntry', $caster, "hpduel/wand", 0);
}
}
Comments