Warlock macros collection

Post Reply
Ulukay
Posts: 157
Has liked: 5 times
Likes: 19 times

Warlock macros collection

Post by Ulukay » Wed Nov 06, 2024 2:04 pm

if there is mana then [Drain Life] else [Life Tap][Life Tap][Life Tap][Life Tap] dead_turtle_head

Ulukay
Posts: 157
Has liked: 5 times
Likes: 19 times

Re: Warlock macros collection

Post by Ulukay » Wed Nov 06, 2024 2:06 pm

-=Corruption+Immolate=-
/script local function GotDebuff(name,target) if not target then target = "target" end;local tex,cnt,ix;for ix = 1,32 do tex,cnt = UnitDebuff(target,ix);if not tex then return end;if strfind(tex,name) then return cnt end;end;end;if GotDebuff("Spell_Shadow_AbominationExplosion") then CastSpellByName("Immolate"); else CastSpellByName("Corruption"); end;
-=Immolate+Corruption=-
/script local function GotDebuff(name,target) if not target then target = "target" end;local tex,cnt,ix;for ix = 1,32 do tex,cnt = UnitDebuff(target,ix);if not tex then return end;if strfind(tex,name) then return cnt end;end;end;if GotDebuff("Spell_Fire_Immolation") then CastSpellByName("Corruption"); else CastSpellByName("Immolate"); end;

Ulukay
Posts: 157
Has liked: 5 times
Likes: 19 times

Re: Warlock macros collection

Post by Ulukay » Wed Nov 06, 2024 2:07 pm

-=Shadowburn+Shadow Bolt=-
Type and Rank depending on the target's health and player's mana (by checking the Cataclysm talent).
/script local function GotSpell(spell,rank) local ix,spellName,spellRank;for ix=1,200 do spellName,spellRank=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell and spellRank==rank then if GetSpellCooldown(ix,"spell")==0 then return true; else return; end;end;end;end;end;local UL,UH,PM=UnitLevel,0,0;local _,_,_,_,TR = GetTalentInfo(3, 2);TR=(100-TR)/100;if UnitExists("target") then UH=UnitHealth("target");end;PM=UnitMana("player");if nil then CastSpellByName("Shadow Bolt"); end;if UH<=503 and PM>=365 and GotSpell("Shadowburn","Rank 6") then CastSpellByName("Shadowburn(Rank 6)"); else if UH<=393 and PM>=305*TR and GotSpell("Shadowburn","Rank 5") then CastSpellByName("Shadowburn(Rank 5)"); else if UH<=294 and PM>=245*TR and GotSpell("Shadowburn","Rank 4") then CastSpellByName("Shadowburn(Rank 4)"); else if UH<=211 and PM>=190*TR and GotSpell("Shadowburn","Rank 3") then CastSpellByName("Shadowburn(Rank 3)"); else if UH<=132 and PM>=130*TR and GotSpell("Shadowburn","Rank 2") then CastSpellByName("Shadowburn(Rank 2)"); else if UH<=100 and PM>=105*TR and GotSpell("Shadowburn","Rank 1") then CastSpellByName("Shadowburn(Rank 1)"); else if PM>=380*TR and GotSpell("Shadow Bolt","Rank 10") then CastSpellByName("Shadow Bolt(Rank 10)"); else if PM>=370*TR and GotSpell("Shadow Bolt","Rank 9") then CastSpellByName("Shadow Bolt(Rank 9)"); else if PM>=315*TR and GotSpell("Shadow Bolt","Rank 8") then CastSpellByName("Shadow Bolt(Rank 8)"); else if PM>=265*TR and GotSpell("Shadow Bolt","Rank 7") then CastSpellByName("Shadow Bolt(Rank 7)"); else if PM>=210*TR and GotSpell("Shadow Bolt","Rank 6") then CastSpellByName("Shadow Bolt(Rank 6)"); else if PM>=160*TR and GotSpell("Shadow Bolt","Rank 5") then CastSpellByName("Shadow Bolt(Rank 5)"); else if PM>=110*TR and GotSpell("Shadow Bolt","Rank 4") then CastSpellByName("Shadow Bolt(Rank 4)"); else if PM>=70*TR and GotSpell("Shadow Bolt","Rank 3") then CastSpellByName("Shadow Bolt(Rank 3)"); else if PM>=40*TR and GotSpell("Shadow Bolt","Rank 2") then CastSpellByName("Shadow Bolt(Rank 2)"); else if PM>=25*TR and GotSpell("Shadow Bolt","Rank 1") then CastSpellByName("Shadow Bolt(Rank 1)"); else CastSpellByName("Shadow Bolt"); end;end;end;end;end;end;end;end;end;end;end;end;end;end;end;end;

