This commit is contained in:
aozhiwei 2024-01-23 17:31:45 +08:00
parent 48ba29d409
commit b9430e4d5a
4 changed files with 210 additions and 1 deletions

View File

@ -78,7 +78,6 @@ define('SHOP_BUY_MODE_NORMAL', 0);
define('SHOP_BUY_MODE_DAILY_SELECTION', 1);
define('MARKET_BUY_MODE_NORMAL', 2);
const kHAT_Begin = 0;
const kHAT_Hp = 1;
const kHAT_HPRecover = 2;
const kHAT_Atk = 3;
@ -117,6 +116,60 @@ const kHAT_BrainLifePct = 47;
const kHAT_BulletSpeed = 49;
const kHAT_BulletSpeedPct = 50;
const kHAT_Begin = 0;
const kHAT_vCurrnetHealth = 1;
const kHAT_vHealth = 2;
const kHAT_pHealth = 3;
const kHAT_pHealthAm = 4;
const kHAT_pHealthRateSe = 5;
const kHAT_pHealthRateIn = 6;
const kHAT_vHealthAm = 7;
const kHAT_vHealthRateSe = 8;
const kHAT_vHealthRateIn = 9;
const kHAT_vAttack = 10;
const kHAT_pAttack = 11;
const kHAT_pAttackAm = 12;
const kHAT_pAttackRateSe = 13;
const kHAT_pAttackRateIn = 14;
const kHAT_vAttackAm = 15;
const kHAT_vAttackRateSe = 16;
const kHAT_vAttackRateIn = 17;
const kHAT_vDefend = 18;
const kHAT_pDefend = 19;
const kHAT_pDefendAm = 20;
const kHAT_pDefendRateSe = 21;
const kHAT_pDefendRateIn = 22;
const kHAT_vBlock = 23;
const kHAT_pBlock = 24;
const kHAT_pBlockAm = 25;
const kHAT_pBlockRateSe = 26;
const kHAT_pBlockRateIn = 27;
const kHAT_vBloPro = 28;
const kHAT_vBloDef = 29;
const kHAT_vCrit = 30;
const kHAT_pCrit = 31;
const kHAT_pCritAm = 32;
const kHAT_pCritRateSe = 33;
const kHAT_pCritRateIn = 34;
const kHAT_vCriPro = 35;
const kHAT_vCriBon = 36;
const kHAT_vSpeed = 37;
const kHAT_vSpeedRateIn = 38;
const kHAT_vHaste = 39;
const kHAT_vDrain = 40;
const kHAT_vTenacity = 41;
const kHAT_vDamageTakenRateIn = 42;
const kHAT_vDamageDealtRateIn = 43;
const kHAT_vNormalDamageTakenRateIn = 44;
const kHAT_vNormalDamageDealtRateIn = 45;
const kHAT_vSkillDamageTakenRateIn = 46;
const kHAT_vSkillDamageDealtRateIn = 47;
const kHAT_vHealthGainRateIn = 48;
const kHAT_vHealDealtRateIn = 49;
const kHAT_Hold = 55;
const kHAT_End = 56;
const kHAT_ABS_VAL = 1;
const kHAT_RATE_VAL = 2;

View File

