Esempio n. 1
0
        /// <summary>
        /// Called from <c>MedicalTool.UseOther(BaseEntity.RPCMessage)</c> .
        /// </summary>
        public static void On_PlayerSyringeOther(MedicalTool medicalTool, BaseEntity.RPCMessage msg)
        {
            BasePlayer messagePlayer = msg.player;

            if (messagePlayer.CanInteract() == false)
                return;

            if ((bool)medicalTool.CallMethod("HasItemAmount") == false || medicalTool.canUseOnOther == false)
                return;

            BasePlayer owner = medicalTool.GetOwnerPlayer();

            if (owner == null)
                return;

            BasePlayer target = BaseNetworkable.serverEntities.Find(msg.read.UInt32()) as BasePlayer;

            if (target != null && Vector3.Distance(target.transform.position, owner.transform.position) < 4f) {
                var preSyringeUseEvent = new Pre<SyringeUseEvent>(medicalTool, owner, target);
                
                OnNext("Pre_PlayerSyringeOther", preSyringeUseEvent);

                if (preSyringeUseEvent.IsCanceled == false) {
                    medicalTool.ClientRPCPlayer(null, messagePlayer, "Reset");
                    medicalTool.CallMethod("GiveEffectsTo", target);
                    medicalTool.CallMethod("UseItemAmount", 1);

                    OnNext("On_PlayerSyringeOther", preSyringeUseEvent.Event);
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Called from <c>MedicalTool.UseSelf(BaseEntity.RPCMessage)</c> .
        /// </summary>
        public static void On_PlayerSyringeSelf(MedicalTool medicalTool, BaseEntity.RPCMessage msg)
        {
            BasePlayer messagePlayer = msg.player;

            if (messagePlayer.CanInteract() == false)
                return;

            if ((bool)medicalTool.CallMethod("HasItemAmount") == false)
                return;

            BasePlayer owner = medicalTool.GetOwnerPlayer();

            var preSyringeUseEvent = new Pre<SyringeUseEvent>(medicalTool, owner, owner);

            OnNext("Pre_PlayerSyringeSelf", preSyringeUseEvent);

            if (preSyringeUseEvent.IsCanceled == false) {
                medicalTool.ClientRPCPlayer(null, messagePlayer, "Reset");
                medicalTool.CallMethod("GiveEffectsTo", owner);
                medicalTool.CallMethod("UseItemAmount", 1);

                OnNext("On_PlayerSyringeSelf", preSyringeUseEvent.Event);
            }
        }