Ir para conteúdo

[TFS 1.1] Healer/blessings NPC


Furabio

Posts Recomendados

xml:

<?xml version="1.0" encoding="UTF-8"?>
	<npc name="NPCNAME" script="bless_heal.lua" walkinterval="2000" floorchange="0" speechbubble="1">
	<health now="100" max="100"/>
	<look type="138" head="58" body="114" legs="87" addons="3"/>
	<parameters>
		<parameter key="module_keywords" value="1" />
		<parameter key="keywords" value="bless;blessings" />
		<parameter key="keyword_reply1" value="I can grant you blessings such as {Wisdom} {of} {Solitude}, {Spark} {of} {The} {Phoenix}, our {Fire} {of} {Two} {Suns}, {Spiritual} {Shielding} and {The Embrace}. I can also grant you {all} of these blessings, just ask me." />
		<parameter key="keyword_reply2" value="I can grant you blessings such as {Wisdom} {of} {Solitude}, {Spark} {of} {The} {Phoenix}, our {Fire} {of} {Two} {Suns}, {Spiritual} {Shielding} and {The Embrace}. I can also grant you {all} of these blessings, just ask me." />
	</parameters>
</npc>

bless_heal.lua

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid)				npcHandler:onCreatureAppear(cid) 			end
function onCreatureDisappear(cid) 			npcHandler:onCreatureDisappear(cid) 		end
function onCreatureSay(cid, type, msg) 		npcHandler:onCreatureSay(cid, type, msg) 	end
function onThink()							npcHandler:onThink()						end
function onPlayerEndTrade(cid)				npcHandler:onPlayerEndTrade(cid)			end
function onPlayerCloseChannel(cid)			npcHandler:onPlayerCloseChannel(cid)		end

