@@ -22,7 +22,7 @@ export const parseExcelToActor = async (excelData, actor) => {
2222 let excelVersion = excelVersionSplitted . pop ( ) ;
2323 if ( ! requiredExcelVersions . some ( item => item === excelVersion ) ) {
2424 const versionWarning =
25- game . i18n . localize ( " anima.ui.importDataFromExcelWarning" ) +
25+ game . i18n . localize ( ' anima.ui.importDataFromExcelWarning' ) +
2626 requiredExcelVersions . join ( ', ' ) ;
2727 ui . notifications . warn ( versionWarning ) ;
2828 return ;
@@ -42,9 +42,9 @@ export const parseExcelToActor = async (excelData, actor) => {
4242 const volResistance =
4343 excelData . Presencia_final + calculateAttributeModifier ( excelData . VOL ) ;
4444
45- const presenciaBase = excelData . Nivel_Total <= 0 ? 20 : 25 + ( excelData . Nivel_Total * 5 ) ;
45+ const presenciaBase = excelData . Nivel_Total <= 0 ? 20 : 25 + excelData . Nivel_Total * 5 ;
4646
47- const bonoPresencia = excelData . Presencia_final - presenciaBase ;
47+ const bonoPresencia = excelData . Presencia_final - presenciaBase ;
4848
4949 //Esto es para cuando esté la automatización de las resistencias
5050 const bonoRF = excelData . RF_final - conResistance ;
@@ -356,6 +356,9 @@ export const parseExcelToActor = async (excelData, actor) => {
356356 others : [ ]
357357 } ,
358358 levels : [ ] ,
359+ level : {
360+ value : excelData . Nivel_Total
361+ } ,
359362 destinyPoints : {
360363 base : {
361364 value : excelData . PuntosDeDestino_Max - excelData . PuntosDeDestino_Gastados
@@ -891,7 +894,7 @@ export const parseExcelToActor = async (excelData, actor) => {
891894 abilityName . indexOf ( 'Detección del Ki' ) !== - 1 ||
892895 abilityName . indexOf ( 'Ocultación del Ki' ) !== - 1
893896 ) {
894- abilityName = splitAndRemoveLast ( habilidadesKi [ i ] ) ;
897+ abilityName = splitAndRemoveLast ( habilidadesKi [ i ] ) ; //quita el valor de la detección y ocultación, deja solo el nombre
895898 }
896899
897900 await actor . createInnerItem ( {
@@ -1006,16 +1009,13 @@ export const parseExcelToActor = async (excelData, actor) => {
10061009 } ) ;
10071010 }
10081011
1009-
1010-
10111012 for ( var i = 0 ; i < artesMarciales . length ; i ++ ) {
1012- if ( artesMarciales [ i ] . includes ( " Tabla de Armas:" ) ) {
1013+ if ( artesMarciales [ i ] . includes ( ' Tabla de Armas:' ) ) {
10131014 await actor . createInnerItem ( {
10141015 name : artesMarciales [ i ] ,
10151016 type : ABFItems . COMBAT_TABLE
10161017 } ) ;
1017- }
1018- else {
1018+ } else {
10191019 const arteMarcialSeparada = artesMarciales [ i ]
10201020 . split ( '(' )
10211021 . map ( value => value . trim ( ) )
@@ -1131,49 +1131,65 @@ export const parseExcelToActor = async (excelData, actor) => {
11311131 system : INITIAL_MENTAL_PATTERN_DATA
11321132 } ) ;
11331133 }
1134+
1135+ actor . prepareData ( ) ;
1136+ actor . sheet . render ( false ) ;
11341137} ;
11351138
11361139function separarHabilidadesKi ( habilidades ) {
1140+ /** Ensure valid string */
1141+ if ( typeof habilidades !== 'string' ) {
1142+ return {
1143+ habilidadesKi : '' ,
1144+ habilidadesNemesis : ''
1145+ } ;
1146+ }
1147+
11371148 let result = {
11381149 habilidadesKi : '' ,
11391150 habilidadesNemesis : ''
11401151 } ;
11411152
1142- const indexSellos = habilidades . indexOf ( 'Sellos: ' ) ;
1143- let habilidadesSinSellos = '' ;
1144- if ( indexSellos !== - 1 ) {
1145- habilidadesSinSellos = habilidades . slice ( 0 , indexSellos ) . trim ( ) ;
1146- }
1147- else {
1148- habilidadesSinSellos = habilidades ;
1149- }
1153+ // Remove seals section
1154+ const indexSellos = habilidades . indexOf ( 'Sellos:' ) ;
1155+ const habilidadesSinSellos =
1156+ indexSellos !== - 1 ? habilidades . slice ( 0 , indexSellos ) . trim ( ) : habilidades . trim ( ) ;
11501157
1158+ // Split Ki / Némesis by marker
11511159 const indexNemesis = habilidadesSinSellos . indexOf ( 'Uso del Némesis' ) ;
11521160
11531161 if ( indexNemesis === - 1 ) {
1154- result . habilidadesKi = habilidadesSinSellos ;
1162+ // Only Ki abilities
1163+ result . habilidadesKi = expandAtaqueElemental ( habilidadesSinSellos ) ;
11551164 return result ;
11561165 }
11571166
1158- result . habilidadesKi = habilidadesSinSellos . slice ( 0 , indexNemesis ) . trim ( ) ;
1159- result . habilidadesNemesis = habilidadesSinSellos . slice ( indexNemesis ) . trim ( ) ;
1167+ const kiPart = habilidadesSinSellos . slice ( 0 , indexNemesis ) . trim ( ) ;
1168+ const nemesisPart = habilidadesSinSellos . slice ( indexNemesis ) . trim ( ) ;
11601169
1161- const indexAtaqueElemental = result . habilidadesKi . indexOf ( 'Ataque elemental (' ) ;
1162- if ( indexAtaqueElemental !== - 1 ) {
1163- let habilidadesKiSeparadas = result . habilidadesKi . split ( 'Ataque elemental (' ) ;
1164- let indexCierreAtaqueElemental = habilidadesKiSeparadas [ 1 ] . indexOf ( ')' ) ;
1165- let habilidadesKiPostAtaqueElemental = habilidadesKiSeparadas [ 1 ] . slice (
1166- indexCierreAtaqueElemental + 1
1167- ) ;
1168- result . habilidadesKi = [
1169- habilidadesKiSeparadas [ 0 ] ,
1170- habilidadesKiPostAtaqueElemental
1171- ] . join ( 'Ataque elemental, ' ) ;
1172- }
1170+ result . habilidadesKi = expandAtaqueElemental ( kiPart ) ;
1171+ result . habilidadesNemesis = nemesisPart ;
11731172
11741173 return result ;
11751174}
11761175
1176+ function expandAtaqueElemental ( text ) {
1177+ if ( ! text ) return '' ;
1178+
1179+ return text
1180+ . replace ( / A t a q u e e l e m e n t a l \s * \( ( [ ^ ) ] + ) \) / gi, ( _match , group ) => {
1181+ const elements = group
1182+ . split ( ',' )
1183+ . map ( e => e . trim ( ) )
1184+ . filter ( e => e !== '' ) ;
1185+ if ( ! elements . length ) return '' ;
1186+ return elements . map ( e => `Ataque elemental: ${ e } ` ) . join ( ', ' ) ;
1187+ } )
1188+ . replace ( / , \s * , / g, ', ' ) // clean double commas if any
1189+ . replace ( / , \s * $ / g, '' ) // remove trailing comma
1190+ . trim ( ) ;
1191+ }
1192+
11771193function splitAndRemoveLast ( cadena ) {
11781194 const partes = cadena . split ( ' ' ) ;
11791195 partes . pop ( ) ;
@@ -1262,4 +1278,3 @@ function SetEmptyIfUndefined(data) {
12621278 }
12631279 return data ;
12641280}
1265-
0 commit comments