Aschbourne_PRC8/_module/nss/on_client_enter.nss
Jaysyn904 903f023230 Major update
Created top hak for crafting dialog.  Moved Bioware creature abilities to top hak.  Fixed DMFI wand handouts.  Added DMFI language handouts.  Added CCOH 6.  Disabled PC corpse system.  Modified new player startup system.  Full compile.  Updated release archive.
2024-09-17 13:24:57 -04:00

201 lines
8.2 KiB
Plaintext

// Goes in the OnClientEnter event - Example for v1.3
#include "se_new_player"
#include "prc_inc_racial"
#include "prc_class_const"
void GiveDMFI(object oPC, string sResRef)
{
//note: for DMFI items, tag and resref are identical
object oItem = GetItemPossessedBy(oPC, sResRef);
if (!GetIsObjectValid(oItem))
CreateItemOnObject(sResRef, oPC);
}
void main()
{
object oMod = GetModule();
ExecuteScript("_cb_client_enter", oMod);
object oPC = GetEnteringObject();
AddJournalQuestEntry("JRNL_XPCHART", 1, oPC, FALSE, FALSE, FALSE);
AddJournalQuestEntry("JRNL_LA_BUYOFF", 1, oPC, FALSE, FALSE, FALSE);
//:: Abyssal
if (((GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL && GetAlignmentLawChaos(oPC) == ALIGNMENT_CHAOTIC && (MyPRCGetRacialType(oPC) == RACIAL_TYPE_OUTSIDER)
|| GetLevelByClass(CLASS_TYPE_CLERIC, oPC) != 0 || GetLevelByClass(CLASS_TYPE_ARCHIVIST, oPC) != 0 || GetLevelByClass(CLASS_TYPE_SOHEI, oPC) != 0
|| GetLevelByClass(CLASS_TYPE_FAVOURED_SOUL, oPC) != 0 || GetLevelByClass(CLASS_TYPE_WARLOCK, oPC) != 0 || GetLevelByClass(CLASS_TYPE_BLACKGUARD, oPC) != 0))
|| (GetLevelByClass(CLASS_TYPE_BLIGHTLORD, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_ORCUS, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_THRALL_OF_GRAZZT_A, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_ACOLYTE, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_PRC_EYE_OF_GRUUMSH, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_TENEBROUS_APOSTATE, oPC) != 0))
{
GiveDMFI(oPC, "hlslang_11");
SendMessageToPC(oPC, "Abyssal language acquired.");
}
//:: Celestial
if ((GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD && (MyPRCGetRacialType(oPC) == RACIAL_TYPE_OUTSIDER
|| GetLevelByClass(CLASS_TYPE_CLERIC, oPC) != 0 || GetLevelByClass(CLASS_TYPE_ARCHIVIST, oPC) != 0 || GetLevelByClass(CLASS_TYPE_SOHEI, oPC) != 0 || GetLevelByClass(CLASS_TYPE_HEALER, oPC) != 0
|| GetLevelByClass(CLASS_TYPE_FAVOURED_SOUL, oPC) != 0 ))
|| (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_HEARTWARDER, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_SOLDIER_OF_LIGHT, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_FISTRAZIEL, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_VASSAL, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_SACREDFIST, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_MIGHTY_CONTENDER_KORD, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_MORNINGLORD, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_SLAYER_OF_DOMIEL, oPC) != 0))
{
GiveDMFI(oPC, "hlslang_10");
SendMessageToPC(oPC, "Celestial language acquired.");
}
//::Infernal
if (((GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL && GetAlignmentLawChaos(oPC) == ALIGNMENT_LAWFUL && (MyPRCGetRacialType(oPC) == RACIAL_TYPE_OUTSIDER)
|| GetLevelByClass(CLASS_TYPE_CLERIC, oPC) != 0 || GetLevelByClass(CLASS_TYPE_ARCHIVIST, oPC) != 0 || GetLevelByClass(CLASS_TYPE_SOHEI, oPC) != 0
|| GetLevelByClass(CLASS_TYPE_FAVOURED_SOUL, oPC) != 0 || GetLevelByClass(CLASS_TYPE_WARLOCK, oPC) != 0 || GetLevelByClass(CLASS_TYPE_BLACKGUARD, oPC) != 0))
|| (GetLevelByClass(CLASS_TYPE_OCULAR, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_HEXTOR, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_DISPATER, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_DISC_BAALZEBUL, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_MEPH, oPC) != 0)
|| (GetLevelByClass(CLASS_TYPE_DIABOLIST, oPC) != 0))
{
GiveDMFI(oPC, "hlslang_12");
SendMessageToPC(oPC, "Infernal language acquired.");
}
//:: Animal
if ((GetLevelByClass(CLASS_TYPE_DRUID, oPC) != 0) || (GetLevelByClass(CLASS_TYPE_RANGER, oPC) != 0) ||
(GetLevelByClass(CLASS_TYPE_MONK, oPC) > 16) || (GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oPC) != 0))
{
GiveDMFI(oPC, "hlslang_8");
SendMessageToPC(oPC, "Animal language acquired.");
}
//:: Draconic
if ((MyPRCGetRacialType(oPC) == RACIAL_TYPE_DRAGON) || (GetRacialType(oPC) == RACIAL_TYPE_REDSPAWN_ARCANISS) || (GetLevelByClass(CLASS_TYPE_DRAGONDISCIPLE, oPC)!=0) ||
(GetLevelByClass(CLASS_TYPE_DRAGON_DISCIPLE, oPC)!=0) || (GetLevelByClass(CLASS_TYPE_DRAGONFIRE_ADEPT, oPC)!=0) || (GetLevelByClass(CLASS_TYPE_DRAGON_SHAMAN, oPC)!=0) ||
(GetLevelByClass(CLASS_TYPE_DRAGONSONG_LYRIST, oPC)!=0) || (GetLevelByClass(CLASS_TYPE_INITIATE_DRACONIC, oPC)!=0) || (GetLevelByClass(CLASS_TYPE_HANDOTWM, oPC)!=0) ||
(GetLevelByClass(CLASS_TYPE_DRAGON_DEVOTEE, oPC)!=0) || (GetLevelByClass(CLASS_TYPE_DRAGONHEART_MAGE, oPC)!=0) || (GetLevelByClass(CLASS_TYPE_DIAMOND_DRAGON, oPC)!=0) ||
(GetLevelByClass(CLASS_TYPE_VASSAL, oPC)!=0) || (GetLevelByClass(CLASS_TYPE_SWIFT_WING, oPC)!=0) || (GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oPC)!=0))
{
GiveDMFI(oPC, "hlslang_7");
SendMessageToPC(oPC, "Draconic language acquired.");
}
//:: Drow
if (GetRacialType(oPC) == RACIAL_TYPE_DROW_MALE || GetRacialType(oPC) == RACIAL_TYPE_DROW_FEMALE || GetRacialType(oPC) == RACIAL_TYPE_HALFDROW)
{
GiveDMFI(oPC, "hlslang_13");
SendMessageToPC(oPC, "Drow language acquired.");
}
//:: Dwarven
if (MyPRCGetRacialType(oPC) == RACIAL_TYPE_DWARF)
{
GiveDMFI(oPC, "hlslang_4");
SendMessageToPC(oPC, "Dwarven language acquired.");
}
//:: Elven
if ((MyPRCGetRacialType(oPC) == RACIAL_TYPE_ELF) || (MyPRCGetRacialType(oPC) == RACIAL_TYPE_HALFELF))
{
GiveDMFI(oPC, "hlslang_1");
SendMessageToPC(oPC, "Elven language acquired.");
}
//:: Gnome
if (MyPRCGetRacialType(oPC) == RACIAL_TYPE_GNOME)
{
GiveDMFI(oPC, "hlslang_2");
SendMessageToPC(oPC, "Gnomish language acquired.");
}
//:: Goblin
if ((GetRacialType(oPC) == RACIAL_TYPE_BLUE_GOBLIN) || (GetRacialType(oPC) == RACIAL_TYPE_GOBLIN) ||
(GetRacialType(oPC) == RACIAL_TYPE_SNOW_GOBLIN) || (GetRacialType(oPC) == RACIAL_TYPE_HOBGOBLIN) ||
(GetRacialType(oPC) == RACIAL_TYPE_SUNSCORCH_HOBGOBLIN))
{
GiveDMFI(oPC, "hlslang_6");
SendMessageToPC(oPC, "Goblin language acquired.");
}
//:: Halfling
if (MyPRCGetRacialType(oPC) == RACIAL_TYPE_HALFLING)
{
GiveDMFI(oPC, "hlslang_3");
SendMessageToPC(oPC, "Halfling language acquired.");
}
//:: Orc
if (MyPRCGetRacialType(oPC) == RACIAL_TYPE_HALFORC || GetRacialType(oPC) == RACIAL_TYPE_FROSTBLOOD_ORC || GetRacialType(oPC) == RACIAL_TYPE_OROG ||
GetRacialType(oPC) == RACIAL_TYPE_GRAYORC || GetRacialType(oPC) == RACIAL_TYPE_ORC)
{
GiveDMFI(oPC, "hlslang_5");
SendMessageToPC(oPC, "Orc language acquired.");
}
//:: Thieves' Cant
if ((GetLevelByClass(CLASS_TYPE_ROGUE, oPC)!=0) ||
(GetLevelByClass(CLASS_TYPE_SHADOW_THIEF_AMN, oPC)!=0) ||
(GetLevelByClass(CLASS_TYPE_SHADOWLORD, oPC)!=0) ||
(GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oPC)!=0) ||
(GetLevelByClass(CLASS_TYPE_SHADOWDANCER, oPC)!=0))
{
GiveDMFI(oPC, "hlslang_9");
SendMessageToPC(oPC, "Thieves' Cant language acquired.");
}
//:: New player setup
if(GetIsPC(oPC)&& GetIsObjectValid(oPC))
{
SirElrics_SimplePlayerSetUp(oPC);
}
//:: Give DMFI Wands if player doesn't have them
if ( GetItemPossessedBy(oPC, "dmfi_dicebag") == OBJECT_INVALID )
{
DelayCommand(1.0, FloatingTextStringOnCreature("DMFI Dicebag acquired.", oPC));
GiveDMFI(oPC, "dmfi_dicebag");
}
if ( GetItemPossessedBy(oPC, "dmfi_emote") == OBJECT_INVALID )
{
DelayCommand(1.0, FloatingTextStringOnCreature("DMFI Emote Wand acquired.", oPC));
GiveDMFI(oPC, "dmfi_emote");
}
if ( GetItemPossessedBy(oPC, "dmfi_naming") == OBJECT_INVALID )
{
DelayCommand(1.0, FloatingTextStringOnCreature("DMFI Naming acquired.", oPC));
GiveDMFI(oPC, "dmfi_naming");
}
//Test to see if PC has a skill book.. if not, then create one.
if (GetItemPossessedBy(oPC,"NoDrop_SkillLogBook")==OBJECT_INVALID)
{
CreateItemOnObject("skilllogbook",oPC,1);
}
//Delete persistent hooks which need to be 'gone' to begin with
//**this added due to HoTU effects on servervault characters
DeleteLocalInt(oPC,"iSkillGain");
DeleteLocalInt(oPC,"iPCUsedMap");
DeleteLocalInt(oPC,"iAmFollowingMap");
DeleteLocalInt(oPC,"iAmDiggingMap");
DeleteLocalInt(oPC,"iAmFishing");
DeleteLocalInt(oPC,"iCancelFishing");
DeleteLocalInt(oPC,"iAmInField");
DeleteLocalInt(oPC,"iAmInWaterField");
DeleteLocalInt(oPC,"iAmInCommodityArea");
DeleteLocalString(oPC,"sKillMe");
DeleteLocalInt(oPC,"iAmDigging");
DeleteLocalLocation(oPC,"lIWasHere");
}