public static CSMedicalTent FindTentMachine(PeEntity npc) { CSMgCreator creator = null; if (PeGameMgr.IsMulti) { NetworkInterface npcnet = AiAdNpcNetwork.Get(npc.Id); if (npcnet == null) { return(null); } creator = MultiColonyManager.GetCreator(npcnet.TeamId); } else { creator = s_MgCreator; } if (creator.Assembly == null) { return(null); } if (creator.Assembly.MedicalTent != null && creator.Assembly.MedicalTent.IsRunning) { return(creator.Assembly.MedicalTent); } else { return(null); } }
void AccessMission(int nMissionID, int nNpcID, bool bCheck = true, byte[] adrmData = null) { PeEntity npc = EntityMgr.Instance.Get(nNpcID); if (IsOwner) { MissionManager.Instance.ProcessSingleMode(nMissionID, npc, MissionManager.TakeMissionType.TakeMissionType_Get, bCheck); } else { if (PeGameMgr.IsMultiStory) { RMRepository.Import(adrmData); } else { AdRMRepository.Import(adrmData); } AiAdNpcNetwork adNpc = AiAdNpcNetwork.Get <AiAdNpcNetwork>(nNpcID); MissionManager.Instance.ProcessSingleMode(nMissionID, npc, MissionManager.TakeMissionType.TakeMissionType_Get, bCheck, adNpc); } if (null != npc) { npc.SetAttribute(AttribType.DefaultPlayerID, Id, false); } }
public static void StopTraining(PeEntity npc) { CSMgCreator creator = null; if (PeGameMgr.IsMulti) { NetworkInterface npcnet = AiAdNpcNetwork.Get(npc.Id); if (npcnet == null) { return; } creator = MultiColonyManager.GetCreator(npcnet.TeamId); } else { creator = s_MgCreator; } if (creator == null) { return; } //find npc if (creator.Assembly == null) { return; } }
public static CSMedicalTent FindMedicalTent(out bool isReady, PeEntity npc, out Sickbed sickBed) { isReady = false; sickBed = null; if (PeGameMgr.IsMulti) { NetworkInterface npcnet = AiAdNpcNetwork.Get(npc.Id); if (npcnet == null) { return(null); } CSMgCreator creator = MultiColonyManager.GetCreator(npcnet.TeamId); if (creator.Assembly == null) { return(null); } if (creator.Assembly.MedicalTent == null) { return(null); } CSMedicalTent tent = creator.Assembly.MedicalTent; if (!tent.IsRunning) { return(null); } sickBed = tent.CheckNpcBed(npc); if (sickBed == null) { tent._ColonyObj._Network.RPCServer(EPacketType.PT_CL_TET_FindMachine, npc.Id); } else { isReady = true; } return(tent); } else { if (s_MgCreator.Assembly == null) { return(null); } if (s_MgCreator.Assembly.MedicalTent == null) { return(null); } CSMedicalTent tent = s_MgCreator.Assembly.MedicalTent; if (!tent.IsRunning) { return(null); } isReady = tent.IsReady(npc, out sickBed); tent.AppointTent(npc); return(tent); } }
public void RequestNpcPackageSort(int npcId, int tabIndex) { AiAdNpcNetwork npc = AiAdNpcNetwork.Get <AiAdNpcNetwork>(npcId); if (null == npc) { return; } RPCServer(EPacketType.PT_NPC_SortPackage, npcId, tabIndex); }
public void RequestNpcPutOnEquip(int npcId, int objId, ItemPlaceType place) { AiAdNpcNetwork npc = AiAdNpcNetwork.Get <AiAdNpcNetwork>(npcId); if (null == npc) { return; } RPCServer(EPacketType.PT_NPC_PutOnEquip, npcId, objId, place); }
public void RequestNpcTakeOffEquip(int npcId, int objId, int destIndex) { AiAdNpcNetwork npc = AiAdNpcNetwork.Get <AiAdNpcNetwork>(npcId); if (null == npc) { return; } RPCServer(EPacketType.PT_NPC_TakeOffEquip, npcId, objId, destIndex); }
public void RequestGiveItem2Npc(int tabIndex, int npcId, int objId, ItemPlaceType place) { AiAdNpcNetwork npc = AiAdNpcNetwork.Get <AiAdNpcNetwork>(npcId); if (null == npc) { return; } RPCServer(EPacketType.PT_NPC_GetItem, tabIndex, npcId, objId, place); }
public void RequestGetAllItemFromNpc(int npcId, int tabIndex) { AiAdNpcNetwork npc = AiAdNpcNetwork.Get <AiAdNpcNetwork>(npcId); if (null == npc) { return; } RPCServer(EPacketType.PT_NPC_DeleteAllItem, npcId, tabIndex); }
public void RequestUseItem(int objId) { if (network is PlayerNetwork) { PlayerNetwork player = (PlayerNetwork)network; player.RequestUseItem(objId); } else if (network is AiAdNpcNetwork) { AiAdNpcNetwork npc = (AiAdNpcNetwork)network; npc.RequestNpcUseItem(objId); } }
IEnumerator ServantRevive(PeEntity entity, float delayTime) { yield return(new WaitForSeconds(delayTime)); if (!PeGameMgr.IsMulti) { if (entity != null && entity.UseItem != null) { if (entity.UseItem.ReviveServent(false)) { if (entity.motionMgr != null) { while (true) { if (null == entity || null == entity.motionMgr) { yield break; } PEActionParamB param = PEActionParamB.param; param.b = false; if (null == entity || entity.motionMgr.DoAction(PEActionType.Revive, param)) { break; } else { yield return(new WaitForSeconds(1)); } } } } } } else { if (null != entity && null != entity.netCmpt) { AiAdNpcNetwork npc = (AiAdNpcNetwork)entity.netCmpt.network; if (null != npc && npc.LordPlayerId == PlayerNetwork.mainPlayerId) { Vector3 pos = entity.position; if (null != entity.NpcCmpt && !entity.NpcCmpt.CanRecive) { pos = PlayerNetwork.mainPlayer.PlayerPos + Vector3.one; } PlayerNetwork.RequestServantAutoRevive(entity.Id, pos); } } } }
public static CSMedicalCheck FindMedicalCheck(out bool isReady, PeEntity npc) { isReady = false; if (PeGameMgr.IsMulti) { NetworkInterface npcnet = AiAdNpcNetwork.Get(npc.Id); if (npcnet == null) { return(null); } CSMgCreator creator = MultiColonyManager.GetCreator(npcnet.TeamId); if (creator.Assembly == null) { return(null); } if (creator.Assembly.MedicalCheck == null) { return(null); } CSMedicalCheck check = creator.Assembly.MedicalCheck; if (!check.IsRunning) { return(null); } isReady = check.IsReady(npc); if (npc.GetCmpt <NpcCmpt>().illAbnormals != null && npc.GetCmpt <NpcCmpt>().illAbnormals.Count > 0) { check._ColonyObj._Network.RPCServer(EPacketType.PT_CL_CHK_FindMachine, npc.Id); } return(check); } else { if (s_MgCreator.Assembly == null) { return(null); } if (s_MgCreator.Assembly.MedicalCheck == null) { return(null); } CSMedicalCheck detector = s_MgCreator.Assembly.MedicalCheck; if (!detector.IsRunning) { return(null); } isReady = detector.IsReady(npc); detector.AppointCheck(npc); return(detector); } }
public static CSMedicalTreat FindMedicalTreat(out bool isReady, PeEntity npc) { isReady = false; if (PeGameMgr.IsMulti) { NetworkInterface npcnet = AiAdNpcNetwork.Get(npc.Id); if (npcnet == null) { return(null); } CSMgCreator creator = MultiColonyManager.GetCreator(npcnet.TeamId); if (creator.Assembly == null) { return(null); } if (creator.Assembly.MedicalTreat == null) { return(null); } CSMedicalTreat treat = creator.Assembly.MedicalTreat; if (!treat.IsRunning) { return(null); } isReady = treat.IsReady(npc); treat._ColonyObj._Network.RPCServer(EPacketType.PT_CL_TRT_FindMachine, npc.Id); return(treat); } else { if (s_MgCreator.Assembly == null) { return(null); } if (s_MgCreator.Assembly.MedicalTreat == null) { return(null); } CSMedicalTreat lab = s_MgCreator.Assembly.MedicalTreat; if (!lab.IsRunning) { return(null); } isReady = lab.IsReady(npc); lab.AppointTreat(npc); return(lab); } //--to do: inform player need treat //return null; }
public static void KickOutFromHospital(PeEntity npc) { CSMgCreator creator = null; if (PeGameMgr.IsMulti) { if (PeGameMgr.IsCustom) { return; } NetworkInterface npcnet = AiAdNpcNetwork.Get(npc.Id); if (npcnet == null) { return; } creator = MultiColonyManager.GetCreator(npcnet.TeamId); } else { creator = s_MgCreator; } if (creator == null) { return; } //find npc if (creator.Assembly == null) { return; } if (creator.Assembly.MedicalCheck != null && creator.Assembly.MedicalCheck.IsRunning) { creator.Assembly.MedicalCheck.RemoveDeadPatient(npc.Id); } if (creator.Assembly.MedicalTreat != null && creator.Assembly.MedicalTreat.IsRunning) { creator.Assembly.MedicalTreat.RemoveDeadPatient(npc.Id); } if (creator.Assembly.MedicalTent != null && creator.Assembly.MedicalTent.IsRunning) { creator.Assembly.MedicalTent.RemoveDeadPatient(npc.Id); } creator.m_TreatmentList.RemoveAll(it => it.npcId == npc.Id); }
public static bool TryGetCheck(PeEntity npc) { if (PeGameMgr.IsMulti) { NetworkInterface npcnet = AiAdNpcNetwork.Get(npc.Id); if (npcnet == null) { return(false); } CSMgCreator creator = MultiColonyManager.GetCreator(npcnet.TeamId); if (creator.Assembly == null) { return(false); } if (creator.Assembly.MedicalCheck == null) { return(false); } CSMedicalCheck detector = creator.Assembly.MedicalCheck; if (!detector.IsRunning) { return(false); } detector._ColonyObj._Network.RPCServer(EPacketType.PT_CL_CHK_TryStart, npc.Id); } else { if (s_MgCreator.Assembly == null) { return(false); } if (s_MgCreator.Assembly.MedicalCheck == null) { return(false); } CSMedicalCheck detector = s_MgCreator.Assembly.MedicalCheck; if (!detector.IsRunning) { return(false); } //--to do : check npc detector return(detector.StartCheck(npc)); } return(false); }
public static bool TryGetTent(PeEntity npc) { if (PeGameMgr.IsMulti) { NetworkInterface npcnet = AiAdNpcNetwork.Get(npc.Id); if (npcnet == null) { return(false); } CSMgCreator creator = MultiColonyManager.GetCreator(npcnet.TeamId); if (creator.Assembly == null) { return(false); } if (creator.Assembly.MedicalTent == null) { return(false); } CSMedicalTent tent = creator.Assembly.MedicalTent; if (!tent.IsRunning) { return(false); } tent._ColonyObj._Network.RPCServer(EPacketType.PT_CL_TET_TryStart, npc.Id); } else { if (s_MgCreator.Assembly == null) { return(false); } if (s_MgCreator.Assembly.MedicalTent == null) { return(false); } CSMedicalTent tent = s_MgCreator.Assembly.MedicalTent; if (!tent.IsRunning) { return(false); } return(tent.StartTent(npc)); } return(false); }
public static CSPersonnel GetColonyNpc(int id) { CSMgCreator creator = null; if (PeGameMgr.IsMulti) { NetworkInterface npcnet = AiAdNpcNetwork.Get(id); if (npcnet == null) { return(null); } creator = MultiColonyManager.GetCreator(npcnet.TeamId); } else { creator = s_MgCreator; } return(creator.GetNpc(id)); }
bool StroyNpcInitCheck() { //if (!PeGameMgr.IsMultiStory) // return true; List <AiAdNpcNetwork> npcList = AiAdNpcNetwork.Get <AiAdNpcNetwork>(); if (npcList == null || npcList.Count == 0) { return(false); } foreach (var iter in npcList) { if (iter == null || iter.npcCmpt == null || !iter._npcMissionInited) { return(false); } } return(true); }
public static void RemoveNpc(PeEntity npc) { CSMgCreator creator = null; if (PeGameMgr.IsMulti) { NetworkInterface npcnet = AiAdNpcNetwork.Get(npc.Id); if (npcnet == null) { return; } creator = MultiColonyManager.GetCreator(npcnet.TeamId); } else { creator = s_MgCreator; } if (creator != null) { creator.RemoveNpc(npc); } }