From 22c355801b6d881f486133fcd43cb3118b516ba1 Mon Sep 17 00:00:00 2001 From: OleSTEEP Date: Tue, 24 Sep 2024 10:07:36 +0300 Subject: [PATCH] RUS: Bring back RUS_Patches.js --- www.rus/js/plugins/RUS_patches.js | 869 ++++++++++++++++++++++++++++++ 1 file changed, 869 insertions(+) create mode 100644 www.rus/js/plugins/RUS_patches.js diff --git a/www.rus/js/plugins/RUS_patches.js b/www.rus/js/plugins/RUS_patches.js new file mode 100644 index 0000000..4e17a12 --- /dev/null +++ b/www.rus/js/plugins/RUS_patches.js @@ -0,0 +1,869 @@ +// OMORI patch mod for more russian language support such as changing UI +// positions and sizes, translating hardcorded texts, and russian layout of +// virtual keyboard (OMORI 1.0.8). +// Patched & bundled by hat_kid. For OMORI RUS mod. https://vk.com/omori_ru + + +// ============================================================================ +// Patches for plugin: Omori Title Screen +// ============================================================================ + +Scene_OmoriTitleScreen.prototype.createTitleCommands = function() { + // Initialize Title Comands + this._titleCommands = []; + // Text Array + var textList = LanguageManager.getMessageData("XX_BLUE.Omori_Title_Screen").commands + // Get Center X Position + var centerX = 20; + // Go Through Text Array + var previous_width = 0; + for (var i = 0; i < textList.length; i++) { + // Get Text + var text = textList[i]; + // Create Window + var win = new Window_OmoTitleScreenBox(text); + // Set Wnidow Position + win.x = centerX + previous_width; + previous_width += win.width + 15; + win.y = Graphics.height //(Graphics.height - win.height) - 22 + // Select Window + if (i === this._commandIndex) { win.select(0)} + // Add window to title Commands + this._titleCommands[i] = win; + this.addChild(win) + }; + // Set Continue text + this._titleCommands[1].setText(textList[1], this._canContinue); + +}; + + +// ============================================================================ +// Patches for plugin: Omori Main Menu +// ============================================================================ +// Line: 261, Original item spacing: 12 +Window_MenuCommand.prototype.spacing = function () { return -4; }; + + +// ============================================================================ +// Patches for plugin: Omori Main Menu - Scene Skill +// ============================================================================ +// Line: 773, Original window width: 115 +Window_OmoMenuSkillEquipControl.prototype.windowWidth = function () { return 190; }; + + +// ============================================================================ +// Patches for plugin: Omori Main Menu - Scene Item +// ============================================================================ +// Line: 829, Original window width: 115 +Window_OmoMenuItemConfirmation.prototype.windowWidth = function() { return 170; }; + + +// ============================================================================ +// Patches for plugin: Omori Save & Load +// ============================================================================ + +Window_OmoriFileInformation.prototype.refresh = function() { + // Clear Contents + this.contents.clear(); + // Get Color + var color = 'rgba(255, 255, 255, 1)'; + // Get ID + var id = this._index + 1; + var valid = DataManager.isThisGameFile(id); + var info = DataManager.loadSavefileInfo(id); + + // Draw Lines + this.contents.fillRect(0, 29, this.contents.width, 3, color); + for (var i = 0; i < 3; i++) { + var y = 55 + (i * 25) + this.contents.fillRect(113, y, this.contents.width - 117, 1, color); + }; + + // Draw File + this.contents.fontSize = LanguageManager.getMessageData("XX_BLUE.Window_OmoriFileInformation").refresh_contents_fontsize; + let loc_position = LanguageManager.getMessageData("XX_BLUE.Window_OmoriFileInformation").file_position + this.contents.drawText(LanguageManager.getMessageData("XX_BLUE.Omori_Save_Load").file.format(id), loc_position[0], loc_position[1], 100, this.contents.fontSize); + // If Valid + if (valid) { + loc_position = LanguageManager.getMessageData("XX_BLUE.Window_OmoriFileInformation").refresh_drawText_position; + let chap = LanguageManager.getMessageData("XX_BLUE.Chapter_Names")[info.chapter] + if(!chap) { + chap = info.chapter + } + this.contents.drawText(chap, loc_position[0] + 14, loc_position[1], this.contents.width, this.contents.fontSize); + this.contents.fontSize = 28; + + let backBitmap = ImageManager.loadSystem('faceset_states'); + let width = backBitmap.width / 4; + let height = backBitmap.height / 5; + // this.contents.blt(backBitmap, 0, 0, width, height, 0, 34, width + 10, height); + this.contents.blt(backBitmap, 0, 0, width, height, 1, 33); + // Get Actor + var actor = info.actorData + // Draw Actor Face + let bit = ImageManager.loadFace(actor.faceName); + bit.addLoadListener(() => this.drawFace(actor.faceName, actor.faceIndex, -2, this.contents.height - Window_Base._faceHeight + 7, Window_Base._faceWidth, height - 2)); + // Draw Actor Name + this.contents.fontSize = 24; + this.contents.drawText(actor.name, 118, 30, 100, 24); + // Draw Level + loc_position = LanguageManager.getMessageData("XX_BLUE.Window_OmoriFileInformation").level_position; + this.contents.drawText(LanguageManager.getMessageData("XX_BLUE.Omori_Save_Load").level, loc_position[0] - 25, loc_position[1], 100, 24); + this.contents.drawText(actor.level, loc_position[0], loc_position[1], 70, 24, 'right'); + // Draw Total PlayTime + loc_position = LanguageManager.getMessageData("XX_BLUE.Window_OmoriFileInformation").playtime_position; + this.contents.drawText(LanguageManager.getMessageData("XX_BLUE.Omori_Save_Load").playtime, 118, 55, 200, 24); + this.contents.drawText(info.playtime, loc_position[0], loc_position[1], 100, 24); + // Draw Location + this.contents.drawText(LanguageManager.getMessageData("XX_BLUE.Omori_Save_Load").location, 118, 80, 200, 24); + this.contents.drawText(info.location, 205, 80, 210, 24, 'right'); + }; + + // Draw Border + this.contents.fillRect(102, 32, 3, 102, 'rgba(255, 255, 255, 1)') + this.contents.fillRect(0, 29, 108, 3, 'rgba(255, 255, 255, 1)') +}; + +// For compatibility with 1.0.7 and lower versions. +Scene_OmoriFile.prototype.onSelectInputOk = function() { + // Get Index + var index = this._commandWindow.index(); + // Get Save File ID + var saveFileid = this.savefileId(); + // If Save + if (index === 0) { + // If File Exists + if (StorageManager.exists(saveFileid)) { + // Show Prompt Window + this.showPromptWindow('Переписать этот файл?'); + // Set Can select Flag to false + this._canSelect = false; + } else { + // Save The Game + this.saveGame(); + }; + } else { + // If File Exists + if (StorageManager.exists(saveFileid)) { + // Show Prompt Window + this.showPromptWindow('Загрузить файл?'); + // Set Can select Flag to false + this._canSelect = false; + } else { + // Play Buzzer Sound + SoundManager.playBuzzer(); + }; + }; +}; + +Window_OmoriFileCommand.prototype.makeCommandList = function () { + this.addCommand("СОХРАНИТЬ", 'save', this._canSave); + this.addCommand("ЗАГРУЗИТЬ", 'load', this._canLoad); +}; + +Window_OmoriFilePrompt.prototype.makeCommandList = function () { + this.addCommand("ДА", 'ok'); + this.addCommand("НЕТ", 'cancel'); +}; + +Window_OmoriFileCommand.prototype.initialize = function() { + // Original window X position: 42 + Window_Command.prototype.initialize.call(this, 20, 28); + this.setupFile(true, true); +}; + +// Line: 677, Original window width: 119 +Window_OmoriFileCommand.prototype.windowWidth = function () { return 160; }; + +// Line: 683, Original cursor rect X-offset: 40 +Window_OmoriFileCommand.prototype.customCursorRectTextXOffset = function() { return 35; }; + + +// ============================================================================ +// Patches for plugin: Omori BlackLetterMap +// ============================================================================ + +Sprite_OmoBlackLetterMap.prototype.createOverlaySprites = function() { + // Create Overlay Bitmap + var bitmap = new Bitmap(Graphics.width, Graphics.height); + // Get Background Bitmap + var bgBitmap = ImageManager.loadAtlas('blackLetter_map_atlas'); + var bgBitmap50 = ImageManager.loadAtlas('blackLetter_map_50_atlas'); + // Get Map Data + bgBitmap.addLoadListener(() => { + bgBitmap50.addLoadListener(() => { + var mapData = [ + {name: 'ЛЕС СВЕТЛЯЧКОВ', namePos: new Point(80, 195), rect: new Rectangle(0, 0, 193, 139), pos: new Point(111, 103), blackSwitchId: 23, nameSwitchId: 30, blackSwitch50Id: 900 }, + // {name: 'Forgotten Pier', namePos: new Point(200, 27), rect: new Rectangle(194, 0, 155, 120), pos: new Point(225, 52), blackSwitchId: 21, nameSwitchId: 29 }, + {name: 'ЛЕС ВЕРТУШЕК', namePos: new Point(440, 240), rect: new Rectangle(350, 0, 99, 107), pos: new Point(471, 128), blackSwitchId: 24, nameSwitchId: 31, blackSwitch50Id: 901 }, + {name: 'ДЕРЕВНЯ РОСТОКРОТОВ', namePos: new Point(25, 340), rect: new Rectangle(450, 0, 94, 80), pos: new Point(54, 267), blackSwitchId: 25, nameSwitchId: 32, blackSwitch50Id: 902 }, + {name: 'БЕСКРАЙНИЙ ЛЕС', namePos: new Point(250, 300), rect: new Rectangle(0, 124, 640, 201), pos: new Point(-2, 143), blackSwitchId: 26, nameSwitchId: 33, blackSwitch50Id: 903 }, + {name: 'ГЛУБОКИЙ КОЛОДЕЦ', namePos: new Point(450, 355), rect: new Rectangle(0, 326, 418, 113), pos: new Point(119, 366), blackSwitchId: 27, nameSwitchId: 34, blackSwitch50Id: 904 }, + {name: 'АПЕЛЬСИНОВЫЙ ОАЗИС', namePos: new Point(20, 55), rect: new Rectangle(545, 0, 122, 102), pos: new Point(31, 85), blackSwitchId: 28, nameSwitchId: 35, blackSwitch50Id: 905 }, + {name: 'ВНЕЗЕМЕЛЬЕ', namePos: new Point(450, 75), rect: new Rectangle(419, 326, 140, 209), pos: new Point(390, 21), blackSwitchId: 29, nameSwitchId: 36, blackSwitch50Id: 906 }, + ] + // Initialize Name Windows Array + this._nameWindows = []; + // Create Container for Name Windows + this._nameWindowsContainer = new Sprite(); + // Go Through Map Data + for (var i = 0; i < mapData.length; i++) { + // Get Data + var data = mapData[i]; + // Get Rect & Position + var rect = data.rect, pos = data.pos; + var test = Math.randomInt(100) > 50; + // If Black switch ID is not on + /*if (!$gameSwitches.value(data.blackSwitchId)) { + if (!$gameSwitches.value(data.blackSwitch50Id)) { + // Draw Black onto Bitmap + bitmap.blt(bgBitmap50, rect.x, rect.y, rect.width, rect.height, pos.x, pos.y); + } else { + + } + };*/ + //if(!!$gameSwitches.value(data.blackSwitchId)) {bitmap.blt(bgBitmap, rect.x, rect.y, rect.width, rect.height, pos.x, pos.y);} + //else if(!!$gameSwitches.value(data.blackSwitch50Id)) {bitmap.blt(bgBitmap50, rect.x, rect.y, rect.width, rect.height, pos.x, pos.y);} + if(!!$gameSwitches.value(data.blackSwitch50Id)) {bitmap.blt(bgBitmap, rect.x, rect.y, rect.width, rect.height, pos.x, pos.y);} + else { + if(!$gameSwitches.value(data.blackSwitchId)) { + bitmap.blt(bgBitmap50, rect.x, rect.y, rect.width, rect.height, pos.x, pos.y); + } + } + // Get Name Position + var namePos = data.namePos; + var name = $gameSwitches.value(data.nameSwitchId) ? data.name : "???" + // Create Window + var win = new Window_OmoBlackLetterMapName(name); + // Set Window Position + win.x = namePos.x; win.y = namePos.y; + this._nameWindows.push(win); + this._nameWindowsContainer.addChild(win); + }; + // Create Black Overlay Sprite + this._blackOverlay = new Sprite(bitmap); + this.addChild(this._blackOverlay) + + // Add Name Window container as a child + this.addChild(this._nameWindowsContainer); + this.createTextCounterSprite(); + }) + }) +}; + + +// ============================================================================ +// Patches for plugin: YIN_OmoriFixes +// ============================================================================ + +Game_System = class extends Game_System { + initialize() { + super.initialize(); + this._badWords = [ // Bad words should be all lowercase! + // Bad Words + "спид","анал","анус","зад","жопа","попа","яйца","шары","чурка","козёл","сюка","сучка","сука", + "минет","грудь","стояк","сиська","бум","груди","головка","рак","сиси","клит","клитор","кокаин","член", + "коитус","комми","презик","презерватив","кам","кумер","хуила","дерьмо","промежность","конча","пизда","чёрт","ебырь", + "ёбырь","пенис","дилдо","дилф","дилфа","нарк","тупой","сучий","enema","стояк","эскимо","блядун","бля","блять", + "гей","гомик","голубой","гук","гипси","сиськи","долбоёб","героин","герпес","вич","шлюха","дыра","гомо","honk", + "ссань","хорни","херня","идиот","инцест","хер","яп","выдроч","еврей","киска","конча","хуец","качок", + "клоун","тварь","шмара","киллер","убийца","кинк","ккк","алкаш","koon","жигало","нахуй","нахер","kunt", + "лесбиянка","лесбо","лоли","лсд","смазка","линч","мамка","мет","милфа","милф","molest","мама","mong","придурок", + "muff","дегенерат","ебанат","нацист","маньяк","муслим","наци","негра","негро","н1г","черножопый","нег","сосок", + "ниггер","чёрный","черный","говнюк","гнида","орал","чернокожий","оргии","оргия","узкоглазый","казах","узбек","паки", + "трусы","трусики","п3нис","п3н1с","чл3н","извр","извра","ебан","ёбаный","моча","прыщ","м0ча","плейбой","pocha", + "пидрила","пидор","поляк","порн","кака","порно","пи3да","пи3д4","дрочила","пися","писька","пидарас","педераст","квир", + "quim","расист","ебанько","пендос","изнасилование","насильник","ректум","простата","краснокожий","даун","патау","reject", + "отсталый","ссака","пиздец","корень","срака","русский","срань","шизик","писос","шиз","сволочь","screw","scrotum", + "scrub","семя","секс","похуй","срал","срёт","кусок","пердёж","пердак","раб","славянин","потаскуха","пердун","содомит","сопля", + "содом","пика","хуйня","сперма","яйцо","трах","стриптиз","стрип","яичко","суицид","сифилис","тампон","недоумок", + "сись","террорист","хуй","дурак","целка","титя","туалет","tramp","транс","транни","троян","паскуда","высер","twink", + "урина","матка","вагина","вагинальный","вибратор","девственник","рвота","вульва","wank","weenie","пипи","влажный", + "whigger","виски","белый","урод","стукач","друг","willy","мудак","шзнх","втф","чмо","xtc","ххх","янки", + "yid","zigabo","фембой","фэмбой","хуе","ебло","ебли","еблан","еба","е6ло","е6ли","е6лан","е6а","нефор","фашист", + "залуп","уёб","уё6","уеб","уе6","струя","взъебщик","взъебка","взъеб","взьеб","какиш","кукиш","сасун","сосун", + "сосня","сося","соснут","посос","подсос","мудень","автограф","ебл","ёбл","е6л","ё6л","ёбар","ебар","ё6ар","е6ар", + "агрегат","акробат","кринж","хуель","хуёль","ёбаной","ебаной","армячок","афедрон","пассив","актив","девка", + "дефка","деффка","дефффка","деввка","девввка","беспиздая","бздение","бзднул","бздёж","бзданул","бздеть","бздея", + "бздун","бздык","бздюх","биатлон","бикса","шмара","блуд","блядво","блядство","блядеха","блядина","блядище", + "блядки","блядо","блядов","говно","гавно","залупа","давалка","петух","мудила","рукоблуд","ссанина","очко", + "ебланище","влагалище","пёрдун","туз","малафья","пилотка","манда","путана","педрила","шалава","мошонка","елда", + "раунд","бляди","пизд","блядьмо","блядюга","блядюра","блядюш","блядюшка","бляха","бордель","сперм","буденовка", + "будёновка","буден","будён","хуеверт","хуёверт","хуевёрт","хуёвёрт","коксак","глори","холл","хол","буль", + "бульда","бульза","буфер","капот","вакхан","бункер","вафлист","вдуть","хуеглот","хуёглот","хуйка","вендетта", + "вендета","версаль","вжоп","вздроч","вагин","защеку","за щеку","педек","вислозад","вислозадый","висюлька","всос", + "сасный","вманде","манде","манду","вмандить","мудозвон","мандошка","вмандошить","мандош","выебат","мандоха", + "мандюрить","мандюря","мандяка","мандя","мандяха","мудоха","пиздит","пиздошка","пиздушка","пиздошки","ляха", + "гурукакашек","аппендикс","апендикс","апндкс","пиздюк","пиздрон","впиздувсё","пиздярить","пиздяр","пиздяка", + "уретра","ректал","суходроч","эрот","этти","бака","косоёб","косоеб","сосоеб","сосоёб","унитаз","пасс","акт", + "конеёб","коноеб","коноёб","котоёб","котоеб","неегр","нееегр","неееегр","неегры","нееегры","охуярок","укурок", + "хуяка","хуякать","хуякивание","обхуярный","хуярить","бамбамбам","бамбам","бамбамба","детей","дитей","дура", + "вебкам","выебон","глист","кишка","пиздякаться","гончар","кончар","минетчик","минетить","кунилингусить", + "ссаный","санный","ссанный","саньё","ссаньё","ссанье","санье","обсер","обсёр","срундель","сруль","хуёво","хуево", + "трахарь","голый","одетый","харя","хач","говёный","говённый","говеный","говенный","говнец","гавёный","гавённый", + "гавеный","гавенный","гавнец","генерал","глиномес","глотать","говниться","гавниться","говняц","гавняц","писичк", + "сисичк","попочк","говнодав","говножуй","говноёб","говномер","говномес","говносерка","говнякаться","голожоп", + "страпон","дилдос","анальныйвыдроч","девство","додик","додек","додроч","джигит","дешовка","дешевка","дилда", + "доебон","дойка","дойки","долданьё","долданье","долдарь","долдать","писюн","писюнчик","усрал","усрался","охуеть", + "ахуеть","нихуя","ебанатик","ебатория","ебариш","ебаришко","смекта","виагра","ебена","еби","какаха","ебёнтъ", + "ебентъ","ебистос","ёбкая","еблематика","еблематик","еблом","ёбнутый","ебота","ебня","еботина","еботня","ёбс", + "ебс","ебун","ебти","ебукентий","ебур","жирнозадый","жопища","жопенция","жопень","жопоёб","жопник","жопочка", + "журло","журня","заглот","заглотик","бомж","заеб","заёба","заеба","заёб","заебать","пердеж","запор","засеря", + "засос","засирать","затруха","херотень","хуетень","захуень","злоебучий","уёбище","уебище","факю","фак ю","фак-ю", + "фак_ю","импотент","инвалид","хуесос","лох", + + // Names + "обри","бэзил","банди","ленин","гектор","хиро","гитлер","крутозуб","цзинь","кел","ким чен","маленький","мари", + "базиль","осама","плутон","полли","путин","потрошитель","рококо","сталин","трамп","зодиак","тесак","мюнхен", + "сваста","свастик","свастон","зиг","хаиль","поттхаст","гимлер","геббельс","геринг","гиммлер","гебельс", + "геббльс","гебльс","гибельс","гиббльс","гибльс","герринг","чубайс","чвк","редан","рёдан","вангер","раден", + "солдат","воен","войн","хохлы","хохол","русня","свин","рейх","скотина","монашка","манашка","крым","украина", + "либераха","либераст","либираст","америка","россия","цыган","цацка","циган","монеточка","фем-бой","фем_бой", + "фем бой","фэм-бой","фэм_бой","фэм бой","суси","сусси","трансфем","трансфэм","траснмаск","лгбт","квиры","квирка", + "транси","дуров","рунет","копро","стрелок","зоофил","некро","педо","борат","барат","брат","сестра","мскр","пупс", + "пушкин","лермонтов","багиль","багель","бэгель","бабиль","бэбиль","бобиль","фуфел","мамонт","попк","иисус", + "христос","господ","свят","библия","мать","отец","отчим","баба","дед","дядя","тётя","тетя","папа","дочка","сын", + "кун","калл","кал","трансформ","негодяй","простофиля","срунгель","голубок","гонорея","сосок","сосочек","гузно", + "гузноеб","грызло","гузноёб","гузнотёр","гузнотер","спиногрыз","даваха","дама","колхоз","сексист","феминист", + "анархист","пацифист","нудист","тупой","военком","тусы","панцу","бомб","ирак","убил","ядерка","меф","мефедрон", + "мефедр","батюшк","батя","дохлый","дристун","конопля","поллюция","полюция","полиция","фурри","фури","эбало", + "ебало","заэбало","муж","жена","дети","мандавошка","миллиция","милиция","какать","какаш","дрыщ", + // Foreign Language Bad Words + "курва","puta","куколд","mierda","pendejo","нигга","нибба","трап","perra","faggot","dilldoe","blacky","pniss", + "байден","омори", + ]; + } +} + +Window_OmoriInputLetters.prototype.onNameOk = function() { + // Get Text + var text = this._nameWindow.name(); + // If Text Length is more than 0 + if (text.length > 0) { + if(text.toLowerCase() === "омокэт") { + $gameSystem.unlockAchievement("YOU_THINK_YOU_RE_CLEVER_HUH") + } + if (new RegExp($gameSystem._badWords.join("|")).test(text.toLowerCase())) { // YIN - Bad words check + this.playBuzzerSound(); + return; + } + this.deactivate(); + this.close(); + this._nameWindow.close(); + if (_TDS_.NameInput.params.nameVariableID > 0) { + $gameVariables.setValue(_TDS_.NameInput.params.nameVariableID, text); + }; + } else { + this.playBuzzerSound(); + }; +}; + + +// ============================================================================ +// OMORI RUS mod specific: Bad ending movie cover switcher. +// Switches between Russian cover and original cover of My Time by Bo En. +// ============================================================================ + +(function() { + var _ConfigManager_makeData = ConfigManager.makeData; + ConfigManager.makeData = function() { + var config = _ConfigManager_makeData.apply(this, arguments); + config.rusCoverInBadEnding = this.rusCoverInBadEnding; + return config; + }; + + var _ConfigManager_applyData = ConfigManager.applyData; + ConfigManager.applyData = function(config) { + _ConfigManager_applyData.apply(this, arguments); + if (config['rusCoverInBadEnding'] === undefined) + this.rusCoverInBadEnding = true; + else + this.rusCoverInBadEnding = this.readFlag(config, 'rusCoverInBadEnding'); + }; + + Window_OmoMenuOptionsGeneral.prototype.processOptionCommand = function() { + // Get Index + var index = this.index(); + // Get Data + var data = this._optionsList[index]; + // Switch Case Index + switch (index) { + case 0: // Screen Resolution + // Set Width & Height + Yanfly.Param.ScreenWidth = 640 * (data.index + 1); + Yanfly.Param.ScreenHeight = 480 * (data.index + 1) ; + SceneManager._screenWidth = Yanfly.Param.ScreenWidth; + SceneManager._screenHeight = Yanfly.Param.ScreenHeight; + // SceneManager._boxWidth = Yanfly.Param.ScreenWidth; + // SceneManager._boxHeight = Yanfly.Param.ScreenHeight + Yanfly.updateResolution(); + Yanfly.moveToCenter(); + //window.moveTo(x, y); + // Set Config Manager Screen Resolution + ConfigManager.screenResolution = data.index; + break; + case 1: // Fullscreen + // Set data Index + //data.index === 0 ? Graphics._requestFullScreen() : Graphics._cancelFullScreen(); + // Set config manager Full screen state + ConfigManager.fullScreen = data.index === 0 ? true : false; + this._processDelay = 20; + //Input.update(); + break; + case 2: + ConfigManager.gamepadTips = data.index === 0 ? false : true; + if(SceneManager._scene instanceof Scene_OmoriTitleScreen) { + SceneManager._scene.refreshCommandHints(); // Refresh command title hints; + } + break; + case 3: ConfigManager.textSkip = data.index === 0 ? true : false; break; + //case 3: ConfigManager.battleAnimations = data.index === 0 ? true : false ;break; + //case 4: ConfigManager.battleAnimationSpeed = data.index ;break; + case 4: ConfigManager.battleLogSpeed = data.index; ;break; + case 5: ConfigManager.alwaysDash = data.index === 0 ? true : false ;break; + + // OMORI RUS mod specific: + case 6: ConfigManager.rusCoverInBadEnding = data.index === 0 ? true : false; break; + }; + }; +})(); + + +// ============================================================================ +// Patches for plugin: GTP_OmoriFixes +// ============================================================================ + +Gamefall.OmoriFixes = Gamefall.OmoriFixes || {}; + +(function($) { + + Yanfly.BEC.BattleManager_processTurn = function() { + var subject = this._subject; + var action = subject.currentAction(); + if (action) { + action.prepare(); + if (action.isValid()) { + this.startAction(); + } + else { + //=================================== + // Addon for checking JUICE + if(DataManager.isSkill(action.item())) { + if(subject.mp < action.item().mpCost) { + this._logWindow.push("addText", subject.name().toUpperCase() + " не хватает СОКА!"); + this._logWindow.push("wait"); + } + } + //=================================== + } + subject.removeCurrentAction(); + } else { + subject.onAllActionsEnd(); + this.refreshStatus(); + this._logWindow.displayAutoAffectedStatus(subject); + this._logWindow.displayCurrentState(subject); + this._logWindow.displayRegeneration(subject); + this._subject = this.getNextSubject(); + } + } + + $.Print_Something_Txt = function() { + const path = require("path"); + const fs = require("fs") + const os = require("os"); + var base = path.dirname(process.mainModule.filename); + var deskDir = `${base}/`; + NativeFunctions.writeExternalFileUTF8(deskDir + `___для_${$gameActors.actor(8).name()}___.txt`, `............. ... ............................... ..... ............. ..... .. + ........... . .. . . .. ... . .. .. ... . .. + ........... .. . . . OOZZZZZO . .. ... ... . .. ... + ........... .. .OZZZZZZZZZZZZZO, . . .. .. . . + ............. .. . . . ZZZZZZZZZZZZZZZZZZZZO.... ... ... ... ... ... ... .. + ............. ... ... ?ZZZZZZZZZZZZZZZZZZZZZZZMMZO...... ........ ......... + .................... MZZZZZZZZZZZZZZZZZZZZZZZZZZZMZZZ ......................... + ..... . .........MMMZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ........................ + . . ....... OZZMMZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ$...................... + . . .......ZZZOMMMMMMMMMZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ .................... + . . . ......NZZMNMMMMMMMMMMNNZZMMMNMOMMOM8ZZZZZZZZZZZZZZI................... + . . . ......OMZZZMMMMMMMMMMMMMZZZMMMMMMZZMZZZZZZZZZZZZZZZZ................... + .. ... .. ....MZZZOMMMMMMMMMMMMMMZNMMMMMMMZMMZZZZZZZZZZZZZZZZZ, ................ + .............MMZMZZZZMMMMZMMMMMMMMMMZZMMMMMZZZZZZZZMZZMOZZZMMZZ~................ + .. . ..=MMZMMMZMZZMZOMMMMMMMMMMMMMMMMZZZZZZZZZZZZMOZMMMMZZZ................ + ............MOMZNOOOMMMMZZDONMMMMMMMMMMMOOZZMDZOZOMOZZNNNMMMMMMOZ~.............. + . . . .ZMMMZZZZMZZZMMMDMMMMMMMMMMMMMMZZZZZMDOZMZOMMMZMOMZMZZZZ ............. + . .. . MZMMZZZMZZZOZOZZZMOMMMMMMMMMZZZMMMMZZ8MMMMMMZZMZZMZMMZZZZ............. + ..........ZMZZOZOZZZMZZMZZDONMMMMMMMMM.,OMMMZZMMMMMMMMMMMMMMMMMMMZZ ............ + . . ZMOMZOMOMMMMZZMMZDOMOOMMMOMM=.. ,MMMMMMMMMMMZMMMZMMMMMMMMZI............ + .. ... ZOMMMMMMMMMMMMZOZMDO8ZMMOMMMZ.....MMMMMMMMMMMMMMMMMMMMMMMMOZ............ + ........ZZMMZMMMMMMZZMMZZMMMMZMMMMMM,. ...IMMMMMMMMMMMMMMMMMMMMMMMMZ$........... + .......8ZZMMMMMMMOMMZZMMZZZZZMMMMMM7.......IMMMMMMMMMMMMMMMMMMMMMMMOZ........... + . .... O8DMMDDDZZMMOODOZZZDZDDDZMD~.........MMMMMMMMMMMMMMMMMMMMMMMMD........... + . ..MMZOMMMOMZZMMZZMMZZOZZMMMZMZ:.........,MMMMMMMMMMMMMMMMMMMMMMMMO ......... + ..... MNZZZZZMMZZMOZZZZZZZDZZZZMZM. .........OMMMMMMMMMMMMMMMMMMMMMMOM ......... + ......MNZZZZZZZZZ8NZZZZNZZ8ZZZNM8~. .........~MMMMMMMM8M8ZMMMMMMMMMMM8 ......... + .....MMNZZZZZZZZMZMOMMONOMMZOMZZ..............~MMMMMMZMOMMZMMZMZOMMMMMZ......... + ....IMMMDDZZZZDZDDMZDMMMMMNDDMOZ...............=MMDDZMDZ8DOZZZZZZZDMDMM ........ + ....MMMZZMZZZZMMMMMMMMMOMZMMMZM:.............. =ZMMMZMZZZZZZZZZZZZZMZZM:........ + ....MMMMOZMMZMMZZMMMMMMMMMMMMOZ.................IMMMMMOZZZZZZZZZZZZZZZZM........ + ...MMMNOON8MMNMMMMMMMMMMMMMMMM...................ZMZO88ZNZZZZZZZZZZZZNMN8....... + ...MMZMNZZMMMMMMMMMMMMMMMMMMMM. ................,+MZZMMMZMOZZMOZZZZOZZZZO....... + ...MMZMNOMMMMMMMMMMMMMMMMMMMMZ. ..................MMZMZMZZMMMZMOZZDZZZZZM....... + .. MMMMMMMMMMMMMMMMMMMMMMMMMM. ...................MMMMMMMMMMMMMMMZDZZZZZZ+...... + ..MMMMMMMMMMMMMMMMMMMMMMMMMMM................... .=MMMMMMMMMMMMMMODMMMZZZO ..... + ..MMMMMMMMMMMMMMMMMMMMMMMMMMN. ...... ~+..........,MMOZMMZMMMMMMMMMMNMOZZZ,..... + . MMMMMMMMMMMMMMMMMMMMMMMMMMN. ...,ZNУ.ТЕБЯM,...... MMMMMMOZMMMMMMMMMMMMZMO..... + . MMMMMMMMMMMMMMMMMMMMMMMMMMD, ...NMЧТО-ТОNNM.......MZMMMMZMMMMMMMMMMMMMMMM..... + .MMMMMMMMMMMMMMMMMMMMMMMMMMMD ....MMMMЗАMMMMM,......M8MDMMNMMMMMMMMMMMMMMMM..... + . MMMMMMMMMMMMMMMMMMMMMMMMMMD.....MMMТВОЕЙMMM .... .ZZMZOMMMMMMMMMMMMMMMMMM..... + . MMMMMMMMMMMMMMMMMMMMMMMMMMM.....:MMСПИНОЙM.......MZOMOMZMOMMMMMMMMMMMMMMM..... + . MMMMMMMMMMMMMMMMMMMMMMMMMMMI......=?MMMM.........MMMZMMMOZMZMMMMMMMMMMZZZ..... + .,MMMMMMMMMMMMMMMMMMMMMMMMMMMM.....................MMMMMMMMMZZMOMMMMMMMMMMO..... + .MMMMMMMMMMMMMMMMMMMMMMMMMMMMM....................+MMMMMMMMMDZMD8MDDMMMMMMD..... + .MMMMMMMMMMMMMMMMMMMMMMMMMMMMM.................. .MMMMMMMMMMZMMMMMDMNMMMMZZ..... + .MMMMMMMMMMMMMMMMMMMMMMMMMMMMM.................. .MMMMMMMMMMMMMMMMMMOMMMZZZM.... + .MMMMMMMMMMMMMMMMMMMMMMMMMMMMM, .... ............ZMMMMMMMMMMMMMMMMMMMMMMMZMM.... + MMMMMMMMMMMMMMMMMMMMMMMMMMMMMZ,.................MMMMMMMMMMMMMMMMMDMMMMMZOMM.... + .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM.................ZMMMMMMMMMMMMMMMMMMMMMMMMMOM.... + . MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM...............:MMMMMMMMMMMMMMMMMMMMMMMMMZZZ.... + ..MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM...............+MMMMMMMMMMMMMMMMMMMMMMMMZZZZ.... + ..MMMMMMMMMMMMMOMMZMMMMMMMMMMMMM .............=MMMMMMMMMMMMMMMMMMMMMMMMMZZZZ.... + ..MMMMMMMMMMMMMMZZMMMMMMMMMMMMMMZ,.......... OMMMMMMMMMMMMMMMMMMMMMMZMMZZZZZ.... + .. MMMMMMMMMMMMOOZMMMMMMMMMMMMMMMZ: .........MMMMMMMMMMMMMMMMMMMMMMMOMMMZZZZI... + .. MMNMM8MMNODZZO8MMMMMMMMMMMMMMMMZ:........MMMMMMMMMM8MMMMMMMMMNMM88ZM8ZZZZ+... + .. MMMZ8MZZZMZZZZMMMMMMMMMMMMMMMMMMZ.......IMMMMMMMMMMMMMMMMMMMOMMDMZZZZZZZZZ... + ..MMMMMMM$OOZZZZOMMMMMMMMMMMMMMMMMMM.... .OMMMMMMMMMMMMMMMMMMMMMMZZOZZZZZZZZZ... + ..MMMMZNOZZZZZZZZMZZMMMMMMMMMMMMMMMM=. ..=MMMMMMMMMMMMMMMMMMNMZZZMZZZZZMMZZZZ... + ..MMMMM8ZZZZZZZZMMMMMMMMMMMMMMMMMMMMMM .IMMMMMMMMMMMMMMMZMMMMMMZZMDMZOZMZZZZZ... + ..MMMMMNNNZZZZZN8ZDMMMMMMMMMMMMMMMMMMM..MMMMMMMMMMMMMMMM8MMDMNZMMNMM88ZZZZZZZ... + ..MMMMMMMMZZZZZZMZMMMMMMMMMMMMMMMMMMMMZZMMMMMMMMMMMMMMMMMZZMMMOMMMMMZMMZZZZZZ .. + ..MMMMMMMZZMZZZMZMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOMMMMMMMMMMZMZZZZ .. + ...MMMMMMMZMOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZMMMMMMMDMMOOMMMMZZ .. + ...MMMMMZMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZMMZMZZ .. + ...MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZMMMMMMMMMMMMMMMMMMMMMMMMZZ .. + ...MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM... + ...MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZMMMMMMMMMMMMMMMMMMMMMMM... + ...MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM .. + ....MMMMMMMMMMMMMMMOZOMMMMMMOMZZMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM... + ....MMMMMMMMMMMZMMMMMMMMMMMMMMZMMMMMMMMMMMMMMMMMMMMMMMMMMZMMMMMMMMMMMMMMMMMMM... + ....MMMMMMMMMMMMMMMMMMMZZZDZOMZZMZZZZZMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM... + ....MMMMMMMMMMMMMMMMMMMMMMMMNOZZZZZZZZZMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM... + ....MMMMMMMMMMMMMMMMMMMMMMMZMOZZZZZZZZZZMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM7... + ....MMMMMMMMMMMMMMMMMMMMMMMMMMMMZZZZZZZZZOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM7... + ....DMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZZZZZZZMMMMMNZZZMMMMMMMMMMMMMMMMMMMMMMMMZ.... + ....DMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZZZZZZZZZMMM8MZZZZZZMMMMMMMMMMMMMMMMMMMMZ.... + .... MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZZZZZZZZDMMMZZZZZZMMMMMMMMMMZMOMMMMMMMM.... + .....MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZZZZZZZMMMMMZZZZZMMMMMMMMMMMMMOMMMMMMM.... + .... MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZZZZZMZ8ONOZZZZMMMMMMMMMMMMMMOMMMMMM.... + .....MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZZMZZOZZZZZZM=...,MMMMMMMMMMMMMMM.... + ..... MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZ8ZOZZZZZZ. .....MMMMMMMOMMMMMMM.... + ......MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZMMOZZZZZZZM .......MZOMMMMMMMMMMM.... + ......MMMMMMMMMMM. ..... MMMMMMMMMMMMMMMMMMMMZZZZZZZZ..........MMMMMMMMMMMMM.... + ......MMMZMMMMMM..........MMMMMMMMMMMMMMMMMMMMZZZZZZM..........NMMMMMMMMMMMM.... + ......MMZMZMMMM=...... . ..MMMMMMMMMMMMMMMMMMDODZMMM.. .. ......MMMMMMMMMMMM. .. + ......MMZ$ZMMMM............MMMMMMMMMMMMMMMMMMNMMONM,............NMMMMMMMMMMO.... + .......MMOMZZOM,...... ....+MMMMMMMMMMMMMMMMMMMNMNM ............ MMMMMMMMM8Z.... + .......MZZZOZMO....... .....MMMMMMMMMMMMZMMMMMMMMMM..............MMMMMMMMMMM.... + .......MZOZZZZ .............MMMMMMMMMMMMMMZZMMMMMM.... ...........MMMMMMMMNO.... + .......NZMZZOM .............MMMMMMMMMMMMMMMMMMMMMM................MMMMMMMZO+.... + .......ZZZMZZZ ... . .... MMMMMMMMMMMMMMMMMMMMM .... ......... .7MMMMMMOM+.... + .......MMZMZZN..............:MMMMMMMMMMMMMMMMMMMM,................ MMMMMOMN?.... + .......MMOOMM................MMMMMMMMMMMMMMMMMMMM .................MMMMMMZM+.... + ........OMZMM ........ ..... MMMMMMMMMMMMMMMMMMMM ..................MMMMMZN+.... + ........MMMMM...............:MMMMMMMMMMMMMMMMMMM. ..................MMMMMMM+.... + ........MMMMM............... MMMMMMMMMMMMMMMMMMM. .... .............:MMMMMM+.... + ........MMMMM... ..... . ....MMMMMMMMMMMMMMMMMMM. .... ......... ... MMMMMM .... + ........NMMM ................MMMMMMMMMMMMMMMMMM....... ..............MMMMMO..... + .........MZO ......... . ....MMMMMMMMMMMMMMMMMM . ............. . .. MMMMMO..... + ........,O8M.......... ......MMMMMMMMMMMMMMMMMM ..................... MMMM:..... + .........ZMM................ MMMMMMMMMMMMMMZM8M.......................$MMM ..... + ........ MM... ............. MMMMMMMMMMMMMMMZNM.. ................... MMZ...... + ........ MM..... ..... .... .MMMMMMMMMMMMMMMMMM.. .... ......... .. . .MMM ..... + ........ MM .......... ......MMMMMMMMMMMMMMMMM?.. .... .............. . MM ..... + ........ 8M........... . .. .MMMMMMMMMMMMMMMMM. . .... .. ......... . ..M. .. .. + ........ ZM... ..............MMMMMMMMMMMMMMMMM .. ................... ..M ...... + .........Z ........... .... .NMMMMMMMMMMMMMMMM... ... ..... ..... ... ......... + .......... ........... ...... MMMMMMMMMMMMMMMM... ................... .......... + ............................. MMMMMMMMMMMMMMMM... ................... .......... + ............................. MMMMMMMMMMMMMMM+... ................... .......... + ............................. MMMMMMMMMMMMMMM................................... + ...................... .. ... MMMMMMMMMMMMMMM.... .... ......... .... .... ..... + ............................. MMMMMMMMMMMMMMM.... .... ......... .... .... ..... + ............................. MMMMMMMMMMMMMM:.... ................... .......... + ............................. MMMMMMMMMMMMMM..... ................... .......... + ............................. MMMMMMMMMMMMMM..... ................... .......... + ...................... ...... MMMMMMMMMMMMMM .... .............. .... .......... + ..................... ....... MMMMMMMMMMMMZ .... .... ......... .... .... ..... + ............................. MMMMOMMMMMMOM ..... ................... .......... + ..............................MMMMOMMMMMZMM. .... .... ......... .... .... ..... + ..............................MMMMD8DD8OZZZ ..... .... .............. .... ..... + ...............................MMMOZMMZZZZZ...... .... .............. .... ..... + ...............................MMMMMZMZZZZZ .................................... + ..... ... ............ ....... MMZZMZZZZZZZ .... .... ......... .... .... ..... + ..............................$MZZZOOZZZZZZ...... ................... .......... + ...................... ....... ZZZOZZZZZZZ....... .... .............. .... ..... + ........ .....................MZZOZZZZZZZ....... ................... .......... + ...................... ........MZOOZZZZZZZ....... ................... .......... + ..................... ........MM88ZOZNZZZ ...... .... .............. .... ..... + .. . ... .....................MMMZMMMMZZZO...... ................... .......... + ...............................MMMMOMMZ$ZM.. .... .... ......... .... .... ..... + ...............................MMM8ZNMDMMD...................................... + .. ... . ............ .........MMMMMMMMMO . .... .... ......... .... .... ..... + ................................MMMMMMMZ8M...................................... + ..................... ........ MMNMMMMZM. ...... .... .............. .... ..... + ...................... .. ......MMMMMMMMZ. . .... .... ......... .... .... ..... + ................................MMMDMMMMD ...................................... + ................................MMMZMMOMM........ ............ ...... .......... + ...................... .. ...... MOOMZMM . . .... .... ......... .... .... ..... + ...................... .... .....MMMMMMM.. ...... ................... .......... + .................................MMMMZMM......... ................... .......... + .................................MMMMZM ......... ................... .......... + .................................MMMZOM ......... ................... .......... + .................................MMMOMM ... .... .... ......... .... .... ..... + ...................... .. . .....MNZZZ$... ...... ............ ...... .......... + ................................ MMMMZ:......................................... + ..................... ..... ... MMMZM... ... ... ............... ... .......... + ...................... ..........,MMMM.... ...... ................... .......... + ...................... .......... MMZM.... ...... ................... .......... + ..................... ..... ... ..MMM ... .. .... .............. .... .......... + ..................................MMM ........... ................... .......... + ........................... ......MMM....... .... .... ......... .... .... ..... + ..................................MMM............ ................... .......... + ...................... .. ... ... MM ..... . .... .... ......... .... .... ..... + ..................... .... ... ..MM .... ...... .... .............. .... ..... + ..................................DM............. ................... .......... + ....... . .........................=............. ................... .......... + ...................................+............. ................... .......... + ......... ........... ........ .... .... . .... .... ......... .... .... ..... + ................................................................................ + .. .. . . ............ ........ .... ..... ...... .... .............. .... ..... + `) + } + + $.parseNoEffectEmotion = function(tname, em) { + if(em.toLowerCase().contains("afraid")) { + return target.name() + " не может ИСПУГАТЬСЯ сильнее!\r\n"; + } + let finalString = `${tname} не может стать ${em}`; + if(finalString.length >= 40) { + let voinIndex = 0; + for(let i = 40; i >= 0; i--) { + if(finalString[i] === " ") { + voinIndex = i; + break; + } + } + finalString = [finalString.slice(0, voinIndex).trim(), "\r\n", finalString.slice(voinIndex).trimLeft()].join('') + } + return finalString; + } + + $.parseNoStateChange = function(tname,stat,hl) { + let noStateChangeText = `${stat} ${tname} не может` + let second = `стать ${hl}`; // TARGET NAME - STAT - HIGHER/LOWER + let complete = `${noStateChangeText} ${second}`; + if(complete.length < 40) { + BattleManager.addText(complete, 16) + } + else { + BattleManager.addText(noStateChangeText, 1) + BattleManager.addText(second, 16) + } + } + + Yanfly.BEC.Window_BattleLog_displayAddedStates = function(target) { + target.result().addedStateObjects().forEach(function(state) { + var stateMsg = target.isActor() ? state.message1 : state.message2; + if (state.id === target.deathStateId()) { + this.push('performCollapse', target); + } + if(state.id === target.deathStateId() && target.isActor()) { + if([1,8,9,10,11].contains(target.actorId())) { + stateMsg = " теряет сознание!"; + } + } + if (stateMsg) { + this.push('popBaseLine'); + this.push('pushBaseLine'); + this.push('addText', target.name() + stateMsg); + this.push('waitForEffect'); + } + }, this); + } + +})(Gamefall.OmoriFixes); + +Gamefall.JPWordWrap = Gamefall.JPWordWrap || {}; + +(function($) { + + function isTextInCurrentLanguage (text) { + const lang = LanguageManager.defaultLanguage() + switch(lang) { + default: + //let englishOnly = /^[a-zA-Z0-9!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?☆ ]*$/; + //if(!englishOnly.test(text)) {return false} + let russianOnly = /^[а-яА-Я0-9!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?☆ ]*$/; + if(!russianOnly.test(text)) {return false} + break; + case "jp": + let japaneseOnly = /^[\u3000-\u303F|\u3040-\u309F|\u30A0-\u30FF|\uFF00-\uFFEF|\u4E00-\u9FAF|\u2605-\u2606|\u2190-\u2195|\u203B|0-9!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?☆ ]*$/g; + if(!japaneseOnly.test(text)) {return false} + break + case "kr": + let koreanOnly = /(^[\u3131-\u314e|\u314f-\u3163|\uac00-\ud7a3|0-9!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?☆ ]*$)/g + if(!koreanOnly.test(text)) {return false} + case "sc": + let scOnly = /^([\u4e00-\u9eff|\u3000-\u303F|0-9!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?☆ ])*$/ + if(!scOnly.test(text)) {return false} + } + return true + } + + DataManager.actorNamesPerLanguage = [ + ["ОМОРИ", "OMORI", "オモリ", "오모리", "OMORI"], + ["ОБРИ", "AUBREY", "オーブリー", "오브리", "奥布里"], + ["КЕЛ", "KEL", "ケル", "켈", "凯"], + ["ХИРО", "HERO", "ヒロ", "히로", "英雄"] + ]; + + DataManager.chapterNamesPerLanguage = [ + ["???", "???", "???", "???", "???"], + ["ДЕНЬ ПЕРЕЕЗДА", "MOVING DAY", "引越しの日", "이삿날", "搬家当天"], + ["ОСТАЛОСЬ ОДИН ДЕНЬ...", "ONE DAY LEFT...", "あと1日……", "이삿날까지 하루 남음...", "还有一天……"], + ["ОСТАЛОСЬ ДВА ДНЯ...", "TWO DAYS LEFT...", "あと2日……", "이삿날까지 이틀 남음...", "还有两天……"], + ["ОСТАЛОСЬ ТРИ ДНЯ...", "THREE DAYS LEFT...", "あと3日……", "이삿날까지 사흘 남음...", "还有三天……"], + ["ПРОЛОГ", "PROLOGUE", "プロローグ", "서장", "序章"] + ]; + + DataManager.locationNamesPerLanguage = [ + ["УЛИЦА","OUTSIDE","家の外","바깥","外面"], + ["МАМИНА КОМНАТА","MOM'S ROOM","お母さんの部屋","엄마의 방","妈妈的房间"], + ["ДОМ БЭЗИЛА","BASIL'S HOUSE","バジルの家","바질의 집","贝瑟尔家"], + ["ПАРК ГОРИЗОНТА","FARAWAY PARK","ハルバル公園","패러웨이 공원","遥远公园"], + ["ТАЙНОЕ ОЗЕРО","SECRET LAKE","秘密の湖","비밀 호수","秘密湖泊"], + ["ЛЕСНАЯ ПЛОЩАДКА","FOREST PLAYGROUND","森の遊び場","숲 놀이터","森林游乐场"], + ["БЕСКРАЙНИЙ ЛЕС","VAST FOREST","ヒロビロ森","광대한 숲","辽阔森林"], + ["ЛЕС ВЕРТУШЕК","PINWHEEL FOREST","カザグルマ森","바람개비 숲","风车森林"], + ["АПЕЛЬСИНОВЫЙ ОАЗИС","ORANGE OASIS","オレンジオアシス","오렌지 오아시스","橙子绿"], + ["ГОРОДОК ДОЖДЯ","RAIN TOWN","アメフリの町","비의 마을","落雨镇"], + ["ВНЕЗЕМЕЛЬЕ","OTHERWORLD","イセカイ","별세계","异世界"], + ["ЗАМЁРЗШЕЕ ОЗЕРО","FROZEN LAKE","ヒエビエ湖","얼어붙은 호수","结冰湖"], + ["ГОРА СНЕЖНЫЙ ШАР","SNOWGLOBE MOUNTAIN","スノードームマウンテン","스노우블로브 산","雪花球山"], + ["СВАЛКА","JUNKYARD","廃品投棄場","쓰레기장","垃圾场"], + ["ЛЕС СВЕТЛЯЧКОВ","PYREFLY FOREST","ヒバナ森","반딧불더미 숲","焚火虫森林"], + ["ПОТЕРЯННЫЙ ЛЕС","LOST FOREST","サイゴノ楽園","잃어버린 숲","迷失森林"], + ["ДЕРЕВНЯ РОСТОКРОТОВ","SPROUT MOLE VILLAGE","ナエモグ村","두더지 새싹 마을","树苗鼹鼠村"], + ["ЗАМОК ДУШЕЧКИ","SWEETHEART'S CASTLE","スイートハート城","스위트하트의 성","甜心城堡"], + ["ПОСЛЕДНИЙ ШАНС","LAST RESORT","サイゴノ楽園","최후의 도피처","最后度假村"], + ["ПОДВОДНОЕ ШОССЕ","UNDERWATER HIGHWAY","水中高速道路","수중 고속도로","水下高架"], + ["ГЛУБОЧАЙШИЙ КОЛОДЕЦ","DEEPER WELL","シンエン井戸","더 깊은 우물","深井深处"], + ["ХАМФРИ","HUMPHREY","ハンフリー","험프리","汉弗莱"], + ["КАСКАД БОССОВ","BOSS RUSH","ボスラッシュ","보스 러시","头目反击战"], + ["БЕЗДНА","THE ABYSS","ナラク","심연","深渊"], + ["ЧЁРНОЕ ПРОСТРАНСТВО","BLACK SPACE","ブラックスペース","검은 공간","黑色空间"], + ["ПОЛЯНКА БЭЗИЛА","BASIL'S MEADOW","バジルの草原","바질의 꽃밭","贝瑟尔的草地"], + ["ПОТЕРЯННАЯ БИБЛИОТЕКА","LOST LIBRARY","失われし図書館","잃어버린 도서관","失落图书馆"], + ["ШТАБ ЭКОКУЛЬТИСТОВ","RECYCULTIST'S HQ","リサイカルト本部","재활용교도의 본부","回收教徒总部"], + ["ХЛЕБЕСА","BREAVEN","パンクチュアリ","빵천국","面包天堂"], + ["ЗА КУЛИСАМИ","BACKSTAGE","バックステージ","무대 뒤편","后台"], + ["ДОРОГА ВОСПОМИНАНИЙ","MEMORY LANE","思い出の道","추억의 뒤안길","回忆小道"], + ["СПАЛЬНЯ СОСЕДЕЙ","NEIGHBOR'S BEDROOM","オトナリベッドルーム","이웃의 침실","邻居的卧室"] + ]; + + // For compatibility with 1.0.7 and lower versions. + if (typeof DataManager.convertNameToLanguage == 'undefined') { + DataManager.convertNameToLanguage = function(type, name) { + let myLanguageIndex = ['en', 'jp', 'kr', 'sc'].indexOf(LanguageManager.defaultLanguage()); + if (myLanguageIndex != -1) { + let namesPerLanguage = type === 'actor'? this.actorNamesPerLanguage : type === "chapter" ? this.chapterNamesPerLanguage : this.locationNamesPerLanguage; + for (let entryNum = 0; entryNum < namesPerLanguage.length; entryNum++) { + for (let languageID = 0; languageID < namesPerLanguage[entryNum].length; languageID++) { + if (languageID == myLanguageIndex) continue; + if (name == namesPerLanguage[entryNum][languageID]) { // Name from other language detected + return namesPerLanguage[entryNum][myLanguageIndex]; + }; + }; + }; + }; + return name; + } + } + + DataManager = class extends DataManager { + static loadSavefileInfo(savefileId) { + var globalInfo = this.loadGlobalInfo(); + if (globalInfo && globalInfo[savefileId]) { + globalInfo[savefileId].actorData.name = this.convertNameToLanguage('actor', globalInfo[savefileId].actorData.name); + if(!isTextInCurrentLanguage(globalInfo[savefileId].actorData.name)) { + const lang = LanguageManager.defaultLanguage(); + globalInfo[savefileId].actorData.name = LanguageManager._data[lang]["text"]["XX_BLUE"]["Omori_Name_Input"]["defaultname"] // Assuming this is Sunny as all the other characters that could save + // are defined inside actorNamesPerLanguage array. + } + globalInfo[savefileId].chapter = this.convertNameToLanguage('chapter', globalInfo[savefileId].chapter); + globalInfo[savefileId].location = this.convertNameToLanguage('location', globalInfo[savefileId].location) + }; + return (globalInfo && globalInfo[savefileId]) ? globalInfo[savefileId] : null; + } + } + + Game_Actor = class extends Game_Actor { + name() { + if (this._actorId !== 8) { return super.name() } // NOT SUNNY + const lang = LanguageManager.defaultLanguage(); + const defaultName = LanguageManager._data[lang]["text"]["XX_BLUE"]["Omori_Name_Input"]["defaultname"]; + let name = this._name; + if (!isTextInCurrentLanguage(name)) { name = defaultName } + return name; + } + } + +})(Gamefall.JPWordWrap) + + +// ============================================================================ +// Patches for plugin: Omori Name Input +// ============================================================================ + +// VirtualKeyboard not exists in 1.0.7 and lower versions. +if (typeof VirtualKeyboard !== 'undefined') { + VirtualKeyboard.EN = { + default: [ + "` 1 2 3 4 5 6 7 8 9 0 - = {bksp}", + "й ц у к е н г ш щ з х ъ \\", + "{lock} ф ы в а п р о л д ж э", + "я ч с м и т ь б ю . {confirm} {space}" + ], + shift: [ + "~ ! @ # $ % ^ & * ( ) _ + {bksp}", + "Й Ц У К Е Н Г Ш Щ З Х Ъ |", + "{lock} Ф Ы В А П Р О Л Д Ж Э", + "Я Ч С М И Т Ь Б Ю ? {confirm} {space}" + ] + }; +} + + +// ============================================================================ +// Patches for plugin: YIN - Minigame - PizzaDelivery +// ============================================================================ + +Game_Interpreter.prototype.initPizzaDelivery = function () { + ImageManager.loadPicture("PIZZA-Background"); + //ImageManager.loadAtlas("MN_PizzaItems"); // obsolete + // Because we have multiple atlases instead of one, + // we should preload all of those: + ImageManager.loadAtlas("MN_PizzaItems_1"); + ImageManager.loadAtlas("MN_PizzaItems_2"); + ImageManager.loadAtlas("MN_PizzaItems_3"); + + $gameSystem._chosenHouses = []; + $gameSystem._checkedHouses = []; + + var _pizzaHouse1 = this.generateHouse(1); + var _pizzaHouse2 = this.generateHouse(2); + var _pizzaHouse3 = this.generateHouse(3); + + this._pizzaHouse1 = _pizzaHouse1; + this._pizzaHouse2 = _pizzaHouse2; + this._pizzaHouse3 = _pizzaHouse3; +}