Register for your free account! | Forgot your password?

Go Back   elitepvpers > Blogs > lanara's Blog
You last visited: Today at 14:28

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



..::lanara's Blog::..
Rating: 4 votes, 5.00 average.

Diablo 2 - Necromancer Guide

Posted 03/11/2011 at 22:46 by lanara
Updated 04/24/2011 at 10:01 by lanara

..::lanara's Blog::..






Heute möchte ich euch einen 'kleinen' Necromancer Guide vorstellen, mit dem Schwerpunkt auf PvE. Vielleicht kann ich ja damit den ein oder anderen überzeugen mal eine Klasse auszuprobieren die nicht ganz so beliebt ist, aber dennoch sehr stark ist. Die Rede ist vom Summoner.

Vielen ist dieser Char zu langweilig, weil sie ihn einfach falsch spielen. Wer denkt, dass der Summoner einfach herumsteht, während er wartet bis die Skelette alles getötet haben, der wird überrascht sein, was man aus dem Char noch herausholen kann. Dieser Spec ist vor allem für Anfänger geeignet, da er auch mit schlechtem Equipment sehr stark und extrem sicher zu spielen ist.



































In Stärke stecken wir genau soviele Punkte, um unser gesamtes Equip tragen zu können. Mit einer Enigma die wenig Stärke benötigt kann in der Regel komplett darauf verzichtet werden hier Punkte zu setzen.



Da wir kaum Stärke brauchen, können wir es uns locker leisten auf Maxblock zu gehen, da Homunkulus sowieso mit 72% Blockchance wie dafür geschaffen ist. Also stecken wir hier genau soviele Punkte rein, um auf Maxblock zu kommen, je nach Level sind das so um die 200 Dex inklusive Items.



Den Rest der verbliebenen Statpunkte spenden wir komplett in Vitalität. Pro investiertem Punkt bekommt der Necromancer 2 Lebenspunkte hinzu.



Denkt nichtmal daran hier Punkte zu verschwenden, es lohnt sich einfach nicht. Man bekommt pro Punkt in Energy 2 Manapunkte, wer wirklich Manaprobleme hat der sollte das eher mit dem Equipment ausgleichen, z.B. mit SoJ und/oder Frostburn. Mehr dazu beim Equipment.

Einzig beim leveln nach einem Ladderreset könnte man darüber nachdenken hier ein paar Punkte reinzustecken, aber selbst da ist es sinnvoller dem Merc ein billiges Insight zu bauen.








Kommen wir nun zum wohl wichtigsten Teil, der Skillung. Das Grundgerüst dieses Builds benötigt nur 68 Punkte, daher bleibt noch genug Spielraum den Char nach seinen Wünschen anzupassen. Ich persönlich bevorzuge nacht intensivem testen aller möglichen Specs die Safety Variante, weil sie vor allem beim botten den Char noch sicherer macht, falls er doch mal auf irgendeine Monsterhorde ported.



Diese Fähigkeiten bilden das Grundgerüst des Summoners, sie sollten unbedingt wie angegeben geskillt werden, um die maximale Effektivität zu erreichen.

Summoning Spells:

Raise Skeleton / Skelett beleben

20 Punkte - Das ist unser Summoning Skill, also definitiv maxen. Mit Amplify Damage machen sie sogar im Endgame noch guten Schaden. Dazu sind sie ein prima Meatshield und mit BO quasi unsterblich, obwohl sie laut Anzeige garnicht so viel TP haben.


Skeleton Mastery / Skelett-Beherrschung

20 Punkte - Gibt unseren Summons mehr Leben und Schaden, also auch maxen.


Clay Golem / Ton Golem

1 Punkt - Zum einen Prereq für Monster-Widerstand, als auch ein zuverlässiger Summon, der zwar kaum Schaden macht, aber dafür selbst mit nur einem Punkt extrem viel TP auf Hölle hat und dazu noch Gegner stark verlangsamt.


Golem Mastery / Golem-Beherrschung

1 Punkt - Prereq für Monster-Widerstand und gibt unserem Golem noch einen kleinen Bonus.


Summon Resist / Monster-Widerstand

1-5 Punkte - Erhöht die Resistenzen unserer Summons, dazu sei angemerkt, dass Summons nicht von der Resipenalty in NM+Hell betroffen sind, sie haben also unabhängig vom Schwierigkeitsgrad immer die gleichen Resis. Ein Punkt reicht mit Endequip locker aus, beim leveln kann man aber darüber nachdenken ein paar Punkte zu investieren, wenn man noch nicht genug +Skill Items hat.

Poison and Bone Spells:
Teeth / Zähne

1 Punkt - Prereq für Corpse Explosion.


Corpse Explosion / Kadaverexplosion

20 Punkte - Der wohl wichtigste Skill des gesamten Builds und einer der stärksten im Gesamten Spiel. Mit jedem Punkt steigt der Radius um 0.33 yards, der Schaden bleibt konstant bei 70-120% des Monsterlebens das für den Spell genutzt wurde. CE macht zu 50% Feuer und 50% Physischen Schaden. Da man dank Amplify Damage die Phyischen Resistenzen der Monster um 100% senken kann, ist es wohl klar, dass man vor der Nutzung immer fleißig cursed.

Curses:

Amplify Damage / Verstärkter Schaden

1-5 Punkte - Das ist unser Hauptfluch, den wir außer gegen Bosse immer einsetzen. Er senkt die Physischen Resistenzen der Monster um 100% und verstärkt dadurch den Schaden den wir mit Corpse Explosion machen enorm. Mit genug +Skill Items reicht ein Punkt hier locker aus, damit der Radius groß genug ist um den ganzen Screen auf einmal zu verfluchen. Wenn man gerade levelt oder noch nicht soviele +Skill Items hat, kann man aber auch ruhig ein paar Punkte investieren, um einen größeren Radius zu bekommen.


, Weaken, Terror / Schwächen, Terror

1 Skill - Prereq für Decrepify.


Decrepify / Altern

1 Punkt - Das ist unser Hauptfluch gegen Bosse, er senkt die Resistenzen um 50% und verlangsamt sie stark. Dank diesem Fluch sind Diablo und Baal ein Kinderspiel, da sie sich kaum noch wehren.




Bei dieser Variante werden die restlichen Punkte in Bone Armor und die dazugehörigen Synergien gesteckt. Dadurch kommt man in etwa auf 800 Punkte Absorb, die einen zusätzlichen Schutz gegen Meleeangriffe bieten, falls doch mal ein Monster durchkommt, oder man in eine Monstergruppe ported die einen selbst statt die Summons angreifen.

Meiner Meinung nach ist das der sinnvollste Verbleib für die restlichen Punkte, da man bereits genug Summons hat und CE auch vollkommen ausreicht was den Schaden anbelangt.


Poison and Bone Spells:

Bone Armor / Knochen-Rüstung

1 Punkt: Dieser Skill ist zwar der Kern dieses Unterbuilds, allerdings bringt ein Punkt darin nur 10 Absorb, während ein Punkt in die Synergien 15 Absorb gibt. Daher belassen wir es bei einem Punkt und investieren die restlichen Skillpunkte lieber in Bone Wall und Bone Prison.


, Bone Wall, Bone Prison / Knochenwand, Knochengefängnis

20 Punkte - Beide Skills geben gleichviel Absorb zu Bone Shield, daher ist es eigentlich egal in welcher Reihenfolge man sie skillt, allerdings benötigt man für Bone Prison noch Bone Spear als Prereq.




Bei diesem Subspec wird mehr Wert auf den Summoning Tree gelegt, dadurch hat man neben den Skeleton Mages auch noch Revives und wahlweise einen stärkeren Golem.


Summoning Spells:

Raise Skeletal Mage / Skelettmagier beleben

20 Punkte - Die Mages bringen uns etwas mehr magischen Schaden, allerdings ist er nicht gerade berauschend. Hinzu kommt, dass Cold Mages ab und an Leichen zum platzen bringen, die man dann nichtmehr für CE nutzen kann. Nützlich wenn ab und an mal ein Mob Fire+Phys immun ist.


Revive / Wiederbeleben

1 Punkt - Auf den ersten Blick wirkt dieser Spell sehr stark, allerdings sind die meissten Monster die man wiederbelebt sehr schwach. Dazu kommt, dass größere Monster die Kollisionskontrolle nach dem Teleportieren triggern und sich dann kein Summon/Revive/Merc mehr vom Fleck bewegt, bis der Necro einen Schritt zur Seite macht, was extrem nervig sein kann. Außerdem sind mehr Monster nicht unbedingt besser, zwar blocken sie andere Monster die so nicht zum Necro durchkommen, aber sie blocken auch viel zu oft den Merc, wodurch es länger dauert bis etwas stirbt. Wie auch immer, ein Punkt hier ist sicherlich nicht verschwendet, mehr aber auf keinen Fall, da +Skills völlig ausreichen um genug Monster wiederbeleben zu können.


Iron Golem / Eisen Golem

1 Punkt - Mit diesem Spec kann man auch gut den Iron Golem skillen und aus ihm eine weitere Aura generieren. Wenn man den Golem zum Beispiel aus einem Insight macht, das ja nicht gerade teuer ist, dann erhält der Golem die Meditationsaura davon. Die restlichen Punkte sollte man dann in Golem Mastery stecken, damit der Iron Golem mehr TP bekommt.


Golem Mastery / Golem-Beherrschung

20 Punkte - Das wichtigste daran ist, dass er das Leben des Iron Golems erhöht, dadurch sollte eben jener eigentlich nicht mehr sterben. Zusätzlich bekommt er noch mehr Attack Bonus und etwas mehr Run/Walkspeed.




Beim Boner werden die restlichen Skills in Bone Spear und Bone Wall/Prison gesteckt. Allerdings sollte man sich bewusst sein, dass der Schaden den man macht nicht vergleichbar mit einem richtigen Bone Necro ist. Bei Bots besteht außerdem noch die Gefahr, dass der Necro ewig versucht mit Bone Spear etwas zu töten, statt einfach Corpse Explosion zu nutzen. Man könnte auch Bone Spirit skillen, allerdings halte ich davon nichts, da er weniger Schaden als Bone Spear macht und dazu noch ein Single Target Angriff ist. Bone Wall/Prison gibt zudem noch etwas bonus auf Bone Shield.


Summoning Spells:

Bone Spear / Knochenspeer

20 Punkte - Bietet einen alternativen Angriff zu CE, und kann den Merc dabei unterstützen die erste Leiche zu bekommen. Außerdem nützlich gegen Bosse und immune Mobs, als zusätzliche Schadensquelle.


, Bone Wall, Bone Prison / Knochenwand, Knochengefängnis

20 Punkte - Sucht euch eien davon aus, als Synergie zu Bone Spear und Bone Shield.





Der Poison Necro setzt auf Poison Nova als zusätzlichen Schaden. Der Schaden der Nova ist allerdings nicht wirklich berauschend, daher dient sie auch eher als kleiner Damage Add und Angriff gegen immune Gegner.


Poison and Bone Spells:

Poison Nova / Gift-Nova

20 Punkte - Der Hauptskill, demzufolge maxen. Man sollte jedoch bedenken, dass Corpse Explosion der weitaus bessere Crowd Killer ist.


, Poison Dagger, Poison Explosion / Gift-Dolch, Gift-Explosion

20 Punkte - Hier kommen die restlichen Punkte rein, als Synergie zu Poison Nova. Die Skills selbst sind eigentlich nicht zu gebrauchen, Poison Explosion braucht wie Corpse Explosion eine Leiche und fällt daher aus, weil der Schaden einfach zu schwach ist. Poison Dagger macht ebenfalls nicht genug Schaden, um für irgendetwas gut zu sein.






Summoning Spells:

Blood Golem / Blut Golem

Kann ganz nützlich sein, weil er dem Necro ab und an Life leeched, vom Schaden her unterscheidet er sich allerdings nicht von den anderen, da die Golems generell kaum Schaden machen.


Fire Golem / Feuer Golem

Meiner Meinung nach der schlechteste von allen Golems, daher würde ich eher noch den Clay Golem nehmen, als diesen.

Curses:

Lower Resists / Widerstandsschwund

Dieser Fluch ist vor allem nützlich, wenn man viel mit Chars zusammenspielt die magischen Schaden machen, wie Sorcs oder Javas. Zum Solo spielen aber eher ungeeignet, zwar macht CE auch 50% Feuerschaden, aber Amplify Damage ist da effektiver, weil es mehr debuffed und dazu auch Merc+Skeletten etwas bringt.


Dim Vison / Schwache Sicht

Dieser Fluch schränkt die Sicht anderer Monster ein, wodurch sie erst angreifen wenn man direkt bei ihnen steht. Sehr nützlich ist das zum Beispiel gegen Souls, da man sie so recht einfach ausschalten kann.


Attract / Mittelpunkt

Ein weiterer nützlicher Skill der ein Monster verflucht, damit es von anderen Monstern angegriffen wird. Das kann vor allem nützlich sein, wenn man gegen eine Gruppe sehr starker Monster kämpft und man selbst noch kein so gutes Equipment hat.








Rüstung

Empfohlen: Enigma, da führt einfach kein Weg vorbei, Teleport ist unersetzlich. Auch die restlichen Stats sind perfekt. Am besten sockelt man es in eine Rüstung die wenig Stärke benötigt, z.B. Breastplate oder Mageplate.



Alternative: Zu Enigma gibt es eigentlich keine Alternative, aber wenn man sich noch keine Leisten kann, muss ja solang etwas anderes herhalten. Hier wären unter anderem denkbar:
  • [Sol Um Um] - +2 Necro Skills, viel Mana, Resis und Bone Armor Proc
  • - +1 Skill, Resis, Faster Cast Rate
  • - +2 Summoning Skills, hohe Defense, Faster Run/Walk, ggf. andere Setboni




Helm

Empfohlen: Harlequin Crest aka Shako, das einzige was noch besser wäre, ist ein Rare Circlet mit sehr guten Stats. Vom Preis-/Leistungsverhältnis ist Harle unschlagbar.



