Exemple #1
0
        public static void CaclCoefficient(UserInfo one, UserInfo two)
        {
            float  lvl1 = one.GetLevel();
            float  lvl2 = two.GetLevel();
            float  lvl  = (lvl1 + lvl2) / 2;
            double c    = 4.09 * 1.2 * (1 + lvl * 0.04) * (1 + (0.15 * (1.62 - 1) / 50 * lvl) + (1.05 + 0.55 / 50 * lvl - 1) * 0.5 + (1.05 + 0.55 / 50 * lvl - 1) * 0.5);

            one.HpMaxCoefficient     = (float)c;
            two.HpMaxCoefficient     = (float)c;
            one.EnergyMaxCoefficient = (float)c;
            two.EnergyMaxCoefficient = (float)c;
        }
        private void DebugLog(int key_code, int what)
        {
            UserInfo playerself = WorldSystem.Instance.GetPlayerSelf();

            if (null == playerself)
            {
                return;
            }
            ///
            if ((int)Keyboard.Event.Up == what)
            {
                List <SkillInfo> skill_info = playerself.GetSkillStateInfo().GetAllSkill();
                if (null != skill_info)
                {
                    foreach (SkillInfo value in skill_info)
                    {
                        LogSystem.Debug("skill id : {0}, skill level : {1}, skill pos : {2}", value.SkillId, value.SkillLevel, (SlotPosition)value.Postions.Presets[0]);
                    }
                }
                CharacterProperty info = playerself.GetActualProperty();
                if (null != info)
                {
                    LogSystem.Debug("PlayerInfo ||| HpMax : {0}, MpMax : {1}, Ad : {2}, ADp : {3}, Mdp : {4}, CriRate : {5}, CriDamage : {6}, bHitDR : {7}, cHitDR : {8}, fireDam : {9}, iceDam : {10}, poisonDam : {11}, fireERD : {12}, iceERD : {13}, poisonERD : {14}, ||| Level : {15}, Money : {16}, Gold : {17}, Stamina : {18}, AttrScore : {19}, CurExp : {20}",
                                    info.HpMax, info.EnergyMax, info.AttackBase, info.ADefenceBase, info.MDefenceBase,
                                    info.Critical, info.CriticalPow, info.CriticalBackHitPow, info.CriticalCrackPow,
                                    info.FireDamage, info.IceDamage, info.PoisonDamage, info.FireERD, info.IceERD, info.PoisonERD,
                                    playerself.GetLevel(), LobbyClient.Instance.CurrentRole.Money, LobbyClient.Instance.CurrentRole.Gold, LobbyClient.Instance.CurrentRole.CurStamina, playerself.FightingScore, LobbyClient.Instance.CurrentRole.Exp);
                    LogSystem.Debug("PlayerInfo ||| MpMax : {0}, Mp : {1}", info.EnergyMax, playerself.Energy);
                }
                CharacterInfo partner = WorldSystem.Instance.GetCharacterById(playerself.PartnerId);
                if (null != partner)
                {
                    CharacterProperty partnerInfo = partner.GetActualProperty();
                    if (null != partnerInfo)
                    {
                        LogSystem.Debug("PartnerpartnerInfo ||| HpMax : {0}, MpMax : {1}, Ad : {2}, ADp : {3}, Mdp : {4}, CriRate : {5}, CriDamage : {6}, bHitDR : {7}, cHitDR : {8}, fireDam : {9}, iceDam : {10}, poisonDam : {11}, fireERD : {12}, iceERD : {13}, poisonERD : {14}",
                                        partnerInfo.HpMax, partnerInfo.EnergyMax, partnerInfo.AttackBase, partnerInfo.ADefenceBase, partnerInfo.MDefenceBase,
                                        partnerInfo.Critical, partnerInfo.CriticalPow, partnerInfo.CriticalBackHitPow, partnerInfo.CriticalCrackPow,
                                        partnerInfo.FireDamage, partnerInfo.IceDamage, partnerInfo.PoisonDamage, partnerInfo.FireERD, partnerInfo.IceERD, partnerInfo.PoisonERD);
                    }
                }
            }
        }
        private NpcInfo CreateParterner(UserInfo owner, PartnerInfo partnerInfo)
        {
            if (null == owner)
            {
                return(null);
            }
            if (null == partnerInfo)
            {
                return(null);
            }
            Data_Unit data = new Data_Unit();

            data.m_Id         = -1;
            data.m_LinkId     = partnerInfo.LinkId;
            data.m_CampId     = owner.GetCampId();
            data.m_Pos        = owner.GetMovementStateInfo().GetPosition3D();
            data.m_RotAngle   = 0;
            data.m_AiLogic    = partnerInfo.GetAiLogic();
            data.m_AiParam[0] = "";
            data.m_AiParam[1] = "";
            data.m_AiParam[2] = partnerInfo.GetAiParam().ToString();
            data.m_IsEnable   = true;
            NpcInfo npc = WorldSystem.Instance.NpcManager.AddNpc(data);

            if (null != npc)
            {
                AppendAttributeConfig aac       = AppendAttributeConfigProvider.Instance.GetDataById(partnerInfo.GetAppendAttrConfigId());
                float inheritAttackAttrPercent  = partnerInfo.GetInheritAttackAttrPercent();
                float inheritDefenceAttrPercent = partnerInfo.GetInheritDefenceAttrPercent();
                if (null != aac)
                {
                    // attack
                    npc.GetBaseProperty().SetAttackBase(Operate_Type.OT_Absolute, (int)(owner.GetActualProperty().AttackBase *inheritAttackAttrPercent));
                    npc.GetBaseProperty().SetFireDamage(Operate_Type.OT_Absolute, owner.GetActualProperty().FireDamage *inheritAttackAttrPercent);
                    npc.GetBaseProperty().SetIceDamage(Operate_Type.OT_Absolute, owner.GetActualProperty().IceDamage *inheritAttackAttrPercent);
                    npc.GetBaseProperty().SetPoisonDamage(Operate_Type.OT_Absolute, owner.GetActualProperty().PoisonDamage *inheritAttackAttrPercent);
                    // defence
                    npc.GetBaseProperty().SetHpMax(Operate_Type.OT_Absolute, (int)(owner.GetActualProperty().HpMax *inheritDefenceAttrPercent));
                    npc.GetBaseProperty().SetEnergyMax(Operate_Type.OT_Absolute, (int)(owner.GetActualProperty().EnergyMax *inheritDefenceAttrPercent));
                    npc.GetBaseProperty().SetADefenceBase(Operate_Type.OT_Absolute, (int)(owner.GetActualProperty().ADefenceBase *inheritDefenceAttrPercent));
                    npc.GetBaseProperty().SetMDefenceBase(Operate_Type.OT_Absolute, (int)(owner.GetActualProperty().MDefenceBase *inheritDefenceAttrPercent));
                    npc.GetBaseProperty().SetFireERD(Operate_Type.OT_Absolute, owner.GetActualProperty().FireERD *inheritDefenceAttrPercent);
                    npc.GetBaseProperty().SetIceERD(Operate_Type.OT_Absolute, owner.GetActualProperty().IceERD *inheritDefenceAttrPercent);
                    npc.GetBaseProperty().SetPoisonERD(Operate_Type.OT_Absolute, owner.GetActualProperty().PoisonERD *inheritDefenceAttrPercent);
                    // reset hp & energy
                    npc.SetHp(Operate_Type.OT_Absolute, npc.GetBaseProperty().HpMax);
                    npc.SetEnergy(Operate_Type.OT_Absolute, npc.GetBaseProperty().EnergyMax);
                }
                npc.SetAIEnable(true);
                npc.IsArenaPartner = true;
                npc.GetSkillStateInfo().RemoveAllSkill();
                npc.BornTime = TimeUtility.GetServerMilliseconds();
                List <int> skillList = partnerInfo.GetSkillList();
                if (null != skillList)
                {
                    for (int i = 0; i < skillList.Count; ++i)
                    {
                        SkillInfo skillInfo = new SkillInfo(skillList[i]);
                        npc.GetSkillStateInfo().AddSkill(skillInfo);
                    }
                }
                owner.LastSummonPartnerTime = TimeUtility.GetServerMilliseconds();
                npc.SkillController         = new SwordManSkillController(npc, GfxModule.Skill.GfxSkillSystem.Instance);
                npc.OwnerId     = owner.GetId();
                owner.PartnerId = npc.GetId();
                npc.SetLevel(owner.GetLevel());
                EntityManager.Instance.CreateNpcView(npc.GetId());
                if (partnerInfo.BornSkill > 0)
                {
                    SkillInfo skillInfo = new SkillInfo(partnerInfo.BornSkill);
                    npc.GetSkillStateInfo().AddSkill(skillInfo);
                    npc.SkillController.ForceStartSkill(partnerInfo.BornSkill);
                }
                CharacterView view = EntityManager.Instance.GetCharacterViewById(npc.GetId());
                if (null != view)
                {
                    GfxSystem.SetLayer(view.Actor, "PhysicObj");
                }
            }
            return(npc);
        }
        /// <summary>
        /// calculate attr by partner
        /// </summary>
        /// <param name="obj"></param>
        public static void RefixAttrByPartner(UserInfo obj)
        {
            PartnerInfo pi = obj.GetPartnerInfo();

            if (null != pi)
            {
                AppendAttributeConfig info = AppendAttributeConfigProvider.Instance.GetDataById(pi.GetAppendAttrConfigId());
                if (null != info)
                {
                    float aMoveSpeed          = obj.GetActualProperty().MoveSpeed;
                    int   aHpMax              = obj.GetActualProperty().HpMax;
                    int   aEnergyMax          = obj.GetActualProperty().EnergyMax;
                    float aHpRecover          = obj.GetActualProperty().HpRecover;
                    float aEnergyRecover      = obj.GetActualProperty().EnergyRecover;
                    int   aAttackBase         = obj.GetActualProperty().AttackBase;
                    int   aADefenceBase       = obj.GetActualProperty().ADefenceBase;
                    int   aMDefenceBase       = obj.GetActualProperty().MDefenceBase;
                    float aCritical           = obj.GetActualProperty().Critical;
                    float aCriticalPow        = obj.GetActualProperty().CriticalPow;
                    float aCriticalBackHitPow = obj.GetActualProperty().CriticalBackHitPow;
                    float aCriticalCrackPow   = obj.GetActualProperty().CriticalCrackPow;
                    float aFireDamage         = obj.GetActualProperty().FireDamage;
                    float aFireERD            = obj.GetActualProperty().FireERD;
                    float aIceDamage          = obj.GetActualProperty().IceDamage;
                    float aIceERD             = obj.GetActualProperty().IceERD;
                    float aPoisonDamage       = obj.GetActualProperty().PoisonDamage;
                    float aPoisonERD          = obj.GetActualProperty().PoisonERD;
                    float aWeight             = obj.GetActualProperty().Weight;
                    float aRps         = obj.GetActualProperty().Rps;
                    float aAttackRange = obj.GetActualProperty().AttackRange;
                    obj.GetActualProperty().SetMoveSpeed(Operate_Type.OT_Relative, info.GetAddSpd(aMoveSpeed, obj.GetLevel()));
                    obj.GetActualProperty().SetHpMax(Operate_Type.OT_Relative, (int)info.GetAddHpMax(aHpMax, obj.GetLevel()));
                    obj.GetActualProperty().SetEnergyMax(Operate_Type.OT_Relative, (int)info.GetAddEpMax(aEnergyMax, obj.GetLevel()));
                    obj.GetActualProperty().SetHpRecover(Operate_Type.OT_Relative, info.GetAddHpRecover(aHpRecover, obj.GetLevel()));
                    obj.GetActualProperty().SetEnergyRecover(Operate_Type.OT_Relative, info.GetAddEpRecover(aEnergyRecover, obj.GetLevel()));
                    obj.GetActualProperty().SetAttackBase(Operate_Type.OT_Relative, (int)info.GetAddAd(aAttackBase, obj.GetLevel()));
                    obj.GetActualProperty().SetADefenceBase(Operate_Type.OT_Relative, (int)info.GetAddADp(aADefenceBase, obj.GetLevel()));
                    obj.GetActualProperty().SetMDefenceBase(Operate_Type.OT_Relative, (int)info.GetAddMDp(aMDefenceBase, obj.GetLevel()));
                    obj.GetActualProperty().SetCritical(Operate_Type.OT_Relative, info.GetAddCri(aCritical, obj.GetLevel()));
                    obj.GetActualProperty().SetCriticalPow(Operate_Type.OT_Relative, info.GetAddPow(aCriticalPow, obj.GetLevel()));
                    obj.GetActualProperty().SetCriticalBackHitPow(Operate_Type.OT_Relative, info.GetAddBackHitPow(aCriticalBackHitPow, obj.GetLevel()));
                    obj.GetActualProperty().SetCriticalCrackPow(Operate_Type.OT_Relative, info.GetAddCrackPow(aCriticalCrackPow, obj.GetLevel()));
                    obj.GetActualProperty().SetFireDamage(Operate_Type.OT_Relative, info.GetAddFireDam(aFireDamage, obj.GetLevel()));
                    obj.GetActualProperty().SetFireERD(Operate_Type.OT_Relative, info.GetAddFireErd(aFireERD, obj.GetLevel()));
                    obj.GetActualProperty().SetIceDamage(Operate_Type.OT_Relative, info.GetAddIceDam(aIceDamage, obj.GetLevel()));
                    obj.GetActualProperty().SetIceERD(Operate_Type.OT_Relative, info.GetAddIceErd(aIceERD, obj.GetLevel()));
                    obj.GetActualProperty().SetPoisonDamage(Operate_Type.OT_Relative, info.GetAddPoisonDam(aPoisonDamage, obj.GetLevel()));
                    obj.GetActualProperty().SetPoisonERD(Operate_Type.OT_Relative, info.GetAddPoisonErd(aPoisonERD, obj.GetLevel()));
                    obj.GetActualProperty().SetWeight(Operate_Type.OT_Relative, info.GetAddWeight(aWeight, obj.GetLevel()));
                    obj.GetActualProperty().SetRps(Operate_Type.OT_Relative, info.GetAddRps(aRps, obj.GetLevel()));
                    obj.GetActualProperty().SetAttackRange(Operate_Type.OT_Relative, info.GetAddAttackRange(aAttackRange, obj.GetLevel()));
                }
            }
        }