void OnHealingItemUse(MedicalTool tool, BasePlayer player) { if (tool.ShortPrefabName == "syringe_medical.entity") { var healingPlayer = tool.GetOwnerPlayer(); if (healingPlayer != null) { if (permission.UserHasPermission(healingPlayer.UserIDString, "medicrevive.use")) { player.StopWounded(); } } } }
/// <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); } } }
private object IOnPlayerRevive(MedicalTool tool, BasePlayer target) => Interface.Call("OnPlayerRevive", tool.GetOwnerPlayer(), target);
/// <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); } }