Alternative:
  • Rare Circlet - +2 Necro Skills, Str/Dex, Life/Mana, Resis
  • - +1 Skill, Energie, Vitalität, FRW
  • - +1 Necro Skills, Mana, Giftresi
  • - Viel Mana, allerdings nur in Verbindungen mit anderen Set Items eine ernsthafte Alternative




Handschuhe

Empfohlen: Magefist gibt 20% FCR, 25%Manareg und +1 Fire Skill (gibt +1 auf Corpse Explosion, also sehr nett), ist außerdem recht leicht zu bekommen. Allerdings gibt es bei den Handschuhen auch gute Alternativen.



Alternative:
  • - +2 Curses, 20%FCR, 30% Kälteresi und, vor allem für Poisoner sehr nett, +25% Giftschaden
  • - Wer Manaprobleme hat, sollte sich diese Handschuhe für den ultimativen Manaboost holen.
  • - Wer schon genug FCR hat und/oder FastMod nutzt, kann die Handschuhe auch für ein bisschen mehr MF+GF nutzen.




Schuhe

Empfohlen: Bei den Schuhen gibt es ebenfalls mehrere Kandidaten, ich habe mich bei meinem Necro für Waterwalk entschieden wegen gutem Dex- und Lifebonus, aber einen eindeutigen Gewinner gibt es hier nicht.



Alternative:
  • - Stärke, Vitalität, hohe Giftresistenzen und kann Ätherisch sein dank Selfrepair
  • - Stärke, Vitalität und bis zu 50% MF
  • - +1-2 Skeleton Mastery, Stärke und Geschick




Gürtel

Empfohlen: Arachnid Mesh ist der einzige Gürtel mit +Skill, also ist er eigentlich optimal für uns, dazu kommen noch 20% FCR sowie 5% mehr Mana.



Alternative:
  • - Sehr viel Vitalität, FHR, %Damage Reduce
  • - Für die Leute die kein FCR mehr brauchen und stattdessen mehr MF/GF wollen
  • - Viel Leben und Mana, Cannot be frozen und ggf. noch weitere Setboni




Amulett

Empfohlen: Mara's Kaleidoscope ist eigentlich das Standardamulett, einzig Rares oder Crafted Amulette stellen gute Alternativen dar.



Alternative:
  • Rare, Crafted oder Unique Amulette mit +Skill und guten Adds wie Stärke, Resis, Life etc.




Ringe

Empfohlen: Entweder Stone of Jordan, oder Bul Kathos' Wedding Band, natürlich wegen den +1 Skill darauf. Da ich kein Mana mehr benötige, hab ich mich für 2x Bul Kathos' entschieden für mehr Leben.



Alternative:
  • - +1 Skill, sehr viel Mana
  • Rare Ringe - FCR, Str, Life, Resis oder andere gute Stats
  • - Für die MF Freaks




Waffe

Empfohlen: Heart of the Oak ist eigentlich das beste was man bekommen kann, +3 Skills, viel FCR, 15% Mana, Dex und noch Resis obendrauf, was will man mehr?



Alternative:
  • Magische, Rare oder Unique Necrostäbe mit möglichst vielen +Skills, an HotO kommt allerdings nichts ran
  • [Ber Tir Um Mal Lum] - Level 9 Fanatismus Aura on Equip, dazu viel Stärke und etwas Crushing Blow, wenn man gegen Bosse selbst etwas nachhelfen will.




Schild

Empfohlen: Hier führt kein Weg an Homunculus vorbei, dieses Schild hat einfach alles was man braucht. Skills, Faster Blockrate, hohe Resis, viel Mana und dazu noch eine super Blockchance.



Alternative:
  • - nur in Verbindung mit dem kompletten Set




2. Waffenslot

Empfohlen: + , logischerweise wegen BO.

Alternative: + für MF.




Inventar

Empfohlen:
  • - +Skill, Stats/Resis, +%XP
  • - +Skills, Stats, Resis
  • Small Charms - Leben und fehlende Resistenzen

Alternative:
  • - MF, GF und reduzierte Händlerpreise, schadet nicht
  • Small Charms - Magic Find
  • Grand Charms - Skiller werden für den Summoner eigentlich nicht benötigt







Der Merc ist für den Summoner extrem wichtig, da er nicht nur ein Auraspender ist, wie für andere Chars, sondern aktiv am Geschehen beteiligt ist. Mit dem richtigen Equip kommt ein guter Merc auf ~10.000 Schaden, dazu kommt noch, dass er nahezu immer auf Gegner schlägt die mit Amplify Damage verflucht sind, was den Schaden nochmal stark anhebt. Dadurch kann der Merc sehr einfach einzelne Gegner töten und uns somit die Leichen bringen, die wir für Corpse Explosion benötigen.

Stellt sich nun natürlich noch die Frage welchen Merc wir nehmen, wobei es da eigentlich keine zwei Meinungen gibt. Der Akt 2 Merc hat einfach die besten Vorraussetzungen, da er von Haus aus eine Aura mitbringt und auch die besten Waffen tragen kann, da können andere Mercs einfach nicht mithalten.

Nun müssen wir nurnoch wissen welche Aura es sein soll, am Anfang würde ich hier noch zu Prayer raten, weil die Aura dafür sorgt, dass die Skelette sich immer fleißig selbst heilen und nicht sterben. Wenn man aber erstmal genug +Skills hat gibt es nurnoch eine Wahl, den Might Merc, der sowohl seinen Schaden, als auch den unserer Skelette nochmal gut pushed.

Da wir jetzt also wissen, dass wir einen Akt2 Might Merc wollen, fehlt noch das passende Equipment für ihn:



Waffe

Empfohlen: Vom Preis-/Leistungsverhältnis gibt es hier nur eine Wahl, Obedience. Die Waffe hat eigentlich alles was unser Merc braucht, viel Crushing Blow gegen Bosse, sehr hoher Schaden, FHR, Enchant Proc, Stärke, Geschick etc. Dazu sind die Runen sehr einfach zu besorgen, Rohling sollte natürlich eine Ätherische Waffe sein, z.B. Thresher oder Cryptic Axe.



Alternative:
  • [Ber Mal Ber Ist] - Die Conviction Aura macht die Monster gegen Corpse Explosion noch anfälliger und senkt zudem noch die Verteidigung. Dazu kommen wie bei Obedience 40% Crushing Blow, hoher Schaden und 35% Faster Run/Walk und Prevent Monsterheal
  • [Ral Tir Tal Sol] - Eigentlich nur in frühen Charleveln eine Alternative, wenn man vor allem auf die Meditation Aura angewiesen ist. Der Schaden ist zwar ganz passabel, aber das Crushing Blow fehlt leider.




Rüstung

Empfohlen: Natürlich kommt hier nur Fortitude infrage, allein wegen den 300% Extraschaden, aber auch wegen den sonstigen Boni. Rohling ist eine Eth Bugged Armor mit 1000+ Defense



Alternative:
  • - Stärke, Resis, Life, Cannot be frozen, am besten Eth+Upped
  • [Shael Um Pul Lum] - Extrem hohe Verteidigung, daher am besten in eine Eth Bugged Armor bauen. Dazu noch viel FHR und ein paar Resis.




Helm

Empfohlen: Als Helm ist Andariel's Visage die beste Wahl, am besten gesockelt mit einem IAS+Fireresi Juwel und Ätherisch. Der Helm hat alles was man braucht, Lifeleech, Stärke, IAS, +Skills und eine gute Defense.



Alternative:
  • - Viel Leech, Geschick, Leben, Fireresi und Extragold
  • - Leech und %Damage Reduce
  • - Sehr viel Crushing Blow, daher ist dieser Helm vor allem wenn man viele Bosse farmt eine ernsthafte Überlegung wert.







Am Anfang sollte man erstmal seine Skelette summonen, wenn der Char und Merc noch nicht so stark sind, macht man das am besten in Akt1, da die Mobs dort nicht so stark sind. Wenn man gutes Equip hat, kann man aber auch Pindle oder Eldritch/Shenk dafür nutzen und hat dabei direkt noch die Chance auf ein paar Items. Bei Pindle kann man zudem die Untoten die vor dem Tempel herumliegen summonen, bevor diese auferstehen. +Skills von Items oder Schreinen wirken nur zum Zeitpunkt des Summonens, dadurch kann man z.B. zum Beschwören der Skelette eine Waffe+Schild mit möglichst vielen +Skills anziehen und dannach auf MF Equip switchen, die Skelette bleiben trotzdem gleich stark.

Der Kampf gegen normale Monster läuft so ab, dass man in die Nähe einer Monstergruppe ported, Amplify Damage casted und zusieht, wie die Skelette und der Merc den ersten Mob töten. Sobald das geschafft ist, wird 1-2x Corpse Explosion gecastet, bis nichts mehr steht. Gegen Aktbosse oder besonders hartnäckige Unique Monster nehmen wir Decrepify statt Amplify Damage, damit werden sie zum Kinderspiel, da sie teilweise sogar in ihrer Hitrecovery gelocked werden und nichts mehr machen.

Dieser Char ist auch für Hardcore besonders geeignet, da er dank den vielen Skeletten gut geschützt ist und sich dadurch auch mit schlechtem Equip sicher spielen lässt. Ebenso ist es natürlich am Ladderanfang, der einzige Char der da noch besser ist, ist die Sorc dank Teleport. Aber kein anderer Char kann so viel MF Equip anziehen wie der Necro und dabei kaum an Killspeed verlieren.

Hier noch ein paar Wissenswerte Informationen bezüglich der Breakpoints für den Necro:

Faster Cast Rate
Frames1514131211109
%FCR0918304875125
Faster Hit Recorvery
Frames13121110987654
%FHR05101626395686152377
Faster Block Rate
Frames11109876543
%FBR061320325286174600







Wenn ihr Muddy's D2NT oder den Etalbot nutzt könnt ihr diesen Teil überspringen, denn mit den aktuellen Versionen sollte der Summoner auch ohne Änderungen funktionieren.


Wer den Sternenlooper D2NT nutzt, sollte sich meine NTAttack.ntj nehmen, bei der ich einige Änderungen für den Necro vorgenommen habe:

PHP Code:
const NTA_DAMAGE_NONE 0;
const 
NTA_DAMAGE_PHYSICAL 1;
const 
NTA_DAMAGE_MAGIC 2;
const 
NTA_DAMAGE_FIRE 3;
const 
NTA_DAMAGE_LIGHTNING 4;
const 
NTA_DAMAGE_COLD 5;
const 
NTA_DAMAGE_POISON 6;

var 
_NTA_SkillHand = new Array(7);
var 
_NTA_SkillDamage = new Array(7);
var 
_NTA_SkillRange = new Array(7);
var 
_holyCount 0;
var 
_castCount 0;
var 
_CurseState;
var 
_RevCount =0;
var 
_SpearCount =0;


    
function 
NTA_Initialize()
{
    if(
NTConfig_AttackSkill[1] == || NTConfig_AttackSkill[3] == 0)
        
NTA_DetectAttackPattern();

    for(var 
i++)
    {
        if(
NTConfig_AttackSkill[i] > 0)
        {
            
_NTA_SkillHand[i] = GetBaseStat("skills.txt"NTConfig_AttackSkill[i], 166) ? NTC_HAND_RIGHT;
            
_NTA_SkillDamage[i] = NTA_GetDamageType(NTConfig_AttackSkill[i]);

            if(
me.areaid == 132)
                
_NTA_SkillRange[i] = 3;
            else
            switch(
NTConfig_AttackSkill[i])
            {

            case 
6:  //Magic Arrow
            
case 7:  //Fire Arrow
                
_NTA_SkillRange[i] = 15;
                break;
            case 
10//Jab
                
_NTA_SkillRange[i] = 3;
                break;
            case 
11//Cold Arrow
            
case 12//Multiple Shot
            
case 16//Exploding Arrow
            
case 21//Ice arrow
            
case 22//Guided arrow
                
_NTA_SkillRange[i] = 20;
                break;
            case 
24//Charged Strike
                
_NTA_SkillRange[i] = 3;
                break;
            case 
25//Plague jav
                
_NTA_SkillRange[i] = 10;
                break;
            case 
26://Strafe
            
case 27://Immolation Arrow
                
_NTA_SkillRange[i] = 15;
                break;
            case 
30//Fend
                
_NTA_SkillRange[i] = 3;
                break;
            case 
31//Freezing arrow
                
_NTA_SkillRange[i] = 15;
                break;
            case 
35//Lightning Fury
                
_NTA_SkillRange[i] = 12;
                break;
            case 
44//Frost Nova
            
case 48// Nova
                
_NTA_SkillRange[i] = 10;
                break;
            case 
64// Frozen Orb
                
_NTA_SkillRange[i] = 15;
                break;
            case 
74// Corpse Explosion
                
_NTA_SkillRange[i] = 10;
                break;
            case 
97//Smite
                
_NTA_SkillRange[i] = 3;
                break;
            case 
101//holy bolt
                
_NTA_SkillRange[i] = 3;
                break;
            case 
106//Zeal
            
case 112//Blessed Hammer
                
_NTA_SkillRange[i] = 3;
                break;
            case 
147:
                
_NTA_SkillRange[i] = 3;
                break;
            case 
151//Whirlwind
                
_NTA_SkillRange[i] = 8;
                break;
            case 
225:  //Fire Storm
            
case 229:  //Molten Boulder
            
case 230:  //Arctic Blast
            
case 232:  //Feral Rage
            
case 233:  //Maul
            
case 238:  //Rabies
            
case 239:  //Fire Claws
            
case 240:  //Twister
            
case 242:  //Hunger
            
case 243:  //Shockwave
            
case 244:  //Volcano
                
_NTA_SkillRange[i] = 3;
                break;
            case 
245:  //Tornado
                
_NTA_SkillRange[i] = 6;
                break;
            case 
248:  //Fury        
                
_NTA_SkillRange[i] = 3;
                break;

            default:
                
_NTA_SkillRange[i] = 25;
                break;
            }
        }
    }
}

function 
NTA_KillMonster(classid)
{
    var 
_target;

    if(
NTConfig_AttackSkill[1] < 1)
        return 
false;

    
_target NTC_FindUnit(NTC_UNIT_MONSTERclassid5);

    if(!
_target)
        return 
false;

    if(
_target.IsAttackable())
    {
        var 
_attackcount 0;

        while(
_attackcount 150 && NTA_IsValidMonster(_target))
        {
            if(
NTA_Attack(_target, (_attackcount%30) == 0) < 2)
                break;

            
_attackcount++;
        }
    }
    
    

    return (
_target.hp <= || _target.mode == || _target.mode == 12);
}

