EN6_PRC8/_module/nss/en6_bartender_go.nss
Jaysyn904 a6f6db7303 Initial commit
Initial commit.  Updated release archive.
2024-06-13 15:08:33 -04:00

132 lines
4.4 KiB
Plaintext

#include "en5_treasure"
string GetRandomName(object oHenchman);
void EquipHenchman(object oHenchman);
void main()
{
object oHenchman;
object oPC;
string sName;
string sTag;
string sPostTag;
int iClass;
int iGold;
int iHench;
oPC=GetPCSpeaker();
iGold=GetLocalInt(OBJECT_SELF,"Cost");
TakeGoldFromCreature(iGold,oPC,TRUE);
sTag=GetLocalString(OBJECT_SELF,"HenchTag");
iHench=GetLocalInt(oPC,"HenchmenBought");
iHench++;
SetLocalInt(oPC,"HenchmenBought",iHench);
sPostTag=sTag + "_P" + IntToString(GetLocalInt(oPC,"PCNumber")) + "_" + IntToString(iHench);
SetLocalString(oPC,"Henchman" + IntToString(iHench),sPostTag);
oHenchman=CreateObject(OBJECT_TYPE_CREATURE,sTag,GetLocation(oPC),FALSE,sPostTag);
iClass=GetLocalInt(OBJECT_SELF,"HenchmanClass");
SetLocalInt(oHenchman,"HenchmanClass",iClass);
if (iClass == EN5_CLASS_BLACKGUARD || iClass == EN5_CLASS_ASSASSIN || iClass == EN5_CLASS_PALEMASTER)
AdjustAlignment(oPC,ALIGNMENT_EVIL,30);
if (iClass == EN5_CLASS_PALADIN || iClass == EN5_CLASS_DIVINECHAMPION)
AdjustAlignment(oPC,ALIGNMENT_GOOD,30);
ChangeFaction(oHenchman,GetObjectByTag("en6_defender"));
sName=GetLocalString(OBJECT_SELF,"HenchName");
if (sName=="RANDOM")
sName=GetRandomName(oHenchman);
SetName(oHenchman,sName);
if ((GetHitDice(oHenchman) - 1) < GetHitDice(oPC))
LevelHenchman(oHenchman,GetHitDice(oPC)-GetHitDice(oHenchman)+1);
EquipHenchman(oHenchman);
AddHenchman(oPC, oHenchman);
DelayCommand(2.0, AssignCommand(oHenchman,ActionForceFollowObject(oPC,3.0)));
//Lootable henchmen means they lose inventory when rez'd.
//DelayCommand(2.0,SetLootable(oHenchman,TRUE));
SetLocalInt(oHenchman,"Henchman",1);
SetLocalString(oHenchman,"Master",GetName(oPC));
iGold=GetLocalInt(oPC,"RestGold");
if (iGold==0)
SetLocalInt(oPC,"RestGold",GetGold(oPC));
}
string GetRandomName(object oHenchman)
{
string sFirst;
string sLast;
string sName;
int iRace;
int iGender;
int iFirst;
int iLast;
int iRandom;
iRace=GetRacialType(oHenchman);
iGender=GetGender(oHenchman);
if (iGender==GENDER_MALE)
{
switch (iRace)
{
case RACIAL_TYPE_DWARF: iFirst=NAME_FIRST_DWARF_MALE; iLast=NAME_LAST_DWARF; break;
case RACIAL_TYPE_ELF: iFirst=NAME_FIRST_ELF_MALE; iLast=NAME_LAST_ELF; break;
case RACIAL_TYPE_GNOME: iFirst=NAME_FIRST_GNOME_MALE; iLast=NAME_LAST_GNOME; break;
case RACIAL_TYPE_HALFLING: iFirst=NAME_FIRST_HALFLING_MALE; iLast=NAME_LAST_HALFLING; break;
case RACIAL_TYPE_HUMAN: iFirst=NAME_FIRST_HUMAN_MALE; iLast=NAME_LAST_HUMAN; break;
case RACIAL_TYPE_HALFORC: iFirst=NAME_FIRST_HALFORC_MALE; iLast=NAME_LAST_HALFORC; break;
}
} else {
switch (iRace)
{
case RACIAL_TYPE_DWARF: iFirst=NAME_FIRST_DWARF_FEMALE; iLast=NAME_LAST_DWARF; break;
case RACIAL_TYPE_ELF: iFirst=NAME_FIRST_ELF_FEMALE; iLast=NAME_LAST_ELF; break;
case RACIAL_TYPE_GNOME: iFirst=NAME_FIRST_GNOME_FEMALE; iLast=NAME_LAST_GNOME; break;
case RACIAL_TYPE_HALFLING: iFirst=NAME_FIRST_HALFLING_FEMALE; iLast=NAME_LAST_HALFLING; break;
case RACIAL_TYPE_HUMAN: iFirst=NAME_FIRST_HUMAN_FEMALE; iLast=NAME_LAST_HUMAN; break;
case RACIAL_TYPE_HALFORC: iFirst=NAME_FIRST_HALFORC_FEMALE; iLast=NAME_LAST_HALFORC; break;
}
}
sFirst=RandomName(iFirst);
sLast=RandomName(iLast);
sName=sFirst + " " + sLast;
return sName;
}
void EquipHenchman(object oHenchman)
{
object oObject;
string sTag;
if (GetLevelByClass(CLASS_TYPE_ROGUE,oHenchman)>0 || GetLevelByClass(CLASS_TYPE_RANGER,oHenchman)>0)
oObject = CreateItemOnObject("en5_start_rogue",oHenchman);
else if (GetLevelByClass(CLASS_TYPE_SORCERER,oHenchman)>0 || GetLevelByClass(CLASS_TYPE_WIZARD,oHenchman)>0)
oObject = CreateItemOnObject("en5_start_sorc",oHenchman);
else if (GetLevelByClass(CLASS_TYPE_MONK,oHenchman)>0)
oObject = CreateItemOnObject("en5_start_monk",oHenchman);
else
oObject = CreateItemOnObject("en5_start_chain",oHenchman);
//Equip twice to try and defeat the PRC in a duel of equipping stuff
DelayCommand(0.1,AssignCommand(oHenchman,ClearAllActions()));
DelayCommand(0.1,AssignCommand(oHenchman,ActionEquipItem(oObject,INVENTORY_SLOT_CHEST)));
DelayCommand(1.5,AssignCommand(oHenchman,ActionEquipItem(oObject,INVENTORY_SLOT_CHEST)));
GetWeaponType(oHenchman);
sTag = "en3_" + GetWeaponTag(oHenchman);
oObject = CreateItemOnObject(sTag,oHenchman);
DelayCommand(1.0,AssignCommand(oHenchman,ActionEquipItem(oObject,INVENTORY_SLOT_RIGHTHAND)));
}