diff --git a/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontBase.class b/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontBase.class index cfdf4620d..3acd7d278 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontBase.class and b/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontBase.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontWhite.class b/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontWhite.class index ec45ca5bf..53ae2142e 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontWhite.class and b/out/production/Terrarum_renewed/com/Torvald/ImageFont/GameFontWhite.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Rand/FudgeDice.class b/out/production/Terrarum_renewed/com/Torvald/Rand/FudgeDice.class index 763f0d282..efe4d380a 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Rand/FudgeDice.class and b/out/production/Terrarum_renewed/com/Torvald/Rand/FudgeDice.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/ActorWithBody.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/ActorWithBody.class index 2d032a189..c930a4e61 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/ActorWithBody.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/ActorWithBody.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/CreatureBuildFactory.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/CreatureBuildFactory.class index cd002dbd0..ee8ea06e2 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/CreatureBuildFactory.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/CreatureBuildFactory.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/Hitbox.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/Hitbox.class index 7777e3c25..f760d47bd 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/Hitbox.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/Hitbox.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/PBFSigrid.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/PBFSigrid.class index a7bfba223..162e0f092 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/PBFSigrid.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/PBFSigrid.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/Player.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/Player.class index ba2f07e0f..f838fd45b 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/Player.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/Player.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/PlayerDebugger.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/PlayerDebugger.class index 720c76c88..46e4708d8 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/PlayerDebugger.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Actors/PlayerDebugger.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CommandDict.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CommandDict.class index 2c01dfa63..f44024978 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CommandDict.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CommandDict.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CommandInput.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CommandInput.class index a11178d58..6f7b9d05b 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CommandInput.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CommandInput.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CommandInterpreter.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CommandInterpreter.class index 7df8873a4..efd9d904c 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CommandInterpreter.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/CommandInterpreter.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/GetAV.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/GetAV.class index 3ef16754a..c27084b51 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/GetAV.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/GetAV.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/SetAV.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/SetAV.class index 51d08e613..b40a54f84 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/SetAV.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/ConsoleCommand/SetAV.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Game.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Game.class index 69ed05556..8caf94adf 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Game.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Game.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameControl/GameController.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameControl/GameController.class index c933baa98..06434d808 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameControl/GameController.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/GameControl/GameController.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/KVHashtable.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/KVHashtable.class index a05f302e1..8754597b3 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/KVHashtable.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/KVHashtable.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/LangPack/Lang$1.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/LangPack/Lang$1.class index db03cad8f..06b13916a 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/LangPack/Lang$1.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/LangPack/Lang$1.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/LangPack/Lang.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/LangPack/Lang.class index 2383c553e..5426c4cd8 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/LangPack/Lang.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/LangPack/Lang.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapCamera.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapCamera.class index 559cc3705..707e2a411 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapCamera.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapCamera.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapDrawer.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapDrawer.class index 63bfce6ef..967ac2940 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapDrawer.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/MapDrawer/MapDrawer.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Terrarum.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Terrarum.class index 1b0d6c81c..4141b89a2 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/Terrarum.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/Terrarum.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TilePropCodex.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TilePropCodex.class index b8fe43e4b..e075da801 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TilePropCodex.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/TilePropCodex.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.csv b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.csv index f0a04671c..d13d28246 100644 --- a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.csv +++ b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.csv @@ -32,7 +32,7 @@ "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" "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! "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" diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.json b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.json deleted file mode 100644 index 7bf52ea2d..000000000 --- a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileProperties/propdata.json +++ /dev/null @@ -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 - } -} \ No newline at end of file diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileStat/TileStat.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileStat/TileStat.class index 8cf40c920..f9bd170b4 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileStat/TileStat.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/TileStat/TileStat.class differ diff --git a/out/production/Terrarum_renewed/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.class b/out/production/Terrarum_renewed/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.class index f4c1d8745..16afe0bf3 100644 Binary files a/out/production/Terrarum_renewed/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.class and b/out/production/Terrarum_renewed/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.class differ diff --git a/res/books/hangul_test.txt b/res/books/hangul_test.txt index 28974fdd0..59a13a021 100644 --- a/res/books/hangul_test.txt +++ b/res/books/hangul_test.txt @@ -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 -오빤 강남스타일 +싸구려 커피를 마신다 +미지근해 적잖이 속이 쓰려온다 +눅눅한 비닐장판에 발바닥이 +쩍하고 달라 붙었다가 떨어진다 diff --git a/res/graphics/black_body_col_1000_40000_K.png b/res/graphics/black_body_col_1000_40000_K.png index 0b0071c40..9acea64da 100644 Binary files a/res/graphics/black_body_col_1000_40000_K.png and b/res/graphics/black_body_col_1000_40000_K.png differ diff --git a/res/graphics/col12spectrum.png b/res/graphics/col12spectrum.png new file mode 100644 index 000000000..91d8d22a2 Binary files /dev/null and b/res/graphics/col12spectrum.png differ diff --git a/res/graphics/col216spectrum.png b/res/graphics/col216spectrum.png new file mode 100644 index 000000000..7ee0c75a3 Binary files /dev/null and b/res/graphics/col216spectrum.png differ diff --git a/res/graphics/colourkey216.png b/res/graphics/colourkey216.png new file mode 100644 index 000000000..18cfa8e09 Binary files /dev/null and b/res/graphics/colourkey216.png differ diff --git a/res/graphics/environment_color_overlay.png b/res/graphics/environment_color_overlay.png deleted file mode 100644 index a79f39f49..000000000 Binary files a/res/graphics/environment_color_overlay.png and /dev/null differ diff --git a/res/graphics/fonts/unipunct.png b/res/graphics/fonts/unipunct.png new file mode 100644 index 000000000..1eeae384c Binary files /dev/null and b/res/graphics/fonts/unipunct.png differ diff --git a/res/graphics/sprites/test_player.png b/res/graphics/sprites/test_player.png index 5e45254ad..ab0901806 100644 Binary files a/res/graphics/sprites/test_player.png and b/res/graphics/sprites/test_player.png differ diff --git a/res/graphics/terrain/terrain.png b/res/graphics/terrain/terrain.png index f61666f90..7c1625148 100644 Binary files a/res/graphics/terrain/terrain.png and b/res/graphics/terrain/terrain.png differ diff --git a/res/graphics/terrain/terrain12.raw b/res/graphics/terrain/terrain12.raw new file mode 100644 index 000000000..467da8ce5 Binary files /dev/null and b/res/graphics/terrain/terrain12.raw differ diff --git a/res/graphics/terrain/terrain24.png b/res/graphics/terrain/terrain24.png deleted file mode 100644 index aa43c11c4..000000000 Binary files a/res/graphics/terrain/terrain24.png and /dev/null differ diff --git a/res/locales/devmsg.csv b/res/locales/devmsg.csv index ee5bf473a..027d00caf 100644 --- a/res/locales/devmsg.csv +++ b/res/locales/devmsg.csv @@ -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_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_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";"%1$sM af %2$s" -"DEV_COLOUR_LEGEND_GREEN";;" GREEN";" VERT";;;;;;;;;;;;;;;"緑";;;"녹";;;;;;;" みどり" -"DEV_COLOUR_LEGEND_BLUE";;" BLUE";" BLEU";;;;;;;;;;;;;;;"青";;;"청";;;;;;;"  あお" -"DEV_COLOUR_LEGEND_ORANGE";;"ORANGE";"ORANGE";;;;;;;;;;;;;;;"黄";;;"황";;;;;;;"オレンジ" -"DEV_COLOUR_LEGEND_RED";;" RED";" ROUGE";;;;;;;;;;;;;;;"赤";;;"적";;;;;;;"  あか" +"DEV_COLOUR_LEGEND_GREEN";;" GREEN";" VERT";;;;;;;;;;;;;;;"緑";;;"녹";;;;;;;" みどり";"grænn" +"DEV_COLOUR_LEGEND_BLUE";;" BLUE";" BLEU";;;;;;;;;;;;;;;"青";;;"청";;;;;;;"  あお";"blár" +"DEV_COLOUR_LEGEND_ORANGE";;"ORANGE";"ORANGE";;;;;;;;;;;;;;;"黄";;;"황";;;;;;;"オレンジ";"rauðugulur" +"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_AVAILABLE_COMMANDS";;"Available commends:";"Commandes disponibles :";;;;;;;;;;;;;;;"命令語の目録:";;;"명령어 목록:";;;;;;;"めいれいごの もくろく:" -"DEV_MESSAGE_CONSOLE_COMMAND_UNKNOWN";;"'%1$s': Unknown command";"« %1$s » : Commande inconnue";;;;;;;;;;;;;;;"「%1$s」: 不明な命令語";;;"'%1$s': 알 수 없는 명령어";;;;;;;"「%1$s」: ふめいな めいれいご" \ No newline at end of file +"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 :";;;;;;;;;;;;;;;"命令語の目録:";;;"명령어 목록:";;;;;;;"めいれいごの もくろく:";"Listi skipana :" +"DEV_MESSAGE_CONSOLE_COMMAND_UNKNOWN";;"“%1$s”: Unknown command";"« %1$s » : Commande inconnue";;;;;;;;;;;;;;;"「%1$s」: 不明な命令語";;;"‘%1$s’: 알 수 없는 명령어";;;;;;;"「%1$s」: ふめいな めいれいご";"„%1$s“ : óþekkt skipunin" \ No newline at end of file diff --git a/res/locales/langprop.csv b/res/locales/langprop.csv index d922c22b3..a8affef36 100644 --- a/res/locales/langprop.csv +++ b/res/locales/langprop.csv @@ -1,2 +1,3 @@ -"STRING_ID";"GLYPH_TAG";"alphabet";"hangul";"jpkana";"cyrillic";"zhsimp";"zhtrad" -"nameset_suffix";;"alph";"hangul";"kana";"cyril";"zhsimp";"zhtrad" \ No newline at end of file +"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_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" diff --git a/res/locales/nameset_russian_f.csv b/res/locales/nameset_russian_f.csv new file mode 100644 index 000000000..657442dbc --- /dev/null +++ b/res/locales/nameset_russian_f.csv @@ -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"; \ No newline at end of file diff --git a/res/locales/nameset_russian_m.csv b/res/locales/nameset_russian_m.csv new file mode 100644 index 000000000..a8b065d92 --- /dev/null +++ b/res/locales/nameset_russian_m.csv @@ -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"; \ No newline at end of file diff --git a/res/locales/nameset_scandinavian_f.csv b/res/locales/nameset_scandinavian_f.csv new file mode 100644 index 000000000..3e05f5973 --- /dev/null +++ b/res/locales/nameset_scandinavian_f.csv @@ -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";"일바"; \ No newline at end of file diff --git a/res/locales/nameset_scandinavian_m.csv b/res/locales/nameset_scandinavian_m.csv new file mode 100644 index 000000000..a02e7faac --- /dev/null +++ b/res/locales/nameset_scandinavian_m.csv @@ -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";"빈센트"; \ No newline at end of file diff --git a/res/locales/polyglot.csv b/res/locales/polyglot.csv index c4eea120d..aa04afc53 100644 --- a/res/locales/polyglot.csv +++ b/res/locales/polyglot.csv @@ -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_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" "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_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_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_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";"เอเลี่ยน";"Извънземно";"חייזר" @@ -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_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_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_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_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_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_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" @@ -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_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_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_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_BOMB";"[Noun]";"Bomb";"Bombe";"Bomba";"Bombe";"Bomba";"Bomba";"Bomba";"Бомба";"Βόμβα";"Bomba";"Bombe";"Bombe";"Bomb";"Bom";"Bomba";"Pommi";"爆弾";"炸弹";"炸彈";"폭탄";"Bomba";"Bomba";"Bombă";"ระเบิด";"Бомба";"פצצה" -"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_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_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_CARD";"[Noun]";"Card";"Carte";"Carta";"Karte";"Carta";"Carta";"Carta";"Карта";"Κάρτα";"Kart";"Kort";"Kort";"Kort";"Kaart";"Karta";"Kortti";"カード";"卡片";"卡片";"카드";"Karta";"Kártya";"Carte";"การ์ด";"Карта";"קלף" -"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_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_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_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_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_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_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_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_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_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ă";"ลูกธนู";"Стрела";"חץ";"や";"Ö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";"ลูกธนู";"Стрели";"חיצים";"や";"Örvar" +"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";"หนังสือ";"Книга";"ספר";"ほん";"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";"รองเท้าบูท";"Ботуши";"מגפיים";"くつ";"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";"ธนู";"Лък";"קשת";"ゆみ";"Bógur" +"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";"การ์ด";"Карти";"קלפים";"カード";"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";"หีบสมบัติ";"Ковчеже";"תיבה";"はこ";"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";"เวทย์มนต์";"Магически";"קסום";"まほうの";"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";"เก่า";"Ръждясал";"חלוד";"さびた";"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";"มีด";"Кинжал";"פיגיון";"たんとう";"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";"ตาย";"Зар";"קוביה";"サイコロ";"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";"ลูกเต๋า";"Зарове";"קוביות";"サイコロ";"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";"ประตู";"Врата";"דלת";"とびら";"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_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_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";"แปลภาษา";"Превод";"תרגום" "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_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_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_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.";"เกิดความผิดพลาดบางประการ";"Грешка в изпълнението.";"ארעה טעות.";"エラーが はっせい しました。";"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.";"ชื่อไม่ถูกต้อง";"Невалидно име.";"שם לא נכון";"むこうな なまえです。";"Ó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_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.";"ผู้เล่นอื่นหลุดการเชื่อมต่อ";"Изгубена връзка с играч.";"השחקן התנתק מהרשת." @@ -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_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_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_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";"ตา";"Око";"עין" diff --git a/res/locales/russian-alph.name b/res/locales/russian-alph.name deleted file mode 100755 index 25654f053..000000000 --- a/res/locales/russian-alph.name +++ /dev/null @@ -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 \ No newline at end of file diff --git a/res/locales/scandinavian-alph.name b/res/locales/scandinavian-alph.name deleted file mode 100755 index 3635cdda8..000000000 --- a/res/locales/scandinavian-alph.name +++ /dev/null @@ -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 diff --git a/res/locales/scandinavian-hangul.name b/res/locales/scandinavian-hangul.name deleted file mode 100755 index f21a3c4c4..000000000 --- a/res/locales/scandinavian-hangul.name +++ /dev/null @@ -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=일바 diff --git a/res/raw/CreatureHuman.json b/res/raw/CreatureHuman.json index 5f9d9af9c..ae349d0cf 100644 --- a/res/raw/CreatureHuman.json +++ b/res/raw/CreatureHuman.json @@ -7,7 +7,7 @@ "strength" : 1000, "strengthvariable" : [100,100,100,100,100,100,100], - "accel" : 0.2, + "accel" : 0.32, "speed" : 3.0, "speedvariable" : [100,100,100,100,100,100,100], @@ -18,15 +18,13 @@ "scale" : 1, "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], "encumbrance" : 1000, "basedefence" : "work in progress", "toolsize" : 15, + "intelligent" : true } \ No newline at end of file diff --git a/res/raw/Creature_raw_doc.txt b/res/raw/Creature_raw_doc.txt new file mode 100644 index 000000000..b112e5e09 --- /dev/null +++ b/res/raw/Creature_raw_doc.txt @@ -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. diff --git a/res/raw/FactionGenericPlayer.json b/res/raw/FactionGenericPlayer.json index 00642bfdf..e08f077d9 100644 --- a/res/raw/FactionGenericPlayer.json +++ b/res/raw/FactionGenericPlayer.json @@ -2,7 +2,7 @@ "factionname" : "player", "factionamicable" : ["follower"], - "factionneutral" : [], + "factionneutral" : ["controlledvillager"], "factionhostile" : ["wildlifehostile"], "factionfearful" : ["wildlifeflee"] } \ No newline at end of file diff --git a/res/raw/FactionWildHamletTemplate.json b/res/raw/FactionWildHamletTemplate.json new file mode 100644 index 000000000..c6c3a1410 --- /dev/null +++ b/res/raw/FactionWildHamletTemplate.json @@ -0,0 +1,8 @@ +{ + "factionname" : "wildhamlet_template", + + "factionamicable" : [], + "factionneutral" : ["player", "thisvillager", "thiscontroller"], + "factionhostile" : [], + "factionfearful" : [] +} \ No newline at end of file diff --git a/res/raw/Faction_doc.txt b/res/raw/Faction_doc.txt index 43c3945b6..6a98a037d 100644 --- a/res/raw/Faction_doc.txt +++ b/res/raw/Faction_doc.txt @@ -1,3 +1,5 @@ +Faction documentation + { "factionname" : "player", @@ -10,12 +12,12 @@ factionname : Identifier of the faction data 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. 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 - not make any trade with them. + barter with them. Unassigned faction will be treated like neutral, but players + cannot barter with them. factionhostile : Assigned faction will attack players on the sight. e.g. 'wildlifehostile' diff --git a/res/raw/ReligionSphereRelations.csv b/res/raw/ReligionSphereRelations.csv index de3f22dbe..d20f04cd6 100644 --- a/res/raw/ReligionSphereRelations.csv +++ b/res/raw/ReligionSphereRelations.csv @@ -1,17 +1,17 @@ # 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!!) # war: WAAAGH!! # randomness: All hail the Random Number God! # 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" -"strength" ; "1"; "1"; "-1"; "0"; "0"; "-1" -"harmony" ; "0"; "1"; "-1"; "-1"; "0"; "0" -"war" ; "-2"; "-2"; "1"; "-2"; "-2"; "-2" -"randomness"; "0"; "0"; "0"; "1"; "0"; "0" +"strength" ; "1"; "1"; "0"; "0"; "0"; "0"; "0" +"harmony" ; "0"; "1"; "-1"; "0"; "0"; "0"; "0" +"war" ; "-2"; "-2"; "1"; "-2"; "-2"; "-2"; "0" +"randomness"; "0"; "0"; "0"; "1"; "0"; "0"; "0" "wealth" ; -"brute" ; +"brute" ; "0"; "0"; "-1"; "0"; "0"; "-1"; "0" "helix" ; diff --git a/src/com/Torvald/ImageFont/GameFontBase.java b/src/com/Torvald/ImageFont/GameFontBase.java index 9cbf2b0af..72fc0a157 100644 --- a/src/com/Torvald/ImageFont/GameFontBase.java +++ b/src/com/Torvald/ImageFont/GameFontBase.java @@ -21,6 +21,7 @@ public class GameFontBase implements Font { static SpriteSheet cyrilic; static SpriteSheet cyrilicEF; static SpriteSheet fullwidthForms; + static SpriteSheet uniPunct; static final int JUNG_COUNT = 21; 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_EF = 10; static final int SHEET_FW_UNI = 11; + static final int SHEET_UNI_PUNCT = 12; static SpriteSheet[] sheetKey; static final Character[] asciiEFList = { @@ -139,9 +141,15 @@ public class GameFontBase implements Font { } 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) { return (Arrays.asList(asciiEFList).indexOf(c) % 16); } @@ -214,6 +222,14 @@ public class GameFontBase implements Font { return (c - 0xFF00) / 16; } + private int uniPunctIndexX(char c) { + return (c - 0x2000) % 16; + } + + private int uniPunctIndexY(char c) { + return (c - 0x2000) / 16; + } + @Override public int getWidth(String s) { return getWidthSubstr(s, s.length()); @@ -269,12 +285,7 @@ public class GameFontBase implements Font { } @Override - public void drawString(float v, float v1, String s) { - - } - - @Override - public void drawString(float x, float y, String s, Color color) { + public void drawString(float x, float y, String s) { // hangul fonts first hangulSheet.startUse(); for (int i = 0; i < s.length(); i++) { @@ -368,6 +379,10 @@ public class GameFontBase implements Font { sheetX = fullwidthUniIndexX(ch); sheetY = fullwidthUniIndexY(ch); break; + case SHEET_UNI_PUNCT: + sheetX = uniPunctIndexX(ch); + sheetY = uniPunctIndexY(ch); + break; default: sheetX = ch % 16; sheetY = ch / 16; @@ -378,11 +393,11 @@ public class GameFontBase implements Font { int glyphW = getWidth("" + ch); sheetKey[prevInstance].renderInUse( Math.round(x + getWidthSubstr(s, i + 1) - glyphW) - // Interchar: pull punct right next to hangul to the left - + ((i > 0 && isHangul(s.charAt(i - 1))) ? -3 : 0) + // Interchar: pull punct right next to hangul to the left + + ((i > 0 && isHangul(s.charAt(i - 1))) ? -3 : 0) , Math.round(y) - + ((prevInstance == SHEET_CJK_PUNCT) ? -1 : - (prevInstance == SHEET_FW_UNI) ? (H - H_HANGUL) / 2 : 0) + + ((prevInstance == SHEET_CJK_PUNCT) ? -1 : + (prevInstance == SHEET_FW_UNI) ? (H - H_HANGUL) / 2 : 0) , sheetX , sheetY ); @@ -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) { // EFs 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 (isExtA(c)) return SHEET_EXTA_EM; else if (isCyrilic(c)) return SHEET_CYRILIC_EM; + else if (isUniPunct(c)) return SHEET_UNI_PUNCT; // fixed width punctuations else if (isCJKPunct(c)) return SHEET_CJK_PUNCT; else if (isFullwidthUni(c)) return SHEET_FW_UNI; @@ -423,9 +444,22 @@ public class GameFontBase implements Font { 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 - 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 { diff --git a/src/com/Torvald/ImageFont/GameFontWhite.java b/src/com/Torvald/ImageFont/GameFontWhite.java index afe89c218..4ae612cdb 100644 --- a/src/com/Torvald/ImageFont/GameFontWhite.java +++ b/src/com/Torvald/ImageFont/GameFontWhite.java @@ -62,6 +62,10 @@ public class GameFontWhite extends GameFontBase { "./res/graphics/fonts/fullwidth_forms.png" , W_UNIHAN, H_UNIHAN ); + uniPunct = new SpriteSheet( + "./res/graphics/fonts/unipunct.png" + , W_LATIN_WIDE, H + ); SpriteSheet[] shk = { asciiSheet @@ -76,6 +80,7 @@ public class GameFontWhite extends GameFontBase { , cyrilic , cyrilicEF , fullwidthForms + , uniPunct }; sheetKey = shk; } diff --git a/src/com/Torvald/Rand/FudgeDice.java b/src/com/Torvald/Rand/FudgeDice.java index 12a3596cf..c45fe477b 100644 --- a/src/com/Torvald/Rand/FudgeDice.java +++ b/src/com/Torvald/Rand/FudgeDice.java @@ -33,6 +33,22 @@ public class FudgeDice { 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} */ diff --git a/src/com/Torvald/Terrarum/Actors/ActorWithBody.java b/src/com/Torvald/Terrarum/Actors/ActorWithBody.java index 62840be23..cc6e7fc0f 100644 --- a/src/com/Torvald/Terrarum/Actors/ActorWithBody.java +++ b/src/com/Torvald/Terrarum/Actors/ActorWithBody.java @@ -3,6 +3,7 @@ package com.Torvald.Terrarum.Actors; import com.Torvald.Rand.HQRNG; import com.Torvald.Terrarum.MapDrawer.MapDrawer; import com.Torvald.Terrarum.Terrarum; +import com.Torvald.Terrarum.TileProperties.TilePropCodex; import com.Torvald.spriteAnimation.SpriteAnimation; import com.jme3.math.FastMath; import com.sun.istack.internal.NotNull; @@ -58,7 +59,7 @@ public class ActorWithBody implements Actor, Visible, Glowing { private volatile float mass = 1f; 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. @@ -86,7 +87,7 @@ public class ActorWithBody implements Actor, Visible, Glowing { private final int UD_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 @@ -95,11 +96,24 @@ public class ActorWithBody implements Actor, Visible, Glowing { 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 */ public ActorWithBody() { - referenceID = new HQRNG(0x7E22A211AAL).nextLong(); + referenceID = new HQRNG().nextLong(); actorValue = new ActorValue(); } @@ -152,8 +166,9 @@ public class ActorWithBody implements Actor, Visible, Glowing { baseSpriteHeight = sprite.getHeight(); baseSpriteWidth = sprite.getWidth(); gravitation = Terrarum.game.map.getGravitation(); + AUTO_CLIMB_RATE = (int) Math.min(TSIZE / 8 * FastMath.sqrt(scale), TSIZE); - if (!playerNoClip()) { + if (!isPlayerNoClip()) { applyGravitation(); } @@ -162,16 +177,21 @@ public class ActorWithBody implements Actor, Visible, Glowing { if (veloY > VELO_HARD_LIMIT) veloY = VELO_HARD_LIMIT; // Set 'next' positions to fiddle with - updateNextHitboxY(); - updateVerticalPos(); - clampNextHitbox(); - updateHitboxY(); + // updateNextHitboxYFromVelo(); + // updateNextHitboxXFromVelo(); + updateNextHitboxFromVelo(); - updateNextHitboxX(); - updateHorizontalPos(); - clampNextHitbox(); + + // do horizontal collision detection first! + // updateHorizontalPos(); updateHitboxX(); + + updateVerticalPos(); + updateHitboxY(); + + + clampNextHitbox(); clampHitbox(); } } @@ -182,8 +202,7 @@ public class ActorWithBody implements Actor, Visible, Glowing { * 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. */ - // FIXME abnormal jump behaviour if mass == 1, same thing happens if mass == 0 but zero mass - // is invalid anyway. + // FIXME abnormal jump behaviour if mass == 1, same thing happens if mass == 0 (but zero mass is invalid anyway). private void applyGravitation() { if (!isGrounded()) { /** @@ -205,84 +224,101 @@ public class ActorWithBody implements Actor, Visible, Glowing { } private void updateVerticalPos() { - if (!playerNoClip()) { - if (collidedBottomAndAdjusted()) { - grounded = true; - veloY = 0; + if (!isPlayerNoClip()) { + // check downward + if (veloY >= 0) { // use TERNARY for L/R! + // order of the if-elseif chain is IMPORTANT + if (isColliding(CONTACT_AREA_BOTTOM)) { + adjustHitBottom(); + veloY = 0; + grounded = true; + } + else if (isColliding(CONTACT_AREA_BOTTOM, 0, 1)) { + veloY = 0; + grounded = true; + } + else { + grounded = false; + } } - else { + else if (veloY < 0) { grounded = false; - } - if (collidedTopAndAdjusted()) { - veloY = 0; + // order of the if-elseif chain is IMPORTANT + if (isColliding(CONTACT_AREA_TOP)) { + adjustHitTop(); + veloY = 0; + } + else if (isColliding(CONTACT_AREA_TOP, 0, -1)) { + veloY = 0; // for reversed gravity + } + else { + } } } } - boolean collidedBottomAndAdjusted() { - if (getContactArea(CONTACT_AREA_BOTTOM, 0, 1) == 0) { - return false; - } - /** - * seemingly adjusted and one pixel below has 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) - */ - else if (getContactArea(CONTACT_AREA_BOTTOM, 0, 1) > 0 - && getContactArea(CONTACT_AREA_BOTTOM, 0, 0) == 0) { - return true; - } - else { - adjustHitBottom(); - return true; - } + private void adjustHitBottom() { + float newX = nextHitbox.getPointedX(); + // int-ify posY of nextHitbox + nextHitbox.setPositionYFromPoint( FastMath.floor(nextHitbox.getPointedY()) ); + + int newYOff = 0; // always positive + + boolean colliding; + do { + colliding = isColliding(CONTACT_AREA_BOTTOM, 0, -newYOff); + newYOff += 1; + } while (colliding); + + float newY = nextHitbox.getPointedY() - newYOff; + nextHitbox.setPositionFromPoint(newX, newY + 1); } - boolean collidedTopAndAdjusted() { - if (getContactArea(CONTACT_AREA_TOP, 0, -1) == 0) { - return false; - } - /** - * seemingly adjusted and one pixel below has 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) - */ - else if (getContactArea(CONTACT_AREA_TOP, 0, -1) > 0 - && getContactArea(CONTACT_AREA_TOP, 0, 0) == 0) { - return true; - } - else { - adjustHitTop(); - return true; - } + private void adjustHitTop() { // FIXME jump to teleport to ceiling + float newX = nextHitbox.getPointedX(); + // int-ify posY of nextHitbox + nextHitbox.setPositionY( FastMath.floor(nextHitbox.getPosY()) ); + + int newYOff = 0; // always positive + + boolean colliding; + do { + colliding = isColliding(CONTACT_AREA_TOP, 0, newYOff); + newYOff += 1; + } while (colliding); + + float newY = nextHitbox.getPosY() + newYOff; + nextHitbox.setPositionFromPoint(newX, newY - 1); } private void updateHorizontalPos() { - if (!playerNoClip()) { - if (collidedRightAndAdjusted()) { // treat as 'event--collided right' + if (!isPlayerNoClip()) { + resetCollisionEventFlag(); + collidedRightAndAdjusted(); + + if (collisionEvent == EVENT_COLLIDE_RIGHT) { veloX = 0; 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; walledLeft = true; } - else { + + if (collisionEvent != EVENT_COLLIDE_LEFT && collisionEvent != EVENT_COLLIDE_RIGHT) { walledRight = false; walledLeft = false; } } } - boolean collidedRightAndAdjusted() { - if (getContactArea(CONTACT_AREA_RIGHT, 1, 0) == 0) { - return false; + void collidedRightAndAdjusted() { + if (getContactingArea(CONTACT_AREA_RIGHT, 1, 0) == 0) { + resetCollisionEventFlag(); } /** * 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 * (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 - && getContactArea(CONTACT_AREA_RIGHT, 0, 0) == 0) { - return true; + else if (getContactingArea(CONTACT_AREA_RIGHT, 1, 0) > 0 + && getContactingArea(CONTACT_AREA_RIGHT, 0, 0) == 0) { + collisionEvent = EVENT_COLLIDE_RIGHT; } else { adjustHitRight(); - return true; + collisionEvent = EVENT_COLLIDE_RIGHT; } } - boolean collidedLeftAndAdjusted() { - if (getContactArea(CONTACT_AREA_LEFT, -1, 0) == 0) { - return false; + void collidedLeftAndAdjusted() { + if (getContactingArea(CONTACT_AREA_LEFT, -1, 0) == 0) { + resetCollisionEventFlag(); } /** * 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 * (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 - && getContactArea(CONTACT_AREA_LEFT, 0, 0) == 0) { - return true; + else if (getContactingArea(CONTACT_AREA_LEFT, -1, 0) > 0 + && getContactingArea(CONTACT_AREA_LEFT, 0, 0) == 0) { + collisionEvent = EVENT_COLLIDE_LEFT; } else { 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() { 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++) { /** * 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 * 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) { tX = -lim; @@ -424,7 +384,7 @@ public class ActorWithBody implements Actor, Visible, Glowing { private void adjustHitLeft() { 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++) { /** * 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 * 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) { tX = lim; @@ -441,14 +401,26 @@ public class ActorWithBody implements Actor, Visible, Glowing { } //nextHitbox.setPositionYFromPoint(nextHitbox.getPointedX() + tX); nextHitbox.set( - FastMath.floor(nextHitbox.getPosX() + tX) + FastMath.floor(nextHitbox.getPosX() + tX + 1) , nextHitbox.getPosY() , nextHitbox.getWidth() , 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; for (int i = 0 ; i < Math.round((side % 2 == 0) ? nextHitbox.getWidth() : nextHitbox.getHeight()) @@ -484,7 +456,7 @@ public class ActorWithBody implements Actor, Visible, Glowing { } // evaluate - if (Terrarum.game.map.getTileFromTerrain(tileX, tileY) > 0) { + if (TilePropCodex.getProp(Terrarum.game.map.getTileFromTerrain(tileX, tileY)).isSolid()) { contactAreaCounter += 1; } } @@ -492,6 +464,10 @@ public class ActorWithBody implements Actor, Visible, Glowing { return contactAreaCounter; } + private void resetCollisionEventFlag() { + collisionEvent = EVENT_COLLIDE_NONE; + } + private void clampHitbox() { hitbox.setPositionFromPoint( 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 public void drawGlow(GameContainer gc, Graphics g) { 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()); } @@ -744,7 +764,7 @@ public class ActorWithBody implements Actor, Visible, Glowing { this.update = update; } - private int clampMulOfTSize(float v) { - return (Math.round(v) / TSIZE) * TSIZE; + private int quantiseTSize(float v) { + return FastMath.floor(v / TSIZE) * TSIZE; } } diff --git a/src/com/Torvald/Terrarum/Actors/CreatureBuildFactory.java b/src/com/Torvald/Terrarum/Actors/CreatureBuildFactory.java index a491532b7..1595d82a3 100644 --- a/src/com/Torvald/Terrarum/Actors/CreatureBuildFactory.java +++ b/src/com/Torvald/Terrarum/Actors/CreatureBuildFactory.java @@ -76,7 +76,7 @@ public class CreatureBuildFactory { for (String s : elemSet) { float baseValue = jsonObject.get(s).getAsFloat(); // 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 int multiplier = jsonObject.get(s + "variable").getAsJsonArray().get(varSelected).getAsInt(); float realValue = baseValue * multiplier / 100f; @@ -121,7 +121,7 @@ public class CreatureBuildFactory { for (String s : elemSet) { float baseValue = 1f; // 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 int multiplier = jsonObject.get(s).getAsJsonArray().get(varSelected).getAsInt(); float realValue = baseValue * multiplier / 100f; diff --git a/src/com/Torvald/Terrarum/Actors/Hitbox.java b/src/com/Torvald/Terrarum/Actors/Hitbox.java index f13eec777..6729accf4 100644 --- a/src/com/Torvald/Terrarum/Actors/Hitbox.java +++ b/src/com/Torvald/Terrarum/Actors/Hitbox.java @@ -11,17 +11,12 @@ public class Hitbox { private Point2f hitboxEnd; private float width; private float height; - private float pointX; - private float pointY; public Hitbox(float x1, float y1, float width, float height) { hitboxStart = new Point2f(x1, y1); hitboxEnd = new Point2f(x1 + width, y1 + height); this.width = width; this.height = height; - - pointX = x1 + (width / 2); - pointY = y1 + height; } public Point2f getHitboxStart() { @@ -45,7 +40,7 @@ public class Hitbox { * @return pointX */ public float getPointedX() { - return pointX; + return hitboxStart.getX() + (width / 2); } /** @@ -53,7 +48,7 @@ public class Hitbox { * @return pointY */ public float getPointedY() { - return pointY; + return hitboxEnd.getY(); } /** @@ -68,30 +63,45 @@ public class Hitbox { hitboxEnd = new Point2f(x1 + width, y1 + height); this.width = width; this.height = height; + } - pointX = x1 + (width / 2); - pointY = y1 + height; + public void setPosition(float x1, float y1) { + 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) { hitboxStart = new Point2f(x1 - (width / 2), y1 - height); hitboxEnd = new Point2f(hitboxStart.getX() + width, hitboxStart.getY() + height); - pointX = x1; - pointY = y1; } - public void setPositionXFromPoint(float x1) { - float y1 = pointY; - hitboxStart = new Point2f(x1 - (width / 2), y1 - height); - hitboxEnd = new Point2f(hitboxStart.getX() + width, hitboxStart.getY() + height); - pointX = x1; + public void setPositionXFromPoint(float x) { + setPositionFromPoint(x, getPointedY()); } - public void setPositionYFromPoint(float y1) { - float x1 = pointX; - hitboxStart = new Point2f(x1 - (width / 2), y1 - height); - hitboxEnd = new Point2f(hitboxStart.getX() + width, hitboxStart.getY() + height); - pointY = y1; + public void setPositionYFromPoint(float y) { + setPositionFromPoint(getPointedX(), y); + } + + 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() { return hitboxStart.getY(); } + + public float getCenteredX() { + return (hitboxStart.getX() + hitboxEnd.getX()) * 0.5f; + } + + public float getCenteredY() { + return (hitboxStart.getY() + hitboxEnd.getY()) * 0.5f; + } } diff --git a/src/com/Torvald/Terrarum/Actors/PBFSigrid.java b/src/com/Torvald/Terrarum/Actors/PBFSigrid.java index 3eec0c09d..06c1b9781 100644 --- a/src/com/Torvald/Terrarum/Actors/PBFSigrid.java +++ b/src/com/Torvald/Terrarum/Actors/PBFSigrid.java @@ -60,6 +60,8 @@ public class PBFSigrid { p.actorValue.set("intelligent", true); + p.actorValue.set("luminosity", 22819); + p.setHitboxDimension(17, 46, 9, 0); p.inventory = new ActorInventory(0x7FFFFFFF, true); diff --git a/src/com/Torvald/Terrarum/Actors/Player.java b/src/com/Torvald/Terrarum/Actors/Player.java index 54f04d80a..737cf0f3f 100644 --- a/src/com/Torvald/Terrarum/Actors/Player.java +++ b/src/com/Torvald/Terrarum/Actors/Player.java @@ -46,7 +46,7 @@ public class Player extends ActorWithBody implements Controllable, Pocketed, Fac private int prevVMoveKey = -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_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 char LUMINANCE_RGB = 31399; - private HashSet factionSet = new HashSet<>(); + /** * Creates new Player instance with empty elements (sprites, actorvalue, etc.).
* @@ -452,7 +451,8 @@ public class Player extends ActorWithBody implements Controllable, Pocketed, Fac float timedJumpCharge = init - (init / len) * jumpCounter; 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() - jumpAcc @@ -567,11 +567,12 @@ public class Player extends ActorWithBody implements Controllable, Pocketed, Fac @Override public void setLuminance(char RGB) { - LUMINANCE_RGB = RGB; + actorValue.set("luminosity", (int) RGB); } @Override public char getLuminance() { - return LUMINANCE_RGB; + return actorValue.hasKey("luminosity") ? + (char) actorValue.getAsInt("luminosity") : 0; } } diff --git a/src/com/Torvald/Terrarum/Actors/PlayerDebugger.java b/src/com/Torvald/Terrarum/Actors/PlayerDebugger.java index cb91e4270..12c689581 100644 --- a/src/com/Torvald/Terrarum/Actors/PlayerDebugger.java +++ b/src/com/Torvald/Terrarum/Actors/PlayerDebugger.java @@ -22,7 +22,7 @@ public class PlayerDebugger { } } - /* + /** * Delegates for Player instances */ @@ -42,4 +42,5 @@ public class PlayerDebugger { public ActorValue actorValue() { return getPlayer().getActorValue(); } public float mass() { return getPlayer().getMass(); } public boolean noClip() { return getPlayer().isNoClip(); } + public int collisionEvent() { return getPlayer().collisionEvent; } } diff --git a/src/com/Torvald/Terrarum/ConsoleCommand/CommandDict.java b/src/com/Torvald/Terrarum/ConsoleCommand/CommandDict.java index 77d011cb7..41c3bfc52 100644 --- a/src/com/Torvald/Terrarum/ConsoleCommand/CommandDict.java +++ b/src/com/Torvald/Terrarum/ConsoleCommand/CommandDict.java @@ -1,5 +1,7 @@ package com.Torvald.Terrarum.ConsoleCommand; +import com.Torvald.Terrarum.Terrarum; + import java.util.Hashtable; /** @@ -30,6 +32,7 @@ public class CommandDict { dict.put("gsontest", new GsonTest()); dict.put("setgl", new SetGlobalLightLevel()); dict.put("getfaction", new GetFactioning()); + dict.put("auth", Terrarum.game.auth); } public static ConsoleCommand getCommand(String commandName) { diff --git a/src/com/Torvald/Terrarum/ConsoleCommand/CommandInterpreter.java b/src/com/Torvald/Terrarum/ConsoleCommand/CommandInterpreter.java index 686bfa720..adc4febf4 100644 --- a/src/com/Torvald/Terrarum/ConsoleCommand/CommandInterpreter.java +++ b/src/com/Torvald/Terrarum/ConsoleCommand/CommandInterpreter.java @@ -4,6 +4,7 @@ import com.Torvald.Terrarum.LangPack.Lang; import com.Torvald.Terrarum.Terrarum; import java.util.ArrayList; +import java.util.Arrays; import java.util.Formatter; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -13,26 +14,16 @@ import java.util.regex.Pattern; */ public class CommandInterpreter { + private static String[] commandsAvailableWOAuth = {"auth", "qqq", "zoom", "setlocale", "getlocale"}; + public static void execute(String command) { CommandInput[] cmd = parse(command); for (CommandInput single_command : cmd) { ConsoleCommand commandObj = null; try { - if (single_command.getName().equalsIgnoreCase("auth")) { - Terrarum.game.auth.execute(single_command.toStringArray()); - } - 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()); + if (Arrays.asList(commandsAvailableWOAuth).contains(single_command.getName().toLowerCase())) { + commandObj = CommandDict.getCommand(single_command.getName().toLowerCase()); } else { if (Terrarum.game.auth.b()) { @@ -41,20 +32,26 @@ public class CommandInterpreter { ); } else { + System.out.println("ee1"); throw new NullPointerException(); // if not authorised, say "Unknown command" } } } catch (NullPointerException e) { - echoUnknownCmd(single_command.getName()); + } finally { try { - if (commandObj != null) + if (commandObj != null) { commandObj.execute(single_command.toStringArray()); + } + else { + echoUnknownCmd(single_command.getName()); + System.out.println("ee3"); + } } catch (Exception e) { - System.out.println("[CommandInterpreter] "); + System.out.println("[CommandInterpreter] :"); e.printStackTrace(); new Echo().execute(Lang.get("ERROR_GENERIC_TEXT")); } diff --git a/src/com/Torvald/Terrarum/ConsoleCommand/GetAV.java b/src/com/Torvald/Terrarum/ConsoleCommand/GetAV.java index 83f16a0ed..b3630dcf3 100644 --- a/src/com/Torvald/Terrarum/ConsoleCommand/GetAV.java +++ b/src/com/Torvald/Terrarum/ConsoleCommand/GetAV.java @@ -15,30 +15,43 @@ public class GetAV implements ConsoleCommand { public void execute(String[] args) { Echo echo = new Echo(); - if (args.length == 1) { - // print all actorvalue of player - ActorValue av = Terrarum.game.getPlayer().getActorValue(); - Set keyset = av.getKeySet(); + try { + if (args.length == 1) { + // print all actorvalue of player + ActorValue av = Terrarum.game.getPlayer().getActorValue(); + Set keyset = av.getKeySet(); - keyset.forEach( - elem -> echo.execute(elem + " = " + av.get((String)elem)) - ); + keyset.forEach( + elem -> echo.execute(elem + " = " + av.get((String) elem)) + ); - } - else if (args.length != 3 && args.length != 2) { - printUsage(); - } - else if (args.length == 2) { - echo.execute("player." + args[1] + " = " - + Terrarum.game.getPlayer().getActorValue().get(args[1]) - + " (" - + Terrarum.game.getPlayer().getActorValue().get(args[1]).getClass() - .getSimpleName() - + ")" - ); - } - else if (args.length == 3) { + } + else if (args.length != 3 && args.length != 2) { + printUsage(); + } + else if (args.length == 2) { + echo.execute("player." + args[1] + " = " + + Terrarum.game.getPlayer().getActorValue().get(args[1]) + + " (" + + Terrarum.game.getPlayer().getActorValue().get(args[1]).getClass() + .getSimpleName() + + ")" + ); + } + else if (args.length == 3) { + } + } + 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(); + } } } diff --git a/src/com/Torvald/Terrarum/ConsoleCommand/SetAV.java b/src/com/Torvald/Terrarum/ConsoleCommand/SetAV.java index 08af7ff54..e15027f31 100644 --- a/src/com/Torvald/Terrarum/ConsoleCommand/SetAV.java +++ b/src/com/Torvald/Terrarum/ConsoleCommand/SetAV.java @@ -27,17 +27,24 @@ class SetAV implements ConsoleCommand { else if (args.length == 3) { Object val; - try { val = new Float(args[2]); } // try for number + try { + val = new Integer(args[2]); // try for integer + } catch (NumberFormatException e) { - if (args[2].toLowerCase() == "true") { - val = new Boolean(true); + try { + val = new Float(args[2]); // try for float } - else if (args[2].toLowerCase() == "false") { - val = new Boolean(false); - } - else { - val = new String(args[2]); // string if not number + catch (NumberFormatException ee) { + if (args[2].equalsIgnoreCase("true")) { + val = new Boolean(true); + } + else if (args[2].equalsIgnoreCase("false")) { + val = new Boolean(false); + } + else { + val = new String(args[2]); // string if not number + } } } diff --git a/src/com/Torvald/Terrarum/Game.java b/src/com/Torvald/Terrarum/Game.java index c2f1d3834..7f310ad5d 100644 --- a/src/com/Torvald/Terrarum/Game.java +++ b/src/com/Torvald/Terrarum/Game.java @@ -140,11 +140,17 @@ public class Game extends BasicGameState { public void update(GameContainer gc, StateBasedGame sbg, int delta_t) { 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); MapCamera.update(gc, delta_t); - GameController.processInput(gc.getInput()); - actorContainer.forEach(actor -> actor.update(gc, delta_t)); actorContainer.forEach( actor -> { @@ -159,11 +165,7 @@ public class Game extends BasicGameState { uiContainer.forEach(ui -> ui.update(gc, delta_t)); - KeyToggler.update(gc); - //bulletin.update(gc, delta_t); - - TileStat.update(); } private void setAppTitle() { @@ -205,9 +207,10 @@ public class Game extends BasicGameState { MapDrawer.render(gc, g); LightmapRenderer.renderLightMap(); + setBlendModeMul(); + MapDrawer.drawEnvOverlay(g); LightmapRenderer.draw(g); - // MapDrawer.drawEnvOverlay(g); setBlendModeNormal(); uiContainer.forEach(ui -> ui.render(gc, g)); @@ -224,7 +227,7 @@ public class Game extends BasicGameState { int gradMapWidth = GRADIENT_IMAGE.getWidth(); 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[1] = GRADIENT_IMAGE.getColor(phase, 1); diff --git a/src/com/Torvald/Terrarum/GameControl/GameController.java b/src/com/Torvald/Terrarum/GameControl/GameController.java index 53283ac0d..9f9510dcb 100644 --- a/src/com/Torvald/Terrarum/GameControl/GameController.java +++ b/src/com/Torvald/Terrarum/GameControl/GameController.java @@ -5,6 +5,8 @@ import com.Torvald.Terrarum.Actors.Player; import com.Torvald.Terrarum.MapDrawer.MapCamera; import com.Torvald.Terrarum.MapDrawer.MapDrawer; import com.Torvald.Terrarum.Terrarum; +import com.Torvald.Terrarum.TileProperties.TileNameCode; +import com.Torvald.Terrarum.TileProperties.TilePropCodex; import com.Torvald.Terrarum.UserInterface.UIHandler; import org.newdawn.slick.Input; @@ -38,6 +40,30 @@ public class GameController { else { 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) { @@ -77,16 +103,7 @@ public class GameController { } 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) { diff --git a/src/com/Torvald/Terrarum/KVHashtable.java b/src/com/Torvald/Terrarum/KVHashtable.java index 70d82adbc..5f1cb2204 100644 --- a/src/com/Torvald/Terrarum/KVHashtable.java +++ b/src/com/Torvald/Terrarum/KVHashtable.java @@ -36,8 +36,14 @@ public class KVHashtable { return hashtable.get(key.toLowerCase()); } + public int getAsInt(String key) { + return (int) get(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) { @@ -48,6 +54,10 @@ public class KVHashtable { return (boolean) get(key); } + public boolean hasKey(String key) { + return hashtable.containsKey(key); + } + public Set getKeySet() { return hashtable.keySet(); } diff --git a/src/com/Torvald/Terrarum/LangPack/Lang.java b/src/com/Torvald/Terrarum/LangPack/Lang.java index 19f6b5cb7..78a77f54a 100644 --- a/src/com/Torvald/Terrarum/LangPack/Lang.java +++ b/src/com/Torvald/Terrarum/LangPack/Lang.java @@ -29,6 +29,7 @@ public class Lang { private static final String PATH_TO_CSV = "./res/locales/"; 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: 은, 이, ... 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() { @Override 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)) { diff --git a/src/com/Torvald/Terrarum/MapDrawer/MapCamera.java b/src/com/Torvald/Terrarum/MapDrawer/MapCamera.java index 0fa1f9e52..fda1a0d41 100644 --- a/src/com/Torvald/Terrarum/MapDrawer/MapCamera.java +++ b/src/com/Torvald/Terrarum/MapDrawer/MapCamera.java @@ -133,16 +133,16 @@ public class MapCamera { public static void update(GameContainer gc, int delta_t) { 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); // position - (WH / 2) cameraX = clamp( - Math.round(player.getNextHitbox().getPointedX() - (renderWidth / 2)) + Math.round(player.getHitbox().getCenteredX() - (renderWidth / 2)) , map.width * TSIZE - renderWidth ); cameraY = clamp( - Math.round(player.getNextHitbox().getPointedY() - (renderHeight / 2)) + Math.round(player.getHitbox().getCenteredY() - (renderHeight / 2)) , 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; } - private static int mod16(int x) { + public static int mod16(int x) { return x & 0b1111; } - private static int quantise16(int x) { + public static int quantise16(int x) { return (x & 0xFFFF_FFF0); } - private static int clampW(int x) { + public static int clampW(int x) { if (x < 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) { return 0; } @@ -347,7 +347,7 @@ public class MapCamera { } } - private static int clampWTile(int x) { + public static int clampWTile(int x) { if (x < 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) { 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) { return 0; } diff --git a/src/com/Torvald/Terrarum/MapDrawer/MapDrawer.java b/src/com/Torvald/Terrarum/MapDrawer/MapDrawer.java index 3695710b2..8ab842aea 100644 --- a/src/com/Torvald/Terrarum/MapDrawer/MapDrawer.java +++ b/src/com/Torvald/Terrarum/MapDrawer/MapDrawer.java @@ -3,6 +3,9 @@ package com.Torvald.Terrarum.MapDrawer; import com.Torvald.Terrarum.*; import com.Torvald.Terrarum.Game; 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.geom.Rectangle; @@ -11,22 +14,20 @@ import org.newdawn.slick.geom.Rectangle; */ public class MapDrawer { - private static SpriteSheet mapTileMap; - private static SpriteSheet wallTileMap; - 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; - public MapDrawer(GameMap map) throws SlickException { - mapTileMap = new SpriteSheet("./res/graphics/terrain/terrain.png", TILE_SIZE, TILE_SIZE); - wallTileMap = new SpriteSheet("./res/graphics/terrain/wall.png", TILE_SIZE, TILE_SIZE); + private static final int ENV_COLTEMP_LOWEST = 5500; + private static final int ENV_COLTEMP_HIGHEST = 7500; + private static int colTemp; + + public MapDrawer(GameMap map) throws SlickException { new MapCamera(map); + envOverlayColourmap = new Image("./res/graphics/black_body_col_1000_40000_K.png"); + System.gc(); } @@ -37,13 +38,51 @@ public class MapDrawer { } public static void drawEnvOverlay(Graphics g) { - envOverlay.setX(MapCamera.getCameraX() * Terrarum.game.screenZoom); - envOverlay.setY(MapCamera.getCameraY() * Terrarum.game.screenZoom); - envOverlay.setSize(Terrarum.WIDTH * Terrarum.game.screenZoom - , Terrarum.HEIGHT * Terrarum.game.screenZoom + int onscreen_tiles_max = FastMath.ceil(Terrarum.HEIGHT * Terrarum.WIDTH / FastMath.sqr(TILE_SIZE)) + * 2; + float onscreen_tiles_cap = onscreen_tiles_max / 4f; + 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()); } + /** + * + * @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; + } } diff --git a/src/com/Torvald/Terrarum/Terrarum.java b/src/com/Torvald/Terrarum/Terrarum.java index 3afbe09cc..79268719b 100644 --- a/src/com/Torvald/Terrarum/Terrarum.java +++ b/src/com/Torvald/Terrarum/Terrarum.java @@ -46,7 +46,7 @@ public class Terrarum extends StateBasedGame { public static String defaultDir; public static String defaultSaveDir; - public static String gameLocale = "jaJP"; + public static String gameLocale = "isIC"; public static Font gameFontWhite; diff --git a/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java b/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java index ea8c68e1b..4061ef708 100644 --- a/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java +++ b/src/com/Torvald/Terrarum/TileProperties/TilePropCodex.java @@ -51,10 +51,6 @@ public class TilePropCodex { return tileProps[index]; } - public static byte getTileID(String name) { - return 0; - } - private static void setProp(TileProp prop, CSVRecord record) { prop.setName(record.get("name")); diff --git a/src/com/Torvald/Terrarum/TileProperties/propdata.csv b/src/com/Torvald/Terrarum/TileProperties/propdata.csv index f0a04671c..d13d28246 100644 --- a/src/com/Torvald/Terrarum/TileProperties/propdata.csv +++ b/src/com/Torvald/Terrarum/TileProperties/propdata.csv @@ -32,7 +32,7 @@ "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" "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! "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" diff --git a/src/com/Torvald/Terrarum/TileProperties/propdata.json b/src/com/Torvald/Terrarum/TileProperties/propdata.json deleted file mode 100644 index 7bf52ea2d..000000000 --- a/src/com/Torvald/Terrarum/TileProperties/propdata.json +++ /dev/null @@ -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 - } -} \ No newline at end of file diff --git a/src/com/Torvald/Terrarum/TileStat/TileStat.java b/src/com/Torvald/Terrarum/TileStat/TileStat.java index 9d21f45d3..a33904126 100644 --- a/src/com/Torvald/Terrarum/TileStat/TileStat.java +++ b/src/com/Torvald/Terrarum/TileStat/TileStat.java @@ -1,9 +1,12 @@ 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.MapDrawer.MapCamera; +import com.Torvald.Terrarum.MapDrawer.MapDrawer; import com.Torvald.Terrarum.Terrarum; +import com.jme3.math.FastMath; import java.util.Arrays; @@ -14,30 +17,72 @@ public class TileStat { 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() { Arrays.fill(tilestat, (short) 0); - int for_x_start = MapCamera.getRenderStartX(); - int for_y_start = MapCamera.getRenderStartY(); - int for_x_end = MapCamera.getRenderEndX(); - int for_y_end = MapCamera.getRenderEndY(); + // Get stats on no-zoomed screen area. In other words, will behave as if screen zoom were 1.0 + // no matter how the screen is zoomed. + GameMap map = Terrarum.game.map; + 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 x = for_x_start; x < for_x_end; x++) { - int tileWall = Terrarum.game.map.getTileFromWall(x, y); - int tileTerrain = Terrarum.game.map.getTileFromTerrain(x, y); + int tileWall = map.getTileFromWall(x, y); + int tileTerrain = map.getTileFromTerrain(x, y); tilestat[tileWall] += 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) { int sum = 0; for (int i = 0; i < tile.length; i++) { - sum += Short.toUnsignedInt(tilestat[tile[i]]); + sum += Short.toUnsignedInt(tilestat[ tile[i] ]); } return sum; } + /** + * + * @return copy of the stat data + */ + public static short[] getStatCopy() { + return Arrays.copyOf(tilestat, MapLayer.TILES_SUPPORTED); + } + } diff --git a/src/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.java b/src/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.java index 654c9aea8..12a98ad73 100644 --- a/src/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.java +++ b/src/com/Torvald/Terrarum/UserInterface/BasicDebugInfoWindow.java @@ -72,6 +72,7 @@ public class BasicDebugInfoWindow implements UICanvas { printLine(g, 7, "mass : " + String.valueOf(playerDbg.mass()) + " [kg]"); String lightVal; + String mtX = String.valueOf(mouseTileX), mtY = String.valueOf(mouseTileY); try { char valRaw = LightmapRenderer.getValueFromMap(mouseTileX, mouseTileY); int rawR = LightmapRenderer.getRawR(valRaw); @@ -84,8 +85,11 @@ public class BasicDebugInfoWindow implements UICanvas { } catch (ArrayIndexOutOfBoundsException e) { lightVal = "out of bounds"; + mtX = "---"; + mtY = "---"; } - printLine(g, 8, "light at cursor : " + lightVal); + printLine(g, 8, "light at cursor : " + lightVal + ); String tileNo; try { @@ -94,7 +98,21 @@ public class BasicDebugInfoWindow implements UICanvas { catch (ArrayIndexOutOfBoundsException e) { 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 long memInUse = Terrarum.game.memInUse; @@ -113,20 +131,21 @@ public class BasicDebugInfoWindow implements UICanvas { ); // Hitbox + float zoom = Terrarum.game.screenZoom; g.setColor(new Color(0x007f00)); - g.drawRect(hitbox.getHitboxStart().getX() - - MapCamera.getCameraX() - , hitbox.getHitboxStart().getY() - - MapCamera.getCameraY() - , hitbox.getWidth() - , hitbox.getHeight() + g.drawRect(hitbox.getHitboxStart().getX() * zoom + - MapCamera.getCameraX() * zoom + , hitbox.getHitboxStart().getY() * zoom + - MapCamera.getCameraY() * zoom + , hitbox.getWidth() * zoom + , hitbox.getHeight() * zoom ); // ...and its point g.fillRect( - hitbox.getPointedX() - 1 - - MapCamera.getCameraX() - , hitbox.getPointedY() - 1 - - MapCamera.getCameraY() + (hitbox.getPointedX() - 1) * zoom + - MapCamera.getCameraX() * zoom + , (hitbox.getPointedY() - 1) * zoom + - MapCamera.getCameraY() * zoom , 3 , 3 ); @@ -138,19 +157,19 @@ public class BasicDebugInfoWindow implements UICanvas { // Next hitbox g.setColor(Color.blue); - g.drawRect(nextHitbox.getHitboxStart().getX() - - MapCamera.getCameraX() - , nextHitbox.getHitboxStart().getY() - - MapCamera.getCameraY() - , nextHitbox.getWidth() - , nextHitbox.getHeight() + g.drawRect(nextHitbox.getHitboxStart().getX() * zoom + - MapCamera.getCameraX() * zoom + , nextHitbox.getHitboxStart().getY() * zoom + - MapCamera.getCameraY() * zoom + , nextHitbox.getWidth() * zoom + , nextHitbox.getHeight() * zoom ); // ...and its point g.fillRect( - nextHitbox.getPointedX() - 1 - - MapCamera.getCameraX() - , nextHitbox.getPointedY() - 1 - - MapCamera.getCameraY() + (nextHitbox.getPointedX() - 1) * zoom + - MapCamera.getCameraX() * zoom + , (nextHitbox.getPointedY() - 1) * zoom + - MapCamera.getCameraY() * zoom , 3 , 3 ); @@ -165,10 +184,18 @@ public class BasicDebugInfoWindow implements UICanvas { 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) { return i * 20; } + private static int column(int i) { + return (250 * (i - 1)); + } + @Override public void update(GameContainer gc, int delta_t) { diff --git a/work_files/Jump power by pressing time 2 linear.gcx b/work_files/Jump power by pressing time 2 linear.gcx index 4624a986f..198f68580 100755 Binary files a/work_files/Jump power by pressing time 2 linear.gcx and b/work_files/Jump power by pressing time 2 linear.gcx differ diff --git a/work_files/Tools/b24_col_to_40step_col.py b/work_files/Tools/b24_col_to_40step_col.py index 44874b636..ca3f99210 100644 --- a/work_files/Tools/b24_col_to_40step_col.py +++ b/work_files/Tools/b24_col_to_40step_col.py @@ -27,5 +27,5 @@ def intFromCol(r, g, b): def colFromNum(raw): return getR40(raw), getG40(raw), getB40(raw) -print(intFromCol(9,13,29)) -print(colFromNum(31399)) +print(colFromNum(9979)) +print(intFromCol(3,5,9)) diff --git a/res/graphics/terrain/terrain.raw b/work_files/graphics/terrain/terrain.raw similarity index 99% rename from res/graphics/terrain/terrain.raw rename to work_files/graphics/terrain/terrain.raw index 4afc26bf6..8ef162b6b 100644 Binary files a/res/graphics/terrain/terrain.raw and b/work_files/graphics/terrain/terrain.raw differ