function 
ReviveDead()
{
    var 
_breaker=0;
    var 
_skiplist;

        
_target NTC_FindUnit(NTC_UNIT_MONSTER);


    
_RevCount _RevCount 2;
    
     do
      {
        
_skiplist = new Array();
        
                 if(
_target.mode == 12 && !_target.GetState(96))
                {
            if(
_skiplist.indexOf(_target.gid) < 0)
            {
                  if((
GetDistance(me_target) < 15))
                  {
                    var 
_pos me.GetOptimalAttackPos(_target.areaid_target.x_target.y34);
                    if(
_pos)
                    {
                        
//NTM_MoveTo(_target.areaid, _pos[0], _pos[1], 0);
                        
if(!NTC_CastSkill(70NTC_HAND_RIGHT,_target.x,_target.y))
                        {
                            
_RevCount++;
                            
_breaker++;
                            
_skiplist.push(_target.gid);
                            
                        }
                        else
                        {
                            
_RevCount++;
                            
_breaker++;
                        }
                    }
                }    
               
                else
                
                    
_skiplist.push(_target.gid);     
                     
                
            }
        }

        if (
_breaker >= 7  || _target == null || _RevCount >= 15)
        {
            break;
            
_breaker 0;
        }
                

          }while(
_target.GetNext());
                
                      
}


function 
NTTMGR_TownManager2()
{
    

    
_NTTMGR_BuyTP = (NTTMGR_CheckScrolls(1) < 4);
    
    
_NTTMGR_DoHeal NTT_CheckHeal();
    
    
_NTTMGR_DoRepair NTT_CheckRepair(1);
    
    
_NTTMGR_RemoveCurse NTTMGR_CheckCurse(NTConfig_CheckSelfSafe 0x01 0x7E 0NTConfig_CheckMercSafe 0x01 0x7E 0);

    

    
NTC_PutSkill(115NTC_HAND_RIGHT);

    switch(
me.act)
    {
    case 
1:
        if(
_NTTMGR_DoHeal || _NTTMGR_RemoveCurse || _NTTMGR_BuyTP )
            
NTTMGR_VisitAkara();

        
        if(
_NTTMGR_DoRepair)
            
NTTMGR_VisitCharsi();
        
        break;

    case 
2:
        if(
_NTTMGR_DoHeal || _NTTMGR_RemoveCurse || _NTTMGR_DoRepair)
            
NTTMGR_VisitFara();
        if( 
_NTTMGR_BuyTP)
            
NTTMGR_VisitDrognan();
        

        
        break;

    case 
3:
        if(
_NTTMGR_DoHeal || _NTTMGR_RemoveCurse || _NTTMGR_BuyTP)
            
NTTMGR_VisitOrmus();

        if(
_NTTMGR_DoRepair || _NTTMGR_BuyKey)
            
NTTMGR_VisitHratli();
        
        break;

    case 
4:
        if(
_NTTMGR_DoHeal || _NTTMGR_RemoveCurse || _NTTMGR_BuyTP)
            
NTTMGR_VisitJamella(false);
        if(
_NTTMGR_DoRepair)
            
NTTMGR_VisitHalbu();

        
        break;

    case 
5:
        if(
_NTTMGR_DoHeal || _NTTMGR_RemoveCurse || _NTTMGR_BuyTP)
            
NTTMGR_VisitMalah();

        
        if(
_NTTMGR_DoRepair)
            
NTTMGR_VisitLarzuk();
        
        break;
    }
}

function 
IsBroken()
{
    var 
_weapon;
    
_weapon me.GetItems();

        if(
_weapon)
        {
            for(var 
_weapon.length i++)
            {
                if(
_weapon[i].itemflag&0x100)
                {
                    if(
_weapon[i].itemloc == || _weapon[i].itemloc == 5)
                    {
                        
NTTMGR_VisitTown();
                        
NTTMGR_TownManager2();
                    }
                    else
                        {
                        
NTTMGR_VisitTown();
                        
NTTMGR_TownManager2();
                        }
                    break;
                }
            }
        }
    
}




function 
NTA_ClearPosition(rangepickitemsafelevel)
{
    var 
_orgx_orgy;
    var 
_spectype = [0x0A0x010x01];
    var 
_skiplist;
    var 
_attackcount 0;
    var 
_target;
    var 
_distance_mingid_mindistance;
    var 
_result;
    

    if(
NTConfig_AttackSkill[1] < || NTConfig_AttackSkill[3] < 1)
        return 
false;

    switch(
arguments.length)
    {
    case 
0:
        
range 20;
    case 
1:
        
pickitem false;
    case 
2:
        
safelevel 0;
    default:
        if(
NTConfig_CheckSelfSafe 0x01 && NTConfig_CheckMercSafe 0x01)
            
safelevel 0;
        break;
    }

    
_orgx me.x;
    
_orgy me.y;

    for(var 
_spectype.length i++)
    {
        
_skiplist = new Array();

        while(
_attackcount < (i+1)*30)
        {
            
_mindistance 100000;

            
_target NTC_FindUnit(NTC_UNIT_MONSTER);

            if(
NTConfig_FastPick)
            {
                var 
_fastpickx me.x;
                var 
_fastpicky me.y;
                
NTSI_PickItems();
                
NTM_MoveTo(me.areaid_fastpickx_fastpicky);
            }
            
NTTMGR_TeleChick()
            
NTTMGR_TownChick()
            if(
_target)
            {
                do
                {
                    if(
_skiplist.indexOf(_target.gid) < 0)
                    {
                        
                        if(
_target.IsAttackable() && (_target.spectype&_spectype[i]))
                        {
            
                            if(
GetDistance(_orgx_orgy_target.x_target.y) <= range && NTA_IsValidMonster(_target))
                            {
                                
_distance GetDistance(me_target);

                                if(
_distance _mindistance)
                                {
                                    
_mingid _target.gid;
                                    
_mindistance _distance;
                                }
                            }
                        }
                        else
                            
_skiplist.push(_target.gid);
                    }
                } while(
_target.GetNext());
            }

            if(
_mindistance 100000)
            {
                
_target NTC_FindUnit(NTC_UNIT_MONSTER_mingid);

                if(
_target)
                {
                    
_result NTA_Attack(_target, (_attackcount%30) == 0);

                    switch(
_result)
                    {
                    case 
1:
                        
_skiplist.push(_mingid);
                        break;
                    case 
2:
                    case 
3:
                        
_attackcount++;
                        break;
                    default:
                        return 
false;
                    }
                }
            }
            else
                break;
        }
    }

    if(
me.classid == NTC_CHAR_CLASS_PALADIN)
    {
        if(
_attackcount && (parseInt(me.hp*100/me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp*100/me.mpmax) < NTConfig_UseRedemptionMP))
        {
            if(
NTC_PutSkill(124NTC_HAND_RIGHT))
                
NTC_PingDelay(1000);
        }
    }
     if(
NTConfig_UseFindItem && me.classid == NTC_CHAR_CLASS_BARBARIAN && _attackcount 2)
    {
        if(!
NTA_CheckForCloseMonsters(5))
        {
            
//Print("ÿc<No Monsters close - looting");
            
NTA_FindItem(NTConfig_FindItemRange);
        }
    }


    if(
me.classid == NTC_CHAR_CLASS_NECROMANCER && _RevCount <= 15)
    {
        if(
_attackcount 2)
            
            
ReviveDead();
            
        
    }
    if(
NTConfig_UseFindItem && me.classid == NTC_CHAR_CLASS_BARBARIAN && _attackcount 2)
    {
        if(!
NTA_CheckForCloseMonsters(5))
        {
            
//Print("ÿc<No Monsters close - looting");
            
NTA_FindItem(NTConfig_FindItemRange);
        }
    }

    


    if(
NTConfig_OpenChest)
    {
        
_target NTC_GetSpecialChest();

        if(
_target && GetDistance(_orgx_orgy_target.x_target.y) >= range && NTC_OpenChest(_target))
            
_attackcount++;
    }

    if(
pickitem && _attackcount 0)
        
NTSI_PickItems();

    if(
NTConfig_OpenAllNearbyChests)
        
NTL_OpenNearbyChests();

    switch(
safelevel)
    {
    case 
1:
        return 
NTTMGR_CheckSafe(0x00NTConfig_CheckMercSafe&0x01);
    case 
2:
        return 
NTTMGR_CheckSafe(NTConfig_CheckSelfSafeNTConfig_CheckMercSafe);
    }

    return 
true;
}

function 
NTA_ClearLevel(pickitemsafelevel)
{
    var 
i;
    var 
_room_rooms;
    var 
_distance_minindex_mindistance;

    
_room GetRoom();

    if(!
_room)
        return 
false;    

    switch(
arguments.length)
    {
    case 
0:
        
pickitem true;
    case 
1:
        
safelevel 2;
    default:
        if(
NTConfig_CheckSelfSafe 0x01 && NTConfig_CheckMercSafe 0x01)
            
safelevel 0;
        break;
    }

    
_rooms = new Array();

    do
    {
        
_rooms.push([parseInt(_room.x*_room.xsize*5/2), parseInt(_room.y*_room.ysize*5/2)]);
    } while(
_room.GetNext());

    while(
_rooms.length 0)
    {
        
_mindistance 100000;

        for(
_rooms.length i++)
        {
            
_distance GetDistance(me.xme.y_rooms[i][0], _rooms[i][1]);

            if(
_distance _mindistance)
            {
                
_minindex i;
                
_mindistance _distance;
            }
        }

        if(
NTM_MoveTo(me.areaid_rooms[_minindex][0], _rooms[_minindex][1], 1))
        {
            if(!
NTA_ClearRoom(pickitemsafelevel))
                return 
false;

            
NTP_DoPrecast(false);
        }

        
_rooms.splice(_minindex1);
    }

    return 
true;
}

function 
NTA_ClearRoom(pickitemsafelevel)
{
    if(
NTConfig_uniq)
    {
    var 
_room;
    var 
_spectype = [0x0A];
    var 
_skiplist;
    var 
_attackcount 0;
    var 
_target;
    var 
_distance_mingid_mindistance;
    var 
_result;
    }
    else
    {
    var 
_room;
    var 
_spectype = [0x0A0x010x01];
    var 
_skiplist;
    var 
_attackcount 0;
    var 
_target;
    var 
_distance_mingid_mindistance;
    var 
_result;
    }
    if(
NTConfig_AttackSkill[1] < || NTConfig_AttackSkill[3] < 1)
        return 
false;

    
_room me.GetRoom();

    if(!
_room)
        return 
false;

    switch(
arguments.length)
    {
    case 
0:
        
pickitem false;
    case 
1:
        
safelevel 0;
    default:
        if(
NTConfig_CheckSelfSafe 0x01 && NTConfig_CheckMercSafe 0x01)
            
safelevel 0;
        break;
    }

    for(var 
_spectype.length i++)
    {
        
_skiplist = new Array();

        while(
_attackcount < (i+1)*100)
        {
            
_mindistance 100000;

            
_target NTC_FindUnit(NTC_UNIT_MONSTER);

            if(
_target)
            {
                do
                {
                    if(
_skiplist.indexOf(_target.gid) < 0)
                    {
                        if(
_target.IsAttackable() && (_target.spectype&_spectype[i]))
                        {
                        
NTTMGR_TeleChick()
                        
NTTMGR_TownChick()
                            if(
_room.UnitInRoom(_target) && NTA_IsValidMonster(_target))
                            {
            
                                
_distance GetDistance(me_target);

                                if(
_distance _mindistance)
                                {
                                    
_mingid _target.gid;
                                    
_mindistance _distance;
                                }
                            }
                        }
                        else
                            
_skiplist.push(_target.gid);
                    }
                } while(
_target.GetNext());
            }

            if(
_mindistance 100000)
            {
                
_target NTC_FindUnit(NTC_UNIT_MONSTER_mingid);

                if(
_target)
                {
                    
_result NTA_Attack(_target, (_attackcount%30) == 0);

                    switch(
_result)
                    {
                    case 
1:
                        
_skiplist.push(_mingid);
                        break;
                    case 
2:
                    case 
3:
                        
_attackcount++;
                        break;
                    default:
                        return 
false;
                    }
                }
            }
            else
                break;
        }
    }

    if(
me.classid == NTC_CHAR_CLASS_PALADIN)
    {
        if(
_attackcount && (parseInt(me.hp*100/me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp*100/me.mpmax) < NTConfig_UseRedemptionMP))
        {
            if(
NTC_PutSkill(124NTC_HAND_RIGHT))
                
NTC_PingDelay(1000);
        }
    }
    if(
me.classid == NTC_CHAR_CLASS_NECROMANCER && _RevCount <= 15)
    {
        if(
_attackcount 2)
            
            
ReviveDead();
            
        
    }
        
    

    if(
NTConfig_OpenChest)
    {
        
_target NTC_GetSpecialChest();

        if(
_target && _room.UnitInRoom(_target) && NTC_OpenChest(_target))
            
_attackcount++;
    }

    if(
pickitem && _attackcount 0)
        
NTSI_PickItems();

    if(
NTConfig_OpenAllNearbyChests)
        
NTL_OpenNearbyChests();

    switch(
safelevel)
    {
    case 
1:
        return 
NTTMGR_CheckSafe(0x00NTConfig_CheckMercSafe&0x01);
    case 
2:
        return 
NTTMGR_CheckSafe(NTConfig_CheckSelfSafeNTConfig_CheckMercSafe);
    }

    return 
true;
}



