diff --git a/esoui/ingame/help/keyboard/helpcharacterstuck_keyboard.lua b/esoui/ingame/help/keyboard/helpcharacterstuck_keyboard.lua
new file mode 100644
index 0000000..238a70e
--- /dev/null
+++ b/esoui/ingame/help/keyboard/helpcharacterstuck_keyboard.lua
@@ -0,0 +1,53 @@
+local HelpCharacterStuck_Keyboard = ZO_HelpScreenTemplate_Keyboard:Subclass()
+
+function HelpCharacterStuck_Keyboard:New(...)
+    return ZO_HelpScreenTemplate_Keyboard.New(self, ...)
+end
+
+function HelpCharacterStuck_Keyboard:Initialize(control)
+	HELP_CUSTOMER_SERVICE_CHARACTER_STUCK_KEYBOARD_FRAGMENT = ZO_FadeSceneFragment:New(control)
+    HELP_CUSTOMER_SERVICE_CHARACTER_STUCK_KEYBOARD_FRAGMENT:RegisterCallback("StateChange", function(oldState, newState)
+																if newState == SCENE_SHOWING then
+																	self:UpdateCost()
+																end
+                                                            end)
+	local iconData =
+	{
+		name = GetString(SI_CUSTOMER_SERVICE_CHARACTER_STUCK),
+		categoryFragment = HELP_CUSTOMER_SERVICE_CHARACTER_STUCK_KEYBOARD_FRAGMENT,
+        up = "EsoUI/Art/Help/help_tabIcon_stuck_up.dds",
+        down = "EsoUI/Art/Help/help_tabIcon_stuck_down.dds",
+        over = "EsoUI/Art/Help/help_tabIcon_stuck_over.dds",
+	}
+	ZO_HelpScreenTemplate_Keyboard.Initialize(self, control, iconData)
+
+	self.helpStuckCost = self.control:GetNamedChild("Cost")
+end
+
+function HelpCharacterStuck_Keyboard:UpdateCost()
+	local cost = GetRecallCost()
+    local telvarLossPercentage = zo_floor(GetTelvarStonePercentLossOnNonPvpDeath() * 100)
+    local mainText = DoesCurrentZoneHaveTelvarStoneBehavior() and SI_CUSTOMER_SERVICE_UNSTUCK_COST_PROMPT_TELVAR or SI_CUSTOMER_SERVICE_UNSTUCK_COST_PROMPT
+    local playerMoney = GetCarriedCurrencyAmount(CURT_MONEY)
+                
+    if cost > playerMoney then
+        cost = playerMoney
+    end
+
+	local DONT_USE_SHORT_FORMAT = false
+	local costText = ZO_CurrencyControl_FormatCurrencyAndAppendIcon(cost, DONT_USE_SHORT_FORMAT, CURT_MONEY)
+
+    local text = zo_strformat(mainText, costText, telvarLossPercentage)
+
+	self.helpStuckCost:SetText(text)
+end
+
+--Global XML
+
+function ZO_HelpCharacterStuck_Keyboard_OnInitialized(self)
+    HELP_CUSTOMER_SERVICE_CHARACTER_STUCK_KEYBOARD = HelpCharacterStuck_Keyboard:New(self)
+end
+
+function ZO_HelpCharacterStuck_Keyboard_UnstuckPlayer(self)
+	SendPlayerStuck()
+end
\ No newline at end of file