init python: import re def dune_term_replace(text): if not isinstance(text, str): return text if "Lusts of" in text or "welcome to Dune:" in text or "welcome to Doon:" in text: return text if "the choice is yours" in text or "wise prophet of" in text or "wise prophet of:" in text: return text replacements = { "Battle of Romans Ecco": "Battle of Corrins Echo", "Larian Jihad": "Butlerian Jihad", "Aquilan Palace": "Castle Caladan", "Aqui City": "Cala City", "Dravenore Slave Pit": "Harkonnen slave pit", "Gene-Weaving Project": "Selective Breeding Program", "Myth Seeding Directive": "Missionaria Protectiva", "Hyper Observation": "Minutiae of Observation", "Body Mastery": "Prana Bindu", "Truth Dance": "Truth Trance", "Folding Seers": "navigators", "Face Shifters": "Face Dancers", "High Matrons": "Reverend Mothers", "Drakonskiys": "Harkonnens", "Veyn-Karthuh": "Feyd-Rautha", "Spaceliner": "Heighliner", "Ancient Earth": "Old Terra", "Atomic Flare": "Stone Burner", "Dune Wyrms": "Sandworms", "Galactic Empire": "Imperium", "High Matron": "Reverend Mother", "Face Shifter": "Face Dancer", "Drakonskiy": "Harkonnen", "Viktor Von": "Vladimir", "Truth Readers": "Truthsayers", "Noble Houses": "Great Houses", "Noble House": "Great House", "Compendi": "Kwisatz", "Itinerach": "Haderach", "Mahd'Ib": "Muad'Dib", "Kralishah": "Padishah", "Sisterhood of Veilmatrons": "Bene Gesserit", "Vielmatrons": "Bene Gesserit", "Veilmatrons": "Bene Gesserit", "Vielmatron": "Bene Gesserit", "Veilmatron": "Bene Gesserit", "Sandborn": "Fremen", "Draveni Prime": "Giedi Prime", "Rysese": "Richese", "Gaitold": "Kaitain", "Wollosh IX": "Wallach IX", "Arrideen": "Arrakeen", "Tunis": "Carthag", "Gum Judgar": "Gom Jabbar", "Desertskins": "Stillsuits", "Wyrmblade": "Crysknife", "Shiahdam": "Shaddam", "Aquilan": "Caladan", "Doon": "Arrakis", "Gizan": "Ginaz", "paliset": "baliset", "The Sound": "The Voice", "Blood Feud": "Kanly", "Dust": "Spice", "Aether": "Melange", "Artifical Intelligence": "Thinking machines", "Indiana": "Duncan", "Kane": "Idaho", "Bernie": "Gurney", "Garrick": "Halleck", "Thorne": "Thufir", "Harwin": "Hawat", "Li": "Yueh", "Wan": "Wellington", "Valeria": "Aniural", "Wendra": "Wanna", "Ferrin": "Fenring", "Van der Kade": "de Vries", "Piers": "Piter", "Veyn": "Feyd", "Asul": "Usul", "Mentarchs": "Mentants", "Mentarch": "Mentat", "Seers": "navigators", "Romano": "Corrino", "Romanos": "Corrinos", "Imperial Conclave": "Landsraad", "smugglers": "runners", "ancestral water": "water of life", "barriers": "shields", "barrier": "shield", "starfarers guild": "spacing guild", "starfarer guild": "spacing guild", } for old, new in replacements.items(): if not old or not new or old == new: continue pattern = r'\b' + re.escape(old) + r'\b([.,!?\'"s]?)' def replacer(match): punct = match.group(1) or "" return new + punct text = re.sub(pattern, replacer, text, flags=re.IGNORECASE) return text config.say_menu_text_filter = dune_term_replace translate None strings: old "Travelers of the stars, welcome to Doon: the Lusts of Mahd'Ib - a XXX Sci-Fi Parody!" new "Travelers of the stars, welcome to Dune: the Lusts of Muad'Dib - a XXX Sci-Fi Parody!" old "Either way, the choice is yours, oh wise prophet of Doon. What path will you walk?" new "Either way, the choice is yours, oh wise prophet of Dune. What path will you walk?" init 2000 python: default_relationship_terms = { "McName": "Paul", "MatronTeacher": "mother", "FemaleClassmate": "sister", "PoliticsTeacher": "father", "Students": "children", "Teachers": "parents", "NobleHouse": "family", "MaleClassmate": "brother", "Senpai": "older brother", "Kohai": "little sister", "BestStudent": "son", "StrugglingStudent": "daughter", "MsSeraphine": "mom", "MrLeo": "dad", "Lia": "Alia", "Seraphine": "Jessica", "Leo": "Leto", "Shani": "Chani", "Lirien": "Irulan", "Mohira": "Mohiam", "HouseValore": "Atreides", } if persistent.relationship_terms is not None: persistent.relationship_terms.update(default_relationship_terms) else: persistent.relationship_terms = default_relationship_terms.copy() def sync_relationship_variables(): for key, value in persistent.relationship_terms.items(): setattr(store, key, value) sync_relationship_variables() translate None strings: old "{cps=35}{i}The seed of desire is planted long before the fruit is ever tasted.\nThis every sister of the Veilmatrons knows.{/i}{/cps}" new "{cps=35}{i}The seed of desire is planted long before the fruit is ever tasted.\nThis every sister of the Bene Gesserit knows.{/i}{/cps}" old "{cps=32}To begin your study on the lusts of Mahd'Ib, then, take care that you first place him in his time:\naroused in the 69th year of the Kralishah Emperor, Shiahdam IV.{/cps}" new "{cps=32}To begin your study on the lusts of Muad'Dib, then, take care that you first place him in his time:\naroused in the 69th year of the Padishah Emperor, Shaddam IV.{/cps}" old "{cps=32}And take the most special care that you recognize Mahd'Ib's true desire:\nthe forbidden fruit of the Lady [persistent.relationship_terms['Seraphine']] and [persistent.relationship_terms['Lia']].{/cps}" new "{cps=32}And take the most special care that you recognize Muad'Dib's true desire:\nthe forbidden fruit of the Lady [persistent.relationship_terms['Seraphine']] and [persistent.relationship_terms['Lia']].{/cps}" old "{cps=30}Do not be deceived by the fact that he spent his first 19 years sharing innocent glances with his [persistent.relationship_terms['MatronTeacher']] and [persistent.relationship_terms['FemaleClassmate']].{/cps}" new "{cps=30}Do not be deceived by the fact that he spent his first 19 years sharing innocent glances with his [persistent.relationship_terms['MatronTeacher']] and [persistent.relationship_terms['FemaleClassmate']].{/cps}" old "{cps=35}{i}[persistent.relationship_terms['Seraphine']] and [persistent.relationship_terms['Lia']], the ultimate taboo, are forever his passion.{/i}{/cps}" new "{cps=35}{i}[persistent.relationship_terms['Seraphine']] and [persistent.relationship_terms['Lia']], the ultimate taboo, are forever his passion.{/i}{/cps}" old "{cps=28}- From \"Manual of Mahd'Ib\" by the Princess [persistent.relationship_terms['Lirien']]{/cps}" new "{cps=28}- From \"Manual of Muad'Dib\" by the Princess [persistent.relationship_terms['Lirien']]{/cps}" init 4000 python: def patch_all_codex_entries(): global codex_people, codex_groups_positions, codex_abilities global codex_events, codex_locations, codex_objects codex_dicts = [ codex_people, codex_groups_positions, codex_abilities, codex_events, codex_locations, codex_objects, ] for codex in codex_dicts: if not isinstance(codex, dict): continue for key, data in list(codex.items()): if not isinstance(data, dict): continue for field in ["description", "subtitle", "role", "fact"]: if field in data and isinstance(data[field], str): data[field] = dune_term_replace(data[field]) # Also try to patch the key itself for display (safe copy) if "display_title" not in data: data["display_title"] = dune_term_replace(key) patch_all_codex_entries() config.start_callbacks.append(patch_all_codex_entries) config.after_load_callbacks.append(patch_all_codex_entries) def dune_title(text): if isinstance(text, str): return dune_term_replace(text) return text store.dune_title = dune_title