mirror of
https://gitgud.io/lutepickle/rjw_menstruation.git
synced 2024-08-14 22:46:52 +00:00
Compare commits
9 commits
0e7e048782
...
141ad4253d
Author | SHA1 | Date | |
---|---|---|---|
|
141ad4253d | ||
|
c56e275a92 | ||
|
297e37a4ef | ||
|
1bc5b45669 | ||
|
842f6ceec1 | ||
|
8752aa1437 | ||
|
f99d833e71 | ||
|
51bc32248a | ||
|
56c59f441d |
14 changed files with 212 additions and 69 deletions
Binary file not shown.
140
1.4/Languages/Russian/Keyed/RJW_Menstruation.xml
Normal file
140
1.4/Languages/Russian/Keyed/RJW_Menstruation.xml
Normal file
|
@ -0,0 +1,140 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LanguageData>
|
||||
<Mod_Title>RJW обновление беремености</Mod_Title>
|
||||
|
||||
<Menstrual_Blood>менструальная кровь</Menstrual_Blood>
|
||||
<Info_noCum>Пусто</Info_noCum>
|
||||
<Stage_Follicular>фолликул</Stage_Follicular>
|
||||
<Stage_Ovulatory>Овуляция</Stage_Ovulatory>
|
||||
<Stage_Luteal>Лютеиновая</Stage_Luteal>
|
||||
<Stage_Bleeding>В период</Stage_Bleeding>
|
||||
<Stage_Pregnant>Беременная</Stage_Pregnant>
|
||||
<Stage_Recover>Восстановление после рождения</Stage_Recover>
|
||||
<Stage_None>Нету</Stage_None>
|
||||
<Stage_Climacteric>Климакс</Stage_Climacteric>
|
||||
<Stage_Menopause>Менопауза</Stage_Menopause>
|
||||
<Stage_Anestrus>Анэструс</Stage_Anestrus>
|
||||
<Stage_Follicular_Desc>Яичники готовятся выпустить яйцеклетку. Овуляция произойдет в конце этой фазы.</Stage_Follicular_Desc>
|
||||
<Stage_Follicular_Induced_Desc>Яичники готовятся выпустить яйцеклетку. Овуляция произойдет, если сперма попадает в матку.</Stage_Follicular_Induced_Desc>
|
||||
<Stage_Ovulatory_Desc>Яичники выпускают яйцеклетку в матку.</Stage_Ovulatory_Desc>
|
||||
<Stage_Luteal_Desc>Матка готова принять оплодотворенную яйцеклетку. Беременность наступит, если кто-то оплодотворит до окончания этапа.</Stage_Luteal_Desc>
|
||||
<Stage_Bleeding_Desc>Матка сбрасывает свою слизистую оболочку вместе с любыми яйцеклетками, которые не смогли имплантироваться.</Stage_Bleeding_Desc>
|
||||
<Stage_Pregnant_Desc>Ребенок растет в утробе матери. Со временем и заботой он станет новым жителем этого мира.</Stage_Pregnant_Desc>
|
||||
<Stage_Recover_Desc>Матка восстанавливается после недавней беременности.</Stage_Recover_Desc>
|
||||
<Stage_None_Desc>Матка не является фертильной и не может забеременеть.</Stage_None_Desc>
|
||||
<Stage_Climacteric_Desc>Яичники близки к истощению, и менструальный цикл стал нерегулярным.</Stage_Climacteric_Desc>
|
||||
<Stage_Menopause_Desc>Яичники истощены, и матка больше не может производить яйцеклетки.</Stage_Menopause_Desc>
|
||||
<Stage_Anestrus_Desc>У матки закончился цикл. Цикл возобновится, как только будут выполнены условия.</Stage_Anestrus_Desc>
|
||||
<Button_HealthTab>Статус</Button_HealthTab>
|
||||
<Button_MilkTooltip>Лактация</Button_MilkTooltip>
|
||||
<Dialog_WombInfo01>Состояние</Dialog_WombInfo01>
|
||||
<Dialog_WombInfo02>Зародыш</Dialog_WombInfo02>
|
||||
<Dialog_WombInfo03>Отец</Dialog_WombInfo03>
|
||||
<Dialog_WombInfo04>Список спермы</Dialog_WombInfo04>
|
||||
<Dialog_WombInfo05>Оплодотворенная</Dialog_WombInfo05>
|
||||
<Dialog_WombInfo06>оплодотворение</Dialog_WombInfo06>
|
||||
<Dialog_WombInfo07>Овулирование</Dialog_WombInfo07>
|
||||
<Dialog_WombInfo08></Dialog_WombInfo08>
|
||||
<Dialog_WombInfo09></Dialog_WombInfo09>
|
||||
<Dialog_DoCleanWomb_Tooltip>Соберите сперму в ведро</Dialog_DoCleanWomb_Tooltip>
|
||||
<Dialog_DontCleanWomb_Tooltip>Хранить сперму в утробе матери</Dialog_DontCleanWomb_Tooltip>
|
||||
<Dialog_FatherUnknown>Неизвестно</Dialog_FatherUnknown>
|
||||
|
||||
|
||||
|
||||
<Option1_Label_1>Включить значок матки</Option1_Label_1>
|
||||
<Option1_Label_2>Кнопка включения вкладки здоровье</Option1_Label_2>
|
||||
<Option2_Label>Включить животный цикл</Option2_Label>
|
||||
<Option2_Desc>Имитировать циклы животных. Не рекомендуется.</Option2_Desc>
|
||||
<Option3_Label>Шанс имплантации</Option3_Label>
|
||||
<Option3_Desc>Базовый шанс имплантации оплодотворенной яйцеклетки Это значение влияет на вероятность оплодотворения.</Option3_Desc>
|
||||
<Option4_Label>Шанс оплодотворения</Option4_Label>
|
||||
<Option4_Desc>Вероятность оплодотворения на мл сперматозоидов в час Это значение влияет на вероятность оплодотворения.</Option4_Desc>
|
||||
<Option5_Label>Коэффициент распада спермы в час</Option5_Label>
|
||||
<Option5_Desc>Количество спермы в матке будет уменьшаться на эту величину каждый час Это значение влияет на вероятность оплодотворения.</Option5_Desc>
|
||||
<Option6_Label>Коэффициент распада фертильности спермы в час</Option6_Label>
|
||||
<Option6_Desc>Сперма будет терять фертильность на это количество каждый час Это значение косвенно влияет на вероятность оплодотворения.</Option6_Desc>
|
||||
<Option7_Label>Ускорение цикла</Option7_Label>
|
||||
<Option7_Desc>Ускорить менструальный цикл Это может привести к ранней менопаузе и бесплодию. Рекомендуется установить значение ниже x12. Временная шкала Rimworld: x6(по умолчанию)</Option7_Desc>
|
||||
<Option8_Label>Debug</Option8_Label>
|
||||
<Option8_Desc>Показывать отладочную информацию. Также переопределяет "Уровень информации о зародыше" для всех.</Option8_Desc>
|
||||
<Option9_Label>Статус матки</Option9_Label>
|
||||
<Option9_Desc>Нарисовать значок матки в окне состояния.</Option9_Desc>
|
||||
<Option10_Label>Состояние влагалища и груди</Option10_Label>
|
||||
<Option10_Desc>Нарисовать значки влагалища, ануса и груди в окне состояния.</Option10_Desc>
|
||||
<Option11_Label>Уровень информации о плоде</Option11_Label>
|
||||
<Option11_Desc_1>Показать всю информацию о плоде.</Option11_Desc_1>
|
||||
<Option11_Desc_2>Показать всю информацию о плоде после обнаруженной беременности.</Option11_Desc_2>
|
||||
<Option11_Desc_3>Показывать только изображение плода после обнаруженной беременности.</Option11_Desc_3>
|
||||
<Option11_Desc_4>Не показывайть никакой информации о плоде.</Option11_Desc_4>
|
||||
<Option12_Label>Включить менопаузу</Option12_Label>
|
||||
<Option12_Desc>Включите эффект менопаузы, который делает пешку бесплодной с течением времени Если у вас есть проблемы с гонками на долгую жизнь, отключите эту опцию.</Option12_Desc>
|
||||
<Option13_Label>Использовать многоплодную беременность</Option13_Label>
|
||||
<Option13_Desc>Использовать многоплодную беременность вместо беременности RJW по умолчанию Отключите эту опцию, если у вас проблемы с оплодотворением Беременность RJW должна быть включена.</Option13_Desc>
|
||||
<Option14_Label>Включить Разнояйцевых близнецов</Option14_Label>
|
||||
<Option14_Desc>Допускать беременность от нескольких яйцеклеток одновременно.</Option14_Desc>
|
||||
<Option15_Label>Включить Монозиготных близнецов</Option15_Label>
|
||||
<Option15_Desc>Дайть возможность одной яйцеклетке привести к появлению нескольких идентичных потомков.</Option15_Desc>
|
||||
<Option16_Label>Шанс монозиготных близнецов</Option16_Label>
|
||||
<Option16_Desc>Вероятность появления идентичных близнецов.</Option16_Desc>
|
||||
<Option17_Label>Макс монозиготных близнецов</Option17_Label>
|
||||
<Option17_Desc>Максимальное количество идентичных братьев и сестер.</Option17_Desc>
|
||||
<Option18_Label>Включить наложение яиц</Option18_Label>
|
||||
<Option18_Desc>Включить наложение яйца на значок матки.</Option18_Desc>
|
||||
<Option19_Label_1>Количество кровотечения</Option19_Label_1>
|
||||
<Option19_Label_2>Предполагаемое общее количество кровотечения</Option19_Label_2>
|
||||
<Option19_Desc>Приблизительное количество кровотечения. Нормальное количество кровотечения у человека составляет около 20 ~ 80 мл за цикл.</Option19_Desc>
|
||||
<Option20_Label_1>Колонист</Option20_Label_1>
|
||||
<Option20_Label_2>Пленник</Option20_Label_2>
|
||||
<Option20_Label_3>Союзная фракция</Option20_Label_3>
|
||||
<Option20_Label_4>Нейтральная</Option20_Label_4>
|
||||
<Option20_Label_5>Вражеская Фракция</Option20_Label_5>
|
||||
<Option21_Label>Помеченые пешки:</Option21_Label>
|
||||
<Option21_Desc>Для этих пешек появятся штуковина и кнопка</Option21_Desc>
|
||||
<Option22_Label>Использовать гибридное расширение</Option22_Label>
|
||||
<Option22_Desc>Переопределяет гибридное определение RJW и RaceSupport. Доминирующее гибридное расширение определяет, чье определение используется первым. Не рекомендуется изменять это.</Option22_Desc>
|
||||
<Option23_Label>Доминирующее гибридное расширение</Option23_Label>
|
||||
<Option23_Label_1>Мать</Option23_Label_1>
|
||||
<Option23_Label_2>Отец</Option23_Label_2>
|
||||
<Option_MaxBreastIncrementFactor_Label>Рост груди во время беременности</Option_MaxBreastIncrementFactor_Label>
|
||||
<Option_MaxBreastIncrementFactor_Desc>Изменить, насколько вырастет грудь беременной пешки во время беременности. Некоторые пешки будут расти больше, чем другие.</Option_MaxBreastIncrementFactor_Desc>
|
||||
<Option_MaxNippleIncrementFactor_Label>Изменение сосков во время беременности</Option_MaxNippleIncrementFactor_Label>
|
||||
<Option_MaxNippleIncrementFactor_Desc>Изменить, насколько сильно изменятся соски беременной пешки в процессе.</Option_MaxNippleIncrementFactor_Desc>
|
||||
<Option_PermanentNippleChange_Label>Постоянное изменение сосков после беременности</Option_PermanentNippleChange_Label>
|
||||
<Option_PermanentNippleChange_Desc>Приблизительно определяет, какая часть сосков беременной пешки останется измененной после окончания беременности.</Option_PermanentNippleChange_Desc>
|
||||
<Option28_Label>Настройка гибридов</Option28_Label>
|
||||
<Option28_Tooltip>Откройте пользовательский гибридный редактор. Это переопределит гибридные определения XML-файлов.</Option28_Tooltip>
|
||||
<Option29_Label>Разрешить сжатие значка</Option29_Label>
|
||||
<Option29_Desc>Значок станет меньше, если это необходимо.</Option29_Desc>
|
||||
<Option30_Label>Множитель продолжительности жизни яйца</Option30_Label>
|
||||
<Option30_Desc>Увеличить продолжительность жизни яйцеклетки. Все неимплантированные яйцеклетки погибнут в конце лютеиновой стадии, независимо от этого параметра.</Option30_Desc>
|
||||
<Option31_Label>Включить трансформацию влагалища после рождения</Option31_Label>
|
||||
<Option31_Desc>Включить постоянное растяжение влагалища после родов. Если вы используете другой мод, обрабатывающий это, отключите эту опцию.</Option31_Desc>
|
||||
<Option32_Label>Сила превращения</Option32_Label>
|
||||
<Option32_Desc>Установить силу превращения.</Option32_Desc>
|
||||
<Option_EnableGatherCumGizmo_Label>Включить сбор спермы gizmo</Option_EnableGatherCumGizmo_Label>
|
||||
<Option_EstrusOverride_Label>Течка переопределяет настройки подключения RJW</Option_EstrusOverride_Label>
|
||||
<Option_EstrusOverride_Desc>Если включено, пешка с видимой течкой будет использовать эти настройки для потенциальных подключений к оплодотворению вместо настроек RJW. Все настройки по умолчанию соответствуют их аналогам RJW.</Option_EstrusOverride_Desc>
|
||||
<Option_EstrusFuckability_Label>Минимальная возможность перепихнуться во время течки</Option_EstrusFuckability_Label>
|
||||
<Option_EstrusAttractability_Label>Подключение минимальная привлекательность во время течки</Option_EstrusAttractability_Label>
|
||||
<Option_EstrusRelationship_Label>Минимальное мнение о перепихоне во время течки</Option_EstrusRelationship_Label>
|
||||
<EstimatedCumLifespan>Расчетная продолжительность жизни спермотозоидов</EstimatedCumLifespan>
|
||||
<EstimatedEggLifespan>Предполагаемый срок жизни яйца</EstimatedEggLifespan>
|
||||
<FertilityDesc>Вероятность имплантации оплодотворенных яйцеклеток. Вероятность оплодотворения в этот час: {0}%</FertilityDesc>
|
||||
<Option_PregnancyFromBaseRJW_Label>Использовать базовый RJW pregnancy</Option_PregnancyFromBaseRJW_Label>
|
||||
<Option_PregnancyFromMultiplePregnancy_Label>Использовать менструацию при многоплодной беременности</Option_PregnancyFromMultiplePregnancy_Label>
|
||||
<Option_PregnancyFromBiotech_Label>Использовать систему беремености из biotech</Option_PregnancyFromBiotech_Label>
|
||||
<Option_EnableDraftedIcon_Label>Показывать статус матки при призыве</Option_EnableDraftedIcon_Label>
|
||||
<Option_EnableDraftedIcon_Desc>Нарисуйте значок матки для набранных пешек</Option_EnableDraftedIcon_Desc>
|
||||
<Button_ResetToDefault>Вернусть всё по умолчанию</Button_ResetToDefault>
|
||||
|
||||
<Gizmo_GatherCum>Собрать сперму</Gizmo_GatherCum>
|
||||
<FloatMenu_CleanSelf>Вагинальное мытье</FloatMenu_CleanSelf>
|
||||
|
||||
<CustomHybrid_List_Title>Пользовательский гибридный редактор</CustomHybrid_List_Title>
|
||||
<CustomHybrid_Title>Гибриды из {0}</CustomHybrid_Title>
|
||||
<CustomHybrid_Tooltip>Когда {0} скрещивается с {1}, {2} родится с вероятностью {3}. Если обе расы имеют гибридные определения друг для друга, будет использоваться определение отца.</CustomHybrid_Tooltip>
|
||||
|
||||
<CannotNoEggs>Никаких яиц</CannotNoEggs>
|
||||
|
||||
</LanguageData>
|
|
@ -11,27 +11,6 @@
|
|||
|
||||
<Patch>
|
||||
<Operation Class="PatchOperationAdd">
|
||||
<xpath>/Defs/rjw.HediffDef_PartBase[defName="DogVagina"]</xpath>
|
||||
<value>
|
||||
<comps>
|
||||
<li Class="RJW_Menstruation.CompProperties_Menstruation">
|
||||
<maxCumCapacity>8</maxCumCapacity>
|
||||
<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
|
||||
<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
|
||||
<follicularIntervalDays>14</follicularIntervalDays>
|
||||
<lutealIntervalDays>166</lutealIntervalDays>
|
||||
<bleedingIntervalDays>8</bleedingIntervalDays>
|
||||
<recoveryIntervalDays>15</recoveryIntervalDays>
|
||||
<eggLifespanDays>4</eggLifespanDays>
|
||||
<wombTex>Womb/Womb</wombTex>
|
||||
<vagTex>Genitals/Vagina</vagTex>
|
||||
<estrusDaysBeforeOvulation>9</estrusDaysBeforeOvulation>
|
||||
</li>
|
||||
</comps>
|
||||
</value>
|
||||
</Operation>
|
||||
|
||||
<!--<Operation Class="PatchOperationAdd">
|
||||
<xpath>/Defs/rjw.HediffDef_PartBase[defName="DogVagina"]</xpath>
|
||||
<value>
|
||||
<comps>
|
||||
|
@ -51,7 +30,7 @@
|
|||
</li>
|
||||
</comps>
|
||||
</value>
|
||||
</Operation>-->
|
||||
</Operation>
|
||||
|
||||
<Operation Class="PatchOperationAdd">
|
||||
<xpath>/Defs/rjw.HediffDef_PartBase[defName="CatVagina"]</xpath>
|
||||
|
|
|
@ -28,10 +28,7 @@ namespace RJW_Menstruation
|
|||
}
|
||||
}
|
||||
}
|
||||
if (filth != null)
|
||||
{
|
||||
filth.AddSources(sources);
|
||||
}
|
||||
filth?.AddSources(sources);
|
||||
return false;
|
||||
}
|
||||
if (filth != null)
|
||||
|
|
|
@ -75,7 +75,7 @@ namespace RJW_Menstruation
|
|||
case Stage.Ovulatory:
|
||||
return true;
|
||||
case Stage.Luteal:
|
||||
return IsEggExist && curStageHrs < EggLifespanHours * 24;
|
||||
return IsEggExist && curStageHrs < EggLifespanHours;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ namespace RJW_Menstruation
|
|||
case Stage.Ovulatory:
|
||||
return true;
|
||||
case Stage.Luteal:
|
||||
return IsEggExist && curStageHrs < EggLifespanHours * 24;
|
||||
return IsEggExist && curStageHrs < EggLifespanHours;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -498,7 +498,7 @@ namespace RJW_Menstruation
|
|||
case Stage.Ovulatory:
|
||||
return true;
|
||||
case Stage.Luteal:
|
||||
return curStageHrs < EggLifespanHours * 24;
|
||||
return curStageHrs < EggLifespanHours;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -744,6 +744,38 @@ namespace RJW_Menstruation
|
|||
base.CompPostPostRemoved();
|
||||
}
|
||||
|
||||
public override string CompTipStringExtra
|
||||
{
|
||||
get
|
||||
{
|
||||
StringBuilder tip = new StringBuilder();
|
||||
tip.Append(Translations.Dialog_WombInfo01);
|
||||
tip.Append(": ");
|
||||
tip.Append(GetCurStageLabel);
|
||||
string fertInfo = GetFertilizingInfo;
|
||||
if(CurrentVisibleStage == Stage.Luteal && fertInfo.Length > 0)
|
||||
{
|
||||
tip.AppendLine();
|
||||
tip.Append(fertInfo);
|
||||
}
|
||||
return tip.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual int HoursToNextStage()
|
||||
{
|
||||
return Math.Max(0,(currentIntervalHours - curStageHrs) / Configurations.CycleAcceleration);
|
||||
}
|
||||
|
||||
public override string CompDebugString()
|
||||
{
|
||||
if (curStage == Stage.None || curStage == Stage.Infertile || curStage == Stage.Pregnant) return base.CompDebugString();
|
||||
StringBuilder debugString = new StringBuilder();
|
||||
debugString.Append($"Time to next state: ");
|
||||
debugString.Append(GenDate.ToStringTicksToPeriod(HoursToNextStage() * GenDate.TicksPerHour));
|
||||
return debugString.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get fluid in womb that not a cum
|
||||
/// </summary>
|
||||
|
@ -1200,7 +1232,7 @@ namespace RJW_Menstruation
|
|||
case Stage.Ovulatory:
|
||||
return true;
|
||||
case Stage.Luteal:
|
||||
return curStageHrs < EggLifespanHours * 24;
|
||||
return curStageHrs < EggLifespanHours;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -1531,7 +1563,7 @@ namespace RJW_Menstruation
|
|||
ovulated = (int)eggnum + eggstack;
|
||||
|
||||
for (int i = 0; i < ovulated; i++)
|
||||
eggs.Add(new Egg((int)(EggLifespanHours * 24 / CycleFactor)));
|
||||
eggs.Add(new Egg((int)(EggLifespanHours / CycleFactor)));
|
||||
ovarypower -= ovulated;
|
||||
|
||||
eggstack = 0;
|
||||
|
|
|
@ -57,6 +57,12 @@ namespace RJW_Menstruation
|
|||
Scribe_Values.Look(ref averageCycleIntervalHours, "averageCycleIntervalHours", averageCycleIntervalHours, true);
|
||||
}
|
||||
|
||||
protected override int HoursToNextStage()
|
||||
{
|
||||
if (curStage == Stage.Anestrus && hoursToNextCycle > 0) return hoursToNextCycle / Configurations.CycleAcceleration;
|
||||
else return base.HoursToNextStage();
|
||||
}
|
||||
|
||||
protected override void BleedingAction()
|
||||
{
|
||||
if (curStageHrs >= currentIntervalHours)
|
||||
|
|
|
@ -79,6 +79,7 @@ namespace RJW_Menstruation
|
|||
kind: babyPawnKind,
|
||||
faction: mother.Faction,
|
||||
allowDowned: true,
|
||||
// fixedLastName seems not to actually do anything, as we eventually end up in PawnBioAndNameGenerator.NameResolvedFrom, which ignores its forcedLastName argument
|
||||
fixedLastName: (string)RandomLastName.Invoke(null, new object[] { mother, mother, xxx.is_human(father) ? father : null }),
|
||||
forceNoIdeo: true,
|
||||
forcedEndogenes: PregnancyUtility.GetInheritedGenes(father, mother),
|
||||
|
@ -207,8 +208,7 @@ namespace RJW_Menstruation
|
|||
do
|
||||
{
|
||||
Pawn baby = comp.babies[0];
|
||||
Pawn thisFather = baby.GetFather();
|
||||
if (thisFather == null) thisFather = father;
|
||||
Pawn thisFather = baby.GetFather() ?? father;
|
||||
baby.relations.ClearAllRelations(); // To keep ApplyBirthOutcome from erroring when it tries to set up relations
|
||||
|
||||
PregnancyUtility.ApplyBirthOutcome(thisOutcome, quality, ritual, genes, geneticMother, birtherThing, thisFather, doctor, lordJobRitual, assignments);
|
||||
|
@ -258,8 +258,7 @@ namespace RJW_Menstruation
|
|||
do
|
||||
{
|
||||
Pawn baby = comp.babies[0];
|
||||
Pawn thisFather = baby.GetFather();
|
||||
if (thisFather == null) thisFather = father;
|
||||
Pawn thisFather = baby.GetFather() ?? father;
|
||||
baby.relations.ClearAllRelations();
|
||||
|
||||
PregnancyUtility.ApplyBirthOutcome(outcome, quality, ritual, genes, geneticMother, birtherThing, thisFather, doctor, lordJobRitual, assignments);
|
||||
|
|
|
@ -151,10 +151,7 @@ namespace RJW_Menstruation
|
|||
else if (gestationProgress < 0.8f) icon = fetustex + "04";
|
||||
else icon = fetustex + "05";
|
||||
|
||||
Texture2D result = TryGetTwinsIcon(icon, babycount);
|
||||
|
||||
if (result == null) result = ContentFinder<Texture2D>.Get((icon), true);
|
||||
return result;
|
||||
return TryGetTwinsIcon(icon, babycount) ?? ContentFinder<Texture2D>.Get((icon), true);
|
||||
}
|
||||
|
||||
public static Texture2D TryGetTwinsIcon(string path, int babycount)
|
||||
|
@ -205,10 +202,7 @@ namespace RJW_Menstruation
|
|||
if (hediffs.Count == 1) return ContentFinder<Texture2D>.Get(path + "Womb_Egged_Large", true);
|
||||
else return ContentFinder<Texture2D>.Get(path + "Womb_Egged_ManyMixed", true);
|
||||
}
|
||||
Texture2D result = ContentFinder<Texture2D>.Get(path + "Womb_Egged_" + hediffs.Count(), false);
|
||||
if (result == null) result = ContentFinder<Texture2D>.Get(path + "Womb_Egged_Many", true);
|
||||
|
||||
return result;
|
||||
return ContentFinder<Texture2D>.Get(path + "Womb_Egged_" + hediffs.Count(), false) ?? ContentFinder<Texture2D>.Get(path + "Womb_Egged_Many", true);
|
||||
}
|
||||
public static Texture2D GetWombIcon(this HediffComp_Menstruation comp)
|
||||
{
|
||||
|
@ -307,8 +301,8 @@ namespace RJW_Menstruation
|
|||
|
||||
public static Texture2D GetAnalIcon(this Pawn pawn, bool drawOrigin = false)
|
||||
{
|
||||
Hediff hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_anusBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllAnuses.Contains(h.def));
|
||||
if (hediff == null) hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_anusBPR(pawn)).FirstOrDefault(h => h.def.defName.ToLower().Contains("anus"));
|
||||
Hediff hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_anusBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllAnuses.Contains(h.def)) ??
|
||||
Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_anusBPR(pawn)).FirstOrDefault(h => h.def.defName.ToLower().Contains("anus"));
|
||||
if (hediff == null) return ContentFinder<Texture2D>.Get(("Genitals/Anal00"), true);
|
||||
|
||||
string icon;
|
||||
|
|
|
@ -150,8 +150,7 @@ namespace RJW_Menstruation
|
|||
if (Configurations.EnableBirthVaginaMorph)
|
||||
{
|
||||
// The comp still has the pregnancy attached at this point in the process
|
||||
Hediff vagina = __instance.GetMenstruationCompFromPregnancy()?.parent;
|
||||
if (vagina == null) vagina = mother.health.hediffSet.hediffs.FirstOrFallback(x => VariousDefOf.AllVaginas.Contains(x.def));
|
||||
Hediff vagina = (__instance.GetMenstruationCompFromPregnancy()?.parent) ?? mother.health.hediffSet.hediffs.FirstOrFallback(x => VariousDefOf.AllVaginas.Contains(x.def));
|
||||
if (vagina == null) return;
|
||||
float morph = Mathf.Max(baby.BodySize - Mathf.Pow(vagina.Severity * mother.BodySize, 2), 0f);
|
||||
vagina.Severity += morph * Configurations.VaginaMorphPower;
|
||||
|
|
|
@ -37,20 +37,14 @@ namespace RJW_Menstruation
|
|||
{
|
||||
BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
|
||||
FieldInfo fieldInfo = type?.GetField(name, flags);
|
||||
if (fieldInfo != null)
|
||||
{
|
||||
fieldInfo.SetValue(null, value);
|
||||
}
|
||||
fieldInfo?.SetValue(null, value);
|
||||
}
|
||||
|
||||
public static void SetMemberValue(this object obj, string name, object value)
|
||||
{
|
||||
BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
|
||||
FieldInfo fieldInfo = obj?.GetType().GetField(name, flags);
|
||||
if (fieldInfo != null)
|
||||
{
|
||||
fieldInfo.SetValue(obj, value);
|
||||
}
|
||||
fieldInfo?.SetValue(obj, value);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -66,12 +66,10 @@ namespace RJW_Menstruation
|
|||
|
||||
public static float GetCumVolume(this Pawn pawn, List<Hediff> hediffs)
|
||||
{
|
||||
CompHediffBodyPart part = hediffs?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("penis")).InRandomOrder().FirstOrDefault()?.TryGetComp<CompHediffBodyPart>();
|
||||
if (part == null) part = hediffs?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("ovipositorf")).InRandomOrder().FirstOrDefault()?.TryGetComp<CompHediffBodyPart>();
|
||||
if (part == null) part = hediffs?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("ovipositorm")).InRandomOrder().FirstOrDefault()?.TryGetComp<CompHediffBodyPart>();
|
||||
if (part == null) part = hediffs?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("tentacle")).InRandomOrder().FirstOrDefault()?.TryGetComp<CompHediffBodyPart>();
|
||||
|
||||
|
||||
CompHediffBodyPart part = (((hediffs?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("penis")).InRandomOrder().FirstOrDefault()?.TryGetComp<CompHediffBodyPart>()) ??
|
||||
(hediffs?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("ovipositorf")).InRandomOrder().FirstOrDefault()?.TryGetComp<CompHediffBodyPart>())) ??
|
||||
(hediffs?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("ovipositorm")).InRandomOrder().FirstOrDefault()?.TryGetComp<CompHediffBodyPart>())) ??
|
||||
(hediffs?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("tentacle")).InRandomOrder().FirstOrDefault()?.TryGetComp<CompHediffBodyPart>());
|
||||
return pawn.GetCumVolume(part);
|
||||
}
|
||||
|
||||
|
@ -194,9 +192,8 @@ namespace RJW_Menstruation
|
|||
|
||||
public static void DrawBreastIcon(this Pawn pawn, Rect rect)
|
||||
{
|
||||
Hediff hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_breastsBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllBreasts.Contains(h.def));
|
||||
if (hediff == null)
|
||||
hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_uddersBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllBreasts.Contains(h.def));
|
||||
Hediff hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_breastsBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllBreasts.Contains(h.def)) ??
|
||||
Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_uddersBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllBreasts.Contains(h.def));
|
||||
Texture2D breast, nipple, areola;
|
||||
if (hediff != null)
|
||||
{
|
||||
|
@ -359,15 +356,15 @@ namespace RJW_Menstruation
|
|||
}
|
||||
public static string GetAnusLabel(this Pawn pawn)
|
||||
{
|
||||
Hediff hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_anusBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllAnuses.Contains(h.def));
|
||||
if (hediff == null) hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_anusBPR(pawn)).FirstOrDefault(h => h.def.defName.ToLower().Contains("anus"));
|
||||
Hediff hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_anusBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllAnuses.Contains(h.def)) ??
|
||||
Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_anusBPR(pawn)).FirstOrDefault(h => h.def.defName.ToLower().Contains("anus"));
|
||||
if (hediff != null) return hediff.LabelBase.CapitalizeFirst() + "\n(" + hediff.LabelInBrackets + ")";
|
||||
else return "";
|
||||
}
|
||||
public static string GetBreastLabel(this Pawn pawn)
|
||||
{
|
||||
Hediff hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_breastsBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllBreasts.Contains(h.def));
|
||||
if (hediff == null) hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_uddersBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllBreasts.Contains(h.def));
|
||||
Hediff hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_breastsBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllBreasts.Contains(h.def)) ??
|
||||
Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_uddersBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllBreasts.Contains(h.def));
|
||||
if (hediff != null) return hediff.LabelBase.CapitalizeFirst() + "\n(" + hediff.LabelInBrackets + ")";
|
||||
else return "";
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<Manifest>
|
||||
<identifier>RJW Menstruation</identifier>
|
||||
<version>1.0.8.6</version>
|
||||
<version>1.0.8.7</version>
|
||||
<dependencies>
|
||||
</dependencies>
|
||||
<incompatibleWith />
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
Version 1.0.8.7
|
||||
- Fix missing texture when using Milkable Colonists.
|
||||
- Fix estrus and egg lifespan lasting far longer than intended.
|
||||
- Canine vaginas now use the new periodic ovulator cycle.
|
||||
- Hovering over a vagina hediff will show the current state in the tooltip.
|
||||
|
||||
Version 1.0.8.6
|
||||
- Updated Traditional Chinese translation by Hydrogen.
|
||||
- Fix error when trying to terminate a non-Biotech pregnancy.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue