From dea722a9ac04d7e3113b8721945d87d957ea2d89 Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Fri, 3 Sep 2021 19:33:33 -0700
Subject: [PATCH 1/3] Switch random event framework over to pure JS. Events are
 no longer responsible for flow control and should not set `V.nextLink`
 (regardless of event type), except in special circumstances.

---
 src/005-passages/eventsPassages.js            |  22 +--
 .../events/CMREFS/refsTotallyLegitCatgirls.js |   2 -
 src/Mods/Catmod/events/CMRESS/annoyingcat.js  |   6 +-
 src/Mods/Catmod/events/CMRESS/catLove.js      |   6 +-
 src/Mods/Catmod/events/CMRESS/catPresent.js   |   6 +-
 src/Mods/Catmod/events/CMRESS/catWorship.js   |   6 +-
 src/Mods/Catmod/events/CMRESS/lazyCat.js      |   6 +-
 src/Mods/Catmod/events/CMRESS/spoiledCat.js   |   6 +-
 src/Mods/Catmod/events/SoSBombing.js          |   2 -
 src/Mods/Catmod/events/SoSSniper.js           |   2 -
 src/Mods/Catmod/events/SoSassassin.js         |   2 -
 .../events/nonRandom/bodypuristprotest.js     |   3 -
 .../Catmod/events/nonRandom/bodypuristriot.js |   2 -
 .../events/nonRandom/projectNBlowingTheLid.js |   2 -
 .../events/nonRandom/projectNBubbles.js       |   3 -
 .../events/nonRandom/projectNComplete.js      |   3 -
 .../events/nonRandom/projectNInitialized.js   |   3 -
 .../events/nonRandom/projectNMoMoney.js       |   2 -
 .../events/nonRandom/projectNSaboteur.js      |   2 -
 .../events/nonRandom/projectNTechRelease.js   |   3 -
 src/Mods/Catmod/events/scheduled/vatcatboy.js |   2 -
 .../Catmod/events/scheduled/vatcatgirl.js     |   2 -
 src/Mods/SecExp/events/secExpSmilingMan0.js   |   2 -
 src/Mods/SecExp/events/secExpSmilingMan1.js   |   2 -
 src/Mods/SecExp/events/secExpSmilingMan2.js   |   2 -
 src/Mods/SecExp/events/secExpSmilingMan3.js   |   1 -
 src/Mods/SpecialForce/NamingColonel.js        |   1 -
 src/Mods/SpecialForce/Proposal.js             |   2 +-
 src/Mods/SpecialForce/TrickShotNight.js       |   2 -
 src/events/JE/jeSlaveDisputeBreedingDeal.js   |   1 -
 src/events/JE/jeSlaveDisputeIndentureDeal.js  |   1 -
 src/events/JE/jeSlaveDisputeMajorityDeal.js   |   1 -
 src/events/JE/jeSlaveDisputeSlaveDeal.js      |   1 -
 src/events/JE/jeSlaveDisputeSlaveTraining.js  |   1 -
 src/events/JE/jeSlaveDisputeVirginityDeal.js  |   1 -
 src/events/PE/UnderageConcubine.js            |   2 -
 src/events/PE/concubineInterview.js           |   2 -
 src/events/PE/peAssociatesPublicSlut.js       |   2 -
 src/events/PE/peCombatTraining.js             |   2 -
 src/events/PE/peHeadgirlConcubine.js          |   2 -
 src/events/PE/peLonelyBodyguard.js            |   3 -
 src/events/PE/pePitFightInvite.js             |   2 -
 src/events/PESS/pessBodyguardBeatdown.js      |   2 -
 src/events/PESS/pessBodyguardBedtime.js       |   2 -
 src/events/PESS/pessDjPublicity.js            |   2 -
 src/events/PESS/pessHeadgirlDickgirl.js       |   2 -
 src/events/PESS/pessLovingConcubine.js        |   2 -
 src/events/PESS/pessLovingHeadgirl.js         |   2 -
 src/events/PESS/pessMadamStrategy.js          |   2 -
 src/events/PESS/pessTiredCollectrix.js        |   2 -
 src/events/PESS/pessTiredMilkmaid.js          |   2 -
 src/events/PESS/pessWorriedHeadgirl.js        |   2 -
 src/events/PESS/pessWorshipfulImpregnatrix.js |   2 -
 .../PETS/petsAggressiveSchoolteacher.js       |   2 -
 src/events/PETS/petsAggressiveWardeness.js    |   2 -
 src/events/PETS/petsComfortingAttendant.js    |   2 -
 src/events/PETS/petsNurseMolestation.js       |   2 -
 src/events/PETS/petsStewardessBeating.js      |   2 -
 src/events/RE/REBusyArcade.js                 |   2 -
 src/events/RE/REBusyBrothel.js                |   2 -
 src/events/RE/REBusyDairy.js                  |   2 -
 .../RE/incest/REresistantmotherdaughter.js    |   2 -
 .../RE/incest/reDevotedMotherDaughter.js      |   2 -
 src/events/RE/incest/reSiblingRevenge.js      |   2 -
 src/events/RE/reAWOL.js                       |   2 -
 src/events/RE/reAnalPunishment.js             |   3 -
 src/events/RE/reArcologyInspection.js         |   2 -
 src/events/RE/reBoomerang.js                  |   2 -
 src/events/RE/reBrothelFunction.js            |   2 -
 src/events/RE/reBusyClub.js                   |   2 -
 src/events/RE/reBusyMasterSuite.js            |   3 -
 src/events/RE/reBusyServantsQuarters.js       |   2 -
 src/events/RE/reCitizenHookup.js              |   2 -
 src/events/RE/reDevotedTwins.js               |   3 -
 src/events/RE/reDevotees.js                   |   2 -
 src/events/RE/reFSNonconformist.js            |   1 -
 src/events/RE/reFemaleArcologyOwner.js        |   3 -
 src/events/RE/reFullBed.js                    |   2 -
 src/events/RE/reHGReplacement.js              |   3 -
 src/events/RE/reLegendaryBalls.js             |   2 -
 src/events/RE/reLegendaryCow.js               |   2 -
 src/events/RE/reLegendaryEntertainer.js       |   2 -
 .../RE/reLegendaryFormerAbolitionist.js       |   3 -
 src/events/RE/reLegendaryWhore.js             |   2 -
 src/events/RE/reLegendaryWomb.js              |   2 -
 src/events/RE/reMaleArcologyOwner.js          |   2 -
 src/events/RE/reMaleCitizenHookup.js          |   3 -
 src/events/RE/reMalefactor.js                 |   2 -
 src/events/RE/reMilfTourist.js                |   3 -
 src/events/RE/reNickname.js                   |   9 --
 src/events/RE/reNoEvent.js                    |  22 +++
 src/events/RE/rePokerNight.js                 |   2 -
 src/events/RE/reRebels.js                     |   3 -
 src/events/RE/reRelationshipAdvice.js         |   3 -
 src/events/RE/reRelativeRecruiter.js          |   2 -
 src/events/RE/reRoyalBlood.js                 |   2 -
 src/events/RE/reShelterInspection.js          |   1 -
 src/events/RE/reShippingContainer.js          |   3 -
 src/events/RE/reShowerPunishment.js           |   3 -
 src/events/RE/reSiblingPlease.js              |   3 -
 src/events/RE/reSlaveMarriage.js              |   3 -
 src/events/RE/reSnatchAndGrabFollowup.js      |   2 -
 src/events/RE/reStaffedMorning.js             |   2 -
 src/events/RE/reStandardPunishment.js         |   2 -
 src/events/RECI/butthole.js                   |   2 -
 src/events/RECI/feminization.js               |   1 -
 src/events/RECI/futa.js                       |   1 -
 src/events/RECI/milf.js                       |   1 -
 src/events/RECI/orientation.js                |   1 -
 src/events/RECI/ugly.js                       |   1 -
 src/events/REFI/reBoobslut.js                 |   2 -
 src/events/REFI/reButtslut.js                 |   2 -
 src/events/REFI/reCumslut.js                  |   4 -
 src/events/REFI/reDominant.js                 |   2 -
 src/events/REFI/reHumiliation.js              |   2 -
 src/events/REFI/reMasochist.js                |   2 -
 src/events/REFI/rePregnancy.js                |   2 -
 src/events/REFI/reSadist.js                   |   2 -
 src/events/REFI/reSubmissive.js               |   2 -
 src/events/REFS/refsBaronDemand.js            |   2 -
 src/events/REFS/refsBodyPurismEncounter.js    |   2 -
 src/events/REFS/refsDeadBaron.js              |   2 -
 .../REFS/refsDegradationistEncounter.js       |   2 -
 src/events/REFS/refsFeast.js                  |   2 -
 src/events/REFS/refsKnightlyDuel.js           |   2 -
 .../refsMaturityPreferentialistEncounter.js   |   2 -
 src/events/REFS/refsPastoralistEncounter.js   |   2 -
 src/events/REFS/refsPaternalistEncounter.js   |   2 -
 .../REFS/refsPhysicalIdealistEncounter.js     |   2 -
 .../refsTransformationFetishismEncounter.js   |   2 -
 src/events/REFS/refsWarhound.js               |   2 -
 .../REFS/refsYouthPreferentialistEncounter.js |   2 -
 src/events/REM/remFluctuations.js             |   2 -
 src/events/REM/remMerger.js                   |   3 -
 src/events/RESS/PAFlirting.js                 |   2 -
 src/events/RESS/ageDifferenceOldPC.js         |   2 -
 src/events/RESS/ageDifferenceYoungPC.js       |   2 -
 src/events/RESS/ampResting.js                 |   2 -
 src/events/RESS/arcadeSadist.js               |   2 -
 src/events/RESS/assFitting.js                 |   2 -
 src/events/RESS/bedSnuggle.js                 |   2 -
 src/events/RESS/birthday.js                   |   2 -
 src/events/RESS/bondageGear.js                |   2 -
 src/events/RESS/breedingBull.js               |   2 -
 src/events/RESS/cockfeederResistance.js       |   7 +-
 src/events/RESS/comfortableSeat.js            |   6 +-
 src/events/RESS/coolerLockin.js               |   2 -
 src/events/RESS/devotedAnalVirgin.js          |   6 +-
 src/events/RESS/devotedEducated.js            |   6 +-
 src/events/RESS/devotedFearfulSlave.js        |   3 -
 src/events/RESS/devotedNympho.js              |   2 -
 src/events/RESS/devotedShortstack.js          |   5 +-
 src/events/RESS/devotedVirgin.js              |   6 +-
 src/events/RESS/devotedWaist.js               |   6 +-
 src/events/RESS/escapee.js                    |   2 -
 src/events/RESS/forbiddenMasturbation.js      |   2 -
 src/events/RESS/frighteningDick.js            |   6 +-
 src/events/RESS/hotPC.js                      |   6 +-
 src/events/RESS/imScared.js                   |   6 +-
 src/events/RESS/impregnationPlease.js         |   2 -
 src/events/RESS/injectionsPlease.js           |   2 -
 src/events/RESS/kitchenMolestation.js         |   6 +-
 src/events/RESS/languageLesson.js             |   2 -
 src/events/RESS/lazyEvening.js                |   2 -
 src/events/RESS/masterfulWhore.js             |   2 -
 src/events/RESS/meanGirls.js                  |   2 -
 src/events/RESS/milkgasm.js                   |   2 -
 src/events/RESS/mindbrokenMorning.js          |   2 -
 src/events/RESS/modestClothes.js              |   2 -
 src/events/RESS/moistPussy.js                 |   2 -
 src/events/RESS/muscles.js                    |   2 -
 src/events/RESS/mutinyAttempt.js              |   2 -
 src/events/RESS/nightVisit.js                 |   2 -
 src/events/RESS/obedientAddict.js             |   6 +-
 src/events/RESS/obedientBitchy.js             |   6 +-
 src/events/RESS/obedientGirlish.js            |   6 +-
 src/events/RESS/obedientIdiot.js              |   6 +-
 src/events/RESS/obedientShemale.js            |   6 +-
 src/events/RESS/passingDeclaration.js         |   6 +-
 src/events/RESS/penitent.js                   |   2 -
 src/events/RESS/permittedMasturbation.js      |   2 -
 src/events/RESS/plimbHelp.js                  |   3 -
 src/events/RESS/plugDisobedience.js           |   2 -
 src/events/RESS/refreshmentDelivery.js        |   2 -
 src/events/RESS/restrictedSmart.js            |   2 -
 src/events/RESS/retchingCum.js                |   2 -
 src/events/RESS/review/PAservant.js           |   2 -
 src/events/RESS/review/aGift.js               |   2 -
 src/events/RESS/review/ageImplant.js          |   2 -
 src/events/RESS/review/ampDevoted.js          |   2 -
 src/events/RESS/review/araAra.js              |   2 -
 src/events/RESS/review/backStretch.js         |   2 -
 src/events/RESS/review/badDream.js            |   2 -
 src/events/RESS/review/bondedLove.js          |   2 -
 .../RESS/review/breastExpansionBlues.js       |   2 -
 src/events/RESS/review/cageRelief.js          |   2 -
 src/events/RESS/review/confidentTanning.js    |   2 -
 src/events/RESS/review/cowMilking.js          |   2 -
 src/events/RESS/review/cumslutWhore.js        |   2 -
 src/events/RESS/review/desperateNull.js       |   2 -
 src/events/RESS/review/desperatelyHorny.js    |   2 -
 src/events/RESS/review/devotedExhibition.js   |   2 -
 src/events/RESS/review/devotedLotion.js       |   2 -
 src/events/RESS/review/devotedOld.js          |   2 -
 src/events/RESS/review/dickWringing.js        |   2 -
 src/events/RESS/review/dickgirlPC.js          |   3 -
 src/events/RESS/review/diet.js                |   2 -
 src/events/RESS/review/extremeAphrodisiacs.js |   2 -
 src/events/RESS/review/fearfulBalls.js        |   2 -
 src/events/RESS/review/fearfulHumiliation.js  |   2 -
 src/events/RESS/review/firstPeriod.js         |   2 -
 src/events/RESS/review/fucktoyTribbing.js     |   2 -
 src/events/RESS/review/gaggedSlave.js         |   2 -
 src/events/RESS/review/gapedAsshole.js        |   2 -
 src/events/RESS/review/happyDance.js          |   2 -
 src/events/RESS/review/hatesOral.js           |   2 -
 src/events/RESS/review/heavyPiercing.js       |   2 -
 src/events/RESS/review/heels_event.js         |   2 -
 src/events/RESS/review/hormoneDysfunction.js  |   2 -
 src/events/RESS/review/hugeNaturals.js        |   2 -
 src/events/RESS/review/hugeTits.js            |   3 -
 src/events/RESS/review/hugelyPregnant.js      |   2 -
 src/events/RESS/review/hyperpregStuck.js      |   2 -
 src/events/RESS/review/ignorantHorny.js       |   2 -
 src/events/RESS/review/implantInspection.js   |   2 -
 src/events/RESS/review/inconvenientLabia.js   |   2 -
 src/events/RESS/review/likeMe.js              |   2 -
 src/events/RESS/review/looseButtslut.js       |   2 -
 .../RESS/review/masterfulEntertainer.js       |   2 -
 src/events/RESS/review/millenary.js           |   2 -
 src/events/RESS/review/modsPlease.js          |   2 -
 src/events/RESS/review/newlyDevotedSunrise.js |   2 -
 src/events/RESS/review/niceGuys.js            |   2 -
 src/events/RESS/review/notMyName.js           |   2 -
 src/events/RESS/review/nymphoWithAssistant.js |   2 -
 src/events/RESS/review/objectifyingVisit.js   |   2 -
 src/events/RESS/review/orchiectomyPlease.js   |   2 -
 src/events/RESS/review/rebelliousArrogant.js  |   2 -
 src/events/RESS/review/resistantAnalVirgin.js |   2 -
 src/events/RESS/review/resistantGelding.js    |   2 -
 src/events/RESS/review/resistantShower.js     |   2 -
 .../RESS/review/restrictedProfession.js       |   2 -
 src/events/RESS/review/servantMaid.js         |   2 -
 src/events/RESS/review/sexySuccubus.js        |   2 -
 src/events/RESS/review/shapedAreolae.js       |   2 -
 src/events/RESS/review/shiftDoorframe.js      |   2 -
 src/events/RESS/review/shiftMasturbation.js   |   2 -
 src/events/RESS/review/shiftSleep.js          |   2 -
 src/events/RESS/review/showerSlip.js          |   2 -
 src/events/RESS/review/slaveDickHuge.js       |   2 -
 src/events/RESS/review/sleepingAmbivalent.js  |   2 -
 src/events/RESS/review/soreAss.js             |   2 -
 src/events/RESS/review/soreShoulders.js       |   2 -
 src/events/RESS/review/spaBoobs.js            |   2 -
 src/events/RESS/review/subjugationBlues.js    |   2 -
 src/events/RESS/review/surgeryAddict.js       |   2 -
 src/events/RESS/review/surprisingWakeup.js    |   2 -
 src/events/RESS/review/tendonFall.js          |   2 -
 src/events/RESS/review/terrifiedInspection.js |   2 -
 .../RESS/review/tittymonsterInspection.js     |   2 -
 src/events/RESS/review/torpedoSqueeze.js      |   2 -
 src/events/RESS/review/transitionAnxiety.js   |   2 -
 src/events/RESS/review/trustingHG.js          |   2 -
 src/events/RESS/review/unhappyVirgin.js       |   2 -
 src/events/RESS/review/usedWhore.js           |   2 -
 src/events/RESS/review/vocalDisobedience.js   |   2 -
 src/events/RESS/review/wetDreams.js           |   6 +-
 src/events/RESS/scrubbing.js                  |   2 -
 src/events/RESS/serveThePublicDevoted.js      |   2 -
 src/events/RESS/slaveOnSlaveClit.js           |   6 +-
 src/events/RESS/slaveOnSlaveDick.js           |   6 +-
 src/events/RESS/solitaryDesperation.js        |   2 -
 src/events/RESS/suppositoryResistance.js      |   6 +-
 src/events/RESS/tooThinForCumDiet.js          |   1 -
 src/events/RESS/waistlineWoes.js              |   2 -
 src/events/RESS/whoreRebellious.js            |   2 -
 src/events/RETS/reAnalCowgirl.js              |   2 -
 src/events/RETS/reBoobCollision.js            |   2 -
 src/events/RETS/reCockmilkInterception.js     |   2 +-
 src/events/RETS/reDatePlease.js               |   2 +-
 src/events/RETS/reFucktoyPrefersRelative.js   |   2 -
 src/events/RETS/reIfYouEnjoyIt.js             |   1 -
 src/events/RETS/reIncestuousNursing.js        |   1 -
 src/events/RETS/reInterslaveBegging.js        |   1 -
 src/events/RETS/reRepressedAnalVirgin.js      |   2 -
 src/events/RETS/reSadisticDescription.js      |   2 -
 src/events/RETS/reShowerForce.js              |   2 -
 src/events/RETS/reSiblingTussle.js            |   2 -
 src/events/RETS/reSimpleAssault.js            |   6 +-
 src/events/RETS/reTasteTest.js                |   3 -
 src/events/RETS/reTopExhaustion.js            |   6 +-
 src/events/legacy/PESS.tw                     |  52 -------
 src/events/legacy/PETS.tw                     |  53 -------
 src/events/legacy/RECI.tw                     |  92 -----------
 src/events/legacy/REFI.tw                     |  52 -------
 src/events/legacy/RESS.tw                     |  65 --------
 src/events/legacy/RESSTR.tw                   |  77 ----------
 src/events/legacy/RETS.tw                     |  56 -------
 src/events/nonRandom/mercs/pSlaveMedic.js     |   4 +-
 src/events/nonRandom/pSchoolSuggestion.js     |   2 -
 .../nonRandom/rival/pRivalInitiation.js       |   2 -
 src/events/nonRandom/tfsFarmUpgrade.js        |   2 -
 src/events/nonRandomEvent.js                  |  38 ++---
 src/events/randomEvent.js                     | 143 ++++++++++++++----
 src/events/reRecruit.js                       |   1 -
 .../recETS/recetsAddictMotherDaughter.js      |   2 -
 .../recETS/recetsDesperateBroodmother.js      |   2 -
 src/events/recETS/recetsIdenticalHermPair.js  |   2 -
 src/events/recETS/recetsIdenticalPair.js      |   2 -
 .../recETS/recetsIncestBrotherBrother.js      |   2 -
 .../recETS/recetsIncestBrotherSister.js       |   2 -
 .../recETS/recetsIncestFatherDaughter.js      |   2 -
 src/events/recETS/recetsIncestFatherSon.js    |   2 -
 .../recETS/recetsIncestMotherDaughter.js      |   2 -
 src/events/recETS/recetsIncestMotherSon.js    |   2 -
 src/events/recETS/recetsIncestSisterSister.js |   2 -
 src/events/recETS/recetsIncestTwinBrother.js  |   2 -
 src/events/recETS/recetsIncestTwinSister.js   |   2 -
 src/events/recETS/recetsIncestTwinsMixed.js   |   2 -
 src/events/recETS/recetsMatchedPair.js        |   2 -
 src/events/recETS/recetsMismatchedPair.js     |   2 -
 src/events/recETS/recetsPoshMotherDaughter.js |   2 -
 src/events/recFS/recfsArabianRevivalist.js    |   1 -
 src/events/recFS/recfsAssetExpansionist.js    |   1 -
 src/events/recFS/recfsAssetExpansionistTwo.js |   1 -
 src/events/recFS/recfsAztecRevivalist.js      |   1 -
 src/events/recFS/recfsBodyPurist.js           |   1 -
 src/events/recFS/recfsBodyPuristTwo.js        |   1 -
 src/events/recFS/recfsChattelReligionist.js   |   1 -
 .../recFS/recfsChattelReligionistTwo.js       |   1 -
 src/events/recFS/recfsChineseRevivalist.js    |   1 -
 src/events/recFS/recfsDegradationist.js       |   1 -
 src/events/recFS/recfsDegradationistTwo.js    |   1 -
 src/events/recFS/recfsEdoRevivalist.js        |   1 -
 .../recfsFSEgyptianRevivalistAcquisition.js   |   4 +-
 src/events/recFS/recfsGenderFundamentalist.js |   1 -
 .../recFS/recfsGenderFundamentalistTwo.js     |   1 -
 src/events/recFS/recfsGenderRadicalist.js     |   1 -
 src/events/recFS/recfsGenderRadicalistTwo.js  |   1 -
 src/events/recFS/recfsHedonisticDecadence.js  |   1 -
 .../recFS/recfsHedonisticDecadenceTwo.js      |   1 -
 .../recFS/recfsIntellectualDependency.js      |   1 -
 .../recFS/recfsIntellectualDependencyTwo.js   |   1 -
 .../recFS/recfsMaturityPreferentialist.js     |   1 -
 .../recFS/recfsMaturityPreferentialistTwo.js  |   1 -
 src/events/recFS/recfsNeoImperialist.js       |   1 -
 src/events/recFS/recfsPastoralist.js          |   1 -
 src/events/recFS/recfsPastoralistTwo.js       |   1 -
 src/events/recFS/recfsPaternalist.js          |   1 -
 src/events/recFS/recfsPaternalistTwo.js       |   1 -
 src/events/recFS/recfsPetiteAdmiration.js     |   1 -
 src/events/recFS/recfsPetiteAdmirationTwo.js  |   1 -
 src/events/recFS/recfsPhysicalIdealist.js     |   1 -
 src/events/recFS/recfsPhysicalIdealistTwo.js  |   1 -
 src/events/recFS/recfsRepopulationEfforts.js  |   1 -
 .../recFS/recfsRepopulationEffortsTwo.js      |   1 -
 src/events/recFS/recfsRestart.js              |   1 -
 src/events/recFS/recfsRestartTwo.js           |   1 -
 src/events/recFS/recfsRomanRevivalist.js      |   1 -
 src/events/recFS/recfsSlaveProfessionalism.js |   1 -
 .../recFS/recfsSlaveProfessionalismTwo.js     |   1 -
 src/events/recFS/recfsSlimnessEnthusiast.js   |   1 -
 .../recFS/recfsSlimnessEnthusiastTwo.js       |   1 -
 .../recFS/recfsStatuesqueGlorification.js     |   1 -
 .../recFS/recfsStatuesqueGlorificationTwo.js  |   1 -
 src/events/recFS/recfsSubjugationist.js       |   1 -
 src/events/recFS/recfsSubjugationistTwo.js    |   1 -
 src/events/recFS/recfsSupremacist.js          |   1 -
 src/events/recFS/recfsSupremacistTwo.js       |   1 -
 .../recFS/recfsTransformationFetishist.js     |   1 -
 .../recFS/recfsTransformationFetishistTwo.js  |   1 -
 src/events/recFS/recfsYouthPreferentialist.js |   2 -
 .../recFS/recfsYouthPreferentialistTwo.js     |   1 -
 .../scheduled/JobFulfillmentCenterDelivery.js |   2 -
 src/events/scheduled/assholeKnight.js         |   2 -
 src/events/scheduled/newBaron.js              |   2 -
 src/events/scheduled/pitFight.js              |   4 -
 src/events/scheduled/poorKnight.js            |   3 -
 src/events/scheduled/seCoursing.js            |   2 -
 src/events/scheduled/seCustomSlaveDelivery.js |   2 -
 src/events/scheduled/seFCNNstation.js         |   2 -
 src/events/scheduled/seFCTVinstall.js         |   2 -
 src/events/scheduled/seFctvRemote.js          |   2 -
 src/events/scheduled/seFctvWatch.js           |   2 -
 src/events/scheduled/seHuskSlaveDelivery.js   |   4 +-
 src/events/scheduled/seIndependenceDay.js     |   2 -
 src/events/scheduled/seNicaeaCouncil.js       |   3 -
 src/events/scheduled/sePCBirthday.js          |   3 -
 src/events/scheduled/sePlayerBirth.js         |   2 -
 src/events/scheduled/seRaiding.js             |   2 -
 src/events/scheduled/seRecruiterSuccess.js    |   2 -
 src/events/schools/resEndowment.js            |   2 -
 src/events/schools/resFailure.js              |   3 -
 src/events/schools/resMove.js                 |   3 -
 src/events/schools/resSale.js                 |   3 -
 src/uncategorized/randomEventRoll.tw          |  12 --
 src/uncategorized/randomEventSelect.tw        |  38 -----
 src/uncategorized/randomIndividualEvent.tw    |  33 ----
 src/uncategorized/randomNonindividualEvent.tw |  47 ------
 src/uncategorized/reNoEvent.tw                |  23 ---
 src/uncategorized/rieEligibilityCheck.tw      |  10 --
 401 files changed, 196 insertions(+), 1503 deletions(-)
 create mode 100644 src/events/RE/reNoEvent.js
 delete mode 100644 src/events/legacy/PESS.tw
 delete mode 100644 src/events/legacy/PETS.tw
 delete mode 100644 src/events/legacy/RECI.tw
 delete mode 100644 src/events/legacy/REFI.tw
 delete mode 100644 src/events/legacy/RESS.tw
 delete mode 100644 src/events/legacy/RESSTR.tw
 delete mode 100644 src/events/legacy/RETS.tw
 delete mode 100644 src/uncategorized/randomEventRoll.tw
 delete mode 100644 src/uncategorized/randomEventSelect.tw
 delete mode 100644 src/uncategorized/randomIndividualEvent.tw
 delete mode 100644 src/uncategorized/randomNonindividualEvent.tw
 delete mode 100644 src/uncategorized/reNoEvent.tw
 delete mode 100644 src/uncategorized/rieEligibilityCheck.tw

diff --git a/src/005-passages/eventsPassages.js b/src/005-passages/eventsPassages.js
index 128bd340f2e..e81aabf08a7 100644
--- a/src/005-passages/eventsPassages.js
+++ b/src/005-passages/eventsPassages.js
@@ -1,11 +1,5 @@
 /* ### Non Random Events ### */
 
