public static GameObject NPCModelLoad(uint monsterID, ModelQuality mq = ModelQuality.HIGH)
    {
        Mob.MobInfo mosterInfo = _LowDataMgr.instance.GetMonsterInfo(monsterID);

        string     monsterPref = "";
        GameObject oriUnit     = null;

        if (mosterInfo != null)
        {
            monsterPref = mosterInfo.prefab;
            //oriUnit = ResourceMgr.Load(string.Format("Character/Prefab/{0}", monsterPref)) as GameObject;
            oriUnit = ResourceMgr.Load(GetPrefabSuffix("Character/Prefab/", monsterPref, mq)) as GameObject;

            if (oriUnit == null)
            {
                oriUnit = ResourceMgr.Load(string.Format("Etc/Missing_Model", monsterPref)) as GameObject;
            }
        }
        else
        {
            oriUnit = ResourceMgr.Load(string.Format("Etc/Missing_Model", monsterPref)) as GameObject;
        }

        //GameObject _unit = GameObject.Instantiate(oriUnit) as GameObject;

        return(oriUnit);
    }
    //private bool IsAlphaAction;

    public override void Init()
    {
        //Panel = GetComponent<UIPanel>();
        //Panel.alpha = 0;
        base.Init();

        Mob.MobInfo mLowData  = null;
        int         loopCount = G_GameInfo.CharacterMgr.allUnitList.Count;
        uint        lowDataID = 0;

        for (int i = 0; i < loopCount; i++)
        {
            Unit u = G_GameInfo.CharacterMgr.allUnitList[i];
            if (u.IsDie || u.UnitType != UnitType.Boss)
            {
                continue;
            }

            Npc n = u as Npc;
            lowDataID = n.NpcLowID;
            mLowData  = _LowDataMgr.instance.GetMonsterInfo(lowDataID);
            break;
        }

        string name = null;
        string icon = null;

        if (mLowData == null)
        {
            name = "NotFound ID " + lowDataID;
            icon = "missing_icon";
        }
        else
        {
            name = _LowDataMgr.instance.GetStringUnit(mLowData.NameId);
            icon = mLowData.PortraitId;
        }
        NameLabel.text = name;
        G_GameInfo.GameInfo.HudPanel.SetBossInfo(name, icon);

        DoNameAniAlphaSound();
    }
예제 #3
0
    public override void Start()
    {
        if (UnitType == UnitType.Boss) //|| isMiddleBoss)
        {
            if (G_GameInfo.GameMode == GAME_MODE.SINGLE || G_GameInfo.GameMode == GAME_MODE.RAID ||
                G_GameInfo.GameMode == GAME_MODE.TOWER)
            {
                EventListner.instance.TriggerEvent("HUD_SHOWBOSS", true, this);
            }

            if (G_GameInfo.GameMode == GAME_MODE.RAID)
            {
                Mob.MobInfo monInfo = _LowDataMgr.instance.GetMonsterInfo(NpcLowID);
                if (0 < monInfo.Pattenid)
                {
                    BossPatten = gameObject.AddComponent <RaidBossAIBase>();
                }
            }
        }
    }
예제 #4
0
    //public Dictionary<uint, Transform> PattenPosDic = new Dictionary<uint, Transform>();//보류 조건

    // Use this for initialization
    void Start()
    {
        parent = GetComponent <Npc>();

        Mob.MobInfo           monInfo    = _LowDataMgr.instance.GetMonsterInfo(parent.NpcLowID);
        List <Mob.PattenInfo> pattenList = _LowDataMgr.instance.GetLowDataPattenList(monInfo.Pattenid);

        List <uint> skillList = new List <uint>();

        for (int i = 0; i < pattenList.Count; i++)
        {
            Mob.PattenInfo pattenInfo = pattenList[i];
            PattenData     data       = new PattenData(pattenInfo.Typerank, pattenInfo.MainType, pattenInfo.SubType, pattenInfo.TypeValue, pattenInfo.ActionType, pattenInfo.Actionvalue);
            if (data.AcType == ActionType.Skill)
            {
                skillList.Add(pattenInfo.Actionvalue);
                //data.SkillData.Init()
            }
            //else if(data.AcType == ActionType.MovePoint)//보류 조건
            //{
            //    GameObject go = GameObject.Find(string.Format("BossPattenPos_{0}", data.ActionValue));
            //    if (go == null)
            //    {
            //        Debug.LogError(string.Format("not found BossPattenPos_{0} error", data.ActionValue));
            //        continue;
            //    }

            //    PattenPosDic.Add(data.ActionValue, go.transform);
            //}

            PattenList.Add(data);
        }

        //SkillCtlr.InitBossRaidSkill(parent, skillList.ToArray() );
        if (0 < skillList.Count)
        {
            parent.SkillCtlr.AddRaidSkill(skillList.ToArray());
        }
    }
