Ai approved

This commit is contained in:
dazedanon 2025-10-19 23:50:23 -05:00
parent 5507487234
commit 8115aa1503
9 changed files with 239 additions and 20 deletions

View file

@ -445,7 +445,8 @@ UnitRangePanel._setRangeData= function() {
if (isWeapon & 2) {
this._simulator_wand.startSimulationWeapon(this._unit, mov, startRange, endRange);
}
var unit = getActorByName3('シャルロット') || getActorByName3('Charlotte');
var unit = getActorByName3('シャルロット') || getActorByName3('Charlotte') ||
getActorByName3('シャルロ') || getActorByName3('Char');
this._simulatorOrder.startSimulationWeapon(unit, 0, 1, 3);
}

View file

@ -326,7 +326,8 @@ BaseMessageView._setupIllustImage = function(messageViewParam) {
unit3 = getActor1(unit);
}
this._isAlpha = true;
if (unit.getName() == 'Giacomo' || unit.getName() == 'Karla' || unit.getName() == 'Karla') {
if (unit.getName() == 'Giacomo' || unit.getName() == 'ジャコモ' || unit.getName() == 'Giac' ||
unit.getName() == 'Karla' || unit.getName() == 'カーラ' || unit.getName() == 'Karl') {
this._isAlpha = false;
}
this._unit = unit;
@ -437,26 +438,37 @@ function getNameByVal(name) {
if (name.indexOf('_') > 1) {
name = name.substr(0, name.indexOf('_'));
}
// Handle numbered variants (e.g., "Char1" -> "Char", "Lena2" -> "Lena")
if (name.length > 1 && name.match(/[0-9]$/)) {
name = name.substr(0, name.length - 1);
}
switch (name) {
case 'シャルロット': return 1;
case 'Charlotte': return 1;
case 'シャルロ': return 1;
case 'Char': return 1;
case 'コルネ': return 2;
case 'Corne': return 2;
case 'Corn': return 2;
case 'レナ': return 3;
case 'Lena': return 3;
case 'ルリエル': return 4;
case 'Luriel': return 4;
case 'Luri': return 4;
case 'カエデ': return 5;
case 'Kaede': return 5;
case 'Kaed': return 5;
case 'カーラ': return 6;
case 'Karla': return 6;
case 'Karla': return 6;
case 'Karl': return 6;
case 'アンジェラ': return 7;
case 'Angela': return 7;
case 'クリス': return 7;
case 'Chris': return 7;
case 'Chri': return 7;
case 'シェリー': return 8;
case 'Sherry': return 8;
case 'Sher': return 8;
case 'メル': return 9;
case 'Mel': return 9;
case 'ティナ': return 10;
@ -465,10 +477,18 @@ function getNameByVal(name) {
case 'Lou': return 11;
case 'サリア': return 12;
case 'Saria': return 12;
case 'Sari': return 12;
//case 'ジャコモ': return 13;
//case 'Giacomo': return 13;
case 'タバサ': return 14;
case 'Tabatha': return 14;
case 'Taba': return 14;
case 'ダレス': return 15;
case 'Dalles': return 15;
case 'Dall': return 15;
case 'ジャコモ': return 16;
case 'Giacomo': return 16;
case 'Giac': return 16;
default: return -1;
}
}
@ -610,7 +630,7 @@ BaseMessageView.isNakad = function() {
var valId = this._getValId();
var swId = valId * 10 + 5;
if (this._name == 'Luriel' || this._name == 'ルリエル') {
if (this._name == 'Luriel' || this._name == 'ルリエル' || this._name == 'Luri') {
return false;
}
if (root.getCurrentSession() == null) {
@ -623,10 +643,10 @@ BaseMessageView.isNakad = function() {
return true;
}
if (root.getMetaSession().getGlobalSwitchTable().isSwitchOn(153)) {
if (this._name == 'Giacomo' || this._name == 'ジャコモ') {
if (this._name == 'Giacomo' || this._name == 'ジャコモ' || this._name == 'Giac') {
return false;
}
if (this._name == 'Karla' || this._name == 'Karla' || this._name == 'カーラ') {
if (this._name == 'Karla' || this._name == 'カーラ' || this._name == 'Karl') {
return false;
}
return true;

View file

@ -76,12 +76,43 @@ function getActor1(unit) {
}
} else {
var list = root.getBaseData().getPlayerList();
var name = unit.getName();
// Strip suffix after underscore
if (name.indexOf('_') > 1) {
name = name.substr(0, name.indexOf('_'));
}
// Strip trailing numbers
if (name.length > 1 && name.match(/[0-9]$/)) {
name = name.substr(0, name.length - 1);
}
// Map full English names to abbreviated forms
switch(name) {
case 'Charlotte': name = 'Char'; break;
case 'Corne': name = 'Corn'; break;
case 'Lena': name = 'Lena'; break;
case 'Luriel': name = 'Luri'; break;
case 'Kaede': name = 'Kaed'; break;
case 'Karla': name = 'Karl'; break;
case 'Chris': name = 'Chri'; break;
case 'Sherry': name = 'Sher'; break;
case 'Mel': name = 'Mel'; break;
case 'Tina': name = 'Tina'; break;
case 'Lou': name = 'Lou'; break;
case 'Saria': name = 'Sari'; break;
case 'Tabatha': name = 'Taba'; break;
case 'Dalles': name = 'Dall'; break;
case 'Giacomo': name = 'Giac'; break;
}
// For Japanese names, truncate to 4 chars
if (name.length > 4) {
name = name.substr(0, 4);
}
for (var i = 0; i < list.getCount(); i++) {
var u = list.getData(i);
var name = unit.getName();
if (name.length > 4) {
name = name.substr(0, 4);
}
if ((name + '1') == u.getName()) {
actor1Map[unit.getId()] = u;
return u;
@ -140,12 +171,43 @@ function getActor2(unit) {
}
} else {
var list = root.getBaseData().getPlayerList();
var name = unit.getName();
// Strip suffix after underscore
if (name.indexOf('_') > 1) {
name = name.substr(0, name.indexOf('_'));
}
// Strip trailing numbers
if (name.length > 1 && name.match(/[0-9]$/)) {
name = name.substr(0, name.length - 1);
}
// Map full English names to abbreviated forms
switch(name) {
case 'Charlotte': name = 'Char'; break;
case 'Corne': name = 'Corn'; break;
case 'Lena': name = 'Lena'; break;
case 'Luriel': name = 'Luri'; break;
case 'Kaede': name = 'Kaed'; break;
case 'Karla': name = 'Karl'; break;
case 'Chris': name = 'Chri'; break;
case 'Sherry': name = 'Sher'; break;
case 'Mel': name = 'Mel'; break;
case 'Tina': name = 'Tina'; break;
case 'Lou': name = 'Lou'; break;
case 'Saria': name = 'Sari'; break;
case 'Tabatha': name = 'Taba'; break;
case 'Dalles': name = 'Dall'; break;
case 'Giacomo': name = 'Giac'; break;
}
// For Japanese names, truncate to 4 chars
if (name.length > 4) {
name = name.substr(0, 4);
}
for (var i = 0; i < list.getCount(); i++) {
var u = list.getData(i);
var name = unit.getName();
if (name.length > 4) {
name = name.substr(0, 4);
}
if ((name + '2') == u.getName()) {
actor2Map[unit.getId()] = u;
return u;
@ -229,6 +291,35 @@ function getSearchName(unit) {
if (name.indexOf('_') > 1) {
name = name.substr(0, name.indexOf('_'));
}
// Handle numbered variants (e.g., remove trailing numbers)
if (name.length > 1 && name.match(/[0-9]$/)) {
name = name.substr(0, name.length - 1);
}
// Map full English names to abbreviated forms
switch(name) {
case 'Charlotte': return 'Char';
case 'Corne': return 'Corn';
case 'Lena': return 'Lena';
case 'Luriel': return 'Luri';
case 'Kaede': return 'Kaed';
case 'Karla': return 'Karl';
case 'Chris': return 'Chri';
case 'Sherry': return 'Sher';
case 'Mel': return 'Mel';
case 'Tina': return 'Tina';
case 'Lou': return 'Lou';
case 'Saria': return 'Sari';
case 'Tabatha': return 'Taba';
case 'Dalles': return 'Dall';
case 'Giacomo': return 'Giac';
case 'Angela': return 'Ange';
case 'Carlos': return 'Carl';
case 'Majid': return 'Maji';
}
// For Japanese names and already-abbreviated names, truncate to 4 chars
if (name.length > 4) {
name = name.substr(0, 4);
}

View file

@ -316,26 +316,41 @@ function getNameByValEroStatus(name) {
}
function getNameByVal2(name) {
// Strip suffix after underscore for variants
if (name.indexOf('_') > 1) {
name = name.substr(0, name.indexOf('_'));
}
// Handle numbered variants (e.g., "Char1" -> "Char", "Lena2" -> "Lena")
if (name.length > 1 && name.match(/[0-9]$/)) {
name = name.substr(0, name.length - 1);
}
switch (name) {
case 'シャルロット': return 1;
case 'Charlotte': return 1;
case 'シャルロ': return 1;
case 'Char': return 1;
case 'コルネ': return 2;
case 'Corne': return 2;
case 'Corn': return 2;
case 'レナ': return 3;
case 'Lena': return 3;
case 'ルリエル': return 4;
case 'Luriel': return 4;
case 'Luri': return 4;
case 'カエデ': return 5;
case 'Kaede': return 5;
case 'Kaed': return 5;
case 'カーラ': return 6;
case 'Karla': return 6;
case 'Karla': return 6;
case 'Karl': return 6;
case 'アンジェラ': return 7;
case 'Angela': return 7;
case 'クリス': return 7;
case 'Chris': return 7;
case 'Chri': return 7;
case 'シェリー': return 8;
case 'Sherry': return 8;
case 'Sher': return 8;
case 'メル': return 9;
case 'Mel': return 9;
case 'ティナ': return 10;
@ -344,10 +359,13 @@ function getNameByVal2(name) {
case 'Lou': return 11;
case 'サリア': return 12;
case 'Saria': return 12;
case 'Sari': return 12;
case 'ダレス': return -1;
case 'Dalles': return -1;
case 'Dall': return -1;
case 'タバサ': return 14;
case 'Tabatha': return 14;
case 'Taba': return 14;
default: return -1;
}
}

View file

@ -15,7 +15,8 @@ CharacterScreen.drawDictionaryImage = function(obj) {
x += 70;
y -= 100;
var actor = getActorByName2(obj.getName());
if (actor.getName() != 'シャルロット' && actor.getName() != 'Charlotte') {
if (actor.getName() != 'シャルロット' && actor.getName() != 'Charlotte' &&
actor.getName() != 'シャルロ' && actor.getName() != 'Char') {
x -= 70;
}
drawImage(actor.getCharIllustImage(19), x, y);

View file

@ -15,11 +15,14 @@ function upEroCount() {
switch (unit.getName()) {
case 'シャルロット':
case 'Charlotte':
case 'シャルロ':
case 'Char':
nakaMin = 5;
nakaMax = 15;
break;
case 'コルネ':
case 'Corne':
case 'Corn':
break;
case 'レナ':
case 'Lena':
@ -28,14 +31,17 @@ function upEroCount() {
break;
case 'カエデ':
case 'Kaede':
case 'Kaed':
break;
case 'クリス':
case 'Chris':
case 'Chri':
nakaMax = 3;
analMin = 0;
analMax = 0;
case 'シェリー':
case 'Sherry':
case 'Sher':
break;
case 'メル':
case 'Mel':
@ -51,11 +57,13 @@ function upEroCount() {
break;
case 'サリア':
case 'Saria':
case 'Sari':
analMin = 10;
analMax = 20;
break;
case 'タバサ':
case 'Tabatha':
case 'Taba':
break;
}
var valId = val * 10 + 6;

View file

@ -23,41 +23,60 @@ function sortUnit() {
function getSortIndex(unit) {
switch(unit.getName()) {
var name = unit.getName();
// Strip suffix after underscore for variants
if (name.indexOf('_') > 1) {
name = name.substr(0, name.indexOf('_'));
}
// Handle numbered variants (e.g., "Char1" -> "Char", "Lena2" -> "Lena")
if (name.length > 1 && name.match(/[0-9]$/)) {
name = name.substr(0, name.length - 1);
}
switch(name) {
case 'シャルロット': return 1;
case 'Charlotte': return 1;
case 'シャルロ': return 1;
case 'Char': return 1;
case 'レナ': return 2;
case 'Lena': return 2;
case 'アンジェラ': return 3;
case 'Angela': return 3;
case 'クリス': return 3;
case 'Chris': return 3;
case 'Chri': return 3;
case 'コルネ': return 5;
case 'Corne': return 5;
case 'Corn': return 5;
case 'ルリエル': return 4;
case 'Luriel': return 4;
case 'Luri': return 4;
case 'カーラ': return 6;
case 'Karla': return 6;
case 'Karla': return 6;
case 'Karl': return 6;
case 'サリア': return 7;
case 'Saria': return 7;
case 'Sari': return 7;
case 'メル': return 12;
case 'Mel': return 12;
case 'シェリー': return 13;
case 'Sherry': return 13;
case 'Sher': return 13;
case 'ルゥ': return 14;
case 'Lou': return 14;
case 'タバサ': return 15;
case 'Tabatha': return 15;
case 'Taba': return 15;
case 'カエデ': return 16;
case 'Kaede': return 16;
case 'Kaed': return 16;
case 'ティナ': return 17;
case 'Tina': return 17;
case 'ダレス': return 90;
case 'Dalles': return 90;
case 'Dall': return 90;
case 'マジード': return 91;
case 'Majid': return 91;
case 'カルロス': return 92;

View file

@ -654,27 +654,42 @@ function getActorSyusanCount(name) {
}
function getActorChokyoId(name) {
// Strip suffix after underscore for variants
if (name.indexOf('_') > 1) {
name = name.substr(0, name.indexOf('_'));
}
// Handle numbered variants (e.g., "Char1" -> "Char", "Lena2" -> "Lena")
if (name.length > 1 && name.match(/[0-9]$/)) {
name = name.substr(0, name.length - 1);
}
switch (name) {
case 'シャルロット': return 6;
case 'Charlotte': return 6;
case 'シャルロ': return 6;
case 'Char': return 6;
case 'コルネ': return 1;
case 'Corne': return 1;
case 'Corn': return 1;
case 'レナ': return 2;
case 'Lena': return 2;
case 'ルリエル': return -1;
case 'Luriel': return -1;
case 'Luri': return -1;
case 'カエデ': return 82;
case 'Kaede': return 82;
case 'Kaed': return 82;
case 'カーラ': return -1;
case 'Karla': return -1;
case 'Karla': return -1;
case 'Karl': return -1;
case 'アンジェラ': return 7;
case 'Angela': return 7;
case 'クリス': return 7;
case 'Chris': return 7;
case 'Chri': return 7;
case 'シェリー': return 0;
case 'Sherry': return 0;
case 'Sher': return 0;
case 'メル': return 8;
case 'Mel': return 8;
case 'ティナ': return 10;
@ -683,10 +698,13 @@ function getActorChokyoId(name) {
case 'Lou': return 5;
case 'サリア': return 9;
case 'Saria': return 9;
case 'Sari': return 9;
case 'ジャコモ': return -1;
case 'Giacomo': return -1;
case 'Giac': return -1;
case 'タバサ': return 79;
case 'Tabatha': return 79;
case 'Taba': return 79;
}
return -1;
}

View file

@ -579,6 +579,13 @@ QuestDetailWindow.setQuestData = function(quest) {
this._equipView._illustId = 3;
var actorName = this._quest.custom.actorName || 'シャルロット';
var unit = getActorByName(actorName);
// If unit not found, don't proceed
if (!unit) {
root.log('Warning: Could not find actor with name: ' + actorName);
return;
}
var messageViewParam = {unit: unit};
if (this._equipView._name == actorName) {
@ -639,14 +646,50 @@ QuestScreen.drawScreenBottomText = function(textui) {
};
function getActorByName(name) {
// Map Japanese names to their English equivalents
var nameMap = {
'シャルロット': 'Charlotte',
'シャルロ': 'Char',
'コルネ': 'Corne',
'レナ': 'Lena',
'ルリエル': 'Luriel',
'カエデ': 'Kaede',
'カーラ': 'Karla',
'クリス': 'Chris',
'アンジェラ': 'Angela',
'シェリー': 'Sherry',
'メル': 'Mel',
'ティナ': 'Tina',
'ルゥ': 'Lou',
'サリア': 'Saria',
'タバサ': 'Tabatha',
'ジャコモ': 'Giacomo',
'ダレス': 'Dalles',
'マジード': 'Majid',
'カルロス': 'Carlos'
};
var list = root.getBaseData().getPlayerList();
// First try exact match
for (var i = 0; i < list.getCount(); i++) {
var u = list.getData(i);
if (name == u.getName()) {
return u;
}
}
// If no exact match, try mapped name (Japanese to English)
var mappedName = nameMap[name];
if (mappedName) {
for (var i = 0; i < list.getCount(); i++) {
var u = list.getData(i);
if (mappedName == u.getName()) {
return u;
}
}
}
return null;
}