public uint CreateMonster(string monsterName, string typeName, int level, bool isLocal, Vector3 initPos, uint runtimeID, bool isElite = false, uint uniqueMonsterID = 0, bool checkOutsideWall = true, bool disableBehaviorWhenInit = false, int tagID = 0) { BaseMonoMonster component = null; GameObject gameObj = null; if (uniqueMonsterID != 0) { UniqueMonsterMetaData uniqueMonsterMetaData = MonsterData.GetUniqueMonsterMetaData(uniqueMonsterID); monsterName = uniqueMonsterMetaData.monsterName; typeName = uniqueMonsterMetaData.typeName; } string str = monsterName + typeName + uniqueMonsterID.ToString() + disableBehaviorWhenInit.ToString(); int index = 0; int num2 = 0; int count = this._preloadedMonsters.Count; while (num2 < count) { if (this._preloadedMonsters[num2].name == str) { gameObj = this._preloadedMonsters[num2].gameObj; index = num2; break; } num2++; } if (gameObj != null) { gameObj.SetActive(true); this._preloadedMonsters.RemoveAt(index); } else { gameObj = (GameObject)UnityEngine.Object.Instantiate(Miscs.LoadResource <GameObject>(MonsterData.GetPrefabResPath(monsterName, typeName, !GlobalVars.MONSTER_USE_DYNAMIC_BONE || (Singleton <LevelManager> .Instance.levelActor.levelMode == LevelActor.Mode.Multi)), BundleType.RESOURCE_FILE), InLevelData.CREATE_INIT_POS, Quaternion.identity); } component = gameObj.GetComponent <BaseMonoMonster>(); if (runtimeID == 0) { runtimeID = Singleton <RuntimeIDManager> .Instance.GetNextRuntimeID(4); } bool flag = checkOutsideWall; component.Init(monsterName, typeName, runtimeID, initPos, uniqueMonsterID, null, flag, isElite, disableBehaviorWhenInit, tagID); this.RegisterMonster(component); MonsterActor actor = Singleton <EventManager> .Instance.CreateActor <MonsterActor>(component); actor.InitLevelData(level, isElite); actor.PostInit(); int num4 = 0; int length = component.config.CommonArguments.RequestSoundBankNames.Length; while (num4 < length) { Singleton <WwiseAudioManager> .Instance.ManualPrepareBank(component.config.CommonArguments.RequestSoundBankNames[num4]); num4++; } return(component.GetRuntimeID()); }
public uint CreateMonsterMirror(BaseMonoMonster owner, Vector3 initPos, Vector3 initDir, string AIName, float hpRatio, bool disableBehaviorWhenInit = false) { BaseMonoMonster component = ((GameObject)UnityEngine.Object.Instantiate(Miscs.LoadResource <GameObject>(MonsterData.GetPrefabResPath(owner.MonsterName, owner.TypeName, false), BundleType.RESOURCE_FILE), initPos, Quaternion.LookRotation(initDir))).GetComponent <BaseMonoMonster>(); bool flag = disableBehaviorWhenInit; component.Init(owner.MonsterName, owner.TypeName, Singleton <RuntimeIDManager> .Instance.GetNextRuntimeID(4), initPos, owner.uniqueMonsterID, AIName, true, false, flag, 0); this.RegisterMonster(component); MonsterMirrorActor actor = Singleton <EventManager> .Instance.CreateActor <MonsterMirrorActor>(component); actor.InitFromMonsterActor(Singleton <EventManager> .Instance.GetActor <MonsterActor>(owner.GetRuntimeID()), hpRatio); actor.PostInit(); int index = 0; int length = component.config.CommonArguments.RequestSoundBankNames.Length; while (index < length) { Singleton <WwiseAudioManager> .Instance.ManualPrepareBank(component.config.CommonArguments.RequestSoundBankNames[index]); index++; } return(component.GetRuntimeID()); }
public override TaskStatus OnUpdate() { BaseMonoMonster component = base.GetComponent <BaseMonoMonster>(); MonsterActor actor = Singleton <EventManager> .Instance.GetActor <MonsterActor>(component.GetRuntimeID()); this.HPRatio.SetValue((float)(actor.HP / actor.maxHP)); return(TaskStatus.Success); }
private void SelectSubTargets(int targetAmount) { BaseMonoEntity attackTarget = base.actor.entity.GetAttackTarget(); if ((attackTarget != null) && !this._subSelectTargetList.Contains(attackTarget)) { this._subSelectTargetList.Add(attackTarget); this.AddSubAttackTarget(attackTarget); if (attackTarget is BaseMonoMonster) { MonsterActor actor = Singleton <EventManager> .Instance.GetActor <MonsterActor>(attackTarget.GetRuntimeID()); if ((actor != null) && !string.IsNullOrEmpty(this.config.SubTargetModifierName)) { actor.abilityPlugin.ApplyModifier(base.instancedAbility, this.config.SubTargetModifierName); } } } List <BaseMonoMonster> allMonsters = Singleton <MonsterManager> .Instance.GetAllMonsters(); allMonsters.Sort(new Comparison <BaseMonoMonster>(this.NearestTargetCompare)); for (int i = 0; i < allMonsters.Count; i++) { BaseMonoMonster item = allMonsters[i]; MonsterActor actor2 = Singleton <EventManager> .Instance.GetActor <MonsterActor>(item.GetRuntimeID()); if (((item != attackTarget) && (actor2 != null)) && ((this._subSelectTargetList.Count < targetAmount) && !this._subSelectTargetList.Contains(item))) { if (!string.IsNullOrEmpty(this.config.SubTargetModifierName)) { actor2.abilityPlugin.ApplyModifier(base.instancedAbility, this.config.SubTargetModifierName); } this._subSelectTargetList.Add(item); this.AddSubAttackTarget(item); } } }