public void CleanupActions(Sim s, float x) { try { CourtesansPerfume perfume = Courtesan.GetPerfume(base.Target); if (perfume != null) { perfume.restoreOldRelationship(base.Actor); base.Target.BuffManager.RemoveElement(BuffNames.StrideOfPride); base.Target.BuffManager.RemoveElement(BuffNames.WalkOfShame); } } catch (Exception e) { Message.Sender.ShowError(base.Target, "Restoring original relationships failed", false, e); } try { Lot.MetaAutonomyType venueType = base.Actor.LotCurrent.GetMetaAutonomyType; Courtesan.SwitchToProperClothing(base.Actor, venueType); Courtesan.SwitchToProperClothing(base.Target, venueType); } catch (Exception e) { Message.Sender.ShowError(base.Actor, "Cannot restore clothes", false, e); } }
public override bool Test(Sim actor, Sim target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { bool result = false; if (!isAutonomous) { CourtesansPerfume perfume = Courtesan.GetPerfume(target); if (perfume != null) { if (perfume.Pimp == null) { InteractionDefinition interaction = BuyWooHoo.Singleton; result = Courtesan.IsTalkingTo(actor, target, result); if (actor.InteractionQueue.HasInteractionOfTypeAndTarget(ToggleTakeMistress.Singleton, target)) { result = true; } } else { result = true; } } } return(result); }
public override string GetInteractionName(Sim actor, Sim target, InteractionObjectPair interaction) { string price = "0"; Sim owner = null; CourtesansPerfume perfume = Courtesan.GetPerfume(target); if (perfume != null) { price = perfume.PimpShare.ToString(); owner = perfume.Pimp; } string name = "Ask for personal fulltime service(§" + price + ")"; if (owner == actor) { name = "Fire from your service"; } else if (owner != null) { name = "Ask to stop working for " + owner.FullName; } return(name); }
public override bool Run() { Courtesan role = Courtesan.AssignedRole(base.Target); if (role != null) { CourtesansPerfume perfume = role.GetPerfume(); Sim owner = perfume.Pimp; if (owner == null) { perfume.Pimp = this.Actor; Message.Sender.Show(base.Target, "I have obligations today, but I'll come to you tomorrow"); } else if (Actor == owner) { perfume.Pimp = null; } else { Message.Sender.Show(base.Target, "Only my employer can fire me!"); } } return(true); }
public static CourtesansPerfume GetPerfume(Sim sim) { CourtesansPerfume perfume = null; Courtesan role = Courtesan.AssignedRole(sim); if (role != null) { perfume = role.GetPerfume(); } return(perfume); }
private void CreateAndStoreRelationship(Sim buyer, Sim seller) { Relationship relationToTarget = buyer.GetRelationship(seller, true); CourtesansPerfume perfume = Courtesan.GetPerfume(seller); if (perfume != null) { perfume.storeAndIncreaseRelationship(buyer, relationToTarget); //perfume.storeOldRelationship(buyer, relationToTarget.LTR.CurrentLTR); // relationToTarget.LTR.ForceChangeState(LongTermRelationshipTypes.Partner); } }
public override bool Run() { try { Sim buyer = base.Actor; Sim seller = base.Target; CourtesansPerfume perfume = Courtesan.GetPerfume(seller); if (perfume != null) { Bed place = FindNearestBed(perfume); if (place != null) { if (perfume.mConfirmWoohoo) { bool woohooOk = AcceptCancelDialog.Show(buyer.FullName + " wants to woohoo with " + seller.FullName + ". Is this Ok?"); if (!woohooOk) { return(true); } } CreateAndStoreRelationship(buyer, seller); Pay(buyer, seller); PushWooHooOnBed(seller, buyer, place, new Callback(this.CleanupActions)); //InteractionInstance sellerCleanupAction = AfterWooHooCleanup.Singleton.CreateInstanceWithCallbacks(seller, seller, // new InteractionPriority(InteractionPriorityLevel.UserDirected), false, false, // new Callback(this.RestoreRelationship), new Callback(this.DoNothing), new Callback(this.DoNothing) // ); //sellerCleanupAction.MustRun = true; //seller.InteractionQueue.AddAfterCheckingForDuplicates(sellerCleanupAction); //InteractionInstance buyerCleanupAction = // AfterWooHooCleanup.Singleton.CreateInstance(buyer, buyer, // new InteractionPriority(InteractionPriorityLevel.UserDirected), false, false); //buyerCleanupAction.MustRun = true; //buyer.InteractionQueue.AddAfterCheckingForDuplicates(buyerCleanupAction); } else { Message.Sender.Show("All the beds in this lot are already in use"); } } } catch (Exception e) { Message.Sender.ShowError(base.Target, "Buy WooHoo failed", false, e); } return(true); }
public override string GetInteractionName(Sim actor, Sim target, InteractionObjectPair interaction) { string price = ""; CourtesansPerfume perfume = Courtesan.GetPerfume(target); if (perfume != null) { int total = perfume.PricePerWoohoo + perfume.PimpShare; if (total > 0) { price = "(§" + total.ToString() + ")"; } } return("Ask to WooHoo " + price); }
public void Pay(Sim buyer, Sim seller) { CourtesansPerfume perfume = Courtesan.GetPerfume(seller); if (perfume != null) { int basePay = perfume.PricePerWoohoo; int pimpFee = perfume.PimpShare; int total = basePay + pimpFee; if (total < buyer.FamilyFunds) { buyer.ModifyFunds(-total); seller.ModifyFunds(basePay); Sim pimp = perfume.Pimp; if (pimp != null) { pimp.ModifyFunds(pimpFee); } } } }
public override bool Test(Sim actor, Sim target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { bool result = false; CourtesansPerfume perfume = Courtesan.GetPerfume(target); if (perfume != null) { if (perfume.GenderMatches(actor, target)) { result = IsTalkingToOrAlreadyBuying(actor, target, result); } } else { if (Message.Sender.IsDebugging()) { Message.Sender.Debug(this, "action is not enabled since perfume does not exist"); } } return(result); }
public override void StartRole() { if (Message.Sender.IsDebugging()) { Message.Sender.Debug(this, mSim.FullName + " role starting..."); } try { if (isRoleEnabledOnThisLot()) { if (!this.mIsActive && this.mSim.IsValidDescription) { InstantiateSim(); this.SwitchIntoOutfit(); Sim sim = this.mSim.CreatedSim; if (sim != null) { AddNeededMotives(); CourtesansPerfume perfume = GetPerfume(); if (perfume != null) { this.mIsActive = true; sim.RemoveInteractionByType(GoToALot.Singleton); sim.AddInteraction(GoToALot.Singleton); MakeSimComeToRoleLot(); ProtectSimFromStoryProgression(); perfume.AddRoleGivingInteraction(sim); perfume.PushRoleStartingInteraction(sim); } } } } } catch (Exception e) { Message.Sender.ShowError(this, "Cannot start the role", false, e); } }