All pastes #70232 Raw Edit

Mine

public text v1 · immutable
#70232 ·published 2006-06-23 22:44 UTC
rendered paste body
oRA_Cooldowns= oRA_CoreModuleClass:new({
	type			= "cooldown",
	name			= oRA_COOLDOWNS_NAME,
	desc			= oRA_COOLDOWNS_DESCRIPTION,
	cmdOptions		= oRA_COOLDOWNS_CMD_OPTIONS,
	--db            		= AceDbClass:new("oRA_Cooldowns"),

	spell = nil,
	SSCasting = nil,
	ResCasting = nil,
	InnCasting = nil,
	
	Enable = function(self)
		local _, c = UnitClass("player")
		if(c == "DRUID" or c == "WARLOCK") then
			self:RegisterEvent("SPELLCAST_START")
			self:RegisterEvent("SPELLCAST_INTERRUPTED", "spellFailed")
			self:RegisterEvent("SPELLCAST_FAILED", "spellFailed")
			self:RegisterEvent("SPELLCAST_STOP")
			self:RegisterEvent("CHAT_MSG_SPELL_SELF_BUFF", "buffCast")
			self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS", "buffGain")
			if c == "WARLOCK" then
				self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_BUFFS", "checkSummon")
				self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS", "checkSummon")
				self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_PARTY_BUFFS", "checkSummon")
			end
		elseif (c == "SHAMAN") then
			self:Hook("UseSoulstone")
		end
	end,

	Disable = function(self)
		self:UnregisterAllEvents()
	end,
	
	buffCast = function(self)
		self.spell = arg1
		if ( self.spell == oRA_COOLDOWNS_CONST.Spells.CastInnervate ) then
			self.InnCasting = 1
		end
	end,
	
	buffGain = function(self)
		if (self.InnCasting) then
			self.spell = arg1
			if ( self.spell == oRA_COOLDOWNS_CONST.Spells.GainInnervate ) then
				self.InnCasting = nil
				self.spell = nil
				oRA_Core:Send("CD 4 6")
			end
		end
	end,
	
	SPELLCAST_START = function(self)
		self.spell = arg1
		if ( self.spell == oRA_COOLDOWNS_CONST.Spells.Soulstone ) then
			self.SSCasting = 1
		elseif ( self.spell == oRA_COOLDOWNS_CONST.Spells.Rebirth ) then
			self.ResCasting = 1
		end
	end,
	
	SPELLCAST_STOP = function(self)
		if ( self.spell == oRA_COOLDOWNS_CONST.Spells.Rebirth ) then
			self.ResCasting = nil
			self.spell = nil
			oRA_Core:Send("CD 1 30")
		end
	end,
	
	spellFailed = function(self)
		if ( self.spell == oRA_COOLDOWNS_CONST.Spells.Rebirth ) then self.ResCasting = nil end
		if ( self.spell == oRA_COOLDOWNS_CONST.Spells.Soulstone ) then self.SSCasting = nil end
	end,
	
	UseSoulstone = function(self)
		local text = HasSoulstone()
		if ( text and text == oRA_COOLDOWNS_CONST.Spells.Ankh ) then
			local cooldown
			for i = 1, GetNumTalentTabs(), 1 do
				for y = 1, GetNumTalents(i), 1 do
					local name, _, _, _, currRank = GetTalentInfo(i, y)
					if ( name == oRA_COOLDOWNS_CONST.Talent.ImpAnkh ) then
						cooldown = 60 - (currRank*10)
						break
					end
				end
				if ( cooldown ) then
					break
				end
			end
			if ( not cooldown ) then
				cooldown = 60
			end
			oRA_Core:Send("CD 2 " .. cooldown)
		end
		self.Hooks["UseSoulstone"].orig()
	end,
	
	checkSummon = function(self)
		if(self.SSCasting)then
			if(string.find(arg1, oRA_COOLDOWNS_CONST.Pattern.GainSS) or string.find(arg1, oRA_COOLDOWNS_CONST.Pattern.YouGainSS))then
				self.spell = nil
				self.SSCasting = nil
				oRA_Core:Send("CD 3 30")
			end
		end
	end,

	
----------------------------
--			Chat			--
----------------------------

	
})

----------------------------------
--			Load this bitch up!			--
----------------------------------
oRA_Core:Register(oRA_Cooldowns)