(: 3系德鲁伊常用宏集合 :)

玩了大半年小德,东看西看找到许许多多好用的。但是也没找到一个比较系统的宏集合




野性篇

(一)熊形态

1、冲锋

(1)判断是否在熊/巨熊形态,如果不是则变成熊再冲锋+低吼;如果是则直接冲锋+低吼。

/Script local c,s,i,f,n,a,_=CastSpellByName,"巨熊形态";for i=1,GetNumShapeshiftForms() do _,n,a=GetShapeshiftFormInfo(i);if n==s then break;end;end;if a==1 then if IsActionInRange (34) then c("野性冲锋");else c("低吼");end;else c(s);end;

注:红字:34是技能栏编号,使用这个宏前要先把野性冲锋放在一个技能栏位上(放在一些少用的键位上)。

(2)基本相同,但是不低吼。

/script local c,s,i,f,n,a,_=CastSpellByName,"巨熊形态";for i=1,GetNumShapeshiftForms() do _,n,a=GetShapeshiftFormInfo(i);if n==s then break;end;end;if a==1 then c("野性冲锋");else c(s);end;

(3)这个在被击飞或者紧急情况时用比较有效,野性冲锋的同时低吼,如果怒气还大于35就使用

挥击挥霍怒气拉住仇恨。

/cast 低吼
/cast 野性冲锋
/Script if (UnitMana("Player")>35) then CastSpellByName("挥击");end


2、拉仇恨
槌击+挥击大量倾泻怒气,如果目标的目标不是小D或者战士,则使用低吼。(OBLIND修改)

/script local class, c = UnitClass("targettarget"), CastSpellByName; if class ~= "德鲁伊" and class ~= "战士" then c("低吼"); else c("槌击"); c("挥击"); end; ) then CastSpellByName("低吼");end

3、攻击+槌击
( 发挥 补充)当怒气小于10时使用普通攻击,否则使用槌击。

/script if (UnitMana("player")<10) then CastSpellByName("攻击");else CastSpellByName("槌击")end

4、熊形态+蛮兽神像
人形态下,按1下是变熊,2下是换上蛮兽神像;熊形态下是换上蛮兽神像。(漠铭骑喵制作)红字部分是UseContainerItem(背包编号,格子编号)。 请把[蛮兽神像]放在最原始的16格包的左上角位置上。

PS:背包编号:从左到右:4,3,2,1,0。 就是说,你一开始就有的16格行囊是0号背包。
背包格子编号:第一行从左到右:1,2,3,4 (注意从1开始的) ;第二行从左到右:5,6,7,8 依此类推……


/script local c,s,i,f,n,a,_=CastSpellByName,"巨熊形态";for i=1,GetNumShapeshiftForms() do _,n,a=GetShapeshiftFormInfo(i);if n==s then break;end;end;if a==1 then UseContainerItem(0,1);else c(s);end;



(二)猫形态

1、猫形态常用攻击宏
通常情况下使用爪击,当连击点数大等于3点时(即“3星”),使用凶猛撕咬。

/script if ( GetComboPoints() >= 3 ) then CastSpellByName("凶猛撕咬"); else CastSpellByName

("爪击") end


2、猫形态起手宏(潜行)
在潜行的条件下,毁灭起手,然后检测对方身上是否有精灵之火,没有就上个,有就爪击。

/cast 毁灭
/cast 爪击
/script x=1;found=0;while(UnitDebuff("target",x)) do if(string.find(UnitDebuff
("target",x),"Spell_Nature_FaerieFire"))then found=1;end;x=x+1;end;
/script if(found==1)then CastSpellByName("爪击");else CastSpellByName("精灵之火(野性)")end


3、背面攻击宏
先判断,如果毁灭能用就用毁灭,不能用就撕碎。

/script x=1;found=0;while(UnitBuff("player",x)) do if(string.find(UnitBuff
("player",x),"Ambush"))then found=1;end;x=x+1;end;
/script if(found==1)then CastSpellByName("毁灭");else CastSpellByName("撕碎")end

4、潜行+突袭
先判断,如果在潜行状态下就突袭,否则潜行。

/script x=1;found=0;while(UnitBuff("player",x)) do if(string.find(UnitBuff("player",x),"Ambush"))then found=1;end;x=x+1;end;
/script if(found==1)then CastSpellByName("突袭");else CastSpellByName("潜行")end