function 
IsBroken()
{
    var 
_weapon;
    
_weapon me.GetItems();

        if(
_weapon)
        {
            for(var 
_weapon.length i++)
            {
                if(
_weapon[i].itemflag&0x100)
                {    
                    if(
_weapon[i].itemloc == || _weapon[i].itemloc == 5)
                    {
                        Print(
"ÿc8My weapon broke, going to town to repair it.")
                        
NTTMGR_VisitTown();
                        
NTTMGR_TownManager();

                    }
                break;    
                }
            }
        }
    
}
function 
HaveArrows()
{
    var 
_weapon;
    var 
_haveAmmo false;
    
_weapon me.GetItems();

        
        if(
_weapon)
        {
            for(var 
_weapon.length i++)
            {        
                    
                    
                    if((
_weapon[i].classid == 526 || _weapon[i].classid == 528) && _weapon[i].itemloc == 5)
                    {
                        if(
_weapon[i].GetStat(70) < 15)
                        {
                            Print(
"ÿc8I'm low on "_weapon[i].name ", going to town to buy more.")
                            
NTTMGR_VisitTown();
                            
NTTMGR_TownManager();
                        }

                        
_haveAmmo true;
                        break;    
                    }
            }
        }

        if(!
_haveAmmo)
        {
            Print(
"ÿc8I have no ammo, going to town to buy some.")
            
NTC_PutSkill(NTConfig_AttackSkill[1], NTC_HAND_LEFT);
            
NTTMGR_VisitTown();
            
NTTMGR_TownManager();    
        }
}

function 
NTA_IsValidMonster(monster)
{
    var 
_classid;

    if(
monster.hp <= || monster.mode == || monster.mode == 12)
        return 
false;
        

    
_classid monster.classid;

    if(((
_classid >= 110 && _classid <= 113) || _classid == 608) && monster.mode == 8// ignore flying scavengers
        
return false;

     if(
_classid == 68 && monster.mode == 14// ignore burrowing maggots
        
return false;

    if(
_classid >= 258 && _classid <= 263 && monster.mode == 14// ignore submerged WaterWatchers
        
return false;

    if(
_classid == 543 || _classid == 545)
        return 
false;

    if(
monster.name == GetLocaleString(3162) &&  GetDistance(me.x,me.y,monster.x,monster.y) <= 25 )
              if(!
CheckCollision(me.areaidmonster.xmonster.y0) ||  !CheckCollision(me.areaidmonster.xmonster.y1) ||  !CheckCollision(me.areaidmonster.xmonster.y5))
             return 
false;

    if(
monster.GetState(53) || monster.GetState(96)) // Conversion, Revive
        
return false;

    if(
me.classid == NTC_CHAR_CLASS_AMAZON)
    {
        if(
me.areaid == 131)
            
NTC_PingDelay(25);
        if(
me.GetSkill(12true) > 1)
            
HaveArrows();
        else
            
IsBroken();
    }

    if(
me.classid == NTC_CHAR_CLASS_DRUID)
    {
        if(!
me.GetState(144))
            
NTC_CastSkill(250NTC_HAND_RIGHT);
        if(!
me.GetState(151))
            
NTC_CastSkill(235NTC_HAND_RIGHT);
        if(!
me.GetState(149))
            
NTC_CastSkill(226NTC_HAND_RIGHT);

        
    }
    if(
me.classid == NTC_CHAR_CLASS_NECROMANCER)
    {
        if(!
me.GetState(14))
            
NTC_CastSkill(68NTC_HAND_RIGHT)

    }

    return 
true;

}

function 
NTA_GetDamageType(skillid)
{
    if(
skillid == 74// Corpse Explosion
        
return NTA_DAMAGE_PHYSICAL;

    if(
skillid == 112// Blessed Hammer
        
return NTA_DAMAGE_MAGIC;

    switch(
GetBaseStat("skills.txt"skillid233))
    {
    case 
"cold":
        return 
NTA_DAMAGE_COLD;
    case 
"fire":
        return 
NTA_DAMAGE_FIRE;
    case 
"ltng":
        return 
NTA_DAMAGE_LIGHTNING;
    case 
"mag":
        return 
NTA_DAMAGE_MAGIC;
    case 
"pois":
        return 
NTA_DAMAGE_POISON;
    case 
"stun":
        return 
NTA_DAMAGE_NONE;
    default:
        if(
GetBaseStat("skills.txt"skillid178) || GetBaseStat("skills.txt"skillid182)) // aura or passive
            
return NTA_DAMAGE_NONE;
    }

    return 
NTA_DAMAGE_PHYSICAL;
}

function 
NTA_GetResistance(enemytype)
{
    switch(
type)
    {
    case 
NTA_DAMAGE_PHYSICAL:
        return 
enemy.GetStat(36);
    case 
NTA_DAMAGE_MAGIC:
        return 
enemy.GetStat(37);
    case 
NTA_DAMAGE_FIRE:
        return 
enemy.GetStat(39);
    case 
NTA_DAMAGE_LIGHTNING:
        return 
enemy.GetStat(41);
    case 
NTA_DAMAGE_COLD:
        return 
enemy.GetStat(43);
    case 
NTA_DAMAGE_POISON:
        return 
enemy.GetStat(45);
    }

    return 
0;
}

function 
NTA_DetectAttackPattern()
{
    switch(
me.classid)
    {
    case 
NTC_CHAR_CLASS_AMAZON:
        return 
NTA_AmazonAttackPatternInt();
    case 
NTC_CHAR_CLASS_SORCERESS:
        return 
NTA_SorceressAttackPatternInt();
    case 
NTC_CHAR_CLASS_NECROMANCER:
        return 
NTA_NecromancerAttackPatternInt();
    case 
NTC_CHAR_CLASS_PALADIN:
        return 
NTA_PaladinAttackPatternInt();
    case 
NTC_CHAR_CLASS_BARBARIAN:
        return 
NTA_BarbarianAttackPatternInt();
    case 
NTC_CHAR_CLASS_DRUID:
        return 
NTA_DruidAttackPatternInt();
    case 
NTC_CHAR_CLASS_ASSASSIN:
        return 
NTA_AssassinAttackPatternInt();
    }

    return 
false;
}

// Return value : 0 = Unrecoverable process, 1 = Unavailable attack, 2 = Onetime fail, 3 = Success
function NTA_Attack(targetfirstorder)
{
    switch(
me.classid)
    {
    case 
NTC_CHAR_CLASS_AMAZON:
        return 
NTA_AmazonAttackInt(targetfirstorder);
    case 
NTC_CHAR_CLASS_SORCERESS:
        return 
NTA_SorceressAttackInt(targetfirstorder);
    case 
NTC_CHAR_CLASS_NECROMANCER:
        return 
NTA_NecromancerAttackInt(targetfirstorder);
    case 
NTC_CHAR_CLASS_PALADIN:
        return 
NTA_PaladinAttackInt(targetfirstorder);
    case 
NTC_CHAR_CLASS_BARBARIAN:
        return 
NTA_BarbarianAttackInt(targetfirstorder);
    case 
NTC_CHAR_CLASS_DRUID:
        return 
NTA_DruidAttackInt(targetfirstorder);
    case 
NTC_CHAR_CLASS_ASSASSIN:
        return 
NTA_AssassinAttackInt(targetfirstorder);
    }

    return 
0;
}

// Internal function
function NTA_AmazonAttackPatternInt()
{
    
    var 
_maxindex_maxskill;
    var 
_avgskilllevel = new Array();

    
_avgskilllevel[0]  = me.GetSkill(35false);
    
_avgskilllevel[1]  = parseInt((me.GetSkill(31false) + me.GetSkill(11false) + me.GetSkill(21false)) /);
    
_avgskilllevel[2]  = me.GetSkill(26false);


    
_maxindex = -1;
    
_maxskill 0;

    for(var 
_avgskilllevel.length i++)
    {
        if(
_avgskilllevel[i] > _maxskill)
        {
            
_maxindex i;
            
_maxskill _avgskilllevel[i];
        }
    }

    switch(
_maxindex)
    {
    case 
0// Lightning Fury for Javazon
        
        
NTConfig_AttackSkill[1] = 35;
        
NTConfig_AttackSkill[2] = 35;
        
NTConfig_AttackSkill[3] = 35;
        
NTConfig_AttackSkill[4] = 35;
        
NTConfig_AttackSkill[5] = 35;
        
NTConfig_AttackSkill[6] = 35;
        
NTConfig_AttackSkill[7] = 24;
        
NTConfig_AttackSkill[8] = 35;
        
NTConfig_AttackSkill[9] = 35;
        break;

    case 
1// Freezing Arrow for Bowzon
        
        
NTConfig_AttackSkill[1] = 31;
        
NTConfig_AttackSkill[2] = 31;
        
NTConfig_AttackSkill[3] = 31;
        
NTConfig_AttackSkill[4] = 31;
        
NTConfig_AttackSkill[5] = 31;
        
NTConfig_AttackSkill[6] = 31;
        
NTConfig_AttackSkill[7] = 31;
        
NTConfig_AttackSkill[8] = 31;
        
NTConfig_AttackSkill[9] = 31;
        break;
    
    case 
2// Cold Arrow + Strafe for Bowzon
    
        
NTConfig_AttackSkill[0] = 11;
        
NTConfig_AttackSkill[1] = 26;
        
NTConfig_AttackSkill[2] = 26;
        
NTConfig_AttackSkill[3] = 26;
        
NTConfig_AttackSkill[4] = 26;
        
NTConfig_AttackSkill[5] = 26;
        
NTConfig_AttackSkill[6] = 26;
        
NTConfig_AttackSkill[7] = 22;
        
NTConfig_AttackSkill[8] = 26;
        
NTConfig_AttackSkill[9] = 26;
        break;
    }

    return (
NTConfig_AttackSkill[1] && NTConfig_AttackSkill[3]);
}


function 
NTA_AmazonAttackInt(targetfirstorder)
{
    var 
_primaryindex;

    if(
NTTMGR_CheckCurse(NTConfig_CheckSelfSafe&0x10NTConfig_CheckMercSafe&0x10))
    {
        if(!
NTTMGR_VisitTown())
            return 
0;
    }

    if(
firstorder && NTConfig_AttackSkill[0] > && NTA_GetResistance(target_NTA_SkillDamage[0]) < 100)
    {
        if(
GetDistance(metarget) > _NTA_SkillRange[0] || !CheckCollision(metarget4))
        {
            var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[0], 4);

            if(
_pos)
                
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
        }

        if(!
NTC_CastSkill(NTConfig_AttackSkill[0], _NTA_SkillHand[0], target))
            return 
2;

        return 
3;
    }

    

    
_primaryindex = (target.spectype&0x0A) ? 3;


    
    if(
me.GetSkill(12true) < && target.spectype == 9)
    {
        if(!
NTA_AmazonCastSkillInt(7target))
            return 
2;

        return 
3;

    }

    if(
NTA_GetResistance(target_NTA_SkillDamage[_primaryindex]) <= 90)
    {
        if(!
NTA_AmazonCastSkillInt(_primaryindextarget))
            return 
2;

        return 
3;
    }
    
    
    if(
NTConfig_AttackSkill[5] > 0  && NTA_GetResistance(target_NTA_SkillDamage[5]) <= 80)
    {
        if(!
NTA_AmazonCastSkillInt(5target))
            return 
2;

        return 
3;
    }
    
    
    if(
NTConfig_AttackSkill[8] > 0)
    {
        if(!
NTA_AmazonCastSkillInt(8target))
            return 
2;

        return 
3;
    }

    

    if(
NTA_GetResistance(target_NTA_SkillDamage[_primaryindex]) < 100 || (_primaryindex == && NTC_GetMerc()))
    {
        if(!
NTA_AmazonCastSkillInt(_primaryindextarget))
            return 
2;

        return 
3;
    }

    return 
1;
}

function 
NTA_AmazonCastSkillInt(indextarget)
{

    if(
GetDistance(metarget) > _NTA_SkillRange[index] || !CheckCollision(metarget4))
    {
        var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[index], 4);

        if(
_pos)
            
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
    }
  
    return 
NTC_CastSkill(NTConfig_AttackSkill[index], NTC_HAND_LEFTtarget);
    
    if(
NTConfig_AttackSkill[index+1] > 0)
    {
        if(
GetDistance(metarget) > _NTA_SkillRange[index+1] || !CheckCollision(metarget4))
              {
                 var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[index+1], 4);

                 if(
_pos)
                        
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
             }

               return 
NTC_CastSkill(NTConfig_AttackSkill[index+1], _NTA_SkillHand[index+1], target);
        }  
    
    
//for(var i = 0 ; i < 25 ; i++)
      //{
          //    NTC_Delay(NTC_DELAY_FRAME);
        //
          //    if(me.GetSkillStatus(NTConfig_AttackSkill[index]) != 8)
       //          break;
       //}
   
}

function 
NTA_SorceressAttackPatternInt()
{
    var 
_maxindex_maxskill;
    var 
_avgskilllevel = new Array();

    
_avgskilllevel[0] = parseInt((me.GetSkill(59false)+me.GetSkill(39false)+me.GetSkill(45false)+me.GetSkill(55false))/4);
    
_avgskilllevel[1] = parseInt((me.GetSkill(53false)+me.GetSkill(38false)+me.GetSkill(48false)+me.GetSkill(49false))/4);
    
_avgskilllevel[2] = parseInt((me.GetSkill(47false)+me.GetSkill(36false)+me.GetSkill(56false)+me.GetSkill(64false))/4);
    
_avgskilllevel[3] = parseInt((me.GetSkill(47false)+me.GetSkill(36false)+me.GetSkill(56false))/3);

    
_maxindex = -1;
    
_maxskill 0;

    for(var 
_avgskilllevel.length i++)
    {
        if(
_avgskilllevel[i] > _maxskill)
        {
            
_maxindex i;
            
_maxskill _avgskilllevel[i];
        }
    }

    switch(
_maxindex)
    {
    case 
0// Blizzard + Glacial Spike
        
NTConfig_AttackSkill[1] = 59;
        
NTConfig_AttackSkill[2] = 55;
        
NTConfig_AttackSkill[3] = 59;
        
NTConfig_AttackSkill[4] = 55;
        break;
    case 
1// Chain Lightning + Lightning
        
NTConfig_AttackSkill[1] = 49;
        
NTConfig_AttackSkill[3] = 53;
        break;
    case 
2// Fire Ball + Frozen Orb
        
NTConfig_AttackSkill[0] = 64;
        
NTConfig_AttackSkill[1] = 64;
        
NTConfig_AttackSkill[2] = 47;
        
NTConfig_AttackSkill[3] = 64;
        
NTConfig_AttackSkill[4] = 47;
        break;
    case 
3// Fire Ball + Meteor
        
NTConfig_AttackSkill[1] = 56;
        
NTConfig_AttackSkill[2] = 47;
        
NTConfig_AttackSkill[3] = 56;
        
NTConfig_AttackSkill[4] = 47;
        break;
    }

    return (
NTConfig_AttackSkill[1] && NTConfig_AttackSkill[3]);
}

function 
NTA_SorceressAttackInt(targetfirstorder)
{
    var 
_primaryindex;

    if(
NTTMGR_CheckCurse(NTConfig_CheckSelfSafe&0x10NTConfig_CheckMercSafe&0x10))
    {
        if(!
NTTMGR_VisitTown())
            return 
0;
    }

    if(
firstorder && NTConfig_AttackSkill[0] > && NTA_GetResistance(target_NTA_SkillDamage[0]) < 100 && me.GetSkillStatus(NTConfig_AttackSkill[0]) != 8)
    {
        if(
GetDistance(metarget) > _NTA_SkillRange[0] || !CheckCollision(metarget4))
        {
            var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[0], 4);

            if(
_pos)
                
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
        }

        if(!
NTC_CastSkill(NTConfig_AttackSkill[0], _NTA_SkillHand[0], target))
            return 
2;

        return 
3;
    }

    if(
NTConfig_CastStatic 100 && parseInt(target.hp*100/target.hpmax) > NTConfig_CastStatic &&  NTA_GetResistance(targetNTA_DAMAGE_LIGHTNING) <= 80 && (target.name == "Mephisto" || target.name == "Andariel" || target.name == "Baal" || target.name == "Diablo" || target.name == "Duriel" || target.name == "The Countess"))
    {
        var 
_staticlevel NTC_GetSkillLevel(42);

        if(
_staticlevel 0)
        {
            var 
_staticrange;
            var 
_castx_casty;

            
_staticrange Math.floor((5+_staticlevel-1)*2/3);

            if(
GetDistance(metarget) > _staticrange || !CheckCollision(metarget6))
            {
                var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_staticrange6);

                if(
_pos)
                    
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
            }

            if(
target.me.x)
                
_castx me.1;
            else if(
target.me.x)
                
_castx me.1;
            else
                
_castx me.x;

            if(
target.me.y)
                
_casty me.1;
            else if(
target.me.y)
                
_casty me.1;
            else
                
_casty me.y;

            if(!
CheckCollision(target.areaid_castx_casty1))
            {
                
_castx me.x;
                
_casty me.y;
            }

            if(!
NTC_CastSkill(42NTC_HAND_RIGHT_castx_casty))
                return 
2;

            return 
3;
        }
    }

    
_primaryindex = (target.spectype&0x0A) ? 3;

    if(
NTA_GetResistance(target_NTA_SkillDamage[_primaryindex]) <= 90)
    {
        if(!
NTA_SorceressCastSkillInt(_primaryindextarget))
            return 
2;

        return 
3;
    }

    if(
NTConfig_AttackSkill[5] > && NTA_GetResistance(target_NTA_SkillDamage[5]) <= 80)
    {
        if(!
NTA_SorceressCastSkillInt(5target))
            return 
2;

        return 
3;
    }

    if(
NTA_GetResistance(target_NTA_SkillDamage[_primaryindex]) < 100 || (_primaryindex == && NTC_GetMerc()))
    {
        if(!
NTA_SorceressCastSkillInt(_primaryindextarget))
            return 
2;

        return 
3;
    }

    return 
1;
}

