Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // CHANGE THESE VARIABLES //
- //{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- //-----------------------------//
- // Character Name Configs //
- //-----------------------------//
- var leader = "Vitamins"; //Main Sorc Leader
- var pally = "iSpun"; //Main Pally
- var pally2 = "WeSpun"; //Helper Pally
- var pally3 = "pally3"; //Helper Pally2
- var barb = "Lurk"; //Main Barb
- var zon = "zon"; //Amazon
- var nec = "iBoNeD"; //Nec
- var sorc = "sorc"; //Sorc
- var leecher = "Leecher"; //Passive Leecher
- //--------------//
- // Settings //
- //--------------//
- var delay_start = 25000; //This is in milaseconds. Sorc delay to give Barb/Pally time to buy. Set to 0 to disable.
- var boss_only = true; //If true, kills boss first and ignores remaining monsters.
- var own_tp = true; //If true, each character will use their own TP to get to town.
- var pickit_seals = false; //Do you want helpers to Pickit Seals?
- //--------------------//
- // Announcements //
- //--------------------//
- var announce_active = true; //If true, sorc will use say commands
- var announce_bo = "BO"; //BO TP is Up commands
- var announce_viz = "Viz Up"; //Vizier Up command
- var announce_vizd = "Viz Down"; //Vizier Dead command
- var announce_inf = "Fect Up"; //Infect Up command
- var announce_infd = "Fect Down"; //Infect Dead command
- var announce_seis = "Seis Up"; //DeSeis Up command
- var announce_seisd = "Seis Down"; //DeSeis Dead command
- var announce_d = "Dia Out"; //Diablo Up command
- //-------------------//
- // Main Pally Config //
- //-------------------//
- var ham_viz = 5; //Ammount of pre-hammers for Vizier
- var ham_inf = 10; //Ammount of pre-hammers for Infector
- var ham_des = 10; //Ammount of pre-hammers for DeSeis
- var pally_Dia = false; //If true will help kill Diablo
- //---------------------//
- // Helper Pally Config //
- //---------------------//
- var ham2_viz = 5; //Ammount of pre-hammers for Vizier
- var ham2_inf = 12; //Ammount of pre-hammers for Infector
- var ham2_des = 12; //Ammount of pre-hammers for DeSeis
- var pally2_Dia = false; //If true will help kill Diablo
- //-----------------//
- // Amazon Config //
- //-----------------//
- var zon_Dia = false; //If true will help kill Diablo
- //--------------------//
- // Necromancer Config //
- //--------------------//
- var nec_Dia = false; //If true will help kill Diablo
- //----------------------------//
- // Helper Sorceress Config //
- //----------------------------//
- var sorc_viz = 5; //Number of pre casts for viz
- var sorc_inf = 10; //Number of pre casts for inf
- var sorc_des = 10; //Number of pre casts for seis
- var sorc_Dia = false; //If true will help kill Diablo
- //-------------------//
- // Main Barb Config //
- //-------------------//
- var tp_howl = false; //Howl after entering TP's
- var tp_bo = false; //BO after entering TP's
- var leap_inf = 7; //Ammount of pre-leaps for Infector
- var leap_des = 7; //Ammount of pre-leaps for DeSeis
- var barb_Dia = false; //If true will help kill Diablo
- //-------------------//
- // Main Barb Config //
- //-------------------//
- var leech_Dia = false; //If true will Leech Diablo
- //}
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Global Variables (Dont Touch) //
- //{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- var _MyDT_PreMessage = "";
- var _sealpos = 0;
- var safex;
- var safey;
- var TPx;
- var TPy;
- var prevx;
- var prevy;
- var left_barb = false;
- var left_pally = false;
- var d_spawn = false;
- //}
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Main Functions //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function NTMain()
- {
- Include("libs/common/NTCommon.ntl");
- NTC_IncludeLibs();
- NTC_IncludeConfig("NTBot/char_configs");
- NT_LoadConfig();
- NTSI_LoadNIPFiles("NTBot/item_configs");
- NTA_Initialize();
- if(!NTTM_CheckAct())
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
- return;
- }
- NTC_Delay(1000);
- if(!NTTM_CheckAct(4))
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
- return;
- }
- RegisterEvent(EVENT_GAMEMSG, quitfunc);
- //Empty txt file
- TD_File("NTBot/bots/TeamD.txt", 1);
- //Leader Sorc
- if(me.name == leader)
- {
- if(!NTTM_CheckAct(4))
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
- return;
- }
- if(delay_start)
- NTC_Delay(delay_start);
- NTTMGR_TownManager();
- TD_Sorcfunc();
- }
- //Helpers
- if(me.name == pally || me.name == pally2 || me.name == pally3 || me.name == barb || me.name == zon || me.name == nec || me.name == sorc || me.name == leecher)
- {
- NTTMGR_TownManager();
- NTTM_TownMove("portalspot");
- while(1) {
- TD_TeamCommands();
- Delay(200);
- }
- }
- NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Main Sorceress //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_Sorcfunc()
- {
- NTC_Delay(500);
- if(!NTTM_TownMove("waypoint"))
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
- return;
- }
- if(!NTM_TakeWaypoint(107))
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
- return;
- }
- NTC_Delay(500);
- NTM_MoveTo(me.areaid, me.x+5, me.y);
- TD_Do_Tp();
- //Announce say commands
- if(announce_active)
- Say(announce_bo);
- TD_File("NTBot/bots/TeamD.txt", 1, ".bo");
- NTC_Delay(1500);
- //if barb never shows
- var bo_timeout = 0;
- while(!me.GetState(32))
- {
- if(bo_timeout >= 40)
- {
- NTC_Delay(500);
- ExitGame();
- }
- NTC_Delay(500);
- bo_timeout++;
- }
- NTP_DoPrecast(true);
- if(!TD_MoveTo(108, 7802, 5591)) {
- NTC_SendMsgToScript("NTBotGame.ntj", "TD_MoveTo()");
- return;
- }
- //Detect layout and move to next position
- if(TD_DetectLayout(1) == 1)
- TD_Sorc_Next(7681, 5296);
- else
- TD_Sorc_Next(7682, 5316);
- //Announce say commands
- if(announce_active)
- Say(announce_viz);
- //Write to file
- TD_File("NTBot/bots/TeamD.txt", 1, ".s1"); //vizier
- if(!TD_VizierSeal())
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "Seal opening");
- return;
- }
- var _msg = TD_File("NTBot/bots/TeamD.txt", 0);
- var msg2 = _msg.substring(_msg.indexOf("/") + 1);
- //Sorc attack rotation for seals.
- NTM_MoveTo(me.areaid, TPx, TPy);
- var _viz = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2851), 120);
- if(_viz && _viz.GetStat(43) > 100) // ci viz
- {
- if (!CheckCollision(me, _viz, 1))
- {
- var _pos = me.GetOptimalAttackPos(_viz.areaid, _viz.x, _viz.y, 6, 1);
- Print("Can't attack Viz. Moving.");
- _pos ? NTM_MoveTo(_viz.areaid, _pos[0], _pos[1], 0) : NTM_MoveTo(_viz.areaid, _viz.x, _viz.y, 0);
- }
- while (_viz && _viz.hp > 0 && _viz.mode != 0 && _viz.mode != 12)
- {
- NTC_CastSkill(59, NTC_HAND_RIGHT, _viz);
- while (me.GetSkillStatus(59) == 8)
- NTC_CastSkill(55, NTC_HAND_RIGHT, _viz); // glacial
- //NTC_CastSkill(42, NTC_HAND_LEFT, _inf); // blast
- _viz = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2851), 120);
- }
- }
- else
- {
- Print("*Rawr* i are agressive sorc!");
- while (_viz && _viz.hp > 0 && _viz.mode != 0 && _viz.mode != 12)
- {
- if (me.GetSkillStatus(59) != 8)
- NTC_CastSkill(59, NTC_HAND_RIGHT, _viz);
- if (GetDistance(me, _viz) > 5)
- NTM_MoveTo(_viz.areaid, _viz.x, _viz.y);
- NTC_CastSkill(55, NTC_HAND_RIGHT, _viz);
- while (me.GetSkillStatus(59) == 8)
- NTC_CastSkill(45, NTC_HAND_RIGHT, _viz); // ib
- _viz = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2851), 120);
- }
- }
- NTSI_PickItems();
- //Write to file
- NT_File("NTBot/bots/TeamD.txt", 1, ".s1d"); //Vizier Dead
- //New Check safe
- if(NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe))
- {
- NTTMGR_VisitTown();
- }
- NTP_DoPrecast(true);
- //Detect layout and move to next position
- if(TD_DetectLayout(3) == 1)
- TD_Sorc_Next(7917, 5294);
- else
- TD_Sorc_Next(7909, 5276);
- //Announce say commands
- if(announce_active)
- Say(announce_inf);
- //Write command to file for other chars
- TD_File("NTBot/bots/TeamD.txt", 1, ".s3"); //infector
- //Open infect seal
- if(!TD_InfectorSeal())
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "Seal opening");
- return;
- }
- //Sorc attack rotation infector seal.
- NTM_MoveTo(me.areaid, TPx, TPy);
- var _inf = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2853), 20);
- while (_inf && _inf.hp > 0 && _inf.mode != 0 && _inf.mode != 12)
- {
- NTC_CastSkill(59, NTC_HAND_RIGHT, _inf);
- while (me.GetSkillStatus(59) == 8)
- NTC_CastSkill(55, NTC_HAND_LEFT, _inf);
- NTC_CastSkill(42, NTC_HAND_LEFT, _inf);
- _inf = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2853), 50);
- }
- NTSI_PickItems();
- NT_File("NTBot/bots/TeamD.txt", 1, ".s3d"); //Infector Dead
- //Detect layout and move to next position
- if(TD_DetectLayout(2) == 1)
- TD_Sorc_Next(7776, 5230);
- else
- TD_Sorc_Next(7779, 5200);
- //Announce say commands
- if(announce_active)
- Say(announce_seis);
- //Write command to file for other chars
- TD_File("NTBot/bots/TeamD.txt", 1, ".s2"); //de seis
- if(!TD_DeSeisSeal())
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "Seal opening");
- return;
- }
- //Sorc attack rotation DeSeis seals.
- NTM_MoveTo(me.areaid, TPx, TPy);
- var _Seis = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2852), 25);
- while(_Seis && _Seis.mode != 12)
- {
- NTA_ClearPosition(10);
- NTA_KillMonster(GetLocaleString(2852));
- NTSI_PickItems()
- }
- NT_File("NTBot/bots/TeamD.txt", 1, ".s2d"); //De Seis Dead
- //Sorc Leecher TP
- TD_MoveTo(me.areaid, 7763, 5267);
- TD_Deploy(7763, 5267, 0, 0, 10, 10);
- if(NTM_MakeTP())
- Say("Leech TP up")
- NTC_Delay(750);
- NTP_DoPrecast(true);
- if(!NTM_MoveTo(me.areaid, 7792, 5292))
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveTo()");
- return;
- }
- NTM_MakeTP();
- //Announce say commands
- if(announce_active)
- Say(announce_d);
- d_spawn = true;
- TD_File("NTBot/bots/TeamD.txt", 1, ".d");
- NTC_Delay(1500);
- NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
- if(!NTA_KillMonster(243))
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTA_KillMonster()");
- return;
- }
- NTSI_PickItems();
- NTC_Delay(100);
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Main Team //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_TeamCommands()
- {
- var _msg = TD_File("NTBot/bots/TeamD.txt", 0);
- if (_msg && _msg != _MyDT_PreMessage) {
- _MyDT_PreMessage = _msg;
- switch (_msg.substring(_msg.indexOf("/") + 1)) {
- //{BO
- case ".bo":
- if(me.name == pally || me.name == pally2 || me.name == pally3 || me.name == zon || me.name == nec || me.name == sorc || me.name == leecher) { //Team's BO
- NTM_UsePortal("BluePortal", 107, leader);
- NTC_Delay(500);
- NTP_DoPrecast(true);
- NTC_Delay(3500);
- if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
- NTTM_CheckAct();
- }
- if(me.name == barb) { //Barbarian
- NTM_UsePortal("BluePortal", 107, leader);
- while(!me.GetState(32))
- NTP_DoPrecast(true);
- NTP_DoPrecast(true);
- if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
- NTTM_CheckAct();
- }
- break;
- //}
- //{vizier
- case ".s1":
- if(me.name == pally) { //Main Hammerdin
- NTM_UsePortal("BluePortal", 108, leader);
- TD_Preattack(GetLocaleString(2851), ham_viz);
- TD_KillViz();
- }
- if(me.name == pally2 || me.name == pally3) { //Helper Hammerdin
- NTM_UsePortal("BluePortal", 108, leader);
- TD_Preattack(GetLocaleString(2851), ham2_viz);
- TD_KillViz();
- }
- if(me.name == zon) { //Amazon
- NTM_UsePortal("BluePortal", 108, leader);
- //NTC_Delay(2000);
- TD_zonattack(GetLocaleString(2851), 1);
- TD_KillViz();
- }
- if(me.name == nec) { //Necromancer
- NTM_UsePortal("BluePortal", 108, leader);
- TD_necattack(GetLocaleString(2851), 1);
- attackNec(2851);
- if(announce_active)
- Say(announce_vizd);
- if(pickit_seals)
- NTSI_PickItems();
- }
- if(me.name == sorc) { //Sorceress
- NTM_UsePortal("BluePortal", 108, leader);
- //NTC_Delay(2000);
- TD_sorcattack(GetLocaleString(2851), sorc_viz);
- TD_KillViz();
- }
- if(me.name == barb) { //Barbarian
- NTM_UsePortal("BluePortal", 108, leader);
- babaprecast();
- NTC_CastSkill(130, NTC_HAND_RIGHT);
- NTC_Delay(200);
- NTC_CastSkill(130, NTC_HAND_RIGHT);
- TD_Take_TP()
- }
- if(me.name == leecher) { //Passive Leecher
- NTM_UsePortal("BluePortal", 108, leader);
- }
- break;
- case ".s1d":
- if(me.name == pally || me.name == pally2 || me.name == pally3 || me.name == zon || me.name == nec || me.name == sorc || me.name == leecher)
- {
- if(announce_active)
- Say(announce_vizd);
- TD_Take_TP()
- }
- break;
- //{de seis
- case ".s2":
- if(me.name == pally) { //Main Hammerdin
- NTM_UsePortal("BluePortal", 108, leader);
- TD_Preattack(GetLocaleString(2852), ham_des);
- TD_KillSeis();
- }
- if(me.name == pally2 || me.name == pally3) { //Helper Hammerdin
- NTM_UsePortal("BluePortal", 108, leader);
- TD_Preattack(GetLocaleString(2852), ham2_des);
- TD_KillSeis();
- }
- if(me.name == zon) { //Amazon
- NTM_UsePortal("BluePortal", 108, leader);
- //NTC_Delay(2000);
- TD_zonattack(GetLocaleString(2852), 1);
- TD_KillSeis();
- }
- if(me.name == nec) { //Necromancer
- NTM_UsePortal("BluePortal", 108, leader);
- TD_necattack(GetLocaleString(2852), 1);
- attackNec(2852);
- if(announce_active)
- Say(announce_seisd);
- if(pickit_seals)
- NTSI_PickItems();
- }
- if(me.name == sorc) { //Sorceress
- NTM_UsePortal("BluePortal", 108, leader);
- //NTC_Delay(2000);
- TD_sorcattack(GetLocaleString(2852), sorc_des);
- TD_KillSeis();
- }
- if(me.name == barb){ //Barbarian
- NTM_UsePortal("BluePortal", 108, leader);
- babaprecast();
- preAttackBarbLeap(GetLocaleString(2852), leap_des);
- TD_KillSeis();
- }
- if(me.name == leecher) { //Passive Leecher
- NTM_UsePortal("BluePortal", 108, leader);
- }
- break;
- case ".s2d":
- if(me.name == pally || me.name == pally2 || me.name == pally3 || me.name == barb || me.name == zon || me.name == nec || me.name == sorc || me.name == leecher)
- {
- if(announce_active)
- Say(announce_seisd);
- TD_Take_TP()
- }
- break;
- //}
- //{infector
- case ".s3":
- if(me.name == pally) { //Main Hammerdin
- NTM_UsePortal("BluePortal", 108, leader);
- TD_Preattack(GetLocaleString(2853), ham_inf);
- TD_KillFect();
- }
- if(me.name == pally2 || me.name == pally3) { //Helper Hammerdin
- NTM_UsePortal("BluePortal", 108, leader);
- TD_Preattack(GetLocaleString(2853), ham2_inf);
- TD_KillFect();
- }
- if(me.name == zon) {//Amazon
- NTM_UsePortal("BluePortal", 108, leader);
- //NTC_Delay(2000);
- TD_zonattack(GetLocaleString(2853), 1);
- TD_KillFect();
- }
- if(me.name == nec) { //Necromancer
- NTM_UsePortal("BluePortal", 108, leader);
- TD_necattack(GetLocaleString(2853), 1);
- attackNec(2853);
- if(announce_active)
- Say(announce_infd);
- if(pickit_seals)
- NTSI_PickItems();
- }
- if(me.name == sorc) { //Sorceress
- NTM_UsePortal("BluePortal", 108, leader);
- //NTC_Delay(2000);
- TD_sorcattack(GetLocaleString(2853), sorc_inf);
- TD_KillFect();
- }
- if(me.name == barb){ //Barbarian
- NTM_UsePortal("BluePortal", 108, leader);
- babaprecast();
- preAttackBarbLeap(GetLocaleString(2853), leap_inf);
- TD_KillFect();
- }
- if(me.name == leecher) { //Passive Leecher
- NTM_UsePortal("BluePortal", 108, leader);
- }
- break;
- case ".s3d":
- if(me.name == pally || me.name == pally2 || me.name == pally3 || me.name == barb || me.name == zon || me.name == nec || me.name == sorc || me.name == leecher)
- {
- if(announce_active)
- Say(announce_infd);
- TD_Take_TP()
- }
- break;
- //}
- //{Diablo
- case ".d":
- if(me.name == pally) { //Main Hammerdin
- if(pally_Dia){
- NTM_UsePortal("BluePortal", 108, leader);
- NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
- if(!TD_KillMonster(243)) {
- NTC_SendMsgToScript("NTBotGame.ntj", "TD_KillMonster()");
- return;
- }
- NTSI_PickItems();
- }
- }
- if(me.name == pally2 || me.name == pally3) { //Helper Hammerdin
- if(pally2_Dia){
- NTM_UsePortal("BluePortal", 108, leader);
- NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
- if(!TD_KillMonster(243)) {
- NTC_SendMsgToScript("NTBotGame.ntj", "TD_KillMonster()");
- return;
- }
- NTSI_PickItems();
- }
- }
- if(me.name == zon) { //Amazon
- if(zon_Dia){
- NTM_UsePortal("BluePortal", 108, leader);
- NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
- if(!TD_KillMonster(243)) {
- NTC_SendMsgToScript("NTBotGame.ntj", "TD_KillMonster()");
- return;
- }
- NTSI_PickItems();
- }
- }
- if(me.name == nec) { //Necromancer
- if(nec_Dia){
- NTM_UsePortal("BluePortal", 108, leader);
- NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
- if(!TD_KillMonster(243)) {
- NTC_SendMsgToScript("NTBotGame.ntj", "TD_KillMonster()");
- return;
- }
- NTSI_PickItems();
- }
- }
- if(me.name == sorc) { //Sorceress
- if(sorc_Dia){
- NTM_UsePortal("BluePortal", 108, leader);
- NTC_FindUnit(NTC_UNIT_MONSTER, 243, 100);
- if(!TD_KillMonster(243)) {
- NTC_SendMsgToScript("NTBotGame.ntj", "TD_KillMonster()");
- return;
- }
- }
- }
- if(me.name == barb) { //Barbarian
- if(barb_Dia){
- NTM_UsePortal("BluePortal", 108, leader);
- if(tp_howl)
- NTC_CastSkill(130, NTC_HAND_RIGHT);
- if(tp_bo)
- NTP_DoPrecast(true);
- NTA_ClearPosition(20);
- var _diablo = NTC_FindUnit(NTC_UNIT_MONSTER, 243)
- while(_diablo && _diablo.hp > 0)
- {
- NTSI_PickItems();
- NTC_Delay(500);
- }
- }
- }
- if(me.name == leecher) { //Passive Leecher
- if(leech_Dia){
- NTM_UsePortal("BluePortal", 108, leader);
- }
- }
- break;
- //}
- }
- }
- }
- //----------------------------------------------//
- // SORC INTERNAL FUNCTIONS //
- //----------------------------------------------//
- //{
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Move To Next //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_Sorc_Next(nextx, nexty)
- {
- TPx = nextx;
- TPy = nexty;
- TD_MoveTo(me.areaid, TPx, TPy);
- TD_Do_Tp();
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Create TP //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_Do_Tp()
- {
- for(var i = 0 ; i < 5 ; i++)
- {
- if(NTM_MakeTP())
- break;
- }
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Find Seal Layout //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_DetectLayout(seal)
- {
- switch(seal) {
- case 1:
- _sealpos = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);
- for(var i = 0 ; i < _sealpos.length ; i++) {
- if(_sealpos[i].id == 396) {
- if(_sealpos[i].roomy*5 + _sealpos[i].y == 5275)
- return 1;
- else
- return 2;
- break;
- }
- }
- break;
- case 2:
- _sealpos = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);
- for(i = 0 ; i < _sealpos.length ; i++) {
- if(_sealpos[i].id == 394) {
- if(_sealpos[i].roomx*5 + _sealpos[i].x == 7773)
- return 1;
- else
- return 2;
- break;
- }
- }
- break;
- case 3:
- _sealpos = GetPresetUnits(me.areaid, NTC_UNIT_OBJECT);
- for(i = 0 ; i < _sealpos.length ; i++) {
- if(_sealpos[i].id == 392) {
- if(_sealpos[i].roomx*5 + _sealpos[i].x == 7893)
- return 1;
- else
- return 2;
- break;
- }
- }
- break;
- }
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Sorc Vizier Seal //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_VizierSeal()
- {
- for(var i = 0 ; i < 5 ; i++){
- NTM_MoveToPresetUnit(me.areaid, 2, 395);
- var _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 395, 5);
- NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
- NTC_Delay(350);
- if(_seal.mode <= 0)
- NTM_MoveTo(me.areaid, safex, safey);
- else
- break;
- NTC_Delay(250);
- if(i == 4 && _seal.mode <= 0)
- return false;
- }
- for(i = 0 ; i < 5 ; i++){
- NTM_MoveToPresetUnit(me.areaid, 2, 396);
- _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 396, 5);
- NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
- NTC_Delay(350);
- if(_seal.mode <= 0)
- NTM_MoveTo(me.areaid, safex, safey);
- else
- break;
- NTC_Delay(250);
- if(i == 4 && _seal.mode <= 0)
- return false;
- }
- return true;
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Sorc Seis Seal //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_DeSeisSeal()
- {
- for(var i = 0 ; i < 5 ; i++){
- NTM_MoveToPresetUnit(me.areaid, 2, 394);
- _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 394, 5);
- NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
- NTC_Delay(350);
- if(_seal.mode <= 0)
- NTM_MoveTo(me.areaid, safex, safey);
- else
- break;
- NTC_Delay(250);
- if(i == 4 && _seal.mode <= 0)
- return false;
- }
- return true;
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Sorc Infector Seal //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_InfectorSeal()
- {
- for(var i = 0 ; i < 5 ; i++){
- NTM_MoveToPresetUnit(me.areaid, 2, 393);
- _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 393, 5);
- NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
- NTC_Delay(350);
- if(_seal.mode <= 0)
- NTM_MoveTo(me.areaid, safex, safey);
- else
- break;
- NTC_Delay(250);
- if(i == 4 && _seal.mode <= 0)
- return false;
- }
- for(i = 0 ; i < 5 ; i++){
- NTM_MoveToPresetUnit(me.areaid, 2, 392);
- _seal = NTC_FindUnit(NTC_UNIT_OBJECT, 392, 5);
- NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _seal);
- NTC_Delay(350);
- if(_seal.mode <= 0)
- NTM_MoveTo(me.areaid, safex, safey);
- else
- break;
- NTC_Delay(250);
- if(i == 4 && _seal.mode <= 0)
- return false;
- }
- return true;
- }
- //}
- //----------------------------------------------//
- // TEAM INTERNAL FUNCTIONS //
- //----------------------------------------------//
- //{
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Quit Functions //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function quitfunc(msg, type)
- {
- if(msg.indexOf(leader) != -1 && (msg.indexOf("weaken") != -1 || msg.indexOf("timeout") != -1))
- {
- NTC_Delay(500);
- ExitGame();
- }
- /*Second Computer Setting
- if (msg.indexOf(leader) != -1 && msg.indexOf("Fect Up") != -1)
- TD_File("NTBot/bots/TeamD.txt", 1, ".s2", 50);
- if (msg.indexOf(leader) != -1 && msg.indexOf("Viz Up") != -1)
- TD_File("NTBot/bots/TeamD.txt", 1, ".s1", 50);
- if (msg.indexOf(leader) != -1 && msg.indexOf("Seis Up") != -1)
- TD_File("NTBot/bots/TeamD.txt", 1, ".s3", 50);
- if (msg.indexOf(leader) != -1 && msg.indexOf("Dia Out") != -1)
- TD_File("NTBot/bots/TeamD.txt", 1, ".d", 50);
- if (msg.indexOf(leader) != -1 && msg.indexOf("Leech Dia Up") != -1)
- TD_File("NTBot/bots/TeamD.txt", 1, ".filler", 50);
- if (msg.indexOf(leader) != -1 && msg.indexOf("BO") != -1)
- TD_File("NTBot/bots/TeamD.txt", 1, ".bo", 50);
- */
- else if(msg.indexOf(pally) != -1 && (msg.indexOf("weaken") != -1 || msg.indexOf("timeout") != -1))
- {
- left_pally = true;
- }
- else if(msg.indexOf(barb) != -1 && (msg.indexOf("weaken") != -1 || msg.indexOf("timeout") != -1))
- {
- left_barb = true;
- }
- //Chicken if both barb and pally have left
- if(left_barb == true && left_pally == true)
- {
- NTC_Delay(500);
- ExitGame();
- }
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Take TP //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_Take_TP()
- {
- if(own_tp)
- {
- NTTM_CheckAct();
- }
- else
- {
- if(!NTM_UsePortal("BluePortal", 103, leader)) //or make my own?
- NTTM_CheckAct();
- }
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Barb Pre-Cast //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function babaprecast()
- {
- if(tp_howl)
- NTC_CastSkill(130, NTC_HAND_RIGHT);
- if(tp_bo)
- NTP_DoPrecast(true);
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Barb Pre-Leap //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function preAttackBarbLeap(classid, extraLeap)
- {
- var preX = me.x;
- var preY = me.y;
- var _boss;
- var _count = 0;
- while (1)
- {
- if (NTC_CastSkill(132, NTC_HAND_RIGHT, me.x, me.y) && NTC_CastSkill(132, NTC_HAND_RIGHT, preX, preY))
- _count++;
- _boss = NTC_FindUnit(NTC_UNIT_MONSTER, classid);
- if (_boss || _count >= 10)
- break;
- }
- for(var i = 0 ; i < extraLeap ; i++)
- {
- _boss = NTC_FindUnit(NTC_UNIT_MONSTER, classid);
- if (_boss && _boss.hp > 0 && _boss.mode != 0 && _boss.mode != 12)
- NTC_CastSkill(154, NTC_HAND_RIGHT, preX, preY); // leap
- else
- break;
- }
- return;
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Helpers Kill Viz //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_KillViz()
- {
- if(!boss_only)
- NTA_ClearPosition(10);
- if(TD_KillMonster(GetLocaleString(2851)))
- TD_File("NTBot/bots/TeamD.txt", 1, ".s1d"); //vizier dead
- if(pickit_seals)
- NTSI_PickItems();
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Helpers Kill Seis //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_KillSeis()
- {
- if(!boss_only)
- NTA_ClearPosition(10);
- if(TD_KillMonster(GetLocaleString(2852)))
- TD_File("NTBot/bots/TeamD.txt", 1, ".s2d"); //Seis dead
- if(pickit_seals)
- NTSI_PickItems();
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Helpers Kill Fect //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_KillFect()
- {
- if(!boss_only)
- NTA_ClearPosition(10);
- if(TD_KillMonster(GetLocaleString(2853)))
- TD_File("NTBot/bots/TeamD.txt", 1, ".s3d"); //Infector dead
- if(pickit_seals)
- NTSI_PickItems();
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Precast Hammers //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_Preattack(classid, extrahammers)
- {
- NTC_PutSkill(NTConfig_AttackSkill[4], NTC_HAND_RIGHT);
- while(!NTC_FindUnit(NTC_UNIT_MONSTER, classid))
- NTC_CastSkill(NTConfig_AttackSkill[3], 2);
- for(var i = 0 ; i < extrahammers ; i++) {
- NTC_CastSkill(NTConfig_AttackSkill[3], 2);
- }
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Precast Amazon //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_zonattack(classid, attacking)
- {
- while(!NTC_FindUnit(NTC_UNIT_MONSTER, classid))
- NTA_ClearPosition(10);
- for(var i = 0 ; i < attacking ; i++) {
- NTC_CastSkill(NTConfig_AttackSkill[0], 2);
- }
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Precast Sorc //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_sorcattack(classid, casting)
- {
- while(!NTC_FindUnit(NTC_UNIT_MONSTER, classid))
- NTC_CastSkill(NTConfig_AttackSkill[0], 2);
- for(var i = 0 ; i < casting ; i++) {
- NTC_CastSkill(NTConfig_AttackSkill[1], 2);
- }
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Nec Corpse Explosion //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function attackNec(classid)
- {
- var _boss = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(classid), 120);
- Print("boss");
- while (_boss && _boss.hp > 0 && _boss.mode != 0 && _boss.mode != 12)
- {
- _count = MyUn_CountCorpse(_boss, 9);
- (_count == 1) ? Say("!" + _count + " corpse.") : Say("!" + _count + " corpses.");
- _count = MyUn_CountCorpse(_boss, 9);
- if (_count == 0)
- NTC_CastSkill(84, NTC_HAND_RIGHT, _boss);
- else
- NTC_CastSkill(74, NTC_HAND_RIGHT, _boss);
- _boss = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(classid), 120);
- }
- return;
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Nec Count Corpses //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function MyUn_CountCorpse(target, range, count)
- {
- var _target;
- var _nCorpse = 0;
- if (arguments.length < 3)
- count = -1;
- _target = NTC_FindUnit(NTC_UNIT_MONSTER);
- if (_target)
- {
- do
- {
- if (GetDistance(_target, target) <= range && MyUn_IsCorpse(_target, 0))
- {
- _nCorpse++;
- if (count > -1 && _nCorpse >= count)
- return _nCorpse;
- }
- } while (_target.GetNext());
- }
- return _nCorpse;
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Nec Find Corpses //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function MyUn_IsCorpse(unit, mode)
- {
- return ((unit.hp < 1 || unit.mode == 0 || unit.mode == 12) &&
- !unit.GetState(1) &&
- !unit.GetState(96) &&
- !unit.GetState(99) &&
- !unit.GetState(104) &&
- !unit.GetState(107) &&
- !unit.GetState(118) &&
- GetBaseStat("monstats2.txt", unit.classid, (mode == 0) ? 95 : 97));
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Nec Precast //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_necattack(classid, extraCurse)
- {
- var preX = me.x;
- var preY = me.y;
- var _boss;
- var _count = 0;
- while (1)
- {
- if (NTC_CastSkill(71, NTC_HAND_RIGHT, me.x, me.y)) //Dim Vis Precast
- NTC_Delay(100);
- _count++;
- _boss = NTC_FindUnit(NTC_UNIT_MONSTER, classid);
- if (_boss || _count >= 10)
- break;
- }
- for(var i = 0 ; i < extraCurse ; i++)
- {
- _boss = NTC_FindUnit(NTC_UNIT_MONSTER, classid);
- if (_boss && _boss.hp > 0 && _boss.mode != 0 && _boss.mode != 12)
- NTC_CastSkill(66, NTC_HAND_RIGHT, preX, preY); // Amp Damage Seal Boss
- else
- break;
- }
- return;
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Find Our Pally //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_PallyInParty()
- {
- var _player;
- _player = GetPlayerUnit();
- do {
- if(_player.name == pally)
- {
- return true;
- NTC_Delay(100);
- }
- } while(_player.GetNext());
- return false;
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Players in Town? //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_IsPlayerOut(area) { //
- var _player;
- var _myPartyId;
- _player = GetPlayerUnit();
- _myPartyId = _player.partyid;
- if(arguments.length < 1)
- _area = me.areaid;
- else
- _area = area;
- do {
- if(_player.name == pally || _player.name == barb)
- {
- if(_player.areaid == _area && _myPartyId == _player.partyid)
- return false;
- NTC_Delay(100);
- }
- } while(_player.GetNext());
- return true;
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Find TD File //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_File(path, mode, msg, delay) {
- var _msg = "";
- var _line = "";
- var _fileHandle;
- var _isFileCheck = false;
- if (arguments.length < 3) msg = "";
- if (arguments.length < 4) delay = (mode > 0) ? 5 : 2;
- while (delay--) {
- if (mode == 2 && !_isFileCheck) {
- _fileHandle = FileOpen(path, 0);
- if (!_fileHandle)
- _fileHandle = FileOpen(path, 1);
- if (_fileHandle)
- _fileHandle.Close();
- _isFileCheck = true;
- }
- _fileHandle = FileOpen(path, mode);
- if (_fileHandle)
- break;
- if (delay)
- Delay(200);
- }
- if (_fileHandle) {
- if (mode == 0) {
- while (!_fileHandle.eof) {
- _line = _fileHandle.ReadLine();
- if (_line || !_fileHandle.eof)
- _msg += _line + msg;
- }
- }
- else if (msg)
- _fileHandle.WriteLine(msg);
- _fileHandle.Close();
- }
- return _msg;
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Walk Functions //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_MoveTo(areaid, x, y, retry, clearpath)
- {
- var i, n;
- var _teleport;
- var _path;
- var _retry = 0;
- if(x == me.x && y == me.y)
- return true;
- if(arguments.length < 4)
- retry = 3;
- if(arguments.length < 5)
- clearpath = false;
- if(NTC_InTown() || NTC_GetSkillLevel(54) < 1)
- _teleport = false;
- else
- _teleport = true;
- _path = GetPath(areaid, me.x, me.y, x, y, _teleport);
- if(!_path)
- return false;
- for(i = 0 ; i < _path.length ; i++)
- {
- for(n = 0 ; n < 2 ; n++)
- {
- if(_teleport)
- {
- if(NTM_TeleportTo(_path[i][0], _path[i][1])){
- break;
- }
- }
- else
- {
- if(NTM_WalkTo(_path[i][0], _path[i][1]))
- break;
- }
- }
- if(n < 2)
- {
- if(clearpath)
- {
- if(!NTA_ClearPosition(20, true, 2))
- return false;
- NTP_DoPrecast(false);
- NTM_MoveTo(me.areaid, _path[i][0], _path[i][1], 1);
- }
- }
- else if(_retry < retry)
- {
- _path = GetPath(areaid, me.x, me.y, x, y, _teleport);
- if(!_path)
- return false;
- i = -1;
- _retry++;
- }
- else
- return false;
- }
- return true;
- }
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- // Kill Monster //
- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
- function TD_KillMonster(classid)
- {
- //}
- var _target;
- if(NTConfig_AttackSkill[1] < 1)
- return false;
- _target = NTC_FindUnit(NTC_UNIT_MONSTER, classid, 5);
- if(!_target)
- return false;
- if(_target.IsAttackable())
- {
- var _attackcount = 0;
- while(_attackcount < 300 && NTA_IsValidMonster(_target))
- {
- if(NTA_Attack(_target, (_attackcount%30) == 0) < 2)
- break;
- if((_attackcount%10) == 5)
- NTM_MoveTo(me.areaid, _target.x+5, _target.y);
- else if((_attackcount%10) == 0)
- NTM_MoveTo(me.areaid, _target.x, _target.y+5);
- _attackcount++;
- }
- }
- return (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12);
- }
Add Comment
Please, Sign In to add comment