//::///////////////////////////////////////////////
//:: Name           Alhoon template test script
//:: FileName       tmp_t_alhoon
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Creating An Alhoon

An alhoon conforms to all the normal rules for adding the lich template to a humanoid, except asnoted below.

	Size and Type: The creature's type changes to undead (augmented aberration). Do not recalculate base attack bonus, saves, or skill points. Size is unchanged.
	
	Armor Class: An alhoon's natural armor bonus improves from +3 to +5.

*/
//:://////////////////////////////////////////////
//:: Created By: Jaysyn
//:: Created On: 24/08/06
//:://////////////////////////////////////////////

#include "prc_alterations"
#include "prc_inc_template"

void main()
{
    object oPC = OBJECT_SELF;
    string sString = "Alhoon template: ";
    SetExecutedScriptReturnValue(X2_EXECUTE_SCRIPT_CONTINUE);

    int nAlignment = GetAlignmentGoodEvil(oPC);
    if(nAlignment != ALIGNMENT_EVIL && GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER) < 20)
    {
        SendMessageToPC(oPC, sString+"Not evil");
        SetExecutedScriptReturnValue(X2_EXECUTE_SCRIPT_END);
    }
    else if(GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oPC) >= 20 && nAlignment == ALIGNMENT_GOOD)
    {
        SendMessageToPC(oPC, sString+"Can't be a good Dread Necromancer");
        SetExecutedScriptReturnValue(X2_EXECUTE_SCRIPT_END);
    }

    int nArcCasterLevel = GetPrCAdjustedCasterLevelByType(TYPE_ARCANE, oPC, TRUE);
    int nDivCasterLevel = GetPrCAdjustedCasterLevelByType(TYPE_DIVINE, oPC, TRUE);
    if(nArcCasterLevel < 11 && nDivCasterLevel < 11)
    {
        SendMessageToPC(oPC, sString+"Arcane Caster Level = "+IntToString(nArcCasterLevel));
        SendMessageToPC(oPC, sString+"Divine Caster Level = "+IntToString(nDivCasterLevel));
        SetExecutedScriptReturnValue(X2_EXECUTE_SCRIPT_END);
    }

    if(!GetHasFeat(FEAT_CRAFT_WONDROUS))
    {
        SendMessageToPC(oPC, sString+"No craft wondrous items");
        SetExecutedScriptReturnValue(X2_EXECUTE_SCRIPT_END);
    }

    // Illithid only
    int nRace = GetRacialType(oPC);
    
    if (nRace != RACIAL_TYPE_ILLITHID)
    {
        SetExecutedScriptReturnValue(X2_EXECUTE_SCRIPT_END);
    }  
}