11-04-2017, 10:52 PM (This post was last modified: 11-09-2017, 11:24 PM by SomebodyFound.)
-- 1.1 minor fixes
-- 1.2 added bear fight
-- 1.3 fixed some heal issues
-- version 1.4 by somebodyfound
-- -added: Bandage logic
-- -added: Potion logic
-- -added: new eat logic
-- -added: new drink logic
-- all new logics are based on beniamin's rogue rotation
-- version 1.5 by somebodyfound
-- -added: rejuvenation to the rotation
-- -fixed: Bandage logic wasn't working as intended
-- -fixed: re-cast moonfire when debuff ends
-- -added: demoralizing roar to the rotation
-- -added: will now use enrage in-combat (toggleable)
-- -added: demoralizing roar is now toggleable
-- -added: rejuvenate is now toggleable
-- and also used out of combat
-- version 1.6 by somebodyfound and teewee
-- -added: now demoralizing roar can be
-- configured to use only when fighting
-- a certain number of enemies
-- -added: new paranoid function for elven druids
-- 1.6b
-- -added: use maul faster depending on cost red. talent
-- -fixed: enrage wasn't working as intended
-- (still need better fix, but it's at least working now)
11-05-2017, 09:18 PM (This post was last modified: 11-05-2017, 10:25 PM by SomebodyFound.)
(11-05-2017, 06:34 PM)teewee Wrote: dunno if its just me but i'm getting so many errors with this script. i fix one in the script for another to pop up.
however simple druid 1.3.lua works. so i doubt it's me.
weird, i'm using it right now, are you "copy/paste"ing or loading the rotation?
anyway i'm working on v 1.5 and it's not ready yet, but i've updated the attachment, try it next time and feedback me again if it works
11-06-2017, 06:56 PM (This post was last modified: 11-06-2017, 08:41 PM by teewee.)
works pretty well now. lots of nice fixes. thankyou for your hard work to improve it.
rejuvenation was a really nice addition.
maybe you could add enrage to bearform if local and target hp is over 80% or something.
and also perhaps use rejuvenation after combat if their HP is not full and above eating %?
11-07-2017, 01:09 AM (This post was last modified: 11-07-2017, 01:10 AM by SomebodyFound.)
(11-06-2017, 06:56 PM)teewee Wrote: works pretty well now. lots of nice fixes. thankyou for your hard work to improve it.
rejuvenation was a really nice addition.
maybe you could add enrage to bearform if local and target hp is over 80% or something.
and also perhaps use rejuvenation after combat if their HP is not full and above eating %?
thanks
i main warlock, and i'm not really used to how druid works...
i'm leveling an alt who is currently level 19, and adding things when i unlock them, so it'll probably take some time to add late-game spells
i was using rejuvenate only in-combat to spare some mana, but now i changed it to use outside of combat too
11-07-2017, 01:40 PM (This post was last modified: 11-07-2017, 08:17 PM by teewee.)
really nice changes. i'll post again iif i can think of any ideas.
Demoralizing Roar would be good if it only cast when there is at-least 2 targets.
in the warrior script there is a Variable called enemyAOE and i wrote a demoralizing shout to go like this:
if (EnemyAOE(10) >= 2 and HasSpell('Demoralizing Shout') and HasDebuff (targetObj, "Demoralizing Shout") == 0 and targetHealth > 40 and localRage >= 10) then CastSpellByName('Demoralizing Shout'); return; end
that might be good for adding other future things, perhaps entangle or swipe. i'm still low level too
cast wrath once before moonfire on pulling.
if you're a night elf. perhaps using stealth after you start eating, might be a nice addition.
i just added after the function EatDrink:
if (HasSpell("Shadowmeld") == 1 and IsSpellOnCD("Shadowmeld") == 0) and HasBuff(localObj, Shadowmeld) == 0 and IsDrinking() == 1 then CastSpellByName('Shadowmeld'); return; end
This is shadowmeld if paranoid is on, just need to replace it:
Code:
function Paranoid(range)
local currentObj, typeObj = GetFirstObject();
local localObj = GetLocalPlayer();
while currentObj ~= 0 do
if typeObj == 4 then -- player
if (GetDistance(currentObj) < range and currentObj ~= localObj and IsInCombat() == 0) then
if (HasSpell("Shadowmeld") == 1 and IsSpellOnCD("Shadowmeld") == 0) and HasBuff(localObj, Shadowmeld) == 0 then CastSpellByName('Shadowmeld');SetWaitTimer(10.0); return; end
return true;
end
end
currentObj, typeObj = GetNextObject(currentObj);
end
return false;
end
but you might be able to do a better implantations.
11-07-2017, 06:34 PM (This post was last modified: 11-07-2017, 08:19 PM by teewee.)
I changed this, it now runs up to the creature as bear, rather than run to the creature then change to bear when in melee range, looks more natural. Also it does not run around in circles when getting to the creature. needs more testing, but i will let you know if its a problem.
Code:
-- bear pull routine (from battlestancer warrior rotation) useful?
function PullRoutineBear(targetObj, bot_)
SetSatusText('Not in combat:', 'Pulling the next target...');
-- Check: Charge if possible
if (HasSpell("Charge") == 1 and IsSpellOnCD("Charge") == 0 and GetDistance(targetObj) < 25 and GetDistance(targetObj) > 12 and IsInLineOfSight(targetObj) == 1) then
AutoAttack(targetObj);
if (Cast("Charge", targetObj)) then return; end
end
-- Check: If we are already in meele range, use auto attack
if (GetDistance(targetObj) < 5) then AutoAttack(targetObj); if (Cast('Attack', targetObj)) then return; end end
-- Bot: Movement to target when not in combat
if (bot_ == 1) then
-- If too far away move to the target
if (GetDistance(targetObj) > 5 or IsInLineOfSight(targetObj) == 0) then MoveToTarget(targetObj); return; else
if (IsMoving() == 1) then StopMoving(); end end
end
end
-- bear combat routine (from battlestancer warrior rotation)
function CombatRoutineBear(targetObj, bot_)
SetSatusText('In Combat', 'Doing the combat routine...');
ResetNavigate();
-- Bot: Movement to target in combat
-- use potion if needed
if (usePotion()) then
return;
end
-- Check: Cast regroth on ourselves
if (localHealth < regrowthHp and localMana > 25) then
ExitForm();
if (Cast('Regrowth', localObj)) then SetWaitTimer(3);
return;
end
end
-- Check: Cast heal on ourselves
if (localHealth < healingTouchHp and localMana > 25) then
ExitForm();
if (Cast('Healing Touch', localObj)) then SetWaitTimer(3.6);
return;
end
end
-- fight as Bear
if (localMana > 25 and HasBuff(localObj, "Bear Form") == 0) then
StopMoving();
CastSpellByName('Bear Form');
FaceTarget(targetObj); AutoAttack(targetObj);
return;
end
if (bot_ == 1) then
-- Run backwards if we are too close to the target
if (GetDistance(targetObj) < 1) then if (RunBackwards(2,3)) then return; end end
-- If too far away move to the target
if (GetDistance(targetObj) > 5 or IsInLineOfSight(targetObj) == 0 and IsCasting() == 0) then MoveToTarget(targetObj); return; else
if (IsMoving() == 1) then StopMoving(); end end
end
FaceTarget(targetObj); -- Keep Facing the target
AutoAttack(targetObj); -- Auto Attack
targetHealth = GetHealthPercentage(targetObj); -- Update the target's HP
-- use bash to finish fleeing humanoids
if (targetHealth < 15 and GetCreatureType(targetObj) == 'Humanoid' and HasSpell('Bash') == 1 and localRage >= 10) then
if (Cast('Bash', targetObj)) then
return;
else
return;
end
end
-- Check: If we are in meele range
if (GetCreatureType(targetObj) ~= 'Humanoid') then
if (GetDistance(targetObj) < 5 ) then
if (localRage >= 15) then
if (Cast('Maul', targetObj)) then return; end end -- Meele Skill: maul if we got 15 rage
FaceTarget(targetObj); return; -- Always face the target
end
end
-- Check: If we are in meele range and fighting humas who flee at 15%
if (GetCreatureType(targetObj) == 'Humanoid') then
if (GetDistance(targetObj) < 5 ) then
if (localRage >= 15 and targetHealth < 14) then -- maul if target has <14% hp and we have 15 rage
if (Cast('Maul', targetObj)) then return; end end
if (localRage >= 25) then
if (Cast('Maul', targetObj)) then return; end end -- Meele Skill: maul if we got 25 rage s owe have enough rage to use bash
FaceTarget(targetObj); return; -- Always face the target
end
end
11-08-2017, 10:40 PM (This post was last modified: 11-08-2017, 11:07 PM by SomebodyFound.)
nice additions, on the demoralizing roar you can just add EnemiesAttackingUs() >= 2; on the Roar() function
the wrath should be easy, just cast wrath to pull instead of moonfire, then add a cast of moonfire if the debuff is off and if not in bear form, but add it before the rotation transforms into bear
i play horde, so i don't even know what elves do haha, but if you already done it i'll just add to the rotation
i just added the things after v1.4, the original work is not mine ;p
after you're done testing the code you're working i'll add it, but feel free to upload and attach the code if you want, i'd even link it on the original post
--[quick edit]--
actually, i added the paranoid and the roar and already uploaded it
the wrath/moonfire i didn't because it'd actually cast wrath then while the projectile is in the air, since it's not in combat, would cast another wrath, and only then cast moonfire...
a fix would be add a SetVar() to control if you already cast wrath to pull, then cast moonfire to pull, and on the combat routine add the moonfire if the debuff is off and not in bear form
11-09-2017, 12:26 PM (This post was last modified: 11-09-2017, 12:32 PM by teewee.)
Enrage doesnt seem to work, i cant quite figure that one out.
A simple one to use maul faster if you use the rage reduction talent.
Add the variable at the top:
MaulTalent = 0 -- How much rage reduction for Maul through first talents?
Code:
if (GetCreatureType(targetObj) ~= 'Humanoid') then
if (GetDistance(targetObj) < 5 ) then
if (localRage >= 15-MaulTalent) then
if (Cast('Maul', targetObj)) then return; end end -- Meele Skill: maul if we got 15 rage
FaceTarget(targetObj); return; -- Always face the target
end
end
-- Check: If we are in meele range and fighting humas who flee at 15%
if (GetCreatureType(targetObj) == 'Humanoid') then
if (GetDistance(targetObj) < 5 ) then
if (localRage >= 15-MaulTalent and targetHealth < 14) then -- maul if target has <14% hp and we have 15 rage
if (Cast('Maul', targetObj)) then return; end end
if (localRage >= 25) then
if (Cast('Maul', targetObj)) then return; end end -- Meele Skill: maul if we got 25 rage s owe have enough rage to use bash
FaceTarget(targetObj); return; -- Always face the target
end
end