mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
Spells/Scaling
* move scaling data to the appropriate spell effects (like WH)
This commit is contained in:
@@ -26,7 +26,6 @@ class SpellBaseResponse extends TemplateResponse implements ICache
|
|||||||
public int $type = Type::SPELL;
|
public int $type = Type::SPELL;
|
||||||
public int $typeId = 0;
|
public int $typeId = 0;
|
||||||
public array $reagents = [false, null];
|
public array $reagents = [false, null];
|
||||||
public array $scaling = [];
|
|
||||||
public string $items = '';
|
public string $items = '';
|
||||||
public array $tools = [];
|
public array $tools = [];
|
||||||
public array $effects = [];
|
public array $effects = [];
|
||||||
@@ -161,13 +160,6 @@ class SpellBaseResponse extends TemplateResponse implements ICache
|
|||||||
$this->createReagentList();
|
$this->createReagentList();
|
||||||
|
|
||||||
|
|
||||||
/**********************/
|
|
||||||
/* Spell Scaling Info */
|
|
||||||
/**********************/
|
|
||||||
|
|
||||||
$this->createScalingData();
|
|
||||||
|
|
||||||
|
|
||||||
/******************/
|
/******************/
|
||||||
/* Required Items */
|
/* Required Items */
|
||||||
/******************/
|
/******************/
|
||||||
@@ -1423,15 +1415,15 @@ class SpellBaseResponse extends TemplateResponse implements ICache
|
|||||||
$this->reagents = [$enhanced, $reagentResult];
|
$this->reagents = [$enhanced, $reagentResult];
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createScalingData() : void // calculation mostly like seen in TC
|
private function calculateEffectScaling() : array // calculation mostly like seen in TC
|
||||||
{
|
{
|
||||||
if ($this->subject->getField('attributes3') & SPELL_ATTR3_NO_DONE_BONUS)
|
if ($this->subject->getField('attributes3') & SPELL_ATTR3_NO_DONE_BONUS)
|
||||||
return;
|
return [0, 0, 0, 0];
|
||||||
|
|
||||||
if (!$this->subject->isScalableDamagingSpell() && !$this->subject->isScalableHealingSpell())
|
if (!$this->subject->isScalableDamagingSpell() && !$this->subject->isScalableHealingSpell())
|
||||||
return;
|
return [0, 0, 0, 0];
|
||||||
|
|
||||||
$scaling = ['directSP' => 0, 'dotSP' => 0, 'directAP' => 0, 'dotAP' => 0];
|
$scaling = [0, 0, 0, 0];
|
||||||
$pMask = $this->subject->periodicEffectsMask();
|
$pMask = $this->subject->periodicEffectsMask();
|
||||||
$allDoTs = true;
|
$allDoTs = true;
|
||||||
|
|
||||||
@@ -1442,23 +1434,20 @@ class SpellBaseResponse extends TemplateResponse implements ICache
|
|||||||
|
|
||||||
if ($pMask & 1 << ($i - 1))
|
if ($pMask & 1 << ($i - 1))
|
||||||
{
|
{
|
||||||
$scaling['dotSP'] = $this->subject->getField('effect'.$i.'BonusMultiplier');
|
$scaling[1] = $this->subject->getField('effect'.$i.'BonusMultiplier');
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
$scaling['directSP'] = $this->subject->getField('effect'.$i.'BonusMultiplier');
|
$scaling[0] = $this->subject->getField('effect'.$i.'BonusMultiplier');
|
||||||
|
|
||||||
$allDoTs = false;
|
$allDoTs = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($s = DB::World()->selectRow('SELECT `direct_bonus` AS "directSP", `dot_bonus` AS "dotSP", `ap_bonus` AS "directAP", `ap_dot_bonus` AS "dotAP" FROM spell_bonus_data WHERE `entry` = ?d', $this->firstRank))
|
if ($s = DB::World()->selectRow('SELECT `direct_bonus` AS "0", `dot_bonus` AS "1", `ap_bonus` AS "2", `ap_dot_bonus` AS "3" FROM spell_bonus_data WHERE `entry` = ?d', $this->firstRank))
|
||||||
$scaling = $s;
|
$scaling = $s;
|
||||||
|
|
||||||
if (!in_array($this->subject->getField('typeCat'), [-2, -3, -7, 7]) || $this->subject->getField('damageClass') == SPELL_DAMAGE_CLASS_NONE)
|
if (!in_array($this->subject->getField('typeCat'), [-2, -3, -7, 7]) || $this->subject->getField('damageClass') == SPELL_DAMAGE_CLASS_NONE)
|
||||||
{
|
return array_map(fn($x) => $x < 0 ? 0 : $x, $scaling);
|
||||||
$this->scaling = array_filter($scaling, fn($x) => $x > 0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($scaling as $k => $v)
|
foreach ($scaling as $k => $v)
|
||||||
{
|
{
|
||||||
@@ -1467,15 +1456,15 @@ class SpellBaseResponse extends TemplateResponse implements ICache
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// no known calculation for physical abilities
|
// no known calculation for physical abilities
|
||||||
if ($k == 'directAP' || $k == 'dotAP')
|
if (in_array($k, [2, 3])) // [direct AP, DoT AP]
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// dont use spellPower to scale physical Abilities
|
// dont use spellPower to scale physical Abilities
|
||||||
if ($this->subject->getField('schoolMask') == (1 << SPELL_SCHOOL_NORMAL) && ($k == 'directSP' || $k == 'dotSP'))
|
if ($this->subject->getField('schoolMask') == (1 << SPELL_SCHOOL_NORMAL) && in_array($k, [0, 1]))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
$isDOT = false;
|
$isDOT = false;
|
||||||
if ($k == 'dotSP' || $k == 'dotAP')
|
if (in_array($k, [1, 3])) // [DoT SP, DoT AP]
|
||||||
{
|
{
|
||||||
if ($pMask)
|
if ($pMask)
|
||||||
$isDOT = true;
|
$isDOT = true;
|
||||||
@@ -1523,7 +1512,7 @@ class SpellBaseResponse extends TemplateResponse implements ICache
|
|||||||
$scaling[$k] = 0; // would be 1 ($dotFactor), but we dont want it to be displayed
|
$scaling[$k] = 0; // would be 1 ($dotFactor), but we dont want it to be displayed
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->scaling = array_filter($scaling, fn($x) => $x > 0);
|
return array_map(fn($x) => $x < 0 ? 0 : $x, $scaling);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createRequiredItems() : void
|
private function createRequiredItems() : void
|
||||||
@@ -1585,6 +1574,7 @@ class SpellBaseResponse extends TemplateResponse implements ICache
|
|||||||
$spellIdx = array_unique(array_merge($this->subject->canTriggerSpell(), $this->subject->canTeachSpell()));
|
$spellIdx = array_unique(array_merge($this->subject->canTriggerSpell(), $this->subject->canTeachSpell()));
|
||||||
$itemIdx = $this->subject->canCreateItem();
|
$itemIdx = $this->subject->canCreateItem();
|
||||||
$perfItem = DB::World()->selectRow('SELECT `perfectItemType` AS "itemId", `requiredSpecialization` AS "reqSpellId", `perfectCreateChance` AS "chance" FROM skill_perfect_item_template WHERE `spellId` = ?d', $this->typeId);
|
$perfItem = DB::World()->selectRow('SELECT `perfectItemType` AS "itemId", `requiredSpecialization` AS "reqSpellId", `perfectCreateChance` AS "chance" FROM skill_perfect_item_template WHERE `spellId` = ?d', $this->typeId);
|
||||||
|
$scaling = $this->calculateEffectScaling();
|
||||||
|
|
||||||
// Iterate through all effects:
|
// Iterate through all effects:
|
||||||
for ($i = 1; $i < 4; $i++)
|
for ($i = 1; $i < 4; $i++)
|
||||||
@@ -2220,6 +2210,21 @@ class SpellBaseResponse extends TemplateResponse implements ICache
|
|||||||
if (isset($_footer['value'][2]))
|
if (isset($_footer['value'][2]))
|
||||||
$buffer .= $_footer['value'][2];
|
$buffer .= $_footer['value'][2];
|
||||||
|
|
||||||
|
if (in_array($effId, SpellList::EFFECTS_SCALING_DAMAGE))
|
||||||
|
{
|
||||||
|
if ($scaling[2])
|
||||||
|
$buffer .= Lang::spell('apMod', [$scaling[2]]);
|
||||||
|
if ($scaling[0])
|
||||||
|
$buffer .= Lang::spell('spMod', [$scaling[0]]);
|
||||||
|
}
|
||||||
|
if (in_array($effAura, SpellList::AURAS_SCALING_DAMAGE))
|
||||||
|
{
|
||||||
|
if ($scaling[3])
|
||||||
|
$buffer .= Lang::spell('apMod', [$scaling[3]]);
|
||||||
|
if ($scaling[1])
|
||||||
|
$buffer .= Lang::spell('spMod', [$scaling[1]]);
|
||||||
|
}
|
||||||
|
|
||||||
$_footer['value'] = $buffer;
|
$_footer['value'] = $buffer;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -47,9 +47,9 @@ class SpellList extends DBTypeList
|
|||||||
public const EFFECTS_MODEL_NPC = array(
|
public const EFFECTS_MODEL_NPC = array(
|
||||||
SPELL_EFFECT_SUMMON, SPELL_EFFECT_SUMMON_PET, SPELL_EFFECT_SUMMON_DEMON, SPELL_EFFECT_KILL_CREDIT, SPELL_EFFECT_KILL_CREDIT2
|
SPELL_EFFECT_SUMMON, SPELL_EFFECT_SUMMON_PET, SPELL_EFFECT_SUMMON_DEMON, SPELL_EFFECT_KILL_CREDIT, SPELL_EFFECT_KILL_CREDIT2
|
||||||
);
|
);
|
||||||
public const EFFECTS_DIRECT_SCALING = array(
|
public const EFFECTS_DIRECT_SCALING = array( // as per Unit::GetCastingTimeForBonus()
|
||||||
SPELL_EFFECT_SCHOOL_DAMAGE, SPELL_EFFECT_ENVIRONMENTAL_DAMAGE, SPELL_EFFECT_POWER_DRAIN, SPELL_EFFECT_HEALTH_LEECH, SPELL_EFFECT_POWER_BURN,
|
SPELL_EFFECT_SCHOOL_DAMAGE, SPELL_EFFECT_ENVIRONMENTAL_DAMAGE, SPELL_EFFECT_POWER_DRAIN, SPELL_EFFECT_HEALTH_LEECH, SPELL_EFFECT_POWER_BURN,
|
||||||
SPELL_EFFECT_HEAL_MAX_HEALTH
|
SPELL_EFFECT_HEAL
|
||||||
);
|
);
|
||||||
public const EFFECTS_ENCHANTMENT = array(
|
public const EFFECTS_ENCHANTMENT = array(
|
||||||
SPELL_EFFECT_ENCHANT_ITEM, SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY, SPELL_EFFECT_ENCHANT_HELD_ITEM, SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC
|
SPELL_EFFECT_ENCHANT_ITEM, SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY, SPELL_EFFECT_ENCHANT_HELD_ITEM, SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC
|
||||||
@@ -72,7 +72,7 @@ class SpellList extends DBTypeList
|
|||||||
SPELL_AURA_TRANSFORM, SPELL_AURA_MOUNTED, SPELL_AURA_CHANGE_MODEL_FOR_ALL_HUMANOIDS, SPELL_AURA_X_RAY,
|
SPELL_AURA_TRANSFORM, SPELL_AURA_MOUNTED, SPELL_AURA_CHANGE_MODEL_FOR_ALL_HUMANOIDS, SPELL_AURA_X_RAY,
|
||||||
SPELL_AURA_MOD_FAKE_INEBRIATE
|
SPELL_AURA_MOD_FAKE_INEBRIATE
|
||||||
);
|
);
|
||||||
public const AURAS_PERIODIC_SCALING = array(
|
public const AURAS_PERIODIC_SCALING = array( // as per Unit::GetCastingTimeForBonus()
|
||||||
SPELL_AURA_PERIODIC_DAMAGE, SPELL_AURA_PERIODIC_HEAL, SPELL_AURA_PERIODIC_LEECH
|
SPELL_AURA_PERIODIC_DAMAGE, SPELL_AURA_PERIODIC_HEAL, SPELL_AURA_PERIODIC_LEECH
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -1678,7 +1678,8 @@ $lang = array(
|
|||||||
'pointsPerCP' => ", plus %s pro Combopunkt",
|
'pointsPerCP' => ", plus %s pro Combopunkt",
|
||||||
'stackGroup' => "Stack Gruppierung",
|
'stackGroup' => "Stack Gruppierung",
|
||||||
'linkedWith' => "Verknüpft mit",
|
'linkedWith' => "Verknüpft mit",
|
||||||
'_scaling' => "Skalierung",
|
'apMod' => " (AP mod: %.3g)",
|
||||||
|
'spMod' => " (ZM mod: %.3g)",
|
||||||
'instantPhys' => "Sofort",
|
'instantPhys' => "Sofort",
|
||||||
'castTime' => array(
|
'castTime' => array(
|
||||||
"Spontanzauber",
|
"Spontanzauber",
|
||||||
@@ -1725,10 +1726,6 @@ $lang = array(
|
|||||||
-1 => "Munition", -41 => "Pyrit", -61 => "Dampfdruck", -101 => "Hitze", -121 => "Schlamm", -141 => "Blutmacht",
|
-1 => "Munition", -41 => "Pyrit", -61 => "Dampfdruck", -101 => "Hitze", -121 => "Schlamm", -141 => "Blutmacht",
|
||||||
-142 => "Wrath"
|
-142 => "Wrath"
|
||||||
),
|
),
|
||||||
'scaling' => array(
|
|
||||||
'directSP' => "+%.2f%% der Zaubermacht zum direkten Effekt", 'directAP' => "+%.2f%% der Angriffskraft zum direkten Effekt",
|
|
||||||
'dotSP' => "+%.2f%% der Zaubermacht pro Tick", 'dotAP' => "+%.2f%% der Angriffskraft pro Tick"
|
|
||||||
),
|
|
||||||
'relItems' => array(
|
'relItems' => array(
|
||||||
'base' => "<small>%s im Zusammenhang mit <b>%s</b> anzeigen</small>",
|
'base' => "<small>%s im Zusammenhang mit <b>%s</b> anzeigen</small>",
|
||||||
'link' => " oder ",
|
'link' => " oder ",
|
||||||
|
|||||||
@@ -1678,7 +1678,8 @@ $lang = array(
|
|||||||
'pointsPerCP' => ", plus %s per combo point",
|
'pointsPerCP' => ", plus %s per combo point",
|
||||||
'stackGroup' => "Stack Group",
|
'stackGroup' => "Stack Group",
|
||||||
'linkedWith' => "Linked with",
|
'linkedWith' => "Linked with",
|
||||||
'_scaling' => "Scaling",
|
'apMod' => " (AP mod: %.3g)",
|
||||||
|
'spMod' => " (SP mod: %.3g)",
|
||||||
'instantPhys' => "Instant", // SPELL_CAST_TIME_INSTANT_NO_MANA
|
'instantPhys' => "Instant", // SPELL_CAST_TIME_INSTANT_NO_MANA
|
||||||
'castTime' => array(
|
'castTime' => array(
|
||||||
"Instant cast", // SPELL_CAST_TIME_INSTANT
|
"Instant cast", // SPELL_CAST_TIME_INSTANT
|
||||||
@@ -1725,10 +1726,6 @@ $lang = array(
|
|||||||
-1 => "Ammo", -41 => "Pyrite", -61 => "Steam Pressure", -101 => "Heat", -121 => "Ooze", -141 => "Blood Power",
|
-1 => "Ammo", -41 => "Pyrite", -61 => "Steam Pressure", -101 => "Heat", -121 => "Ooze", -141 => "Blood Power",
|
||||||
-142 => "Wrath"
|
-142 => "Wrath"
|
||||||
),
|
),
|
||||||
'scaling' => array(
|
|
||||||
'directSP' => "+%.2f%% of spell power to direct component", 'directAP' => "+%.2f%% of attack power to direct component",
|
|
||||||
'dotSP' => "+%.2f%% of spell power per tick", 'dotAP' => "+%.2f%% of attack power per tick"
|
|
||||||
),
|
|
||||||
'relItems' => array(
|
'relItems' => array(
|
||||||
'base' => "<small>Show %s related to <b>%s</b></small>",
|
'base' => "<small>Show %s related to <b>%s</b></small>",
|
||||||
'link' => " or ",
|
'link' => " or ",
|
||||||
|
|||||||
@@ -1678,7 +1678,8 @@ $lang = array(
|
|||||||
'pointsPerCP' => ", mas %s por punto de combo",
|
'pointsPerCP' => ", mas %s por punto de combo",
|
||||||
'stackGroup' => "Grupo de aplilamiento",
|
'stackGroup' => "Grupo de aplilamiento",
|
||||||
'linkedWith' => "Asociado con",
|
'linkedWith' => "Asociado con",
|
||||||
'_scaling' => "Escala",
|
'apMod' => " (Mod AP: %.3g)",
|
||||||
|
'spMod' => " (Mod SP: %.3g)",
|
||||||
'instantPhys' => "Instantáneo",
|
'instantPhys' => "Instantáneo",
|
||||||
'castTime' => array(
|
'castTime' => array(
|
||||||
"Hechizo instantáneo",
|
"Hechizo instantáneo",
|
||||||
@@ -1725,10 +1726,6 @@ $lang = array(
|
|||||||
-1 => "Munición", -41 => "Pirita", -61 => "Presión de vapor", -101 => "Calor", -121 => "Moco", -141 => "Poder de sangre",
|
-1 => "Munición", -41 => "Pirita", -61 => "Presión de vapor", -101 => "Calor", -121 => "Moco", -141 => "Poder de sangre",
|
||||||
-142 => "Cólera"
|
-142 => "Cólera"
|
||||||
),
|
),
|
||||||
'scaling' => array(
|
|
||||||
'directSP' => "+%.2f%% del poder de hechizo al componente directo", 'directAP' => "+%.2f%% del poder de ataque al componente directo",
|
|
||||||
'dotSP' => "+%.2f%% del poder de hechizo por tick", 'dotAP' => "+%.2f%% del poder de ataque por tick"
|
|
||||||
),
|
|
||||||
'relItems' => array(
|
'relItems' => array(
|
||||||
'base' => "<small>Muestra %s relacionados con <b>%s</b></small>",
|
'base' => "<small>Muestra %s relacionados con <b>%s</b></small>",
|
||||||
'link' => " u ",
|
'link' => " u ",
|
||||||
|
|||||||
@@ -1678,7 +1678,8 @@ $lang = array(
|
|||||||
'pointsPerCP' => ", plus %s par point de combo",
|
'pointsPerCP' => ", plus %s par point de combo",
|
||||||
'stackGroup' => "[Stack Group]",
|
'stackGroup' => "[Stack Group]",
|
||||||
'linkedWith' => "[Linked with]",
|
'linkedWith' => "[Linked with]",
|
||||||
'_scaling' => "[Scaling]",
|
'apMod' => " (Mod. AP : %.2f)",
|
||||||
|
'spMod' => " (Mod. SP : %.2f)",
|
||||||
'instantPhys' => "Instantané",
|
'instantPhys' => "Instantané",
|
||||||
'castTime' => array(
|
'castTime' => array(
|
||||||
"Incantation immédiate",
|
"Incantation immédiate",
|
||||||
@@ -1725,10 +1726,6 @@ $lang = array(
|
|||||||
-1 => "Munitions", -41 => "Pyrite", -61 => "Pression vapeur", -101 => "Chaleur", -121 => "Limon", -141 => "Puissance de sang",
|
-1 => "Munitions", -41 => "Pyrite", -61 => "Pression vapeur", -101 => "Chaleur", -121 => "Limon", -141 => "Puissance de sang",
|
||||||
-142 => "Courroux"
|
-142 => "Courroux"
|
||||||
),
|
),
|
||||||
'scaling' => array(
|
|
||||||
'directSP' => "+%.2f%% de la puissance des sorts directe", 'directAP' => "+%.2f%% de la puissance d'attaque directe",
|
|
||||||
'dotSP' => "+%.2f%% de la puissance des sorts par tick", 'dotAP' => "+%.2f%% de la puissance d'attaque par tick"
|
|
||||||
),
|
|
||||||
'relItems' => array(
|
'relItems' => array(
|
||||||
'base' => "<small>Montre %s reliés à <b>%s</b></small>",
|
'base' => "<small>Montre %s reliés à <b>%s</b></small>",
|
||||||
'link' => " ou ",
|
'link' => " ou ",
|
||||||
|
|||||||
@@ -1678,7 +1678,8 @@ $lang = array(
|
|||||||
'pointsPerCP' => ", плюс %s в прием в серии",
|
'pointsPerCP' => ", плюс %s в прием в серии",
|
||||||
'stackGroup' => "[Stack Group]",
|
'stackGroup' => "[Stack Group]",
|
||||||
'linkedWith' => "[Linked with]",
|
'linkedWith' => "[Linked with]",
|
||||||
'_scaling' => "[Scaling]",
|
'apMod' => " (Мод.-р АП:%.3g)",
|
||||||
|
'spMod' => " (Мод.-р СП:%.3g)",
|
||||||
'instantPhys' => "Мгновенное действие",
|
'instantPhys' => "Мгновенное действие",
|
||||||
'castTime' => array(
|
'castTime' => array(
|
||||||
"Мгновенное действие",
|
"Мгновенное действие",
|
||||||
@@ -1725,10 +1726,6 @@ $lang = array(
|
|||||||
-1 => "Боеприпасы", -41 => "Колчедан", -61 => "Давление пара", -101 => "Жар", -121 => "Слизнюк", -141 => "Сила крови",
|
-1 => "Боеприпасы", -41 => "Колчедан", -61 => "Давление пара", -101 => "Жар", -121 => "Слизнюк", -141 => "Сила крови",
|
||||||
-142 => "Гнев"
|
-142 => "Гнев"
|
||||||
),
|
),
|
||||||
'scaling' => array(
|
|
||||||
'directSP' => "[+%.2f%% of spell power to direct component]", 'directAP' => "[+%.2f%% of attack power to direct component]",
|
|
||||||
'dotSP' => "[+%.2f%% of spell power per tick]", 'dotAP' => "[+%.2f%% of attack power per tick]"
|
|
||||||
),
|
|
||||||
'relItems' => array(
|
'relItems' => array(
|
||||||
'base' => "<small>Показать %s, относящиеся к профессии <b>%s</b></small>",
|
'base' => "<small>Показать %s, относящиеся к профессии <b>%s</b></small>",
|
||||||
'link' => " или ",
|
'link' => " или ",
|
||||||
|
|||||||
@@ -1678,7 +1678,8 @@ $lang = array(
|
|||||||
'pointsPerCP' => ",加%s每连击",
|
'pointsPerCP' => ",加%s每连击",
|
||||||
'stackGroup' => "Stack Group",
|
'stackGroup' => "Stack Group",
|
||||||
'linkedWith' => "Linked with",
|
'linkedWith' => "Linked with",
|
||||||
'_scaling' => "缩放比例",
|
'apMod' => "(攻强 mod:%.3g)",
|
||||||
|
'spMod' => "(法力 mod:%.3g)",
|
||||||
'instantPhys' => "瞬发",
|
'instantPhys' => "瞬发",
|
||||||
'castTime' => array(
|
'castTime' => array(
|
||||||
"瞬发法术",
|
"瞬发法术",
|
||||||
@@ -1725,10 +1726,6 @@ $lang = array(
|
|||||||
-1 => "弹药", -41 => "蓝铁", -61 => "蒸汽动力", -101 => "热能", -121 => "软泥", -141 => "鲜血能量",
|
-1 => "弹药", -41 => "蓝铁", -61 => "蒸汽动力", -101 => "热能", -121 => "软泥", -141 => "鲜血能量",
|
||||||
-142 => "愤怒"
|
-142 => "愤怒"
|
||||||
),
|
),
|
||||||
'scaling' => array(
|
|
||||||
'directSP' => "直接效果的攻击强度 +%.2f%%", 'directAP' => "直接效果的攻击强度 +%.2f%%",
|
|
||||||
'dotSP' => "每个周期的法术强度 +%.2f%%", 'dotAP' => "每个周期的攻击强度 +%.2f%%"
|
|
||||||
),
|
|
||||||
'relItems' => array(
|
'relItems' => array(
|
||||||
'base' => "<small>显示与<b>%s</b>相关的 %s</small>",
|
'base' => "<small>显示与<b>%s</b>相关的 %s</small>",
|
||||||
'link' => "或",
|
'link' => "或",
|
||||||
|
|||||||
@@ -134,23 +134,6 @@ endif;
|
|||||||
<td><?=$this->gcd;?></td>
|
<td><?=$this->gcd;?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
// not default values
|
|
||||||
if ($this->scaling):
|
|
||||||
?>
|
|
||||||
<tr>
|
|
||||||
<th><?=Lang::spell('_scaling');?></th>
|
|
||||||
<td colspan="3">
|
|
||||||
|
|
||||||
<?php
|
|
||||||
foreach ($this->scaling as $k => $v):
|
|
||||||
echo ' '.Lang::spell('scaling', $k, [$v * 100])."<br />\n";
|
|
||||||
endforeach;
|
|
||||||
?>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<?php
|
|
||||||
endif;
|
|
||||||
|
|
||||||
if ($this->stances):
|
if ($this->stances):
|
||||||
?>
|
?>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
Reference in New Issue
Block a user