Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // *** Global vars ***
- var debug = false;
- var pathRushBots = "NTRush/rushbots/";
- var isBusy = false;
- var isPaused;
- var isFollowingEnabled = true;
- var isAttackEnabled = true;
- var isAutoEnchantEnabled = false;
- var leaderUnit;
- var leaderPlayerUnit;
- var followRange = 5;
- var attackRange = 15;
- var _AvoidedDiabloExpOverflow = false;
- var _AvoidedNickExpOverflow = false;
- var _AvoidedBaalExpOverflow = false;
- var ForceStopAttack = false;
- // *** Global vars ***
- function NTMain()
- {
- // From Diabolic's script
- Include("NTRush/funcs/RushCommon.ntl");
- Include("NTRush/funcs/Message.ntl");
- Common.IncludeFuncs();
- Include("libs/common/NTCommon.ntl");
- NTC_IncludeLibs();
- NTC_IncludeConfig("NTBot/char_configs");
- NT_LoadConfig();
- NTSI_LoadNIPFiles("NTBot/item_configs");
- NTA_Initialize();
- // Wait for the leader to join the game
- var leaderInGame = false;
- for(i = 0; i < NTConfig_PartyMaxTime+1; i++)
- {
- if(CheckLeader(NTConfig_Leader))
- {
- leaderName = NTConfig_Leader;
- leaderInGame = true;
- break;
- }
- else
- if(CheckLeader(NT_File("logs/" + me.account + ".leaderName.txt", 0)))
- {
- leaderName = NT_File("logs/" + me.account + ".leaderName.txt", 0);
- leaderInGame = true;
- break;
- }
- else
- if(CheckLeader(NT_File("AILS/Logs/TristLeader.leadername.txt", 0)))
- {
- leaderName = NT_File("AILS/Logs/TristLeader.leadername.txt", 0);
- leaderInGame = true;
- break;
- }
- Delay(1000);
- }
- // End script if the leader wasn't found
- if(!leaderInGame)
- {
- if(debug)
- Print(COLOR_5 + "Leader: " + leaderName + " - not found!");
- NTC_Delay(500);
- NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
- }
- else
- {
- RegisterEvent( EVENT_GAMEMSG, ChatHandler );
- if(debug)
- Print(COLOR_5 + "!Leader: " + leaderName);
- leaderUnit = GetLeaderUnit(leaderName);
- leaderPlayerUnit = GetLeader(leaderName);
- }
- if(NTC_InTown(me))
- {
- NTTMGR_TownManager();
- }
- //Stop script every few minutes, need extra NTHelpers' in char config to cover leader's entire run!
- //minimum number of NTHelper.ntj push needed = leader's game length in minutes / _ScriptLengthInMinutes
- //If put too many NTHelper's in char config, may stall helpers exiting the game after leader left!
- var _endTime = null;
- _ScriptLengthInMinutes = 9999;
- _endTime = GetTickCount() + _ScriptLengthInMinutes*60*1000;
- while(CheckLeader(leaderName) && GetTickCount() < _endTime)
- {
- Action();
- NTC_Delay(100);
- }
- //Add the non-in-town check so the helper only stops the script when it's not in town. Otherwise it would town first then come back
- while(CheckLeader(leaderName) && !NTC_InTown(me))
- {
- Action();
- NTC_Delay(100);
- }
- if(CheckLeader(leaderName))
- {
- Print(COLOR_5 + "Reloading");
- // //If leecher pickit and gambling are disabled, drop free gold in town for leader to gamble
- // if(!NTConfig_Gamble && me.GetStat(14) >= 500000 && NTC_InTown(me) && CheckAct(me) == CheckAct(leaderPlayerUnit))
- // {
- // GiveTits();
- // }
- }
- else
- {
- Print(COLOR_5 + "Exiting");
- }
- NTC_Delay(500);
- NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
- }
- function Action()
- {
- if(me.mode === 0 || me.mode === 17)
- {
- isBusy = false;
- me.Cancel(0);
- me.Cancel(1);
- Delay(1000);
- if(me.mode !== 0 && me.mode !== 17)
- {
- if(debug)
- Print(COLOR_5 + "I'm alive!");
- isFollowingEnabled = false;
- }
- }
- if(!isBusy && NTC_InMyParty(leaderName))
- {
- if(isFollowingEnabled)
- {
- Follow();
- }
- }
- if(!isBusy && isAutoEnchantEnabled)
- {
- // TBA with a global tick counter
- // Maybe a player array with some kind of player-specific timer
- // Who knows...
- }
- if(NTC_InTown(me))
- {
- if(NTTMGR_CheckScrolls(1) < 8 || NTTMGR_CheckScrolls(0) < 10)
- {
- NTTMGR_TownManager();
- }
- }
- }
- function ChatHandler( msg, type )
- {
- if(NTConfig_HelperHumor)
- {
- // My attempt at making the bot have humour
- // 3 checks per 1000 === 0.3% chance
- var _funny = Random(1, 1000);
- var _skip = false;
- switch(_funny)
- {
- case 1:
- Print(COLOR_5 + "Hmm... I don't feel like it. Ask me later.");
- _skip = true;
- break;
- case 500:
- Print(COLOR_5 + "Why don't you do it? I'm tired.");
- _skip = true;
- break;
- case 1000:
- Print(COLOR_5 + "Hah, you wish...");
- _skip = true;
- break;
- }
- if(_skip)
- {
- return;
- }
- }
- switch( type )
- {
- case 0: // white
- if(!NTConfig_AllowCommands)
- {
- return;
- }
- _msgsplit = msg.toLowerCase().split(":");
- if( _msgsplit.length >= 1 && _msgsplit[1] !== undefined )
- {
- var _name = _msgsplit[0].substring(3, _msgsplit[0].length - 3);
- var _commands = _msgsplit[1].substring(1).split(" ");
- }
- else
- return;
- if(_name == me.name.toLowerCase())
- return;
- if( _commands[0] == me.name.toLowerCase() ) // remove char name.
- for(var f = 0; f <= _commands.length-1; f++)
- _commands[f] = _commands[f+1];
- if(_commands.length > 1) // make sure nothing is undefined. grr.
- for(var i = 0; i <= _commands.length-1; i++)
- if(!_commands[i])
- _commands[i] = "";
- while(_commands.length < 5)
- _commands.push("");
- if(_commands[0] == "p" && _name == leaderName)
- {
- isPaused = !isPaused;
- if(isPaused)
- Print(COLOR_5 + "~Paused chat commands");
- else
- Print(COLOR_5 + "~Unpaused chat commands");
- }
- if( !isBusy && !isPaused && _name == leaderName.toLowerCase())
- CommandHandler( _commands[0], _commands[1], _commands[2], _commands[3], _commands[4] );
- break;
- case 1: // red
- break;
- case 2: // green
- if(!NTConfig_AllowCommands)
- {
- return;
- }
- if(msg.indexOf("From ") > -1 && msg.indexOf(" (*") > -1)
- {
- _msgsplit = msg.toLowerCase().split(" (*");
- if( _msgsplit.length == 2 && _msgsplit[1] !== undefined )
- {
- var _name = _msgsplit[0].split(" ")[1];
- var _commands = _msgsplit[1].split("):")[1].substring(1).split(" ");
- }
- else
- return;
- }
- else
- if(msg.indexOf(" whispers: ") > -1)
- {
- _msgsplit = msg.toLowerCase().split(" whispers:");
- if( _msgsplit.length == 2 && _msgsplit[1] !== undefined )
- {
- var _name = _msgsplit[0];
- var _commands = _msgsplit[1].substring(1).split(" ");
- }
- else
- return;
- }
- else
- {
- if(msg.indexOf("has joined your party to fight the forces of evil") > -1)
- {
- if(NTConfig_GreetPlayers)
- {
- _split = msg.split("has joined");
- _name = _split[0];
- var saystring;
- if(NTConfig_GreetMsg.indexOf("%name%") !== -1)
- {
- saystring = NTConfig_GreetMsg.replace("%name%", _name);
- Whisper(_name, saystring);
- }
- else
- {
- Whisper(_name, NTConfig_GreetMsg);
- }
- }
- }
- return;
- }
- if(_name == me.name.toLowerCase())
- return;
- if( _commands[0] == me.name.toLowerCase() ) // remove char name.
- for(var f = 0; f <= _commands.length-1; f++)
- _commands[f] = _commands[f+1];
- if(_commands.length > 1) // make sure nothing is undefined. grr.
- for(var i = 0; i <= _commands.length-1; i++)
- if(!_commands[i])
- _commands[i] = "";
- while(_commands.length < 5)
- _commands.push("");
- if(_commands[0] == "p" && _name == leaderName)
- {
- isPaused = !isPaused;
- if(isPaused)
- Print(COLOR_5 + "~Paused chat commands");
- else
- Print(COLOR_5 + "~Unpaused chat commands");
- }
- if( !isBusy && !isPaused && _name == leaderName.toLowerCase())
- CommandHandler( _commands[0], _commands[1], _commands[2], _commands[3], _commands[4] );
- break;
- case 3: // blue
- break;
- case 4: // brown
- /*
- if(NTConfig_GreetPlayers)
- {
- if(msg.indexOf("joined our world. Diablo") != -1)
- {
- _split = msg.split("(");
- _name = _split[0];
- var saystring;
- if(NTConfig_GreetMsg.indexOf("%name%") != -1)
- {
- saystring = NTConfig_GreetMsg.replace("%name%", _name);
- Whisper(_name, saystring);
- }
- else
- {
- Whisper(_name, NTConfig_GreetMsg);
- }
- }
- }
- */
- if(NTConfig_PortalAtLeechersCorpses)
- {
- if(msg.indexOf(" was slain by ") != -1)
- {
- _split = msg.split(" was slain by ");
- _name = _split[0].substring(3, _split[0].length - 3);
- TPAtPlayersBody(_split[0], _split[1]);
- }
- }
- break;
- default:
- break;
- }
- }
- function CommandHandler( msg1, msg2, msg3, msg4, msg5 )
- {
- switch( msg1 )
- {
- case "dbg": // keep right above goto command without a break
- if(debug)
- Print(COLOR_5 + "Debug: Leader Coordinates: X: " + leaderPlayerUnit.x + " " + "Y: " + leaderPlayerUnit.y);
- if(debug)
- Print(COLOR_5 + "Debug: Leader Area ID: " + leaderPlayerUnit.areaid);
- msg2 = leaderPlayerUnit.areaid;
- msg3 = leaderPlayerUnit.x;
- msg4 = leaderPlayerUnit.y;
- case "goto":
- if(msg2 == 'trist')
- {
- if(!NTTM_CheckAct(1))
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
- return;
- }
- NTTMGR_TownManager();
- NTTM_TownMove("waypoint");
- NTM_TakeWaypoint(4);
- if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_MONSTER, 737, 10, 10, false))
- {
- NTM_MakeTP();
- Print(COLOR_5 + "Failed to move to unit");
- //Delay(7500);
- //NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToPresetUnit()");
- return;
- }
- NTA_ClearPosition( 20 );
- NTM_MakeTP();
- }
- else
- if(me.areaid === parseInt(msg2))
- {
- if(parseInt(msg3) >= 0 && parseInt(msg4) >= 0)
- {
- Print(COLOR_5 + "Moving to: " + msg3 + ", " + msg4);
- if(!NTM_MoveTo(parseInt(msg2), parseInt(msg3), parseInt(msg4)))
- {
- Print(COLOR_5 + "!Failed to move");
- }
- }
- }
- break;
- case "exit":
- NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
- break;
- case "range":
- if(msg2 == "")
- followRange = 5;
- if(msg2 >= 3 && msg2 <= 30)
- followRange = msg2;
- else
- Print(COLOR_5 + "~Valid range is 3-30. Default is 5.");
- Print(COLOR_5 + "~Follow range set to: " + followRange);
- break;
- case "come":
- if(!isBusy && NTC_InTown(me))
- {
- NTTM_TownMove("portalspot");
- TakeLeaderTP();
- }
- break;
- case "my":
- if(msg2 == "tp" && !isBusy && NTC_InTown(me))
- {
- NTTM_TownMove("portalspot");
- Delay(250);
- TakeLeaderTP();
- }
- break;
- case "go":
- if(!isBusy && !NTC_InTown(me)){
- if(!TakeLeaderTP()){
- Town();
- }
- }
- break;
- case "s":
- me.Cancel(0);
- me.Cancel(1);
- ForceStopAttack = false;
- isAttackEnabled = true;
- return;
- break;
- case "g":
- me.Cancel(0);
- me.Cancel(1);
- // if(!NTC_InTown(me)){
- ForceStopAttack = true;
- while(ForceStopAttack){
- isAttackEnabled = false;
- Follow();
- Delay(100);
- }
- ForceStopAttack = false;
- isAttackEnabled = true;
- return;
- // }
- break;
- case "z":
- me.Cancel(0);
- me.Cancel(1);
- NTSI_PickItems();
- break;
- case "follow":
- if(msg2 == "on")
- {
- isFollowingEnabled = true;
- break;
- }
- else
- if(msg2 == "off")
- {
- isFollowingEnabled = false;
- break;
- }
- else
- {
- isFollowingEnabled = !isFollowingEnabled;
- }
- if(isFollowingEnabled)
- Print(COLOR_5 + "~Follow on");
- else
- Print(COLOR_5 + "~Follow off");
- break;
- case "bo":
- if(!isBusy)
- {
- NTP_DoPrecast( true );
- }
- break;
- case "buff":
- if(!isBusy)
- {
- NTP_DoPrecast( true );
- Chant( msg2 );
- }
- break;
- case "help":
- if(!isBusy)
- DisplayHelp( msg2 ); // Display help menu.
- break;
- case "clear":
- if(!isBusy)
- CommandClear( msg2 ); // Clear function.
- break;
- case "tp":
- if(!isBusy)
- TP(msg2); // TP functions.
- break;
- case "quest":
- if(!isBusy)
- Quest( msg2 ); // Quest functions.
- break;
- case "rush":
- if(!isBusy)
- Rush( msg2 ); // Rush functions.
- break;
- case "chant":
- if(!isBusy)
- Chant( msg2 ); // Chant functions.
- break;
- case "town":
- if(!isBusy)
- {
- isFollowingEnabled = false;
- Print(COLOR_5 + "~Follow off");
- if(!TakeLeaderTP())
- Town();
- }
- break;
- case "gold":
- if(!isBusy)
- GiveGold(msg2);
- break;
- case "titz":
- if(!isBusy)
- {
- if(NTC_InTown(me) && CheckAct(me) == CheckAct(leaderPlayerUnit))
- {
- GiveTits();
- }
- }
- else
- {
- // Print(COLOR_5 + "2 busy 2 titz, gtfo");
- }
- break;
- default: // Say this when you receive an invalid command.
- //Print(COLOR_5 + "!Invalid command: " + msg1 + " " + msg2 + " " + msg3 + "." );
- return 0;
- }
- return 1;
- }
- function DisplayHelp(msg) // Eventually add multiple menus via 'help commandname'.
- {
- isBusy = true;
- switch(msg)
- {
- case "":
- Print(COLOR_5 + "With multiple followers, you can speak to them individually by saying their name first. Example: '" + me.name + " follow' would make me follow!");
- Print(COLOR_5 + "'follow' toggle following");
- Print(COLOR_5 + "'tp' make tp");
- Print(COLOR_5 + "'tp areaname' tp at waypoint");
- Print(COLOR_5 + "'range 3-30' set following range");
- Print(COLOR_5 + "'bo' prebuffs");
- Print(COLOR_5 + "'rush' starts rush");
- Print(COLOR_5 + "'rush 1-5' specific acts");
- Print(COLOR_5 + "'quest questname' specific quests");
- Print(COLOR_5 + "'chant' enchants players");
- Print(COLOR_5 + "'come' or 'go' portal commands");
- Print(COLOR_5 + "'gold 1-50000' drops gold");
- // Print(COLOR_5 + "'titz' drops titz");
- Print(COLOR_5 + "'clear' clears my position");
- break;
- case "tp":
- Print(COLOR_5 + "Type 'tp waypointname' and I will make a tp at that waypoint. For the Nith waypoint, you must say 'nit' instead.");
- Print(COLOR_5 + "Example: tp stony");
- break;
- default:
- Print(COLOR_5 + "'" + msg + "' does not have a help menu yet, or is an invalid command.");
- break;
- }
- NTC_Delay(500);
- isBusy = false;
- return;
- }
- function Invalid(){Print(COLOR_5 + "!Invalid Command");}
- function NI(){Print(COLOR_5 + "Function not implemented. (yet)");}
- function Busy(){Print(COLOR_5 + "I'm busy!");}
- function Follow( target )
- {
- var _distance = -1;
- var leaderPlayerUnitintown, _meintown;
- if(!leaderUnit) // Make sure we have the leaders unit.
- {
- leaderUnit = GetLeaderUnit(leaderName);
- }
- if(leaderPlayerUnit.areaid <= 0) // Don't do anything if we don't know the area yet.
- {
- return;
- }
- if(CheckAct(me) !== CheckAct(leaderPlayerUnit) && NTC_InTown(me) && NTC_InTown(leaderPlayerUnit))
- {
- NTTM_TownMove("waypoint");
- NTC_PingDelay(200);
- NTM_TakeWaypoint(GetPlayerActWaypointID(leaderPlayerUnit));
- }
- //Force extra helpers to town prior to killing Diablo, in order to avoid experience overflow
- if(NTConfig_AvoidExpOverflow == true && _AvoidedDiabloExpOverflow == false && leaderPlayerUnit.areaid === 108 && me.areaid === leaderPlayerUnit.areaid)
- {
- if(InfectorOfSoulsDead() || NTC_FindUnit(NTC_UNIT_MONSTER, 243))
- {
- _AvoidedDiabloExpOverflow = true;
- var _PlayerTotal;
- var _PartyTotal;
- var _ListHelper;
- _PlayerTotal = PlayerCount();
- _PartyTotal = PartyCount();
- _ListHelper = ListHelpers();
- AvoidDiabloExpOverflow(_PlayerTotal, _PartyTotal, _ListHelper);
- }
- else
- {
- _AvoidedDiabloExpOverflow = false;
- }
- }
- //Force extra helpers to town prior to killing Baal, in order to avoid experience overflow
- if(NTConfig_AvoidExpOverflow == true && _AvoidedBaalExpOverflow == false && leaderPlayerUnit.areaid === 131 && me.areaid === leaderPlayerUnit.areaid)
- {
- if(ListerTheTormentorDead())
- {
- _AvoidedBaalExpOverflow = true;
- var _PlayerTotal;
- var _PartyTotal;
- var _ListHelper;
- _PlayerTotal = PlayerCount();
- _PartyTotal = PartyCount();
- _ListHelper = ListHelpers();
- AvoidBaalExpOverflow(_PlayerTotal, _PartyTotal, _ListHelper);
- }
- else
- {
- _AvoidedBaalExpOverflow = false;
- }
- }
- //Force extra helpers to town prior to killing Nihlathak, in order to avoid experience overflow
- //The overflow ONLY occurs at 8pp + all party + all within 2 screens of Nick, so do Not perform the same area check since the leader will do Nick real quick...
- if(NTConfig_AvoidExpOverflow == true && _AvoidedNickExpOverflow == false && leaderPlayerUnit.areaid === 124)
- {
- _AvoidedNickExpOverflow = true;
- var _PlayerTotal;
- var _PartyTotal;
- var _ListHelper;
- _PlayerTotal = PlayerCount();
- //No same area check
- _PartyTotal = PartyCountNick();
- _ListHelper = ListHelpers();
- AvoidNickExpOverflow(_PlayerTotal, _PartyTotal, _ListHelper);
- }
- // Get the distance between our character and the leader
- if(leaderUnit)
- {
- _distance = GetDistance(me, leaderUnit);
- }
- else
- {
- _distance = -1;
- }
- // If we get a valid distance, and we're inside the follow range, we don't need to do anything except attack.
- // if(_distance <= followRange && _distance !== -1 && me.areaid == leaderPlayerUnit.areaid && !NTC_InTown(me))
- if(_distance <= followRange && _distance !== -1 && me.areaid === leaderPlayerUnit.areaid && !NTC_InTown(me))
- {
- if(isAttackEnabled)
- {
- var _atk = true;
- if(NTConfig_DoNotAttackAreas.length >= 1)
- {
- for(var i = 0; i < NTConfig_DoNotAttackAreas.length; i++)
- {
- if(NTConfig_DoNotAttackAreas[i] === me.areaid)
- {
- _atk = false;
- break;
- }
- }
- }
- if(_atk)
- {
- if(me.areaid !== 131)
- {
- // if(NTA_CheckForCloseMonsters(30))
- if(NTA_CheckForCloseMonsters(20))
- {
- hAttack();
- return;
- }
- }
- else if(me.areaid === 131)
- {
- // if(NTA_CheckForCloseMonsters(30))
- if(NTA_CheckForCloseMonsters(20))
- {
- hAttackThrone();
- return;
- }
- }
- }
- }
- return;
- }
- // If we get a valid distance, and we're outside the follow range, but still inside the range for GetDistance() to work, attempt to get closer!
- // if(_distance >= followRange && _distance !== -1 && me.areaid == leaderPlayerUnit.areaid)
- if(_distance >= followRange && _distance !== -1 && me.areaid === leaderPlayerUnit.areaid)
- {
- if(!NTC_InTown(me))
- {
- if(leaderUnit)
- {
- NTM_GetCloserInt(leaderUnit);
- }
- else
- {
- NTM_MoveTo(leaderPlayerUnit.areaid, leaderPlayerUnit.x, leaderPlayerUnit.y);
- }
- }
- else
- {
- switch(me.areaid)
- {
- case 1:
- // no!
- NTM_GetCloserInt(leaderUnit);
- break;
- case 40:
- // no!
- NTM_GetCloserInt(leaderUnit);
- break;
- case 75:
- // no!
- NTM_GetCloserInt(leaderUnit);
- break;
- case 103:
- // no!
- NTM_GetCloserInt(leaderUnit);
- break;
- case 109:
- // no!
- NTM_GetCloserInt(leaderUnit);
- break;
- }
- }
- return;
- }
- // If we get an INVALID distance (too far away for GetDistance()), but we're in the same area, attempt to move to the leader
- // if(_distance === -1 && me.areaid === leaderPlayerUnit.areaid && !NTC_InTown(me) && !NTC_InTown(leaderPlayerUnit))
- if(_distance === -1 && me.areaid === leaderPlayerUnit.areaid && !NTC_InTown(me) && !NTC_InTown(leaderPlayerUnit) && me.areaid >= 1 && leaderPlayerUnit.areaid >= 1)
- {
- NTM_MoveTo(leaderPlayerUnit.areaid, leaderPlayerUnit.x, leaderPlayerUnit.y);
- return;
- }
- // If the leader is not in town, but we are
- if(!NTC_InTown(leaderPlayerUnit) && NTC_InTown(me))
- {
- // Get the distance between our character and the leader
- if(leaderUnit)
- {
- _distance = GetDistance(me, leaderUnit);
- }
- else
- {
- _distance = -1;
- }
- // If we get a valid distance, and we're outside the follow range, attempt to get closer!
- // This covers walking out of acts
- if(_distance >= followRange && _distance !== -1)
- {
- if(leaderUnit)
- {
- NTM_GetCloserInt(leaderUnit);
- }
- else
- {
- NTM_MoveTo(leaderPlayerUnit.areaid, leaderPlayerUnit.x, leaderPlayerUnit.y);
- }
- return;
- }
- // If leader took a WP to a different act, we want to try that wp, or just go to that act
- if(CheckAct(leaderPlayerUnit) !== CheckAct(me))
- {
- if(NTConfig_DoNotFollowAreas.length >= 1)
- {
- for(var i = 0; i < NTConfig_DoNotFollowAreas.length; i++)
- {
- if(NTConfig_DoNotFollowAreas[i] === leaderPlayerUnit.areaid)
- {
- NTTM_TownMove("waypoint");
- NTC_PingDelay(200);
- NTM_TakeWaypoint(GetPlayerActWaypointID(leaderPlayerUnit));
- Delay(200);
- NTTM_TownMove("portalspot");
- return;
- }
- }
- }
- var _mta = (AreaHasWaypoint(leaderPlayerUnit.areaid) ? leaderPlayerUnit.areaid : GetPlayerActWaypointID(leaderPlayerUnit));
- NTTM_TownMove("waypoint");
- NTC_PingDelay(200);
- NTM_TakeWaypoint(_mta);
- return;
- }
- // Return if leader is in a no-follow-zone
- for(var i = 0; i < NTConfig_DoNotFollowAreas.length; i++)
- {
- if(NTConfig_DoNotFollowAreas[i] === leaderPlayerUnit.areaid)
- {
- return;
- }
- }
- // Try to take any available portals
- if(NTC_InTown(me))
- {
- NTTM_TownMove("portalspot");
- Delay(250);
- }
- if(TakeLeaderTP())
- {
- Delay(250);
- return;
- }
- else
- if(AreaHasWaypoint(leaderPlayerUnit.areaid))
- {
- for(var i = 0; i < NTConfig_DoNotFollowAreas.length; i++)
- {
- if(NTConfig_DoNotFollowAreas[i] === leaderPlayerUnit.areaid)
- {
- return;
- }
- }
- NTM_TakeWaypoint(leaderPlayerUnit.areaid);
- }
- return;
- }
- // If we are not in town, but the leader is
- if(NTC_InTown(leaderPlayerUnit) && !NTC_InTown(me))
- {
- // Get the distance between our character and the leader
- if(leaderUnit)
- {
- _distance = GetDistance(me, leaderUnit);
- }
- else
- {
- _distance = -1;
- }
- // If we get a valid distance, and we're outside the follow range, attempt to get closer!
- // This covers walking back in/out of acts and in/out of new areas
- if(_distance >= followRange && _distance !== -1)
- {
- if(leaderUnit)
- {
- NTM_GetCloserInt(leaderUnit);
- }
- else
- {
- NTM_MoveTo(leaderPlayerUnit.areaid, leaderPlayerUnit.x, leaderPlayerUnit.y);
- }
- return;
- }
- // If leader took a WP to a different act, we want to try that wp, otherwise we simply get back to town
- if(_distance === -1 && CheckAct(me) !== CheckAct(leaderPlayerUnit))
- {
- if(!TakeLeaderTP())
- {
- if(!NTC_InTown(me))
- {
- // Last ditch effort, just go back to town
- if(!Town())
- {
- Whisper(leaderPlayerUnit.name, "I seem to be stuck!");
- }
- }
- }
- return;
- }
- // return;
- // If leader went back to town
- // Try to take any available portals
- if(_distance === -1 && CheckAct(leaderPlayerUnit) == CheckAct(me) && me.areaid !== leaderPlayerUnit.areaid)
- {
- if(!TakeLeaderTP())
- {
- if(!NTC_InTown(me))
- {
- // Last ditch effort, just go back to town
- if(!Town())
- {
- Whisper(leaderPlayerUnit.name, "I seem to be stuck!");
- }
- }
- }
- //return;
- }
- return;
- }
- // If we are both outside but in different areas
- if(me.areaid !== leaderPlayerUnit.areaid && !NTC_InTown(leaderPlayerUnit) && !NTC_InTown(me))
- {
- // Get the distance between our character and the leader
- if(leaderUnit)
- {
- _distance = GetDistance(me, leaderUnit);
- }
- else
- {
- _distance = -1;
- }
- // If we get a valid distance, and we're outside the follow range, attempt to get closer!
- // This covers walking to new area id's
- if(_distance >= followRange && _distance !== -1 && me.areaid === leaderPlayerUnit.areaid)
- {
- if(leaderUnit)
- {
- NTM_GetCloserInt(leaderUnit);
- }
- else
- {
- NTM_MoveTo(leaderPlayerUnit.areaid, leaderPlayerUnit.x, leaderPlayerUnit.y);
- }
- return;
- }
- // Check to see if we entered a doorway or stairs
- var _unit = GetPresetUnits(me.areaid, NTC_UNIT_TILE);
- if (_unit)
- {
- for (var i = 0; i < _unit.length; i += 1)
- {
- if (_unit[i].subareaid == leaderPlayerUnit.areaid)
- {
- if(!NTM_MoveToStair(me.areaid, leaderPlayerUnit.areaid)) {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToStair()");
- return;
- }
- // Delay(1000);
- if(!NTM_TakeStair(leaderPlayerUnit.areaid)) {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeStair()");
- return;
- }
- return;
- }
- else{//New for lvl 1's follow
- if(leaderUnit)
- {
- NTM_GetCloserInt(leaderUnit);
- }
- else
- {
- NTM_MoveTo(leaderPlayerUnit.areaid, leaderPlayerUnit.x, leaderPlayerUnit.y);
- }
- return;
- }
- }
- }
- // This covers outside-to-outside waypoint changes
- if(AreaHasWaypoint(leaderPlayerUnit.areaid))
- {
- if(NTM_TakeWaypoint(leaderPlayerUnit.areaid))
- {
- return;
- }
- }
- // Check for special doors
- // Leaving Arcane Sanctuary
- if(me.areaid == 74 && leaderPlayerUnit.areaid == 54)
- {
- if(!NTM_TakeUnit(NTC_UNIT_OBJECT, 298))
- {
- Town();
- }
- return;
- }
- // Entering Arcane Sanctuary
- if(me.areaid == 54 && leaderPlayerUnit.areaid == 74)
- {
- if(!NTM_TakeUnit(NTC_UNIT_OBJECT, 298))
- {
- Town();
- }
- return;
- }
- // Entering Duriel's Chamber
- if(me.areaid >= 66 && me.areaid <= 72 && leaderPlayerUnit.areaid == 73)
- {
- if(!NTM_TakeUnit(NTC_UNIT_OBJECT, 100))
- {
- Town();
- }
- return;
- }
- // Entering Tristram
- if(me.areaid == 4 && leaderPlayerUnit.areaid == 38)
- {
- if(!NTM_UsePortal("Portal", 38))
- {
- Town();
- }
- return;
- }
- // Exiting Tristram
- if(me.areaid == 38 && leaderPlayerUnit.areaid == 4)
- {
- if(!NTM_UsePortal("Portal", 4))
- {
- Town();
- }
- return;
- }
- // Entering Baal's Chamber
- if(me.areaid == 131 && leaderPlayerUnit.areaid == 132)
- {
- if(NTConfig_FollowtoWorldStone)
- {
- if(!NTM_TakeUnit(NTC_UNIT_OBJECT, 563))
- {
- Town();
- }
- return;
- }
- }
- Town();
- return;
- }
- }
- function PlayerCount()
- {
- var _player;
- var _playercount = 1;
- _player = GetPlayerUnit();
- if(_player)
- {
- while(_player.GetNext())
- {
- _playercount += 1;
- }
- }
- else
- {
- return undefined;
- }
- return _playercount;
- }
- function PartyCount()
- {
- var _player;
- var _myPartyId;
- var _partycount = 1;
- _player = GetPlayerUnit();
- if(_player)
- {
- _myPartyId = _player.partyid;
- if(_myPartyId != 65535)
- {
- while(_player.GetNext())
- {
- if(_player.name != me.name && _myPartyId == _player.partyid && _player.areaid === leaderPlayerUnit.areaid) {
- _partycount += 1;
- }
- }
- }
- }
- else
- {
- return undefined;
- }
- return _partycount;
- }
- //No same area check
- function PartyCountNick()
- {
- var _player;
- var _myPartyId;
- var _partycount = 1;
- _player = GetPlayerUnit();
- if(_player)
- {
- _myPartyId = _player.partyid;
- if(_myPartyId != 65535)
- {
- while(_player.GetNext())
- {
- if(_player.name != me.name && _myPartyId == _player.partyid) {
- _partycount += 1;
- }
- }
- }
- }
- else
- {
- return undefined;
- }
- return _partycount;
- }
- function ListHelpers()
- {
- var hcount = [];
- if(NTConfig_HelperTownList.length < 1){
- return hcount = [];
- }
- var i;
- //Re-construct the list with only chars in game
- for(i = 0; i < NTConfig_HelperTownList.length; i++)
- {
- if(CheckLeader(NTConfig_HelperTownList[i]))
- {
- hcount.push(NTConfig_HelperTownList[i]);
- }
- }
- return hcount;
- }
- function InfectorOfSoulsDead()
- {
- _target = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(2853));
- if (!_target) {return false;}
- return _target.mode == 12;
- }
- function ListerTheTormentorDead()
- {
- _target = NTC_FindUnit(NTC_UNIT_MONSTER, GetLocaleString(21855));
- if (!_target) {return false;}
- return _target.mode == 12;
- }
- function AvoidDiabloExpOverflow(PlayerTotal, PartyTotal, ListHelper)
- {
- var num_player_desired;
- if(PartyTotal == 1){
- return;
- }
- if(ListHelper.length < 1){
- return;
- }
- if(NTC_InTown(me))
- {
- while(leaderPlayerUnit.areaid === 108)
- {
- NTC_PingDelay(1000);
- }
- return;
- }
- switch(PlayerTotal)
- {
- case 1:
- //No total exp penalty due to overflow
- break;
- case 2:
- //No total exp penalty due to overflow
- break;
- case 3:
- //No total exp penalty due to overflow
- break;
- case 4:
- //No total exp penalty due to overflow
- break;
- case 5:
- //Maximum total exp is attained when the number of party members nearby is 4
- num_player_desired = 4;
- if(PartyTotal > num_player_desired)
- {
- TownHelper(ListHelper, num_player_desired, PartyTotal);
- }
- break;
- case 6:
- //Maximum total exp is attained when the number of party members nearby is 4
- num_player_desired = 4;
- if(PartyTotal > num_player_desired)
- {
- TownHelper(ListHelper, num_player_desired, PartyTotal);
- }
- break;
- case 7:
- //Maximum total exp is attained when the number of party members nearby is 3
- num_player_desired = 3;
- if(PartyTotal > num_player_desired)
- {
- TownHelper(ListHelper, num_player_desired, PartyTotal);
- }
- break;
- case 8:
- //Maximum total exp is attained when the number of party members nearby is 8, but 3 is also okay...
- //Do nothing if PartyTotal = 8 or 3
- num_player_desired = 3;
- if(PartyTotal > 3 && PartyTotal < 8)
- {
- TownHelper(ListHelper, num_player_desired, PartyTotal);
- }
- break;
- }
- return;
- }
- function AvoidBaalExpOverflow(PlayerTotal, PartyTotal, ListHelper)
- {
- var num_player_desired;
- if(PartyTotal == 1){
- return;
- }
- if(ListHelper.length < 1){
- return;
- }
- if(NTC_InTown(me))
- {
- while(leaderPlayerUnit.areaid === 131 || leaderPlayerUnit.areaid === 132)
- {
- NTC_PingDelay(1000);
- }
- return;
- }
- switch(PlayerTotal)
- {
- case 1:
- //No total exp penalty due to overflow
- break;
- case 2:
- //No total exp penalty due to overflow
- break;
- case 3:
- //No total exp penalty due to overflow
- break;
- case 4:
- //Maximum total exp is attained when the number of party members nearby is 3
- num_player_desired = 3;
- if(PartyTotal > num_player_desired)
- {
- TownHelper(ListHelper, num_player_desired, PartyTotal);
- }
- break;
- case 5:
- //Maximum total exp is attained when the number of party members nearby is 2, but 5 is also okay...
- //Do nothing if PartyTotal = 2
- //Try to tackle the PartyTotal == 5 case anyway...
- num_player_desired = 2;
- if(PartyTotal > 2 && PartyTotal <= 5)
- {
- TownHelper(ListHelper, num_player_desired, PartyTotal);
- }
- break;
- case 6:
- //Maximum total exp is attained when the number of party members nearby is 5
- num_player_desired = 5;
- if(PartyTotal > num_player_desired)
- {
- TownHelper(ListHelper, num_player_desired, PartyTotal);
- }
- break;
- case 7:
- //Maximum total exp is attained when the number of party members nearby is 7, but 4 is also okay...
- //Do nothing if PartyTotal = 7 or 4
- num_player_desired = 4;
- if(PartyTotal > 4 && PartyTotal < 7)
- {
- TownHelper(ListHelper, num_player_desired, PartyTotal);
- }
- break;
- case 8:
- //Maximum total exp is attained when the number of party members nearby is 4, but 6 is also okay... Maybe 8...
- //Do nothing if PartyTotal = 4
- //Try to tackle the PartyTotal == 6 case anyway...
- num_player_desired = 4;
- if(PartyTotal > 4 && PartyTotal <= 8)
- {
- TownHelper(ListHelper, num_player_desired, PartyTotal);
- }
- break;
- }
- return;
- }
- function AvoidNickExpOverflow(PlayerTotal, PartyTotal, ListHelper)
- {
- var num_player_desired;
- if(PartyTotal == 1){
- return;
- }
- if(ListHelper.length < 1){
- return;
- }
- // if(NTC_InTown(me))
- // {
- // while(leaderPlayerUnit.areaid === 124)
- // {
- // NTC_PingDelay(1000);
- // }
- // return;
- // }
- switch(PlayerTotal)
- {
- case 1:
- //No total exp penalty due to overflow
- break;
- case 2:
- //No total exp penalty due to overflow
- break;
- case 3:
- //No total exp penalty due to overflow
- break;
- case 4:
- //No total exp penalty due to overflow
- break;
- case 5:
- //No total exp penalty due to overflow
- break;
- case 6:
- //No total exp penalty due to overflow
- break;
- case 7:
- //No total exp penalty due to overflow
- break;
- case 8:
- //Maximum total exp is attained when the number of party members nearby is 7
- num_player_desired = 7;
- if(PartyTotal > num_player_desired)
- {
- TownHelper(ListHelper, num_player_desired, PartyTotal);
- }
- break;
- }
- return;
- }
- function TownHelper(ListHelper, num_player_desired, PartyTotal)
- {
- var i;
- var num_helper_kicked;
- if(ListHelper.length < 1){
- return false;
- }
- //The number of helpers that needs to be kicked back to town, this is always greater than 0 by definition
- num_helper_kicked = PartyTotal - num_player_desired;
- //For now, if can't reach num_player_desired after kicking all helpers back to town, do nothing. Will consider this case later...
- if(num_helper_kicked > ListHelper.length){
- return;
- }
- //Kick extra helpers back to town
- for(i = 0; i < ListHelper.length; i++)
- {
- //Won't town if my name is not in the list
- if(me.name == ListHelper[i] && i <= num_helper_kicked - 1)
- {
- Town();
- while(leaderPlayerUnit.areaid === 108 || leaderPlayerUnit.areaid === 131 || leaderPlayerUnit.areaid === 132 || leaderPlayerUnit.areaid === 124)
- {
- NTC_PingDelay(1000);
- }
- break;
- }
- }
- return;
- }
- function TPAtPlayersBody(playerName, enemysName)
- {
- var _playerUnit = aGetPlayerUnit(playerName);
- var _playerUnit2 = GetLeader(playerName);
- var _playerDistance;
- if(_playerUnit)
- _playerDistance = GetDistance(me, _playerUnit);
- else
- _playerDistance = -1;
- var _playerArea = _playerUnit2.areaid;
- var _myArea = me.areaid;
- if(_playerDistance > 0 && _myArea == _playerArea)
- {
- if(_playerUnit)
- NTM_GetCloserInt(_playerUnit);
- else
- NTM_MoveTo(leaderPlayerUnit.areaid, leaderPlayerUnit.x, leaderPlayerUnit.y);
- TP("");
- if(NTConfig_MessageDeadPlayers)
- {
- Whisper(playerName, NTConfig_DeadPlayerMsg);
- }
- }
- }
- function Guard() // Done
- {
- if(!NTC_InTown(me))
- {
- NTA_ClearPosition(15);
- }
- return;
- }
- function hAttack()
- {
- if(!NTC_InTown(me))
- {
- // if(NTA_CheckForCloseMonsters(30))
- // {
- // NTA_ClearPosition(30);
- NTA_ClearPosition(20);
- // Delay(1000);
- Delay(200);
- return;
- // }
- // Print(COLOR_5 + "Delay Now");
- // return;
- }
- // Delay(1000);
- Delay(200);
- }
- function hAttackThrone()
- {
- if(!NTC_InTown(me))
- {
- // if(NTA_CheckForCloseMonstersThrone(30))
- // {
- // NTA_ClearPosition(30);
- NTA_ClearPosition(20);
- // NTA_ClearPosition(30, false);
- // Delay(1000);
- Delay(200);
- return;
- // }
- // Print(COLOR_5 + "Delay Now");
- // return;
- }
- // Delay(1000);
- Delay(200);
- }
- function isATown(id)
- {
- var _ret = false;
- switch(id)
- {
- case 1: _ret = true; break;
- case 40: _ret = true; break;
- case 75: _ret = true; break;
- case 103: _ret = true; break;
- case 109: _ret = true; break;
- }
- return _ret;
- }
- function TakeLeaderTP() // Done
- {
- while(me.areaid == 0 || leaderPlayerUnit.areaid == 0)
- {
- NTC_Delay(100);
- }
- var _prearea = me.areaid;
- var _preleaderarea = leaderPlayerUnit.areaid;
- var _ret = false;
- isBusy = true;
- if(!NTC_InTown(me))
- {
- NTM_UsePortal("BluePortal", GetPlayerActWaypointID(me), leaderPlayerUnit.name);
- NTC_PingDelay(NTConfig_AreaDelay);
- if(NTC_InTown(me))
- {
- if(NTTMGR_CheckScrolls(1) < 8 || NTTMGR_CheckScrolls(0) < 10)
- {
- Whisper(leaderPlayerUnit.name, "Buying scrolls");
- NTTMGR_TownManager();
- }
- }
- }
- else if(NTC_InTown(me))
- {
- NTM_UsePortal("BluePortal", _preleaderarea, leaderPlayerUnit.name);
- NTC_PingDelay(NTConfig_AreaDelay);
- if(!NTC_InTown(me))
- {
- NTP_DoPrecast(true);
- }
- }
- if(_prearea !== me.areaid)
- {
- _ret = true;
- }
- else
- {
- _ret = false;
- }
- isBusy = false;
- return _ret;
- }
- function GiveGold( amount ) // Done
- {
- isBusy = true;
- _gold = me.GetStat(14);
- if(amount != "")
- {
- if( parseInt(amount) <= 50000 && parseInt(amount) >= 1 )
- {
- if(parseInt(amount) <= _gold)
- {
- Gold(0, parseInt(amount));
- }
- else
- {
- Print(COLOR_5 + "Sorry, I am out of gold!");
- }
- NTC_Delay(1000);
- }
- else
- {
- Print(COLOR_5 + "Invalid amount. Valid range is 1-10000.");
- }
- }
- else
- {
- Print(COLOR_5 + "Invalid amount. Valid range is 1-10000.");
- }
- isBusy = false;
- }
- function GiveTits()
- {
- isBusy = true;
- milkz = 50000; //amount of real gold to spare
- _gold = me.GetStat(14);
- // Print(COLOR_5 + "Roger");
- NTTMGR_BrgTits();
- // Print(COLOR_5 + "my tits");
- if(parseInt(milkz) <= _gold)
- {
- Gold(0, parseInt(milkz));
- }
- else
- {
- // Print(COLOR_5 + "Sorry, I am out of milkz!");
- }
- NTC_Delay(1000);
- isBusy = false;
- return;
- }
- function NTTMGR_BrgTits()
- {
- CheckForGoldWho = ["akara", "fara", "ormus", "jamella", "malah"];
- switch(me.act){
- case 1:
- if(!NTTM_TownMove(CheckForGoldWho[0])) {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
- return;
- }
- break;
- case 2:
- if(!NTTM_TownMove(CheckForGoldWho[1])) {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
- return;
- }
- break;
- case 3:
- if(!NTTM_TownMove(CheckForGoldWho[2])) {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
- return;
- }
- break;
- case 4:
- if(!NTTM_TownMove(CheckForGoldWho[3])) {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
- return;
- }
- break;
- case 5:
- if(!NTTM_TownMove(CheckForGoldWho[4])) {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
- return;
- }
- break;
- default:
- break;
- } return;
- }
- function Quest( msg ) // Done (needs testing)
- {
- if(!NTC_InTown(me))
- Town();
- switch(msg)
- {
- case "":
- break;
- case "cain":
- Extras.Cain();
- break;
- case "andy":
- case "andariel":
- Quests.Andy();
- break;
- case "radament":
- case "rada":
- Extras.Radament();
- break;
- case "cube":
- Quests.Cube();
- break;
- case "staff":
- Quests.Staff();
- break;
- case "ammy":
- Quests.Ammy();
- break;
- case "summoner":
- Quests.Summoner();
- break;
- case "duriel":
- Quests.Duriel();
- break;
- case "tome":
- Extras.Tome();
- break;
- case "travincal":
- case "trav":
- Quests.Travincal();
- break;
- case "mephisto":
- case "meph":
- Quests.Mephisto();
- break;
- case "izual":
- case "izzy":
- Extras.Izual();
- break;
- case "diablo":
- Quests.Diablo();
- break;
- case "shenk":
- Extras.Shenk();
- break;
- case "anya":
- Extras.Anya();
- break;
- case "ancients":
- Quests.Ancients();
- break;
- case "baal":
- Quests.Baal();
- break;
- case "imbue":
- Imbue();
- break;
- default:
- Invalid();
- }
- }
- function Town() // Done
- {
- while(me.areaid == 0)
- {
- NTC_Delay(100);
- }
- var _ret = false;
- var _prearea = me.areaid;
- if(!NTC_InTown(me))
- {
- isBusy = true;
- NTM_MakeTP();
- NTC_PingDelay(500);
- NTM_UsePortal("BluePortal", GetPlayerActWaypointID(me), me.charname);
- NTC_PingDelay(NTConfig_AreaDelay);
- if(NTC_InTown(me))
- {
- if(NTTMGR_CheckScrolls(1) < 8 || NTTMGR_CheckScrolls(0) < 10)
- {
- NTTMGR_TownManager();
- }
- }
- if(_prearea !== me.areaid)
- {
- isBusy = false;
- _ret = true;
- return _ret;
- }
- else
- {
- isBusy = false;
- _ret = false;
- return _ret;
- }
- }
- else if(NTC_InTown(me))
- {
- isBusy = true;
- if(NTTMGR_CheckScrolls(1) < 8 || NTTMGR_CheckScrolls(0) < 10)
- {
- NTTMGR_TownManager();
- }
- isBusy = false;
- _ret = true;
- return _ret;
- }
- }
- function Chant( msg ) // Done
- {
- if(msg == "on")
- {
- Print(COLOR_5 + "!Auto enchant turned on!");
- Print(COLOR_5 + "Following and attacking disabled!");
- isAutoEnchantEnabled = true;
- return;
- }
- if(msg == "off")
- {
- Print(COLOR_5 + "!Auto enchant turned off!");
- isAutoEnchantEnabled = false;
- return;
- }
- isBusy = true;
- if(!NTC_InTown(me) && NTC_GetSkillLevel(52))
- {
- // Enchant player
- var _player = NTC_FindUnit(NTC_UNIT_PLAYER);
- //var _merc = NTC_FindUnit(NTC_UNIT_MERC);
- if(!_player)
- return;
- do
- {
- if(_player.name !== me.name && GetDistance(me, _player) <= 20 && NTC_InMyParty(_player.name))
- {
- NTC_Delay(750);
- NTC_CastSkill(52, NTC_HAND_RIGHT, _player);
- }
- // Enchant merc
- var _merc = NTC_FindUnit(NTC_UNIT_MERC);
- if (_merc)
- {
- do
- {
- if(NTC_CheckOwner(_merc, _player.name) && GetDistance(me, _merc) < 20 && _merc.hp > 0 && _player.name !== me.name)
- {
- NTC_Delay(750);
- NTC_CastSkill(52, NTC_HAND_RIGHT, _merc);
- }
- } while (_merc.GetNext());
- }
- } while( _player.GetNext() )
- }
- // else
- else if(NTC_InTown(me))
- {
- Print(COLOR_5 + "I'm in town! Say 'help tp' for more information.");
- }
- isBusy = false;
- }
- function TP(msg) // Done
- {
- isBusy = true;
- switch(msg)
- {
- case "":
- if(!NTC_InTown(me))
- {
- if(!NTM_MakeTP())
- {
- Print(COLOR_5 + "Failed to make a TP");
- }
- break;
- }
- if(NTC_InTown(me))
- {
- Print(COLOR_5 + "I'm in town! Say 'help tp' for more information.");
- }
- isBusy = false;
- break;
- default:
- var wpID = WaypointNameToID(msg);
- if(wpID == -1)
- {
- Invalid();
- isBusy = false;
- return;
- }
- if(!NTC_InTown(me))
- {
- if(wpID != -1)
- {
- Town();
- if(NTTMGR_CheckScrolls(1) <= 8)
- {
- Print(COLOR_5 + "Buying scrolls first!");
- NTTMGR_TownManager();
- }
- NTTM_TownMove("waypoint")
- NTM_TakeWaypoint(wpID);
- if(!NTM_MakeTP())
- {
- Print(COLOR_5 + "Failed to make a TP");
- }
- break;
- }
- }
- else
- {
- if(wpID != -1)
- {
- if(NTTMGR_CheckScrolls(1) <= 8)
- {
- Print(COLOR_5 + "Buying scrolls first!");
- NTTMGR_TownManager();
- }
- NTTM_TownMove("waypoint")
- NTM_TakeWaypoint(wpID);
- if(!NTM_MakeTP())
- {
- Print(COLOR_5 + "Failed to make a TP"); // this too
- }
- }
- }
- break;
- }
- isBusy = false;
- }
- function CommandClear(msg) // Done
- {
- isBusy = true;
- if(!NTC_InTown(me))
- {
- switch(msg)
- {
- case "":
- NTA_ClearPosition( 30 )
- break;
- case "level":
- NTA_ClearLevel();
- break;
- default:
- if(msg >= 5 && msg <= 40)
- NTA_ClearPosition(msg);
- break;
- }
- }
- else
- {
- Print(COLOR_5 + "I'm in town!");
- }
- isBusy = false;
- }
- function Rush( msg ) // Done (needs testing)
- {
- isBusy = true;
- isFollowingEnabled = false;
- isAutoEnchantEnabled = false;
- switch(msg)
- {
- case "":
- Rush1();
- Rush2();
- Rush3();
- Rush4();
- Rush5();
- break;
- case "1":
- Print(COLOR_5 + "Starting act 1");
- Rush1();
- break;
- case "2":
- Print(COLOR_5 + "Starting act 2");
- Rush2();
- break;
- case "3":
- Print(COLOR_5 + "Starting act 3");
- Rush3();
- break;
- case "4":
- Print(COLOR_5 + "Starting act 4");
- Rush4();
- break;
- case "5":
- Print(COLOR_5 + "Starting act 5");
- Rush5();
- break;
- default:
- Invalid();
- }
- isBusy = false;
- }
- function Rush1()
- {
- if(NTConfig_Quest_Cain)
- Extras.Cain();
- Quests.Andy();
- }
- function Rush2()
- {
- if(NTConfig_Quest_Radament)
- Extras.Radament();
- if(me.diff == 0)
- Quests.Cube();
- Quests.Ammy();
- Quests.Staff();
- Quests.Summoner();
- Quests.Duriel();
- }
- function Rush3()
- {
- if(NTConfig_Quest_Tome)
- Extras.Tome();
- Quests.Travincal();
- Quests.Mephisto();
- }
- function Rush4()
- {
- if(NTConfig_Quest_Izual)
- Extras.Izual();
- Quests.Diablo();
- }
- function Rush5()
- {
- if(NTConfig_Quest_Shenk)
- Extras.Shenk();
- if(NTConfig_Quest_Anya)
- Extras.Anya();
- if(NTConfig_Quest_Ancients)
- Quests.Ancients();
- if(NTConfig_Quest_Baal)
- Quests.Baal();
- }
- function Imbue()
- {
- if(!NTTM_CheckAct(1))
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
- return;
- }
- NTTMGR_TownManager();
- if(!NTTM_TownMove("waypoint"))
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
- return;
- }
- if(!NTM_TakeWaypoint(27))
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");
- return;
- }
- NTP_DoPrecast(true);
- if(!NTM_MoveToPresetUnit(28, NTC_UNIT_OBJECT, 108, 5, 5, false))
- {
- NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToPresetUnit()");
- return;
- }
- NTM_MakeTP();
- NTC_Delay(500);
- // if(!NTA_KillMonster(GetLocaleString(2889)))
- // {
- // NTC_SendMsgToScript("NTBotGame.ntj", "NTA_KillMonster()");
- // return;
- // }
- NTA_ClearPosition(10);
- Town();
- }
- // ******************************************************************************
- // Internal functions
- // ******************************************************************************
- function WaypointNameToID(name) // for Nith, you have to say 'nit' instead of 'hal'. Conflicts with 'hal'ls of the dead.
- {
- var partial = name.substring(0, 3);
- var returnID = -1;
- // Area name to area ID
- switch(partial)
- {
- // Act 1
- case "col": // cold plains
- returnID = 3;
- break;
- case "sto": // stony field
- returnID = 4;
- break;
- case "dar": // dark wood
- returnID = 5;
- break;
- case "bla": // black marsh
- returnID = 6;
- break;
- case "out": // outer cloister
- returnID = 27;
- break;
- case "jai": // jail level 1
- returnID = 29;
- break;
- case "inn": // inner cloister
- returnID = 32;
- break;
- case "cat": // catacombs level 2
- returnID = 35;
- break;
- // Act 2
- case "sew": // sewers level 2
- returnID = 48;
- break;
- case "hal": // halls of the dead level 2
- returnID = 57;
- break;
- case "far": // far oasis
- returnID = 43;
- break;
- case "los": // lost city
- returnID = 44;
- break;
- case "pal": // palace
- returnID = 52;
- break;
- case "arc": // arcane
- returnID = 74;
- break;
- case "can": // canyon
- returnID = 46;
- break;
- // Act 3
- case "spi": // spider forest
- returnID = 76;
- break;
- case "gre": // great marsh
- returnID = 77;
- break;
- case "fla": // flayer jungle
- returnID = 78;
- break;
- case "low": // lower kurast
- returnID = 79;
- break;
- case "kur": // kurast bazar
- returnID = 80;
- break;
- case "upp": // upper kurast
- returnID = 81;
- break;
- case "tra": // travincal
- returnID = 83;
- break;
- case "dur": // durance of hate level 2
- returnID = 101;
- break;
- // Act 4
- case "cit": // city of the damned
- returnID = 106;
- break;
- case "riv": // river of flame
- returnID = 107;
- break;
- // Act 5
- case "fri": // fridgid highlands
- returnID = 111;
- break;
- case "arr": // arreat summit
- returnID = 112;
- break;
- case "cry": // crystalline passage
- returnID = 113;
- break;
- case "gla": // glacial trail
- returnID = 115;
- break;
- case "fro": // frozen tundra
- returnID = 117;
- break;
- case "nit": // nith
- returnID = 123;
- break;
- case "anc": // ancients
- returnID = 118;
- break;
- case "wor": // worldstone
- returnID = 129;
- break;
- default:
- returnID = -1;
- }
- return returnID;
- }
- function AreaHasWaypoint(area)
- {
- var _ret = false;
- switch(area)
- {
- // ACT_1
- case 3: _ret = true; break; // LEVEL_COLD_PLAINS
- case 4: _ret = true; break; // LEVEL_STONY_FIELD
- case 5: _ret = true; break; // LEVEL_DARK_WOOD
- case 6: _ret = true; break; // LEVEL_BLACK_MARSH
- case 27: _ret = true; break; // LEVEL_OUTER_CLOISTER
- case 29: _ret = true; break; // LEVEL_JAIL_LEVEL_1
- case 32: _ret = true; break; // LEVEL_INNER_CLOISTER
- case 35: _ret = true; break; // LEVEL_CATACOMBS_LEVEL_2
- // ACT_2
- case 40: _ret = true; break; // LEVEL_LUT_GHOLEIN
- case 42: _ret = true; break; // LEVEL_DRY_HILLS
- case 43: _ret = true; break; // LEVEL_FAR_OASIS
- case 44: _ret = true; break; // LEVEL_LOST_CITY
- case 46: _ret = true; break; // LEVEL_CANYON_OF_THE_MAGI
- case 48: _ret = true; break; // LEVEL_SEWERS_LEVEL_2
- case 52: _ret = true; break; // LEVEL_PALACE_CELLAR_LEVEL_1
- case 57: _ret = true; break; // LEVEL_HALLS_OF_THE_DEAD_LEVEL_2
- case 74: _ret = true; break; // LEVEL_ARCANE_SANCTUARY
- // ACT_3
- case 76: _ret = true; break; // LEVEL_SPIDER_FOREST
- case 77: _ret = true; break; // LEVEL_GREAT_MARSH
- case 78: _ret = true; break; // LEVEL_FLAYER_JUNGLE
- case 79: _ret = true; break; // LEVEL_LOWER_KURASH
- case 80: _ret = true; break; // LEVEL_KURASH_BAZAAR
- case 81: _ret = true; break; // LEVEL_UPPER_KURAST
- case 83: _ret = true; break; // LEVEL_TRAVINCAL
- case 101: _ret = true; break; // LEVEL_DURANCE_OF_HATE_LEVEL_2
- // ACT_4
- case 103: _ret = true; break; // LEVEL_PANDEMONIUM_FORTRESS
- case 106: _ret = true; break; // LEVEL_CITY_OF_THE_DAMNED
- case 107: _ret = true; break; // LEVEL_RIVER_OF_FLAME
- // ACT_5
- case 109: _ret = true; break; // LEVEL_HARROGATH
- case 111: _ret = true; break; // LEVEL_FRIGID_HIGHLANDS
- case 112: _ret = true; break; // LEVEL_ARREAT_PLATEAU
- case 113: _ret = true; break; // LEVEL_CRYSTALLINE_PASSAGE
- case 115: _ret = true; break; // LEVEL_GLACIAL_TRAIL
- case 117: _ret = true; break; // LEVEL_FROZEN_TUNDRA
- case 118: _ret = true; break; // LEVEL_GLACIAL_CAVES_LEVEL_1
- case 123: _ret = true; break; // LEVEL_HALLS_OF_DEATHS_CALLING
- case 129: _ret = true; break; // LEVEL_THE_WORLDSTONE_KEEP_LEVEL_2
- default: _ret = false; break; // All other areas have no waypoints
- }
- return _ret;
- }
- // from koltons script
- function GetLeader(name)
- {
- _party = GetPlayerUnit();
- if (_party) {
- do {
- if (_party.name === name) {
- return _party;
- }
- } while (_party.GetNext());
- }
- return false;
- }
- // from koltons script
- function GetLeaderUnit(name)
- {
- var _unit = NTC_FindUnit(NTC_UNIT_PLAYER);
- if (_unit) {
- do {
- if (_unit.name === name) {
- return _unit;
- }
- } while (_unit.GetNext());
- }
- return false;
- }
- function aGetPlayerUnit(name)
- {
- var _unit = NTC_FindUnit(NTC_UNIT_PLAYER);
- if (_unit) {
- do {
- if (_unit.name === name) {
- return _unit;
- }
- } while (_unit.GetNext());
- }
- return false;
- }
- // from koltons script
- function CheckAct(leaderPlayerUnit)
- {
- if (leaderPlayerUnit.areaid <= 39) {
- return 1;
- } else if(leaderPlayerUnit.areaid >= 40 && leaderPlayerUnit.areaid <= 74) {
- return 2;
- } else if(leaderPlayerUnit.areaid >= 75 && leaderPlayerUnit.areaid <= 102) {
- return 3;
- } else if(leaderPlayerUnit.areaid >= 103 && leaderPlayerUnit.areaid <= 108) {
- return 4;
- }
- else return 5;
- }
- function GetPlayerActWaypointID(leaderPlayerUnit)
- {
- if (leaderPlayerUnit.areaid <= 39) {
- return 1;
- } else if(leaderPlayerUnit.areaid >= 40 && leaderPlayerUnit.areaid <= 74) {
- return 40;
- } else if(leaderPlayerUnit.areaid >= 75 && leaderPlayerUnit.areaid <= 102) {
- return 75;
- } else if(leaderPlayerUnit.areaid >= 103 && leaderPlayerUnit.areaid <= 108) {
- return 103;
- }
- else return 109;
- }
- function CheckLeader(name)
- {
- _player = GetPlayerUnit();
- if(_player)
- {
- do
- {
- if(_player.name != name)
- continue;
- if(_player.name == name)
- return true;
- } while(_player.GetNext())
- }
- return false;
- }
- function NTH_GetDistance(sx, sy, ex, ey)
- {
- // Laziness
- }
- function Whisper(name, msg)
- {
- // Sends a in-game whisper via @charname msg
- // This does NOT get you IP bans or realms downs
- // :)
- // Print(COLOR_5 + "@" + name + " " + msg);
- }
- function LogActionPl0x(message)
- {
- // Debugging stuff
- var time = new Date();
- var hour = time.getHours();
- var minute = time.getMinutes();
- var second = time.getSeconds();
- var millisecond = time.getMilliseconds();
- var DoN = "AM";
- if (hour > 11) { DoN = "PM"; }
- if (hour > 12) { hour = hour - 12; }
- if (hour == 0) { hour = 12; }
- if (hour < 10) { hour = "0" + hour; }
- if (minute < 10) { minute = "0" + minute; }
- if (second < 10) { second = "0" + second; }
- if (String(millisecond).length == 2) { millisecond = millisecond + "0"; }
- if (String(millisecond).length == 1) { millisecond = millisecond + "00"; }
- var timeString = "[" + hour + ':' + minute + ':' + second + ":" + millisecond + " " + DoN + "]";
- var file = FileOpen("logs/NTHelperDebug.txt", 2);
- if(!file)
- file = FileOpen("logs/NTHelperDebug.txt", 1);
- file.WriteLine(timeString + ": " + message);
- file.Close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement