-
Notifications
You must be signed in to change notification settings - Fork 116
ThoughtDefs
Andrey Lemin edited this page Mar 19, 2022
·
3 revisions
Надо уметь понимать и искать символы, которые игра может подставить в полях label, description, labelSocial. Иначе очень сложно подобрать выразительный перевод мыслей персонажей.
- Найти искомый тэг в дефах (RimWorld\Data*\Defs)
- Найти класс мысли. На это указывает поле
thoughtClass
в дефе. Если поля в дефе нет, то искать надо в базовом дефе, указанному в атрибутеName
дефа-наследника. ЕслиthoughtClass
нигде не указан, то: если есть полеdurationDays
, то класс -Thought_Memory
, если нет -Thought_Situational
- Если класс -
Thought_Situational
или его наследник, то надо ещё найти в дефе (или базовых дефах) полеworkerClass
. - Перейти к коду найденных классов. Проверить, реализует ли класс интерфейс
ISocialThought
. Если да, то эта мысль отображается в окне социум, и для этого окна можно определить полеlabelSocial
в локализации. ДляlabelSocial
набор доступных символов отличается от простоlabel
, что часто бывает полезно.
Кроме символов PAWN
и OTHERPAWN
могут встречаться гораздо более экзотические символы. Они подставляются игрой, если во время исполнения соответствующее поле у объекта содержит данные.
Символ REASON
(его применения по коду сложно найти) есть только для следующих мыслей:
- ThoughtWorker_BondedAnimalMaster
- ThoughtWorker_DeadMansApparel
- ThoughtWorker_HumanLeatherApparel
- ThoughtWorker_BedroomJealous
Для некоторых мыслей класса Thought_Memory
, если поле .otherPawn != null
и если логика не переопределена в наследнике, Для поля label
определены символы:
-
0
(подставится строковое значениеotherPawn.LabelShort
) -
1
(подставится весь объектotherPawn
).
Вот (вероятно, неполный) список таких дефов и способ их поиска:
- вызовы метода
IndividualThoughtToAdd
с соответствующим параметром:- Thought_PsychicHarmonizer
- DefeatedHostileFactionLeader
- KnowColonistDied
- все мысли *Died *Lost для родственников, ищутся поиском значений полей
lostThoughtFemale
,lostThought
,diedThought
иdiedThoughtFemale
уPawnRelationDef
- KilledMyFriend
- KilledMyRival
- PawnWithGoodOpinionLost
- PawnWithBadOpinionLost
- PawnWithGoodOpinionDied
- PawnWithBadOpinionDied
- BondedAnimalBanished
- BondedAnimalReleased
- вызовы метода
MemoryThoughtHandler.TryGainMemory
- Counselled
- Counselled_MoodBoost
- GotSomeLovin
- FailedConvertAbilityInitiator
- FailedConvertAbilityRecipient
- CounselFailed
- ReleasedHealthyPrisoner
- BrokeUpWithMe
- FailedConvertIdeoAttemptResentment
- RejectedMyProposal
- IRejectedTheirProposal
- RecruitedMe
- RebuffedMyRomanceAttempt
- FailedRomanceAttemptOnMe
- FailedRomanceAttemptOnMeLowOpinionMood
- CheatedOnMe
- GotMarried
- HoneymoonPhase
- все значения поля ThoughtDef.thoughtToMake:
- InsultedMood
- KindWordsMood
- ForcedMeToTakeDrugsMood
- ForcedMeToTakeLuciferiumMood
- RebuffedMyRomanceAttemptMood
- BrokeUpWithMeMood
- CheatedOnMeMood
- DivorcedMeMood
- RejectedMyProposalMood
- все значения поля PawnRelationDef.soldThoughts:
- SoldMyLovedOne
- SoldMyBondedAnimal
- SoldMyBondedAnimalMood
- RescuedMe
- FailedToRescueRelative
- RescuedRelative
- ForcedMeToTakeDrugs
- ForcedMeToTakeLuciferium
- BotchedMySurgery
- DivorcedMe
- RescuedMeByOfferingHelp
- HarmedMe
- все значения поля
InteractionDef.recipientThought
- все значения поля
InteractionDef.initiatorThought
- CrashedTogether
- вызовы HediffMaker.MakeHediff (не проверялось)
- все значения
RitualOutcomeEffectDef.outcomeChances.memory
- TerribleSpeech
- UninspiringSpeech
- EncouragingSpeech
- InspirationalSpeech
- TerribleBestowingCeremony
- UnimpressiveBestowingCeremony
- HonorableBestowingCeremony
- GrandioseBestowingCeremony
- TerribleFuneral
- ...
- TendedByMedicalSpecialist
- PsychicHarmonization
- ColonyPrisonerEscaped
- ColonistBanished
- DeniedJoining
- ColonistBanishedToDie
- PrisonerBanishedToDie
- ColonistLost
- Disinherited
- вызовы
PreceptComp_KnowsMemoryThought.Notify_MemberWitnessedAction
с параметромev
, у которого естьarg
c именемHistoryEventArgsNames.Doer
(не проверялось)