Пример #1
0
 public static void AppDirectAttrChangeByTemplateID(BattleBaseAttrs entityBase, int templateID, bool isAdd = true)
 {
     if (entityBase == null)
     {
         return;
     }
     if (templateID == 0)
     {
         return;
     }
     if (isAdd)
     {
         entityBase.AddValuesByTemplateID(templateID);
     }
     else
     {
         entityBase.RemoveValuesByTemplateID(templateID);
     }
 }
Пример #2
0
    public static MapObjInfo CreateMonsterMapObjInfo(int poolID, int monsterTypeID, int monsterLevel, long ownerID, int camp, bool isBoss, Vector3 position, bool isFighting = true)
    {
        Monster monsterData = DataReader <Monster> .Get(monsterTypeID);

        if (monsterData == null)
        {
            EntityWorld.Instance.ForceOut("没有数据", string.Format("Monster表根本没有怪物{0}的数据", monsterTypeID), null);
        }
        MonsterAttr monsterAttr = Enumerable.FirstOrDefault <MonsterAttr>(DataReader <MonsterAttr> .DataList, (MonsterAttr x) => x.lv == monsterLevel && x.id == monsterData.AttributeTemplateID);

        if (monsterAttr == null)
        {
            EntityWorld.Instance.ForceOut("没有数据", string.Format("怪物属性表里没有模板ID{0} & 等级{1}的数据\n怪物id为{2}", monsterData.AttributeTemplateID, monsterLevel, monsterTypeID), null);
        }
        MapObjInfo mapObjInfo = new MapObjInfo();

        mapObjInfo.objType   = GameObjectType.ENUM.Soldier;
        mapObjInfo.id        = (long)poolID;
        mapObjInfo.ownerId   = ownerID;
        mapObjInfo.typeId    = monsterTypeID;
        mapObjInfo.modelId   = monsterData.model;
        mapObjInfo.name      = mapObjInfo.id.ToString();
        mapObjInfo.rankValue = 0;
        mapObjInfo.pos       = new Pos();
        mapObjInfo.pos.x     = (float)((int)position.x * 100);
        mapObjInfo.pos.y     = (float)((int)position.z * 100);
        mapObjInfo.vector    = InstanceManager.GetMonsterFixBornDirection(monsterData.monsterBornDirection, position, ownerID, monsterData.scenePoint);
        mapObjInfo.mapLayer  = 0;
        BattleBaseAttrs battleBaseAttrs = new BattleBaseAttrs();

        battleBaseAttrs.SetValue(GameData.AttrType.Lv, monsterLevel, true);
        battleBaseAttrs.SetValue(GameData.AttrType.HpLmt, monsterAttr.hp, true);
        battleBaseAttrs.SetValue(GameData.AttrType.Atk, monsterAttr.atk, true);
        battleBaseAttrs.SetValue(GameData.AttrType.Defence, monsterAttr.defence, true);
        battleBaseAttrs.SetValue(GameData.AttrType.HitRatio, monsterAttr.hit, true);
        battleBaseAttrs.SetValue(GameData.AttrType.DodgeRatio, monsterAttr.dex, true);
        battleBaseAttrs.SetValue(GameData.AttrType.CritRatio, monsterAttr.crt, true);
        battleBaseAttrs.SetValue(GameData.AttrType.DecritRatio, monsterAttr.penetration, true);
        battleBaseAttrs.SetValue(GameData.AttrType.CritHurtAddRatio, monsterAttr.critHurtAddRatio, true);
        battleBaseAttrs.SetValue(GameData.AttrType.ParryRatio, monsterAttr.parry, true);
        battleBaseAttrs.SetValue(GameData.AttrType.DeparryRatio, monsterAttr.vigour, true);
        battleBaseAttrs.SetValue(GameData.AttrType.ParryHurtDeRatio, monsterAttr.parryHurtDeRatio, true);
        battleBaseAttrs.SetValue(GameData.AttrType.ActSpeed, monsterAttr.attackSpeed, true);
        battleBaseAttrs.SetValue(GameData.AttrType.VpLmt, monsterAttr.Vp, true);
        battleBaseAttrs.SetValue(GameData.AttrType.VpResume, monsterAttr.VpResume, true);
        battleBaseAttrs.SetValue(GameData.AttrType.IdleVpResume, monsterAttr.IdleVpResume, true);
        if (monsterData.propId != 0)
        {
            battleBaseAttrs.AddValuesByTemplateID(monsterData.propId);
        }
        battleBaseAttrs.SetValue(GameData.AttrType.HpLmt, (long)((double)battleBaseAttrs.GetValue(GameData.AttrType.HpLmt) * (1.0 + (double)monsterData.HpAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.Atk, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.Atk) * (1.0 + (double)monsterData.AttAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.Defence, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.Defence) * (1.0 + (double)monsterData.DefAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.HitRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.HitRatio) * (1.0 + (double)monsterData.HitAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.DodgeRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.DodgeRatio) * (1.0 + (double)monsterData.DexAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.CritRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.CritRatio) * (1.0 + (double)monsterData.CrtAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.DecritRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.DecritRatio) * (1.0 + (double)monsterData.PenAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.CritHurtAddRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.CritHurtAddRatio) * (1.0 + (double)monsterData.CthAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.ParryRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.ParryRatio) * (1.0 + (double)monsterData.ParAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.DeparryRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.DeparryRatio) * (1.0 + (double)monsterData.VigAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.ParryHurtDeRatio, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.ParryHurtDeRatio) * (1.0 + (double)monsterData.PrhAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.ActSpeed, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.ActSpeed) * (1.0 + (double)monsterData.AtsAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.VpLmt, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.VpLmt) * (1.0 + (double)monsterData.VpAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.VpResume, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.VpResume) * (1.0 + (double)monsterData.VsAmplificationRate * 0.001)), true);
        battleBaseAttrs.SetValue(GameData.AttrType.IdleVpResume, (int)((double)battleBaseAttrs.GetValue(GameData.AttrType.IdleVpResume) * (1.0 + (double)monsterData.IvAmplificationRate * 0.001)), true);
        mapObjInfo.battleInfo = LocalDimensionMonsterInfoCreator.CreateMonsterBattleBaseInfo(monsterData, battleBaseAttrs, camp, isBoss, isFighting);
        return(mapObjInfo);
    }