public override void AddInteractions(InteractionObjectPair iop, Sim actor, Sim target, List <InteractionObjectPair> results) { try { mTargetDanceObject = null; foreach (InteractionObjectPair pair in actor.Interactions) { if (pair.InteractionDefinition.GetType() == typeof(Stereo.DanceTogetherA.Definition)) { Stereo.DanceTogetherA.Definition definition = pair.InteractionDefinition as Stereo.DanceTogetherA.Definition; mTargetDanceObject = definition.mTargetDanceObject; break; } } if (mTargetDanceObject == null) { return; } bool allowDance = mTargetDanceObject.AllowsDance && (Stereo.SimCanBaseDance(actor, mTargetDanceObject) && Stereo.SimCanBaseDance(target, mTargetDanceObject)); bool allowClubDance = mTargetDanceObject.AllowsClubDance && (Stereo.SimCanClubDance(actor, mTargetDanceObject) && Stereo.SimCanClubDance(target, mTargetDanceObject)); bool canSlowDance = Stereo.SimsCanSlowDanceTogether(actor, target, mTargetDanceObject); int num = 0x0; num += allowDance ? 0x1 : 0x0; num += allowClubDance ? 0x1 : 0x0; num += canSlowDance ? 0x1 : 0x0; bool inClub = Stereo.ObjectIsInDanceClub(target); string[] menu = (num > 0x1) ? new string[] { Stereo.DanceTogetherA.LocalizeString("DanceMenu", new object[0x0]) } : new string[0x0]; bool canClubDance = allowClubDance && inClub; Stereo.DanceTogetherA.DanceType dance = Stereo.DanceTogetherA.DanceType.Dance; if (allowDance || canClubDance) { if (canClubDance) { dance = Stereo.DanceTogetherA.DanceType.Club; } if (Stereo.PartySimIsGettingMusicFromPartyLocation(actor, mTargetDanceObject)) { results.Add(new InteractionObjectPair(new Definition(Stereo.DanceTogetherA.LocalizeString("RockingInteractionName", new object[0x0]), menu, dance, mTargetDanceObject), iop.Target)); } else { results.Add(new InteractionObjectPair(new Definition(Stereo.DanceTogetherA.LocalizeString("InteractionName", new object[0x0]), menu, dance, mTargetDanceObject), iop.Target)); } } if (allowClubDance && !canClubDance) { if (Stereo.PartySimIsGettingMusicFromPartyLocation(actor, mTargetDanceObject)) { results.Add(new InteractionObjectPair(new Definition(Stereo.DanceTogetherA.LocalizeString("ClubRockingInteractionName", new object[0x0]), menu, Stereo.DanceTogetherA.DanceType.Club, mTargetDanceObject), iop.Target)); } else { results.Add(new InteractionObjectPair(new Definition(Stereo.DanceTogetherA.LocalizeString("ClubDanceTogetherA", new object[0x0]), menu, Stereo.DanceTogetherA.DanceType.Club, mTargetDanceObject), iop.Target)); } } if (canSlowDance) { results.Add(new InteractionObjectPair(new Definition(Stereo.DanceTogetherA.LocalizeString("SlowDance", new object[0x0]), menu, Stereo.DanceTogetherA.DanceType.Slow, mTargetDanceObject), iop.Target)); } } catch (Exception e) { Common.Exception(actor, target, e); } }