-=Shadowburn + (Shadow Trance = Shadow Bolt) + Searing Pain=-
/script local function GotSpell(spell,rank) local ix,spellName,spellRank;for ix=1,200 do spellName,spellRank=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell and spellRank==rank then if GetSpellCooldown(ix,"spell")==0 then return true; else return; end;end;end;end;end;local function GotBuff(name,target) local tex,cnt,ix;for ix = 1,32 do tex,cnt = UnitBuff("player",ix);if not tex then return end;if strfind(tex,name) then return cnt end;end;end;local UL,UH,PM=UnitLevel,0,0;local _,_,_,_,TR = GetTalentInfo(3, 2);TR=(100-TR)/100;if UnitExists("target") then UH=UnitHealth("target");end;PM=UnitMana("player");if nil then CastSpellByName("Searing Pain"); end;if UH<=503 and PM>=365 and GotSpell("Shadowburn","Rank 6") then CastSpellByName("Shadowburn(Rank 6)"); else if UH<=393 and PM>=305*TR and GotSpell("Shadowburn","Rank 5") then CastSpellByName("Shadowburn(Rank 5)"); else if UH<=294 and PM>=245*TR and GotSpell("Shadowburn","Rank 4") then CastSpellByName("Shadowburn(Rank 4)"); else if UH<=211 and PM>=190*TR and GotSpell("Shadowburn","Rank 3") then CastSpellByName("Shadowburn(Rank 3)"); else if UH<=132 and PM>=130*TR and GotSpell("Shadowburn","Rank 2") then CastSpellByName("Shadowburn(Rank 2)"); else if UH<=100 and PM>=105*TR and GotSpell("Shadowburn","Rank 1") then CastSpellByName("Shadowburn(Rank 1)"); else if GotBuff("Spell_Shadow_Twilight") then if PM>=380*TR and GotSpell("Shadow Bolt","Rank 10") then CastSpellByName("Shadow Bolt(Rank 10)"); else if PM>=370*TR and GotSpell("Shadow Bolt","Rank 9") then CastSpellByName("Shadow Bolt(Rank 9)"); else if PM>=315*TR and GotSpell("Shadow Bolt","Rank 8") then CastSpellByName("Shadow Bolt(Rank 8)"); else if PM>=265*TR and GotSpell("Shadow Bolt","Rank 7") then CastSpellByName("Shadow Bolt(Rank 7)"); else if PM>=210*TR and GotSpell("Shadow Bolt","Rank 6") then CastSpellByName("Shadow Bolt(Rank 6)"); else if PM>=160*TR and GotSpell("Shadow Bolt","Rank 5") then CastSpellByName("Shadow Bolt(Rank 5)"); else if PM>=110*TR and GotSpell("Shadow Bolt","Rank 4") then CastSpellByName("Shadow Bolt(Rank 4)"); else if PM>=70*TR and GotSpell("Shadow Bolt","Rank 3") then CastSpellByName("Shadow Bolt(Rank 3)"); else if PM>=40*TR and GotSpell("Shadow Bolt","Rank 2") then CastSpellByName("Shadow Bolt(Rank 2)"); else if PM>=25*TR and GotSpell("Shadow Bolt","Rank 1") then CastSpellByName("Shadow Bolt(Rank 1)"); else CastSpellByName("Shadow Bolt"); end;end;end;end;end;end;end;end;end;end;else if PM>=168*TR and GotSpell("Searing Pain","Rank 6") then CastSpellByName("Searing Pain(Rank 6)"); else if PM>=141*TR and GotSpell("Searing Pain","Rank 5") then CastSpellByName("Searing Pain(Rank 5)"); else if PM>=118*TR and GotSpell("Searing Pain","Rank 4") then CastSpellByName("Searing Pain(Rank 4)"); else if PM>=91*TR and GotSpell("Searing Pain","Rank 3") then CastSpellByName("Searing Pain(Rank 3)"); else if PM>=68*TR and GotSpell("Searing Pain","Rank 2") then CastSpellByName("Searing Pain(Rank 2)"); else if PM>=45*TR and GotSpell("Searing Pain","Rank 1") then CastSpellByName("Searing Pain(Rank 1)"); else CastSpellByName("Searing Pain"); end;end;end;end;end;end;end;end;end;end;end;end;end;
Last edited by Ulukay on Sun Dec 08, 2024 7:41 am, edited 1 time in total.

Ulukay
Posts: 157
Has liked: 5 times
Likes: 19 times

Re: Warlock macros collection

Post by Ulukay » Wed Nov 06, 2024 2:09 pm

-=Fel Domination and Summon demmon=- SuperMacro addon required
With ALT
-=Summon Imp + Fel Domination=-
/script if IsAltKeyDown()~=1 or buffed("Fel Domination")=="buff" then CastSpellByName("Summon Imp");else CastSpellByName("Fel Domination");end

-=Summon Voidwalker + Fel Domination=-
/script if IsAltKeyDown()~=1 or buffed("Fel Domination")=="buff" then CastSpellByName("Summon Voidwalker");else CastSpellByName("Fel Domination");end;

-=Summon Succubus + Fel Domination=-
/script if IsAltKeyDown()~=1 or buffed("Fel Domination")=="buff" then CastSpellByName("Summon Succubus");else CastSpellByName("Fel Domination");end;

-=Summon Felhunter + Fel Domination=-
/script if IsAltKeyDown()~=1 or buffed("Fel Domination")=="buff" then CastSpellByName("Summon Felhunter");else CastSpellByName("Fel Domination");end;
-=-

-=Fel Domination + Summon Imp=-
/script if IsAltKeyDown()==1 and buffed("Fel Domination")~="buff" then CastSpellByName("Fel Domination");else CastSpellByName("Summon Imp");end

-=Fel Domination + Summon Voidwalker=-
/script if IsAltKeyDown()==1 and buffed("Fel Domination")~="buff" then CastSpellByName("Fel Domination");else CastSpellByName("Summon Voidwalker");end;

-=Fel Domination + Summon Succubus=-
/script if IsAltKeyDown()==1 and buffed("Fel Domination")~="buff" then CastSpellByName("Fel Domination");else CastSpellByName("Summon Succubus");end;

