diff --git a/includes/types/spell.class.php b/includes/types/spell.class.php index 3a44ec3a..993fe787 100644 --- a/includes/types/spell.class.php +++ b/includes/types/spell.class.php @@ -765,59 +765,66 @@ class SpellList extends BaseType { $str = ''; - // check for custom PowerDisplay - $pt = $this->curTpl['powerType']; + $pt = $this->curTpl['powerType']; + $pc = $this->curTpl['powerCost']; + $pcp = $this->curTpl['powerCostPercent']; + $pps = $this->curTpl['powerPerSecond']; + $pcpl = $this->curTpl['powerCostPerLevel']; + + if ($pt == POWER_RAGE || $pt == POWER_RUNIC_POWER) + $pc /= 10; if ($pt == POWER_RUNE && ($rCost = ($this->curTpl['powerCostRunes'] & 0x333))) - { // Frost 2|1 - Unholy 2|1 - Blood 2|1 + { // Blood 2|1 - Unholy 2|1 - Frost 2|1 $runes = []; - if ($_ = (($rCost & 0x300) >> 8)) - $runes[] = $_.' '.Lang::spell('powerRunes', 2); - if ($_ = (($rCost & 0x030) >> 4)) - $runes[] = $_.' '.Lang::spell('powerRunes', 1); - if ($_ = ($rCost & 0x003)) - $runes[] = $_.' '.Lang::spell('powerRunes', 0); - $str .= implode(', ', $runes); + for ($i = 0; $i < 3; $i++) + { + if ($rCost & 0x3) + $runes[] = Lang::spell('powerCostRunes', $i, [$rCost & 0x3]); + + $rCost >>= 4; + } + + $str .= implode(' ', $runes); + } + else if ($pcp > 0) // power cost: pct over static + $str .= $pcp."% ".sprintf(Lang::spell('pctCostOf'), mb_strtolower(Lang::spell('powerTypes', $pt))); + else if ($pc > 0 || $pps > 0 || $pcpl > 0) + { + if (Lang::exist('spell', 'powerCost', $pt)) + $str .= Lang::spell('powerCost', $pt, intVal($pps > 0), [$pc, $pps]); + else + $str .= Lang::spell('powerDisplayCost', intVal($pps > 0), [$pc, Lang::spell('powerTypes', $pt), $pps]); } - else if ($this->curTpl['powerCostPercent'] > 0) // power cost: pct over static - $str .= $this->curTpl['powerCostPercent']."% ".sprintf(Lang::spell('pctCostOf'), mb_strtolower(Lang::spell('powerTypes', $pt))); - else if ($this->curTpl['powerCost'] > 0 || $this->curTpl['powerPerSecond'] > 0 || $this->curTpl['powerCostPerLevel'] > 0) - $str .= ($pt == POWER_RAGE || $pt == POWER_RUNIC_POWER ? $this->curTpl['powerCost'] / 10 : $this->curTpl['powerCost']).' '.Util::ucFirst(Lang::spell('powerTypes', $pt)); - - // append periodic cost - if ($this->curTpl['powerPerSecond'] > 0) - $str .= sprintf(Lang::spell('costPerSec'), $this->curTpl['powerPerSecond']); // append level cost (todo (low): work in as scaling cost) - if ($this->curTpl['powerCostPerLevel'] > 0) - $str .= sprintf(Lang::spell('costPerLevel'), $this->curTpl['powerCostPerLevel']); + if ($pcpl > 0) + $str .= sprintf(Lang::spell('costPerLevel'), $pcpl); return $str; } public function createCastTimeForCurrent($short = true, $noInstant = true) { - if ($this->isChanneledSpell()) + if (!$this->curTpl['castTime'] && $this->isChanneledSpell()) return Lang::spell('channeled'); - else if ($this->curTpl['castTime'] > 0) - return $short ? sprintf(Lang::spell('castIn'), $this->curTpl['castTime']) : Util::formatTime($this->curTpl['castTime'] * 1000); + // SPELL_ATTR0_ABILITY instant ability.. yeah, wording thing only (todo (low): rule is imperfect) + else if (!$this->curTpl['castTime'] && ($this->curTpl['damageClass'] != 1 || $this->curTpl['attributes0'] & SPELL_ATTR0_ABILITY)) + return Lang::spell('instantPhys'); // show instant only for player/pet/npc abilities (todo (low): unsure when really hidden (like talent-case)) else if ($noInstant && !in_array($this->curTpl['typeCat'], [11, 7, -3, -6, -8, 0]) && !($this->curTpl['cuFlags'] & SPELL_CU_TALENTSPELL)) return ''; - // SPELL_ATTR0_ABILITY instant ability.. yeah, wording thing only (todo (low): rule is imperfect) - else if ($this->curTpl['damageClass'] != 1 || $this->curTpl['attributes0'] & SPELL_ATTR0_ABILITY) - return Lang::spell('instantPhys'); - else // instant cast - return Lang::spell('instantMagic'); + else + return $short ? Lang::formatTime($this->curTpl['castTime'] * 1000, 'spell', 'castTime') : Util::formatTime($this->curTpl['castTime'] * 1000); } private function createCooldownForCurrent() { if ($this->curTpl['recoveryTime']) - return sprintf(Lang::game('cooldown'), Util::formatTime($this->curTpl['recoveryTime'], true)); + return Lang::formatTime($this->curTpl['recoveryTime'], 'spell', 'cooldown'); else if ($this->curTpl['recoveryCategory']) - return sprintf(Lang::game('cooldown'), Util::formatTime($this->curTpl['recoveryCategory'], true)); + return Lang::formatTime($this->curTpl['recoveryCategory'], 'spell', 'cooldown'); else return ''; } diff --git a/localization/lang.class.php b/localization/lang.class.php index 319953bc..c83b0ec1 100644 --- a/localization/lang.class.php +++ b/localization/lang.class.php @@ -69,38 +69,41 @@ class Lang self::$main['moreTitles']['privilege'] = self::$privileges['_privileges']; } - public static function __callStatic(string $prop, array $args) : ?string + public static function __callStatic(string $prop, array $args) // : ?string|array + { + $vspfArgs = []; + foreach ($args as $i => $arg) + { + if (!is_array($arg)) + continue; + + $vspfArgs = $arg; + unset($args[$i]); + } + + if ($x = self::exist($prop, ...$args)) + return self::vspf($x, $vspfArgs); + + $dbt = debug_backtrace()[0]; + $file = explode(DIRECTORY_SEPARATOR, $dbt['file']); + trigger_error('Lang - undefined property Lang::$'.$prop.'[\''.implode('\'][\'', $args).'\'], called in '.array_pop($file).':'.$dbt['line'], E_USER_WARNING); + } + + public static function exist(string $prop, ...$args) { if (!isset(self::$$prop)) - { - $dbt = debug_backtrace()[0]; - $file = explode(DIRECTORY_SEPARATOR, $dbt['file']); - trigger_error('Lang - tried to use undefined property Lang::$'.$prop.', called in '.array_pop($file).':'.$dbt['line'], E_USER_WARNING); return null; - } - $vspfArgs = []; - - $var = self::$$prop; - foreach ($args as $arg) + $ref = self::$$prop; + foreach ($args as $a) { - if (is_array($arg)) - { - $vspfArgs = $arg; - continue; - } - else if (!isset($var[$arg])) - { - $dbt = debug_backtrace()[0]; - $file = explode(DIRECTORY_SEPARATOR, $dbt['file']); - trigger_error('Lang - undefined property Lang::$'.$prop.'[\''.implode('\'][\'', $args).'\'], called in '.array_pop($file).':'.$dbt['line'], E_USER_WARNING); + if (!isset($ref[$a])) return null; - } - $var = $var[$arg]; + $ref = $ref[$a]; } - return self::vspf($var, $vspfArgs); + return $ref; } public static function concat(array $args, bool $useAnd = true, ?callable $callback = null) : string @@ -531,7 +534,9 @@ class Lang if ($msec < 0) $msec = 0; - [$ms, $s, $m, $h, $d] = Util::parseTime($msec); + $time = Util::parseTime($msec); // [$ms, $s, $m, $h, $d] + $mult = [0, 1000, 60, 60, 24]; + $total = 0; $ref = []; $result = []; @@ -543,19 +548,36 @@ class Lang return ''; } - if ($d >= 1) - $result[] = self::vspf($ref[4], [$d + $h / 24]); - if ($h >= 1 && ($concat || !$result)) - $result[] = self::vspf($ref[3], [$h + $m / 60]); - if ($m >= 1 && ($concat || !$result)) - $result[] = self::vspf($ref[2], [$m + $s / 60]); - if ($s >= 1 && ($concat || !$result)) - $result[] = self::vspf($ref[1], [$s]); + if (!$msec) + return self::vspf($ref[0], [0]); - if (!$result) - $result[] = self::vspf($ref[0]); + if ($concat) + { + for ($i = 4; $i > 0; $i--) + { + $total += $time[$i]; + if (isset($ref[$i]) && ($total || ($i == 1 && !$result))) + { + $result[] = self::vspf($ref[$i], [$total]); + $total = 0; + } + else + $total *= $mult[$i]; + } - return implode(', ', $result); + return implode(', ', $result); + } + + for ($i = 4; $i > 0; $i--) + { + $total += $time[$i]; + if (isset($ref[$i]) && ($total || $i == 1)) + return self::vspf($ref[$i], [$total + ($time[$i-1] ?? 0) / $mult[$i]]); + else + $total *= $mult[$i]; + } + + return ''; } private static function vspf(/* array|string */ $var, array $args = []) // : array|string diff --git a/localization/locale_dede.php b/localization/locale_dede.php index 85c0fb7c..7e258690 100644 --- a/localization/locale_dede.php +++ b/localization/locale_dede.php @@ -1457,9 +1457,6 @@ $lang = array( 'procChance' => "Procchance", 'starter' => "Basiszauber", 'trainingCost' => "Trainingskosten", - 'castIn' => "Wirken in %s Sek.", - 'instantPhys' => "Sofort", - 'instantMagic' => "Spontanzauber", 'channeled' => "Kanalisiert", 'range' => "%s Meter Reichweite", 'meleeRange' => "Nahkampfreichweite", @@ -1473,6 +1470,19 @@ $lang = array( 'stackGroup' => "Stack Gruppierung", 'linkedWith' => "Verknüpft mit", '_scaling' => "Skalierung", + 'instantPhys' => "Sofort", + 'castTime' => array( + "Spontanzauber", + "Wirken in %.3g Sek.", + "Wirken in %.3g Min." + ), + 'cooldown' => array( + "Keine Abklingzeit", + "%.3g Sek. Abklingzeit", + "%.3g Min. Abklingzeit", + // "%.3g |4Stunde:Stunden; Abklingzeit", + // "%.3g |4Tag:Tage; Abklingzeit" + ), 'duration' => array( "bis Abbruch", "%.2G Sek.", @@ -1487,10 +1497,16 @@ $lang = array( "Noch %d |4Stunde:Stunden;", "Noch %d |4Tag:Tage;" ), - '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" + 'powerCost' => array( + -2 => ["%d Gesundheit", '%1$d Gesundheit und %2$d pro Sek.'], + 0 => ["%d Mana", '%1$d Mana und %2$d pro Sek.' ], + 1 => ["%d Wut", '%1$d Wut und %2$d pro Sek.' ], + 2 => ["%d Fokus", "%d Fokus und %d pro Sek." ], + 3 => ["%d Energie", "%d Energie und %d pro Sek." ], + 6 => ["%d Runenmacht", "%d Runenmacht, plus %d pro Sek." ], ), + 'powerDisplayCost' => ["%d %s", "%d %s, plus %d pro Sek"], + 'powerCostRunes'=> ["%d Blut", "%d Unheilig", "%d Frost"], 'powerRunes' => ["Blut", "Unheilig", "Frost", "Tod"], 'powerTypes' => array( // conventional @@ -1500,6 +1516,10 @@ $lang = array( -1 => "Munition", -41 => "Pyrit", -61 => "Dampfdruck", -101 => "Hitze", -121 => "Schlamm", -141 => "Blutmacht", -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( 'base' => "%s im Zusammenhang mit %s anzeigen", 'link' => " oder ", diff --git a/localization/locale_enus.php b/localization/locale_enus.php index 4b17ae92..b4657e1f 100644 --- a/localization/locale_enus.php +++ b/localization/locale_enus.php @@ -1457,9 +1457,6 @@ $lang = array( 'procChance' => "Proc chance", 'starter' => "Starter spell", 'trainingCost' => "Training cost", - 'castIn' => "%s sec cast", // SPELL_CAST_TIME_SEC - 'instantPhys' => "Instant", // SPELL_CAST_TIME_INSTANT_NO_MANA - 'instantMagic' => "Instant cast", // SPELL_CAST_TIME_INSTANT 'channeled' => "Channeled", // SPELL_CAST_CHANNELED 'range' => "%s yd range", // SPELL_RANGE / SPELL_RANGE_DUAL 'meleeRange' => "Melee Range", // MELEE_RANGE @@ -1473,6 +1470,19 @@ $lang = array( 'stackGroup' => "Stack Group", 'linkedWith' => "Linked with", '_scaling' => "Scaling", + 'instantPhys' => "Instant", // SPELL_CAST_TIME_INSTANT_NO_MANA + 'castTime' => array( + "Instant cast", // SPELL_CAST_TIME_INSTANT + "Wirken in %.3g Sek.", // SPELL_CAST_TIME_SEC + "Wirken in %.3g Min." // SPELL_CAST_TIME_MIN + ), + 'cooldown' => array( + "Instant cooldown", // SPELL_RECAST_TIME_INSTANT not used? + "%.3g sec cooldown", // SPELL_RECAST_TIME_SEC + "%.3g min cooldown", // SPELL_RECAST_TIME_MIN + // "%.3g hour cooldown", // SPELL_RECAST_TIME_HOURS not in 3.3.5 + // "%.3g day cooldown" // SPELL_RECAST_TIME_DAYS not in 3.3.5 + ), 'duration' => array( // SPELL_DURATION_* "until cancelled", "%.2G sec", @@ -1487,11 +1497,17 @@ $lang = array( "%d |4hour:hours; remaining", "%d |4day:days; remaining" ), - '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" + 'powerCost' => array( + -2 => ["%d Health", "%d Health, plus %d per sec" ], // HEALTH_COST HEALTH_COST_PER_TIME + 0 => ["%d Mana", "%d Mana, plus %d per sec" ], // MANA_COST MANA_COST_PER_TIME + 1 => ["%d Rage", "%d Rage, plus %d per sec" ], // RAGE_COST RAGE_COST_PER_TIME + 2 => ["%d Focus", "%d Focus, plus %d per sec" ], // FOCUS_COST FOCUS_COST_PER_TIME + 3 => ["%d Energy", "%d Energy, plus %d per sec" ], // ENERGY_COST ENERGY_COST_PER_TIME + 6 => ["%d Runic Power", "%d Runic Power, plus %d per sec"], // RUNIC_POWER_COST RUNIC_POWER_COST_PER_TIME ), - 'powerRunes' => ["Blood", "Unholy", "Frost", "Death"], // RUNE_COST_* / COMBAT_TEXT_RUNE_* + 'powerDisplayCost' => ["%d %s", "%d %s, plus %d per sec"], // POWER_DISPLAY_COST POWER_DISPLAY_COST_PER_TIME + 'powerCostRunes'=> ["%d Blood", "%d Unholy", "%d Frost"], // RUNE_COST_* + 'powerRunes' => ["Blood", "Unholy", "Frost", "Death"], // COMBAT_TEXT_RUNE_* 'powerTypes' => array( // conventional - HEALTH, MANA, RAGE, FOCUS, ENERGY, HAPPINESS, RUNES, RUNIC_POWER / *_COST / *COST_PER_TIME -2 => "Health", 0 => "Mana", 1 => "Rage", 2 => "Focus", 3 => "Energy", 4 => "Happiness", @@ -1500,6 +1516,10 @@ $lang = array( -1 => "Ammo", -41 => "Pyrite", -61 => "Steam Pressure", -101 => "Heat", -121 => "Ooze", -141 => "Blood Power", -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( 'base' => "Show %s related to %s", 'link' => " or ", diff --git a/localization/locale_eses.php b/localization/locale_eses.php index 8792e450..bd00077d 100644 --- a/localization/locale_eses.php +++ b/localization/locale_eses.php @@ -1457,9 +1457,6 @@ $lang = array( 'procChance' => "Probabilidad de que accione", 'starter' => "Hechizo inicial", 'trainingCost' => "Costo de enseñanza", - 'castIn' => "Hechizo de %s seg", - 'instantPhys' => "Instante", - 'instantMagic' => "Hechizo instantáneo", 'channeled' => "Canalizado", 'range' => "Alcance de %s m", 'meleeRange' => "Alcance de ataques cuerpo a cuerpo", @@ -1473,6 +1470,19 @@ $lang = array( 'stackGroup' => "Grupo de aplilamiento", 'linkedWith' => "Asociado con", '_scaling' => "Escala", + 'instantPhys' => "Instantáneo", + 'castTime' => array( + "Hechizo instantáneo", + "%.3g s para lanzar", + "Hechizo de %.3g min" + ), + 'cooldown' => array( + "Reutilización instantánea", + "Reutilización: %.3g s", + "Reutilización: %.3g min", + // "Reutilización: %.3g h", + // "Reutilización: %.3g días" + ), 'duration' => array( "hasta cancelación", "%.2G s", @@ -1487,10 +1497,16 @@ $lang = array( "%d |4hora restante:horas restantes;", "%d |4día restante:días restantes;" ), - '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" + 'powerCost' => array( + -2 => ["Salud %d", "%d p. de salud, más %d p. por segundo"], + 0 => ["%d p. de maná", "%d p. de maná, más %d por s"], + 1 => ["%d p. de ira", "%d Ira, más %d por s"], + 2 => ["%d p. de enfoque", "%d enfoque, más %d por s"], + 3 => ["%d p. de energía", "%d energía, más %d por s"], + 6 => ["%d Poder rúnico", "%d poder rúnico, más %d por segundo"] ), + 'powerDisplayCost' => ["%d %s", "%d %s, más %d por seg."], + 'powerCostRunes'=> ["%d sangre", "%d Profano", "%d Escarcha"], 'powerRunes' => ["Sangre", "Profano", "Escarcha", "Muerte"], 'powerTypes' => array( // conventional @@ -1500,6 +1516,10 @@ $lang = array( -1 => "Munición", -41 => "Pirita", -61 => "Presión de vapor", -101 => "Calor", -121 => "Moco", -141 => "Poder de sangre", -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( 'base' => "Muestra %s relacionados con %s", 'link' => " u ", diff --git a/localization/locale_frfr.php b/localization/locale_frfr.php index e5db3aa1..4838abee 100644 --- a/localization/locale_frfr.php +++ b/localization/locale_frfr.php @@ -1457,9 +1457,6 @@ $lang = array( 'procChance' => "Chance", 'starter' => "Sortilège initiaux", 'trainingCost' => "Coût d'entraînement", - 'castIn' => "%s s d'incantation", - 'instantPhys' => "Incantation immédiate", - 'instantMagic' => "Instantanée", 'channeled' => "Canalisée", 'range' => "%s m de portée", 'meleeRange' => "Allonge", @@ -1473,6 +1470,19 @@ $lang = array( 'stackGroup' => "[Stack Group]", 'linkedWith' => "[Linked with]", '_scaling' => "[Scaling]", + 'instantPhys' => "Instantané", + 'castTime' => array( + "Incantation immédiate", + "%.3g sec. d'incantation", + "%.3g min d'incantation" + ), + 'cooldown' => array( + "Recharge instantanée", + "%.3g sec. de recharge", // "Recharge en cours : %d |4seconde:secondes;"; + "%.3g min de recharge", // "Recharge en cours : %d |4minute:minutes;"; + // "Recharge en cours : %d |4heure:heures;", + // "Recharge en cours : %d |4jour:jours;" + ), 'duration' => array( "jusqu’à annulation", "%.2G sec.", @@ -1487,10 +1497,16 @@ $lang = array( "%d |4heure restante:heures restantes;", "%d |4jour restant:jours restants;" ), - '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" + 'powerCost' => array( + -2 => ["%d points de vie", "Points de vie %d, plus %d par sec." ], + 0 => ["Mana : %d", "%d mana, plus %d par sec." ], + 1 => ["Rage : %d", "Rage %d, plus %d par sec." ], + 2 => ["Focalisation : %d", "Focalisation %d, plus %d par sec." ], + 3 => ["Énergie : %d", "Énergie %d, plus %d par sec." ], + 6 => ["%d puissance runique", "%d puissance runique, plus %d par sec." ], ), + 'powerDisplayCost' => ["%d %s", "%d %s, plus %d par seconde"], + 'powerCostRunes'=> ["%d sang", "%d impie", "%d givre"], 'powerRunes' => ["Sang", "Impie", "Givre", "Mort"], 'powerTypes' => array( // conventional @@ -1500,6 +1516,10 @@ $lang = array( -1 => "Munitions", -41 => "Pyrite", -61 => "Pression vapeur", -101 => "Chaleur", -121 => "Limon", -141 => "Puissance de sang", -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( 'base' => "Montre %s reliés à %s", 'link' => " ou ", diff --git a/localization/locale_ruru.php b/localization/locale_ruru.php index 981d78e2..95c21af6 100644 --- a/localization/locale_ruru.php +++ b/localization/locale_ruru.php @@ -1457,9 +1457,6 @@ $lang = array( 'procChance' => "Шанс срабатывания", 'starter' => "Начальное заклинание", 'trainingCost' => "Цена обучения", - 'castIn' => "Применение: %s сек.", - 'instantPhys' => "Мгновенное действие", - 'instantMagic' => "Мгновенное действие", 'channeled' => "Направляемое", 'range' => "Радиус действия: %s м", 'meleeRange' => "Дистанция ближнего боя", @@ -1473,6 +1470,19 @@ $lang = array( 'stackGroup' => "[Stack Group]", 'linkedWith' => "[Linked with]", '_scaling' => "[Scaling]", + 'instantPhys' => "Мгновенное действие", + 'castTime' => array( + "Мгновенное действие", + "Применение: %.3g сек.", + "применение заклинания: %.3g мин." + ), + 'cooldown' => array( + "Мгновенное восстановление", + "Восстановление: %.3g сек.", + "Восстановление: %.3g мин.", + // "Восстановление: %.3g ч.", + // "Восстановление: %.3g д." + ), 'duration' => array( "до отмены", "%.2G сек", @@ -1487,10 +1497,16 @@ $lang = array( "Осталось: %d |4час:часа:часов;", "Осталось: %d |4день:дня:дней;" ), - '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]" - ), + 'powerCost' => array( + -2 => ["Здоровье: %d", "Здоровье: %d плюс %d/сек."], + 0 => ["Мана: %d", "Мана: %d плюс %d/сек" ], + 1 => ["Ярость: %d", "Ярость: %d плюс %d/сек" ], + 2 => ["Тонус: %d", "Тонус: %d плюс %d/сек." ], + 3 => ["Энергия: %d", "Энергия: %d плюс %d/сек." ], + 6 => ["Требуется %d |4единица:единицы:единиц; силы рун", "Cила рун: %d плюс %d/сек" ], + ), + 'powerDisplayCost' => ['%2$s: %1$d', "%d %s и %d в сек. дополнительно"], + 'powerCostRunes'=> ["%d |4руна:руны:рун; крови", "%d |4руна:руны:рун; нечестивости", "%d |4руна:руны:рун; льда"], 'powerRunes' => ["Руна крови", "Руна льда", "Лед", "Смерти"], 'powerTypes' => array( // conventional @@ -1500,6 +1516,10 @@ $lang = array( -1 => "Боеприпасы", -41 => "Колчедан", -61 => "Давление пара", -101 => "Жар", -121 => "Слизнюк", -141 => "Сила крови", -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( 'base' => "Показать %s, относящиеся к профессии %s", 'link' => " или ", diff --git a/localization/locale_zhcn.php b/localization/locale_zhcn.php index 22f0acb8..0eb523ce 100644 --- a/localization/locale_zhcn.php +++ b/localization/locale_zhcn.php @@ -1456,9 +1456,6 @@ $lang = array( 'procChance' => "触发几率", 'starter' => "Starter spell", 'trainingCost' => "训练成本", - 'castIn' => "%s秒施法时间", - 'instantPhys' => "瞬发", - 'instantMagic' => "瞬发", 'channeled' => "需引导", 'range' => "%s码范围", 'meleeRange' => "近战范围", @@ -1472,6 +1469,19 @@ $lang = array( 'stackGroup' => "Stack Group", 'linkedWith' => "Linked with", '_scaling' => "缩放比例", + 'instantPhys' => "瞬发", + 'castTime' => array( + "瞬发法术", + "%.3g秒施法时间", + "%.3g分钟施法时间" + ), + 'cooldown' => array( + "即时冷却", + "%.3g秒冷却时间", + "%.3g分钟冷却时间", + // "%.3g小时冷却时间", + // "%.3g天冷却时间" + ), 'duration' => array( "直到主动取消", "%.2G秒", @@ -1486,10 +1496,16 @@ $lang = array( "剩余%d小时", "剩余%d天" ), - '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" + 'powerCost' => array( + -2 => ["%d生命值", "%d生命值,每秒增加%d" ], + 0 => ["%d法力值", "%d点法力值,外加每秒%d点" ], + 1 => ["%d怒气", "%d怒气,外加每秒%d" ], + 2 => ["%d集中", "%d集中,外加每秒%d" ], + 3 => ["%d能量", "%d能量,外加每秒%d" ], + 6 => ["%d符文能量", "%d点符文能量,外加每秒%d点"], ), + 'powerDisplayCost' => ["%d %s", "%d %s,再加上每秒%d"], + 'powerCostRunes'=> ["%d鲜血", "%d邪恶", "%d冰霜"], 'powerRunes' => ["鲜血", "邪恶", "冰霜", "死亡"], 'powerTypes' => array( // conventional @@ -1499,6 +1515,10 @@ $lang = array( -1 => "Ammo", -41 => "蓝铁", -61 => "蒸汽动力", -101 => "Heat", -121 => "Ooze", -141 => "Blood Power", -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( 'base' => "Show %s related to %s", 'link' => "或",