function 
NTA_SorceressCastSkillInt(indextarget)
{

        if(
me.GetSkillStatus(NTConfig_AttackSkill[index]) != 8)
        {
        if(
_castCount >= 3)
               {
                
NTC_CastSkill(NTConfig_AttackSkill[3], _NTA_SkillHand[0], target)
                       
_castCount 0;
            }   
                else
                
_castCount++;
         
        if(
GetDistance(metarget) > _NTA_SkillRange[index] || !CheckCollision(metarget4))
              {
                     var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[index], 4);

                 if(
_pos)
                        
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
              }

              return 
NTC_CastSkill(NTConfig_AttackSkill[index], _NTA_SkillHand[index], target);
       }

   if(
NTConfig_AttackSkill[index+1] > 0)
   {
      if(
GetDistance(metarget) > _NTA_SkillRange[index+1] || !CheckCollision(metarget4))
      {
         var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[index+1], 4);

         if(
_pos)
            
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
      }

      return 
NTC_CastSkill(NTConfig_AttackSkill[index+1], _NTA_SkillHand[index+1], target);
   }

   for(var 
25 i++)
   {
      
NTC_Delay(NTC_DELAY_FRAME);

      if(
me.GetSkillStatus(NTConfig_AttackSkill[index]) != 8)
         break;
   }

   return 
false;
}

function 
NTA_NecromancerAttackPatternInt()
{
    
    var 
_maxindex_maxskill;
    var 
_avgskilllevel = new Array();

    
_avgskilllevel[0] = me.GetSkill(84false);
    

    
_maxindex = -1;
    
_maxskill 0;

    for(var 
_avgskilllevel.length i++)
    {
        if(
_avgskilllevel[i] > _maxskill)
        {
            
_maxindex i;
            
_maxskill _avgskilllevel[i];
        }
    }

    switch(
_maxindex)
    {
    case 
0:
        
NTConfig_AttackSkill[0] = 84;
        
NTConfig_AttackSkill[1] = 84;
        
NTConfig_AttackSkill[2] = 84;
        
NTConfig_AttackSkill[6] = 74;
        break;
    case 
1:
        
NTConfig_AttackSkill[1] = 92;
        
NTConfig_AttackSkill[2] = 92;
        
NTConfig_AttackSkill[3] = 84;
        
NTConfig_AttackSkill[4] = 74;
        
NTConfig_AttackSkill[6] = 74;
        break;
    }

    return (
NTConfig_AttackSkill[1] && NTConfig_AttackSkill[3]);
}

function 
GetCurseState(skillid)
{
        if(
NTConfig_Curse == 66)
    
    return 
9;

    if(
NTConfig_Curse == 71)
    
    return 
23;

    if(
NTConfig_Curse == 76)
    
    return 
55;

    if(
NTConfig_Curse == 77)
    
    return 
56;

    if(
NTConfig_Curse == 81)
    
    return 
59;

    if(
NTConfig_Curse == 82)
    
    return 
58;

    if(
NTConfig_Curse == 86)
    
    return 
57;

    if(
NTConfig_Curse == 87)
    
    return 
60;

    if(
NTConfig_Curse == 91)
    
    return 
61;
}

function 
NTA_NecromancerAttackInt(targetfirstorder)
{


    var 
_primaryindex;

    if(
NTTMGR_CheckCurse(NTConfig_CheckSelfSafe&0x10NTConfig_CheckMercSafe&0x10))
    {
        if(!
NTTMGR_VisitTown())
            return 
0;
    }



    if(
me.GetSkill(87true) > && !target.GetState(GetCurseState()) && (target.name == "Baal" && target.name == "Diablo" && target.name == "Mephisto" && target.name == "Duriel"))
        
NTC_CastSkill(87NTC_HAND_RIGHTtarget)
    else if(!
target.GetState(GetCurseState()))
        
NTC_CastSkill(NTConfig_CurseNTC_HAND_RIGHTtarget)

             
        
    if(
target.name == "Lord De Seis")
        
_RevCount _RevCount 1;        
    
        

    if(
firstorder && NTConfig_AttackSkill[0] > && NTA_GetResistance(target_NTA_SkillDamage[0]) < 100 && me.GetSkillStatus(NTConfig_AttackSkill[0]) != 8)
    {
        
        if(
GetDistance(metarget) > _NTA_SkillRange[0] || !CheckCollision(metarget4))
        {
            var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[0], 4);

            if(
_pos)
                
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
                
        }

        
    }


    
_primaryindex = (target.spectype&0x0A) ? 3;

    if(
NTA_GetResistance(target_NTA_SkillDamage[_primaryindex]) <= 90)
    {
        if(!
NTA_NecromancerCastSkillInt(_primaryindextarget))
            return 
2;

        return 
3;
    }

    if(
NTConfig_AttackSkill[5] > && NTA_GetResistance(target_NTA_SkillDamage[5]) <= 80)
    {
        if(
_SpearCount && target.name == "Achmel the Cursed" )
        {
            if(
_SpearCount 1)
                
NTM_WalkTo(me.x+3me.y);
            
NTC_CastSkill(67NTC_HAND_RIGHTtarget);
            
_SpearCount++;
            
//Print(_SpearCount);
        
}    
        
        else if(
target.name == "Horadrim Ancient")
            {
                
NTM_MoveTo(target.areaidtarget.xtarget.y0);
                
NTC_PingDelay(1000);
            }

        else 
        {
            
NTA_NecromancerCastSkillInt(5target)
            return 
2;
        }
        return 
3;
    }

    if(
NTA_GetResistance(target_NTA_SkillDamage[_primaryindex]) < 100 || (_primaryindex == && NTC_GetMerc()))
    {
        if(!
NTA_NecromancerCastSkillInt(_primaryindextarget))
            return 
2;

        return 
3;
    }

    return 
1;
}

function 
NTA_NecromancerCastSkillInt(indextarget)
{
        if(
me.GetSkillStatus(NTConfig_AttackSkill[index]) != 8)
        {
                if(
_castCount >= 3)
               {
                
NTC_CastSkill(NTConfig_AttackSkill[6], _NTA_SkillHand[0], target)
                       
_castCount 0;
            }   
                else
                
_castCount++;

        if(
GetDistance(metarget) > _NTA_SkillRange[index] || !CheckCollision(metarget4))
        {
            var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[index], 4);

            if(
_pos)
                
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
                
        }

        return 
NTC_CastSkill(NTConfig_AttackSkill[index], _NTA_SkillHand[index], target);
    }

    if(
NTConfig_AttackSkill[index+1] > 0)
    {
        if(
GetDistance(metarget) > _NTA_SkillRange[index+1] || !CheckCollision(metarget4))
        {
            var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[index+1], 4);

            if(
_pos)
                
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
                
        }

        return 
NTC_CastSkill(NTConfig_AttackSkill[index+1], _NTA_SkillHand[index+1], target);
    }

    for(var 
25 i++)
    {
        
NTC_Delay(NTC_DELAY_FRAME);

        if(
me.GetSkillStatus(NTConfig_AttackSkill[index]) != 8)
            break;
    }

    return 
false;
}



function 
NTA_PaladinAttackPatternInt()
{
    var 
_maxindex_maxskill;
    var 
_avgskilllevel = new Array();

    
_avgskilllevel[0] = parseInt((me.GetSkill(112false)+me.GetSkill(108false)+me.GetSkill(115false))/3);
    
_avgskilllevel[1] = parseInt((me.GetSkill(106false)+me.GetSkill(96false))/2);
    
_avgskilllevel[2] = parseInt((me.GetSkill(121false)+me.GetSkill(101false)+me.GetSkill(118false))/3);

    
_maxindex = -1;
    
_maxskill 0;

    for(var 
_avgskilllevel.length i++)
    {
        if(
_avgskilllevel[i] > _maxskill)
        {
            
_maxindex i;
            
_maxskill _avgskilllevel[i];
        }
    }

    switch(
_maxindex)
    {
    case 
0// Blessed Hammer
        
NTConfig_AttackSkill[1] = 112;
        
NTConfig_AttackSkill[2] = 113;
        
NTConfig_AttackSkill[3] = 112;
        
NTConfig_AttackSkill[4] = 113;
        
NTConfig_AttackSkill[5] = 101;
        
NTConfig_AttackSkill[6] = 113;
        break;
    case 
1// Zeal
        
NTConfig_AttackSkill[1] = 106;
        
NTConfig_AttackSkill[2] = 122;
        
NTConfig_AttackSkill[3] = 106;
        
NTConfig_AttackSkill[4] = 122;
        break;
    case 
2// Fist of the Heavens
        
NTConfig_AttackSkill[1] = 121;
        
NTConfig_AttackSkill[2] = 123;
        
NTConfig_AttackSkill[3] = 121;
        
NTConfig_AttackSkill[4] = 123;
        break;
    }

    return (
NTConfig_AttackSkill[1] && NTConfig_AttackSkill[3]);
}

function 
NTA_PaladinAttackInt(targetfirstorder)
{
    var 
_primaryindex;

    if(
NTTMGR_CheckCurse(NTConfig_CheckSelfSafe&0x10NTConfig_CheckMercSafe&0x10))
    {
        if(!
NTTMGR_VisitTown())
            return 
0;
    }

    if(
firstorder && NTConfig_AttackSkill[0] > && NTA_GetResistance(targetNTA_DAMAGE_MAGIC) < 100)
    {
        if(
GetDistance(metarget) > _NTA_SkillRange[0] || !CheckCollision(metarget4))
        {
            var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[0], 4);

            if(
_pos)
                
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
        }

        if(!
NTC_CastSkill(NTConfig_AttackSkill[0], _NTA_SkillHand[0], target))
            return 
2;

        return 
3;
    }

    
_primaryindex = (target.spectype&0x0A) ? 3;

    if(
NTA_GetResistance(targetNTA_DAMAGE_MAGIC) < 100)
    {
        if(
_NTA_SkillRange[_primaryindex] < && !CheckCollision(target.areaidtarget.xtarget.y1))
            return 
1;

        if(!
NTA_PaladinCastSkillInt(_primaryindextarget))
            return 
2;

        return 
3;
    }

    if(
NTConfig_AttackSkill[5] > 0)
    {
        if(
_NTA_SkillRange[5] < && !CheckCollision(target.areaidtarget.xtarget.y1))
            return 
1;

        if(!
NTA_PaladinCastSkillInt(5target))
            return 
2;

        return 
3;
    }

    return 
1;
        
}

