This is the hardcode I implemented to make sure start zones and start binds work for titanium. Titanium was iffy on reading the start zones table, plus, it always had issues with double default binds via woodelves in kelethen bound in gfaydark and high elves bound in gfaydark. It never allowed 2 separate binds, anywho, heres the code.
I deleted all entries in the startzones table so it didn't pull anything from there.
If you want to change anything, atleast heres a good example to work with how you want it to be.
EDIT : Because I'm classic-pop with no drakkin and theres no case for froglok in rathe mountain(left froglok in for fashionquest). I added a race check in default. You could do the same for drakkin I imagine.
worlddb.cpp
Code:
void WorldDatabase::SetTitaniumDefaultStartZone(PlayerProfile_Struct* in_pp, CharCreate_Struct* in_cc)
{
switch (in_cc->start_zone)
{
case 0: // Erudin
{
if (in_cc->class_ == SHADOWKNIGHT) // Cazic-Thule Erudites go to Paineel WORKS
{
in_pp->x = 456.00;
in_pp->y = 880.00;
in_pp->z = -120.18;
in_pp->zone_id = 75; // paineel
in_pp->binds[0].zoneId = 75;
in_pp->binds[0].x = 200.00;
in_pp->binds[0].y = 800.00;
in_pp->binds[0].z = 3.39;
}
else if (in_cc->class_ == NECROMANCER) // Cazic-Thule Erudites go to Paineel WORKS
{
in_pp->x = 839.42;
in_pp->y = 785.43;
in_pp->z = -24.12;
in_pp->zone_id = 75; // paineel
in_pp->binds[0].zoneId = 75;
in_pp->binds[0].x = 200.00;
in_pp->binds[0].y = 800.00;
in_pp->binds[0].z = 3.39;
}
else
{
in_pp->x = 75.89;
in_pp->y = -14.76;
in_pp->z = 19.75;
in_pp->zone_id = 24; // erudnext
in_pp->binds[0].zoneId = 38; // tox
in_pp->binds[0].x = 204.20;
in_pp->binds[0].y = 2358.52;
in_pp->binds[0].z = -44.89;
}
break;
}
case 1: // Qeynos
{
if (in_cc->deity == 201)
{
in_pp->x = -370.89;
in_pp->y = 361.61;
in_pp->z = -38.22;
in_pp->zone_id = 45; // qcat
in_pp->binds[0].zoneId = 2;
in_pp->binds[0].x = 120;
in_pp->binds[0].y = 406.14;
in_pp->binds[0].z = 1.88;
}
else
{
in_pp->x = 233.76;
in_pp->y = 20.43;
in_pp->z = 2.44;
in_pp->zone_id = 2; // qeynos2
in_pp->binds[0].zoneId = 2; // qeynos2
in_pp->binds[0].x = 120;
in_pp->binds[0].y = 406.14;
in_pp->binds[0].z = 1.88;
}
break;
}
case 2: // Halas
{
in_pp->x = 75.54;
in_pp->y = 127.53;
in_pp->z = 4.38;
in_pp->zone_id = 29; // halas
in_pp->binds[0].zoneId = 30; // everfrost
in_pp->binds[0].x = 578.13;
in_pp->binds[0].y = 3346.48;
in_pp->binds[0].z = -49.70;
break;
}
case 3: // Rivervale
{
in_pp->x = -157.54;
in_pp->y = 100.40;
in_pp->z = 46.16;
in_pp->zone_id = 19; // rivervale
in_pp->binds[0].zoneId = 33; // misty
in_pp->binds[0].x = -2427.33;
in_pp->binds[0].y = 491.37;
in_pp->binds[0].z = 1.36;
break;
}
case 4: // Freeport
{
in_pp->x = -667.86;
in_pp->y = 146.32;
in_pp->z = -54.09;
in_pp->zone_id = 10; // freporte
in_pp->binds[0].zoneId = 9; // freportw
in_pp->binds[0].x = 100.35;
in_pp->binds[0].y = 33.62;
in_pp->binds[0].z = -26.12;
break;
}
case 5: // Dark Elves
{
in_pp->x = -559.71;
in_pp->y = -55.14;
in_pp->z = -40.09;
in_pp->zone_id = 40; // neriaka
in_pp->binds[0].zoneId = 25; // nektulos
in_pp->binds[0].x = -1019.67;
in_pp->binds[0].y = 2309.76;
in_pp->binds[0].z = 1.56;
break;
}
case 6: // Trolls
{
in_pp->x = 3.0;
in_pp->y = 23.0;
in_pp->z = 5.0;
in_pp->zone_id = 52; // gukta
in_pp->binds[0].zoneId = 46; // innothule
in_pp->binds[0].x = -536.88;
in_pp->binds[0].y = -2617.37;
in_pp->binds[0].z = -20.70;
break;
}
case 7: // Ogres
{
in_pp->x = 504.00;
in_pp->y = 208.00;
in_pp->z = 61.59;
in_pp->zone_id = 49; // oggok
in_pp->binds[0].zoneId = 47; // feerrott
in_pp->binds[0].x = 900.70;
in_pp->binds[0].y = 1446.68;
in_pp->binds[0].z = 62.94;
break;
}
case 8: // Dwarfs
{
in_pp->x = 38.00;
in_pp->y = 43.00;
in_pp->z = 2.50;
in_pp->zone_id = 60; // kaladima
in_pp->binds[0].zoneId = 68; // butcher
in_pp->binds[0].x = -212.98;
in_pp->binds[0].y = 2876.49;
in_pp->binds[0].z = -0.90;
break;
}
case 9: // Wood Elves
{
if (in_cc->class_ == WARRIOR) //
{
in_pp->x = 276.99;
in_pp->y = 343.69;
in_pp->z = 75.85;
in_pp->zone_id = 54; // gfaydark
in_pp->binds[0].zoneId = 54; // gfaydark
in_pp->binds[0].x = 218.55;
in_pp->binds[0].y = 204.54;
in_pp->binds[0].z = -1.50;
}
else if (in_cc->class_ == BARD) //
{
in_pp->x = 248.76;
in_pp->y = -235.21;
in_pp->z = 75.85;
in_pp->zone_id = 54; // gfaydark
in_pp->binds[0].zoneId = 54; // gfaydark
in_pp->binds[0].x = 218.55;
in_pp->binds[0].y = 204.54;
in_pp->binds[0].z = -1.50;
}
else if (in_cc->class_ == RANGER) //
{
in_pp->x = 472.72;
in_pp->y = -411.62;
in_pp->z = 116.28;
in_pp->zone_id = 54; // gfaydark
in_pp->binds[0].zoneId = 54; // gfaydark
in_pp->binds[0].x = 218.55;
in_pp->binds[0].y = 204.54;
in_pp->binds[0].z = -1.50;
}
else if (in_cc->class_ == ROGUE) //
{
in_pp->x = -211.92;
in_pp->y = -499.10;
in_pp->z = 159.85;
in_pp->zone_id = 54; // gfaydark
in_pp->binds[0].zoneId = 54; // gfaydark
in_pp->binds[0].x = 218.55;
in_pp->binds[0].y = 204.54;
in_pp->binds[0].z = -1.50;
}
else if (in_cc->class_ == DRUID) //
{
in_pp->x = 224.11;
in_pp->y = -628.38;
in_pp->z = 75.81;
in_pp->zone_id = 54; // gfaydark
in_pp->binds[0].zoneId = 54; // gfaydark
in_pp->binds[0].x = 218.55;
in_pp->binds[0].y = 204.54;
in_pp->binds[0].z = -1.50;
}
else {
in_pp->x = 218.55;
in_pp->y = 204.54;
in_pp->z = -1.50;
in_pp->zone_id = 54; // gfaydark
in_pp->binds[0].zoneId = 54; // gfaydark
in_pp->binds[0].x = 218.55;
in_pp->binds[0].y = 204.54;
in_pp->binds[0].z = -1.50;
}
break;
}
case 10: // High Elves
{
in_pp->x = 94.00;
in_pp->y = -25.00;
in_pp->z = 1.88;
in_pp->zone_id = 61; // felwithea
in_pp->binds[0].zoneId = 54; // gfaydark
in_pp->binds[0].x = -2331.74;
in_pp->binds[0].y = -1999.01;
in_pp->binds[0].z = 27.36;
break;
}
case 11: // Gnomes
{ // Case
if (in_cc->deity == 201) // Deity
{
if (in_cc->class_ == CLERIC) //
{
in_pp->x = -403.04;
in_pp->y = 2091.60;
in_pp->z = -182.06;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
else if (in_cc->class_ == ENCHANTER) //
{
in_pp->x = -587.69;
in_pp->y = 2031.06;
in_pp->z = -182.06;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
else if (in_cc->class_ == MAGICIAN) //
{
in_pp->x = -587.69;
in_pp->y = 2031.06;
in_pp->z = -182.06;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
else if (in_cc->class_ == NECROMANCER) //
{
in_pp->x = -403.04;
in_pp->y = 2091.60;
in_pp->z = -182.06;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
else if (in_cc->class_ == ROGUE) //
{
in_pp->x = -498.21;
in_pp->y = 2067.43;
in_pp->z = -182.06;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
else if (in_cc->class_ == SHADOWKNIGHT) //
{
in_pp->x = -435.80;
in_pp->y = 2139.74;
in_pp->z = -182.06;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
else if (in_cc->class_ == WARRIOR) //
{
in_pp->x = -511.52;
in_pp->y = 2109.26;
in_pp->z = -182.06;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
else if (in_cc->class_ == WIZARD) //
{
in_pp->x = -587.69;
in_pp->y = 2031.06;
in_pp->z = -182.06;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
} // close deity
else
{
if (in_cc->class_ == PALADIN) //
{
in_pp->x = -544.65;
in_pp->y = 1230.97;
in_pp->z = -40.09;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
else if (in_cc->class_ == CLERIC) //
{
in_pp->x = -557.09;
in_pp->y = 1190.74;
in_pp->z = -40.09;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
else if (in_cc->class_ == ENCHANTER) //
{
in_pp->x = -1008.20;
in_pp->y = 1083.57;
in_pp->z = 29.88;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
else if (in_cc->class_ == MAGICIAN) //
{
in_pp->x = -1008.20;
in_pp->y = 1083.57;
in_pp->z = 29.88;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
else if (in_cc->class_ == ROGUE) //
{
in_pp->x = -605.87;
in_pp->y = 1240.76;
in_pp->z = -54.09;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
else if (in_cc->class_ == WARRIOR) //
{
in_pp->x = -436.47;
in_pp->y = 850.33;
in_pp->z = -30.12;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
else if (in_cc->class_ == WIZARD) //
{
in_pp->x = -1008.20;
in_pp->y = 1083.57;
in_pp->z = 29.88;
in_pp->zone_id = 55; // akanon
in_pp->binds[0].zoneId = 56; // steamfont
in_pp->binds[0].x = 556.56;
in_pp->binds[0].y = -1810.46;
in_pp->binds[0].z = -110.03;
}
} // close else
break;
} // close case
case 12: // Iksar
{
if (in_cc->class_ == SHADOWKNIGHT) //
{
in_pp->x = -190.09;
in_pp->y = 1041.38;
in_pp->z = 45.72;
in_pp->zone_id = 106; // cabeast
in_pp->binds[0].zoneId = 78; // field of bone
in_pp->binds[0].x = 3217.32;
in_pp->binds[0].y = -2395.32;
in_pp->binds[0].z = 10.31;
}
else if (in_cc->class_ == BEASTLORD) //
{
in_pp->x = -190.09;
in_pp->y = 1041.38;
in_pp->z = 45.72;
in_pp->zone_id = 106; // cabeast
in_pp->binds[0].zoneId = 78; // field of bone
in_pp->binds[0].x = 3217.32;
in_pp->binds[0].y = -2395.32;
in_pp->binds[0].z = 10.31;
}
else if (in_cc->class_ == SHAMAN) //
{
in_pp->x = -189.26;
in_pp->y = 1030.43;
in_pp->z = 20.75;
in_pp->zone_id = 106; // cabeast
in_pp->binds[0].zoneId = 78; // field of bone
in_pp->binds[0].x = 3217.32;
in_pp->binds[0].y = -2395.32;
in_pp->binds[0].z = 10.31;
}
else if (in_cc->class_ == NECROMANCER) //
{
in_pp->x = 793.48;
in_pp->y = 315.15;
in_pp->z = 76.72;
in_pp->zone_id = 82; // cabwest
in_pp->binds[0].zoneId = 78; // field of bone
in_pp->binds[0].x = 3217.32;
in_pp->binds[0].y = -2395.32;
in_pp->binds[0].z = 10.31;
}
else if (in_cc->class_ == WARRIOR) //
{
in_pp->x = 16.00;
in_pp->y = -477.00;
in_pp->z = 59.72;
in_pp->zone_id = 106; // cabeast
in_pp->binds[0].zoneId = 78; // field of bone
in_pp->binds[0].x = 3217.32;
in_pp->binds[0].y = -2395.32;
in_pp->binds[0].z = 10.31;
}
else if (in_cc->class_ == MONK) //
{
in_pp->x = -42.96;
in_pp->y = 420.47;
in_pp->z = 6.75;
in_pp->zone_id = 106; // cabeast
in_pp->binds[0].zoneId = 78; // field of bone
in_pp->binds[0].x = 3217.32;
in_pp->binds[0].y = -2395.32;
in_pp->binds[0].z = 10.31;
}
else
{
in_pp->zone_id = 82; // cabwest
in_pp->binds[0].zoneId = 78; // fieldofbone
}
break;
}
case 13: // Vahshir
{
if (in_cc->class_ == SHAMAN) //
{
in_pp->x = 101.07;
in_pp->y = 58.30;
in_pp->z = -259.50;
in_pp->zone_id = 155; // sharvahl
in_pp->binds[0].zoneId = 165; // shadeweavers
in_pp->binds[0].x = -3399.17;
in_pp->binds[0].y = -2132.69;
in_pp->binds[0].z = -100.65;
}
else if (in_cc->class_ == BEASTLORD) //
{
in_pp->x = 89.92;
in_pp->y = 275.48;
in_pp->z = -259.52;
in_pp->zone_id = 155; // sharvahl
in_pp->binds[0].zoneId = 165; // shadeweavers
in_pp->binds[0].x = -3399.17;
in_pp->binds[0].y = -2132.69;
in_pp->binds[0].z = -100.65;
}
else if (in_cc->class_ == BARD) //
{
in_pp->x = 554.77;
in_pp->y = -0.80;
in_pp->z = -103.43;
in_pp->zone_id = 155; // sharvahl
in_pp->binds[0].zoneId = 165; // shadeweavers
in_pp->binds[0].x = -3399.17;
in_pp->binds[0].y = -2132.69;
in_pp->binds[0].z = -100.65;
}
else if (in_cc->class_ == WARRIOR) //
{
in_pp->x = -538.20;
in_pp->y = -144.16;
in_pp->z = -259.44;
in_pp->zone_id = 155; // sharvahl
in_pp->binds[0].zoneId = 165; // shadeweavers
in_pp->binds[0].x = -3399.17;
in_pp->binds[0].y = -2132.69;
in_pp->binds[0].z = -100.65;
}
else if (in_cc->class_ == ROGUE) //
{
in_pp->x = -300.53;
in_pp->y = 191.60;
in_pp->z = -247.53;
in_pp->zone_id = 155; // sharvahl
in_pp->binds[0].zoneId = 165; // shadeweavers
in_pp->binds[0].x = -3399.17;
in_pp->binds[0].y = -2132.69;
in_pp->binds[0].z = -100.65;
}
break;
}
default:
if (in_cc->race == 330)
{
in_pp->x = 227.00;
in_pp->y = -1762.43;
in_pp->z = 3.01;
in_pp->zone_id = 50; // rathemtn
in_pp->binds[0].zoneId = 50;
in_pp->binds[0].x = 227.00;
in_pp->binds[0].y = 1762.43;
in_pp->binds[0].z = 3.01;
}
}
}