예제 #5
0
    public override void ShowHeadObj(bool unShow)
    {
        base.ShowHeadObj(unShow);


        // NPC에 HPSlider 표시
        if (unShow && gameObject.activeSelf && G_GameInfo.GameInfo.BoardPanel != null) //if(UnitType == global::UnitType.Npc && !doStatic && G_GameInfo.GameInfo.BoardPanel != null)
        {
            Mob.MobInfo mLowData = _LowDataMgr.instance.GetMonsterInfo(NpcLowID);
            string      name     = null;
            if (mLowData != null)
            {
                name = _LowDataMgr.instance.GetStringUnit(mLowData.NameId);
            }
            else
            {
                name = string.Format("NotFound ID={0}", NpcLowID);
            }

            G_GameInfo.GameInfo.BoardPanel.ShowHead(gameObject, name, 0, 0, false);
        }
    }
예제 #6
0
    protected override void Init_SyncData(params object[] args)
    {
        base.Init_SyncData(args);

        switch (UnitType)
        {
        case UnitType.Npc:
        case UnitType.Boss:
            NpcLowID = (uint)args[3];

            npcInfo = _LowDataMgr.instance.GetMonsterInfo(NpcLowID);
            if (npcInfo == null)
            {
                Debug.LogError(string.Format("not found MobTable error {0}", NpcLowID));
                npcInfo = _LowDataMgr.instance.GetMonsterInfo(10100);
            }

            AttackType = 1;    // LowDataMgr.GetUnitAbilityData(NpcLowID).attackType;
            break;
        }

        GroupNo = (int)args[4];
    }