function 
NTA_PaladinCastSkillInt(indextarget)
{
    var 
_castx_casty;
    if(
NTConfig_AttackSkill[index] == 112)
    {
        if(
me.x-target.|| me.x-target.|| me.y-target.|| me.y-target.2)
        {
            if(
CheckCollision(target.areaidtarget.x+2target.y+21))
                
NTM_MoveTo(target.areaidtarget.x+2target.y+20);
            else if(
me.x-target.< -|| me.x-target.|| me.y-target.|| me.y-target.2)
                
NTM_MoveTo(target.areaidtarget.x-4target.y0);
        }
    }
    else
    {
        if(
GetDistance(metarget) > _NTA_SkillRange[index] || !CheckCollision(metarget4))
        {
            var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[index], 4);

            if(
_pos)
                
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
        }
    }
    
    if(
NTConfig_AttackSkill[index+1] > 0)
        
NTC_PutSkill(NTConfig_AttackSkill[index+1], NTC_HAND_RIGHT);

    if(
NTConfig_AttackSkill[index] == 101)
    {
        
        if(
GetDistance(metarget) > 20 || !CheckCollision(metarget4))
        {
            var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y104);

            if(
_pos)
                
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
        }
        
    
        
        if(
_holyCount 1)
        {    
            
            
NTM_WalkTo(me.x-3,me.y);
            
_holyCount++;
        }

        else
        {
            
NTM_WalkTo(me.x+3,me.y);
            
_holyCount--;
        }

        for(var 
05i++)
            
NTC_CastSkill(101NTC_HAND_LEFTtarget);

        return;
            
    }

        else if(
target.name == "Stygian Doll")
        {
            
_castx =  target.me.target.x+target.x-3;
            
_casty =  target.me.target.y+target.y-3;
            
NTM_MoveTo(target.areaid_castx_casty,0);
            return 
NTC_CastSkill(101NTC_HAND_LEFTtarget);
        }
        else
            return 
NTC_CastSkill(NTConfig_AttackSkill[index], _NTA_SkillHand[index], target);
        
        
}
function 
NTA_BarbarianAttackPatternInt()
{
    var 
_maxindex_maxskill;
    var 
_avgskilllevel = new Array();

    
_avgskilllevel[0] = me.GetSkill(151false);

    
_maxindex = -1;
    
_maxskill 0;

    for(var 
_avgskilllevel.length i++)
    {
        if(
_avgskilllevel[i] > _maxskill)
        {
            
_maxindex i;
            
_maxskill _avgskilllevel[i];
        }
    }

    switch(
_maxindex)
    {
    case 
0// Whirlwind
        
NTConfig_AttackSkill[1] = 151;
        
NTConfig_AttackSkill[3] = 151;
        
NTConfig_AttackSkill[5] = 152;
        break;
    }

    return (
NTConfig_AttackSkill[1] && NTConfig_AttackSkill[3]);
}

function 
NTA_BarbarianAttackInt(targetfirstorder)
{
    var 
_primaryindex;

    if(
NTTMGR_CheckCurse(NTConfig_CheckSelfSafe&0x10NTConfig_CheckMercSafe&0x10))
    {
        if(!
NTTMGR_VisitTown())
            return 
0;
    }

    if(
firstorder && NTConfig_AttackSkill[0] > && NTA_GetResistance(target_NTA_SkillDamage[0]) < 100)
    {
        if(
GetDistance(metarget) > _NTA_SkillRange[0] || !CheckCollision(metarget4))
        {
            var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[0], 4);

            if(
_pos)
                
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
        }

        if(!
NTC_CastSkill(NTConfig_AttackSkill[0], _NTA_SkillHand[0], target))
            return 
2;

        return 
3;
    }

    
_primaryindex = (target.spectype&0x0A) ? 3;

    if(
NTA_GetResistance(target_NTA_SkillDamage[_primaryindex]) < 100)
    {
        if((
_NTA_SkillRange[_primaryindex] < || NTConfig_AttackSkill[_primaryindex] == 151) && !CheckCollision(target.areaidtarget.xtarget.y1))
            return 
1;

        if(!
NTA_BarbarianCastSkillInt(_primaryindextarget))
            return 
2;

        return 
3;
    }

    if(
NTConfig_AttackSkill[5] > && NTA_GetResistance(target_NTA_SkillDamage[5]) < 100)
    {
        if((
_NTA_SkillRange[5] < || NTConfig_AttackSkill[5] == 151) && !CheckCollision(target.areaidtarget.xtarget.y1))
            return 
1;

        if(!
NTA_BarbarianCastSkillInt(5target))
            return 
2;

        return 
3;
    }

    return 
1;
}

function 
NTA_BarbarianCastSkillInt(indextarget)
{
   if(
NTConfig_AttackSkill[index] == 151)
   {
      var 
_castx_casty;

      if(
GetDistance(metarget) > _NTA_SkillRange[index] || !CheckCollision(metarget5))
      {
         var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[index], 5);

         if(
_pos)
            
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
      }

      
_castx =  target.me.target.x+target.x-3;
      
_casty =  target.me.target.y+target.y-3;

      return 
NTC_CastSkill(NTConfig_AttackSkill[index], _NTA_SkillHand[index], _castx_casty);
   }


if(
target.name == "Baal" || target.name == "Diablo" || target.name == "Mephisto")
      {
         if(
GetDistance(metarget) > || !CheckCollision(metarget4))
           {
            var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y34);

            if(
_pos)
               
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
            }
 
         return 
NTC_CastSkill(152NTC_HAND_LEFTtarget);
           
         }
      else
          {
         if(
GetDistance(metarget) > _NTA_SkillRange[index] || !CheckCollision(metarget4))
           {
            var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[index], 4);

            if(
_pos)
               
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
            }
 
         return 
NTC_CastSkill(NTConfig_AttackSkill[index], NTC_HAND_LEFTtarget);
           } 
}

function 
NTA_DruidAttackPatternInt()
{
    var 
_maxindex_maxskill;
    var 
_avgskilllevel = new Array();

    
_avgskilllevel[0] = me.GetSkill(245false);
    
_maxindex = -1;
    
_maxskill 0;

    for(var 
_avgskilllevel.length i++)
    {
        if(
_avgskilllevel[i] > _maxskill)
        {
            
_maxindex i;
            
_maxskill _avgskilllevel[i];
        }
    }

    switch(
_maxindex)
    {
    case 
0// 
        
NTConfig_AttackSkill[1] = 245;
        
NTConfig_AttackSkill[2] = 245;
        
NTConfig_AttackSkill[3] = 245;
        
NTConfig_AttackSkill[4] = 245;
        
NTConfig_AttackSkill[5] = 245;
        
NTConfig_AttackSkill[6] = 245;
        break;
    }

    return (
NTConfig_AttackSkill[1] && NTConfig_AttackSkill[3]);
}

function 
NTA_DruidAttackInt(targetfirstorder)
{
    var 
_primaryindex;

    if(
NTTMGR_CheckCurse(NTConfig_CheckSelfSafe&0x10NTConfig_CheckMercSafe&0x10))
    {
        if(!
NTTMGR_VisitTown())
            return 
0;
    }

    if(
firstorder && NTConfig_AttackSkill[0] > && NTA_GetResistance(target_NTA_SkillDamage[0]) < 100)
    {
        
        
        if(
GetDistance(metarget) > NTConfig_AttackSkill[0] || !CheckCollision(metarget4))
        {
            var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y,  _NTA_SkillRange[index], 4);

            if(
_pos)
                
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
        }

        if(!
NTC_CastSkill(NTConfig_AttackSkill[0], _NTA_SkillHand[0], target))
            return 
2;

        return 
3;
    }


    
_primaryindex = (target.spectype&0x0A) ? 3;

    

    if(
me.GetSkill(245true) > 1)
        if(
target.name == "Andariel" || target.name == "Baal" || target.name == "Mephisto" || target.name == "Diablo")
        {
            if(!
NTA_DruidCastSkillIntNear(_primaryindextarget))
                return 
2;

            return 
3;
        }
    

    if(
NTA_GetResistance(target_NTA_SkillDamage[_primaryindex]) <= 90)
    {
        if(!
NTA_DruidCastSkillInt(_primaryindextarget))
            return 
2;

        return 
3;
    }

    if(
NTConfig_AttackSkill[5] > && NTA_GetResistance(target_NTA_SkillDamage[5]) <= 80)
    {
        if(!
NTA_DruidCastSkillInt(5target))
            return 
2;

        return 
3;
    }

    if(
NTA_GetResistance(target_NTA_SkillDamage[index]) < 100 || (_primaryindex == && NTC_GetMerc()))
    {
        if(!
NTA_DruidCastSkillInt(_primaryindextarget))
            return 
2;

        return 
3;
    }

    return 
1;
}

function 
NTA_DruidCastSkillIntNear(indextarget)
{    
    if(
GetDistance(metarget) > || !CheckCollision(metarget4))
        
NTM_MoveTo(target.areaidtarget.xtarget.y0);
    
    return 
NTC_CastSkill(NTConfig_AttackSkill[index], _NTA_SkillHand[index], target);
    
    if(
NTConfig_AttackSkill[index+1] > 0)
    {
        if(
GetDistance(metarget) > || !CheckCollision(metarget4))
        {
            var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y34);

            if(
_pos)
                
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
                
        }

        return 
NTC_CastSkill(NTConfig_AttackSkill[index+1], _NTA_SkillHand[index+1], target);
    }
}

function 
NTA_DruidCastSkillInt(indextarget)
{        
    if(
GetDistance(metarget) > _NTA_SkillRange[index] || !CheckCollision(metarget4))
    {
        var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y,  _NTA_SkillRange[index], 4);

            if(
_pos)
                
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
        
    }
    
    
    if(!
me.GetState(139))
        
NTC_CastSkill(223NTC_HAND_RIGHT// Werewolf
    
else if(!me.GetState(140))        
        
NTC_CastSkill(228NTC_HAND_RIGHT// Werebear    

    
return NTC_CastSkill(NTConfig_AttackSkill[index], _NTA_SkillHand[index], target);
    
    if(
NTConfig_AttackSkill[index+1] > 0)
    {
        if(
GetDistance(metarget) > _NTA_SkillRange[index+1] || !CheckCollision(metarget4))
        {
            var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[index+1], 4);

            if(
_pos)
                
NTM_MoveTo(target.areaid_pos[0], _pos[1], 0);
                
        }

        return 
NTC_CastSkill(NTConfig_AttackSkill[index+1], _NTA_SkillHand[index+1], target);
    }
}
function 
NTA_AssassinAttackPatternInt()
{
   var 
_maxindex_maxskill;
   var 
_avgskilllevel = new Array();

   
_avgskilllevel[0] = me.GetSkill(271false);

   
_maxindex = -1;
   
_maxskill 0;

   for(var 
_avgskilllevel.length i++)
   {
      if(
_avgskilllevel[i] > _maxskill)
      {
         
_maxindex i;
         
_maxskill _avgskilllevel[i];
      }
   }

   switch(
_maxindex)
   {
   case 
0// Lightning Sentry + Fire Blast + Physical Hammer
      
NTConfig_AttackSkill[1] = 271;
      
NTConfig_AttackSkill[3] = 251;
      
NTConfig_AttackSkill[5] = 253;
      break;
   }

   return (
NTConfig_AttackSkill[1] && NTConfig_AttackSkill[3]);

function 
NTA_AssassinAttackInt(targetfirstorder)
{
   var 
_primaryindex;

   if(
NTTMGR_CheckCurse(NTConfig_CheckSelfSafe&0x04NTConfig_CheckMercSafe&0x04))
   {
      if(!
NTTMGR_VisitTown())
         return 
0;
   }

   if(
firstorder && NTConfig_AttackSkill[0] > && NTA_GetResistance(target_NTA_SkillDamage[0]) < 100)
   {
      if(
GetDistance(metarget) > _NTA_SkillRange[15] || !CheckCollision(metarget10))
      {
         var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[0], 4);

         if(
_pos)
            
NTM_MoveTo(target.areaid_pos[0], _pos[10], 0);
      }

      if(!
NTC_CastSkill(NTConfig_AttackSkill[0], _NTA_SkillHand[0], target))
         return 
2;

      return 
3;
   }

   
_primaryindex = (target.spectype&0x0A) ? 3;

   if(
NTA_GetResistance(target_NTA_SkillDamage[_primaryindex]) < 100)
   {
      if((
_NTA_SkillRange[_primaryindex] < || NTConfig_AttackSkill[_primaryindex] == 271) && !CheckCollision(target.areaidtarget.xtarget.y1))
         return 
1;

      if(!
NTA_AssassinCastSkillInt(_primaryindextarget))
         return 
2;

      return 
3;
   }

   if(
NTConfig_AttackSkill[5] > && NTA_GetResistance(target_NTA_SkillDamage[5]) < 100)
   {
      if((
_NTA_SkillRange[5] < || NTConfig_AttackSkill[5] == 271) && !CheckCollision(target.areaidtarget.xtarget.y1))
         return 
1;

      if(!
NTA_AssassinCastSkillInt(5target))
         return 
2;

      return 
3;
   }

   return 
1;
}

function 
NTA_AssassinCastSkillInt(indextarget)
{
   if(
NTConfig_AttackSkill[index] == 271)
   {
      var 
_castx_casty;

      if(
GetDistance(metarget) > _NTA_SkillRange[300] || !CheckCollision(metarget5))
      {
         var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[index], 5);

         if(
_pos)
            
NTM_MoveTo(target.areaid_pos[1], _pos[5], 0);
      }

      
_castx =  target.me.target.x+target.x-3;
      
_casty =  target.me.target.y+target.y-3;

      return 
NTC_CastSkill(NTConfig_AttackSkill[index], _NTA_SkillHand[index], _castx_casty);
   }

   if(
GetDistance(metarget) > _NTA_SkillRange[index] || !CheckCollision(metarget4))
   {
      var 
_pos me.GetOptimalAttackPos(target.areaidtarget.xtarget.y_NTA_SkillRange[index], 4);

      if(
_pos)
         
NTM_MoveTo(target.areaid_pos[1], _pos[5], 0);
   }

   return 
