#include "prc_inc_racial"
//#include "journal_include"
#include "pqj_inc"


void GivePCWands(object oPC)
{
    // items to be give to new players

    string sWndPCFollow = "dmfi_pc_follow";//PC Autofollow Widget
    string sWndPCDice = "dmfi_pc_dicebag";//PC Dicebag
    string sWndPCEmote = "dmfi_pc_emote";//PC Emote Wand

    CreateItemOnObject(sWndPCFollow, oPC);
    CreateItemOnObject(sWndPCDice, oPC);
    CreateItemOnObject(sWndPCEmote, oPC);
}

void GiveLangTokens(object oPC)
{
// Give class based language items
    if( GetLevelByClass(CLASS_TYPE_DRUID, oPC) >= 2 )
    {
        if ( GetItemPossessedBy(oPC, "hlslang_108") == OBJECT_INVALID )  // Druidic
        {
            DelayCommand(1.0, FloatingTextStringOnCreature("Druidic language token acquired.", oPC));
            CreateItemOnObject("hlslang_108", oPC);
        }
    }

    if( GetLevelByClass(CLASS_TYPE_ROGUE, oPC) >= 2 )
    {
        if ( GetItemPossessedBy(oPC, "hlslang_9") == OBJECT_INVALID )  // Thieve's Cant
        {
            DelayCommand(1.0, FloatingTextStringOnCreature("Thieve's Cant token acquired.", oPC));
            CreateItemOnObject("hlslang_9", oPC);
        }
    }

// Give race based language tokens
// TODO: Expand for PRC races.

    if( MyPRCGetRacialType(oPC) == RACIAL_TYPE_ELF )
        {
            // DelayCommand(0.5, AdjustReputation(oPC, GetObjectByTag("FACTION_ATHAS_SILVERHAND"), 90)); // Adjust faction reputation

            if ( GetItemPossessedBy(oPC, "hlslang_1") == OBJECT_INVALID )
            {
                DelayCommand(1.0, FloatingTextStringOnCreature("Elven language token acquired.", oPC));
                CreateItemOnObject("hlslang_1", oPC);
            }
        }

    if( MyPRCGetRacialType(oPC) == RACIAL_TYPE_HALFELF )
        {
            if ( GetItemPossessedBy(oPC, "hlslang_1") == OBJECT_INVALID )
            {
                DelayCommand(1.0, FloatingTextStringOnCreature("Elven language token acquired.", oPC));
                CreateItemOnObject("hlslang_1", oPC);
            }
        }

    if( MyPRCGetRacialType(oPC) == RACIAL_TYPE_DWARF )
        {
            // DelayCommand(0.5, AdjustReputation(oPC, GetObjectByTag("ATHAS_FACTION_KLED"), 90)); // Adjust faction reputation

            if ( GetItemPossessedBy(oPC, "hlslang_4") == OBJECT_INVALID )
            {
                DelayCommand(1.0, FloatingTextStringOnCreature("Dwarven language token acquired.", oPC));
                CreateItemOnObject("hlslang_4", oPC);
            }
        }

    if( MyPRCGetRacialType(oPC) == RACIAL_TYPE_HALFLING )
        {
            if ( GetItemPossessedBy(oPC, "hlslang_3") == OBJECT_INVALID )
            {
                DelayCommand(1.0, FloatingTextStringOnCreature("Halfling language token acquired.", oPC));
                CreateItemOnObject("hlslang_3", oPC);
            }
        }

    if( MyPRCGetRacialType(oPC) == 199 ) // Air Genasi
        {
            SetColor ( oPC, COLOR_CHANNEL_SKIN, 020);

            if ( GetItemPossessedBy(oPC, "hlslang_101") == OBJECT_INVALID )
            {
                DelayCommand(1.0, FloatingTextStringOnCreature("Auran language token acquired.", oPC));
                CreateItemOnObject("hlslang_101", oPC);
            }
        }
    if( MyPRCGetRacialType(oPC) == 200 ) //  Earth Genasi
        {
            SetColor ( oPC, COLOR_CHANNEL_SKIN, 118);

            if ( GetItemPossessedBy(oPC, "hlslang_102") == OBJECT_INVALID )
            {
                DelayCommand(1.0, FloatingTextStringOnCreature("Terran language token acquired.", oPC));
                CreateItemOnObject("hlslang_102", oPC);
            }
        }
    if( MyPRCGetRacialType(oPC) == 202 ) //  Fire Genasi
        {
            SetColor ( oPC, COLOR_CHANNEL_SKIN, 103);

            if ( GetItemPossessedBy(oPC, "hlslang_104") == OBJECT_INVALID )
            {
                DelayCommand(1.0, FloatingTextStringOnCreature("Ignan language token acquired.", oPC));
                CreateItemOnObject("hlslang_104", oPC);
            }
        }
     if( MyPRCGetRacialType(oPC) == 205 ) //  Water Genasi
        {
            SetColor ( oPC, COLOR_CHANNEL_SKIN, 141);

            if ( GetItemPossessedBy(oPC, "hlslang_103") == OBJECT_INVALID )
            {
                DelayCommand(1.0, FloatingTextStringOnCreature("Aquan language token acquired.", oPC));
                CreateItemOnObject("hlslang_103", oPC);
            }
        }

}


#include "dmfi_init_inc"

void main()
{
//:: Set Major Variables
    object oPC = GetEnteringObject();
	
//:: Restore jounral entries
	RebuildJournalQuestEntries(GetEnteringObject());

//  Make sure PC isn't set to Plot, for reasons
    SetPlotFlag(oPC, FALSE);

//  Reset PC size
    SetObjectVisualTransform(oPC, OBJECT_VISUAL_TRANSFORM_SCALE, 1.0f);

// Initialize DMFI
    dmfiInitialize(oPC);

//  Give PC DMFI gear

    if (GetXP(oPC) == 0)
    {
        GivePCWands(oPC);
    }

// Begin BESIE Spawn System

    int bBESIEWidget;

    if(GetIsDM(oPC))
        {
            SetLocalInt(GetModule(), "re_" + GetPCPlayerName(oPC), TRUE);
            object oItem = GetFirstItemInInventory(oPC);
            while(GetIsObjectValid(oItem))
                {
                    if(GetTag(oItem) == "BESIEWidget") bBESIEWidget = TRUE;
                    oItem = GetNextItemInInventory(oPC);
                }
            if(!bBESIEWidget) CreateItemOnObject("besiewidget", oPC);
        }
    else DeleteLocalInt(GetModule(), "re_" + GetName(oPC));

// End BESIE Spawn System

}