@ -8,6 +8,7 @@ require_once('mt/HeroQuality.php');
require_once('mt/HeroLevel.php');
require_once('mt/AttrHelper.php');
require_once('mt/Item.php');
require_once('mt/BattleBasicAttribute.php');
require_once('models/HeroSkin.php');
require_once('models/Chip.php');
require_once('models/User.php');
@ -333,6 +334,111 @@ class Hero extends BaseModel {
'block' => 0,
'critical' => 0
);
$attr = array();
$basicMeta = mt\BattleBasicAttribute::get($row['hero_id']);
if (!$basicMeta) {
return $info;
}
{
$pHealRateAm = 0;
$pHealthAm_Add = mt\AttrHelper::getAttrVal($attr, kHAT_pHealthAm, 0);
$pHealRateAm += $pHealthAm_Add;
$pHealthRateSe = 0;
$pHealthRateSe_Add = mt\AttrHelper::getAttrVal($attr, kHAT_pHealthRateSe, 0);
$pHealthRateSe += $pHealthRateSe_Add;
$pHealthRateIn = 0;
$pHealthRateIn_Add = mt\AttrHelper::getAttrVal($attr, kHAT_pHealthRateIn, 0);
$pHealthRateIn = (1 + $pHealthRateIn) * (1 + $pHealthRateIn_Add) - 1;
$pHealth = ($basicMeta['pOrigHealth'] + $pHealRateAm) * (1 + $pHealthRateSe) * (1 + $pHealthRateIn);
$vHealthAm = 0;
$vHealthAm_Add = mt\AttrHelper::getAttrVal($attr, kHAT_vHealthAm, 0);
$vHealthAm += $vHealthAm_Add;
$vHealthRateSe = 0;
$vHealthRateSe_Add = mt\AttrHelper::getAttrVal($attr, kHAT_vHealthRateSe, 0);
$vHealthRateSe += $vHealthRateSe_Add;
$vHealthRateIn = 0;
$vHealthRateIn_Add = mt\AttrHelper::getAttrVal($attr, kHAT_vHealthRateIn, 0);
$vHealthRateIn = (1 + $vHealthRateIn) * (1 + $vHealthRateIn_Add) - 1;
$info['hp'] = ($basicMeta['vOrigHealth'] * (1 + $pHealth / $basicMeta['pBaseHealth'] + $vHealthAm)) *
(1 + $vHealthRateSe) * (1 + $vHealthRateIn);
}
{
$pAttackAm = 0;
$pAttackAm_Add = mt\AttrHelper::getAttrVal($attr, kHAT_pAttackAm, 0);
$pAttackAm += $pAttackAm;
$pAttackRateSe = 0;
$pAttackRateSe_Add = mt\AttrHelper::getAttrVal($attr, kHAT_pAttackRateSe, 0);
$pAttackRateSe += $pAttackRateSe_Add;
$pAttackRateIn = 0;
$pAttackRateIn_Add = mt\AttrHelper::getAttrVal($attr, kHAT_pAttackRateIn, 0);
$pAttackRateIn = (1 + $pAttackRateIn) * (1 + $pAttackRateIn_Add) - 1;
$vAttackAm = 0;
$vAttackAm_Add = mt\AttrHelper::getAttrVal($attr, kHAT_vAttackAm, 0);
$vAttackAm += $vAttackAm_Add;
$vAttackRateSe = 0;
$vAttackRateSe_Add = mt\AttrHelper::getAttrVal($attr, kHAT_vAttackRateSe, 0);
$vAttackRateSe += $vAttackRateSe_Add;
$vAttackRateIn = 0;
$vAttackRateIn_Add = mt\AttrHelper::getAttrVal($attr, kHAT_vAttackRateIn, 0);
$vAttackRateIn = (1 + $vAttackRateIn) * (1 + $vAttackRateIn_Add) - 1;
$pAttack = 0;
$pAttack = ($basicMeta['pOrigAttack'] + $pAttackAm) * (1 + $pAttackRateSe) * (1 + $pAttackRateIn);
$info['attack'] = ($basicMeta['vOrigAttack'] * (1 + $pAttack / $basicMeta['pBaseAttack'] + $vAttackAm)) *
(1 + $vAttackRateSe) * (1 + $vAttackRateIn);
}
{
$pBlockAm = 0;
$pBlockAm_Add = mt\AttrHelper::getAttrVal($attr, kHAT_vAttackRateIn, 0);
$pBlockAm += $pBlockAm_Add;
$pBlockRateSe = 0;
$pBlockRateSe_Add = mt\AttrHelper::getAttrVal($attr, kHAT_pBlockRateSe, 0);
$pBlockRateSe += $pBlockRateSe_Add;
$pBlockRateIn = 0;
$pBlockRateIn_Add = mt\AttrHelper::getAttrVal($attr, kHAT_pBlockRateIn, 0);
$pBlockRateIn = (1 + $pBlockRateIn) * (1 + $pBlockRateIn_Add) - 1;
$pBlock = ($basicMeta['pOrigBlock'] + $pBlockAm) * (1 + $pBlockRateSe_Add) * (1 + $pBlockRateIn);
$vBlock = 1 - (1 - $basicMeta['vOrigBlock']) / (1 + $pBlock / $basicMeta['pBaseBlock']);
$info['block'] = $vBlock;
}
{
$pCritAm = 0;
$pCritAm_Add = mt\AttrHelper::getAttrVal($attr, kHAT_pCritAm, 0);
$pCritAm += $pCritAm_Add;
$pCritRateSe = 0;
$pCritRateSe_Add = mt\AttrHelper::getAttrVal($attr, kHAT_pCritRateSe, 0);
$pCritRateSe += $pCritAm_Add;
$pCritRateIn = 0;
$pCritRateIn_Add = mt\AttrHelper::getAttrVal($attr, kHAT_pCritRateIn, 0);
$pCritRateIn = (1 - $pCritRateIn) * (1 + $pCritRateIn_Add) - 1;
$pCrit = 0;
$pCrit = ($basicMeta['pOrigCrit'] + $pCritAm) * (1 + $pCritRateSe) * (1 + $pCritRateIn);
$vCrit = 0;
$vCrit = (1 + $basicMeta['vOrigCrit']) * (1 + $pCrit / $basicMeta['pBaseCrit']) - 1;
$info['critical'] = $vCrit;
}
return $info;
}

View File

@ -108,4 +108,30 @@ class AttrHelper {
return $defVal;
}
public static function getAttrVal($randAttr, $attrId, $defVal)
{
if (!$randAttr) {
return $defVal;
}
foreach ($randAttr as $attr){
if ($attr['attr_id'] == $attrId) {
return $attr['val'];
}
}
return $defVal;
}
public static function hasAttr($attr, $attrId)
{
if (!$randAttr) {
return false;
}
foreach ($randAttr as $attr){
if ($attr['attr_id'] == $attrId) {
return true;
}
}
return false;
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace mt;
use phpcommon;
class BattleBasicAttribute {
public static function get($id)
{
return getXVal(self::getMetaList(), $id);
}
protected static function getMetaList()
{
if (!self::$metaList) {
self::$metaList = getMetaTable('battleBasicAttribute@battleBasicAttribute.php');
}
return self::$metaList;
}
protected static $metaList;
}