NTC_CastSkill(NTConfig_AttackSkill[index], _NTA_SkillHand[index], target);
}
function 
NTA_CheckForCloseMonsters(range)
{
    if(
range || arguments.length 1)
        return 
false;
        
    var 
_monstersClose false;
    var 
_checkMonster NTC_FindUnit(NTC_UNIT_MONSTER);
    
    if(
_checkMonster)
    {    
        do
        {
            if(
_checkMonster.IsAttackable() && GetDistance(me.xme.y_checkMonster.x_checkMonster.y) < range && NTA_IsValidMonster(_checkMonster))
            {    
                
_monstersClose true;
                break;
            }
        } while(
_checkMonster.GetNext());
    }
    return 
_monstersClose;
}

function 
NTA_FindItem(range)
{
    var 
_corpse;
    var 
_orgx;
    var 
_orgy;
    var 
_startTick;
    var 
_reposition false;
    
    if(
me.classid != NTC_CHAR_CLASS_BARBARIAN || NTC_GetSkillLevel(142) < 1)
        return 
false;
    
    if(
arguments.length || !range)
        
range 25;
    
    
_corpse NTC_FindUnit(NTC_UNIT_MONSTER);
    
_orgx me.x;
    
_orgy me.y;
    
    
NTC_PingDelay(100);
    
NTC_SwapWeapons(2);
    
    if(
_corpse)
    {
        do
        {
            if(
GetDistance(_orgx_orgy_corpse.x_corpse.y) <= range && NTA_CheckLootStatus(_corpse) && NTA_IsLootable(_corpse.classid))
            {        
                if(
GetDistance(me.xme.y_corpse.x_corpse.y) >= 8)
                {
                    if(!
NTM_MoveTo(me.areaid_corpse.x_corpse.y))
                        continue;
                }
                
_startTick GetTickCount();
                
_reposition false;
                while(
NTA_CheckLootStatus(_corpse) && !_corpse.IsAttackable())
                {
                    
NTC_CastSkill(142NTC_HAND_RIGHT_corpse);
                    
NTC_PingDelay(50);
                                        
                    if(
GetTickCount() >= _startTick 1000 && !_reposition// repositioning after 1sec
                    
{
                        
_reposition true;
                        if(!
NTM_MoveTo(me.areaid_corpse.x_corpse.y))
                            break;
                    }
                    if(
GetTickCount() >= _startTick 2500// skipping monster after 2.5sec
                    
{
                        if(
me.mp 10)
                        {
                            Print(
"Lack of ÿc3Manaÿc0!");
                            if(
NTConfig_BuyPotsIfLackOfMana)
                            {
                                if(
NTTMGR_VisitTown())
                                    
NTC_SwapWeapons(2);
                            }
                            break;
                        }
                        var 
_filehandle FileOpen("FailedtoLoot.txt"2);
                        var 
_dateString = new Date().toLocaleFormat("%a %m/%d/%y %H:%M:%S");
                        if(
_filehandle)
                        {
                            var 
_states "States:: ";
                            for(var 
0144i++)
                            {
                                if(
_corpse.GetState(i))
                                    
_states += "State(" "): " _corpse.GetState(i) + "<--> ";
                            }
                            
_filehandle.WriteLine("[" _dateString "] Could not loot: " _corpse.name +" [" _corpse.classid "] (Location: " me.areaid ") " _states);
                            
_filehandle.Close();
                        } 
                        Print(
"ÿc;Could not loot: " _corpse.name +" [" _corpse.classid "] <Mode: " _corpse.mode "> (Location: " me.areaid ")");
                        break;
                    }
                    
                }
                
/*if(GetTickCount() < _startTick + 2000)
                    NTC_SendMsgToScript("NTBotGame.ntj", "SET_LOOTED_NULL");*/
            
}
        } while(
_corpse.GetNext());
        
        
NTC_SwapWeapons(0);
        
NTC_PingDelay(100);
        
        
NTSI_PickItems();
                        
        return 
true;
    }
    return 
false;
}

function 
NTA_CheckForCloseMonsters(range)
{
    if(
range || arguments.length 1)
        return 
false;
        
    var 
_monstersClose false;
    var 
_checkMonster NTC_FindUnit(NTC_UNIT_MONSTER);
    
    if(
_checkMonster)
    {    
        do
        {
            if(
_checkMonster.IsAttackable() && GetDistance(me.xme.y_checkMonster.x_checkMonster.y) < range && NTA_IsValidMonster(_checkMonster))
            {    
                
_monstersClose true;
                break;
            }
        } while(
_checkMonster.GetNext());
    }
    return 
_monstersClose;
}

function 
NTA_CheckLootStatus(monsterunit)
{
    if(!
monsterunit.GetState(107// Shattered 
    
&& !monsterunit.GetState(104// Corpse Explosion
    
&& !monsterunit.GetState(118// Already Looted/Unlootable
    
&& (monsterunit.hp <= || monsterunit.mode == || monsterunit.mode == 12)) // Dead
        
return true;
    else
        return 
false;
}

function 
NTA_IsLootable(classid)
{
    switch(
classid)
    {
        case 
151// An evil force
        
case 156// Andariel
        
case 180// Sand Maggot Young
        
case 181// Rock Worm Young
        
case 182// Devourer Young
        
case 183// Giant Lamprey Young
        
case 184// World Killer Young
        
case 190// Sand Maggot Egg
        
case 191// Rock Worm Egg
        
case 192// Devourer Egg
        
case 193// Giant Lamprey Egg
        
case 194// World Killer Egg
        
case 206// Fould Crow Nest
        
case 207// Blood Hawk Nest
        
case 208// Black Vulture Nest
        
case 209// Cloud Stalker Nest
        
case 221// Duriel
        
case 227// Maggot
        
case 228// Mummy Generator
        
case 234// Flying Scimitar
        
case 242// Mephisto
        
case 243// Diablo
        
case 250// Summoner
        
case 258// Water Watcher Limb
        
case 259// River Stalker Limb
        
case 260// Sygain Watcher Limb        
        
case 261// Water Watcher Head 
        
case 262// River Stalker Head
        
case 263// Sygain Watcher Head
        
case 267// Blood Raven
        
case 269// An evil force
        
case 270// Rogue Scout (== Merc)
        
case 273// Gargoyle Trap
        
case 289// Clay Golem
        
case 290// Blood Golem
        
case 291// Iron Golem
        
case 292// Fire Golem
        
case 301// Flesh Beast
        
case 302// Stygian Dog
        
case 303// Grotesque Wyrm
        
case 318// An Evil Force
        
case 326// A Trap
        
case 327// A Trap
        
case 328// A Trap
        
case 329// A Trap
        
case 330// A Trap
        
case 334// Sucker Nest
        
case 335// Fleeder Nest
        
case 336// Blood Hook Nest
        
case 337// Blood Wing Nest
        
case 338// Act 2 guard (== Merc)
        
case 348// Turret
        
case 349// Turret
        
case 350// Turret
        
case 351// Hydra
        
case 352// Hydra
        
case 353// Hydra
        
case 354// A Trap
        
case 356// Dopplezon
        
case 357// Valkyrie
        
case 359// Iron Wolf (== Merc)
        
case 366// Compelling Orb
        
case 369// A Trap
        
case 371// Lightning Spire
        
case 372// Fire Tower
        
case 403// Traped Soul
        
case 404// Traped Soul
        
case 406// Izual
        
case 410// Wake Of Destruction
        
case 411// Charged Bolt Sentry
        
case 412// Lightning Sentry
        
case 413// Blade Creeper
        
case 414// Invisible Pet
        
case 415// Inferno Sentry
        
case 416// Death Sentry
        
case 417// Shadow Warrior
        
case 418// Shadow Master
        
case 419// Druid Hawk
        
case 420// Druid Spirit Wolf
        
case 421// Druid Fenris
        
case 422// Spirit of Barbs
        
case 423// Heart Of Wolverine
        
case 424// Oak Sage
        
case 425// Druid Plague Poppy
        
case 426// Druid Cycle of Life
        
case 427// Vine Creature
        
case 428// Druid Bear
        
case 429// Eagle
        
case 430// Wolf
        
case 431// Bear
        
case 432// Barricaded Door
        
case 433// Barricaded Door
        
case 434// Prison Door
        
case 435// Barricaded Door
        
case 461// Fanatic Minion
        
case 462// Beserk Slayer
        
case 463// Consumed Fire Boar
        
case 464// Consumed Ice Boar
        
case 465// Frenzied Hell Spawn
        
case 466// Frenzied Hell Spawn
        
case 467// Insane Hell Spawn
        
case 468// Insane Ice Spawn
        
case 497// Catapult
        
case 498// Catapult
        
case 499// Catapult
        
case 500// Catapult
        
case 501// Frozen Horror 1
        
case 502// Frozen Horror 2
        
case 503// Frozen Horror 3
        
case 504// Frozen Horror 4
        
case 505// Frozen Horror 5
        
case 516// Catapult
        
case 517// Catapult
        
case 518// Catapult
        
case 519// Catapult
        
case 522// Barbarian Fighter
        
case 523// Barbarian Fighter
        
case 524// Barricade Wall Right
        
case 525// Barricade Wall Left
        
case 526// Nihlatak
        
case 528// Evil Hut
        
case 535// Barbarian Fighter
        
case 536// Barbarian Fighter
        
case 537// Ancient Statue 1
        
case 538// Ancient Statue 2
        
case 539// Ancient Statue 3
        
case 540// Ancient Barbarian 1
        
case 541// Ancient Barbarian 2
        
case 542// Ancient Barbarian 3
        
case 543// Baal Throne
        
case 544// Baal Crab
        
case 545// Baal Taunt
        
case 551// Pain Worm
        
case 552// Pain Worm
        
case 553// Pain Worm
        
case 554// Pain Worm
        
case 555// Pain Worm
        
case 556// Bunny
        
case 559// Baal Crab to Stairs
        
case 560// Hireling
        
case 561// Hireling
        
case 562// Baal Tentacle
        
case 563// Baal Tentacle
        
case 564// Baal Tentacle
        
case 565// Baal Tentacle
        
case 566// Baal Tentacle
        
case 567// Injured Barbarian
        
case 568// Injured Barbarian
        
case 569// Injured Barbarian
        
case 570// Baal Crab Clone
        
case 571// Baals Minions
        
case 572// Baals Minionse        
        
case 573// Baals Minions
        
case 574// Worldstone Effect
        
case 662// Flayer Shaman
            
return false;
            break;
        default:
            return 
true;
            break;
    }
}
function 
NTTMGR_TownChick(simple)
{
   var 
_LifeMax_ManaMax;
   
_LifeMax me.hpmax;
   
_ManaMax me.mpmax;
            if(
NTConfig_TownChicken 0)
            {
            if(
parseInt(me.hp*100/_LifeMax) < NTConfig_TownChicken)
            {
            
NTC_SendLogToOOG(NTC_LOG_COMMON"ÿE00000TownChicken")
            
NTTMGR_VisitTown()
            }
            }
}
function 
NTTMGR_TeleChick(simple)
{
   var 
_LifeMax_ManaMax;
   
_LifeMax me.hpmax;
   
_ManaMax me.mpmax;
            if(
NTConfig_TeleChicken 0)
            {
            if(
parseInt(me.hp*100/_LifeMax) < NTConfig_TeleChicken)
            {
            
NTC_SendLogToOOG(NTC_LOG_COMMON"ÿE00000TeleChicken")
            
NTM_MoveTo(me.areaidme.x+30me.y+30);
            
NTC_Delay(4500);
            
NTM_MoveTo(me.areaidme.x-30me.y-30);
            }
            }

Die einzelnen Änderungen kann man nachlesen. In der Charconfig sollte Corpse Explosion als Primary Attack eingetragen werden, sowohl bei Bossen, als auch normalen Monstern.








Positiv:
  • Auch mit schlechtem Equip sehr sicher und daher ein sehr guter Char für Ladderanfang und/oder Hardcore.
  • Es gibt fast keine Mobs die Fire+Phys immun sind und deren Immunity nicht durch Amplify Damage gebrochen wird.
  • Viele Necrospezifische Items sind oft sehr billig zu bekommen.
  • Hoher Schaden mit Corpse Explosion und Amplify Damage.
  • Ist eine gute Ergänzung als CoFighter, dank Curses und Blocksummons.
  • Lässt sich zur Not auch betrunken spielen, da Skelette immer nüchtern sind!

Negativ:
  • Benötigt Enigma um teleportieren zu können.
  • In vollen Games mit 8 Spielern ist er nicht so stark wie ein Hammerdin, bekommt aber trotzdem noch genug getötet, dauert halt nur etwas länger.
  • Ungeeignet als Leader für Dia/Baalruns in Public Games, da er erst Skelette holen muss.
  • Wenn man nur Bosse farmen will, gibt es bessere Chars. Der Necro entwickelt seine volle Kraft erst gegen mehrere Gegner.





So, das wars auch erstmal, vielleicht werde ich später noch das ein oder andere hinzueditieren, aber da ich den ganzen Guide an einem Stück geschrieben habe, bin ich nu auch erstmal kaputt. Über Verbesserungsvorschläge, Kritik oder Kommentare würde ich mich freuen, also immer her damit.
Posted in Diablo 2
Views 6207 Comments 29 Email Blog Entry
« Prev     Main     Next »
Total Comments 29

Comments

  1. Old Comment
    Sehr schöner guide <3 nec > all

    Aber würde evt. noch etwas bei den waffen hinzufügen. Ich persönlich spiele gerne mit dem Setup:

    waffe nec: Beast in low axt oder Ba (fanas)
    Söldnerwaffe: Pride (Konz)

    Und villeicht ein kleiner teil über den UT Summoner
    permalink
    Posted 03/12/2011 at 00:04 by Shrimps in Bierteig Shrimps in Bierteig is offline
    Updated 03/12/2011 at 00:13 by Shrimps in Bierteig
  2. Old Comment
    Ah danke für den Hinweis mit Beast, das wollte ich noch einfügen, hab ich aber dann vergessen.

    Von Pride halte ich allerdings überhaupt nichts, das lohnt sich einfach nicht nur für die Konzentrationsaura meiner Meinung nach. Die Waffe selbst macht keinen Schaden, dazu kommt noch das fehlende Crushing Blow und das Freezes Target, was für einen Summoner der mit Corpse Explosion arbeitet einfach totaler Mist ist. Wenn dann würde ich mir eher einen Pride Iron Golem bauen.
    permalink
    Posted 03/12/2011 at 00:18 by lanara lanara is offline
  3. Old Comment
    Sehr schöner Blog, wieder einmal. Finde besonders den Bereich Items gut gemacht mit den Links zum entsprechenden Item. Fände es besser wenn du bei den Skills noch die dt. Bezeichnung dabei schreibst. Ist wenig Arbeit, aber nicht jeder hat gerade alle Necro Skills auf Englisch im Kopf (klar ist es schnell übersetzt, aber halt so^^).

    Für was würdest du den Necro eher empfehlen? Gebiete oder Bosse? Macht der Bot vor Beginn der Scripte ein Skeletterun? Wie lange dauert das in etwa? Skelette werden auch ständig nachgecastet? Oder gibt es nach CE keine Leichen mehr?^^
    permalink
    Posted 03/12/2011 at 00:25 by XxArenaxX XxArenaxX is offline
  4. Old Comment
    Extrem gelungener Guide, bei dem ich eigentlich nicht einen Punkt finde, bei dem ich nicht zustimme.

    Davon abgesehen sorgt das in Punkto Aufbau und Formatierung mal wieder für einen gewissen Neid meinerseits, wirklich sehr elegant gemacht.

    Das mit dem Pride sehe ich übrigens genauso. Ist eher Kontraproduktiv, meine persönliche Vorliebe liegt hier bei einem Infinity Merc gepaart mit einem Insight Golem.

    Lg
    Muddy

    Edit:
    Das mit den Bezeichnungen sehe ich eigentlich nicht so, zumal es was das betrifft, bei mir gerade umgekehrt ist - mir sind die englischen Bezeichnungen sehr viel geläufiger als die deutschen.
    Im übrigen gibt es sogar Bildchen zu jedem Skill, darum sollte das eigentlich auch so kein Problem sein.
    permalink
    Posted 03/12/2011 at 00:34 by Muddy Waters Muddy Waters is offline
    Updated 03/12/2011 at 00:37 by Muddy Waters
  5. Old Comment
    Naja der vorteil bei der Konz aura is halt das deine Summons zusätzlich Ar kriegen, was schon einiges ausmacht (von meiner erfahrung her). Ausserdem wen man Beast trägt und der Söldner noch Pride in ner guten eth Waffe hat, macht der genügend dmg und mobs down zu kriegen. Aussertdem is eh Amplify dmg aufm Mob drauf.

    Jedoch was Bossfights anbelangt wär mehr Cb von vorteil. Aber bei den Bossen hat man auch wieder genügend Summons, das es eigentlich egal ist, ob der Merc jetzt grossen dmg macht oder nicht.

    Der grösste nachteil ist leider halt das Freezes Target. Aber damit lässt sich leben^^

    Was mir noch einfiel für lowcost, wär der Arm von König Leoric oder wie der heisst. Hab den geliebt bis ich mir dan Beast angeschafft habe
    permalink
    Posted 03/12/2011 at 00:39 by Shrimps in Bierteig Shrimps in Bierteig is offline
  6. Old Comment
    Mir ist beim schreiben auch schon aufgefallen, dass es teilweise ein Englisch/Deutscher Kauderwelsch ist, aber hatte heute auch nicht mehr die Motivation nochmal alles zu überarbeiten, hat lange genug gedauert das ganze zu schreiben.

    Ich werde mir morgen nochmal alles durchlesen und noch etwas anpassen, da schreib ich dann auch die Deutschen Skillnamen noch mit hinzu.

    Quote:
    Originally Posted by XxArenaxX View Comment
    Für was würdest du den Necro eher empfehlen? Gebiete oder Bosse? Macht der Bot vor Beginn der Scripte ein Skeletterun? Wie lange dauert das in etwa? Skelette werden auch ständig nachgecastet? Oder gibt es nach CE keine Leichen mehr?^^
    Man kann genauso Bosse farmen, aber sollte man dann halt vorher zumindest eine Area einbauen, bei der er sich Summons holen kann. Wenn du z.B. sowieso TC85 Gebiete farmst, kannst du dannach auch alle Bosse abklappern, bis auf Dia und Baal fallen eh alle sehr schnell um. Bei Diablo und Baal merkt man es dann schon extrem, ob der Merc eine Waffe mit Crushing Blow hat, oder nicht.

    Skelette werden immer mal zwischendurch welche nachgecasted, für den Fall dass eins gestorben ist. Leider gibt es keine Möglichkeit die Anzahl der aktiven Skelette auszulesen, sonst könnte man es noch besser machen.

    Quote:
    Originally Posted by Shrims View Comment
    Naja der vorteil bei der Konz aura is halt das deine Summons zusätzlich Ar kriegen, was schon einiges ausmacht (von meiner erfahrung her). Ausserdem wen man Beast trägt und der Söldner noch Pride in ner guten eth Waffe hat, macht der genügend dmg und mobs down zu kriegen. Aussertdem is eh Amplify dmg aufm Mob drauf.

    Jedoch was Bossfights anbelangt wär mehr Cb von vorteil. Aber bei den Bossen hat man auch wieder genügend Summons, das es eigentlich egal ist, ob der Merc jetzt grossen dmg macht oder nicht.

    Der grösste nachteil ist leider halt das Freezes Target. Aber damit lässt sich leben^^

    Was mir noch einfiel für lowcost, wär der Arm von König Leoric oder wie der heisst. Hab den geliebt bis ich mir dan Beast angeschafft habe
    Seit wann gibt Konzentration denn AR?

    Bei den Stäben gibt es mehrere Uniques, die ganz brauchbar sind, habe da keins gesehen dass es Wert gewesen wäre extra zu erwähnen, vor allem weil es auch Magic/Rare Stäbe mit guten Stats gibt. Daher hab ich da alle Necrostäbe zusammengefasst.
    permalink
    Posted 03/12/2011 at 00:43 by lanara lanara is offline
    Updated 03/12/2011 at 00:55 by lanara
  7. Old Comment
    Sorry ist kein ar^^ hab das falsch in errinerung gehabt, zitat von india, pala skills konz: Zudem beinhaltet diese Aura noch 20% Chance, dass ein Angriff auch ausgeführt wird, wenn der Char von einem Gegner getroffen wird.
    permalink
    Posted 03/12/2011 at 00:58 by Shrimps in Bierteig Shrimps in Bierteig is offline
  8. Old Comment
    Jop, allerdings wird wohl keiner die Konz Aura wegen der 20% Uninterruptable Chance nehmen, sondern wegen dem Schaden. Das Problem daran ist vor allem, dass das Runenwort auch noch sauteuer ist mit 3 HR's drin, bevor ich mir das hole bau ich mir doch lieber Infinity und bin weit besser dran.
    permalink
    Posted 03/12/2011 at 01:09 by lanara lanara is offline
  9. Old Comment
    Quote:
    Originally Posted by lanara View Comment
    Leider gibt es keine Möglichkeit die Anzahl der aktiven Skelette auszulesen, sonst könnte man es noch besser machen.
    Was führt dich zu dieser Aussage?

    Es gibt zwar keine direkte Eigenschaft, über die sich direkt die Anzahl auslesen lässt, grundsätzlich lässt sich die Anzahl vorhandener Skelette aber recht einfach bestimmen.

    Lg
    Muddy
    permalink
    Posted 03/12/2011 at 09:58 by Muddy Waters Muddy Waters is offline
  10. Old Comment
    Quote:
    Originally Posted by Muddy_Waters View Comment
    Was führt dich zu dieser Aussage?

    Es gibt zwar keine direkte Eigenschaft, über die sich direkt die Anzahl auslesen lässt, grundsätzlich lässt sich die Anzahl vorhandener Skelette aber recht einfach bestimmen.

    Lg
    Muddy
    Und wie? Man kann zwar mitzählen, wieviele Skelette man bereits gecastet hat, aber mir ist keine Möglichkeit bekannt wie man überprüfen kann, ob Skelette gestorben sind und dann nach Bedarf neue zu casten.

    Werd wohl doch mal wieder anfangen müssen zu botten und mir deine neue Version genauer anschaun. :P



    Edit: Ok, hab mir gerade mal deine neue Version gesaugt und nach dem ersten überfliegen sah ich in etwa so aus:

    Da haste dich ja mal wieder selbst übertroffen, muss mir jetzt erstmal etwas Zeit nehmen und das auf mich wirken lassen. :P
    permalink
    Posted 03/12/2011 at 10:40 by lanara lanara is offline
    Updated 03/12/2011 at 10:49 by lanara
  11. Old Comment
    tolle arbeit und layout

    kleiner tipp vllt noch:

    skellis kann man sich bei pindel holen, so hat man schnell ~10 zusammen und kann eigentlich schon loslegen. natürlich nur wenn das rote protal noch offen ist
    permalink
    Posted 03/12/2011 at 11:07 by casper36 casper36 is offline
  12. Old Comment
    Quote:
    Originally Posted by casper36 View Comment
    skellis kann man sich bei pindel holen, so hat man schnell ~10 zusammen und kann eigentlich schon loslegen. natürlich nur wenn das rote protal noch offen ist
    Eldritch und/oder Schenk eignen sich dafür auch gut, auch wenn man das Portal nicht mehr hat.
    permalink
    Posted 03/12/2011 at 11:12 by lanara lanara is offline
  13. Old Comment
    ja klar, ich glaub ich hab mich unverständlich ausgedrückt...sry

    ich meine die "schlafenden" skellis im vorhof von pindel kann man einfach so beschwören ohne dass der merc
    die erste leiche beschaffen muss.
    permalink
    Posted 03/14/2011 at 09:32 by casper36 casper36 is offline
  14. Old Comment
    Achso, das wusste ich noch garnicht, danke für den Hinweis. Habe es mal im Guide mit eingefügt.
    permalink
    Posted 03/14/2011 at 19:54 by lanara lanara is offline
  15. Old Comment
    jep guter guide, das einzige was ich ändern würde ist die reihenfolge der zu bevorzugenden waffen. ich denke da rockt beast doch erheblich mehr wie hoto 1. merc killt schneller (ias und dam) ganze armee killt schneller wenn man mal selber spielt. und auch slot 2 könnte man noch erwähnen das leo + nen schrumpel mit +3 all(zb boneflame) sinn macht, zum ancasten der skells, wenn ich mal normal spiel um den gaylords mal zu zeigen wo der der richtige hammer hängt brauch ich eigentlich kein bo^^
    permalink
    Posted 03/16/2011 at 09:11 by moh69 moh69 is offline
  16. Old Comment
    Man sollte aber bedenken, dass nicht der Merc oder die Skelette zum töten der Mobs da sind, sondern der Necro selbst mit CE. Und da macht die größere Range meiner Meinung nach mehr aus, als IAS und Damage von Merc und Skeletten. Wenn dann würde ich Beast nur nehmen, wenn man vor allem einzelne starke Monster farmt.
    permalink
    Posted 03/16/2011 at 12:02 by lanara lanara is offline
  17. Old Comment
    Den Merc mit Pride, dem Nec ein Beast in die Hand, den Iron Golem mit einer Insight und ab geht die Lutzi
    Hatte jede Ladder so einen mit lvl 97 eigenhändig gespielt und der nec war der Hammer. Skeletons bei Pindle geholt und ab zu den Cows oder Dia gegangen
    permalink
    Posted 03/24/2011 at 10:42 by King_killerko King_killerko is offline
  18. Old Comment
    Was mir gerade eingefallen ist, was villeicht noch erwähnenswert währe. Hab den guide nochmals durchgeflogen, aber hab das jetzt ned gesehn. Wen du es aber doch schon erwähnt hast tut es mir leid. Jedenfalls, für UT und pvp hol ich mir gerne als revives, die stunmobs vom flammenfluss. Weiss nimma genau wie die Heissen, Undar oder sowas, so dicke fleischige moppels die dich mit ner keule stunnen.

    Halt irgendwie eine kleine auflistung von praktischen mobs mit ihren fähigkeiten die sich lohnen als revives zu holen Wär denk ich mal noch was nettes
    permalink
    Posted 03/27/2011 at 15:05 by Shrimps in Bierteig Shrimps in Bierteig is offline
  19. Old Comment
    also wenn dir cb beim merc wichtig ist würde ich ja fast eher sagen mit ias /ed amn und verrat und gullis greifen! oder halt infi wenn man sein ce stärken möchte

    auf jeden fall fehlt mir persönlich einfach verrat als merc amor ziehe ich oft sogar ner forti vor wegen dem dr/ias etc

    hier is richtig
    permalink
    Posted 03/27/2011 at 22:41 by toya_ger toya_ger is offline
  20. Old Comment
    Obedience und Infinity haben auch beide 40% Crushing Blow, die Hone Sundan müsste wenn dann schon Eth sein, um mit den beiden mithalten zu können. Und ich glaube bevor man eine Eth Hone Sundan findet, hat man auch einen passenden Rohling für Obedience. Gulli habe ich im Guide schon mit aufgelistet. Treachery ist für den Anfang eine gute Rüstung, da hast du Recht, allerdings würde ich sie beim Normalen spielen nie einer Forti vorziehen. Wenn überhaupt, dann in UT, da der Merc da vor allem den Crushing Blow braucht und dabei dann stark von IAS und den Resis vor allem profitiert. Damit kommen wir auch schon zu Shrims.

    Die Urdars sind zwar für UT gut, allerdings sind sie beim normalen spielen kaum zu gebrauchen, da sie beim Teleportieren die Collision Control triggern und man sich immer erst bewegen muss, bevor alle Minions loslaufen können. Nicht nur extrem nervig, sondern kann auch tödlich sein, wenn man botted und auf einmal alles auf den Necro einprügelt weil nichts mehr blockt. Für UT ist das etwas anderes, aber ich habe bewusst keinen UT Guide mit reingenommen, da das ganze schon etwas komplexer ist und gerade für Einsteiger die sich nicht so gut auskennen eher frustrierend enden kann. Dafür würde ich dann eher einen eigenen UT Summoner Guide empfehlen, in dem auch alles ausführlich erklärt wird, z.B. hier:
    permalink
    Posted 03/27/2011 at 23:19 by lanara lanara is offline
 

All times are GMT +2. The time now is 14:28.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.