
Script:
Code:
#
//OrganFarmer put together by stairbuilder
//a monkey with pretty colored multi shaped blocks production
//look for credits in the comments
//Thanks to Roflman who is always nice enough to let me bounce stuff off of him
//THanks aslo to kiss me angel who's script inspired, and partially was stolen from to make this
//thanks to Kolton for some ideas on duriel
// modded by D2OD
function NTMain()
{
Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
NTC_IncludeConfig("NTBot/char_configs");
NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");
NTA_Initialize();
Print(" ÿc;OrganFarmerPlusTorcher Start ");//s
if(!NTTM_CheckAct(5))
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
return;
}
NTTMGR_TownManager();
var KeyofTerror = me.GetItems("pk1");
var KeyofHate = me.GetItems("pk2");
var KeyofDestruction = me.GetItems("pk3");
var mephistosbrain = me.GetItems("mbr");
var baalseye = me.GetItems("bey");
var diabloshorn = me.GetItems("dhn");
if((!mephistosbrain || mephistosbrain.length < 1) || (!baalseye || baalseye.length < 1) || (!diabloshorn || diabloshorn.length < 1) || NTOF_CheckKeptTorch())
{
if(!NTOF_CheckKeptTorch())
Print('Not enough organs => checking keys');
else
Print('Farming organs (i already have a torch) => checking keys!');
if((!KeyofTerror || KeyofTerror.length < 3) || (!KeyofHate || KeyofHate.length < 3) || (!KeyofDestruction || KeyofDestruction.length < 3))
{
Print('Not enough keys => getting needed keys');
if(!KeyofTerror || KeyofTerror.length < 3)
{
Print('I need '+(3-(KeyofTerror ? KeyofTerror.length : 0))+' keys of Terror. => Starting Countess!');
if(!NTOF_KillCountess())
{
//NTC_SendMsgToScript("NTBotGame.ntj", "NTOF_KillCountess()");
//return;
}
if(!NTTM_CheckAct())
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
return;
}
NTTMGR_TownManager();
}
if(!KeyofHate || KeyofHate.length < 3)
{
Print('I need '+(3-(KeyofHate ? KeyofHate.length : 0))+' keys of Hate. => Starting Summoner!');
if(!NTOF_KillSummoner())
{
//NTC_SendMsgToScript("NTBotGame.ntj", "NTOF_KillSummoner()");
//return;
}
if(!NTTM_CheckAct())
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
return;
}
NTTMGR_TownManager();
}
if(!KeyofDestruction || KeyofDestruction.length < 3)
{
Print('I need '+(3-(KeyofDestruction ? KeyofDestruction.length : 0))+' keys of Destruction. => Starting Nilhatack!');
if(!NTOF_KillNilhatack())
{
//NTC_SendMsgToScript("NTBotGame.ntj", "NTOF_KillNilhatack()");
//return;
}
if(!NTTM_CheckAct())
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
return;
}
NTTMGR_TownManager();
}
KeyofTerror = me.GetItems("pk1");
KeyofHate = me.GetItems("pk2");
KeyofDestruction = me.GetItems("pk3");
if((!KeyofTerror || KeyofTerror.length < 3) || (!KeyofHate || KeyofHate.length < 3) || (!KeyofDestruction || KeyofDestruction.length < 3))
{
Print('Still not enough keys... => NextGame!');
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
return;
}
}
Print('I have enough keys => lets open the mini ubers!');
if(!NTTM_CheckAct(5))
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
return;
}
NTConfig_AttackSkill[1] = 97; // smite
NTConfig_MercLifeThresh = 0;
NTConfig_MercRejuvThresh = 0; //won't waste pots on merc
NTConfig_UseMerc = false; //won't revive merc now
var open_mini_uber = true;
while(open_mini_uber)
{
me.maxgametime = 3600; // 1 hour
if(!NTTM_CheckAct(5))
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
return;
}
NTTMGR_TownManager();
if(NTConfig_PreBuffFade && me.GetStat(181) < 1)// another rip off from kiss me angle, but it just was to good not to include
NTOF_PreBuffFade();
NTOF_CubeKeys();
NTOF_EnterRedPortal();
if(!NTOF_Kill_Mini_Uber())
{
//NTC_SendMsgToScript("NTBotGame.ntj", "NTOF_Kill_Mini_Uber()");
//return;
}
if(!NTTM_CheckAct(5))
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
return;
}
NTTMGR_TownManager();
mephistosbrain = me.GetItems("mbr");
baalseye = me.GetItems("bey");
diabloshorn = me.GetItems("dhn");
if(mephistosbrain && mephistosbrain.length >= 1 && baalseye && baalseye.length >= 1 && diabloshorn && diabloshorn.length >= 1 && !NTOF_CheckKeptTorch())
open_mini_uber = false;
KeyofTerror = me.GetItems("pk1");
KeyofHate = me.GetItems("pk2");
KeyofDestruction = me.GetItems("pk3");
if((!KeyofTerror || KeyofTerror.length < 1) || (!KeyofHate || KeyofHate.length < 1) || (!KeyofDestruction || KeyofDestruction.length < 1))
open_mini_uber = false;
}
if((!mephistosbrain || mephistosbrain.length < 1) || (!baalseye || baalseye.length < 1) || (!diabloshorn || diabloshorn.length < 1))
{
Print('ÿc1How strange! I couldn\'t kill one of the mini uber??');
Print('Still not enough organs... => NextGame!');
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
return;
}
}
if(mephistosbrain && mephistosbrain.length >= 1 && baalseye && baalseye.length >= 1 && diabloshorn && diabloshorn.length >= 1 && !NTOF_CheckKeptTorch())
{
// if(NTOF_CheckKeptTorch())
// NTOF_Idle();
me.maxgametime = 3600; // 1 hour
NTConfig_AttackSkill[1] = 97; // smite
NTConfig_MercLifeThresh = 0;
NTConfig_MercRejuvThresh = 0; //won't waste pots on merc
NTConfig_UseMerc = false; //won't revive merc now
if(!NTTM_CheckAct(5))
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
return;
}
NTTMGR_TownManager();
if(NTConfig_PreBuffFade && me.GetStat(181) < 1)// another rip off from kiss me angle, but it just was to good not to include
NTOF_PreBuffFade();
Print('Opening Uber Tristram!');
NTOF_CubeOrgans();
NTOF_EnterRedPortal();
if(!NTOF_UberTristram())
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTOF_UberTristram()");
return;
}
if(!NTTM_CheckAct(5))
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
return;
}
NTOF_CheckKeptTorch();
}
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}
// internal functions
function NTOF_EnterRedPortal()
{
var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226))
if(_portal)
{
while(GetDistance(me, _portal) > 15)
_portal.GetNext();
do
{
if(NTM_GetCloserInt(_portal))
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
NTC_Delay(100);
if(me.areaid != 109)
break;
} while(_portal);
}
}
function NTOF_Kill_Mini_Uber()
{
if(me.areaid == 133)
{
Print(" ÿc;Killing Lillith")//i
Print(" ÿc;2Love Those Boobs")
return NTOF_KillUberLilith();
}
else if(me.areaid == 134)
{
Print(" ÿc;Killing Duriel")
return NTOF_KillUberDuriel();
}
else if(me.areaid == 135)
{
Print(" ÿc;Killing Izzy")//r
NTP_DoPrecast(true);
if(NTConfig_SwitchTele)
NTC_SwapWeapons(1);
return NTOF_KillUberIzual();
}
else
{
Print("ÿc1I'm not in any mini uber level!");
return false;
}
}
function NTOF_CheckKeptTorch()
{
var HellFireTorch = me.GetItems("cm2");
if(HellFireTorch && HellFireTorch.length > 0)
{
Print(" ÿc!Already Have A Torch");
if(NTSI_CheckItem(HellFireTorch[0]) == 0)
{
if(HellFireTorch[0].itemloc == 4)
{
// go find it in stash
if(!NTTM_CheckAct(5))
return true;
if(!NTTM_TownMove("stash"))
return true;
var _stash;
for(var i = 0 ; i < 10 ; i++)
{
_stash = NTC_FindUnit(NTC_UNIT_OBJECT, NTC_UNIT_STASH);
if(_stash)
break;
}
if(!_stash)
return true;
if(!NTT_DoInteract(_stash))
return true;
NTT_ManageStash();
// drop it
if(NTC_ItemToCursor(HellFireTorch[0]))
{
while(GetUIState(0x19))
{
me.Cancel(1);
NTC_Delay(500);
}
NTC_ClearCursor();
}
return false;
}
else if(HellFireTorch[0].itemloc == 0)
{
// drop it
SetUIState(0x01);
NTT_DropItem(HellFireTorch[0]);
me.Cancel(1);
return false;
}
else
{
// bug here :/ => where is the torch???
Print("ÿc1uhhhh, where is my torch? : itemloc "+HellFireTorch[0].itemloc);
return true;
}
}
else if(NTSI_CheckItem(HellFireTorch[0]) == -1)
{
if(HellFireTorch[0].itemloc == 4)
{
// go find it in stash
NTTM_CheckAct(5);
NTTM_TownMove("stash");
var _stash;
for(var i = 0 ; i < 10 ; i++)
{
_stash = NTC_FindUnit(NTC_UNIT_OBJECT, NTC_UNIT_STASH);
if(_stash)
break;
}
if(!_stash)
return false;
if(!NTT_DoInteract(_stash))
return false;
NTT_ManageStash();
// pick up torch
var _invspace = new Array(4);
for(var y = 0 ; y < 4 ; y++)
_stashspace[y] = new Array(10);
for(var y = 0 ; y < 4 ; y++)
for(var x = 0 ; x < 10 ; x++)
_stashspace[y][x] = NTConfig_Columns[y][x];
_items = me.GetItems(0);
if(_items)
for(var i = 0 ; i < _items.length ; i++)
for(var y = 0 ; y < _items[i].ysize ; y++)
for(var x = 0 ; x < _items[i].xsize ; x++)
_invspace[y+_items[i].y][x+_items[i].x] = 0;
for(var y = 0 ; y < 4 ; y++)
{
for(var x = 0 ; x < 10 ; x++)
{
var _havespace = true;
for(var torchysize = 0; torchysize < HellFireTorch[0].ysize; torchysize++)
for(var torchxsize = 0; torchxsize < HellFireTorch[0].xsize; torchxsize++)
if(_invspace[y+torchysize][x+torchxsize] == 0)
_havespace = false;
if(_havespace)
{
if(NTC_ItemToCursor(HellFireTorch[0]))
{
for(n = 0 ; n < 80 ; n++)
{
if((n % 40) == 0)
me.ClickItem(0, x, y, 0);
NTC_Delay(100);
if(!me.itemoncursor)
break;
}
NTC_PingDelay(200);
}
}
}
}
if(HellFireTorch[0].itemloc != 0)
return true;
me.Cancel(1);
// ID it
NTTMGR_TownManager();
return NTOF_CheckKeptTorch();
}
else if(HellFireTorch[0].itemloc == 0)
{
// ID it
if(!NTTM_CheckAct(5))
return true;
NTTMGR_TownManager();
return NTOF_CheckKeptTorch();
}
else
{
// bug here :/ => where is the torch???
Print("ÿc1uhhhh, where is my torch? : itemloc "+HellFireTorch[0].itemloc);
return true;
}
}
else
{
Print("I should keep that torch!");
return true;
}
}
return false;
}
function NTOF_UberTristram()
{
NTP_DoPrecast(true);
if(NTConfig_SwitchTele)
NTC_SwapWeapons(1);
var _old = NTConfig_AttackSkill[2];
if(NTC_PutSkill(125, NTC_HAND_RIGHT))
NTConfig_AttackSkill[2] = 125; // salvation
var _tomeph = [25040,5101, 25040, 5166, 25122, 5173];//takes you to trap house 1/2 second delay then to kill spot
for(i = 0; i < _tomeph.length; i += 2)
{
if(!NTM_MoveTo(me.areaid, _tomeph[i], _tomeph[i+1]))
return false;
NTC_Delay(1500);
}
if(!NTM_MoveTo(me.areaid, 25129, 5208)) // meph kill spot
return false;
if(NTConfig_SwitchTele)
NTC_SwapWeapons(0);
NTC_Delay(1000);
var retry = 0;
while(!NTA_KillMonster(704) && retry < 10) //meph
{
retry++;
NTM_MoveTo(me.areaid,25122+retry, 5173-retry);
Delay(1000);
NTM_MoveTo(me.areaid, 25129, 5208); // meph kill spot
Delay(800);
}
if(retry == 10)
return false;
NTConfig_AttackSkill[2] = _old;
if(NTConfig_SwitchTele)
NTC_SwapWeapons(1);
if(!NTM_MoveTo(me.areaid, 25162, 5141)) // baal kill spot
return false;
NTC_Delay(2000);
if(NTConfig_SwitchTele)
NTC_SwapWeapons(0);
if(!NTA_KillMonster(709))//baal
return false;
if(!NTA_KillMonster(705))//diablo
return false;
Print("ÿc!Thanks For The Torch!");
NTSI_PickItems();
if(NTConfig_SwitchTele)
NTC_SwapWeapons(1);
if(!NTM_MoveTo(me.areaid, 25103, 5141)) // back to portal
return false;
var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226))
while(_portal)
{
if(NTM_GetCloserInt(_portal))
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
NTC_Delay(100);
if(me.areaid != 136)
break;
}
return true;
}
function NTOF_Idle()
{
NTTM_CheckAct(5);
while(true)
{
Print('I already have a good torch! I shouldn\'t open Uber Tristram... => Idle');
NTTM_TownMove("stash");
Delay(2500);
NTTM_TownMove("Larzuk");
Delay(2500);
}
}
function NTOF_CubeKeys()
{
var KeyofTerror = me.GetItems("pk1");
var KeyofHate = me.GetItems("pk2");
var KeyofDestruction = me.GetItems("pk3");
var cube = me.GetItems(NTC_UNIT_CUBE);
if(!KeyofTerror || KeyofTerror.length < 1 || !KeyofHate || KeyofHate.length < 1 || !KeyofDestruction || KeyofDestruction.length < 1 || !cube || cube.length < 1 || !NTTM_CheckAct(5))
return false;
var _cube = cube[0];
// checking if we have a keyset in inventory, or if we need to go to stash
var terror_in_inv = false;
for(var i = 0; i < KeyofTerror.length; i++)
{
if(KeyofTerror[i].itemloc == 0)
{
terror_in_inv = true;
break;
}
}
var hate_in_inv = false;
for(var i = 0; i < KeyofHate.length; i++)
{
if(KeyofHate[i].itemloc == 0)
{
hate_in_inv = true;
break;
}
}
var dest_in_inv = false;
for(var i = 0; i < KeyofDestruction.length; i++)
{
if(KeyofDestruction[i].itemloc == 0)
{
terror_in_inv = true;
break;
}
}
// checking if we have the cube in inventory
var cube_in_inv = _cube.itemloc == 0;
if(NTCU_CheckCubeInventoryInt() > 0)
cube_in_inv = false; // we have something in the cube, we need to stash it.
if(!(terror_in_inv && hate_in_inv && dest_in_inv && cube_in_inv))
{
// we need to go to stash
NTTM_CheckAct(5);
NTTM_TownMove("stash");
var _stash;
for(var i = 0 ; i < 10 ; i++)
{
_stash = NTC_FindUnit(NTC_UNIT_OBJECT, NTC_UNIT_STASH);
if(_stash)
break;
}
if(!_stash)
return false;
if(!NTT_DoInteract(_stash))
return false;
NTT_ManageStash();
// empty the cube
if(NTCU_CheckCubeInventoryInt() > 0)
{
if(!NTCU_OpenCubeInt(_cube))
return false;
if(NTCU_ClearCubeInt() < 1)
return false;
NTCU_CloseCubeInt();
NTT_ManageStash();
}
// pick up cube
if(_cube.itemloc != 0)
{
var _invspace = new Array(4);
for(var y = 0 ; y < 4 ; y++)
_invspace[y] = new Array(10);
for(var y = 0 ; y < 4 ; y++)
for(var x = 0 ; x < 10 ; x++)
_invspace[y][x] = 1;
_items = me.GetItems();
if(_items)
for(var i = 0 ; i < _items.length ; i++)
if(_items[i].itemloc == 0)
for(var y = 0 ; y < _items[i].ysize ; y++)
for(var x = 0 ; x < _items[i].xsize ; x++)
_invspace[y+_items[i].y][x+_items[i].x] = 0;
/*
for(var y = 0 ; y < 4 ; y++)
{
var debug = "";
for(var x = 0 ; x < 10 ; x++)
debug += _invspace[y][x];
Print(debug);
}
*/
var _havespace = true;
for(var y = 0 ; y < 4 ; y++)
{
for(var x = 0 ; x < 10 ; x++)
{
_havespace = true;
for(var cubeysize = 0; cubeysize < _cube.ysize; cubeysize++)
for(var cubexsize = 0; cubexsize < _cube.xsize; cubexsize++)
if(y+cubeysize > 3 || x+cubexsize > 9 || _invspace[y+cubeysize][x+cubexsize] == 0)
_havespace = false;
if(_havespace)
{
if(NTC_ItemToCursor(_cube))
{
for(n = 0 ; n < 80 ; n++)
{
if((n % 40) == 0)
me.ClickItem(0, x, y, 0);
NTC_Delay(100);
if(!me.itemoncursor)
break;
}
NTC_PingDelay(200);
}
if(!me.itemoncursor)
break;
}
}
if(_havespace && !me.itemoncursor)
break;
}
if(_cube.itemloc != 0)
return false;
}
// put the keys inside the cube
//if(!NTCU_OpenCubeInt(_cube))
// return false;
KeyofTerror = me.GetItems("pk1");
KeyofHate = me.GetItems("pk2");
KeyofDestruction = me.GetItems("pk3");
for(var i = 0; i < KeyofTerror.length; i++)
{
if(terror_in_inv && KeyofTerror[i].itemloc == 4 && i < KeyofTerror.length - 1)
continue;
if(!NTCU_MoveItemToCubeInt(_cube, KeyofTerror[i]))
return false;
else
break;
}
for(var i = 0; i < KeyofHate.length; i++)
{
if(hate_in_inv && KeyofHate[i].itemloc == 4 && i < KeyofHate.length - 1)
continue;
if(!NTCU_MoveItemToCubeInt(_cube, KeyofHate[i]))
return false;
else
break;
}
for(var i = 0; i < KeyofDestruction.length; i++)
{
if(dest_in_inv && KeyofDestruction[i].itemloc == 4 && i < KeyofDestruction.length - 1)
continue;
if(!NTCU_MoveItemToCubeInt(_cube, KeyofDestruction[i]))
return false;
else
break;
}
//NTT_ManageStash();
// close stash
me.Cancel(1);
}
else
{
// open inventory
SetUIState(0x01, true);
// put the keys inside the cube
//if(!NTCU_OpenCubeInt(_cube))
//return false;
KeyofTerror = me.GetItems("pk1");
KeyofHate = me.GetItems("pk2");
KeyofDestruction = me.GetItems("pk3");
for(var i = 0; i < KeyofTerror.length; i++)
{
if(terror_in_inv && KeyofTerror[i].itemloc == 4)
continue;
if(!NTCU_MoveItemToCubeInt(_cube, KeyofTerror[i]))
return false;
else
break;
}
for(var i = 0; i < KeyofHate.length; i++)
{
if(hate_in_inv && KeyofHate[i].itemloc == 4)
continue;
if(!NTCU_MoveItemToCubeInt(_cube, KeyofHate[i]))
return false;
else
break;
}
for(var i = 0; i < KeyofDestruction.length; i++)
{
if(dest_in_inv && KeyofDestruction[i].itemloc == 4)
continue;
if(!NTCU_MoveItemToCubeInt(_cube, KeyofDestruction[i]))
return false;
else
break;
}
//NTCU_CloseCubeInt();
// close inventory
me.Cancel(1);
}
// moving to an openPortal spot
NTOF_MoveToOpenRedPortalSpot();
// open inventory
SetUIState(0x01, true);
// open cube
if(!NTCU_OpenCubeInt(_cube))
return false;
// transmute
if(!Transmute())
{
NTCU_CloseCubeInt();
me.Cancel(1);
return false;
}
NTC_PingDelay(800);
NTCU_CloseCubeInt();
me.Cancel(1);
return true;
}
function NTOF_CubeOrgans()
{
var mephistosbrain = me.GetItems("mbr");
var baalseye = me.GetItems("bey");
var diabloshorn = me.GetItems("dhn");
var cube = me.GetItems(NTC_UNIT_CUBE);
if(!mephistosbrain || mephistosbrain.length < 1 || !baalseye || baalseye.length < 1 || !diabloshorn || diabloshorn.length < 1 || !cube || cube.length < 1 || !NTTM_CheckAct(5))
return false;
var _cube = cube[0];
// checking if we have a keyset in inventory, or if we need to go to stash
var diabloshorn_in_inv = false;
for(var i = 0; i < diabloshorn.length; i++)
{
if(diabloshorn[i].itemloc == 0)
{
diabloshorn_in_inv = true;
break;
}
}
var mephistosbrain_in_inv = false;
for(var i = 0; i < mephistosbrain.length; i++)
{
if(mephistosbrain[i].itemloc == 0)
{
mephistosbrain_in_inv = true;
break;
}
}
var baalseye_in_inv = false;
for(var i = 0; i < baalseye.length; i++)
{
if(baalseye[i].itemloc == 0)
{
baalseye_in_inv = true;
break;
}
}
// checking if we have the cube in inventory
var cube_in_inv = _cube.itemloc == 0;
if(NTCU_CheckCubeInventoryInt() > 0)
cube_in_inv = false; // we have something in the cube, we need to stash it.
if(!(diabloshorn_in_inv && mephistosbrain_in_inv && baalseye_in_inv && cube_in_inv))
{
// we need to go to stash
NTTM_CheckAct(5);
NTTM_TownMove("stash");
var _stash;
for(var i = 0 ; i < 10 ; i++)
{
_stash = NTC_FindUnit(NTC_UNIT_OBJECT, NTC_UNIT_STASH);
if(_stash)
break;
}
if(!_stash)
return false;
if(!NTT_DoInteract(_stash))
return false;
NTT_ManageStash();
// empty the cube
if(NTCU_CheckCubeInventoryInt() > 0)
{
if(!NTCU_OpenCubeInt(_cube))
return false;
if(NTCU_ClearCubeInt() < 1)
return false;
NTCU_CloseCubeInt();
NTT_ManageStash();
}
// pick up cube
if(_cube.itemloc != 0)
{
var _invspace = new Array(4);
for(var y = 0 ; y < 4 ; y++)
_invspace[y] = new Array(10);
for(var y = 0 ; y < 4 ; y++)
for(var x = 0 ; x < 10 ; x++)
_invspace[y][x] = 1;
_items = me.GetItems();
if(_items)
for(var i = 0 ; i < _items.length ; i++)
if(_items[i].itemloc == 0)
for(var y = 0 ; y < _items[i].ysize ; y++)
for(var x = 0 ; x < _items[i].xsize ; x++)
_invspace[y+_items[i].y][x+_items[i].x] = 0;
var _havespace = true;
for(var y = 0 ; y < 4 ; y++)
{
for(var x = 0 ; x < 10 ; x++)
{
_havespace = true;
for(var cubeysize = 0; cubeysize < _cube.ysize; cubeysize++)
for(var cubexsize = 0; cubexsize < _cube.xsize; cubexsize++)
if(y+cubeysize > 3 || x+cubexsize > 9 || _invspace[y+cubeysize][x+cubexsize] == 0)
_havespace = false;
if(_havespace)
{
if(NTC_ItemToCursor(_cube))
{
for(n = 0 ; n < 80 ; n++)
{
if((n % 40) == 0)
me.ClickItem(0, x, y, 0);
NTC_Delay(100);
if(!me.itemoncursor)
break;
}
NTC_PingDelay(200);
}
if(!me.itemoncursor)
break;
}
}
if(_havespace && !me.itemoncursor)
break;
}
if(_cube.itemloc != 0)
return false;
}
// put the keys inside the cube
//if(!NTCU_OpenCubeInt(_cube))
//return false;
mephistosbrain = me.GetItems("mbr");
baalseye = me.GetItems("bey");
diabloshorn = me.GetItems("dhn");
for(var i = 0; i < mephistosbrain.length; i++)
{
if(mephistosbrain_in_inv && mephistosbrain[i].itemloc == 4 && i < mephistosbrain.length - 1)
continue;
if(!NTCU_MoveItemToCubeInt(_cube, mephistosbrain[i]))
return false;
else
break;
}
for(var i = 0; i < baalseye.length; i++)
{
if(baalseye_in_inv && baalseye[i].itemloc == 4 && i < baalseye.length - 1)
continue;
if(!NTCU_MoveItemToCubeInt(_cube, baalseye[i]))
return false;
else
break;
}
for(var i = 0; i < diabloshorn.length; i++)
{
if(diabloshorn_in_inv && diabloshorn[i].itemloc == 4 && i < diabloshorn.length - 1)
continue;
if(!NTCU_MoveItemToCubeInt(_cube, diabloshorn[i]))
return false;
else
break;
}
//NTCU_CloseCubeInt();
//NTT_ManageStash();
// close stash
me.Cancel(1);
}
else
{
// open inventory
SetUIState(0x01, true);
// put the keys inside the cube
//if(!NTCU_OpenCubeInt(_cube))
//return false;
mephistosbrain = me.GetItems("mbr");
baalseye = me.GetItems("bey");
diabloshorn = me.GetItems("dhn");
for(var i = 0; i < mephistosbrain.length; i++)
{
if(mephistosbrain[i].itemloc == 4)
continue;
if(!NTCU_MoveItemToCubeInt(_cube, mephistosbrain[i]))
return false;
else
break;
}
for(var i = 0; i < baalseye.length; i++)
{
if(baalseye[i].itemloc == 4)
continue;
if(!NTCU_MoveItemToCubeInt(_cube, baalseye[i]))
return false;
else
break;
}
for(var i = 0; i < diabloshorn.length; i++)
{
if(diabloshorn[i].itemloc == 4)
continue;
if(!NTCU_MoveItemToCubeInt(_cube, diabloshorn[i]))
return false;
else
break;
}
//NTCU_CloseCubeInt();
// close inventory
me.Cancel(1);
}
// moving to an openPortal spot
NTOF_MoveToOpenRedPortalSpot();
// open inventory
SetUIState(0x01, true);
// open cube
if(!NTCU_OpenCubeInt(_cube))
return false;
// transmute
if(!Transmute())
{
NTCU_CloseCubeInt();
me.Cancel(1);
return false;
}
NTC_PingDelay(800);
NTCU_CloseCubeInt();
me.Cancel(1);
return true;
}
var red_portal_spots = ["larzuk", "cain", "qual-kehk", "malah"];
var red_portal_index = 0;
function NTOF_MoveToOpenRedPortalSpot()
{
var _result = NTTM_TownMove(red_portal_spots[red_portal_index]);
red_portal_index++;
if(red_portal_index > red_portal_spots.length - 1)
red_portal_index = 0;
return _result;
}
function NTOF_KillUberLilith()
{
NTP_DoPrecast(true);
if(NTConfig_SwitchTele)
NTC_SwapWeapons(1);
if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 397, 2, 2))
return false;
if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
return false;
if(NTConfig_SwitchTele)
NTC_SwapWeapons(0);
if(!NTA_KillMonster(707))
return false;
NTC_PingDelay(100);
Print(" ÿc;Thanks for the Horn")
NTC_PingDelay(100);
NTSI_PickItems();
return true;
}
function NTOF_KillUberIzual()
{
NTP_DoPrecast(true);
if(NTConfig_SwitchTele)
NTC_SwapWeapons(1);
if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 397, 2, 2))
return false;
if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
return false;
if(NTConfig_SwitchTele)
NTC_SwapWeapons(0);
if(!NTA_KillMonster(706))
return false;
NTC_PingDelay(100);
Print(" ÿc;Thanks for the Brain")
NTC_PingDelay(200);
NTSI_PickItems();
return true;
}
function NTOF_KillUberDuriel()
{
NTP_DoPrecast(true);
if(NTConfig_SwitchTele)
NTC_SwapWeapons(1);
if(!NTOF_FindUberDuriel())
return false;
if(NTConfig_SwitchTele)
NTC_SwapWeapons(0);
var UberDuriel = NTC_FindMonster(708);
if(!UberDuriel)
return false;
if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
return false;
NTM_MoveTo(me.areaid, UberDuriel.x, UberDuriel.y);
if(!NTA_KillMonster(708))
return false;
NTC_PingDelay(100);
Print(" ÿc;Thanks for the Eye")
NTC_PingDelay(200);
NTSI_PickItems();
return true;
}
function NTOF_FindUberDuriel()
{
var FindLoc = [20196, 8694, 20308, 8588, 20187, 8639, 20100, 8550, 20103, 8688, 20144, 8709, 20263, 8811, 20247, 8665];
var _teleport;
var _path;
var _result;
for(var k = 0 ; k < FindLoc.length; k+=2)
{
if(NTC_InTown() || NTC_GetSkillLevel(54) < 1)
_teleport = false;
else
_teleport = true;
_path = GetPath(me.areaid, me.x, me.y, FindLoc[k], FindLoc[k+1], _teleport);
if(_path)
{
for(var i = 0 ; i < _path.length ; i++)
{
if(_teleport)
_result = NTM_TeleportTo(_path[i][0], _path[i][1]);
else
_result = NTM_WalkTo(_path[i][0], _path[i][1]);
if(NTC_FindMonster(708))
return true;
}
}
}
return false;
}
function NTC_FindMonster(classid, spectype)
{
var _monster;
if(arguments.length < 1)
return null;
if(arguments.length < 2)
spectype = 0;
for(var i = 0 ; i < 2 ; i++)
{
_monster = GetUnit(NTC_UNIT_MONSTER, classid);
if(_monster)
{
if(spectype)
{
do
{
if(_monster.spectype & spectype)
return _monster;
} while(_monster.GetNext());
}
else
return _monster;
}
if(i < 1)
NTC_PingDelay(NTC_DELAY_FRAME);
}
return null;
}
function NTOF_PreBuffFade()
{
var _result = false;
if(NTTM_CheckAct())
{
if(NTTM_TownMove("waypoint"))
{
if(NTM_TakeWaypoint(107))
{
NTP_DoPrecast(true);
NTM_MoveTo(me.areaid, 7811, 5872);
Print("ÿc;Getting Buffed");
var timer = 0;
while(timer < 60001) // 1 min max
{
if(me.GetStat(181) > 0)
{
Print("ÿc;There's Our Fade");
_result = true;
break;
}
NTC_Delay(200);
timer += 200;
}
if(timer > 60000)
Print("It was too long, moving on!");
if(NTTM_CheckAct(5))
NTTMGR_TownManager();
}
}
}
return _result;
}
function NTOF_KillCountess()
{
var _countess;
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(6))
return false;
NTP_DoPrecast(true);
if(NTConfig_SwitchTele)
NTC_SwapWeapons(1);
for(var i = 0 ; i < 6 ; i++)
{
if(!NTM_MoveToStair(me.areaid, 20+i))
return false;
if(!NTM_TakeStair(20+i))
return false;
}
if(NTConfig_ClearPosition)
{
if(NTConfig_SwitchTele)
NTC_SwapWeapons(0);
NTA_ClearPosition(10, true, 2);
if(NTConfig_SwitchTele)
NTC_SwapWeapons(1);
}
if(me.y > 11060 && me.y <= 11078)
{
if(!NTM_MoveTo(me.areaid, 12544, 11066))
return false;
}
else
{
if(!NTM_MoveTo(me.areaid, 12570, 11057))
return false;
}
_countess = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2875), 5);
if(!_countess)
return false;
if(me.y > 11060 && me.y <= 11078)
{
if(_countess.y <= 11054)
NTM_MoveTo(me.areaid, 12537, 11042);
if(_countess.y > 11056 && _countess.y <= 11070)
{
if(_countess.x < 12533)
NTM_MoveTo(me.areaid, 12518, 11057);
else
NTM_MoveTo(me.areaid, 12548, 11057);
}
if(_countess.y > 11070 && _countess.y <= 11085)
{
if(_countess.x < 12533)
NTM_MoveTo(me.areaid, 12518, 11083);
else
NTM_MoveTo(me.areaid, 12548, 11083);
}
if(_countess.y > 11086)
NTM_MoveTo(me.areaid, 12542, 11098);
}
else
{
if(_countess.x <= 12550)
{
NTM_MoveTo(me.areaid, 12562, 11057);
NTM_MoveTo(me.areaid, 12548, 11043);
}
if(_countess.x > 12550 && _countess.x <= 12561)
{
if(_countess.y < 11027)
NTM_MoveTo(me.areaid, 12577, 11043);
else
{
NTM_MoveTo(me.areaid, 12565, 11043);
NTM_MoveTo(me.areaid, 12577, 11025);
}
}
if(_countess.x > 12561 && _countess.x <= 12579)
{
if(_countess.y < 11027)
NTM_MoveTo(me.areaid, 12555, 11043);
else
{
NTM_MoveTo(me.areaid, 12565, 11043);
NTM_MoveTo(me.areaid, 12555, 11025);
}
}
if(_countess.x > 12579)
{
NTM_MoveTo(me.areaid, 12578, 11057);
NTM_MoveTo(me.areaid, 12582, 11043);
}
}
if(NTConfig_SwitchTele)
NTC_SwapWeapons(0);
if(!NTA_KillMonster(GetLocaleString(2875)))
return false;
if(NTConfig_ClearPosition)
NTA_ClearPosition();
NTSI_PickItems();
if(NTConfig_OpenChest)
{
if(NTConfig_SwitchTele)
NTC_SwapWeapons(1);
if(!NTM_MoveToStair(me.areaid, 24))
return false;
if(me.areaid, me.x > 12565 && me.y > 11127)
{
if(!NTM_MoveTo(me.areaid, 12515, 11099))
NTM_MoveTo(me.areaid, 12603, 11014);
}
var _armor;
_armor = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3247), 1);
NTC_OpenChest(_armor);
var _weapon;
_weapon = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3248), 1);
NTC_OpenChest(_weapon);
}
if(NTConfig_SwitchTele)
NTC_SwapWeapons(0);
return true;
}
function NTOF_KillSummoner()
{
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(74))
return false;
NTP_DoPrecast(true);
if(NTConfig_KillFireEye)
{
if(NTM_TakeUnit(NTC_UNIT_OBJECT, 298))
{
if(NTA_KillMonster(GetLocaleString(2885)))
{
if(NTConfig_ClearPosition)
NTA_ClearPosition();
NTSI_PickItems();
}
if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 298))
return false;
if(!NTM_TakeUnit(NTC_UNIT_OBJECT, 298))
return false;
}
}
if(NTConfig_SwitchTele)
NTC_SwapWeapons(1);
if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_OBJECT, 357, 2, 2))
return false;
if(NTConfig_SwitchTele)
NTC_SwapWeapons(0);
if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
return false;
if(!NTA_KillMonster(250))
return false;
if(NTConfig_ClearPosition)
NTA_ClearPosition();
NTSI_PickItems();
return true;
}
var _NTNihlathak_Locations = new Array(8, 4);
_NTNihlathak_Locations[0] = [12519, 5203, 12522, 5227]; // Top Left
_NTNihlathak_Locations[1] = [12704, 5019, 12692, 5022]; // Top Right
_NTNihlathak_Locations[2] = [12705, 5391, 12723, 5413]; // Bottom Right
_NTNihlathak_Locations[3] = [12889, 5206, 12898, 5228]; // Bottom Left
_NTNihlathak_Locations[4] = [12519, 5203, 12522, 5196]; // Top Left
_NTNihlathak_Locations[5] = [12704, 5019, 12692, 5413]; // Top Right
_NTNihlathak_Locations[6] = [12705, 5391, 12727, 5022]; // Bottom Right
_NTNihlathak_Locations[7] = [12889, 5206, 12898, 5192]; // Bottom Left
function NTOF_KillNilhatack()
{
if(!NTTM_TownMove("waypoint"))
return false;
if(!NTM_TakeWaypoint(123))
{
me.Cancel(1);
if(!NTTM_CheckAct(5))
return false;
NTConfig_PindleskinExtension = false;
if(!NTTM_TownMove("portal"))
return false;
if(!NTM_UsePortal("Portal", 121))
return false;
NTP_DoPrecast(true);
if(!NTM_MoveTo(me.areaid, 10061, 13234))
return false;
if(NTA_KillMonster(GetLocaleString(22497)))
{
if(NTConfig_ClearPosition)
NTA_ClearPosition();
NTSI_PickItems();
}
if(NTConfig_SwitchTele)
NTC_SwapWeapons(1);
if(!NTM_MoveToStair(me.areaid, 122))
return false;
if(!NTM_TakeStair(122))
return false;
if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
return false;
if(!NTM_MoveToStair(me.areaid, 123))
return false;
if(!NTM_TakeStair(123))
return false;
}
NTP_DoPrecast(true);
if(NTConfig_SwitchTele)
NTC_SwapWeapons(1);
if(!NTM_MoveToStair(me.areaid, 124))
return false;
if(!NTM_TakeStair(124))
return false;
_location = NT_FindNihlathakInt();
if(_location == -1)
return false;
if(!NTM_MoveTo(me.areaid, _NTNihlathak_Locations[_location][2], _NTNihlathak_Locations[_location][3]))
return false;
if(NTConfig_SwitchTele)
NTC_SwapWeapons(0);
if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
return false;
if(NTA_KillMonster(526))
{
if(NTConfig_ClearPosition)
NTA_ClearPosition();
NTSI_PickItems();
}
else
{
return false;
}
if(NTConfig_PindleskinExtension)
{
for(var i = 0 ; i < 2 ; i++)
{
if(!NTM_MoveToStair(me.areaid, 123-i))
return true;
if(!NTM_TakeStair(123-i))
return true;
}
if(!NTM_MoveToStair(me.areaid, 121))
return true;
if(!NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
return true;
NTP_DoPrecast(false);
if(!NTM_TakeStair(121))
return true;
if(!NTM_MoveTo(me.areaid, 10061, 13234))
return true;
if(!NTA_KillMonster(GetLocaleString(22497)))
return true;
if(NTConfig_ClearPosition)
NTA_ClearPosition();
NTSI_PickItems();
}
return true;
}
function NT_FindNihlathakInt()
{
var i, x, y;
var _nihlathak;
var _mindist = 999999;
var _currdist;
var _location = -1;
_nihlathak = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT, 462);
if(!_nihlathak || _nihlathak.length < 1)
return _location;
x = _nihlathak[0].roomx*5 + _nihlathak[0].x;
y = _nihlathak[0].roomy*5 + _nihlathak[0].y;
for(i = 0 ; i < 8 ; i++)
{
_currdist = GetDistance(_NTNihlathak_Locations[i][0], _NTNihlathak_Locations[i][1], x, y);
if(_currdist < _mindist)
{
_mindist = _currdist;
_location = i;
}
}
return _location;
}
Code:
NTConfig_Script.push("NTEldritch.ntj"); NTConfig_ShenkExtension = true;
NTConfig_Script.push("NTOrganFarmerPlusTorcher.ntj");
NTConfig_SwitchTele = true; // use tab1 for teleport (and switch back to tab0 after)
NTConfig_PreBuffFade = true; // set to true only if you have LastWish on tab0
NTConfig_Script.push("NTTravincal.ntj");
Chicken solltet ihr auch auf ca 5% stellen, da der bot sonst sehr schnell bei Meppl und Andy leavt