-=Fel Domination + Summon Felhunter=-
/script if IsAltKeyDown()==1 and buffed("Fel Domination")~="buff" then CastSpellByName("Fel Domination");else CastSpellByName("Summon Felhunter");end;
Last edited by Ulukay on Sun Dec 08, 2024 7:41 am, edited 3 times in total.

Ulukay
Posts: 157
Has liked: 5 times
Likes: 19 times

Re: Warlock macros collection

Post by Ulukay » Wed Nov 06, 2024 2:10 pm

-=Fel Domination and Summon demmon=- SuperMacro addon required
Without ALT
-=Summon Imp + Fel Domination=-
/script local function GotBuff(name,target) local tex,cnt,ix;for ix = 1,32 do tex,cnt = UnitBuff("player",ix);if not tex then return end;if strfind(tex,name) then return cnt end;end;end;local function GotSpell(spell,rank) local ix,spellName,spellRank;for ix=1,200 do spellName,spellRank=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell then if GetSpellCooldown(ix,"spell")==0 then return true; else return; end;end;end;end;end;if not GotSpell("Fel Domination") or GotBuff("Spell_Nature_RemoveCurse") then CastSpellByName("Summon Imp");else CastSpellByName("Fel Domination");end;

-=Summon Voidwalker + Fel Domination=-
/script local function GotBuff(name,target) local tex,cnt,ix;for ix = 1,32 do tex,cnt = UnitBuff("player",ix);if not tex then return end;if strfind(tex,name) then return cnt end;end;end;local function GotSpell(spell,rank) local ix,spellName,spellRank;for ix=1,200 do spellName,spellRank=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell then if GetSpellCooldown(ix,"spell")==0 then return true; else return; end;end;end;end;end;if not GotSpell("Fel Domination") or GotBuff("Spell_Nature_RemoveCurse") then CastSpellByName("Summon Voidwalker");else CastSpellByName("Fel Domination");end;

-=Summon Succubus + Fel Domination=-
/script local function GotBuff(name,target) local tex,cnt,ix;for ix = 1,32 do tex,cnt = UnitBuff("player",ix);if not tex then return end;if strfind(tex,name) then return cnt end;end;end;local function GotSpell(spell,rank) local ix,spellName,spellRank;for ix=1,200 do spellName,spellRank=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell then if GetSpellCooldown(ix,"spell")==0 then return true; else return; end;end;end;end;end;if not GotSpell("Fel Domination") or GotBuff("Spell_Nature_RemoveCurse") then CastSpellByName("Summon Succubus");else CastSpellByName("Fel Domination");end;

-=Summon Felhunter + Fel Domination=-
/script local function GotBuff(name,target) local tex,cnt,ix;for ix = 1,32 do tex,cnt = UnitBuff("player",ix);if not tex then return end;if strfind(tex,name) then return cnt end;end;end;local function GotSpell(spell,rank) local ix,spellName,spellRank;for ix=1,200 do spellName,spellRank=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell then if GetSpellCooldown(ix,"spell")==0 then return true; else return; end;end;end;end;end;if not GotSpell("Fel Domination") or GotBuff("Spell_Nature_RemoveCurse") then CastSpellByName("Summon Felhunter");else CastSpellByName("Fel Domination");end;

-=Fel Domination + Summon Imp=-
/script local function GotBuff(name,target) local tex,cnt,ix;for ix = 1,32 do tex,cnt = UnitBuff("player",ix);if not tex then return end;if strfind(tex,name) then return cnt end;end;end;local function GotSpell(spell,rank) local ix,spellName,spellRank;for ix=1,200 do spellName,spellRank=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell then if GetSpellCooldown(ix,"spell")==0 then return true; else return; end;end;end;end;end;if GotSpell("Fel Domination") and not GotBuff("Spell_Nature_RemoveCurse") then CastSpellByName("Fel Domination");else CastSpellByName("Summon Imp");end;

-=Fel Domination + Summon Voidwalker=-
/script local function GotBuff(name,target) local tex,cnt,ix;for ix = 1,32 do tex,cnt = UnitBuff("player",ix);if not tex then return end;if strfind(tex,name) then return cnt end;end;end;local function GotSpell(spell,rank) local ix,spellName,spellRank;for ix=1,200 do spellName,spellRank=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell then if GetSpellCooldown(ix,"spell")==0 then return true; else return; end;end;end;end;end;if GotSpell("Fel Domination") and not GotBuff("Spell_Nature_RemoveCurse") then CastSpellByName("Fel Domination");else CastSpellByName("Summon Voidwalker");end;

-=Fel Domination + Summon Succubus=-
/script local function GotBuff(name,target) local tex,cnt,ix;for ix = 1,32 do tex,cnt = UnitBuff("player",ix);if not tex then return end;if strfind(tex,name) then return cnt end;end;end;local function GotSpell(spell,rank) local ix,spellName,spellRank;for ix=1,200 do spellName,spellRank=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell then if GetSpellCooldown(ix,"spell")==0 then return true; else return; end;end;end;end;end;if GotSpell("Fel Domination") and not GotBuff("Spell_Nature_RemoveCurse") then CastSpellByName("Fel Domination");else CastSpellByName("Summon Succubus");end;

-=Fel Domination + Summon Felhunter=-
/script local function GotBuff(name,target) local tex,cnt,ix;for ix = 1,32 do tex,cnt = UnitBuff("player",ix);if not tex then return end;if strfind(tex,name) then return cnt end;end;end;local function GotSpell(spell,rank) local ix,spellName,spellRank;for ix=1,200 do spellName,spellRank=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell then if GetSpellCooldown(ix,"spell")==0 then return true; else return; end;end;end;end;end;if GotSpell("Fel Domination") and not GotBuff("Spell_Nature_RemoveCurse") then CastSpellByName("Fel Domination");else CastSpellByName("Summon Felhunter");end;
Last edited by Ulukay on Sun Dec 08, 2024 7:41 am, edited 1 time in total.

Ulukay
Posts: 157
Has liked: 5 times
Likes: 19 times

Re: Warlock macros collection

Post by Ulukay » Wed Nov 06, 2024 2:12 pm

-=Warlock Stone=-
-=Create and use Felstone=-
/script local ix,iz,it,ta=0,0;if CursorHasItem() then while(iz<5)do if not GetContainerItemInfo(iz,ix) then PickupContainerItem(iz,ix);break;end;if ix<20 then ix=ix+1;else iz=iz+1;ix=0;end;end;end;if not CursorHasItem() then iz=0;ix=0;while(iz<5)do it=GetContainerItemInfo(iz,ix);if it then if string.find(it,"inv_misc_gem_felstone") then UseContainerItem(iz,ix);break;end;end;if ix<24 then ix=ix+1;else iz=iz+1;ix=0;end;end;if iz==5 then CastSpellByName("Create Felstone");end;end;

-=Create and use Firestone=-
/script local ix,iz,it,ta=0,0;if CursorHasItem() then while(iz<5)do if not GetContainerItemInfo(iz,ix) then PickupContainerItem(iz,ix);break;end;if ix<20 then ix=ix+1;else iz=iz+1;ix=0;end;end;end;if not CursorHasItem() then iz=0;ix=0;while(iz<5)do it=GetContainerItemInfo(iz,ix);if it then if string.find(it,"INV_Ammo_FireTar") then UseContainerItem(iz,ix);break;end;end;if ix<24 then ix=ix+1;else iz=iz+1;ix=0;end;end;if iz==5 then CastSpellByName("Create Firestone");end;end;

-=Create and use Spellstone=-
/script local ix,iz,it,ta=0,0;if CursorHasItem() then while(iz<5)do if not GetContainerItemInfo(iz,ix) then PickupContainerItem(iz,ix);break;end;if ix<20 then ix=ix+1;else iz=iz+1;ix=0;end;end;end;if not CursorHasItem() then iz=0;ix=0;while(iz<5)do it=GetContainerItemInfo(iz,ix);if it then if string.find(it,"INV_Misc_Gem_Sapphire_01") then UseContainerItem(iz,ix);break;end;end;if ix<24 then ix=ix+1;else iz=iz+1;ix=0;end;end;if iz==5 then CastSpellByName("Create Spellstone");end;end;

-=Create and use Wrathstone=-
/script local ix,iz,it,ta=0,0;if CursorHasItem() then while(iz<5)do if not GetContainerItemInfo(iz,ix) then PickupContainerItem(iz,ix);break;end;if ix<20 then ix=ix+1;else iz=iz+1;ix=0;end;end;end;if not CursorHasItem() then iz=0;ix=0;while(iz<5)do it=GetContainerItemInfo(iz,ix);if it then if string.find(it,"INV_Misc_Gem_Bloodstone_02") then UseContainerItem(iz,ix);break;end;end;if ix<24 then ix=ix+1;else iz=iz+1;ix=0;end;end;if iz==5 then CastSpellByName("Create Wrathstone");end;end;
Last edited by Ulukay on Sun Dec 08, 2024 7:42 am, edited 1 time in total.

Sharders
Posts: 22
Has liked: 4 times

Re: Warlock macros collection

Post by Sharders » Fri Nov 15, 2024 2:04 am

Ulukay wrote: Wed Nov 06, 2024 2:12 pm -=Warlock Stone=-
-=Create and use Felstone=-
/script local ix,iz,it,ta=0,0;if CursorHasItem() then while(iz<5)do if not GetContainerItemInfo(iz,ix) then PickupContainerItem(iz,ix);break;end;if ix<20 then ix=ix+1;else iz=iz+1;ix=0;end;end;end;if not CursorHasItem() then iz=0;ix=0;while(iz<5)do it=GetContainerItemInfo(iz,ix);if it then if string.find(it,"inv_misc_gem_felstone") then UseContainerItem(iz,ix);break;end;end;if ix<24 then ix=ix+1;else iz=iz+1;ix=0;end;end;if iz==5 then CastSpellByName("Create Felstone");end;end;
-=Create and use Firestone=-
/script local ix,iz,it,ta=0,0;if CursorHasItem() then while(iz<5)do if not GetContainerItemInfo(iz,ix) then PickupContainerItem(iz,ix);break;end;if ix<20 then ix=ix+1;else iz=iz+1;ix=0;end;end;end;if not CursorHasItem() then iz=0;ix=0;while(iz<5)do it=GetContainerItemInfo(iz,ix);if it then if string.find(it,"INV_Ammo_FireTar") then UseContainerItem(iz,ix);break;end;end;if ix<24 then ix=ix+1;else iz=iz+1;ix=0;end;end;if iz==5 then CastSpellByName("Create Firestone");end;end;
-=Create and use Spellstone=-
/script local ix,iz,it,ta=0,0;if CursorHasItem() then while(iz<5)do if not GetContainerItemInfo(iz,ix) then PickupContainerItem(iz,ix);break;end;if ix<20 then ix=ix+1;else iz=iz+1;ix=0;end;end;end;if not CursorHasItem() then iz=0;ix=0;while(iz<5)do it=GetContainerItemInfo(iz,ix);if it then if string.find(it,"INV_Misc_Gem_Sapphire_01") then UseContainerItem(iz,ix);break;end;end;if ix<24 then ix=ix+1;else iz=iz+1;ix=0;end;end;if iz==5 then CastSpellByName("Create Spellstone");end;end;
-=Create and use Wrathstone=-
/script local ix,iz,it,ta=0,0;if CursorHasItem() then while(iz<5)do if not GetContainerItemInfo(iz,ix) then PickupContainerItem(iz,ix);break;end;if ix<20 then ix=ix+1;else iz=iz+1;ix=0;end;end;end;if not CursorHasItem() then iz=0;ix=0;while(iz<5)do it=GetContainerItemInfo(iz,ix);if it then if string.find(it,"INV_Misc_Gem_Bloodstone_02") then UseContainerItem(iz,ix);break;end;end;if ix<24 then ix=ix+1;else iz=iz+1;ix=0;end;end;if iz==5 then CastSpellByName("Create Wrathstone");end;end;
loves this.. replace the keyword for health stone or soulstone also works?

