Пример #1
0
 //事件触发函数
 public void _OnMonsterAttrChanged(MonsterAttr monsterAttr)
 {
     if (OnMonsterAttrChanged != null)
     {
         OnMonsterAttrChanged(monsterAttr);
     }
 }
Пример #2
0
 //设置怪物血量和攻击显示
 void SetMonsterAttrShow(MonsterAttr monsterAttr)
 {
     bloodText.transform.parent.gameObject.SetActive(monsterAttr.Blood != 0);
     attackText.transform.parent.gameObject.SetActive(monsterAttr.Attack != 0);
     bloodText.text  = monsterAttr.Blood == -1 ? "???" : monsterAttr.Blood.ToString();
     attackText.text = monsterAttr.Attack == -1 ? "???" : monsterAttr.Attack.ToString();
 }
Пример #3
0
    public static void FightWithMonster(MonsterAttr monsterAttr, BrickRoot brickRoot)
    {
        int lossBlood_player  = Math.Max(monsterAttr.Attack - PlayerAttr.Defense, 1);
        int lossBlood_monster = Math.Max(PlayerAttr.Attack - monsterAttr.Defense, 1);

        PlayerAttr.Blood  -= lossBlood_player;
        monsterAttr.Blood -= lossBlood_monster;
        UIBase.ShowAttrChange(-lossBlood_monster, brickRoot.transform.localPosition);
        brickRoot.MonsterAni.SetTrigger("BeAttacked");
    }
Пример #4
0
        public bool AddAttr(CreatureCommonAttr CAttrType, int attrValue)
        {
            MonsterAttr mAttrType = AttrMgr.GetMonsterAttr(CAttrType);

            if (attrValue < 0)
            {
                uint absValue = (uint)Math.Abs(attrValue);
                m_Attrs[(int)mAttrType] = ((m_Attrs[(int)mAttrType] > absValue) ? (m_Attrs[(int)mAttrType] - absValue) : 0);
            }
            else
            {
                m_Attrs[(int)mAttrType] = m_Attrs[(int)mAttrType] + (uint)attrValue;
            }

            return(true);
        }
Пример #5
0
    //砖块生成怪物
    public void GenMonster(int monsterId)
    {
        NPC_Info = Cfg_NPC.GetCfg(monsterId);
        if (NPC_Info.AppearOnStart == 1)
        {
            SetBrickState(BrickState.monster);
        }
        monsterAttr = new MonsterAttr();
        monsterAttr.GameEvent.OnMonsterAttrChanged += SetMonsterAttrShow;
        monsterAttr.GameEvent.OnMonsterDie         += MonsterDie;
        MonsterAttr.TransToAttr(NPC_Info, ref monsterAttr);
        //设置怪物图片和颜色
        string monsterAsset = COMMON.MonsterIconPath + NPC_Info.AssetName;

        COMMON.SetSprite(modelIcon, monsterAsset);
        modelIcon.material = COMMON.spriteMaterials[NPC_Info.Color];
    }
Пример #6
0
 public static void TransToAttr(Cfg_NPC cfg_NPC, ref MonsterAttr monsterAttr)
 {
     monsterAttr.Attack  = cfg_NPC.Attack;
     monsterAttr.Blood   = cfg_NPC.Blood;
     monsterAttr.Defense = cfg_NPC.Defense;
 }
Пример #7
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);
    }