예제 #7
0
    void SetMonsterStat(uint npcID, uint npcLevel)
    {
        //float atkDelay = 0;
        float atkRange = 2;

        // enthan Base Stats
        FirstAtkRange  = 1.04f;
        AtkDelay       = 1f;
        AtkRecognition = 20f;
        RushAtkRange   = 0;

        CurMoveType = OrignalMoveType = (MoveType)1;
        AttackType  = eAttackType.Melee;
        AirHeight   = 0;
        AirFlyTime  = 0;

        Mob.MobInfo monsterData = _LowDataMgr.instance.GetMonsterInfo(npcID);

        if (monsterData.AiType == 1)
        {
            //밀리
            atkRange = 2;
        }
        else
        {
            //원거리
            atkRange = 8;
        }

        if (monsterData == null)
        {
            //몬스터 데이터가 없다
            Debug.LogWarning(string.Format("Not Found MonsterData:{0}", npcID));

            Stats.Add(AbilityType.HP, new Attribute(100));
            Stats.Add(AbilityType.DAMAGE, new Attribute(100));
            Stats.Add(AbilityType.HIT_RATE, new Attribute(0));
            Stats.Add(AbilityType.DODGE_RATE, new Attribute(0));
            Stats.Add(AbilityType.CRITICAL_RATE, new Attribute(0));
            Stats.Add(AbilityType.CRITICAL_RES, new Attribute(0));
            Stats.Add(AbilityType.CRITICAL_DAMAGE, new Attribute(0));
            Stats.Add(AbilityType.DRAIN_HP, new Attribute(0));
            Stats.Add(AbilityType.DEFENCE_IGNORE, new Attribute(0));
            Stats.Add(AbilityType.DAMAGE_DECREASE, new Attribute(100));
            Stats.Add(AbilityType.DAMAGE_DECREASE_RATE, new Attribute(0));
            Stats.Add(AbilityType.COOLTIME, new Attribute(0));

            Stats.Add(AbilityType.ATTACK_SPEED, new Attribute(1));
            Stats.Add(AbilityType.ATTACK_RANGE, new Attribute(atkRange));
            Stats.Add(AbilityType.ATTACK_ANGLE, new Attribute(140));

            Stats.Add(AbilityType.MOVE_SPEED, new Attribute(7.5f));
            Stats.Add(AbilityType.DETECTED_RANGE, new Attribute(15f));

            Stats.Add(AbilityType.SUPERARMOR, new Attribute(0));
            Stats.Add(AbilityType.SUPERARMOR_RECOVERY_TIME, new Attribute(0));
            Stats.Add(AbilityType.SUPERARMOR_RECOVERY_RATE, new Attribute(0));
            Stats.Add(AbilityType.SUPERARMOR_RECOVERY, new Attribute(0));

            savedMaxHp = Hp = (int)Stats[AbilityType.HP].FinalValue;
            SuperArmor = (uint)Stats[AbilityType.SUPERARMOR].FinalValue;

            Stats.Add(AbilityType.WEIGHT, new Attribute(0));
        }
        else
        {
            Stats.Add(AbilityType.HP, new Attribute((float)(monsterData.BaseHp + npcLevel * monsterData.LevelUpHp) * 0.1f));
            Stats.Add(AbilityType.DAMAGE, new Attribute((float)(monsterData.BaseAtk + npcLevel * monsterData.LevelUpAtk) * 0.1f));
            Stats.Add(AbilityType.HIT_RATE, new Attribute((float)(monsterData.BaseHit + npcLevel * monsterData.LevelHitRate) * 0.1f));
            Stats.Add(AbilityType.DODGE_RATE, new Attribute((float)(monsterData.BaseAvoid + npcLevel * monsterData.LevelAvoidRate) * 0.1f));
            Stats.Add(AbilityType.CRITICAL_RATE, new Attribute(monsterData.BaseCriticalRate * 0.1f));
            Stats.Add(AbilityType.CRITICAL_RES, new Attribute(monsterData.BaseCriticalResist * 0.1f));
            Stats.Add(AbilityType.CRITICAL_DAMAGE, new Attribute(monsterData.BaseCriticalDamage * 0.1f));
            Stats.Add(AbilityType.DRAIN_HP, new Attribute(monsterData.BaseLifeSteal * 0.1f));
            Stats.Add(AbilityType.DEFENCE_IGNORE, new Attribute(monsterData.BaseIgnoreAtk));
            Stats.Add(AbilityType.DAMAGE_DECREASE, new Attribute((monsterData.BaseDamageDown + npcLevel * monsterData.LevelupDamageDown) * 0.1f));
            Stats.Add(AbilityType.DAMAGE_DECREASE_RATE, new Attribute((monsterData.BaseDamageDownRate + npcLevel * monsterData.LevelupDamageDownRate) * 0.1f));

            Stats.Add(AbilityType.COOLTIME, new Attribute(0));

            Stats.Add(AbilityType.ATTACK_SPEED, new Attribute(1));
            Stats.Add(AbilityType.ATTACK_RANGE, new Attribute(atkRange));
            Stats.Add(AbilityType.ATTACK_ANGLE, new Attribute(140));

            Stats.Add(AbilityType.MOVE_SPEED, new Attribute(7.5f));

            Stats.Add(AbilityType.DETECTED_RANGE, new Attribute(15f));

            Stats.Add(AbilityType.SUPERARMOR, new Attribute(monsterData.BaseSuperArmor));
            Stats.Add(AbilityType.SUPERARMOR_RECOVERY_TIME, new Attribute(monsterData.SuperArmorRecoveryTime));
            Stats.Add(AbilityType.SUPERARMOR_RECOVERY_RATE, new Attribute(monsterData.SuperArmorRecoveryRate));
            Stats.Add(AbilityType.SUPERARMOR_RECOVERY, new Attribute(monsterData.SuperArmorRecovery));

            Stats.Add(AbilityType.WEIGHT, new Attribute(monsterData.Weight));

            savedMaxHp = Hp = (int)Stats[AbilityType.HP].FinalValue;
            SuperArmor = (uint)Stats[AbilityType.SUPERARMOR].FinalValue;
        }
    }
        public short State;//-1은 가지 못하는 지역, 0은 플레이 가능지역, 1은 클리어 지역

        public bool InitStageData(uint tableID, byte[] clearInfo, short state, int dailyClearCount)
        {
            ClearInfo       = clearInfo;
            _StageLowData   = _LowDataMgr.instance.GetStageInfo(tableID);
            State           = state;
            DailyClearCount = dailyClearCount;

            if (_StageLowData == null)//없으면 문제인데..
            {
                return(false);
            }


            QuestList.Add(new NetData.StageClearData((ClearQuestType)_StageLowData.ClearType1, _StageLowData.ClearValue1));
            QuestList.Add(new NetData.StageClearData((ClearQuestType)_StageLowData.ClearType2, _StageLowData.ClearValue2));
            QuestList.Add(new NetData.StageClearData((ClearQuestType)_StageLowData.ClearType3, _StageLowData.ClearValue3));

            int monsterCount = _StageLowData.regenMonster.Count;

            AppearMonster = new string[monsterCount];

            for (int i = 0; i < monsterCount; i++)
            {
                uint        m_id     = uint.Parse(_StageLowData.regenMonster[i]);
                Mob.MobInfo mLowData = _LowDataMgr.instance.GetMonsterInfo(m_id);
                if (mLowData == null)
                {
                    Debug.Log("MobTable id error " + m_id);
                    continue;
                }

                AppearMonster[i] = mLowData.PortraitId;
            }

            //아이템은 나의 클래스에 맞춰서 표시해준다.
            //int myClass = UIHelper.GetClassType(NetData.instance.GetUserInfo().GetCharIdx() );

            int addCount = _StageLowData.type == 2 ? 2 : 1;

            DropItemId = new uint[_StageLowData.rewardItemId.Count + addCount];
            // 최초
            GatchaReward.FixedRewardInfo firstInfo = _LowDataMgr.instance.GetFixedRewardItem(_StageLowData.FirstReward);
            if (firstInfo != null)
            {
                DropItemId[0] = firstInfo.ItemId == 0 ? firstInfo.Type :  firstInfo.ItemId;
            }

            if (_StageLowData.type == 2)//어려움만.
            {
                GatchaReward.FixedRewardInfo basicInfo = _LowDataMgr.instance.GetFixedRewardItem(_StageLowData.FixedReward);
                if (basicInfo != null)
                {
                    DropItemId[1] = basicInfo.ItemId == 0? basicInfo.Type : basicInfo.ItemId;
                }
            }

            for (int i = addCount; i < DropItemId.Length; i++)
            {
                uint i_id = uint.Parse(_StageLowData.rewardItemId[i - addCount]);  //ui유아이표시
                DropItemId[i] = i_id;
            }

            return(true);
        }
