Lang/Fixup
* fix crash when race mask was resolved to faction * fix id buffer bleeding from resolving class mask into resolving race mask and vice versa * fixes #472
This commit is contained in:
parent
2a8db972a1
commit
b591311803
7 changed files with 24 additions and 20 deletions
|
|
@ -98,6 +98,7 @@ class ItemsetBaseResponse extends TemplateResponse implements ICache
|
|||
$infobox[] = Lang::game('level').Lang::main('colon').Util::createNumRange($min, $this->subject->getField('maxLevel'), ' - ');
|
||||
|
||||
// class
|
||||
$jsg = [];
|
||||
if ($cl = Lang::getClassString($this->subject->getField('classMask'), $jsg, Lang::FMT_MARKUP))
|
||||
{
|
||||
$this->extendGlobalIds(Type::CHR_CLASS, ...$jsg);
|
||||
|
|
|
|||
|
|
@ -71,17 +71,19 @@ class MailBaseResponse extends TemplateResponse implements ICache
|
|||
}
|
||||
else if ($mlr = DB::World()->selectRow('SELECT * FROM mail_level_reward WHERE `mailTemplateId` = ?d', $this->typeId)) // level rewards
|
||||
{
|
||||
if ($mlr['level'])
|
||||
$infobox[] = Lang::game('level').Lang::main('colon').$mlr['level'];
|
||||
if ($mlr['level'])
|
||||
$infobox[] = Lang::game('level').Lang::main('colon').$mlr['level'];
|
||||
|
||||
if ($r = Lang::getRaceString($mlr['raceMask'], $rIds, Lang::FMT_MARKUP))
|
||||
{
|
||||
$infobox[] = Lang::game('races').Lang::main('colon').$r;
|
||||
$this->extendGlobalIds(Type::CHR_RACE, ...$rIds);
|
||||
}
|
||||
$jsg = [];
|
||||
if ($r = Lang::getRaceString($mlr['raceMask'], $jsg, Lang::FMT_MARKUP))
|
||||
{
|
||||
$this->extendGlobalIds(Type::CHR_RACE, ...$jsg);
|
||||
$t = count($jsg) == 1 ? Lang::game('race') : Lang::game('races');
|
||||
$infobox[] = Util::ucFirst($t).Lang::main('colon').$r;
|
||||
}
|
||||
|
||||
$infobox[] = Lang::mail('sender', ['[npc='.$mlr['senderEntry'].']']);
|
||||
$this->extendGlobalIds(Type::NPC, $mlr['senderEntry']);
|
||||
$infobox[] = Lang::mail('sender', ['[npc='.$mlr['senderEntry'].']']);
|
||||
$this->extendGlobalIds(Type::NPC, $mlr['senderEntry']);
|
||||
}
|
||||
else // achievement or quest
|
||||
{
|
||||
|
|
|
|||
|
|
@ -167,8 +167,8 @@ class QuestBaseResponse extends TemplateResponse implements ICache
|
|||
default => Lang::game('si', SIDE_BOTH) // 0, 3
|
||||
};
|
||||
|
||||
$jsg = [];
|
||||
// races
|
||||
$jsg = [];
|
||||
if ($_ = Lang::getRaceString($this->subject->getField('reqRaceMask'), $jsg, Lang::FMT_MARKUP))
|
||||
{
|
||||
$this->extendGlobalIds(Type::CHR_RACE, ...$jsg);
|
||||
|
|
@ -177,6 +177,7 @@ class QuestBaseResponse extends TemplateResponse implements ICache
|
|||
}
|
||||
|
||||
// classes
|
||||
$jsg = [];
|
||||
if ($_ = Lang::getClassString($this->subject->getField('reqClassMask'), $jsg, Lang::FMT_MARKUP))
|
||||
{
|
||||
$this->extendGlobalIds(Type::CHR_CLASS, ...$jsg);
|
||||
|
|
|
|||
|
|
@ -2369,8 +2369,8 @@ class SpellBaseResponse extends TemplateResponse implements ICache
|
|||
$infobox[] = (in_array($typeCat, [-2, 7, -13]) ? Lang::game('reqLevel', [$_]) : Lang::game('level').Lang::main('colon').$_);
|
||||
}
|
||||
|
||||
$jsg = [];
|
||||
// races
|
||||
$jsg = [];
|
||||
if ($_ = Lang::getRaceString($this->subject->getField('reqRaceMask'), $jsg, Lang::FMT_MARKUP))
|
||||
{
|
||||
$this->extendGlobalIds(Type::CHR_RACE, ...$jsg);
|
||||
|
|
@ -2379,6 +2379,7 @@ class SpellBaseResponse extends TemplateResponse implements ICache
|
|||
}
|
||||
|
||||
// classes
|
||||
$jsg = [];
|
||||
if ($_ = Lang::getClassString($this->subject->getField('reqClassMask'), $jsg, Lang::FMT_MARKUP))
|
||||
{
|
||||
$this->extendGlobalIds(Type::CHR_CLASS, ...$jsg);
|
||||
|
|
|
|||
|
|
@ -880,23 +880,22 @@ class ItemList extends DBTypeList
|
|||
$x .= Lang::formatTime(abs($dur) * 1000, 'item', 'duration').$rt."<br />";
|
||||
}
|
||||
|
||||
$jsg = [];
|
||||
// required classes
|
||||
$jsg = [];
|
||||
if ($classes = Lang::getClassString($this->curTpl['requiredClass'], $jsg))
|
||||
{
|
||||
foreach ($jsg as $js)
|
||||
if (empty($this->jsGlobals[Type::CHR_CLASS][$js]))
|
||||
$this->jsGlobals[Type::CHR_CLASS][$js] = $js;
|
||||
$this->jsGlobals[Type::CHR_CLASS][$js] ??= $js;
|
||||
|
||||
$x .= Lang::game('classes').Lang::main('colon').$classes.'<br />';
|
||||
}
|
||||
|
||||
// required races
|
||||
$jsg = [];
|
||||
if ($races = Lang::getRaceString($this->curTpl['requiredRace'], $jsg))
|
||||
{
|
||||
foreach ($jsg as $js)
|
||||
if (empty($this->jsGlobals[Type::CHR_RACE][$js]))
|
||||
$this->jsGlobals[Type::CHR_RACE][$js] = $js;
|
||||
$this->jsGlobals[Type::CHR_RACE][$js] ??= $js;
|
||||
|
||||
$x .= Lang::game('races').Lang::main('colon').$races.'<br />';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,8 +101,8 @@ class ItemsetList extends DBTypeList
|
|||
{
|
||||
$jsg = [];
|
||||
$cl = Lang::getClassString($_, $jsg);
|
||||
$nCl = count($jsg);
|
||||
$x .= Util::ucFirst($nCl > 1 ? Lang::game('classes') : Lang::game('class')).Lang::main('colon').$cl.'<br />';
|
||||
$t = count($jsg) == 1 ? Lang::game('class') : Lang::game('classes');
|
||||
$x .= Util::ucFirst($t).Lang::main('colon').$cl.'<br />';
|
||||
}
|
||||
|
||||
if ($_ = $this->getField('contentGroup'))
|
||||
|
|
|
|||
|
|
@ -447,7 +447,7 @@ class Lang
|
|||
return implode(', ', $tmp);
|
||||
}
|
||||
|
||||
public static function getClassString(int $classMask, ?array &$ids = [], int $fmt = self::FMT_HTML) : string
|
||||
public static function getClassString(int $classMask, array &$ids = [], int $fmt = self::FMT_HTML) : string
|
||||
{
|
||||
$classMask &= ChrClass::MASK_ALL; // clamp to available classes..
|
||||
|
||||
|
|
@ -471,7 +471,7 @@ class Lang
|
|||
return implode(', ', $tmp);
|
||||
}
|
||||
|
||||
public static function getRaceString(int $raceMask, ?array &$ids = [], int $fmt = self::FMT_HTML) : string
|
||||
public static function getRaceString(int $raceMask, array &$ids = [], int $fmt = self::FMT_HTML) : string
|
||||
{
|
||||
$raceMask &= ChrRace::MASK_ALL; // clamp to available races..
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue