Redone collision detection. FIXME: Jump to teleport to ceiling (erratic behaviour on negative facing), nameset in CSV, documentation for RAWs, unicode punctuations in font, environmental colour overlaying (mux) in MapDrawer, actor luminosity is now actorvalue, camera now will center to center of the player, test tile remove and place,

Former-commit-id: 890f8a703f9f9f5a6b6a7c26b2f5d9928d63cf40
Former-commit-id: 9b9d5afd32871cc791d525ff2aafe693205d8c54
This commit is contained in:
Song Minjae
2016-02-29 23:44:39 +09:00
parent f78f8e2306
commit ef44aae418
82 changed files with 1196 additions and 1289 deletions

View File

@@ -32,7 +32,7 @@
"27";"TILE_SNOW" ; "8205"; "6"; "0"; "N/A"; "1"; "1"; "0"; "27"; "0";"16" "27";"TILE_SNOW" ; "8205"; "6"; "0"; "N/A"; "1"; "1"; "0"; "27"; "0";"16"
"28";"TILE_ICE_FRAGILE" ; "3282"; "1"; "0"; "N/A"; "1"; "0"; "0"; "28"; "0";"16" "28";"TILE_ICE_FRAGILE" ; "3282"; "1"; "0"; "N/A"; "1"; "0"; "0"; "28"; "0";"16"
"29";"TILE_ICE_NATURAL" ; "6564"; "25"; "0"; "N/A"; "1"; "1"; "0"; "29"; "0"; "8" "29";"TILE_ICE_NATURAL" ; "6564"; "25"; "0"; "N/A"; "1"; "1"; "0"; "29"; "0"; "8"
"30";"TILE_ICE_CLEAR_MAGICAL" ; "8205"; "25"; "0"; "N/A"; "1"; "1";"14949"; "30"; "0"; "8" "30";"TILE_ICE_CLEAR_MAGICAL" ; "8205"; "25"; "0"; "N/A"; "1"; "1"; "5009"; "30"; "0"; "8"
# see scandinavian name set female of this tile id! # see scandinavian name set female of this tile id!
"31";"TILE_PLATFORM_STONE" ; "0"; "0"; "0"; "N/A"; "0"; "0"; "0"; "31"; "0";"16" "31";"TILE_PLATFORM_STONE" ; "0"; "0"; "0"; "N/A"; "0"; "0"; "0"; "31"; "0";"16"
"32";"TILE_PLATFORM_WOODEN" ; "0"; "0"; "0"; "N/A"; "0"; "0"; "0"; "32"; "0";"16" "32";"TILE_PLATFORM_WOODEN" ; "0"; "0"; "0"; "N/A"; "0"; "0"; "0"; "32"; "0";"16"
Can't render this file because it contains an unexpected character in line 1 and column 12.

View File

@@ -1,22 +0,0 @@
{
"0": {
"name": "TILE_AIR",
"opacity": 0,
"strength": 0,
"isFluid": 0,
"fluidViscocity": 0,
"drop": "__null",
"isSolid": 0,
"isAlsoWall": 0
},
"1": {
"name": "TILE_STONE",
"opacity": 8,
"strength": 25,
"isFluid": 0,
"fluidViscocity": 0,
"drop": "item.stone",
"isSolid": 0,
"isAlsoWall": 0
}
}

View File

@@ -1,66 +1,60 @@
낮에는 따사로운 인간적인 여자 싸구려 커피를 마신다
커피 한잔의 여유를 아는 품격 있는 여자 미지근해 적잖이 속이 쓰려온다
밤이 오면 심장이 뜨거워지는 여자 눅눅한 비닐장판에 발바닥이
그런 반전 있는 여자 쩍 달라 붙었다 떨어진다
이제는 아무렇지 않어
바퀴벌레 한마리쯤 쓱 지나가도
무거운 매일 아침엔
다만 그저 약간의 기침이 멈출 생각을 않는다
축축한 이불을 갠다
삐걱대는 문을 열고 밖에 나가본다
아직 덜갠 하늘이 너무 가까워 숨쉬기가
쉽지를 않다 수만번 본 것만 같다
어지러워 쓰러질 정도로 익숙하기만 하다
남은 것도 없이 텅빈 나를 잠근다
나는 사나이 싸구려 커피를 마신다
낮에는 너만큼 따사로운 그런 사나이 미지근해 적잖이 속이 쓰려온다
커피 식기도 전에 원샷 때리는 사나 눅눅한 비닐장판에 발바닥
밤이 오면 심장이 터져버리는 사나이 쩍하고 달라 붙었다가 떨어진다
그런 사나이
아름다워 사랑스러워 뭐 한 몇년간 세숫대야에
그래 너 hey 그래 바로 너 hey 고여있는 물 마냥 그냥 완전히 썩어가지고
아름다워 사랑스러워 이거는 뭐 감각이 없어
그래 너 hey 그래 바로 너 hey 비가 내리면 처마 밑에서 쭈그리고 앉아서
지금부터 갈 데까지 가볼까 멍하니 그냥 가만히 보다보면은
이거는 뭔가 아니다 싶어
비가 그쳐도 희끄므레죽죽한
저게 하늘이라고 머리위를 뒤덮고 있는건지
저건 뭔가 하늘이라고 하기에는 뭔가 너무 낮게
머리카락에 거의 닿게 조금만 뛰어도 정수리를
쿵!하고 찧을거 같은데
벽장속 제습제는 벌써 꽉차 있으나마나
모기 때려잡다 번진 피가 묻은 거울을 볼때마다
어우! 약간 놀라
제 멋대로 구부러진 칫솔 갖다 이빨을 닦다 보면은
잇몸에 피가 나게 닦아도 당췌 치석은 빠져 나올줄을 몰라
언제 땄는지도 모르는 미지근한 콜라가 담긴
캔을 입에 가져다 한모금 아뿔싸 담배 꽁초가
이제는 장판이 난지 내가 장판인지도 몰라
해가 뜨기도 전에 지는 이런 상황은 뭔가
오빤 강남스타일 싸구려 커피를 마신다
강남스타 미지근해 적잖이 속이 쓰려온다
오빤 강남스타일 눅눅한 비닐장판에 발바닥이
강남스타일 쩍 달라 붙었다 떨어진다
오빤 강남스타일 이제는 아무렇지 않어
바퀴벌레 한마리쯤 쓱 지나가도
무거운 매일 아침엔
다만 그저 약간의 기침이 멈출 생각을 않는다
축축한 이불을 갠다
삐걱대는 문을 열고 밖에 나가본다
아직 덜갠 하늘이 너무 가까워 숨쉬기가
쉽지를 않다 수만번 본 것만 같다
어지러워 쓰러질 정도로 익숙하기만 하다
남은 것도 없이 텅빈 나를 잠근다
Eh- Sexy Lady 싸구려 커피를 마신다
오빤 강남스타일 미지근해 적잖이 속이 쓰려온다
Eh- Sexy Lady 눅눅한 비닐장판에 발바닥이
오오오오 쩍하고 달라 붙었다가 떨어진다
정숙해 보이지만 놀 땐 노는 여자
이때다 싶으면 묶었던 머리 푸는 여자
가렸지만 웬만한 노출보다 야한 여자
그런 감각적인 여자
나는 사나이
점잖아 보이지만 놀 땐 노는 사나이
때가 되면 완전 미쳐버리는 사나이
근육보다 사상이 울퉁불퉁한 사나이
그런 사나이
아름다워 사랑스러워
그래 너 hey 그래 바로 너 hey
아름다워 사랑스러워
그래 너 hey 그래 바로 너 hey
지금부터 갈 데까지 가볼까
오빤 강남스타일
강남스타일
오빤 강남스타일
강남스타일
오빤 강남스타일
Eh- Sexy Lady
오빤 강남스타일
Eh- Sexy Lady
오오오오
뛰는 놈 그 위에 나는 놈
baby baby 나는 뭘 좀 아는 놈
뛰는 놈 그 위에 나는 놈
baby baby 나는 뭘 좀 아는 놈
You know what I'm saying
오빤 강남스타일
Eh- Sexy Lady
오빤 강남스타일
Eh- Sexy Lady
오빤 강남스타일

Binary file not shown.

Before

Width:  |  Height:  |  Size: 633 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

View File

@@ -1,13 +1,13 @@
"STRING_ID";"IETF language tag(s) without dash";"enUS";"frFR";"esES";"deDE";"itIT";"ptBR";"ptPT";"ruRU";"elGR";"trTR";"daDK";"noNB";"svSE";"nlNL";"plPL";"fiFI";"jaJP";"zhCN";"zhTW";"koKR";"csCZ";"huHU";"roRO";"thTH";"bgBG";"heIL";"jakanaJP" "STRING_ID";"IETF language tag(s) without dash";"enUS";"frFR";"esES";"deDE";"itIT";"ptBR";"ptPT";"ruRU";"elGR";"trTR";"daDK";"noNB";"svSE";"nlNL";"plPL";"fiFI";"jaJP";"zhCN";"zhTW";"koKR";"csCZ";"huHU";"roRO";"thTH";"bgBG";"heIL";"jakanaJP";"isIC"
"DEV_MEMORY_SHORT_CAP";;"MEM";"MEM";;;;;;;;;;;;;;;"メモリー";;;"메모리";;;;;;;"メモリー" "DEV_MEMORY_SHORT_CAP";;"MEM";"MEM";;;;;;;;;;;;;;;"メモリー";;;"메모리";;;;;;;"メモリー";"MIN"
"DEV_MEMORY_A_OF_B";;"%1$sM out of %2$sM";"%1$sM sur %2$sM";;;;;;;;;;;;;;;"%2$sM中%1$sM";;;"%2$sM 중 %1$sM";;;;;;;"%2$sM ちゅう %1$sM" "DEV_MEMORY_A_OF_B";;"%1$sM out of %2$sM";"%1$sM sur %2$sM";;;;;;;;;;;;;;;"%2$sM中%1$sM";;;"%2$sM 중 %1$sM";;;;;;;"%2$sM ちゅう %1$sM";"%1$sM af %2$s"
"DEV_COLOUR_LEGEND_GREEN";;" GREEN";" VERT";;;;;;;;;;;;;;;"緑";;;"녹";;;;;;;" みどり" "DEV_COLOUR_LEGEND_GREEN";;" GREEN";" VERT";;;;;;;;;;;;;;;"緑";;;"녹";;;;;;;" みどり";"grænn"
"DEV_COLOUR_LEGEND_BLUE";;" BLUE";" BLEU";;;;;;;;;;;;;;;"青";;;"청";;;;;;;"  あお" "DEV_COLOUR_LEGEND_BLUE";;" BLUE";" BLEU";;;;;;;;;;;;;;;"青";;;"청";;;;;;;"  あお";"blár"
"DEV_COLOUR_LEGEND_ORANGE";;"ORANGE";"ORANGE";;;;;;;;;;;;;;;"黄";;;"황";;;;;;;"オレンジ" "DEV_COLOUR_LEGEND_ORANGE";;"ORANGE";"ORANGE";;;;;;;;;;;;;;;"黄";;;"황";;;;;;;"オレンジ";"rauðugulur"
"DEV_COLOUR_LEGEND_RED";;" RED";" ROUGE";;;;;;;;;;;;;;;"赤";;;"적";;;;;;;"  あか" "DEV_COLOUR_LEGEND_RED";;" RED";" ROUGE";;;;;;;;;;;;;;;"赤";;;"적";;;;;;;"  あか";"rauður"
"DEV_MESSAGE_CONSOLE_CODEX";;"Type 'codex' for available commands.";"Tapez « codex » pour commandes disponibles.";;;;;;;;;;;;;;;"使用可能な命令語の目録は「codex」を入力して下さい。";;;"사용 가능한 명령어 목록을 보려면 'codex'를 입력해 주십시오.";;;;;;;"しよう かのうな めいれいごの もくろくは 「codex」を にゅうりょく して ください。" "DEV_MESSAGE_CONSOLE_CODEX";;"Type codex for available commands.";"Tapez « codex » pour commandes disponibles.";;;;;;;;;;;;;;;"使用可能な命令語の目録は「codex」を入力して下さい。";;;"사용 가능한 명령어 목록을 보려면 codex를 입력해 주십시오.";;;;;;;"しよう かのうな めいれいごの もくろくは 「codex」を にゅうりょく して ください。";"Skrifa „codex“ fyrir tiltækilegum skipunum."
"DEV_MESSAGE_CONSOLE_AVAILABLE_COMMANDS";;"Available commends:";"Commandes disponibles :";;;;;;;;;;;;;;;"命令語の目録:";;;"명령어 목록:";;;;;;;"めいれいごの もくろく:" "DEV_MESSAGE_CONSOLE_AVAILABLE_COMMANDS";;"Available commends:";"Commandes disponibles :";;;;;;;;;;;;;;;"命令語の目録:";;;"명령어 목록:";;;;;;;"めいれいごの もくろく:";"Listi skipana :"
"DEV_MESSAGE_CONSOLE_COMMAND_UNKNOWN";;"'%1$s': Unknown command";"« %1$s » : Commande inconnue";;;;;;;;;;;;;;;"「%1$s」: 不明な命令語";;;"'%1$s': 알 수 없는 명령어";;;;;;;"「%1$s」: ふめいな めいれいご" "DEV_MESSAGE_CONSOLE_COMMAND_UNKNOWN";;"%1$s: Unknown command";"« %1$s » : Commande inconnue";;;;;;;;;;;;;;;"「%1$s」: 不明な命令語";;;"%1$s: 알 수 없는 명령어";;;;;;;"「%1$s」: ふめいな めいれいご";"„%1$s“ : óþekkt skipunin"
1 STRING_ID IETF language tag(s) without dash enUS frFR esES deDE itIT ptBR ptPT ruRU elGR trTR daDK noNB svSE nlNL plPL fiFI jaJP zhCN zhTW koKR csCZ huHU roRO thTH bgBG heIL jakanaJP isIC
2 DEV_MEMORY_SHORT_CAP MEM MEM メモリー 메모리 メモリー MIN
3 DEV_MEMORY_A_OF_B %1$sM out of %2$sM %1$sM sur %2$sM %2$sM中%1$sM %2$sM 중 %1$sM %2$sM ちゅう %1$sM %1$sM af %2$s
4 DEV_COLOUR_LEGEND_GREEN GREEN VERT  みどり grænn
5 DEV_COLOUR_LEGEND_BLUE BLUE BLEU   あお blár
6 DEV_COLOUR_LEGEND_ORANGE ORANGE ORANGE オレンジ rauðugulur
7 DEV_COLOUR_LEGEND_RED RED ROUGE   あか rauður
8 DEV_MESSAGE_CONSOLE_CODEX Type 'codex' for available commands. Type “codex” for available commands. Tapez « codex » pour commandes disponibles. 使用可能な命令語の目録は「codex」を入力して下さい。 사용 가능한 명령어 목록을 보려면 'codex'를 입력해 주십시오. 사용 가능한 명령어 목록을 보려면 ‘codex’를 입력해 주십시오. しよう かのうな めいれいごの もくろくは 「codex」を にゅうりょく して ください。 Skrifa „codex“ fyrir tiltækilegum skipunum.
9 DEV_MESSAGE_CONSOLE_AVAILABLE_COMMANDS Available commends: Commandes disponibles : 命令語の目録: 명령어 목록: めいれいごの もくろく: Listi skipana :
10 DEV_MESSAGE_CONSOLE_COMMAND_UNKNOWN '%1$s': Unknown command “%1$s”: Unknown command « %1$s » : Commande inconnue 「%1$s」: 不明な命令語 '%1$s': 알 수 없는 명령어 ‘%1$s’: 알 수 없는 명령어 「%1$s」: ふめいな めいれいご „%1$s“ : óþekkt skipunin
11
12
13

View File

@@ -1,2 +1,3 @@
"STRING_ID";"GLYPH_TAG";"alphabet";"hangul";"jpkana";"cyrillic";"zhsimp";"zhtrad" "STRING_ID";"IETF language tag(s) without dash";"enUS";"frFR";"esES";"deDE";"itIT";"ptBR";"ptPT";"ruRU";"elGR";"trTR";"daDK";"noNB";"svSE";"nlNL";"plPL";"fiFI";"jaJP";"zhCN";"zhTW";"koKR";"csCZ";"huHU";"roRO";"thTH";"bgBG";"heIL";"jakanaJP";"isIC"
"nameset_suffix";;"alph";"hangul";"kana";"cyril";"zhsimp";"zhtrad"
"NAMESET_CHARSET";;"LatinAlph";"LatinAlph";"LatinAlph";"LatinAlph";"LatinAlph";"LatinAlph";"LatinAlph";"CyrilRuRU";"AlphElGR";"LatinAlph";"LatinAlph";"LatinAlph";"LatinAlph";"LatinAlph";"LatinAlph";"LatinAlph";"KanaJaJP";"HanziZhCN";"HanziZhTW";"HangulKoKR";"LatinAlph";"LatinAlph";"LatinAlph";"AksonThTH";"LatinAlph";"AlefbetHeIL";"KanaJaJP";"LatinAlph"
1 STRING_ID GLYPH_TAG IETF language tag(s) without dash alphabet enUS hangul frFR jpkana esES cyrillic deDE zhsimp itIT zhtrad ptBR ptPT ruRU elGR trTR daDK noNB svSE nlNL plPL fiFI jaJP zhCN zhTW koKR csCZ huHU roRO thTH bgBG heIL jakanaJP isIC
2 nameset_suffix NAMESET_CHARSET alph LatinAlph hangul LatinAlph kana LatinAlph cyril LatinAlph zhsimp LatinAlph zhtrad LatinAlph LatinAlph CyrilRuRU AlphElGR LatinAlph LatinAlph LatinAlph LatinAlph LatinAlph LatinAlph LatinAlph KanaJaJP HanziZhCN HanziZhTW HangulKoKR LatinAlph LatinAlph LatinAlph AksonThTH LatinAlph AlefbetHeIL KanaJaJP LatinAlph
3

View File

@@ -0,0 +1,69 @@
# Nameset - Russian
# Data taken from www.behindthename.com
"HEADER";"LatinAlph";"HangulKoKR";"KanaJaJP";"CyrilRuRU";"AlphElGR";"HanziZhCN";"HanziZhTW";"AksonThTH";"AlefbetHeIL"
"NAMESET_RUS_F_001";"Agata";
"NAMESET_RUS_F_002";"Aleksandra";
"NAMESET_RUS_F_003";"Alisa";
"NAMESET_RUS_F_004";"Alla";
"NAMESET_RUS_F_005";"Anastasia";
"NAMESET_RUS_F_006";"Angela";
"NAMESET_RUS_F_007";"Angelina";
"NAMESET_RUS_F_008";"Anna";
"NAMESET_RUS_F_009";"Antonina";
"NAMESET_RUS_F_010";"Anya";
"NAMESET_RUS_F_011";"Adriana";
"NAMESET_RUS_F_012";"Asya";
"NAMESET_RUS_F_013";"Diana";
"NAMESET_RUS_F_014";"Dominika";
"NAMESET_RUS_F_015";"Dunya";
"NAMESET_RUS_F_016";"Elena";
"NAMESET_RUS_F_017";"Eva";
"NAMESET_RUS_F_018";"Filippa";
"NAMESET_RUS_F_019";"Gala";
"NAMESET_RUS_F_020";"Inga";
"NAMESET_RUS_F_021";"Ira";
"NAMESET_RUS_F_022";"Irina";
"NAMESET_RUS_F_023";"Isidora";
"NAMESET_RUS_F_024";"Ivanna";
"NAMESET_RUS_F_025";"Karina";
"NAMESET_RUS_F_026";"Katerina";
"NAMESET_RUS_F_027";"Katia";
"NAMESET_RUS_F_028";"Kira";
"NAMESET_RUS_F_029";"Klara";
"NAMESET_RUS_F_030";"Kristina";
"NAMESET_RUS_F_031";"Lana";
"NAMESET_RUS_F_032";"Lara";
"NAMESET_RUS_F_033";"Larisa";
"NAMESET_RUS_F_034";"Lena";
"NAMESET_RUS_F_035";"Lilia";
"NAMESET_RUS_F_036";"Lilya";
"NAMESET_RUS_F_037";"Liza";
"NAMESET_RUS_F_038";"Margarita";
"NAMESET_RUS_F_039";"Marina";
"NAMESET_RUS_F_040";"Milena";
"NAMESET_RUS_F_041";"Natalya";
"NAMESET_RUS_F_042";"Natasha";
"NAMESET_RUS_F_043";"Nika";
"NAMESET_RUS_F_044";"Nina";
"NAMESET_RUS_F_045";"Olga";
"NAMESET_RUS_F_046";"Roksana";
"NAMESET_RUS_F_047";"Sabina";
"NAMESET_RUS_F_048";"Sasha";
"NAMESET_RUS_F_049";"Selena";
"NAMESET_RUS_F_050";"Sonya";
"NAMESET_RUS_F_051";"Susanna";
"NAMESET_RUS_F_052";"Tamara";
"NAMESET_RUS_F_053";"Tanya";
"NAMESET_RUS_F_054";"Tasha";
"NAMESET_RUS_F_055";"Tatiana";
"NAMESET_RUS_F_056";"Tatyana";
"NAMESET_RUS_F_057";"Toma";
"NAMESET_RUS_F_058";"Valentina";
"NAMESET_RUS_F_059";"Vera";
"NAMESET_RUS_F_060";"Veronika";
"NAMESET_RUS_F_061";"Violetta";
"NAMESET_RUS_F_062";"Yana";
"NAMESET_RUS_F_063";"Yuliana";
"NAMESET_RUS_F_064";"Zina";
"NAMESET_RUS_F_065";"Zoya";
1 # Nameset - Russian
2 # Data taken from www.behindthename.com
3 HEADER LatinAlph HangulKoKR KanaJaJP CyrilRuRU AlphElGR HanziZhCN HanziZhTW AksonThTH AlefbetHeIL
4 NAMESET_RUS_F_001 Agata
5 NAMESET_RUS_F_002 Aleksandra
6 NAMESET_RUS_F_003 Alisa
7 NAMESET_RUS_F_004 Alla
8 NAMESET_RUS_F_005 Anastasia
9 NAMESET_RUS_F_006 Angela
10 NAMESET_RUS_F_007 Angelina
11 NAMESET_RUS_F_008 Anna
12 NAMESET_RUS_F_009 Antonina
13 NAMESET_RUS_F_010 Anya
14 NAMESET_RUS_F_011 Adriana
15 NAMESET_RUS_F_012 Asya
16 NAMESET_RUS_F_013 Diana
17 NAMESET_RUS_F_014 Dominika
18 NAMESET_RUS_F_015 Dunya
19 NAMESET_RUS_F_016 Elena
20 NAMESET_RUS_F_017 Eva
21 NAMESET_RUS_F_018 Filippa
22 NAMESET_RUS_F_019 Gala
23 NAMESET_RUS_F_020 Inga
24 NAMESET_RUS_F_021 Ira
25 NAMESET_RUS_F_022 Irina
26 NAMESET_RUS_F_023 Isidora
27 NAMESET_RUS_F_024 Ivanna
28 NAMESET_RUS_F_025 Karina
29 NAMESET_RUS_F_026 Katerina
30 NAMESET_RUS_F_027 Katia
31 NAMESET_RUS_F_028 Kira
32 NAMESET_RUS_F_029 Klara
33 NAMESET_RUS_F_030 Kristina
34 NAMESET_RUS_F_031 Lana
35 NAMESET_RUS_F_032 Lara
36 NAMESET_RUS_F_033 Larisa
37 NAMESET_RUS_F_034 Lena
38 NAMESET_RUS_F_035 Lilia
39 NAMESET_RUS_F_036 Lilya
40 NAMESET_RUS_F_037 Liza
41 NAMESET_RUS_F_038 Margarita
42 NAMESET_RUS_F_039 Marina
43 NAMESET_RUS_F_040 Milena
44 NAMESET_RUS_F_041 Natalya
45 NAMESET_RUS_F_042 Natasha
46 NAMESET_RUS_F_043 Nika
47 NAMESET_RUS_F_044 Nina
48 NAMESET_RUS_F_045 Olga
49 NAMESET_RUS_F_046 Roksana
50 NAMESET_RUS_F_047 Sabina
51 NAMESET_RUS_F_048 Sasha
52 NAMESET_RUS_F_049 Selena
53 NAMESET_RUS_F_050 Sonya
54 NAMESET_RUS_F_051 Susanna
55 NAMESET_RUS_F_052 Tamara
56 NAMESET_RUS_F_053 Tanya
57 NAMESET_RUS_F_054 Tasha
58 NAMESET_RUS_F_055 Tatiana
59 NAMESET_RUS_F_056 Tatyana
60 NAMESET_RUS_F_057 Toma
61 NAMESET_RUS_F_058 Valentina
62 NAMESET_RUS_F_059 Vera
63 NAMESET_RUS_F_060 Veronika
64 NAMESET_RUS_F_061 Violetta
65 NAMESET_RUS_F_062 Yana
66 NAMESET_RUS_F_063 Yuliana
67 NAMESET_RUS_F_064 Zina
68 NAMESET_RUS_F_065 Zoya

View File

@@ -0,0 +1,58 @@
# Nameset - Russian
# Data taken from www.behindthename.com
"HEADER";"LatinAlph";"HangulKoKR";"KanaJaJP";"CyrilRuRU";"AlphElGR";"HanziZhCN";"HanziZhTW";"AksonThTH";"AlefbetHeIL"
"NAMESET_RUS_M_001";"Abram";
"NAMESET_RUS_M_002";"Adam";
"NAMESET_RUS_M_003";"Adrian";
"NAMESET_RUS_M_004";"Albert";
"NAMESET_RUS_M_005";"Alexey";
"NAMESET_RUS_M_006";"Anton";
"NAMESET_RUS_M_007";"Artur";
"NAMESET_RUS_M_008";"Benedikt";
"NAMESET_RUS_M_009";"Boris";
"NAMESET_RUS_M_010";"David";
"NAMESET_RUS_M_011";"Denis";
"NAMESET_RUS_M_012";"Dmitriy";
"NAMESET_RUS_M_013";"Eduard";
"NAMESET_RUS_M_014";"Fyodor";
"NAMESET_RUS_M_015";"Genya";
"NAMESET_RUS_M_016";"Grigoriy";
"NAMESET_RUS_M_017";"Igor";
"NAMESET_RUS_M_018";"Iona";
"NAMESET_RUS_M_019";"Iosif";
"NAMESET_RUS_M_020";"Isaak";
"NAMESET_RUS_M_021";"Isidor";
"NAMESET_RUS_M_022";"Ivan";
"NAMESET_RUS_M_023";"Kenya";
"NAMESET_RUS_M_024";"Konstantin";
"NAMESET_RUS_M_025";"Luka";
"NAMESET_RUS_M_026";"Maks";
"NAMESET_RUS_M_027";"Maksim";
"NAMESET_RUS_M_028";"Mark";
"NAMESET_RUS_M_029";"Marlen";
"NAMESET_RUS_M_030";"Martin";
"NAMESET_RUS_M_031";"Maxim";
"NAMESET_RUS_M_032";"Mikhail";
"NAMESET_RUS_M_033";"Milan";
"NAMESET_RUS_M_034";"Nestor";
"NAMESET_RUS_M_035";"Nika";
"NAMESET_RUS_M_036";"Nikita";
"NAMESET_RUS_M_037";"Nikolay";
"NAMESET_RUS_M_038";"Pavel";
"NAMESET_RUS_M_039";"Pyotr";
"NAMESET_RUS_M_040";"Robert";
"NAMESET_RUS_M_041";"Roma";
"NAMESET_RUS_M_042";"Roman";
"NAMESET_RUS_M_043";"Rudolf";
"NAMESET_RUS_M_044";"Sasha";
"NAMESET_RUS_M_045";"Sergey";
"NAMESET_RUS_M_046";"Stas";
"NAMESET_RUS_M_047";"Vadim";
"NAMESET_RUS_M_048";"Valentin";
"NAMESET_RUS_M_049";"Valeriy";
"NAMESET_RUS_M_050";"Viktor";
"NAMESET_RUS_M_051";"Vladimir";
"NAMESET_RUS_M_052";"Yegor";
"NAMESET_RUS_M_053";"Yuriy";
"NAMESET_RUS_M_054";"Zhenya";
1 # Nameset - Russian
2 # Data taken from www.behindthename.com
3 HEADER LatinAlph HangulKoKR KanaJaJP CyrilRuRU AlphElGR HanziZhCN HanziZhTW AksonThTH AlefbetHeIL
4 NAMESET_RUS_M_001 Abram
5 NAMESET_RUS_M_002 Adam
6 NAMESET_RUS_M_003 Adrian
7 NAMESET_RUS_M_004 Albert
8 NAMESET_RUS_M_005 Alexey
9 NAMESET_RUS_M_006 Anton
10 NAMESET_RUS_M_007 Artur
11 NAMESET_RUS_M_008 Benedikt
12 NAMESET_RUS_M_009 Boris
13 NAMESET_RUS_M_010 David
14 NAMESET_RUS_M_011 Denis
15 NAMESET_RUS_M_012 Dmitriy
16 NAMESET_RUS_M_013 Eduard
17 NAMESET_RUS_M_014 Fyodor
18 NAMESET_RUS_M_015 Genya
19 NAMESET_RUS_M_016 Grigoriy
20 NAMESET_RUS_M_017 Igor
21 NAMESET_RUS_M_018 Iona
22 NAMESET_RUS_M_019 Iosif
23 NAMESET_RUS_M_020 Isaak
24 NAMESET_RUS_M_021 Isidor
25 NAMESET_RUS_M_022 Ivan
26 NAMESET_RUS_M_023 Kenya
27 NAMESET_RUS_M_024 Konstantin
28 NAMESET_RUS_M_025 Luka
29 NAMESET_RUS_M_026 Maks
30 NAMESET_RUS_M_027 Maksim
31 NAMESET_RUS_M_028 Mark
32 NAMESET_RUS_M_029 Marlen
33 NAMESET_RUS_M_030 Martin
34 NAMESET_RUS_M_031 Maxim
35 NAMESET_RUS_M_032 Mikhail
36 NAMESET_RUS_M_033 Milan
37 NAMESET_RUS_M_034 Nestor
38 NAMESET_RUS_M_035 Nika
39 NAMESET_RUS_M_036 Nikita
40 NAMESET_RUS_M_037 Nikolay
41 NAMESET_RUS_M_038 Pavel
42 NAMESET_RUS_M_039 Pyotr
43 NAMESET_RUS_M_040 Robert
44 NAMESET_RUS_M_041 Roma
45 NAMESET_RUS_M_042 Roman
46 NAMESET_RUS_M_043 Rudolf
47 NAMESET_RUS_M_044 Sasha
48 NAMESET_RUS_M_045 Sergey
49 NAMESET_RUS_M_046 Stas
50 NAMESET_RUS_M_047 Vadim
51 NAMESET_RUS_M_048 Valentin
52 NAMESET_RUS_M_049 Valeriy
53 NAMESET_RUS_M_050 Viktor
54 NAMESET_RUS_M_051 Vladimir
55 NAMESET_RUS_M_052 Yegor
56 NAMESET_RUS_M_053 Yuriy
57 NAMESET_RUS_M_054 Zhenya

View File

@@ -0,0 +1,163 @@
# Nameset - Scandinavian
# Data taken from www.behindthename.com
# Translator note: this nameset does not contain name that has [ɹ](american english 'r') sound (except '-er'). i.e. for Korean, 'Carl' should be '카를', 'Aleksander' should be '알렉산더'.
"HEADER";"LatinAlph";"HangulKoKR";"KanaJaJP";"CyrilRuRU";"AlphElGR";"HanziZhCN";"HanziZhTW";"AksonThTH";"AlefbetHeIL"
"NAMESET_SCAN_F_001";"Agnes";"아그네스";
"NAMESET_SCAN_F_002";"Alberte";"알베르테";
"NAMESET_SCAN_F_003";"Alexandra";"알렉산드라";
"NAMESET_SCAN_F_004";"Alva";"알바";
"NAMESET_SCAN_F_005";"Amanda";"아만다";
"NAMESET_SCAN_F_006";"Andrea";"안드레아";
"NAMESET_SCAN_F_007";"Ane";"아네";
"NAMESET_SCAN_F_008";"Anna";"안나";
"NAMESET_SCAN_F_009";"Anne";"안네";
"NAMESET_SCAN_F_010";"Anniken";"안니켄";
"NAMESET_SCAN_F_011";"Asta";"아스타";
"NAMESET_SCAN_F_012";"Astrid";"아스트리드";
"NAMESET_SCAN_F_013";"Beatrice";"베아트리케";
"NAMESET_SCAN_F_014";"Camilla";"카밀라";
"NAMESET_SCAN_F_015";"Carolina";"카롤리나";
"NAMESET_SCAN_F_016";"Caroline";"카롤리네";
"NAMESET_SCAN_F_017";"Cecilia";"세실리아";
"NAMESET_SCAN_F_018";"Celina";"첼리나";
"NAMESET_SCAN_F_019";"Charlotte";"카를로테";
"NAMESET_SCAN_F_020";"Christina";"크리스티나";
"NAMESET_SCAN_F_021";"Christine";"크리스티네";
"NAMESET_SCAN_F_022";"Ebba";"에바";
"NAMESET_SCAN_F_023";"Edith";"에디스";
"NAMESET_SCAN_F_024";"Elin";"엘린";
"NAMESET_SCAN_F_025";"Elina";"엘리나";
"NAMESET_SCAN_F_026";"Elisabeth";"엘리사베스";
"NAMESET_SCAN_F_027";"Elise";"엘리세";
"NAMESET_SCAN_F_028";"Ella";"엘라";
"NAMESET_SCAN_F_029";"Ellinor";"엘리노르";
"NAMESET_SCAN_F_030";"Elsa";"엘사";
"NAMESET_SCAN_F_031";"Emelie";"에밀리에";
"NAMESET_SCAN_F_032";"Emilia";"에밀리아";
"NAMESET_SCAN_F_033";"Emilie";"에밀리에";
"NAMESET_SCAN_F_034";"Emma";"엠마";
"NAMESET_SCAN_F_035";"Erika";"에리카";
"NAMESET_SCAN_F_036";"Erle";"에를레";
"NAMESET_SCAN_F_037";"Ester";"에스테르";
"NAMESET_SCAN_F_038";"Eva";"에바";
"NAMESET_SCAN_F_039";"Evelina";"에벨리나";
"NAMESET_SCAN_F_040";"Felicia";"펠리시아";
"NAMESET_SCAN_F_041";"Filippa";"필리파";
"NAMESET_SCAN_F_042";"Frederikke";"프레데리케";
"NAMESET_SCAN_F_043";"Freja";"프레야";
"NAMESET_SCAN_F_044";"Frida";"프리다";
"NAMESET_SCAN_F_045";"Gabriella";"가브리엘라";
"NAMESET_SCAN_F_046";"Greta";"그레타";
"NAMESET_SCAN_F_047";"Hanna";"한나";
"NAMESET_SCAN_F_048";"Hanne";"한네";
"NAMESET_SCAN_F_049";"Hedda";"헤다";
"NAMESET_SCAN_F_050";"Hedvig";"헤드빅";
"NAMESET_SCAN_F_051";"Helena";"헬레나";
"NAMESET_SCAN_F_052";"Helene";"헬레네";
"NAMESET_SCAN_F_053";"Helle";"헬레";
"NAMESET_SCAN_F_054";"Henriette";"헨리에트";
"NAMESET_SCAN_F_055";"Hilda";"힐다";
"NAMESET_SCAN_F_056";"Ida";"이다";
"NAMESET_SCAN_F_057";"Ina";"이나";
"NAMESET_SCAN_F_058";"Ingeborg";"잉게보리";
"NAMESET_SCAN_F_059";"Ingrid";"잉그리";
"NAMESET_SCAN_F_060";"Ingvild";"잉그빌드";
"NAMESET_SCAN_F_061";"Iris";"이리스";
"NAMESET_SCAN_F_062";"Isabella";"이사벨라";
"NAMESET_SCAN_F_063";"Jessica";"예시카";
"NAMESET_SCAN_F_064";"Jóhanna";"요한나";
"NAMESET_SCAN_F_065";"Johanna";"요한나";
"NAMESET_SCAN_F_066";"Johanne";"요한네";
"NAMESET_SCAN_F_067";"Jonna";"요나";
"NAMESET_SCAN_F_068";"Julia";"율리아";
"NAMESET_SCAN_F_069";"Kaja";"카야";
"NAMESET_SCAN_F_070";"Kajsa";"카이사";
"NAMESET_SCAN_F_071";"Kamilla";"카밀라";
"NAMESET_SCAN_F_072";"Karen";"카렌";
"NAMESET_SCAN_F_073";"Karin";"카린";
"NAMESET_SCAN_F_074";"Karoline";"카롤리네";
"NAMESET_SCAN_F_075";"Katrine";"카트리네";
"NAMESET_SCAN_F_076";"Klara";"클라라";
"NAMESET_SCAN_F_077";"Kristín";"크리스틴";
"NAMESET_SCAN_F_078";"Kristin";"크리스틴";
"NAMESET_SCAN_F_079";"Kristina";"크리스티나";
"NAMESET_SCAN_F_080";"Kristine";"크리스티네";
"NAMESET_SCAN_F_081";"Lærke";"레르케";
"NAMESET_SCAN_F_082";"Laura";"라우라";
"NAMESET_SCAN_F_083";"Lea";"레아";
"NAMESET_SCAN_F_084";"Lene";"레네";
"NAMESET_SCAN_F_085";"Lilly";"릴리";
"NAMESET_SCAN_F_086";"Lina";"리나";
"NAMESET_SCAN_F_087";"Linda";"린다";
"NAMESET_SCAN_F_088";"Line";"리네";
"NAMESET_SCAN_F_089";"Linn";"린";
"NAMESET_SCAN_F_090";"Linnéa";"린네아";
"NAMESET_SCAN_F_091";"Lisa";"리사";
"NAMESET_SCAN_F_092";"Liv";"리브";
"NAMESET_SCAN_F_093";"Lotte";"로테";
"NAMESET_SCAN_F_094";"Lovisa";"로비사";
"NAMESET_SCAN_F_095";"Lykke";"리케";
"NAMESET_SCAN_F_096";"Maiken";"마이켄";
"NAMESET_SCAN_F_097";"Maja";"마야";
"NAMESET_SCAN_F_098";"Majken";"마이켄";
"NAMESET_SCAN_F_099";"Malene";"말레네";
"NAMESET_SCAN_F_100";"Malin";"말린";
"NAMESET_SCAN_F_101";"Maren";"마렌";
"NAMESET_SCAN_F_102";"Mari";"마리";
"NAMESET_SCAN_F_103";"Maria";"마리아";
"NAMESET_SCAN_F_104";"Marie";"마리에";
"NAMESET_SCAN_F_105";"Märta";"메르타";
"NAMESET_SCAN_F_106";"Marta";"마르타";
"NAMESET_SCAN_F_107";"Marte";"마르테";
"NAMESET_SCAN_F_108";"Mathilde";"마틸데";
"NAMESET_SCAN_F_109";"Matilda";"마틸다";
"NAMESET_SCAN_F_110";"Mia";"미아";
"NAMESET_SCAN_F_111";"Mikaela";"미카엘라";
"NAMESET_SCAN_F_112";"Milla";"밀라";
"NAMESET_SCAN_F_113";"Moa";"모아";
"NAMESET_SCAN_F_114";"My";"미";
"NAMESET_SCAN_F_115";"Nanna";"난나";
"NAMESET_SCAN_F_116";"Nora";"노라";
"NAMESET_SCAN_F_117";"Olivia";"올리비아";
"NAMESET_SCAN_F_118";"Paulina";"파울리나";
"NAMESET_SCAN_F_119";"Pernille";"페르닐레";
"NAMESET_SCAN_F_120";"Pia";"피아";
"NAMESET_SCAN_F_121";"Ragnhild";"라그닐드";
"NAMESET_SCAN_F_122";"Rebecca";"레베카";
"NAMESET_SCAN_F_123";"Rebecka";"레베카";
"NAMESET_SCAN_F_124";"Rebekka";"레베카";
"NAMESET_SCAN_F_125";"Rikke";"리케";
"NAMESET_SCAN_F_126";"Robin";"로빈";
"NAMESET_SCAN_F_127";"Ronja";"로냐";
"NAMESET_SCAN_F_128";"Rosa";"로사";
"NAMESET_SCAN_F_129";"Rut";"루트";
"NAMESET_SCAN_F_130";"Saga";"사가";
"NAMESET_SCAN_F_131";"Sandra";"산드라";
"NAMESET_SCAN_F_132";"Sanna";"산나";
"NAMESET_SCAN_F_133";"Sara";"사라";
"NAMESET_SCAN_F_134";"Semla";"세믈라";
"NAMESET_SCAN_F_135";"Signe";"시그네";
"NAMESET_SCAN_F_136";"Sigrid";"시그리";
"NAMESET_SCAN_F_137";"Silje";"실리에";
"NAMESET_SCAN_F_138";"Sille";"실레";
"NAMESET_SCAN_F_139";"Siri";"시리";
"NAMESET_SCAN_F_140";"Sofia";"소피아";
"NAMESET_SCAN_F_141";"Sofie";"소피에";
"NAMESET_SCAN_F_142";"Solveig";"솔비그";
"NAMESET_SCAN_F_143";"Stina";"스티나";
"NAMESET_SCAN_F_144";"Stine";"스티네";
"NAMESET_SCAN_F_145";"Sunniva";"순니바";
"NAMESET_SCAN_F_146";"Susanne";"수잔네";
"NAMESET_SCAN_F_147";"Svea";"스베아";
"NAMESET_SCAN_F_148";"Thea";"테아";
"NAMESET_SCAN_F_149";"Therese";"테레세";
"NAMESET_SCAN_F_150";"Tilda";"틸다";
"NAMESET_SCAN_F_151";"Tova";"토바";
"NAMESET_SCAN_F_152";"Tove";"토베";
"NAMESET_SCAN_F_153";"Tuva";"투바";
"NAMESET_SCAN_F_154";"Tyra";"티라";
"NAMESET_SCAN_F_155";"Vendela";"벤델라";
"NAMESET_SCAN_F_156";"Vera";"베라";
"NAMESET_SCAN_F_157";"Viktoria";"빅토리아";
"NAMESET_SCAN_F_158";"Ylva";"일바";
1 # Nameset - Scandinavian
2 # Data taken from www.behindthename.com
3 # Translator note: this nameset does not contain name that has [ɹ](american english 'r') sound (except '-er'). i.e. for Korean, 'Carl' should be '카를', 'Aleksander' should be '알렉산더'.
4 HEADER LatinAlph HangulKoKR KanaJaJP CyrilRuRU AlphElGR HanziZhCN HanziZhTW AksonThTH AlefbetHeIL
5 NAMESET_SCAN_F_001 Agnes 아그네스
6 NAMESET_SCAN_F_002 Alberte 알베르테
7 NAMESET_SCAN_F_003 Alexandra 알렉산드라
8 NAMESET_SCAN_F_004 Alva 알바
9 NAMESET_SCAN_F_005 Amanda 아만다
10 NAMESET_SCAN_F_006 Andrea 안드레아
11 NAMESET_SCAN_F_007 Ane 아네
12 NAMESET_SCAN_F_008 Anna 안나
13 NAMESET_SCAN_F_009 Anne 안네
14 NAMESET_SCAN_F_010 Anniken 안니켄
15 NAMESET_SCAN_F_011 Asta 아스타
16 NAMESET_SCAN_F_012 Astrid 아스트리드
17 NAMESET_SCAN_F_013 Beatrice 베아트리케
18 NAMESET_SCAN_F_014 Camilla 카밀라
19 NAMESET_SCAN_F_015 Carolina 카롤리나
20 NAMESET_SCAN_F_016 Caroline 카롤리네
21 NAMESET_SCAN_F_017 Cecilia 세실리아
22 NAMESET_SCAN_F_018 Celina 첼리나
23 NAMESET_SCAN_F_019 Charlotte 카를로테
24 NAMESET_SCAN_F_020 Christina 크리스티나
25 NAMESET_SCAN_F_021 Christine 크리스티네
26 NAMESET_SCAN_F_022 Ebba 에바
27 NAMESET_SCAN_F_023 Edith 에디스
28 NAMESET_SCAN_F_024 Elin 엘린
29 NAMESET_SCAN_F_025 Elina 엘리나
30 NAMESET_SCAN_F_026 Elisabeth 엘리사베스
31 NAMESET_SCAN_F_027 Elise 엘리세
32 NAMESET_SCAN_F_028 Ella 엘라
33 NAMESET_SCAN_F_029 Ellinor 엘리노르
34 NAMESET_SCAN_F_030 Elsa 엘사
35 NAMESET_SCAN_F_031 Emelie 에밀리에
36 NAMESET_SCAN_F_032 Emilia 에밀리아
37 NAMESET_SCAN_F_033 Emilie 에밀리에
38 NAMESET_SCAN_F_034 Emma 엠마
39 NAMESET_SCAN_F_035 Erika 에리카
40 NAMESET_SCAN_F_036 Erle 에를레
41 NAMESET_SCAN_F_037 Ester 에스테르
42 NAMESET_SCAN_F_038 Eva 에바
43 NAMESET_SCAN_F_039 Evelina 에벨리나
44 NAMESET_SCAN_F_040 Felicia 펠리시아
45 NAMESET_SCAN_F_041 Filippa 필리파
46 NAMESET_SCAN_F_042 Frederikke 프레데리케
47 NAMESET_SCAN_F_043 Freja 프레야
48 NAMESET_SCAN_F_044 Frida 프리다
49 NAMESET_SCAN_F_045 Gabriella 가브리엘라
50 NAMESET_SCAN_F_046 Greta 그레타
51 NAMESET_SCAN_F_047 Hanna 한나
52 NAMESET_SCAN_F_048 Hanne 한네
53 NAMESET_SCAN_F_049 Hedda 헤다
54 NAMESET_SCAN_F_050 Hedvig 헤드빅
55 NAMESET_SCAN_F_051 Helena 헬레나
56 NAMESET_SCAN_F_052 Helene 헬레네
57 NAMESET_SCAN_F_053 Helle 헬레
58 NAMESET_SCAN_F_054 Henriette 헨리에트
59 NAMESET_SCAN_F_055 Hilda 힐다
60 NAMESET_SCAN_F_056 Ida 이다
61 NAMESET_SCAN_F_057 Ina 이나
62 NAMESET_SCAN_F_058 Ingeborg 잉게보리
63 NAMESET_SCAN_F_059 Ingrid 잉그리
64 NAMESET_SCAN_F_060 Ingvild 잉그빌드
65 NAMESET_SCAN_F_061 Iris 이리스
66 NAMESET_SCAN_F_062 Isabella 이사벨라
67 NAMESET_SCAN_F_063 Jessica 예시카
68 NAMESET_SCAN_F_064 Jóhanna 요한나
69 NAMESET_SCAN_F_065 Johanna 요한나
70 NAMESET_SCAN_F_066 Johanne 요한네
71 NAMESET_SCAN_F_067 Jonna 요나
72 NAMESET_SCAN_F_068 Julia 율리아
73 NAMESET_SCAN_F_069 Kaja 카야
74 NAMESET_SCAN_F_070 Kajsa 카이사
75 NAMESET_SCAN_F_071 Kamilla 카밀라
76 NAMESET_SCAN_F_072 Karen 카렌
77 NAMESET_SCAN_F_073 Karin 카린
78 NAMESET_SCAN_F_074 Karoline 카롤리네
79 NAMESET_SCAN_F_075 Katrine 카트리네
80 NAMESET_SCAN_F_076 Klara 클라라
81 NAMESET_SCAN_F_077 Kristín 크리스틴
82 NAMESET_SCAN_F_078 Kristin 크리스틴
83 NAMESET_SCAN_F_079 Kristina 크리스티나
84 NAMESET_SCAN_F_080 Kristine 크리스티네
85 NAMESET_SCAN_F_081 Lærke 레르케
86 NAMESET_SCAN_F_082 Laura 라우라
87 NAMESET_SCAN_F_083 Lea 레아
88 NAMESET_SCAN_F_084 Lene 레네
89 NAMESET_SCAN_F_085 Lilly 릴리
90 NAMESET_SCAN_F_086 Lina 리나
91 NAMESET_SCAN_F_087 Linda 린다
92 NAMESET_SCAN_F_088 Line 리네
93 NAMESET_SCAN_F_089 Linn
94 NAMESET_SCAN_F_090 Linnéa 린네아
95 NAMESET_SCAN_F_091 Lisa 리사
96 NAMESET_SCAN_F_092 Liv 리브
97 NAMESET_SCAN_F_093 Lotte 로테
98 NAMESET_SCAN_F_094 Lovisa 로비사
99 NAMESET_SCAN_F_095 Lykke 리케
100 NAMESET_SCAN_F_096 Maiken 마이켄
101 NAMESET_SCAN_F_097 Maja 마야
102 NAMESET_SCAN_F_098 Majken 마이켄
103 NAMESET_SCAN_F_099 Malene 말레네
104 NAMESET_SCAN_F_100 Malin 말린
105 NAMESET_SCAN_F_101 Maren 마렌
106 NAMESET_SCAN_F_102 Mari 마리
107 NAMESET_SCAN_F_103 Maria 마리아
108 NAMESET_SCAN_F_104 Marie 마리에
109 NAMESET_SCAN_F_105 Märta 메르타
110 NAMESET_SCAN_F_106 Marta 마르타
111 NAMESET_SCAN_F_107 Marte 마르테
112 NAMESET_SCAN_F_108 Mathilde 마틸데
113 NAMESET_SCAN_F_109 Matilda 마틸다
114 NAMESET_SCAN_F_110 Mia 미아
115 NAMESET_SCAN_F_111 Mikaela 미카엘라
116 NAMESET_SCAN_F_112 Milla 밀라
117 NAMESET_SCAN_F_113 Moa 모아
118 NAMESET_SCAN_F_114 My
119 NAMESET_SCAN_F_115 Nanna 난나
120 NAMESET_SCAN_F_116 Nora 노라
121 NAMESET_SCAN_F_117 Olivia 올리비아
122 NAMESET_SCAN_F_118 Paulina 파울리나
123 NAMESET_SCAN_F_119 Pernille 페르닐레
124 NAMESET_SCAN_F_120 Pia 피아
125 NAMESET_SCAN_F_121 Ragnhild 라그닐드
126 NAMESET_SCAN_F_122 Rebecca 레베카
127 NAMESET_SCAN_F_123 Rebecka 레베카
128 NAMESET_SCAN_F_124 Rebekka 레베카
129 NAMESET_SCAN_F_125 Rikke 리케
130 NAMESET_SCAN_F_126 Robin 로빈
131 NAMESET_SCAN_F_127 Ronja 로냐
132 NAMESET_SCAN_F_128 Rosa 로사
133 NAMESET_SCAN_F_129 Rut 루트
134 NAMESET_SCAN_F_130 Saga 사가
135 NAMESET_SCAN_F_131 Sandra 산드라
136 NAMESET_SCAN_F_132 Sanna 산나
137 NAMESET_SCAN_F_133 Sara 사라
138 NAMESET_SCAN_F_134 Semla 세믈라
139 NAMESET_SCAN_F_135 Signe 시그네
140 NAMESET_SCAN_F_136 Sigrid 시그리
141 NAMESET_SCAN_F_137 Silje 실리에
142 NAMESET_SCAN_F_138 Sille 실레
143 NAMESET_SCAN_F_139 Siri 시리
144 NAMESET_SCAN_F_140 Sofia 소피아
145 NAMESET_SCAN_F_141 Sofie 소피에
146 NAMESET_SCAN_F_142 Solveig 솔비그
147 NAMESET_SCAN_F_143 Stina 스티나
148 NAMESET_SCAN_F_144 Stine 스티네
149 NAMESET_SCAN_F_145 Sunniva 순니바
150 NAMESET_SCAN_F_146 Susanne 수잔네
151 NAMESET_SCAN_F_147 Svea 스베아
152 NAMESET_SCAN_F_148 Thea 테아
153 NAMESET_SCAN_F_149 Therese 테레세
154 NAMESET_SCAN_F_150 Tilda 틸다
155 NAMESET_SCAN_F_151 Tova 토바
156 NAMESET_SCAN_F_152 Tove 토베
157 NAMESET_SCAN_F_153 Tuva 투바
158 NAMESET_SCAN_F_154 Tyra 티라
159 NAMESET_SCAN_F_155 Vendela 벤델라
160 NAMESET_SCAN_F_156 Vera 베라
161 NAMESET_SCAN_F_157 Viktoria 빅토리아
162 NAMESET_SCAN_F_158 Ylva 일바

View File

@@ -0,0 +1,167 @@
# Nameset - Scandinavian
# Data taken from www.behindthename.com
# Translator note: this nameset does not contain name that has [ɹ](american english 'r') sound (except '-er'). i.e. for Korean, 'Carl' should be '카를', 'Aleksander' should be '알렉산더'.
"HEADER";"LatinAlph";"HangulKoKR";"KanaJaJP";"CyrilRuRU";"AlphElGR";"HanziZhCN";"HanziZhTW";"AksonThTH";"AlefbetHeIL"
"NAMESET_SCAN_M_001";"Adam";"아담";
"NAMESET_SCAN_M_002";"Adrian";"아드리안";
"NAMESET_SCAN_M_003";"Aksel";"악셀";
"NAMESET_SCAN_M_004";"Albert";"알베르";
"NAMESET_SCAN_M_005";"Albin";"알빈";
"NAMESET_SCAN_M_006";"Alek";"알렉";
"NAMESET_SCAN_M_007";"Alexander";"알렉산더";
"NAMESET_SCAN_M_008";"Alfred";"알프레드";
"NAMESET_SCAN_M_009";"Amund";"아문드";
"NAMESET_SCAN_M_010";"Andreas";"안드레아스";
"NAMESET_SCAN_M_011";"Anton";"안톤";
"NAMESET_SCAN_M_012";"Aron";"아론";
"NAMESET_SCAN_M_013";"Alvard";"알바르";
"NAMESET_SCAN_M_014";"August";"아우구스트";
"NAMESET_SCAN_M_015";"Axel";"악셀";
"NAMESET_SCAN_M_016";"Björn";"비외른";
"NAMESET_SCAN_M_017";"Bjørn";"비외른";
"NAMESET_SCAN_M_018";"Carl";"카를";
"NAMESET_SCAN_M_019";"Casper";"카스퍼";
"NAMESET_SCAN_M_020";"Christian";"크리스티안";
"NAMESET_SCAN_M_021";"Christoffer";"크리스토퍼";
"NAMESET_SCAN_M_022";"Cyrus";"키루스";
"NAMESET_SCAN_M_023";"Daniel";"다니엘";
"NAMESET_SCAN_M_024";"David";"다비드";
"NAMESET_SCAN_M_025";"Edmund";"에드문드";
"NAMESET_SCAN_M_026";"Edvard";"에드바르";
"NAMESET_SCAN_M_027";"Edvin";"에드빈";
"NAMESET_SCAN_M_028";"Eirik";"에릭";
"NAMESET_SCAN_M_029";"Elias";"엘리아스";
"NAMESET_SCAN_M_030";"Elis";"엘리스";
"NAMESET_SCAN_M_031";"Emanuel";"에마누엘";
"NAMESET_SCAN_M_032";"Emil";"에밀";
"NAMESET_SCAN_M_033";"Endre";"에인드리";
"NAMESET_SCAN_M_034";"Erik";"에릭";
"NAMESET_SCAN_M_035";"Erlend";"에를렌드";
"NAMESET_SCAN_M_036";"Espen";"에스펜";
"NAMESET_SCAN_M_037";"Fabian";"파비안";
"NAMESET_SCAN_M_038";"Felix";"펠릭스";
"NAMESET_SCAN_M_039";"Filip";"필립";
"NAMESET_SCAN_M_040";"Frederik";"프레데릭";
"NAMESET_SCAN_M_041";"Gabriel";"가브리엘";
"NAMESET_SCAN_M_042";"Gustav";"구스타프";
"NAMESET_SCAN_M_043";"Haakon";"하콘";
"NAMESET_SCAN_M_044";"Hákon";"하우콘";
"NAMESET_SCAN_M_045";"Håkon";"호콘";
"NAMESET_SCAN_M_046";"Hampus";"함푸스";
"NAMESET_SCAN_M_047";"Hanne";"한네";
"NAMESET_SCAN_M_048";"Hans";"한스";
"NAMESET_SCAN_M_049";"Håvard";"호바르";
"NAMESET_SCAN_M_050";"Henrik";"헨릭";
"NAMESET_SCAN_M_051";"Herman";"헤르만";
"NAMESET_SCAN_M_052";"Hjalmar";"히알마르";
"NAMESET_SCAN_M_053";"Hugo";"후고";
"NAMESET_SCAN_M_054";"Isak";"이삭";
"NAMESET_SCAN_M_055";"Ivar";"이바르";
"NAMESET_SCAN_M_056";"Jacob";"야콥";
"NAMESET_SCAN_M_057";"Jakob";"야콥";
"NAMESET_SCAN_M_058";"Jan";"얀";
"NAMESET_SCAN_M_059";"Jens";"옌스";
"NAMESET_SCAN_M_060";"Jeppe";"예프";
"NAMESET_SCAN_M_061";"Jesper";"예스퍼";
"NAMESET_SCAN_M_062";"Joakim";"요아킴";
"NAMESET_SCAN_M_063";"Joel";"요엘";
"NAMESET_SCAN_M_064";"Johan";"요한";
"NAMESET_SCAN_M_065";"Jóhannes";"요한네스";
"NAMESET_SCAN_M_066";"Jón";"욘";
"NAMESET_SCAN_M_067";"Jon";"욘";
"NAMESET_SCAN_M_068";"Jónas";"요나스";
"NAMESET_SCAN_M_069";"Jonas";"요나스";
"NAMESET_SCAN_M_070";"Jonathan";"요나단";
"NAMESET_SCAN_M_071";"Jörgen";"이외르겐";
"NAMESET_SCAN_M_072";"Jørgen";"이외르겐";
"NAMESET_SCAN_M_073";"Josef";"요세프";
"NAMESET_SCAN_M_074";"Kalle";"칼";
"NAMESET_SCAN_M_075";"Kasper";"카스퍼";
"NAMESET_SCAN_M_076";"Kevin";"케빈";
"NAMESET_SCAN_M_077";"Kim";"킴";
"NAMESET_SCAN_M_078";"Knut";"크누트";
"NAMESET_SCAN_M_079";"Kristian";"크리스티안";
"NAMESET_SCAN_M_080";"Kristoffer";"크리스토퍼";
"NAMESET_SCAN_M_081";"Lars";"라르스";
"NAMESET_SCAN_M_082";"Lasse";"라세";
"NAMESET_SCAN_M_083";"Laurits";"라우리츠";
"NAMESET_SCAN_M_084";"Leo";"레오";
"NAMESET_SCAN_M_085";"Linus";"리누스";
"NAMESET_SCAN_M_086";"Loke";"로케";
"NAMESET_SCAN_M_087";"Love";"로베";
"NAMESET_SCAN_M_088";"Ludvig";"루드빅";
"NAMESET_SCAN_M_089";"Lukas";"루카스";
"NAMESET_SCAN_M_090";"Mads";"마드스";
"NAMESET_SCAN_M_091";"Magnus";"마그누스";
"NAMESET_SCAN_M_092";"Malte";"말테";
"NAMESET_SCAN_M_093";"Malthe";"말테";
"NAMESET_SCAN_M_094";"Marcus";"마르쿠스";
"NAMESET_SCAN_M_095";"Maria";"마리아";
"NAMESET_SCAN_M_096";"Marius";"마리우스";
"NAMESET_SCAN_M_097";"Markus";"마르쿠스";
"NAMESET_SCAN_M_098";"Martin";"마르틴";
"NAMESET_SCAN_M_099";"Mats";"마츠";
"NAMESET_SCAN_M_100";"Mattias";"마티아스";
"NAMESET_SCAN_M_101";"Max";"막스";
"NAMESET_SCAN_M_102";"Maximillian";"막시밀리안";
"NAMESET_SCAN_M_103";"Melker";"멜케르";
"NAMESET_SCAN_M_104";"Michael";"멜케르";
"NAMESET_SCAN_M_105";"Mikael";"미카엘";
"NAMESET_SCAN_M_106";"Mikkel";"미켈";
"NAMESET_SCAN_M_107";"Morten";"모르텐";
"NAMESET_SCAN_M_108";"Niklas";"니클라스";
"NAMESET_SCAN_M_109";"Nikolaj";"니콜라이";
"NAMESET_SCAN_M_110";"Nils";"닐스";
"NAMESET_SCAN_M_111";"Odin";"오딘";
"NAMESET_SCAN_M_112";"Ola";"올라";
"NAMESET_SCAN_M_113";"Olaf";"올라프";
"NAMESET_SCAN_M_114";"Olav";"올라브";
"NAMESET_SCAN_M_115";"Ole";"올레";
"NAMESET_SCAN_M_116";"Oliver";"올리버";
"NAMESET_SCAN_M_117";"Olle";"올리버";
"NAMESET_SCAN_M_118";"Olof";"올로프";
"NAMESET_SCAN_M_119";"Oscar";"오스카르";
"NAMESET_SCAN_M_120";"Óskar";"오스카르";
"NAMESET_SCAN_M_121";"Oskar";"오스카르";
"NAMESET_SCAN_M_122";"Otto";"오토";
"NAMESET_SCAN_M_123";"Patrik";"파트릭";
"NAMESET_SCAN_M_124";"Peder";"페더";
"NAMESET_SCAN_M_125";"Per";"페르";
"NAMESET_SCAN_M_126";"Petter";"페터";
"NAMESET_SCAN_M_127";"Philip";"필립";
"NAMESET_SCAN_M_128";"Pontus";"폰투스";
"NAMESET_SCAN_M_129";"Preben";"프레벤";
"NAMESET_SCAN_M_130";"Rafael";"프레벤";
"NAMESET_SCAN_M_131";"Reid";"리드";
"NAMESET_SCAN_M_132";"Robert";"로베르트";
"NAMESET_SCAN_M_133";"Robin";"로빈";
"NAMESET_SCAN_M_134";"Samuel";"사무엘";
"NAMESET_SCAN_M_135";"Sander";"산더";
"NAMESET_SCAN_M_136";"Sebastian";"세바스티안";
"NAMESET_SCAN_M_137";"Sigge";"시게";
"NAMESET_SCAN_M_138";"Sigurd";"시구르";
"NAMESET_SCAN_M_139";"Simen";"시멘";
"NAMESET_SCAN_M_140";"Simon";"시몬";
"NAMESET_SCAN_M_141";"Sindre";"신드레";
"NAMESET_SCAN_M_142";"Sixten";"시그스텐";
"NAMESET_SCAN_M_143";"Stefan";"스테판";
"NAMESET_SCAN_M_144";"Steffen";"스테펜";
"NAMESET_SCAN_M_145";"Stian";"스티안";
"NAMESET_SCAN_M_146";"Svante";"스반테";
"NAMESET_SCAN_M_147";"Sven";"스벤";
"NAMESET_SCAN_M_148";"Teodor";"테오도르";
"NAMESET_SCAN_M_149";"Theodor";"테오도르";
"NAMESET_SCAN_M_150";"Thomas";"토마스";
"NAMESET_SCAN_M_151";"Tim";"팀";
"NAMESET_SCAN_M_152";"Tobias";"토비아스";
"NAMESET_SCAN_M_153";"Tor";"토드";
"NAMESET_SCAN_M_154";"Truls";"트룰스";
"NAMESET_SCAN_M_155";"Ulrik";"울프릭";
"NAMESET_SCAN_M_156";"Valdemar";"발데마르";
"NAMESET_SCAN_M_157";"Valter";"발터";
"NAMESET_SCAN_M_158";"Vidar";"비다르";
"NAMESET_SCAN_M_159";"Viggo";"비고";
"NAMESET_SCAN_M_160";"Viktor";"빅토르";
"NAMESET_SCAN_M_161";"Ville";"빌레";
"NAMESET_SCAN_M_162";"Vincent";"빈센트";
1 # Nameset - Scandinavian
2 # Data taken from www.behindthename.com
3 # Translator note: this nameset does not contain name that has [ɹ](american english 'r') sound (except '-er'). i.e. for Korean, 'Carl' should be '카를', 'Aleksander' should be '알렉산더'.
4 HEADER LatinAlph HangulKoKR KanaJaJP CyrilRuRU AlphElGR HanziZhCN HanziZhTW AksonThTH AlefbetHeIL
5 NAMESET_SCAN_M_001 Adam 아담
6 NAMESET_SCAN_M_002 Adrian 아드리안
7 NAMESET_SCAN_M_003 Aksel 악셀
8 NAMESET_SCAN_M_004 Albert 알베르
9 NAMESET_SCAN_M_005 Albin 알빈
10 NAMESET_SCAN_M_006 Alek 알렉
11 NAMESET_SCAN_M_007 Alexander 알렉산더
12 NAMESET_SCAN_M_008 Alfred 알프레드
13 NAMESET_SCAN_M_009 Amund 아문드
14 NAMESET_SCAN_M_010 Andreas 안드레아스
15 NAMESET_SCAN_M_011 Anton 안톤
16 NAMESET_SCAN_M_012 Aron 아론
17 NAMESET_SCAN_M_013 Alvard 알바르
18 NAMESET_SCAN_M_014 August 아우구스트
19 NAMESET_SCAN_M_015 Axel 악셀
20 NAMESET_SCAN_M_016 Björn 비외른
21 NAMESET_SCAN_M_017 Bjørn 비외른
22 NAMESET_SCAN_M_018 Carl 카를
23 NAMESET_SCAN_M_019 Casper 카스퍼
24 NAMESET_SCAN_M_020 Christian 크리스티안
25 NAMESET_SCAN_M_021 Christoffer 크리스토퍼
26 NAMESET_SCAN_M_022 Cyrus 키루스
27 NAMESET_SCAN_M_023 Daniel 다니엘
28 NAMESET_SCAN_M_024 David 다비드
29 NAMESET_SCAN_M_025 Edmund 에드문드
30 NAMESET_SCAN_M_026 Edvard 에드바르
31 NAMESET_SCAN_M_027 Edvin 에드빈
32 NAMESET_SCAN_M_028 Eirik 에릭
33 NAMESET_SCAN_M_029 Elias 엘리아스
34 NAMESET_SCAN_M_030 Elis 엘리스
35 NAMESET_SCAN_M_031 Emanuel 에마누엘
36 NAMESET_SCAN_M_032 Emil 에밀
37 NAMESET_SCAN_M_033 Endre 에인드리
38 NAMESET_SCAN_M_034 Erik 에릭
39 NAMESET_SCAN_M_035 Erlend 에를렌드
40 NAMESET_SCAN_M_036 Espen 에스펜
41 NAMESET_SCAN_M_037 Fabian 파비안
42 NAMESET_SCAN_M_038 Felix 펠릭스
43 NAMESET_SCAN_M_039 Filip 필립
44 NAMESET_SCAN_M_040 Frederik 프레데릭
45 NAMESET_SCAN_M_041 Gabriel 가브리엘
46 NAMESET_SCAN_M_042 Gustav 구스타프
47 NAMESET_SCAN_M_043 Haakon 하콘
48 NAMESET_SCAN_M_044 Hákon 하우콘
49 NAMESET_SCAN_M_045 Håkon 호콘
50 NAMESET_SCAN_M_046 Hampus 함푸스
51 NAMESET_SCAN_M_047 Hanne 한네
52 NAMESET_SCAN_M_048 Hans 한스
53 NAMESET_SCAN_M_049 Håvard 호바르
54 NAMESET_SCAN_M_050 Henrik 헨릭
55 NAMESET_SCAN_M_051 Herman 헤르만
56 NAMESET_SCAN_M_052 Hjalmar 히알마르
57 NAMESET_SCAN_M_053 Hugo 후고
58 NAMESET_SCAN_M_054 Isak 이삭
59 NAMESET_SCAN_M_055 Ivar 이바르
60 NAMESET_SCAN_M_056 Jacob 야콥
61 NAMESET_SCAN_M_057 Jakob 야콥
62 NAMESET_SCAN_M_058 Jan
63 NAMESET_SCAN_M_059 Jens 옌스
64 NAMESET_SCAN_M_060 Jeppe 예프
65 NAMESET_SCAN_M_061 Jesper 예스퍼
66 NAMESET_SCAN_M_062 Joakim 요아킴
67 NAMESET_SCAN_M_063 Joel 요엘
68 NAMESET_SCAN_M_064 Johan 요한
69 NAMESET_SCAN_M_065 Jóhannes 요한네스
70 NAMESET_SCAN_M_066 Jón
71 NAMESET_SCAN_M_067 Jon
72 NAMESET_SCAN_M_068 Jónas 요나스
73 NAMESET_SCAN_M_069 Jonas 요나스
74 NAMESET_SCAN_M_070 Jonathan 요나단
75 NAMESET_SCAN_M_071 Jörgen 이외르겐
76 NAMESET_SCAN_M_072 Jørgen 이외르겐
77 NAMESET_SCAN_M_073 Josef 요세프
78 NAMESET_SCAN_M_074 Kalle
79 NAMESET_SCAN_M_075 Kasper 카스퍼
80 NAMESET_SCAN_M_076 Kevin 케빈
81 NAMESET_SCAN_M_077 Kim
82 NAMESET_SCAN_M_078 Knut 크누트
83 NAMESET_SCAN_M_079 Kristian 크리스티안
84 NAMESET_SCAN_M_080 Kristoffer 크리스토퍼
85 NAMESET_SCAN_M_081 Lars 라르스
86 NAMESET_SCAN_M_082 Lasse 라세
87 NAMESET_SCAN_M_083 Laurits 라우리츠
88 NAMESET_SCAN_M_084 Leo 레오
89 NAMESET_SCAN_M_085 Linus 리누스
90 NAMESET_SCAN_M_086 Loke 로케
91 NAMESET_SCAN_M_087 Love 로베
92 NAMESET_SCAN_M_088 Ludvig 루드빅
93 NAMESET_SCAN_M_089 Lukas 루카스
94 NAMESET_SCAN_M_090 Mads 마드스
95 NAMESET_SCAN_M_091 Magnus 마그누스
96 NAMESET_SCAN_M_092 Malte 말테
97 NAMESET_SCAN_M_093 Malthe 말테
98 NAMESET_SCAN_M_094 Marcus 마르쿠스
99 NAMESET_SCAN_M_095 Maria 마리아
100 NAMESET_SCAN_M_096 Marius 마리우스
101 NAMESET_SCAN_M_097 Markus 마르쿠스
102 NAMESET_SCAN_M_098 Martin 마르틴
103 NAMESET_SCAN_M_099 Mats 마츠
104 NAMESET_SCAN_M_100 Mattias 마티아스
105 NAMESET_SCAN_M_101 Max 막스
106 NAMESET_SCAN_M_102 Maximillian 막시밀리안
107 NAMESET_SCAN_M_103 Melker 멜케르
108 NAMESET_SCAN_M_104 Michael 멜케르
109 NAMESET_SCAN_M_105 Mikael 미카엘
110 NAMESET_SCAN_M_106 Mikkel 미켈
111 NAMESET_SCAN_M_107 Morten 모르텐
112 NAMESET_SCAN_M_108 Niklas 니클라스
113 NAMESET_SCAN_M_109 Nikolaj 니콜라이
114 NAMESET_SCAN_M_110 Nils 닐스
115 NAMESET_SCAN_M_111 Odin 오딘
116 NAMESET_SCAN_M_112 Ola 올라
117 NAMESET_SCAN_M_113 Olaf 올라프
118 NAMESET_SCAN_M_114 Olav 올라브
119 NAMESET_SCAN_M_115 Ole 올레
120 NAMESET_SCAN_M_116 Oliver 올리버
121 NAMESET_SCAN_M_117 Olle 올리버
122 NAMESET_SCAN_M_118 Olof 올로프
123 NAMESET_SCAN_M_119 Oscar 오스카르
124 NAMESET_SCAN_M_120 Óskar 오스카르
125 NAMESET_SCAN_M_121 Oskar 오스카르
126 NAMESET_SCAN_M_122 Otto 오토
127 NAMESET_SCAN_M_123 Patrik 파트릭
128 NAMESET_SCAN_M_124 Peder 페더
129 NAMESET_SCAN_M_125 Per 페르
130 NAMESET_SCAN_M_126 Petter 페터
131 NAMESET_SCAN_M_127 Philip 필립
132 NAMESET_SCAN_M_128 Pontus 폰투스
133 NAMESET_SCAN_M_129 Preben 프레벤
134 NAMESET_SCAN_M_130 Rafael 프레벤
135 NAMESET_SCAN_M_131 Reid 리드
136 NAMESET_SCAN_M_132 Robert 로베르트
137 NAMESET_SCAN_M_133 Robin 로빈
138 NAMESET_SCAN_M_134 Samuel 사무엘
139 NAMESET_SCAN_M_135 Sander 산더
140 NAMESET_SCAN_M_136 Sebastian 세바스티안
141 NAMESET_SCAN_M_137 Sigge 시게
142 NAMESET_SCAN_M_138 Sigurd 시구르
143 NAMESET_SCAN_M_139 Simen 시멘
144 NAMESET_SCAN_M_140 Simon 시몬
145 NAMESET_SCAN_M_141 Sindre 신드레
146 NAMESET_SCAN_M_142 Sixten 시그스텐
147 NAMESET_SCAN_M_143 Stefan 스테판
148 NAMESET_SCAN_M_144 Steffen 스테펜
149 NAMESET_SCAN_M_145 Stian 스티안
150 NAMESET_SCAN_M_146 Svante 스반테
151 NAMESET_SCAN_M_147 Sven 스벤
152 NAMESET_SCAN_M_148 Teodor 테오도르
153 NAMESET_SCAN_M_149 Theodor 테오도르
154 NAMESET_SCAN_M_150 Thomas 토마스
155 NAMESET_SCAN_M_151 Tim
156 NAMESET_SCAN_M_152 Tobias 토비아스
157 NAMESET_SCAN_M_153 Tor 토드
158 NAMESET_SCAN_M_154 Truls 트룰스
159 NAMESET_SCAN_M_155 Ulrik 울프릭
160 NAMESET_SCAN_M_156 Valdemar 발데마르
161 NAMESET_SCAN_M_157 Valter 발터
162 NAMESET_SCAN_M_158 Vidar 비다르
163 NAMESET_SCAN_M_159 Viggo 비고
164 NAMESET_SCAN_M_160 Viktor 빅토르
165 NAMESET_SCAN_M_161 Ville 빌레
166 NAMESET_SCAN_M_162 Vincent 빈센트

View File

@@ -2,13 +2,13 @@
"LANGUAGE_EN";"[LanguageName] in english";"English";"French";"Spanish";"German";"Italian ";"Portuguese (Brazil)";"Portuguese";"Russian";"Greek";"Turkish";"Danish";"Norwegian";"Swedish";"Dutch";"Polish";"Finnish";"Japanese";"Simplified Chinese";"Traditional Chinese";"Korean";"Czech";"Hungarian";"Romanian";"Thai";"Bulgarian";"Hebrew";"Japanese Kana";"Icelandic" "LANGUAGE_EN";"[LanguageName] in english";"English";"French";"Spanish";"German";"Italian ";"Portuguese (Brazil)";"Portuguese";"Russian";"Greek";"Turkish";"Danish";"Norwegian";"Swedish";"Dutch";"Polish";"Finnish";"Japanese";"Simplified Chinese";"Traditional Chinese";"Korean";"Czech";"Hungarian";"Romanian";"Thai";"Bulgarian";"Hebrew";"Japanese Kana";"Icelandic"
"LANGUAGE_ID";"IETF language tag(s) without dash";"enUS";"frFR";"esES";"deDE";"itIT";"ptBR";"ptPT";"ruRU";"elGR";"trTR";"daDK";"noNB";"svSE";"nlNL";"plPL";"fiFI";"jaJP";"zhCN";"zhTW";"koKR";"csCZ";"huHU";"roRO";"thTH";"bgBG";"heIL";"jakanaJP";"isIC" "LANGUAGE_ID";"IETF language tag(s) without dash";"enUS";"frFR";"esES";"deDE";"itIT";"ptBR";"ptPT";"ruRU";"elGR";"trTR";"daDK";"noNB";"svSE";"nlNL";"plPL";"fiFI";"jaJP";"zhCN";"zhTW";"koKR";"csCZ";"huHU";"roRO";"thTH";"bgBG";"heIL";"jakanaJP";"isIC"
"LANGUAGE_THIS";"MyLanguage'; in native text";"English";"Français";"Español";"Deutsch";"Italiano";"Português Brasileiro";"Português";"Pусский";"Ελληνικά";"Türkçe";"Dansk";"Norsk Bokmål";"Svenska";"Nederlands";"Polski";"Suomi";"日本語";"简体中文";"繁體中文";"한국어";"Čeština";"Magyar";"Română";"ภาษาไทย";"Български";"עברית";"にほんご";"Íslenska" "LANGUAGE_THIS";"MyLanguage in native text";"English";"Français";"Español";"Deutsch";"Italiano";"Português Brasileiro";"Português";"Pусский";"Ελληνικά";"Türkçe";"Dansk";"Norsk Bokmål";"Svenska";"Nederlands";"Polski";"Suomi";"日本語";"简体中文";"繁體中文";"한국어";"Čeština";"Magyar";"Română";"ภาษาไทย";"Български";"עברית";"にほんご";"Íslenska"
"LANGUAGE_DIRECTION";"ltr or rtl (text direction used by game code)";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"rtl";"ltr";"ltr" "LANGUAGE_DIRECTION";"ltr or rtl (text direction used by game code)";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"ltr";"rtl";"ltr";"ltr"
"CREDITS_POLYGLOT";"";"Translated by the Polyglot Project.";"Traduit par le Polyglot Projet.";"Traducido por el proyecto Polyglot.";"Übersetzt von Polyglot Project.";"Tradotto dal Polyglot Project.";"Traduzido pelo projeto Polyglot.";"Traduzido pelo projeto Polyglot.";"Перевод от проекта Polygon";"Μεταφράστηκε από το Polyglot Project.";"Polyglot Projesi ile çevrilmiştir.";"Oversat af Polyglot Projektet.";"Oversatt av Polyglot Prosjektet.";"Översättning av Polyglot-projektet.";"Vertaald door het Polyglot project.";"Przetłumaczono za pomocą Polyglot Project.";"Käännökset: Polyglot Project.";"翻訳提供Polyglotプロジェクト";"Polyglot 项目提供翻译";"翻譯由Polyglot Project 提供";"번역 제공: Polyglot Project.";"Překlad: Polyglot Projektu.";"Fordította a Polgylot Project.";"Tradus de către Polyglot Project.";"คำแปลโดย Polyglot Project";"Превод от проекта Polyglot.";"תורגם על-ידי פרויקט פוליגלוט.";"ほんやく ていきょうPolyglotプロジェクト";"Þýddur af verkefnið Polyglot" "CREDITS_POLYGLOT";"";"Translated by the Polyglot Project.";"Traduit par le Polyglot Projet.";"Traducido por el proyecto Polyglot.";"Übersetzt von Polyglot Project.";"Tradotto dal Polyglot Project.";"Traduzido pelo projeto Polyglot.";"Traduzido pelo projeto Polyglot.";"Перевод от проекта Polygon";"Μεταφράστηκε από το Polyglot Project.";"Polyglot Projesi ile çevrilmiştir.";"Oversat af Polyglot Projektet.";"Oversatt av Polyglot Prosjektet.";"Översättning av Polyglot-projektet.";"Vertaald door het Polyglot project.";"Przetłumaczono za pomocą Polyglot Project.";"Käännökset: Polyglot Project.";"翻訳提供Polyglotプロジェクト";"Polyglot 项目提供翻译";"翻譯由Polyglot Project 提供";"번역 제공: Polyglot Project.";"Překlad: Polyglot Projektu.";"Fordította a Polgylot Project.";"Tradus de către Polyglot Project.";"คำแปลโดย Polyglot Project";"Превод от проекта Polyglot.";"תורגם על-ידי פרויקט פוליגלוט.";"ほんやく ていきょうPolyglotプロジェクト";"Þýddur af verkefnið Polyglot"
"CONTEXT_CHARACTER_DELETE";"";"Delete Character";"Supprimer personnage";"Eliminar personaje";"Character löschen";"Cancella personaggio";"Deletar Personagem";"Apagar personagem";"Удалить персонажа";"Διαγραφή Χαρακτήρα";"Karakteri Sil";"Slet karakter";"Slett karakter";"Radera karaktär";"Verwijder Personage";"Usuń Postać";"Poista hahmo";"キャラクター削除";"删除角色";"刪除角色";"캐릭터 지우기";"Smazat postavu";"Karakter törlése";"Șterge personaj";"ลบตัวละคร";"Изтрий персонаж";"למחוק דמות";"Eyða persónu" "CONTEXT_CHARACTER_DELETE";"";"Delete Character";"Supprimer personnage";"Eliminar personaje";"Character löschen";"Cancella personaggio";"Deletar Personagem";"Apagar personagem";"Удалить персонажа";"Διαγραφή Χαρακτήρα";"Karakteri Sil";"Slet karakter";"Slett karakter";"Radera karaktär";"Verwijder Personage";"Usuń Postać";"Poista hahmo";"キャラクター削除";"删除角色";"刪除角色";"캐릭터 지우기";"Smazat postavu";"Karakter törlése";"Șterge personaj";"ลบตัวละคร";"Изтрий персонаж";"למחוק דמות";"キャラクターさくじょ";"Eyða persónu"
"CONTEXT_CHARACTER_NEW";"Typically used in rpgs/mmorpgs";"New Character";"Nouveau personnage";"Nuevo personaje";"Neuer Charakter";"Nuovo personaggio";"Novo Personagem";"Nova personagem";"Новый персонаж";"Δημιουργία Χαρακτήρα";"Yeni Karakter";"Ny karakter";"Ny karakter";"Ny karaktär";"Nieuw Personage";"Nowa Postać";"Uusi hahmo";"新規キャラクター";"创新角色";"創新角色";"캐릭터 만들기";"Nová postava";"Új karakter";"Personaj nou";"ตัวละครใหม่";"Нов персонаж";"דמות חדשה";"Nýja persónu" "CONTEXT_CHARACTER_NEW";"Typically used in rpgs/mmorpgs";"New Character";"Nouveau personnage";"Nuevo personaje";"Neuer Charakter";"Nuovo personaggio";"Novo Personagem";"Nova personagem";"Новый персонаж";"Δημιουργία Χαρακτήρα";"Yeni Karakter";"Ny karakter";"Ny karakter";"Ny karaktär";"Nieuw Personage";"Nowa Postać";"Uusi hahmo";"新規キャラクター";"创新角色";"創新角色";"캐릭터 만들기";"Nová postava";"Új karakter";"Personaj nou";"ตัวละครใหม่";"Нов персонаж";"דמות חדשה";"しんき キャラクター";"Nýja persónu"
"CONTEXT_CLASS_AI";"[Noun]";"Artificial Intelligence";"Intelligence Artificielle";"Inteligencia Artificial";"Künstliche Intelligenz";"Intelligenza Artificiale";"Inteligência Artificial";"Inteligência Artificial";"Искусственный интеллект";"Τεχνιτή Νοημοσύνη";"Yapay Zeka";"Kunstig Intelligens";"Kunstig Intelligens";"Artificiell intelligens";"Kunstmatige intelligentie";"Sztuczna Inteligencja";"Tekoäly";"人工知能";"人工智能";"人工智能";"인공지능";"Umělá inteligence";"Mesterséges Intelligencia";"Inteligență Artificială";"ปัญญาประดิษฐ์";"Изкуствен интелект";"בינה-מלאכותית" "CONTEXT_CLASS_AI";"[Noun]";"Artificial Intelligence";"Intelligence Artificielle";"Inteligencia Artificial";"Künstliche Intelligenz";"Intelligenza Artificiale";"Inteligência Artificial";"Inteligência Artificial";"Искусственный интеллект";"Τεχνιτή Νοημοσύνη";"Yapay Zeka";"Kunstig Intelligens";"Kunstig Intelligens";"Artificiell intelligens";"Kunstmatige intelligentie";"Sztuczna Inteligencja";"Tekoäly";"人工知能";"人工智能";"人工智能";"인공지능";"Umělá inteligence";"Mesterséges Intelligencia";"Inteligență Artificială";"ปัญญาประดิษฐ์";"Изкуствен интелект";"בינה-מלאכותית"
"CONTEXT_CLASS_ALIEN";"[Noun]";"Alien";"Extraterrestre";"Alienígena";"Alien";"Alieno";"Extraterrestre";"Extraterrestre";"Пришелец";"Εξωγήινος";"Uzaylı";"Rumvæsen";"Romvesen";"Utomjording";"Buitenaards wezen";"Kosmita";"Avaruusolio";"エイリアン";"外星人";"外星人";"외계인";"Mimozemšťan";"Idegen";"Extraterestru";"เอเลี่ยน";"Извънземно";"חייזר" "CONTEXT_CLASS_ALIEN";"[Noun]";"Alien";"Extraterrestre";"Alienígena";"Alien";"Alieno";"Extraterrestre";"Extraterrestre";"Пришелец";"Εξωγήινος";"Uzaylı";"Rumvæsen";"Romvesen";"Utomjording";"Buitenaards wezen";"Kosmita";"Avaruusolio";"エイリアン";"外星人";"外星人";"외계인";"Mimozemšťan";"Idegen";"Extraterestru";"เอเลี่ยน";"Извънземно";"חייזר"
@@ -42,10 +42,10 @@
"CONTEXT_CONDITION_DEAD";"[Adjective] [Default male]";"Dead";"Mort";"Muerto";"Toter";"Morto";"Morto";"Morto";"Мёртвый";"Νεκρός";"Ölü";"Død";"Død";"Död";"Dood";"Martwy";"Kuollut";"死亡";"死亡";"死亡";"사망";"Mrtvý";"Halott";"Mort";"ตาย";"Мъртъв";"מת";"しぼう";"Dauður" "CONTEXT_CONDITION_DEAD";"[Adjective] [Default male]";"Dead";"Mort";"Muerto";"Toter";"Morto";"Morto";"Morto";"Мёртвый";"Νεκρός";"Ölü";"Død";"Død";"Död";"Dood";"Martwy";"Kuollut";"死亡";"死亡";"死亡";"사망";"Mrtvý";"Halott";"Mort";"ตาย";"Мъртъв";"מת";"しぼう";"Dauður"
"CONTEXT_CONDITION_FROZEN";"[Adjective] [Default male]";"Frozen";"Gelé";"Congelado";"Gefrohrener";"Ghiacciato";"Congelado";"Congelado";"Заморожен";"Παγωμένος";"Donmuş";"Frossen";"Frossen";"Fryst";"Bevroren";"Zamrożony";"Jäässä";"凍結";"凍結";"凍結";"동결";"Zmražený";"Fagyott";"Înghețat";"หนาวเย็น";"Замразен";"קפוא";"とうけつ";"Frosinn" "CONTEXT_CONDITION_FROZEN";"[Adjective] [Default male]";"Frozen";"Gelé";"Congelado";"Gefrohrener";"Ghiacciato";"Congelado";"Congelado";"Заморожен";"Παγωμένος";"Donmuş";"Frossen";"Frossen";"Fryst";"Bevroren";"Zamrożony";"Jäässä";"凍結";"凍結";"凍結";"동결";"Zmražený";"Fagyott";"Înghețat";"หนาวเย็น";"Замразен";"קפוא";"とうけつ";"Frosinn"
"CONTEXT_CONDITION_POISONED";"[Adjective] [Default male]";"Poisoned";"Empoisonné";"Envenenado";"Vergifteter";"Avvelenato";"Envenenado";"Envenenado";"Отравлен";"Δηλητηρισμένος";"Zehirlenmiş";"Forgiftet";"Forgiftet";"Förgiftad";"Vergiftigd";"Otruty";"Myrkytetty";"毒";"毒";"中毒";"중독";"Otrávený";"Mérgezett";"Otrăvit";"ติดพิษ";"Отровен";"מורעל";"どく";"Eitrun" "CONTEXT_CONDITION_POISONED";"[Adjective] [Default male]";"Poisoned";"Empoisonné";"Envenenado";"Vergifteter";"Avvelenato";"Envenenado";"Envenenado";"Отравлен";"Δηλητηρισμένος";"Zehirlenmiş";"Forgiftet";"Forgiftet";"Förgiftad";"Vergiftigd";"Otruty";"Myrkytetty";"毒";"毒";"中毒";"중독";"Otrávený";"Mérgezett";"Otrăvit";"ติดพิษ";"Отровен";"מורעל";"どく";"Eitrun"
"CONTEXT_CONDITION_SLOWED";"[Adjective] [Default male]";"Slowed";"Ralenti";"Ralentizado";"Verlangsamter";"Rallentato";"Lento";"Lento";"Замедлен";"Επιβραδυνμένος";"Yavaşlamış";"Langsommelig";"Nedsakted";"Nedsaktad";"Vertraagd";"Spowolniony";"Hidastettu";"減速";"減速";"減速";"감속";"Zpomalený";"Lassított";"Încetinit";"ช้า";"Забавен";"מואט";"げんそく";"hægur-hreyfing" "CONTEXT_CONDITION_SLOWED";"[Adjective] [Default male]";"Slowed";"Ralenti";"Ralentizado";"Verlangsamter";"Rallentato";"Lento";"Lento";"Замедлен";"Επιβραδυνμένος";"Yavaşlamış";"Langsommelig";"Nedsakted";"Nedsaktad";"Vertraagd";"Spowolniony";"Hidastettu";"減速";"減速";"減速";"감속";"Zpomalený";"Lassított";"Încetinit";"ช้า";"Забавен";"מואט";"げんそく";"Hægur-hreyfing"
"CONTEXT_CONDITION_STUNNED";"[Adjective] [Default male]";"Stunned";"Étourdi";"Aturdido";"Erstarrter";"Stordito";"Atordoado";"Atordoado";"Оглушен";"Παραλυμένος";"Sersemlemiş";"Lamslået";"Lamslått";"Lamslagen";"Bedwelmd";"Ogłuszony";"Pökerryksissä";"スタン";"眩晕";"眩晕";"스턴";"Ohromený";"Kábult";"Împietrit";"มึน";"Зашеметен";"משותק";"スタン";"hneykslaður" "CONTEXT_CONDITION_STUNNED";"[Adjective] [Default male]";"Stunned";"Étourdi";"Aturdido";"Erstarrter";"Stordito";"Atordoado";"Atordoado";"Оглушен";"Παραλυμένος";"Sersemlemiş";"Lamslået";"Lamslått";"Lamslagen";"Bedwelmd";"Ogłuszony";"Pökerryksissä";"スタン";"眩晕";"眩晕";"스턴";"Ohromený";"Kábult";"Împietrit";"มึน";"Зашеметен";"משותק";"スタン";"Hneykslaður"
"CONTEXT_CONDITION_UNCONSCIOUS";"[Adjective]";"Unconscious";"Inconscient";"Inconsciente";"Bewusstloser";"Svenuto";"Desmaiado";"Desmaiado";"Без сознания";"Αναίσθητος";"Şuursuz";"Ubevist";"Ubevist";"Omedveten";"Bewusteloos";"Nieprzytomny";"Tajuton";"気絶";"失去知觉";"失去知覺";"기절";"V bezvědomí";"Eszméletlen";"Inconștient";"สลบ";"В безсъзнание";"חסר-הכרה";"きぜつ";"meðvitundarlaus" "CONTEXT_CONDITION_UNCONSCIOUS";"[Adjective]";"Unconscious";"Inconscient";"Inconsciente";"Bewusstloser";"Svenuto";"Desmaiado";"Desmaiado";"Без сознания";"Αναίσθητος";"Şuursuz";"Ubevist";"Ubevist";"Omedveten";"Bewusteloos";"Nieprzytomny";"Tajuton";"気絶";"失去知觉";"失去知覺";"기절";"V bezvědomí";"Eszméletlen";"Inconștient";"สลบ";"В безсъзнание";"חסר-הכרה";"きぜつ";"Meðvitundarlaus"
"CONTEXT_CONDITION_UNHURT";"[Adjective] [Default male] No wounds";"Unhurt";"Indemne";"Ileso";"Unverletzter";"Illeso";"Ileso";"Ileso";"Невредимый";"Αβλαβής";"Yaralanmamış";"Ubeskadiget";"Uskadd";"Oskadad";"Ongedeerd";"Zdrowy";"Täydessä kunnossa";"無傷";"未受伤";"未受傷";"정상";"Nezraněný";"Sértetlen";"Neatins";"ไม่บาดเจ็บ";"Невредим";"בריא";"むきず";"óskemmdar" "CONTEXT_CONDITION_UNHURT";"[Adjective] [Default male] No wounds";"Unhurt";"Indemne";"Ileso";"Unverletzter";"Illeso";"Ileso";"Ileso";"Невредимый";"Αβλαβής";"Yaralanmamış";"Ubeskadiget";"Uskadd";"Oskadad";"Ongedeerd";"Zdrowy";"Täydessä kunnossa";"無傷";"未受伤";"未受傷";"정상";"Nezraněný";"Sértetlen";"Neatins";"ไม่บาดเจ็บ";"Невредим";"בריא";"むきず";"Óskemmdar"
"CONTEXT_CONDITION_WET";"[Adjective] [Default male]";"Wet";"Trempé";"Mojado";"Nasser";"Bagnato";"Molhado";"Molhado";"Мокрый";"Βρεγμένος";"Islak";"Våd";"Våt";"Våt";"Nat";"Przemoczony";"Märkä";"濡れている";".湿";".濕";"젖음";"Vlhký";"Nedves";"Ud";"เปียก";"Мокър";"רטוב";"ぬれている";"Blautur" "CONTEXT_CONDITION_WET";"[Adjective] [Default male]";"Wet";"Trempé";"Mojado";"Nasser";"Bagnato";"Molhado";"Molhado";"Мокрый";"Βρεγμένος";"Islak";"Våd";"Våt";"Våt";"Nat";"Przemoczony";"Märkä";"濡れている";".湿";".濕";"젖음";"Vlhký";"Nedves";"Ud";"เปียก";"Мокър";"רטוב";"ぬれている";"Blautur"
"CONTEXT_CONDITION_WOUNDED";"[Adjective] [Default male]";"Wounded";"Blessé";"Herido";"Verwundeter";"Ferito";"Ferido";"Ferido";"Раненый";"Πληγωμένος";"Yaralı";"Såret";"Såret";"Skadad";"Gewond";"Ranny";"Haavoittunut";"負傷";"受伤";"受傷";"부상";"Zraněný";"Sebesült";"Rănit";"บาดเจ็บ";"Ранен";"פצוע";"ふしょう";"Sár" "CONTEXT_CONDITION_WOUNDED";"[Adjective] [Default male]";"Wounded";"Blessé";"Herido";"Verwundeter";"Ferito";"Ferido";"Ferido";"Раненый";"Πληγωμένος";"Yaralı";"Såret";"Såret";"Skadad";"Gewond";"Ranny";"Haavoittunut";"負傷";"受伤";"受傷";"부상";"Zraněný";"Sebesült";"Rănit";"บาดเจ็บ";"Ранен";"פצוע";"ふしょう";"Sár"
@@ -54,23 +54,23 @@
"CONTEXT_DESCRIPTION_SMALL";"[Adjective]";"Small";"Petit";"Pequeño";"Klein";"Piccolo";"Pequeno";"Pequeno";"Маленький";"Μικρό";"Küçük";"Lille";"Liten";"Liten";"Klein";"Mały";"Pieni";"小";"小";"小";"소";"Malý";"Kicsi";"Mic";"เล็ก";"Малък";"קטן";"こ";"Lítill" "CONTEXT_DESCRIPTION_SMALL";"[Adjective]";"Small";"Petit";"Pequeño";"Klein";"Piccolo";"Pequeno";"Pequeno";"Маленький";"Μικρό";"Küçük";"Lille";"Liten";"Liten";"Klein";"Mały";"Pieni";"小";"小";"小";"소";"Malý";"Kicsi";"Mic";"เล็ก";"Малък";"קטן";"こ";"Lítill"
"CONTEXT_DESCRIPTION_TINY";"[Adjective] Very small";"Tiny";"Minuscule";"Diminuto";"Winzig";"Minuscolo";"Muito pequeno";"Muito pequeno";"Крошечный";"Μικροσκοπικό";"Minik";"Lillebitte";"Bitteliten";"Pytteliten";"Minuscuul";"Malutki";"Pikkuriikkinen";"極小";"极小";"極小";"특소";"Maličký";"Apró";"Minuscul";"เล็กจิ๋ว";"Миниатюрен";"קטנטן";"きょくしょう";"Pínulítill" "CONTEXT_DESCRIPTION_TINY";"[Adjective] Very small";"Tiny";"Minuscule";"Diminuto";"Winzig";"Minuscolo";"Muito pequeno";"Muito pequeno";"Крошечный";"Μικροσκοπικό";"Minik";"Lillebitte";"Bitteliten";"Pytteliten";"Minuscuul";"Malutki";"Pikkuriikkinen";"極小";"极小";"極小";"특소";"Maličký";"Apró";"Minuscul";"เล็กจิ๋ว";"Миниатюрен";"קטנטן";"きょくしょう";"Pínulítill"
"CONTEXT_ITEM_ARMOR";"[Noun] Body armor";"Armor";"Armure";"Armadura";"Rüstung";"Armatura";"Armadura";"Armadura";"Броня";"Πανοπλία";"Zırh";"Rustning";"Rustning";"Rustning";"Pantser";"Zbroja";"Panssari";"鎧";"护甲";"護甲";"갑옷";"Brnění";"Páncél";"Armură";"ชุดเกราะ";"Броня";"שריון" "CONTEXT_ITEM_ARMOR";"[Noun] Body armor";"Armor";"Armure";"Armadura";"Rüstung";"Armatura";"Armadura";"Armadura";"Броня";"Πανοπλία";"Zırh";"Rustning";"Rustning";"Rustning";"Pantser";"Zbroja";"Panssari";"鎧";"护甲";"護甲";"갑옷";"Brnění";"Páncél";"Armură";"ชุดเกราะ";"Броня";"שריון";"よろい";"brynja"
"CONTEXT_ITEM_ARROW";"[Noun] Ammo for archers";"Arrow";"Flèche";"Flecha";"Pfeil";"Freccia";"Flecha";"Seta";"Стрела";"Βέλος";"Ok";"Pil";"Pil";"Pil";"Pijl";"Strzała";"Nuoli";"矢";"箭";"箭";"화살";"Šíp";"Nyílvessző";"Săgeată";"ลูกธนู";"Стрела";"חץ" "CONTEXT_ITEM_ARROW";"[Noun] Ammo for archers";"Arrow";"Flèche";"Flecha";"Pfeil";"Freccia";"Flecha";"Seta";"Стрела";"Βέλος";"Ok";"Pil";"Pil";"Pil";"Pijl";"Strzała";"Nuoli";"矢";"箭";"箭";"화살";"Šíp";"Nyílvessző";"Săgeată";"ลูกธนู";"Стрела";"חץ";"や";"Ör"
"CONTEXT_ITEM_ARROW_PLURAL";"[Noun/Plural] Ammo for archers";"Arrows";"Flèches";"Flechas";"Pfeile";"Frecce";"Flechas";"Setas";"Стрелы";"Βέλη";"Oklar";"Pile";"Piler";"Pilar";"Pijlen";"Strzały";"Nuolet";"矢";"箭";"箭";"화살";"Šípy";"Nyílvesszők";"Săgeți";"ลูกธนู";"Стрели";"חיצים" "CONTEXT_ITEM_ARROW_PLURAL";"[Noun/Plural] Ammo for archers";"Arrows";"Flèches";"Flechas";"Pfeile";"Frecce";"Flechas";"Setas";"Стрелы";"Βέλη";"Oklar";"Pile";"Piler";"Pilar";"Pijlen";"Strzały";"Nuolet";"矢";"箭";"箭";"화살";"Šípy";"Nyílvesszők";"Săgeți";"ลูกธนู";"Стрели";"חיצים";"や";"Örvar"
"CONTEXT_ITEM_BOMB";"[Noun]";"Bomb";"Bombe";"Bomba";"Bombe";"Bomba";"Bomba";"Bomba";"Бомба";"Βόμβα";"Bomba";"Bombe";"Bombe";"Bomb";"Bom";"Bomba";"Pommi";"爆弾";"炸弹";"炸彈";"폭탄";"Bomba";"Bomba";"Bombă";"ระเบิด";"Бомба";"פצצה" "CONTEXT_ITEM_BOMB";"[Noun]";"Bomb";"Bombe";"Bomba";"Bombe";"Bomba";"Bomba";"Bomba";"Бомба";"Βόμβα";"Bomba";"Bombe";"Bombe";"Bomb";"Bom";"Bomba";"Pommi";"爆弾";"炸弹";"炸彈";"폭탄";"Bomba";"Bomba";"Bombă";"ระเบิด";"Бомба";"פצצה";"ばくだん";"Bomba"
"CONTEXT_ITEM_BOOK";"[Noun]";"Book";"Livre";"Libro";"Buch";"Libro";"Livro";"Livro";"Книга";"Βιβλίο";"Kitap";"Bog";"Bok";"Bok";"Boek";"Książka";"Kirja";"本";"书";"書";"책";"Kniha";"Könyv";"Carte";"หนังสือ";"Книга";"ספר" "CONTEXT_ITEM_BOOK";"[Noun]";"Book";"Livre";"Libro";"Buch";"Libro";"Livro";"Livro";"Книга";"Βιβλίο";"Kitap";"Bog";"Bok";"Bok";"Boek";"Książka";"Kirja";"本";"书";"書";"책";"Kniha";"Könyv";"Carte";"หนังสือ";"Книга";"ספר";"ほん";"Bók"
"CONTEXT_ITEM_BOOTS";"[Noun/Plural] Boots";"Boots";"Bottes";"Botas";"Stiefel";"Scarponi";"Botas";"Botas";"Ботинки";"Μπότες";"Bot";"Støvler";"Støvler";"Kängor";"Schoenen";"Buty";"Saappaat";"靴";"靴";"靴";"신발";"Boty";"Csizma";"Bocanci";"รองเท้าบูท";"Ботуши";"מגפיים" "CONTEXT_ITEM_BOOTS";"[Noun/Plural] Boots";"Boots";"Bottes";"Botas";"Stiefel";"Scarponi";"Botas";"Botas";"Ботинки";"Μπότες";"Bot";"Støvler";"Støvler";"Kängor";"Schoenen";"Buty";"Saappaat";"靴";"靴";"靴";"신발";"Boty";"Csizma";"Bocanci";"รองเท้าบูท";"Ботуши";"מגפיים";"くつ";"Skór"
"CONTEXT_ITEM_BOW";"[Noun] Used by archers";"Bow";"Arc";"Arco";"Bogen";"Arco";"Arco";"Arco";"Лук";"Τόξο";"Yay";"Bue";"Bue";"Båge";"Boog";"Łuk";"Jousi";"弓";"弓";"弓";"활";"Luk";"Íj";"Arc";"ธนู";"Лък";"קשת" "CONTEXT_ITEM_BOW";"[Noun] Used by archers";"Bow";"Arc";"Arco";"Bogen";"Arco";"Arco";"Arco";"Лук";"Τόξο";"Yay";"Bue";"Bue";"Båge";"Boog";"Łuk";"Jousi";"弓";"弓";"弓";"활";"Luk";"Íj";"Arc";"ธนู";"Лък";"קשת";"ゆみ";"Bógur"
"CONTEXT_ITEM_CARD";"[Noun]";"Card";"Carte";"Carta";"Karte";"Carta";"Carta";"Carta";"Карта";"Κάρτα";"Kart";"Kort";"Kort";"Kort";"Kaart";"Karta";"Kortti";"カード";"卡片";"卡片";"카드";"Karta";"Kártya";"Carte";"การ์ด";"Карта";"קלף" "CONTEXT_ITEM_CARD";"[Noun]";"Card";"Carte";"Carta";"Karte";"Carta";"Carta";"Carta";"Карта";"Κάρτα";"Kart";"Kort";"Kort";"Kort";"Kaart";"Karta";"Kortti";"カード";"卡片";"卡片";"카드";"Karta";"Kártya";"Carte";"การ์ด";"Карта";"קלף";"カード";"Kort"
"CONTEXT_ITEM_CARD_PLURAL";"[Noun/Plural]";"Cards";"Cartes";"Cartas";"Karten";"Carte";"Cartas";"Cartas";"Карты";"Κάρτες";"Kartlar";"Kort";"Kort";"Kort";"Kaarten";"Karty";"Kortit";"カード";"卡片";"卡片";"카드";"Karty";"Kártyák";"Carți";"การ์ด";"Карти";"קלפים" "CONTEXT_ITEM_CARD_PLURAL";"[Noun/Plural]";"Cards";"Cartes";"Cartas";"Karten";"Carte";"Cartas";"Cartas";"Карты";"Κάρτες";"Kartlar";"Kort";"Kort";"Kort";"Kaarten";"Karty";"Kortit";"カード";"卡片";"卡片";"카드";"Karty";"Kártyák";"Carți";"การ์ด";"Карти";"קלפים";"カード";"Kort"
"CONTEXT_ITEM_CHEST";"[Noun] Treasure not body part";"Chest";"Coffre";"Cofre";"Truhe";"Cassa";"Baú";"Arca";"Сундук";"Σεντούκι";"Sandık";"Kiste";"Kiste";"Kista";"Kist";"Skrzynia";"Kirstu";"箱";"箱";"箱";"상자";"Truhla";"Láda";"Cufăr";"หีบสมบัติ";"Ковчеже";"תיבה" "CONTEXT_ITEM_CHEST";"[Noun] Treasure not body part";"Chest";"Coffre";"Cofre";"Truhe";"Cassa";"Baú";"Arca";"Сундук";"Σεντούκι";"Sandık";"Kiste";"Kiste";"Kista";"Kist";"Skrzynia";"Kirstu";"箱";"箱";"箱";"상자";"Truhla";"Láda";"Cufăr";"หีบสมบัติ";"Ковчеже";"תיבה";"はこ";"Kista"
"CONTEXT_ITEM_COND_MAGICAL";"[Adjective] [Default male] usage : [item] : [type]";"Magic";"Magique";"Mágico";"Magischer";"Magico";"Mágico";"Mágico";"Магический";"Μαγικ*";"Büyülü";"Magisk";"Magisk";"Magisk";"Magie";"Magiczny";"Taika";"魔法の";"魔法的";"魔法的";"마법";"Magický";"Varázslat";"Magic";"เวทย์มนต์";"Магически";"קסום" "CONTEXT_ITEM_COND_MAGICAL";"[Adjective] [Default male] usage : [item] : [type]";"Magic";"Magique";"Mágico";"Magischer";"Magico";"Mágico";"Mágico";"Магический";"Μαγικ*";"Büyülü";"Magisk";"Magisk";"Magisk";"Magie";"Magiczny";"Taika";"魔法の";"魔法的";"魔法的";"마법";"Magický";"Varázslat";"Magic";"เวทย์มนต์";"Магически";"קסום";"まほうの";"Fjöokunnugur"
"CONTEXT_ITEM_COND_RUSTY";"[Adjective] [Default male] usage : [item] : [type]";"Rusty";"Rouillé";"Oxidado";"Rostig";"Arrugginito";"Enferrujado";"Enferrujado";"Ржавый";"Σκουριασμέν*";"Paslı";"Rusten";"Rusten";"Rostig";"Roestig";"Zardzewiały";"Ruosteinen";"錆びた";"生锈的";"生銹的";"녹슨";"Rezavý ";"Rozsdás";"Ruginit";"เก่า";"Ръждясал";"חלוד" "CONTEXT_ITEM_COND_RUSTY";"[Adjective] [Default male] usage : [item] : [type]";"Rusty";"Rouillé";"Oxidado";"Rostig";"Arrugginito";"Enferrujado";"Enferrujado";"Ржавый";"Σκουριασμέν*";"Paslı";"Rusten";"Rusten";"Rostig";"Roestig";"Zardzewiały";"Ruosteinen";"錆びた";"生锈的";"生銹的";"녹슨";"Rezavý";"Rozsdás";"Ruginit";"เก่า";"Ръждясал";"חלוד";"さびた";"Ryðga"
"CONTEXT_ITEM_DAGGER";"[Noun] Small blade used by rogues";"Dagger";"Dague";"Daga";"Dolch";"Daga";"Adaga";"Adaga";"Кинжал";"Στιλέτο";"Hançer";"Dagger";"Dolk";"Dolk";"Dolk";"Sztylet";"Tikari";"短刀";"短剑";"短劍";"단검";"Dýka";"Tőr";"Pumnal";"มีด";"Кинжал";"פיגיון" "CONTEXT_ITEM_DAGGER";"[Noun] Small blade used by rogues";"Dagger";"Dague";"Daga";"Dolch";"Daga";"Adaga";"Adaga";"Кинжал";"Στιλέτο";"Hançer";"Dagger";"Dolk";"Dolk";"Dolk";"Sztylet";"Tikari";"短刀";"短剑";"短劍";"단검";"Dýka";"Tőr";"Pumnal";"มีด";"Кинжал";"פיגיון";"たんとう";"Rýtingur"
"CONTEXT_ITEM_DIE_NOUN";"[Noun] [Noun] As in ';throw the die";"Die";"Dé";"Dado";"Würfel";"Dado";"Dado";"Dado";"Кубик";"ζάρι";"Zar";"Terning";"Terning";"Tärning";"Dobbelsteen";"Kość";"Noppa";"サイコロ";"骰子";"骰子";"주사위";"Zemřít";"Kocka";"Zar";"ตาย";"Зар";"קוביה" "CONTEXT_ITEM_DIE_NOUN";"[Noun] [Noun] As in ';throw the die";"Die";"Dé";"Dado";"Würfel";"Dado";"Dado";"Dado";"Кубик";"ζάρι";"Zar";"Terning";"Terning";"Tärning";"Dobbelsteen";"Kość";"Noppa";"サイコロ";"骰子";"骰子";"주사위";"Zemřít";"Kocka";"Zar";"ตาย";"Зар";"קוביה";"サイコロ";"Teningur"
"CONTEXT_ITEM_DIE_PLURAL";"[Noun/Plural] As in ';throw two dice";"Dice";"Dés";"Dados";"Würfel";"Dadi";"Dados";"Dados";"Кубика";"ζάρια";"Zar";"Terninger";"Terninger";"Träningar";"Dobbelstenen";"Kości";"Nopat";"サイコロ";"骰子";"骰子";"주사위";"Kostky";"Dobókocka";"Zaruri";"ลูกเต๋า";"Зарове";"קוביות" "CONTEXT_ITEM_DIE_PLURAL";"[Noun/Plural] As in ';throw two dice";"Dice";"Dés";"Dados";"Würfel";"Dadi";"Dados";"Dados";"Кубика";"ζάρια";"Zar";"Terninger";"Terninger";"Träningar";"Dobbelstenen";"Kości";"Nopat";"サイコロ";"骰子";"骰子";"주사위";"Kostky";"Dobókocka";"Zaruri";"ลูกเต๋า";"Зарове";"קוביות";"サイコロ";"Teningar"
"CONTEXT_ITEM_DOOR";"[Noun]";"Door";"Porte";"Puerta";"Tür";"Porta";"Porta";"Porta";"Дверь";"Πόρτα";"Kapı";"Dør";"Dør";"Dörr";"Deur";"Drzwi";"Ovi";"扉";"门";"門";"문";"Dveře";"Ajtó";"Ușa";"ประตู";"Врата";"דלת" "CONTEXT_ITEM_DOOR";"[Noun]";"Door";"Porte";"Puerta";"Tür";"Porta";"Porta";"Porta";"Дверь";"Πόρτα";"Kapı";"Dør";"Dør";"Dörr";"Deur";"Drzwi";"Ovi";"扉";"门";"門";"문";"Dveře";"Ajtó";"Ușa";"ประตู";"Врата";"דלת";"とびら";"Dyr"
"CONTEXT_ITEM_GAUNTLETS";"[Noun/Plural] Heavy protective warrior's gloves";"Gauntlets";"Gantelets";"Guanteletes";"Panzerhandschuh";"Guanti d'armatura";"Manopla";"Manopla";"Рукавицы";"Γάντια";"Zırh Eldiveni";"Stridshandsker";"Stridshansker";"Stridshandskar";"Pantser handschoenen";"Rękawica";"Taisteluhansikkaat";"籠手";"铁手套";"鐵手套";"건틀릿";"Rukavice";"Kesztyű";"Mănușă";"ถุงมือเกราะ";"Ръкавици";"כפפות-שריון" "CONTEXT_ITEM_GAUNTLETS";"[Noun/Plural] Heavy protective warrior's gloves";"Gauntlets";"Gantelets";"Guanteletes";"Panzerhandschuh";"Guanti d'armatura";"Manopla";"Manopla";"Рукавицы";"Γάντια";"Zırh Eldiveni";"Stridshandsker";"Stridshansker";"Stridshandskar";"Pantser handschoenen";"Rękawica";"Taisteluhansikkaat";"籠手";"铁手套";"鐵手套";"건틀릿";"Rukavice";"Kesztyű";"Mănușă";"ถุงมือเกราะ";"Ръкавици";"כפפות-שריון";"こて";""
"CONTEXT_ITEM_GEM";"[Noun] Gem or jewel";"Gem";"Gemme";"Gema";"Juwel";"Gemma";"Jóia";"Jóia";"Самоцвет";"Πετράδι";"Mücevher";"Juvel";"Juvel";"Juvel";"Edelsteen";"Klejnot";"Jalokivi";"ジェム";"宝石";"寶石";"보석";"Klenot";"Drágakő";"Giuvaer";"เพชร";"Скъпоценен камък";"אבן-חן" "CONTEXT_ITEM_GEM";"[Noun] Gem or jewel";"Gem";"Gemme";"Gema";"Juwel";"Gemma";"Jóia";"Jóia";"Самоцвет";"Πετράδι";"Mücevher";"Juvel";"Juvel";"Juvel";"Edelsteen";"Klejnot";"Jalokivi";"ジェム";"宝石";"寶石";"보석";"Klenot";"Drágakő";"Giuvaer";"เพชร";"Скъпоценен камък";"אבן-חן"
"CONTEXT_ITEM_GIFT_NOUN";"[Noun]";"Gift";"Cadeau";"Regalo";"Geschenk";"Regalo";"Presente";"Presente";"Подарок";"Δώρο";"Hediye";"Gave";"Gave";"Present";"Cadeau";"Prezent";"Lahja";"ギフト";"赠品";"贈品";"선물";"Dárek";"Ajándék";"Cadou";"ของขวัญ";"Подарък";"מתנה" "CONTEXT_ITEM_GIFT_NOUN";"[Noun]";"Gift";"Cadeau";"Regalo";"Geschenk";"Regalo";"Presente";"Presente";"Подарок";"Δώρο";"Hediye";"Gave";"Gave";"Present";"Cadeau";"Prezent";"Lahja";"ギフト";"赠品";"贈品";"선물";"Dárek";"Ajándék";"Cadou";"ของขวัญ";"Подарък";"מתנה"
"CONTEXT_ITEM_GIFT_PLURAL";"[Noun/Plural]";"Gifts";"Cadeaux";"Regalos";"Geschenke";"Regali";"Presentes";"Presentes";"Подарки";"Δώρα";"Hediyeler";"Gaver";"Gaver";"Presenter";"Cadeaus";"Prezenty";"Lahjat";"ギフト";"赠品";"贈品";"선물";"Dárky";"Ajándékok";"Cadouri";"ของขวัญ";"Подаръци";"מתנות" "CONTEXT_ITEM_GIFT_PLURAL";"[Noun/Plural]";"Gifts";"Cadeaux";"Regalos";"Geschenke";"Regali";"Presentes";"Presentes";"Подарки";"Δώρα";"Hediyeler";"Gaver";"Gaver";"Presenter";"Cadeaus";"Prezenty";"Lahjat";"ギフト";"赠品";"贈品";"선물";"Dárky";"Ajándékok";"Cadouri";"ของขวัญ";"Подаръци";"מתנות"
@@ -188,9 +188,9 @@
"CREDITS_TRANSLATION";"";"Translation";"Traduction";"Traducción";"Übersetzung";"Traduzione";"Tradução";"Tradução";"Перевод";"Μετάφραση";"Çeviri";"Oversættelse";"Oversettelse";"Översättning";"Vertaling";"Tłumaczenia";"Käännöstyö";"翻訳";"翻译 ";"翻譯";"번역";"Překlad";"Fordítás";"Traducere";"แปลภาษา";"Превод";"תרגום" "CREDITS_TRANSLATION";"";"Translation";"Traduction";"Traducción";"Übersetzung";"Traduzione";"Tradução";"Tradução";"Перевод";"Μετάφραση";"Çeviri";"Oversættelse";"Oversettelse";"Översättning";"Vertaling";"Tłumaczenia";"Käännöstyö";"翻訳";"翻译 ";"翻譯";"번역";"Překlad";"Fordítás";"Traducere";"แปลภาษา";"Превод";"תרגום"
"ERROR_DEVICE_NOT_FOUND";"Use %1$s in place of [device]";"No %1$s detected.";"Aucun %1$s détecté.";"No se detectó %1$s.";"%1$s nicht erkannt.";"Nessun %1$s trovato.";"%1$s não encontrado.";"O dispositivo %1$s não foi detectado.";"%1$s не обнаружен.";"Δεν εντοπίστηκε %1$s.";"%1$s aygıt algılanamadı.";"Ingen %1$s fundet.";"Ingen %1$s funnet.";"%1$s kunde inte hittas.";"Geen %1$s gevonden.";"Nie wykryto %1$s.";"%1$s ei havaittu.";"%1$s が接続されていません。";"未检测到%1$s。";"未檢測到%1$s。";"%1$s을(를) 찾을 수 없습니다.";"Zařízení %1$s nenalezeno.";"%1$s nem található.";"Nu s-a detectat niciun %1$s.";"ตรวจไม่พบอุปกรณ์ %1$s";"Няма засечен %1$s.";"לא נמצא רכיב %1$s." "ERROR_DEVICE_NOT_FOUND";"Use %1$s in place of [device]";"No %1$s detected.";"Aucun %1$s détecté.";"No se detectó %1$s.";"%1$s nicht erkannt.";"Nessun %1$s trovato.";"%1$s não encontrado.";"O dispositivo %1$s não foi detectado.";"%1$s не обнаружен.";"Δεν εντοπίστηκε %1$s.";"%1$s aygıt algılanamadı.";"Ingen %1$s fundet.";"Ingen %1$s funnet.";"%1$s kunde inte hittas.";"Geen %1$s gevonden.";"Nie wykryto %1$s.";"%1$s ei havaittu.";"%1$s が接続されていません。";"未检测到%1$s。";"未檢測到%1$s。";"%1$s을(를) 찾을 수 없습니다.";"Zařízení %1$s nenalezeno.";"%1$s nem található.";"Nu s-a detectat niciun %1$s.";"ตรวจไม่พบอุปกรณ์ %1$s";"Няма засечен %1$s.";"לא נמצא רכיב %1$s."
"ERROR_GENERIC_ERRCODE";"";"Error code:";"Code d'erreur :";"Código de error:";"Fehlercode:";"Codice errore:";"Código do erro:";"Código do erro:";"Код ошибки:";"Κωδικός σφάλματος:";"Hata kodu:";"Fejlkode:";"Feilkode:";"Felkod:";"Foutcode:";"Kod błędu:";"Virhekoodi: ";"エラーコード:";"错误代码:";"錯誤代碼:";"오류 코드:";"Kód chyby:";"Hibakód:";"Cod de eroare:";"รหัสข้อผิดพลาด";"Код на грешката:";"טעות מספר:" "ERROR_GENERIC_ERRCODE";"";"Error code: ";"Code d'erreur : ";"Código de error: ";"Fehlercode:" ;"Codice errore: ";"Código do erro: ";"Código do erro: ";"Код ошибки: ";"Κωδικός σφάλματος: ";"Hata kodu: ";"Fejlkode: ";"Feilkode: ";"Felkod: ";"Foutcode: ";"Kod błędu: ";"Virhekoodi: ";"エラーコード:";"错误代码:";"錯誤代碼:";"오류 코드: ";"Kód chyby: ";"Hibakód: ";"Cod de eroare: ";"รหัสข้อผิดพลาด ";"Код на грешката: ";"טעות מספר: ";"エラーコード:";"Villa númer: "
"ERROR_GENERIC_TEXT";"";"An error has occured.";"Une erreur s'est produite.";"Ha ocurrido un error.";"Ein Fehler ist aufgetreten.";"È stato riscontrato un errore.";"Ocorreu um erro.";"Ocorreu um erro.";"Произошла ошибка.";"Γενικό σφάλμα.";"Bir hata oluştu.";"Der er sket en fejl.";"Det har skjedd en feil.";"Ett fel har uppstått.";"Er is een fout opgetreden.";"Wystąpił jakiś błąd.";"On tapahtunut virhe.";"エラーが発生しました。";"发生了错误。";"發生了錯誤。";"오류가 발생했습니다.";"Vyskytla se chyba.";"Hiba történt.";"A apărut o eroare.";"เกิดความผิดพลาดบางประการ";"Грешка в изпълнението.";"ארעה טעות." "ERROR_GENERIC_TEXT";"";"An error has occured.";"Une erreur s'est produite.";"Ha ocurrido un error.";"Ein Fehler ist aufgetreten.";"È stato riscontrato un errore.";"Ocorreu um erro.";"Ocorreu um erro.";"Произошла ошибка.";"Γενικό σφάλμα.";"Bir hata oluştu.";"Der er sket en fejl.";"Det har skjedd en feil.";"Ett fel har uppstått.";"Er is een fout opgetreden.";"Wystąpił jakiś błąd.";"On tapahtunut virhe.";"エラーが発生しました。";"发生了错误。";"發生了錯誤。";"오류가 발생했습니다.";"Vyskytla se chyba.";"Hiba történt.";"A apărut o eroare.";"เกิดความผิดพลาดบางประการ";"Грешка в изпълнението.";"ארעה טעות.";"エラーが はっせい しました。";"Villa hefur komið upp."
"ERROR_GENERIC_INVALID_NAME";"";"Invalid name.";"Nom incorrect.";"El nombre no es válido.";"Ungültiger Name.";"Nome non valido.";"Nome inválido.";"Nome Inválido.";"Недопустимое название.";"Μη έγκυρο όνομα.";"Geçersiz İsim.";"Ugyldigt navn.";"Ugyldig navn.";"Ogiltigt Namn.";"Ongeldige naam.";"Błędna nazwa.";"Virheellinen nimi.";"無効な名前です。";"名称无效。";"名稱無效。";"이름이 잘못되었습니다.";"Neplatný název.";"Érvénytelen név.";"Nume Invalid.";"ชื่อไม่ถูกต้อง";"Невалидно име.";"שם לא נכון!" "ERROR_GENERIC_INVALID_NAME";"";"Invalid name.";"Nom incorrect.";"El nombre no es válido.";"Ungültiger Name.";"Nome non valido.";"Nome inválido.";"Nome Inválido.";"Недопустимое название.";"Μη έγκυρο όνομα.";"Geçersiz İsim.";"Ugyldigt navn.";"Ugyldig navn.";"Ogiltigt Namn.";"Ongeldige naam.";"Błędna nazwa.";"Virheellinen nimi.";"無効な名前です。";"名称无效。";"名稱無效。";"이름이 잘못되었습니다.";"Neplatný název.";"Érvénytelen név.";"Nume Invalid.";"ชื่อไม่ถูกต้อง";"Невалидно име.";"שם לא נכון";"むこうな なまえです。";"Ógilt nafn."
"ERROR_GENERIC_CHEATING";"";"Cheats detected!";"Codes triche détectés !";"¡Trampas detectadas!";"Cheats entdeckt!";"Trucchi individuati!";"Trapaças detectadas!";"Batota Detetada!";"Используются читы!";"Ανιχνεύτηκε κλεψιά!";"Hile Algılandı!";"Snydekoder opdaget!";"Juksekoder oppdaget!";"Fusk hittades!";"Cheats gebruikt!";"Wykryto użycie kodów!";"Huijauksia havaittu!";"チート検出!";"检测到作弊!";"已偵測到作弊!";"치트 발견!";"Detekovány cheaty!";"Csalást észleltünk!";"Cheat-uri detectate!";"Cheats ตรวจสอบพบ!";"Засечени чийтове!";"רמאות!" "ERROR_GENERIC_CHEATING";"";"Cheats detected!";"Codes triche détectés !";"¡Trampas detectadas!";"Cheats entdeckt!";"Trucchi individuati!";"Trapaças detectadas!";"Batota Detetada!";"Используются читы!";"Ανιχνεύτηκε κλεψιά!";"Hile Algılandı!";"Snydekoder opdaget!";"Juksekoder oppdaget!";"Fusk hittades!";"Cheats gebruikt!";"Wykryto użycie kodów!";"Huijauksia havaittu!";"チート検出!";"检测到作弊!";"已偵測到作弊!";"치트 발견!";"Detekovány cheaty!";"Csalást észleltünk!";"Cheat-uri detectate!";"Cheats ตรวจสอบพบ!";"Засечени чийтове!";"רמאות!"
"ERROR_NETWORK_CONNECTION_LOST";"";"Connection lost.";"Connexion perdue.";"Conexión perdida.";"Verbindung verloren.";"Connessione persa.";"Conexão perdida.";"Ligação perdida.";"Соединение потеряно.";"Χάθηκε η σύνδεση.";"Bağlantı kesildi.";"Mistet forbindelse.";"Mistet forbindelsen.";"Anslutningen bröts.";"Verbinding verloren.";"Stracono połączenie.";"Yhteys menetetty.";"接続が切断されました。";"网络连接失败。";"網絡連接失敗。";"연결이 끊어졌습니다.";"Spojení ztraceno.";"A kapcsolat megszakadt.";"S-a întrerupt conexiunea.";"การเชื่อมต่อผิดพลาด";"Връзката е изгубена.";"החיבור לרשת אבד." "ERROR_NETWORK_CONNECTION_LOST";"";"Connection lost.";"Connexion perdue.";"Conexión perdida.";"Verbindung verloren.";"Connessione persa.";"Conexão perdida.";"Ligação perdida.";"Соединение потеряно.";"Χάθηκε η σύνδεση.";"Bağlantı kesildi.";"Mistet forbindelse.";"Mistet forbindelsen.";"Anslutningen bröts.";"Verbinding verloren.";"Stracono połączenie.";"Yhteys menetetty.";"接続が切断されました。";"网络连接失败。";"網絡連接失敗。";"연결이 끊어졌습니다.";"Spojení ztraceno.";"A kapcsolat megszakadt.";"S-a întrerupt conexiunea.";"การเชื่อมต่อผิดพลาด";"Връзката е изгубена.";"החיבור לרשת אבד."
"ERROR_NETWORK_DISCONNECTED_YOUR_PLAYER";"";"The other player has disconnected.";"L'autre joueur s'est déconnecté.";"El otro jugador se ha desconectado.";"Der andere Spieler hat die Verbindung getrennt.";"L'altro giocatore si è disconnesso.";"O outro jogador foi desconectado.";"O outro jogador perdeu a ligação.";"Другой игрок отключился.";"Ο/η άλλος παίχτης αποσυνδέθηκε.";"Diğer oyuncunun bağlantısı kesildi.";"Den anden spiller har afbrudt forbindelsen.";"Den andre spilleren har koblet ifra.";"Den andra spelaren har kopplat ifrån.";"De andere speler heeft het spel verlaten.";"Gracz się rozłączył.";"Toinen pelaaja on menettänyt yhteyden.";"他のプレイヤーが接続を切断しました。";"另一个玩家断开了连接。";"另一個玩家斷線。";"다른 플레이어가 연결을 끊었습니다.";"Hráč se odpojil.";"Megszakadt a kapcsolat a másik játékossal.";"Celalalt jucator s-a deconectat.";"ผู้เล่นอื่นหลุดการเชื่อมต่อ";"Изгубена връзка с играч.";"השחקן התנתק מהרשת." "ERROR_NETWORK_DISCONNECTED_YOUR_PLAYER";"";"The other player has disconnected.";"L'autre joueur s'est déconnecté.";"El otro jugador se ha desconectado.";"Der andere Spieler hat die Verbindung getrennt.";"L'altro giocatore si è disconnesso.";"O outro jogador foi desconectado.";"O outro jogador perdeu a ligação.";"Другой игрок отключился.";"Ο/η άλλος παίχτης αποσυνδέθηκε.";"Diğer oyuncunun bağlantısı kesildi.";"Den anden spiller har afbrudt forbindelsen.";"Den andre spilleren har koblet ifra.";"Den andra spelaren har kopplat ifrån.";"De andere speler heeft het spel verlaten.";"Gracz się rozłączył.";"Toinen pelaaja on menettänyt yhteyden.";"他のプレイヤーが接続を切断しました。";"另一个玩家断开了连接。";"另一個玩家斷線。";"다른 플레이어가 연결을 끊었습니다.";"Hráč se odpojil.";"Megszakadt a kapcsolat a másik játékossal.";"Celalalt jucator s-a deconectat.";"ผู้เล่นอื่นหลุดการเชื่อมต่อ";"Изгубена връзка с играч.";"השחקן התנתק מהרשת."
@@ -318,7 +318,7 @@
"MENU_CUSTOMIZE_ARM_PLURAL";"";"Arms";"Bras";"Brazos";"Arme";"Braccia";"Braços";"Braços";"Руки";"Μπράτσα";"Kollar";"Arme";"Armer";"Armar";"Armen";"Ramiona";"Käsivarret";"腕";"臂";"臂";"팔";"Paže";"Karok";"Brațe";"แขน";"Ръце";"זרועות" "MENU_CUSTOMIZE_ARM_PLURAL";"";"Arms";"Bras";"Brazos";"Arme";"Braccia";"Braços";"Braços";"Руки";"Μπράτσα";"Kollar";"Arme";"Armer";"Armar";"Armen";"Ramiona";"Käsivarret";"腕";"臂";"臂";"팔";"Paže";"Karok";"Brațe";"แขน";"Ръце";"זרועות"
"MENU_CUSTOMIZE_CHEST";"Body part not treasure";"Chest";"Torse";"Pecho";"Brust";"Torso";"Peito";"Peito";"Грудь";"Στήθος";"Gövde";"Bryst";"Bryst";"Bröst";"Borst";"Pierś";"Rinta";"胸";"胸";"胸";"가슴";"Hrudník";"Mell";"Piept";"หน้าอก";"Гърди";"חזה" "MENU_CUSTOMIZE_CHEST";"Body part not treasure";"Chest";"Torse";"Pecho";"Brust";"Torso";"Peito";"Peito";"Грудь";"Στήθος";"Gövde";"Bryst";"Bryst";"Bröst";"Borst";"Pierś";"Rinta";"胸";"胸";"胸";"가슴";"Hrudník";"Mell";"Piept";"หน้าอก";"Гърди";"חזה"
"MENU_CUSTOMIZE_CHIN";"";"Chin";"Menton";"Barbilla";"Kinn";"Mento";"Queixo";"Queixo";"Подбородок";"Πηγούνι";"Çene";"Hage";"Hake";"Haka";"Kin";"Broda";"Leuka";"顎";"下巴";"下巴";"턱";"Brada";"Áll";"Barbă";"คาง";"Брадичка";"סנטר" "MENU_CUSTOMIZE_CHIN";"";"Chin";"Menton";"Barbilla";"Kinn";"Mento";"Queixo";"Queixo";"Подбородок";"Πηγούνι";"Çene";"Hage";"Hake";"Haka";"Kin";"Broda";"Leuka";"顎";"下巴";"下巴";"턱";"Brada";"Áll";"Barbă";"คาง";"Брадичка";"סנטר"
"MENU_CUSTOMIZE_COLOR";"";"Color";"Couleur";"Color";"Farbe";"Colore";"Cor";"Cor";"Цвет";"Χρώμα";"Renk";"Farve";"Farge";"Färg";"Kleur";"Kolor";"Väri";"色";"颜色";"顏色";"색";"Barva";"Szín";"Culoare";"สี";"Цвят";"צבע" "MENU_CUSTOMIZE_COLOR";"";"Color";"Couleur";"Color";"Farbe";"Colore";"Cor";"Cor";"Цвет";"Χρώμα";"Renk";"Farve";"Farge";"Färg";"Kleur";"Kolor";"Väri";"色";"颜色";"顏色";"색";"Barva";"Szín";"Culoare";"สี";"Цвят";"צבע";"いろ";"Litur"
"MENU_CUSTOMIZE_EAR";"";"Ear";"Oreille";"Oreja";"Ohr";"Orecchio";"Orelha";"Orelha";"Ухо";"Αυτί";"Kulak";"Øre";"Øre";"Öra";"Oor";"Ucho";"Korva";"耳";"耳";"耳";"귀";"Ucho";"Fül";"Ureche";"หู";"Ухо";"אוזן" "MENU_CUSTOMIZE_EAR";"";"Ear";"Oreille";"Oreja";"Ohr";"Orecchio";"Orelha";"Orelha";"Ухо";"Αυτί";"Kulak";"Øre";"Øre";"Öra";"Oor";"Ucho";"Korva";"耳";"耳";"耳";"귀";"Ucho";"Fül";"Ureche";"หู";"Ухо";"אוזן"
"MENU_CUSTOMIZE_EAR_PLURAL";"";"Ears";"Oreilles";"Orejas";"Ohren";"Orecchie";"Orelhas";"Orelhas";"Уши";"Αυτιά";"Kulaklar";"Ører";"Ører";"Öron";"Oren";"Uszy";"Korvat";"耳";"耳朵";"耳朵";"귀";"Uši";"Fülek";"Urechi";"หู";"Уши";"אוזניים" "MENU_CUSTOMIZE_EAR_PLURAL";"";"Ears";"Oreilles";"Orejas";"Ohren";"Orecchie";"Orelhas";"Orelhas";"Уши";"Αυτιά";"Kulaklar";"Ører";"Ører";"Öron";"Oren";"Uszy";"Korvat";"耳";"耳朵";"耳朵";"귀";"Uši";"Fülek";"Urechi";"หู";"Уши";"אוזניים"
"MENU_CUSTOMIZE_EYE";"";"Eye";"Oeil";"Ojo";"Auge";"Occhio";"Olho";"Olho";"Глаз";"Μάτι";"Göz";"Øje";"Øye";"Öga";"Oog";"Oko";"Silmä";"目";"眼";"眼";"눈";"Oko";"Szem";"Ochi";"ตา";"Око";"עין" "MENU_CUSTOMIZE_EYE";"";"Eye";"Oeil";"Ojo";"Auge";"Occhio";"Olho";"Olho";"Глаз";"Μάτι";"Göz";"Øje";"Øye";"Öga";"Oog";"Oko";"Silmä";"目";"眼";"眼";"눈";"Oko";"Szem";"Ochi";"ตา";"Око";"עין"
Can't render this file because it contains an unexpected character in line 191 and column 95.

View File

@@ -1,124 +0,0 @@
# Nameset - Russian
# Data taken from www.behindthename.com
NAMESET_RUSSIAN_MALE_001=Abram
NAMESET_RUSSIAN_MALE_002=Adam
NAMESET_RUSSIAN_MALE_003=Adrian
NAMESET_RUSSIAN_MALE_004=Albert
NAMESET_RUSSIAN_MALE_005=Alexey
NAMESET_RUSSIAN_MALE_006=Anton
NAMESET_RUSSIAN_MALE_007=Artur
NAMESET_RUSSIAN_MALE_008=Benedikt
NAMESET_RUSSIAN_MALE_009=Boris
NAMESET_RUSSIAN_MALE_010=David
NAMESET_RUSSIAN_MALE_011=Denis
NAMESET_RUSSIAN_MALE_012=Dmitriy
NAMESET_RUSSIAN_MALE_013=Eduard
NAMESET_RUSSIAN_MALE_014=Fyodor
NAMESET_RUSSIAN_MALE_015=Genya
NAMESET_RUSSIAN_MALE_016=Grigoriy
NAMESET_RUSSIAN_MALE_017=Igor
NAMESET_RUSSIAN_MALE_018=Iona
NAMESET_RUSSIAN_MALE_019=Iosif
NAMESET_RUSSIAN_MALE_020=Isaak
NAMESET_RUSSIAN_MALE_021=Isidor
NAMESET_RUSSIAN_MALE_022=Ivan
NAMESET_RUSSIAN_MALE_023=Kenya
NAMESET_RUSSIAN_MALE_024=Konstantin
NAMESET_RUSSIAN_MALE_025=Luka
NAMESET_RUSSIAN_MALE_026=Maks
NAMESET_RUSSIAN_MALE_027=Maksim
NAMESET_RUSSIAN_MALE_028=Mark
NAMESET_RUSSIAN_MALE_029=Marlen
NAMESET_RUSSIAN_MALE_030=Martin
NAMESET_RUSSIAN_MALE_031=Maxim
NAMESET_RUSSIAN_MALE_032=Mikhail
NAMESET_RUSSIAN_MALE_033=Milan
NAMESET_RUSSIAN_MALE_034=Nestor
NAMESET_RUSSIAN_MALE_035=Nika
NAMESET_RUSSIAN_MALE_036=Nikita
NAMESET_RUSSIAN_MALE_037=Nikolay
NAMESET_RUSSIAN_MALE_038=Pavel
NAMESET_RUSSIAN_MALE_039=Pyotr
NAMESET_RUSSIAN_MALE_040=Robert
NAMESET_RUSSIAN_MALE_041=Roma
NAMESET_RUSSIAN_MALE_042=Roman
NAMESET_RUSSIAN_MALE_043=Rudolf
NAMESET_RUSSIAN_MALE_044=Sasha
NAMESET_RUSSIAN_MALE_045=Sergey
NAMESET_RUSSIAN_MALE_046=Stas
NAMESET_RUSSIAN_MALE_047=Vadim
NAMESET_RUSSIAN_MALE_048=Valentin
NAMESET_RUSSIAN_MALE_049=Valeriy
NAMESET_RUSSIAN_MALE_050=Viktor
NAMESET_RUSSIAN_MALE_051=Vladimir
NAMESET_RUSSIAN_MALE_052=Yegor
NAMESET_RUSSIAN_MALE_053=Yuriy
NAMESET_RUSSIAN_MALE_054=Zhenya
NAMESET_RUSSIAN_FEMALE_001=Agata
NAMESET_RUSSIAN_FEMALE_002=Aleksandra
NAMESET_RUSSIAN_FEMALE_003=Alisa
NAMESET_RUSSIAN_FEMALE_004=Alla
NAMESET_RUSSIAN_FEMALE_005=Anastasia
NAMESET_RUSSIAN_FEMALE_006=Angela
NAMESET_RUSSIAN_FEMALE_007=Angelina
NAMESET_RUSSIAN_FEMALE_008=Anna
NAMESET_RUSSIAN_FEMALE_009=Antonina
NAMESET_RUSSIAN_FEMALE_010=Anya
NAMESET_RUSSIAN_FEMALE_011=Adriana
NAMESET_RUSSIAN_FEMALE_012=Asya
NAMESET_RUSSIAN_FEMALE_013=Diana
NAMESET_RUSSIAN_FEMALE_014=Dominika
NAMESET_RUSSIAN_FEMALE_015=Dunya
NAMESET_RUSSIAN_FEMALE_016=Elena
NAMESET_RUSSIAN_FEMALE_017=Eva
NAMESET_RUSSIAN_FEMALE_018=Filippa
NAMESET_RUSSIAN_FEMALE_019=Gala
NAMESET_RUSSIAN_FEMALE_020=Inga
NAMESET_RUSSIAN_FEMALE_021=Ira
NAMESET_RUSSIAN_FEMALE_022=Irina
NAMESET_RUSSIAN_FEMALE_023=Isidora
NAMESET_RUSSIAN_FEMALE_024=Ivanna
NAMESET_RUSSIAN_FEMALE_025=Karina
NAMESET_RUSSIAN_FEMALE_026=Katerina
NAMESET_RUSSIAN_FEMALE_027=Katia
NAMESET_RUSSIAN_FEMALE_028=Kira
NAMESET_RUSSIAN_FEMALE_029=Klara
NAMESET_RUSSIAN_FEMALE_030=Kristina
NAMESET_RUSSIAN_FEMALE_031=Lana
NAMESET_RUSSIAN_FEMALE_032=Lara
NAMESET_RUSSIAN_FEMALE_033=Larisa
NAMESET_RUSSIAN_FEMALE_034=Lena
NAMESET_RUSSIAN_FEMALE_035=Lilia
NAMESET_RUSSIAN_FEMALE_036=Lilya
NAMESET_RUSSIAN_FEMALE_037=Liza
NAMESET_RUSSIAN_FEMALE_038=Margarita
NAMESET_RUSSIAN_FEMALE_039=Marina
NAMESET_RUSSIAN_FEMALE_040=Milena
NAMESET_RUSSIAN_FEMALE_041=Natalya
NAMESET_RUSSIAN_FEMALE_042=Natasha
NAMESET_RUSSIAN_FEMALE_043=Nika
NAMESET_RUSSIAN_FEMALE_044=Nina
NAMESET_RUSSIAN_FEMALE_045=Olga
NAMESET_RUSSIAN_FEMALE_046=Roksana
NAMESET_RUSSIAN_FEMALE_047=Sabina
NAMESET_RUSSIAN_FEMALE_048=Sasha
NAMESET_RUSSIAN_FEMALE_049=Selena
NAMESET_RUSSIAN_FEMALE_050=Sonya
NAMESET_RUSSIAN_FEMALE_051=Susanna
NAMESET_RUSSIAN_FEMALE_052=Tamara
NAMESET_RUSSIAN_FEMALE_053=Tanya
NAMESET_RUSSIAN_FEMALE_054=Tasha
NAMESET_RUSSIAN_FEMALE_055=Tatiana
NAMESET_RUSSIAN_FEMALE_056=Tatyana
NAMESET_RUSSIAN_FEMALE_057=Toma
NAMESET_RUSSIAN_FEMALE_058=Valentina
NAMESET_RUSSIAN_FEMALE_059=Vera
NAMESET_RUSSIAN_FEMALE_060=Veronika
NAMESET_RUSSIAN_FEMALE_061=Violetta
NAMESET_RUSSIAN_FEMALE_062=Yana
NAMESET_RUSSIAN_FEMALE_063=Yuliana
NAMESET_RUSSIAN_FEMALE_064=Zina
NAMESET_RUSSIAN_FEMALE_065=Zoya

View File

@@ -1,334 +0,0 @@
# Nameset - Scandinavian
# Data taken from www.behindthename.com
# Translator note: this nameset does not contain name that has [ɹ](american english 'r') sound (except '-er'). i.e. for Korean, 'Carl' should be '카를', 'Aleksander' should be '알렉산더'.
NAMESET_SCANDINAVIAN_MALE_1=Adam
NAMESET_SCANDINAVIAN_MALE_2=Adrian
NAMESET_SCANDINAVIAN_MALE_3=Aksel
NAMESET_SCANDINAVIAN_MALE_4=Albert
NAMESET_SCANDINAVIAN_MALE_5=Albin
NAMESET_SCANDINAVIAN_MALE_6=Alek
NAMESET_SCANDINAVIAN_MALE_7=Alexander
NAMESET_SCANDINAVIAN_MALE_8=Alfred
NAMESET_SCANDINAVIAN_MALE_9=Amund
NAMESET_SCANDINAVIAN_MALE_10=Andreas
NAMESET_SCANDINAVIAN_MALE_11=Anton
NAMESET_SCANDINAVIAN_MALE_12=Aron
NAMESET_SCANDINAVIAN_MALE_13=Alvard
NAMESET_SCANDINAVIAN_MALE_14=August
NAMESET_SCANDINAVIAN_MALE_15=Axel
NAMESET_SCANDINAVIAN_MALE_16=Björn
NAMESET_SCANDINAVIAN_MALE_17=Bjørn
NAMESET_SCANDINAVIAN_MALE_18=Carl
NAMESET_SCANDINAVIAN_MALE_19=Casper
NAMESET_SCANDINAVIAN_MALE_20=Christian
NAMESET_SCANDINAVIAN_MALE_21=Christoffer
NAMESET_SCANDINAVIAN_MALE_22=Daniel
NAMESET_SCANDINAVIAN_MALE_23=David
# pronounced as [dɑvid], not [deivɪd]
NAMESET_SCANDINAVIAN_MALE_24=Edmund
NAMESET_SCANDINAVIAN_MALE_25=Edvard
NAMESET_SCANDINAVIAN_MALE_26=Edvin
NAMESET_SCANDINAVIAN_MALE_27=Eirik
NAMESET_SCANDINAVIAN_MALE_28=Elias
NAMESET_SCANDINAVIAN_MALE_29=Elis
NAMESET_SCANDINAVIAN_MALE_30=Emanuel
NAMESET_SCANDINAVIAN_MALE_31=Emil
NAMESET_SCANDINAVIAN_MALE_32=Endre
NAMESET_SCANDINAVIAN_MALE_33=Erik
NAMESET_SCANDINAVIAN_MALE_34=Erlend
NAMESET_SCANDINAVIAN_MALE_35=Espen
NAMESET_SCANDINAVIAN_MALE_36=Fabian
NAMESET_SCANDINAVIAN_MALE_37=Felix
NAMESET_SCANDINAVIAN_MALE_38=Filip
NAMESET_SCANDINAVIAN_MALE_39=Frederik
NAMESET_SCANDINAVIAN_MALE_40=Gabriel
NAMESET_SCANDINAVIAN_MALE_41=Gustav
NAMESET_SCANDINAVIAN_MALE_42=Haakon
NAMESET_SCANDINAVIAN_MALE_43=Hákon
NAMESET_SCANDINAVIAN_MALE_44=Håkon
NAMESET_SCANDINAVIAN_MALE_45=Hampus
NAMESET_SCANDINAVIAN_MALE_46=Hanne
NAMESET_SCANDINAVIAN_MALE_47=Hans
NAMESET_SCANDINAVIAN_MALE_48=Håvard
NAMESET_SCANDINAVIAN_MALE_49=Henrik
NAMESET_SCANDINAVIAN_MALE_50=Herman
NAMESET_SCANDINAVIAN_MALE_51=Hjalmar
NAMESET_SCANDINAVIAN_MALE_52=Hugo
NAMESET_SCANDINAVIAN_MALE_53=Isak
NAMESET_SCANDINAVIAN_MALE_54=Ivar
NAMESET_SCANDINAVIAN_MALE_55=Jacob
NAMESET_SCANDINAVIAN_MALE_56=Jakob
NAMESET_SCANDINAVIAN_MALE_57=Jan
NAMESET_SCANDINAVIAN_MALE_58=Jens
NAMESET_SCANDINAVIAN_MALE_59=Jeppe
NAMESET_SCANDINAVIAN_MALE_60=Jesper
NAMESET_SCANDINAVIAN_MALE_61=Joakim
# pronounced as [joakim], not [hoakim] as this is scandinavian section.
NAMESET_SCANDINAVIAN_MALE_62=Joel
NAMESET_SCANDINAVIAN_MALE_63=Johan
NAMESET_SCANDINAVIAN_MALE_64=Jóhannes
NAMESET_SCANDINAVIAN_MALE_65=Jón
NAMESET_SCANDINAVIAN_MALE_66=Jon
NAMESET_SCANDINAVIAN_MALE_67=Jónas
NAMESET_SCANDINAVIAN_MALE_68=Jonas
NAMESET_SCANDINAVIAN_MALE_69=Jonathan
NAMESET_SCANDINAVIAN_MALE_70=Jörgen
NAMESET_SCANDINAVIAN_MALE_71=Jørgen
NAMESET_SCANDINAVIAN_MALE_72=Josef
NAMESET_SCANDINAVIAN_MALE_73=Kalle
NAMESET_SCANDINAVIAN_MALE_74=Kasper
NAMESET_SCANDINAVIAN_MALE_75=Kevin
NAMESET_SCANDINAVIAN_MALE_76=Kim
NAMESET_SCANDINAVIAN_MALE_77=Knut
# pronounced as [knut]
NAMESET_SCANDINAVIAN_MALE_78=Kristian
NAMESET_SCANDINAVIAN_MALE_79=Kristoffer
NAMESET_SCANDINAVIAN_MALE_80=Lars
NAMESET_SCANDINAVIAN_MALE_81=Lasse
NAMESET_SCANDINAVIAN_MALE_82=Laurits
NAMESET_SCANDINAVIAN_MALE_83=Leo
NAMESET_SCANDINAVIAN_MALE_84=Linus
# pronounced as [linus], not [lainəs] as this is scandinavian section.
NAMESET_SCANDINAVIAN_MALE_85=Loke
NAMESET_SCANDINAVIAN_MALE_86=Love
# NOT pronounced as [ləv]!
NAMESET_SCANDINAVIAN_MALE_87=Ludvig
NAMESET_SCANDINAVIAN_MALE_88=Lukas
NAMESET_SCANDINAVIAN_MALE_89=Mads
NAMESET_SCANDINAVIAN_MALE_90=Magnus
NAMESET_SCANDINAVIAN_MALE_91=Malte
NAMESET_SCANDINAVIAN_MALE_92=Malthe
NAMESET_SCANDINAVIAN_MALE_93=Marcus
NAMESET_SCANDINAVIAN_MALE_94=Maria
NAMESET_SCANDINAVIAN_MALE_95=Marius
NAMESET_SCANDINAVIAN_MALE_96=Markus
NAMESET_SCANDINAVIAN_MALE_97=Martin
NAMESET_SCANDINAVIAN_MALE_98=Cyrus
# need more exotic name starting with 'C'...
NAMESET_SCANDINAVIAN_MALE_99=Mats
NAMESET_SCANDINAVIAN_MALE_100=Mattias
NAMESET_SCANDINAVIAN_MALE_101=Max
NAMESET_SCANDINAVIAN_MALE_102=Maximillian
NAMESET_SCANDINAVIAN_MALE_103=Melker
NAMESET_SCANDINAVIAN_MALE_104=Michael
NAMESET_SCANDINAVIAN_MALE_105=Mikael
NAMESET_SCANDINAVIAN_MALE_106=Mikkel
NAMESET_SCANDINAVIAN_MALE_107=Morten
NAMESET_SCANDINAVIAN_MALE_108=Niklas
NAMESET_SCANDINAVIAN_MALE_109=Nikolaj
NAMESET_SCANDINAVIAN_MALE_110=Nils
NAMESET_SCANDINAVIAN_MALE_111=Odin
NAMESET_SCANDINAVIAN_MALE_112=Ola
NAMESET_SCANDINAVIAN_MALE_113=Olaf
NAMESET_SCANDINAVIAN_MALE_114=Olav
NAMESET_SCANDINAVIAN_MALE_115=Ole
NAMESET_SCANDINAVIAN_MALE_116=Oliver
NAMESET_SCANDINAVIAN_MALE_117=Olle
NAMESET_SCANDINAVIAN_MALE_118=Olof
NAMESET_SCANDINAVIAN_MALE_119=Oscar
NAMESET_SCANDINAVIAN_MALE_120=Óskar
NAMESET_SCANDINAVIAN_MALE_121=Oskar
NAMESET_SCANDINAVIAN_MALE_122=Otto
NAMESET_SCANDINAVIAN_MALE_123=Patrik
NAMESET_SCANDINAVIAN_MALE_124=Peder
NAMESET_SCANDINAVIAN_MALE_125=Per
NAMESET_SCANDINAVIAN_MALE_126=Petter
NAMESET_SCANDINAVIAN_MALE_127=Philip
NAMESET_SCANDINAVIAN_MALE_128=Pontus
NAMESET_SCANDINAVIAN_MALE_129=Preben
NAMESET_SCANDINAVIAN_MALE_130=Rafael
NAMESET_SCANDINAVIAN_MALE_131=Reid
NAMESET_SCANDINAVIAN_MALE_132=Robert
NAMESET_SCANDINAVIAN_MALE_133=Robin
NAMESET_SCANDINAVIAN_MALE_134=Samuel
NAMESET_SCANDINAVIAN_MALE_135=Sander
NAMESET_SCANDINAVIAN_MALE_136=Sebastian
NAMESET_SCANDINAVIAN_MALE_137=Sigge
NAMESET_SCANDINAVIAN_MALE_138=Sigurd
NAMESET_SCANDINAVIAN_MALE_139=Simen
NAMESET_SCANDINAVIAN_MALE_140=Simon
NAMESET_SCANDINAVIAN_MALE_141=Sindre
NAMESET_SCANDINAVIAN_MALE_142=Sixten
NAMESET_SCANDINAVIAN_MALE_143=Stefan
NAMESET_SCANDINAVIAN_MALE_144=Steffen
NAMESET_SCANDINAVIAN_MALE_145=Stian
NAMESET_SCANDINAVIAN_MALE_146=Svante
NAMESET_SCANDINAVIAN_MALE_147=Sven
NAMESET_SCANDINAVIAN_MALE_148=Teodor
NAMESET_SCANDINAVIAN_MALE_149=Theodor
NAMESET_SCANDINAVIAN_MALE_150=Thomas
NAMESET_SCANDINAVIAN_MALE_151=Tim
NAMESET_SCANDINAVIAN_MALE_152=Tobias
NAMESET_SCANDINAVIAN_MALE_153=Tor
NAMESET_SCANDINAVIAN_MALE_154=Truls
NAMESET_SCANDINAVIAN_MALE_155=Ulrik
NAMESET_SCANDINAVIAN_MALE_156=Valdemar
NAMESET_SCANDINAVIAN_MALE_157=Valter
NAMESET_SCANDINAVIAN_MALE_158=Vidar
NAMESET_SCANDINAVIAN_MALE_159=Viggo
NAMESET_SCANDINAVIAN_MALE_160=Viktor
NAMESET_SCANDINAVIAN_MALE_161=Ville
NAMESET_SCANDINAVIAN_MALE_162=Vincent
# feminine names
NAMESET_SCANDINAVIAN_FEMALE_1=Agnes
NAMESET_SCANDINAVIAN_FEMALE_2=Alberte
NAMESET_SCANDINAVIAN_FEMALE_3=Alexandra
NAMESET_SCANDINAVIAN_FEMALE_4=Alva
NAMESET_SCANDINAVIAN_FEMALE_5=Amanda
NAMESET_SCANDINAVIAN_FEMALE_6=Andrea
NAMESET_SCANDINAVIAN_FEMALE_7=Ane
NAMESET_SCANDINAVIAN_FEMALE_8=Anna
NAMESET_SCANDINAVIAN_FEMALE_9=Anne
NAMESET_SCANDINAVIAN_FEMALE_10=Anniken
NAMESET_SCANDINAVIAN_FEMALE_11=Asta
NAMESET_SCANDINAVIAN_FEMALE_12=Astrid
NAMESET_SCANDINAVIAN_FEMALE_13=Beatrice
NAMESET_SCANDINAVIAN_FEMALE_14=Camilla
NAMESET_SCANDINAVIAN_FEMALE_15=Carolina
NAMESET_SCANDINAVIAN_FEMALE_16=Caroline
NAMESET_SCANDINAVIAN_FEMALE_17=Cecilia
NAMESET_SCANDINAVIAN_FEMALE_18=Celina
NAMESET_SCANDINAVIAN_FEMALE_19=Charlotte
NAMESET_SCANDINAVIAN_FEMALE_20=Christina
NAMESET_SCANDINAVIAN_FEMALE_21=Christine
NAMESET_SCANDINAVIAN_FEMALE_22=Ebba
NAMESET_SCANDINAVIAN_FEMALE_23=Edith
NAMESET_SCANDINAVIAN_FEMALE_24=Elin
NAMESET_SCANDINAVIAN_FEMALE_25=Elina
NAMESET_SCANDINAVIAN_FEMALE_26=Elisabeth
NAMESET_SCANDINAVIAN_FEMALE_27=Elise
NAMESET_SCANDINAVIAN_FEMALE_28=Ella
NAMESET_SCANDINAVIAN_FEMALE_29=Ellinor
NAMESET_SCANDINAVIAN_FEMALE_30=Elsa
NAMESET_SCANDINAVIAN_FEMALE_31=Emelie
NAMESET_SCANDINAVIAN_FEMALE_32=Emilia
NAMESET_SCANDINAVIAN_FEMALE_33=Emilie
NAMESET_SCANDINAVIAN_FEMALE_34=Emma
NAMESET_SCANDINAVIAN_FEMALE_35=Erika
NAMESET_SCANDINAVIAN_FEMALE_36=Erle
NAMESET_SCANDINAVIAN_FEMALE_37=Ester
NAMESET_SCANDINAVIAN_FEMALE_38=Eva
NAMESET_SCANDINAVIAN_FEMALE_39=Evelina
NAMESET_SCANDINAVIAN_FEMALE_40=Felicia
NAMESET_SCANDINAVIAN_FEMALE_41=Filippa
NAMESET_SCANDINAVIAN_FEMALE_42=Frederikke
NAMESET_SCANDINAVIAN_FEMALE_43=Freja
NAMESET_SCANDINAVIAN_FEMALE_44=Frida
NAMESET_SCANDINAVIAN_FEMALE_45=Gabriella
NAMESET_SCANDINAVIAN_FEMALE_46=Greta
NAMESET_SCANDINAVIAN_FEMALE_47=Hanna
NAMESET_SCANDINAVIAN_FEMALE_48=Hanne
NAMESET_SCANDINAVIAN_FEMALE_49=Hedda
NAMESET_SCANDINAVIAN_FEMALE_50=Hedvig
NAMESET_SCANDINAVIAN_FEMALE_51=Helena
NAMESET_SCANDINAVIAN_FEMALE_52=Helene
NAMESET_SCANDINAVIAN_FEMALE_53=Helle
NAMESET_SCANDINAVIAN_FEMALE_54=Henriette
NAMESET_SCANDINAVIAN_FEMALE_55=Hilda
NAMESET_SCANDINAVIAN_FEMALE_56=Ida
NAMESET_SCANDINAVIAN_FEMALE_57=Ina
NAMESET_SCANDINAVIAN_FEMALE_58=Ingeborg
NAMESET_SCANDINAVIAN_FEMALE_59=Ingrid
NAMESET_SCANDINAVIAN_FEMALE_60=Ingvild
NAMESET_SCANDINAVIAN_FEMALE_61=Iris
NAMESET_SCANDINAVIAN_FEMALE_62=Isabella
NAMESET_SCANDINAVIAN_FEMALE_63=Jessica
NAMESET_SCANDINAVIAN_FEMALE_64=Jóhanna
NAMESET_SCANDINAVIAN_FEMALE_65=Johanna
NAMESET_SCANDINAVIAN_FEMALE_66=Johanne
NAMESET_SCANDINAVIAN_FEMALE_67=Jonna
NAMESET_SCANDINAVIAN_FEMALE_68=Julia
# pronounced as [julia], not [d͡ʒulia]
NAMESET_SCANDINAVIAN_FEMALE_69=Kaja
NAMESET_SCANDINAVIAN_FEMALE_70=Kajsa
NAMESET_SCANDINAVIAN_FEMALE_71=Kamilla
NAMESET_SCANDINAVIAN_FEMALE_72=Karen
NAMESET_SCANDINAVIAN_FEMALE_73=Karin
NAMESET_SCANDINAVIAN_FEMALE_74=Karoline
NAMESET_SCANDINAVIAN_FEMALE_75=Katrine
NAMESET_SCANDINAVIAN_FEMALE_76=Klara
NAMESET_SCANDINAVIAN_FEMALE_77=Kristín
NAMESET_SCANDINAVIAN_FEMALE_78=Kristin
NAMESET_SCANDINAVIAN_FEMALE_79=Kristina
NAMESET_SCANDINAVIAN_FEMALE_80=Kristine
NAMESET_SCANDINAVIAN_FEMALE_81=Lærke
NAMESET_SCANDINAVIAN_FEMALE_82=Laura
NAMESET_SCANDINAVIAN_FEMALE_83=Lea
NAMESET_SCANDINAVIAN_FEMALE_84=Lene
NAMESET_SCANDINAVIAN_FEMALE_85=Lilly
NAMESET_SCANDINAVIAN_FEMALE_86=Lina
NAMESET_SCANDINAVIAN_FEMALE_87=Linda
NAMESET_SCANDINAVIAN_FEMALE_88=Line
NAMESET_SCANDINAVIAN_FEMALE_89=Linn
NAMESET_SCANDINAVIAN_FEMALE_90=Linnéa
NAMESET_SCANDINAVIAN_FEMALE_91=Lisa
NAMESET_SCANDINAVIAN_FEMALE_92=Liv
NAMESET_SCANDINAVIAN_FEMALE_93=Lotte
NAMESET_SCANDINAVIAN_FEMALE_94=Lovisa
NAMESET_SCANDINAVIAN_FEMALE_95=Lykke
NAMESET_SCANDINAVIAN_FEMALE_96=Maiken
NAMESET_SCANDINAVIAN_FEMALE_97=Maja
NAMESET_SCANDINAVIAN_FEMALE_98=Majken
NAMESET_SCANDINAVIAN_FEMALE_99=Malene
NAMESET_SCANDINAVIAN_FEMALE_100=Malin
NAMESET_SCANDINAVIAN_FEMALE_101=Maren
NAMESET_SCANDINAVIAN_FEMALE_102=Mari
NAMESET_SCANDINAVIAN_FEMALE_103=Maria
NAMESET_SCANDINAVIAN_FEMALE_104=Marie
NAMESET_SCANDINAVIAN_FEMALE_105=Märta
NAMESET_SCANDINAVIAN_FEMALE_106=Marta
NAMESET_SCANDINAVIAN_FEMALE_107=Marte
NAMESET_SCANDINAVIAN_FEMALE_108=Mathilde
NAMESET_SCANDINAVIAN_FEMALE_109=Matilda
NAMESET_SCANDINAVIAN_FEMALE_110=Mia
NAMESET_SCANDINAVIAN_FEMALE_111=Mikaela
NAMESET_SCANDINAVIAN_FEMALE_112=Milla
NAMESET_SCANDINAVIAN_FEMALE_113=Moa
NAMESET_SCANDINAVIAN_FEMALE_114=My
NAMESET_SCANDINAVIAN_FEMALE_115=Nanna
NAMESET_SCANDINAVIAN_FEMALE_116=Nora
NAMESET_SCANDINAVIAN_FEMALE_117=Olivia
NAMESET_SCANDINAVIAN_FEMALE_118=Paulina
NAMESET_SCANDINAVIAN_FEMALE_119=Pernille
NAMESET_SCANDINAVIAN_FEMALE_120=Pia
NAMESET_SCANDINAVIAN_FEMALE_121=Ragnhild
NAMESET_SCANDINAVIAN_FEMALE_122=Rebecca
NAMESET_SCANDINAVIAN_FEMALE_123=Rebecka
NAMESET_SCANDINAVIAN_FEMALE_124=Rebekka
NAMESET_SCANDINAVIAN_FEMALE_125=Rikke
NAMESET_SCANDINAVIAN_FEMALE_126=Robin
NAMESET_SCANDINAVIAN_FEMALE_127=Ronja
NAMESET_SCANDINAVIAN_FEMALE_128=Rosa
NAMESET_SCANDINAVIAN_FEMALE_129=Rut
NAMESET_SCANDINAVIAN_FEMALE_130=Saga
NAMESET_SCANDINAVIAN_FEMALE_131=Sandra
NAMESET_SCANDINAVIAN_FEMALE_132=Sanna
NAMESET_SCANDINAVIAN_FEMALE_133=Sara
NAMESET_SCANDINAVIAN_FEMALE_134=Semla
NAMESET_SCANDINAVIAN_FEMALE_135=Signe
NAMESET_SCANDINAVIAN_FEMALE_136=Sigrid
NAMESET_SCANDINAVIAN_FEMALE_137=Silje
NAMESET_SCANDINAVIAN_FEMALE_138=Sille
NAMESET_SCANDINAVIAN_FEMALE_139=Siri
NAMESET_SCANDINAVIAN_FEMALE_140=Sofia
NAMESET_SCANDINAVIAN_FEMALE_141=Sofie
NAMESET_SCANDINAVIAN_FEMALE_142=Solveig
NAMESET_SCANDINAVIAN_FEMALE_143=Stina
NAMESET_SCANDINAVIAN_FEMALE_144=Stine
NAMESET_SCANDINAVIAN_FEMALE_145=Sunniva
NAMESET_SCANDINAVIAN_FEMALE_146=Susanne
NAMESET_SCANDINAVIAN_FEMALE_147=Svea
NAMESET_SCANDINAVIAN_FEMALE_148=Thea
NAMESET_SCANDINAVIAN_FEMALE_149=Therese
NAMESET_SCANDINAVIAN_FEMALE_150=Tilda
NAMESET_SCANDINAVIAN_FEMALE_151=Tova
NAMESET_SCANDINAVIAN_FEMALE_152=Tove
NAMESET_SCANDINAVIAN_FEMALE_153=Tuva
NAMESET_SCANDINAVIAN_FEMALE_154=Tyra
NAMESET_SCANDINAVIAN_FEMALE_155=Vendela
NAMESET_SCANDINAVIAN_FEMALE_156=Vera
NAMESET_SCANDINAVIAN_FEMALE_157=Viktoria
NAMESET_SCANDINAVIAN_FEMALE_158=Ylva

View File

@@ -1,335 +0,0 @@
# Nameset - Scandinavian
# Data taken from www.behindthename.com
# Translator note: this nameset does not contain name that has [ɹ](american english 'r') sound (except '-er'). i.e. for Korean, 'Carl' should be '카를', 'Aleksander' should be '알렉산더'.
# Hangul version author: Torvald (main dev) 한글 전사: 토르발드 (개발진)
NAMESET_SCANDINAVIAN_MALE_1=아담
NAMESET_SCANDINAVIAN_MALE_2=아드리안
NAMESET_SCANDINAVIAN_MALE_3=악셀
NAMESET_SCANDINAVIAN_MALE_4=알베르
NAMESET_SCANDINAVIAN_MALE_5=알빈
NAMESET_SCANDINAVIAN_MALE_6=알렉
NAMESET_SCANDINAVIAN_MALE_7=알렉산더
NAMESET_SCANDINAVIAN_MALE_8=알프레드
NAMESET_SCANDINAVIAN_MALE_9=아문드
NAMESET_SCANDINAVIAN_MALE_10=안드레아스
NAMESET_SCANDINAVIAN_MALE_11=안톤
NAMESET_SCANDINAVIAN_MALE_12=아론
NAMESET_SCANDINAVIAN_MALE_13=알바르
NAMESET_SCANDINAVIAN_MALE_14=아우구스트
NAMESET_SCANDINAVIAN_MALE_15=악셀
NAMESET_SCANDINAVIAN_MALE_16=비외른
NAMESET_SCANDINAVIAN_MALE_17=비외른
NAMESET_SCANDINAVIAN_MALE_18=카를
NAMESET_SCANDINAVIAN_MALE_19=카스퍼
NAMESET_SCANDINAVIAN_MALE_20=크리스티안
NAMESET_SCANDINAVIAN_MALE_21=크리스토퍼
NAMESET_SCANDINAVIAN_MALE_22=다니엘
NAMESET_SCANDINAVIAN_MALE_23=다비드
# pronounced as [dɑvid], not [deivɪd]
NAMESET_SCANDINAVIAN_MALE_24=에드문드
NAMESET_SCANDINAVIAN_MALE_25=에드바르
NAMESET_SCANDINAVIAN_MALE_26=에드빈
NAMESET_SCANDINAVIAN_MALE_27=에릭
NAMESET_SCANDINAVIAN_MALE_28=엘리아스
NAMESET_SCANDINAVIAN_MALE_29=엘리스
NAMESET_SCANDINAVIAN_MALE_30=에마누엘
NAMESET_SCANDINAVIAN_MALE_31=에밀
NAMESET_SCANDINAVIAN_MALE_32=에인드리
NAMESET_SCANDINAVIAN_MALE_33=에릭
NAMESET_SCANDINAVIAN_MALE_34=에를렌드
NAMESET_SCANDINAVIAN_MALE_35=에스펜
NAMESET_SCANDINAVIAN_MALE_36=파비안
NAMESET_SCANDINAVIAN_MALE_37=펠릭스
NAMESET_SCANDINAVIAN_MALE_38=필립
NAMESET_SCANDINAVIAN_MALE_39=프레데릭
NAMESET_SCANDINAVIAN_MALE_40=가브리엘
NAMESET_SCANDINAVIAN_MALE_41=구스타프
NAMESET_SCANDINAVIAN_MALE_42=하콘
NAMESET_SCANDINAVIAN_MALE_43=하콘
NAMESET_SCANDINAVIAN_MALE_44=호콘
NAMESET_SCANDINAVIAN_MALE_45=함푸스
NAMESET_SCANDINAVIAN_MALE_46=한네
NAMESET_SCANDINAVIAN_MALE_47=한스
NAMESET_SCANDINAVIAN_MALE_48=호바르
NAMESET_SCANDINAVIAN_MALE_49=헨릭
NAMESET_SCANDINAVIAN_MALE_50=헤르만
NAMESET_SCANDINAVIAN_MALE_51=히알마르
NAMESET_SCANDINAVIAN_MALE_52=휴고
NAMESET_SCANDINAVIAN_MALE_53=이삭
NAMESET_SCANDINAVIAN_MALE_54=이바르
NAMESET_SCANDINAVIAN_MALE_55=야콥
NAMESET_SCANDINAVIAN_MALE_56=야콥
NAMESET_SCANDINAVIAN_MALE_57=얀
NAMESET_SCANDINAVIAN_MALE_58=옌스
NAMESET_SCANDINAVIAN_MALE_59=예프
NAMESET_SCANDINAVIAN_MALE_60=예스퍼
NAMESET_SCANDINAVIAN_MALE_61=요아킴
# pronounced as [joakim], not [hoakim] as this is scandinavian section.
NAMESET_SCANDINAVIAN_MALE_62=요엘
NAMESET_SCANDINAVIAN_MALE_63=요한
NAMESET_SCANDINAVIAN_MALE_64=요한네스
NAMESET_SCANDINAVIAN_MALE_65=욘
NAMESET_SCANDINAVIAN_MALE_66=욘
NAMESET_SCANDINAVIAN_MALE_67=요나스
NAMESET_SCANDINAVIAN_MALE_68=요나스
NAMESET_SCANDINAVIAN_MALE_69=요나단
NAMESET_SCANDINAVIAN_MALE_70=이외르겐
NAMESET_SCANDINAVIAN_MALE_71=이외르겐
NAMESET_SCANDINAVIAN_MALE_72=요세프
NAMESET_SCANDINAVIAN_MALE_73=칼
NAMESET_SCANDINAVIAN_MALE_74=카스퍼
NAMESET_SCANDINAVIAN_MALE_75=케빈
NAMESET_SCANDINAVIAN_MALE_76=킴
NAMESET_SCANDINAVIAN_MALE_77=크누트
# pronounced as [knut]
NAMESET_SCANDINAVIAN_MALE_78=크리스티안
NAMESET_SCANDINAVIAN_MALE_79=크리스토퍼
NAMESET_SCANDINAVIAN_MALE_80=라르스
NAMESET_SCANDINAVIAN_MALE_81=라세
NAMESET_SCANDINAVIAN_MALE_82=라우리츠
NAMESET_SCANDINAVIAN_MALE_83=레오
NAMESET_SCANDINAVIAN_MALE_84=리누스
# pronounced as [linus], not [lainəs] as this is scandinavian section.
NAMESET_SCANDINAVIAN_MALE_85=로케
NAMESET_SCANDINAVIAN_MALE_86=로베
# NOT pronounced as [ləv]!
NAMESET_SCANDINAVIAN_MALE_87=루드빅
NAMESET_SCANDINAVIAN_MALE_88=루카스
NAMESET_SCANDINAVIAN_MALE_89=마드스
NAMESET_SCANDINAVIAN_MALE_90=마그누스
NAMESET_SCANDINAVIAN_MALE_91=말테
NAMESET_SCANDINAVIAN_MALE_92=말테
NAMESET_SCANDINAVIAN_MALE_93=마르쿠스
NAMESET_SCANDINAVIAN_MALE_94=마리아
NAMESET_SCANDINAVIAN_MALE_95=마리우스
NAMESET_SCANDINAVIAN_MALE_96=마르쿠스
NAMESET_SCANDINAVIAN_MALE_97=마르틴
NAMESET_SCANDINAVIAN_MALE_98=키루스
# need more exotic name starting with 'C'...
NAMESET_SCANDINAVIAN_MALE_99=마츠
NAMESET_SCANDINAVIAN_MALE_100=마티아스
NAMESET_SCANDINAVIAN_MALE_101=막스
NAMESET_SCANDINAVIAN_MALE_102=막시밀리안
NAMESET_SCANDINAVIAN_MALE_103=멜케르
NAMESET_SCANDINAVIAN_MALE_104=미카엘
NAMESET_SCANDINAVIAN_MALE_105=미카엘
NAMESET_SCANDINAVIAN_MALE_106=미켈
NAMESET_SCANDINAVIAN_MALE_107=모르텐
NAMESET_SCANDINAVIAN_MALE_108=니클라스
NAMESET_SCANDINAVIAN_MALE_109=니콜라이
NAMESET_SCANDINAVIAN_MALE_110=닐스
NAMESET_SCANDINAVIAN_MALE_111=오딘
NAMESET_SCANDINAVIAN_MALE_112=올라
NAMESET_SCANDINAVIAN_MALE_113=올라프
NAMESET_SCANDINAVIAN_MALE_114=올라브
NAMESET_SCANDINAVIAN_MALE_115=올레
NAMESET_SCANDINAVIAN_MALE_116=올리버
NAMESET_SCANDINAVIAN_MALE_117=올레
NAMESET_SCANDINAVIAN_MALE_118=올로프
NAMESET_SCANDINAVIAN_MALE_119=오스카르
NAMESET_SCANDINAVIAN_MALE_120=오스카르
NAMESET_SCANDINAVIAN_MALE_121=오스카르
NAMESET_SCANDINAVIAN_MALE_122=오토
NAMESET_SCANDINAVIAN_MALE_123=파트릭
NAMESET_SCANDINAVIAN_MALE_124=페더
NAMESET_SCANDINAVIAN_MALE_125=페르
NAMESET_SCANDINAVIAN_MALE_126=페터
NAMESET_SCANDINAVIAN_MALE_127=필립
NAMESET_SCANDINAVIAN_MALE_128=폰투스
NAMESET_SCANDINAVIAN_MALE_129=프레벤
NAMESET_SCANDINAVIAN_MALE_130=라파엘
NAMESET_SCANDINAVIAN_MALE_131=리드
NAMESET_SCANDINAVIAN_MALE_132=로베르트
NAMESET_SCANDINAVIAN_MALE_133=로빈
NAMESET_SCANDINAVIAN_MALE_134=사무엘
NAMESET_SCANDINAVIAN_MALE_135=산더
NAMESET_SCANDINAVIAN_MALE_136=세바스티안
NAMESET_SCANDINAVIAN_MALE_137=시게
NAMESET_SCANDINAVIAN_MALE_138=시구르
NAMESET_SCANDINAVIAN_MALE_139=시멘
NAMESET_SCANDINAVIAN_MALE_140=시몬
NAMESET_SCANDINAVIAN_MALE_141=신드레
NAMESET_SCANDINAVIAN_MALE_142=시그스텐
NAMESET_SCANDINAVIAN_MALE_143=스테판
NAMESET_SCANDINAVIAN_MALE_144=스테펜
NAMESET_SCANDINAVIAN_MALE_145=스티안
NAMESET_SCANDINAVIAN_MALE_146=스반테
NAMESET_SCANDINAVIAN_MALE_147=스벤
NAMESET_SCANDINAVIAN_MALE_148=테오도르
NAMESET_SCANDINAVIAN_MALE_149=테오도르
NAMESET_SCANDINAVIAN_MALE_150=토마스
NAMESET_SCANDINAVIAN_MALE_151=팀
NAMESET_SCANDINAVIAN_MALE_152=토비아스
NAMESET_SCANDINAVIAN_MALE_153=토드
NAMESET_SCANDINAVIAN_MALE_154=트룰스
NAMESET_SCANDINAVIAN_MALE_155=울프릭
NAMESET_SCANDINAVIAN_MALE_156=발데마르
NAMESET_SCANDINAVIAN_MALE_157=발터
NAMESET_SCANDINAVIAN_MALE_158=비다르
NAMESET_SCANDINAVIAN_MALE_159=비고
NAMESET_SCANDINAVIAN_MALE_160=빅토르
NAMESET_SCANDINAVIAN_MALE_161=빌레
NAMESET_SCANDINAVIAN_MALE_162=빈센트
# feminine names
NAMESET_SCANDINAVIAN_FEMALE_1=아그네스
NAMESET_SCANDINAVIAN_FEMALE_2=알베르테
NAMESET_SCANDINAVIAN_FEMALE_3=알렉산드라
NAMESET_SCANDINAVIAN_FEMALE_4=알바
NAMESET_SCANDINAVIAN_FEMALE_5=아만다
NAMESET_SCANDINAVIAN_FEMALE_6=안드레아
NAMESET_SCANDINAVIAN_FEMALE_7=아네
NAMESET_SCANDINAVIAN_FEMALE_8=안나
NAMESET_SCANDINAVIAN_FEMALE_9=안네
NAMESET_SCANDINAVIAN_FEMALE_10=안니켄
NAMESET_SCANDINAVIAN_FEMALE_11=아스타
NAMESET_SCANDINAVIAN_FEMALE_12=아스트리드
NAMESET_SCANDINAVIAN_FEMALE_13=베아트리케
NAMESET_SCANDINAVIAN_FEMALE_14=카밀라
NAMESET_SCANDINAVIAN_FEMALE_15=카롤리나
NAMESET_SCANDINAVIAN_FEMALE_16=카롤리네
NAMESET_SCANDINAVIAN_FEMALE_17=세실리아
NAMESET_SCANDINAVIAN_FEMALE_18=첼리나
NAMESET_SCANDINAVIAN_FEMALE_19=카를로테
NAMESET_SCANDINAVIAN_FEMALE_20=크리스티나
NAMESET_SCANDINAVIAN_FEMALE_21=크리스티네
NAMESET_SCANDINAVIAN_FEMALE_22=에바
NAMESET_SCANDINAVIAN_FEMALE_23=에디스
NAMESET_SCANDINAVIAN_FEMALE_24=엘린
NAMESET_SCANDINAVIAN_FEMALE_25=엘리나
NAMESET_SCANDINAVIAN_FEMALE_26=엘리사베스
NAMESET_SCANDINAVIAN_FEMALE_27=엘리세
NAMESET_SCANDINAVIAN_FEMALE_28=엘라
NAMESET_SCANDINAVIAN_FEMALE_29=엘리노르
NAMESET_SCANDINAVIAN_FEMALE_30=엘사
NAMESET_SCANDINAVIAN_FEMALE_31=에밀리에
NAMESET_SCANDINAVIAN_FEMALE_32=에밀리아
NAMESET_SCANDINAVIAN_FEMALE_33=에밀리에
NAMESET_SCANDINAVIAN_FEMALE_34=엠마
NAMESET_SCANDINAVIAN_FEMALE_35=에리카
NAMESET_SCANDINAVIAN_FEMALE_36=에를레
NAMESET_SCANDINAVIAN_FEMALE_37=에스테르
NAMESET_SCANDINAVIAN_FEMALE_38=에바
NAMESET_SCANDINAVIAN_FEMALE_39=에벨리나
NAMESET_SCANDINAVIAN_FEMALE_40=펠리시아
NAMESET_SCANDINAVIAN_FEMALE_41=필리파
NAMESET_SCANDINAVIAN_FEMALE_42=프레데리케
NAMESET_SCANDINAVIAN_FEMALE_43=프레야
NAMESET_SCANDINAVIAN_FEMALE_44=프리다
NAMESET_SCANDINAVIAN_FEMALE_45=가브리엘라
NAMESET_SCANDINAVIAN_FEMALE_46=그레타
NAMESET_SCANDINAVIAN_FEMALE_47=한나
NAMESET_SCANDINAVIAN_FEMALE_48=한네
NAMESET_SCANDINAVIAN_FEMALE_49=헤다
NAMESET_SCANDINAVIAN_FEMALE_50=헤드비그
NAMESET_SCANDINAVIAN_FEMALE_51=헬레나
NAMESET_SCANDINAVIAN_FEMALE_52=헬레네
NAMESET_SCANDINAVIAN_FEMALE_53=헬레
NAMESET_SCANDINAVIAN_FEMALE_54=헨리에트
NAMESET_SCANDINAVIAN_FEMALE_55=힐다
NAMESET_SCANDINAVIAN_FEMALE_56=이다
NAMESET_SCANDINAVIAN_FEMALE_57=이나
NAMESET_SCANDINAVIAN_FEMALE_58=잉게보리
NAMESET_SCANDINAVIAN_FEMALE_59=잉그리
NAMESET_SCANDINAVIAN_FEMALE_60=잉그빌드
NAMESET_SCANDINAVIAN_FEMALE_61=이리스
NAMESET_SCANDINAVIAN_FEMALE_62=이사벨라
NAMESET_SCANDINAVIAN_FEMALE_63=예시카
NAMESET_SCANDINAVIAN_FEMALE_64=요한나
NAMESET_SCANDINAVIAN_FEMALE_65=요한나
NAMESET_SCANDINAVIAN_FEMALE_66=요한네
NAMESET_SCANDINAVIAN_FEMALE_67=요나
NAMESET_SCANDINAVIAN_FEMALE_68=율리아
# pronounced as [julia], not [d͡ʒulia]
NAMESET_SCANDINAVIAN_FEMALE_69=카야
NAMESET_SCANDINAVIAN_FEMALE_70=카트리나
NAMESET_SCANDINAVIAN_FEMALE_71=카밀라
NAMESET_SCANDINAVIAN_FEMALE_72=카렌
NAMESET_SCANDINAVIAN_FEMALE_73=카린
NAMESET_SCANDINAVIAN_FEMALE_74=카롤리네
NAMESET_SCANDINAVIAN_FEMALE_75=카트리네
NAMESET_SCANDINAVIAN_FEMALE_76=클라라
NAMESET_SCANDINAVIAN_FEMALE_77=크리스틴
NAMESET_SCANDINAVIAN_FEMALE_78=크리스틴
NAMESET_SCANDINAVIAN_FEMALE_79=크리스티나
NAMESET_SCANDINAVIAN_FEMALE_80=크리스티네
NAMESET_SCANDINAVIAN_FEMALE_81=레르케
NAMESET_SCANDINAVIAN_FEMALE_82=라우라
NAMESET_SCANDINAVIAN_FEMALE_83=레아
NAMESET_SCANDINAVIAN_FEMALE_84=레네
NAMESET_SCANDINAVIAN_FEMALE_85=릴리
NAMESET_SCANDINAVIAN_FEMALE_86=리나
NAMESET_SCANDINAVIAN_FEMALE_87=린다
NAMESET_SCANDINAVIAN_FEMALE_88=리네
NAMESET_SCANDINAVIAN_FEMALE_89=린
NAMESET_SCANDINAVIAN_FEMALE_90=린네아
NAMESET_SCANDINAVIAN_FEMALE_91=리사
NAMESET_SCANDINAVIAN_FEMALE_92=리브
NAMESET_SCANDINAVIAN_FEMALE_93=로테
NAMESET_SCANDINAVIAN_FEMALE_94=로비사
NAMESET_SCANDINAVIAN_FEMALE_95=리케
NAMESET_SCANDINAVIAN_FEMALE_96=마이켄
NAMESET_SCANDINAVIAN_FEMALE_97=마야
NAMESET_SCANDINAVIAN_FEMALE_98=마이켄
NAMESET_SCANDINAVIAN_FEMALE_99=말레네
NAMESET_SCANDINAVIAN_FEMALE_100=말린
NAMESET_SCANDINAVIAN_FEMALE_101=마렌
NAMESET_SCANDINAVIAN_FEMALE_102=마리
NAMESET_SCANDINAVIAN_FEMALE_103=마리아
NAMESET_SCANDINAVIAN_FEMALE_104=마리에
NAMESET_SCANDINAVIAN_FEMALE_105=메르타
NAMESET_SCANDINAVIAN_FEMALE_106=마르타
NAMESET_SCANDINAVIAN_FEMALE_107=마르테
NAMESET_SCANDINAVIAN_FEMALE_108=마틸데
NAMESET_SCANDINAVIAN_FEMALE_109=마틸다
NAMESET_SCANDINAVIAN_FEMALE_110=미아
NAMESET_SCANDINAVIAN_FEMALE_111=미카엘라
NAMESET_SCANDINAVIAN_FEMALE_112=밀라
NAMESET_SCANDINAVIAN_FEMALE_113=모아
NAMESET_SCANDINAVIAN_FEMALE_114=미
NAMESET_SCANDINAVIAN_FEMALE_115=난나
NAMESET_SCANDINAVIAN_FEMALE_116=노라
NAMESET_SCANDINAVIAN_FEMALE_117=올리비아
NAMESET_SCANDINAVIAN_FEMALE_118=파울리나
NAMESET_SCANDINAVIAN_FEMALE_119=페르닐레
NAMESET_SCANDINAVIAN_FEMALE_120=피아
NAMESET_SCANDINAVIAN_FEMALE_121=라그닐드
NAMESET_SCANDINAVIAN_FEMALE_122=레베카
NAMESET_SCANDINAVIAN_FEMALE_123=레베카
NAMESET_SCANDINAVIAN_FEMALE_124=레베카
NAMESET_SCANDINAVIAN_FEMALE_125=리케
NAMESET_SCANDINAVIAN_FEMALE_126=로빈
NAMESET_SCANDINAVIAN_FEMALE_127=로냐
NAMESET_SCANDINAVIAN_FEMALE_128=로사
NAMESET_SCANDINAVIAN_FEMALE_129=루트
NAMESET_SCANDINAVIAN_FEMALE_130=사가
NAMESET_SCANDINAVIAN_FEMALE_131=산드리아
NAMESET_SCANDINAVIAN_FEMALE_132=산나
NAMESET_SCANDINAVIAN_FEMALE_133=사라
NAMESET_SCANDINAVIAN_FEMALE_134=세믈라
NAMESET_SCANDINAVIAN_FEMALE_135=시그네
NAMESET_SCANDINAVIAN_FEMALE_136=시그리드
NAMESET_SCANDINAVIAN_FEMALE_137=실리에
NAMESET_SCANDINAVIAN_FEMALE_138=실레
NAMESET_SCANDINAVIAN_FEMALE_139=시리
NAMESET_SCANDINAVIAN_FEMALE_140=소피아
NAMESET_SCANDINAVIAN_FEMALE_141=소피에
NAMESET_SCANDINAVIAN_FEMALE_142=솔비그
NAMESET_SCANDINAVIAN_FEMALE_143=스티나
NAMESET_SCANDINAVIAN_FEMALE_144=스티네
NAMESET_SCANDINAVIAN_FEMALE_145=순니바
NAMESET_SCANDINAVIAN_FEMALE_146=수잔네
NAMESET_SCANDINAVIAN_FEMALE_147=스베아
NAMESET_SCANDINAVIAN_FEMALE_148=테아
NAMESET_SCANDINAVIAN_FEMALE_149=테레세
NAMESET_SCANDINAVIAN_FEMALE_150=틸다
NAMESET_SCANDINAVIAN_FEMALE_151=토바
NAMESET_SCANDINAVIAN_FEMALE_152=토베
NAMESET_SCANDINAVIAN_FEMALE_153=투바
NAMESET_SCANDINAVIAN_FEMALE_154=티라
NAMESET_SCANDINAVIAN_FEMALE_155=벤델라
NAMESET_SCANDINAVIAN_FEMALE_156=베라
NAMESET_SCANDINAVIAN_FEMALE_157=빅토리아
NAMESET_SCANDINAVIAN_FEMALE_158=일바

View File

@@ -7,7 +7,7 @@
"strength" : 1000, "strength" : 1000,
"strengthvariable" : [100,100,100,100,100,100,100], "strengthvariable" : [100,100,100,100,100,100,100],
"accel" : 0.2, "accel" : 0.32,
"speed" : 3.0, "speed" : 3.0,
"speedvariable" : [100,100,100,100,100,100,100], "speedvariable" : [100,100,100,100,100,100,100],
@@ -18,15 +18,13 @@
"scale" : 1, "scale" : 1,
"scalevariable" : [100,100,100,100,100,100,100], "scalevariable" : [100,100,100,100,100,100,100],
"speed" : 2.0,
"speedvariable" : [100,100,100,100,100,100,100],
"physiquemult" : [100,100,100,100,100,100,100], "physiquemult" : [100,100,100,100,100,100,100],
"encumbrance" : 1000, "encumbrance" : 1000,
"basedefence" : "work in progress", "basedefence" : "work in progress",
"toolsize" : 15, "toolsize" : 15,
"intelligent" : true "intelligent" : true
} }

View File

@@ -0,0 +1,29 @@
Creature raw documentation
== string values ==
racename(plural) : Racename token in language CSV
baseheight : base height for hitbox. [px] (24 px == 1 metre)
basemass : base mass for creature. [kg]
== number values ==
strength : strength value, no significant unit is given. The value for regular human is fixed to 1 000.
accel : acceleration for walking. [px / TARGET_FPS^2]
speed : walk speed. [px / TARGET_FPS]
jumppower : self-explanatory. [-px / TARGET_FPS^2]
scale : creature body scale. Mass/strength/accel/etc. will be changed accordingly, hence the prefix “base” for some raw tokens.
-variable : variability factor. [array of percentiles]
physiquemult : variable scale. Used for wild creatures ONLY.
encumbrance : capacity of carrying. [kg]
basedefence : base defence value of body. Sterner body material == higher value
toolsize : base tool size for the creature. See MECHANICS file for more information.
== boolean values ==
intelligent : can speak and talk.

View File

@@ -2,7 +2,7 @@
"factionname" : "player", "factionname" : "player",
"factionamicable" : ["follower"], "factionamicable" : ["follower"],
"factionneutral" : [], "factionneutral" : ["controlledvillager"],
"factionhostile" : ["wildlifehostile"], "factionhostile" : ["wildlifehostile"],
"factionfearful" : ["wildlifeflee"] "factionfearful" : ["wildlifeflee"]
} }

View File

@@ -0,0 +1,8 @@
{
"factionname" : "wildhamlet_template",
"factionamicable" : [],
"factionneutral" : ["player", "thisvillager", "thiscontroller"],
"factionhostile" : [],
"factionfearful" : []
}

View File

@@ -1,3 +1,5 @@
Faction documentation
{ {
"factionname" : "player", "factionname" : "player",
@@ -10,12 +12,12 @@
factionname : Identifier of the faction data factionname : Identifier of the faction data
factionamicable : Amicable faction. Players can give/take items of actors of this faction, in plus factionamicable : Amicable faction. Players can give/take items of actors of this faction, in plus
to the ability of trading. Assigned actors (usually follower) will follow players to the ability of barter. Assigned actors (usually follower) will follow players
in game. in game.
factionneutral : Explicit neutrality. If the assigned actor is intelligent (NPC AV), players can factionneutral : Explicit neutrality. If the assigned actor is intelligent (NPC AV), players can
trade with them. Unassigned faction will be treated like neutral, but players can barter with them. Unassigned faction will be treated like neutral, but players
not make any trade with them. cannot barter with them.
factionhostile : Assigned faction will attack players on the sight. e.g. 'wildlifehostile' factionhostile : Assigned faction will attack players on the sight. e.g. 'wildlifehostile'

View File

@@ -1,17 +1,17 @@
# An adjacency matrix of religion sphere relationship # An adjacency matrix of religion sphere relationship
# 0: neutral, 1: amicable (welcoming), -1: hostile (will not barter == explicit neutrality) # 0: neutral, 1: amicable (welcoming), -1: hostile (will not barter, like 'unassigned' neutral)
# -2: enemy (this is the holy war! WAAAGH!!) # -2: enemy (this is the holy war! WAAAGH!!)
# war: WAAAGH!! # war: WAAAGH!!
# randomness: All hail the Random Number God! # randomness: All hail the Random Number God!
# strength: tranees; disciplinants # strength: tranees; disciplinants
# brute: mostly "brute" wild mobs, or spheres that fond of bruteness # brute: mostly "brute" wild mobs, or spheres that is fond of brute-ness
"↓from to→";"strength";"harmony";"war";"randomness";"wealth";"brute";"helix" "↓from to→";"strength";"harmony";"war";"randomness";"wealth";"brute";"helix"
"strength" ; "1"; "1"; "-1"; "0"; "0"; "-1" "strength" ; "1"; "1"; "0"; "0"; "0"; "0"; "0"
"harmony" ; "0"; "1"; "-1"; "-1"; "0"; "0" "harmony" ; "0"; "1"; "-1"; "0"; "0"; "0"; "0"
"war" ; "-2"; "-2"; "1"; "-2"; "-2"; "-2" "war" ; "-2"; "-2"; "1"; "-2"; "-2"; "-2"; "0"
"randomness"; "0"; "0"; "0"; "1"; "0"; "0" "randomness"; "0"; "0"; "0"; "1"; "0"; "0"; "0"
"wealth" ; "wealth" ;
"brute" ; "brute" ; "0"; "0"; "-1"; "0"; "0"; "-1"; "0"
"helix" ; "helix" ;
Can't render this file because it contains an unexpected character in line 8 and column 17.

View File

@@ -21,6 +21,7 @@ public class GameFontBase implements Font {
static SpriteSheet cyrilic; static SpriteSheet cyrilic;
static SpriteSheet cyrilicEF; static SpriteSheet cyrilicEF;
static SpriteSheet fullwidthForms; static SpriteSheet fullwidthForms;
static SpriteSheet uniPunct;
static final int JUNG_COUNT = 21; static final int JUNG_COUNT = 21;
static final int JONG_COUNT = 28; static final int JONG_COUNT = 28;
@@ -46,6 +47,7 @@ public class GameFontBase implements Font {
static final int SHEET_CYRILIC_EM = 9; static final int SHEET_CYRILIC_EM = 9;
static final int SHEET_CYRILIC_EF = 10; static final int SHEET_CYRILIC_EF = 10;
static final int SHEET_FW_UNI = 11; static final int SHEET_FW_UNI = 11;
static final int SHEET_UNI_PUNCT = 12;
static SpriteSheet[] sheetKey; static SpriteSheet[] sheetKey;
static final Character[] asciiEFList = { static final Character[] asciiEFList = {
@@ -139,9 +141,15 @@ public class GameFontBase implements Font {
} }
private boolean isFullwidthUni(char c) { private boolean isFullwidthUni(char c) {
return (c >= 0xFF00 && c < 0xFF60); return (c >= 0xFF00 && c < 0xFF20);
} }
private boolean isUniPunct(char c) {
return (c >= 0x2000 && c < 0x2070);
}
/** */
private int asciiEFindexX(char c) { private int asciiEFindexX(char c) {
return (Arrays.asList(asciiEFList).indexOf(c) % 16); return (Arrays.asList(asciiEFList).indexOf(c) % 16);
} }
@@ -214,6 +222,14 @@ public class GameFontBase implements Font {
return (c - 0xFF00) / 16; return (c - 0xFF00) / 16;
} }
private int uniPunctIndexX(char c) {
return (c - 0x2000) % 16;
}
private int uniPunctIndexY(char c) {
return (c - 0x2000) / 16;
}
@Override @Override
public int getWidth(String s) { public int getWidth(String s) {
return getWidthSubstr(s, s.length()); return getWidthSubstr(s, s.length());
@@ -269,12 +285,7 @@ public class GameFontBase implements Font {
} }
@Override @Override
public void drawString(float v, float v1, String s) { public void drawString(float x, float y, String s) {
}
@Override
public void drawString(float x, float y, String s, Color color) {
// hangul fonts first // hangul fonts first
hangulSheet.startUse(); hangulSheet.startUse();
for (int i = 0; i < s.length(); i++) { for (int i = 0; i < s.length(); i++) {
@@ -368,6 +379,10 @@ public class GameFontBase implements Font {
sheetX = fullwidthUniIndexX(ch); sheetX = fullwidthUniIndexX(ch);
sheetY = fullwidthUniIndexY(ch); sheetY = fullwidthUniIndexY(ch);
break; break;
case SHEET_UNI_PUNCT:
sheetX = uniPunctIndexX(ch);
sheetY = uniPunctIndexY(ch);
break;
default: default:
sheetX = ch % 16; sheetX = ch % 16;
sheetY = ch / 16; sheetY = ch / 16;
@@ -403,6 +418,11 @@ public class GameFontBase implements Font {
} }
} }
@Override
public void drawString(float x, float y, String s, Color color) {
drawString(x, y, s);
}
private int getSheetType(char c) { private int getSheetType(char c) {
// EFs // EFs
if (isAsciiEF(c)) return SHEET_ASCII_EF; if (isAsciiEF(c)) return SHEET_ASCII_EF;
@@ -416,6 +436,7 @@ public class GameFontBase implements Font {
else if (isAscii(c)) return SHEET_ASCII_EM; else if (isAscii(c)) return SHEET_ASCII_EM;
else if (isExtA(c)) return SHEET_EXTA_EM; else if (isExtA(c)) return SHEET_EXTA_EM;
else if (isCyrilic(c)) return SHEET_CYRILIC_EM; else if (isCyrilic(c)) return SHEET_CYRILIC_EM;
else if (isUniPunct(c)) return SHEET_UNI_PUNCT;
// fixed width punctuations // fixed width punctuations
else if (isCJKPunct(c)) return SHEET_CJK_PUNCT; else if (isCJKPunct(c)) return SHEET_CJK_PUNCT;
else if (isFullwidthUni(c)) return SHEET_FW_UNI; else if (isFullwidthUni(c)) return SHEET_FW_UNI;
@@ -423,9 +444,22 @@ public class GameFontBase implements Font {
else return SHEET_ASCII_EM; // fallback else return SHEET_ASCII_EM; // fallback
} }
/**
* Draw part of a string to the screen. Note that this will still position the text as though
* it's part of the bigger string.
* @param x
* @param y
* @param s
* @param color
* @param startIndex
* @param endIndex
*/
@Override @Override
public void drawString(float v, float v1, String s, Color color, int i, int i1) { public void drawString(float x, float y, String s, Color color, int startIndex, int endIndex) {
String unprintedHead = s.substring(0, startIndex);
String printedBody = s.substring(startIndex, endIndex);
int xoff = getWidth(unprintedHead);
drawString(x + xoff, y, printedBody, color);
} }
public void reloadUnihan() throws SlickException { public void reloadUnihan() throws SlickException {

View File

@@ -62,6 +62,10 @@ public class GameFontWhite extends GameFontBase {
"./res/graphics/fonts/fullwidth_forms.png" "./res/graphics/fonts/fullwidth_forms.png"
, W_UNIHAN, H_UNIHAN , W_UNIHAN, H_UNIHAN
); );
uniPunct = new SpriteSheet(
"./res/graphics/fonts/unipunct.png"
, W_LATIN_WIDE, H
);
SpriteSheet[] shk = { SpriteSheet[] shk = {
asciiSheet asciiSheet
@@ -76,6 +80,7 @@ public class GameFontWhite extends GameFontBase {
, cyrilic , cyrilic
, cyrilicEF , cyrilicEF
, fullwidthForms , fullwidthForms
, uniPunct
}; };
sheetKey = shk; sheetKey = shk;
} }

View File

@@ -33,6 +33,22 @@ public class FudgeDice {
return diceResult; return diceResult;
} }
/**
* Roll dice and get result, for array index
* @return Normal distributed integer [0 , N] for N = 2 × DiceCounts + 1. 0 is the most frequent return.
*/
public int rollForArray() {
return roll() + diceCounts;
}
public int getDiceCounts() {
return diceCounts;
}
public int getSizeOfProbabilityRange() {
return 2 * diceCounts + 1;
}
/** /**
* @return integer randomly picked from {-1, 0, 1} * @return integer randomly picked from {-1, 0, 1}
*/ */

View File

@@ -3,6 +3,7 @@ package com.Torvald.Terrarum.Actors;
import com.Torvald.Rand.HQRNG; import com.Torvald.Rand.HQRNG;
import com.Torvald.Terrarum.MapDrawer.MapDrawer; import com.Torvald.Terrarum.MapDrawer.MapDrawer;
import com.Torvald.Terrarum.Terrarum; import com.Torvald.Terrarum.Terrarum;
import com.Torvald.Terrarum.TileProperties.TilePropCodex;
import com.Torvald.spriteAnimation.SpriteAnimation; import com.Torvald.spriteAnimation.SpriteAnimation;
import com.jme3.math.FastMath; import com.jme3.math.FastMath;
import com.sun.istack.internal.NotNull; import com.sun.istack.internal.NotNull;
@@ -58,7 +59,7 @@ public class ActorWithBody implements Actor, Visible, Glowing {
private volatile float mass = 1f; private volatile float mass = 1f;
private static final int TSIZE = MapDrawer.TILE_SIZE; private static final int TSIZE = MapDrawer.TILE_SIZE;
private static final int AUTO_CLIMB_RATE = TSIZE / 4; private static int AUTO_CLIMB_RATE = TSIZE / 8;
/** /**
* Gravitational Constant G. Load from GameMap. * Gravitational Constant G. Load from GameMap.
@@ -86,7 +87,7 @@ public class ActorWithBody implements Actor, Visible, Glowing {
private final int UD_COMPENSATOR_MAX = TSIZE; private final int UD_COMPENSATOR_MAX = TSIZE;
private final int LR_COMPENSATOR_MAX = TSIZE; private final int LR_COMPENSATOR_MAX = TSIZE;
private final int TILE_CLIMB_RATE = 4; private final int TILE_AUTOCLIMB_RATE = 4;
/** /**
* A constant to make falling faster so that the game is more playable * A constant to make falling faster so that the game is more playable
@@ -95,11 +96,24 @@ public class ActorWithBody implements Actor, Visible, Glowing {
long referenceID; long referenceID;
private final int EVENT_COLLIDE_TOP = 0;
private final int EVENT_COLLIDE_RIGHT = 1;
private final int EVENT_COLLIDE_BOTTOM = 2;
private final int EVENT_COLLIDE_LEFT = 3;
private final int EVENT_COLLIDE_NONE = -1;
int collisionEvent = EVENT_COLLIDE_NONE; // cannot collide both X-axis and Y-axis, or else jump control breaks up.
/**
* in milliseconds
*/
public final int COOLTIME = 500;
/** /**
* Give new random ReferenceID and initialise ActorValue * Give new random ReferenceID and initialise ActorValue
*/ */
public ActorWithBody() { public ActorWithBody() {
referenceID = new HQRNG(0x7E22A211AAL).nextLong(); referenceID = new HQRNG().nextLong();
actorValue = new ActorValue(); actorValue = new ActorValue();
} }
@@ -152,8 +166,9 @@ public class ActorWithBody implements Actor, Visible, Glowing {
baseSpriteHeight = sprite.getHeight(); baseSpriteHeight = sprite.getHeight();
baseSpriteWidth = sprite.getWidth(); baseSpriteWidth = sprite.getWidth();
gravitation = Terrarum.game.map.getGravitation(); gravitation = Terrarum.game.map.getGravitation();
AUTO_CLIMB_RATE = (int) Math.min(TSIZE / 8 * FastMath.sqrt(scale), TSIZE);
if (!playerNoClip()) { if (!isPlayerNoClip()) {
applyGravitation(); applyGravitation();
} }
@@ -162,16 +177,21 @@ public class ActorWithBody implements Actor, Visible, Glowing {
if (veloY > VELO_HARD_LIMIT) veloY = VELO_HARD_LIMIT; if (veloY > VELO_HARD_LIMIT) veloY = VELO_HARD_LIMIT;
// Set 'next' positions to fiddle with // Set 'next' positions to fiddle with
updateNextHitboxY(); // updateNextHitboxYFromVelo();
updateVerticalPos(); // updateNextHitboxXFromVelo();
clampNextHitbox(); updateNextHitboxFromVelo();
updateHitboxY();
updateNextHitboxX();
updateHorizontalPos(); // do horizontal collision detection first!
clampNextHitbox(); // updateHorizontalPos();
updateHitboxX(); updateHitboxX();
updateVerticalPos();
updateHitboxY();
clampNextHitbox();
clampHitbox(); clampHitbox();
} }
} }
@@ -182,8 +202,7 @@ public class ActorWithBody implements Actor, Visible, Glowing {
* Apply only if not grounded; normal force is not implemented (and redundant) * Apply only if not grounded; normal force is not implemented (and redundant)
* so we manually reset G to zero (not applying G. force) if grounded. * so we manually reset G to zero (not applying G. force) if grounded.
*/ */
// FIXME abnormal jump behaviour if mass == 1, same thing happens if mass == 0 but zero mass // FIXME abnormal jump behaviour if mass == 1, same thing happens if mass == 0 (but zero mass is invalid anyway).
// is invalid anyway.
private void applyGravitation() { private void applyGravitation() {
if (!isGrounded()) { if (!isGrounded()) {
/** /**
@@ -205,84 +224,101 @@ public class ActorWithBody implements Actor, Visible, Glowing {
} }
private void updateVerticalPos() { private void updateVerticalPos() {
if (!playerNoClip()) { if (!isPlayerNoClip()) {
if (collidedBottomAndAdjusted()) { // check downward
grounded = true; if (veloY >= 0) { // use TERNARY for L/R!
// order of the if-elseif chain is IMPORTANT
if (isColliding(CONTACT_AREA_BOTTOM)) {
adjustHitBottom();
veloY = 0; veloY = 0;
grounded = true;
}
else if (isColliding(CONTACT_AREA_BOTTOM, 0, 1)) {
veloY = 0;
grounded = true;
} }
else { else {
grounded = false; grounded = false;
} }
}
else if (veloY < 0) {
grounded = false;
if (collidedTopAndAdjusted()) { // order of the if-elseif chain is IMPORTANT
if (isColliding(CONTACT_AREA_TOP)) {
adjustHitTop();
veloY = 0; veloY = 0;
} }
else if (isColliding(CONTACT_AREA_TOP, 0, -1)) {
veloY = 0; // for reversed gravity
}
else {
}
}
} }
} }
boolean collidedBottomAndAdjusted() { private void adjustHitBottom() {
if (getContactArea(CONTACT_AREA_BOTTOM, 0, 1) == 0) { float newX = nextHitbox.getPointedX();
return false; // int-ify posY of nextHitbox
} nextHitbox.setPositionYFromPoint( FastMath.floor(nextHitbox.getPointedY()) );
/**
* seemingly adjusted and one pixel below has ground int newYOff = 0; // always positive
*
* seemingly adjusted: adjustHitBottom sets position one pixel above the ground boolean colliding;
* (stepping on ground in-game look, as the sprite render is one pixel offseted to Y) do {
*/ colliding = isColliding(CONTACT_AREA_BOTTOM, 0, -newYOff);
else if (getContactArea(CONTACT_AREA_BOTTOM, 0, 1) > 0 newYOff += 1;
&& getContactArea(CONTACT_AREA_BOTTOM, 0, 0) == 0) { } while (colliding);
return true;
} float newY = nextHitbox.getPointedY() - newYOff;
else { nextHitbox.setPositionFromPoint(newX, newY + 1);
adjustHitBottom();
return true;
}
} }
boolean collidedTopAndAdjusted() { private void adjustHitTop() { // FIXME jump to teleport to ceiling
if (getContactArea(CONTACT_AREA_TOP, 0, -1) == 0) { float newX = nextHitbox.getPointedX();
return false; // int-ify posY of nextHitbox
} nextHitbox.setPositionY( FastMath.floor(nextHitbox.getPosY()) );
/**
* seemingly adjusted and one pixel below has ground int newYOff = 0; // always positive
*
* seemingly adjusted: adjustHitBottom sets position one pixel above the ground boolean colliding;
* (stepping on ground in-game look, as the sprite render is one pixel offseted to Y) do {
*/ colliding = isColliding(CONTACT_AREA_TOP, 0, newYOff);
else if (getContactArea(CONTACT_AREA_TOP, 0, -1) > 0 newYOff += 1;
&& getContactArea(CONTACT_AREA_TOP, 0, 0) == 0) { } while (colliding);
return true;
} float newY = nextHitbox.getPosY() + newYOff;
else { nextHitbox.setPositionFromPoint(newX, newY - 1);
adjustHitTop();
return true;
}
} }
private void updateHorizontalPos() { private void updateHorizontalPos() {
if (!playerNoClip()) { if (!isPlayerNoClip()) {
if (collidedRightAndAdjusted()) { // treat as 'event--collided right' resetCollisionEventFlag();
collidedRightAndAdjusted();
if (collisionEvent == EVENT_COLLIDE_RIGHT) {
veloX = 0; veloX = 0;
walledRight = true; walledRight = true;
// TODO remove above two lines and implement tile climb (multi-frame calculation.)
// Use variable TILE_CLIMB_RATE
} }
else if (collidedLeftAndAdjusted()) { // treat as 'event--collided left'
collidedLeftAndAdjusted();
if (collisionEvent == EVENT_COLLIDE_LEFT) {
veloX = 0; veloX = 0;
walledLeft = true; walledLeft = true;
} }
else {
if (collisionEvent != EVENT_COLLIDE_LEFT && collisionEvent != EVENT_COLLIDE_RIGHT) {
walledRight = false; walledRight = false;
walledLeft = false; walledLeft = false;
} }
} }
} }
boolean collidedRightAndAdjusted() { void collidedRightAndAdjusted() {
if (getContactArea(CONTACT_AREA_RIGHT, 1, 0) == 0) { if (getContactingArea(CONTACT_AREA_RIGHT, 1, 0) == 0) {
return false; resetCollisionEventFlag();
} }
/** /**
* seemingly adjusted and one pixel below has ground * seemingly adjusted and one pixel below has ground
@@ -290,19 +326,19 @@ public class ActorWithBody implements Actor, Visible, Glowing {
* seemingly adjusted: adjustHitBottom sets position one pixel above the ground * seemingly adjusted: adjustHitBottom sets position one pixel above the ground
* (stepping on ground in-game look, as the sprite render is one pixel offseted to Y) * (stepping on ground in-game look, as the sprite render is one pixel offseted to Y)
*/ */
else if (getContactArea(CONTACT_AREA_RIGHT, 1, 0) > 0 else if (getContactingArea(CONTACT_AREA_RIGHT, 1, 0) > 0
&& getContactArea(CONTACT_AREA_RIGHT, 0, 0) == 0) { && getContactingArea(CONTACT_AREA_RIGHT, 0, 0) == 0) {
return true; collisionEvent = EVENT_COLLIDE_RIGHT;
} }
else { else {
adjustHitRight(); adjustHitRight();
return true; collisionEvent = EVENT_COLLIDE_RIGHT;
} }
} }
boolean collidedLeftAndAdjusted() { void collidedLeftAndAdjusted() {
if (getContactArea(CONTACT_AREA_LEFT, -1, 0) == 0) { if (getContactingArea(CONTACT_AREA_LEFT, -1, 0) == 0) {
return false; resetCollisionEventFlag();
} }
/** /**
* seemingly adjusted and one pixel below has ground * seemingly adjusted and one pixel below has ground
@@ -310,95 +346,19 @@ public class ActorWithBody implements Actor, Visible, Glowing {
* seemingly adjusted: adjustHitBottom sets position one pixel above the ground * seemingly adjusted: adjustHitBottom sets position one pixel above the ground
* (stepping on ground in-game look, as the sprite render is one pixel offseted to Y) * (stepping on ground in-game look, as the sprite render is one pixel offseted to Y)
*/ */
else if (getContactArea(CONTACT_AREA_LEFT, -1, 0) > 0 else if (getContactingArea(CONTACT_AREA_LEFT, -1, 0) > 0
&& getContactArea(CONTACT_AREA_LEFT, 0, 0) == 0) { && getContactingArea(CONTACT_AREA_LEFT, 0, 0) == 0) {
return true; collisionEvent = EVENT_COLLIDE_LEFT;
} }
else { else {
adjustHitLeft(); adjustHitLeft();
return true; collisionEvent = EVENT_COLLIDE_LEFT;
} }
} }
private void updateNextHitboxX() {
nextHitbox.set(
hitbox.getPosX() + veloX
, hitbox.getPosY()
, baseHitboxW * scale
, baseHitboxH * scale
);
}
private void updateNextHitboxY() {
nextHitbox.set(
hitbox.getPosX()
, hitbox.getPosY() + veloY
, baseHitboxW * scale
, baseHitboxH * scale
);
}
private void updateHitboxX() {
hitbox.set(
nextHitbox.getPosX()
, hitbox.getPosY()
, baseHitboxW * scale
, baseHitboxH * scale
);
}
private void updateHitboxY() {
hitbox.set(
hitbox.getPosX()
, nextHitbox.getPosY()
, baseHitboxW * scale
, baseHitboxH * scale
);
}
private void adjustHitBottom() {
int tY = 0;
int contactArea = getContactArea(CONTACT_AREA_BOTTOM, 0, 0);
for (int lim = 0; lim < UD_COMPENSATOR_MAX; lim++) {
/**
* get contact area and move up and get again.
* keep track of this value, and some point they will be set as lowest
* and become static. The very point where the value first became lowest
* is the value what we want.
*/
int newContactArea = getContactArea(CONTACT_AREA_BOTTOM, 0, -lim);
if (newContactArea < contactArea) {
tY = -lim;
}
contactArea = newContactArea;
}
nextHitbox.setPositionYFromPoint(FastMath.ceil(nextHitbox.getPointedY() + tY));
}
private void adjustHitTop() {
int tY = 0;
int contactArea = getContactArea(CONTACT_AREA_TOP, 0, 0);
for (int lim = 0; lim < UD_COMPENSATOR_MAX; lim++) {
/**
* get contact area and move up and get again.
* keep track of this value, and some point they will be set as lowest
* and become static. The very point where the value first became lowest
* is the value what we want.
*/
int newContactArea = getContactArea(CONTACT_AREA_TOP, 0, lim);
if (newContactArea < contactArea) {
tY = lim;
}
contactArea = newContactArea;
}
nextHitbox.setPositionYFromPoint(FastMath.floor(nextHitbox.getPointedY() + tY));
}
private void adjustHitRight() { private void adjustHitRight() {
int tX = 0; int tX = 0;
int contactArea = getContactArea(CONTACT_AREA_RIGHT, 0, 0); int contactArea = getContactingArea(CONTACT_AREA_RIGHT, 0, 0);
for (int lim = 0; lim < LR_COMPENSATOR_MAX; lim++) { for (int lim = 0; lim < LR_COMPENSATOR_MAX; lim++) {
/** /**
* get contact area and move up and get again. * get contact area and move up and get again.
@@ -406,7 +366,7 @@ public class ActorWithBody implements Actor, Visible, Glowing {
* and become static. The very point where the value first became lowest * and become static. The very point where the value first became lowest
* is the value what we want. * is the value what we want.
*/ */
int newContactArea = getContactArea(CONTACT_AREA_RIGHT, -lim, 0); int newContactArea = getContactingArea(CONTACT_AREA_RIGHT, -lim, 0);
if (newContactArea < contactArea) { if (newContactArea < contactArea) {
tX = -lim; tX = -lim;
@@ -424,7 +384,7 @@ public class ActorWithBody implements Actor, Visible, Glowing {
private void adjustHitLeft() { private void adjustHitLeft() {
int tX = 0; int tX = 0;
int contactArea = getContactArea(CONTACT_AREA_LEFT, 0, 0); int contactArea = getContactingArea(CONTACT_AREA_LEFT, 0, 0);
for (int lim = 0; lim < LR_COMPENSATOR_MAX; lim++) { for (int lim = 0; lim < LR_COMPENSATOR_MAX; lim++) {
/** /**
* get contact area and move up and get again. * get contact area and move up and get again.
@@ -432,7 +392,7 @@ public class ActorWithBody implements Actor, Visible, Glowing {
* and become static. The very point where the value first became lowest * and become static. The very point where the value first became lowest
* is the value what we want. * is the value what we want.
*/ */
int newContactArea = getContactArea(CONTACT_AREA_LEFT, lim, 0); int newContactArea = getContactingArea(CONTACT_AREA_LEFT, lim, 0);
if (newContactArea < contactArea) { if (newContactArea < contactArea) {
tX = lim; tX = lim;
@@ -441,14 +401,26 @@ public class ActorWithBody implements Actor, Visible, Glowing {
} }
//nextHitbox.setPositionYFromPoint(nextHitbox.getPointedX() + tX); //nextHitbox.setPositionYFromPoint(nextHitbox.getPointedX() + tX);
nextHitbox.set( nextHitbox.set(
FastMath.floor(nextHitbox.getPosX() + tX) FastMath.floor(nextHitbox.getPosX() + tX + 1)
, nextHitbox.getPosY() , nextHitbox.getPosY()
, nextHitbox.getWidth() , nextHitbox.getWidth()
, nextHitbox.getHeight() , nextHitbox.getHeight()
); );
} }
private int getContactArea(int side, int translateX, int translateY) { private boolean isColliding(int side) {
return getContactingArea(side) > 0;
}
private boolean isColliding(int side, int tx, int ty) {
return getContactingArea(side, tx, ty) > 0;
}
private int getContactingArea(int side) {
return getContactingArea(side, 0, 0);
}
private int getContactingArea(int side, int translateX, int translateY) {
int contactAreaCounter = 0; int contactAreaCounter = 0;
for (int i = 0 for (int i = 0
; i < Math.round((side % 2 == 0) ? nextHitbox.getWidth() : nextHitbox.getHeight()) ; i < Math.round((side % 2 == 0) ? nextHitbox.getWidth() : nextHitbox.getHeight())
@@ -484,7 +456,7 @@ public class ActorWithBody implements Actor, Visible, Glowing {
} }
// evaluate // evaluate
if (Terrarum.game.map.getTileFromTerrain(tileX, tileY) > 0) { if (TilePropCodex.getProp(Terrarum.game.map.getTileFromTerrain(tileX, tileY)).isSolid()) {
contactAreaCounter += 1; contactAreaCounter += 1;
} }
} }
@@ -492,6 +464,10 @@ public class ActorWithBody implements Actor, Visible, Glowing {
return contactAreaCounter; return contactAreaCounter;
} }
private void resetCollisionEventFlag() {
collisionEvent = EVENT_COLLIDE_NONE;
}
private void clampHitbox() { private void clampHitbox() {
hitbox.setPositionFromPoint( hitbox.setPositionFromPoint(
clampW(hitbox.getPointedX()) clampW(hitbox.getPointedX())
@@ -506,6 +482,50 @@ public class ActorWithBody implements Actor, Visible, Glowing {
); );
} }
private void updateNextHitboxXFromVelo() {
nextHitbox.set(
hitbox.getPosX() + veloX
, hitbox.getPosY()
, baseHitboxW * scale
, baseHitboxH * scale
);
}
private void updateNextHitboxYFromVelo() {
nextHitbox.set(
hitbox.getPosX()
, hitbox.getPosY() + veloY
, baseHitboxW * scale
, baseHitboxH * scale
);
}
private void updateNextHitboxFromVelo() {
nextHitbox.set(
hitbox.getPosX() + veloX
, hitbox.getPosY() + veloY
, baseHitboxW * scale
, baseHitboxH * scale
);
}
private void updateHitboxX() {
hitbox.setDimension(
nextHitbox.getWidth()
, nextHitbox.getHeight()
);
hitbox.setPositionX(nextHitbox.getPosX());
}
private void updateHitboxY() {
hitbox.setDimension(
nextHitbox.getWidth()
, nextHitbox.getHeight()
);
hitbox.setPositionY(nextHitbox.getPosY());
}
@Override @Override
public void drawGlow(GameContainer gc, Graphics g) { public void drawGlow(GameContainer gc, Graphics g) {
if (visible && spriteGlow != null) { if (visible && spriteGlow != null) {
@@ -624,7 +644,7 @@ public class ActorWithBody implements Actor, Visible, Glowing {
} }
} }
private boolean playerNoClip() { private boolean isPlayerNoClip() {
return (this instanceof Player && ((Player) this).isNoClip()); return (this instanceof Player && ((Player) this).isNoClip());
} }
@@ -744,7 +764,7 @@ public class ActorWithBody implements Actor, Visible, Glowing {
this.update = update; this.update = update;
} }
private int clampMulOfTSize(float v) { private int quantiseTSize(float v) {
return (Math.round(v) / TSIZE) * TSIZE; return FastMath.floor(v / TSIZE) * TSIZE;
} }
} }

View File

@@ -76,7 +76,7 @@ public class CreatureBuildFactory {
for (String s : elemSet) { for (String s : elemSet) {
float baseValue = jsonObject.get(s).getAsFloat(); float baseValue = jsonObject.get(s).getAsFloat();
// roll fudge dice and get value [-3, 3] as [0, 6] // roll fudge dice and get value [-3, 3] as [0, 6]
int varSelected = new Fudge3(new HQRNG()).roll() + 3; int varSelected = new Fudge3(new HQRNG()).rollForArray();
// get multiplier from json. Assuming percentile // get multiplier from json. Assuming percentile
int multiplier = jsonObject.get(s + "variable").getAsJsonArray().get(varSelected).getAsInt(); int multiplier = jsonObject.get(s + "variable").getAsJsonArray().get(varSelected).getAsInt();
float realValue = baseValue * multiplier / 100f; float realValue = baseValue * multiplier / 100f;
@@ -121,7 +121,7 @@ public class CreatureBuildFactory {
for (String s : elemSet) { for (String s : elemSet) {
float baseValue = 1f; float baseValue = 1f;
// roll fudge dice and get value [-3, 3] as [0, 6] // roll fudge dice and get value [-3, 3] as [0, 6]
int varSelected = new Fudge3(new HQRNG()).roll() + 3; int varSelected = new Fudge3(new HQRNG()).rollForArray();
// get multiplier from json. Assuming percentile // get multiplier from json. Assuming percentile
int multiplier = jsonObject.get(s).getAsJsonArray().get(varSelected).getAsInt(); int multiplier = jsonObject.get(s).getAsJsonArray().get(varSelected).getAsInt();
float realValue = baseValue * multiplier / 100f; float realValue = baseValue * multiplier / 100f;

View File

@@ -11,17 +11,12 @@ public class Hitbox {
private Point2f hitboxEnd; private Point2f hitboxEnd;
private float width; private float width;
private float height; private float height;
private float pointX;
private float pointY;
public Hitbox(float x1, float y1, float width, float height) { public Hitbox(float x1, float y1, float width, float height) {
hitboxStart = new Point2f(x1, y1); hitboxStart = new Point2f(x1, y1);
hitboxEnd = new Point2f(x1 + width, y1 + height); hitboxEnd = new Point2f(x1 + width, y1 + height);
this.width = width; this.width = width;
this.height = height; this.height = height;
pointX = x1 + (width / 2);
pointY = y1 + height;
} }
public Point2f getHitboxStart() { public Point2f getHitboxStart() {
@@ -45,7 +40,7 @@ public class Hitbox {
* @return pointX * @return pointX
*/ */
public float getPointedX() { public float getPointedX() {
return pointX; return hitboxStart.getX() + (width / 2);
} }
/** /**
@@ -53,7 +48,7 @@ public class Hitbox {
* @return pointY * @return pointY
*/ */
public float getPointedY() { public float getPointedY() {
return pointY; return hitboxEnd.getY();
} }
/** /**
@@ -68,30 +63,45 @@ public class Hitbox {
hitboxEnd = new Point2f(x1 + width, y1 + height); hitboxEnd = new Point2f(x1 + width, y1 + height);
this.width = width; this.width = width;
this.height = height; this.height = height;
}
pointX = x1 + (width / 2); public void setPosition(float x1, float y1) {
pointY = y1 + height; hitboxStart = new Point2f(x1, y1);
hitboxEnd = new Point2f(x1 + width, y1 + height);
}
public void setPositionX(float x) {
setPosition(x, getPosY());
}
public void setPositionY(float y) {
setPosition(getPosX(), y);
} }
public void setPositionFromPoint(float x1, float y1) { public void setPositionFromPoint(float x1, float y1) {
hitboxStart = new Point2f(x1 - (width / 2), y1 - height); hitboxStart = new Point2f(x1 - (width / 2), y1 - height);
hitboxEnd = new Point2f(hitboxStart.getX() + width, hitboxStart.getY() + height); hitboxEnd = new Point2f(hitboxStart.getX() + width, hitboxStart.getY() + height);
pointX = x1;
pointY = y1;
} }
public void setPositionXFromPoint(float x1) { public void setPositionXFromPoint(float x) {
float y1 = pointY; setPositionFromPoint(x, getPointedY());
hitboxStart = new Point2f(x1 - (width / 2), y1 - height);
hitboxEnd = new Point2f(hitboxStart.getX() + width, hitboxStart.getY() + height);
pointX = x1;
} }
public void setPositionYFromPoint(float y1) { public void setPositionYFromPoint(float y) {
float x1 = pointX; setPositionFromPoint(getPointedX(), y);
hitboxStart = new Point2f(x1 - (width / 2), y1 - height); }
hitboxEnd = new Point2f(hitboxStart.getX() + width, hitboxStart.getY() + height);
pointY = y1; public void translatePosX(float d) {
setPositionX(getPosX() + d);
}
public void translatePosY(float d) {
setPositionY(getPosY() + d);
}
public void setDimension(float w, float h) {
width = w;
height = h;
} }
/** /**
@@ -109,4 +119,12 @@ public class Hitbox {
public float getPosY() { public float getPosY() {
return hitboxStart.getY(); return hitboxStart.getY();
} }
public float getCenteredX() {
return (hitboxStart.getX() + hitboxEnd.getX()) * 0.5f;
}
public float getCenteredY() {
return (hitboxStart.getY() + hitboxEnd.getY()) * 0.5f;
}
} }

View File

@@ -60,6 +60,8 @@ public class PBFSigrid {
p.actorValue.set("intelligent", true); p.actorValue.set("intelligent", true);
p.actorValue.set("luminosity", 22819);
p.setHitboxDimension(17, 46, 9, 0); p.setHitboxDimension(17, 46, 9, 0);
p.inventory = new ActorInventory(0x7FFFFFFF, true); p.inventory = new ActorInventory(0x7FFFFFFF, true);

View File

@@ -46,7 +46,7 @@ public class Player extends ActorWithBody implements Controllable, Pocketed, Fac
private int prevVMoveKey = -1; private int prevVMoveKey = -1;
private final int KEY_NULL = -1; private final int KEY_NULL = -1;
static final float ACCEL_MULT_IN_FLIGHT = 0.22f; static final float ACCEL_MULT_IN_FLIGHT = 0.48f;
static final float WALK_STOP_ACCEL = 0.32f; static final float WALK_STOP_ACCEL = 0.32f;
static final float WALK_ACCEL_BASE = 0.32f; static final float WALK_ACCEL_BASE = 0.32f;
@@ -59,10 +59,9 @@ public class Player extends ActorWithBody implements Controllable, Pocketed, Fac
private final int TSIZE = MapDrawer.TILE_SIZE; private final int TSIZE = MapDrawer.TILE_SIZE;
private char LUMINANCE_RGB = 31399;
private HashSet<Faction> factionSet = new HashSet<>(); private HashSet<Faction> factionSet = new HashSet<>();
/** /**
* Creates new Player instance with empty elements (sprites, actorvalue, etc.). <br /> * Creates new Player instance with empty elements (sprites, actorvalue, etc.). <br />
* *
@@ -452,7 +451,8 @@ public class Player extends ActorWithBody implements Controllable, Pocketed, Fac
float timedJumpCharge = init - (init / len) * jumpCounter; float timedJumpCharge = init - (init / len) * jumpCounter;
if (timedJumpCharge < 0) timedJumpCharge = 0; if (timedJumpCharge < 0) timedJumpCharge = 0;
float jumpAcc = pwr * timedJumpCharge * JUMP_ACCELERATION_MOD; float jumpAcc = pwr * timedJumpCharge * JUMP_ACCELERATION_MOD
* FastMath.sqrt(getScale());
super.setVeloY(super.getVeloY() super.setVeloY(super.getVeloY()
- jumpAcc - jumpAcc
@@ -567,11 +567,12 @@ public class Player extends ActorWithBody implements Controllable, Pocketed, Fac
@Override @Override
public void setLuminance(char RGB) { public void setLuminance(char RGB) {
LUMINANCE_RGB = RGB; actorValue.set("luminosity", (int) RGB);
} }
@Override @Override
public char getLuminance() { public char getLuminance() {
return LUMINANCE_RGB; return actorValue.hasKey("luminosity") ?
(char) actorValue.getAsInt("luminosity") : 0;
} }
} }

View File

@@ -22,7 +22,7 @@ public class PlayerDebugger {
} }
} }
/* /**
* Delegates for Player instances * Delegates for Player instances
*/ */
@@ -42,4 +42,5 @@ public class PlayerDebugger {
public ActorValue actorValue() { return getPlayer().getActorValue(); } public ActorValue actorValue() { return getPlayer().getActorValue(); }
public float mass() { return getPlayer().getMass(); } public float mass() { return getPlayer().getMass(); }
public boolean noClip() { return getPlayer().isNoClip(); } public boolean noClip() { return getPlayer().isNoClip(); }
public int collisionEvent() { return getPlayer().collisionEvent; }
} }

View File

@@ -1,5 +1,7 @@
package com.Torvald.Terrarum.ConsoleCommand; package com.Torvald.Terrarum.ConsoleCommand;
import com.Torvald.Terrarum.Terrarum;
import java.util.Hashtable; import java.util.Hashtable;
/** /**
@@ -30,6 +32,7 @@ public class CommandDict {
dict.put("gsontest", new GsonTest()); dict.put("gsontest", new GsonTest());
dict.put("setgl", new SetGlobalLightLevel()); dict.put("setgl", new SetGlobalLightLevel());
dict.put("getfaction", new GetFactioning()); dict.put("getfaction", new GetFactioning());
dict.put("auth", Terrarum.game.auth);
} }
public static ConsoleCommand getCommand(String commandName) { public static ConsoleCommand getCommand(String commandName) {

View File

@@ -4,6 +4,7 @@ import com.Torvald.Terrarum.LangPack.Lang;
import com.Torvald.Terrarum.Terrarum; import com.Torvald.Terrarum.Terrarum;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Formatter; import java.util.Formatter;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@@ -13,26 +14,16 @@ import java.util.regex.Pattern;
*/ */
public class CommandInterpreter { public class CommandInterpreter {
private static String[] commandsAvailableWOAuth = {"auth", "qqq", "zoom", "setlocale", "getlocale"};
public static void execute(String command) { public static void execute(String command) {
CommandInput[] cmd = parse(command); CommandInput[] cmd = parse(command);
for (CommandInput single_command : cmd) { for (CommandInput single_command : cmd) {
ConsoleCommand commandObj = null; ConsoleCommand commandObj = null;
try { try {
if (single_command.getName().equalsIgnoreCase("auth")) { if (Arrays.asList(commandsAvailableWOAuth).contains(single_command.getName().toLowerCase())) {
Terrarum.game.auth.execute(single_command.toStringArray()); commandObj = CommandDict.getCommand(single_command.getName().toLowerCase());
}
else if (single_command.getName().equalsIgnoreCase("qqq")) {
new QuitApp().execute(single_command.toStringArray());
}
else if (single_command.getName().equalsIgnoreCase("zoom")) {
new Zoom().execute(single_command.toStringArray());
}
else if (single_command.getName().equalsIgnoreCase("setlocale")) {
new SetLocale().execute(single_command.toStringArray());
}
else if (single_command.getName().equalsIgnoreCase("getlocale")) {
new GetLocale().execute(single_command.toStringArray());
} }
else { else {
if (Terrarum.game.auth.b()) { if (Terrarum.game.auth.b()) {
@@ -41,20 +32,26 @@ public class CommandInterpreter {
); );
} }
else { else {
System.out.println("ee1");
throw new NullPointerException(); // if not authorised, say "Unknown command" throw new NullPointerException(); // if not authorised, say "Unknown command"
} }
} }
} }
catch (NullPointerException e) { catch (NullPointerException e) {
echoUnknownCmd(single_command.getName());
} }
finally { finally {
try { try {
if (commandObj != null) if (commandObj != null) {
commandObj.execute(single_command.toStringArray()); commandObj.execute(single_command.toStringArray());
} }
else {
echoUnknownCmd(single_command.getName());
System.out.println("ee3");
}
}
catch (Exception e) { catch (Exception e) {
System.out.println("[CommandInterpreter] "); System.out.println("[CommandInterpreter] :");
e.printStackTrace(); e.printStackTrace();
new Echo().execute(Lang.get("ERROR_GENERIC_TEXT")); new Echo().execute(Lang.get("ERROR_GENERIC_TEXT"));
} }

View File

@@ -15,6 +15,7 @@ public class GetAV implements ConsoleCommand {
public void execute(String[] args) { public void execute(String[] args) {
Echo echo = new Echo(); Echo echo = new Echo();
try {
if (args.length == 1) { if (args.length == 1) {
// print all actorvalue of player // print all actorvalue of player
ActorValue av = Terrarum.game.getPlayer().getActorValue(); ActorValue av = Terrarum.game.getPlayer().getActorValue();
@@ -41,6 +42,18 @@ public class GetAV implements ConsoleCommand {
} }
} }
catch (NullPointerException e) {
if (args.length == 2) {
echo.execute(args[1] + ": actor value does not exist.");
}
else if (args.length == 3) {
echo.execute(args[2] + ": actor value does not exist.");
}
else {
throw new NullPointerException();
}
}
}
@Override @Override
public void printUsage() { public void printUsage() {

View File

@@ -27,19 +27,26 @@ class SetAV implements ConsoleCommand {
else if (args.length == 3) { else if (args.length == 3) {
Object val; Object val;
try { val = new Float(args[2]); } // try for number try {
val = new Integer(args[2]); // try for integer
}
catch (NumberFormatException e) { catch (NumberFormatException e) {
if (args[2].toLowerCase() == "true") { try {
val = new Float(args[2]); // try for float
}
catch (NumberFormatException ee) {
if (args[2].equalsIgnoreCase("true")) {
val = new Boolean(true); val = new Boolean(true);
} }
else if (args[2].toLowerCase() == "false") { else if (args[2].equalsIgnoreCase("false")) {
val = new Boolean(false); val = new Boolean(false);
} }
else { else {
val = new String(args[2]); // string if not number val = new String(args[2]); // string if not number
} }
} }
}
Terrarum.game.getPlayer().getActorValue().set(args[1], val); Terrarum.game.getPlayer().getActorValue().set(args[1], val);
echo.execute("Set " + args[1] + " to " + val); echo.execute("Set " + args[1] + " to " + val);

View File

@@ -140,11 +140,17 @@ public class Game extends BasicGameState {
public void update(GameContainer gc, StateBasedGame sbg, int delta_t) { public void update(GameContainer gc, StateBasedGame sbg, int delta_t) {
setAppTitle(); setAppTitle();
GameController.processInput(gc.getInput());
KeyToggler.update(gc);
TileStat.update();
/** Placed before actor update to give some dynamic view of player on screen,
* or else player will always stay same spot, which is somewhat dull.
*/
MapDrawer.update(gc, delta_t); MapDrawer.update(gc, delta_t);
MapCamera.update(gc, delta_t); MapCamera.update(gc, delta_t);
GameController.processInput(gc.getInput());
actorContainer.forEach(actor -> actor.update(gc, delta_t)); actorContainer.forEach(actor -> actor.update(gc, delta_t));
actorContainer.forEach( actorContainer.forEach(
actor -> { actor -> {
@@ -159,11 +165,7 @@ public class Game extends BasicGameState {
uiContainer.forEach(ui -> ui.update(gc, delta_t)); uiContainer.forEach(ui -> ui.update(gc, delta_t));
KeyToggler.update(gc);
//bulletin.update(gc, delta_t); //bulletin.update(gc, delta_t);
TileStat.update();
} }
private void setAppTitle() { private void setAppTitle() {
@@ -205,9 +207,10 @@ public class Game extends BasicGameState {
MapDrawer.render(gc, g); MapDrawer.render(gc, g);
LightmapRenderer.renderLightMap(); LightmapRenderer.renderLightMap();
setBlendModeMul(); setBlendModeMul();
MapDrawer.drawEnvOverlay(g);
LightmapRenderer.draw(g); LightmapRenderer.draw(g);
// MapDrawer.drawEnvOverlay(g);
setBlendModeNormal(); setBlendModeNormal();
uiContainer.forEach(ui -> ui.render(gc, g)); uiContainer.forEach(ui -> ui.render(gc, g));
@@ -224,7 +227,7 @@ public class Game extends BasicGameState {
int gradMapWidth = GRADIENT_IMAGE.getWidth(); int gradMapWidth = GRADIENT_IMAGE.getWidth();
int phase = Math.round((timeSec / WorldTime.DAY_LENGTH) * gradMapWidth); int phase = Math.round((timeSec / WorldTime.DAY_LENGTH) * gradMapWidth);
//update in every 60 frames //update in every INTERNAL_FRAME frames
colourTable[0] = GRADIENT_IMAGE.getColor(phase, 0); colourTable[0] = GRADIENT_IMAGE.getColor(phase, 0);
colourTable[1] = GRADIENT_IMAGE.getColor(phase, 1); colourTable[1] = GRADIENT_IMAGE.getColor(phase, 1);

View File

@@ -5,6 +5,8 @@ import com.Torvald.Terrarum.Actors.Player;
import com.Torvald.Terrarum.MapDrawer.MapCamera; import com.Torvald.Terrarum.MapDrawer.MapCamera;
import com.Torvald.Terrarum.MapDrawer.MapDrawer; import com.Torvald.Terrarum.MapDrawer.MapDrawer;
import com.Torvald.Terrarum.Terrarum; import com.Torvald.Terrarum.Terrarum;
import com.Torvald.Terrarum.TileProperties.TileNameCode;
import com.Torvald.Terrarum.TileProperties.TilePropCodex;
import com.Torvald.Terrarum.UserInterface.UIHandler; import com.Torvald.Terrarum.UserInterface.UIHandler;
import org.newdawn.slick.Input; import org.newdawn.slick.Input;
@@ -38,6 +40,30 @@ public class GameController {
else { else {
Terrarum.game.consoleHandler.processInput(input); Terrarum.game.consoleHandler.processInput(input);
} }
int mouseTileX = (int) ((MapCamera.getCameraX() + input.getMouseX() / Terrarum.game.screenZoom)
/ MapDrawer.TILE_SIZE);
int mouseTileY = (int) ((MapCamera.getCameraY() + input.getMouseY() / Terrarum.game.screenZoom)
/ MapDrawer.TILE_SIZE);
if (input.isMouseButtonDown(Input.MOUSE_LEFT_BUTTON)) {
// test tile remove
try {
Terrarum.game.map.setTileTerrain(mouseTileX, mouseTileY, TileNameCode.AIR);
Terrarum.game.map.setTileWall(mouseTileX, mouseTileY, TileNameCode.AIR);
}
catch (ArrayIndexOutOfBoundsException e) {
}
}
else if (input.isMouseButtonDown(Input.MOUSE_RIGHT_BUTTON)) {
// test tile place
try {
Terrarum.game.map.setTileTerrain(mouseTileX, mouseTileY, TileNameCode.ICE_MAGICAL);
}
catch (ArrayIndexOutOfBoundsException e) {
}
}
} }
public static void keyPressed(int key, char c) { public static void keyPressed(int key, char c) {
@@ -77,16 +103,7 @@ public class GameController {
} }
public static void mousePressed(int button, int x, int y) { public static void mousePressed(int button, int x, int y) {
int mouseTileX = (int) ((MapCamera.getCameraX() + x / Terrarum.game.screenZoom)
/ MapDrawer.TILE_SIZE);
int mouseTileY = (int) ((MapCamera.getCameraY() + y / Terrarum.game.screenZoom)
/ MapDrawer.TILE_SIZE);
try {
Terrarum.game.map.setTileTerrain(mouseTileX, mouseTileY, (byte) 0);
Terrarum.game.map.setTileWall(mouseTileX, mouseTileY, (byte) 0);
}
catch (ArrayIndexOutOfBoundsException e) {}
} }
public static void mouseReleased(int button, int x, int y) { public static void mouseReleased(int button, int x, int y) {

View File

@@ -36,8 +36,14 @@ public class KVHashtable {
return hashtable.get(key.toLowerCase()); return hashtable.get(key.toLowerCase());
} }
public int getAsInt(String key) {
return (int) get(key);
}
public float getAsFloat(String key) { public float getAsFloat(String key) {
return (float) get(key); Object value = get(key);
if (value instanceof Integer) return ((Integer) value).floatValue();
else return (float) value;
} }
public String getAsString(String key) { public String getAsString(String key) {
@@ -48,6 +54,10 @@ public class KVHashtable {
return (boolean) get(key); return (boolean) get(key);
} }
public boolean hasKey(String key) {
return hashtable.containsKey(key);
}
public Set getKeySet() { public Set getKeySet() {
return hashtable.keySet(); return hashtable.keySet();
} }

View File

@@ -29,6 +29,7 @@ public class Lang {
private static final String PATH_TO_CSV = "./res/locales/"; private static final String PATH_TO_CSV = "./res/locales/";
private static final String CSV_MAIN = "polyglot.csv"; private static final String CSV_MAIN = "polyglot.csv";
private static final String NAMESET_PREFIX = "nameset_";
private static final int[] HANGUL_POST_INDEX_ALPH = { // 0: 는, 가, ... 1: 은, 이, ... private static final int[] HANGUL_POST_INDEX_ALPH = { // 0: 는, 가, ... 1: 은, 이, ...
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
@@ -57,7 +58,7 @@ public class Lang {
FilenameFilter filter = new FilenameFilter() { FilenameFilter filter = new FilenameFilter() {
@Override @Override
public boolean accept(File dir, String name) { public boolean accept(File dir, String name) {
return name.contains(".csv") && !name.contains(CSV_MAIN); return name.contains(".csv") && !name.contains(CSV_MAIN) && !name.contains(NAMESET_PREFIX);
} }
}; };
for (String csvfilename : file.list(filter)) { for (String csvfilename : file.list(filter)) {

View File

@@ -133,16 +133,16 @@ public class MapCamera {
public static void update(GameContainer gc, int delta_t) { public static void update(GameContainer gc, int delta_t) {
Player player = Terrarum.game.getPlayer(); Player player = Terrarum.game.getPlayer();
renderWidth = FastMath.ceil(Terrarum.WIDTH / Terrarum.game.screenZoom); renderWidth = FastMath.ceil(Terrarum.WIDTH / Terrarum.game.screenZoom); // div, not mul
renderHeight = FastMath.ceil(Terrarum.HEIGHT / Terrarum.game.screenZoom); renderHeight = FastMath.ceil(Terrarum.HEIGHT / Terrarum.game.screenZoom);
// position - (WH / 2) // position - (WH / 2)
cameraX = clamp( cameraX = clamp(
Math.round(player.getNextHitbox().getPointedX() - (renderWidth / 2)) Math.round(player.getHitbox().getCenteredX() - (renderWidth / 2))
, map.width * TSIZE - renderWidth , map.width * TSIZE - renderWidth
); );
cameraY = clamp( cameraY = clamp(
Math.round(player.getNextHitbox().getPointedY() - (renderHeight / 2)) Math.round(player.getHitbox().getCenteredY() - (renderHeight / 2))
, map.height * TSIZE - renderHeight , map.height * TSIZE - renderHeight
); );
} }
@@ -311,19 +311,19 @@ public class MapCamera {
} }
} }
private static int div16(int x) { public static int div16(int x) {
return (x & 0x7FFF_FFFF) >> 4; return (x & 0x7FFF_FFFF) >> 4;
} }
private static int mod16(int x) { public static int mod16(int x) {
return x & 0b1111; return x & 0b1111;
} }
private static int quantise16(int x) { public static int quantise16(int x) {
return (x & 0xFFFF_FFF0); return (x & 0xFFFF_FFF0);
} }
private static int clampW(int x) { public static int clampW(int x) {
if (x < 0) { if (x < 0) {
return 0; return 0;
} }
@@ -335,7 +335,7 @@ public class MapCamera {
} }
} }
private static int clampH(int x) { public static int clampH(int x) {
if (x < 0) { if (x < 0) {
return 0; return 0;
} }
@@ -347,7 +347,7 @@ public class MapCamera {
} }
} }
private static int clampWTile(int x) { public static int clampWTile(int x) {
if (x < 0) { if (x < 0) {
return 0; return 0;
} }
@@ -359,7 +359,7 @@ public class MapCamera {
} }
} }
private static int clampHTile(int x) { public static int clampHTile(int x) {
if (x < 0) { if (x < 0) {
return 0; return 0;
} }
@@ -371,7 +371,7 @@ public class MapCamera {
} }
} }
private static int clamp(int x, int lim) { public static int clamp(int x, int lim) {
if (x < 0) { if (x < 0) {
return 0; return 0;
} }

View File

@@ -3,6 +3,9 @@ package com.Torvald.Terrarum.MapDrawer;
import com.Torvald.Terrarum.*; import com.Torvald.Terrarum.*;
import com.Torvald.Terrarum.Game; import com.Torvald.Terrarum.Game;
import com.Torvald.Terrarum.GameMap.GameMap; import com.Torvald.Terrarum.GameMap.GameMap;
import com.Torvald.Terrarum.TileProperties.TileNameCode;
import com.Torvald.Terrarum.TileStat.TileStat;
import com.jme3.math.FastMath;
import org.newdawn.slick.*; import org.newdawn.slick.*;
import org.newdawn.slick.geom.Rectangle; import org.newdawn.slick.geom.Rectangle;
@@ -11,22 +14,20 @@ import org.newdawn.slick.geom.Rectangle;
*/ */
public class MapDrawer { public class MapDrawer {
private static SpriteSheet mapTileMap;
private static SpriteSheet wallTileMap;
public static final int TILE_SIZE = 16; public static final int TILE_SIZE = 16;
public static final int ENVCOLOUR_MAX = 128;
private static int envmap = 64;
private static Rectangle envOverlay;
private static Image envOverlayColourmap; private static Image envOverlayColourmap;
public MapDrawer(GameMap map) throws SlickException { private static final int ENV_COLTEMP_LOWEST = 5500;
mapTileMap = new SpriteSheet("./res/graphics/terrain/terrain.png", TILE_SIZE, TILE_SIZE); private static final int ENV_COLTEMP_HIGHEST = 7500;
wallTileMap = new SpriteSheet("./res/graphics/terrain/wall.png", TILE_SIZE, TILE_SIZE);
private static int colTemp;
public MapDrawer(GameMap map) throws SlickException {
new MapCamera(map); new MapCamera(map);
envOverlayColourmap = new Image("./res/graphics/black_body_col_1000_40000_K.png");
System.gc(); System.gc();
} }
@@ -37,13 +38,51 @@ public class MapDrawer {
} }
public static void drawEnvOverlay(Graphics g) { public static void drawEnvOverlay(Graphics g) {
envOverlay.setX(MapCamera.getCameraX() * Terrarum.game.screenZoom); int onscreen_tiles_max = FastMath.ceil(Terrarum.HEIGHT * Terrarum.WIDTH / FastMath.sqr(TILE_SIZE))
envOverlay.setY(MapCamera.getCameraY() * Terrarum.game.screenZoom); * 2;
envOverlay.setSize(Terrarum.WIDTH * Terrarum.game.screenZoom float onscreen_tiles_cap = onscreen_tiles_max / 4f;
, Terrarum.HEIGHT * Terrarum.game.screenZoom float onscreen_cold_tiles = TileStat.getCount(
TileNameCode.ICE_MAGICAL
, TileNameCode.ICE_FRAGILE
, TileNameCode.ICE_NATURAL
, TileNameCode.SNOW
);
colTemp = colTempLinearFunc((onscreen_cold_tiles / onscreen_tiles_cap));
float zoom = Terrarum.game.screenZoom;
g.setColor(getColourFromMap(colTemp));
g.fillRect(MapCamera.getCameraX() * zoom
, MapCamera.getCameraY() * zoom
, Terrarum.WIDTH * ((zoom < 1) ? 1f / zoom : zoom)
, Terrarum.HEIGHT * ((zoom < 1) ? 1f / zoom : zoom)
); );
// Color[] colourTable = getGradientColour(WorldTime.elapsedSeconds()); // Color[] colourTable = getGradientColour(WorldTime.elapsedSeconds());
} }
/**
*
* @param x [-1 , 1], 0 for 6500K (median of ENV_COLTEMP_HIGHEST and ENV_COLTEMP_LOWEST)
* @return
*/
private static int colTempLinearFunc(float x) {
int colTempMedian = (ENV_COLTEMP_HIGHEST + ENV_COLTEMP_LOWEST) / 2;
return Math.round((ENV_COLTEMP_HIGHEST - ENV_COLTEMP_LOWEST) / 2 * FastMath.clamp(x, -1f, 1f)
+ colTempMedian);
}
private static Color getColourFromMap(int K) {
return envOverlayColourmap.getColor(colTempToImagePos(K), 0);
}
private static int colTempToImagePos(int K) {
if (K < 1000 || K >= 40000) throw new IllegalArgumentException("K: out of range. (" + K + ")");
return (K - 1000) / 10;
}
public static int getColTemp() {
return colTemp;
}
} }

View File

@@ -46,7 +46,7 @@ public class Terrarum extends StateBasedGame {
public static String defaultDir; public static String defaultDir;
public static String defaultSaveDir; public static String defaultSaveDir;
public static String gameLocale = "jaJP"; public static String gameLocale = "isIC";
public static Font gameFontWhite; public static Font gameFontWhite;

View File

@@ -51,10 +51,6 @@ public class TilePropCodex {
return tileProps[index]; return tileProps[index];
} }
public static byte getTileID(String name) {
return 0;
}
private static void setProp(TileProp prop, CSVRecord record) { private static void setProp(TileProp prop, CSVRecord record) {
prop.setName(record.get("name")); prop.setName(record.get("name"));

View File

@@ -32,7 +32,7 @@
"27";"TILE_SNOW" ; "8205"; "6"; "0"; "N/A"; "1"; "1"; "0"; "27"; "0";"16" "27";"TILE_SNOW" ; "8205"; "6"; "0"; "N/A"; "1"; "1"; "0"; "27"; "0";"16"
"28";"TILE_ICE_FRAGILE" ; "3282"; "1"; "0"; "N/A"; "1"; "0"; "0"; "28"; "0";"16" "28";"TILE_ICE_FRAGILE" ; "3282"; "1"; "0"; "N/A"; "1"; "0"; "0"; "28"; "0";"16"
"29";"TILE_ICE_NATURAL" ; "6564"; "25"; "0"; "N/A"; "1"; "1"; "0"; "29"; "0"; "8" "29";"TILE_ICE_NATURAL" ; "6564"; "25"; "0"; "N/A"; "1"; "1"; "0"; "29"; "0"; "8"
"30";"TILE_ICE_CLEAR_MAGICAL" ; "8205"; "25"; "0"; "N/A"; "1"; "1";"14949"; "30"; "0"; "8" "30";"TILE_ICE_CLEAR_MAGICAL" ; "8205"; "25"; "0"; "N/A"; "1"; "1"; "5009"; "30"; "0"; "8"
# see scandinavian name set female of this tile id! # see scandinavian name set female of this tile id!
"31";"TILE_PLATFORM_STONE" ; "0"; "0"; "0"; "N/A"; "0"; "0"; "0"; "31"; "0";"16" "31";"TILE_PLATFORM_STONE" ; "0"; "0"; "0"; "N/A"; "0"; "0"; "0"; "31"; "0";"16"
"32";"TILE_PLATFORM_WOODEN" ; "0"; "0"; "0"; "N/A"; "0"; "0"; "0"; "32"; "0";"16" "32";"TILE_PLATFORM_WOODEN" ; "0"; "0"; "0"; "N/A"; "0"; "0"; "0"; "32"; "0";"16"
Can't render this file because it contains an unexpected character in line 1 and column 12.

View File

@@ -1,22 +0,0 @@
{
"0": {
"name": "TILE_AIR",
"opacity": 0,
"strength": 0,
"isFluid": 0,
"fluidViscocity": 0,
"drop": "__null",
"isSolid": 0,
"isAlsoWall": 0
},
"1": {
"name": "TILE_STONE",
"opacity": 8,
"strength": 25,
"isFluid": 0,
"fluidViscocity": 0,
"drop": "item.stone",
"isSolid": 0,
"isAlsoWall": 0
}
}

View File

@@ -1,9 +1,12 @@
package com.Torvald.Terrarum.TileStat; package com.Torvald.Terrarum.TileStat;
import com.Torvald.Terrarum.Game; import com.Torvald.Terrarum.Actors.Player;
import com.Torvald.Terrarum.GameMap.GameMap;
import com.Torvald.Terrarum.GameMap.MapLayer; import com.Torvald.Terrarum.GameMap.MapLayer;
import com.Torvald.Terrarum.MapDrawer.MapCamera; import com.Torvald.Terrarum.MapDrawer.MapCamera;
import com.Torvald.Terrarum.MapDrawer.MapDrawer;
import com.Torvald.Terrarum.Terrarum; import com.Torvald.Terrarum.Terrarum;
import com.jme3.math.FastMath;
import java.util.Arrays; import java.util.Arrays;
@@ -14,24 +17,58 @@ public class TileStat {
private static short[] tilestat = new short[MapLayer.TILES_SUPPORTED]; private static short[] tilestat = new short[MapLayer.TILES_SUPPORTED];
private static final int TSIZE = MapDrawer.TILE_SIZE;
/**
* Update tile stats from tiles on screen
*/
public static void update() { public static void update() {
Arrays.fill(tilestat, (short) 0); Arrays.fill(tilestat, (short) 0);
int for_x_start = MapCamera.getRenderStartX(); // Get stats on no-zoomed screen area. In other words, will behave as if screen zoom were 1.0
int for_y_start = MapCamera.getRenderStartY(); // no matter how the screen is zoomed.
int for_x_end = MapCamera.getRenderEndX(); GameMap map = Terrarum.game.map;
int for_y_end = MapCamera.getRenderEndY(); Player player = Terrarum.game.getPlayer();
float zoom = Terrarum.game.screenZoom;
int renderWidth = FastMath.ceil(Terrarum.WIDTH);
int renderHeight = FastMath.ceil(Terrarum.HEIGHT);
int noZoomCameraX = MapCamera.clamp(
Math.round(player.getHitbox().getPointedX() - (renderWidth / 2))
, map.width * TSIZE - renderWidth
);
int noZoomCameraY = MapCamera.clamp(
Math.round(player.getHitbox().getPointedY() - (renderHeight / 2))
, map.height * TSIZE - renderHeight
);
int for_x_start = MapCamera.div16(noZoomCameraX);
int for_y_start = MapCamera.div16(noZoomCameraY);
int for_y_end = MapCamera.clampHTile(for_y_start + MapCamera.div16(renderHeight) + 2);
int for_x_end = MapCamera.clampWTile(for_x_start + MapCamera.div16(renderWidth) + 2);
for (int y = for_y_start; y < for_y_end; y++) { for (int y = for_y_start; y < for_y_end; y++) {
for (int x = for_x_start; x < for_x_end; x++) { for (int x = for_x_start; x < for_x_end; x++) {
int tileWall = Terrarum.game.map.getTileFromWall(x, y); int tileWall = map.getTileFromWall(x, y);
int tileTerrain = Terrarum.game.map.getTileFromTerrain(x, y); int tileTerrain = map.getTileFromTerrain(x, y);
tilestat[tileWall] += 1; tilestat[tileWall] += 1;
tilestat[tileTerrain] += 1; tilestat[tileTerrain] += 1;
} }
} }
} }
public static int getCount(byte... tile) {
int sum = 0;
for (int i = 0; i < tile.length; i++) {
int newArgs = Byte.toUnsignedInt(tile[i]);
sum += Short.toUnsignedInt(tilestat[ newArgs ]);
}
return sum;
}
public static int getCount(int... tile) { public static int getCount(int... tile) {
int sum = 0; int sum = 0;
for (int i = 0; i < tile.length; i++) { for (int i = 0; i < tile.length; i++) {
@@ -40,4 +77,12 @@ public class TileStat {
return sum; return sum;
} }
/**
*
* @return copy of the stat data
*/
public static short[] getStatCopy() {
return Arrays.copyOf(tilestat, MapLayer.TILES_SUPPORTED);
}
} }

View File

@@ -72,6 +72,7 @@ public class BasicDebugInfoWindow implements UICanvas {
printLine(g, 7, "mass : " + String.valueOf(playerDbg.mass()) + " [kg]"); printLine(g, 7, "mass : " + String.valueOf(playerDbg.mass()) + " [kg]");
String lightVal; String lightVal;
String mtX = String.valueOf(mouseTileX), mtY = String.valueOf(mouseTileY);
try { try {
char valRaw = LightmapRenderer.getValueFromMap(mouseTileX, mouseTileY); char valRaw = LightmapRenderer.getValueFromMap(mouseTileX, mouseTileY);
int rawR = LightmapRenderer.getRawR(valRaw); int rawR = LightmapRenderer.getRawR(valRaw);
@@ -84,8 +85,11 @@ public class BasicDebugInfoWindow implements UICanvas {
} }
catch (ArrayIndexOutOfBoundsException e) { catch (ArrayIndexOutOfBoundsException e) {
lightVal = "out of bounds"; lightVal = "out of bounds";
mtX = "---";
mtY = "---";
} }
printLine(g, 8, "light at cursor : " + lightVal); printLine(g, 8, "light at cursor : " + lightVal
);
String tileNo; String tileNo;
try { try {
@@ -94,7 +98,21 @@ public class BasicDebugInfoWindow implements UICanvas {
catch (ArrayIndexOutOfBoundsException e) { catch (ArrayIndexOutOfBoundsException e) {
tileNo = "out of bounds"; tileNo = "out of bounds";
} }
printLine(g, 9, "tile : " + tileNo); printLine(g, 9, "tile : " + tileNo + " (" + mtX + ", " + mtY + ")");
/**
* Second column
*/
String[] collisionFlagKey = {"top", "right", "bottom", "left"};
int collisonFlag = playerDbg.collisionEvent();
printLineColumn(g, 2, 1, "CollisionFlag : "
+ ((collisonFlag == -1) ? "none" : collisionFlagKey[collisonFlag]));
printLineColumn(g, 2, 2, "Env colour temp : " + MapDrawer.getColTemp());
/**
* On screen
*/
// Memory allocation // Memory allocation
long memInUse = Terrarum.game.memInUse; long memInUse = Terrarum.game.memInUse;
@@ -113,20 +131,21 @@ public class BasicDebugInfoWindow implements UICanvas {
); );
// Hitbox // Hitbox
float zoom = Terrarum.game.screenZoom;
g.setColor(new Color(0x007f00)); g.setColor(new Color(0x007f00));
g.drawRect(hitbox.getHitboxStart().getX() g.drawRect(hitbox.getHitboxStart().getX() * zoom
- MapCamera.getCameraX() - MapCamera.getCameraX() * zoom
, hitbox.getHitboxStart().getY() , hitbox.getHitboxStart().getY() * zoom
- MapCamera.getCameraY() - MapCamera.getCameraY() * zoom
, hitbox.getWidth() , hitbox.getWidth() * zoom
, hitbox.getHeight() , hitbox.getHeight() * zoom
); );
// ...and its point // ...and its point
g.fillRect( g.fillRect(
hitbox.getPointedX() - 1 (hitbox.getPointedX() - 1) * zoom
- MapCamera.getCameraX() - MapCamera.getCameraX() * zoom
, hitbox.getPointedY() - 1 , (hitbox.getPointedY() - 1) * zoom
- MapCamera.getCameraY() - MapCamera.getCameraY() * zoom
, 3 , 3
, 3 , 3
); );
@@ -138,19 +157,19 @@ public class BasicDebugInfoWindow implements UICanvas {
// Next hitbox // Next hitbox
g.setColor(Color.blue); g.setColor(Color.blue);
g.drawRect(nextHitbox.getHitboxStart().getX() g.drawRect(nextHitbox.getHitboxStart().getX() * zoom
- MapCamera.getCameraX() - MapCamera.getCameraX() * zoom
, nextHitbox.getHitboxStart().getY() , nextHitbox.getHitboxStart().getY() * zoom
- MapCamera.getCameraY() - MapCamera.getCameraY() * zoom
, nextHitbox.getWidth() , nextHitbox.getWidth() * zoom
, nextHitbox.getHeight() , nextHitbox.getHeight() * zoom
); );
// ...and its point // ...and its point
g.fillRect( g.fillRect(
nextHitbox.getPointedX() - 1 (nextHitbox.getPointedX() - 1) * zoom
- MapCamera.getCameraX() - MapCamera.getCameraX() * zoom
, nextHitbox.getPointedY() - 1 , (nextHitbox.getPointedY() - 1) * zoom
- MapCamera.getCameraY() - MapCamera.getCameraY() * zoom
, 3 , 3
, 3 , 3
); );
@@ -165,10 +184,18 @@ public class BasicDebugInfoWindow implements UICanvas {
g.drawString(s, 20, line(l)); g.drawString(s, 20, line(l));
} }
private static void printLineColumn(Graphics g, int col, int row, String s) {
g.drawString(s, 20 + column(col), line(row));
}
private static int line(int i) { private static int line(int i) {
return i * 20; return i * 20;
} }
private static int column(int i) {
return (250 * (i - 1));
}
@Override @Override
public void update(GameContainer gc, int delta_t) { public void update(GameContainer gc, int delta_t) {

View File

@@ -27,5 +27,5 @@ def intFromCol(r, g, b):
def colFromNum(raw): def colFromNum(raw):
return getR40(raw), getG40(raw), getB40(raw) return getR40(raw), getG40(raw), getB40(raw)
print(intFromCol(9,13,29)) print(colFromNum(9979))
print(colFromNum(31399)) print(intFromCol(3,5,9))