You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

97 lines
3.9 KiB

using Game;
using ProtoCSStruct;
using Sog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Game
{
public class RolePropUtil
{
private static void RecalRoleProp(ref DBRoleData roleData, RoleProp roleProp)
{
roleProp.Clear();
var mgr = GameServerUtils.GetEventHandlerMgr();
if (mgr.TriggerGetPlayerModuleProps != null)
{
mgr.TriggerGetPlayerModuleProps(ref roleData, roleProp);
}
roleProp.CalcFinal();
roleProp.ToPropView(ref roleData.Knight.PropView);
}
public static void RecalRoleProp(PlayerOnGame player, bool sendNotify= false)
{
RoleProp heroProp = player.knight.props;
if (heroProp == null)
{
heroProp = new RoleProp();
player.knight.props = heroProp;
}
RolePropUtil.RecalRoleProp(ref player.RoleData, heroProp);
if (sendNotify) {
ref var notify = ref CSHeroPropChgNotify.Parser.GetMessage();
notify.Clear();
notify.DescId = player.RoleData.Knight.DbHero.DescId;
//var notify = new CSHeroPropChgNotify { DescId = player.RoleData.Knight.DbHero.DescId };
heroProp.ToClienNotify(ref notify);
player.SendToClient((int)CSGameMsgID.HeroPropChgNotify, ref notify);
}
CalcPower(player);
}
public static long CalcPower(RoleProp cprop)
{
//计算战斗力
cprop.CalcFinal(true);
cprop.SetDefaultValue();
long atk = cprop.GetPropFinal(PropertyDef.AtkFixedIncrease);
int k1 = CommParamDescMgr.Instance.CombatK1.int_val;
long power = cprop.CalcPower(atk, CommParamDescMgr.Instance.CombatB1.int_val, CommParamDescMgr.Instance.CombatB2.int_val, CommParamDescMgr.Instance.CombatB3.int_val,
k1, CommParamDescMgr.Instance.CombatK2.int_val, CommParamDescMgr.Instance.CombatK3.int_val, CommParamDescMgr.Instance.CombatK4.int_val, CommParamDescMgr.Instance.CombatK5.int_val,
CommParamDescMgr.Instance.CombatK6.int_val, CommParamDescMgr.Instance.CombatK7.int_val, CommParamDescMgr.Instance.CombatK8.int_val, CommParamDescMgr.Instance.CombatK9.int_val,
CommParamDescMgr.Instance.CombatK10.int_val, CommParamDescMgr.Instance.CombatK11.int_val, CommParamDescMgr.Instance.CombatB4.int_val, CommParamDescMgr.Instance.CombatB5.int_val);
return power;
}
public static void CalcPower(PlayerOnGame player)
{
//计算战斗力
long opwer = player.RoleBase.Power;
RoleProp cprop = new RoleProp(player.knight.props);
long power = CalcPower(cprop);
player.RoleBase.Power = power;
if (opwer != power)
{
PlayerNotify.NotifyPlayerPowerChange(player, 0, power - opwer);
PopPackageSvc.TriggerPopPackage(player,PackPopType.CombatPower);
}
}
public static int GetWeaponK(WeaponType type)
{
switch (type)
{
case WeaponType.SMG:
return CommParamDescMgr.Instance.CombatK1SMG.int_val;
case WeaponType.AR:
return CommParamDescMgr.Instance.CombatK1AR.int_val;
case WeaponType.LMG:
return CommParamDescMgr.Instance.CombatK1LMG.int_val;
case WeaponType.SG:
return CommParamDescMgr.Instance.CombatK1SG.int_val;
case WeaponType.SR:
return CommParamDescMgr.Instance.CombatK1SR.int_val;
case WeaponType.RPG:
return CommParamDescMgr.Instance.CombatK1RPG.int_val;
}
return 0;
}
}
}