Fixed CCOH, Fixed starting GP, Fixed DMFI languages, Fix cep weapon appearances, Fixed new player start up system. Added PC deleter. Added ACP 4.1. Full compile. Updated release archive.
182 lines
7.6 KiB
Plaintext
182 lines
7.6 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 given.");
|
|
}
|
|
|
|
//:: 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 given.");
|
|
}
|
|
|
|
//::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 given.");
|
|
}
|
|
|
|
//:: 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 given.");
|
|
}
|
|
|
|
//:: 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 given.");
|
|
}
|
|
|
|
//:: 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 given.");
|
|
}
|
|
|
|
//:: Dwarven
|
|
if (MyPRCGetRacialType(oPC) == RACIAL_TYPE_DWARF)
|
|
{
|
|
GiveDMFI(oPC, "hlslang_4");
|
|
SendMessageToPC(oPC, "Dwarven language given.");
|
|
}
|
|
|
|
//:: Elven
|
|
if ((MyPRCGetRacialType(oPC) == RACIAL_TYPE_ELF) || (MyPRCGetRacialType(oPC) == RACIAL_TYPE_HALFELF))
|
|
{
|
|
GiveDMFI(oPC, "hlslang_1");
|
|
SendMessageToPC(oPC, "Elven language given.");
|
|
}
|
|
|
|
//:: Gnome
|
|
if (MyPRCGetRacialType(oPC) == RACIAL_TYPE_GNOME)
|
|
{
|
|
GiveDMFI(oPC, "hlslang_2");
|
|
SendMessageToPC(oPC, "Gnomish language given.");
|
|
}
|
|
|
|
//:: 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 given.");
|
|
}
|
|
|
|
//:: Halfling
|
|
if (MyPRCGetRacialType(oPC) == RACIAL_TYPE_HALFLING)
|
|
{
|
|
GiveDMFI(oPC, "hlslang_3");
|
|
SendMessageToPC(oPC, "Halfling language given.");
|
|
}
|
|
|
|
//:: 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 given.");
|
|
}
|
|
|
|
//:: 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' language given.");
|
|
}
|
|
|
|
if(GetIsPC(oPC)&& GetIsObjectValid(oPC))
|
|
{
|
|
SirElrics_SimplePlayerSetUp(oPC);
|
|
}
|
|
//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");
|
|
} |