You MUST have d2jsp already installed for this to work (go to the bottom of this post and find a link to d2jps if you don't already have it installed).
Topics covered include:
1. Extraction of YAMB
2. Editing YAM_Config_*charname*.d2l
3. Editing YAM_LifeWatchConfig_LightningSorc.d2l
4. Editing default.d2j
EXTRACTION OF YAMB
Okay, here is what I did to solve it. I got the most up to date version of YAMB (0.9.5.0 now I believe) and extracted to:
C:\Games\Diablo II\....\d2jsp\scripts
d2jsp\scripts folders making sure to overwrite FILENAMES, but not FOLDERNAMES EDIT
YAM_CONFIG
d2jsp\scripts\libs\YAMB\YAM_Config_*yourCHARname*.d2l
Choose a template for your character class and make a copy of it in the same folder. Rename the copy to the CASE SENSITIVE (i.e. all caps if all caps) version w/ your character's USER NAME.....NOT account name (common mistake). For example, if charname is TOASTY, rename the file...
d2jsp\scripts\libs\YAMB\YAM_Config_TOASTY.d2l
Open the file you just renamed. In the following section, choose which bosses you would like to fight by putting a "//" in front of those you don't want:
Code:
//////////////////////////////////////////////////////////////////////
// Boss configuration
//====================================================================
// This is the list of currently available boss to run.
// Reorder the lines to change the order in which they will be killed.
// Comment out (put // before) a line to skip the boss.
// Recommendation: Reorder the sequence in order of difficulty,
// to kill the toughest boss last and the easiest boss first.
//--------------------------------------------------------------------
YAMXXP.push("Pindle");
YAMXXP.push("Eldritch");
YAMXXP.push("Shenk");
YAMXXP.push("Andy");
YAMXXP.push("Countess");
YAMXXP.push("Meph");
//Pit and Baal are beta at the moment.
//YAMXXP.push("Pit");
//YAMXXP.push("Baal");
//YAMXXP.push("ThreshSocket");
Code:
//////////////////////////////////////////////////////////////////////
// Stashing configuration
//====================================================================
// DT_FreeSpace = number Minimum number of free columns: if less full columns are free, go to stash.
// DT_MinGoldToStash = number Maximum gold amount carried before going to stash.
//--------------------------------------------------------------------
DT_FreeSpace = 3;
DT_MinGoldToStash = 250000;
//--------------------------------------------------------------------
// The numbers correspond to your inventory. Set 0 to keep whatever is there, 1 to stash it.
// This allows you to keep charms in inventory. Note: If you have an empty spot set to 0
// the item that appears there during a run will NEVER get stashed.
// (Useful if you have lots of space and want to use the bonuses of freshly-ID'd charms.)
// WARNING: Make sure that you have set this correctly otherwise you can lose
// your existing items!
//--------------------------------------------------------------------
DT_Columns[0]=[1,1,1,1,1,0,0,0,0,0];
DT_Columns[1]=[1,1,1,1,1,0,0,0,0,0];
DT_Columns[2]=[1,1,1,1,1,0,0,0,0,0];
DT_Columns[3]=[1,1,1,1,1,0,0,0,0,0];
________________________________
Code:
//////////////////////////////////////////////////////////////////////
// Belt configuration
//====================================================================
// YAM_UseBeltManager = true/false Leave at true if you want the bot to buy potions.
//--------------------------------------------------------------------
YAM_UseBeltManager = true;
//--------------------------------------------------------------------
// Type of potion used in each belt column
// Available types : "hp" = health | "mp" = mana | "rv" = rejuv. Can use other potion types too (untested!).
// Keep equal types at adjacent columns. First HP then MP and then HP again is a bad choice.
// Keep HP and MP at the beginning of the belt (in case you want to use rejuv and other types).
// Rejuvenations MUST, I REPEAT MUST be at the end of the belt (last x columns).
// Recommendation: Since YAMB supports potion-swapping there is no point in reserving
// a column for rejuvenations anymore.
//--------------------------------------------------------------------
DT_BeltColType[0] = "hp"; // Column 1 in belt
DT_BeltColType[1] = "hp"; // Column 2
DT_BeltColType[2] = "hp"; // Column 3
DT_BeltColType[3] = "mp"; // Column 4
Set the following section of code to reflect your pre-cast preferences. I use a sorc, but each file has it's own precast section....here is mine
Code:
//////////////////////////////////////////////////////////////////////
// Precasting configuration
//====================================================================
// DA_UseCTA = true/false Switch to and use your CTA weapon runeword when doing the precasts.
// DA_AutoPrecasts = true/false Set to true to ignore the config below and automatically detect which skills to use for precasts.
// XP_ColdArmor = 0/1/2/3 Cast a cold armor (0 = disabled, 1 = Frozen, 2 = Shiver and 3 = Chilling)
// XP_EnergyShield = true/false Cast Energy Shield
// XP_ThunderStorm = true/false Cast Thunder Storm
//--------------------------------------------------------------------
DA_UseCTA = false;
DA_AutoPrecasts = true;
XP_ColdArmor = 0;
XP_EnergyShield = true;
XP_ThunderStorm = false;
Edit your skills...some files don't have this, but the sorc one does...Here you define what skills you will use. I use frozen orb and glacial spike. You can select whichever you want. Read the comments in the file for help - they are useful.
Code:
//////////////////////////////////////////////////////////////////////
// Attack configuration
//////////////////////////////////////////////////////////////////////
// Bosses section.
....
....
....
....
//PXP_SorcSkill.push(64); // Frozen Orb
//PXP_SorcSkill.push(59); // Blizzard
//EXP_SorcSkill.push(59); // Blizzard
//SXP_SorcSkill.push(59); // Blizzard
//CXP_SorcSkill.push(59); // Blizzard
YAM_SorcSkill.push(64); // Frozen Orb
//YAM_SorcSkill.push(59); // Blizzard
//YAM_SorcSkill.push(45); // Ice Blast
YAM_SorcSkill.push(55); // Glacial Spike
//YAM_SorcSkill.push(48); // Nova
//YAM_SorcSkill.push(62); // Hydra
//YAM_SorcSkill.push(56); // Meteor
//YAM_SorcSkill.push(38); // Charged Bolt
//YAM_SorcSkill.push(47); // Fire Ball
//YAM_SorcSkill.push(51); // Fire Wall
//YAM_SorcSkill.push(49); // Lightning
//YAM_SorcSkill.push(53); // Chain Lightning
The following section is also useful to look at - especially if you have a char w/ only one type of attack. Since I am using only cold, I want to chicken out if the boss is cold imune. This can be seen in my options below. You can also edit the options around this section to account for boss auras. Again, this is specific to the Sorc class, but each template has it's own section to edit.
Code:
//////////////////////////////////////////////////////////////////////
// Immunities/Resistances/Enchantments to skip
//====================================================================
// Set each to true to chicken out if a monster is immune to that kind of damage.
// Thanks to D32v1n for contributing to some of these settings
//--------------------------------------------------------------------
DA_Immunities[1] = false; // Physical
DA_Immunities[2] = false; // Magic
DA_Immunities[3] = false; // Fire
DA_Immunities[4] = false; // Lightning
DA_Immunities[5] = true; // Cold
DA_Immunities[6] = false; // Poison
EDIT YAM_LIFEWATCHCONFIG
Next, edit the following file...
d2jsp\scripts\libs\YAMB\YAM_LifeWatchConfig_LightningSorc.d2l
So that it reads:
d2jsp\scripts\libs\YAMB\YAM_LifeWatchConfig_*yourCHARname*.d2l
Remember to rename the copy to the CASE SENSITIVE (i.e. all caps if all caps) version w/ your character's USER NAME.....NOT account name (common mistake) For example, if charname is TOASTY, rename the file...
d2jsp\scripts\libs\YAMB\YAM_LifeWatchConfig_TOASTY.d2l
Now that you have RENAMED the file, edit it...
Code:
////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Character lifewatch settings
//==============================================.
....
....
....
....
var LW_UseTownChicken = true;
var LW_ChickenLife = 150;
var LW_ChickenTownLife = 250;
var LW_ChickenMana = 0;
var LW_LifeThresh = 400;
var LW_ManaThresh = 250;
var LW_LifeRejuvThresh = 300;
var LW_ManaRejuvThresh = 0;
var LW_QuitOnNoDrink = 550;
var LW_ChickenOnOutOfManaPots = false;
var LW_ChickenOnOutOfHealPots = false;
var LW_ChickenOnOutOfRejuvPots = false;
var LW_ChickenOnOutOfPots = true;
EDIT DEFAULT.D2J
Almost there...one more file to change...Open the following file
d2jsp\scripts\default.d2j
Change PindleXP.d2j to YAMB.d2j. Change the code to the following...where CHARname is the CASE SENSITIVE (i.e. all caps if all caps) version w/ your character's USER NAME.....NOT account name (common mistake).
Code:
function main() {
switch(me.name) {
case "*CHARname*":
load("bots/PindleXP.d2j");
break;
default:
load("bots/PindleXP.d2j");
break;
}
}
For example, if charname is TOASTY, rename the file
Code:
function main() {
switch(me.name) {
case "TOASTY":
load("bots/YAMB.d2j");
break;
default:
load("bots/YAMB.d2j");
break;
}
} Then run d2jsp