|
@@ -13,10 +13,9 @@ namespace loyalsoft;
|
|
* 战力 = (基础攻击力 * 攻击力系数 + 基础生命值 * 生命值系数 + (1+暴击率) * (1+暴击伤害) * 攻击力系数 + 肉食恢复加成 * (1+肉食恢复效果)*生命值系数+伤害减免值 * (1+伤害减免效果)* 生命值系数)*(1+装备系数+角色系数)
|
|
* 战力 = (基础攻击力 * 攻击力系数 + 基础生命值 * 生命值系数 + (1+暴击率) * (1+暴击伤害) * 攻击力系数 + 肉食恢复加成 * (1+肉食恢复效果)*生命值系数+伤害减免值 * (1+伤害减免效果)* 生命值系数)*(1+装备系数+角色系数)
|
|
*/
|
|
*/
|
|
class FightPower_Calculate {
|
|
class FightPower_Calculate {
|
|
-
|
|
|
|
|
|
|
|
- public static function GetFightPower() {
|
|
|
|
- $file = __NAMESPACE__ . '\\' . 'E_PredicateActionType';
|
|
|
|
|
|
+ public static function GetFightPower() {
|
|
|
|
+ $file = __NAMESPACE__ . '\\' . 'E_PredicateActionType';
|
|
$reflectionClass = new \ReflectionClass($file);
|
|
$reflectionClass = new \ReflectionClass($file);
|
|
$constants = $reflectionClass->getConstants();
|
|
$constants = $reflectionClass->getConstants();
|
|
|
|
|
|
@@ -24,24 +23,24 @@ class FightPower_Calculate {
|
|
foreach ($constants as $name => $predicateActionType) {
|
|
foreach ($constants as $name => $predicateActionType) {
|
|
$dic->$predicateActionType = 0;
|
|
$dic->$predicateActionType = 0;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
$CurrentHeroId = ctx()->heros->CurrentHeroId;
|
|
$CurrentHeroId = ctx()->heros->CurrentHeroId;
|
|
$mo = GameConfig::hero_getItem($CurrentHeroId);
|
|
$mo = GameConfig::hero_getItem($CurrentHeroId);
|
|
my_Assert($mo != null, ErrCode::err_const_no);
|
|
my_Assert($mo != null, ErrCode::err_const_no);
|
|
-
|
|
|
|
|
|
+
|
|
//【1.当前英雄表里的基础攻击 2.装备品质解锁的攻击力 3.装备里镶嵌的宝石攻击力 4.组成套装的攻击力5.启灵攻击力 6.英雄自带词条】 7.装备等级带来的攻击力/生命
|
|
//【1.当前英雄表里的基础攻击 2.装备品质解锁的攻击力 3.装备里镶嵌的宝石攻击力 4.组成套装的攻击力5.启灵攻击力 6.英雄自带词条】 7.装备等级带来的攻击力/生命
|
|
//英雄带的
|
|
//英雄带的
|
|
- $hero_special_predicate = explode(',', $mo->special_predicate);
|
|
|
|
|
|
+ $hero_special_predicate = explode(',', $mo->special_predicate);
|
|
foreach ($hero_special_predicate as $hero_predicateId) {
|
|
foreach ($hero_special_predicate as $hero_predicateId) {
|
|
- self::predicateActionParamVal($hero_predicateId,$dic);
|
|
|
|
|
|
+ self::predicateActionParamVal($hero_predicateId, $dic);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
//装备
|
|
//装备
|
|
$attck = 0;
|
|
$attck = 0;
|
|
$hp = 0;
|
|
$hp = 0;
|
|
$equipDic = ctx()->store->equipLocation;
|
|
$equipDic = ctx()->store->equipLocation;
|
|
-
|
|
|
|
- $suitDic = new \stdClass();
|
|
|
|
|
|
+
|
|
|
|
+ $suitDic = new \stdClass();
|
|
$equipParam = 0;
|
|
$equipParam = 0;
|
|
foreach ($equipDic as $index => $equipUid) {
|
|
foreach ($equipDic as $index => $equipUid) {
|
|
//等级
|
|
//等级
|
|
@@ -56,87 +55,92 @@ class FightPower_Calculate {
|
|
$str = explode(';', $ins_Equip->mo()->qual_predicateId);
|
|
$str = explode(';', $ins_Equip->mo()->qual_predicateId);
|
|
foreach ($str as $val) {
|
|
foreach ($str as $val) {
|
|
$str2 = explode(',', $val);
|
|
$str2 = explode(',', $val);
|
|
- if($ins_Equip->qual >= $str2[0]){
|
|
|
|
- self::predicateActionParamVal($str2[1],$dic);
|
|
|
|
- }
|
|
|
|
|
|
+ if ($ins_Equip->qual >= $str2[0]) {
|
|
|
|
+ self::predicateActionParamVal($str2[1], $dic);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
//套装
|
|
//套装
|
|
$suitId = $ins_Equip->mo()->suitId;
|
|
$suitId = $ins_Equip->mo()->suitId;
|
|
- if(StlUtil::dictHasProperty($suitDic, $suitId)){
|
|
|
|
|
|
+ if (StlUtil::dictHasProperty($suitDic, $suitId)) {
|
|
$suitDic->$suitId += 1;
|
|
$suitDic->$suitId += 1;
|
|
} else {
|
|
} else {
|
|
$suitDic->$suitId = 1;
|
|
$suitDic->$suitId = 1;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
//宝石
|
|
//宝石
|
|
- if($ins_Equip->qual >=4 && $ins_Equip->gemSetSlot != null){
|
|
|
|
|
|
+ if ($ins_Equip->qual >= 4 && $ins_Equip->gemSetSlot != null) {
|
|
foreach ($ins_Equip->gemSetSlot as $index => $gemUid) {
|
|
foreach ($ins_Equip->gemSetSlot as $index => $gemUid) {
|
|
- if($gemUid != 0){
|
|
|
|
|
|
+ if ($gemUid != 0) {
|
|
$gem_predicateId = ctx()->store->gemStore->$gemUid->predicateId;
|
|
$gem_predicateId = ctx()->store->gemStore->$gemUid->predicateId;
|
|
- self::predicateActionParamVal($gem_predicateId,$dic);
|
|
|
|
|
|
+ self::predicateActionParamVal($gem_predicateId, $dic);
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
foreach ($suitDic as $suitId => $num) {
|
|
foreach ($suitDic as $suitId => $num) {
|
|
$suitMo = GameConfig::equip_suit_getItem($suitId);
|
|
$suitMo = GameConfig::equip_suit_getItem($suitId);
|
|
my_Assert($suitMo != null, ErrCode::err_const_no);
|
|
my_Assert($suitMo != null, ErrCode::err_const_no);
|
|
- if($num >= $suitMo->num){
|
|
|
|
- self::predicateActionParamVal($suitMo->effect,$dic);
|
|
|
|
|
|
+ if ($num >= $suitMo->num) {
|
|
|
|
+ self::predicateActionParamVal($suitMo->effect, $dic);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
$arr = GameConfig::evolve();
|
|
$arr = GameConfig::evolve();
|
|
$evolveMaxId_left = ctx()->gates->evolveMaxId_left;
|
|
$evolveMaxId_left = ctx()->gates->evolveMaxId_left;
|
|
$evolveMaxId_right = ctx()->gates->evolveMaxId_right;
|
|
$evolveMaxId_right = ctx()->gates->evolveMaxId_right;
|
|
foreach ($arr as $key => $value) {
|
|
foreach ($arr as $key => $value) {
|
|
isEditor() and $value = new \sm_evolve();
|
|
isEditor() and $value = new \sm_evolve();
|
|
- if ($key <= $evolveMaxId_left) {
|
|
|
|
- self::predicateActionParamVal($value->predicateId,$dic);
|
|
|
|
|
|
+ if ($key <= $evolveMaxId_left) {
|
|
|
|
+ self::predicateActionParamVal($value->predicateId, $dic);
|
|
//continue;
|
|
//continue;
|
|
}
|
|
}
|
|
-
|
|
|
|
- if($value->specificEvolveId >0 && $value->specificEvolveId <= $evolveMaxId_right){
|
|
|
|
- self::predicateActionParamVal($value->specificPredicateId,$dic);
|
|
|
|
|
|
+
|
|
|
|
+ if ($value->specificEvolveId > 0 && $value->specificEvolveId <= $evolveMaxId_right) {
|
|
|
|
+ self::predicateActionParamVal($value->specificPredicateId, $dic);
|
|
//continue;
|
|
//continue;
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
- //战力 = (基础攻击力 * 攻击力系数 + 基础生命值 * 生命值系数 + (1+暴击率) * (1+暴击伤害) * 攻击力系数 + 肉食恢复加成 * (1+肉食恢复效果)*生命值系数+伤害减免值 * (1+伤害减免效果)* 生命值系数) * (1+装备系数+角色系数)
|
|
|
|
|
|
+
|
|
|
|
+ //战力 = (
|
|
|
|
+ // 基础攻击力 * 攻击力系数
|
|
|
|
+ // + 基础生命值 * 生命值系数
|
|
|
|
+ // + (1 + 暴击率) * (1 + 暴击伤害) * 攻击力系数
|
|
|
|
+ // + 肉食恢复加成 * (1 + 肉食恢复效果)* 生命值系数
|
|
|
|
+ // + 伤害减免值 * (1 + 伤害减免效果)* 生命值系数
|
|
|
|
+ // ) * (1 + 装备系数 + 角色系数)
|
|
$attackParas = glc()->fightPower_MulAtk;
|
|
$attackParas = glc()->fightPower_MulAtk;
|
|
$hpParas = glc()->fightPower_MulHp;
|
|
$hpParas = glc()->fightPower_MulHp;
|
|
$fightPower_bitHitParas = GameConfig::glc2()->fightPower_bitHitParas;
|
|
$fightPower_bitHitParas = GameConfig::glc2()->fightPower_bitHitParas;
|
|
-
|
|
|
|
|
|
+
|
|
$addDamage_ActionKey = E_PredicateActionType::addDamage;
|
|
$addDamage_ActionKey = E_PredicateActionType::addDamage;
|
|
$dic->$addDamage_ActionKey += $mo->attack;
|
|
$dic->$addDamage_ActionKey += $mo->attack;
|
|
- $dic->$addDamage_ActionKey +=$attck;
|
|
|
|
- $base_addDamage = $dic->$addDamage_ActionKey;//基础攻击
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ $dic->$addDamage_ActionKey += $attck;
|
|
|
|
+ $base_addDamage = $dic->$addDamage_ActionKey; // 基础攻击
|
|
|
|
+
|
|
|
|
+
|
|
$addHp_ActionKey = E_PredicateActionType::addHp;
|
|
$addHp_ActionKey = E_PredicateActionType::addHp;
|
|
- $dic->$addHp_ActionKey += $mo->hp;
|
|
|
|
- $dic->$addHp_ActionKey +=$hp;
|
|
|
|
- $base_addHp = $dic->$addHp_ActionKey;//基础生命值
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ $dic->$addHp_ActionKey += $mo->hp;
|
|
|
|
+ $dic->$addHp_ActionKey += $hp;
|
|
|
|
+ $base_addHp = $dic->$addHp_ActionKey; // 基础生命值
|
|
|
|
+
|
|
|
|
+
|
|
$addBigHitRate_ActionKey = E_PredicateActionType::addBigHitRate;
|
|
$addBigHitRate_ActionKey = E_PredicateActionType::addBigHitRate;
|
|
- $dic->$addBigHitRate_ActionKey += $mo->bigHit_rate;
|
|
|
|
- $baojilv = $dic->$addBigHitRate_ActionKey;//暴击率
|
|
|
|
-
|
|
|
|
- $addBigHitVal_ActionKey = E_PredicateActionType::addBigHitVal;
|
|
|
|
|
|
+ $dic->$addBigHitRate_ActionKey += $mo->bigHit_rate;
|
|
|
|
+ $baojilv = $dic->$addBigHitRate_ActionKey; // 暴击率
|
|
|
|
+
|
|
|
|
+ $addBigHitVal_ActionKey = E_PredicateActionType::addBigHitVal;
|
|
$dic->$addBigHitVal_ActionKey += $mo->bigHit_Val;
|
|
$dic->$addBigHitVal_ActionKey += $mo->bigHit_Val;
|
|
- $baojishanghai = $dic->$addBigHitVal_ActionKey;//暴击伤害
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ $baojishanghai = $dic->$addBigHitVal_ActionKey; // 暴击伤害
|
|
|
|
+
|
|
|
|
+
|
|
$mulDamage_ActionKey = E_PredicateActionType::mulDamage;
|
|
$mulDamage_ActionKey = E_PredicateActionType::mulDamage;
|
|
- $mulDamageVal = $dic->$mulDamage_ActionKey;//攻击里加成百分比
|
|
|
|
-
|
|
|
|
|
|
+ $mulDamageVal = $dic->$mulDamage_ActionKey; // 攻击里加成百分比
|
|
|
|
+
|
|
$mulHp_ActionKey = E_PredicateActionType::mulHp;
|
|
$mulHp_ActionKey = E_PredicateActionType::mulHp;
|
|
- $mulHpVal = $dic->$mulHp_ActionKey;//生命额外加成
|
|
|
|
-
|
|
|
|
|
|
+ $mulHpVal = $dic->$mulHp_ActionKey; // 生命额外加成
|
|
|
|
+
|
|
$addEatFood_ActionKey = E_PredicateActionType::addEatFood;
|
|
$addEatFood_ActionKey = E_PredicateActionType::addEatFood;
|
|
$roushihuifu = $dic->$addEatFood_ActionKey;
|
|
$roushihuifu = $dic->$addEatFood_ActionKey;
|
|
$mulEatFood_ActionKey = E_PredicateActionType::mulEatFood;
|
|
$mulEatFood_ActionKey = E_PredicateActionType::mulEatFood;
|
|
@@ -145,18 +149,23 @@ class FightPower_Calculate {
|
|
$shanghaijianmian = $dic->$addDecDamage_ActionKey;
|
|
$shanghaijianmian = $dic->$addDecDamage_ActionKey;
|
|
$mulDecDamage_ActionKey = E_PredicateActionType::mulDecDamage;
|
|
$mulDecDamage_ActionKey = E_PredicateActionType::mulDecDamage;
|
|
$shanghaijianmian_xiaoguo = $dic->$mulDecDamage_ActionKey;
|
|
$shanghaijianmian_xiaoguo = $dic->$mulDecDamage_ActionKey;
|
|
-
|
|
|
|
|
|
+
|
|
$mulEquipBasicProps_damage_ActionKey = E_PredicateActionType::mulEquipBasicProps_damage;
|
|
$mulEquipBasicProps_damage_ActionKey = E_PredicateActionType::mulEquipBasicProps_damage;
|
|
$mulEquipBasicProps_damage_val = $dic->$mulEquipBasicProps_damage_ActionKey;
|
|
$mulEquipBasicProps_damage_val = $dic->$mulEquipBasicProps_damage_ActionKey;
|
|
$mulEquipBasicProps_hp_ActionKey = E_PredicateActionType::mulEquipBasicProps_hp;
|
|
$mulEquipBasicProps_hp_ActionKey = E_PredicateActionType::mulEquipBasicProps_hp;
|
|
$mulEquipBasicProps_hp_val = $dic->$mulEquipBasicProps_hp_ActionKey;
|
|
$mulEquipBasicProps_hp_val = $dic->$mulEquipBasicProps_hp_ActionKey;
|
|
|
|
|
|
-
|
|
|
|
- $gongji = round($base_addDamage*(1+$mulDamageVal+$mulEquipBasicProps_damage_val),0);
|
|
|
|
- $shengming = round($base_addHp*(1+$mulHpVal+$mulEquipBasicProps_hp_val),0);
|
|
|
|
-
|
|
|
|
- $fightPower = ($gongji*$attackParas + $shengming*$hpParas + (1+$baojilv)*(1+$baojishanghai)*$attackParas*$fightPower_bitHitParas + $roushihuifu*(1+$roushihuifu_xiaoguo)*$hpParas + $shanghaijianmian*(1+$shanghaijianmian_xiaoguo)* $hpParas)*(1 + $equipParam + $mo->mulFightPower);
|
|
|
|
-
|
|
|
|
|
|
+ $gongji = round($base_addDamage * (1 + $mulDamageVal + $mulEquipBasicProps_damage_val), 0);
|
|
|
|
+ $shengming = round($base_addHp * (1 + $mulHpVal + $mulEquipBasicProps_hp_val), 0);
|
|
|
|
+
|
|
|
|
+ $fightPower = (
|
|
|
|
+ $gongji * $attackParas // 基础攻击力 * 攻击力系数
|
|
|
|
+ + $shengming * $hpParas // 基础生命值 * 生命值系数
|
|
|
|
+ + (1 + $baojilv) * (1 + $baojishanghai) * $attackParas * $fightPower_bitHitParas // (1 + 暴击率) * (1 + 暴击伤害) * 攻击力系数
|
|
|
|
+ + $roushihuifu * (1 + $roushihuifu_xiaoguo) * $hpParas // 肉食恢复加成 * (1 + 肉食恢复效果)* 生命值系数
|
|
|
|
+ + $shanghaijianmian * (1 + $shanghaijianmian_xiaoguo) * $hpParas // 伤害减免值 * (1 + 伤害减免效果)* 生命值系数
|
|
|
|
+ ) * (1 + $equipParam + $mo->mulFightPower); // (1 + 装备系数 + 角色系数)
|
|
|
|
+ //
|
|
// var_dump('---base_addDamage攻击-------------------'.$base_addDamage);
|
|
// var_dump('---base_addDamage攻击-------------------'.$base_addDamage);
|
|
// var_dump('攻击里加成百分比---------------'.$mulDamageVal);
|
|
// var_dump('攻击里加成百分比---------------'.$mulDamageVal);
|
|
// var_dump('mulEquipBasicProps_damage_val----'.$mulEquipBasicProps_damage_val);
|
|
// var_dump('mulEquipBasicProps_damage_val----'.$mulEquipBasicProps_damage_val);
|
|
@@ -182,15 +191,14 @@ class FightPower_Calculate {
|
|
// var_dump('shanghaijianmian_xiaoguo_val----'.$mulEquipBasicProps_hp_val);
|
|
// var_dump('shanghaijianmian_xiaoguo_val----'.$mulEquipBasicProps_hp_val);
|
|
//
|
|
//
|
|
//
|
|
//
|
|
- return round($fightPower,0);
|
|
|
|
|
|
+ return round($fightPower, 0);
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 获取词条对应的参数值
|
|
* 获取词条对应的参数值
|
|
* @param type $predicateId
|
|
* @param type $predicateId
|
|
*/
|
|
*/
|
|
- public static function predicateActionParamVal($predicateId,&$dic) {
|
|
|
|
|
|
+ public static function predicateActionParamVal($predicateId, &$dic) {
|
|
$predicateMo = GameConfig::predicate_getItem($predicateId);
|
|
$predicateMo = GameConfig::predicate_getItem($predicateId);
|
|
my_Assert(null != $predicateMo, ErrCode::err_const_no);
|
|
my_Assert(null != $predicateMo, ErrCode::err_const_no);
|
|
switch ($predicateMo->actionType) {
|
|
switch ($predicateMo->actionType) {
|
|
@@ -198,13 +206,13 @@ class FightPower_Calculate {
|
|
if ($predicateMo->actionParam1 != null) {
|
|
if ($predicateMo->actionParam1 != null) {
|
|
$actionKey = E_PredicateActionType::mulEquipBasicProps_damage;
|
|
$actionKey = E_PredicateActionType::mulEquipBasicProps_damage;
|
|
$actionVal = $predicateMo->actionParam1;
|
|
$actionVal = $predicateMo->actionParam1;
|
|
- $dic->$actionKey += $actionVal;
|
|
|
|
|
|
+ $dic->$actionKey += $actionVal;
|
|
}
|
|
}
|
|
|
|
|
|
if ($predicateMo->actionParam2 != null) {
|
|
if ($predicateMo->actionParam2 != null) {
|
|
$actionKey = E_PredicateActionType::mulEquipBasicProps_hp;
|
|
$actionKey = E_PredicateActionType::mulEquipBasicProps_hp;
|
|
$actionVal = $predicateMo->actionParam2;
|
|
$actionVal = $predicateMo->actionParam2;
|
|
- $dic->$actionKey += $actionVal;
|
|
|
|
|
|
+ $dic->$actionKey += $actionVal;
|
|
}
|
|
}
|
|
|
|
|
|
break;
|
|
break;
|
|
@@ -215,17 +223,16 @@ class FightPower_Calculate {
|
|
$actionVal2 = $predicateMo->actionParam2;
|
|
$actionVal2 = $predicateMo->actionParam2;
|
|
|
|
|
|
$dic->$actionKey1 += $actionVal1;
|
|
$dic->$actionKey1 += $actionVal1;
|
|
- $dic->$actionKey2 += $actionVal2;
|
|
|
|
|
|
+ $dic->$actionKey2 += $actionVal2;
|
|
break;
|
|
break;
|
|
- default:
|
|
|
|
|
|
+ default:
|
|
$actionKey = $predicateMo->actionType;
|
|
$actionKey = $predicateMo->actionType;
|
|
- $actionVal = $predicateMo->actionParam1;
|
|
|
|
-
|
|
|
|
- if(StlUtil::dictHasProperty($dic, $actionKey)){
|
|
|
|
- $dic->$actionKey += $actionVal;
|
|
|
|
- }
|
|
|
|
|
|
+ $actionVal = $predicateMo->actionParam1;
|
|
|
|
+
|
|
|
|
+ if (StlUtil::dictHasProperty($dic, $actionKey)) {
|
|
|
|
+ $dic->$actionKey += $actionVal;
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|