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(); }
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>(); } } } }
//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()); } }
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); } }
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]; }
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); }
/// <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); }