function creatureSayCallback(cid, type, msg)
	if(not npcHandler:isFocused(cid)) then
		return false
	end

	local talkUser = cid
	local p = Player(cid)
	local heal = false
	local hp = p:getHealth()
	
	if msgcontains(msg, "heal") then
		if getCreatureCondition(cid, CONDITION_FIRE) then
			selfSay("You are burning. I will help you.", cid)
			doRemoveCondition(cid, CONDITION_FIRE)
			heal = true
		elseif getCreatureCondition(cid, CONDITION_POISON) then
			selfSay("You are poisoned. I will cure you.", cid)
			doRemoveCondition(cid, CONDITION_POISON)
			heal = true
		elseif getCreatureCondition(cid, CONDITION_ENERGY) then
			selfSay("You are electrificed. I will help you.", cid)
			doRemoveCondition(cid, CONDITION_ENERGY)
			heal = true
		elseif getCreatureCondition(cid, CONDITION_PARALYZE) then
			selfSay("You are paralyzed. I will cure you.", cid)
			doRemoveCondition(cid, CONDITION_PARALYZE)
			heal = true
		elseif getCreatureCondition(cid, CONDITION_DROWN) then
			selfSay("You are drowing. I will help you.", cid)
			doRemoveCondition(cid, CONDITION_DROWN)
			heal = true
		elseif getCreatureCondition(cid, CONDITION_FREEZING) then
			selfSay("You are cold! I will help you.", cid)
			doRemoveCondition(cid, CONDITION_FREEZING)
			heal = true
		elseif getCreatureCondition(cid, CONDITION_BLEEDING) then
			selfSay("You are bleeding! I will help you.", cid)
			doRemoveCondition(cid, CONDITION_BLEEDING)
			heal = true
		elseif getCreatureCondition(cid, CONDITION_DAZZLED) then
			selfSay("You are dazzled! Do not mess with holy creatures anymore!", cid)
			doRemoveCondition(cid, CONDITION_DAZZLED)
			heal = true
		elseif getCreatureCondition(cid, CONDITION_CURSED) then
			selfSay("You are cursed! I will remove it.", cid)
			doRemoveCondition(cid, CONDITION_CURSED)
			heal = true
		elseif hp < 65 then
			selfSay("You are looking really bad. Let me heal your wounds.", cid)
			p:addHealth(65 - hp)
			heal = true
		elseif hp < 2000 then
			selfSay("I did my best to fix your wounds.", cid)
			p:addHealth(2000 - hp)
			heal = true
		end
		
		if heal then
			p:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
		else
			local msgheal = {
				"You aren't looking really bad, " .. getCreatureName(cid) .. ". I only help in cases of real emergencies. Raise your health simply by eating {food}.", 
				"Seriously? It's just a scratch", 
				"Don't be a child. You don't need any help with your health.", 
				"I'm not an expert. If you need help find a medic.", 
				"Don't even waste my time, I have bigger problems than your scratched armor."
			}
			selfSay("" .. msgheal[math.random(1, #msgheal)] .. "", cid)
		end
	return true
	end
	
	if msgcontains(msg, "yes") and talkState[talkUser] > 90 and talkState[talkUser] < 96 then
		if getPlayerBlessing(cid, talkState[talkUser] - 90) then
			selfSay("You already have this blessing!", cid)
		else
			b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200))
			if b_price < 2000 then b_price = 2000 end
			
			if doPlayerRemoveMoney(cid, b_price) then
				selfSay("You have been blessed by one of the five gods!", cid)
				doPlayerAddBlessing(cid, talkState[talkUser] - 90)
				doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
			else
				selfSay("I'm sorry. We need money to keep this temple up.", cid)
			end
		end
		talkState[talkUser] = 0
		return true
	end
	
	if msgcontains(msg, "yes") and talkState[talkUser] == 96 then
		havebless = {}
		
		for i = 1, 5 do
			if(getPlayerBlessing(cid, i)) then
				table.insert(havebless,i)
			end
		end
		
		if #havebless == 5 then
			selfSay('You already have all available blessings.',cid)
			talkState[talkUser] = 0
			return true
		end
		
		b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200))
		if b_price < 2000 then b_price = 2000 end
		b_price = ((5 - #havebless) * b_price)
		
		if doPlayerRemoveMoney(cid, b_price) then
			selfSay("You have been blessed by the five gods!", cid)
			for i = 1, 5 do doPlayerAddBlessing(cid, i) end
			doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
		else
			selfSay("I'm sorry. We need money to keep this temple up.", cid)
		end
			
		talkState[talkUser] = 0
		return true
	end
	
	if msgcontains(msg, "all") then
		havebless = {}
		b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200))
		if b_price < 2000 then b_price = 2000 end
		
		for i = 1, 5 do
			if(getPlayerBlessing(cid, i)) then
				table.insert(havebless,i)
			end
		end
		
		b_price = ((5 - #havebless) * b_price)
		
		if b_price == 0 then
			selfSay('You already have all available blessings.',cid)
			talkState[talkUser] = 0
			return true
		end
		
		selfSay('Do you want to receive all blessings for ' .. b_price .. ' gold?',cid)
		talkState[talkUser] = 96
		return true
	end
	
	local blesskeywords = {'wisdom', 'spark', 'fire', 'spiritual', 'embrace'}
	local blessnames = {'Wisdom of Solitude', 'Spark of The Phoenix', 'Fire of Two Suns', 'Spiritual Shielding', 'The Embrace'}
	for i = 1, #blesskeywords do
		if msgcontains(msg, blesskeywords[i]) then
		
			b_price = (2000 + ((math.min(130, getPlayerLevel(cid)) - 30) * 200))
			if b_price < 2000 then b_price = 2000 end
			
			selfSay('Do you want me to grant you ' .. blessnames[i] .. ' blessing for ' .. b_price .. ' gold?',cid)
			talkState[talkUser] = 90 + i
			return true
		end
	end
	
	return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Créditos : zbisu

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...