예제 #1
0
        public void DropUnconscious(long duration = -1, bool toFront = true)
        {
            var          cat = AniCatalog.Unconscious;
            ScriptAniJob job = toFront ? cat.DropFront : cat.DropBack;

            if (job != null)
            {
                this.ModelInst.StartAniJob(job);
            }

            uncon = toFront ? Unconsciousness.Front : Unconsciousness.Back;

            var strm = this.BaseInst.GetScriptVobStream();

            strm.Write((byte)ScriptVobMessageIDs.Uncon);
            strm.Write((byte)uncon);
            this.BaseInst.SendScriptVobStream(strm);

            if (duration >= 0)
            {
                if (unconTimer == null)
                {
                    unconTimer = new GUCTimer(LiftUnconsciousness);
                }

                unconTimer.SetInterval(duration);
                unconTimer.Start();
            }

            OnUnconChange?.Invoke(this);
        }
예제 #2
0
        void DoLiftUncon()
        {
            uncon = Unconsciousness.None;
            var strm = this.BaseInst.GetScriptVobStream();

            strm.Write((byte)ScriptVobMessageIDs.Uncon);
            strm.Write((byte)uncon);
            this.BaseInst.SendScriptVobStream(strm);

            int hp = this.HP + 25;

            this.SetHealth(hp > HPMax ? HPMax : hp);
            OnUnconChange?.Invoke(this);
        }