示例#1
0
 public Fact(TimelineSlot ts, SuspectEnum p, WpnEnum w, bool use)
 {
     info = ts;
     person = p;
     weapon = w;
     used = use;
 }
示例#2
0
    private List<TimelineSlot> truthTimeline = new List<TimelineSlot>(3); //truthTimeline[0] is befMurder, 1 is durMurder and 2 is aftMurder

    #endregion Fields

    #region Constructors

    public Person(SuspectEnum s, bool victim, bool murderer)
    {
        name = s;
        isVictim = victim;
        isMurderer = murderer;

        // fill the slots, then replace as needed later
        for (int i=0; i<3; i++) {
            truthTimeline.Add(new TimelineSlot());
            falseTimeline.Add(new TimelineSlot());
        }
    }
示例#3
0
 public Fact(RmEnum rm, TimelineSlot ts, SuspectEnum personn)
 {
     placeRevealed = rm;
     info = ts;
     person = personn;
 }
示例#4
0
 public void setLikeWho(SuspectEnum n)
 {
     likes = n;
 }
示例#5
0
 public void setDMFakeAlibi(SuspectEnum other)
 {
     falseTimeline[1].alibi.Add(other);
 }
示例#6
0
 public void setDMAlibi(SuspectEnum other)
 {
     truthTimeline[1].alibi.Add(other);
 }
示例#7
0
    //generates a number sequence of 0-3.
    // temp[0] lies, temp[1]'s truth can uncover temp[0]'s lie.
    // temp[2] lies, temp[3]'s truth can uncover temp[2]'s lie.
    private static int[] genNumSequence(SuspectEnum murderer)
    {
        int[] temp = new int[4];
        bool[] isUsed = {false, false, false, false};

        temp[0] = (int) murderer;
        do {
            temp[1] = rand.Next(0, Globals.numSuspects);
        } while (temp[0] == temp[1]);

        isUsed[temp[0]] = true;
        isUsed[temp[1]] = true;

        int j=2;
        for (int i=0; i<isUsed.Length; i++) {
            if (!isUsed[i]) {
                temp[j] = i;
                isUsed[i] = true;
                j++;
            }
        }
        Debug.Log("Rand seq " + temp[0] + " " +temp[1] + " " +temp[2] + " " +temp[3] + " end");
        return temp;
    }
示例#8
0
    private static void GenerateMediumGame(SuspectEnum murdererEnum, int victimBefMurderRoom, int victimDurMurderRoom)
    {
        //only has 3 contradictions
        //***generate the suspects+activities in pairs***truth+fake pairs
        //need to place a person into these fake rooms, which the murderer lied about being in to create the contradiction
        //int[] BMpairing,DMpairing,AMpairing; //{lie, truth, lie, truth}. index 0 is always the murderer
        //index 1 will be able to confirm that murderer was not doing what he said he was
        // what murderer was doing (murderer truthtimeline) is placed in facts in the scene
        /*BMpairing = genNumSequence(murdererEnum);
        DMpairing = genNumSequence(murdererEnum);
        AMpairing = genNumSequence(murdererEnum);*/

        int[] relationshipPairing;
        relationshipPairing = genNumSequence(murdererEnum);
        for(int i=0; i<relationshipPairing.Length; i++)
        {
            Debug.Log("RS " + (SuspectEnum) relationshipPairing[i]);
        }
        timeline[relationshipPairing[0]].setHateFather(rand.Next(0,3));
        timeline[relationshipPairing[1]].setHateFather(rand.Next(0,3));
        timeline[relationshipPairing[2]].setHateFather(rand.Next(0,3));
        timeline[relationshipPairing[3]].setHateFather(rand.Next(0,3));

        timeline[relationshipPairing[0]].setPersonality((NegativePersonalityEnum)rand.Next(0,Globals.numNegativePersonality));
        timeline[relationshipPairing[1]].setPersonality((NegativePersonalityEnum)rand.Next(0,Globals.numNegativePersonality));
        timeline[relationshipPairing[2]].setLikeWho(timeline[relationshipPairing[3]].name);
        timeline[relationshipPairing[3]].setLikeWho(timeline[relationshipPairing[2]].name);

        //choose only one slot for murderer's contradiction.
        //record what index 0 was doing into facts
        //assuming all facts are accessed from CCTV in master bedrrom for now
        int chosen = rand.Next(3);
        RmEnum randomRoom;
        switch(chosen)
        {
            case 0:
                timeline[relationshipPairing[1]].setBeforeMurder(befMurderTime,
                    timeline[relationshipPairing[0]].getFakeBeforeMurderRoom(),
                    Globals.room[(int)timeline[relationshipPairing[0]].getFakeBeforeMurderRoom()].randomGA(),
                    WpnEnum.None); //saw the murderer "acquiring murder weapon"

                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[1]].getBeforeMurderFact(), timeline[relationshipPairing[1]].name));

                timeline[relationshipPairing[0]].setBMFakeAlibi(timeline[relationshipPairing[1]].name);
                timeline[relationshipPairing[1]].setBMAlibi(timeline[relationshipPairing[0]].name);

                //normal, can be doing anything.
                randomRoom = Globals.randRoom((RmEnum)victimBefMurderRoom, timeline[(int)murdererEnum].getDuringMurderRoom());
                timeline[relationshipPairing[1]].setDuringMurder(deathTime,
                    randomRoom,
                    Globals.room[(int)timeline[relationshipPairing[0]].getFakeDuringMurderRoom()].randomGA(),
                    WpnEnum.None);
                randomRoom = Globals.randRoom((RmEnum)victimBefMurderRoom, timeline[(int)murdererEnum].getAfterMurderRoom());
                timeline[relationshipPairing[1]].setAfterMurder(aftMurderTime,
                    randomRoom,
                    Globals.room[(int)timeline[relationshipPairing[0]].getFakeAfterMurderRoom()].randomGA(),
                    WpnEnum.None);
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[1]].getDuringMurderFact(), (SuspectEnum)relationshipPairing[1]));
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[1]].getAfterMurderFact(), (SuspectEnum)relationshipPairing[1]));
            break;
            case 1:
                //non contradictions
                randomRoom = Globals.randRoom((RmEnum)victimBefMurderRoom, timeline[(int)murdererEnum].getDuringMurderRoom());
                timeline[relationshipPairing[1]].setBeforeMurder(befMurderTime,
                    randomRoom,
                    Globals.room[(int)timeline[relationshipPairing[0]].getFakeBeforeMurderRoom()].randomGA(),
                    WpnEnum.None);

                //contradiction
                timeline[relationshipPairing[1]].setDuringMurder(deathTime,
                    timeline[relationshipPairing[0]].getFakeDuringMurderRoom(),
                    Globals.room[(int)timeline[relationshipPairing[0]].getFakeDuringMurderRoom()].randomGA(),
                    WpnEnum.None); //did not see the murderer in where he claimed to be, and doing what he claimed to be doing
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[1]].getDuringMurderFact(), timeline[relationshipPairing[1]].name));

                timeline[relationshipPairing[0]].setDMFakeAlibi(timeline[relationshipPairing[1]].name);
                timeline[relationshipPairing[1]].setDMAlibi(timeline[relationshipPairing[0]].name);

                //non contradiction
                randomRoom = Globals.randRoom((RmEnum)victimBefMurderRoom, timeline[(int)murdererEnum].getAfterMurderRoom());
                timeline[relationshipPairing[1]].setAfterMurder(aftMurderTime,
                    randomRoom,
                    Globals.room[(int)timeline[relationshipPairing[0]].getFakeAfterMurderRoom()].randomGA(),
                    WpnEnum.None);
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[1]].getBeforeMurderFact(), (SuspectEnum)relationshipPairing[1]));
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[1]].getAfterMurderFact(), (SuspectEnum)relationshipPairing[1]));
            break;
            case 2:
                //non contradictions
                randomRoom = Globals.randRoom((RmEnum)victimBefMurderRoom, timeline[(int)murdererEnum].getBeforeMurderRoom());
                timeline[relationshipPairing[1]].setBeforeMurder(befMurderTime,
                    randomRoom,
                    Globals.room[(int)timeline[relationshipPairing[0]].getFakeBeforeMurderRoom()].randomGA(),
                    WpnEnum.None);
                randomRoom = Globals.randRoom((RmEnum)victimBefMurderRoom, timeline[(int)murdererEnum].getDuringMurderRoom());
                timeline[relationshipPairing[1]].setDuringMurder(deathTime,
                    randomRoom,
                    Globals.room[(int)timeline[relationshipPairing[0]].getFakeDuringMurderRoom()].randomGA(),
                    WpnEnum.None);
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[1]].getDuringMurderFact(), (SuspectEnum)relationshipPairing[1]));
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[1]].getBeforeMurderFact(), (SuspectEnum)relationshipPairing[1]));

                //contradiction
                timeline[relationshipPairing[1]].setAfterMurder(aftMurderTime,
                    timeline[relationshipPairing[0]].getFakeAfterMurderRoom(),
                    Globals.room[(int)timeline[relationshipPairing[0]].getFakeAfterMurderRoom()].randomGA(),
                    WpnEnum.None); // saw the murderer "disposing murder weapon"
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[1]].getAfterMurderFact(), timeline[relationshipPairing[1]].name));

                timeline[relationshipPairing[0]].setAMFakeAlibi(timeline[relationshipPairing[1]].name);
                timeline[relationshipPairing[1]].setAMAlibi(timeline[relationshipPairing[0]].name);
            break;
        }

        //do the same for index 2 and 3 now for remaining unchosen slot only. (cos only left 2 contradictions)
        //index 2 is doing weapon activity and lies
        //index 3 is able to confirm index 2 is not doing so, and index2's truth timeline is placed into facts in the scene
        WpnEnum RHWpn = genWeap(murderWeap);
        RmEnum RHBefMurRoom;
        RmEnum RHDurMurRoom;
        RmEnum RHAftMurRoom;
        RmEnum innRm;
        switch(chosen)
        {
            case 0:
                innRm = Globals.randRoom((RmEnum) victimDurMurderRoom, timeline[(int)murdererEnum].getBeforeMurderRoom(), timeline[relationshipPairing[1]].getBeforeMurderRoom());
                //non contradiction
                timeline[relationshipPairing[2]].setBeforeMurder(befMurderTime,
                innRm,
                Globals.room[(int)innRm].WeaponList[(int)RHWpn].activity[0],
                RHWpn);
                timeline[relationshipPairing[3]].setBeforeMurder(befMurderTime,
                innRm,
                Globals.room[(int)innRm].randomGA(),
                WpnEnum.None);

                timeline[relationshipPairing[2]].setBMAlibi(timeline[relationshipPairing[3]].name);
                timeline[relationshipPairing[3]].setBMAlibi(timeline[relationshipPairing[2]].name);

                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[3]].getBeforeMurderFact(), timeline[relationshipPairing[3]].name));

                //truth
                RHDurMurRoom = Globals.randRoom((RmEnum)victimDurMurderRoom, timeline[(int)murdererEnum].getDuringMurderRoom(), timeline[relationshipPairing[1]].getDuringMurderRoom());
            Debug.Log("ROOM " + RHDurMurRoom);
                timeline[relationshipPairing[2]].setDuringMurder(deathTime,
                    RHDurMurRoom,
                    Globals.room[(int)RHDurMurRoom].WeaponList[(int)RHWpn].activity[0],
                    RHWpn);
            Debug.Log(timeline[relationshipPairing[2]].getDMTruthPlaceDebug());
                RHAftMurRoom = Globals.randRoom(timeline[(int)murdererEnum].getAfterMurderRoom(), timeline[relationshipPairing[1]].getAfterMurderRoom(), timeline[relationshipPairing[1]].getAfterMurderRoom());
            Debug.Log("ROOM " + RHAftMurRoom);
                timeline[relationshipPairing[2]].setAfterMurder(aftMurderTime,
                    RHAftMurRoom,
                    Globals.room[(int)RHAftMurRoom].WeaponList[(int)RHWpn].activity[0],
                    RHWpn);
                //lies
                timeline[relationshipPairing[2]].setFakeDuringMurder(deathTime,
                RHDurMurRoom,
                Globals.room[(int)RHDurMurRoom].randomGA(),
                WpnEnum.None);
                timeline[relationshipPairing[2]].setFakeAfterMurder(aftMurderTime,
                RHAftMurRoom,
                Globals.room[(int)RHAftMurRoom].randomGA(),
                WpnEnum.None);
                //alibi
                timeline[relationshipPairing[3]].setDuringMurder(deathTime,
                RHDurMurRoom,
                Globals.room[(int)RHDurMurRoom].randomGA(),
                WpnEnum.None);
                timeline[relationshipPairing[3]].setAfterMurder(aftMurderTime,
                RHAftMurRoom,
                Globals.room[(int)RHAftMurRoom].randomGA(),
                WpnEnum.None);
                timeline[relationshipPairing[2]].setReturnLieDM();
                timeline[relationshipPairing[2]].setReturnLieAM();

                timeline[relationshipPairing[2]].setDMFakeAlibi(timeline[relationshipPairing[3]].name);
                timeline[relationshipPairing[3]].setDMAlibi(timeline[relationshipPairing[2]].name);
                timeline[relationshipPairing[2]].setAMFakeAlibi(timeline[relationshipPairing[3]].name);
                timeline[relationshipPairing[3]].setAMAlibi(timeline[relationshipPairing[2]].name);

                //add fact
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[2]].getDuringMurderFact(), timeline[relationshipPairing[2]].name));
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[2]].getAfterMurderFact(), timeline[relationshipPairing[2]].name));

                break;
        case 1:
                //truth 1
                RHBefMurRoom = Globals.randRoom((RmEnum)victimBefMurderRoom, timeline[(int)murdererEnum].getBeforeMurderRoom(), timeline[relationshipPairing[1]].getBeforeMurderRoom());
            Debug.Log("ROOM " + RHBefMurRoom);
                timeline[relationshipPairing[2]].setBeforeMurder(befMurderTime,
                RHBefMurRoom,
                Globals.room[(int)RHBefMurRoom].WeaponList[(int)RHWpn].activity[0],
                RHWpn);

                //non contra
                innRm = Globals.randRoom((RmEnum) victimDurMurderRoom, timeline[(int)murdererEnum].getDuringMurderRoom(), timeline[relationshipPairing[1]].getDuringMurderRoom());
                //non contradiction
                timeline[relationshipPairing[2]].setDuringMurder(deathTime,
                innRm,
                Globals.room[(int)innRm].WeaponList[(int)RHWpn].activity[0],
                RHWpn);

                timeline[relationshipPairing[2]].setDMAlibi(timeline[relationshipPairing[3]].name);
                timeline[relationshipPairing[3]].setDMAlibi(timeline[relationshipPairing[2]].name);

                //truth 2
                RHAftMurRoom = Globals.randRoom(timeline[(int)murdererEnum].getAfterMurderRoom(), timeline[relationshipPairing[1]].getAfterMurderRoom());
            Debug.Log("ROOM " + RHAftMurRoom);
                timeline[relationshipPairing[2]].setAfterMurder(aftMurderTime,
                    RHAftMurRoom,
                    Globals.room[(int)RHAftMurRoom].WeaponList[(int)RHWpn].activity[0],
                    RHWpn);
                //lies
                timeline[relationshipPairing[2]].setFakeBeforeMurder(befMurderTime,
                    RHBefMurRoom,
                    Globals.room[(int)RHBefMurRoom].randomGA(),
                    WpnEnum.None);
                timeline[relationshipPairing[2]].setFakeAfterMurder(aftMurderTime,
                    RHAftMurRoom,
                    Globals.room[(int)RHAftMurRoom].randomGA(),
                    WpnEnum.None);
                //alibi 1
                timeline[relationshipPairing[3]].setBeforeMurder(befMurderTime,
                    RHBefMurRoom,
                    Globals.room[(int)RHBefMurRoom].randomGA(),
                    WpnEnum.None);

                //non contra
                timeline[relationshipPairing[3]].setDuringMurder(deathTime,
                innRm,
                Globals.room[(int)innRm].randomGA(),
                WpnEnum.None);

                //alibi 2
                timeline[relationshipPairing[3]].setAfterMurder(aftMurderTime,
                    RHAftMurRoom,
                    Globals.room[(int)RHAftMurRoom].randomGA(),
                    WpnEnum.None);
                timeline[relationshipPairing[2]].setReturnLieBM();
                timeline[relationshipPairing[2]].setReturnLieAM();

                timeline[relationshipPairing[2]].setBMFakeAlibi(timeline[relationshipPairing[3]].name);
                timeline[relationshipPairing[3]].setBMAlibi(timeline[relationshipPairing[2]].name);
                timeline[relationshipPairing[2]].setAMFakeAlibi(timeline[relationshipPairing[3]].name);
                timeline[relationshipPairing[3]].setAMAlibi(timeline[relationshipPairing[2]].name);

                //add fact
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[2]].getBeforeMurderFact(), timeline[relationshipPairing[2]].name));
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[2]].getAfterMurderFact(), timeline[relationshipPairing[2]].name));
                //non contra fact
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[3]].getDuringMurderFact(), timeline[relationshipPairing[3]].name));
                break;
        case 2:
                //truth
                RHBefMurRoom = Globals.randRoom((RmEnum)victimBefMurderRoom, timeline[(int)murdererEnum].getBeforeMurderRoom(), timeline[relationshipPairing[1]].getBeforeMurderRoom());
                Debug.Log("ROOM " + RHBefMurRoom);
                timeline[relationshipPairing[2]].setBeforeMurder(befMurderTime,
                    RHBefMurRoom,
                    Globals.room[(int)RHBefMurRoom].WeaponList[(int)RHWpn].activity[0],
                    RHWpn);
                RHDurMurRoom = Globals.randRoom((RmEnum)victimDurMurderRoom, timeline[(int)murdererEnum].getDuringMurderRoom(), timeline[relationshipPairing[1]].getDuringMurderRoom());
                Debug.Log("ROOM " + RHDurMurRoom);
                timeline[relationshipPairing[2]].setDuringMurder(deathTime,
                    RHDurMurRoom,
                    Globals.room[(int)RHDurMurRoom].WeaponList[(int)RHWpn].activity[0],
                    RHWpn);
                //lies
                timeline[relationshipPairing[2]].setFakeBeforeMurder(befMurderTime,
                    RHBefMurRoom,
                    Globals.room[(int)RHBefMurRoom].randomGA(),
                    WpnEnum.None);
                timeline[relationshipPairing[2]].setFakeDuringMurder(deathTime,
                    RHDurMurRoom,
                    Globals.room[(int)RHDurMurRoom].randomGA(),
                    WpnEnum.None);
                //alibis
                timeline[relationshipPairing[3]].setBeforeMurder(befMurderTime,
                    RHBefMurRoom,
                    Globals.room[(int)RHBefMurRoom].randomGA(),
                    WpnEnum.None);
                timeline[relationshipPairing[3]].setDuringMurder(deathTime,
                    RHDurMurRoom,
                    Globals.room[(int)RHDurMurRoom].randomGA(),
                    WpnEnum.None);
                timeline[relationshipPairing[2]].setReturnLieBM();
                timeline[relationshipPairing[2]].setReturnLieDM();

                timeline[relationshipPairing[2]].setBMFakeAlibi(timeline[relationshipPairing[3]].name);
                timeline[relationshipPairing[3]].setBMAlibi(timeline[relationshipPairing[2]].name);
                timeline[relationshipPairing[2]].setDMFakeAlibi(timeline[relationshipPairing[3]].name);
                timeline[relationshipPairing[3]].setDMAlibi(timeline[relationshipPairing[2]].name);

                //facts
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[2]].getBeforeMurderFact(), timeline[relationshipPairing[2]].name));
                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[2]].getDuringMurderFact(), timeline[relationshipPairing[2]].name));

                innRm = Globals.randRoom((RmEnum) victimDurMurderRoom, timeline[(int)murdererEnum].getAfterMurderRoom(), timeline[relationshipPairing[1]].getAfterMurderRoom());
                //non contradiction
                timeline[relationshipPairing[2]].setAfterMurder(aftMurderTime,
                innRm,
                Globals.room[(int)innRm].WeaponList[(int)RHWpn].activity[0],
                RHWpn);
                timeline[relationshipPairing[3]].setAfterMurder(aftMurderTime,
                innRm,
                Globals.room[(int)innRm].randomGA(),
                WpnEnum.None);

                timeline[relationshipPairing[2]].setAMAlibi(timeline[relationshipPairing[3]].name);
                timeline[relationshipPairing[3]].setAMAlibi(timeline[relationshipPairing[2]].name);

                facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[3]].getAfterMurderFact(), timeline[relationshipPairing[3]].name));
                break;
        }
        //place the weapons that were used
        placeWeapon(murderWeap, timeline[(int)murdererEnum].getAfterMurderRoom());
        placeWeapon(RHWpn, timeline[relationshipPairing[2]].getAfterMurderRoom());

        wpnFacts.Insert((int)WpnEnum.Knife, new Fact(timeline[relationshipPairing[2]].getAfterMurderFact(), timeline[relationshipPairing[2]].name, WpnEnum.Knife, WpnEnum.Knife==RHWpn||WpnEnum.Knife==murderWeap));
        wpnFacts.Insert((int)WpnEnum.Screwdriver, new Fact(timeline[relationshipPairing[2]].getAfterMurderFact(), timeline[relationshipPairing[2]].name, WpnEnum.Screwdriver, WpnEnum.Screwdriver==RHWpn||WpnEnum.Screwdriver==murderWeap));
        wpnFacts.Insert((int)WpnEnum.Towel, new Fact(timeline[relationshipPairing[2]].getAfterMurderFact(), timeline[relationshipPairing[2]].name, WpnEnum.Towel, WpnEnum.Towel==RHWpn||WpnEnum.Towel==murderWeap));
        wpnFacts.Insert((int)WpnEnum.Scissors, new Fact(timeline[relationshipPairing[2]].getAfterMurderFact(), timeline[relationshipPairing[2]].name, WpnEnum.Scissors, WpnEnum.Scissors==RHWpn||WpnEnum.Scissors==murderWeap));
        wpnFacts.Insert((int)WpnEnum.Spanner, new Fact(timeline[relationshipPairing[2]].getAfterMurderFact(), timeline[relationshipPairing[2]].name, WpnEnum.Spanner, WpnEnum.Spanner==RHWpn||WpnEnum.Spanner==murderWeap));
    }