Ulukay
Posts: 157
Has liked: 5 times
Likes: 19 times

Re: Warlock macros collection

Post by Ulukay » Sun Nov 17, 2024 10:25 am

Sharders wrote: Fri Nov 15, 2024 2:04 am loves this.. replace the keyword for health stone or soulstone also works?
No, it's a little more complicated.
I think this should work.
-=Create and use Healthstone=-
/script local ix,iz,it,ta=0,0;if CursorHasItem() then while(iz<5)do if not GetContainerItemInfo(iz,ix) then PickupContainerItem(iz,ix);break;end;if ix<20 then ix=ix+1;else iz=iz+1;ix=0;end;end;end;local function GotSpell(spell) local ix,spellName,spellRank;for ix=1,200 do spellName=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell then return ix;end;end;end;end;if not CursorHasItem() then iz=0;ix=0;while(iz<5)do it=GetContainerItemInfo(iz,ix);if it then if string.find(it,"INV_Stone_04") then UseContainerItem(iz,ix);break;end;end;if ix<24 then ix=ix+1;else iz=iz+1;ix=0;end;end;if iz==5 then if GotSpell("Create Healthstone (Major)") then CastSpell(GotSpell("Create Healthstone (Major)"),1);else if GotSpell("Create Healthstone (Greater)") then CastSpell(GotSpell("Create Healthstone (Greater)"),1);else if GotSpell("Create Healthstone") then CastSpell(GotSpell("Create Healthstone"),1);else if GotSpell("Create Healthstone (Lesser)") then CastSpell(GotSpell("Create Healthstone (Lesser)"),1);else if GotSpell("Create Healthstone (Minor)") then CastSpell(GotSpell("Create Healthstone (Minor)"),1);end;end;end;end;end;end;end;if nil then CastSpellByName("Create Healthstone (Major)");CastSpellByName("Create Healthstone (Greater)");CastSpellByName("Create Healthstone");CastSpellByName("Create Healthstone (Lesser)");CastSpellByName("Create Healthstone (Minor)");end;
-=Create and use Soulstone=-
/script local ix,iz,it,ta=0,0;if CursorHasItem() then while(iz<5)do if not GetContainerItemInfo(iz,ix) then PickupContainerItem(iz,ix);break;end;if ix<20 then ix=ix+1;else iz=iz+1;ix=0;end;end;end;local function GotSpell(spell) local ix,spellName,spellRank;for ix=1,200 do spellName=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell then return ix;end;end;end;end;if not CursorHasItem() then iz=0;ix=0;while(iz<5)do it=GetContainerItemInfo(iz,ix);if it then if string.find(it,"INV_Misc_Orb_04") then UseContainerItem(iz,ix);break;end;end;if ix<24 then ix=ix+1;else iz=iz+1;ix=0;end;end;if iz==5 then if GotSpell("Create Soulstone (Major)") then CastSpell(GotSpell("Create Soulstone (Major)"),1);else if GotSpell("Create Soulstone (Greater)") then CastSpell(GotSpell("Create Soulstone (Greater)"),1);else if GotSpell("Create Soulstone") then CastSpell(GotSpell("Create Soulstone"),1);else if GotSpell("Create Soulstone (Lesser)") then CastSpell(GotSpell("Create Soulstone (Lesser)"),1);else if GotSpell("Create Soulstone (Minor)") then CastSpell(GotSpell("Create Soulstone (Minor)"),1);end;end;end;end;end;end;end;if nil then CastSpellByName("Create Soulstone (Major)");CastSpellByName("Create Soulstone (Greater)");CastSpellByName("Create Soulstone");CastSpellByName("Create Soulstone (Lesser)");CastSpellByName("Create Soulstone (Minor)");end;
I had to increase the script to get around the problem, since for some reason calling a spell by name does not work - CastSpellByName("Create Soulstone (Minor)") Maybe someone knows why?

Sharders
Posts: 22
Has liked: 4 times

Re: Warlock macros collection

Post by Sharders » Mon Nov 18, 2024 5:21 am

