diff --git a/data/States.json b/data/States.json index 775f17d..bca1ec7 100644 --- a/data/States.json +++ b/data/States.json @@ -13,7 +13,7 @@ "minTurns": 1, "motion": 3, "name": "Incapacitated", - "note": "ステート1番はHP0のときに付加されます。", + "note": "State 1 is applied when HP reaches 0.", "overlay": 0, "priority": 100, "releaseByDamage": false, @@ -161,7 +161,7 @@ "minTurns": 1, "motion": 0, "name": "Labyrinth Absorption", - "note": "攻撃力と防御力が低下。\n毎ターン、発情値が上昇する。", + "note": "Attack and defense decrease.\nLust increases every turn.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -679,7 +679,7 @@ "minTurns": 3, "motion": 0, "name": "Innocent Justice", - "note": "勇者以外のクラスへの転職ができない。", + "note": "Cannot change to any class other than Hero.", "overlay": 0, "priority": 50, "removeAtBattleEnd": true, @@ -926,7 +926,7 @@ "minTurns": 4, "motion": 0, "name": "Phantom Lantern Sword", - "note": "攻撃力上昇×150%", + "note": "Attack power up x150%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -992,7 +992,7 @@ "minTurns": 1, "motion": 1, "name": "Arousal", - "note": "\n毎ターン発情値上昇+3%\n回避率低下-10%\n「お腹が…『吸淫』でぞくぞくって、熱く…っ♥」", + "note": "\nArousal increases by +3% every turn\nEvasion -10%\n\"My belly... 'Suck Lust' makes me all tingly and hot...♥\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -1078,7 +1078,7 @@ "minTurns": 3, "motion": 0, "name": "Breeding", - "note": "\nシルシェ「ボクは…愛玩動物、なんかじゃ…っ」", + "note": "\nSilshe: \"I'm... not some kind of pet...\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": true, @@ -1119,7 +1119,7 @@ "minTurns": 1, "motion": 0, "name": "Slime", - "note": "\n回避率低下-30%\n毎ターン発情値上昇+5%\n発情値上昇×3%\n「ねば、ついて…火照って…!」", + "note": "\nEvasion Rate Down -30%\nArousal increases by +5% every turn\nArousal gain x3%\n\"It's so sticky, clinging to me... I'm burning up...!\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -1210,7 +1210,7 @@ "minTurns": 1, "motion": 0, "name": "Restraint", - "note": "\nシルシェ「からだの、自由が…っ!」", + "note": "\nSilshe: \"My body's... I can't move!\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": true, @@ -1241,7 +1241,7 @@ "minTurns": 1, "motion": 0, "name": "Parasitism", - "note": "\nシルシェ「ボクの身体を…食べて、育って…」", + "note": "\nSilshe: \"Eat my body... grow inside me...\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": true, @@ -1277,7 +1277,7 @@ "minTurns": 1, "motion": 0, "name": "Proof of Defeat", - "note": "シルシェ「次は…次こそは、勝て…る…っ♥」", + "note": "Silshe: \"Next time... next time for sure, I'll... win...!♥\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -1682,7 +1682,7 @@ "minTurns": 1, "motion": 0, "name": "Submissive Desire", - "note": "攻撃力減少-5% \n性技上昇×3% \n「言いなりになれば…痛くない…っ♥」", + "note": "Attack Power -5%\nSex Technique Up x3%\n\"If you just do as you're told... it won't hurt...♥\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -1713,7 +1713,7 @@ "minTurns": 1, "motion": 0, "name": "Defeat Wish", - "note": "回避率-10%\n「ここっ♥ ここが、弱いです…♥」", + "note": "Evasion -10%\n\"Right there♥ That's my weak spot...♥\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -1744,7 +1744,7 @@ "minTurns": 1, "motion": 0, "name": "Sensual Desire", - "note": "毎ターン発情値上昇+3%\n「昔なら、この程度の痛み…なんでもなかったのに…」", + "note": "Lust increases by +3% every turn\n\"Back in the day, pain like this... was nothing to me...\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -1775,7 +1775,7 @@ "minTurns": 1, "motion": 0, "name": "The Trembling of the Female Legs", - "note": "回避率減少-10% \n「ぷるぷる震えて…っ♥ 逃げられ、なぃ…♥」", + "note": "Evasion Rate -10%\n\"Trembling all over...♥ You can't get away...♥\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -1811,7 +1811,7 @@ "minTurns": 1, "motion": 0, "name": "Tamed Mare", - "note": "攻撃力減少-5% \n性技上昇×3% \n「首輪をひかれる、飼われる感覚…っ♥」", + "note": "Attack Power -5%\nSex Technique Up x3%\n\"The feeling of being pulled by a collar, of being owned...♥\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -1842,7 +1842,7 @@ "minTurns": 1, "motion": 0, "name": "Loser Habit", - "note": "回避率-10%\n「またっ♥ また…終わっちゃう…っ♥」", + "note": "Evasion -10%\n\"Again♥ Again... I'm gonna finish...♥\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -1873,7 +1873,7 @@ "minTurns": 1, "motion": 0, "name": "Masochistic Urge", - "note": "毎ターン発情値上昇+3%\n「痛いのにっ♥ 痛くて苦しいだけなのに…っ♥」", + "note": "Lust increases by +3% every turn\n\"It hurts♥ Even though it just hurts and feels awful...♥\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -1909,7 +1909,7 @@ "minTurns": 1, "motion": 0, "name": "Loss of Will to Fight", - "note": "攻撃力減少-5% \n性技上昇×3% \n「戦わなきゃ…っ♥ 分かってる…のに…っ♥」", + "note": "Attack Power -5%\nSex Technique Up x3%\n\"I have to fight...♥ I know that... and yet...♥\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2072,7 +2072,7 @@ "minTurns": 1, "motion": 0, "name": "Developing Breasts", - "note": "敵の調教による快楽上昇×3%", + "note": "Pleasure increase from enemy training x3%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2103,7 +2103,7 @@ "minTurns": 1, "motion": 0, "name": "Developed Vagina Hole", - "note": "敵の調教による快楽上昇×3%\n", + "note": "Pleasure increase from enemy training x3%\n", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2134,7 +2134,7 @@ "minTurns": 1, "motion": 0, "name": "Excavated Asshole", - "note": "敵の調教による快楽上昇×3%\n", + "note": "Pleasure increase from enemy training x3%\n", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2165,7 +2165,7 @@ "minTurns": 1, "motion": 0, "name": "Broken Sense of Taste", - "note": "敵の調教による快楽上昇×3%\n", + "note": "Pleasure increase from enemy training x3%\n", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2196,7 +2196,7 @@ "minTurns": 1, "motion": 0, "name": "Fully Developed A5 Grade Female Flesh", - "note": "敵の調教による快楽上昇×3%\n", + "note": "Pleasure increase from enemy training x3%\n", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2227,7 +2227,7 @@ "minTurns": 1, "motion": 0, "name": "Prostitute's Soft Skin", - "note": "敵への娼婦スキル上昇×20%", + "note": "Prostitute skill against enemies up x20%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2258,7 +2258,7 @@ "minTurns": 1, "motion": 0, "name": "Prostitute's Ahegao", - "note": "敵への娼婦スキル上昇×20%", + "note": "Prostitute skill against enemies up x20%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2289,7 +2289,7 @@ "minTurns": 1, "motion": 0, "name": "Prostitute's Sidelong Glance", - "note": "敵への娼婦スキル上昇×20%", + "note": "Prostitute skill against enemies up x20%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2314,7 +2314,7 @@ "minTurns": 1, "motion": 0, "name": "Hardworking Prostitute", - "note": "娼婦レベルアップ連続回数+1", + "note": "Prostitute level up combo +1", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2339,7 +2339,7 @@ "minTurns": 1, "motion": 0, "name": "True Nature of Lewdness", - "note": "娼婦レベルアップ連続回数+1", + "note": "Prostitute level up combo +1", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2364,7 +2364,7 @@ "minTurns": 1, "motion": 0, "name": "Innate Prostitute", - "note": "娼婦レベルアップ連続回数+1", + "note": "Prostitute level up combo +1", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2389,7 +2389,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Whore Who Licks Bugs", - "note": "\\I[370]永続\n+100% 蟲型の敵に娼婦スキル効果上昇。", + "note": "\\I[370]Permanent\n+100% Prostitute skill effect increase against insect-type enemies.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2414,7 +2414,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Tamed Bitch", - "note": "\\I[370]永続\n+100% 亜人型の敵に娼婦スキル効果上昇。", + "note": "\\I[370]Permanent\n+100% Prostitute skill effect increase against demi-human type enemies.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2439,7 +2439,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Swimmer of the Sea of Flesh", - "note": "\\I[370]永続\n+100% 触手型の敵に娼婦スキル効果上昇。", + "note": "\\I[370]Permanent\n+100% Courtesan skill effect against tentacle-type enemies.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2464,7 +2464,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Penis Viking", - "note": "\\I[370]永続\n+100% 通常看守に娼婦スキル効果上昇。", + "note": "\\I[370]Permanent\n+100% Prostitute skill effects for regular guards increased.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2489,7 +2489,7 @@ "minTurns": 1, "motion": 0, "name": "Midograv's Scissor Wound", - "note": "娼婦レベルアップ連続回数+1\nミドグラヴにご奉仕した。", + "note": "Prostitute level up combo +1\nServiced Midograve.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2514,7 +2514,7 @@ "minTurns": 1, "motion": 0, "name": "Brand of the Viborg", - "note": "娼婦レベルアップ連続回数+1\nバイボーグにご奉仕した。", + "note": "Prostitute level up combo +1\nServiced a Viborg.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2539,7 +2539,7 @@ "minTurns": 1, "motion": 0, "name": "Octopede's Kiss Mark", - "note": "娼婦レベルアップ連続回数+1\nオクトペドにご奉仕した。", + "note": "Prostitute level up combo +1\nYou serviced an Octoped.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2564,7 +2564,7 @@ "minTurns": 1, "motion": 0, "name": "Crest of Surductei", - "note": "娼婦レベルアップ連続回数+1\nスルドクテイにご奉仕した。", + "note": "Prostitute level up combo +1\nYou serviced a Surductei.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2589,7 +2589,7 @@ "minTurns": 1, "motion": 0, "name": "Garumadus's Seal", - "note": "娼婦レベルアップ連続回数+1\nガルマドゥスにご奉仕した。", + "note": "Prostitute level up combo +1\nYou serviced Garmadus.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2614,7 +2614,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Warden's Semen", - "note": "取得娼婦レベル上昇+30%\n臆病な見習い看守にご奉仕した。", + "note": "Prostitute Level Gain +30%\nYou serviced the Cowardly Apprentice Guard.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2639,7 +2639,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Torturer's Whip Marks", - "note": "取得娼婦レベル上昇+30%\n凶悪な拷問官にご奉仕した。", + "note": "Prostitute Level Gain +30%\nYou served the Brutal Torturer.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2664,7 +2664,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Hallucinations of a Pervert", - "note": "取得娼婦レベル上昇+30%\n変質した変質者にご奉仕した。", + "note": "Prostitute Level Gain +30%\nYou serviced a Corrupted Pervert.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2689,7 +2689,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Torturer's Bite Marks", - "note": "取得娼婦レベル上昇+30%\n凶悪な拷問官にご奉仕した。", + "note": "Prostitute Level Gain +30%\nYou served the Brutal Torturer.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2714,7 +2714,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Phantom of the Pervert", - "note": "取得娼婦レベル上昇+30%\n股這う変質者にご奉仕した。", + "note": "Prostitute level gain +30%\nYou serviced a Pervert Crawling Between the Legs.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2739,7 +2739,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Torturer's Expansion Scars", - "note": "取得娼婦レベル上昇+30%\n骨盤砕く拷問官にご奉仕した。", + "note": "Prostitute Level Gain +30%\nYou served the Pelvis-Crushing Torturer.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2764,7 +2764,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Pervert's Collar", - "note": "取得娼婦レベル上昇+30%\n牝犬飼いの変質者にご奉仕した。", + "note": "Prostitute level gain +30%\nYou served a pervert who keeps bitches.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2789,7 +2789,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Medulla Eggshell", - "note": "取得娼婦レベル上昇+30%\n辱牝奪胎メデュラにご奉仕した。", + "note": "Prostitute level gain +30%\nYou served Medula the Defiler and Womb Thief.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2814,7 +2814,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Hotokamimushi's Kiss", - "note": "取得娼婦レベル上昇+30%\nオオホトカミムシにご奉仕した。", + "note": "Prostitute Level Gain +30%\nYou serviced the Giant Vulva Bug.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2839,7 +2839,7 @@ "minTurns": 1, "motion": 0, "name": "Podoria's Slime", - "note": "娼婦レベルアップ連続回数+1\n牝捕粘液ポドリアにご奉仕した。", + "note": "Prostitute level up streak +1\nYou serviced the Female-Capturing Slime Podria.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2889,7 +2889,7 @@ "minTurns": 1, "motion": 0, "name": "Worn-out Womb Pouch", - "note": "\\I[370]永続\n3% 敵の調教による快楽上昇", + "note": "\\I[370]Permanent\n3% increased pleasure from enemy training", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2914,7 +2914,7 @@ "minTurns": 1, "motion": 0, "name": "Mad Ovaries", - "note": "\\I[370]永続\n3% 敵の調教による快楽上昇", + "note": "\\I[370]Permanent\n3% increased pleasure from enemy training", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2939,7 +2939,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Tentacle Strangulation Marks", - "note": "取得娼婦レベル上昇+30%", + "note": "Prostitute Level Gain +30%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2964,7 +2964,7 @@ "minTurns": 1, "motion": 0, "name": "Abolished: Warden's Thick Semen", - "note": "取得娼婦レベル上昇+30%", + "note": "Prostitute Level Gain +30%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -2989,7 +2989,7 @@ "minTurns": 1, "motion": 0, "name": "Clinging Vagina", - "note": "娼婦レベルアップ連続回数+1", + "note": "Prostitute level up combo +1", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3014,7 +3014,7 @@ "minTurns": 1, "motion": 0, "name": "Persistent Vagina", - "note": "娼婦レベルアップ連続回数+1", + "note": "Prostitute level up combo +1", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3039,7 +3039,7 @@ "minTurns": 1, "motion": 0, "name": "Rampaging Vagina", - "note": "娼婦レベルアップ連続回数+1", + "note": "Prostitute level up combo +1", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3064,7 +3064,7 @@ "minTurns": 1, "motion": 0, "name": "Indomitable Vagina", - "note": "娼婦レベルアップ連続回数+1", + "note": "Prostitute level up combo +1", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3114,7 +3114,7 @@ "minTurns": 1, "motion": 0, "name": "A state that is somehow applied automatically", - "note": "たぶんコピペミスで陵辱順応が複数設定されていたため\n", + "note": "Probably because of a copy-paste mistake, multiple rape adaptation settings were applied.\n", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3145,7 +3145,7 @@ "minTurns": 1, "motion": 0, "name": "Body Addicted to Violation", - "note": "戦闘吸淫ダメージ減少-25%\n(ああ、もっと……ほしいっ♥ \n チンポチンポチンポチンポ……♥)", + "note": "Combat Suck Lust Damage -25%\n(Ah, more... I want more♥\nDick dick dick dick...♥)", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3176,7 +3176,7 @@ "minTurns": 1, "motion": 0, "name": "Violent Assault Frenzy Poison", - "note": "戦闘吸淫ダメージ減少-25%\n(まだっ♥ まだまだっ♥ もっと♥\n もっとザーメン欲しいッ♥ まだ負けられないッ♥)", + "note": "Combat Suck Lust Damage -25%\n(Not yet♥ Not yet♥ More♥\nI want more cum♥ I can't lose yet♥)", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3201,7 +3201,7 @@ "minTurns": 1, "motion": 0, "name": "Pussy Service", - "note": "1名までの看守に挿入してもらってご奉仕できる。", + "note": "You can serve up to one guard by letting them insert.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3226,7 +3226,7 @@ "minTurns": 1, "motion": 0, "name": "Oral Service", - "note": "同時に2名までの看守に挿入してもらってご奉仕できる。", + "note": "You can serve up to two guards at once by letting them both penetrate you.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3251,7 +3251,7 @@ "minTurns": 1, "motion": 0, "name": "Anal Torture Service", - "note": "同時に3名までの看守に挿入してもらってご奉仕できる。", + "note": "You can serve up to three guards at once by letting them all penetrate you.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3282,7 +3282,7 @@ "minTurns": 1, "motion": 0, "name": "Violation Adaptation", - "note": "戦闘吸淫ダメージ減少-25%\n(まだ……できる……セックス……♥ \n セックス、セックス、セックスぅ……♥)\n\n", + "note": "Combat Suck Lust Damage -25%\n(I can still... keep going... sex...♥\nSex, sex, sex...♥)\n\n", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3313,7 +3313,7 @@ "minTurns": 1, "motion": 0, "name": "Fragment of Courage", - "note": "攻撃力上昇×0.1%\n「ボクは……負けない……!」", + "note": "Attack power up x0.1%\n\"I... won't lose...!\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3344,7 +3344,7 @@ "minTurns": 1, "motion": 0, "name": "Fragment of Nielsen of the Raging Wind", - "note": "行動回数+1\n「烈風の双刃ニールセン、悪の噂がある場所に\n 躊躇なく駆ける姿はまさに風の如く」\n", + "note": "Action count +1\n\"Nielsen, the Twin Blades of the Gale, rushes without hesitation to any place rumored to harbor evil―truly like the wind itself.\"\n", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3375,7 +3375,7 @@ "minTurns": 1, "motion": 0, "name": "Fragment of the Adamantine Neitlruka", - "note": "防御力×200%\n「金剛の令嬢ネイトルカ、その鉄壁で\n 民を守った誇り高き守護者」", + "note": "Defense x200%\n\"Naitlka, the Diamond Lady―\nA proud guardian who protected her people with an unbreakable defense.\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3406,7 +3406,7 @@ "minTurns": 1, "motion": 0, "name": "Shard of Nuvy the Scorcher", - "note": "攻撃力×200%\n「灼滅の紅槍ヌヴィ、いつも笑顔を絶やさず、\n 弱き者を決して見捨てなかった『紅き太陽』」", + "note": "Attack x200%\n\"Nuvy, the Crimson Spear of Annihilation, who never lost her smile,\n and never abandoned the weak―'The Crimson Sun'\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3442,7 +3442,7 @@ "minTurns": 1, "motion": 0, "name": "Fragment of Nanaria, Saint of Water", - "note": "最大HP×200%\n最大MP×200%\n「水聖の歌声ナナリア、精霊すら魅了する\n 歌声で人々を癒した」", + "note": "Max HP x200%\nMax MP x200%\n\"Nana Lia, the Songstress of the Water Saint, healed people with a voice so enchanting it captivated even the spirits.\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -3467,7 +3467,7 @@ "minTurns": 1, "motion": 0, "name": "Prison Hero", - "note": "――どれほど重い鎖でも、少女の心は縛れない。", + "note": "――No matter how heavy the chains, you can't bind a girl's heart.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -5333,7 +5333,7 @@ "minTurns": 1, "motion": 0, "name": "Icon of Benevolence", - "note": "魔法回避率上昇+5%", + "note": "Magic Evasion Rate +5%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -5364,7 +5364,7 @@ "minTurns": 1, "motion": 0, "name": "Oath of Benevolence", - "note": "魔法回避率上昇+5%", + "note": "Magic Evasion Rate +5%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -5395,7 +5395,7 @@ "minTurns": 1, "motion": 0, "name": "Hope of Benevolence", - "note": "魔法回避率上昇+5%", + "note": "Magic Evasion Rate +5%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -5426,7 +5426,7 @@ "minTurns": 1, "motion": 0, "name": "Hero's Courage", - "note": "攻撃力上昇×20%", + "note": "Attack Power Up x20%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -5457,7 +5457,7 @@ "minTurns": 1, "motion": 0, "name": "Hero's Pride", - "note": "攻撃力上昇×20%", + "note": "Attack Power Up x20%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -5488,7 +5488,7 @@ "minTurns": 1, "motion": 0, "name": "Hero's Pride", - "note": "攻撃力上昇×20%", + "note": "Attack Power Up x20%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -5524,7 +5524,7 @@ "minTurns": 1, "motion": 0, "name": "Godspeed Footwork", - "note": "物理回避率上昇+5%\n敏捷性上昇×25%", + "note": "Physical Evasion Rate +5%\nAgility +25%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -5560,7 +5560,7 @@ "minTurns": 1, "motion": 0, "name": "Godspeed Sword Technique", - "note": "物理回避率上昇+5%\n敏捷性上昇×25%", + "note": "Physical Evasion Rate +5%\nAgility +25%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -5596,7 +5596,7 @@ "minTurns": 1, "motion": 0, "name": "Sword Dance of Godspeed", - "note": "物理回避率上昇+5%\n敏捷性上昇×25%", + "note": "Physical Evasion Rate +5%\nAgility +25%", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -5627,7 +5627,7 @@ "minTurns": 1, "motion": 0, "name": "Maiden's Purity", - "note": "毎ターン発情値減少-5%", + "note": "Lust decreases by 5% every turn.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -5658,7 +5658,7 @@ "minTurns": 1, "motion": 0, "name": "Maiden's Purity", - "note": "毎ターン発情値減少-5%", + "note": "Lust decreases by 5% every turn.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -5689,7 +5689,7 @@ "minTurns": 1, "motion": 0, "name": "Maiden's Chastity", - "note": "毎ターン発情値減少-5%", + "note": "Lust decreases by 5% every turn.", "overlay": 0, "priority": 50, "removeAtBattleEnd": false, @@ -5860,7 +5860,7 @@ "minTurns": 3, "motion": 0, "name": "Breeding Ground", - "note": "\nシルシェ「ボクは…愛玩動物、なんかじゃ…っ」", + "note": "\nSilshe: \"I'm... not some kind of pet...\"", "overlay": 0, "priority": 50, "removeAtBattleEnd": true, @@ -5922,7 +5922,7 @@ "minTurns": 1, "motion": 0, "name": "Insertion", - "note": "シルシェに挿入する一時ステート", + "note": "Temporary state: Insertion into Silshe", "overlay": 0, "priority": 50, "removeAtBattleEnd": true, @@ -6007,7 +6007,7 @@ "minTurns": 1, "motion": 0, "name": "Debug", - "note": "ステート1番はHP0のときに付加されます。", + "note": "State 1 is applied when HP reaches 0.", "overlay": 0, "priority": 100, "releaseByDamage": false, @@ -6177,7 +6177,7 @@ "minTurns": 1, "motion": 0, "name": "Endure", - "note": "このステートを持つ限り、\n敵は吸淫できない。\nRestrictionTargetSkill.jsで制御", + "note": "As long as you have this state,\nthe enemy cannot use Suck Lust.\nControlled by RestrictionTargetSkill.js", "overlay": 0, "priority": 50, "removeAtBattleEnd": true, diff --git a/js/plugins/IM_SceneMenu.js b/js/plugins/IM_SceneMenu.js index 075d164..df29a24 100644 --- a/js/plugins/IM_SceneMenu.js +++ b/js/plugins/IM_SceneMenu.js @@ -72,6 +72,58 @@ const NOTICE_TEXT_ALBUM = "0900-067-n067-0"; + //======================================================================== + // Helpers (English word wrapping) + //======================================================================== + /** + * Wrap text into lines that fit within maxWidth (pixels) using bitmap font. + * Preserves newlines; falls back to char-splitting for long tokens. + * @param {string} text + * @param {Bitmap} bitmap + * @param {number} maxWidth + * @returns {string[]} + */ + function wrapTextToWidth_IM(text, bitmap, maxWidth) { + if (!text) return [""]; + const out = []; + const rawLines = String(text).replace(/\r\n?|\u2028/g, "\n").split("\n"); + for (const raw of rawLines) { + const tokens = raw.split(/(\s+)/); // keep spaces + let cur = ""; + for (const tk of tokens) { + const next = cur + tk; + if (bitmap.measureTextWidth(next) <= maxWidth) { + cur = next; + } else if (!cur) { + const parts = splitLongTokenByChars_IM(tk, bitmap, maxWidth); + for (let i = 0; i < parts.length - 1; i++) out.push(parts[i]); + cur = parts[parts.length - 1]; + } else { + if (cur.trim().length > 0) out.push(cur.trimEnd()); + const parts = splitLongTokenByChars_IM(tk, bitmap, maxWidth); + for (let i = 0; i < parts.length - 1; i++) out.push(parts[i]); + cur = parts[parts.length - 1]; + } + } + out.push(cur.trimEnd()); + } + return out.length ? out : [""]; + } + + function splitLongTokenByChars_IM(token, bitmap, maxWidth) { + const chunks = []; + let buf = ""; + for (const ch of token) { + const next = buf + ch; + if (bitmap.measureTextWidth(next) <= maxWidth) buf = next; else { + if (buf) chunks.push(buf); + buf = ch; + } + } + if (buf) chunks.push(buf); + return chunks.length ? chunks : [token]; + } + //======================================================================== // クラス定義 (Window_CustomMenuCommand) //======================================================================== @@ -348,8 +400,20 @@ const baseText = state.note; // タグを除去 const regexp = /<([^<>:]+)(:?)([^>]*)>\n?/g; - const text = PluginUtils.splitText(baseText.replace(regexp, ""), 21, false).join('\n'); - this._helpWindow.setText(text); + const raw = baseText.replace(regexp, "").trim(); + + // Wrap by pixel width using an English-friendly font + const tmp = new Bitmap(1, 1); + tmp.fontFace = 'MPLUS1Code-Regular'; + tmp.fontSize = 26; + tmp.outlineWidth = 0; + + // Estimate help rect width (matches helpWindowRect: width 570 minus padding) + const helpWidth = 570 - (this._helpWindow?.padding ?? 12) * 2; + const lines = wrapTextToWidth_IM(raw, tmp, Math.max(200, helpWidth)); + this._helpWindow.contents.fontFace = tmp.fontFace; + this._helpWindow.contents.fontSize = tmp.fontSize; + this._helpWindow.setText(lines.join('\n')); } } diff --git a/js/plugins/IM_StateNoteControlCharacter.js b/js/plugins/IM_StateNoteControlCharacter.js index d3c3099..41ab971 100644 --- a/js/plugins/IM_StateNoteControlCharacter.js +++ b/js/plugins/IM_StateNoteControlCharacter.js @@ -44,27 +44,81 @@ // 既存の制御文字を最初に処理 text = _convertEscapeCharacters.call(this, text); - // \SKILL[n] — スキル説明欄を挿入 - text = text.replace(/\x1bSKILL\[(\d+)]/gi, (_, p1) => { + // \SKILL[n] — スキル説明欄を挿入(英語向けに幅で折り返し) + text = text.replace(/\x1bSKILL\[(\d+)]/gi, (_, p1) => { const id = Number(p1); const skill = $dataSkills[id]; if (skill && typeof skill.description === 'string') { - return skill.description.replace(TAG_REGEX, '').trim(); + const raw = skill.description.replace(TAG_REGEX, '').trim(); + const tmp = new Bitmap(1, 1); + tmp.fontFace = 'MPLUS1Code-Regular'; + tmp.fontSize = 26; + const pad = this?.padding ?? 12; + const maxWidth = Math.max(200, (this?.innerWidth ?? 480) - pad * 2); + return wrapTextToWidth_CC(raw, tmp, maxWidth); } return ''; }); - // \STATE[n] — ステートメモ欄を挿入(既存機能) - text = text.replace(/\x1bSTATE\[(\d+)]/gi, (_, p1) => { + // \STATE[n] — ステートメモ欄を挿入(英語向けに幅で折り返し) + text = text.replace(/\x1bSTATE\[(\d+)]/gi, (_, p1) => { const id = Number(p1); const state = $dataStates[id]; if (state && typeof state.note === 'string') { - return state.note.replace(TAG_REGEX, '').trim(); + const raw = state.note.replace(TAG_REGEX, '').trim(); + const tmp = new Bitmap(1, 1); + tmp.fontFace = 'MPLUS1Code-Regular'; + tmp.fontSize = 26; + const pad = this?.padding ?? 12; + const maxWidth = Math.max(200, (this?.innerWidth ?? 480) - pad * 2); + return wrapTextToWidth_CC(raw, tmp, maxWidth); } return ''; }); return text; }; + + //============================================================ + // Optional: English-friendly wrapping helpers + //============================================================ + function wrapTextToWidth_CC(text, bitmap, maxWidth) { + if (!text) return ''; + const lines = []; + const rawLines = String(text).replace(/\r\n?|\u2028/g, "\n").split('\n'); + for (const raw of rawLines) { + const toks = raw.split(/(\s+)/); + let cur = ''; + for (const tk of toks) { + const next = cur + tk; + if (bitmap.measureTextWidth(next) <= maxWidth) cur = next; else if (!cur) { + const parts = splitChars_CC(tk, bitmap, maxWidth); + for (let i = 0; i < parts.length - 1; i++) lines.push(parts[i]); + cur = parts[parts.length - 1]; + } else { + if (cur.trim()) lines.push(cur.trimEnd()); + const parts = splitChars_CC(tk, bitmap, maxWidth); + for (let i = 0; i < parts.length - 1; i++) lines.push(parts[i]); + cur = parts[parts.length - 1]; + } + } + lines.push(cur.trimEnd()); + } + return lines.join('\n'); + } + + function splitChars_CC(token, bitmap, maxWidth) { + const out = []; + let buf = ''; + for (const ch of token) { + const next = buf + ch; + if (bitmap.measureTextWidth(next) <= maxWidth) buf = next; else { + if (buf) out.push(buf); + buf = ch; + } + } + if (buf) out.push(buf); + return out.length ? out : [token]; + } })();