|
@@ -0,0 +1,72 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+/*
|
|
|
+ * To change this license header, choose License Headers in Project Properties.
|
|
|
+ * To change this template file, choose Tools | Templates
|
|
|
+ * and open the template in the editor.
|
|
|
+ */
|
|
|
+
|
|
|
+namespace loyalsoft;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 【四舍五入】
|
|
|
+ * 战力 = (基础攻击力 * 攻击力系数 + 基础生命值 * 生命值系数 + (1+暴击率) * (1+暴击伤害) * 攻击力系数 + 肉食恢复加成 * (1+肉食恢复效果)*生命值系数+伤害减免值 * (1+伤害减免效果)* 生命值系数)*(1+装备系数+角色系数)
|
|
|
+ */
|
|
|
+class FightPower_Calculate {
|
|
|
+ //战力 = (基础攻击力 * 攻击力系数 + 基础生命值 * 生命值系数 + (1+暴击率) * (1+暴击伤害) * 攻击力系数 + 肉食恢复加成 * (1+肉食恢复效果)*生命值系数+伤害减免值 * (1+伤害减免效果)* 生命值系数) * (1+装备系数+角色系数)
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取词条对应的参数值
|
|
|
+ * @param type $predicateId
|
|
|
+ */
|
|
|
+ public static function predicateActionParamVal($dic, $predicateId) {
|
|
|
+ $predicateMo = GameConfig::predicate_getItem($predicateId);
|
|
|
+
|
|
|
+ $predicateDic = new \stdClass();
|
|
|
+
|
|
|
+ switch ($predicateMo->actionType) {
|
|
|
+ case E_PredicateActionType::mulEquipBasicProps://所有装备基础属性+5%----等级的基础攻击力/生命 攻击力取actionParam1 生命actionParam2
|
|
|
+ if ($predicateMo->actionParam1 != null) {
|
|
|
+ $actionKey = E_PredicateActionType::mulEquipBasicProps_damage;
|
|
|
+ $actionVal = $predicateMo->actionParam1;
|
|
|
+
|
|
|
+ $dic = self::predicateActionParamVal_Sav($dic, $actionKey,$actionVal);
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($predicateMo->actionParam2 != null) {
|
|
|
+ $actionKey = E_PredicateActionType::mulEquipBasicProps_hp;
|
|
|
+ $actionVal = $predicateMo->actionParam2;
|
|
|
+
|
|
|
+ $dic = self::predicateActionParamVal_Sav($dic, $actionKey,$actionVal);
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ case E_PredicateActionType::addBigHitRateAndVal://增加X%暴击率且增加Y%暴击伤害 actionParam1 X actionParam1 Y
|
|
|
+ $actionKey1 = E_PredicateActionType::addBigHitRate;
|
|
|
+ $actionKey2 = E_PredicateActionType::addBigHitVal;
|
|
|
+ $actionVal1 = $predicateMo->actionParam1;
|
|
|
+ $actionVal2 = $predicateMo->actionParam2;
|
|
|
+
|
|
|
+ $dic = self::predicateActionParamVal_Sav($dic, $actionKey1,$actionVal1);
|
|
|
+ $dic = self::predicateActionParamVal_Sav($dic, $actionKey2,$actionVal2);
|
|
|
+
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ $dic = self::predicateActionParamVal_Sav($dic, $predicateMo->actionType, $predicateMo->actionParam1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return $dic;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function predicateActionParamVal_Sav($dic,$actionKey, $actionVal) {
|
|
|
+ if (StlUtil::dictHasProperty($dic, $actionKey)) {
|
|
|
+ $dic->$actionKey += $actionVal;
|
|
|
+ } else {
|
|
|
+ $dic->$actionKey = $actionVal;
|
|
|
+ }
|
|
|
+
|
|
|
+ return $dic;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|