Ulukay wrote: Sun Nov 17, 2024 10:25 am
Sharders wrote: Fri Nov 15, 2024 2:04 am loves this.. replace the keyword for health stone or soulstone also works?
No, it's a little more complicated.
I think this should work.
-=Create and use Healthstone=-
/script local ix,iz,it,ta=0,0;if CursorHasItem() then while(iz<5)do if not GetContainerItemInfo(iz,ix) then PickupContainerItem(iz,ix);break;end;if ix<20 then ix=ix+1;else iz=iz+1;ix=0;end;end;end;local function GotSpell(spell) local ix,spellName,spellRank;for ix=1,200 do spellName=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell then return ix;end;end;end;end;if not CursorHasItem() then iz=0;ix=0;while(iz<5)do it=GetContainerItemInfo(iz,ix);if it then if string.find(it,"INV_Stone_04") then UseContainerItem(iz,ix);break;end;end;if ix<24 then ix=ix+1;else iz=iz+1;ix=0;end;end;if iz==5 then if GotSpell("Create Healthstone (Major)") then CastSpell(GotSpell("Create Healthstone (Major)"),1);else if GotSpell("Create Healthstone (Greater)") then CastSpell(GotSpell("Create Healthstone (Greater)"),1);else if GotSpell("Create Healthstone") then CastSpell(GotSpell("Create Healthstone"),1);else if GotSpell("Create Healthstone (Lesser)") then CastSpell(GotSpell("Create Healthstone (Lesser)"),1);else if GotSpell("Create Healthstone (Minor)") then CastSpell(GotSpell("Create Healthstone (Minor)"),1);end;end;end;end;end;end;end;if nil then CastSpellByName("Create Healthstone (Major)");CastSpellByName("Create Healthstone (Greater)");CastSpellByName("Create Healthstone");CastSpellByName("Create Healthstone (Lesser)");CastSpellByName("Create Healthstone (Minor)");end;
-=Create and use Soulstone=-
/script local ix,iz,it,ta=0,0;if CursorHasItem() then while(iz<5)do if not GetContainerItemInfo(iz,ix) then PickupContainerItem(iz,ix);break;end;if ix<20 then ix=ix+1;else iz=iz+1;ix=0;end;end;end;local function GotSpell(spell) local ix,spellName,spellRank;for ix=1,200 do spellName=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell then return ix;end;end;end;end;if not CursorHasItem() then iz=0;ix=0;while(iz<5)do it=GetContainerItemInfo(iz,ix);if it then if string.find(it,"INV_Misc_Orb_04") then UseContainerItem(iz,ix);break;end;end;if ix<24 then ix=ix+1;else iz=iz+1;ix=0;end;end;if iz==5 then if GotSpell("Create Soulstone (Major)") then CastSpell(GotSpell("Create Soulstone (Major)"),1);else if GotSpell("Create Soulstone (Greater)") then CastSpell(GotSpell("Create Soulstone (Greater)"),1);else if GotSpell("Create Soulstone") then CastSpell(GotSpell("Create Soulstone"),1);else if GotSpell("Create Soulstone (Lesser)") then CastSpell(GotSpell("Create Soulstone (Lesser)"),1);else if GotSpell("Create Soulstone (Minor)") then CastSpell(GotSpell("Create Soulstone (Minor)"),1);end;end;end;end;end;end;end;if nil then CastSpellByName("Create Soulstone (Major)");CastSpellByName("Create Soulstone (Greater)");CastSpellByName("Create Soulstone");CastSpellByName("Create Soulstone (Lesser)");CastSpellByName("Create Soulstone (Minor)");end;
I had to increase the script to get around the problem, since for some reason calling a spell by name does not work - CastSpellByName("Create Soulstone (Minor)") Maybe someone knows why?
woh, far more complicate
thanks

User avatar
Darkabom
Posts: 10

Re: Warlock macros collection

Post by Darkabom » Tue Nov 19, 2024 9:24 pm

Here's a simple macro that casts an existing Soulstone on a targeted player and announces it in party and raid chat (no addon needed). The only requirement is that four of your bags have 16 slots:

/run for b=0,4 do for s=1,16 do n=GetContainerItemLink(b,s);if n and string.find(n,"Major Soulstone") then UseContainerItem(b,s);end;end;end;

/party Casting Soulstone on %t.
/raid Casting Soulstone on %t.

This is for the max rank of Soulstone. Simply change the "Major Soulstone" to the correct version for your level if you are below level 60.
Last edited by Darkabom on Tue Nov 19, 2024 9:50 pm, edited 1 time in total.

User avatar
Darkabom
Posts: 10

Re: Warlock macros collection

Post by Darkabom » Tue Nov 19, 2024 9:27 pm

Here's a banish macro that uses the SHIFT key. You use this macro by combining your Banish key with the SHIFT key. Without the SHIFT key being pressed, Banish Rank 2 is cast. When SHIFT is pressed, Banish Rank 1 is cast (no addon needed):

/run local s=IsShiftKeyDown() n=CastSpellByName if(s)then n("Banish(Rank 1)")else n("Banish(Rank 2)");end
Last edited by Darkabom on Tue Nov 19, 2024 9:53 pm, edited 1 time in total.

User avatar
Darkabom
Posts: 10

Re: Warlock macros collection

Post by Darkabom » Tue Nov 19, 2024 9:46 pm

Here are some warlock demon macros (no addon needed):

Create a macro called PET1 (or whatever you prefer) and add the following to it:

/cast Devour Magic
/cast Consume Shadows
/cast Soothing Kiss
/cast Fire Shield

The correct abilities will activate depending on which demon you have out.

Create a macro called PET2 (or whatever) and add the following to it:

/cast Spell Lock
/cast Seduction
/cast Sacrifice

Now you have most (common) demon abilities on two key presses. You can add other abilities as needed.


Here's one for Seduce that casts Seduce on the first key press (whatever key Seduce is bound to for you), then stops Seduce when that same key is pressed again:

