This commit is contained in:
hujiabin 2023-03-29 14:52:45 +08:00
parent f1f346e0ed
commit 2b325c5b65
2 changed files with 79 additions and 38 deletions

View File

@ -137,13 +137,14 @@ class HeroController extends BaseAuthedController {
)
);
$newHeroDb = $heroDb;
$newHeroDb['hero_lv'] += 1;
$attrs = Hero::LvUpAddAttr($heroDb,0);
$newHeroDb['rand_attr'] = json_encode($attrs);
$heroDto = Hero::toDto($heroDb);
$newHeroDto = Hero::toDto($newHeroDb);
$newHeroDto = $heroDto;
$newHeroDto['hero_lv'] += 1;
$attrs_min = Hero::LvUpAddAttr($heroDb,\mt\HeroLevelAttr::MIN_RAND_ATTR);
$attrs_max = Hero::LvUpAddAttr($heroDb,\mt\HeroLevelAttr::MAX_RAND_ATTR);
$newHeroDto['rand_attr_min'] = $attrs_min;
$newHeroDto['rand_attr_max'] = $attrs_max;
$this->_rspData(array(
'old_hero' => $heroDto,
@ -151,6 +152,11 @@ class HeroController extends BaseAuthedController {
'cost' => $costItems
));
}
public function test(){
$levelAttrMeta= \mt\HeroLevelAttr::find(30100);
$attr= \mt\HeroLevelAttr::addRandAttr($levelAttrMeta,2);
print_r($attr);
}
public function upgradeLv()
{
@ -228,7 +234,7 @@ class HeroController extends BaseAuthedController {
}
$this->_decItems($costItems);
$attrs = Hero::LvUpAddAttr($heroDb,1);
$attrs = Hero::LvUpAddAttr($heroDb,\mt\HeroLevelAttr::FINAL_RAND_ATTR);
Hero::update($heroUniId, array(
'hero_lv' => $heroDb['hero_lv'] + 1,
'rand_attr' => json_encode($attrs),

View File

@ -10,6 +10,9 @@ use phpcommon;
class HeroLevelAttr {
private static $BASE_ATTR = [kHAT_Hp,kHAT_Atk,kHAT_Def,kHAT_Critical,kHAT_CriDamage];
const MIN_RAND_ATTR = 0;
const MAX_RAND_ATTR = 1;
const FINAL_RAND_ATTR = 2;
public static function find($id)
{
@ -17,37 +20,62 @@ class HeroLevelAttr {
}
public static function addRandAttr($meta,$type){
if ($type == 1){
$attr = array(
array(
'attr_id' => kHAT_Hp,
'val' => self::getAttrValue($meta)
),
array(
'attr_id' => kHAT_Atk,
'val' => self::getAttrValue($meta)
),
array(
'attr_id' => kHAT_Def,
'val' => self::getAttrValue($meta)
),
);
}else{
$attr = array(
array(
'attr_id' => kHAT_Hp,
'val' => self::getAttrValueMin($meta)
),
array(
'attr_id' => kHAT_Atk,
'val' => self::getAttrValueMin($meta)
),
array(
'attr_id' => kHAT_Def,
'val' => self::getAttrValueMin($meta)
),
);
switch ($type){
//随机属性最小值
case self::MIN_RAND_ATTR :{
$attr = array(
array(
'attr_id' => kHAT_Hp,
'val' => self::getAttrValueMin($meta)
),
array(
'attr_id' => kHAT_Atk,
'val' => self::getAttrValueMin($meta)
),
array(
'attr_id' => kHAT_Def,
'val' => self::getAttrValueMin($meta)
),
);
}
break;
case self::FINAL_RAND_ATTR:{
$attr = array(
array(
'attr_id' => kHAT_Hp,
'val' => self::getAttrValue($meta)
),
array(
'attr_id' => kHAT_Atk,
'val' => self::getAttrValue($meta)
),
array(
'attr_id' => kHAT_Def,
'val' => self::getAttrValue($meta)
),
);
}
break;
case self::MAX_RAND_ATTR:{
$attr = array(
array(
'attr_id' => kHAT_Hp,
'val' => self::getAttrValueMax($meta)
),
array(
'attr_id' => kHAT_Atk,
'val' => self::getAttrValueMax($meta)
),
array(
'attr_id' => kHAT_Def,
'val' => self::getAttrValueMax($meta)
),
);
}
break;
default:{
$attr = array();
}
}
return $attr;
}
@ -91,6 +119,13 @@ class HeroLevelAttr {
}
}
protected static function getAttrValueMax($meta)
{
$strs = explode('|', $meta['attr_weight']);
$strs2 = explode(':', $strs[count($strs)-1]);
return $strs2[0];
}
protected static function getMetaList()
{
if (!self::$metaList) {