public Fact(TimelineSlot ts, SuspectEnum p, WpnEnum w, bool use) { info = ts; person = p; weapon = w; used = use; }
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()); } }
public Fact(RmEnum rm, TimelineSlot ts, SuspectEnum personn) { placeRevealed = rm; info = ts; person = personn; }
public void setLikeWho(SuspectEnum n) { likes = n; }
public void setDMFakeAlibi(SuspectEnum other) { falseTimeline[1].alibi.Add(other); }
public void setDMAlibi(SuspectEnum other) { truthTimeline[1].alibi.Add(other); }
//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; }
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)); }
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)); }