예제 #9
0
    /// <summary> 몬스터 생성 </summary>
    public static GameObject CreateMonsterUIModel(Transform parent, uint mobId, bool isBattleIdle, bool isRim, bool isShadow, string panelName)
    {
        bool isLight = false;

        Mob.MobInfo mobLowData = _LowDataMgr.instance.GetMonsterInfo(mobId);
        string      prefabName = mobLowData.prefab;

        if (0 < parent.childCount)
        {
            if (parent.GetChild(0).name.Contains(prefabName))
            {
                return(null);
            }

            GameObject.DestroyImmediate(parent.GetChild(0).gameObject);
        }

        if (ResourceMgr.Load(string.Format("Character/Prefab/{0}_s", prefabName)) != null)
        {
            isLight    = true;
            prefabName = string.Format("{0}_s", prefabName);
        }

        GameObject _unit = GameObject.Instantiate(Resources.Load(string.Format("Character/Prefab/{0}", prefabName))) as GameObject;

        if (isLight)
        {
            int childCount = _unit.transform.childCount;
            for (int i = 0; i < childCount; i++)
            {
                if (_unit.transform.GetChild(i).renderer == null)
                {
                    continue;
                }

                Material[] m = _unit.transform.GetChild(i).renderer.materials;
                if (m == null)
                {
                    continue;
                }

                int mCount = m.Length;
                for (int j = 0; j < mCount; j++)
                {
                    m[j].SetFloat("_IsRim", isRim ? 1 : 0);
                }
            }
        }

        Resource.AniInfo[] ads = _LowDataMgr.instance.TownAniInfoSetting(mobLowData.prefab, _unit, mobLowData.AniId, true);

        UnitAnimator unitAnim = new UnitAnimator();

        unitAnim.Init(_unit, _unit.animation, ads);
        unitAnim.Animation.playAutomatically = false;
        unitAnim.PlayAnim(isBattleIdle ? eAnimName.Anim_battle_idle : eAnimName.Anim_idle);

        UIModel model = _unit.AddComponent <UIModel>();

        model.Init(parent, unitAnim, null, true, isShadow, panelName);

        return(_unit);
    }