public static bool GetHoverText(PrivateArea __instance, ref string __result) { // if using the original interaction behavior then just return true and run the original code if (Settings.WardInteractBehavior.Value == Plugin.WardInteractBehavior.Original) { return(true); } Plugin.LogDebug("Executing Patched GetHoverText"); if (!__instance.m_nview.IsValid()) { __result = ""; return(false); } if (Player.m_localPlayer == null) { __result = ""; return(false); } __instance.ShowAreaMarker(); StringBuilder stringBuilder = new StringBuilder(256); // Player or owner hovering over so display activate/dectivate options if (__instance.m_piece.IsCreator() || (Settings.WardInteractBehavior.Value == Plugin.WardInteractBehavior.OwnerAndPermitted && __instance.IsPermitted(Player.m_localPlayer.GetPlayerID())) || Settings.WardInteractBehavior.Value == Plugin.WardInteractBehavior.All) { if (__instance.IsEnabled()) { stringBuilder.Append(__instance.m_name + " ( $piece_guardstone_active )"); stringBuilder.Append("\n$piece_guardstone_owner:" + __instance.GetCreatorName()); stringBuilder.Append("\n[<color=yellow><b>$KEY_Use</b></color>] $piece_guardstone_deactivate"); } else { stringBuilder.Append(__instance.m_name + " ($piece_guardstone_inactive )"); stringBuilder.Append("\n$piece_guardstone_owner:" + __instance.GetCreatorName()); stringBuilder.Append("\n[<color=yellow><b>$KEY_Use</b></color>] $piece_guardstone_activate"); if (Settings.WardInteractBehavior.Value != Plugin.WardInteractBehavior.OwnerOnly) { if (__instance.IsPermitted(Player.m_localPlayer.GetPlayerID()) && !__instance.m_piece.IsCreator()) { stringBuilder.Append("\n[<color=yellow><b>" + Settings.InteractModifier.Value.ToString() + " - $KEY_Use</b></color>] $piece_guardstone_remove"); } else if (!__instance.m_piece.IsCreator()) { stringBuilder.Append("\n[<color=yellow><b>" + Settings.InteractModifier.Value.ToString() + " - $KEY_Use</b></color>] $piece_guardstone_add"); } } } } else if (__instance.IsEnabled()) { // Player is not permitted and is not the owner and ward is active... do nothing stringBuilder.Append(__instance.m_name + " ( $piece_guardstone_active )"); stringBuilder.Append("\n$piece_guardstone_owner:" + __instance.GetCreatorName()); if (Settings.WardInteractBehavior.Value != Plugin.WardInteractBehavior.OwnerOnly) { stringBuilder.Append("\n[<color=yellow><b>" + Settings.InteractModifier.Value.ToString() + " - $KEY_Use</b></color>] $piece_guardstone_remove"); } } else { // player is not permitted and is not the owner, but ward is inactive.... show modifier stringBuilder.Append(__instance.m_name + " ( $piece_guardstone_inactive )"); stringBuilder.Append("\n$piece_guardstone_owner:" + __instance.GetCreatorName()); if (Settings.WardInteractBehavior.Value != Plugin.WardInteractBehavior.OwnerOnly) { stringBuilder.Append("\n[<color=yellow><b>" + Settings.InteractModifier.Value.ToString() + " - $KEY_Use</b></color>] $piece_guardstone_add"); } } __instance.AddUserList(stringBuilder); __result = Localization.instance.Localize(stringBuilder.ToString()); Plugin.LogDebug($"Result {__result}"); return(false); }