#include "prc_inc_racial"
#include "rd_treasure"
#include "utl_i_sqluuid"
#include "prc_inc_template"

void GivePartyReward(object oPC);
string GetRace(object oPC);

void main()
{
location lLoc;

	GivePartyReward(GetPCSpeaker());
	ExecuteScript("qst_done",OBJECT_SELF);

	lLoc = GetLocation(OBJECT_SELF);
	effect eVFX = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
	AssignCommand(OBJECT_SELF, DelayCommand(2.0f, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVFX, lLoc)));
	eVFX = EffectVisualEffect(VFX_FNF_SMOKE_PUFF);
	AssignCommand(OBJECT_SELF, DelayCommand(2.5f, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVFX, lLoc)));
	lLoc = GetLocation(GetObjectByTag("en3_move"));
	DelayCommand(3.0f,AssignCommand(OBJECT_SELF,JumpToLocation(lLoc)));
}


void GivePartyReward(object oPC)
{
	string sRace;

	object oPartyMember = GetFirstFactionMember(oPC, TRUE);
	while (GetIsObjectValid(oPartyMember) == TRUE)
	{
		SQLocalsUUID_SetInt(oPartyMember,"HasCustomSkin",1);
		sRace = GetSubRace(oPartyMember);
		if (sRace == "")
			sRace = GetRace(oPartyMember);

		sRace = "Celestial " + sRace;

		SetSubRace(oPartyMember,sRace);
		
		//CreateGodlingPC(oPC);
		
		ApplyTemplateToObject(TEMPLATE_HALF_CELESTIAL, oPC);
		
		SQLocalsUUID_SetInt(oPartyMember,"SpecialPowers",3);
		
		CreateSpecialPowers(oPartyMember);
		
		SendMessageToPC(oPartyMember,"You have gained a spark of divinity.");

		oPartyMember = GetNextFactionMember(oPC, TRUE);
	}
}

string GetRace(object oPC)
{
    string sRace = GetSubRace(oPC);
    
    if (sRace == "")
    {
        sRace = GetStringByStrRef(StringToInt(Get2DAString("racialtypes", "Name", GetRacialType(oPC))));
    }
    
    return sRace;
}