protected override void CheckOperate() { base.CheckOperate(); if (PeInput.Get(PeInput.LogicFunction.InteractWithItem) && CanCmd()) { if (EntityMonsterBeacon.IsRunning()) { PeTipMsg.Register(PELocalization.GetString(8000596), PeTipMsg.EMsgLevel.Warning); return; } if (!Operatable()) { return; } Pathea.OperateCmpt operateCmpt = Pathea.MainPlayer.Instance.entity.operateCmpt; if (null != operateCmpt && operateCmpt.HasOperate) { return; } Pathea.MotionMgrCmpt mmc = Pathea.MainPlayer.Instance.entity.motionMgr; if (null != mmc && (mmc.IsActionRunning(Pathea.PEActionType.Sleep) || !mmc.CanDoAction(Pathea.PEActionType.Sleep))) { return; } GameUI.Instance.mItemOp.ShowSleepWnd(true, this, bedView.peSleep, Pathea.MainPlayer.Instance.entity); // GameUI.Instance.mItemOp.SleepImmediately(bedView.peSleep, Pathea.MainPlayer.Instance.entity); } }
static bool ParseAgentInfo(SceneEntityPosAgent agent, out EntityGrp grp, out EntityMonsterBeacon bcn, ref float exScale, ref int colorType, ref int playerId, ref int buffId) // bValidAgent { AgentInfo info = agent.spInfo as AgentInfo; grp = info != null ? info._grp : null; bcn = info != null ? info._bcn : null; colorType = info != null?info._colorType:-1; playerId = info != null?info._playerId:-1; buffId = info != null?info._buffId:0; if (bcn != null) { agent.protoId = MonsterEntityCreator.GetMonsterProtoIDForBeacon(agent.protoId, agent.Pos, ref exScale); if ((agent.protoId & EntityProto.IdAirborneAllMask) != 0) { bcn.AddAirborneReq(agent); return(false); } } if (0 > agent.protoId) { agent.protoId = (info == null || info._bsRate < 0) ? GetMonsterProtoID(agent.Pos, ref exScale) : GetBossMonsterProtoID(agent.Pos, info._bsRate, ref exScale); } return(agent.protoId >= 0); }
public static void OnMonsterAdd(int id, AiNetwork ai, Pathea.PeEntity entity) { EntityMonsterBeacon mbEntity = Pathea.EntityMgr.Instance.Get(id) as EntityMonsterBeacon; if (null != mbEntity) { mbEntity.OnMonsterCreated(entity); } else { if (null != entity) { Pathea.CommonCmpt cc = entity.GetCmpt <Pathea.CommonCmpt>(); if (cc != null) { AiTowerDefense td = AiTowerDefense.Get <AiTowerDefense>(id); if (null != td) { cc.TDpos = td._pos; } } Pathea.SkAliveEntity sae = entity.GetCmpt <Pathea.SkAliveEntity>(); if (sae != null) { sae.SetAttribute(Pathea.AttribType.DefaultPlayerID, 8); sae.SetAttribute(Pathea.AttribType.CampID, 26); } } } }
void TryCreateMonsterSiege() { Camp camp = Camp.GetCamp(PeCreature.Instance.mainPlayer.position); if (m_Beacon == null && camp != null) { if (Time.time - m_LastRandomTime > m_RandTime * 60.0f) { m_LastRandomTime = Time.time; m_RandTime = Random.Range(minMinute, maxMinute); if (Random.value > probability) { m_FailedCout++; } else { m_Beacon = EntityMonsterBeacon.CreateMonsterBeaconByTDID(1, null, null); m_Beacon.TargetPosition = camp.Pos; m_Beacon.transform.position = camp.Pos; m_Beacon.handlerNewWave += OnNewWave; m_FailedCout = 0; } } } }
void Awake() { m_IsReady = true; m_Beacon = GetComponent <EntityMonsterBeacon>(); m_Beacon.handlerNewWave += OnNewWave; m_Beacon.handerNewEntity += OnEntitySpawned; if (m_Creator != null) { m_Creator.SetSiege(true); } m_Agents = new List <SiegeAgent>(); m_Npcs = new List <PeEntity>(); m_Towers = new List <PeEntity>(); m_Buildings = new List <PeEntity>(); m_Defences = new List <PeEntity>(); m_Entities = new List <PeEntity>(); SiegeAgent.DeathEvent += OnDeath; StartCoroutine(Defence()); StartCoroutine(Warning()); }
void OnEntitySpawned(SceneEntityPosAgent agent) { m_MaxCount++; if (!EntityMonsterBeacon.IsBcnMonsterProtoId(agent.protoId)) // not encoded, unexpected agent { return; } int spType, lvl, spawnType; EntityMonsterBeacon.DecodeBcnMonsterProtoId(agent.protoId, out spType, out lvl, out spawnType); int areaType = PeGameMgr.IsStory ? PeMappingMgr.Instance.GetAiSpawnMapId(new Vector2(agent.Pos.x, agent.Pos.z)) : AiUtil.GetMapID(agent.Pos); AISpawnTDWavesData.TDMonsterSpData data = AISpawnTDWavesData.GetMonsterSpData(false, spType, lvl, spawnType, areaType); float rhp = data != null ? data._rhp : 200.0f; float dps = data != null ? data._dps : 50.0f; SiegeAgent siegeAgent = new SiegeAgent(this, agent, rhp, dps); agent.spInfo = new SiegeAgent.AgentInfo(m_Beacon, siegeAgent); m_Agents.Add(siegeAgent); }
public static EntityMonsterBeacon GetSpBeacon4MonsterKillTask() { if (s_spBeacon == null) { GameObject go = new GameObject("SpBeacon4MK"); s_spBeacon = go.AddComponent <EntityMonsterBeacon4Kill>(); EntityMgr.Instance.AddAfterAssignId(s_spBeacon, MonsterKillBeaconID); } return(s_spBeacon); }
void BtnReady_OnClick() { if (!EntityMonsterBeacon.IsController()) { return; } if (e_BtnReady != null) { e_BtnReady(); } }
bool CheckMonsterBeaconEnable() { ItemScript_MonsterBeacon monsterBeacon = GetComponent <ItemScript_MonsterBeacon>(); if (null != monsterBeacon && EntityMonsterBeacon.IsRunning()) { PeTipMsg.Register(PELocalization.GetString(82201076), PeTipMsg.EMsgLevel.Warning); return(false); } return(true); }
void CreateMonsterBeacon() { if (_lvl > 0 && assembly != null && assembly.m_Entity != null) { if (m_Beacon != null) { m_Beacon.Delete(); } m_UIData = new TowerInfoUIData(); m_Beacon = EntityMonsterBeacon.CreateMonsterBeaconByTDID(_lvl, transform, m_UIData); m_Beacon.gameObject.AddComponent <MonsterSiege>().SetCreator(assembly.m_Entity.m_Creator as CSMgCreator, m_UIData); } }
IEnumerator WaitForActivate() { while (true) { yield return(null); _mbEntity = Pathea.EntityMgr.Instance.Get(Id) as EntityMonsterBeacon; if (null != _mbEntity) { break; } } OnActivate(); }
protected override void InitCmd(CmdList cmdList) { cmdList.Add("Turn", Turn90Degree); cmdList.Add("Get", OnGetBtn); //if (!GameConfig.IsMultiMode) { if (bedView.peSleep.CanOperateMask(Pathea.Operate.EOperationMask.Sleep)) { cmdList.Add("Sleep", () => { if (EntityMonsterBeacon.IsRunning()) { PeTipMsg.Register(PELocalization.GetString(8000596), PeTipMsg.EMsgLevel.Warning); return; } if (!bedView.peSleep.CanOperateMask(Pathea.Operate.EOperationMask.Sleep)) { return; } Pathea.OperateCmpt operateCmpt = Pathea.MainPlayer.Instance.entity.operateCmpt; if (null != operateCmpt && operateCmpt.HasOperate) { return; } Pathea.MotionMgrCmpt mmc = Pathea.MainPlayer.Instance.entity.GetCmpt <Pathea.MotionMgrCmpt>(); if (null != mmc && (mmc.IsActionRunning(Pathea.PEActionType.Sleep) || !mmc.CanDoAction(Pathea.PEActionType.Sleep))) { return; } //if (GameConfig.IsMultiMode) // GameUI.Instance.mItemOp.SleepImmediately(bedView.peSleep, Pathea.MainPlayer.Instance.entity); //else GameUI.Instance.mItemOp.ShowSleepWnd(true, this, bedView.peSleep, Pathea.MainPlayer.Instance.entity); }); } } }
void SetSiegeID(int id) { if (m_CurSiegeID == 0 && m_MonsterSiege == null) { m_Town.SetMsId(id); m_CurSiegeID = id; m_IsReady = false; m_SpawnFinished = false; m_ElapsedTime = 0.0f; m_UIData = new TowerInfoUIData(); m_MonsterSiege = EntityMonsterBeacon.CreateMonsterBeaconByTDID(m_CurSiegeID, null, m_UIData); m_MonsterSiege.transform.position = m_Town.TransPos; m_MonsterSiege.TargetPosition = m_Town.TransPos; m_MonsterSiege.handlerOneDeath += OnMemberDeath; m_MonsterSiege.handerNewEntity += OnMemberCreated; m_MonsterSiege.handlerNewWave += OnNewWave; } }
public override void OnActivate() { base.OnActivate(); if (_entityBcn != null) { Debug.LogError("[MonsterBeaconItem]:MonsterBeacon has existed."); return; } //Put off aispawn tower defense int entityId = GameConfig.IsMultiMode ? id : -1; _entityBcn = EntityMonsterBeacon.CreateMonsterBeaconByTDID(m_monsterBeaconId, transform, new TowerInfoUIData(), entityId, null, -1, true); if (_entityBcn != null) { _entityBcn.handlerNewWave += OnNewWave; _agent = DragItemAgent.GetById(id); if (_agent != null) { SceneMan.RemoveSceneObj(_agent); // Not been managed by sceneMan } } }
public override void OnGetBtn() { //base.OnGetBtn (); //if (!GameConfig.IsMultiMode) //{ CSEntityObject ceo = GetComponent <CSEntityObject>(); if (ceo == null) { return; } if (EntityMonsterBeacon.IsRunning()) { PeTipMsg.Register(PELocalization.GetString(8000622), PeTipMsg.EMsgLevel.Warning); CloseOn(); return; } if (ceo.m_Entity.BaseData.m_Durability < ceo.m_Entity.m_Info.m_Durability * 0.15f) { MessageBox_N.ShowOkBox(PELocalization.GetString(8000084)); } else { if (ceo as CSDwellingsObject != null) { MessageBox_N.ShowYNBox(PELocalization.GetString(8000085), GetOn, CloseOn); } else { MessageBox_N.ShowYNBox(PELocalization.GetString(8000086), GetOn, CloseOn); } } //} }
void Update() { if (MonsterSiegeBasePause || PeGameMgr.IsMulti || EntityMonsterBeacon.IsRunning() || PeGameMgr.IsBuild) { return; } if (assembly == null || assembly.m_Entity == null || !(assembly.m_Entity is CSAssembly)) { return; } Init(); if (_lvl > 0 && m_Beacon == null) { lvl = 0; } if (m_Timer.Hour - _lastHour >= _nextHour) { CalculateLvl(); } }
public AgentInfo(EntityMonsterBeacon bcn) { _bcn = bcn; _colorType = _bcn.CampColor; }
void Update() { if (PeCreature.Instance.mainPlayer == null || UITowerInfo.Instance == null) { return; } if (m_RecordTown != null) { m_Town = m_RecordTown; SetSiegeID(m_RecordTown.ms_id); m_RecordTown = null; } if (m_MonsterSiege != null && m_SpawnFinished && m_UIData.CurCount == m_UIData.MaxCount) { GameObject.DestroyImmediate(m_MonsterSiege.gameObject); } if (m_CurSiegeID > 0 && m_MonsterSiege == null) { m_CurSiegeID = 0; m_SpawnFinished = false; if (m_Town != null) { m_Town.SetMsId(0); } } if (m_IsReady) { m_ElapsedTime += Time.deltaTime; } if (m_MonsterSiege != null && m_MonsterSiege.SpData._timeToDelete > PETools.PEMath.Epsilon) { float remainTime = Mathf.Max(0.0f, m_MonsterSiege.SpData._timeToDelete - m_ElapsedTime); if (m_UIData != null) { m_UIData.RemainTime = remainTime; } if (remainTime <= PETools.PEMath.Epsilon) { m_MonsterSiege.Delete(); } } if (!EntityMonsterBeacon.IsRunning() && m_CurSiegeID == 0 && m_MonsterSiege == null) { m_Town = VArtifactTown.GetStandTown(PeCreature.Instance.mainPlayer.position); if (m_Town != null) { if (m_Town.lastHour < PETools.PEMath.Epsilon || m_Town.nextHour < PETools.PEMath.Epsilon) { m_Town.RandomSiege(minHour, maxHour); } #if false if (Input.GetKey(KeyCode.L)) { m_Town.lastHour = 0; m_Town.lastCheckTime = 0; probability = 1.1f; } #endif if (GameTime.Timer.Hour - m_Town.lastHour >= m_Town.nextHour) { if (Time.time - m_Town.lastCheckTime >= perCheckTime) { if (Random.value < probability) { SetSiegeID(GetLevel(m_Town)); m_Town.RandomSiege(minHour, maxHour); } m_Town.lastCheckTime = Time.time; } } } } }
public static EntityMonsterBeacon CreateMonsterBeaconBySweepID(List <int> sweepDataId, Transform targetTrans, TowerInfoUIData uiData, int preTime, int entityId = -1, TypeTowerDefendsData data = null, int releaseNpcid = -1) { GameObject go = new GameObject("MonsterBeacon"); Vector3 v = new Vector3(); if (null != data) { switch (data.m_Pos.type) { case TypeTowerDefendsData.PosType.getPos: v = PeCreature.Instance.mainPlayer.position; break; case TypeTowerDefendsData.PosType.pos: v = data.m_Pos.pos; break; case TypeTowerDefendsData.PosType.npcPos: v = EntityMgr.Instance.Get(data.m_Pos.id).position; break; case TypeTowerDefendsData.PosType.doodadPos: v = EntityMgr.Instance.GetDoodadEntities(data.m_Pos.id)[0].position; break; case TypeTowerDefendsData.PosType.conoly: if (!CSMain.GetAssemblyPos(out v)) { v = PeCreature.Instance.mainPlayer.position; } break; case TypeTowerDefendsData.PosType.camp: if (VArtifactUtil.GetTownPos(data.m_Pos.id, out v)) { v = PeCreature.Instance.mainPlayer.position; } break; default: break; } data.finallyPos = v; } go.transform.position = v; AISpawnTDWavesData.TDWaveSpData spData = MonsterSweepData.GetWaveSpData(sweepDataId, v); if (spData == null) { return(null); } EntityMonsterBeacon bcn = go.AddComponent <EntityMonsterBeacon>(); bcn.isSweep = true; EntityMgr.Instance.AddAfterAssignId(bcn, entityId != -1 ? entityId : Pathea.WorldInfoMgr.Instance.FetchNonRecordAutoId()); bcn._uiData = uiData; bcn._spData = spData; bcn._position = v; bcn._forward = Vector3.forward; bcn.PreTime = (float)(preTime + spData._waveDatas[0]._delayTime); if (UITowerInfo.Instance != null && uiData != null) { UITowerInfo.Instance.SetInfo(uiData); UITowerInfo.Instance.Show(); UITowerInfo.Instance.e_BtnReady += () => { bcn.PreTime = 0; }; } bcn.StartCoroutine(bcn.RefreshTowerMission()); return(bcn); }
public static EntityMonsterBeacon CreateMonsterBeaconByTDID(int spDataId, Transform targetTrans, TowerInfoUIData uiData, int entityId = -1, TypeTowerDefendsData data = null, int releaseNpcid = -1, bool bOnlyMonster = false) { // Get type mask int campCol = -1; List <int> spawnTypes = GetSpawnTypeMask(bOnlyMonster, out campCol); AISpawnTDWavesData.TDWaveSpData spData = AISpawnTDWavesData.GetWaveSpData(spDataId, UnityEngine.Random.value, spawnTypes); if (spData == null) { return(null); } GameObject go = new GameObject("MonsterBeacon"); Vector3 v = new Vector3(); if (null != data) { switch (data.m_Pos.type) { case TypeTowerDefendsData.PosType.getPos: v = PeCreature.Instance.mainPlayer.position; break; case TypeTowerDefendsData.PosType.pos: v = data.m_Pos.pos; break; case TypeTowerDefendsData.PosType.npcPos: v = EntityMgr.Instance.Get(data.m_Pos.id).position; break; case TypeTowerDefendsData.PosType.doodadPos: v = EntityMgr.Instance.GetDoodadEntities(data.m_Pos.id)[0].position; break; case TypeTowerDefendsData.PosType.conoly: if (!CSMain.GetAssemblyPos(out v)) { v = PeCreature.Instance.mainPlayer.position; } break; case TypeTowerDefendsData.PosType.camp: if (!VArtifactUtil.GetTownPos(data.m_Pos.id, out v)) { v = PeCreature.Instance.mainPlayer.position; } break; default: break; } data.finallyPos = v; go.transform.position = v; go.transform.rotation = Quaternion.identity; } else if (targetTrans != null) { v = targetTrans.position; go.transform.position = targetTrans.position; go.transform.rotation = targetTrans.rotation; } EntityMonsterBeacon bcn = go.AddComponent <EntityMonsterBeacon>(); EntityMgr.Instance.AddAfterAssignId(bcn, entityId != -1 ? entityId : Pathea.WorldInfoMgr.Instance.FetchNonRecordAutoId()); bcn._campCol = campCol; bcn._uiData = uiData; bcn._spData = spData; bcn._spDataId = spDataId; bcn._position = go.transform.position; bcn._forward = go.transform.forward; bcn.PreTime = (float)(spData._timeToStart + spData._waveDatas[0]._delayTime); if (UITowerInfo.Instance != null && uiData != null) { UITowerInfo.Instance.SetInfo(uiData); UITowerInfo.Instance.Show(); UITowerInfo.Instance.e_BtnReady += () => { bcn.PreTime = 0; }; } bcn.StartCoroutine(bcn.RefreshTowerMission()); return(bcn); }
public bool Start() { //if (playerMission.GetMissionFlagType(MissionId) == null) return false; if (SceneEntityCreator.self.PlayerTrans == null) { return(false); } //if (!MissionManager.Instance.m_bHadInitMission) //{ // Debug.LogError("[MissionManager]Mission not inited."); // return false; //} MissionCommonData data = MissionManager.GetMissionCommonData(MissionId); for (int i = 0; i < data.m_TargetIDList.Count; i++) { if (data.m_TargetIDList[i] == TargetId) { _idxTarId = i; break; } } if (_idxTarId == -1) { return(false); } _towerData = MissionManager.GetTypeTowerDefendsData(TargetId); if (_towerData == null) { return(false); } if (PeGameMgr.IsSingle) { playerMission.m_TowerUIData.MaxCount = _towerData.m_Count; } else { playerMission.m_TowerUIData.MaxCount = 0; } playerMission.m_TowerUIData.MissionID = MissionId; playerMission.m_TowerUIData.CurCount = 0; if (_towerData.m_TdInfoId != 0) { _entityBcn = EntityMonsterBeacon.CreateMonsterBeaconByTDID(_towerData.m_TdInfoId, SceneEntityCreator.self.PlayerTrans, playerMission.m_TowerUIData, _entityBcnId, _towerData, data.m_iNpc); } else if (_towerData.m_SweepId.Count > 0) { _entityBcn = EntityMonsterBeacon.CreateMonsterBeaconBySweepID(_towerData.m_SweepId, SceneEntityCreator.self.PlayerTrans, playerMission.m_TowerUIData, _towerData.m_Time, _entityBcnId, _towerData, data.m_iNpc); } else { return(false); } if (_towerData.m_tolTime != 0) { MissionManager.Instance.SetTowerMissionStartTime(TargetId); } if (_entityBcn == null) { return(false); } _entityBcnId = _entityBcn.Id; _entityBcn.handlerNewWave += OnNewWave; _entityBcn.handlerOneDeath += OnOneDeath; PeEntity npc = null; for (int m = 0; m < _towerData.m_iNpcList.Count; m++) { npc = EntityMgr.Instance.Get(_towerData.m_iNpcList[m]); if (npc == null) { continue; } npc.SetInvincible(false); } //_leftCntToFin = _towerData.m_Count; //Register all waves into playerMission to avoid complete shortly string value = "0_0_0_0_0"; // just for pass checking in IsReplyTarget: x(spType), num, cnt, created, completeTarget playerMission.ModifyQuestVariable(MissionId, PlayerMission.MissionFlagTDMonster + _idxTarId, value); //MissionManager.mTowerKillNum = "0"; //MissionManager.mTowerMonCount = towerData.m_Count.ToString(); return(true); }
public bool Start() { MissionCommonData data = MissionManager.GetMissionCommonData(MissionId); for (int i = 0; i < data.m_TargetIDList.Count; i++) { if (data.m_TargetIDList[i] == TargetId) { _idxTarId = i; break; } } if (_idxTarId == -1) { return(false); } _data = MissionManager.GetTypeMonsterData(TargetId); if (_data == null) { return(false); } Vector3 referToPos; switch (_data.m_mr.refertoType) { case ReferToType.None: referToPos = PeCreature.Instance.mainPlayer.position; break; case ReferToType.Player: referToPos = PeCreature.Instance.mainPlayer.position; break; case ReferToType.Town: VArtifactUtil.GetTownPos(_data.m_mr.referToID, out referToPos); break; case ReferToType.Npc: referToPos = EntityMgr.Instance.Get(MissionManager.Instance.m_PlayerMission.adId_entityId[_data.m_mr.referToID]).position; break; default: referToPos = PeCreature.Instance.mainPlayer.position; break; } if (referToPos == Vector3.zero) { return(false); } if (PeGameMgr.IsSingle || PeGameMgr.IsTutorial) { if (_data.type == 2) { DoodadEntityCreator.commonDeathEvent += OnMonsterDeath; } else { MonsterEntityCreator.commonDeathEvent += OnMonsterDeath; } } GenMonsterInMission = !PeGameMgr.IsStory; if (GenMonsterInMission) { #if DbgNearGen Vector2 v2 = Vector2.zero; #else Vector2 v2 = UnityEngine.Random.insideUnitCircle.normalized * _data.m_mr.radius1; #endif Vector3 center = referToPos + new Vector3(v2.x, 0.0f, v2.y); //for (int i = 0; i < _data.m_MonsterList.Count; i++) { // int num = _data.m_MonsterList[i].type; // int protoId = _data.m_MonsterList[i].npcs[UnityEngine.Random.Range(0, _data.m_MonsterList[i].npcs.Count)]; // for (int j = 0; j < num; j++) { // Vector3 pos = AiUtil.GetRandomPosition (center, 0, _data.m_mr.radius2); // pos.y = SceneEntityPosAgent.PosYTBD; // let posagent to set y // SceneEntityPosAgent agent = MonsterEntityCreator.CreateAgent(pos, protoId); // agent.spInfo = new MonsterEntityCreator.AgentInfo(EntityMonsterBeacon.GetSpBeacon4MonsterKillTask()); // _agents.Add (agent); // SceneMan.AddSceneObj (agent); // } //} for (int i = 0; i < _data.m_CreMonList.Count; i++) { for (int j = 0; j < _data.m_CreMonList[i].monNum; j++) { Vector3 pos = AiUtil.GetRandomPosition(center, 0, _data.m_mr.radius2); pos.y = SceneEntityPosAgent.PosYTBD; // let posagent to set y int protoId = _data.m_CreMonList[i].monID; if (_data.m_CreMonList[i].type == 1) { protoId |= EntityProto.IdGrpMask; } SceneEntityPosAgent agent = MonsterEntityCreator.CreateAgent(pos, protoId); agent.spInfo = new MonsterEntityCreator.AgentInfo(EntityMonsterBeacon.GetSpBeacon4MonsterKillTask()); agent.canRide = false; _agents.Add(agent); SceneMan.AddSceneObj(agent); } } } return(true); }
public AgentInfo(EntityMonsterBeacon bcn, SiegeAgent agent) : base(bcn) { _agent = agent; }
static int GetMonsterProtoIDForBeacon(int bcnProtoId, Vector3 pos, ref float fScale) { if (!EntityMonsterBeacon.IsBcnMonsterProtoId(bcnProtoId)) // not encoded { return(bcnProtoId); } int spType, lvl, spawnType; EntityMonsterBeacon.DecodeBcnMonsterProtoId(bcnProtoId, out spType, out lvl, out spawnType); int terType = 0; int areaType = -1; AISpawnTDWavesData.TDMonsterData md = null; if (spType < EntityMonsterBeacon.TowerDefenseSpType_Beg) { PointType pt = AiUtil.GetPointType(pos); switch (pt) { default: case PointType.PT_Ground: terType = 0; break; case PointType.PT_Water: terType = 1; break; case PointType.PT_Slope: terType = 2; break; case PointType.PT_Cave: terType = 3; break; } areaType = PeGameMgr.IsStory ? PeMappingMgr.Instance.GetAiSpawnMapId(new Vector2(pos.x, pos.z)) : AiUtil.GetMapID(pos); if (PeGameMgr.IsAdventure && areaType == 5) { areaType = 2; } } int opPlayerId = -1; if (MainPlayerCmpt.gMainPlayer != null) { SkAliveEntity skPlayer = MainPlayerCmpt.gMainPlayer.Entity.aliveEntity; if (skPlayer != null) { opPlayerId = (int)skPlayer.GetAttribute(AttribType.DefaultPlayerID); } } md = AISpawnTDWavesData.GetMonsterProtoId(!PeGameMgr.IsStory, spType, lvl, spawnType, areaType, terType, opPlayerId); if (null != md) { // md.ProtoId |= EntityProto.IdAirbornePujaMask; // test airborne if (md.IsAirbornePuja) { md.ProtoId |= EntityProto.IdAirbornePujaMask; } if (md.IsAirbornePaja) { md.ProtoId |= EntityProto.IdAirbornePajaMask; } if (md.IsGrp) { md.ProtoId |= EntityProto.IdGrpMask; } return(md.ProtoId); } return(-1); }
void Update() { actionTime -= Time.deltaTime; timeCount += GameTime.DeltaTime; if (timeCount >= maxSleepTime || (isMainPlayer && actionTime < 0 && (PeInput.Get(PeInput.LogicFunction.InteractWithItem) || EntityMonsterBeacon.IsRunning()))) { if (peSleep != null) { peSleep.StopOperate(character, EOperationMask.Sleep); // peSleep.UnDo(character); } enabled = false; } }