Skip to content
Andrey Lemin edited this page Mar 19, 2022 · 3 revisions

Надо уметь понимать и искать символы, которые игра может подставить в полях label, description, labelSocial. Иначе очень сложно подобрать выразительный перевод мыслей персонажей.

  1. Найти искомый тэг в дефах (RimWorld\Data*\Defs)
  2. Найти класс мысли. На это указывает поле thoughtClass в дефе. Если поля в дефе нет, то искать надо в базовом дефе, указанному в атрибуте Name дефа-наследника. Если thoughtClass нигде не указан, то: если есть поле durationDays, то класс - Thought_Memory, если нет - Thought_Situational
  3. Если класс - Thought_Situational или его наследник, то надо ещё найти в дефе (или базовых дефах) поле workerClass.
  4. Перейти к коду найденных классов. Проверить, реализует ли класс интерфейс 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 (не проверялось)