5、爪击+撕碎
当能量大等于60时使用撕碎,小于60时使用爪击。通常在BOSS战DPS时使用。

/Script if (UnitMana("Player")>=60) then CastSpellByName("撕碎");else CastSpellByName("爪击")end

6、攻击+爪击
( 发挥 补充)能量如果小于37则普通攻击,大于37则爪击。

/script if (UnitMana("player")<37) then CastSpellByName("攻击");else CastSpellByName("爪击")end

7、突袭+扫击
( 发挥 补充)如果潜行则使用突袭,否则使用扫击。

/script x=1;found=0;while(UnitBuff("player",x)) do if(string.find(UnitBuff("player",x),"Ambush"))then found=1;end;x=x+1;end;
/script if(found==1)then CastSpellByName("突袭");else CastSpellByName("扫击")end

8、猫形态+凶猛神像
人形态下,按1下是变猫,2下是换上凶猛神像;猫形态下是换上凶猛神像。(漠铭骑喵制作)[ 红字部分是UseContainerItem(背包编号,格子编号)。 请把[凶猛神像]放在最原始的16格包的第一行从左往右第2格的位置上。

PS:背包编号:从左到右:4,3,2,1,0。 就是说,你一开始就有的16格行囊是0号背包。
背包格子编号:第一行从左到右:1,2,3,4 (注意从1开始的) ;第二行从左到右:5,6,7,8 依此类推……


/script local c,s,i,f,n,a,_=CastSpellByName,"猎豹形态";for i=1,GetNumShapeshiftForms() do _,n,a,s=GetShapeshiftFormInfo(i);if n==s then break;end;end;if a==1 then UseContainerItem(0,2);else c(s);end;




(三)任何形态通用

1、人形宏
判断如果不是人形态,则恢复人形态。可在任何形态下使用。

/script local i,a,_;for i=1,GetNumShapeshiftForms() do _,_,a=GetShapeshiftFormInfo(i);if a then CastShapeshiftForm(i);break;end;end;



恢复篇

1、树皮+宁静
判断是否有树皮,没有则放树皮,有则放宁静。简而言之,点一下是树皮,2下是树皮+宁静。

/script x=1;found=0;while(UnitBuff("player",x)) do if(string.find(UnitBuff("player",x),"StoneClaw"))then found=1;end;x=x+1;end;
/script if(found==1)then CastSpellByName("宁静(等级 3)");else CastSpellByName("树皮术")end

2、激活
先判断,如果目标敌对/是NPC/没有目标/是没蓝职业 都给自己使用激活;如果目标是有蓝职业则

给对放激活。使用完激活自动返回上一目标。

/script x=UnitClass("target");if (not UnitIsFriend("player","target") or (UnitManaMax
("target")<200 and x~="Druid")) then TargetUnit("player");end;CastSpellByName("激
活");TargetLastTarget();

3、自然迅捷+治疗之触
只需要按一下,但是偶尔也需要2下(比如延迟高)。(light_arm 修改)

/script SpellStopCasting()
/施放 自然迅捷
/script SpellStopCasting()
/施放 治疗之触(等级 11)

4、回春术+迅捷治愈
有回春效果则放迅捷治愈,没有则放回春.
/Script x=1;found=0;while(UnitBuff("target",x)) do if(string.find(UnitBuff("target",x),"Rejuvenation"))then found=1;end;x=x+1;end;
/Script if(found==1)then CastSpellByName("迅捷治愈");else CastSpellByName("回春术(等级 11))")end

5、治疗之触

(1)根据目标血量判断是使用最大等级的治疗之触,还是刷4级触(去血少于1200)。

/cast 治疗之触
/script if UnitIsFriend("Player","target") then if UnitAffectingCombat("target") then if
((UnitHealthMax("target"))-(UnitHealth("target"))<1200) then CastSpellByName("治疗之触(等级 4)");end;end;elseif SpellIsTargeting() then TargetUnit("Player");end

(2)根据目标血量判断使用哪个等级的治疗之触。

/script H=UnitHealthMax("target")-UnitHealth("target");S= {41,98,213,394,617,799,1004,1285,1621,2010,2496};
/script for j=11,1,-1 do if (H>=S[j]) then CastSpellByName("治疗之触(等级 "..j..")"); break;end;end;


6、回春术
根据目标等级判断使用哪个等级的回春术。

/script r=10;l={4,10,16,22,28,34,40,46,52,58};t=UnitLevel("target");for j=r,1,-1 do if (t>=l[j]-10) then CastSpellByName("回春术(等级 "..j..")");break;end;end

7、愈合
根据目标等级判断使用哪个等级的愈合。

/script r=7;l={12,18,24,30,36,42,48,54,60};t=UnitLevel("target");for j=r,1,-1 do if (t>=l[j]-10) then CastSpellByName("愈合(等级 "..j..")");break;end;end

8、驱毒
在任何形态下变回人形,并给目标上驱毒。

/script local i,a,_;for i=1,GetNumShapeshiftForms() do _,_,a=GetShapeshiftFormInfo(i);if a then CastShapeshiftForm(i);break;end;end;
/cast 驱毒术

9、解除自身DEBUFF
(妖术师金度制作)可解除自己身上的诅咒和中毒效果。

/script dbk={'Poison','Curse'}; spl={''驱毒术'',''解除诅咒''}; for m=0,31,1 do for n=1,2,1 do if GetPlayerBuffDispelType(GetPlayerBuff(m,'HARMFUL'))==dbk[n] then TargetUnit('player');CastSpellByName(spl[n]);TargetLastTarget();break;end;end;end;



 平衡篇

1、月火打图腾
搜索附近敌对图腾,使用1级月火,之后自动返回上一目标。

/Target 图腾
/cast 月火术(等级 1)
/Script TargetLastEnemy()


2、树皮+飓风
判断是否有树皮,没有则放树皮,有则放飓风。简而言之,点一下是树皮,2下是树皮+飓风。

/script x=1;found=0;while(UnitBuff("player",x)) do if(string.find(UnitBuff("player",x),"StoneClaw"))then found=1;end;x=x+1;end;
/script if(found==1)then CastSpellByName("飓风");else CastSpellByName("树皮术")end

3、月火机关枪?
(6楼light_arm 补充)

/script x=1;found=0;while(UnitDebuff("target",x)) do if(string.find(UnitDebuff("target",x),"Spell_Nature_StarFall"))then found=1;end;x=x+1;end;
/script if(found==1)then CastSpellByName("月火术(等级 9)");else CastSpellByName("月火术(等级 10)")end


 状态篇

1、野性印记

(1)根据目标等级判断使用哪个等级的爪子。

/script r=7;l={1,10,20,30,40,50,60};t=UnitLevel("target");for j=r,1,-1 do if (t>=l[j]-10) then CastSpellByName("野性印记(等级 "..j..")");break;end;end

(2)自动搜索团队内没有野性印记的团队成员,为其补上,掉线的,死亡的,不在视野内的都会忽略掉。(OBLIND制作)

/script local i,j,b,f,p;for i=1,40 do f=nil;p="raid"..i;if UnitIsVisible(p) then for j=1,16 do b=UnitBuff(p,j);if b and strfind(b,"Regen") then f=1;break;end;end;if not f then TargetUnit(p);CastSpellByName("野性印记");break;end;end;end;


2、荆棘术
根据目标等级判断使用哪个等级的荆棘。

/script r=6;l={6,14,24,34,44,54};if not UnitIsFriend("player","target")then TargetUnit
("player");end;t=UnitLevel("target");for j=r,1,-1 do if (t>=l[j]-10) then CastSpellByName("荆棘术(等级 "..j..")");break;end;end




 特殊篇

1、技能CD时间公告
可以显示任意技能的剩下的冷却时间(自己调整):注:红字:8是技能栏编号,使用这个宏前要先把想要显示CD的技能放在一个技能栏位上。
/script a,d,e=GetActionCooldown(8);s=d-(GetTime()-a);q=string.format("%.f",s);
/script m=q/60;n=string.format("%d",m)
/script o=q-n60
/Script if a~=0 then SendChatMessage("技能名 CD时间:"..n.."分"..o.."秒","yell"); end

[暂时更新到此,暂时想不到还有什么。。欢迎大家跟帖补充:)]