Exemple #1
0
        private IEnumerator ServerProcessCloning(CloningRecord record)
        {
            yield return(WaitFor.Seconds(10f));

            statusString = "Cloning process complete.";
            if (console)
            {
                console.UpdateDisplay();
            }
            if (record.mind.IsOnline())
            {
                var playerBody = PlayerSpawn.ServerClonePlayer(record.mind, transform.position.CutToInt()).GetComponent <LivingHealthMasterBase>();

                void ApplyDamage()
                {
                    ApplyCloningDamage(playerBody);
                }

                playerBody.OnFullyInitialised(ApplyDamage);
                //GameObject
                //Do cloning damage
                //Initialisation order
            }
            statusSync = CloningPodStatus.Empty;
        }
Exemple #2
0
 public void SyncSprite(CloningPodStatus value)
 {
     statusSync = value;
     if (value == CloningPodStatus.Empty)
     {
         spriteRenderer.sprite = emptySprite;
     }
     else
     {
         spriteRenderer.sprite = cloningSprite;
     }
 }
Exemple #3
0
    private IEnumerator ServerProcessCloning(CloningRecord record)
    {
        yield return(WaitFor.Seconds(10f));

        statusString = "Cloning process complete.";
        if (console)
        {
            console.consoleGUI.UpdateDisplay();
        }
        if (record.mind.IsOnline(record.mind.GetCurrentMob()))
        {
            PlayerSpawn.ServerClonePlayer(record.mind, transform.position.CutToInt());
        }
        statusSync = CloningPodStatus.Empty;
    }
Exemple #4
0
    private IEnumerator ProcessCloning(CloningRecord record)
    {
        yield return(WaitFor.Seconds(10f));

        statusString = "Cloning process complete.";
        if (console)
        {
            console.consoleGUI.UpdateDisplay();
        }
        if (record.mind.IsOnline(record.mind.GetCurrentMob()))
        {
            record.mind.ClonePlayer(gameObject, record.characterSettings);
        }
        statusSync = CloningPodStatus.Empty;
    }
Exemple #5
0
        private IEnumerator ServerProcessCloning(CloningRecord record)
        {
            yield return(WaitFor.Seconds(10f));

            statusString = "Cloning process complete.";
            if (console)
            {
                console.UpdateDisplay();
            }
            if (record.mind.IsOnline())
            {
                var playerBody = PlayerSpawn.ServerClonePlayer(record.mind, transform.position.CutToInt()).GetComponent <LivingHealthMasterBase>();
                playerBody.ApplyDamageAll(this.gameObject, LimbCloningDamage, AttackType.Internal, DamageType.Clone, false);
            }
            statusSync = CloningPodStatus.Empty;
        }
        private string StatusToMachineStateId(CloningPodStatus status)
        {
            //TODO: implement NoMind for if the mind is not yet in the body
            //TODO: Find a use for GORE POD
            switch (status)
            {
            case Cloning: return("pod_1");

            case NoMind: return("pod_e");

            case Gore: return("pod_g");

            case Idle: return("pod_0");

            default:
                throw new ArgumentOutOfRangeException(nameof(status), status, "unknown CloningPodStatus");
            }
        }
 public void UpdateStatus(CloningPodStatus status)
 {
     Status = status;
     UpdateAppearance();
     EntitySystem.Get <CloningSystem>().UpdateUserInterface(this);
 }
Exemple #8
0
 public void ServerStartCloning(CloningRecord record)
 {
     statusSync   = CloningPodStatus.Cloning;
     statusString = "Cloning cycle in progress.";
     StartCoroutine(ServerProcessCloning(record));
 }