private bool handleIncomingProposal(Proposal proposal) { if (Game1.gameMode != 3 || Game1.activeClickableMenu != null || Game1.currentMinigame != null) { return((ProposalType)proposal.proposalType == ProposalType.Baby); } if (Game1.currentLocation == null) { return(false); } if (proposal.proposalType.Value != ProposalType.Dance && Game1.CurrentEvent != null) { return(false); } string additionalVar = ""; string responseYes = null; string responseNo = null; string questionKey2; if ((ProposalType)proposal.proposalType == ProposalType.Dance) { if (Game1.CurrentEvent == null || !Game1.CurrentEvent.isSpecificFestival("spring24")) { return(false); } questionKey2 = "Strings\\UI:AskedToDance"; responseYes = "Strings\\UI:AskedToDance_Accepted"; responseNo = "Strings\\UI:AskedToDance_Rejected"; if (Game1.player.dancePartner.Value != null) { return(false); } } else if ((ProposalType)proposal.proposalType == ProposalType.Marriage) { if (Game1.player.isMarried() || Game1.player.isEngaged()) { proposal.response.Value = ProposalResponse.Rejected; proposal.responseMessageKey.Value = genderedKey("Strings\\UI:AskedToMarry_NotSingle", Game1.player); return(true); } questionKey2 = "Strings\\UI:AskedToMarry"; responseYes = "Strings\\UI:AskedToMarry_Accepted"; responseNo = "Strings\\UI:AskedToMarry_Rejected"; } else if ((ProposalType)proposal.proposalType == ProposalType.Gift && proposal.gift != null) { if (!Game1.player.couldInventoryAcceptThisItem(proposal.gift)) { proposal.response.Value = ProposalResponse.Rejected; proposal.responseMessageKey.Value = genderedKey("Strings\\UI:GiftPlayerItem_NoInventorySpace", Game1.player); return(true); } questionKey2 = "Strings\\UI:GivenGift"; additionalVar = proposal.gift.Value.DisplayName; } else { if ((ProposalType)proposal.proposalType != ProposalType.Baby) { return(false); } if (proposal.sender.Value.IsMale != Game1.player.IsMale) { questionKey2 = "Strings\\UI:AskedToHaveBaby"; responseYes = "Strings\\UI:AskedToHaveBaby_Accepted"; responseNo = "Strings\\UI:AskedToHaveBaby_Rejected"; } else { questionKey2 = "Strings\\UI:AskedToAdoptBaby"; responseYes = "Strings\\UI:AskedToAdoptBaby_Accepted"; responseNo = "Strings\\UI:AskedToAdoptBaby_Rejected"; } } questionKey2 = genderedKey(questionKey2, proposal.sender); if (responseYes != null) { responseYes = genderedKey(responseYes, Game1.player); } if (responseNo != null) { responseNo = genderedKey(responseNo, Game1.player); } string question = Game1.content.LoadString(questionKey2, proposal.sender.Value.Name, additionalVar); Game1.currentLocation.createQuestionDialogue(question, Game1.currentLocation.createYesNoResponses(), delegate(Farmer _, string answer) { if (proposal.canceled.Value) { Game1.drawObjectDialogue(Game1.content.LoadString("Strings\\UI:ProposalWithdrawn", proposal.sender.Value.Name)); proposal.response.Value = ProposalResponse.Rejected; proposal.responseMessageKey.Value = responseNo; } else if (answer == "Yes") { proposal.response.Value = ProposalResponse.Accepted; proposal.responseMessageKey.Value = responseYes; if (proposal.proposalType.Value == ProposalType.Gift || proposal.proposalType.Value == ProposalType.Marriage) { Item value = proposal.gift.Value; proposal.gift.Value = null; value = Game1.player.addItemToInventory(value); if (value != null) { Game1.currentLocation.debris.Add(new Debris(value, Game1.player.Position)); } } if (proposal.proposalType.Value == ProposalType.Dance) { Game1.player.dancePartner.Value = proposal.sender.Value; } if (proposal.proposalType.Value == ProposalType.Marriage) { Friendship friendship = GetFriendship(proposal.sender.Value.UniqueMultiplayerID, Game1.player.UniqueMultiplayerID); friendship.Status = FriendshipStatus.Engaged; friendship.Proposer = proposal.sender.Value.UniqueMultiplayerID; WorldDate worldDate = new WorldDate(Game1.Date); worldDate.TotalDays += 3; while (!Game1.canHaveWeddingOnDay(worldDate.DayOfMonth, worldDate.Season)) { worldDate.TotalDays++; } friendship.WeddingDate = worldDate; Game1.drawObjectDialogue(Game1.content.LoadString("Strings\\UI:PlayerWeddingArranged")); Game1.multiplayer.globalChatInfoMessage("Engaged", Game1.player.Name, proposal.sender.Value.Name); } if (proposal.proposalType.Value == ProposalType.Baby) { Friendship friendship2 = GetFriendship(proposal.sender.Value.UniqueMultiplayerID, Game1.player.UniqueMultiplayerID); WorldDate worldDate2 = new WorldDate(Game1.Date); worldDate2.TotalDays += 14; friendship2.NextBirthingDate = worldDate2; } Game1.player.doEmote(20); } else { proposal.response.Value = ProposalResponse.Rejected; proposal.responseMessageKey.Value = responseNo; } }); return(true); }