# femcyc if $ARGS[0] = '': !{Hourly reduction in semen potency} !{First it sets the array index to the first index, then it checks to be sure the array tracking the age is less than 144 hours. If it is 144 hours old, it kills that index, which should shift the index up. If it is less than 200 hours old, it sets a current potency drop. The drop is 2x or 3x regularly, but during ovulation it is only 1x, to represent the better environment from fertile cervical mucus.} if rcntorgzm = 1: if rcntorgzmtmp = 1: rcntorgzm = 0 & rcntorgzmtmp = 0 if rcntorgzmtmp = 0: rcntorgzmtmp = 1 end ctemp = 0 ctemp[1] = 0 ctemp[2] = 0 cumarr_idx = 0 :cumarrloop if cumarr_idx < arrsize('$cumarrnam'): if cumarrcpt[cumarr_idx] > 0 and cumarrage[cumarr_idx] < 64: cumpdrop = (cumarrcpt[cumarr_idx] / 100) * (cumarrage[cumarr_idx] / 5) if cumpdrop < 100: cumpdrop = 100 if cycle ! 2: cumpdrop += cumpdrop * rand(0, 2) cumarrcpt[cumarr_idx] -= cumpdrop cumarrage[cumarr_idx] += 1 else KILLVAR 'cumarrcpt',cumarr_idx KILLVAR 'cumarrppt',cumarr_idx KILLVAR '$cumarrnam',cumarr_idx KILLVAR 'cumarrage',cumarr_idx KILLVAR 'cumarrdel',cumarr_idx KILLVAR 'cumarrkno',cumarr_idx KILLVAR 'cumarrcon',cumarrte_idx end cumarr_idx += 1 jump 'cumarrloop' end !!Succubus absorption of sperm in womb if succubusflag = 1: if arrsize('cumarrppt') > 0: succycletmp = 0 :sucvagabs if cumarrdel[succycletmp] = 0: if cumarrcpt[succycletmp] > 10000: sexnutrition += 30 * succublvl succubxp += 3 elseif cumarrcpt[succycletmp] < 3000 and cumarrcpt[succycletmp] > 1000: sexnutrition += 5 * succublvl succubxp += 2 elseif cumarrcpt[succycletmp] =< 1000: sexnutrition += succublvl else sexnutrition += 25 * succublvl succubxp += 3 end KILLVAR 'cumarrcpt', succycletmp KILLVAR 'cumarrppt', succycletmp KILLVAR '$cumarrnam', succycletmp KILLVAR 'cumarrage', succycletmp KILLVAR 'cumarrdel', succycletmp KILLVAR 'cumarrkno', succycletmp KILLVAR 'cumarrcon', succycletmp sucabscum = 1 end succycletmp += 1 if succycletmp < arrsize('cumarrppt'): jump 'sucvagabs' end killvar 'succycletmp' end cumsumvag = 0 cumsumass = 0 cumsumbod = 0 if arrsize('sparrvol') > 0: sparr_idx = 0 :cumspaloop if sparr_idx < arrsize('$sparrnam'): !!Succubus absorption for internal locations other than womb if succubusflag = 1: if sparrloc[sparr_idx] = 3 or sparrloc[sparr_idx] = 12: sexnutrition += 25*succublvl succubxp += 3 sucabscum = 1 if sparrvol[sparr_idx] > 0: sparrvol[sparr_idx] = 0 end end !!{if sparrloc[sparr_idx] = 0 or sparrloc[sparr_idx] = 3 or sparrloc[sparr_idx] = 12: sexnutrition += 30*succublvl sparrvol[sparr_idx] -= 30*succublvl if sparrvol[sparr_idx] < 0 : sexnutrition += sparrvol[sparr_idx] & sparrvol[sparr_idx] = 0 end} if sparrvol[sparr_idx] > 0 and (sparrage[sparr_idx] < 5 or sparrloc[sparr_idx] = 17 or sparrloc[sparr_idx] = 2 or sparrloc[sparr_idx] = 5 or sparrloc[sparr_idx] = 6 or sparrloc[sparr_idx] = 7): !{Cum dries up and flakes off or flows out pretty fast, but stains on clothes have to be washed off and condoms must be removed} cumarr_idx = arrsize('$cumarrnam') if sparrloc[sparr_idx] = 17: !{Cum flows out of the condom into the vagina slowly until PC removes it.} cumarr_idx = func('cumarrput', $sparrnam[sparr_idx], 5, sparrppt[sparr_idx] / 2, (sparrppt[sparr_idx] / (sparrage[sparr_idx] + 1)), sparridt[sparr_idx], sparrage[sparr_idx]) elseif sparrloc[sparr_idx] = 0: !{Cervix quickly drinks up deposits left unremoved} cumarr_idx = func('cumarrput', $sparrnam[sparr_idx], 2, sparrppt[sparr_idx], (sparrppt[sparr_idx] / (sparrage[sparr_idx] + 1)) * 2, sparridt[sparr_idx], sparrage[sparr_idx]) elseif sparrslc[sparr_idx] > 0 and sparrloc[sparr_idx] = 1: cumarr_idx = func('cumarrput', $sparrnam[sparr_idx], 2, sparrppt[sparr_idx] / 20, sparrppt[sparr_idx]/ ((1000 * sparrage[sparr_idx]) / sparrvol[sparr_idx]), 0, sparrage[sparr_idx]) end if sparrloc[sparr_idx] = 0 or sparrloc[sparr_idx] = 3 or sparrloc[sparr_idx] = 12:sparrvol[sparr_idx] -= sparrage[sparr_idx]/2 if sparrloc[sparr_idx] = 0 and cumsumvag > 60: sparrslc = 1 if sparrloc[sparr_idx] = 3 and cumsumass > 60: sparrslc = 1 if sparrloc[sparr_idx] = 17 and sparrage[sparr_idx] > 48: cumcondslip = 1 health -= 3 'You feel nauseous.' if rand(0,5) < 5: health -= 2 else cumcondslip = 0 end if sparrloc[sparr_idx] ! 0 and sparrloc[sparr_idx] ! 3 and sparrloc[sparr_idx] ! 12 and isprok = 0 and sparrage < 5: sparrslc[sparr_idx] += 1 sparrage[sparr_idx] += 1 sparr_idx += 1 cumsumbod += sparrvol[sparr_idx] if sparrloc[sparr_idx] = 0: cumsumvag += sparrvol[sparr_idx] if sparrloc[sparr_idx] = 3: cumsumass += sparrvol[sparr_idx] else KILLVAR 'spafinloc',sparr_idx KILLVAR 'sparrage',sparr_idx KILLVAR 'sparrloc',sparr_idx KILLVAR '$sparrnam',sparr_idx KILLVAR 'sparrppt',sparr_idx KILLVAR 'sparridt',sparr_idx KILLVAR 'sparrvol',sparr_idx KILLVAR 'sparrslc',sparr_idx end jump 'cumspaloop' end end if lactate > 0: if lactatemv <= 0: lactatemv = 0 if lactatemm < titK*4 and milkgrowday < daystart: lactatemm += 1 lactatemv += 1 bgrowday = daystart elseif milkgrowday < daystart: if rand(0,30) = 0: titK += 1 milkgrowday = daystart lactatemv += 1 end elseif lactatemv < lactatemm: lactatemv += lactatemm/20 elseif lactatemv = lactatemm and milkgrowday < daystart: milkgrowday = daystart lactatemm -= 1 lactatemv -= 1 if rand(0,90) = 0: titK -= 1 elseif lactatemv > lactatemm: lactatemv = lactatemm end end if cycle <= 0: gs 'femcyc', 'cyc0' elseif cycle = 1: gs 'femcyc', 'cyc1' elseif cycle = 2: gs 'femcyc', 'cyc2' elseif cycle = 3: gs 'femcyc', 'cyc3' elseif cycle = 4: gs 'femcyc', 'cyc4' elseif cycle = 5: gs 'femcyc', 'preg' end dynamic $d_cycreport_update end !{Menstruation to Follicular. Verifies that the cycle is in the bloody phase. It then checks to see if you are done bleeding. If you are, it starts the Follicular phase. There is a small chance your follcular phase will be anywhere from a day to 3 days short, done by the random release of a boosted EggRH. Otherwise, it just starts it clean.} if $ARGS[0] = 'cyc0': if mesec <= 0: cycle = 1 mesec = 0 if rand(0,1000) = 1000: EggRH = rand(20,80) else EggRH = 0 end FocH = EggRH else mesec -= 1 end end !{Follicular to Ovulation. It checks to see if you are on the Follicular phase. If you are, it checks to see if you are ready to ovulate. If you arent, it increases your ovulation ticker by 1, then gives a random chance to increase it again. Then it checks to see if you have ovarian problems, and if you do, decreases your ovulation ticker. When all that is done, it checks to see if you have any birth control chemical, and if its above a certain amount, it reduces your ovulation ticker.} if $ARGS[0] = 'cyc1': if FocH <= 150: EggRH +=1 FocH +=1 if rand(0,1) = 1: EggRH += 1 temprand = rand(0,1000) temprand -= sterileov temprand += tempovbonus if temprand <= 0: EggRH -= 1 if pillcon > 7000: EggRH -= 1 else !{If you are ready to ovulate, it creates a chance to double ovulate. That chance is increased by your age. Then it does the same for a triple ovulation. Then it sets the ovulation tag, ovulation hour count, and begins a ticker for the life of the eggs.} Temprand = rand(0,20) Temprand += age/15 Temprand -= pillcon/1000 if temprand > 20: EggRH += 205 Temprand = rand(0,20) Temprand += age/15 if temprand > 20: EggRH += 410 end FocH = 0 Ovulate = 24 + rand(0,20) cycle = 2 ferteggage = 0 end end !!{Fertilization.} if $ARGS[0] = 'cyc2': can_sz = arrsize('$cumarrnam') if Ovulate > 0 and can_sz > 0 and UnfertEgg > 0: KILLVAR 'cumfathwght' KILLVAR '$cumfathnames' KILLVAR 'cumtime' can_idx = 0 cum_total = 0 !!{Compute array of unique fathers known to PC and another two arrays of unique total fathers and their individual sperm totals from all entries in cumarrcpt for that father. Also tally all cum present.} :FatherCumAnalyze if can_idx < can_sz: if cumarrkno[can_idx] = 1: if Enable_Android = 0: wpf_in = arrpos(0, '$wombpotfath', $cumarrnam[can_idx]) else wpf_in = arrpos('$wombpotfath', $cumarrnam[can_idx]) end if wpf_in < 0: wpf_sz = arrsize('$wombpotfath') $wombpotfath[wpf_sz] = $cumarrnam[can_idx] cumtime[wpf_sz] += 1 end end if cumarrkno[can_idx] >= 0:cum_totaltime += 1 if Enable_Android = 0: cfn_in = arrpos(0, '$cumfathnames', $cumarrnam[can_idx]) else cfn_in = arrpos('$cumfathnames', $cumarrnam[can_idx]) end cfw_sz = arrsize('cumfathwght') if cfn_in < 0: cumfathwght[cfw_sz] = cumarrcpt[can_idx] $cumfathnames[cfw_sz] = $cumarrnam[can_idx] else cumfathwght[cfw_in] += cumarrcpt[can_idx] end cum_total += cumarrcpt[can_idx] can_idx += 1 jump 'FatherCumAnalyze' end wpf_sz = arrsize('$wombpotfath') if Enable_Android = 0: if wpf_sz ! 1 and arrpos(0, '$wombpotfath', 'Unknown') < 0: $wombpotfath[wpf_sz] = 'Unknown' else if wpf_sz ! 1 and arrpos('$wombpotfath', 'Unknown') < 0: $wombpotfath[wpf_sz] = 'Unknown' end !!{Create lotto of potential fathers based on each potential fathers sperm as a percentage of the total. The higher percentage of sperm from a given father, the more lotto entries he will have.} KILLVAR '$cumfathlotto' cfw_idx = 0 cfw_sz = arrsize('cumfathwght') :FathLottoLoop if cfw_idx < cfw_sz: cfl_ct = (cumfathwght[cfw_idx] * 100) / cum_total if cfl_ct < 1: cfl_ct = 1 cfl_idx = arrsize('$cumfathlotto') :FathLottoAdd if cfl_ct > 0: $cumfathlotto[cfl_idx] = $cumfathnames[cfw_idx] cfl_idx += 1 cfl_ct -= 1 jump 'FathLottoAdd' end cfw_idx += 1 jump 'FathLottoLoop' end cfl_sz = arrsize('$cumfathlotto') egg_idx = 0 egg_sz = UnfertEgg :FertLoop if egg_idx < egg_sz: !!{fert_thresh is the chance this specific egg is fertilized. Its modified by being on the pill, being sterilized, the brood curse, and so on. If it computes to less than the cum total calculated above, the egg is fertilized by a father randomly drawn from the lotto array.} fert_thresh = rand(1,250000) if pillcon < 0: pillcon = 0 fert_thresh += pillcon if steriletu = 1: fert_thresh += fert_thresh*30 if fert_thresh > 0 and broodcurse > 0: fert_thresh = fert_thresh / 2 if fert_thresh <= cum_total: lotto_idx = rand(0, cfl_sz-1) UnfertEgg -= 1 FertEgg += 1 nextbaby = arrsize('$ChildFath') polkid[nextbaby] = rand(0, 1) $kidname[nextbaby] = 'unborn' kidage[nextbaby] = 0 daykid[nextbaby] = 0 monthkid[nextbaby] = 0 yearkid[nextbaby] = 0 Babyptype[nextbaby] = 0 $ChildFath[nextbaby] = $cumfathlotto[lotto_idx] if arrsize('$wombpotfath') = 1: $ChildThFath[nextbaby] = $wombpotfath[0] else $ChildThFath[nextbaby] = 'Unknown' end hairkid[nextbaby] = rand(0, 3) eyeskid[nextbaby] = rand(0, 3) ChildConType = cumarrcon[nextbaby] end egg_idx += 1 jump 'FertLoop' end killvar 'temp' tempovbonus = 0 end !!{Ovulation to Luteal. It checks to see if you are on the ovulation cycle. If you are, it checks you for your pillcon. If it is high enough, no egg is released. Under high concentrations of pill chemical, ovulation ticks away quicker. Otherwise, it checks to see if your ovulation hormone is high enough, and if it is it gives you an egg and drops a good chunk down on your ovulation hormone. if its still high, it drops another egg. Then it checks your ovulation hours. If its down to 0, it starts the Luteal phase. Otherwise, it adds an hour to the egg age and reduces the ovulation window by an hour.} if pillcon > 26000: if rand(0,400) ! 1: EggRH = 0 ovulate -= 2 end :OviLoop If EggRH > ((UnfertEgg + FertEgg) * 150): UnfertEgg += 1 EggRH -= (200*UnfertEgg) jump 'OviLoop' end If ovulate <= 0: cycle = 3 UnfertEgg = 0 end ferteggage += 1 Ovulate -= 1 end !{Luteal to Menstration or Pregnancy. First it verifies this is the Luteal phase. Then it adds an hour to the age of the eggs. Then if there is a fertized egg, it rolls a random chance. if the egg age is low, it checks for risk of an entopic pregnancy. This is increased with older age and if you have a tubal ligation sterilization.} if $ARGS[0] = 'cyc3': ferteggage += 1 implant_idx = 0 implant_sz = arrsize('Babyptype') :implant_loop if implant_idx < implant_sz: if Babyptype[implant_idx] = 0: imp_thresh = (100 - (age + sterilewb)) if broodcurse ! 0: imp_thresh *= 2 imp_rand = rand(0, 120000) if imp_rand < imp_thresh: implant_day = daystart implant_hour = hour !{Egg implanted} ent_thresh = age + (sterilewb * 5) if broodcurse ! 0: ent_thresh = 0 if rand(0, 10000) < ent_thresh: Babyptype[implant_idx] = 2 else: Babyptype[implant_idx] = 1 end FertEgg -= 1 babyembryo += 1 end end implant_idx += 1 jump 'implant_loop' end !!{Then, it progresses the Luteal phase. It checks to see if you are pregnant. If you are, it ends the cycle and sets preg if your Luteal hormone is at the max as well as cleans out any unimplanted eggs. Otherwise, it just progresses pregnancy chemical and Luteal Hormone. If you arent pregnant, it checks your Luteal hormone. If its at the maximum, it adds 3-5 days of bleeding, clears out your unimplanted eggs, and clears out your Luteal hormone, or ends your cycle if you are past your menopausal age. Otherwise it will just progress the Luteal hormone.} if LutH > 300: rej_idx = 0 rej_sz = arrsize('Babyptype') :lutcycloop if rej_idx < rej_sz: if Babyptype[rej_idx] = 0: KILLVAR 'polkid',tempbabyi KILLVAR '$kidname',tempbabyi KILLVAR 'kidage',tempbabyi KILLVAR 'daykid',tempbabyi KILLVAR 'monthkid',tempbabyi KILLVAR 'yearkid',tempbabyi KILLVAR 'Babyptype',tempbabyi KILLVAR '$ChildFath',tempbabyi KILLVAR '$ChildThFath',tempbabyi KILLVAR 'hairkid',tempbabyi KILLVAR 'eyeskid',tempbabyi KILLVAR 'cumarrcon',tempbabyi end rej_idx += 1 jump 'lutcycloop' end LutH = 0 if preg = 1: cycle = 5 elseif menoage <= age: KILLVAR '$wombpotfath' cycle = 6 else KILLVAR '$wombpotfath' temprand = rand(0,10) if pillcon < 30000 or temprand = 0: cycle = 0 if cyccustom = 1: daylastperiod = daystart temprand = rand(0,10) if temprand = 0: mesec = 120 elseif temprand < 9: mesec = 96 else mesec = 72 end else FocH = 0 EggRH = 0 cycle = 1 mesec = 0 end end else if preg = 1:PregChem += 1 if rand(0,100) < 100: LutH += 1 end end !{Recovery to Follicular. It checks to see if you are in the recovery phase after a pregnancy. If you are, it checks to see if you still have recovery hormone. If you dont, it sets you into the follicular phase with a chance of a boosted Egg releasing hormone. Otherwise it decreases your recovery hormone with a chance to decrease it twice.} if $ARGS[0] = 'cyc4': if RecovH <= 0: cycle = 1 if cyccustom = 1: knowpregloss = 0 knowpregrecover = 0 end if rand(0,1000) = 1000: EggRH = rand(20,80) else EggRH = 0 end FocH = EggRH else RecovH -= 1 if rand(0,10) = 0: RecovH -= 1 end end !{Pregnancy Progression. It checks to see if you are in the pregnancy phase of a cycle. If you are, it progresses your pregnancy chemical. Then it gives a fluxuation of possible due dates. If you cross the due date threshold, you enter labor, marked by preg = 2. Other milestones will also be placed in here, including body deformations. Right now this is mostly an empty placeholder.} if $ARGS[0] = 'preg': PregChem += 1 temprand = rand(-400,800) temprand -= (babyembryo-1)*588 if PregChem > 6573 + temprand and preg ! 2: 'A sharp pain pierces your abdomen, and you feel something flow down your legs. Your water has broken!' $cycreport_txt = 'In labour' arrmodtmp =arrsize('$ChildFath') arrmodtmp -= (babyembryo+1) :babyfinalpreploop if arrmodtmp < arrsize('$ChildFath') and daykid[arrmodtmp] = 0: daykid[arrmodtmp] = 42 $ChildThFath[arrmodtmp] = $wombthfath arrmodtmp += 1 jump 'babyfinalpreploop' end KILLVAR '$wombpotfath' KILLVAR '$wombthfath' preg = 2 if babyembryo > 1: 'Your babies are coming...' else 'Your baby is coming...' end if PregChem < 3885: 'Way too early!' elseif PregChem < 5229: 'Very early!' elseif PregChem < 6069: 'Early.' elseif PregChem > 6959: 'Late.' elseif PregChem > 7245: 'Very Late!' end 'You need to get to a clinic.' end if PregChem > 3887: if lactate <= 0: 'You begin lactating' lactate = 1 lactatemv = 0 lactatemm = 10 else if lactate < 1: lactate = 1 end end if PregChem > 2203: if pregchem > 2853 or kid > 0: if rand(0,7) = 0: dynamic $d_pregmovement else if rand(0,500) = 0: dynamic $d_pregmovement end end end --- femcyc ---------------------------------