Aschbourne_PRC8/_module/nss/on_client_enter.nss
Jaysyn904 4f57249663 Updated onClientEnter script
Updated onClientEnter script to remove DMFI DM wands from PCs.  Updated release archive.
2024-10-02 11:36:56 -04:00

232 lines
9.1 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_pc_dicebag") == OBJECT_INVALID )
{
//DelayCommand(1.0, FloatingTextStringOnCreature("DMFI PC Dicebag acquired.", oPC));
GiveDMFI(oPC, "dmfi_pc_dicebag");
}
if ( GetItemPossessedBy(oPC, "dmfi_pc_emote") == OBJECT_INVALID )
{
//DelayCommand(1.0, FloatingTextStringOnCreature("DMFI PC Emote Wand acquired.", oPC));
GiveDMFI(oPC, "dmfi_pc_emote");
}
if ( GetItemPossessedBy(oPC, "dmfi_pc_follow") == OBJECT_INVALID )
{
//DelayCommand(1.0, FloatingTextStringOnCreature("DMFI PC Autofollow Wand acquired.", oPC));
GiveDMFI(oPC, "dmfi_pc_follow");
}
//:: Remove DMFI DM Wands from players
if ( GetItemPossessedBy(oPC, "dmfi_dicebag") != OBJECT_INVALID )
{
// Check if the player is not a DM
if (!GetIsDM(oPC))
{
// Remove the item from the player's inventory
object oItem = GetItemPossessedBy(oPC, "dmfi_dicebag");
DestroyObject(oItem);
}
}
if ( GetItemPossessedBy(oPC, "dmfi_naming") != OBJECT_INVALID )
{
// Check if the player is not a DM
if (!GetIsDM(oPC))
{
// Remove the item from the player's inventory
object oItem = GetItemPossessedBy(oPC, "dmfi_naming");
DestroyObject(oItem);
}
}
if ( GetItemPossessedBy(oPC, "dmfi_emote") != OBJECT_INVALID )
{
// Check if the player is not a DM
if (!GetIsDM(oPC))
{
// Remove the item from the player's inventory
object oItem = GetItemPossessedBy(oPC, "dmfi_emote");
DestroyObject(oItem);
}
}
//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");
}