Vai em data/actions/scripts e crie um arquivo chamado alavanca_hp.lua (ou algum nome que preferir) e adicione o seguinte código dentro:
function onUse(cid, item, frompos, item2, topos)
local hp_antigo = getCreatureHealth(cid) + 200 -- Pega a vida atual do player antes de clicar na alavanca
local hp_alavanca = math.floor(200 - getCreatureHealth(cid)) -- HP que o jogador terá ao clicar na alavanca
if item.itemid == 1945 or item.itemid == 1946 then -- Aqui o ID da alavanca que clica para ficar com 200 de vida
if getCreatureHealth(cid) > 200 or getCreatureMaxHealth(cid) > 200 then -- Verifica se tem mais de 200 de vida ou se a vida máxima é maior que 200
if getPlayerStorageValue(cid, 45000) == -1 then -- Verifica se o player não tem a storage ao clicar na alavanca
doCreatureAddHealth(cid, hp_alavanca) -- Deixa o HP do player com 200 de vida
doSendMagicEffect(getThingPos(cid), 27) -- Efeito ao clicar na alavanca
setPlayerStorageValue(cid, 45000, 1) -- Adiciona a Storage
return true
else
doPlayerSendTextMessage(cid, 27, "Você não pode usar a alavanca com" ..hp_alavanca.. " ou menos de vida!")
return true
end
else
doPlayerSendTextMessage(cid, 27, "Você não pode clicar na alavanca porque tem 200 ou menos de vida.")
return true
end
return true
end
if item.itemid == 12176 then -- Aqui é o ID da 2º alavanca, que reseta o HP do player como estava antes
if getPlayerStorageValue(cid, 45000) == 1 then -- Verifica se tem storage
doCreatureAddHealth(cid, hp_antigo) -- adiciona o novo HP ao player
doSendMagicEffect(getThingPos(cid), 29) -- efeito
doPlayerSendTextMessage(cid, 27, "Seu HP foi restaurado para "..hp_antigo.. " de vida.")
setPlayerStorageValue(cid, 45000, -1) -- Remove a storage para voltar a clicar novamente
return true
end
end
end
Agora vai em data/actions/actions.xml e adicione a tag:
<action itemid="1945;12176" script="alavanca_hp.lua" /> <!-- Lembrando que tem que colocar os id das 2 alavancas, só substituir ali pelos seus id -->
E vai em data/npc/scripts/heal.lua (ou o arquivo.lua que cura os pokémons ao falar com a Nurse) e adicione o seguinte código dentro da função onCreatureDisappear(cid, pos)
if getPlayerStorageValue(cid, 45000) then
setPlayerStorageValue(cid, 45000, -1)
return true
end
Lembrando que esse código é para o caso do player clicar na alavanca que tira vida, mas não clicar na que recupera, então ao falar com a Nurse, ele perde a storage para conseguir clicar na alavanca novamente.
Eu não consegui testar muito, pois estou com pouco tempo, mas testei e está ficando sempre com 200 de vida ao clicar na alavanca, mas não testei direito se ele recupera a quantidade de vida exata que estava antes de clicar na alavanca que tira vida. Teste e me diga se é isso que quer.