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.
201 lines
8.2 KiB
Plaintext
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");
|
|
} |