mirror of
https://github.com/ornfelt/azerothcore_lua_scripts
synced 2026-08-22 06:26:03 -04:00
103 lines
No EOL
3.5 KiB
Lua
103 lines
No EOL
3.5 KiB
Lua
--[[
|
|
This script is for 'correcting' whatever I botched in the core while trying to create a classless system
|
|
I somehow broke just about every form of rage generation besides direct smacking a dude combat
|
|
|
|
The scipt just hooks onto a players OnCast and checks what spell it is, if its in my table somewhere it
|
|
gives the player whatever rage value is assigned from the table.
|
|
]]
|
|
|
|
local PLAYER_EVENT_ON_SPELL_CAST = 5
|
|
|
|
-- Spells are {SPELLID, INSTANT_RAGE, RAGEGEN, RAGE_PER_SEC}
|
|
local spelltable = {
|
|
bloodrage = {29131, 200, true, 10},
|
|
enrage = {5229, 200, true, 10},
|
|
charger1 = {100, 90, false, 0},
|
|
charger2 = {6178, 120, false, 0},
|
|
charger3 = {11578, 150, false, 0},
|
|
}
|
|
|
|
-- Table for auras that periodically generate rage could probably use spelltable somehow but IUNNO
|
|
local rageauras = {
|
|
bloodrage = 29131,
|
|
enrage = 5229,
|
|
}
|
|
-- If spell is charge in SetRage, checks if player knows the Improved Charge talents
|
|
local chargetable = {
|
|
charger1 = 100,
|
|
charger2 = 6178,
|
|
charger3 = 11578,
|
|
}
|
|
|
|
local ragegenerator = false -- Used to identify if a spell has a periodic rage gen. EG Bloodrage.
|
|
|
|
-- On Spell cast, for loops through spelltable, if spell is there, continue to SetRage
|
|
--[[local function OnCast(event, player, spell, skipCheck)
|
|
spell = spell:GetEntry()
|
|
player = player
|
|
for i, v in pairs(spelltable) do
|
|
if (spell == v[1]) then
|
|
SetRage(player, v[2], v[1], v[3], v[4])
|
|
break
|
|
end
|
|
end
|
|
end]]
|
|
|
|
-- Initially checks the type of spell, if charge, goes to CheckCharge for talent modifiers
|
|
-- Checks if spell was bloodrage, if it was, checks if player has either Improved Bloodrage talent, applies percentage boost
|
|
-- Then applies the rage to the player
|
|
-- Then checks if the spell has ragegen as true, if true Jumps to BloodEnRage
|
|
function SetRage(player, rage, spell ,ragegen, rageps)
|
|
for i, v in pairs(chargetable) do
|
|
if (spell == v) then
|
|
rage = CheckCharge(player, rage)
|
|
break
|
|
end
|
|
end
|
|
|
|
if (spell == 29131 and player:HasSpell(12301)) then -- Improved bloodrage 1
|
|
rage = rage + (rage * 0.25)
|
|
elseif (spell == 29131 and player:HasSpell(12818)) then -- Improved bloodrage 2
|
|
rage = rage + (rage * 0.50)
|
|
end
|
|
|
|
player:ModifyPower(rage, 1)
|
|
|
|
player = player
|
|
--[[if (ragegen == true) then
|
|
ragepers = rageps
|
|
auraid = spell
|
|
prage = player:RegisterEvent(BloodEnRage, 1000, 10, player, ragepers, auraid) -- Runs BloodEnRage once per second 10 times
|
|
end]]
|
|
end
|
|
|
|
-- Checks if the player has the Improved Charge talents
|
|
-- If they do apply bonus rage
|
|
-- Gonna have to do this with all rage skills probably
|
|
-- Maybe make a universal function that applies a boost stated in the table for each spell
|
|
-- instead of creating a unique function for each thing that happens
|
|
function CheckCharge(player, rage)
|
|
rage = rage
|
|
if (player:HasSpell(12285)) then
|
|
rage = rage + 50
|
|
end
|
|
if (player:HasSpell(12697)) then
|
|
rage = rage + 100
|
|
else return rage end
|
|
return rage
|
|
end
|
|
|
|
-- Checks the rageauras table to be sure that the player still has the aura, if they do continue
|
|
-- if they dont, remove the event and bail
|
|
--[[function BloodEnRage(eventid, delay, repeats, object, rageps, spell)
|
|
player = object
|
|
for i,v in pairs(rageauras) do
|
|
if (auraid == v and player:HasAura(v) == false) then
|
|
player:RemoveEventById(prage)
|
|
return
|
|
end
|
|
end
|
|
player:ModifyPower(ragepers, 1)
|
|
end]]
|
|
|
|
--RegisterPlayerEvent(PLAYER_EVENT_ON_SPELL_CAST, OnCast) |