Сделать возможность вынимать руны из предметов #2
This commit is contained in:
@@ -4,6 +4,11 @@ namespace Insallah;
|
||||
|
||||
class Runes
|
||||
{
|
||||
/** Создаём руну в зависимости от уровня.
|
||||
* @param $level
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function get($level)
|
||||
{
|
||||
if (!in_array($level, [8, 9, 10])) {
|
||||
@@ -20,22 +25,22 @@ class Runes
|
||||
['s5', 'm11', 'mpAll', 'pzm']
|
||||
];
|
||||
$vars = [
|
||||
's1' => ['Ñèëà', mt_rand(1, 3)],
|
||||
's2' => ['Ëîâêîñòü', mt_rand(1, 3)],
|
||||
's3' => ['Èíòóèöèÿ', mt_rand(1, 3)],
|
||||
's5' => ['Èíòåëëåêò', mt_rand(1, 3)],
|
||||
'pa1' => ['Ìîùíîñòè Êîëþùåãî óðîíà', mt_rand(1, $power[$level])],
|
||||
'pa2' => ['Ìîùíîñòè Ðóáÿùåãî óðîíà', mt_rand(1, $power[$level])],
|
||||
'pa3' => ['Ìîùíîñòè Äðîáÿùåãî óðîíà', mt_rand(1, $power[$level])],
|
||||
'pa4' => ['Ìîùíîñòè Ðåæóùåãî óðîíà', mt_rand(1, $power[$level])],
|
||||
's1' => ['Сила', mt_rand(1, 3)],
|
||||
's2' => ['Ловкость', mt_rand(1, 3)],
|
||||
's3' => ['Интуиция', mt_rand(1, 3)],
|
||||
's5' => ['Интеллект', mt_rand(1, 3)],
|
||||
'pa1' => ['Мощности Колющего урона', mt_rand(1, $power[$level])],
|
||||
'pa2' => ['Мощности Рубящего урона', mt_rand(1, $power[$level])],
|
||||
'pa3' => ['Мощности Дробящего урона', mt_rand(1, $power[$level])],
|
||||
'pa4' => ['Мощности Режущего урона', mt_rand(1, $power[$level])],
|
||||
'm2' => ['???', mt_rand(5, 15)],
|
||||
'm3' => ['ÌÊ', mt_rand(1, 3)],
|
||||
'antm3' => ['ÏÌÊ', mt_rand(1, 3)],
|
||||
'm3' => ['МК', mt_rand(1, 3)],
|
||||
'antm3' => ['ПМК', mt_rand(1, 3)],
|
||||
'm5' => ['???', mt_rand(5, 10)],
|
||||
'm11' => ['Ìîùíîñòè Ìàãèè ñòèõèè', mt_rand(1, $power[$level])],
|
||||
'm11' => ['Мощности Магии стихии', mt_rand(1, $power[$level])],
|
||||
'hpAll' => ['HP', mt_rand(5, 15)],
|
||||
'mpAll' => ['MP', mt_rand(10, 20)],
|
||||
'pzm' => ['Ïîäàâëåíèå çàùèòû îò ìàãèè', 1]
|
||||
'pzm' => ['Подавление защиты от магии', 1]
|
||||
];
|
||||
|
||||
$rune = $runes[array_rand($runes)]; // arr (s, pa\m, rand9\mpAll, other)
|
||||
@@ -43,23 +48,69 @@ class Runes
|
||||
$runeVals = [$vars[$rune[0][1]], $vars[$rune[1][1]], $vars[$rune[2][1]], $vars[$rune[3][1]]];
|
||||
$resultRune = array_combine($rune, $runeVals);
|
||||
$resultText = array_combine($runeTxt, array_map('self::addPlus', $runeVals));
|
||||
if ($level < 10) { // Îòðåçàåì ïàðàìåòð 4.
|
||||
if ($level < 10) { // Отрезаем параметр 4.
|
||||
array_pop($resultRune);
|
||||
array_pop($resultText);
|
||||
}
|
||||
if ($level < 9) { // Îòðåçàåì ïàðàìåòð 3.
|
||||
if ($level < 9) { // Отрезаем параметр 3.
|
||||
array_pop($resultRune);
|
||||
array_pop($resultText);
|
||||
}
|
||||
//Ñòðî÷êà data â áàçó
|
||||
//Строчка data в базу
|
||||
$returnData = '|' . http_build_query($resultRune, 'add_', '|');
|
||||
//Ñòðî÷êà ÷åëîâåêîïîíÿòíûõ ïàðàìåòðîâ â ñòàòóñ.
|
||||
//Строчка человекопонятных параметров в статус.
|
||||
$returnText = implode(', ', $resultText);
|
||||
return [$returnData, $returnText];
|
||||
}
|
||||
|
||||
private static function addPlus($var)
|
||||
{
|
||||
return '+' . (string)$var;
|
||||
return '+' . $var;
|
||||
}
|
||||
|
||||
/** Выкусывает руну из предмета.
|
||||
*
|
||||
* @param array $itemData
|
||||
* data предмета
|
||||
*
|
||||
* @return array массив, item - предмет, rune - руна из предмета, rune_id - id руны.
|
||||
* Оба в подготовленном строчном формате для data
|
||||
*/
|
||||
public static function removeRuneData($itemData)
|
||||
{
|
||||
# Ищем есть ли в предмете руна определённого типа.
|
||||
$runeid = array_search('rune_id', array_flip($itemData));
|
||||
if (!in_array($runeid, [6001, 6002, 6003])) {
|
||||
return [];
|
||||
}
|
||||
$bonusArgs = 0;
|
||||
# В зависимости от типа руны считаем количество элементов-бонусов.
|
||||
if ($runeid === 6001) {
|
||||
$bonusArgs = 2;
|
||||
}
|
||||
if ($runeid === 6002) {
|
||||
$bonusArgs = 3;
|
||||
}
|
||||
if ($runeid === 6003) {
|
||||
$bonusArgs = 4;
|
||||
}
|
||||
$args = 0; //basic rune values - rune, id, name, lvl
|
||||
$rune = [];
|
||||
foreach ($itemData as $key => $value) {
|
||||
if ($key == 'rune') {
|
||||
$args = 4 + $bonusArgs;
|
||||
}
|
||||
if ($args > 0) {
|
||||
$rune[$key] = $value;
|
||||
$args--;
|
||||
}
|
||||
}
|
||||
$runeData = urldecode('|' . http_build_query($rune, '', '|'));
|
||||
$itemWithoutRuneData = str_replace($runeData, '', $itemData);
|
||||
return [
|
||||
'item' => (string)$itemWithoutRuneData,
|
||||
'rune' => $runeData,
|
||||
'rune_id' => (int)$runeid
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user