/run if UnitExists("target") then CastSpellByName("Seduction") end if UnitExists("pettarget") and UnitIsUnit("target", "pettarget") then PetFollow() PetStopAttack() end


Here's one that sends your demon in when the Attack key is pressed ("F" key for me), then recalls your demon on the second keypress (useful for when you want to pull your demon back before it reaches the target):

/script if UnitExists("target") then if a==0 then PetAttack(target) a=1 else if UnitExists("pettarget") and UnitIsUnit("target", "pettarget") then PetFollow("YOURNAME") a=0 else PetAttack(target) end;end; else PetFollow("YOURNAME") a=0 end

Make sure to substitute your character name in place of "YOURNAME". Don't remove the quotes around "YOURNAME".

Ulukay
Posts: 157
Has liked: 5 times
Likes: 19 times

Re: Warlock macros collection

Post by Ulukay » Wed Nov 20, 2024 2:52 am

Darkabom wrote: Tue Nov 19, 2024 9:46 pm

Here's one that sends your demon in when the Attack key is pressed ("F" key for me), then recalls your demon on the second keypress (useful for when you want to pull your demon back before it reaches the target):

/script if UnitExists("target") then if a==0 then PetAttack(target) a=1 else if UnitExists("pettarget") and UnitIsUnit("target", "pettarget") then PetFollow("YOURNAME") a=0 else PetAttack(target) end;end; else PetFollow("YOURNAME") a=0 end

Make sure to substitute your character name in place of "YOURNAME". Don't remove the quotes around "YOURNAME".
PetFollow doesn't require a name, it requires PetFollow(), but putting anything in there won't change anything.
Besides making no sense, this macro can cause errors in other addons and macros because it uses the global variable "a".
Before you do copy-paste from other sites, it would be worth checking this out.

Ededdnedy
Posts: 4

Re: Warlock macros collection

Post by Ededdnedy » Sat Nov 23, 2024 12:07 pm

Ulukay wrote: Wed Nov 06, 2024 2:07 pm -=Shadowburn+Shadow Bolt=-
Type and Rank depending on the target's health and player's mana (by checking the Cataclysm talent).
/script local function GotSpell(spell,rank) local ix,spellName,spellRank;for ix=1,200 do spellName,spellRank=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell and spellRank==rank then if GetSpellCooldown(ix,"spell")==0 then return true; else return; end;end;end;end;end;local UL,UH,PM=UnitLevel,0,0;local _,_,_,_,TR = GetTalentInfo(3, 2);TR=(100-TR)/100;if UnitExists("target") then UH=UnitHealth("target");end;PM=UnitMana("player");if UH<=503 and PM>=365 and GotSpell("Shadowburn","Rank 6") then CastSpellByName("Shadowburn(Rank 6)"); else if UH<=393 and PM>=305*TR and GotSpell("Shadowburn","Rank 5") then CastSpellByName("Shadowburn(Rank 5)"); else if UH<=294 and PM>=245*TR and GotSpell("Shadowburn","Rank 4") then CastSpellByName("Shadowburn(Rank 4)"); else if UH<=211 and PM>=190*TR and GotSpell("Shadowburn","Rank 3") then CastSpellByName("Shadowburn(Rank 3)"); else if UH<=132 and PM>=130*TR and GotSpell("Shadowburn","Rank 2") then CastSpellByName("Shadowburn(Rank 2)"); else if UH<=100 and PM>=105*TR and GotSpell("Shadowburn","Rank 1") then CastSpellByName("Shadowburn(Rank 1)"); else if PM>=380*TR and GotSpell("Shadow Bolt","Rank 10") then CastSpellByName("Shadow Bolt(Rank 10)"); else if PM>=370*TR and GotSpell("Shadow Bolt","Rank 9") then CastSpellByName("Shadow Bolt(Rank 9)"); else if PM>=315*TR and GotSpell("Shadow Bolt","Rank 8") then CastSpellByName("Shadow Bolt(Rank 8)"); else if PM>=265*TR and GotSpell("Shadow Bolt","Rank 7") then CastSpellByName("Shadow Bolt(Rank 7)"); else if PM>=210*TR and GotSpell("Shadow Bolt","Rank 6") then CastSpellByName("Shadow Bolt(Rank 6)"); else if PM>=160*TR and GotSpell("Shadow Bolt","Rank 5") then CastSpellByName("Shadow Bolt(Rank 5)"); else if PM>=110*TR and GotSpell("Shadow Bolt","Rank 4") then CastSpellByName("Shadow Bolt(Rank 4)"); else if PM>=70*TR and GotSpell("Shadow Bolt","Rank 3") then CastSpellByName("Shadow Bolt(Rank 3)"); else if PM>=40*TR and GotSpell("Shadow Bolt","Rank 2") then CastSpellByName("Shadow Bolt(Rank 2)"); else if PM>=25*TR and GotSpell("Shadow Bolt","Rank 1") then CastSpellByName("Shadow Bolt(Rank 1)"); else CastSpellByName("Shadow Bolt"); end;end;end;end;end;end;end;end;end;end;end;end;end;end;end;end;
This addon made my client crash. Have SuperWoW and Roid-Macros installed.

Ulukay
Posts: 157
Has liked: 5 times
Likes: 19 times

Re: Warlock macros collection

Post by Ulukay » Sat Nov 23, 2024 12:13 pm

Ededdnedy wrote: Sat Nov 23, 2024 12:07 pm This addon made my client crash. Have SuperWoW and Roid-Macros installed.
I thought it was obvious. But Roid-Macros is not required.