-new App.DomPassage("Nonrandom Event",
-	() => {
-		return nonRandomEvent();
-	}
-);
-
 new App.DomPassage("conflictReport",
 	() => {
 		V.nextButton = "Continue";
@@ -22,13 +16,21 @@ new App.DomPassage("conflictHandler",
 
 /* ### Random Events ### */
 
-new App.DomPassage("JS Random Event",
+new App.DomPassage("Random Individual Event",
+	() => {
+		V.nextButton = "Continue";
+		V.nextLink = "Next Week";
+
+		return App.Events.playRandomIndividualEvent();
+	}
+);
+
+new App.DomPassage("Random Nonindividual Event",
 	() => {
 		V.nextButton = "Continue";
+		V.nextLink = "Random Individual Event";
 
-		const d = document.createElement("div");
-		V.event.execute(d);
-		return d;
+		return App.Events.playRandomNonindividualEvent();
 	}
 );
 
diff --git a/src/Mods/Catmod/events/CMREFS/refsTotallyLegitCatgirls.js b/src/Mods/Catmod/events/CMREFS/refsTotallyLegitCatgirls.js
index 7e365d00f3d..a981b6c91b8 100644
--- a/src/Mods/Catmod/events/CMREFS/refsTotallyLegitCatgirls.js
+++ b/src/Mods/Catmod/events/CMREFS/refsTotallyLegitCatgirls.js
@@ -6,8 +6,6 @@ App.Events.refsTotallyLegitCatgirls = class refsTotallyLegitCatgirls extends App
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave("XX", {minAge: 16, maxAge: 24});
 		slave.origin = "You purchased $him from a reputable street merchant selling you completely legitimate catgirls.";
 		slave.tailShape = "neko";
diff --git a/src/Mods/Catmod/events/CMRESS/annoyingcat.js b/src/Mods/Catmod/events/CMRESS/annoyingcat.js
index 73c9f2f4196..931b3c4cfa7 100644
--- a/src/Mods/Catmod/events/CMRESS/annoyingcat.js
+++ b/src/Mods/Catmod/events/CMRESS/annoyingcat.js
@@ -22,11 +22,7 @@ App.Events.CMRESSAnnoyingCat = class CMRESSAnnoyingCat extends App.Events.BaseEv
 			He, he, his, him, girl
 		} = getPronouns(eventSlave);
 		const {title} = getEnunciation(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/Mods/Catmod/events/CMRESS/catLove.js b/src/Mods/Catmod/events/CMRESS/catLove.js
index b7b80e50b04..12c4835ee9e 100644
--- a/src/Mods/Catmod/events/CMRESS/catLove.js
+++ b/src/Mods/Catmod/events/CMRESS/catLove.js
@@ -22,11 +22,7 @@ App.Events.CMRESSCatLove = class CMRESSCatLove extends App.Events.BaseEvent {
 			He, he, his, His, him, himself, girl
 		} = getPronouns(eventSlave);
 		const {title} = getEnunciation(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/Mods/Catmod/events/CMRESS/catPresent.js b/src/Mods/Catmod/events/CMRESS/catPresent.js
index b34b260f809..2fb3c425c12 100644
--- a/src/Mods/Catmod/events/CMRESS/catPresent.js
+++ b/src/Mods/Catmod/events/CMRESS/catPresent.js
@@ -22,11 +22,7 @@ App.Events.CMRESSCatPresent = class CMRESSCatPresent extends App.Events.BaseEven
 			He, he, his, him, himself, His, girl
 		} = getPronouns(eventSlave);
 		const {title} = getEnunciation(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/Mods/Catmod/events/CMRESS/catWorship.js b/src/Mods/Catmod/events/CMRESS/catWorship.js
index b7c0a356796..de1e1a6f85f 100644
--- a/src/Mods/Catmod/events/CMRESS/catWorship.js
+++ b/src/Mods/Catmod/events/CMRESS/catWorship.js
@@ -23,11 +23,7 @@ App.Events.CMRESSCatWorship = class CMRESSCatWorship extends App.Events.BaseEven
 		const {
 			He, he, his, him, girl, himself
 		} = getPronouns(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/Mods/Catmod/events/CMRESS/lazyCat.js b/src/Mods/Catmod/events/CMRESS/lazyCat.js
index 2add5b05d38..2fb4dd1a0ce 100644
--- a/src/Mods/Catmod/events/CMRESS/lazyCat.js
+++ b/src/Mods/Catmod/events/CMRESS/lazyCat.js
@@ -21,11 +21,7 @@ App.Events.CMRESSLazyCat = class CMRESSLazyCat extends App.Events.BaseEvent {
 			He, he, his, him, girl
 		} = getPronouns(eventSlave);
 		const {title} = getEnunciation(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/Mods/Catmod/events/CMRESS/spoiledCat.js b/src/Mods/Catmod/events/CMRESS/spoiledCat.js
index 816fc6464c2..6b143ecebf3 100644
--- a/src/Mods/Catmod/events/CMRESS/spoiledCat.js
+++ b/src/Mods/Catmod/events/CMRESS/spoiledCat.js
@@ -23,11 +23,7 @@ App.Events.CMRESSSpoiledCat = class CMRESSSpoiledCat extends App.Events.BaseEven
 		const {
 			He, he, his, him, girl
 		} = getPronouns(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/Mods/Catmod/events/SoSBombing.js b/src/Mods/Catmod/events/SoSBombing.js
index 91544b8d884..12a0f77e53f 100644
--- a/src/Mods/Catmod/events/SoSBombing.js
+++ b/src/Mods/Catmod/events/SoSBombing.js
@@ -9,9 +9,7 @@ App.Events.RESosBombing = class RESosBombing extends App.Events.BaseEvent {
 	execute(node) {
 		let r = [];
 
-		V.nextButton = "Continue";
 		V.encyclopedia = "The Sons of Sekhmet";
-		V.nextLink = "RIE Eligibility Check";
 
 		if (either(1, 2, 3, 4) === 1) {
 			V.sekhmetBombPlot = 1;
diff --git a/src/Mods/Catmod/events/SoSSniper.js b/src/Mods/Catmod/events/SoSSniper.js
index 9753fdc0683..858fc7a2031 100644
--- a/src/Mods/Catmod/events/SoSSniper.js
+++ b/src/Mods/Catmod/events/SoSSniper.js
@@ -9,9 +9,7 @@ App.Events.RESosSniper = class RESosSniper extends App.Events.BaseEvent {
 	execute(node) {
 		let r = [];
 
-		V.nextButton = "Continue";
 		V.encyclopedia = "The Sons of Sekhmet";
-		V.nextLink = "RIE Eligibility Check";
 
 		if (S.Bodyguard) {
 			App.Events.drawEventArt(node, S.Bodyguard);
diff --git a/src/Mods/Catmod/events/SoSassassin.js b/src/Mods/Catmod/events/SoSassassin.js
index e7157f5184b..0d8ba3cd3cf 100644
--- a/src/Mods/Catmod/events/SoSassassin.js
+++ b/src/Mods/Catmod/events/SoSassassin.js
@@ -9,9 +9,7 @@ App.Events.RESosAssassin = class RESosAssassin extends App.Events.BaseEvent {
 	execute(node) {
 		let r = [];
 
-		V.nextButton = "Continue";
 		V.encyclopedia = "The Sons of Sekhmet";
-		V.nextLink = "RIE Eligibility Check";
 
 		if (S.Bodyguard) {
 			App.Events.drawEventArt(node, S.Bodyguard);
diff --git a/src/Mods/Catmod/events/nonRandom/bodypuristprotest.js b/src/Mods/Catmod/events/nonRandom/bodypuristprotest.js
index ea5f5749af6..014791f4479 100644
--- a/src/Mods/Catmod/events/nonRandom/bodypuristprotest.js
+++ b/src/Mods/Catmod/events/nonRandom/bodypuristprotest.js
@@ -12,9 +12,6 @@ App.Events.SEBodyPuristProtest = class SEBodyPuristProtest extends App.Events.Ba
 		let r = [];
 		V.puristRiotDone = 1;
 
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
-
 		if (V.arcologies[0].FSBodyPurist !== "unset") {
 			repX(-1000, "event");
 			V.arcologies[0].prosperity -= 3;
diff --git a/src/Mods/Catmod/events/nonRandom/bodypuristriot.js b/src/Mods/Catmod/events/nonRandom/bodypuristriot.js
index ede19a8e2a6..ba0fea2e0dc 100644
--- a/src/Mods/Catmod/events/nonRandom/bodypuristriot.js
+++ b/src/Mods/Catmod/events/nonRandom/bodypuristriot.js
@@ -12,8 +12,6 @@ App.Events.SEBodyPuristRiot = class SEBodyPuristRiot extends App.Events.BaseEven
 		let r = [];
 		V.puristRiotDone = 1;
 
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		if (V.arcologies[0].FSBodyPurist !== "unset") {
 			repX(-2000, "event");
 			cashX(-18000, "Body purist Riots");
diff --git a/src/Mods/Catmod/events/nonRandom/projectNBlowingTheLid.js b/src/Mods/Catmod/events/nonRandom/projectNBlowingTheLid.js
index f32d82f50bf..8385c652371 100644
--- a/src/Mods/Catmod/events/nonRandom/projectNBlowingTheLid.js
+++ b/src/Mods/Catmod/events/nonRandom/projectNBlowingTheLid.js
@@ -9,8 +9,6 @@ App.Events.SEProjectNblowingthelid = class SEProjectNblowingthelid extends App.E
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		V.encyclopedia = "The Sons of Sekhmet";
 		V.projectN.status = 9;
 		V.projectN.public = 1;
diff --git a/src/Mods/Catmod/events/nonRandom/projectNBubbles.js b/src/Mods/Catmod/events/nonRandom/projectNBubbles.js
index 5f3cd707163..e4942cf72d3 100644
--- a/src/Mods/Catmod/events/nonRandom/projectNBubbles.js
+++ b/src/Mods/Catmod/events/nonRandom/projectNBubbles.js
@@ -11,9 +11,6 @@ App.Events.SEProjectNbubbles = class SEProjectNbubbles extends App.Events.BaseEv
 		V.projectN.status = 4;
 		V.projectN.phase3 = App.Events.effectiveWeek();
 
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
-
 		App.Events.addParagraph(node, [`You check in on the genelab, and are pleased to see that project N is making a great deal of progress. What was once an indistinguishable fleshy mass in a tube of mysterious green liquid looks now more like a small, unconscious humanoid body, pink-fleshed and nude, with a set of pointy triangular ears atop its bald head that vaguely resemble a cat. Doctor Nieskowitz steps up to you as you examine the growing body, actually smiling for once.`]);
 		App.Events.addParagraph(node, [`"Ah, I see you've seen our latest progress. I'm quite proud of the team's work so far, you know - five months ago I would have said this kind of genetic splicing was simply impossible. But there's no better scientific feeling than proving yourself wrong, eh? Anyway, we've started to refer to the subject as 'Bubbles', on account of the-" The doctor is interrupted by a slight thrashing movement from the unconscious body, which produces a short span of bubbling within the tube's liquid. "- Well, that. But anyway, since you're funding the project and she'll be your property once we finish, I thought it best to ask you your opinion on the matter of a real name before we proceed any further."`]);
 
diff --git a/src/Mods/Catmod/events/nonRandom/projectNComplete.js b/src/Mods/Catmod/events/nonRandom/projectNComplete.js
index d298a67267f..f8047469b77 100644
--- a/src/Mods/Catmod/events/nonRandom/projectNComplete.js
+++ b/src/Mods/Catmod/events/nonRandom/projectNComplete.js
@@ -7,9 +7,6 @@ App.Events.SEProjectNComplete = class SEProjectNComplete extends App.Events.Base
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
-
 		V.bodyPuristRiot = 1;
 		V.projectN.public = 1;
 		const slave = GenerateNewSlave("XX", {
diff --git a/src/Mods/Catmod/events/nonRandom/projectNInitialized.js b/src/Mods/Catmod/events/nonRandom/projectNInitialized.js
index cc560021b98..6efec86aa8d 100644
--- a/src/Mods/Catmod/events/nonRandom/projectNInitialized.js
+++ b/src/Mods/Catmod/events/nonRandom/projectNInitialized.js
@@ -9,9 +9,6 @@ App.Events.SEProjectNInitialized = class SEProjectNInitialized extends App.Event
 		V.projectN.status = 2;
 		V.projectN.phase1 = App.Events.effectiveWeek();
 
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
-
 		App.Events.addParagraph(node, [`After giving the order to your personal assistant to begin preparations for your transhumanist genetic engineering project, you spend much of the next week getting in contact with the most renowned geneticists and biologists of the old world. Many of these gray-bearded intellectuals scoff as you initially explain your goal of making a 'catgirl', but change their tune almost immediately when you mention the paycheck attached. By the end of the week, you've acquired an impressive team of high-profile minds en route to the arcology, many of them already setting up workstations and tables full of imported chemicals within your laboratory.`]);
 		App.Events.addParagraph(node, [`The first few days within the lab are spent organizing the new staff's structure; under your supervision, they create a formal research team headed by the ancient Doctor Nieskowitz, dubbed "Project N" both for the research head and as a dry joke by the ever-sardonic science team for their cat focused intentions. As things begin to formalize into the process of initial research, you realize you've got a decision to make before you've even started the project itself - are you going to keep Project N a secret from the rest of your arcology, or immediately bring it out into the public eye?`]);
 
diff --git a/src/Mods/Catmod/events/nonRandom/projectNMoMoney.js b/src/Mods/Catmod/events/nonRandom/projectNMoMoney.js
index 0861486f0f0..3dbf2966157 100644
--- a/src/Mods/Catmod/events/nonRandom/projectNMoMoney.js
+++ b/src/Mods/Catmod/events/nonRandom/projectNMoMoney.js
@@ -8,8 +8,6 @@ App.Events.SEProjectNMoMoney = class SEProjectNMoMoney extends App.Events.BaseEv
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		V.projectN.status = 0;
 		V.projectN.phase2 = App.Events.effectiveWeek();
 
diff --git a/src/Mods/Catmod/events/nonRandom/projectNSaboteur.js b/src/Mods/Catmod/events/nonRandom/projectNSaboteur.js
index 094bc52ce05..6a31f02f69b 100644
--- a/src/Mods/Catmod/events/nonRandom/projectNSaboteur.js
+++ b/src/Mods/Catmod/events/nonRandom/projectNSaboteur.js
@@ -8,8 +8,6 @@ App.Events.SEProjectNSaboteur = class SEProjectNSaboteur extends App.Events.Base
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		V.encyclopedia = "The Sons of Sekhmet";
 		V.projectN.status = 9;
 		V.projectN.phase4 = App.Events.effectiveWeek();
diff --git a/src/Mods/Catmod/events/nonRandom/projectNTechRelease.js b/src/Mods/Catmod/events/nonRandom/projectNTechRelease.js
index 8445fae0166..15ff4bda78f 100644
--- a/src/Mods/Catmod/events/nonRandom/projectNTechRelease.js
+++ b/src/Mods/Catmod/events/nonRandom/projectNTechRelease.js
@@ -9,9 +9,6 @@ App.Events.SEProjectNTechRelease = class SEProjectNTechRelease extends App.Event
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
-
 		App.Events.addParagraph(node, [`Project N is complete. You've successfully engineered the world's first natural catgirl, ${V.subjectDeltaName}, whose face you occasionally see splayed out on some media report excitedly detailing "new scientific innovations". Despite the unwanted attention from radicals and terrorists the project generated, seeing your face displayed in the news as a patron of progress certainly helps to make it feel as though it was all worth it in the end.`]);
 		App.Events.addParagraph(node, [`But even though the project's been finished, you still have one last decision to make. Media attention in the wake of ${V.subjectDeltaName}'s release has generated significant public interest in the technologies and documentation used in project N, and as the sole proprietor of the tech, you've received generous offers from other arcology owners interested in creating their own catgirls along with public petitions to release all documents for public use. If you don't release the project N tech now, it's possible that a competitor might figure out how to engineer their own catgirls in the future, so if you want to capitalize on the short-lived media craze for either public face or money, it'd be best to make a decision on the matter immediately.`]);
 
diff --git a/src/Mods/Catmod/events/scheduled/vatcatboy.js b/src/Mods/Catmod/events/scheduled/vatcatboy.js
index f2363120629..b9fde211ffb 100644
--- a/src/Mods/Catmod/events/scheduled/vatcatboy.js
+++ b/src/Mods/Catmod/events/scheduled/vatcatboy.js
@@ -7,8 +7,6 @@ App.Events.SEVatCatBoy = class SEVatCatBoy extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		const slave = GenerateNewSlave("XY", {
 			minAge: 16, maxAge: 16, nationality: "Stateless", disableDisability: 1, race: "catgirl"
 		});
diff --git a/src/Mods/Catmod/events/scheduled/vatcatgirl.js b/src/Mods/Catmod/events/scheduled/vatcatgirl.js
index 4acf7fa5312..48d6e2e281a 100644
--- a/src/Mods/Catmod/events/scheduled/vatcatgirl.js
+++ b/src/Mods/Catmod/events/scheduled/vatcatgirl.js
@@ -7,8 +7,6 @@ App.Events.SEVatCatGirl = class SEVatCatGirl extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		const slave = GenerateNewSlave("XX", {
 			minAge: 16, maxAge: 16, nationality: "Stateless", disableDisability: 1, race: "catgirl"
 		});
diff --git a/src/Mods/SecExp/events/secExpSmilingMan0.js b/src/Mods/SecExp/events/secExpSmilingMan0.js
index f7ac2f74f01..b7ba7154e00 100644
--- a/src/Mods/SecExp/events/secExpSmilingMan0.js
+++ b/src/Mods/SecExp/events/secExpSmilingMan0.js
@@ -10,8 +10,6 @@ App.Events.secExpSmilingMan0 = class secExpSmilingMan0 extends App.Events.BaseEv
 
 	execute(node) {
 		let r = [];
-		V.nextButton = "Continue";
-		V.nextLink = "Random Nonindividual Event";
 		V.SecExp.smilingMan.progress++;
 
 		const {heA} = getPronouns(assistant.pronouns().main).appendSuffix("A");
diff --git a/src/Mods/SecExp/events/secExpSmilingMan1.js b/src/Mods/SecExp/events/secExpSmilingMan1.js
index 91a47b57f7c..4197d1c030b 100644
--- a/src/Mods/SecExp/events/secExpSmilingMan1.js
+++ b/src/Mods/SecExp/events/secExpSmilingMan1.js
@@ -10,8 +10,6 @@ App.Events.secExpSmilingMan1 = class secExpSmilingMan1 extends App.Events.BaseEv
 
 	execute(node) {
 		let r = [];
-		V.nextButton = "Continue";
-		V.nextLink = "Random Nonindividual Event";
 		V.SecExp.smilingMan.progress++;
 
 		const {hisA, heA, himA} = getPronouns(assistant.pronouns().main).appendSuffix("A");
diff --git a/src/Mods/SecExp/events/secExpSmilingMan2.js b/src/Mods/SecExp/events/secExpSmilingMan2.js
index 8cccd4aadd3..d6b439c9896 100644
--- a/src/Mods/SecExp/events/secExpSmilingMan2.js
+++ b/src/Mods/SecExp/events/secExpSmilingMan2.js
@@ -10,8 +10,6 @@ App.Events.secExpSmilingMan2 = class secExpSmilingMan2 extends App.Events.BaseEv
 
 	execute(node) {
 		let r = [];
-		V.nextButton = "Continue";
-		V.nextLink = "Random Nonindividual Event";
 		V.SecExp.smilingMan.progress++;
 
 		const {hisA} = getPronouns(assistant.pronouns().main).appendSuffix("A");
diff --git a/src/Mods/SecExp/events/secExpSmilingMan3.js b/src/Mods/SecExp/events/secExpSmilingMan3.js
index c658b0b6e9b..bbb26716209 100644
--- a/src/Mods/SecExp/events/secExpSmilingMan3.js
+++ b/src/Mods/SecExp/events/secExpSmilingMan3.js
@@ -159,7 +159,6 @@ App.Events.secExpSmilingMan3 = class secExpSmilingMan3 extends App.Events.BaseEv
 				const frag = new DocumentFragment();
 				let r = [];
 				V.nextButton = "Continue";
-				V.nextLink = "Random Nonindividual Event";
 				App.Utils.scheduleSidebarRefresh();
 				window.scrollTo(0, window.pageYOffset);
 				if (V.SecExp.smilingMan.progress < 30) {
diff --git a/src/Mods/SpecialForce/NamingColonel.js b/src/Mods/SpecialForce/NamingColonel.js
index 89561e4f3b3..4cfca68832a 100644
--- a/src/Mods/SpecialForce/NamingColonel.js
+++ b/src/Mods/SpecialForce/NamingColonel.js
@@ -194,7 +194,6 @@ App.UI.securityForceNamingColonel = function() {
 			));
 		}
 	} else if (V.SF.IntroProgress === 2) {
-		V.nextLink = "RIE Eligibility Check";
 		V.nextButton = "Continue";
 		App.Utils.scheduleSidebarRefresh();
 		delete V.SF.IntroProgress;
diff --git a/src/Mods/SpecialForce/Proposal.js b/src/Mods/SpecialForce/Proposal.js
index b82e8581b09..51f4c8cff62 100644
--- a/src/Mods/SpecialForce/Proposal.js
+++ b/src/Mods/SpecialForce/Proposal.js
@@ -53,7 +53,7 @@ App.Events.SecurityForceProposal = class SecurityForceProposal extends App.Event
 		function no() {
 			V.SF.Active = 0;
 			delete V.SF.IntroProgress;
-			Engine.play("RIE Eligibility Check");
+			Engine.play(V.nextLink);
 			return ``;
 		}
 	}
diff --git a/src/Mods/SpecialForce/TrickShotNight.js b/src/Mods/SpecialForce/TrickShotNight.js
index d596ae01d4b..20845ecaa9a 100644
--- a/src/Mods/SpecialForce/TrickShotNight.js
+++ b/src/Mods/SpecialForce/TrickShotNight.js
@@ -8,8 +8,6 @@ App.Events.TrickShotNight = class TrickShotNight extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		let r = [];
 		const buyIn = 50000;
 		const {
diff --git a/src/events/JE/jeSlaveDisputeBreedingDeal.js b/src/events/JE/jeSlaveDisputeBreedingDeal.js
index d15c3f74163..c59d2d39e02 100644
--- a/src/events/JE/jeSlaveDisputeBreedingDeal.js
+++ b/src/events/JE/jeSlaveDisputeBreedingDeal.js
@@ -11,7 +11,6 @@ App.Events.JESlaveDisputeBreedingDeal = class JESlaveDisputeBreedingDeal extends
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const index = V.justiceEvents.indexOf("breeding deal");
 		V.justiceEvents.splice(index, 1);
 		const contractCost = 40000;
diff --git a/src/events/JE/jeSlaveDisputeIndentureDeal.js b/src/events/JE/jeSlaveDisputeIndentureDeal.js
index 1c668c06fe0..51b8e32078b 100644
--- a/src/events/JE/jeSlaveDisputeIndentureDeal.js
+++ b/src/events/JE/jeSlaveDisputeIndentureDeal.js
@@ -11,7 +11,6 @@ App.Events.JESlaveDisputeIndentureDeal = class JESlaveDisputeIndentureDeal exten
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const index = V.justiceEvents.indexOf("indenture deal");
 		V.justiceEvents.splice(index, 1);
 
diff --git a/src/events/JE/jeSlaveDisputeMajorityDeal.js b/src/events/JE/jeSlaveDisputeMajorityDeal.js
index f7c9294056c..66e9f6dedad 100644
--- a/src/events/JE/jeSlaveDisputeMajorityDeal.js
+++ b/src/events/JE/jeSlaveDisputeMajorityDeal.js
@@ -11,7 +11,6 @@ App.Events.JESlaveDisputeMajorityDeal = class JESlaveDisputeMajorityDeal extends
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const index = V.justiceEvents.indexOf("majority deal");
 		V.justiceEvents.splice(index, 1);
 		const contractCost = 20000;
diff --git a/src/events/JE/jeSlaveDisputeSlaveDeal.js b/src/events/JE/jeSlaveDisputeSlaveDeal.js
index e6de4acf222..eb27448341b 100644
--- a/src/events/JE/jeSlaveDisputeSlaveDeal.js
+++ b/src/events/JE/jeSlaveDisputeSlaveDeal.js
@@ -11,7 +11,6 @@ App.Events.JESlaveDisputeSlaveDeal = class JESlaveDisputeSlaveDeal extends App.E
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const index = V.justiceEvents.indexOf("slave deal");
 		V.justiceEvents.splice(index, 1);
 		const contractCost = 5000;
diff --git a/src/events/JE/jeSlaveDisputeSlaveTraining.js b/src/events/JE/jeSlaveDisputeSlaveTraining.js
index 086a3959184..019c0932e41 100644
--- a/src/events/JE/jeSlaveDisputeSlaveTraining.js
+++ b/src/events/JE/jeSlaveDisputeSlaveTraining.js
@@ -13,7 +13,6 @@ App.Events.JESlaveDisputeSlaveTraining = class JESlaveDisputeSlaveTraining exten
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const index = V.justiceEvents.indexOf("slave training");
 		V.justiceEvents.splice(index, 1);
 
diff --git a/src/events/JE/jeSlaveDisputeVirginityDeal.js b/src/events/JE/jeSlaveDisputeVirginityDeal.js
index bd3d1cfba8b..2916b577aef 100644
--- a/src/events/JE/jeSlaveDisputeVirginityDeal.js
+++ b/src/events/JE/jeSlaveDisputeVirginityDeal.js
@@ -11,7 +11,6 @@ App.Events.JESlaveVirginityDeal = class JESlaveVirginityDeal extends App.Events.
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const index = V.justiceEvents.indexOf("virginity deal");
 		V.justiceEvents.splice(index, 1);
 
diff --git a/src/events/PE/UnderageConcubine.js b/src/events/PE/UnderageConcubine.js
index 1ae05b822d8..caaf3c0ed1a 100644
--- a/src/events/PE/UnderageConcubine.js
+++ b/src/events/PE/UnderageConcubine.js
@@ -31,8 +31,6 @@ App.Events.PEUnderageConcubine = class PEUnderageConcubine extends App.Events.Ba
 			He, he, his, him, himself, girl
 		} = getPronouns(concubine);
 
-		V.nextLink = "RIE Eligibility Check";
-
 		App.Events.drawEventArt(node, concubine);
 
 		const {say, title: Master} = getEnunciation(concubine);
diff --git a/src/events/PE/concubineInterview.js b/src/events/PE/concubineInterview.js
index 9ccd326cc80..7309f518b06 100644
--- a/src/events/PE/concubineInterview.js
+++ b/src/events/PE/concubineInterview.js
@@ -28,8 +28,6 @@ App.Events.PEConcubineInterview = class PEConcubineInterview extends App.Events.
 		const fluid = eventSlave.inflationType;
 		const arcology = V.arcologies[0];
 
-		V.nextLink = "RIE Eligibility Check";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let t = [];
diff --git a/src/events/PE/peAssociatesPublicSlut.js b/src/events/PE/peAssociatesPublicSlut.js
index 6b0ce510031..8a8b132e1d5 100644
--- a/src/events/PE/peAssociatesPublicSlut.js
+++ b/src/events/PE/peAssociatesPublicSlut.js
@@ -8,8 +8,6 @@ App.Events.PEAssociatesPublicSlut = class PEAssociatesPublicSlut extends App.Eve
 	execute(node) {
 		let r = [];
 
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const num = random(1, 99);
 
 		App.Events.addParagraph(node, [
diff --git a/src/events/PE/peCombatTraining.js b/src/events/PE/peCombatTraining.js
index 344c4ef792a..04b94a4b771 100644
--- a/src/events/PE/peCombatTraining.js
+++ b/src/events/PE/peCombatTraining.js
@@ -12,8 +12,6 @@ App.Events.PECombatTraining = class PECombatTraining extends App.Events.BaseEven
 	execute(node) {
 		let r = [];
 
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		App.Events.drawEventArt(node, S.Bodyguard);
 		const {
 			He,
diff --git a/src/events/PE/peHeadgirlConcubine.js b/src/events/PE/peHeadgirlConcubine.js
index 0799c5d947a..aaaef08315b 100644
--- a/src/events/PE/peHeadgirlConcubine.js
+++ b/src/events/PE/peHeadgirlConcubine.js
@@ -19,8 +19,6 @@ App.Events.PEHeadgirlConcubine = class PEHeadgirlConcubine extends App.Events.Ba
 
 	execute(node) {
 		let r = [];
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const {
 			He, His,
 			he, him, his, girl
diff --git a/src/events/PE/peLonelyBodyguard.js b/src/events/PE/peLonelyBodyguard.js
index ce441d71f45..05d50609e22 100644
--- a/src/events/PE/peLonelyBodyguard.js
+++ b/src/events/PE/peLonelyBodyguard.js
@@ -18,9 +18,6 @@ App.Events.PELonelyBodyguard = class PELonelyBodyguard extends App.Events.BaseEv
 	execute(node) {
 		let r = [];
 
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
-
 		const BG = S.Bodyguard;
 		const {
 			He, His, Hers,
diff --git a/src/events/PE/pePitFightInvite.js b/src/events/PE/pePitFightInvite.js
index 475b3797c38..bb87accef41 100644
--- a/src/events/PE/pePitFightInvite.js
+++ b/src/events/PE/pePitFightInvite.js
@@ -7,8 +7,6 @@ App.Events.PEPitFightInvite = class PEPitFightInvite extends App.Events.BaseEven
 
 	execute(node) {
 		let r = [];
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const slave = S.Bodyguard;
 		const {he} = getPronouns(slave);
 
diff --git a/src/events/PESS/pessBodyguardBeatdown.js b/src/events/PESS/pessBodyguardBeatdown.js
index c0c49c6349c..3e01011da37 100644
--- a/src/events/PESS/pessBodyguardBeatdown.js
+++ b/src/events/PESS/pessBodyguardBeatdown.js
@@ -7,8 +7,6 @@ App.Events.pessBodyguardBeatdown = class pessBodyguardBeatdown extends App.Event
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const {
 			He,
 			he, his, him, woman
diff --git a/src/events/PESS/pessBodyguardBedtime.js b/src/events/PESS/pessBodyguardBedtime.js
index 71a73cf9903..a748e699145 100644
--- a/src/events/PESS/pessBodyguardBedtime.js
+++ b/src/events/PESS/pessBodyguardBedtime.js
@@ -7,8 +7,6 @@ App.Events.pessBodyguardBedtime = class pessBodyguardBedtime extends App.Events.
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const {
 			He,
 			he, his, him, himself, girl
diff --git a/src/events/PESS/pessDjPublicity.js b/src/events/PESS/pessDjPublicity.js
index 45839cc810b..f0cf2371af6 100644
--- a/src/events/PESS/pessDjPublicity.js
+++ b/src/events/PESS/pessDjPublicity.js
@@ -9,8 +9,6 @@ App.Events.pessDjPublicity = class pessDjPublicity extends App.Events.BaseEvent
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const {
 			He,
 			he, his, him, himself, girl
diff --git a/src/events/PESS/pessHeadgirlDickgirl.js b/src/events/PESS/pessHeadgirlDickgirl.js
index 1551939f9a7..4640d67c3bf 100644
--- a/src/events/PESS/pessHeadgirlDickgirl.js
+++ b/src/events/PESS/pessHeadgirlDickgirl.js
@@ -15,8 +15,6 @@ App.Events.pessHeadgirlDickgirl = class pessHeadgirlDickgirl extends App.Events.
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const {
 			He,
 			he, his, him, himself, girl
diff --git a/src/events/PESS/pessLovingConcubine.js b/src/events/PESS/pessLovingConcubine.js
index 3c4f9e1adae..3840a3b629f 100644
--- a/src/events/PESS/pessLovingConcubine.js
+++ b/src/events/PESS/pessLovingConcubine.js
@@ -8,8 +8,6 @@ App.Events.pessLovingConcubine = class pessLovingConcubine extends App.Events.Ba
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const {
 			He, His,
 			he, his, him, himself, hers
diff --git a/src/events/PESS/pessLovingHeadgirl.js b/src/events/PESS/pessLovingHeadgirl.js
index 84eb00480e3..7df2a3064e5 100644
--- a/src/events/PESS/pessLovingHeadgirl.js
+++ b/src/events/PESS/pessLovingHeadgirl.js
@@ -8,8 +8,6 @@ App.Events.pessLovingHeadgirl = class pessLovingHeadgirl extends App.Events.Base
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const {
 			He, His,
 			he, his, him, himself, wife
diff --git a/src/events/PESS/pessMadamStrategy.js b/src/events/PESS/pessMadamStrategy.js
index 9e2575e66ba..c0a7949c37b 100644
--- a/src/events/PESS/pessMadamStrategy.js
+++ b/src/events/PESS/pessMadamStrategy.js
@@ -9,8 +9,6 @@ App.Events.pessMadamStrategy = class pessMadamStrategy extends App.Events.BaseEv
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const {
 			He,
 			he, his, him, himself
diff --git a/src/events/PESS/pessTiredCollectrix.js b/src/events/PESS/pessTiredCollectrix.js
index 953ad791e42..b67f6781c0c 100644
--- a/src/events/PESS/pessTiredCollectrix.js
+++ b/src/events/PESS/pessTiredCollectrix.js
@@ -10,8 +10,6 @@ App.Events.pessTiredCollectrix = class pessTiredCollectrix extends App.Events.Ba
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const {
 			He,
 			he, his, him, himself
diff --git a/src/events/PESS/pessTiredMilkmaid.js b/src/events/PESS/pessTiredMilkmaid.js
index 4fdd7b4c512..2708fa6e7de 100644
--- a/src/events/PESS/pessTiredMilkmaid.js
+++ b/src/events/PESS/pessTiredMilkmaid.js
@@ -9,8 +9,6 @@ App.Events.pessTiredMilkmaid = class pessTiredMilkmaid extends App.Events.BaseEv
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const {
 			He,
 			he, his, him
diff --git a/src/events/PESS/pessWorriedHeadgirl.js b/src/events/PESS/pessWorriedHeadgirl.js
index 37608a2675a..a3d9c630cb7 100644
--- a/src/events/PESS/pessWorriedHeadgirl.js
+++ b/src/events/PESS/pessWorriedHeadgirl.js
@@ -10,8 +10,6 @@ App.Events.pessWorriedHeadgirl = class pessWorriedHeadgirl extends App.Events.Ba
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const {
 			He, His,
 			he, his, him, himself, girl, woman, hers
diff --git a/src/events/PESS/pessWorshipfulImpregnatrix.js b/src/events/PESS/pessWorshipfulImpregnatrix.js
index b5febf3142b..8788c1c79b6 100644
--- a/src/events/PESS/pessWorshipfulImpregnatrix.js
+++ b/src/events/PESS/pessWorshipfulImpregnatrix.js
@@ -11,8 +11,6 @@ App.Events.pessWorshipfulImpregnatrix = class pessWorshipfulImpregnatrix extends
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const {
 			He, His,
 			he, his, him, himself,
diff --git a/src/events/PETS/petsAggressiveSchoolteacher.js b/src/events/PETS/petsAggressiveSchoolteacher.js
index f4ebc394ad7..319859a859e 100644
--- a/src/events/PETS/petsAggressiveSchoolteacher.js
+++ b/src/events/PETS/petsAggressiveSchoolteacher.js
@@ -14,8 +14,6 @@ App.Events.petsAggressiveSchoolteacher = class petsAggressiveSchoolteacher exten
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const subSlave = getSlave(this.actors[0]);
 		const {
 			he, his, him
diff --git a/src/events/PETS/petsAggressiveWardeness.js b/src/events/PETS/petsAggressiveWardeness.js
index 2ecc7197a97..07484ab01bd 100644
--- a/src/events/PETS/petsAggressiveWardeness.js
+++ b/src/events/PETS/petsAggressiveWardeness.js
@@ -13,8 +13,6 @@ App.Events.petsAggressiveWardeness = class petsAggressiveWardeness extends App.E
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const subSlave = getSlave(this.actors[0]);
 		const {
 			He,
diff --git a/src/events/PETS/petsComfortingAttendant.js b/src/events/PETS/petsComfortingAttendant.js
index d41aaa8b5bc..aa1a0fdb47c 100644
--- a/src/events/PETS/petsComfortingAttendant.js
+++ b/src/events/PETS/petsComfortingAttendant.js
@@ -13,8 +13,6 @@ App.Events.petsComfortingAttendant = class petsComfortingAttendant extends App.E
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const subSlave = getSlave(this.actors[0]);
 		const {
 			He,
diff --git a/src/events/PETS/petsNurseMolestation.js b/src/events/PETS/petsNurseMolestation.js
index d779e025269..18e79ef74d5 100644
--- a/src/events/PETS/petsNurseMolestation.js
+++ b/src/events/PETS/petsNurseMolestation.js
@@ -14,8 +14,6 @@ App.Events.petsNurseMolestation = class petsNurseMolestation extends App.Events.
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const subSlave = getSlave(this.actors[0]);
 		let r = [];
 		const {
diff --git a/src/events/PETS/petsStewardessBeating.js b/src/events/PETS/petsStewardessBeating.js
index 5bd599c3284..950c73ca408 100644
--- a/src/events/PETS/petsStewardessBeating.js
+++ b/src/events/PETS/petsStewardessBeating.js
@@ -13,8 +13,6 @@ App.Events.petsStewardessBeating = class petsStewardessBeating extends App.Event
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const subSlave = getSlave(this.actors[0]);
 		let r = [];
 		const {
diff --git a/src/events/RE/REBusyArcade.js b/src/events/RE/REBusyArcade.js
index 10e47f916c6..c31d8976ab2 100644
--- a/src/events/RE/REBusyArcade.js
+++ b/src/events/RE/REBusyArcade.js
@@ -23,8 +23,6 @@ App.Events.REBusyArcade = class REBusyArcade extends App.Events.BaseEvent {
 		} = getPronouns(slave);
 		const {title: Master} = getEnunciation(slave);
 
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		App.Events.addParagraph(node, [`Slaves in your arcade are not immured in the facility permanently, since holding them in one position at all times would negatively impact their health. They are released to exercise, eat, bathe, and sleep, but for nothing else. You occasionally inspect them when they do so, to see that their harsh lives are not inappropriately difficult for them. One day when you are doing so, ${contextualIntro(V.PC, slave)} flings ${himself} on the ground in front of you the instant ${he} sees you.`]);
 
 		let r = [];
diff --git a/src/events/RE/REBusyBrothel.js b/src/events/RE/REBusyBrothel.js
index 62fa9152cf9..7c67c8de931 100644
--- a/src/events/RE/REBusyBrothel.js
+++ b/src/events/RE/REBusyBrothel.js
@@ -6,8 +6,6 @@ App.Events.REBusyBrothel = class REBusyBrothel extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		App.Events.addParagraph(node, [`${capFirstChar(V.brothelName)} is well staffed, and does a busy trade in flesh 24 hours a day. With so many sex slaves in the Free Cities, brothels occupy a functional, nearly mechanical part of the sexual landscape. Free citizens and sometimes even favored slaves visit the brothel, select from the available merchandise, relieve their sexual needs, and leave. Affection, companionship, and emotional needs are available elsewhere.`]);
 		App.Events.addParagraph(node, [`Of course, ${V.brothelName} is the best establishment of its kind in the arcology. Citizens who patronize it can expect themselves to be very well looked after by skilled slaves. The quality of the merchandise, the efficiency with which it is delivered, and the cleanliness and reputation of the premises <span class="reputation inc">reflect well on you,</span> so much so that you could leverage this bustling sexual commerce in many ways.`]);
 
diff --git a/src/events/RE/REBusyDairy.js b/src/events/RE/REBusyDairy.js
index 5ce1dd4ac6e..6f6c1fc6626 100644
--- a/src/events/RE/REBusyDairy.js
+++ b/src/events/RE/REBusyDairy.js
@@ -7,8 +7,6 @@ App.Events.REBusyDairy = class REBusyDairy extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		App.Events.addParagraph(node, [`${capFirstChar(V.dairyName)} is working away steadily. Its high-quality product <span class="reputation inc">reflects well on you,</span>you muse one day as you inspect the premises. The gentle pneumatic sounds of the milkers and the whimpers of the cows being milked are a pleasant background for the thought.`]);
 		App.Events.addParagraph(node, [`Even with high doses of modern drugs, human cows simply do not produce a very high volume of milk. This isn't much of a business problem, since it just means that the product can be sold at a high price. However, some of the more grandiose ideas about how to use milk have had to wait until you have enough cows producing enough milk to make them possible.`]);
 
diff --git a/src/events/RE/incest/REresistantmotherdaughter.js b/src/events/RE/incest/REresistantmotherdaughter.js
index 241122673fe..f033efa4ac0 100644
--- a/src/events/RE/incest/REresistantmotherdaughter.js
+++ b/src/events/RE/incest/REresistantmotherdaughter.js
@@ -23,8 +23,6 @@ App.Events.REResistantMotherDaughter = class REResistantMotherDaughter extends A
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		let r = [];
 		const mommy = getSlave(this.actors[0]);
 		const daughter = getSlave(this.actors[1]);
diff --git a/src/events/RE/incest/reDevotedMotherDaughter.js b/src/events/RE/incest/reDevotedMotherDaughter.js
index 6ae79dfc76f..1423db3c975 100644
--- a/src/events/RE/incest/reDevotedMotherDaughter.js
+++ b/src/events/RE/incest/reDevotedMotherDaughter.js
@@ -23,8 +23,6 @@ App.Events.REDevotedMotherDaughter = class REDevotedMotherDaughter extends App.E
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		let r = [];
 		const mommy = getSlave(this.actors[0]);
 		const daughter = getSlave(this.actors[1]);
diff --git a/src/events/RE/incest/reSiblingRevenge.js b/src/events/RE/incest/reSiblingRevenge.js
index 83fcbaa2030..cd1fc63ec13 100644
--- a/src/events/RE/incest/reSiblingRevenge.js
+++ b/src/events/RE/incest/reSiblingRevenge.js
@@ -21,8 +21,6 @@ App.Events.RESiblingRevenge = class RESiblingRevenge extends App.Events.BaseEven
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		let r = [];
 		const youngerSis = getSlave(this.actors[0]);
 		const olderSis = getSlave(this.actors[1]);
diff --git a/src/events/RE/reAWOL.js b/src/events/RE/reAWOL.js
index eb0a231aaac..bb983757363 100644
--- a/src/events/RE/reAWOL.js
+++ b/src/events/RE/reAWOL.js
@@ -11,8 +11,6 @@ App.Events.REAWOL = class REAWOL extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const bountyFee = 5000;
 		const minAge = (V.pedo_mode === 1) ? 21 : 38;
 		const genParam = {
diff --git a/src/events/RE/reAnalPunishment.js b/src/events/RE/reAnalPunishment.js
index 630aa04de6f..badd6cd97bd 100644
--- a/src/events/RE/reAnalPunishment.js
+++ b/src/events/RE/reAnalPunishment.js
@@ -24,9 +24,6 @@ App.Events.REAnalPunishment = class REAnalPunishment extends App.Events.BaseEven
 		let r = [];
 		const slave = getSlave(this.actors[0]);
 
-		V.nextButton = "Continue";
-		V.nextLink = "Next Week";
-
 		const {
 			He, His,
 			he, his, him, himself, girl, woman
diff --git a/src/events/RE/reArcologyInspection.js b/src/events/RE/reArcologyInspection.js
index 9f279e4c9ec..c5a55c83414 100644
--- a/src/events/RE/reArcologyInspection.js
+++ b/src/events/RE/reArcologyInspection.js
@@ -19,8 +19,6 @@ App.Events.REArcologyInspection = class REArcologyInspection extends App.Events.
 	}
 
 	execute(node) {
-		V.nextLink = "RIE Eligibility Check";
-
 		const home = V.arcologies[0];
 		const arcology = this.validArcologies().random();
 		const agent = (arcology.government === "your agent") ? getSlave(arcology.leaderID) : undefined;
diff --git a/src/events/RE/reBoomerang.js b/src/events/RE/reBoomerang.js
index 990907e9bde..14f2e4784a4 100644
--- a/src/events/RE/reBoomerang.js
+++ b/src/events/RE/reBoomerang.js
@@ -15,8 +15,6 @@ App.Events.REBoomerang = class REBoomerang extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 
 		if (V.boomerangSlave === 0 || V.boomerangBuyer === 0) { // purely for typing
diff --git a/src/events/RE/reBrothelFunction.js b/src/events/RE/reBrothelFunction.js
index 389e77590be..d4b2e70484a 100644
--- a/src/events/RE/reBrothelFunction.js
+++ b/src/events/RE/reBrothelFunction.js
@@ -6,8 +6,6 @@ App.Events.REBrothelFunction = class REBrothelFunction extends App.Events.BaseEv
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const largeCash = 10000;
 		const mediumCash = 2000;
 		const smallCash = 1000;
diff --git a/src/events/RE/reBusyClub.js b/src/events/RE/reBusyClub.js
index feb64a95905..d2a8b6a26f7 100644
--- a/src/events/RE/reBusyClub.js
+++ b/src/events/RE/reBusyClub.js
@@ -6,8 +6,6 @@ App.Events.REBusyClub = class REBusyClub extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		App.Events.addParagraph(node, [`The original designers of the modern arcology did not realize how inseparable from slavery their work would become. The club at the social heart of ${V.arcologies[0].name} was not meant as a center of the more friendly kind of sexual slavery, but that is what it has become. Free whores of the highest quality work there, and they are accompanied by a flock of your slaves who have simple orders to dance, add cheer, and perform sexual favors wherever they can.`]);
 		App.Events.addParagraph(node, [`Offering slaves for free sex would become unmanageable if the club where your public servants work was open to the unwashed masses, but it is not. The arcology is already selective, and only good citizens can party, dance, and fuck the night away in ${V.clubName}. The upper classes <span class="reputation inc">recognize your contributions</span> to arcology culture, which you could probably parlay into an even greater benefit.`]);
 
diff --git a/src/events/RE/reBusyMasterSuite.js b/src/events/RE/reBusyMasterSuite.js
index 15d0d95604f..ce42349f950 100644
--- a/src/events/RE/reBusyMasterSuite.js
+++ b/src/events/RE/reBusyMasterSuite.js
@@ -23,9 +23,6 @@ App.Events.REBusyMasterSuite = class REBusyMasterSuite extends App.Events.BaseEv
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
-
 		const msSlaves = V.slaves.filter((s) => s.fuckdoll === 0 && s.assignment === Job.MASTERSUITE)
 			.map((s) => {
 				/** @type {Array<FC.SlaveActs|"none">} */
diff --git a/src/events/RE/reBusyServantsQuarters.js b/src/events/RE/reBusyServantsQuarters.js
index 471195c8b77..a8be6118ef3 100644
--- a/src/events/RE/reBusyServantsQuarters.js
+++ b/src/events/RE/reBusyServantsQuarters.js
@@ -6,8 +6,6 @@ App.Events.REBusyServantsQuarters = class REBusyServantsQuarters extends App.Eve
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		App.Events.addParagraph(node, [`Your penthouse is very well staffed with servants. The trend in modern buildings is to design around automatic cleaning systems. Dusting, mopping, and polishing are no longer really necessary when machines that do them more cheaply and thoroughly than any human are readily available. Keeping slaves to clean is an ostentation, and visitors to your quarters are often <span class="reputation inc">surprised and gratified</span> to see a sex slave working away in the old way.`]);
 		App.Events.addParagraph(node, [`The busy servants' quarters are a reservoir of slaves that can be used for almost any whim that occurs to you.`]);
 
diff --git a/src/events/RE/reCitizenHookup.js b/src/events/RE/reCitizenHookup.js
index 31e19b9f697..e27ee11cabb 100644
--- a/src/events/RE/reCitizenHookup.js
+++ b/src/events/RE/reCitizenHookup.js
@@ -8,8 +8,6 @@ App.Events.RECitizenHookup = class RECitizenHookup extends App.Events.BaseEvent
 	execute(node) {
 		let r = [];
 		let repopHookupPregnant;
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 
 		const fsArray = [];
 		for (const FS of App.Data.FutureSociety.fsNames) {
diff --git a/src/events/RE/reDevotedTwins.js b/src/events/RE/reDevotedTwins.js
index 37ca8b03f9e..fd02b7ab054 100644
--- a/src/events/RE/reDevotedTwins.js
+++ b/src/events/RE/reDevotedTwins.js
@@ -31,9 +31,6 @@ App.Events.REDevotedTwins = class REDevotedTwins extends App.Events.BaseEvent {
 		/** @type {Array<App.Entity.SlaveState>} */
 		let [alphaTwin, betaTwin] = this.actors.map(a => getSlave(a));
 
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
-
 		App.Events.drawEventArt(node, [alphaTwin, betaTwin]);
 
 		let t = [];
diff --git a/src/events/RE/reDevotees.js b/src/events/RE/reDevotees.js
index 745413a0457..7a5dd597a57 100644
--- a/src/events/RE/reDevotees.js
+++ b/src/events/RE/reDevotees.js
@@ -20,8 +20,6 @@ App.Events.REDevotees = class REDevotees extends App.Events.BaseEvent {
 	execute(node) {
 		let devotees = this.actors.map(a => getSlave(a)); // for this event, they're fine as an array
 
-		V.nextLink = "RIE Eligibility Check";
-
 		App.Events.drawEventArt(node, devotees);
 
 		const slaveList = devotees.map(s => s.slaveName).reduce((res, ch, i, arr) => res + (i === arr.length - 1 ? ' and ' : ', ') + ch);
diff --git a/src/events/RE/reFSNonconformist.js b/src/events/RE/reFSNonconformist.js
index 8e64cd4123c..eced09c07bf 100644
--- a/src/events/RE/reFSNonconformist.js
+++ b/src/events/RE/reFSNonconformist.js
@@ -18,7 +18,6 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv
 	execute(node) {
 		let r = [];
 		V.nextButton = " ";
-		V.nextLink = "RIE Eligibility Check";
 
 		/** @type {FC.FutureSocietyAdj} */
 		const FSNonconformist = App.Data.FutureSociety.records[this.getNonconformistFS()].adj;
diff --git a/src/events/RE/reFemaleArcologyOwner.js b/src/events/RE/reFemaleArcologyOwner.js
index fa667c73dbf..2465fd41b73 100644
--- a/src/events/RE/reFemaleArcologyOwner.js
+++ b/src/events/RE/reFemaleArcologyOwner.js
@@ -9,9 +9,6 @@ App.Events.REFemaleArcologyOwner = class REFemaleArcologyOwner extends App.Event
 	execute(node) {
 		let r = [];
 
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
-
 		r.push(`The more reputable you've gotten, the more rarefied your entertainments have become. Parties featuring celebrities, old world national leaders, and Free Cities arcology owners have become a nearly nightly experience for you, an expected part of your routine as one of the Free Cities' leading citizens. According to your whims and predilections, you have the choice of participating all night or just making a brief appearance at the start. The important thing is that they're here, come to pay tribute by their presence.`);
 		App.Events.addParagraph(node, r);
 		r = [];
diff --git a/src/events/RE/reFullBed.js b/src/events/RE/reFullBed.js
index 80ad6bc5df1..5d8babf1ceb 100644
--- a/src/events/RE/reFullBed.js
+++ b/src/events/RE/reFullBed.js
@@ -34,8 +34,6 @@ App.Events.REFullBed = class REFullBed extends App.Events.BaseEvent {
 		let virgin0 = (bedSlaves[0].mpreg === 1 && bedSlaves[0].anus === 0) || (bedSlaves[0].mpreg === 0 && bedSlaves[0].vagina === 0);
 		let virgin1 = (bedSlaves[1].mpreg === 1 && bedSlaves[1].anus === 0) || (bedSlaves[1].mpreg === 0 && bedSlaves[1].vagina === 0);
 
-		V.nextLink = "RIE Eligibility Check";
-
 		App.Events.drawEventArt(node, bedSlaves.slice(0, 2), "no clothing");
 
 		let t = [
diff --git a/src/events/RE/reHGReplacement.js b/src/events/RE/reHGReplacement.js
index 759e82e6782..72504dc3419 100644
--- a/src/events/RE/reHGReplacement.js
+++ b/src/events/RE/reHGReplacement.js
@@ -33,9 +33,6 @@ App.Events.REHGReplacement = class REHGReplacement extends App.Events.BaseEvent
 		let r = [];
 		const slave = getSlave(this.actors[0]);
 
-		V.nextButton = "Continue";
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [slave, S.HeadGirl], ["no clothing", null]);
 
 		const {
diff --git a/src/events/RE/reLegendaryBalls.js b/src/events/RE/reLegendaryBalls.js
index bca2c78eb7e..6f821a86213 100644
--- a/src/events/RE/reLegendaryBalls.js
+++ b/src/events/RE/reLegendaryBalls.js
@@ -14,8 +14,6 @@ App.Events.RELegendaryBalls = class RELegendaryBalls extends App.Events.BaseEven
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const slave = getSlave(this.actors[0]);
 		let r = [];
 
diff --git a/src/events/RE/reLegendaryCow.js b/src/events/RE/reLegendaryCow.js
index 5118b37c8f7..08acdb15cf9 100644
--- a/src/events/RE/reLegendaryCow.js
+++ b/src/events/RE/reLegendaryCow.js
@@ -14,8 +14,6 @@ App.Events.RELegendaryCow = class RELegendaryCow extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const slave = getSlave(this.actors[0]);
 		let r = [];
 
diff --git a/src/events/RE/reLegendaryEntertainer.js b/src/events/RE/reLegendaryEntertainer.js
index 6b0e4769f2e..6920a687a66 100644
--- a/src/events/RE/reLegendaryEntertainer.js
+++ b/src/events/RE/reLegendaryEntertainer.js
@@ -15,8 +15,6 @@ App.Events.RELegendaryEntertainer = class RELegendaryEntertainer extends App.Eve
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const slave = getSlave(this.actors[0]);
 		let r = [];
 
diff --git a/src/events/RE/reLegendaryFormerAbolitionist.js b/src/events/RE/reLegendaryFormerAbolitionist.js
index c0c049930b2..0022604945e 100644
--- a/src/events/RE/reLegendaryFormerAbolitionist.js
+++ b/src/events/RE/reLegendaryFormerAbolitionist.js
@@ -29,9 +29,6 @@ App.Events.RELegendaryFormerAbolitionist = class RELegendaryFormerAbolitionist e
 			he, his, him
 		} = getPronouns(slave);
 
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
-
 		App.Events.drawEventArt(node, slave);
 
 		App.Events.addParagraph(node, [
diff --git a/src/events/RE/reLegendaryWhore.js b/src/events/RE/reLegendaryWhore.js
index 2b8349e86c4..75890f50187 100644
--- a/src/events/RE/reLegendaryWhore.js
+++ b/src/events/RE/reLegendaryWhore.js
@@ -15,8 +15,6 @@ App.Events.RELegendaryWhore = class RELegendaryWhore extends App.Events.BaseEven
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const slave = getSlave(this.actors[0]);
 		let r = [];
 
diff --git a/src/events/RE/reLegendaryWomb.js b/src/events/RE/reLegendaryWomb.js
index ffe207d2f47..ecfb7e1a3bd 100644
--- a/src/events/RE/reLegendaryWomb.js
+++ b/src/events/RE/reLegendaryWomb.js
@@ -17,8 +17,6 @@ App.Events.RELegendaryWomb = class RELegendaryWomb extends App.Events.BaseEvent
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const slave = getSlave(this.actors[0]);
 		let r = [];
 
diff --git a/src/events/RE/reMaleArcologyOwner.js b/src/events/RE/reMaleArcologyOwner.js
index a25169d1311..e9a2f657eb4 100644
--- a/src/events/RE/reMaleArcologyOwner.js
+++ b/src/events/RE/reMaleArcologyOwner.js
@@ -13,8 +13,6 @@ App.Events.REMaleArcologyOwner = class REMaleArcologyOwner extends App.Events.Ba
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		let r = [];
 
 		r.push(`The more reputable you've gotten, the more rarefied your entertainments have become. Parties featuring celebrities, old world national leaders, and Free Cities arcology owners have become a nearly nightly experience for you, an expected part of your routine as one of the Free Cities' leading citizens. According to your whims and predilections, you have the choice of participating all night or just making a brief appearance at the start. The important thing is that they're here, come to pay tribute by their presence.`);
diff --git a/src/events/RE/reMaleCitizenHookup.js b/src/events/RE/reMaleCitizenHookup.js
index 4ec5805346d..bf2f9b62f13 100644
--- a/src/events/RE/reMaleCitizenHookup.js
+++ b/src/events/RE/reMaleCitizenHookup.js
@@ -12,9 +12,6 @@ App.Events.REMaleCitizenHookup = class REMaleCitizenHookup extends App.Events.Ba
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
-
 		const FSArray = FutureSocieties.activeFSes(V.arcologies[0]);
 		const FS = (FSArray.length > 0) ? FSArray.random() : "none";
 
diff --git a/src/events/RE/reMalefactor.js b/src/events/RE/reMalefactor.js
index 319e8d55fa6..f2437de13b3 100644
--- a/src/events/RE/reMalefactor.js
+++ b/src/events/RE/reMalefactor.js
@@ -19,8 +19,6 @@ App.Events.REMalefactor = class REMalefactor extends App.Events.BaseEvent {
 		let fakeRace;
 		/** @type {FC.Race} */
 		let realRace;
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Free Cities Justice";
 
 		/** @type {Array<"addict"|"whore"|"businesswoman"|"liberator"|"anchorBaby"|"mule"|"rapist"|"orphanloli"|"escapee"|"passfail">} */
diff --git a/src/events/RE/reMilfTourist.js b/src/events/RE/reMilfTourist.js
index fcb56a1be8e..a9cf3008d66 100644
--- a/src/events/RE/reMilfTourist.js
+++ b/src/events/RE/reMilfTourist.js
@@ -18,9 +18,6 @@ App.Events.REMilfTourist = class REMilfTourist extends App.Events.BaseEvent {
 	execute(node) {
 		const r = [];
 
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
-
 		const milfSlave = getSlave(this.actors[0]);
 
 		const tourist = GenerateNewSlave("XX", {
diff --git a/src/events/RE/reNickname.js b/src/events/RE/reNickname.js
index ab822336229..5b055671281 100644
--- a/src/events/RE/reNickname.js
+++ b/src/events/RE/reNickname.js
@@ -313,15 +313,6 @@ App.Events.RENickname = class RENickname extends App.Events.BaseEvent {
 		const {He, he, him} = getPronouns(slave);
 		const that = this; // fuck javascript's half-assed classes
 
-		if (this.params.type === "RIE") {
-			V.nextLink = "Next Week";
-		} else if (this.params.type === "RNIE") {
-			V.nextLink = "RIE Eligibility Check";
-		} else {
-			// shouldn't happen in normal operation, but it does when running in the Event Debugger, for example
-			V.nextLink = "RIE Eligibility Check";
-		}
-
 		const qualifiedNicknames = this.getQualifiedNicknames(slave);
 		let seed = Array.from(qualifiedNicknames).random();
 
diff --git a/src/events/RE/reNoEvent.js b/src/events/RE/reNoEvent.js
new file mode 100644
index 00000000000..2017b4dcda0
--- /dev/null
+++ b/src/events/RE/reNoEvent.js
@@ -0,0 +1,22 @@
+App.Events.RENoEvent = class RENoEvent extends App.Events.BaseEvent {
+	eventPrerequisites() {
+		return [];
+	}
+
+	actorPrerequisites() {
+		return [[]];
+	}
+
+	execute(node) {
+		const slave = getSlave(this.actors[0]);
+		const {he} = getPronouns(slave);
+
+		App.Events.drawEventArt(node, slave);
+
+		App.Events.addParagraph(node, [`This is a placeholder event.`]);
+		App.Events.addParagraph(node, [App.UI.DOM.slaveDescriptionDialog(slave), `does not currently qualify for any events, so ${he} has been given a generic <span class="devotion inc">devotion</span> and <span class="trust inc">trust</span> boost.`]);
+
+		slave.trust += 2;
+		slave.devotion += 2;
+	}
+};
diff --git a/src/events/RE/rePokerNight.js b/src/events/RE/rePokerNight.js
index 94e53f8c05f..d229f9428f0 100644
--- a/src/events/RE/rePokerNight.js
+++ b/src/events/RE/rePokerNight.js
@@ -7,8 +7,6 @@ App.Events.REPokerNight = class REPokerNight extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		let r = [];
 		const buyIn = 5000;
 		const {
diff --git a/src/events/RE/reRebels.js b/src/events/RE/reRebels.js
index a3fe2b60180..d1eae36a776 100644
--- a/src/events/RE/reRebels.js
+++ b/src/events/RE/reRebels.js
@@ -22,9 +22,6 @@ App.Events.RERebels = class RERebels extends App.Events.BaseEvent {
 	execute(node) {
 		const r = [];
 
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
-
 		const thingOne = getSlave(this.actors[0]);
 		const thingTwo = getSlave(this.actors[1]);
 
diff --git a/src/events/RE/reRelationshipAdvice.js b/src/events/RE/reRelationshipAdvice.js
index b6da1672502..76422d7c1ea 100644
--- a/src/events/RE/reRelationshipAdvice.js
+++ b/src/events/RE/reRelationshipAdvice.js
@@ -17,9 +17,6 @@ App.Events.RERelationshipAdvice = class RERelationshipAdvice extends App.Events.
 	execute(node) {
 		const r = [];
 
-		V.nextButton = "Continue";
-		V.nextLink = "Next Week";
-
 		const slave = getSlave(this.actors[0]);
 		const relSlave = getSlave(slave.relationshipTarget);
 
diff --git a/src/events/RE/reRelativeRecruiter.js b/src/events/RE/reRelativeRecruiter.js
index db67cefe7fe..aa161df46f2 100644
--- a/src/events/RE/reRelativeRecruiter.js
+++ b/src/events/RE/reRelativeRecruiter.js
@@ -159,8 +159,6 @@ App.Events.RERelativeRecruiter = class RERelativeRecruiter extends App.Events.Ba
 		const {He, he, his} = getPronouns(eventSlave);
 		let newSlave;
 
-		V.nextLink = "RIE Eligibility Check";
-
 		let artDiv = document.createElement("div"); // named container so we can replace it later
 		App.Events.drawEventArt(artDiv, eventSlave);
 		node.appendChild(artDiv);
diff --git a/src/events/RE/reRoyalBlood.js b/src/events/RE/reRoyalBlood.js
index b30f559df82..9fc199d862c 100644
--- a/src/events/RE/reRoyalBlood.js
+++ b/src/events/RE/reRoyalBlood.js
@@ -6,8 +6,6 @@ App.Events.RERoyalBlood = class RERoyalBlood extends App.Events.BaseEvent {
 	}
 
 	execute(el) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const activeSF = V.SF.Toggle && V.SF.Active >= 1;
 
 		const queen = generateQueen(); // Queen first to get an ID for her children to relate to.
diff --git a/src/events/RE/reShelterInspection.js b/src/events/RE/reShelterInspection.js
index af582660654..d8a749e3940 100644
--- a/src/events/RE/reShelterInspection.js
+++ b/src/events/RE/reShelterInspection.js
@@ -12,7 +12,6 @@ App.Events.REShelterInspection = class REShelterInspection extends App.Events.Ba
 	execute(node) {
 		const r = [];
 		V.nextButton = " ";
-		V.nextLink = "RIE Eligibility Check";
 
 		const enslaveCost = 10000;
 
diff --git a/src/events/RE/reShippingContainer.js b/src/events/RE/reShippingContainer.js
index 402abbee17e..a7bdf5b6f04 100644
--- a/src/events/RE/reShippingContainer.js
+++ b/src/events/RE/reShippingContainer.js
@@ -12,9 +12,6 @@ App.Events.REShippingContainer = class REShippingContainer extends App.Events.Ba
 	execute(node) {
 		let r = [];
 
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
-
 		let bonusCash = Math.trunc((V.slaveCostFactor*1000)/100)*100;
 		bonusCash = Math.clamp(bonusCash, 500, 1500);
 
diff --git a/src/events/RE/reShowerPunishment.js b/src/events/RE/reShowerPunishment.js
index c2569f8e92b..1b15322f0c7 100644
--- a/src/events/RE/reShowerPunishment.js
+++ b/src/events/RE/reShowerPunishment.js
@@ -21,9 +21,6 @@ App.Events.REShowerPunishment = class REShowerPunishment extends App.Events.Base
 		const r = new SpacedTextAccumulator(node);
 		const slave = getSlave(this.actors[0]);
 
-		V.nextButton = "Continue";
-		V.nextLink = "Next Week";
-
 		const {
 			He,
 			he, his, him, himself, girl, women
diff --git a/src/events/RE/reSiblingPlease.js b/src/events/RE/reSiblingPlease.js
index 4a3452ada32..d36866ca88d 100644
--- a/src/events/RE/reSiblingPlease.js
+++ b/src/events/RE/reSiblingPlease.js
@@ -42,9 +42,6 @@ App.Events.RESiblingPlease = class RESiblingPlease extends App.Events.BaseEvent
 		const {He2, he2, him2, his2, himself2} = getPronouns(mom).appendSuffix('2');
 		const {title: Master} = getEnunciation(dau);
 
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
-
 		App.Events.drawEventArt(node, [dau, mom]);
 
 		const t = new SpacedTextAccumulator(node);
diff --git a/src/events/RE/reSlaveMarriage.js b/src/events/RE/reSlaveMarriage.js
index e70f8d5da01..5a67dbd2b80 100644
--- a/src/events/RE/reSlaveMarriage.js
+++ b/src/events/RE/reSlaveMarriage.js
@@ -13,9 +13,6 @@ App.Events.RESlaveMarriage = class RESlaveMarriage extends App.Events.BaseEvent
 	execute(node) {
 		const r = [];
 
-		V.nextButton = "Continue";
-		V.nextLink = "Next Week";
-
 		const groomSlave = getSlave(this.actors[0]);
 		const brideSlave = getSlave(groomSlave.relationshipTarget);
 
diff --git a/src/events/RE/reSnatchAndGrabFollowup.js b/src/events/RE/reSnatchAndGrabFollowup.js
index 94eb42c3222..5c24cab02d4 100644
--- a/src/events/RE/reSnatchAndGrabFollowup.js
+++ b/src/events/RE/reSnatchAndGrabFollowup.js
@@ -24,8 +24,6 @@ App.Events.RESnatchAndGrabFollowup = class RESnatchAndGrabFollowup extends App.E
 	execute(node) {
 		let r = [];
 
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.eventResults.snatch = 3;
 
 		const snatched = getSlave(this.actors[0]);
diff --git a/src/events/RE/reStaffedMorning.js b/src/events/RE/reStaffedMorning.js
index a8e3374b39f..906506660e9 100644
--- a/src/events/RE/reStaffedMorning.js
+++ b/src/events/RE/reStaffedMorning.js
@@ -43,8 +43,6 @@ App.Events.REStaffedMorning = class REStaffedMorning extends App.Events.BaseEven
 		} = getPronouns(bedSlaves[3]).appendSuffix('4');
 		let playerPronouns = getPronouns(V.PC);
 
-		V.nextLink = "RIE Eligibility Check";
-
 		App.Events.drawEventArt(node, bedSlaves.slice(0, 2), "no clothing");
 
 		let t = [
diff --git a/src/events/RE/reStandardPunishment.js b/src/events/RE/reStandardPunishment.js
index c930e678a83..9f6b3a09180 100644
--- a/src/events/RE/reStandardPunishment.js
+++ b/src/events/RE/reStandardPunishment.js
@@ -20,8 +20,6 @@ App.Events.REStandardPunishment = class REStandardPunishment extends App.Events.
 		} = getPronouns(slave);
 		const {He2} = getPronouns(S.HeadGirl || {pronoun: 0}).appendSuffix("2");
 		const {HeA} = getPronouns(assistant.pronouns().main).appendSuffix("A");
-		V.nextButton = "Continue";
-		V.nextLink = "Next Week";
 
 		/** @type {EventArtObject[]} */
 		const artArray = [slave];
diff --git a/src/events/RECI/butthole.js b/src/events/RECI/butthole.js
index 78f66efecc8..7403dcfff46 100644
--- a/src/events/RECI/butthole.js
+++ b/src/events/RECI/butthole.js
@@ -22,7 +22,6 @@ App.Events.RECIButthole = class RECIButthole extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		/** @type {Array<App.Entity.SlaveState>} */
 		let [eventSlave] = this.actors.map(a => getSlave(a));
 		const {
 			He, he, His, his, him, himself, girl, woman, loli
@@ -36,7 +35,6 @@ App.Events.RECIButthole = class RECIButthole extends App.Events.BaseEvent {
 				? "dark brown"
 				: "brown";
 
-		V.nextLink = "Next Week";
 		V.REButtholeCheckinIDs.deleteWith((s) => s === eventSlave.ID);
 
 		let artDiv = document.createElement("div"); // named container so we can replace it later
diff --git a/src/events/RECI/feminization.js b/src/events/RECI/feminization.js
index 9204da631da..5d1186cea9b 100644
--- a/src/events/RECI/feminization.js
+++ b/src/events/RECI/feminization.js
@@ -37,7 +37,6 @@ App.Events.RECIFeminization = class RECIFeminization extends App.Events.BaseEven
 		const desc = SlaveTitle(eventSlave);
 		const legs = hasBothLegs(eventSlave) ? "legs" : "leg";
 
-		V.nextLink = "Next Week";
 		V.REFeminizationCheckinIDs.deleteWith((s) => s === eventSlave.ID);
 
 		let artDiv = document.createElement("div"); // named container so we can replace it later
diff --git a/src/events/RECI/futa.js b/src/events/RECI/futa.js
index 303c8543daf..bf70beafdb8 100644
--- a/src/events/RECI/futa.js
+++ b/src/events/RECI/futa.js
@@ -31,7 +31,6 @@ App.Events.RECIFuta = class RECIFuta extends App.Events.BaseEvent {
 		const {title: Master, say: say} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
 		V.REFutaSisterCheckinIDs.deleteWith((s) => s === eventSlave.ID);
 
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
diff --git a/src/events/RECI/milf.js b/src/events/RECI/milf.js
index 873d25d2f8f..05ccc3f1ebc 100644
--- a/src/events/RECI/milf.js
+++ b/src/events/RECI/milf.js
@@ -36,7 +36,6 @@ App.Events.RECIMilf = class RECIMilf extends App.Events.BaseEvent {
 		const legs = hasBothLegs(eventSlave) ? "legs" : "leg";
 		const ankles = hasBothLegs(eventSlave) ? "ankles" : "ankle";
 
-		V.nextLink = "Next Week";
 		V.REMILFCheckinIDs.deleteWith((s) => s === eventSlave.ID);
 
 		let artDiv = document.createElement("div"); // named container so we can replace it later
diff --git a/src/events/RECI/orientation.js b/src/events/RECI/orientation.js
index c15263d7023..ffc46305ea6 100644
--- a/src/events/RECI/orientation.js
+++ b/src/events/RECI/orientation.js
@@ -30,7 +30,6 @@ App.Events.RECIOrientation = class RECIOrientation extends App.Events.BaseEvent
 		const belly = bellyAdjective(eventSlave);
 		const desc = SlaveTitle(eventSlave);
 
-		V.nextLink = "Next Week";
 		V.REOrientationCheckinIDs.deleteWith((s) => s === eventSlave.ID);
 
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
diff --git a/src/events/RECI/ugly.js b/src/events/RECI/ugly.js
index 95ca6f23c68..13a30211cb5 100644
--- a/src/events/RECI/ugly.js
+++ b/src/events/RECI/ugly.js
@@ -30,7 +30,6 @@ App.Events.RECIUgly = class RECIUgly extends App.Events.BaseEvent {
 		const {title: Master, say: say} = getEnunciation(eventSlave);
 		const freeMovement = (canWalk(eventSlave) || (canMove(eventSlave) && eventSlave.rules.mobility === "permissive"));
 
-		V.nextLink = "Next Week";
 		V.REUglyCheckinIDs.deleteWith((s) => s === eventSlave.ID);
 
 		let artDiv = document.createElement("div"); // named container so we can replace it later
diff --git a/src/events/REFI/reBoobslut.js b/src/events/REFI/reBoobslut.js
index ed5e236b659..07edc12568f 100644
--- a/src/events/REFI/reBoobslut.js
+++ b/src/events/REFI/reBoobslut.js
@@ -26,8 +26,6 @@ App.Events.REFIBoobslut = class REFIBoobslut extends App.Events.BaseEvent {
 		const {he2, his2} = getPronouns(subSlave).appendSuffix("2");
 		const {say} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [eventSlave, subSlave], [eventSlave.clothes, "no clothing"]);
 
 		if (subSlave.lactation > 0) {
diff --git a/src/events/REFI/reButtslut.js b/src/events/REFI/reButtslut.js
index 1e88ce184af..e4e441f1611 100644
--- a/src/events/REFI/reButtslut.js
+++ b/src/events/REFI/reButtslut.js
@@ -27,8 +27,6 @@ App.Events.REFIButtslut = class REFIButtslut extends App.Events.BaseEvent {
 		const {he2, his2, himself2} = getPronouns(subSlave).appendSuffix("2");
 		const {say} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [eventSlave, subSlave], [eventSlave.clothes, "no clothing"]);
 
 		if (canImpreg(subSlave, V.PC)) {
diff --git a/src/events/REFI/reCumslut.js b/src/events/REFI/reCumslut.js
index 2eab6a4b0a4..bcae892b0e7 100644
--- a/src/events/REFI/reCumslut.js
+++ b/src/events/REFI/reCumslut.js
@@ -24,12 +24,8 @@ App.Events.REFICumslut = class REFICumslut extends App.Events.BaseEvent {
 		const {He, he, his, him, himself} = getPronouns(eventSlave);
 		const {he2, his2, He2} = getPronouns(subSlave).appendSuffix("2");
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [eventSlave, subSlave], [eventSlave.clothes, "no clothing"]);
 
-
-
 		let t = [];
 
 		if (V.PC.dick > 0) {
diff --git a/src/events/REFI/reDominant.js b/src/events/REFI/reDominant.js
index a083a29e934..d44d414fc30 100644
--- a/src/events/REFI/reDominant.js
+++ b/src/events/REFI/reDominant.js
@@ -22,8 +22,6 @@ App.Events.REFIDominant = class REFIDominant extends App.Events.BaseEvent {
 		const {He2, he2, his2, him2} = getPronouns(subSlave).appendSuffix("2");
 		const {hisU, himU, girlU} = getNonlocalPronouns(V.seeDicks).appendSuffix('U');
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [eventSlave, subSlave], "no clothing");
 
 		let t = [];
diff --git a/src/events/REFI/reHumiliation.js b/src/events/REFI/reHumiliation.js
index 6b23282ee0c..1e764b04720 100644
--- a/src/events/REFI/reHumiliation.js
+++ b/src/events/REFI/reHumiliation.js
@@ -22,8 +22,6 @@ App.Events.REFIHumiliation = class REFIHumiliation extends App.Events.BaseEvent
 		const {He, he, his, him, himself} = getPronouns(eventSlave);
 		const {he2, his2, him2, He2} = getPronouns(subSlave).appendSuffix("2");
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [eventSlave, subSlave], [eventSlave.clothes, "no clothing"]);
 
 
diff --git a/src/events/REFI/reMasochist.js b/src/events/REFI/reMasochist.js
index dd12e36bec6..9140f74415f 100644
--- a/src/events/REFI/reMasochist.js
+++ b/src/events/REFI/reMasochist.js
@@ -21,8 +21,6 @@ App.Events.REFIMasochist = class REFIMasochist extends App.Events.BaseEvent {
 		const {He, he, his, him, himself} = getPronouns(eventSlave);
 		const {He2, he2, his2, him2} = getPronouns(subSlave).appendSuffix("2");
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [eventSlave, subSlave], "no clothing");
 		const subBelly = bellyAdjective(subSlave);
 		const domBelly = bellyAdjective(eventSlave);
diff --git a/src/events/REFI/rePregnancy.js b/src/events/REFI/rePregnancy.js
index 02e3fe8b40b..1b43ca45e94 100644
--- a/src/events/REFI/rePregnancy.js
+++ b/src/events/REFI/rePregnancy.js
@@ -24,8 +24,6 @@ App.Events.REFIPregnancy = class REFIPregnancy extends App.Events.BaseEvent {
 		const {say} = getEnunciation(eventSlave);
 		const subBelly = bellyAdjective(subSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [eventSlave, subSlave], [eventSlave.clothes, "no clothing"]);
 
 		let t = [];
diff --git a/src/events/REFI/reSadist.js b/src/events/REFI/reSadist.js
index 71cb1320647..e13d435d85e 100644
--- a/src/events/REFI/reSadist.js
+++ b/src/events/REFI/reSadist.js
@@ -23,8 +23,6 @@ App.Events.REFISadist = class REFISadist extends App.Events.BaseEvent {
 		const {He2, he2, his2, him2} = getPronouns(subSlave).appendSuffix("2");
 		const {HeU, himU, girlU} = getNonlocalPronouns(V.seeDicks).appendSuffix('U');
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [eventSlave, subSlave], "no clothing");
 
 		actX(subSlave, "penetrative");
diff --git a/src/events/REFI/reSubmissive.js b/src/events/REFI/reSubmissive.js
index c1889eea397..c029e97cab2 100644
--- a/src/events/REFI/reSubmissive.js
+++ b/src/events/REFI/reSubmissive.js
@@ -22,8 +22,6 @@ App.Events.REFISubmissive = class REFISubmissive extends App.Events.BaseEvent {
 		const {He, he, his, him, himself} = getPronouns(eventSlave);
 		const {He2, he2, his2, him2} = getPronouns(subSlave).appendSuffix("2");
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [eventSlave, subSlave], "no clothing");
 
 		if (canDoVaginal(subSlave) && (subSlave.vagina > 0)) {
diff --git a/src/events/REFS/refsBaronDemand.js b/src/events/REFS/refsBaronDemand.js
index 81632d9941d..b9380066294 100644
--- a/src/events/REFS/refsBaronDemand.js
+++ b/src/events/REFS/refsBaronDemand.js
@@ -7,8 +7,6 @@ App.Events.refsBaronDemand = class refsBaronDemand extends App.Events.BaseEvent
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const costYes = 8500;
 		const costGifts = 2000;
 
diff --git a/src/events/REFS/refsBodyPurismEncounter.js b/src/events/REFS/refsBodyPurismEncounter.js
index 7b4aa2513a1..e25d6f740b1 100644
--- a/src/events/REFS/refsBodyPurismEncounter.js
+++ b/src/events/REFS/refsBodyPurismEncounter.js
@@ -6,8 +6,6 @@ App.Events.refsBodyPurismEncounter = class refsBodyPurismEncounter extends App.E
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const cost = 1000;
 		const slave = GenerateNewSlave("XX", {
 			minAge: 36, maxAge: 42, ageOverridesPedoMode: 1, disableDisability: 1, race: "nonslave"
diff --git a/src/events/REFS/refsDeadBaron.js b/src/events/REFS/refsDeadBaron.js
index 31ee79323c4..04628e88436 100644
--- a/src/events/REFS/refsDeadBaron.js
+++ b/src/events/REFS/refsDeadBaron.js
@@ -8,8 +8,6 @@ App.Events.refsDeadBaron = class refsDeadBaron extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		App.Events.addParagraph(node, [`Although the lives of the uber-wealthy last for so long with the heights of modern medicine that some whisper that you are immortal, no one lives forever. Recently, one of your Imperial Barons has passed away, supposedly from natural causes, although it's always possible that the shadowy and underhanded elites a step lower in the hierarchy might have hastened their passing - if that's the case, your Knights will learn of the culprits soon enough. Regardless of the reason, you now have an opening in your noble hierarchy, and as always, there is no shortage of hungry, ambitious elites looking to fill the slot.`]);
 
 		App.Events.addParagraph(node, [`Typically, the position is hereditary; the adult children of a Baron, those had legitimately and not with slaves, expect to inherit the title in an order of seniority. However, this is only precedent, and not the actual legal code; the laws, as you've written them, allow you to assign the title to whoever you please upon the death of the former Baron. You could, undoubtedly, choose to award it to someone else instead of the Baron's children... although doing so would, no doubt, infuriate the influential Baronets, who expect their family to continue to hold its prestigious position.`]);
diff --git a/src/events/REFS/refsDegradationistEncounter.js b/src/events/REFS/refsDegradationistEncounter.js
index 79232a80ea2..1a9dd215559 100644
--- a/src/events/REFS/refsDegradationistEncounter.js
+++ b/src/events/REFS/refsDegradationistEncounter.js
@@ -6,8 +6,6 @@ App.Events.refsDegradationistEncounter = class refsDegradationistEncounter exten
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const cost = 2000;
 		const slave = GenerateNewSlave(null, {maxAge: 22, disableDisability: 1});
 		slave.origin = "$He was taken into your custody from an owner who treated $him as an equal.";
diff --git a/src/events/REFS/refsFeast.js b/src/events/REFS/refsFeast.js
index 0b1deeb9209..0e91087a5bd 100644
--- a/src/events/REFS/refsFeast.js
+++ b/src/events/REFS/refsFeast.js
@@ -56,8 +56,6 @@ App.Events.refsFeast = class refsFeast extends App.Events.BaseEvent {
 		App.Events.addResponses(node, choices);
 
 		function enormous() {
-			V.nextButton = "Continue";
-			V.nextLink = "RIE Eligibility Check";
 			repX(7000, "event");
 			V.arcologies[0].prosperity -= 1;
 			cashX(-enormousCash, "Feasting");
diff --git a/src/events/REFS/refsKnightlyDuel.js b/src/events/REFS/refsKnightlyDuel.js
index 2231cc0820f..499719ebc72 100644
--- a/src/events/REFS/refsKnightlyDuel.js
+++ b/src/events/REFS/refsKnightlyDuel.js
@@ -7,8 +7,6 @@ App.Events.refsKnightlyDuel = class refsKnightlyDuel extends App.Events.BaseEven
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave("XY", {minAge: 22, maxAge: 34, race: "nonslave"});
 		slave.origin = "$He is a knight. If you have acquired this slave, something has gone wrong.";
 		slave.career = "spec ops";
diff --git a/src/events/REFS/refsMaturityPreferentialistEncounter.js b/src/events/REFS/refsMaturityPreferentialistEncounter.js
index 7241af5834c..59ce1573235 100644
--- a/src/events/REFS/refsMaturityPreferentialistEncounter.js
+++ b/src/events/REFS/refsMaturityPreferentialistEncounter.js
@@ -6,8 +6,6 @@ App.Events.refsMaturityPreferentialistEncounter = class refsMaturityPreferential
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const cost = 500;
 		const enslaveCost = 10000;
 		const slave = GenerateNewSlave("XX", {
diff --git a/src/events/REFS/refsPastoralistEncounter.js b/src/events/REFS/refsPastoralistEncounter.js
index 20bd307a477..9616155f36f 100644
--- a/src/events/REFS/refsPastoralistEncounter.js
+++ b/src/events/REFS/refsPastoralistEncounter.js
@@ -6,8 +6,6 @@ App.Events.refsPastoralistEncounter = class refsPastoralistEncounter extends App
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const cost = 1000;
 		const slave = GenerateNewSlave("XX", {maxAge: 65, disableDisability: 1, race: "nonslave"});
 		if (slave.weight < 50) {
diff --git a/src/events/REFS/refsPaternalistEncounter.js b/src/events/REFS/refsPaternalistEncounter.js
index 40cdbcdcbd6..82e9f37638b 100644
--- a/src/events/REFS/refsPaternalistEncounter.js
+++ b/src/events/REFS/refsPaternalistEncounter.js
@@ -6,8 +6,6 @@ App.Events.refsPaternalistEncounter = class refsPaternalistEncounter extends App
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const cost = 2000;
 		const slave = GenerateNewSlave(null, {maxAge: 22, disableDisability: 1});
 		slave.origin = "$He was taken into your custody from an abusive owner.";
diff --git a/src/events/REFS/refsPhysicalIdealistEncounter.js b/src/events/REFS/refsPhysicalIdealistEncounter.js
index 35893471544..df81309a9b4 100644
--- a/src/events/REFS/refsPhysicalIdealistEncounter.js
+++ b/src/events/REFS/refsPhysicalIdealistEncounter.js
@@ -6,8 +6,6 @@ App.Events.refsPhysicalIdealistEncounter = class refsPhysicalIdealistEncounter e
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const cost = 1000;
 		const slave = GenerateNewSlave("XX", {maxAge: 22, disableDisability: 1, race: "nonslave"});
 		slave.devotion = 100;
diff --git a/src/events/REFS/refsTransformationFetishismEncounter.js b/src/events/REFS/refsTransformationFetishismEncounter.js
index 05edc10733c..f69254b557d 100644
--- a/src/events/REFS/refsTransformationFetishismEncounter.js
+++ b/src/events/REFS/refsTransformationFetishismEncounter.js
@@ -6,8 +6,6 @@ App.Events.refsTransformationFetishismEncounter = class refsTransformationFetish
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const cost = 1000;
 		const enslaveCost = 10000;
 		const slave = GenerateNewSlave("XX", {maxAge: 22, disableDisability: 1, race: "nonslave"});
diff --git a/src/events/REFS/refsWarhound.js b/src/events/REFS/refsWarhound.js
index 9f2c443473e..333ca9d6e8c 100644
--- a/src/events/REFS/refsWarhound.js
+++ b/src/events/REFS/refsWarhound.js
@@ -6,8 +6,6 @@ App.Events.refsWarhound = class refsWarhound extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {minAge: 16, maxAge: 24, disableDisability: 1});
 		slave.origin = "You don't know what $he was before $he was abducted by Imperial merchants, transformed into a cybernetic, mindbroken hound of war, and sold to you. Now $he only receives positive stimuli directly to $his brain when being loyal and obedient to you, and a barrage of violent imagery when you order $him to attack. $He stands on two feet for your inspection and when $he needs to run, but often walks around on all fours instinctively like a dog.";
 		slave.career = "a child soldier";
diff --git a/src/events/REFS/refsYouthPreferentialistEncounter.js b/src/events/REFS/refsYouthPreferentialistEncounter.js
index 87b5fc74b64..5cff93a936f 100644
--- a/src/events/REFS/refsYouthPreferentialistEncounter.js
+++ b/src/events/REFS/refsYouthPreferentialistEncounter.js
@@ -6,8 +6,6 @@ App.Events.refsYouthPreferentialistEncounter = class refsYouthPreferentialistEnc
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const cost = 500;
 		const enslaveCost = 10000;
 		const slave = GenerateNewSlave("XX", {maxAge: 22, disableDisability: 1, race: "nonslave"});
diff --git a/src/events/REM/remFluctuations.js b/src/events/REM/remFluctuations.js
index 79c4c0218c6..6965c0abe05 100644
--- a/src/events/REM/remFluctuations.js
+++ b/src/events/REM/remFluctuations.js
@@ -12,8 +12,6 @@ App.Events.REMFluctuations = class REMFluctuations extends App.Events.BaseEvent
 
 	execute(node) {
 		let r = [];
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 
 		const {
 			HeA, HisA,
diff --git a/src/events/REM/remMerger.js b/src/events/REM/remMerger.js
index b1347bdb2bb..c25d8021df5 100644
--- a/src/events/REM/remMerger.js
+++ b/src/events/REM/remMerger.js
@@ -6,9 +6,6 @@ App.Events.REMMerger = class REMMerger extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
-
 		const slaveCompany = App.Corporate.divisionList
 			.filter	(div => div.founded && div.hasMergers)
 			.map	(div => div.mergerChoices.map((merger, index) => ({merger, index, division:div})))
diff --git a/src/events/RESS/PAFlirting.js b/src/events/RESS/PAFlirting.js
index ad7da197a7f..d007fc21f76 100644
--- a/src/events/RESS/PAFlirting.js
+++ b/src/events/RESS/PAFlirting.js
@@ -37,8 +37,6 @@ App.Events.RESSPAFlirting = class RESSPAFlirting extends App.Events.BaseEvent {
 		} = getPronouns(assistant.pronouns().main).appendSuffix("A");
 		const assistantCap = capFirstChar(V.assistant.name);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [eventSlave, "assistant"], "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/ageDifferenceOldPC.js b/src/events/RESS/ageDifferenceOldPC.js
index 592db14bd74..d6fab598f44 100644
--- a/src/events/RESS/ageDifferenceOldPC.js
+++ b/src/events/RESS/ageDifferenceOldPC.js
@@ -29,8 +29,6 @@ App.Events.RESSAgeDifferenceOldPC = class RESSAgeDifferenceOldPC extends App.Eve
 		const {title: Master, say} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/ageDifferenceYoungPC.js b/src/events/RESS/ageDifferenceYoungPC.js
index 6c8656ab423..b94ee3f0a44 100644
--- a/src/events/RESS/ageDifferenceYoungPC.js
+++ b/src/events/RESS/ageDifferenceYoungPC.js
@@ -30,8 +30,6 @@ App.Events.RESSAgeDifferenceYoungPC = class RESSAgeDifferenceYoungPC extends App
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/ampResting.js b/src/events/RESS/ampResting.js
index 5f0537c42f9..0741760012a 100644
--- a/src/events/RESS/ampResting.js
+++ b/src/events/RESS/ampResting.js
@@ -21,8 +21,6 @@ App.Events.RESSAmpResting = class RESSAmpResting extends App.Events.BaseEvent {
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/arcadeSadist.js b/src/events/RESS/arcadeSadist.js
index d7682055679..7967d10bfa9 100644
--- a/src/events/RESS/arcadeSadist.js
+++ b/src/events/RESS/arcadeSadist.js
@@ -31,8 +31,6 @@ App.Events.RESSArcadeSadist = class RESSArcadeSadist extends App.Events.BaseEven
 		} = getPronouns(eventSlave);
 		const {title: Master, say} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		let artDiv = document.createElement("div"); // named container so we can replace it later
 		App.Events.drawEventArt(artDiv, eventSlave);
 		node.appendChild(artDiv);
diff --git a/src/events/RESS/assFitting.js b/src/events/RESS/assFitting.js
index ed16023ca1b..c6df4b25163 100644
--- a/src/events/RESS/assFitting.js
+++ b/src/events/RESS/assFitting.js
@@ -25,8 +25,6 @@ App.Events.RESSAssFitting = class RESSAssFitting extends App.Events.BaseEvent {
 		} = getPronouns(eventSlave);
 		const {title: Master} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		let artDiv = document.createElement("div"); // named container so we can replace it later
 		App.Events.drawEventArt(artDiv, eventSlave, "no clothing");
 		node.appendChild(artDiv);
diff --git a/src/events/RESS/bedSnuggle.js b/src/events/RESS/bedSnuggle.js
index 97119374f94..f5093e2c5ec 100644
--- a/src/events/RESS/bedSnuggle.js
+++ b/src/events/RESS/bedSnuggle.js
@@ -34,8 +34,6 @@ App.Events.RESSBedSnuggle = class RESSBedSnuggle extends App.Events.BaseEvent {
 			womanTerm = "teen";
 		}
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 
diff --git a/src/events/RESS/birthday.js b/src/events/RESS/birthday.js
index ddb1dfa3173..4683b549407 100644
--- a/src/events/RESS/birthday.js
+++ b/src/events/RESS/birthday.js
@@ -34,8 +34,6 @@ App.Events.RESSBirthday = class RESSBirthday extends App.Events.BaseEvent {
 		const {title: Master} = getEnunciation(eventSlave);
 		const hands = hasBothArms(eventSlave) ? "hands" : "hand";
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/bondageGear.js b/src/events/RESS/bondageGear.js
index 7e11eb7293b..c05ff65a2df 100644
--- a/src/events/RESS/bondageGear.js
+++ b/src/events/RESS/bondageGear.js
@@ -24,8 +24,6 @@ App.Events.RESSBondageGear = class RESSBondageGear extends App.Events.BaseEvent
 		const hands = hasBothArms(eventSlave) ? "hands" : "hand";
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
-		V.nextLink = "Next Week";
-
 		let t = [];
 		t.push(`One day, you catch sight of`);
 		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
diff --git a/src/events/RESS/breedingBull.js b/src/events/RESS/breedingBull.js
index 065b3c921c0..6fd404edb1e 100644
--- a/src/events/RESS/breedingBull.js
+++ b/src/events/RESS/breedingBull.js
@@ -40,8 +40,6 @@ App.Events.RESSBreedingBull = class RESSBreedingBull extends App.Events.BaseEven
 		const {girlP, womanP} = getPronouns(V.PC).appendSuffix("P");
 		const {title: Master} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/cockfeederResistance.js b/src/events/RESS/cockfeederResistance.js
index e14eec961eb..c4f3586de31 100644
--- a/src/events/RESS/cockfeederResistance.js
+++ b/src/events/RESS/cockfeederResistance.js
@@ -19,7 +19,6 @@ App.Events.RESSCockFeederResistance = class RESSCockFeederResistance extends App
 	}
 
 	execute(node) {
-		/** @type {Array<App.Entity.SlaveState>} */
 		let [eventSlave] = this.actors.map(a => getSlave(a));
 		const {
 			He, he, His, his, him, himself
@@ -27,11 +26,7 @@ App.Events.RESSCockFeederResistance = class RESSCockFeederResistance extends App
 		const {hisA} = getPronouns(assistant.pronouns().main).appendSuffix('A');
 		const {title: Master} = getEnunciation(eventSlave);
 		const desc = SlaveTitle(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
diff --git a/src/events/RESS/comfortableSeat.js b/src/events/RESS/comfortableSeat.js
index cf800368ec1..cd26a7f81e6 100644
--- a/src/events/RESS/comfortableSeat.js
+++ b/src/events/RESS/comfortableSeat.js
@@ -31,11 +31,7 @@ App.Events.RESSComfortableSeat = class RESSComfortableSeat extends App.Events.Ba
 		const desc = SlaveTitle(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 		const dickSize = eventSlave.dick > 4 ? "big" : (eventSlave.dick > 2 ? "" : "tiny");
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/events/RESS/coolerLockin.js b/src/events/RESS/coolerLockin.js
index 69c954ada68..81441e275ce 100644
--- a/src/events/RESS/coolerLockin.js
+++ b/src/events/RESS/coolerLockin.js
@@ -28,8 +28,6 @@ App.Events.RESSCoolerLockin = class RESSCoolerLockin extends App.Events.BaseEven
 		const {title: Master, say} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/devotedAnalVirgin.js b/src/events/RESS/devotedAnalVirgin.js
index 14c1a78f71b..2c67cd4e04d 100644
--- a/src/events/RESS/devotedAnalVirgin.js
+++ b/src/events/RESS/devotedAnalVirgin.js
@@ -25,11 +25,7 @@ App.Events.RESSDevotedAnalVirgin = class RESSDevotedAnalVirgin extends App.Event
 		} = getPronouns(eventSlave);
 		const {say, title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/events/RESS/devotedEducated.js b/src/events/RESS/devotedEducated.js
index e2d9733a717..c18c4e4a6d4 100644
--- a/src/events/RESS/devotedEducated.js
+++ b/src/events/RESS/devotedEducated.js
@@ -26,11 +26,7 @@ App.Events.RESSDevotedEducated = class RESSDevotedEducated extends App.Events.Ba
 		} = getPronouns(eventSlave);
 		const {say, title: Master} = getEnunciation(eventSlave);
 		const desc = SlaveTitle(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
diff --git a/src/events/RESS/devotedFearfulSlave.js b/src/events/RESS/devotedFearfulSlave.js
index 633b2b14183..078f08608b8 100644
--- a/src/events/RESS/devotedFearfulSlave.js
+++ b/src/events/RESS/devotedFearfulSlave.js
@@ -26,9 +26,6 @@ App.Events.RESSDevotedFearfulSlave = class RESSDevotedFearfulSlave extends App.E
 			He, he, him, his, himself, girl
 		} = getPronouns(eventSlave);
 
-		V.nextButton = "Continue";
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 		t.push(`You are working late tonight, poring over some particularly troublesome business documents — though, thankfully, the end appears to be in sight. The sun has all but completely slipped below the horizon, drowning your office in moody twilight. Seeing that you are finally approaching the end of a long day, ${V.assistant.name} takes the liberty of having a`);
 
diff --git a/src/events/RESS/devotedNympho.js b/src/events/RESS/devotedNympho.js
index 59ad5d2e541..c5aba1a2a26 100644
--- a/src/events/RESS/devotedNympho.js
+++ b/src/events/RESS/devotedNympho.js
@@ -26,8 +26,6 @@ App.Events.RESSDevotedNympho = class RESSDevotedNympho extends App.Events.BaseEv
 		const {His, He, he, his, him, himself} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/devotedShortstack.js b/src/events/RESS/devotedShortstack.js
index 50c454f95e6..d7c4013bcdd 100644
--- a/src/events/RESS/devotedShortstack.js
+++ b/src/events/RESS/devotedShortstack.js
@@ -28,12 +28,9 @@ App.Events.RESSDevotedShortstack = class RESSDevotedShortstack extends App.Event
 		const {title: Master, say} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
+		const PC = V.PC;
 		const phallus = PC.dick === 0 ? "phallus" : "cock";
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let t = [];
diff --git a/src/events/RESS/devotedVirgin.js b/src/events/RESS/devotedVirgin.js
index b92d97be79d..e39e332fbb2 100644
--- a/src/events/RESS/devotedVirgin.js
+++ b/src/events/RESS/devotedVirgin.js
@@ -24,11 +24,7 @@ App.Events.RESSDevotedVirgin = class RESSDevotedVirgin extends App.Events.BaseEv
 			He, he, his, him, himself
 		} = getPronouns(eventSlave);
 		const {say, title: Master} = getEnunciation(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/events/RESS/devotedWaist.js b/src/events/RESS/devotedWaist.js
index 9d1413974f7..2ce36f8394f 100644
--- a/src/events/RESS/devotedWaist.js
+++ b/src/events/RESS/devotedWaist.js
@@ -25,11 +25,7 @@ App.Events.RESSDevotedWaist = class RESSDevotedWaist extends App.Events.BaseEven
 			He, he, His, his, him, himself, woman
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
diff --git a/src/events/RESS/escapee.js b/src/events/RESS/escapee.js
index d9c3e5220ca..a9e1913ea02 100644
--- a/src/events/RESS/escapee.js
+++ b/src/events/RESS/escapee.js
@@ -22,8 +22,6 @@ App.Events.RESSEscapee = class RESSEscapee extends App.Events.BaseEvent {
 			He, he, his, him
 		} = getPronouns(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let t = [];
diff --git a/src/events/RESS/forbiddenMasturbation.js b/src/events/RESS/forbiddenMasturbation.js
index b3089106023..838f23160bf 100644
--- a/src/events/RESS/forbiddenMasturbation.js
+++ b/src/events/RESS/forbiddenMasturbation.js
@@ -32,8 +32,6 @@ App.Events.RESSForbiddenMasturbation = class RESSForbiddenMasturbation extends A
 
 		let offHand = "nothing";
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/frighteningDick.js b/src/events/RESS/frighteningDick.js
index 82ce8ef51b0..66a10a2c4ff 100644
--- a/src/events/RESS/frighteningDick.js
+++ b/src/events/RESS/frighteningDick.js
@@ -30,11 +30,7 @@ App.Events.RESSFrighteningDick = class RESSFrighteningDick extends App.Events.Ba
 		const {say, title: Master} = getEnunciation(eventSlave);
 		const desc = SlaveTitle(eventSlave);
 		const belly = bellyAdjective(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/events/RESS/hotPC.js b/src/events/RESS/hotPC.js
index 73d6c0191ff..4668f69d94d 100644
--- a/src/events/RESS/hotPC.js
+++ b/src/events/RESS/hotPC.js
@@ -28,11 +28,7 @@ App.Events.RESSHotPC = class RESSHotPC extends App.Events.BaseEvent {
 			He, he, His, his, him, himself
 		} = getPronouns(eventSlave);
 		const {title: Master} = getEnunciation(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/events/RESS/imScared.js b/src/events/RESS/imScared.js
index 193e4cebac1..4c772a8cd14 100644
--- a/src/events/RESS/imScared.js
+++ b/src/events/RESS/imScared.js
@@ -24,11 +24,7 @@ App.Events.RESSImScared = class RESSImScared extends App.Events.BaseEvent {
 			He, he, his, him, himself
 		} = getPronouns(eventSlave);
 		const {say, title: Master} = getEnunciation(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
diff --git a/src/events/RESS/impregnationPlease.js b/src/events/RESS/impregnationPlease.js
index 9bf05cfb93c..2539b762a4a 100644
--- a/src/events/RESS/impregnationPlease.js
+++ b/src/events/RESS/impregnationPlease.js
@@ -31,8 +31,6 @@ App.Events.RESSImpregnationPlease = class RESSImpregnationPlease extends App.Eve
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let isFaceUp = true;
diff --git a/src/events/RESS/injectionsPlease.js b/src/events/RESS/injectionsPlease.js
index b8306e01638..6ab3ec40e74 100644
--- a/src/events/RESS/injectionsPlease.js
+++ b/src/events/RESS/injectionsPlease.js
@@ -29,8 +29,6 @@ App.Events.RESSInjectionsPlease = class RESSInjectionsPlease extends App.Events.
 		const {title: Master} = getEnunciation(eventSlave);
 		const drug = getDrug();
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		App.Events.addParagraph(node, [
diff --git a/src/events/RESS/kitchenMolestation.js b/src/events/RESS/kitchenMolestation.js
index 320969dce53..8990482d1ba 100644
--- a/src/events/RESS/kitchenMolestation.js
+++ b/src/events/RESS/kitchenMolestation.js
@@ -32,11 +32,7 @@ App.Events.RESSKitchenMolestation = class RESSKitchenMolestation extends App.Eve
 		} = getNonlocalPronouns(V.seeDicks).appendSuffix('U');
 		const belly = bellyAdjective(eventSlave);
 		const targetJobs = ["be a servant", "be a subordinate slave", "get milked", "learn in the schoolroom", "please you", "rest in the spa", "rest", "serve in the club", "serve the public", "take classes", "whore", "work a glory hole", "work as a servant", "work in the brothel"];
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
diff --git a/src/events/RESS/languageLesson.js b/src/events/RESS/languageLesson.js
index 39f096dcf51..46269aa9779 100644
--- a/src/events/RESS/languageLesson.js
+++ b/src/events/RESS/languageLesson.js
@@ -30,8 +30,6 @@ App.Events.RESSLanguageLesson = class RESSLanguageLesson extends App.Events.Base
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/lazyEvening.js b/src/events/RESS/lazyEvening.js
index 28447068fcb..a660ce7f4c4 100644
--- a/src/events/RESS/lazyEvening.js
+++ b/src/events/RESS/lazyEvening.js
@@ -23,8 +23,6 @@ App.Events.RESSLazyEvening = class RESSLazyEvening extends App.Events.BaseEvent
 		} = getPronouns(eventSlave);
 		const {title} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		/** @param {App.Entity.SlaveState} slave */
 		function getSceneClothes(slave) {
 			if (getLimbCount(slave, 102) > 2) {
diff --git a/src/events/RESS/masterfulWhore.js b/src/events/RESS/masterfulWhore.js
index 022b9bfc524..a0ec9cdec53 100644
--- a/src/events/RESS/masterfulWhore.js
+++ b/src/events/RESS/masterfulWhore.js
@@ -22,8 +22,6 @@ App.Events.RESSMasterfulWhore = class RESSMasterfulWhore extends App.Events.Base
 		const {He, he, his, him, himself} = getPronouns(eventSlave);
 		const feet = hasBothLegs ? "feet" : "foot";
 
-		V.nextLink = "Next Week";
-
 		let artDiv = document.createElement("div"); // named container so we can replace it later
 		App.Events.drawEventArt(artDiv, eventSlave);
 		node.appendChild(artDiv);
diff --git a/src/events/RESS/meanGirls.js b/src/events/RESS/meanGirls.js
index cf8fc66322e..4eef9f4f0e4 100644
--- a/src/events/RESS/meanGirls.js
+++ b/src/events/RESS/meanGirls.js
@@ -28,8 +28,6 @@ App.Events.RESSMeanGirls = class RESSMeanGirls extends App.Events.BaseEvent {
 		} = getPronouns(eventSlave);
 		const {hisA, heA, HeA} = getPronouns(assistant.pronouns().main).appendSuffix('A');
 
-		V.nextLink = "Next Week";
-
 		let artDiv = document.createElement("div"); // named container so we can replace it later
 		node.appendChild(artDiv);
 
diff --git a/src/events/RESS/milkgasm.js b/src/events/RESS/milkgasm.js
index c7641555882..4ecaf0e5bfb 100644
--- a/src/events/RESS/milkgasm.js
+++ b/src/events/RESS/milkgasm.js
@@ -25,8 +25,6 @@ App.Events.RESSMilkgasm = class RESSMilkgasm extends App.Events.BaseEvent {
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/mindbrokenMorning.js b/src/events/RESS/mindbrokenMorning.js
index 3a60a292fc8..6b1120a2888 100644
--- a/src/events/RESS/mindbrokenMorning.js
+++ b/src/events/RESS/mindbrokenMorning.js
@@ -22,8 +22,6 @@ App.Events.RESSMindbrokenMorning = class RESSMindbrokenMorning extends App.Event
 		const {His, He, he, his, him, himself} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/modestClothes.js b/src/events/RESS/modestClothes.js
index 381f3a28a96..2ca58a5253b 100644
--- a/src/events/RESS/modestClothes.js
+++ b/src/events/RESS/modestClothes.js
@@ -29,8 +29,6 @@ App.Events.RESSModestClothes = class RESSModestClothes extends App.Events.BaseEv
 		} = getPronouns(eventSlave);
 		const {title: Master, say} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		let artDiv = document.createElement("div"); // named container so we can replace it later
 		App.Events.drawEventArt(artDiv, eventSlave, "no clothing");
 		node.appendChild(artDiv);
diff --git a/src/events/RESS/moistPussy.js b/src/events/RESS/moistPussy.js
index ecc16fc3a88..190b6e58afe 100644
--- a/src/events/RESS/moistPussy.js
+++ b/src/events/RESS/moistPussy.js
@@ -23,8 +23,6 @@ App.Events.RESSMoistPussy = class RESSMoistPussy extends App.Events.BaseEvent {
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let t = [];
diff --git a/src/events/RESS/muscles.js b/src/events/RESS/muscles.js
index c01b14a275a..a13cf0d4c44 100644
--- a/src/events/RESS/muscles.js
+++ b/src/events/RESS/muscles.js
@@ -22,8 +22,6 @@ App.Events.RESSMuscles = class RESSMuscles extends App.Events.BaseEvent {
 			He, he, His, his, hers, him, himself, girl
 		} = getPronouns(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let t = [];
diff --git a/src/events/RESS/mutinyAttempt.js b/src/events/RESS/mutinyAttempt.js
index 0b5c1fcda67..abcb5778be4 100644
--- a/src/events/RESS/mutinyAttempt.js
+++ b/src/events/RESS/mutinyAttempt.js
@@ -31,8 +31,6 @@ App.Events.RESSMutinyAttempt = class RESSMutinyAttempt extends App.Events.BaseEv
 		const hands = hasBothArms(eventSlave) ? "hands" : "hand";
 		const dick = V.PC.dick !== 0 ? "dick" : "strap-on";
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 		let mutinyAttempted = true;
 
diff --git a/src/events/RESS/nightVisit.js b/src/events/RESS/nightVisit.js
index 9fc1c7a7e36..e66a0a900e0 100644
--- a/src/events/RESS/nightVisit.js
+++ b/src/events/RESS/nightVisit.js
@@ -28,8 +28,6 @@ App.Events.RESSNightVisit = class RESSNightVisit extends App.Events.BaseEvent {
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		let artDiv = document.createElement("div"); // named container so we can replace it later
 		App.Events.drawEventArt(artDiv, eventSlave);
 		node.appendChild(artDiv);
diff --git a/src/events/RESS/obedientAddict.js b/src/events/RESS/obedientAddict.js
index e825fb839fd..f4a2c82c264 100644
--- a/src/events/RESS/obedientAddict.js
+++ b/src/events/RESS/obedientAddict.js
@@ -25,11 +25,7 @@ App.Events.RESSObedientAddict = class RESSObedientAddict extends App.Events.Base
 			He, he, His, his, him, girl
 		} = getPronouns(eventSlave);
 		const {title: Master} = getEnunciation(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/events/RESS/obedientBitchy.js b/src/events/RESS/obedientBitchy.js
index 903ba6a17d2..9a2f87a1974 100644
--- a/src/events/RESS/obedientBitchy.js
+++ b/src/events/RESS/obedientBitchy.js
@@ -23,11 +23,7 @@ App.Events.RESSObedientBitchy = class RESSObedientBitchy extends App.Events.Base
 			He, he, His, his, him
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/events/RESS/obedientGirlish.js b/src/events/RESS/obedientGirlish.js
index fe4bd8332ae..de35831fd01 100644
--- a/src/events/RESS/obedientGirlish.js
+++ b/src/events/RESS/obedientGirlish.js
@@ -28,11 +28,7 @@ App.Events.RESSObedientGirlish = class RESSObedientGirlish extends App.Events.Ba
 		} = getPronouns(eventSlave);
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
diff --git a/src/events/RESS/obedientIdiot.js b/src/events/RESS/obedientIdiot.js
index 9d2edffc55a..ff3e9c970f8 100644
--- a/src/events/RESS/obedientIdiot.js
+++ b/src/events/RESS/obedientIdiot.js
@@ -27,11 +27,7 @@ App.Events.RESSObedientIdiot = class RESSObedientIdiot extends App.Events.BaseEv
 		const {HeA, heA} = getPronouns(assistant.pronouns().main).appendSuffix('A');
 		const {say, title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
diff --git a/src/events/RESS/obedientShemale.js b/src/events/RESS/obedientShemale.js
index 8e381a1dff1..3a0faff2b53 100644
--- a/src/events/RESS/obedientShemale.js
+++ b/src/events/RESS/obedientShemale.js
@@ -30,11 +30,7 @@ App.Events.RESSObedientShemale = class RESSObedientShemale extends App.Events.Ba
 		} = getPronouns(eventSlave);
 		const {title: Master} = getEnunciation(eventSlave);
 		const anusDesc = eventSlave.anus > 2 ? "gaping" : (eventSlave.anus > 1 ? "loose" : "tight");
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/events/RESS/passingDeclaration.js b/src/events/RESS/passingDeclaration.js
index a479261d02d..25bf74e8247 100644
--- a/src/events/RESS/passingDeclaration.js
+++ b/src/events/RESS/passingDeclaration.js
@@ -30,11 +30,7 @@ App.Events.RESSPassingDeclaration = class RESSPassingDeclaration extends App.Eve
 		const {say, title: Master} = getEnunciation(eventSlave);
 		const desc = SlaveTitle(eventSlave);
 		const belly = bellyAdjective(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave);
 
diff --git a/src/events/RESS/penitent.js b/src/events/RESS/penitent.js
index ad68b264b4b..22f5a8fe401 100644
--- a/src/events/RESS/penitent.js
+++ b/src/events/RESS/penitent.js
@@ -23,8 +23,6 @@ App.Events.RESSPenitent = class RESSPenitent extends App.Events.BaseEvent {
 		const {His, He, he, his, him, himself} = getPronouns(eventSlave);
 		const {title: Master} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		let artDiv = document.createElement("div"); // named container so we can replace it later
 		App.Events.drawEventArt(artDiv, eventSlave);
 		node.appendChild(artDiv);
diff --git a/src/events/RESS/permittedMasturbation.js b/src/events/RESS/permittedMasturbation.js
index d39518726fe..726621fc222 100644
--- a/src/events/RESS/permittedMasturbation.js
+++ b/src/events/RESS/permittedMasturbation.js
@@ -32,8 +32,6 @@ App.Events.RESSPermittedMasturbation = class RESSPermittedMasturbation extends A
 		let didAnal = false;
 		let didVaginal = false;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/plimbHelp.js b/src/events/RESS/plimbHelp.js
index 71d30c12ee2..d7824074784 100644
--- a/src/events/RESS/plimbHelp.js
+++ b/src/events/RESS/plimbHelp.js
@@ -26,9 +26,6 @@ App.Events.RESSPlimbHelp = class RESSPlimbHelp extends App.Events.BaseEvent {
 		const belly = bellyAdjective(eventSlave);
 		const {heA} = getPronouns(assistant.pronouns().main).appendSuffix("A");
 
-
-		V.nextLink = "Next Week";
-
 		let artDiv = document.createElement("div");
 		if (V.seeImages === 1) {
 			let tempClone = clone(eventSlave); // Figured it would be safest not to mess with the actual slave, and instead amputate a temporary clone
diff --git a/src/events/RESS/plugDisobedience.js b/src/events/RESS/plugDisobedience.js
index c449f3a2f1f..c8f626a21c4 100644
--- a/src/events/RESS/plugDisobedience.js
+++ b/src/events/RESS/plugDisobedience.js
@@ -27,8 +27,6 @@ App.Events.RESSPlugDisobedience = class RESSPlugDisobedience extends App.Events.
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/refreshmentDelivery.js b/src/events/RESS/refreshmentDelivery.js
index d26d4b17bb8..323fa978d3d 100644
--- a/src/events/RESS/refreshmentDelivery.js
+++ b/src/events/RESS/refreshmentDelivery.js
@@ -26,8 +26,6 @@ App.Events.RESSRefreshmentDelivery = class RESSRefreshmentDelivery extends App.E
 		const belly = bellyAdjective(eventSlave);
 		const children = eventSlave.pregType > 1 ? "children" : "child";
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/restrictedSmart.js b/src/events/RESS/restrictedSmart.js
index d6cbd90c815..85c9f61224f 100644
--- a/src/events/RESS/restrictedSmart.js
+++ b/src/events/RESS/restrictedSmart.js
@@ -27,8 +27,6 @@ App.Events.RESSRestrictedSmart = class RESSRestrictedSmart extends App.Events.Ba
 		const {title: Master, say} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/retchingCum.js b/src/events/RESS/retchingCum.js
index 28e5fe57c1c..5d8a5538639 100644
--- a/src/events/RESS/retchingCum.js
+++ b/src/events/RESS/retchingCum.js
@@ -24,8 +24,6 @@ App.Events.RESSRetchingCum = class RESSRetchingCum extends App.Events.BaseEvent
 			He, he, His, his, him, girl
 		} = getPronouns(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let t = [];
diff --git a/src/events/RESS/review/PAservant.js b/src/events/RESS/review/PAservant.js
index 8bb0c71816a..12a07c38b85 100644
--- a/src/events/RESS/review/PAservant.js
+++ b/src/events/RESS/review/PAservant.js
@@ -35,8 +35,6 @@ App.Events.RESSPAServant = class RESSPAServant extends App.Events.BaseEvent {
 			HeA, heA, himA, hisA, himselfA, girlA, womanA, loliA
 		} = getPronouns(assistant.pronouns().main).appendSuffix("A");
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/aGift.js b/src/events/RESS/review/aGift.js
index f5249269acd..b8659e556ff 100644
--- a/src/events/RESS/review/aGift.js
+++ b/src/events/RESS/review/aGift.js
@@ -25,8 +25,6 @@ App.Events.RESSAGift = class RESSAGift extends App.Events.BaseEvent {
 		const belly = bellyAdjective(eventSlave);
 		const hands = hasBothArms(eventSlave) ? "hands" : "hand";
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		const FSArray = FutureSocieties.activeFSes(V.arcologies[0]);
diff --git a/src/events/RESS/review/ageImplant.js b/src/events/RESS/review/ageImplant.js
index 8063fcd2f95..082e289a969 100644
--- a/src/events/RESS/review/ageImplant.js
+++ b/src/events/RESS/review/ageImplant.js
@@ -28,8 +28,6 @@ App.Events.RESSAgeImplant = class RESSAgeImplant extends App.Events.BaseEvent {
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 
diff --git a/src/events/RESS/review/ampDevoted.js b/src/events/RESS/review/ampDevoted.js
index bdec7dde4e9..b1eb220f7cb 100644
--- a/src/events/RESS/review/ampDevoted.js
+++ b/src/events/RESS/review/ampDevoted.js
@@ -22,8 +22,6 @@ App.Events.RESSAmpDevoted = class RESSAmpDevoted extends App.Events.BaseEvent {
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/araAra.js b/src/events/RESS/review/araAra.js
index 339ab91160f..59de97b103e 100644
--- a/src/events/RESS/review/araAra.js
+++ b/src/events/RESS/review/araAra.js
@@ -29,8 +29,6 @@ App.Events.RESSAraAra = class RESSAraAra extends App.Events.BaseEvent {
 		const {title: Master, say} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/backStretch.js b/src/events/RESS/review/backStretch.js
index ace38ff49b5..5b89d83d88b 100644
--- a/src/events/RESS/review/backStretch.js
+++ b/src/events/RESS/review/backStretch.js
@@ -28,8 +28,6 @@ App.Events.RESSBackStretch = class RESSBackStretch extends App.Events.BaseEvent
 		const arms = hasBothArms(eventSlave) ? "arms" : "arm";
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/badDream.js b/src/events/RESS/review/badDream.js
index c31dd10d61e..6e2b26e7bd3 100644
--- a/src/events/RESS/review/badDream.js
+++ b/src/events/RESS/review/badDream.js
@@ -26,8 +26,6 @@ App.Events.RESSBadDream = class RESSBadDream extends App.Events.BaseEvent {
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/bondedLove.js b/src/events/RESS/review/bondedLove.js
index d8bb443d673..bc5a96b46cf 100644
--- a/src/events/RESS/review/bondedLove.js
+++ b/src/events/RESS/review/bondedLove.js
@@ -26,8 +26,6 @@ App.Events.RESSBondedLove = class RESSBondedLove extends App.Events.BaseEvent {
 		const belly = bellyAdjective(eventSlave);
 		const children = eventSlave.pregType > 1 ? "children" : "child";
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/breastExpansionBlues.js b/src/events/RESS/review/breastExpansionBlues.js
index 2e88abb7dd4..f4ba466ceac 100644
--- a/src/events/RESS/review/breastExpansionBlues.js
+++ b/src/events/RESS/review/breastExpansionBlues.js
@@ -34,8 +34,6 @@ App.Events.RESSBreastExpansionBlues = class RESSBreastExpansionBlues extends App
 		const hands = (hasBothArms(eventSlave)) ? `hands` : `hand`;
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/cageRelief.js b/src/events/RESS/review/cageRelief.js
index 2a4fcb077c0..f65208f8bf9 100644
--- a/src/events/RESS/review/cageRelief.js
+++ b/src/events/RESS/review/cageRelief.js
@@ -30,8 +30,6 @@ App.Events.RESSCageRelief = class RESSCageRelief extends App.Events.BaseEvent {
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/confidentTanning.js b/src/events/RESS/review/confidentTanning.js
index 3d1d4442d3f..90d7fd02f72 100644
--- a/src/events/RESS/review/confidentTanning.js
+++ b/src/events/RESS/review/confidentTanning.js
@@ -31,8 +31,6 @@ App.Events.RESSConfidentTanning = class RESSConfidentTanning extends App.Events.
 		const arms = hasBothArms(eventSlave) ? `arms` : `arm`;
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/cowMilking.js b/src/events/RESS/review/cowMilking.js
index 85eae5d9b75..b998fd087ca 100644
--- a/src/events/RESS/review/cowMilking.js
+++ b/src/events/RESS/review/cowMilking.js
@@ -29,8 +29,6 @@ App.Events.RESSCowMilking = class RESSCowMilking extends App.Events.BaseEvent {
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/cumslutWhore.js b/src/events/RESS/review/cumslutWhore.js
index 052ef459672..3a5bbed6a78 100644
--- a/src/events/RESS/review/cumslutWhore.js
+++ b/src/events/RESS/review/cumslutWhore.js
@@ -27,8 +27,6 @@ App.Events.RESSCumslutWhore = class RESSCumslutWhore extends App.Events.BaseEven
 		const belly = bellyAdjective(eventSlave);
 		const hands = hasBothArms(eventSlave) ? "hands" : "hand";
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/desperateNull.js b/src/events/RESS/review/desperateNull.js
index b97a279331e..468e707f06f 100644
--- a/src/events/RESS/review/desperateNull.js
+++ b/src/events/RESS/review/desperateNull.js
@@ -32,8 +32,6 @@ App.Events.RESSDesperateNull = class RESSDesperateNull extends App.Events.BaseEv
 		const arms = hasBothArms(eventSlave) ? "arms" : "arm";
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/desperatelyHorny.js b/src/events/RESS/review/desperatelyHorny.js
index b30fa66a59b..4620f430d1d 100644
--- a/src/events/RESS/review/desperatelyHorny.js
+++ b/src/events/RESS/review/desperatelyHorny.js
@@ -28,8 +28,6 @@ App.Events.RESSDesperatelyHorny = class RESSDesperatelyHorny extends App.Events.
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/devotedExhibition.js b/src/events/RESS/review/devotedExhibition.js
index aa545d418a4..a6aa819086f 100644
--- a/src/events/RESS/review/devotedExhibition.js
+++ b/src/events/RESS/review/devotedExhibition.js
@@ -28,8 +28,6 @@ App.Events.RESSDevotedExhibition = class RESSDevotedExhibition extends App.Event
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/devotedLotion.js b/src/events/RESS/review/devotedLotion.js
index fcf4cf7aec3..bbb4b509b72 100644
--- a/src/events/RESS/review/devotedLotion.js
+++ b/src/events/RESS/review/devotedLotion.js
@@ -28,8 +28,6 @@ App.Events.RESSDevotedLotion = class RESSDevotedLotion extends App.Events.BaseEv
 		const belly = bellyAdjective(eventSlave);
 		const inch = V.showInches === 2 ? "inch" : "centimeter";
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/devotedOld.js b/src/events/RESS/review/devotedOld.js
index 0ba3de2c1ad..9c585823fd3 100644
--- a/src/events/RESS/review/devotedOld.js
+++ b/src/events/RESS/review/devotedOld.js
@@ -28,8 +28,6 @@ App.Events.RESSDevotedOld = class RESSDevotedOld extends App.Events.BaseEvent {
 		const {title: Master, say} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/dickWringing.js b/src/events/RESS/review/dickWringing.js
index 6e18aca526c..01683938213 100644
--- a/src/events/RESS/review/dickWringing.js
+++ b/src/events/RESS/review/dickWringing.js
@@ -30,8 +30,6 @@ App.Events.RESSDickWringing = class RESSDickWringing extends App.Events.BaseEven
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/dickgirlPC.js b/src/events/RESS/review/dickgirlPC.js
index eb70864d314..520b3075cb1 100644
--- a/src/events/RESS/review/dickgirlPC.js
+++ b/src/events/RESS/review/dickgirlPC.js
@@ -31,9 +31,6 @@ App.Events.RESSDickgirlPC = class RESSDickgirlPC extends App.Events.BaseEvent {
 		const belly = bellyAdjective(eventSlave);
 		const arms = hasBothArms(eventSlave) ? "arms" : "arm";
 
-
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		App.Events.addParagraph(node, [
diff --git a/src/events/RESS/review/diet.js b/src/events/RESS/review/diet.js
index 22f33381b17..d36ea8c2cc5 100644
--- a/src/events/RESS/review/diet.js
+++ b/src/events/RESS/review/diet.js
@@ -25,8 +25,6 @@ App.Events.RESSDiet = class RESSDiet extends App.Events.BaseEvent {
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/extremeAphrodisiacs.js b/src/events/RESS/review/extremeAphrodisiacs.js
index 92426a42154..8804607fca0 100644
--- a/src/events/RESS/review/extremeAphrodisiacs.js
+++ b/src/events/RESS/review/extremeAphrodisiacs.js
@@ -24,8 +24,6 @@ App.Events.RESSExtremeAphrodisiacs = class RESSExtremeAphrodisiacs extends App.E
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/fearfulBalls.js b/src/events/RESS/review/fearfulBalls.js
index e149f68c0a2..649dbf7e09b 100644
--- a/src/events/RESS/review/fearfulBalls.js
+++ b/src/events/RESS/review/fearfulBalls.js
@@ -28,8 +28,6 @@ App.Events.RESSFearfulBalls = class RESSFearfulBalls extends App.Events.BaseEven
 		const {title: Master} = getEnunciation(eventSlave);
 		const hands = (hasBothArms(eventSlave)) ? `hands` : `hand`;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/fearfulHumiliation.js b/src/events/RESS/review/fearfulHumiliation.js
index b7b4aacce18..3f65b84273f 100644
--- a/src/events/RESS/review/fearfulHumiliation.js
+++ b/src/events/RESS/review/fearfulHumiliation.js
@@ -29,8 +29,6 @@ App.Events.RESSFearfulHumiliation = class RESSFearfulHumiliation extends App.Eve
 		} = getPronouns(eventSlave);
 		const {title: Master} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		App.Events.addParagraph(node, [
diff --git a/src/events/RESS/review/firstPeriod.js b/src/events/RESS/review/firstPeriod.js
index 8948e66902c..792273153b7 100644
--- a/src/events/RESS/review/firstPeriod.js
+++ b/src/events/RESS/review/firstPeriod.js
@@ -33,8 +33,6 @@ App.Events.RESSFirstPeriod = class RESSFirstPeriod extends App.Events.BaseEvent
 		const {title: Master} = getEnunciation(slave);
 		const {say} = getEnunciation(slave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, slave);
 
 		r.push(
diff --git a/src/events/RESS/review/fucktoyTribbing.js b/src/events/RESS/review/fucktoyTribbing.js
index 07a305483c4..e4232655b36 100644
--- a/src/events/RESS/review/fucktoyTribbing.js
+++ b/src/events/RESS/review/fucktoyTribbing.js
@@ -30,8 +30,6 @@ App.Events.RESSFucktoyTribbing = class RESSFucktoyTribbing extends App.Events.Ba
 		const belly = bellyAdjective(eventSlave);
 		const {hisU} = getNonlocalPronouns(V.seeDicks).appendSuffix("U");
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/gaggedSlave.js b/src/events/RESS/review/gaggedSlave.js
index 2b0dbb62218..374865ad658 100644
--- a/src/events/RESS/review/gaggedSlave.js
+++ b/src/events/RESS/review/gaggedSlave.js
@@ -22,8 +22,6 @@ App.Events.RESSGaggedSlave = class RESSGaggedSlave extends App.Events.BaseEvent
 			His, he, his, him
 		} = getPronouns(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/gapedAsshole.js b/src/events/RESS/review/gapedAsshole.js
index cd27e013cd4..2768e031cc5 100644
--- a/src/events/RESS/review/gapedAsshole.js
+++ b/src/events/RESS/review/gapedAsshole.js
@@ -28,8 +28,6 @@ App.Events.RESSGapedAsshole = class RESSGapedAsshole extends App.Events.BaseEven
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/happyDance.js b/src/events/RESS/review/happyDance.js
index 9ce8d382b0e..a40a0e7c46c 100644
--- a/src/events/RESS/review/happyDance.js
+++ b/src/events/RESS/review/happyDance.js
@@ -29,8 +29,6 @@ App.Events.RESSHappyDance = class RESSHappyDance extends App.Events.BaseEvent {
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/hatesOral.js b/src/events/RESS/review/hatesOral.js
index 509762cc353..7ff893a540d 100644
--- a/src/events/RESS/review/hatesOral.js
+++ b/src/events/RESS/review/hatesOral.js
@@ -25,8 +25,6 @@ App.Events.RESSHatesOral = class RESSHatesOral extends App.Events.BaseEvent { //
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/heavyPiercing.js b/src/events/RESS/review/heavyPiercing.js
index 551bcfec848..4a63ab25bf8 100644
--- a/src/events/RESS/review/heavyPiercing.js
+++ b/src/events/RESS/review/heavyPiercing.js
@@ -24,8 +24,6 @@ App.Events.RESSHeavyPiercing = class RESSHeavyPiercing extends App.Events.BaseEv
 			He, he, his, him
 		} = getPronouns(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/heels_event.js b/src/events/RESS/review/heels_event.js
index 599c982d8d1..6122001042a 100644
--- a/src/events/RESS/review/heels_event.js
+++ b/src/events/RESS/review/heels_event.js
@@ -22,8 +22,6 @@ App.Events.RESSHeels = class RESSHeels extends App.Events.BaseEvent {
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		let artDiv = document.createElement("div"); // named container so we can replace it later
 		App.Events.drawEventArt(artDiv, eventSlave);
 		node.appendChild(artDiv);
diff --git a/src/events/RESS/review/hormoneDysfunction.js b/src/events/RESS/review/hormoneDysfunction.js
index 1fcf288f43b..4b946aa270a 100644
--- a/src/events/RESS/review/hormoneDysfunction.js
+++ b/src/events/RESS/review/hormoneDysfunction.js
@@ -26,8 +26,6 @@ App.Events.RESSHormoneDysfunction = class RESSHormoneDysfunction extends App.Eve
 		} = getPronouns(eventSlave);
 		const {title: Master, say} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/hugeNaturals.js b/src/events/RESS/review/hugeNaturals.js
index f60aa4e2bca..18fbbdecd60 100644
--- a/src/events/RESS/review/hugeNaturals.js
+++ b/src/events/RESS/review/hugeNaturals.js
@@ -27,8 +27,6 @@ App.Events.RESSHugeNaturals = class RESSHugeNaturals extends App.Events.BaseEven
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/hugeTits.js b/src/events/RESS/review/hugeTits.js
index 79bd764a79f..cd6d9abc3fc 100644
--- a/src/events/RESS/review/hugeTits.js
+++ b/src/events/RESS/review/hugeTits.js
@@ -31,9 +31,6 @@ App.Events.RESSHugeTits = class RESSHugeTits extends App.Events.BaseEvent {
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/hugelyPregnant.js b/src/events/RESS/review/hugelyPregnant.js
index db88d6cd398..ccc55d5af97 100644
--- a/src/events/RESS/review/hugelyPregnant.js
+++ b/src/events/RESS/review/hugelyPregnant.js
@@ -23,8 +23,6 @@ App.Events.RESSHugelyPregnant = class RESSHugelyPregnant extends App.Events.Base
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/hyperpregStuck.js b/src/events/RESS/review/hyperpregStuck.js
index 81f03abc3ea..e0231950d80 100644
--- a/src/events/RESS/review/hyperpregStuck.js
+++ b/src/events/RESS/review/hyperpregStuck.js
@@ -22,8 +22,6 @@ App.Events.RESSHyperpregStuck = class RESSHyperpregStuck extends App.Events.Base
 		} = getPronouns(eventSlave);
 		const {title: Master} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/ignorantHorny.js b/src/events/RESS/review/ignorantHorny.js
index 72fdb761a0e..2ea41e12059 100644
--- a/src/events/RESS/review/ignorantHorny.js
+++ b/src/events/RESS/review/ignorantHorny.js
@@ -32,8 +32,6 @@ App.Events.RESSIgnorantHorny = class RESSIgnorantHorny extends App.Events.BaseEv
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/implantInspection.js b/src/events/RESS/review/implantInspection.js
index b38618f442a..f63ae9f25e9 100644
--- a/src/events/RESS/review/implantInspection.js
+++ b/src/events/RESS/review/implantInspection.js
@@ -26,8 +26,6 @@ App.Events.RESSImplantInspection = class RESSImplantInspection extends App.Event
 		const {title: Master, say} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/inconvenientLabia.js b/src/events/RESS/review/inconvenientLabia.js
index c659b94ed24..005e6e999bf 100644
--- a/src/events/RESS/review/inconvenientLabia.js
+++ b/src/events/RESS/review/inconvenientLabia.js
@@ -27,8 +27,6 @@ App.Events.RESSInconvenientLabia = class RESSInconvenientLabia extends App.Event
 		} = getPronouns(eventSlave);
 		const {title: Master} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		/* "pulling down the compression shorts $he was wearing" */
 		if (isItemAccessible.entry("sport shorts", "clothes")) {
 			if (eventSlave.boobs >= 650) {
diff --git a/src/events/RESS/review/likeMe.js b/src/events/RESS/review/likeMe.js
index cd2e04d0288..ac1af61a8a5 100644
--- a/src/events/RESS/review/likeMe.js
+++ b/src/events/RESS/review/likeMe.js
@@ -27,8 +27,6 @@ App.Events.RESSLikeMe = class RESSLikeMe extends App.Events.BaseEvent {
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/looseButtslut.js b/src/events/RESS/review/looseButtslut.js
index 9b013382bb9..976da4f2d91 100644
--- a/src/events/RESS/review/looseButtslut.js
+++ b/src/events/RESS/review/looseButtslut.js
@@ -25,8 +25,6 @@ App.Events.RESSLooseButtslut = class RESSLooseButtslut extends App.Events.BaseEv
 		} = getPronouns(eventSlave);
 		const pinches = eventSlave.nipples !== "fuckable" ? "pinches" : "fingers";
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/masterfulEntertainer.js b/src/events/RESS/review/masterfulEntertainer.js
index 6ddbadb8c0d..ae32b8a58c6 100644
--- a/src/events/RESS/review/masterfulEntertainer.js
+++ b/src/events/RESS/review/masterfulEntertainer.js
@@ -25,8 +25,6 @@ App.Events.RESSMasterfulEntertainer = class RESSMasterfulEntertainer extends App
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/millenary.js b/src/events/RESS/review/millenary.js
index 06cc93e6938..10406c61e30 100644
--- a/src/events/RESS/review/millenary.js
+++ b/src/events/RESS/review/millenary.js
@@ -26,8 +26,6 @@ App.Events.RESSMillenary = class RESSMillenary extends App.Events.BaseEvent {
 		const {title: Master, say} = getEnunciation(slave);
 		const belly = bellyAdjective(slave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, slave);
 
 		App.Events.addParagraph(node, [
diff --git a/src/events/RESS/review/modsPlease.js b/src/events/RESS/review/modsPlease.js
index 24ace8c53de..82e69a4913f 100644
--- a/src/events/RESS/review/modsPlease.js
+++ b/src/events/RESS/review/modsPlease.js
@@ -39,8 +39,6 @@ App.Events.RESSModsPlease = class RESSModsPlease extends App.Events.BaseEvent {
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/newlyDevotedSunrise.js b/src/events/RESS/review/newlyDevotedSunrise.js
index f02d2053bfe..7ec0898dbcd 100644
--- a/src/events/RESS/review/newlyDevotedSunrise.js
+++ b/src/events/RESS/review/newlyDevotedSunrise.js
@@ -25,8 +25,6 @@ App.Events.RESSNewlyDevotedSunrise = class RESSNewlyDevotedSunrise extends App.E
 		const {title: Master, say} = getEnunciation(slave);
 		const belly = bellyAdjective(slave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, slave);
 
 		let r = [];
diff --git a/src/events/RESS/review/niceGuys.js b/src/events/RESS/review/niceGuys.js
index 4f229557753..ff711aa49d3 100644
--- a/src/events/RESS/review/niceGuys.js
+++ b/src/events/RESS/review/niceGuys.js
@@ -25,8 +25,6 @@ App.Events.RESSNiceGuys = class RESSNiceGuys extends App.Events.BaseEvent {
 		const {HisA, HeA, heA} = getPronouns(assistant.pronouns().main).appendSuffix("A");
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/notMyName.js b/src/events/RESS/review/notMyName.js
index 89aa4de530b..030c829ad19 100644
--- a/src/events/RESS/review/notMyName.js
+++ b/src/events/RESS/review/notMyName.js
@@ -30,8 +30,6 @@ App.Events.RESSNotMyName = class RESSNotMyName extends App.Events.BaseEvent {
 		const belly = bellyAdjective(eventSlave);
 		const arms = hasBothArms(eventSlave) ? "arms" : "arm";
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		const birthName = Spoken(eventSlave, eventSlave.birthName);
diff --git a/src/events/RESS/review/nymphoWithAssistant.js b/src/events/RESS/review/nymphoWithAssistant.js
index bba4a1baca9..29c29781671 100644
--- a/src/events/RESS/review/nymphoWithAssistant.js
+++ b/src/events/RESS/review/nymphoWithAssistant.js
@@ -27,8 +27,6 @@ App.Events.RESSNymphoWithAssistant = class RESSNymphoWithAssistant extends App.E
 		const PC = V.PC;
 		const {himA} = getPronouns(assistant.pronouns().main).appendSuffix("A");
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/objectifyingVisit.js b/src/events/RESS/review/objectifyingVisit.js
index 6d7adfb23fe..20a657d7c84 100644
--- a/src/events/RESS/review/objectifyingVisit.js
+++ b/src/events/RESS/review/objectifyingVisit.js
@@ -23,8 +23,6 @@ App.Events.RESSObjectifyingVisit = class RESSObjectifyingVisit extends App.Event
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/orchiectomyPlease.js b/src/events/RESS/review/orchiectomyPlease.js
index 93c495c9220..91ab69a18e2 100644
--- a/src/events/RESS/review/orchiectomyPlease.js
+++ b/src/events/RESS/review/orchiectomyPlease.js
@@ -30,8 +30,6 @@ App.Events.RESSOrchiectomyPlease = class RESSOrchiectomyPlease extends App.Event
 		const {title: Master, say} = getEnunciation(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/rebelliousArrogant.js b/src/events/RESS/review/rebelliousArrogant.js
index 3d4d54b4e09..fffe4018fed 100644
--- a/src/events/RESS/review/rebelliousArrogant.js
+++ b/src/events/RESS/review/rebelliousArrogant.js
@@ -23,8 +23,6 @@ App.Events.RESSRebelliousArrogant = class RESSRebelliousArrogant extends App.Eve
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		App.Events.addParagraph(node, [
diff --git a/src/events/RESS/review/resistantAnalVirgin.js b/src/events/RESS/review/resistantAnalVirgin.js
index 6f8cde7fe1d..b4d514d4fc8 100644
--- a/src/events/RESS/review/resistantAnalVirgin.js
+++ b/src/events/RESS/review/resistantAnalVirgin.js
@@ -23,8 +23,6 @@ App.Events.RESSResistantAnalVirgin = class RESSResistantAnalVirgin extends App.E
 		const {title: Master} = getEnunciation(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/resistantGelding.js b/src/events/RESS/review/resistantGelding.js
index d682b7f71f9..54c8ec9dc98 100644
--- a/src/events/RESS/review/resistantGelding.js
+++ b/src/events/RESS/review/resistantGelding.js
@@ -27,8 +27,6 @@ App.Events.RESSResistantGelding = class RESSResistantGelding extends App.Events.
 		} = getPronouns(eventSlave);
 		const {title: Master} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/resistantShower.js b/src/events/RESS/review/resistantShower.js
index 39d6ce96b79..47f23217927 100644
--- a/src/events/RESS/review/resistantShower.js
+++ b/src/events/RESS/review/resistantShower.js
@@ -24,8 +24,6 @@ App.Events.RESSResistantShower = class RESSResistantShower extends App.Events.Ba
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		App.Events.addParagraph(node, [
diff --git a/src/events/RESS/review/restrictedProfession.js b/src/events/RESS/review/restrictedProfession.js
index 4fe3ab81606..14022373018 100644
--- a/src/events/RESS/review/restrictedProfession.js
+++ b/src/events/RESS/review/restrictedProfession.js
@@ -26,8 +26,6 @@ App.Events.RESSRestrictedProfession = class RESSRestrictedProfession extends App
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/servantMaid.js b/src/events/RESS/review/servantMaid.js
index 482d2cb3cec..b723592ee29 100644
--- a/src/events/RESS/review/servantMaid.js
+++ b/src/events/RESS/review/servantMaid.js
@@ -22,8 +22,6 @@ App.Events.RESSServantMaid = class RESSServantMaid extends App.Events.BaseEvent
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/sexySuccubus.js b/src/events/RESS/review/sexySuccubus.js
index d8e32b19093..ff62888c43f 100644
--- a/src/events/RESS/review/sexySuccubus.js
+++ b/src/events/RESS/review/sexySuccubus.js
@@ -29,8 +29,6 @@ App.Events.RESSSexySuccubus = class RESSSexySuccubus extends App.Events.BaseEven
 		const PC = V.PC;
 		const {heP, himP, womanP, hisP} = getPronouns(PC).appendSuffix("P");
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/shapedAreolae.js b/src/events/RESS/review/shapedAreolae.js
index 489950a8a38..a9c7a353ea5 100644
--- a/src/events/RESS/review/shapedAreolae.js
+++ b/src/events/RESS/review/shapedAreolae.js
@@ -22,8 +22,6 @@ App.Events.RESSShapedAreolae = class RESSShapedAreolae extends App.Events.BaseEv
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/shiftDoorframe.js b/src/events/RESS/review/shiftDoorframe.js
index 472c1e99c41..9cee6cea158 100644
--- a/src/events/RESS/review/shiftDoorframe.js
+++ b/src/events/RESS/review/shiftDoorframe.js
@@ -27,8 +27,6 @@ App.Events.RESSShiftDoorframe = class RESSShiftDoorframe extends App.Events.Base
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let r = [];
diff --git a/src/events/RESS/review/shiftMasturbation.js b/src/events/RESS/review/shiftMasturbation.js
index 3ae16844a69..b48fdf0375b 100644
--- a/src/events/RESS/review/shiftMasturbation.js
+++ b/src/events/RESS/review/shiftMasturbation.js
@@ -28,8 +28,6 @@ App.Events.RESSShiftMasturbation = class RESSShiftMasturbation extends App.Event
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/shiftSleep.js b/src/events/RESS/review/shiftSleep.js
index 9d1f23f5c46..e7b4698a0da 100644
--- a/src/events/RESS/review/shiftSleep.js
+++ b/src/events/RESS/review/shiftSleep.js
@@ -27,8 +27,6 @@ App.Events.RESSShiftSleep = class RESSShiftSleep extends App.Events.BaseEvent {
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/showerSlip.js b/src/events/RESS/review/showerSlip.js
index d7622985410..7225f7b5e8f 100644
--- a/src/events/RESS/review/showerSlip.js
+++ b/src/events/RESS/review/showerSlip.js
@@ -28,8 +28,6 @@ App.Events.RESSShowerSlip = class RESSShowerSlip extends App.Events.BaseEvent {
 		const PC = V.PC;
 		const strong = PC.title === 1 ? "strong" : "fit";
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/slaveDickHuge.js b/src/events/RESS/review/slaveDickHuge.js
index 73379dc9813..b911d3a76c0 100644
--- a/src/events/RESS/review/slaveDickHuge.js
+++ b/src/events/RESS/review/slaveDickHuge.js
@@ -25,8 +25,6 @@ App.Events.RESSSlaveDickHuge = class RESSSlaveDickHuge extends App.Events.BaseEv
 		} = getPronouns(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/sleepingAmbivalent.js b/src/events/RESS/review/sleepingAmbivalent.js
index b1a81c27f41..27da144f7c0 100644
--- a/src/events/RESS/review/sleepingAmbivalent.js
+++ b/src/events/RESS/review/sleepingAmbivalent.js
@@ -28,8 +28,6 @@ App.Events.RESSSleepingAmbivalent = class RESSSleepingAmbivalent extends App.Eve
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		App.Events.addParagraph(node, [
diff --git a/src/events/RESS/review/soreAss.js b/src/events/RESS/review/soreAss.js
index 3f3932a1be7..88e7fd87e9e 100644
--- a/src/events/RESS/review/soreAss.js
+++ b/src/events/RESS/review/soreAss.js
@@ -22,8 +22,6 @@ App.Events.RESSSoreAss = class RESSSoreAss extends App.Events.BaseEvent {
 		const {title: Master} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/soreShoulders.js b/src/events/RESS/review/soreShoulders.js
index adfa2bb1bf5..bdf7f3f7508 100644
--- a/src/events/RESS/review/soreShoulders.js
+++ b/src/events/RESS/review/soreShoulders.js
@@ -28,8 +28,6 @@ App.Events.RESSSoreShoulders = class RESSSoreShoulders extends App.Events.BaseEv
 		const belly = bellyAdjective(eventSlave);
 		const arms = hasBothArms(eventSlave) ? `arms` : `arm`;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/spaBoobs.js b/src/events/RESS/review/spaBoobs.js
index 34f2a8c53f2..b002ad272c2 100644
--- a/src/events/RESS/review/spaBoobs.js
+++ b/src/events/RESS/review/spaBoobs.js
@@ -31,8 +31,6 @@ App.Events.RESSSpaBoobs = class RESSSpaBoobs extends App.Events.BaseEvent {
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/subjugationBlues.js b/src/events/RESS/review/subjugationBlues.js
index 74439a5b4aa..829fcc088b3 100644
--- a/src/events/RESS/review/subjugationBlues.js
+++ b/src/events/RESS/review/subjugationBlues.js
@@ -35,8 +35,6 @@ App.Events.RESSSubjugationBlues = class RESSSubjugationBlues extends App.Events.
 		const PC = V.PC;
 		const FSSubjugationistRace = V.arcologies[0].FSSubjugationistRace;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/surgeryAddict.js b/src/events/RESS/review/surgeryAddict.js
index 48b28b24438..5f197291fb1 100644
--- a/src/events/RESS/review/surgeryAddict.js
+++ b/src/events/RESS/review/surgeryAddict.js
@@ -25,8 +25,6 @@ App.Events.RESSSurgeryAddict = class RESSSurgeryAddict extends App.Events.BaseEv
 		} = getPronouns(eventSlave);
 		const {title: Master} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/surprisingWakeup.js b/src/events/RESS/review/surprisingWakeup.js
index d9bd40bca32..e06b4811d03 100644
--- a/src/events/RESS/review/surprisingWakeup.js
+++ b/src/events/RESS/review/surprisingWakeup.js
@@ -24,8 +24,6 @@ App.Events.RESSSurprisingWakeup = class RESSSurprisingWakeup extends App.Events.
 		const {title: Master, say} = getEnunciation(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/tendonFall.js b/src/events/RESS/review/tendonFall.js
index ee6afcafac6..7a936f9309e 100644
--- a/src/events/RESS/review/tendonFall.js
+++ b/src/events/RESS/review/tendonFall.js
@@ -29,8 +29,6 @@ App.Events.RESSTendonFall = class RESSTendonFall extends App.Events.BaseEvent {
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/terrifiedInspection.js b/src/events/RESS/review/terrifiedInspection.js
index 41a99682337..40a938c2d00 100644
--- a/src/events/RESS/review/terrifiedInspection.js
+++ b/src/events/RESS/review/terrifiedInspection.js
@@ -27,8 +27,6 @@ App.Events.RESSTerrifiedInspection = class RESSTerrifiedInspection extends App.E
 		const belly = bellyAdjective(eventSlave);
 		const hands = (hasBothArms(eventSlave)) ? `hands` : `hand`;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/tittymonsterInspection.js b/src/events/RESS/review/tittymonsterInspection.js
index d57e59affff..b56e5bee238 100644
--- a/src/events/RESS/review/tittymonsterInspection.js
+++ b/src/events/RESS/review/tittymonsterInspection.js
@@ -24,8 +24,6 @@ App.Events.RESSTittymonsterInspection = class RESSTittymonsterInspection extends
 		const PC = V.PC;
 		const arms = hasBothArms(eventSlave) ? "arms" : "arm";
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/torpedoSqueeze.js b/src/events/RESS/review/torpedoSqueeze.js
index 97d477fdf5a..ca9aeb8d55b 100644
--- a/src/events/RESS/review/torpedoSqueeze.js
+++ b/src/events/RESS/review/torpedoSqueeze.js
@@ -26,8 +26,6 @@ App.Events.RESSTorpedoSqueeze = class RESSTorpedoSqueeze extends App.Events.Base
 		const belly = bellyAdjective(eventSlave);
 		const arms = hasBothArms(eventSlave) ? `arms` : `arm`;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/transitionAnxiety.js b/src/events/RESS/review/transitionAnxiety.js
index 6c67673c0da..d5b09fa3c01 100644
--- a/src/events/RESS/review/transitionAnxiety.js
+++ b/src/events/RESS/review/transitionAnxiety.js
@@ -30,8 +30,6 @@ App.Events.RESSTransitionAnxiety = class RESSTransitionAnxiety extends App.Event
 		const {hisP} = getPronouns(V.PC).appendSuffix("P");
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/trustingHG.js b/src/events/RESS/review/trustingHG.js
index f21b3148bce..251aa80d3b5 100644
--- a/src/events/RESS/review/trustingHG.js
+++ b/src/events/RESS/review/trustingHG.js
@@ -26,8 +26,6 @@ App.Events.RESSTrustingHG = class RESSTrustingHG extends App.Events.BaseEvent {
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/unhappyVirgin.js b/src/events/RESS/review/unhappyVirgin.js
index f117b738174..3620a6a01e0 100644
--- a/src/events/RESS/review/unhappyVirgin.js
+++ b/src/events/RESS/review/unhappyVirgin.js
@@ -27,8 +27,6 @@ App.Events.RESSUnhappyVirgin = class RESSUnhappyVirgin extends App.Events.BaseEv
 		const {title: Master, say} = getEnunciation(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		const r = new SpacedTextAccumulator(node);
diff --git a/src/events/RESS/review/usedWhore.js b/src/events/RESS/review/usedWhore.js
index 8b1e4879304..ffeac58c716 100644
--- a/src/events/RESS/review/usedWhore.js
+++ b/src/events/RESS/review/usedWhore.js
@@ -28,8 +28,6 @@ App.Events.RESSUsedWhore = class RESSUsedWhore extends App.Events.BaseEvent {
 		const belly = bellyAdjective(eventSlave);
 		const PC = V.PC;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/vocalDisobedience.js b/src/events/RESS/review/vocalDisobedience.js
index 407b893a246..e565691c54d 100644
--- a/src/events/RESS/review/vocalDisobedience.js
+++ b/src/events/RESS/review/vocalDisobedience.js
@@ -28,8 +28,6 @@ App.Events.RESSVocalDisobedience = class RESSVocalDisobedience extends App.Event
 		const rudeTitle = eventSlave.rudeTitle === 1 ? PoliteRudeTitle(eventSlave) : Master;
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		let r = [];
diff --git a/src/events/RESS/review/wetDreams.js b/src/events/RESS/review/wetDreams.js
index c22a13b765a..6f65c44ff46 100644
--- a/src/events/RESS/review/wetDreams.js
+++ b/src/events/RESS/review/wetDreams.js
@@ -34,11 +34,9 @@ App.Events.RESSWetDreams = class RESSWetDreams extends App.Events.BaseEvent {
 			he, his, him, hers, himself, woman, girl
 		} = getPronouns(slave);
 		let r = [];
-		const { title: Master } = getEnunciation(slave);
+		const {title: Master} = getEnunciation(slave);
 		const belly = bellyAdjective(slave);
-		const { say } = getEnunciation(slave);
-
-		V.nextLink = "Next Week";
+		const {say} = getEnunciation(slave);
 
 		App.Events.drawEventArt(node, slave);
 		App.Events.addParagraph(node, [
diff --git a/src/events/RESS/scrubbing.js b/src/events/RESS/scrubbing.js
index e959638c6f0..1c0e3c8e922 100644
--- a/src/events/RESS/scrubbing.js
+++ b/src/events/RESS/scrubbing.js
@@ -22,8 +22,6 @@ App.Events.RESSScrubbing = class RESSScrubbing extends App.Events.BaseEvent {
 		const {title: Master, say} = getEnunciation(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		let artDiv = document.createElement("div"); // named container so we can replace it later
 		App.Events.drawEventArt(artDiv, eventSlave, "an apron"); // changed to an apron in conversion
 		node.appendChild(artDiv);
diff --git a/src/events/RESS/serveThePublicDevoted.js b/src/events/RESS/serveThePublicDevoted.js
index b48f8d500ad..c772adf388e 100644
--- a/src/events/RESS/serveThePublicDevoted.js
+++ b/src/events/RESS/serveThePublicDevoted.js
@@ -24,8 +24,6 @@ App.Events.RESSServeThePublicDevoted = class RESSServeThePublicDevoted extends A
 		} = getPronouns(eventSlave);
 		const belly = bellyAdjective(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let t = [];
diff --git a/src/events/RESS/slaveOnSlaveClit.js b/src/events/RESS/slaveOnSlaveClit.js
index c16d42811f9..74087788aaf 100644
--- a/src/events/RESS/slaveOnSlaveClit.js
+++ b/src/events/RESS/slaveOnSlaveClit.js
@@ -22,11 +22,7 @@ App.Events.RESSSlaveOnSlaveClit = class RESSSlaveOnSlaveClit extends App.Events.
 		const {
 			heU, hisU, himU, himselfU
 		} = getNonlocalPronouns(0).appendSuffix('U');
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
diff --git a/src/events/RESS/slaveOnSlaveDick.js b/src/events/RESS/slaveOnSlaveDick.js
index cef204fae51..9dc32225a15 100644
--- a/src/events/RESS/slaveOnSlaveDick.js
+++ b/src/events/RESS/slaveOnSlaveDick.js
@@ -24,11 +24,7 @@ App.Events.RESSSlaveOnSlaveDick = class RESSSlaveOnSlaveDick extends App.Events.
 		const {
 			heU, hisU, himU, himselfU
 		} = getNonlocalPronouns(0).appendSuffix('U');
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
diff --git a/src/events/RESS/solitaryDesperation.js b/src/events/RESS/solitaryDesperation.js
index 969c0ab673c..ecd1f9d7753 100644
--- a/src/events/RESS/solitaryDesperation.js
+++ b/src/events/RESS/solitaryDesperation.js
@@ -24,8 +24,6 @@ App.Events.RESSSolitaryDesperation = class RESSSolitaryDesperation extends App.E
 			His, He, he, his, him, himself, girl
 		} = getPronouns(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 		eventSlave.devotion += 4;
 
diff --git a/src/events/RESS/suppositoryResistance.js b/src/events/RESS/suppositoryResistance.js
index d8df258d290..b28bf6d4288 100644
--- a/src/events/RESS/suppositoryResistance.js
+++ b/src/events/RESS/suppositoryResistance.js
@@ -29,11 +29,7 @@ App.Events.RESSSuppositoryResistance = class RESSSuppositoryResistance extends A
 		const {title: Master} = getEnunciation(eventSlave);
 		const desc = SlaveTitle(eventSlave);
 		const belly = bellyAdjective(eventSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
-
-		V.nextLink = "Next Week";
+		const PC = V.PC;
 
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
diff --git a/src/events/RESS/tooThinForCumDiet.js b/src/events/RESS/tooThinForCumDiet.js
index ecc36a0d536..abb7577bb7b 100644
--- a/src/events/RESS/tooThinForCumDiet.js
+++ b/src/events/RESS/tooThinForCumDiet.js
@@ -33,7 +33,6 @@ App.Events.RESSTooThinForCumDiet = class RESSTooThinForCumDiet extends App.Event
 		} = getPronouns(eventSlave);
 		const {title: Master} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
 		const belly = bellyAdjective(eventSlave);
 
 		App.Events.drawEventArt(node, eventSlave);
diff --git a/src/events/RESS/waistlineWoes.js b/src/events/RESS/waistlineWoes.js
index 77965ec6a9e..c0a6c83c779 100644
--- a/src/events/RESS/waistlineWoes.js
+++ b/src/events/RESS/waistlineWoes.js
@@ -26,8 +26,6 @@ App.Events.RESSWaistlineWoes = class RESSWaistlineWoes extends App.Events.BaseEv
 		} = getPronouns(eventSlave);
 		const {title: Master} = getEnunciation(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave);
 
 		let t = [];
diff --git a/src/events/RESS/whoreRebellious.js b/src/events/RESS/whoreRebellious.js
index 03cfbd1376e..91a12d54299 100644
--- a/src/events/RESS/whoreRebellious.js
+++ b/src/events/RESS/whoreRebellious.js
@@ -22,8 +22,6 @@ App.Events.RESSWhoreRebellious = class RESSWhoreRebellious extends App.Events.Ba
 			He, he, His, his, him, himself, girl
 		} = getPronouns(eventSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, eventSlave, "restrictive latex"); // TODO: Add mouth-plug?
 
 
diff --git a/src/events/RETS/reAnalCowgirl.js b/src/events/RETS/reAnalCowgirl.js
index bd2d3d11c8b..fa550353952 100644
--- a/src/events/RETS/reAnalCowgirl.js
+++ b/src/events/RETS/reAnalCowgirl.js
@@ -49,8 +49,6 @@ App.Events.RETSAnalCowgirl = class RETSAnalCowgirl extends App.Events.BaseEvent
 		} = getPronouns(subSlave).appendSuffix("2");
 		const {say: say2} = getEnunciation(subSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [eventSlave, subSlave], "no clothing");
 		const canP = canPenetrate(eventSlave);
 		const clitP = eventSlave.clit > 3;
diff --git a/src/events/RETS/reBoobCollision.js b/src/events/RETS/reBoobCollision.js
index c74f2ba02d8..07b90c02e9d 100644
--- a/src/events/RETS/reBoobCollision.js
+++ b/src/events/RETS/reBoobCollision.js
@@ -41,13 +41,11 @@ App.Events.RETSBoobCollision = class RETSBoobCollision extends App.Events.BaseEv
 			him2, girl2, his2, he2, He2, woman2, hers2, loli2
 		} = getPronouns(subSlave).appendSuffix("2");
 		const {title: title2, say: say2} = getEnunciation(subSlave);
-		V.nextLink = "Next Week";
 
 		App.Events.drawEventArt(node, [eventSlave, subSlave], "no clothing");
 
 		let t = [];
 
-
 		t.push(`You pass by the slave quarters during a busy time. Slaves are hurrying back and forth, rushing to bathe, eat, and get dressed. In a particular hurry is`);
 		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), ","));
 		t.push(`${his}`);
diff --git a/src/events/RETS/reCockmilkInterception.js b/src/events/RETS/reCockmilkInterception.js
index 414dc256934..8a4722bd358 100644
--- a/src/events/RETS/reCockmilkInterception.js
+++ b/src/events/RETS/reCockmilkInterception.js
@@ -39,7 +39,7 @@ App.Events.RETSCockmilkInterception = class RETSCockmilkInterception extends App
 		const doAnal = (canDoAnal(subSlave) && subSlave.anus > 0);
 		const hands = hasBothArms(slave) ? "hands" : "hand";
 		const {He2, he2, His2, his2, him2, girl2} = getPronouns(subSlave).appendSuffix("2");
-		V.nextLink = "Next Week";
+
 		App.Events.drawEventArt(node, [slave, subSlave], "no clothing");
 
 		let t = [];
diff --git a/src/events/RETS/reDatePlease.js b/src/events/RETS/reDatePlease.js
index 53cfd0f1b31..de5918dec30 100644
--- a/src/events/RETS/reDatePlease.js
+++ b/src/events/RETS/reDatePlease.js
@@ -35,7 +35,7 @@ App.Events.RETSDatePlease = class RETSDatePlease extends App.Events.BaseEvent {
 		} = getPronouns(eventSlave);
 		const {say, title: master} = getEnunciation(eventSlave);
 		const {him2, girl2, wife2} = getPronouns(subSlave).appendSuffix("2");
-		V.nextLink = "Next Week";
+
 		let artDiv = document.createElement("div"); // named container so we can replace it later
 		App.Events.drawEventArt(artDiv, eventSlave, "no clothing");
 		node.appendChild(artDiv);
diff --git a/src/events/RETS/reFucktoyPrefersRelative.js b/src/events/RETS/reFucktoyPrefersRelative.js
index 7f0fe27139c..2b85186b3ea 100644
--- a/src/events/RETS/reFucktoyPrefersRelative.js
+++ b/src/events/RETS/reFucktoyPrefersRelative.js
@@ -52,8 +52,6 @@ App.Events.RETSFucktoyPrefersRelative = class RETSFucktoyPrefersRelative extends
 			He2, he2, His2, his2, him2, girl2, women2
 		} = getPronouns(relative).appendSuffix("2");
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [fucktoy, relative], "no clothing");
 
 		let fuckhole = fucktoy.toyHole;
diff --git a/src/events/RETS/reIfYouEnjoyIt.js b/src/events/RETS/reIfYouEnjoyIt.js
index 5b02e1099d8..09c1e8bc3bc 100644
--- a/src/events/RETS/reIfYouEnjoyIt.js
+++ b/src/events/RETS/reIfYouEnjoyIt.js
@@ -35,7 +35,6 @@ App.Events.RETSIfYouEnjoyIt = class RETSIfYouEnjoyIt extends App.Events.BaseEven
 		const {
 			His2, him2, girl2, his2, he2, He2
 		} = getPronouns(subSlave).appendSuffix("2");
-		V.nextLink = "Next Week";
 
 		App.Events.drawEventArt(node, [eventSlave, subSlave], "no clothing");
 
diff --git a/src/events/RETS/reIncestuousNursing.js b/src/events/RETS/reIncestuousNursing.js
index 2fc30bd172b..588ebde9b5f 100644
--- a/src/events/RETS/reIncestuousNursing.js
+++ b/src/events/RETS/reIncestuousNursing.js
@@ -42,7 +42,6 @@ App.Events.RETSIncestuousNursing = class RETSIncestuousNursing extends App.Event
 		const {
 			him2, his2, he2, He2, daughter2, himself2
 		} = getPronouns(subSlave).appendSuffix("2");
-		V.nextLink = "Next Week";
 
 		App.Events.drawEventArt(node, [eventSlave, subSlave], "no clothing");
 
diff --git a/src/events/RETS/reInterslaveBegging.js b/src/events/RETS/reInterslaveBegging.js
index a5da5129913..598d70ab690 100644
--- a/src/events/RETS/reInterslaveBegging.js
+++ b/src/events/RETS/reInterslaveBegging.js
@@ -50,7 +50,6 @@ App.Events.RETSInterslaveBegging = class RETSInterslaveBegging extends App.Event
 		const {
 			girlP
 		} = getPronouns(V.PC).appendSuffix("P");
-		V.nextLink = "Next Week";
 
 		App.Events.drawEventArt(node, [eventSlave, subSlave], "no clothing");
 		const vaginal = canDoVaginal(subSlave) && subSlave.vagina > 0;
diff --git a/src/events/RETS/reRepressedAnalVirgin.js b/src/events/RETS/reRepressedAnalVirgin.js
index 162d78038cf..e5cc3952b8d 100644
--- a/src/events/RETS/reRepressedAnalVirgin.js
+++ b/src/events/RETS/reRepressedAnalVirgin.js
@@ -42,8 +42,6 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 		} = getPronouns(subSlave).appendSuffix("2");
 		const pDick = V.PC.dick !== 0;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [eventSlave, subSlave]);
 
 		let t = [];
diff --git a/src/events/RETS/reSadisticDescription.js b/src/events/RETS/reSadisticDescription.js
index 8265d32fb81..345264d17d1 100644
--- a/src/events/RETS/reSadisticDescription.js
+++ b/src/events/RETS/reSadisticDescription.js
@@ -46,8 +46,6 @@ App.Events.RETSSadisticDescription = class RETSSadisticDescription extends App.E
 			HeP, heP, hisP
 		} = getPronouns(V.PC).appendSuffix("P");
 
-		V.nextLink = "Next Week";
-
 		let artDiv = document.createElement("div"); // named container so we can replace it later
 		App.Events.drawEventArt(artDiv, [eventSlave, subSlave], [eventSlave.clothes, "no clothing"]);
 		node.appendChild(artDiv);
diff --git a/src/events/RETS/reShowerForce.js b/src/events/RETS/reShowerForce.js
index d293e4c9d41..158d81dc69a 100644
--- a/src/events/RETS/reShowerForce.js
+++ b/src/events/RETS/reShowerForce.js
@@ -40,8 +40,6 @@ App.Events.RETSShowerForce = class RETSShowerForce extends App.Events.BaseEvent
 			he2, His2, his2, him2
 		} = getPronouns(subSlave).appendSuffix("2");
 
-		V.nextLink = "Next Week";
-
 		let facialAttractiveness = "homely";
 		if (subSlave.face > 95) {
 			facialAttractiveness = "gorgeous";
diff --git a/src/events/RETS/reSiblingTussle.js b/src/events/RETS/reSiblingTussle.js
index 61c3495243f..4840d7fab1e 100644
--- a/src/events/RETS/reSiblingTussle.js
+++ b/src/events/RETS/reSiblingTussle.js
@@ -39,8 +39,6 @@ App.Events.RETSSiblingTussle = class RETSSiblingTussle extends App.Events.BaseEv
 		} = getPronouns(sib2).appendSuffix("2");
 		const hostFacility = App.Utils.jobForAssignment(getSlave(this.actors[0]).assignment).facility;
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [sib1, sib2], "no clothing");
 
 		let t = [];
diff --git a/src/events/RETS/reSimpleAssault.js b/src/events/RETS/reSimpleAssault.js
index 408a67752e7..8eac0042f45 100644
--- a/src/events/RETS/reSimpleAssault.js
+++ b/src/events/RETS/reSimpleAssault.js
@@ -43,14 +43,10 @@ App.Events.RETSSimpleAssault = class RETSSimpleAssault extends App.Events.BaseEv
 		const {say, title: Master} = getEnunciation(domSlave);
 		const {title: Master2} = getEnunciation(subSlave);
 		const desc = SlaveTitle(domSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
+		const PC = V.PC;
 
 		const vaginal = subSlave.vagina !== 0 && canDoVaginal(subSlave);
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [domSlave, subSlave], ["no clothing", subSlave.clothes]);
 
 		let t = [];
diff --git a/src/events/RETS/reTasteTest.js b/src/events/RETS/reTasteTest.js
index 7df10d0394f..c7b5ea1435e 100644
--- a/src/events/RETS/reTasteTest.js
+++ b/src/events/RETS/reTasteTest.js
@@ -44,11 +44,8 @@ App.Events.RETSTasteTest = class RETSTasteTest extends App.Events.BaseEvent {
 		const {say: say2} = getEnunciation(subSlave);
 		const arms2 = hasBothArms(subSlave) ? "arms" : "arm";
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [eventSlave, subSlave], "no clothing");
 
-
 		let t = [];
 
 		t.push(`You look into the part of the kitchens used for slave feeding one morning during a quiet time, finding the area deserted except for`);
diff --git a/src/events/RETS/reTopExhaustion.js b/src/events/RETS/reTopExhaustion.js
index f20f42b963d..bcc9095f789 100644
--- a/src/events/RETS/reTopExhaustion.js
+++ b/src/events/RETS/reTopExhaustion.js
@@ -49,14 +49,10 @@ App.Events.RETSTopExhaustion = class RETSTopExhaustion extends App.Events.BaseEv
 		const arms = hasBothArms(subSlave) ? "arms" : "arm";
 		const belly = bellyAdjective(subSlave);
 		const desc = SlaveTitle(subSlave);
-
-		/** @type {App.Entity.PlayerState} */
-		let PC = V.PC;
+		const PC = V.PC;
 
 		const usingAss = (subSlave.fetish === "buttslut" || subSlave.vagina <= 0 || !canDoVaginal(subSlave));
 
-		V.nextLink = "Next Week";
-
 		App.Events.drawEventArt(node, [domSlave, subSlave], ["no clothing", subSlave.clothes]);
 
 		let t = [];
diff --git a/src/events/legacy/PESS.tw b/src/events/legacy/PESS.tw
deleted file mode 100644
index 123990a9391..00000000000
--- a/src/events/legacy/PESS.tw
+++ /dev/null
@@ -1,52 +0,0 @@
-:: PESS [nobr]
-
-/* This is one of several files that contains and organizes many different events.	*/
-/*	genericPlotEvents.tw															*/
-/*	PESS.tw: Player Event, Single Slave												*/
-/*	PETS.tw: Player Event, Two Slaves												*/
-/*	RECI.tw: Random Event, Check In													*/
-/*	REFI.tw: Random Event, Fetish Interest											*/
-/*	REFS.tw: Random Event, Future Societies											*/
-/*	RESS.tw: Random Event, Single Slave												*/
-/*	RESSTR.tw: Random Event, Single Slave (Test Realm, for debugging events)		*/
-/*	RETS.tw: Random Event, Two Slaves												*/
-/*																					*/
-/* Events can also be in a dedicated *.tw file, formatted as follows:				*/
-/*	jeXXXXX.tw: Justice Event														*/
-/*	pXXXXXX.tw: Player event														*/
-/*	peXXXXX.tw: Player Event focused on a slave										*/
-/*	reXXXXX.tw: Random Event														*/
-/*	resXXXX.tw: Random Event, School												*/
-/*	seXXXXX.tw: Slave Event, focuses on slaves coming or going						*/
-/*	securityForceXXXXX.tw: Special (Security) Force event							*/
-/*																					*/
-/* Some scenes are also stored in useGuard.tw, walkPast.tw, and toychest.tw			*/
-
-<<if Array.isArray($PESSevent)>>
-	<<set $activeSlave = $eventSlave>>
-	<<if ($debugMode > 0 && $debugModeEventSelection > 0)>>
-		<<set $nextButton = "Back", $nextLink = "Nonrandom Event", $returnTo = "Nonrandom Event">> /* if user just clicks spacebar */
-		''A random single slave event would have been selected from the following:''
-		<br>
-		<<for _i = 0; _i < $PESSevent.length; _i++>>
-			<<print "[[$PESSevent[_i]|PESS][$PESSevent = $PESSevent[" + _i + "]]]">>
-			<br>
-		<</for>>
-		<br><br>[[Go Back to Random Nonindividual Event|Random Nonindividual Event][$eventSlave = 0]]
-	<<else>>
-		<<set $PESSevent = $PESSevent.random()>>
-		<<goto "PESS">>
-	<</if>>
-<<else>>
-	<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "RIE Eligibility Check", _SL = $slaves.length>>
-
-	<br><br>
-	<span id="result">
-
-	<<if ($debugMode > 0 && $debugModeEventSelection > 0)>>
-		<br><br>DEBUG: &nbsp;&nbsp;&nbsp;&nbsp;[[Go back to Nonrandom Event|Nonrandom Event][$activeSlave = 0, $eventSlave = 0]]
-	<</if>>
-
-	</span>
-
-<</if>> /* CLOSES EVENT SELECTION */
diff --git a/src/events/legacy/PETS.tw b/src/events/legacy/PETS.tw
deleted file mode 100644
index fcb8d72ed67..00000000000
--- a/src/events/legacy/PETS.tw
+++ /dev/null
@@ -1,53 +0,0 @@
-:: PETS [nobr]
-
-/* This is one of several files that contains and organizes many different events.	*/
-/*	genericPlotEvents.tw															*/
-/*	PESS.tw: Player Event, Single Slave												*/
-/*	PETS.tw: Player Event, Two Slaves												*/
-/*	RECI.tw: Random Event, Check In													*/
-/*	REFI.tw: Random Event, Fetish Interest											*/
-/*	REFS.tw: Random Event, Future Societies											*/
-/*	RESS.tw: Random Event, Single Slave												*/
-/*	RESSTR.tw: Random Event, Single Slave (Test Realm, for debugging events)		*/
-/*	RETS.tw: Random Event, Two Slaves												*/
-/*																					*/
-/* Events can also be in a dedicated *.tw file, formatted as follows:				*/
-/*	jeXXXXX.tw: Justice Event														*/
-/*	pXXXXXX.tw: Player event														*/
-/*	peXXXXX.tw: Player Event focused on a slave										*/
-/*	reXXXXX.tw: Random Event														*/
-/*	resXXXX.tw: Random Event, School												*/
-/*	seXXXXX.tw: Slave Event, focuses on slaves coming or going						*/
-/*	securityForceXXXXX.tw: Special (Security) Force event							*/
-/*																					*/
-/* Some scenes are also stored in useGuard.tw, walkPast.tw, and toychest.tw			*/
-
-<<if Array.isArray($PETSevent)>>
-	<<set $activeSlave = $eventSlave>>
-	<<if ($debugMode > 0 && $debugModeEventSelection > 0)>>
-		<<set $nextButton = "Back", $nextLink = "Nonrandom Event", $returnTo = "Nonrandom Event">> /* if user just clicks spacebar */
-		''A random two slave event would have been selected from the following:''
-		<br>
-		<<for _i = 0; _i < $PETSevent.length; _i++>>
-			<<print "[[$PETSevent[_i]|PETS][$PETSevent = $PETSevent[" + _i + "]]]">>
-			<br>
-		<</for>>
-		<br><br>[[Go Back to Random Nonindividual Event|Random Nonindividual Event][$eventSlave = 0]]
-	<<else>>
-		<<set $PETSevent = $PETSevent.random()>>
-		<<goto "PETS">>
-	<</if>>
-<<else>>
-
-	<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "RIE Eligibility Check">>
-
-	<br><br>
-	<span id="result">
-
-	<<if ($debugMode > 0 && $debugModeEventSelection > 0)>>
-		<br><br>DEBUG: &nbsp;&nbsp;&nbsp;&nbsp;[[Go back to Nonrandom Event|Nonrandom Event][$activeSlave = 0, $eventSlave = 0]]
-	<</if>>
-
-	</span>
-
-<</if>> /* CLOSES EVENT SELECTION */
diff --git a/src/events/legacy/RECI.tw b/src/events/legacy/RECI.tw
deleted file mode 100644
index 6a8f1360c60..00000000000
--- a/src/events/legacy/RECI.tw
+++ /dev/null
@@ -1,92 +0,0 @@
-:: RECI [nobr]
-
-/* This is one of several files that contains and organizes many different events.	*/
-/*	genericPlotEvents.tw															*/
-/*	PESS.tw: Player Event, Single Slave												*/
-/*	PETS.tw: Player Event, Two Slaves												*/
-/*	RECI.tw: Random Event, Check In													*/
-/*	REFI.tw: Random Event, Fetish Interest											*/
-/*	REFS.tw: Random Event, Future Societies											*/
-/*	RESS.tw: Random Event, Single Slave												*/
-/*	RESSTR.tw: Random Event, Single Slave (Test Realm, for debugging events)		*/
-/*	RETS.tw: Random Event, Two Slaves												*/
-/*																					*/
-/* Events can also be in a dedicated *.tw file, formatted as follows:				*/
-/*	jeXXXXX.tw: Justice Event														*/
-/*	pXXXXXX.tw: Player event														*/
-/*	peXXXXX.tw: Player Event focused on a slave										*/
-/*	reXXXXX.tw: Random Event														*/
-/*	resXXXX.tw: Random Event, School												*/
-/*	seXXXXX.tw: Slave Event, focuses on slaves coming or going						*/
-/*	securityForceXXXXX.tw: Special (Security) Force event							*/
-/*																					*/
-/* Some scenes are also stored in useGuard.tw, walkPast.tw, and toychest.tw			*/
-
-/* This is a legacy container for whomever may still be using it for events. */
-/* They, if they exist, should strongly consider converting their events to the JS standard. */
-
-<<if Array.isArray($RECIevent)>>
-	<<set $activeSlave = $eventSlave>>
-	<<if ($debugMode > 0 && $debugModeEventSelection > 0)>>
-		<<set $nextButton = "Back", $nextLink = "Nonrandom Event", $returnTo = "Nonrandom Event">> /* if user just clicks spacebar */
-		''A random check-in event would have been selected from the following:''
-		<br>
-		<<for _i = 0; _i < $RECIevent.length; _i++>>
-			<<print "[[$RECIevent[_i]|RECI][$RECIevent = $RECIevent[" + _i + "]]]">>
-			<br>
-		<</for>>
-		<br><br>[[Go Back to Random Individual Event|Random Individual Event][$activeSlave = 0]]
-	<<else>>
-		<<set $RECIevent = $RECIevent.random()>>
-		<<goto "RECI">>
-	<</if>>
-<<else>>
-
-<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Next Week">>
-
-<<set _clothesTemp = $activeSlave.clothes>>
-<<switch $RECIevent>>
-	/*Some events start with the slave naked (any event that starts with the daily inspection, for example). Here we switch their clothing just for the image to load, then switch it back quickly so the player's choice is not messed up.*/
-<<case "placeholder">>
-	<<set $activeSlave.clothes = "no clothing">>
-<</switch>>
-<span id="art-frame">
-/* 000-250-006 */
-<<if $seeImages == 1>>
-	<<if $imageChoice == 1>>
-		<div class="imageRef lrgVector"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 3 0>></div>
-	<<else>>
-		<div class="imageRef lrgRender"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 3 0>></div>
-	<</if>>
-<</if>>
-/* 000-250-006 */
-</span>
-<<set $activeSlave.clothes = _clothesTemp>>
-
-<<run Enunciate($activeSlave)>>
-<<set $desc = SlaveTitle($activeSlave)>>
-<<set _belly = bellyAdjective($activeSlave)>>
-<<setLocalPronouns $activeSlave>>
-<<setPlayerPronouns>>
-
-<<switch $RECIevent>>
-
-<<default>>
-	<br>ERROR: bad RECI event $RECIevent
-<</switch>>
-
-<br><br>
-<span id="result">
-<<switch $RECIevent>>
-
-<<default>>
-	<br>ERROR: bad RECI event $RECIevent
-<</switch>>
-
-<<if ($debugMode > 0 && $debugModeEventSelection > 0)>>
-	<br><br>DEBUG: &nbsp;&nbsp;&nbsp;&nbsp;[[Go back to Nonrandom Event|Nonrandom Event][$activeSlave = 0, $eventSlave = 0]]
-<</if>>
-
-</span>
-
-<</if>> /* CLOSES EVENT SELECTION */
diff --git a/src/events/legacy/REFI.tw b/src/events/legacy/REFI.tw
deleted file mode 100644
index ee7edebe829..00000000000
--- a/src/events/legacy/REFI.tw
+++ /dev/null
@@ -1,52 +0,0 @@
-:: REFI [nobr]
-
-/* This is one of several files that contains and organizes many different events.	*/
-/*	genericPlotEvents.tw															*/
-/*	PESS.tw: Player Event, Single Slave												*/
-/*	PETS.tw: Player Event, Two Slaves												*/
-/*	RECI.tw: Random Event, Check In													*/
-/*	REFI.tw: Random Event, Fetish Interest											*/
-/*	REFS.tw: Random Event, Future Societies											*/
-/*	RESS.tw: Random Event, Single Slave												*/
-/*	RESSTR.tw: Random Event, Single Slave (Test Realm, for debugging events)		*/
-/*	RETS.tw: Random Event, Two Slaves												*/
-/*																					*/
-/* Events can also be in a dedicated *.tw file, formatted as follows:				*/
-/*	jeXXXXX.tw: Justice Event														*/
-/*	pXXXXXX.tw: Player event														*/
-/*	peXXXXX.tw: Player Event focused on a slave										*/
-/*	reXXXXX.tw: Random Event														*/
-/*	resXXXX.tw: Random Event, School												*/
-/*	seXXXXX.tw: Slave Event, focuses on slaves coming or going						*/
-/*	securityForceXXXXX.tw: Special (Security) Force event							*/
-/*																					*/
-/* Some scenes are also stored in useGuard.tw, walkPast.tw, and toychest.tw			*/
-
-
-<<if Array.isArray($REFIevent)>>
-	<<set $activeSlave = $eventSlave>>
-	<<if ($debugMode > 0 && $debugModeEventSelection > 0)>>
-		<<set $nextButton = "Back", $nextLink = "Nonrandom Event", $returnTo = "Nonrandom Event">> /* if user just clicks spacebar */
-		''A random fetish interest event would have been selected from the following:''
-		<br>
-		<<for _i = 0; _i < $REFIevent.length; _i++>>
-			<<print "[[$REFIevent[_i]|REFI][$REFIevent = $REFIevent[" + _i + "]]]">>
-			<br>
-		<</for>>
-		<br><br>[[Go Back to Random Nonindividual Event|Random Nonindividual Event][$eventSlave = 0]]
-	<<else>>
-		<<set $REFIevent = $REFIevent.random()>>
-		<<goto "REFI">>
-	<</if>>
-<<else>>
-
-<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "RIE Eligibility Check">>
-
-<span id="result">
-<<if ($debugMode > 0 && $debugModeEventSelection > 0)>>
-	<br><br>DEBUG: &nbsp;&nbsp;&nbsp;&nbsp;[[Go back to Nonrandom Event|Nonrandom Event][$activeSlave = 0, $eventSlave = 0]]
-<</if>>
-
-</span>
-
-<</if>> /* CLOSES EVENT SELECTION */
diff --git a/src/events/legacy/RESS.tw b/src/events/legacy/RESS.tw
deleted file mode 100644
index 92c1d17a5ba..00000000000
--- a/src/events/legacy/RESS.tw
+++ /dev/null
@@ -1,65 +0,0 @@
-:: RESS [nobr]
-
-/* This is one of several files that contains and organizes many different events.	*/
-/*	genericPlotEvents.tw															*/
-/*	PESS.tw: Player Event, Single Slave												*/
-/*	PETS: Player Event, Two Slaves													*/
-/*	RECI.tw: Random Event, Check In													*/
-/*	REFI.tw: Random Event, Fetish Interest											*/
-/*	REFS.tw: Random Event, Future Societies											*/
-/*	RESS.tw: Random Event, Single Slave												*/
-/*	RESSTR.tw: Random Event, Single Slave (Test Realm, for debugging events)		*/
-/*	RETS.tw: Random Event, Two Slaves												*/
-/*																					*/
-/* Events can also be in a dedicated *.tw file, formatted as follows:				*/
-/*	jeXXXXX.tw: Justice Event														*/
-/*	pXXXXXX.tw: Player event														*/
-/*	peXXXXX.tw: Player Event focused on a slave										*/
-/*	reXXXXX.tw: Random Event														*/
-/*	resXXXX.tw: Random Event, School												*/
-/*	seXXXXX.tw: Slave Event, focuses on slaves coming or going						*/
-/*	securityForceXXXXX.tw: Special (Security) Force event							*/
-/*																					*/
-/* Some scenes are also stored in useGuard.tw, walkPast.tw, and toychest.tw			*/
-
-<<if Array.isArray($RESSevent)>>
-	<<set $activeSlave = $eventSlave>>
-	<<if $debugMode > 0 && $debugModeEventSelection > 0>>
-		<<set $nextButton = "Back", $nextLink = "Nonrandom Event", $returnTo = "Nonrandom Event">> /* if user just clicks spacebar */
-		''A random single slave event would have been selected from the following:''
-		<br>
-		<<for _i = 0; _i < $RESSevent.length; _i++>>
-			<<print "[[$RESSevent[_i]|RESS][$RESSevent = $RESSevent[" + _i + "]]]">>
-			<br>
-		<</for>>
-		<br><br>[[Go Back to Random Individual Event|Random Individual Event][$activeSlave = 0]]
-	<<else>>
-		<<set $RESSevent = $RESSevent.random()>>
-		<<goto "RESS">>
-	<</if>>
-<<else>>
-
-<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Next Week", _didAnal = 0, _didVaginal = 0>>
-
-<span id="art-frame">
-	/* 000-250-006 */
-	<<if $seeImages == 1>>
-		<<if $imageChoice == 1>>
-			<div class="imageRef lrgVector"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 3 0>></div>
-		<<else>>
-			<div class="imageRef lrgRender"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 3 0>></div>
-		<</if>>
-	<</if>>
-	/* 000-250-006 */
-</span>
-
-<br><br>
-<span id="result">
-
-<<if $debugMode > 0 && $debugModeEventSelection > 0>>
-	<br><br>DEBUG: &nbsp;&nbsp;&nbsp;&nbsp;[[Go back to Nonrandom Event|Nonrandom Event][$activeSlave = 0, $eventSlave = 0]]
-<</if>>
-
-</span>
-
-<</if>> /* CLOSES EVENT SELECTION */
diff --git a/src/events/legacy/RESSTR.tw b/src/events/legacy/RESSTR.tw
deleted file mode 100644
index 99f9e87c992..00000000000
--- a/src/events/legacy/RESSTR.tw
+++ /dev/null
@@ -1,77 +0,0 @@
-:: RESSTR [nobr]
-
-/* This is one of several files that contains and organizes many different events.	*/
-/*	genericPlotEvents.tw															*/
-/*	PESS.tw: Player Event, Single Slave												*/
-/*	PETS: Player Event, Two Slaves													*/
-/*	RECI.tw: Random Event, Check In													*/
-/*	REFI.tw: Random Event, Fetish Interest											*/
-/*	REFS.tw: Random Event, Future Societies											*/
-/*	RESS.tw: Random Event, Single Slave												*/
-/*	RESSTR.tw: Random Event, Single Slave (Test Realm, for debugging events)		*/
-/*	RETS.tw: Random Event, Two Slaves												*/
-/*																					*/
-/* Events can also be in a dedicated *.tw file, formatted as follows:				*/
-/*	jeXXXXX.tw: Justice Event														*/
-/*	pXXXXXX.tw: Player event														*/
-/*	peXXXXX.tw: Player Event focused on a slave										*/
-/*	reXXXXX.tw: Random Event														*/
-/*	resXXXX.tw: Random Event, School												*/
-/*	seXXXXX.tw: Slave Event, focuses on slaves coming or going						*/
-/*	securityForceXXXXX.tw: Special (Security) Force event							*/
-/*																					*/
-/* Some scenes are also stored in useGuard.tw, walkPast.tw, and toychest.tw			*/
-
-<<if Array.isArray($RESSTRevent)>>
-	<<set $activeSlave = $eventSlave>>
-	<<if $debugMode > 0 && $debugModeEventSelection > 0>>
-		<<set $nextButton = "Back", $nextLink = "Nonrandom Event", $returnTo = "Nonrandom Event">> /* if user just clicks spacebar */
-		''A random event would have been selected from the following:''
-		<br>
-		<<for _i = 0; _i < $RESSTRevent.length; _i++>>
-			<<print "[[$RESSTRevent[_i]|RESSTR][$RESSTRevent = $RESSTRevent[" + _i + "]]]">>
-			<br>
-		<</for>>
-		<br><br>[[Go Back to Random Individual Event|Random Individual Event][$activeSlave = 0]]
-	<<else>>
-		<<set $RESSTRevent = $RESSTRevent.random()>>
-		<<goto "RESSTR">>
-	<</if>>
-<<else>>
-
-	<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Next Week">>
-
-	/* 000-250-006 */
-	<<if $seeImages == 1>>
-		<<if $imageChoice == 1>>
-			<div class="imageRef lrgVector"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 3 0>></div>
-		<<else>>
-			<div class="imageRef lrgRender"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 3 0>></div>
-		<</if>>
-	<</if>>
-	/* 000-250-006 */
-
-	<<set $desc = SlaveTitle($activeSlave)>>
-	<<run Enunciate($activeSlave)>>
-
-	<<switch $RESSTRevent>>
-
-	<<default>>
-		<br>ERROR: bad RESSTR event $RESSTRevent
-	<</switch>>
-
-	<br><br>
-	<span id="result">
-	<<switch $RESSTRevent>>
-
-	<<default>>
-		<br>ERROR: bad RESSTR event $RESSTRevent
-	<</switch>>
-
-	<<if $debugMode > 0 && $debugModeEventSelection > 0>>
-		<br><br>DEBUG: &nbsp;&nbsp;&nbsp;&nbsp;[[Go back to Nonrandom Event|Nonrandom Event][$activeSlave = 0, $eventSlave = 0]]
-	<</if>>
-
-	</span>
-
-<</if>> /* CLOSES EVENT SELECTION */
diff --git a/src/events/legacy/RETS.tw b/src/events/legacy/RETS.tw
deleted file mode 100644
index eed6401c9cf..00000000000
--- a/src/events/legacy/RETS.tw
+++ /dev/null
@@ -1,56 +0,0 @@
-:: RETS [nobr]
-
-/* This is one of several files that contains and organizes many different events.	*/
-/*	genericPlotEvents.tw															*/
-/*	PESS.tw: Player Event, Single Slave												*/
-/*	PETS.tw: Player Event, Two Slaves												*/
-/*	RECI.tw: Random Event, Check In													*/
-/*	REFI.tw: Random Event, Fetish Interest											*/
-/*	REFS.tw: Random Event, Future Societies											*/
-/*	RESS.tw: Random Event, Single Slave												*/
-/*	RESSTR.tw: Random Event, Single Slave (Test Realm, for debugging events)		*/
-/*	RETS.tw: Random Event, Two Slaves												*/
-/*																					*/
-/* Events can also be in a dedicated *.tw file, formatted as follows:				*/
-/*	jeXXXXX.tw: Justice Event														*/
-/*	pXXXXXX.tw: Player event														*/
-/*	peXXXXX.tw: Player Event focused on a slave										*/
-/*	reXXXXX.tw: Random Event														*/
-/*	resXXXX.tw: Random Event, School												*/
-/*	seXXXXX.tw: Slave Event, focuses on slaves coming or going						*/
-/*	securityForceXXXXX.tw: Special (Security) Force event							*/
-/*																					*/
-/* Some scenes are also stored in useGuard.tw, walkPast.tw, and toychest.tw			*/
-
-/* This is a legacy container for whomever may still be using it for events. */
-/* They, if they exist, should strongly consider converting their events to the JS standard. */
-
-<<if Array.isArray($RETSevent)>>
-	<<set $activeSlave = $eventSlave>>
-	<<if ($debugMode > 0 && $debugModeEventSelection > 0)>>
-		<<set $nextButton = "Back", $nextLink = "Nonrandom Event", $returnTo = "Nonrandom Event">> /* if user just clicks spacebar */
-		''A random two slave event would have been selected from the following:''
-		<br>
-		<<for _i = 0; _i < $RETSevent.length; _i++>>
-			<<print "[[$RETSevent[_i]|RETS][$RETSevent = $RETSevent[" + _i + "]]]">>
-			<br>
-		<</for>>
-		<br><br>[[Go Back to Random Individual Event|Random Individual Event][$activeSlave = 0]]
-	<<else>>
-		<<set $RETSevent = $RETSevent.random()>>
-		<<goto "RETS">>
-	<</if>>
-<<else>>
-
-<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Next Week">>
-
-<br><br>
-<span id="result">
-
-<<if ($debugMode > 0 && $debugModeEventSelection > 0)>>
-	<br><br>DEBUG: &nbsp;&nbsp;&nbsp;&nbsp;[[Go back to Nonrandom Event|Nonrandom Event][$activeSlave = 0, $eventSlave = 0]]
-<</if>>
-
-</span>
-
-<</if>> /* CLOSES EVENT SELECTION */
diff --git a/src/events/nonRandom/mercs/pSlaveMedic.js b/src/events/nonRandom/mercs/pSlaveMedic.js
index dba7354e788..df9b358e90d 100644
--- a/src/events/nonRandom/mercs/pSlaveMedic.js
+++ b/src/events/nonRandom/mercs/pSlaveMedic.js
@@ -113,9 +113,9 @@ App.Events.PSlaveMedic = class PSlaveMedic extends App.Events.BaseEvent {
 		const highBid = 25000;
 		const choices = [];
 		if (V.cash > lowBid) {
-			choices.push(new App.Events.Result(`Offer ${cashFormat(lowBid)} for ${him}"`, offerLow));
+			choices.push(new App.Events.Result(`Offer ${cashFormat(lowBid)} for ${him}`, offerLow));
 			if (V.cash > highBid) {
-				choices.push(new App.Events.Result(`Offer a very generous  ${cashFormat(highBid)} for ${him}"`, offerHigh));
+				choices.push(new App.Events.Result(`Offer a very generous  ${cashFormat(highBid)} for ${him}`, offerHigh));
 			} else {
 				choices.push(new App.Events.Result(null, null, `Cannot afford even a generous bid of ${cashFormat(highBid)}`));
 			}
diff --git a/src/events/nonRandom/pSchoolSuggestion.js b/src/events/nonRandom/pSchoolSuggestion.js
index cc0f1b16cdf..415ab33edd1 100644
--- a/src/events/nonRandom/pSchoolSuggestion.js
+++ b/src/events/nonRandom/pSchoolSuggestion.js
@@ -8,8 +8,6 @@ App.Events.PSchoolSuggestion = class PSchoolSuggestion extends App.Events.BaseEv
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		const startFee = 10000;
 
 		V.schoolSuggestion = 1;
diff --git a/src/events/nonRandom/rival/pRivalInitiation.js b/src/events/nonRandom/rival/pRivalInitiation.js
index 810f7dac187..29b37210d00 100644
--- a/src/events/nonRandom/rival/pRivalInitiation.js
+++ b/src/events/nonRandom/rival/pRivalInitiation.js
@@ -7,8 +7,6 @@ App.Events.PRivalInitiation = class PRivalInitiation extends App.Events.BaseEven
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		V.rivalOwner = 0;
 		V.rivalOwnerEnslaved = 1;
 
diff --git a/src/events/nonRandom/tfsFarmUpgrade.js b/src/events/nonRandom/tfsFarmUpgrade.js
index b6b123a6840..346c4759488 100644
--- a/src/events/nonRandom/tfsFarmUpgrade.js
+++ b/src/events/nonRandom/tfsFarmUpgrade.js
@@ -9,8 +9,6 @@ App.Events.TFSFarmUpgrade = class TFSFarmUpgrade extends App.Events.BaseEvent {
 
 	execute(node) {
 		let r = [];
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		V.TFS.farmUpgradeAsked = V.week;
 
 		r.push(`You receive yet another personal call from an older Futanari Sister, one of the Sisters who lives in your arcology; you've given up trying to tell them apart. Unusually, this one has taken a break from the Sisters' constant sexual communion to concentrate on speaking with you, and she looks serious, though she's still a gorgeous naked futa whose boobs fill half the screen, and whose perpetually erect dick pokes insistently into frame.`);
diff --git a/src/events/nonRandomEvent.js b/src/events/nonRandomEvent.js
index c82b6fba0a8..3b49dc3aed5 100644
--- a/src/events/nonRandomEvent.js
+++ b/src/events/nonRandomEvent.js
@@ -165,9 +165,9 @@ App.Events.playNonrandomEvent = function() {
 				App.UI.DOM.appendNewElement("div", linkList, App.UI.DOM.passageLink(event.eventName, passage(), () => { V.event = event; V.eventQueue[0].delete(event); }));
 			}
 			if (events.length + queuedEvents.length > 0) {
-				App.UI.DOM.appendNewElement("div", d, App.UI.DOM.passageLink("SKIP remaining events and proceed", "Nonrandom Event"));
+				App.UI.DOM.appendNewElement("div", d, App.UI.DOM.passageLink("SKIP remaining events and proceed", "Random Nonindividual Event"));
 			} else {
-				App.UI.DOM.appendNewElement("div", d, App.UI.DOM.passageLink("No more events. Proceed.", "Nonrandom Event"));
+				App.UI.DOM.appendNewElement("div", d, App.UI.DOM.passageLink("No more events. Proceed.", "Random Nonindividual Event"));
 			}
 			d.append(App.Events.renderEventDebugger("Scheduled Event"));
 		} else {
@@ -188,33 +188,19 @@ App.Events.playNonrandomEvent = function() {
 					qEvent.execute(d);
 					V.passageSwitchHandler = clearEvent;
 				} else {
-					// no more events for this week, move on to random events (or ordinary Nonrandom for now, until we get rid of globalThis.nonRandomEvent)
-					setTimeout(() => Engine.play("Nonrandom Event"), Engine.minDomActionDelay);
+					// no more events for this week, move on to random events
+					const plotDiscount = V.plot ? 0 : 25; // if plot is enabled, somewhat fewer nonindividual events appear in the first 75 weeks
+					if (random(1, 200) > V.week + 125 + plotDiscount) {
+						// skip nonindividual event, go straight to individual event
+						// week 0: 50% chance to skip with plot disabled, 62.5% with plot enabled.
+						// reaches 0% chance at week 50 with plot disabled, or week 75 with plot enabled.
+						setTimeout(() => Engine.play("RIE Eligibility Check"), Engine.minDomActionDelay);
+					} else {
+						setTimeout(() => Engine.play("Random Nonindividual Event"), Engine.minDomActionDelay);
+					}
 				}
 			}
 		}
 	}
 	return d;
 };
-
-/** @deprecated - use instance list in getNextNonrandomEvent instead */
-globalThis.nonRandomEvent = function() {
-	V.activeSlave = 0;
-	V.eventSlave = 0;
-	const effectiveWeek = App.Events.effectiveWeek();
-	if (V.plot) {
-		if (random(1, 100) > effectiveWeek + 25) { // shortcut: 75% at week 0 to 0% at week 75
-			setTimeout(() => Engine.play("RIE Eligibility Check"), Engine.minDomActionDelay);
-		} else {
-			setTimeout(() => Engine.play("Random Nonindividual Event"), Engine.minDomActionDelay);
-		}
-	} else {
-		if (random(1, 200) > effectiveWeek + 100) { // shortcut: 50% at week 0 to 0% at week 100
-			setTimeout(() => Engine.play("RIE Eligibility Check"), Engine.minDomActionDelay);
-		} else {
-			setTimeout(() => Engine.play("Random Nonindividual Event"), Engine.minDomActionDelay);
-		}
-	}
-	// never reached, just for typing
-	return new DocumentFragment();
-};
diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js
index e52b6fa1acc..f12ab883dcc 100644
--- a/src/events/randomEvent.js
+++ b/src/events/randomEvent.js
@@ -423,36 +423,119 @@ App.Events.getValidEvents = function(eventList, slave) {
 		.reduce((res, cur) => res.concat(Array(cur.weight).fill(cur)), []);
 };
 
-
-/* --- below here is a bunch of workaround crap because we have to somehow persist event selection through multiple twine passages. ---
- * eventually all this should go away, and we should use just one simple passage for both selection and execution, so everything can be kept in object form instead of being continually serialized and deserialized.
- * we need to be able to serialize/deserialize the active event anyway so that saves work right, so this mechanism just piggybacks on that capability so the event passages don't need to be reworked all at once
- */
-
-/** get a stringified list of possible individual events as fake passage names - TODO: kill me */
-App.Events.getIndividualEventsPassageList = function(slave) {
-	const events = App.Events.getValidEvents(App.Events.getIndividualEvents(), slave);
-	return events.map(e => `JSRE ${e.eventName}:${JSON.stringify(e.toJSON())}`);
-};
-
-/** get a stringified list of possible nonindividual recruitment events as fake passage names - TODO: kill me */
-App.Events.getNonindividualRecruitmentEventsPassageList = function() {
-	const events = App.Events.getValidEvents(App.Events.getNonindividualRecruitmentEvents());
-	return events.map(e => `JSRE ${e.eventName}:${JSON.stringify(e.toJSON())}`);
-};
-
-/** get a stringified list of possible nonindividual events as fake passage names - TODO: kill me */
-App.Events.getNonindividualEventsPassageList = function() {
-	const events = App.Events.getValidEvents(App.Events.getNonindividualEvents());
-	return events.map(e => `JSRE ${e.eventName}:${JSON.stringify(e.toJSON())}`);
-};
-
-/** execute a fake event passage from the embedded JSON - TODO: kill me */
-App.Events.setGlobalEventForPassageTransition = function(psg) {
-	V.event = JSON.parse(psg.slice(psg.indexOf(":") + 1));
+App.Events.playRandomIndividualEvent = function() {
+	const d = document.createElement("div");
+
+	const clearEvent = () => { V.event = null; };
+
+	if (V.event instanceof App.Events.BaseEvent) {
+		// we've deserialized a saved game with an event active, or a player has picked one, so just play it immediately
+		V.event.execute(d);
+		V.passageSwitchHandler = clearEvent;
+	} else {
+		const eligibleSlaves = getRieEligibleSlaves();
+		if (eligibleSlaves.length === 0) {
+			// no eligible slaves, move on to next week
+			setTimeout(() => Engine.play("Next Week"), Engine.minDomActionDelay);
+		} else if (V.debugMode > 0 && V.debugModeEventSelection > 0) {
+			V.nextButton = "Refresh";
+			V.nextLink = passage();
+
+			// show all the possible random individual events
+			App.UI.DOM.appendNewElement("h2", d, "Random Individual Events");
+			const slaveDiv = App.UI.DOM.appendNewElement("div", d, "Show events for this slave: ");
+			const slaveDropdown = App.UI.DOM.appendNewElement("select", slaveDiv);
+			for (const s of eligibleSlaves) {
+				const choice = App.UI.DOM.appendNewElement("option", slaveDropdown, SlaveFullName(s));
+				choice.value = s.ID.toString();
+			}
+			slaveDropdown.selectedIndex = -1;
+			slaveDropdown.onchange = () => {
+				const O = slaveDropdown.options[slaveDropdown.selectedIndex];
+				const slaveID = parseInt(O.value);
+				writeEventList(getSlave(slaveID));
+			};
+			App.UI.DOM.appendNewElement("p", d, "One of the following individual events would have been chosen for this slave.");
+
+			const linkList = App.UI.DOM.appendNewElement("div", d, '', "event-section");
+			const writeEventList = (/** @type {App.Entity.SlaveState} */eventSlave) => {
+				$(linkList).empty();
+				const events = App.Events.getValidEvents(App.Events.getIndividualEvents(), eventSlave);
+				if (events.length === 0) {
+					events.push(new App.Events.RENoEvent());
+				}
+				for (const event of events) {
+					App.UI.DOM.appendNewElement("div", linkList, App.UI.DOM.passageLink(event.eventName, passage(), () => { V.event = event; }));
+				}
+			};
+
+			App.UI.DOM.appendNewElement("div", d, App.UI.DOM.passageLink("Back to Random Nonindividual Event", "Random Nonindividual Event"));
+			App.UI.DOM.appendNewElement("div", d, App.UI.DOM.passageLink("Skip week-end events", "Next Week"));
+			d.append(App.Events.renderEventDebugger("Random Individual Event"));
+		} else {
+			// pick a slave for a random individual event
+			const eventSlave = eligibleSlaves.random();
+
+			// pick a random individual event for that slave.  Use RE No Event if there are none she's eligible for.
+			const events = App.Events.getValidEvents(App.Events.getIndividualEvents(), eventSlave);
+			const event = events.random() || new App.Events.RENoEvent();
+
+			// record the chosen event in 'current' (pre-play!) history as well as current state so that it will serialize out correctly if saved from this passage
+			// WARNING: THIS IS ***NOT*** THE ACTIVE STATE PAGE!
+			// @ts-ignore - under-defined object
+			State.current.variables.event = V.event = event;
+			event.execute(d);
+			V.passageSwitchHandler = clearEvent;
+		}
+	}
+	return d;
 };
 
-/** strip the embedded JSON from the fake event passage so it can be read by a human being - TODO: kill me */
-App.Events.printEventPassage = function(psg) {
-	return psg.slice(0, psg.indexOf(":"));
+App.Events.playRandomNonindividualEvent = function() {
+	const d = document.createElement("div");
+
+	const clearEvent = () => { V.event = null; };
+
+	if (V.event instanceof App.Events.BaseEvent) {
+		// we've deserialized a saved game with an event active, or a player has picked one, so just play it immediately
+		V.event.execute(d);
+		V.passageSwitchHandler = clearEvent;
+	} else {
+		let nonRecEvents = App.Events.getValidEvents(App.Events.getNonindividualEvents());
+		let recEvents = App.Events.getValidEvents(App.Events.getNonindividualRecruitmentEvents());
+		if (V.debugMode > 0 && V.debugModeEventSelection > 0) {
+			V.nextButton = "Refresh";
+			V.nextLink = passage();
+
+			// show all the possible nonindividual random events
+			App.UI.DOM.appendNewElement("h2", d, "Random Nonindividual Events");
+			App.UI.DOM.appendNewElement("p", d, "One of the following nonindividual events would have been chosen.");
+			const linkList = App.UI.DOM.appendNewElement("div", d, '', "event-section");
+			for (const event of nonRecEvents.concat(recEvents)) {
+				App.UI.DOM.appendNewElement("div", linkList, App.UI.DOM.passageLink(event.eventName, passage(), () => { V.event = event; }));
+			}
+
+			App.UI.DOM.appendNewElement("div", d, App.UI.DOM.passageLink("Skip to Random Individual Event", "Random Individual Event"));
+			App.UI.DOM.appendNewElement("div", d, App.UI.DOM.passageLink("Skip week-end events", "Next Week"));
+			d.append(App.Events.renderEventDebugger("Random Nonindividual Event"));
+		} else {
+			// pick a random nonindividual event.  there should always be at least one.
+			const maxRecruitNumber = Math.min(10, Math.floor(nonRecEvents.length/4) + 1);
+			if (recEvents.length > maxRecruitNumber) {
+				recEvents = recEvents.pluckMany(maxRecruitNumber);
+			}
+			const event = nonRecEvents.concat(recEvents).random();
+			if (event) {
+				// record the chosen event in 'current' (pre-play!) history as well as current state so that it will serialize out correctly if saved from this passage
+				// WARNING: THIS IS ***NOT*** THE ACTIVE STATE PAGE!
+				// @ts-ignore - under-defined object
+				State.current.variables.event = V.event = event;
+				event.execute(d);
+				V.passageSwitchHandler = clearEvent;
+			} else {
+				throw new Error("There should always be at least one eligible nonindividual event.");
+			}
+		}
+	}
+	return d;
 };
diff --git a/src/events/reRecruit.js b/src/events/reRecruit.js
index 85b20f5e756..a205f532c2a 100644
--- a/src/events/reRecruit.js
+++ b/src/events/reRecruit.js
@@ -109,7 +109,6 @@ App.Events.RERecruit = class RERecruit extends App.Events.BaseEvent {
 
 	execute(node) {
 		V.encyclopedia = "Enslaving People";
-		V.nextLink = "RIE Eligibility Check";
 		if (V.debugMode && V.debugModeEventSelection) {
 			const el = App.UI.DOM.appendNewElement("span", node);
 			App.UI.DOM.appendNewElement("span", el, `One of the following recruitment events would have appeared: `);
diff --git a/src/events/recETS/recetsAddictMotherDaughter.js b/src/events/recETS/recetsAddictMotherDaughter.js
index 7d3618ce5ac..a7c5ecb5529 100644
--- a/src/events/recETS/recetsAddictMotherDaughter.js
+++ b/src/events/recETS/recetsAddictMotherDaughter.js
@@ -10,8 +10,6 @@ App.Events.recetsAddictMotherDaughter = class recetsAddictMotherDaughter extends
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		let r = [];
 		const contractCost = 1000;
diff --git a/src/events/recETS/recetsDesperateBroodmother.js b/src/events/recETS/recetsDesperateBroodmother.js
index ca81e8997f5..a2fdadcfd3d 100644
--- a/src/events/recETS/recetsDesperateBroodmother.js
+++ b/src/events/recETS/recetsDesperateBroodmother.js
@@ -14,8 +14,6 @@ App.Events.recetsDesperateBroodmother = class recetsDesperateBroodmother extends
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		const contractCost = 1000;
 		const pram = {
diff --git a/src/events/recETS/recetsIdenticalHermPair.js b/src/events/recETS/recetsIdenticalHermPair.js
index 2bb9f932026..4b71ba5bae9 100644
--- a/src/events/recETS/recetsIdenticalHermPair.js
+++ b/src/events/recETS/recetsIdenticalHermPair.js
@@ -14,8 +14,6 @@ App.Events.recetsIdenticalHermPair = class recetsIdenticalHermPair extends App.E
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		const thing1 = GenerateNewSlave("XX", {
 			minAge: V.fertilityAge, maxAge: 21, ageOverridesPedoMode: 1, disableDisability: 1
diff --git a/src/events/recETS/recetsIdenticalPair.js b/src/events/recETS/recetsIdenticalPair.js
index 19d001f3edf..d69509fa3d8 100644
--- a/src/events/recETS/recetsIdenticalPair.js
+++ b/src/events/recETS/recetsIdenticalPair.js
@@ -11,8 +11,6 @@ App.Events.recetsIdenticalPair = class recetsIdenticalPair extends App.Events.Ba
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		const thing1 = GenerateNewSlave("XX", {minAge: V.minimumSlaveAge, maxAge: 21, disableDisability: 1});
 		thing1.origin = "$He was brought up in a radical slave school to match $his twin.";
diff --git a/src/events/recETS/recetsIncestBrotherBrother.js b/src/events/recETS/recetsIncestBrotherBrother.js
index 70476ce44cb..7b8e22d0fd8 100644
--- a/src/events/recETS/recetsIncestBrotherBrother.js
+++ b/src/events/recETS/recetsIncestBrotherBrother.js
@@ -12,8 +12,6 @@ App.Events.recetsIncestBrotherBrother = class recetsIncestBrotherBrother extends
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		const contractCost = 10000;
 		const brother1 = GenerateNewSlave("XY", {
diff --git a/src/events/recETS/recetsIncestBrotherSister.js b/src/events/recETS/recetsIncestBrotherSister.js
index 0a8bd1ef036..0bda133855e 100644
--- a/src/events/recETS/recetsIncestBrotherSister.js
+++ b/src/events/recETS/recetsIncestBrotherSister.js
@@ -14,8 +14,6 @@ App.Events.recetsIncestBrotherSister = class recetsIncestBrotherSister extends A
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		const contractCost = 10000;
 		const sis = GenerateNewSlave("XX", {
diff --git a/src/events/recETS/recetsIncestFatherDaughter.js b/src/events/recETS/recetsIncestFatherDaughter.js
index e37bef8e766..835fb6fb8b9 100644
--- a/src/events/recETS/recetsIncestFatherDaughter.js
+++ b/src/events/recETS/recetsIncestFatherDaughter.js
@@ -15,8 +15,6 @@ App.Events.recetsIncestFatherDaughter = class recetsIncestFatherDaughter extends
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		const contractCost = 10000;
 		const father = GenerateNewSlave("XY", {
diff --git a/src/events/recETS/recetsIncestFatherSon.js b/src/events/recETS/recetsIncestFatherSon.js
index fdd807a22f4..682c98530ed 100644
--- a/src/events/recETS/recetsIncestFatherSon.js
+++ b/src/events/recETS/recetsIncestFatherSon.js
@@ -12,8 +12,6 @@ App.Events.recetsIncestFatherSon = class recetsIncestFatherSon extends App.Event
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		const contractCost = 10000;
 		const father = GenerateNewSlave("XY", {
diff --git a/src/events/recETS/recetsIncestMotherDaughter.js b/src/events/recETS/recetsIncestMotherDaughter.js
index 9476725deee..363f432f263 100644
--- a/src/events/recETS/recetsIncestMotherDaughter.js
+++ b/src/events/recETS/recetsIncestMotherDaughter.js
@@ -12,8 +12,6 @@ App.Events.recetsIncestMotherDaughter = class recetsIncestMotherDaughter extends
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		const contractCost = 10000;
 		const mother = GenerateNewSlave("XX", {
diff --git a/src/events/recETS/recetsIncestMotherSon.js b/src/events/recETS/recetsIncestMotherSon.js
index 66087a5a948..ea4042ae40d 100644
--- a/src/events/recETS/recetsIncestMotherSon.js
+++ b/src/events/recETS/recetsIncestMotherSon.js
@@ -15,8 +15,6 @@ App.Events.recetsIncestMotherSon = class recetsIncestMotherSon extends App.Event
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		const contractCost = 10000;
 		const mother = GenerateNewSlave("XX", {
diff --git a/src/events/recETS/recetsIncestSisterSister.js b/src/events/recETS/recetsIncestSisterSister.js
index 8a57ba861af..e0e8ad30d95 100644
--- a/src/events/recETS/recetsIncestSisterSister.js
+++ b/src/events/recETS/recetsIncestSisterSister.js
@@ -12,8 +12,6 @@ App.Events.recetsIncestSisterSister = class recetsIncestSisterSister extends App
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		const contractCost = 10000;
 		const sis1 = GenerateNewSlave("XX", {
diff --git a/src/events/recETS/recetsIncestTwinBrother.js b/src/events/recETS/recetsIncestTwinBrother.js
index 181131c5a58..59975b8aed4 100644
--- a/src/events/recETS/recetsIncestTwinBrother.js
+++ b/src/events/recETS/recetsIncestTwinBrother.js
@@ -12,8 +12,6 @@ App.Events.recetsIncestTwinBrother = class recetsIncestTwinBrother extends App.E
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		const contractCost = 10000;
 		const brother1 = GenerateNewSlave("XY", {
diff --git a/src/events/recETS/recetsIncestTwinSister.js b/src/events/recETS/recetsIncestTwinSister.js
index 0b82a6faa49..201246577b6 100644
--- a/src/events/recETS/recetsIncestTwinSister.js
+++ b/src/events/recETS/recetsIncestTwinSister.js
@@ -12,8 +12,6 @@ App.Events.recetsIncestTwinSister = class recetsIncestTwinSister extends App.Eve
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		const contractCost = 10000;
 		const sis1 = GenerateNewSlave("XX", {
diff --git a/src/events/recETS/recetsIncestTwinsMixed.js b/src/events/recETS/recetsIncestTwinsMixed.js
index 591ad9cb539..86afc50169b 100644
--- a/src/events/recETS/recetsIncestTwinsMixed.js
+++ b/src/events/recETS/recetsIncestTwinsMixed.js
@@ -13,8 +13,6 @@ App.Events.recetsIncestTwinsMixed = class recetsIncestTwinsMixed extends App.Eve
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		const contractCost = 10000;
 		const sis1 = GenerateNewSlave("XX", {
diff --git a/src/events/recETS/recetsMatchedPair.js b/src/events/recETS/recetsMatchedPair.js
index fdacb0033e6..f1d65602761 100644
--- a/src/events/recETS/recetsMatchedPair.js
+++ b/src/events/recETS/recetsMatchedPair.js
@@ -12,8 +12,6 @@ App.Events.recetsMatchedPair = class recetsMatchedPair extends App.Events.BaseEv
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		/* contractCost not needed, no option to sell */
 		const sis1 = GenerateNewSlave("XY", {minAge: 12, maxAge: 21, disableDisability: 1});
diff --git a/src/events/recETS/recetsMismatchedPair.js b/src/events/recETS/recetsMismatchedPair.js
index da84591ac27..7593625ddef 100644
--- a/src/events/recETS/recetsMismatchedPair.js
+++ b/src/events/recETS/recetsMismatchedPair.js
@@ -13,8 +13,6 @@ App.Events.recetsMismatchedPair = class recetsMismatchedPair extends App.Events.
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		const contractCost = 1500;
 		const bro = GenerateNewSlave("XY", {
diff --git a/src/events/recETS/recetsPoshMotherDaughter.js b/src/events/recETS/recetsPoshMotherDaughter.js
index f2b1513ce9f..b47ddd6e48c 100644
--- a/src/events/recETS/recetsPoshMotherDaughter.js
+++ b/src/events/recETS/recetsPoshMotherDaughter.js
@@ -11,8 +11,6 @@ App.Events.recetsPoshMotherDaughter = class recetsPoshMotherDaughter extends App
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		let r = [];
 
diff --git a/src/events/recFS/recfsArabianRevivalist.js b/src/events/recFS/recfsArabianRevivalist.js
index a970ff4c195..88dfbdc0b23 100644
--- a/src/events/recFS/recfsArabianRevivalist.js
+++ b/src/events/recFS/recfsArabianRevivalist.js
@@ -7,7 +7,6 @@ App.Events.recFSArabianRevivalist = class recFSArabianRevivalist extends App.Eve
 	}
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {
 			minAge: 25, maxAge: Math.max(25, V.retirementAge-5), ageOverridesPedoMode: 1, disableDisability: 1
 		});
diff --git a/src/events/recFS/recfsAssetExpansionist.js b/src/events/recFS/recfsAssetExpansionist.js
index dbe57adaaf5..574bac3fda9 100644
--- a/src/events/recFS/recfsAssetExpansionist.js
+++ b/src/events/recFS/recfsAssetExpansionist.js
@@ -15,7 +15,6 @@ App.Events.recFSAssetExpansionist = class recFSAssetExpansionist extends App.Eve
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {minAge: 16, maxAge: 19, disableDisability: 1});
 		slave.birthWeek = random(1, 8);
 		generateSalonModifications(slave);
diff --git a/src/events/recFS/recfsAssetExpansionistTwo.js b/src/events/recFS/recfsAssetExpansionistTwo.js
index 20846a271a4..3f171322560 100644
--- a/src/events/recFS/recfsAssetExpansionistTwo.js
+++ b/src/events/recFS/recfsAssetExpansionistTwo.js
@@ -8,7 +8,6 @@ App.Events.recFSAssetExpansionistTwo = class recFSAssetExpansionistTwo extends A
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {
 			minAge: 28, maxAge: 44, ageOverridesPedoMode: 1, disableDisability: 1
 		});
diff --git a/src/events/recFS/recfsAztecRevivalist.js b/src/events/recFS/recfsAztecRevivalist.js
index b0d307982a3..3a91f1541d3 100644
--- a/src/events/recFS/recfsAztecRevivalist.js
+++ b/src/events/recFS/recfsAztecRevivalist.js
@@ -15,7 +15,6 @@ App.Events.recFSAztecRevivalist = class recFSAztecRevivalist extends App.Events.
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave("XX", {minAge: 22, maxAge: 28, disableDisability: 1});
 		slave.origin = "$He offered $himself to you for enslavement because $he needs to feel a higher call.";
 		slave.devotion = random(25, 50);
diff --git a/src/events/recFS/recfsBodyPurist.js b/src/events/recFS/recfsBodyPurist.js
index 1bc6c9dcce4..4083596c957 100644
--- a/src/events/recFS/recfsBodyPurist.js
+++ b/src/events/recFS/recfsBodyPurist.js
@@ -8,7 +8,6 @@ App.Events.recFSBodyPurist = class recFSBodyPurist extends App.Events.BaseEvent
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {maxAge: 42, disableDisability: 1, race: "nonslave"});
 		slave.origin = "$He offered $himself for voluntary enslavement to get to an arcology in which implants are uncommon, since $he has a fear of surgery.";
 		setHealth(slave, jsRandom(-20, 20), undefined, undefined, 0, 0);
diff --git a/src/events/recFS/recfsBodyPuristTwo.js b/src/events/recFS/recfsBodyPuristTwo.js
index 3b55e04462e..9d7b0a4e0c0 100644
--- a/src/events/recFS/recfsBodyPuristTwo.js
+++ b/src/events/recFS/recfsBodyPuristTwo.js
@@ -15,7 +15,6 @@ App.Events.recFSBodyPuristTwo = class recFSBodyPuristTwo extends App.Events.Base
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {
 			minAge: 18, maxAge: 24, ageOverridesPedoMode: 1, disableDisability: 1
 		});
diff --git a/src/events/recFS/recfsChattelReligionist.js b/src/events/recFS/recfsChattelReligionist.js
index cb0bc393e2d..1fffa066d8b 100644
--- a/src/events/recFS/recfsChattelReligionist.js
+++ b/src/events/recFS/recfsChattelReligionist.js
@@ -8,7 +8,6 @@ App.Events.recFSChattelReligionist = class recFSChattelReligionist extends App.E
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {minAge: 16, maxAge: 42, disableDisability: 1});
 		slave.origin = "$He offered $himself for enslavement out of religious conviction.";
 		generateSalonModifications(slave);
diff --git a/src/events/recFS/recfsChattelReligionistTwo.js b/src/events/recFS/recfsChattelReligionistTwo.js
index 887e75df2ed..4fa6e12f32d 100644
--- a/src/events/recFS/recfsChattelReligionistTwo.js
+++ b/src/events/recFS/recfsChattelReligionistTwo.js
@@ -15,7 +15,6 @@ App.Events.recFSChattelReligionistTwo = class recFSChattelReligionistTwo extends
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {maxAge: 42, disableDisability: 1});
 		slave.origin = "$He was offered to you by a group of Chattel Religionists eager to be rid of $his blasphemous old world beliefs.";
 		setHealth(slave, jsRandom(-10, 10), undefined, undefined, 0, 50);
diff --git a/src/events/recFS/recfsChineseRevivalist.js b/src/events/recFS/recfsChineseRevivalist.js
index 319460a86b3..23283a4697b 100644
--- a/src/events/recFS/recfsChineseRevivalist.js
+++ b/src/events/recFS/recfsChineseRevivalist.js
@@ -8,7 +8,6 @@ App.Events.recFSChineseRevivalist = class recFSChineseRevivalist extends App.Eve
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {
 			minAge: 26, maxAge: 42, disableDisability: 1, ageOverridesPedoMode: 1
 		});
diff --git a/src/events/recFS/recfsDegradationist.js b/src/events/recFS/recfsDegradationist.js
index bb17dfd4895..b25b844a9fd 100644
--- a/src/events/recFS/recfsDegradationist.js
+++ b/src/events/recFS/recfsDegradationist.js
@@ -15,7 +15,6 @@ App.Events.recFSDegradationist = class recFSDegradationist extends App.Events.Ba
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave("XX", {minAge: 11, maxAge: 42, disableDisability: 1});
 		slave.origin = "$He was sold to you by an anonymous person who wanted $him to suffer.";
 		generateSalonModifications(slave);
diff --git a/src/events/recFS/recfsDegradationistTwo.js b/src/events/recFS/recfsDegradationistTwo.js
index 2cf44e31110..cb8411873fe 100644
--- a/src/events/recFS/recfsDegradationistTwo.js
+++ b/src/events/recFS/recfsDegradationistTwo.js
@@ -8,7 +8,6 @@ App.Events.recFSDegradationistTwo = class recFSDegradationistTwo extends App.Eve
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave("XX", {
 			minAge: 32, maxAge: 42, ageOverridesPedoMode: 1, disableDisability: 1
 		});
diff --git a/src/events/recFS/recfsEdoRevivalist.js b/src/events/recFS/recfsEdoRevivalist.js
index e88e08ebaf9..5b4f9b79a6c 100644
--- a/src/events/recFS/recfsEdoRevivalist.js
+++ b/src/events/recFS/recfsEdoRevivalist.js
@@ -15,7 +15,6 @@ App.Events.recFSEdoRevivalist = class recFSEdoRevivalist extends App.Events.Base
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {maxAge: 24, disableDisability: 1, race: "nonslave"});
 		slave.origin = "$He offered $himself to you for enslavement because $he had a disgustingly naïve view of medieval Japanese culture.";
 		slave.devotion = random(-15, -5);
diff --git a/src/events/recFS/recfsFSEgyptianRevivalistAcquisition.js b/src/events/recFS/recfsFSEgyptianRevivalistAcquisition.js
index fe68dc3f41f..217c2aacab4 100644
--- a/src/events/recFS/recfsFSEgyptianRevivalistAcquisition.js
+++ b/src/events/recFS/recfsFSEgyptianRevivalistAcquisition.js
@@ -8,9 +8,6 @@ App.Events.recFSEgyptianRevivalistAcquisition = class recFSEgyptianRevivalistAcq
 
 	execute(node) {
 		/* Written and coded by Boney M */
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
-		V.returnTo = "RIE Eligibility Check";
 		V.encyclopedia = "Enslaving People";
 		V.market = Object.assign(App.Markets.GlobalVariable(), {introType: "egyptian", newSlavesDone: 0, newSlaveIndex: 0});
 
@@ -84,6 +81,7 @@ App.Events.recFSEgyptianRevivalistAcquisition = class recFSEgyptianRevivalistAcq
 		function enslave() {
 			V.market.newSlaves = newSlaves;
 			V.market.newSlaves.forEach((s) => cashX(forceNeg(contractCost/V.market.newSlaves.length), "slaveTransfer", s));
+			V.returnTo = V.nextLink;
 			return App.Markets.bulkSlaveIntro();
 		}
 	}
diff --git a/src/events/recFS/recfsGenderFundamentalist.js b/src/events/recFS/recfsGenderFundamentalist.js
index d476b5acf18..3dbb597ad31 100644
--- a/src/events/recFS/recfsGenderFundamentalist.js
+++ b/src/events/recFS/recfsGenderFundamentalist.js
@@ -15,7 +15,6 @@ App.Events.recFSGenderFundamentalist = class recFSGenderFundamentalist extends A
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave("XX", {
 			minAge: Math.min(16, V.fertilityAge), maxAge: 19, ageOverridesPedoMode: 1, disableDisability: 1
 		});
diff --git a/src/events/recFS/recfsGenderFundamentalistTwo.js b/src/events/recFS/recfsGenderFundamentalistTwo.js
index 370fad3fa21..c5158f08b25 100644
--- a/src/events/recFS/recfsGenderFundamentalistTwo.js
+++ b/src/events/recFS/recfsGenderFundamentalistTwo.js
@@ -8,7 +8,6 @@ App.Events.recFSGenderFundamentalistTwo = class recFSGenderFundamentalistTwo ext
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave("XX", {
 			minAge: 32, maxAge: 43, ageOverridesPedoMode: 1, disableDisability: 1
 		});
diff --git a/src/events/recFS/recfsGenderRadicalist.js b/src/events/recFS/recfsGenderRadicalist.js
index 8ab90602ed0..e791c9581be 100644
--- a/src/events/recFS/recfsGenderRadicalist.js
+++ b/src/events/recFS/recfsGenderRadicalist.js
@@ -15,7 +15,6 @@ App.Events.recFSGenderRadicalist = class recFSGenderRadicalist extends App.Event
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave("XY", {disableDisability: 1});
 		generateSalonModifications(slave);
 		slave.origin = "$He offered $himself for voluntary enslavement to escape life in an area that disapproved of $his sexual tendencies.";
diff --git a/src/events/recFS/recfsGenderRadicalistTwo.js b/src/events/recFS/recfsGenderRadicalistTwo.js
index bf013ef2539..56342d980c6 100644
--- a/src/events/recFS/recfsGenderRadicalistTwo.js
+++ b/src/events/recFS/recfsGenderRadicalistTwo.js
@@ -8,7 +8,6 @@ App.Events.recFSGenderRadicalistTwo = class recFSGenderRadicalistTwo extends App
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave("XY", {
 			minAge: 32, maxAge: 42, ageOverridesPedoMode: 1, disableDisability: 1
 		});
diff --git a/src/events/recFS/recfsHedonisticDecadence.js b/src/events/recFS/recfsHedonisticDecadence.js
index fbe30be91b8..6420a6a5754 100644
--- a/src/events/recFS/recfsHedonisticDecadence.js
+++ b/src/events/recFS/recfsHedonisticDecadence.js
@@ -15,7 +15,6 @@ App.Events.recFSHedonisticDecadence = class recFSHedonisticDecadence extends App
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {maxAge: 24, disableDisability: 1, race: "nonslave"});
 		slave.origin = "$He sold $himself to you to escape those who condemned $his lifestyle.";
 		generateSalonModifications(slave);
diff --git a/src/events/recFS/recfsHedonisticDecadenceTwo.js b/src/events/recFS/recfsHedonisticDecadenceTwo.js
index 85e1fb398eb..5ee26698b84 100644
--- a/src/events/recFS/recfsHedonisticDecadenceTwo.js
+++ b/src/events/recFS/recfsHedonisticDecadenceTwo.js
@@ -8,7 +8,6 @@ App.Events.recFSHedonisticDecadenceTwo = class recFSHedonisticDecadenceTwo exten
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {maxAge: 24, disableDisability: 1});
 		slave.origin = "$He offered $himself for enslavement in hope of being less dull.";
 		setHealth(slave, jsRandom(0, 10), undefined, undefined, 0, 0);
diff --git a/src/events/recFS/recfsIntellectualDependency.js b/src/events/recFS/recfsIntellectualDependency.js
index d7e2d7e13e1..953589cf99c 100644
--- a/src/events/recFS/recfsIntellectualDependency.js
+++ b/src/events/recFS/recfsIntellectualDependency.js
@@ -15,7 +15,6 @@ App.Events.recFSIntellectualDependency = class recFSIntellectualDependency exten
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {minAge: V.minimumSlaveAge, maxAge: 20, disableDisability: 1});
 		slave.career = "a shut-in";
 		slave.origin = "$He was sold to you by $his exhausted mother, unable to continue dealing with $his mental handicap.";
diff --git a/src/events/recFS/recfsIntellectualDependencyTwo.js b/src/events/recFS/recfsIntellectualDependencyTwo.js
index 96bc82f33e8..8026f97b222 100644
--- a/src/events/recFS/recfsIntellectualDependencyTwo.js
+++ b/src/events/recFS/recfsIntellectualDependencyTwo.js
@@ -8,7 +8,6 @@ App.Events.recFSIntellectualDependencyTwo = class recFSIntellectualDependencyTwo
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {
 			minAge: 16, maxAge: 20, disableDisability: 1, race: "nonslave"
 		});
diff --git a/src/events/recFS/recfsMaturityPreferentialist.js b/src/events/recFS/recfsMaturityPreferentialist.js
index 568f3e5b24a..3e05c00702c 100644
--- a/src/events/recFS/recfsMaturityPreferentialist.js
+++ b/src/events/recFS/recfsMaturityPreferentialist.js
@@ -15,7 +15,6 @@ App.Events.recFSMaturityPreferentialist = class recFSMaturityPreferentialist ext
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {
 			minAge: V.retirementAge-4, maxAge: V.retirementAge-2, ageOverridesPedoMode: 1, disableDisability: 1
 		});
diff --git a/src/events/recFS/recfsMaturityPreferentialistTwo.js b/src/events/recFS/recfsMaturityPreferentialistTwo.js
index ba57af90fb6..86ba094a206 100644
--- a/src/events/recFS/recfsMaturityPreferentialistTwo.js
+++ b/src/events/recFS/recfsMaturityPreferentialistTwo.js
@@ -8,7 +8,6 @@ App.Events.recFSMaturityPreferentialistTwo = class recFSMaturityPreferentialistT
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {
 			minAge: 36, maxAge: 55, ageOverridesPedoMode: 1, disableDisability: 1
 		});
diff --git a/src/events/recFS/recfsNeoImperialist.js b/src/events/recFS/recfsNeoImperialist.js
index 8f449cf59de..cf18c3d35a7 100644
--- a/src/events/recFS/recfsNeoImperialist.js
+++ b/src/events/recFS/recfsNeoImperialist.js
@@ -15,7 +15,6 @@ App.Events.recFSNeoImperialist = class recFSNeoImperialist extends App.Events.Ba
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {minAge: 22, maxAge: 28, disableDisability: 1});
 		slave.origin = "A former old world soldier dishonorably discharged for reasons $he refuses to discuss, $he offered $himself to you after romanticizing your martial, Imperial society.";
 		slave.devotion = random(5, 20);
diff --git a/src/events/recFS/recfsPastoralist.js b/src/events/recFS/recfsPastoralist.js
index 4265f4a63b4..1f4a22fedd4 100644
--- a/src/events/recFS/recfsPastoralist.js
+++ b/src/events/recFS/recfsPastoralist.js
@@ -8,7 +8,6 @@ App.Events.recFSPastoralist = class recFSPastoralist extends App.Events.BaseEven
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const contractCost = 1000;
 		const pram = {disableDisability: 1};
 		if (V.pedo_mode === 1) {
diff --git a/src/events/recFS/recfsPastoralistTwo.js b/src/events/recFS/recfsPastoralistTwo.js
index 73771e6411e..70f314e1750 100644
--- a/src/events/recFS/recfsPastoralistTwo.js
+++ b/src/events/recFS/recfsPastoralistTwo.js
@@ -15,7 +15,6 @@ App.Events.recFSPastoralistTwo = class recFSPastoralistTwo extends App.Events.Ba
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const contractCost = 1000;
 		const slave = GenerateNewSlave("XX", {
 			minAge: 32, maxAge: 42, ageOverridesPedoMode: 1, disableDisability: 1
diff --git a/src/events/recFS/recfsPaternalist.js b/src/events/recFS/recfsPaternalist.js
index 9f92b3f2659..58091312b01 100644
--- a/src/events/recFS/recfsPaternalist.js
+++ b/src/events/recFS/recfsPaternalist.js
@@ -8,7 +8,6 @@ App.Events.recFSPaternalist = class recFSPaternalist extends App.Events.BaseEven
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {maxAge: 42, disableDisability: 1});
 		slave.origin = "$He was voluntarily enslaved after $he decided that your paternalistic arcology was a better place for advancement than the old world.";
 		slave.career = App.Data.Careers.General.educated.random();
diff --git a/src/events/recFS/recfsPaternalistTwo.js b/src/events/recFS/recfsPaternalistTwo.js
index cb5500d5378..6c3b9a122b8 100644
--- a/src/events/recFS/recfsPaternalistTwo.js
+++ b/src/events/recFS/recfsPaternalistTwo.js
@@ -15,7 +15,6 @@ App.Events.recFSPaternalistTwo = class recFSPaternalistTwo extends App.Events.Ba
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {maxAge: 42, disableDisability: 1});
 		slave.origin = "$He was voluntarily enslaved after $he decided that your paternalistic arcology was a better place to live than the old world.";
 		setHealth(slave, jsRandom(40, 60), undefined, undefined, 0, 0);
diff --git a/src/events/recFS/recfsPetiteAdmiration.js b/src/events/recFS/recfsPetiteAdmiration.js
index c835a413d3e..cdf852ec1ac 100644
--- a/src/events/recFS/recfsPetiteAdmiration.js
+++ b/src/events/recFS/recfsPetiteAdmiration.js
@@ -8,7 +8,6 @@ App.Events.recFSPetiteAdmiration = class recFSPetiteAdmiration extends App.Event
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {minAge: 13, maxAge: 22, disableDisability: 1});
 		generateSalonModifications(slave);
 		slave.origin = "$He offered $himself for voluntary enslavement to avoid being singled out by ruthless slavers.";
diff --git a/src/events/recFS/recfsPetiteAdmirationTwo.js b/src/events/recFS/recfsPetiteAdmirationTwo.js
index b7962180ffb..10c47a1508d 100644
--- a/src/events/recFS/recfsPetiteAdmirationTwo.js
+++ b/src/events/recFS/recfsPetiteAdmirationTwo.js
@@ -14,7 +14,6 @@ App.Events.recFSPetiteAdmirationTwo = class recFSPetiteAdmirationTwo extends App
 	}
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave("XX", {
 			minAge: 30, maxAge: 36, ageOverridesPedoMode: 1, disableDisability: 1
 		});
diff --git a/src/events/recFS/recfsPhysicalIdealist.js b/src/events/recFS/recfsPhysicalIdealist.js
index 8e4978ae7c0..1cda35d42ce 100644
--- a/src/events/recFS/recfsPhysicalIdealist.js
+++ b/src/events/recFS/recfsPhysicalIdealist.js
@@ -8,7 +8,6 @@ App.Events.recFSPhysicalIdealist = class recFSPhysicalIdealist extends App.Event
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {maxAge: 42, disableDisability: 1});
 		slave.origin = "$He was voluntarily enslaved after $he decided that your arcology was the best place for $him to get the steroids that $he'd allowed to define $his life.";
 		slave.career = App.Data.Careers.General.uneducated.random();
diff --git a/src/events/recFS/recfsPhysicalIdealistTwo.js b/src/events/recFS/recfsPhysicalIdealistTwo.js
index a48241f65f7..5002fe1e687 100644
--- a/src/events/recFS/recfsPhysicalIdealistTwo.js
+++ b/src/events/recFS/recfsPhysicalIdealistTwo.js
@@ -15,7 +15,6 @@ App.Events.recFSPhysicalIdealistTwo = class recFSPhysicalIdealistTwo extends App
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {maxAge: 42, disableDisability: 1});
 		generateSalonModifications(slave);
 		slave.origin = "$He was voluntarily enslaved after $he decided that your arcology was the best place for $him to get the steroids that $he'd allowed to define $his life.";
diff --git a/src/events/recFS/recfsRepopulationEfforts.js b/src/events/recFS/recfsRepopulationEfforts.js
index 321a7038d4a..2458e32e048 100644
--- a/src/events/recFS/recfsRepopulationEfforts.js
+++ b/src/events/recFS/recfsRepopulationEfforts.js
@@ -8,7 +8,6 @@ App.Events.recFSRepopulationEfforts = class recFSRepopulationEfforts extends App
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const pram = {disableDisability: 1};
 		if (V.pedo_mode === 1) {
 			pram.minAge = V.fertilityAge;
diff --git a/src/events/recFS/recfsRepopulationEffortsTwo.js b/src/events/recFS/recfsRepopulationEffortsTwo.js
index 8e9da3fdac0..e85b0c7280d 100644
--- a/src/events/recFS/recfsRepopulationEffortsTwo.js
+++ b/src/events/recFS/recfsRepopulationEffortsTwo.js
@@ -15,7 +15,6 @@ App.Events.recFSRepopulationEffortsTwo = class recFSRepopulationEffortsTwo exten
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const pram = {disableDisability: 1};
 		if (V.pedo_mode === 1) {
 			pram.minAge = V.fertilityAge;
diff --git a/src/events/recFS/recfsRestart.js b/src/events/recFS/recfsRestart.js
index 443d05f79b9..6da067e5afe 100644
--- a/src/events/recFS/recfsRestart.js
+++ b/src/events/recFS/recfsRestart.js
@@ -8,7 +8,6 @@ App.Events.recFSRestart = class recFSRestart extends App.Events.BaseEvent {
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave("XX", {
 			minAge: 10, maxAge: 18, disableDisability: 1, race: "nonslave"
 		});
diff --git a/src/events/recFS/recfsRestartTwo.js b/src/events/recFS/recfsRestartTwo.js
index b481d6b3678..e1412d73b5e 100644
--- a/src/events/recFS/recfsRestartTwo.js
+++ b/src/events/recFS/recfsRestartTwo.js
@@ -15,7 +15,6 @@ App.Events.recFSRestartTwo = class recFSRestartTwo extends App.Events.BaseEvent
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {maxAge: 42, disableDisability: 1});
 		slave.origin = "$He considered $himself ugly and wished to stay out of your gene pool.";
 		setHealth(slave, jsRandom(0, 60), undefined, undefined, 0, 0);
diff --git a/src/events/recFS/recfsRomanRevivalist.js b/src/events/recFS/recfsRomanRevivalist.js
index 72fae4d35b5..cbd3f53c3cc 100644
--- a/src/events/recFS/recfsRomanRevivalist.js
+++ b/src/events/recFS/recfsRomanRevivalist.js
@@ -8,7 +8,6 @@ App.Events.recFSRomanRevivalist = class recFSRomanRevivalist extends App.Events.
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave("XX", {minAge: 22, maxAge: 28, disableDisability: 1});
 		slave.origin = "$He offered $himself to you for enslavement because $he was swept up in the romanticism of a revival of Rome.";
 		slave.devotion = random(-15, -5);
diff --git a/src/events/recFS/recfsSlaveProfessionalism.js b/src/events/recFS/recfsSlaveProfessionalism.js
index eadb7e231de..fe4909ad05a 100644
--- a/src/events/recFS/recfsSlaveProfessionalism.js
+++ b/src/events/recFS/recfsSlaveProfessionalism.js
@@ -15,7 +15,6 @@ App.Events.recFSSlaveProfessionalism = class recFSSlaveProfessionalism extends A
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave("XX", {minAge: 18, maxAge: 30, disableDisability: 1});
 		slave.career = "a porn star";
 		generateSalonModifications(slave);
diff --git a/src/events/recFS/recfsSlaveProfessionalismTwo.js b/src/events/recFS/recfsSlaveProfessionalismTwo.js
index f3a9d710040..279bf95f125 100644
--- a/src/events/recFS/recfsSlaveProfessionalismTwo.js
+++ b/src/events/recFS/recfsSlaveProfessionalismTwo.js
@@ -8,7 +8,6 @@ App.Events.recFSSlaveProfessionalismTwo = class recFSSlaveProfessionalismTwo ext
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {minAge: 20, maxAge: 36, disableDisability: 1});
 		slave.career = "a servant";
 		slave.origin = "$He offered $himself for voluntary enslavement after being freed by $his deceased master's next of kin.";
diff --git a/src/events/recFS/recfsSlimnessEnthusiast.js b/src/events/recFS/recfsSlimnessEnthusiast.js
index a4876a7c845..64dd26301cd 100644
--- a/src/events/recFS/recfsSlimnessEnthusiast.js
+++ b/src/events/recFS/recfsSlimnessEnthusiast.js
@@ -15,7 +15,6 @@ App.Events.recFSSlimnessEnthusiast = class recFSSlimnessEnthusiast extends App.E
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {
 			minAge: 25, maxAge: V.retirementAge, ageOverridesPedoMode: 1, disableDisability: 1
 		});
diff --git a/src/events/recFS/recfsSlimnessEnthusiastTwo.js b/src/events/recFS/recfsSlimnessEnthusiastTwo.js
index 2b844cb6c32..069960a74a3 100644
--- a/src/events/recFS/recfsSlimnessEnthusiastTwo.js
+++ b/src/events/recFS/recfsSlimnessEnthusiastTwo.js
@@ -8,7 +8,6 @@ App.Events.recFSSlimnessEnthusiastTwo = class recFSSlimnessEnthusiastTwo extends
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {maxAge: 24, disableDisability: 1});
 		generateSalonModifications(slave);
 		slave.origin = "$He offered $himself to you for enslavement to escape having plastic surgery foisted on $him.";
diff --git a/src/events/recFS/recfsStatuesqueGlorification.js b/src/events/recFS/recfsStatuesqueGlorification.js
index dc25454eb50..7a121fd5725 100644
--- a/src/events/recFS/recfsStatuesqueGlorification.js
+++ b/src/events/recFS/recfsStatuesqueGlorification.js
@@ -15,7 +15,6 @@ App.Events.recFSStatuesqueGlorification = class recFSStatuesqueGlorification ext
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {disableDisability: 1});
 		generateSalonModifications(slave);
 		slave.origin = "$He offered $himself for voluntary enslavement to avoid being singled out by ruthless slavers.";
diff --git a/src/events/recFS/recfsStatuesqueGlorificationTwo.js b/src/events/recFS/recfsStatuesqueGlorificationTwo.js
index 7d34bb69079..7ba3ebf7ab0 100644
--- a/src/events/recFS/recfsStatuesqueGlorificationTwo.js
+++ b/src/events/recFS/recfsStatuesqueGlorificationTwo.js
@@ -8,7 +8,6 @@ App.Events.recFSStatuesqueGlorificationTwo = class recFSStatuesqueGlorificationT
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {disableDisability: 1});
 		slave.origin = "$He offered $himself for voluntary enslavement knowing $he would only fit in with your help.";
 		slave.height = 165;
diff --git a/src/events/recFS/recfsSubjugationist.js b/src/events/recFS/recfsSubjugationist.js
index d8527ce0c24..54ffcb916cc 100644
--- a/src/events/recFS/recfsSubjugationist.js
+++ b/src/events/recFS/recfsSubjugationist.js
@@ -15,7 +15,6 @@ App.Events.recFSSubjugationist = class recFSSubjugationist extends App.Events.Ba
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {
 			minAge: 18, maxAge: 42, disableDisability: 1, race: V.arcologies[0].FSSubjugationistRace
 		});
diff --git a/src/events/recFS/recfsSubjugationistTwo.js b/src/events/recFS/recfsSubjugationistTwo.js
index e7d300c1893..ae8570a2ff7 100644
--- a/src/events/recFS/recfsSubjugationistTwo.js
+++ b/src/events/recFS/recfsSubjugationistTwo.js
@@ -8,7 +8,6 @@ App.Events.recFSSubjugationistTwo = class recFSSubjugationistTwo extends App.Eve
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {maxAge: 42, disableDisability: 1, race: V.arcologies[0].FSSubjugationistRace});
 		generateSalonModifications(slave);
 		slave.origin = "$He came to your arcology to be enslaved out of a sense of self-loathing for $his kind.";
diff --git a/src/events/recFS/recfsSupremacist.js b/src/events/recFS/recfsSupremacist.js
index e916cd251fe..00bb31fd466 100644
--- a/src/events/recFS/recfsSupremacist.js
+++ b/src/events/recFS/recfsSupremacist.js
@@ -15,7 +15,6 @@ App.Events.recFSSupremacist = class recFSSupremacist extends App.Events.BaseEven
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const pram = {disableDisability: 1};
 		if (V.arcologies[0].FSSubjugationistRace !== 0) {
 			pram.race = V.arcologies[0].FSSubjugationistRace;
diff --git a/src/events/recFS/recfsSupremacistTwo.js b/src/events/recFS/recfsSupremacistTwo.js
index ea0adeafa6a..b2c2beff0bb 100644
--- a/src/events/recFS/recfsSupremacistTwo.js
+++ b/src/events/recFS/recfsSupremacistTwo.js
@@ -8,7 +8,6 @@ App.Events.recFSSupremacistTwo = class recFSSupremacistTwo extends App.Events.Ba
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const pram = {disableDisability: 1};
 		if (V.arcologies[0].FSSubjugationistRace !== 0) {
 			pram.race = V.arcologies[0].FSSubjugationistRace;
diff --git a/src/events/recFS/recfsTransformationFetishist.js b/src/events/recFS/recfsTransformationFetishist.js
index 31304e7fcdf..6c071aea16c 100644
--- a/src/events/recFS/recfsTransformationFetishist.js
+++ b/src/events/recFS/recfsTransformationFetishist.js
@@ -15,7 +15,6 @@ App.Events.recFSTransformationFetishist = class recFSTransformationFetishist ext
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {maxAge: 42, disableDisability: 1, race: "nonslave"});
 		generateSalonModifications(slave);
 		slave.origin = "You received $him from a surgeon who botched an implant operation on $him and needed to get $him out of sight.";
diff --git a/src/events/recFS/recfsTransformationFetishistTwo.js b/src/events/recFS/recfsTransformationFetishistTwo.js
index 327dadfe536..592508a0354 100644
--- a/src/events/recFS/recfsTransformationFetishistTwo.js
+++ b/src/events/recFS/recfsTransformationFetishistTwo.js
@@ -8,7 +8,6 @@ App.Events.recFSTransformationFetishistTwo = class recFSTransformationFetishistT
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {
 			minAge: 32, maxAge: 42, ageOverridesPedoMode: 1, disableDisability: 1
 		});
diff --git a/src/events/recFS/recfsYouthPreferentialist.js b/src/events/recFS/recfsYouthPreferentialist.js
index 4d026b9c378..7b22a5752ff 100644
--- a/src/events/recFS/recfsYouthPreferentialist.js
+++ b/src/events/recFS/recfsYouthPreferentialist.js
@@ -15,7 +15,6 @@ App.Events.recFSYouthPreferentialist = class recFSYouthPreferentialist extends A
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {maxAge: 18, disableDisability: 1});
 		generateSalonModifications(slave);
 		slave.origin = "$He came to you for enslavement out of desperation, terrified that $he was about to be enslaved into a worse situation by $his abusive family.";
@@ -23,7 +22,6 @@ App.Events.recFSYouthPreferentialist = class recFSYouthPreferentialist extends A
 		slave.devotion = random(10, 15);
 		slave.trust = random(-55, -75);
 		/*
-		slave.actualAge = 18;
 		slave.anus = random(2,3);
 		slave.weight = random(-80,-20);
 		slave.boobs -= 50*random(1,2);
diff --git a/src/events/recFS/recfsYouthPreferentialistTwo.js b/src/events/recFS/recfsYouthPreferentialistTwo.js
index d3ba0807b37..1a5e3518bb0 100644
--- a/src/events/recFS/recfsYouthPreferentialistTwo.js
+++ b/src/events/recFS/recfsYouthPreferentialistTwo.js
@@ -8,7 +8,6 @@ App.Events.recFSYouthPreferentialistTwo = class recFSYouthPreferentialistTwo ext
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "RIE Eligibility Check";
 		const slave = GenerateNewSlave(null, {
 			minAge: 18, maxAge: 18, ageOverridesPedoMode: 1, disableDisability: 1
 		});
diff --git a/src/events/scheduled/JobFulfillmentCenterDelivery.js b/src/events/scheduled/JobFulfillmentCenterDelivery.js
index 9d0dde386df..14098fa2340 100644
--- a/src/events/scheduled/JobFulfillmentCenterDelivery.js
+++ b/src/events/scheduled/JobFulfillmentCenterDelivery.js
@@ -8,8 +8,6 @@ App.Events.JobFulfillmentCenterDelivery = class JobFulfillmentCenterDelivery ext
 
 	execute(node) {
 		V.JFC.order = 0;
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		V.encyclopedia = "Enslaving People";
 		const slave = generateLeadershipSlave(V.JFC.role, 'Job Fulfillment Center');
 		const {
diff --git a/src/events/scheduled/assholeKnight.js b/src/events/scheduled/assholeKnight.js
index 3ed931f051a..f601f17b940 100644
--- a/src/events/scheduled/assholeKnight.js
+++ b/src/events/scheduled/assholeKnight.js
@@ -11,8 +11,6 @@ App.Events.SEAssholeKnight = class SEAssholeKnight extends App.Events.BaseEvent
 		V.assholeKnight = 1;
 		V.imperialEventWeek = App.Events.effectiveWeek();
 
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		App.Events.addParagraph(node, [`The group of citizens you hand-picked as your Knights have quickly proven themselves a reliable staple of the Arcology. Being visibly a league above the common citizen with their heavy Imperial Plate decorated with glimmering pendants and marks of their individual, flowery coats of arms, their mere presence is enough to make most common criminals cower and keep merchants selling their wares at fair prices. The tenets of neo-Imperial hierarchy and their own social prestige have already gone to their heads, and many Knights are now recognized immediately by the common citizens as heroic, uncowed citizen-soldiers.`]);
 
 		App.Events.addParagraph(node, [`Despite the noble reputations of many of your Knights, their image as defenders of the downtrodden and honest protectors of the Arcology is not universal. Although you Knighted every last one of them yourself, it seems you might have made a misjudgment on the character of one of your new servants; a stream of minor offenses from one Knight in particular has been building up in your inbox for quite some time, and reviewing the whole dossier now paints a portrait of abuses and misconduct.`]);
diff --git a/src/events/scheduled/newBaron.js b/src/events/scheduled/newBaron.js
index 3f057eb1e4a..5e1cd120b15 100644
--- a/src/events/scheduled/newBaron.js
+++ b/src/events/scheduled/newBaron.js
@@ -13,8 +13,6 @@ App.Events.SENewBaron = class SENewBaron extends App.Events.BaseEvent {
 		V.newBaron = 1;
 		V.imperialEventWeek = App.Events.effectiveWeek();
 
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		App.Events.addParagraph(node, [`${V.arcologies[0].name} is prospering. New citizens flood to your gates, filling out the marketplaces and houses with new goods, slaves, and desires. Although every new citizen and visitor on the bustling trams lines more money into your pocket, it also comes with the challenge of new bureaucracy. The original group of Barons you appointed to micromanage each district has been valiantly struggling to manage increasingly larger clusters of people, but it has become quite clear, even if the Barons refuse to admit it, that a new addition to their hallowed ranks is needed to administrate your ever-greater Arcology.`]);
 
 		App.Events.addParagraph(node, [`The appointment of a new Baron is not something to be taken lightly; it is undoubtedly the most desired title in your arcology, and a veritable horde of citizens and millionaires hound your inbox and parties with hints and implications, subtly attempting to display their qualifications, because the Barons posses something even the wealthiest trillionaire in the Free Cities does not - security. The golden band of office of an Imperial Baron brings with it a penthouse, a sense of nobility, and a guaranteed sector of people to rule; so long as the Arcology continues to exist, the Barons will rule in your name, free from worries about petty market fluctuations and slave prices. Short of your personal intervention or the total collapse of the Arcology, nothing can unseat a Baron once they're appointed.`]);
diff --git a/src/events/scheduled/pitFight.js b/src/events/scheduled/pitFight.js
index 52565349e6c..018827d10a1 100644
--- a/src/events/scheduled/pitFight.js
+++ b/src/events/scheduled/pitFight.js
@@ -59,10 +59,6 @@ App.Events.SEPitFight = class SEPitFight extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
-		V.returnTo = "Scheduled Event";
-
 		V.pit.fought = true;
 
 		node.appendChild(V.pit.lethal
diff --git a/src/events/scheduled/poorKnight.js b/src/events/scheduled/poorKnight.js
index 46af6232e8a..8733e1141e9 100644
--- a/src/events/scheduled/poorKnight.js
+++ b/src/events/scheduled/poorKnight.js
@@ -13,9 +13,6 @@ App.Events.SEPoorKnight = class SEPoorKnight extends App.Events.BaseEvent {
 		V.poorKnight = 1;
 		V.imperialEventWeek = App.Events.effectiveWeek();
 
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
-
 		App.Events.addParagraph(node, [`Word reaches your ears through the idle gossip of your well-to-do Barons of a particular citizen whose name has been on everyone's lips the last few days. During the visit of a wealthy trader from a neighboring arcology, the merchant, supposedly at the prompting of one particularly pompous Knight of yours who referred to the peasantry as "little more than mindless toys", had his guards beat some of your lower-class citizens for amusement, molesting a young girl and treating them generally as slaves.`]);
 
 		App.Events.addParagraph(node, [`The cruel rambunctiousness of this trader and your own Knights continued for a few hours, with nearby guards both pretending not to notice and not reporting their activities to you, until a factory-working peasant by the name of Valentin approached them in the marketplace and demanded they stop. When the merchant's guards attempted to apprehend him, although you aren't clear on the exact details, it seems he managed to somehow strike down all five, despite being both unarmed and unarmored. The present Knight promptly challenged him to fight, out-of-armor and one-on-one, and was then knocked flat by the peasant in front of the watching marketplace as well.`]);
diff --git a/src/events/scheduled/seCoursing.js b/src/events/scheduled/seCoursing.js
index 84a944970f0..2bc20683fec 100644
--- a/src/events/scheduled/seCoursing.js
+++ b/src/events/scheduled/seCoursing.js
@@ -14,8 +14,6 @@ App.Events.SECoursing = class SECoursing extends App.Events.BaseEvent {
 
 	execute(node) {
 		let r = [];
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		V.coursed = 1;
 		let caught = false;
 		let phallus;
diff --git a/src/events/scheduled/seCustomSlaveDelivery.js b/src/events/scheduled/seCustomSlaveDelivery.js
index dadf3b54ff7..3fc0fa58f97 100644
--- a/src/events/scheduled/seCustomSlaveDelivery.js
+++ b/src/events/scheduled/seCustomSlaveDelivery.js
@@ -11,8 +11,6 @@ App.Events.SEcustomSlaveDelivery = class SEcustomSlaveDelivery extends App.Event
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		V.customSlaveOrdered = 0;
 		V.encyclopedia = "Enslaving People";
 
diff --git a/src/events/scheduled/seFCNNstation.js b/src/events/scheduled/seFCNNstation.js
index a172a4e1701..41c9f465455 100644
--- a/src/events/scheduled/seFCNNstation.js
+++ b/src/events/scheduled/seFCNNstation.js
@@ -11,8 +11,6 @@ App.Events.SEFcnnStation = class SEFcnnStation extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		V.encyclopedia = "FCTV";
 		V.FCNNstation = -1;
 
diff --git a/src/events/scheduled/seFCTVinstall.js b/src/events/scheduled/seFCTVinstall.js
index 02f2001995d..e3986a75f43 100644
--- a/src/events/scheduled/seFCTVinstall.js
+++ b/src/events/scheduled/seFCTVinstall.js
@@ -7,8 +7,6 @@ App.Events.SEFctvInstall = class SEFctvInstall extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		V.encyclopedia = "FCTV";
 		V.FCTV.receiver = 0;
 		App.Events.addParagraph(node, [`You've been sitting in your office into the early afternoon going over bothersome lease documents that need your approval. When you take a break to look out the window, ${V.assistant.name} speaks up. "${properTitle()}, you have received an approval welcome packet from 8HGG Inc. in regards to Free Cities TV. It seems that they've determined that ${V.arcologies[0].name} is now sufficiently developed enough to warrant a FCTV-Citizen connection. All the details and contracts necessary are included in the packet. From there, a receiver will need to be built onto ${V.arcologies[0].name} in order to access FCTV."`]);
diff --git a/src/events/scheduled/seFctvRemote.js b/src/events/scheduled/seFctvRemote.js
index f87d454d221..216464eae1b 100644
--- a/src/events/scheduled/seFctvRemote.js
+++ b/src/events/scheduled/seFctvRemote.js
@@ -14,8 +14,6 @@ App.Events.SEfctvRemote = class SEfctvRemote extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		V.encyclopedia = "FCTV";
 		let r = [];
 
diff --git a/src/events/scheduled/seFctvWatch.js b/src/events/scheduled/seFctvWatch.js
index 5b4a72a5533..4ac7c139101 100644
--- a/src/events/scheduled/seFctvWatch.js
+++ b/src/events/scheduled/seFctvWatch.js
@@ -13,8 +13,6 @@ App.Events.SEfctvWatch = class SEfctvWatch extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		V.encyclopedia = "FCTV";
 		const TVDiv = App.UI.DOM.appendNewElement("div", node, watch());
 		TVDiv.id = "fctv-watch";
diff --git a/src/events/scheduled/seHuskSlaveDelivery.js b/src/events/scheduled/seHuskSlaveDelivery.js
index 1fc8b295e0e..83a15b0eaa4 100644
--- a/src/events/scheduled/seHuskSlaveDelivery.js
+++ b/src/events/scheduled/seHuskSlaveDelivery.js
@@ -7,9 +7,6 @@ App.Events.SEHuskSlaveDelivery = class SEHuskSlaveDelivery extends App.Events.Ba
 
 	execute(node) {
 		V.huskSlaveOrdered = 0;
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
-		V.returnTo = "Scheduled Event";
 		V.encyclopedia = "Enslaving People";
 
 		const pram = {
@@ -77,6 +74,7 @@ App.Events.SEHuskSlaveDelivery = class SEHuskSlaveDelivery extends App.Events.Ba
 
 		function accept() {
 			V.activeSlave = husk;
+			V.returnTo = V.nextLink;
 			Engine.play("Husk Slave Swap Workaround");
 			return ``;
 		}
diff --git a/src/events/scheduled/seIndependenceDay.js b/src/events/scheduled/seIndependenceDay.js
index 0c5ffe6a0ab..601c59133e4 100644
--- a/src/events/scheduled/seIndependenceDay.js
+++ b/src/events/scheduled/seIndependenceDay.js
@@ -8,8 +8,6 @@ App.Events.SEIndependenceDay = class SEIndependenceDay extends App.Events.BaseEv
 
 	execute(node) {
 		let r = [];
-		V.nextLink = "Scheduled Event";
-		V.nextButton = "Continue";
 		V.independenceDay = 0;
 
 		const {
diff --git a/src/events/scheduled/seNicaeaCouncil.js b/src/events/scheduled/seNicaeaCouncil.js
index 30bfbf853a6..e5117d575df 100644
--- a/src/events/scheduled/seNicaeaCouncil.js
+++ b/src/events/scheduled/seNicaeaCouncil.js
@@ -10,9 +10,6 @@ App.Events.SENicaeaCouncil = class SENicaeaCouncil extends App.Events.BaseEvent
 
 	execute(node) {
 		let r = [];
-
-		V.nextLink = "Scheduled Event";
-		V.nextButton = "Continue";
 		let nicaeaRolls = {
 			focus: random(-1, 0),
 			assignment: random(-1, 0),
diff --git a/src/events/scheduled/sePCBirthday.js b/src/events/scheduled/sePCBirthday.js
index 3b89402777c..859be70ffc2 100644
--- a/src/events/scheduled/sePCBirthday.js
+++ b/src/events/scheduled/sePCBirthday.js
@@ -71,9 +71,6 @@ App.Events.pcBirthday = (function(events) {
 			return V.PC.birthWeek === 0;
 		},
 		runEvent: function() {
-			V.nextLink = "Scheduled Event";
-			V.nextButton = "Continue";
-
 			const data = this.createEventData();
 
 			return App.Events.pcBirthday.Desc.renderIntro(data);
diff --git a/src/events/scheduled/sePlayerBirth.js b/src/events/scheduled/sePlayerBirth.js
index 83e22150bfa..8374d411141 100644
--- a/src/events/scheduled/sePlayerBirth.js
+++ b/src/events/scheduled/sePlayerBirth.js
@@ -6,8 +6,6 @@ App.Events.SEPlayerBirth = class SEPlayerBirth extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		/** @type {boolean} */
 		let playerDead;
 		let PCDegree = 0;
diff --git a/src/events/scheduled/seRaiding.js b/src/events/scheduled/seRaiding.js
index 0e769b564dd..814c4540d02 100644
--- a/src/events/scheduled/seRaiding.js
+++ b/src/events/scheduled/seRaiding.js
@@ -11,8 +11,6 @@ App.Events.SERaiding = class SERaiding extends App.Events.BaseEvent {
 	}
 
 	execute(node) {
-		V.nextLink = "Scheduled Event";
-		V.nextButton = "Continue";
 		V.raided = V.week;
 		let r = [];
 		let MercCaptureL = -4;
diff --git a/src/events/scheduled/seRecruiterSuccess.js b/src/events/scheduled/seRecruiterSuccess.js
index 8e2e4654adb..44469990a03 100644
--- a/src/events/scheduled/seRecruiterSuccess.js
+++ b/src/events/scheduled/seRecruiterSuccess.js
@@ -9,8 +9,6 @@ App.Events.SERecruiterSuccess = class SERecruiterSuccess extends App.Events.Base
 	execute(node) {
 		let r = [];
 
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
 		V.encyclopedia = "Enslaving People";
 		V.recruiterProgress = 0;
 		let slave;
diff --git a/src/events/schools/resEndowment.js b/src/events/schools/resEndowment.js
index a61b53db698..d22fceea827 100644
--- a/src/events/schools/resEndowment.js
+++ b/src/events/schools/resEndowment.js
@@ -35,8 +35,6 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent {
 
 	execute(node) {
 		let r = [];
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
 		const missingSchools = [];
 
 		for (const [school, data] of App.Data.misc.schools) {
diff --git a/src/events/schools/resFailure.js b/src/events/schools/resFailure.js
index d105078b44f..159f0fdfa1d 100644
--- a/src/events/schools/resFailure.js
+++ b/src/events/schools/resFailure.js
@@ -12,9 +12,6 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent {
 	execute(node) {
 		let r = [];
 
-		V.nextButton = "Continue";
-		V.nextLink = "Scheduled Event";
-
 		const failedSchool = Array.from(App.Data.misc.schools.keys()).find(s => V[s].schoolPresent && V[s].schoolProsperity <= -10);
 		const SCH = App.Data.misc.schools.get(failedSchool);
 
diff --git a/src/events/schools/resMove.js b/src/events/schools/resMove.js
index a7ca9829e58..92926e1599b 100644
--- a/src/events/schools/resMove.js
+++ b/src/events/schools/resMove.js
@@ -22,9 +22,6 @@ App.Events.RESMove = class RESMove extends App.Events.BaseEvent {
 	execute(node) {
 		let r = [];
 
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
-
 		const schoolArray = [];
 		for (const [school, data] of App.Data.misc.schools) {
 			if (V[school].schoolUpgrade !== 0 && V[school].schoolPresent === 0 && V[school].schoolAnnexed === 0 && data.requirements) {
diff --git a/src/events/schools/resSale.js b/src/events/schools/resSale.js
index 7c03c81164b..32bfdef7b50 100644
--- a/src/events/schools/resSale.js
+++ b/src/events/schools/resSale.js
@@ -27,9 +27,6 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent {
 			}
 		}
 
-		V.nextButton = "Continue";
-		V.nextLink = "RIE Eligibility Check";
-
 		/** @type {FC.SlaveSchoolName} */
 		const school = validSchools.random();
 
diff --git a/src/uncategorized/randomEventRoll.tw b/src/uncategorized/randomEventRoll.tw
deleted file mode 100644
index d214a3a7b75..00000000000
--- a/src/uncategorized/randomEventRoll.tw
+++ /dev/null
@@ -1,12 +0,0 @@
-:: random event roll
-
-<<if $events.length == 0>>
-	<<set $events.push("RE no event")>>
-<</if>>
-
-<<set _goto = $events.random()>>
-<<if _goto.startsWith("JSRE")>>
-	<<run App.Events.setGlobalEventForPassageTransition(_goto)>>
-	<<set _goto = "JS Random Event">>
-<</if>>
-<<goto _goto>>
diff --git a/src/uncategorized/randomEventSelect.tw b/src/uncategorized/randomEventSelect.tw
deleted file mode 100644
index 5765247419e..00000000000
--- a/src/uncategorized/randomEventSelect.tw
+++ /dev/null
@@ -1,38 +0,0 @@
-:: random event select [nobr]
-
-<<set $nextButton = "Refresh", $nextLink = "random event select">>
-
-<<if $events.length == 0>>
-	<<set $events.push("RE no event")>>
-<</if>>
-
-<<if $eventSlave != 0>>
-	$eventSlave.slaveName has been randomly selected for an event this week.
-	<br><br>
-<</if>>
-
-''A random event would have been selected from the following:''
-<<set $RESSeventIndex = 0>>
-<<for $i = 0; $i < $events.length; $i++>>
-<<capture $i>>
-	<br>
-	<<if $events[$i].startsWith("JSRE")>>
-		<<set _linkText = App.Events.printEventPassage($events[$i])>>
-		<<link _linkText "JS Random Event">><<run App.Events.setGlobalEventForPassageTransition($events[$i])>><</link>>
-	<<else>>
-		[[$events[$i]]]
-		<<if $events[$i] == "RESS">>
-			&ndash; $RESSevent[$RESSeventIndex]
-			<<set $RESSeventIndex += 1>>
-		<</if>>
-	<</if>>
-<</capture>>
-<</for>>
-<br><br>
-//RESS is an amalgamated Random Event, Single Slave that combines existing single slave random events//
-<br><br>
-DEBUG:
-<br>
-[[RE no event]] | <<print "[[Go back to previous passage: '" + previous() + "'|previous()][$activeSlave = 0, $eventSlave = 0]] | [[Go all the way back to Scheduled Event|Scheduled Event][$activeSlave = 0, $eventSlave = 0]]">>
-
-<<includeDOM App.Events.renderEventDebugger("JS Random Event")>>
diff --git a/src/uncategorized/randomIndividualEvent.tw b/src/uncategorized/randomIndividualEvent.tw
deleted file mode 100644
index 779c8e869c8..00000000000
--- a/src/uncategorized/randomIndividualEvent.tw
+++ /dev/null
@@ -1,33 +0,0 @@
-:: Random Individual Event [nobr]
-
-<<if $eventSlave === 0>>
-	<<set _eligibleSlaves = getRieEligibleSlaves()>>
-	<<if ($debugMode > 0 && $debugModeEventSelection > 0)>>
-		<<set $nextButton = "Refresh", $nextLink = "Random Individual Event", $returnTo = "Random Individual Event", $encyclopedia = "Random Events">>
-
-		[[Skip week-end events|Next Week]]
-		<br><br>''One of the following eligible slaves would have been selected for an individual random event:''
-		<br>
-		<<for _slave range _eligibleSlaves>>
-			<<capture _slave>>
-			<br>[[SlaveFullName(_slave)|Random Individual Event][$eventSlave = _slave]]
-			<</capture>>
-		<</for>>
-		<br><br>[[Switch to Random Nonindividual Event|Random Nonindividual Event][$activeSlave = 0, $eventSlave = 0]]
-	<<else>>
-		<<set $eventSlave = _eligibleSlaves.random()>>
-		<<goto "Random Individual Event">>
-	<</if>>
-<<else>>
-	/* initialize event lists as arrays [], not objects {} */
-	<<set $events = [], $RESSevent = [], $RESSTRevent = [], $RETSevent = [], $RECIevent = [], $activeSlave = 0>>
-
-	<<run generateRandomEventPool($eventSlave)>>
-	/* EVENT RANDOMIZATION */
-	<<set $events = populateEventArray().concat(App.Events.getIndividualEventsPassageList($eventSlave))>>
-	<<if ($debugMode > 0 && $debugModeEventSelection > 0)>>
-		<<goto "random event select">>
-	<<else>>
-		<<goto "random event roll">>
-	<</if>>
-<</if>> /* CLOSES SLAVE SELECT */
diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw
deleted file mode 100644
index e695af39f74..00000000000
--- a/src/uncategorized/randomNonindividualEvent.tw
+++ /dev/null
@@ -1,47 +0,0 @@
-:: Random Nonindividual Event [nobr]
-
-<<if $eventSlave === 0>>
-	<<set $eventSlave = $slaves.random()>>
-	<<if ($debugMode > 0) && ($debugModeEventSelection > 0)>>
-		<<set $nextButton = "Refresh", $nextLink = "Random Nonindividual Event", $returnTo = "Random Nonindividual Event", $encyclopedia = "Random Events">>
-
-		<<link "Skip week-end events" "Next Week">><</link>>
-		<br><br>''Any one of your slaves would have been selected for a random non-individual event:''
-		<br>
-		<<for _slave range $slaves>>
-			<<capture _slave>>
-			<br>[[SlaveFullName(_slave)|Random Nonindividual Event][$eventSlave = _slave]]
-			<</capture>>
-		<</for>>
-		<br><br>[[Switch to RIE Eligibility Check|RIE Eligibility Check][$activeSlave = 0, $eventSlave = 0]]
-	<<else>>
-		<<goto "Random Nonindividual Event">>
-	<</if>>
-<<else>>
-	/* initialize event lists as arrays [], not objects {} */
-	<<set $events = [], $REFIevent = [], $PESSevent = [], $PETSevent = [], $activeSlave = 0>>
-
-	/* EVENT RANDOMIZATION */
-	<<for $i = 0; $i < $PESSevent.length; $i++>>
-		<<set $events.push("PESS")>>
-	<</for>>
-	<<for $i = 0; $i < $PETSevent.length; $i++>>
-		<<set $events.push("PETS")>>
-	<</for>>
-	<<for $i = 0; $i < $REFIevent.length; $i++>>
-		<<set $events.push("REFI")>>
-	<</for>>
-	<<set _recruitEvents = App.Events.getNonindividualRecruitmentEventsPassageList()>>
-	<<if $debugMode > 0 && $debugModeEventSelection > 0>>
-		<<set $events = $events.concat(_recruitEvents).concat(App.Events.getNonindividualEventsPassageList())>>
-		<<goto "random event select">>
-	<<else>>
-		<<set _maxRecruitNumber = Math.min(10, Math.floor($events.length/4) + 1)>>
-		<<if _maxRecruitNumber < _recruitEvents.length>>
-			<<set _recruitEvents.shuffle()>>
-			<<set _recruitEvents.length = _maxRecruitNumber>>
-		<</if>>
-		<<set $events = $events.concat(_recruitEvents).concat(App.Events.getNonindividualEventsPassageList())>>
-		<<goto "random event roll">>
-	<</if>>
-<</if>> /* CLOSES SLAVE SELECT */
diff --git a/src/uncategorized/reNoEvent.tw b/src/uncategorized/reNoEvent.tw
deleted file mode 100644
index 1a2a55b6671..00000000000
--- a/src/uncategorized/reNoEvent.tw
+++ /dev/null
@@ -1,23 +0,0 @@
-:: RE no event [nobr]
-
-<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Next Week">>
-
-<<set $activeSlave = $eventSlave>>
-<<run App.Utils.setLocalPronouns($activeSlave)>>
-
-<<set $activeSlave.devotion += 3>>
-<<set $activeSlave.trust += 3>>
-
-/* 000-250-006 */
-<<if $seeImages == 1>>
-<<if $imageChoice == 1>>
-	<div class="imageRef lrgVector"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 3 0>></div>
-<<else>>
-	<div class="imageRef lrgRender"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 3 0>></div>
-<</if>>
-<</if>>
-/* 000-250-006 */
-
-This is a placeholder event.
-<br><br>
-<<= App.UI.slaveDescriptionDialog($activeSlave)>> does not currently qualify for any events, so $he has been given a generic @@.hotpink;devotion@@ and @@.mediumaquamarine;trust@@ boost. /*If you see this event repeatedly for $him, please submit a report so the author can write $him some events.*/
diff --git a/src/uncategorized/rieEligibilityCheck.tw b/src/uncategorized/rieEligibilityCheck.tw
deleted file mode 100644
index 3df87cbe779..00000000000
--- a/src/uncategorized/rieEligibilityCheck.tw
+++ /dev/null
@@ -1,10 +0,0 @@
-:: RIE Eligibility Check
-
-<<silently>>
-<<set $eventSlave = 0>>
-<<if getRieEligibleSlaves().length === 0>>
-	<<goto "Next Week">>
-<<else>>
-	<<goto "Random Individual Event">>
-<</if>>
-<</silently>>
-- 
GitLab


From a44ccc9dd5d7b29901b0869f4120fc4d27789d87 Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Fri, 3 Sep 2021 20:18:33 -0700
Subject: [PATCH 2/3] nextButton/nextLink shouldn't be set by events anymore

---
 devNotes/jsEventCreationGuide.md | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/devNotes/jsEventCreationGuide.md b/devNotes/jsEventCreationGuide.md
index 3039b905f9f..ab0c7567172 100644
--- a/devNotes/jsEventCreationGuide.md
+++ b/devNotes/jsEventCreationGuide.md
@@ -58,9 +58,6 @@ App.Events.MyEvent = class MyEvent extends App.Events.BaseEvent {
 			HeU, heU, hisU, himU, himselfU
 		} = getNonlocalPronouns(V.seeDicks).appendSuffix('U');
 
-		// V.nextButton is shown to the user on the side bar, e.g. V.nextButton = "Continue";
-		// V.nextLink is the next passge that will be executed, e.g. V.nextLink = "Economics";
-
 		// show slave Art
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
-- 
GitLab


From 8a60c0ed453cf97b2ea1925e35f7872f65ab9abc Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Fri, 3 Sep 2021 20:29:58 -0700
Subject: [PATCH 3/3] Pre-select an event slave for Random Individual Event
 when using debug event selection.

---
 src/events/randomEvent.js | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js
index f12ab883dcc..252db36e07e 100644
--- a/src/events/randomEvent.js
+++ b/src/events/randomEvent.js
@@ -445,11 +445,14 @@ App.Events.playRandomIndividualEvent = function() {
 			App.UI.DOM.appendNewElement("h2", d, "Random Individual Events");
 			const slaveDiv = App.UI.DOM.appendNewElement("div", d, "Show events for this slave: ");
 			const slaveDropdown = App.UI.DOM.appendNewElement("select", slaveDiv);
+			const startingSlave = eligibleSlaves.random();
 			for (const s of eligibleSlaves) {
 				const choice = App.UI.DOM.appendNewElement("option", slaveDropdown, SlaveFullName(s));
 				choice.value = s.ID.toString();
+				if (s.ID === startingSlave.ID) {
+					choice.selected = true;
+				}
 			}
-			slaveDropdown.selectedIndex = -1;
 			slaveDropdown.onchange = () => {
 				const O = slaveDropdown.options[slaveDropdown.selectedIndex];
 				const slaveID = parseInt(O.value);
@@ -468,6 +471,7 @@ App.Events.playRandomIndividualEvent = function() {
 					App.UI.DOM.appendNewElement("div", linkList, App.UI.DOM.passageLink(event.eventName, passage(), () => { V.event = event; }));
 				}
 			};
+			writeEventList(startingSlave);
 
 			App.UI.DOM.appendNewElement("div", d, App.UI.DOM.passageLink("Back to Random Nonindividual Event", "Random Nonindividual Event"));
 			App.UI.DOM.appendNewElement("div", d, App.UI.DOM.passageLink("Skip week-end events", "Next Week"));
-- 
GitLab