333 lines
12 KiB
Plaintext
333 lines
12 KiB
Plaintext
#include "prc_inc_racial"
|
|
#include "en2_rankings"
|
|
//#include "en3_prcclsconst"
|
|
#include "prc_inc_racial"
|
|
#include "utl_i_sqluuid"
|
|
|
|
string GetClass(object oPC);
|
|
string GetClassByPos(object oPC, int iPos);
|
|
string GetRace(object oPC);
|
|
int GetRank(int iScore);
|
|
void GetKiller();
|
|
|
|
void main()
|
|
{
|
|
int iLevel;
|
|
int iXP;
|
|
int iGold;
|
|
int iQuest;
|
|
int iScore;
|
|
int iIndex;
|
|
int iPrisoners;
|
|
string sClass;
|
|
string sRace;
|
|
string sMsg;
|
|
string sName;
|
|
string sKiller;
|
|
int iRank;
|
|
string sRank;
|
|
string sNameX;
|
|
string sClassX;
|
|
string sRaceX;
|
|
string sLevelX;
|
|
string sScoreX;
|
|
string sRankX;
|
|
string sRankY;
|
|
string sKillerX;
|
|
string sKillerY;
|
|
string sCampaign;
|
|
|
|
object oPC;
|
|
|
|
oPC = GetEnteringObject();
|
|
if (GetIsPC(oPC))
|
|
{
|
|
|
|
sCampaign = "Endless Nights IV";
|
|
if (GetCampaignInt(sCampaign,"MP") == 1)
|
|
sCampaign = "MP_Endless Nights IV";
|
|
//AssignCommand(oPC,GetKiller());
|
|
iLevel = GetLevelByPosition(1,oPC) +
|
|
GetLevelByPosition(2,oPC) +
|
|
GetLevelByPosition(3,oPC);
|
|
iXP = GetXP(oPC);
|
|
iGold = GetGold(oPC);
|
|
iPrisoners = GetLocalInt(oPC,"Prisoners");
|
|
iScore = iXP;
|
|
iScore = iScore + (iPrisoners * 2500);
|
|
sClass = GetClass(oPC);
|
|
//string sClassName = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass)));
|
|
sRace = GetRace(oPC);
|
|
if (sRace == "")
|
|
sRace = GetStringByStrRef(StringToInt(Get2DAString("racialtypes", "Name", GetRacialType(oPC))));
|
|
sName = GetName(oPC);
|
|
iRank = GetRank(iScore);
|
|
sRank = IntToString(iRank);
|
|
sKiller = GetLocalString(oPC,"Killer");
|
|
if (sKiller == "")
|
|
sKiller = "Unknown";
|
|
//SendMessageToPC(oPC,"Score = " + IntToString(iScore));
|
|
iQuest = SQLocalsUUID_GetInt(oPC,"OverallQuest");
|
|
if (iQuest == 999)
|
|
{
|
|
iScore = iScore + 100000;
|
|
sName = sName + " (V)";
|
|
} else {
|
|
iQuest = iQuest - 100;
|
|
if (iQuest > 0)
|
|
iScore = iScore + 1000 * iQuest;
|
|
}
|
|
|
|
if (GetLocalInt(oPC,"PCHardcore") == 1)
|
|
{
|
|
sName = sName + " (H)";
|
|
iScore = iScore * 2;
|
|
}
|
|
if (GetLocalInt(oPC,"PCHardCorePNP") == 1)
|
|
{
|
|
sName = sName + " (PnP)";
|
|
}
|
|
|
|
if (GetLocalInt(oPC,"PCHardCoreSpecial") == 1)
|
|
{
|
|
sName = sName + " (S)";
|
|
}
|
|
//SendMessageToPC(oPC,"Score = " + IntToString(iScore));
|
|
|
|
if (iRank>0)
|
|
{
|
|
iIndex = 19;
|
|
while (iIndex>=iRank)
|
|
{
|
|
sRankX = IntToString(iIndex);
|
|
sRankY = IntToString(iIndex+1);
|
|
|
|
sNameX = GetCampaignString(sCampaign,"Name" + sRankX);
|
|
sClassX = GetCampaignString(sCampaign,"Class" + sRankX);
|
|
sRaceX = GetCampaignString(sCampaign,"Race" + sRankX);
|
|
sLevelX = GetCampaignString(sCampaign,"Level" + sRankX);
|
|
sScoreX = GetCampaignString(sCampaign,"Score" + sRankX);
|
|
sKillerX= GetCampaignString(sCampaign,"Killer" + sRankX);
|
|
|
|
SetCampaignString(sCampaign,"Name" + sRankY,sNameX);
|
|
|
|
SetCampaignString(sCampaign,"Class" + sRankY,sClassX);
|
|
SetCampaignString(sCampaign,"Race" + sRankY,sRaceX);
|
|
SetCampaignString(sCampaign,"Level" + sRankY,sLevelX);
|
|
SetCampaignString(sCampaign,"Score" + sRankY,sScoreX);
|
|
SetCampaignString(sCampaign,"Killer" + sRankY,sKillerX);
|
|
|
|
iIndex--;
|
|
}
|
|
|
|
SetCampaignString(sCampaign,"Name" + sRank,sName);
|
|
SetCampaignString(sCampaign,"Class" + sRank,sClass);
|
|
SetCampaignString(sCampaign,"Race" + sRank,sRace);
|
|
SetCampaignString(sCampaign,"Level" + sRank,IntToString(iLevel));
|
|
SetCampaignString(sCampaign,"Score" + sRank,IntToString(iScore));
|
|
SetCampaignString(sCampaign,"Killer" + sRank,sKiller);
|
|
}
|
|
|
|
}
|
|
DisplayRankings(oPC);
|
|
if (iRank>0)
|
|
SendMessageToPC(oPC,"Congragulations on achieving rank " + sRank);
|
|
}
|
|
|
|
int GetRank(int iScore)
|
|
{
|
|
int iIndex;
|
|
int iRankScore;
|
|
string sRank;
|
|
string sCampaign;
|
|
int iPlace;
|
|
|
|
iIndex = 20;
|
|
iPlace = 0;
|
|
|
|
sCampaign = "Endless Nights IV";
|
|
if (GetCampaignInt(sCampaign,"MP") == 1)
|
|
sCampaign = "MP_Endless Nights IV";
|
|
|
|
while (iIndex > 0)
|
|
{
|
|
sRank = IntToString(iIndex);
|
|
iRankScore= StringToInt(GetCampaignString(sCampaign,"Score" + sRank));
|
|
if (iScore>=iRankScore)
|
|
iPlace = iIndex;
|
|
iIndex--;
|
|
}
|
|
return iPlace;
|
|
}
|
|
|
|
string GetClass(object oPC)
|
|
{
|
|
string sClass;
|
|
|
|
sClass = GetClassByPos(oPC,1);
|
|
if (GetLevelByPosition(2,oPC) > 0)
|
|
sClass = sClass + "/" + GetClassByPos(oPC,2);
|
|
if (GetLevelByPosition(3,oPC) > 0)
|
|
sClass = sClass + "/" + GetClassByPos(oPC,3);
|
|
|
|
return sClass;
|
|
}
|
|
|
|
string GetClassByPos(object oPC, int iPos)
|
|
{
|
|
string sClass;
|
|
|
|
sClass = "Other";
|
|
|
|
switch (GetClassByPosition(iPos,oPC))
|
|
{
|
|
case CLASS_TYPE_BARBARIAN: sClass = "Barbarian"; break;
|
|
case CLASS_TYPE_FIGHTER: sClass = "Fighter"; break;
|
|
case CLASS_TYPE_RANGER: sClass = "Ranger"; break;
|
|
case CLASS_TYPE_PALADIN: sClass = "Paladin"; break;
|
|
case CLASS_TYPE_ROGUE: sClass = "Rogue"; break;
|
|
case CLASS_TYPE_BARD: sClass = "Bard"; break;
|
|
case CLASS_TYPE_MONK: sClass = "Monk"; break;
|
|
case CLASS_TYPE_CLERIC: sClass = "Cleric"; break;
|
|
case CLASS_TYPE_DRUID: sClass = "Druid"; break;
|
|
case CLASS_TYPE_WIZARD: sClass = "Wizard"; break;
|
|
case CLASS_TYPE_SORCERER: sClass = "Sorcerer"; break;
|
|
case CLASS_TYPE_DRAGONDISCIPLE: sClass = "Dragon Disciple"; break;
|
|
case CLASS_TYPE_DWARVENDEFENDER: sClass = "Dwarven Defender"; break;
|
|
case CLASS_TYPE_PALEMASTER: sClass = "Pale Master"; break;
|
|
case CLASS_TYPE_SHIFTER: sClass = "Shifter"; break;
|
|
case CLASS_TYPE_WEAPON_MASTER: sClass = "Weaponmaster"; break;
|
|
case CLASS_TYPE_DIVINECHAMPION: sClass = "Champion of Torm"; break;
|
|
case CLASS_TYPE_BLACKGUARD: sClass = "Blackguard"; break;
|
|
case CLASS_TYPE_ARCANE_ARCHER: sClass = "Arcane Archer"; break;
|
|
case CLASS_TYPE_ASSASSIN: sClass = "Assassin"; break;
|
|
case CLASS_TYPE_HARPER: sClass = "Harper"; break;
|
|
case CLASS_TYPE_SHADOWDANCER: sClass = "Shadowdancer"; break;
|
|
|
|
//case CLASS_TYPE_ABJURER: sClass = "Abjurer"; break;
|
|
//case CLASS_TYPE_ARCANE_ASSASSIN: sClass = "Arcane Assassin"; break;
|
|
//case CLASS_TYPE_ARCANE_SWORDSMAN: sClass = "Arcane Swordsman"; break;
|
|
//case CLASS_TYPE_ARCANE_THEOLOGIST: sClass = "Arcane Theologist"; break;
|
|
//case CLASS_TYPE_ARCHER: sClass = "Archer"; break;
|
|
case CLASS_TYPE_ARCHMAGE: sClass = "Archmage"; break;
|
|
case CLASS_TYPE_ARCTRICK: sClass = "Arcane Trickster"; break;
|
|
//case CLASS_TYPE_ASTRAL_ADEPT: sClass = "Astral Adept"; break;
|
|
//case CLASS_TYPE_AURAMANCER: sClass = "Auramancer"; break;
|
|
//case CLASS_TYPE_BATTLEMAGE: sClass = "Battlemage"; break;
|
|
|
|
case CLASS_TYPE_BATTLERAGER: sClass = "Battlerager"; break;
|
|
case CLASS_TYPE_BLADESINGER: sClass = "Bladesinger"; break;
|
|
case CLASS_TYPE_BLARCHER: sClass = "Blarcher"; break;
|
|
case CLASS_TYPE_BONDED_SUMMONNER: sClass = "Bonded Summoner"; break;
|
|
//case CLASS_TYPE_BRUTAL_SAVAGE: sClass = "Brutal Savage"; break;
|
|
//case CLASS_TYPE_CRYSTAL_MASTER: sClass = "Crystal Master"; break;
|
|
//case CLASS_TYPE_DEMON_MASTER: sClass = "Demon Master"; break;
|
|
case CLASS_TYPE_DISC_BAALZEBUL: sClass = "Disciple of Baalzebul"; break;
|
|
//case CLASS_TYPE_DISCIPLE_OF_DARKNESS: sClass = "Disciple of Darkness"; break;
|
|
case CLASS_TYPE_DISCIPLE_OF_MEPH: sClass = "Disciple of Mephistopheles"; break;
|
|
|
|
case CLASS_TYPE_DISPATER: sClass = "Disciple of Dispater"; break;
|
|
//case CLASS_TYPE_DIVESA: sClass = "Divine Summoner Acid"; break;
|
|
//case CLASS_TYPE_DIVESC: sClass = "Divine Summoner Cold"; break;
|
|
//case CLASS_TYPE_DIVESE: sClass = "Divine Summoner Electricity"; break;
|
|
//case CLASS_TYPE_DIVESF: sClass = "Divine Summoner Fire"; break;
|
|
//case CLASS_TYPE_ES_ACID: sClass = "Elemental Summoner Acid"; break;
|
|
//case CLASS_TYPE_ES_COLD: sClass = "Elemental Summoner Cold"; break;
|
|
//case CLASS_TYPE_ES_ELEC: sClass = "Elemental Summoner Electricity"; break;
|
|
//case CLASS_TYPE_ES_FIRE: sClass = "Elemental Summoner Fire"; break;
|
|
//case CLASS_TYPE_DRAGON_SLAYER: sClass = "Dragonslayer"; break;
|
|
|
|
case CLASS_TYPE_DRUNKEN_MASTER: sClass = "Drunken Master"; break;
|
|
case CLASS_TYPE_DUELIST: sClass = "Duelist"; break;
|
|
case CLASS_TYPE_ELDRITCH_KNIGHT: sClass = "Eldritch Knight"; break;
|
|
case CLASS_TYPE_FISTRAZIEL: sClass = "Fist of Raziel"; break;
|
|
case CLASS_TYPE_FOE_HUNTER: sClass = "Foe Hunter"; break;
|
|
case CLASS_TYPE_FRE_BERSERKER: sClass = "Frenzied Berserker"; break;
|
|
//case CLASS_TYPE_GEOMANCER: sClass = "Geomancer"; break;
|
|
//case CLASS_TYPE_GREY_WANDERER: sClass = "Grey Wanderer"; break;
|
|
case CLASS_TYPE_HARPERMAGE: sClass = "Harper Mage"; break;
|
|
case CLASS_TYPE_HATHRAN: sClass = "Hathran"; break;
|
|
|
|
case CLASS_TYPE_HEALER: sClass = "Healer"; break;
|
|
case CLASS_TYPE_HEARTWARDER: sClass = "Heartwarder"; break;
|
|
case CLASS_TYPE_HENSHIN_MYSTIC: sClass = "Henshin Mystic"; break;
|
|
case CLASS_TYPE_HEXTOR: sClass = "Hextor"; break;
|
|
case CLASS_TYPE_HIEROPHANT: sClass = "Hierophant"; break;
|
|
//case CLASS_TYPE_HOLY_CRUSADER: sClass = "Holy Crusader"; break;
|
|
case CLASS_TYPE_HOSPITALER: sClass = "Hospitaler"; break;
|
|
case CLASS_TYPE_IAIJUTSU_MASTER: sClass = "Iaijutsu Master"; break;
|
|
case CLASS_TYPE_KNIGHT_CHALICE: sClass = "Knight of the Chalice"; break;
|
|
case CLASS_TYPE_LEGENDARY_DREADNOUGHT: sClass = "Legendary Dreadnought"; break;
|
|
|
|
case CLASS_TYPE_LICH: sClass = "Lich"; break;
|
|
case CLASS_TYPE_MAGEKILLER: sClass = "Magekiller"; break;
|
|
//case CLASS_TYPE_MANATARMS: sClass = "Man at Arms"; break;
|
|
case CLASS_TYPE_MASTER_HARPER: sClass = "Master Harper"; break;
|
|
case CLASS_TYPE_MASTER_OF_SHROUDS: sClass = "Master of Shrouds"; break;
|
|
case CLASS_TYPE_MYSTIC_THEURGE: sClass = "Mystic Theurge"; break;
|
|
//case CLASS_TYPE_MYSTICAL_KNIGHT: sClass = "Mystical Knight"; break;
|
|
//case CLASS_TYPE_NATURALIST: sClass = "Naturalist"; break;
|
|
case CLASS_TYPE_NINJA_SPY: sClass = "Ninja Spy"; break;
|
|
case CLASS_TYPE_OCULAR: sClass = "Ocular Adept"; break;
|
|
|
|
case CLASS_TYPE_OOZEMASTER: sClass = "Oozemaster"; break;
|
|
case CLASS_TYPE_ORCUS: sClass = "Disciple of Orcus"; break;
|
|
case CLASS_TYPE_PEERLESS: sClass = "Peerless Archer"; break;
|
|
case CLASS_TYPE_PNP_SHIFTER: sClass = "Shifter (PnP)"; break;
|
|
//case CLASS_TYPE_PROPHET: sClass = "Prophet"; break;
|
|
//case CLASS_TYPE_PROTECTOR: sClass = "Protector"; break;
|
|
//case CLASS_TYPE_PUPPET_MASTER: sClass = "Puppet Master"; break;
|
|
case CLASS_TYPE_RED_AVENGER: sClass = "Red Avenger"; break;
|
|
case CLASS_TYPE_SAMURAI: sClass = "Samurai"; break;
|
|
case CLASS_TYPE_SCOUT: sClass = "Scout"; break;
|
|
|
|
case CLASS_TYPE_SHADOWLORD: sClass = "Shadowlord"; break;
|
|
case CLASS_TYPE_SHAMAN: sClass = "Shaman"; break;
|
|
case CLASS_TYPE_SOLDIER_OF_LIGHT: sClass = "Soldier of Light"; break;
|
|
case CLASS_TYPE_SPELLSWORD: sClass = "Spellsword"; break;
|
|
case CLASS_TYPE_STORMLORD: sClass = "Stormlord"; break;
|
|
//case CLASS_TYPE_SUMMONER: sClass = "Summoner"; break;
|
|
case CLASS_TYPE_SWASHBUCKLER: sClass = "Swashbuckler"; break;
|
|
case CLASS_TYPE_TEMPEST: sClass = "Tempest"; break;
|
|
case CLASS_TYPE_TRUENECRO: sClass = "True Necromancer"; break;
|
|
//case CLASS_TYPE_VAMPIRE: sClass = "Vampire"; break;
|
|
|
|
case CLASS_TYPE_VASSAL: sClass = "Vassal of Bahamut"; break;
|
|
//case CLASS_TYPE_VIGILANT: sClass = "Vigilant"; break;
|
|
//case CLASS_TYPE_WARLORD: sClass = "Warlord"; break;
|
|
case CLASS_TYPE_WARPRIEST: sClass = "Warpriest"; break;
|
|
//case CLASS_TYPE_WITCH_DOCTOR: sClass = "Witch doctor"; break;
|
|
//case CLASS_TYPE_XENOWIZARD: sClass = "Xenowizard"; break;
|
|
|
|
}
|
|
return sClass;
|
|
}
|
|
|
|
string GetRace(object oPC)
|
|
{
|
|
string sRace;
|
|
|
|
sRace = GetSubRace(oPC);
|
|
|
|
if (sRace == "")
|
|
{
|
|
switch (MyPRCGetRacialType(oPC))
|
|
{
|
|
case RACIAL_TYPE_HUMAN: sRace = "Human"; break;
|
|
case RACIAL_TYPE_ELF: sRace = "Elf"; break;
|
|
case RACIAL_TYPE_DWARF: sRace = "Dwarf"; break;
|
|
case RACIAL_TYPE_HALFELF: sRace = "Half-Elf"; break;
|
|
case RACIAL_TYPE_HALFORC: sRace = "Half-Orc"; break;
|
|
case RACIAL_TYPE_HALFLING: sRace = "Halfling"; break;
|
|
case RACIAL_TYPE_GNOME: sRace = "Gnome"; break;
|
|
}
|
|
}
|
|
|
|
return sRace;
|
|
}
|
|
|
|
void GetKiller()
|
|
{
|
|
SetLocalString(OBJECT_SELF,"Killer",GetName(GetLastKiller()));
|
|
}
|