示例#9
0
    private static void GenerateEasyGame(SuspectEnum murdererEnum, int victimBefMurderRoom, int victimDurMurderRoom)
    {
        //***generate the suspects+activities in pairs***truth+fake pairs
        //need to place a person into these fake rooms, which the murderer lied about being in to create the contradiction
        //int[] BMpairing,DMpairing,AMpairing; //{lie, truth, lie, truth}. index 0 is always the murderer
        //index 1 will be able to confirm that murderer was not doing what he said he was
        // what murderer was doing (murderer truthtimeline) is placed in facts in the scene
        /*BMpairing = genNumSequence(murdererEnum);
        DMpairing = genNumSequence(murdererEnum);
        AMpairing = genNumSequence(murdererEnum);*/

        //index 0 is murderer hates the father for some reason. index 1 is shy/sad/antisocial. index 2 likes index 3 and vice versa
        //index 2 lies about his activity cause of hatred to the father as well.
        int[] relationshipPairing;
        relationshipPairing = genNumSequence(murdererEnum);
        timeline[relationshipPairing[0]].setHateFather(rand.Next(0,3));
        timeline[relationshipPairing[1]].setHateFather(rand.Next(0,3));
        timeline[relationshipPairing[2]].setHateFather(rand.Next(0,3));
        timeline[relationshipPairing[3]].setHateFather(rand.Next(0,3));

        /*timeline[relationshipPairing[0]].setPersonality("I am " + (NegativePersonalityEnum)rand.Next(0,Globals.numNegativePersonality) + " recently.");
        timeline[relationshipPairing[1]].setPersonality("I am " + (NegativePersonalityEnum)rand.Next(0,Globals.numNegativePersonality) + " recently.");
        timeline[relationshipPairing[2]].setPersonality("I like to be with " + (SuspectEnum)relationshipPairing[3] + " recently.");
        timeline[relationshipPairing[3]].setPersonality("I like to be with " + (SuspectEnum)relationshipPairing[2] + " recently.");*/

        timeline[relationshipPairing[0]].setPersonality((NegativePersonalityEnum)rand.Next(0,Globals.numNegativePersonality));
        timeline[relationshipPairing[1]].setPersonality((NegativePersonalityEnum)rand.Next(0,Globals.numNegativePersonality));
        timeline[relationshipPairing[2]].setLikeWho(timeline[relationshipPairing[3]].name);
        timeline[relationshipPairing[3]].setLikeWho(timeline[relationshipPairing[2]].name);

        timeline[relationshipPairing[1]].setBeforeMurder(befMurderTime,
            timeline[relationshipPairing[0]].getFakeBeforeMurderRoom(),
            Globals.room[(int)timeline[relationshipPairing[0]].getFakeBeforeMurderRoom()].randomGA(),
            WpnEnum.None); //saw the murderer "acquiring murder weapon"
        timeline[relationshipPairing[0]].setBMFakeAlibi(timeline[relationshipPairing[1]].name);
        timeline[relationshipPairing[1]].setBMAlibi(timeline[relationshipPairing[0]].name);

        timeline[relationshipPairing[1]].setDuringMurder(deathTime,
            timeline[relationshipPairing[0]].getFakeDuringMurderRoom(),
            Globals.room[(int)timeline[relationshipPairing[0]].getFakeDuringMurderRoom()].randomGA(),
            WpnEnum.None); //did not see the murderer in where he claimed to be, and doing what he claimed to be doing
        //no alibi

        timeline[relationshipPairing[1]].setAfterMurder(deathTime,
            timeline[relationshipPairing[0]].getFakeAfterMurderRoom(),
            Globals.room[(int)timeline[relationshipPairing[0]].getFakeAfterMurderRoom()].randomGA(),
            WpnEnum.None); // saw the murderer "disposing murder weapon"
        timeline[relationshipPairing[0]].setAMFakeAlibi(timeline[relationshipPairing[1]].name);
        timeline[relationshipPairing[1]].setAMAlibi(timeline[relationshipPairing[0]].name);

        //record what index 0 was doing into facts
        //assuming all facts are accessed from CCTV in master bedrrom for now
        facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[1]].getBeforeMurderFact(), timeline[relationshipPairing[1]].name));
        facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[1]].getDuringMurderFact(), timeline[relationshipPairing[1]].name));
        facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[1]].getAfterMurderFact(), timeline[relationshipPairing[1]].name));

        //do the same for index 2 and 3 now.
        //index 2 is doing weapon activity and lies
        //index 3 is able to confirm index 2 is not doing so, and index2's truth timeline is placed into facts in the scene
        WpnEnum RHWpn = genWeap(murderWeap);
        RmEnum RHBefMurRoom = Globals.randRoom((RmEnum)victimBefMurderRoom, timeline[(int)murdererEnum].getBeforeMurderRoom());
        //the truth of what index 2 is doing
        timeline[relationshipPairing[2]].setBeforeMurder(befMurderTime,
            RHBefMurRoom,
            Globals.room[(int)RHBefMurRoom].WeaponList[(int)RHWpn].activity[0],
            RHWpn);
        RmEnum RHDurMurRoom = Globals.randRoom((RmEnum)victimDurMurderRoom, timeline[(int)murdererEnum].getDuringMurderRoom());
        timeline[relationshipPairing[2]].setDuringMurder(deathTime,
            RHDurMurRoom,
            Globals.room[(int)RHDurMurRoom].WeaponList[(int)RHWpn].activity[0],
            RHWpn);
        RmEnum RHAftMurRoom = Globals.randRoom(timeline[(int)murdererEnum].getAfterMurderRoom());
        timeline[relationshipPairing[2]].setAfterMurder(aftMurderTime,
            RHAftMurRoom,
            Globals.room[(int)RHAftMurRoom].WeaponList[(int)RHWpn].activity[0],
            RHWpn);
        //the lies of index 2
        timeline[relationshipPairing[2]].setFakeBeforeMurder(befMurderTime,
            RHBefMurRoom,
            Globals.room[(int)RHBefMurRoom].randomGA(),
            WpnEnum.None);
        timeline[relationshipPairing[2]].setFakeDuringMurder(deathTime,
            RHDurMurRoom,
            Globals.room[(int)RHDurMurRoom].randomGA(),
            WpnEnum.None);
        timeline[relationshipPairing[2]].setFakeAfterMurder(aftMurderTime,
            RHAftMurRoom,
            Globals.room[(int)RHAftMurRoom].randomGA(),
            WpnEnum.None);
        //place index 3 into index2's room so as to disprove index2's lies
        timeline[relationshipPairing[3]].setBeforeMurder(befMurderTime,
            RHBefMurRoom,
            Globals.room[(int)RHBefMurRoom].randomGA(),
            WpnEnum.None);
        timeline[relationshipPairing[3]].setDuringMurder(deathTime,
            RHDurMurRoom,
            Globals.room[(int)RHDurMurRoom].randomGA(),
            WpnEnum.None);
        timeline[relationshipPairing[3]].setAfterMurder(aftMurderTime,
            RHAftMurRoom,
            Globals.room[(int)RHAftMurRoom].randomGA(),
            WpnEnum.None);
        timeline[relationshipPairing[2]].setReturnLieBM();
        timeline[relationshipPairing[2]].setReturnLieDM();
        timeline[relationshipPairing[2]].setReturnLieAM();

        timeline[relationshipPairing[2]].setBMFakeAlibi(timeline[relationshipPairing[3]].name);
        timeline[relationshipPairing[3]].setBMAlibi(timeline[relationshipPairing[2]].name);
        timeline[relationshipPairing[2]].setDMFakeAlibi(timeline[relationshipPairing[3]].name);
        timeline[relationshipPairing[3]].setDMAlibi(timeline[relationshipPairing[2]].name);
        timeline[relationshipPairing[2]].setAMFakeAlibi(timeline[relationshipPairing[3]].name);
        timeline[relationshipPairing[3]].setAMAlibi(timeline[relationshipPairing[2]].name);

        //record what index 2 was doing into facts
        facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[2]].getBeforeMurderFact(), timeline[relationshipPairing[2]].name));
        facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[2]].getDuringMurderFact(), timeline[relationshipPairing[2]].name));
        facts.Add(new Fact(RmEnum.Kitchen, timeline[relationshipPairing[2]].getAfterMurderFact(), timeline[relationshipPairing[2]].name));

        //place the weapons that were used
        placeWeapon(murderWeap, timeline[(int)murdererEnum].getAfterMurderRoom());
        placeWeapon(RHWpn, timeline[relationshipPairing[2]].getAfterMurderRoom());

        wpnFacts.Insert((int)WpnEnum.Knife, new Fact(timeline[relationshipPairing[2]].getAfterMurderFact(), timeline[relationshipPairing[2]].name, WpnEnum.Knife, WpnEnum.Knife==RHWpn||WpnEnum.Knife==murderWeap));
        wpnFacts.Insert((int)WpnEnum.Screwdriver, new Fact(timeline[relationshipPairing[2]].getAfterMurderFact(), timeline[relationshipPairing[2]].name, WpnEnum.Screwdriver, WpnEnum.Screwdriver==RHWpn||WpnEnum.Screwdriver==murderWeap));
        wpnFacts.Insert((int)WpnEnum.Towel, new Fact(timeline[relationshipPairing[2]].getAfterMurderFact(), timeline[relationshipPairing[2]].name, WpnEnum.Towel, WpnEnum.Towel==RHWpn||WpnEnum.Towel==murderWeap));
        wpnFacts.Insert((int)WpnEnum.Scissors, new Fact(timeline[relationshipPairing[2]].getAfterMurderFact(), timeline[relationshipPairing[2]].name, WpnEnum.Scissors, WpnEnum.Scissors==RHWpn||WpnEnum.Scissors==murderWeap));
        wpnFacts.Insert((int)WpnEnum.Spanner, new Fact(timeline[relationshipPairing[2]].getAfterMurderFact(), timeline[relationshipPairing[2]].name, WpnEnum.Spanner, WpnEnum.Spanner==RHWpn||WpnEnum.Spanner==murderWeap));
    }