User avatar
Darkabom
Posts: 10

Re: Warlock macros collection

Post by Darkabom » Tue Dec 03, 2024 6:25 pm

Ulukay wrote: Wed Nov 20, 2024 2:52 am
Darkabom wrote: Tue Nov 19, 2024 9:46 pm

Here's one that sends your demon in when the Attack key is pressed ("F" key for me), then recalls your demon on the second keypress (useful for when you want to pull your demon back before it reaches the target):

/script if UnitExists("target") then if a==0 then PetAttack(target) a=1 else if UnitExists("pettarget") and UnitIsUnit("target", "pettarget") then PetFollow("YOURNAME") a=0 else PetAttack(target) end;end; else PetFollow("YOURNAME") a=0 end

Make sure to substitute your character name in place of "YOURNAME". Don't remove the quotes around "YOURNAME".
PetFollow doesn't require a name, it requires PetFollow(), but putting anything in there won't change anything.
Besides making no sense, this macro can cause errors in other addons and macros because it uses the global variable "a".
Before you do copy-paste from other sites, it would be worth checking this out.
You may be right, but this macro works for me and I've had no issues with it.

BTW, I use every macro I provided in this thread.

Ulukay
Posts: 157
Has liked: 5 times
Likes: 19 times

Re: Warlock macros collection

Post by Ulukay » Wed Dec 04, 2024 7:28 pm

-=Warlock Stone=- v2

-=Create and use Felstone=-
/script if not UseItemByName("Felstone") then CastSpellByName("Create Felstone");end;
-=Create and use Firestone=-
/script if not UseItemByName("Firestone") then CastSpellByName("Create Firestone");end;
-=Create and use Spellstone=-
/script if not UseItemByName("Spellstone") then CastSpellByName("Create Spellstone");end;
-=Create and use Wrathstone=-
/script if not UseItemByName("Wrathstone") then CastSpellByName("Create Wrathstone");end;
-=Create and use Healthstone=-
/script local function GotSpell(spell) local ix,spellName,spellRank;for ix=1,200 do spellName=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell then return ix;end;end;end;end;if not UseItemByName("Major Healthstone") and not UseItemByName("Greater Healthstone") and not UseItemByName("Healthstone") and not UseItemByName("Lesser Healthstone") and not UseItemByName("Minor Healthstone") then if GotSpell("Create Healthstone (Major)") then CastSpell(GotSpell("Create Healthstone (Major)"),1);else if GotSpell("Create Healthstone (Greater)") then CastSpell(GotSpell("Create Healthstone (Greater)"),1);else if GotSpell("Create Healthstone") then CastSpell(GotSpell("Create Healthstone"),1);else if GotSpell("Create Healthstone (Lesser)") then CastSpell(GotSpell("Create Healthstone (Lesser)"),1);else if GotSpell("Create Healthstone (Minor)") then CastSpell(GotSpell("Create Healthstone (Minor)"),1);end;end;end;end;end;end;if nil then CastSpellByName("Create Healthstone (Major)");CastSpellByName("Create Healthstone (Greater)");CastSpellByName("Create Healthstone");CastSpellByName("Create Healthstone (Lesser)");CastSpellByName("Create Healthstone (Minor)");end;
-=Create and use Soulstone=-
/script local function GotSpell(spell) local ix,spellName,spellRank;for ix=1,200 do spellName=GetSpellName(ix,"spell") if spellName==nil then return;else if spellName==spell then return ix;end;end;end;end;if not UseItemByName("Major Soulstone") and not UseItemByName("Greater Soulstone") and not UseItemByName("Soulstone") and not UseItemByName("Lesser Soulstone") and not UseItemByName("Minor Soulstone") then if GotSpell("Create Soulstone (Major)") then CastSpell(GotSpell("Create Soulstone (Major)"),1);else if GotSpell("Create Soulstone (Greater)") then CastSpell(GotSpell("Create Soulstone (Greater)"),1);else if GotSpell("Create Soulstone") then CastSpell(GotSpell("Create Soulstone"),1);else if GotSpell("Create Soulstone (Lesser)") then CastSpell(GotSpell("Create Soulstone (Lesser)"),1);else if GotSpell("Create Soulstone (Minor)") then CastSpell(GotSpell("Create Soulstone (Minor)"),1);end;end;end;end;end;end;if nil then CastSpellByName("Create Soulstone (Major)");CastSpellByName("Create Soulstone (Greater)");CastSpellByName("Create Soulstone");CastSpellByName("Create Soulstone (Lesser)");CastSpellByName("Create Soulstone (Minor)");end;

Czajnastole
Posts: 2

Re: Warlock macros collection

Post by Czajnastole » Wed Dec 04, 2024 11:30 pm

Finally, i've created a macro for SS/HS that shows a tooltip (with SuperMacro ofc). Thanks Ulukay
Main macro:

Code: Select all

/script if not UseItemByName("Major Soulstone") then CreateMajorSoulstone();end;
Extended LUA code in readable format:

Code: Select all

function GotSpell(spell)
    for i = 1, 200 do
        local spellName = GetSpellName(i, "spell")
        if not spellName then return nil end
        if spellName == spell then return i end
    end
    return nil
end

function CreateMajorSoulstone()
    if not UseItemByName("Major Soulstone") then
        local spellIndex = GotSpell("Create Soulstone (Major)")
        if spellIndex then
            CastSpell(spellIndex, 1)
        else
            CastSpellByName("Create Soulstone (Major)")
        end
    end
end

Post Reply