• 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Simple Druid profile 1.6
#1
-- 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)


have fun


Attached Files
.lua   Druid.lua (Size: 33.45 KB / Downloads: 240)
  Reply
#2
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.
  Reply
#3
(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
  Reply
#4
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 %?
  Reply
#5
(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 Big Grin

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
  Reply
#6
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.
  Reply
#7
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

return;
end
  Reply
#8
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

But i don't have time to test it now ;x
  Reply
#9
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
  Reply
#10
(11-09-2017, 12:26 PM)teewee Wrote: Enrage doesnt seem to work, i cant quite figure that one out.
probably one of the below is not returning true
and localHealth > enrageHealth 
and GetHealthPercentage(target) > enrageTargetHealth 

both should be above 75% to use (by default), but the moment the rotation gets there, one of those might be below that (probably the target health)

if you lower it, may work?
[edit]
actually i tested, for some reason GetHealthPercentage(target) is returning 0

(11-09-2017, 12:26 PM)teewee Wrote: A simple one to use maul faster if you use the rage reduction talent.

actually i didn't even read the druid talents before creating it haha, it's an obvious addition and i'd totally ignore it XD

[edit]
updated the attachment
  Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)