Esempio n. 1
0
    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);
        }
    }
Esempio n. 3
0
    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;
        }
    }
Esempio n. 4
0
 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);
     }
 }
Esempio n. 5
0
    public void RequestNpcPackageSort(int npcId, int tabIndex)
    {
        AiAdNpcNetwork npc = AiAdNpcNetwork.Get <AiAdNpcNetwork>(npcId);

        if (null == npc)
        {
            return;
        }

        RPCServer(EPacketType.PT_NPC_SortPackage, npcId, tabIndex);
    }
Esempio n. 6
0
    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);
    }
Esempio n. 7
0
    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);
    }
Esempio n. 8
0
    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);
    }
Esempio n. 9
0
    public void RequestGetAllItemFromNpc(int npcId, int tabIndex)
    {
        AiAdNpcNetwork npc = AiAdNpcNetwork.Get <AiAdNpcNetwork>(npcId);

        if (null == npc)
        {
            return;
        }

        RPCServer(EPacketType.PT_NPC_DeleteAllItem, npcId, tabIndex);
    }
Esempio n. 10
0
 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);
     }
 }
Esempio n. 11
0
    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);
                }
            }
        }
    }
Esempio n. 12
0
 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);
     }
 }
Esempio n. 13
0
 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;
 }
Esempio n. 14
0
    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);
    }
Esempio n. 15
0
 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);
 }
Esempio n. 16
0
 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);
 }
Esempio n. 17
0
    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);
    }
Esempio n. 19
0
    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);
        }
    }