// this function ripped from contest of champions
void ApplyFlagEffect( object oPlayer )
{
    int nTeam, nVisEffect;
    effect eFlagEffect;

//    nTeam = GetPlayerTeam(oPlayer);


//    if ( nTeam == TEAM_BLUE )
//    {
        nVisEffect = VFX_DUR_FLAG_BLUE;
//    }
//    else if ( nTeam == TEAM_RED )
//    {
//        nVisEffect = VFX_DUR_FLAG_RED;
//    }
//    else if ( nTeam == TEAM_GOLD )
//    {
//        nVisEffect = VFX_DUR_FLAG_PURPLE;
//    }
//    else if ( nTeam == TEAM_PURPLE )
//    {
//        nVisEffect = VFX_DUR_FLAG_GOLD;
//    }

    eFlagEffect = EffectVisualEffect(nVisEffect);
    eFlagEffect = SupernaturalEffect(eFlagEffect);

    ApplyEffectToObject(DURATION_TYPE_PERMANENT,eFlagEffect,oPlayer);
    PlaySound("as_mg_telepout1");
}

// good = 1, evil = 2

void AddPlayerToTeam( int nTeam, object oPlayer )
{
//    int nNumPlayers, nCount;
//    string sAreaTag;
//    object oArea;
//
//    nNumPlayers = GetTeamData(nTeam,TEAM_NUM_PLAYERS);
//
    SetLocalInt(oPlayer,"m_nTeam",nTeam);
//
//    SetTeamData(nTeam,TEAM_NUM_PLAYERS,nNumPlayers + 1);
//
//    // Signal an event to each team's HQ to add a counter
//    // for the number of players on a team.
//    for ( nCount = 0; nCount < GetMaxTeams(); nCount++ )
//    {
//        sAreaTag = "Team_" + IntToString(nCount) + "_HQ";
//        oArea = GetObjectByTag(sAreaTag);
//
//        if ( GetIsObjectValid(oArea) == TRUE )
//        {
//            SignalEvent(oArea,EventUserDefined(EVENT_ADD_PLAYER_TO_TEAM + nTeam));
//        }
//    }
//
    // Loop through all other players in the game
    // and set up the likes/dislikes appropriately.
    object oPC;
    int nPTeam;

    oPC = GetFirstPC();
    while ( GetIsObjectValid(oPC) == TRUE )
    {
        if ( oPC != oPlayer )
        {
            nPTeam = GetLocalInt(oPC,"m_nTeam");
            if ( nPTeam == nTeam )
            {
                SetPCLike(oPlayer,oPC);
                SetPCLike(oPC,oPlayer);
            }
           else
            {
                SetPCDislike(oPlayer,oPC);
                SetPCDislike(oPC,oPlayer);
           }
        }

        oPC = GetNextPC();
    }
}


void main()
{
// Move individual to new location
        location lNewLocation = GetLocation(GetObjectByTag("GoodSpawn"));
        object oTarget;


        //Since the script is called from a conversation
        //determine who is moved by calling the GetPCSpeaker function
        oTarget = GetPCSpeaker();

        if (GetIsObjectValid(oTarget) == TRUE){
          AssignCommand(oTarget,ActionJumpToLocation(lNewLocation));
//          ApplyFlagEffect(oTarget);

          AddPlayerToTeam( 1, oTarget );

          object oGuard = GetObjectByTag("HumanGuard");
          if (oGuard == OBJECT_INVALID) {
            oGuard = GetObjectByTag("DwarfGuard");
          }
          if (oGuard == OBJECT_INVALID) {
            oGuard = GetObjectByTag("ElfGuard");
          }
          if (oGuard == OBJECT_INVALID) {
            oGuard = GetObjectByTag("Belloc");
          }
          if (oGuard != OBJECT_INVALID) {
            AdjustReputation(oTarget, oGuard, 100);
          }

          object oMerchant = GetObjectByTag("LoratheDruid");
          if (oMerchant != OBJECT_INVALID) {
            AdjustReputation(oTarget, oMerchant, 100);
          }

          object oCommon = GetObjectByTag("Pherristhelocalfool");
          if (oCommon != OBJECT_INVALID) {
            AdjustReputation(oTarget, oCommon, 100);
          }

        }
        else if (GetIsObjectValid(oTarget) == FALSE) {
          SpeakString("Problem here");
        }


}