Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d61bb66418 | ||
|
|
b0f62f25e6 | ||
|
|
bdbc9b865b | ||
|
|
f6428b8857 | ||
|
|
cb3b43cc48 | ||
|
|
587c63fc92 | ||
|
|
97fa8057ba | ||
|
|
6a2bb7b01f | ||
|
|
edbced6642 | ||
|
|
8c0477f6bd | ||
|
|
42f0364319 | ||
|
|
6570d23512 | ||
|
|
7ec3ab5a17 | ||
|
|
6af015cc05 | ||
|
|
7938e02e78 | ||
|
|
bac4bb8c8f | ||
|
|
dec5a2aaaf |
Binary file not shown.
@@ -1,5 +1,5 @@
|
|||||||
credits.text = 만든이: [royal]Anuken[] - [sky]anukendev@gmail.com[]
|
credits.text = 만든이: [royal]Anuken[] - [sky]anukendev@gmail.com[]
|
||||||
credits = 제작자
|
credits = 제작진
|
||||||
contributors = 번역가와 기여자
|
contributors = 번역가와 기여자
|
||||||
discord = Mindustry Discord 서버에 가입하세요!
|
discord = Mindustry Discord 서버에 가입하세요!
|
||||||
link.discord.description = Mindustry Discord 공식 대화방
|
link.discord.description = Mindustry Discord 공식 대화방
|
||||||
@@ -15,7 +15,7 @@ link.wiki.description = 공식 Mindustry 위키
|
|||||||
link.suggestions.description = 새 기능 제안하기
|
link.suggestions.description = 새 기능 제안하기
|
||||||
linkfail = 링크를 열지 못했습니다!\nURL이 클립보드에 복사되었습니다.
|
linkfail = 링크를 열지 못했습니다!\nURL이 클립보드에 복사되었습니다.
|
||||||
screenshot = 스크린 캡처가 {0} 에 저장되었습니다.
|
screenshot = 스크린 캡처가 {0} 에 저장되었습니다.
|
||||||
screenshot.invalid = 맵이 너무 커서 스크린 캡처에 사용될 메모리가 부족할 수 있습니다.
|
screenshot.invalid = 맵이 너무 커서 스크린 캡처에 사용될 메모리가 부족합니다.
|
||||||
gameover = 게임 오버
|
gameover = 게임 오버
|
||||||
gameover.disconnect = 연결 끊김
|
gameover.disconnect = 연결 끊김
|
||||||
gameover.pvp = [accent]{0}[] 팀이 승리했습니다!
|
gameover.pvp = [accent]{0}[] 팀이 승리했습니다!
|
||||||
@@ -75,7 +75,7 @@ level.highscore = 최고 점수: [accent]{0}
|
|||||||
level.select = 맵 선택
|
level.select = 맵 선택
|
||||||
level.mode = 게임 모드:
|
level.mode = 게임 모드:
|
||||||
coreattack = < 코어가 공격을 받고 있습니다! >
|
coreattack = < 코어가 공격을 받고 있습니다! >
|
||||||
nearpoint = [[ [scarlet]즉시 적 소환구역에서 떠나세요[] ]\n인근 건물들과 유닛들은 초토화됩니다!
|
nearpoint = [[ [scarlet]즉시 적 소환구역에서 떠나십시오[] ]\n단계가 시작하는 순간 인근 건물들과 유닛들이 전멸됩니다!
|
||||||
database = 코어 데이터베이스
|
database = 코어 데이터베이스
|
||||||
savegame = 게임 저장
|
savegame = 게임 저장
|
||||||
loadgame = 게임 불러오기
|
loadgame = 게임 불러오기
|
||||||
@@ -149,7 +149,7 @@ unlocked = 새로운 콘텐츠가 해금되었습니다!
|
|||||||
available = 새로운 콘텐츠 해금이 가능합니다!
|
available = 새로운 콘텐츠 해금이 가능합니다!
|
||||||
completed = [accent]완료됨
|
completed = [accent]완료됨
|
||||||
techtree = 연구 기록
|
techtree = 연구 기록
|
||||||
research.legacy = [accent]5.0[] 연구 데이터를 찾았습니다.\n[accent]이 데이터를 불러오시겠습니까?[], 아니면 이 데이터를 무시하고 캠페인을 새로 시작하시겠습니까? [accent]무시한 데이터는 삭제됩니다.[] (권장됨)?
|
research.legacy = [accent]5.0[] 연구 데이터를 찾았습니다.\n[accent]이 데이터를 불러오시겠습니까?[], 아니면 이 데이터를 무시하고 캠페인을 새로 시작하시겠습니까? [accent]무시한 데이터는 삭제됩니다.[] (권장됨)
|
||||||
research.load = 불러오기
|
research.load = 불러오기
|
||||||
research.discard = 무시하기
|
research.discard = 무시하기
|
||||||
research.list = [lightgray]연구:
|
research.list = [lightgray]연구:
|
||||||
@@ -167,7 +167,7 @@ server.kicked.serverClose = 서버 닫힘.
|
|||||||
server.kicked.vote = 당신은 투표로 추방되었습니다. 안녕히 가세요!
|
server.kicked.vote = 당신은 투표로 추방되었습니다. 안녕히 가세요!
|
||||||
server.kicked.clientOutdated = 구버전 클라이언트입니다! 게임을 업데이트하세요!
|
server.kicked.clientOutdated = 구버전 클라이언트입니다! 게임을 업데이트하세요!
|
||||||
server.kicked.serverOutdated = 구버전 서버입니다! 호스트에게 업데이트를 요청하세요!
|
server.kicked.serverOutdated = 구버전 서버입니다! 호스트에게 업데이트를 요청하세요!
|
||||||
server.kicked.banned = 당신은 이 서버에서 차단되었습니다.
|
server.kicked.banned = 당신은 이 서버에서 영구적으로 차단되었습니다.
|
||||||
server.kicked.typeMismatch = 이 서버는 현재 빌드 유형과 호환되지 않습니다.
|
server.kicked.typeMismatch = 이 서버는 현재 빌드 유형과 호환되지 않습니다.
|
||||||
server.kicked.playerLimit = 서버의 인원이 꽉 찼습니다. 빈 슬롯이 생길 때까지 기다려주세요.
|
server.kicked.playerLimit = 서버의 인원이 꽉 찼습니다. 빈 슬롯이 생길 때까지 기다려주세요.
|
||||||
server.kicked.recentKick = 최근에 추방되었습니다.\n추방 쿨타임이 끝날 때까지 기다리세요.
|
server.kicked.recentKick = 최근에 추방되었습니다.\n추방 쿨타임이 끝날 때까지 기다리세요.
|
||||||
@@ -196,6 +196,7 @@ servers.local = 로컬 서버
|
|||||||
servers.remote = 원격 서버
|
servers.remote = 원격 서버
|
||||||
servers.global = 커뮤니티 서버
|
servers.global = 커뮤니티 서버
|
||||||
|
|
||||||
|
servers.disclaimer = 커뮤니티 서버는 개발자가 소유하거나 제어하지 [accent]않습니다[].\n\n서버들은 전연령대에 적합하지 않은 사용자 지정 콘텐츠를 보유할 수도 있습니다.
|
||||||
servers.showhidden = 서버 숨기기 / 보이기
|
servers.showhidden = 서버 숨기기 / 보이기
|
||||||
server.shown = 서버 숨기기
|
server.shown = 서버 숨기기
|
||||||
server.hidden = 서버 보이기
|
server.hidden = 서버 보이기
|
||||||
@@ -222,8 +223,8 @@ confirmban = 정말로 "{0}[white]" 을(를) 차단하시겠습니까?
|
|||||||
confirmkick = 정말로 "{0}[white]" 을(를) 추방하시겠습니까?
|
confirmkick = 정말로 "{0}[white]" 을(를) 추방하시겠습니까?
|
||||||
confirmvotekick = 정말로 "{0}[white]" 을(를) 투표로 추방하시겠습니까?
|
confirmvotekick = 정말로 "{0}[white]" 을(를) 투표로 추방하시겠습니까?
|
||||||
confirmunban = 정말로 이 플레이어를 차단 해제하시겠습니까?
|
confirmunban = 정말로 이 플레이어를 차단 해제하시겠습니까?
|
||||||
confirmadmin = 정말로 "{0}[white]" 을(를) 관리자로 만들겠습니까?
|
confirmadmin = 정말로 "{0}[white]" 을(를) 관리자로 임명하겠습니까?
|
||||||
confirmunadmin = 정말로 "{0}[white]"의 관리자 상태를 제거하시겠습니까?
|
confirmunadmin = 정말로 "{0}[white]"의 관리자를 박탈하시겠습니까?
|
||||||
joingame.title = 게임 참가
|
joingame.title = 게임 참가
|
||||||
joingame.ip = 주소:
|
joingame.ip = 주소:
|
||||||
disconnect = 연결이 끊어졌습니다.
|
disconnect = 연결이 끊어졌습니다.
|
||||||
@@ -293,11 +294,11 @@ quit.confirm.tutorial = 튜토리얼을 종료하시겠습니까?\n튜토리얼
|
|||||||
loading = [accent]불러오는중...
|
loading = [accent]불러오는중...
|
||||||
reloading = [accent]모드 새로고침하는중...
|
reloading = [accent]모드 새로고침하는중...
|
||||||
saving = [accent]저장중...
|
saving = [accent]저장중...
|
||||||
respawn = [accent][[{0}][] 키를 눌러 코어에서 부활
|
respawn = [accent][[{0}][] 키를 눌러 코어에서 부활하세요.
|
||||||
cancelbuilding = [accent][[{0}][] 를 눌러 계획 초기화
|
cancelbuilding = [accent][[{0}][] 를 눌러 건설 계획을 초기화하세요.
|
||||||
selectschematic = [accent][[{0}][] 를 눌러 선택+복사
|
selectschematic = [accent][[{0}][] 를 눌러 선택+복사하세요.
|
||||||
pausebuilding = [accent][[{0}][] 를 눌러 건설 일시중지
|
pausebuilding = [accent][[{0}][] 를 눌러 건설을 일시중지하세요.
|
||||||
resumebuilding = [scarlet][[{0}][] 를 눌러 건설 재개
|
resumebuilding = [scarlet][[{0}][] 를 눌러 건설을 재개하세요.
|
||||||
showui = UI를 .\n[accent][[{0}][] 키를 눌러 UI를 활성화하세요.
|
showui = UI를 .\n[accent][[{0}][] 키를 눌러 UI를 활성화하세요.
|
||||||
wave = [accent]{0} 단계
|
wave = [accent]{0} 단계
|
||||||
wave.cap = [accent]단계 {0}/{1}
|
wave.cap = [accent]단계 {0}/{1}
|
||||||
@@ -386,7 +387,7 @@ editor.errorimage = 이것은 맵이 아니라 사진입니다.\n\n3.5/build 40
|
|||||||
editor.errorlegacy = 이 맵은 너무 오래되어 더 이상 지원되지 않는 구형 맵 형식을 사용합니다.
|
editor.errorlegacy = 이 맵은 너무 오래되어 더 이상 지원되지 않는 구형 맵 형식을 사용합니다.
|
||||||
editor.errornot = 맵 파일이 아닙니다.
|
editor.errornot = 맵 파일이 아닙니다.
|
||||||
editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다.
|
editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다.
|
||||||
editor.errorname = 맵에 이름이 지정되어 있지 않습니다. 저장 파일을 불러오려 합니까?
|
editor.errorname = 맵에 이름이 지정되어 있지 않습니다. 저장 파일을 불러오려고 시도하는 건가요?
|
||||||
editor.update = 업데이트
|
editor.update = 업데이트
|
||||||
editor.randomize = 무작위
|
editor.randomize = 무작위
|
||||||
editor.apply = 적용
|
editor.apply = 적용
|
||||||
@@ -427,7 +428,7 @@ toolmode.replaceall.description = 맵에 있는 모든 블록을 재배치합니
|
|||||||
toolmode.orthogonal = 직각
|
toolmode.orthogonal = 직각
|
||||||
toolmode.orthogonal.description = 직각으로 블록을 배치합니다.
|
toolmode.orthogonal.description = 직각으로 블록을 배치합니다.
|
||||||
toolmode.square = 정사각형
|
toolmode.square = 정사각형
|
||||||
toolmode.square.description = 정사각형 형태의 브러시.
|
toolmode.square.description = 정사각형 형태의 브러시로 교체합니다.
|
||||||
toolmode.eraseores = 자원 초기화
|
toolmode.eraseores = 자원 초기화
|
||||||
toolmode.eraseores.description = 자원만 초기화합니다.
|
toolmode.eraseores.description = 자원만 초기화합니다.
|
||||||
toolmode.fillteams = 팀 채우기
|
toolmode.fillteams = 팀 채우기
|
||||||
@@ -486,7 +487,7 @@ memory2 = Mem:\n {0}mb +\n {1}mb
|
|||||||
language.restart = 언어 설정을 적용하려면 게임을 다시 시작하세요.
|
language.restart = 언어 설정을 적용하려면 게임을 다시 시작하세요.
|
||||||
settings = 설정
|
settings = 설정
|
||||||
tutorial = 튜토리얼
|
tutorial = 튜토리얼
|
||||||
tutorial.retake = 튜토리얼 다시 시작
|
tutorial.retake = 튜토리얼을 다시 시작하기
|
||||||
editor = 편집기
|
editor = 편집기
|
||||||
mapeditor = 맵 편집기
|
mapeditor = 맵 편집기
|
||||||
|
|
||||||
@@ -500,8 +501,8 @@ requirement.research = {0} 연구
|
|||||||
requirement.capture = {0} 점령
|
requirement.capture = {0} 점령
|
||||||
bestwave = [lightgray]최고 단계: {0}
|
bestwave = [lightgray]최고 단계: {0}
|
||||||
launch.text = 출격
|
launch.text = 출격
|
||||||
research.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 주최자만 연구할 수 있습니다.
|
research.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 호스트만 연구할 수 있습니다.
|
||||||
map.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 주최자만 다른 섹터들을 보고, 이동이 가능합니다.
|
map.multiplayer = 캠페인 멀티 플레이 시에는 해당 캠페인 서버의 호스트만 다른 섹터들을 보고, 이동이 가능합니다.
|
||||||
uncover = 지역 개방
|
uncover = 지역 개방
|
||||||
configure = 초기자원 설정
|
configure = 초기자원 설정
|
||||||
|
|
||||||
@@ -518,7 +519,7 @@ boss.health = 수호자 체력
|
|||||||
connectfail = [scarlet]연결 오류:\n\n[accent]{0}
|
connectfail = [scarlet]연결 오류:\n\n[accent]{0}
|
||||||
error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요?
|
error.unreachable = 서버에 연결하지 못했습니다.\n서버 주소가 정확히 입력되었나요?
|
||||||
error.invalidaddress = 잘못된 주소입니다.
|
error.invalidaddress = 잘못된 주소입니다.
|
||||||
error.timedout = 시간 초과!\n서버에 포트 포워딩이 설정되어 있고 주소가 올바른지 확인하십시오.
|
error.timedout = 시간 초과!\n서버에 포트 포워딩이 설정되어 있고 주소가 올바른지 확인하세요.
|
||||||
error.mismatch = 패킷 오류\n클라이언트/서버 버전이 일치하지 않습니다.\n접속하려는 서버가 최신 버전인지 확인하세요!
|
error.mismatch = 패킷 오류\n클라이언트/서버 버전이 일치하지 않습니다.\n접속하려는 서버가 최신 버전인지 확인하세요!
|
||||||
error.alreadyconnected = 이미 접속 중입니다.
|
error.alreadyconnected = 이미 접속 중입니다.
|
||||||
error.mapnotfound = 맵 파일을 찾을 수 없습니다!
|
error.mapnotfound = 맵 파일을 찾을 수 없습니다!
|
||||||
@@ -535,7 +536,7 @@ weather.fog.name = 안개
|
|||||||
sectors.unexplored = [lightgray]미개척지
|
sectors.unexplored = [lightgray]미개척지
|
||||||
sectors.resources = 자원:
|
sectors.resources = 자원:
|
||||||
sectors.production = 분당 자원 생산량:
|
sectors.production = 분당 자원 생산량:
|
||||||
sectors.export = Export:
|
sectors.export = 분당 자원 수출량:
|
||||||
sectors.time = 지역 진행 시간:
|
sectors.time = 지역 진행 시간:
|
||||||
sectors.threat = 지역 위험도:
|
sectors.threat = 지역 위험도:
|
||||||
sectors.wave = 진행 중 단계:
|
sectors.wave = 진행 중 단계:
|
||||||
@@ -546,7 +547,7 @@ sectors.select = 선택
|
|||||||
sectors.nonelaunch = [lightgray]없음 (sun)
|
sectors.nonelaunch = [lightgray]없음 (sun)
|
||||||
sectors.rename = 구역 이름 변경
|
sectors.rename = 구역 이름 변경
|
||||||
sectors.enemybase = [scarlet]적 기지
|
sectors.enemybase = [scarlet]적 기지
|
||||||
sectors.vulnerable = [scarlet]]취약
|
sectors.vulnerable = [scarlet]취약
|
||||||
sectors.underattack = [scarlet]공격받고 있습니다! [accent]{0}% 손상됨.
|
sectors.underattack = [scarlet]공격받고 있습니다! [accent]{0}% 손상됨.
|
||||||
sectors.survives = [accent]{0} 단계 이상 버티세요.
|
sectors.survives = [accent]{0} 단계 이상 버티세요.
|
||||||
sectors.go = 지역 진입
|
sectors.go = 지역 진입
|
||||||
@@ -566,14 +567,14 @@ threat.eradication = 극한
|
|||||||
|
|
||||||
planets = 태양계
|
planets = 태양계
|
||||||
|
|
||||||
planet.serpulo.name = 세르풀로
|
planet.serpulo.name = 세르플로
|
||||||
planet.sun.name = 태양
|
planet.sun.name = 태양
|
||||||
|
|
||||||
sector.impact0078.name = 폐허 : Impact 0078
|
sector.impact0078.name = 폐허 : Impact 0078
|
||||||
sector.groundZero.name = Zero 전초기지
|
sector.groundZero.name = Zero 전초기지
|
||||||
sector.craters.name = 크레이터
|
sector.craters.name = 크레이터
|
||||||
sector.frozenForest.name = 얼어붙은 숲
|
sector.frozenForest.name = 얼어붙은 숲
|
||||||
sector.ruinousShores.name = 폐허 : 해안가
|
sector.ruinousShores.name = 파괴된 해안가
|
||||||
sector.stainedMountains.name = 얼룩진 산맥
|
sector.stainedMountains.name = 얼룩진 산맥
|
||||||
sector.desolateRift.name = 황폐한 협곡
|
sector.desolateRift.name = 황폐한 협곡
|
||||||
sector.nuclearComplex.name = 핵 생산 단지
|
sector.nuclearComplex.name = 핵 생산 단지
|
||||||
@@ -606,15 +607,15 @@ sector.planetaryTerminal.description = 이 행성에서의 마지막 전투를
|
|||||||
settings.language = 언어
|
settings.language = 언어
|
||||||
settings.data = 게임 데이터
|
settings.data = 게임 데이터
|
||||||
settings.reset = 설정 초기화
|
settings.reset = 설정 초기화
|
||||||
settings.rebind = 키 설정
|
settings.rebind = 조작키 설정
|
||||||
settings.resetKey = 키 초기화
|
settings.resetKey = 조작키 설정 초기화
|
||||||
settings.controls = 조작
|
settings.controls = 조작
|
||||||
settings.game = 게임
|
settings.game = 게임
|
||||||
settings.sound = 소리
|
settings.sound = 소리
|
||||||
settings.graphics = 그래픽
|
settings.graphics = 그래픽
|
||||||
settings.cleardata = 게임 데이터 초기화
|
settings.cleardata = 게임 데이터 초기화
|
||||||
settings.clear.confirm = 정말로 이 데이터를 지우시겠습니까?\n되돌릴 수 없습니다!
|
settings.clear.confirm = 정말로 이 데이터를 지우시겠습니까?\n되돌릴 수 없습니다!
|
||||||
settings.clearall.confirm = [scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 키 매핑, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다.
|
settings.clearall.confirm = [scarlet]경고![]\n이 작업은 저장된 맵, 맵파일, 잠금 해제된 목록과 조작키 설정, 그리고 모든 데이터를 삭제합니다.\n확인 버튼을 다시 눌러 모든 데이터를 삭제하고 게임에서 나갑니다.
|
||||||
settings.clearsaves.confirm = 정말로 모든 저장된 파일들을 삭제하시겠습니까?
|
settings.clearsaves.confirm = 정말로 모든 저장된 파일들을 삭제하시겠습니까?
|
||||||
settings.clearsaves = 저장 초기화
|
settings.clearsaves = 저장 초기화
|
||||||
settings.clearresearch = 연구 초기화
|
settings.clearresearch = 연구 초기화
|
||||||
@@ -628,7 +629,7 @@ yes = O
|
|||||||
no = X
|
no = X
|
||||||
info.title = 정보
|
info.title = 정보
|
||||||
error.title = [scarlet]오류가 발생했습니다.
|
error.title = [scarlet]오류가 발생했습니다.
|
||||||
error.crashtitle = 오류가 발생했습니다
|
error.crashtitle = 오류가 발생했습니다.
|
||||||
unit.nobuild = [scarlet]건설 불가
|
unit.nobuild = [scarlet]건설 불가
|
||||||
lastaccessed = [lightgray]마지막 조작: {0}
|
lastaccessed = [lightgray]마지막 조작: {0}
|
||||||
block.unknown = [lightgray]???
|
block.unknown = [lightgray]???
|
||||||
@@ -698,9 +699,9 @@ stat.abilities = 능력
|
|||||||
stat.canboost = 부스터
|
stat.canboost = 부스터
|
||||||
stat.flying = 비행
|
stat.flying = 비행
|
||||||
|
|
||||||
ability.forcefield = 수호 역장
|
ability.forcefield = 보호막 필드
|
||||||
ability.repairfield = 수리 파동
|
ability.repairfield = 수리 필드
|
||||||
ability.statusfield = 강화 오오라
|
ability.statusfield = 상태이상 필드
|
||||||
ability.unitspawn = {0} 공장
|
ability.unitspawn = {0} 공장
|
||||||
ability.shieldregenfield = 방어막 복구 필드
|
ability.shieldregenfield = 방어막 복구 필드
|
||||||
ability.movelightning = 가속 전격
|
ability.movelightning = 가속 전격
|
||||||
@@ -837,7 +838,7 @@ uiscale.reset = UI 스케일이 변경되었습니다.\n"확인"버튼을 눌러
|
|||||||
uiscale.cancel = 취소 후 나가기
|
uiscale.cancel = 취소 후 나가기
|
||||||
setting.bloom.name = 화려한 효과
|
setting.bloom.name = 화려한 효과
|
||||||
keybind.title = 조작키 설정
|
keybind.title = 조작키 설정
|
||||||
keybinds.mobile = [scarlet]대부분의 키 맵핑은 모바일에서 작동하지 않습니다. 기본 이동만 지원됩니다.
|
keybinds.mobile = [scarlet]대부분의 조작키 설정은 모바일에서 작동하지 않습니다. 기본 이동만 지원됩니다.
|
||||||
category.general.name = 일반
|
category.general.name = 일반
|
||||||
category.view.name = 보기
|
category.view.name = 보기
|
||||||
category.multiplayer.name = 멀티플레이어
|
category.multiplayer.name = 멀티플레이어
|
||||||
@@ -992,8 +993,8 @@ unit.quasar.name = 퀘이사
|
|||||||
unit.crawler.name = 크롤러
|
unit.crawler.name = 크롤러
|
||||||
unit.atrax.name = 아트락스
|
unit.atrax.name = 아트락스
|
||||||
unit.spiroct.name = 스피록트
|
unit.spiroct.name = 스피록트
|
||||||
unit.arkyid.name = 알카이드
|
unit.arkyid.name = 아키드
|
||||||
unit.toxopid.name = 톡소오피드
|
unit.toxopid.name = 톡소피드
|
||||||
unit.flare.name = 플레어
|
unit.flare.name = 플레어
|
||||||
unit.horizon.name = 호라이즌
|
unit.horizon.name = 호라이즌
|
||||||
unit.zenith.name = 제니스
|
unit.zenith.name = 제니스
|
||||||
@@ -1005,7 +1006,7 @@ unit.mega.name = 메가
|
|||||||
unit.quad.name = 쿼드
|
unit.quad.name = 쿼드
|
||||||
unit.oct.name = 옥트
|
unit.oct.name = 옥트
|
||||||
unit.risso.name = 리소
|
unit.risso.name = 리소
|
||||||
unit.minke.name = 민키
|
unit.minke.name = 민케
|
||||||
unit.bryde.name = 브라이드
|
unit.bryde.name = 브라이드
|
||||||
unit.sei.name = 세이
|
unit.sei.name = 세이
|
||||||
unit.omura.name = 오무라
|
unit.omura.name = 오무라
|
||||||
@@ -1013,9 +1014,9 @@ unit.alpha.name = 알파
|
|||||||
unit.beta.name = 베타
|
unit.beta.name = 베타
|
||||||
unit.gamma.name = 감마
|
unit.gamma.name = 감마
|
||||||
unit.scepter.name = 셉터
|
unit.scepter.name = 셉터
|
||||||
unit.reign.name = 린
|
unit.reign.name = 레인
|
||||||
unit.vela.name = 벨라
|
unit.vela.name = 벨라
|
||||||
unit.corvus.name = 코르부스
|
unit.corvus.name = 코르버스
|
||||||
|
|
||||||
block.resupply-point.name = 보급 지점
|
block.resupply-point.name = 보급 지점
|
||||||
block.parallax.name = 패럴랙스
|
block.parallax.name = 패럴랙스
|
||||||
@@ -1058,7 +1059,7 @@ block.deepwater.name = 깊은 물
|
|||||||
block.water.name = 물
|
block.water.name = 물
|
||||||
block.tainted-water.name = 오염된 물
|
block.tainted-water.name = 오염된 물
|
||||||
block.darksand-tainted-water.name = 오염된 젖은 검은 모래
|
block.darksand-tainted-water.name = 오염된 젖은 검은 모래
|
||||||
block.tar.name = 석유
|
block.tar.name = 타르
|
||||||
block.stone.name = 바위
|
block.stone.name = 바위
|
||||||
block.sand.name = 모래
|
block.sand.name = 모래
|
||||||
block.darksand.name = 검은 모래
|
block.darksand.name = 검은 모래
|
||||||
@@ -1198,7 +1199,7 @@ block.cyclone.name = 사이클론
|
|||||||
block.fuse.name = 퓨즈
|
block.fuse.name = 퓨즈
|
||||||
block.shock-mine.name = 전격 지뢰
|
block.shock-mine.name = 전격 지뢰
|
||||||
block.overdrive-projector.name = 과부하 프로젝터
|
block.overdrive-projector.name = 과부하 프로젝터
|
||||||
block.force-projector.name = 포스 프로젝터
|
block.force-projector.name = 보호막 프로젝터
|
||||||
block.arc.name = 아크
|
block.arc.name = 아크
|
||||||
block.rtg-generator.name = RTG 발전기
|
block.rtg-generator.name = RTG 발전기
|
||||||
block.spectre.name = 스펙터
|
block.spectre.name = 스펙터
|
||||||
@@ -1257,7 +1258,7 @@ hint.placeDrill = 드릴을 설치하려면 오른쪽 아래의 \ue85e [accent]
|
|||||||
hint.placeDrill.mobile = 오른쪽 아래 메뉴의 \ue85e [accent]드릴[]을 선택하고, \uf870 [accent]드릴[] 를 선택해서 구리 광석 위를 누르십시오.\n\n설치를 완료하려면 오른쪽 아래의 \ue800 [accent]완료 버튼[]을 누르십시오.
|
hint.placeDrill.mobile = 오른쪽 아래 메뉴의 \ue85e [accent]드릴[]을 선택하고, \uf870 [accent]드릴[] 를 선택해서 구리 광석 위를 누르십시오.\n\n설치를 완료하려면 오른쪽 아래의 \ue800 [accent]완료 버튼[]을 누르십시오.
|
||||||
hint.placeConveyor = 컨베이어는 아이템을 드릴에서 다른 블록으로 이동시켜줍니다. \ue814 [accent]분배[] 카테고리에서 \uf896 [accent]컨베이어[]를 선택하십시오.\n\n클릭하거나 드래그로 다수의 컨베이어를 설치할 수 있습니다.\n클릭하고 놓지 않은채로 마우스 [accent]휠을 돌리면 돌아갑니다.
|
hint.placeConveyor = 컨베이어는 아이템을 드릴에서 다른 블록으로 이동시켜줍니다. \ue814 [accent]분배[] 카테고리에서 \uf896 [accent]컨베이어[]를 선택하십시오.\n\n클릭하거나 드래그로 다수의 컨베이어를 설치할 수 있습니다.\n클릭하고 놓지 않은채로 마우스 [accent]휠을 돌리면 돌아갑니다.
|
||||||
hint.placeConveyor.mobile = 컨베이어는 아이템을 드릴에서 다른 블록으로 이동시켜줍니다. \ue814 [accent]분배[] 카테고리에서 \uf896 [accent]컨베이어[]를 선택하십시오.\n\n여러개의 컨베이어를 놓으려면 손가락으로 누른채로 끌어서 설치 범위를 지정하십시오.
|
hint.placeConveyor.mobile = 컨베이어는 아이템을 드릴에서 다른 블록으로 이동시켜줍니다. \ue814 [accent]분배[] 카테고리에서 \uf896 [accent]컨베이어[]를 선택하십시오.\n\n여러개의 컨베이어를 놓으려면 손가락으로 누른채로 끌어서 설치 범위를 지정하십시오.
|
||||||
hint.placeTurret = 적에게서 당신의 기지를 막아내려면 \uf861 [accent]포탑[]를 설치하십시오.\n\n포탑 탄약 필요 - 지금은 \uf838구리가 필요합니다.\n컨베이어를 사용해 드릴에 구리를 공급하십시오.
|
hint.placeTurret = 적에게서 당신의 기지를 막아내려면 \uf861 [accent]포탑[]를 설치하십시오.\n\n포탑 탄약 필요 - 지금은 \uf838 구리가 필요합니다.\n컨베이어를 사용해 드릴에 구리를 공급하십시오.
|
||||||
hint.breaking = 블록을 부수려면 [accent]오른클릭[]이나 드래그를 하십시오.
|
hint.breaking = 블록을 부수려면 [accent]오른클릭[]이나 드래그를 하십시오.
|
||||||
hint.breaking.mobile = 블럭을 부수려면 오른쪽 아래의 \ue817 [accent]망치[]를 눌러 해체 모드를 활성화 하십시오.\n\n손가락으로 누른채로 끌어서 해체 범위를 지정하십시오.
|
hint.breaking.mobile = 블럭을 부수려면 오른쪽 아래의 \ue817 [accent]망치[]를 눌러 해체 모드를 활성화 하십시오.\n\n손가락으로 누른채로 끌어서 해체 범위를 지정하십시오.
|
||||||
hint.research = 새 기술을 연구하려면 \ue875 [accent]연구[]버튼을 누르십시오.
|
hint.research = 새 기술을 연구하려면 \ue875 [accent]연구[]버튼을 누르십시오.
|
||||||
@@ -1279,9 +1280,12 @@ hint.payloadDrop.mobile = 다시 내려놓으려면 빈 공간에서 [accent]화
|
|||||||
hint.waveFire = [accent]Wave[]포탑에 탄약으로 물을 넣으면 주변의 불을 자동으로 꺼줍니다.
|
hint.waveFire = [accent]Wave[]포탑에 탄약으로 물을 넣으면 주변의 불을 자동으로 꺼줍니다.
|
||||||
hint.generator = \uf879 [accent]화력 발전기[]는 석탄을 태워서 주변 블록에 전력을 전달합니다.\n\n \uf87f 더 넓은 범위의 블록에 전력을 전달하려면 [accent]Power Nodes[]를 사용하십시오.
|
hint.generator = \uf879 [accent]화력 발전기[]는 석탄을 태워서 주변 블록에 전력을 전달합니다.\n\n \uf87f 더 넓은 범위의 블록에 전력을 전달하려면 [accent]Power Nodes[]를 사용하십시오.
|
||||||
hint.guardian = [accent]수호자[] 유닛들은 방어력을 가집니다. [accent]구리[]와 [accent]납[]같은 약한 탄약으로는 [scarlet]아무런 효과도 없습니다[].\n\n그런 수호자를 없애려면 높은 단계의 포탑 또는 \uf835 [accent]흑연[]을 탄약으로 넣은 \uf861듀오/\uf859살보를 사용하십시오.
|
hint.guardian = [accent]수호자[] 유닛들은 방어력을 가집니다. [accent]구리[]와 [accent]납[]같은 약한 탄약으로는 [scarlet]아무런 효과도 없습니다[].\n\n그런 수호자를 없애려면 높은 단계의 포탑 또는 \uf835 [accent]흑연[]을 탄약으로 넣은 \uf861듀오/\uf859살보를 사용하십시오.
|
||||||
|
hint.coreUpgrade = 코어는 [accent]상위 코어를 위에 설치함[]으로써 업그레이드될 수 있습니다.\n\n [accent]기반[] 코어를 [accent]조각[] 코어 위에 설치하십시오. 주변에 장애물이 없는지도 확인하십시오.
|
||||||
|
hint.presetLaunch = [accent]얼어붙은 숲[]과 같은 회색[accent]캠페인 지역[]은 어디에서나 출격해서 올 수 있습니다. 주변 지역을 점령하지 않아도 됩니다.\n\n이와 같은 [accent]네임드 지역[]들은 [accent]선택적[]입니다.
|
||||||
|
hint.coreIncinerate = 코어가 아이템으로 가득 찬 후에 받는 모든 아이템들은 [accent]소각[]될 것입니다.
|
||||||
|
|
||||||
item.copper.description = 가장 기본적인 건설 재료. 모든 유형의 블록에서 광범위하게 사용됩니다.
|
item.copper.description = 가장 기본적인 건설 재료. 모든 유형의 블록에서 광범위하게 사용됩니다.
|
||||||
item.copper.details = 평범한 구리. 세르풀로에 비정상적으로 많이 분포되어 있습니다. 별다른 보강재 없이는 구조적 문제 때문에 내구성이 비교적 약합니다.
|
item.copper.details = 평범한 구리. 세르플로에 비정상적으로 많이 분포되어 있습니다. 별다른 보강재 없이는 구조적 문제 때문에 내구성이 비교적 약합니다.
|
||||||
item.lead.description = 기본 초반 재료. 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다.
|
item.lead.description = 기본 초반 재료. 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다.
|
||||||
item.lead.details = 밀도가 높으며 반응성이 적은 자원. 배터리에 주로 사용됩니다.
|
item.lead.details = 밀도가 높으며 반응성이 적은 자원. 배터리에 주로 사용됩니다.
|
||||||
item.metaglass.description = 초강력 방탄유리. 액체 분배 및 저장에 광범위하게 사용됩니다.
|
item.metaglass.description = 초강력 방탄유리. 액체 분배 및 저장에 광범위하게 사용됩니다.
|
||||||
@@ -1398,7 +1402,7 @@ block.laser-drill.description = 레이저 기술을 통해 더욱 빠르게 채
|
|||||||
block.blast-drill.description = 최상위 드릴. 많은 양의 전력이 필요합니다.
|
block.blast-drill.description = 최상위 드릴. 많은 양의 전력이 필요합니다.
|
||||||
block.water-extractor.description = 지하수를 추출합니다. 물을 구하기 어려운 곳에서 사용합니다.
|
block.water-extractor.description = 지하수를 추출합니다. 물을 구하기 어려운 곳에서 사용합니다.
|
||||||
block.cultivator.description = 대기 중의 작은 농도의 포자를 산업용 포자로 배양합니다.
|
block.cultivator.description = 대기 중의 작은 농도의 포자를 산업용 포자로 배양합니다.
|
||||||
block.cultivator.details = 재발견된 기술. 가장 효율적으로 대량의 유기체를 생산할 때 사용된다. 과거, 세르플을 뒤덮은 포자의 최초 배양지로 판단된다.
|
block.cultivator.details = 재발견된 기술. 가장 효율적으로 대량의 유기체를 생산할 때 사용된다. 과거, 세르플로을 뒤덮은 포자의 최초 배양지로 판단된다.
|
||||||
block.oil-extractor.description = 석유를 추출하기 위해 많은 양의 전력과 모래 및 물을 사용합니다.
|
block.oil-extractor.description = 석유를 추출하기 위해 많은 양의 전력과 모래 및 물을 사용합니다.
|
||||||
block.core-shard.description = 기지의 핵심입니다. 파괴되면 해당 지역과의 모든 연결이 끊어집니다. 이런 일이 일어나지 않도록 하십시오.
|
block.core-shard.description = 기지의 핵심입니다. 파괴되면 해당 지역과의 모든 연결이 끊어집니다. 이런 일이 일어나지 않도록 하십시오.
|
||||||
block.core-shard.details = 첫 번째 버전. 휴대용. 자가복제 가능. 일회용 출격 추진기를 가졌으며, 행성간 이동에는 부적합함.
|
block.core-shard.details = 첫 번째 버전. 휴대용. 자가복제 가능. 일회용 출격 추진기를 가졌으며, 행성간 이동에는 부적합함.
|
||||||
@@ -1410,23 +1414,23 @@ block.vault.description = 각 유형의 많은 양의 자원을 저장합니다.
|
|||||||
block.container.description = 각 유형의 자원을 소량 저장합니다. 언로더 블록을 사용하여 컨테이너에서 자원을 빼낼 수 있습니다.
|
block.container.description = 각 유형의 자원을 소량 저장합니다. 언로더 블록을 사용하여 컨테이너에서 자원을 빼낼 수 있습니다.
|
||||||
block.unloader.description = 근처의 비 수송 블록에서 자원을 빼냅니다. 눌러서 빼낼 자원을 변경할 수 있십니다.
|
block.unloader.description = 근처의 비 수송 블록에서 자원을 빼냅니다. 눌러서 빼낼 자원을 변경할 수 있십니다.
|
||||||
block.launch-pad.description = 코어 출격 없이도 자원을 묶어 출격시킬 수 있습니다.
|
block.launch-pad.description = 코어 출격 없이도 자원을 묶어 출격시킬 수 있습니다.
|
||||||
block.duo.description = 작고 저렴한 포탑. 지상 유닛에 유용합니다.
|
block.duo.description = 적에게 탄환을 교대하며 발사합니다.
|
||||||
block.scatter.description = 저렴한 대공 포탑. 적군에게 납덩어리, 고철, 또는 강화 유리 조각 덩어리를 뿌립니다.
|
block.scatter.description = 적군에게 납, 고철, 또는 강화 유리 조각 덩어리를 발사합니다.
|
||||||
block.scorch.description = 주변의 모든 적을 불태웁니다. 근거리에서 매우 효과적입니다.
|
block.scorch.description = 주변의 모든 지상 적을 불태웁니다. 근거리에서 매우 효과적입니다.
|
||||||
block.hail.description = 작은 장거리 포병 포탑입니다.
|
block.hail.description = 장거리에 걸쳐 지상 적에게 작은 포탄을 발사합니다.
|
||||||
block.wave.description = 중형 포탑. 적에게 액체를 발사합니다. 물이 공급되면 자동으로 화재를 진압합니다.
|
block.wave.description = 적에게 액체 줄기를 발사합니다. 물이 공급되면 자동으로 화재를 진압합니다.
|
||||||
block.lancer.description = 중형 대지 레이저 포탑. 강력한 에너지 빔을 충전하여 발사합니다.
|
block.lancer.description = 지상 목표물에게 강력한 에너지 빔을 충전하여 발사합니다.
|
||||||
block.arc.description = 작은 근거리 전격 포탑. 적에게 전격 아크를 발사합니다.
|
block.arc.description = 지상 목표물에게 전격 아크를 발사합니다.
|
||||||
block.swarmer.description = 중형 미사일 포탑. 공중과 지상의 적을 모두 공격하며, 유도탄을 발사합니다.
|
block.swarmer.description = 적에게 유도탄을 발사합니다.
|
||||||
block.salvo.description = 더 큰 고급 듀오 포탑입니다. 적에게 총알을 빠르게 발사합니다.
|
block.salvo.description = 적에게 총알을 빠르게 일제히 발사합니다.
|
||||||
block.fuse.description = 넓은 근거리 파편 포탑. 근처의 적에게 3개의 관통 총알을 발사합니다.
|
block.fuse.description = 주변 적에게 3개의 단거리 관통 레이저를 발사합니다.
|
||||||
block.ripple.description = 매우 강력한 포병 포탑. 원거리에 있는 적에게 포탄 무리를 쏘세요.
|
block.ripple.description = 장거리에 걸쳐 지상 적에게 포탄 무리를 발사합니다.
|
||||||
block.cyclone.description = 대공 및 대지 포탑. 근처 적에게 폭발탄을 발사합니다.
|
block.cyclone.description = 근처 적에게 폭발 파편 덩어리를 발사합니다.
|
||||||
block.spectre.description = 거대한 이중 배럴 대포. 공중 및 지상 목표물에 큰 관통 철갑탄을 발사합니다.
|
block.spectre.description = 공중 및 지상 목표물에게 큰 관통 철갑탄을 발사합니다.
|
||||||
block.meltdown.description = 거대한 레이저 대포. 근처의 적에게 지속적인 레이저 빔을 충전하여 발사합니다. 냉각수가 있어야 작동합니다.
|
block.meltdown.description = 주변 적에게 지속적인 레이저 빔을 충전하여 발사합니다. 냉각 액체가 있어야 작동합니다.
|
||||||
block.foreshadow.description = 긴 거리에 걸친 거대한 단일 목표 볼트를 발사합니다.
|
block.foreshadow.description = 장거리에 걸친 거대한 단일 목표 저격탄을 발사합니다.
|
||||||
block.repair-point.description = 주변에서 가장 가까운 유닛을 지속적으로 치료합니다.
|
block.repair-point.description = 인근에 가장 가까운 유닛을 지속적으로 치료합니다.
|
||||||
block.segment.description = 날아오는 발사체를 요격합니다. 레이저는 목표 대상이 아닙니다.
|
block.segment.description = 날아오는 발사체를 요격합니다. 큰 발사체에겐 조준되지 않습니다.
|
||||||
block.parallax.description = 공중 목표물을 끌어오는 견인 광선을 발사하며, 견인 과정에서 데미지를 줍니다.
|
block.parallax.description = 공중 목표물을 끌어오는 견인 광선을 발사하며, 견인 과정에서 데미지를 줍니다.
|
||||||
block.tsunami.description = 적에게 강력한 액체 줄기를 발사합니다. 물이 공급되면 자동으로 주변의 화재를 진압합니다.
|
block.tsunami.description = 적에게 강력한 액체 줄기를 발사합니다. 물이 공급되면 자동으로 주변의 화재를 진압합니다.
|
||||||
block.silicon-crucible.description = 추가적으로 파이라타이트를 사용하여 더 높은 온도에서 석탄과 모래를 제련합니다. 뜨거운 곳에서 더 효율적입니다.
|
block.silicon-crucible.description = 추가적으로 파이라타이트를 사용하여 더 높은 온도에서 석탄과 모래를 제련합니다. 뜨거운 곳에서 더 효율적입니다.
|
||||||
@@ -1465,8 +1469,8 @@ unit.corvus.description = 적에게 피해를 주고, 아군 구조물을 수리
|
|||||||
unit.crawler.description = 적에게 달려들어서 거대한 폭발을 일으키는 자폭을 합니다.
|
unit.crawler.description = 적에게 달려들어서 거대한 폭발을 일으키는 자폭을 합니다.
|
||||||
unit.atrax.description = 지상 목표물을 약화하는 광재 구체를 발사합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
unit.atrax.description = 지상 목표물을 약화하는 광재 구체를 발사합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
||||||
unit.spiroct.description = 적에게 흡혈 레이저 빔을 발사하며, 흡혈을 통해 체력을 회복합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
unit.spiroct.description = 적에게 흡혈 레이저 빔을 발사하며, 흡혈을 통해 체력을 회복합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
||||||
unit.arkyid.description = 적에게 흡혈 레이저 빔을 발사하며, 흡혈을 통해 체력을 회복합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
unit.arkyid.description = 적에게 큰 흡혈 레이저 빔을 발사하며, 흡혈을 통해 체력을 회복합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
||||||
unit.toxopid.description = 적에게 큰 전기 확산탄과 관통 레이저를 발사합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
unit.toxopid.description = 적에게 큰 전격 포탄 무리와 관통 레이저를 발사합니다. 대부분의 지형 위를 밟을 수 있습니다.
|
||||||
unit.flare.description = 지상 목표물에 일반적인 탄환을 발사합니다.
|
unit.flare.description = 지상 목표물에 일반적인 탄환을 발사합니다.
|
||||||
unit.horizon.description = 지상 목표물에 폭탄을 투하합니다.
|
unit.horizon.description = 지상 목표물에 폭탄을 투하합니다.
|
||||||
unit.zenith.description = 주변 모든 적에게 미사일을 살포합니다.
|
unit.zenith.description = 주변 모든 적에게 미사일을 살포합니다.
|
||||||
|
|||||||
@@ -47,8 +47,6 @@ public class Vars implements Loadable{
|
|||||||
public static final int bufferSize = 8192;
|
public static final int bufferSize = 8192;
|
||||||
/** global charset, since Android doesn't support the Charsets class */
|
/** global charset, since Android doesn't support the Charsets class */
|
||||||
public static final Charset charset = Charset.forName("UTF-8");
|
public static final Charset charset = Charset.forName("UTF-8");
|
||||||
/** mods suggested for import */
|
|
||||||
public static final String[] suggestedMods = {""};
|
|
||||||
/** main application name, capitalized */
|
/** main application name, capitalized */
|
||||||
public static final String appName = "Mindustry";
|
public static final String appName = "Mindustry";
|
||||||
/** URL for itch.io donations. */
|
/** URL for itch.io donations. */
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class BaseAI{
|
|||||||
private static int correct = 0, incorrect = 0;
|
private static int correct = 0, incorrect = 0;
|
||||||
|
|
||||||
private int lastX, lastY, lastW, lastH;
|
private int lastX, lastY, lastW, lastH;
|
||||||
private boolean triedWalls;
|
private boolean triedWalls, foundPath;
|
||||||
|
|
||||||
TeamData data;
|
TeamData data;
|
||||||
Interval timer = new Interval(4);
|
Interval timer = new Interval(4);
|
||||||
@@ -114,6 +114,9 @@ public class BaseAI{
|
|||||||
}
|
}
|
||||||
|
|
||||||
calcPath.add(calcTile.pos());
|
calcPath.add(calcTile.pos());
|
||||||
|
for(Point2 p : Geometry.d8){
|
||||||
|
calcPath.add(Point2.pack(p.x + calcTile.x, p.y + calcTile.y));
|
||||||
|
}
|
||||||
|
|
||||||
//found the end.
|
//found the end.
|
||||||
if(calcTile.build instanceof CoreBuild b && b.team == state.rules.defaultTeam){
|
if(calcTile.build instanceof CoreBuild b && b.team == state.rules.defaultTeam){
|
||||||
@@ -125,6 +128,7 @@ public class BaseAI{
|
|||||||
calcPath.clear();
|
calcPath.clear();
|
||||||
calcTile = null;
|
calcTile = null;
|
||||||
totalCalcs ++;
|
totalCalcs ++;
|
||||||
|
foundPath = true;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -135,7 +139,7 @@ public class BaseAI{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//only schedule when there's something to build.
|
//only schedule when there's something to build.
|
||||||
if(totalCalcs > 0 && data.blocks.isEmpty() && timer.get(timerStep, Mathf.lerp(20f, 4f, data.team.rules().aiTier))){
|
if(foundPath && data.blocks.isEmpty() && timer.get(timerStep, Mathf.lerp(20f, 4f, data.team.rules().aiTier))){
|
||||||
if(!triedWalls){
|
if(!triedWalls){
|
||||||
tryWalls();
|
tryWalls();
|
||||||
triedWalls = true;
|
triedWalls = true;
|
||||||
|
|||||||
@@ -462,10 +462,11 @@ public class TechTree implements ContentList{
|
|||||||
new Research(conduit),
|
new Research(conduit),
|
||||||
new Research(wave)
|
new Research(wave)
|
||||||
), () -> {
|
), () -> {
|
||||||
//TODO change positions?
|
|
||||||
node(impact0078, Seq.with(
|
node(impact0078, Seq.with(
|
||||||
new SectorComplete(tarFields),
|
new SectorComplete(tarFields),
|
||||||
new Research(Items.thorium),
|
new Research(Items.thorium),
|
||||||
|
new Research(lancer),
|
||||||
|
new Research(salvo),
|
||||||
new Research(coreFoundation)
|
new Research(coreFoundation)
|
||||||
), () -> {
|
), () -> {
|
||||||
node(desolateRift, Seq.with(
|
node(desolateRift, Seq.with(
|
||||||
|
|||||||
@@ -341,7 +341,7 @@ public class Control implements ApplicationListener, Loadable{
|
|||||||
state.rules.waves = true;
|
state.rules.waves = true;
|
||||||
|
|
||||||
//reset win wave??
|
//reset win wave??
|
||||||
state.rules.winWave = state.rules.attackMode ? -1 : sector.preset != null ? sector.preset.captureWave : state.rules.winWave > state.wave ? state.rules.winWave : 40;
|
state.rules.winWave = state.rules.attackMode ? -1 : sector.preset != null && sector.preset.captureWave > 0 ? sector.preset.captureWave : state.rules.winWave > state.wave ? state.rules.winWave : 40;
|
||||||
|
|
||||||
//if there's still an enemy base left, fix it
|
//if there's still an enemy base left, fix it
|
||||||
if(state.rules.attackMode){
|
if(state.rules.attackMode){
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ public class Logic implements ApplicationListener{
|
|||||||
});
|
});
|
||||||
|
|
||||||
//sync research
|
//sync research
|
||||||
Events.on(ResearchEvent.class, e -> {
|
Events.on(UnlockEvent.class, e -> {
|
||||||
if(net.server()){
|
if(net.server()){
|
||||||
Call.researched(e.content);
|
Call.researched(e.content);
|
||||||
}
|
}
|
||||||
@@ -243,8 +243,10 @@ public class Logic implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateWeather(){
|
private void updateWeather(){
|
||||||
|
state.rules.weather.removeAll(w -> w.weather == null);
|
||||||
|
|
||||||
for(WeatherEntry entry : state.rules.weather){
|
for(WeatherEntry entry : state.rules.weather){
|
||||||
|
if(entry.weather == null) continue;
|
||||||
//update cooldown
|
//update cooldown
|
||||||
entry.cooldown -= Time.delta;
|
entry.cooldown -= Time.delta;
|
||||||
|
|
||||||
|
|||||||
@@ -615,6 +615,7 @@ public class World{
|
|||||||
GenerateInput input = new GenerateInput();
|
GenerateInput input = new GenerateInput();
|
||||||
|
|
||||||
for(GenerateFilter filter : filters){
|
for(GenerateFilter filter : filters){
|
||||||
|
filter.randomize();
|
||||||
input.begin(filter, width(), height(), (x, y) -> tiles.getn(x, y));
|
input.begin(filter, width(), height(), (x, y) -> tiles.getn(x, y));
|
||||||
filter.apply(tiles, input);
|
filter.apply(tiles, input);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ public class SectorInfo{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//if there are infinite waves and no win wave, add a win wave.
|
//if there are infinite waves and no win wave, add a win wave.
|
||||||
if(waves && winWave <= 0 && !attack){
|
if(winWave <= 0 && !attack){
|
||||||
winWave = 30;
|
winWave = 30;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -229,8 +229,9 @@ public class SectorInfo{
|
|||||||
|
|
||||||
//cap production/export by production
|
//cap production/export by production
|
||||||
production.get(item).mean = Math.min(production.get(item).mean, rawProduction.get(item).mean);
|
production.get(item).mean = Math.min(production.get(item).mean, rawProduction.get(item).mean);
|
||||||
|
|
||||||
if(export.containsKey(item)){
|
if(export.containsKey(item)){
|
||||||
export.get(item).mean = Math.min(export.get(item).mean, rawProduction.get(item).mean);
|
export.get(item).mean = Math.min(export.get(item).mean, Math.max(rawProduction.get(item).mean, -production.get(item).mean));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public class Universe{
|
|||||||
if(state.hasSector()){
|
if(state.hasSector()){
|
||||||
//update sector light
|
//update sector light
|
||||||
float light = state.getSector().getLight();
|
float light = state.getSector().getLight();
|
||||||
float alpha = Mathf.clamp(Mathf.map(light, 0f, 0.8f, 0.2f, 1f));
|
float alpha = Mathf.clamp(Mathf.map(light, 0f, 0.8f, 0.3f, 1f));
|
||||||
|
|
||||||
//assign and map so darkness is not 100% dark
|
//assign and map so darkness is not 100% dark
|
||||||
state.rules.ambientLight.a = 1f - alpha;
|
state.rules.ambientLight.a = 1f - alpha;
|
||||||
|
|||||||
@@ -114,6 +114,7 @@ public abstract class LStatement{
|
|||||||
t.actions(Actions.alpha(0), Actions.fadeIn(0.3f, Interp.fade));
|
t.actions(Actions.alpha(0), Actions.fadeIn(0.3f, Interp.fade));
|
||||||
|
|
||||||
t.top().pane(inner -> {
|
t.top().pane(inner -> {
|
||||||
|
inner.marginRight(24f);
|
||||||
inner.top();
|
inner.top();
|
||||||
hideCons.get(inner, hide);
|
hideCons.get(inner, hide);
|
||||||
}).top();
|
}).top();
|
||||||
|
|||||||
@@ -528,7 +528,9 @@ public class LStatements{
|
|||||||
|
|
||||||
stack.clearChildren();
|
stack.clearChildren();
|
||||||
stack.addChild(tables[selected]);
|
stack.addChild(tables[selected]);
|
||||||
t.pack();
|
|
||||||
|
t.parent.parent.pack();
|
||||||
|
t.parent.parent.invalidateHierarchy();
|
||||||
}).size(80f, 50f).growX().checked(selected == fi).group(group);
|
}).size(80f, 50f).growX().checked(selected == fi).group(group);
|
||||||
}
|
}
|
||||||
t.row();
|
t.row();
|
||||||
|
|||||||
@@ -23,24 +23,27 @@ public abstract class GenerateFilter{
|
|||||||
//buffer of tiles used, each tile packed into a long struct
|
//buffer of tiles used, each tile packed into a long struct
|
||||||
long[] buffer = new long[tiles.width * tiles.height];
|
long[] buffer = new long[tiles.width * tiles.height];
|
||||||
|
|
||||||
//save to buffer
|
|
||||||
for(int i = 0; i < tiles.width * tiles.height; i++){
|
for(int i = 0; i < tiles.width * tiles.height; i++){
|
||||||
Tile tile = tiles.geti(i);
|
Tile tile = tiles.geti(i);
|
||||||
buffer[i] = PackTile.get(tile.blockID(), tile.floorID(), tile.overlayID());
|
|
||||||
|
in.apply(tile.x, tile.y, tile.block(), tile.floor(), tile.overlay());
|
||||||
|
apply();
|
||||||
|
|
||||||
|
buffer[i] = PackTile.get(in.block.id, in.floor.id, in.overlay.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//write to buffer
|
||||||
for(int i = 0; i < tiles.width * tiles.height; i++){
|
for(int i = 0; i < tiles.width * tiles.height; i++){
|
||||||
Tile tile = tiles.geti(i);
|
Tile tile = tiles.geti(i);
|
||||||
long b = buffer[i];
|
long b = buffer[i];
|
||||||
|
|
||||||
in.apply(tile.x, tile.y, Vars.content.block(PackTile.block(b)), Vars.content.block(PackTile.floor(b)), Vars.content.block(PackTile.overlay(b)));
|
Block block = Vars.content.block(PackTile.block(b)), floor = Vars.content.block(PackTile.floor(b)), overlay = Vars.content.block(PackTile.overlay(b));
|
||||||
apply();
|
|
||||||
|
|
||||||
tile.setFloor(in.floor.asFloor());
|
tile.setFloor(floor.asFloor());
|
||||||
tile.setOverlay(!in.floor.asFloor().hasSurface() && in.overlay.asFloor().needsSurface ? Blocks.air : in.overlay);
|
tile.setOverlay(!floor.asFloor().hasSurface() && overlay.asFloor().needsSurface ? Blocks.air : overlay);
|
||||||
|
|
||||||
if(!tile.block().synthetic() && !in.block.synthetic()){
|
if(!tile.block().synthetic() && !block.synthetic()){
|
||||||
tile.setBlock(in.block);
|
tile.setBlock(block);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@@ -151,8 +151,17 @@ public class BaseGenerator{
|
|||||||
//clear path for ground units
|
//clear path for ground units
|
||||||
for(Tile tile : cores){
|
for(Tile tile : cores){
|
||||||
Astar.pathfind(tile, spawn, t -> t.team() == state.rules.waveTeam && !t.within(tile, 25f * 8) ? 100000 : t.floor().hasSurface() ? 1 : 10, t -> !t.block().isStatic()).each(t -> {
|
Astar.pathfind(tile, spawn, t -> t.team() == state.rules.waveTeam && !t.within(tile, 25f * 8) ? 100000 : t.floor().hasSurface() ? 1 : 10, t -> !t.block().isStatic()).each(t -> {
|
||||||
if(t.team() == state.rules.waveTeam && !t.within(tile, 25f * 8)){
|
if(!t.within(tile, 25f * 8)){
|
||||||
t.setBlock(Blocks.air);
|
if(t.team() == state.rules.waveTeam){
|
||||||
|
t.setBlock(Blocks.air);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(Point2 p : Geometry.d8){
|
||||||
|
Tile other = t.nearby(p);
|
||||||
|
if(other != null && other.team() == state.rules.waveTeam){
|
||||||
|
other.setBlock(Blocks.air);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ public class ArcNetProvider implements NetProvider{
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
server = new Server(8192, 8192, new PacketSerializer());
|
server = new Server(32768, 8192, new PacketSerializer());
|
||||||
server.setMulticast(multicastGroup, multicastPort);
|
server.setMulticast(multicastGroup, multicastPort);
|
||||||
server.setDiscoveryHandler((address, handler) -> {
|
server.setDiscoveryHandler((address, handler) -> {
|
||||||
ByteBuffer buffer = NetworkIO.writeServerData();
|
ByteBuffer buffer = NetworkIO.writeServerData();
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public class Fonts{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static int cursorScale(){
|
public static int cursorScale(){
|
||||||
return Math.max(1, Mathf.round(Scl.scl(1f)));
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void loadFonts(){
|
public static void loadFonts(){
|
||||||
|
|||||||
@@ -541,12 +541,14 @@ public class JoinDialog extends BaseDialog{
|
|||||||
Log.info("Fetched @ community servers.", defaultServers.size);
|
Log.info("Fetched @ community servers.", defaultServers.size);
|
||||||
}catch(Throwable e){
|
}catch(Throwable e){
|
||||||
Log.err("Failed to parse community servers.");
|
Log.err("Failed to parse community servers.");
|
||||||
|
Log.err(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}catch(Throwable e){
|
}catch(Throwable e){
|
||||||
Log.err("Failed to fetch community servers.");
|
Log.err("Failed to fetch community servers.");
|
||||||
|
Log.err(e);
|
||||||
}
|
}
|
||||||
}, t -> {});
|
}, Log::err);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveServers(){
|
private void saveServers(){
|
||||||
|
|||||||
@@ -6,9 +6,12 @@ import arc.files.*;
|
|||||||
import arc.func.*;
|
import arc.func.*;
|
||||||
import arc.graphics.*;
|
import arc.graphics.*;
|
||||||
import arc.graphics.g2d.*;
|
import arc.graphics.g2d.*;
|
||||||
|
import arc.scene.style.*;
|
||||||
import arc.scene.ui.TextButton.*;
|
import arc.scene.ui.TextButton.*;
|
||||||
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import arc.util.io.*;
|
import arc.util.io.*;
|
||||||
|
import mindustry.ctype.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
import mindustry.mod.Mods.*;
|
import mindustry.mod.Mods.*;
|
||||||
@@ -102,13 +105,9 @@ public class ModsDialog extends BaseDialog{
|
|||||||
|
|
||||||
t.button("@mod.import.github", Icon.github, bstyle, () -> {
|
t.button("@mod.import.github", Icon.github, bstyle, () -> {
|
||||||
dialog.hide();
|
dialog.hide();
|
||||||
var modString = Core.settings.getString("lastmod", "");
|
|
||||||
var suggested = Structs.random(suggestedMods);
|
|
||||||
|
|
||||||
ui.showTextInput("@mod.import.github", "", 64, modString.isEmpty() ? suggested : modString, text -> {
|
ui.showTextInput("@mod.import.github", "", 64, Core.settings.getString("lastmod", ""), text -> {
|
||||||
if(!modString.isEmpty() || !Structs.eq(suggested, text)){
|
Core.settings.put("lastmod", text);
|
||||||
Core.settings.put("lastmod", text);
|
|
||||||
}
|
|
||||||
|
|
||||||
ui.loadfrag.show();
|
ui.loadfrag.show();
|
||||||
//Try to download the 6.0 branch first, but if it doesn't exist, try master.
|
//Try to download the 6.0 branch first, but if it doesn't exist, try master.
|
||||||
@@ -266,54 +265,73 @@ public class ModsDialog extends BaseDialog{
|
|||||||
desc.add("@editor.description").padRight(10).color(Color.gray).top();
|
desc.add("@editor.description").padRight(10).color(Color.gray).top();
|
||||||
desc.row();
|
desc.row();
|
||||||
desc.add(mod.meta.description).growX().wrap().padTop(2);
|
desc.add(mod.meta.description).growX().wrap().padTop(2);
|
||||||
|
desc.row();
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO add this when mods work properly
|
}).width(400f);
|
||||||
/*
|
|
||||||
Array<UnlockableContent> all = Array.with(content.getContentMap()).<Content>flatten().select(c -> c.minfo.mod == mod && c instanceof UnlockableContent).as(UnlockableContent.class);
|
//TODO maybe enable later
|
||||||
|
if(false){
|
||||||
|
Seq<UnlockableContent> all = Seq.with(content.getContentMap()).<Content>flatten().select(c -> c.minfo.mod == mod && c instanceof UnlockableContent).as();
|
||||||
if(all.any()){
|
if(all.any()){
|
||||||
desc.add("@mod.content").padRight(10).color(Color.gray).top();
|
dialog.cont.row();
|
||||||
desc.row();
|
dialog.cont.pane(cs -> {
|
||||||
desc.pane(cs -> {
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for(UnlockableContent c : all){
|
for(UnlockableContent c : all){
|
||||||
cs.addImageButton(new TextureRegionDrawable(c.icon(Cicon.medium)), () -> {
|
cs.button(new TextureRegionDrawable(c.icon(Cicon.medium)), Styles.cleari, Cicon.medium.size, () -> {
|
||||||
ui.content.show(c);
|
ui.content.show(c);
|
||||||
|
}).size(50f).with(im -> {
|
||||||
|
var click = im.getClickListener();
|
||||||
|
im.update(() -> im.getImage().color.lerp(!click.isOver() ? Color.lightGray : Color.white, 0.4f * Time.delta));
|
||||||
});
|
});
|
||||||
|
|
||||||
if(++i % 8 == 0) cs.row();
|
if(++i % 8 == 0) cs.row();
|
||||||
}
|
}
|
||||||
}).growX().minHeight(60f);
|
}).growX().minHeight(60f);
|
||||||
}*/
|
}
|
||||||
}).width(400f);
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void githubImport(String branch, String repo, Cons<HttpStatus> err){
|
private void handleMod(String repo, HttpResponse result){
|
||||||
Core.net.httpGet("http://api.github.com/repos/" + repo + "/zipball/" + branch, loc -> {
|
try{
|
||||||
Core.net.httpGet(loc.getHeader("Location"), result -> {
|
Fi file = tmpDirectory.child(repo.replace("/", "") + ".zip");
|
||||||
if(result.getStatus() != HttpStatus.OK){
|
Streams.copy(result.getResultAsStream(), file.write(false));
|
||||||
err.get(result.getStatus());
|
mods.importMod(file);
|
||||||
}else{
|
file.delete();
|
||||||
try{
|
Core.app.post(() -> {
|
||||||
Fi file = tmpDirectory.child(repo.replace("/", "") + ".zip");
|
try{
|
||||||
Streams.copy(result.getResultAsStream(), file.write(false));
|
setup();
|
||||||
mods.importMod(file);
|
ui.loadfrag.hide();
|
||||||
file.delete();
|
}catch(Throwable e){
|
||||||
Core.app.post(() -> {
|
ui.showException(e);
|
||||||
try{
|
|
||||||
setup();
|
|
||||||
ui.loadfrag.hide();
|
|
||||||
}catch(Throwable e){
|
|
||||||
ui.showException(e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}catch(Throwable e){
|
|
||||||
modError(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, t2 -> Core.app.post(() -> modError(t2)));
|
});
|
||||||
|
}catch(Throwable e){
|
||||||
|
modError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void githubImport(String branch, String repo, Cons<HttpStatus> err){
|
||||||
|
Core.net.httpGet("https://api.github.com/repos/" + repo + "/zipball/" + branch, loc -> {
|
||||||
|
if(loc.getStatus() == HttpStatus.OK){
|
||||||
|
if(loc.getHeader("Location") != null){
|
||||||
|
Core.net.httpGet(loc.getHeader("Location"), result -> {
|
||||||
|
if(result.getStatus() != HttpStatus.OK){
|
||||||
|
err.get(result.getStatus());
|
||||||
|
}else{
|
||||||
|
handleMod(repo, result);
|
||||||
|
}
|
||||||
|
}, t2 -> Core.app.post(() -> modError(t2)));
|
||||||
|
}else{
|
||||||
|
handleMod(repo, loc);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
err.get(loc.getStatus());
|
||||||
|
}
|
||||||
}, t2 -> Core.app.post(() -> modError(t2)));
|
}, t2 -> Core.app.post(() -> modError(t2)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -318,9 +318,10 @@ public class LogicBlock extends Block{
|
|||||||
|
|
||||||
//store any older variables
|
//store any older variables
|
||||||
for(Var var : executor.vars){
|
for(Var var : executor.vars){
|
||||||
if(!var.constant){
|
boolean unit = var.name.equals("@unit");
|
||||||
|
if(!var.constant || unit){
|
||||||
BVar dest = asm.getVar(var.name);
|
BVar dest = asm.getVar(var.name);
|
||||||
if(dest != null && !dest.constant){
|
if(dest != null && (!dest.constant || unit)){
|
||||||
dest.value = var.isobj ? var.objval : var.numval;
|
dest.value = var.isobj ? var.objval : var.numval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,23 +88,13 @@
|
|||||||
"jre/lib/amd64/libdt_socket.so",
|
"jre/lib/amd64/libdt_socket.so",
|
||||||
"jre/lib/amd64/libsplashscreen.so",
|
"jre/lib/amd64/libsplashscreen.so",
|
||||||
"jre/lib/amd64/libunpack.so",
|
"jre/lib/amd64/libunpack.so",
|
||||||
"jre/lib/amd64/liblcms.so",
|
|
||||||
"jre/lib/amd64/libnpt.so",
|
"jre/lib/amd64/libnpt.so",
|
||||||
"jre/lib/amd64/libmlib_image.so",
|
"jre/lib/amd64/libmlib_image.so",
|
||||||
"jre/lib/amd64/libjsig.so",
|
|
||||||
"jre/lib/amd64/libinstrument.so",
|
"jre/lib/amd64/libinstrument.so",
|
||||||
"jre/lib/amd64/libjaas_unix.so",
|
|
||||||
"jre/lib/amd64/libj2pcsc.so",
|
|
||||||
"jre/lib/amd64/libsaproc.so",
|
|
||||||
"jre/lib/amd64/libsunec.so",
|
|
||||||
"jre/lib/amd64/libj2pkcs11.so",
|
|
||||||
"jre/lib/amd64/libjsdt.so",
|
|
||||||
"jre/lib/amd64/libjdwp.so",
|
|
||||||
"jre/lib/amd64/libjava_crw_demo.so",
|
"jre/lib/amd64/libjava_crw_demo.so",
|
||||||
"jre/lib/amd64/libfreetype.so",
|
"jre/lib/amd64/libfreetype.so",
|
||||||
"jre/lib/amd64/libmanagement.so",
|
"jre/lib/amd64/libmanagement.so",
|
||||||
"jre/lib/amd64/libsctp.so",
|
"jre/lib/amd64/libsctp.so",
|
||||||
"jre/lib/amd64/libj2gss.so",
|
|
||||||
"jre/lib/amd64/libjpeg.so",
|
"jre/lib/amd64/libjpeg.so",
|
||||||
"jre/lib/amd64/libfreetype.so.6",
|
"jre/lib/amd64/libfreetype.so.6",
|
||||||
"jre/lib/amd64/libjsoundalsa.so",
|
"jre/lib/amd64/libjsoundalsa.so",
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package mindustry.desktop.steam;
|
package mindustry.desktop.steam;
|
||||||
|
|
||||||
import arc.*;
|
import arc.*;
|
||||||
|
import arc.math.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import com.codedisaster.steamworks.*;
|
import com.codedisaster.steamworks.*;
|
||||||
@@ -99,13 +100,13 @@ public class SStats implements SteamUserStatsCallback{
|
|||||||
for(Sector sec : planet.sectors){
|
for(Sector sec : planet.sectors){
|
||||||
if(sec.hasBase()){
|
if(sec.hasBase()){
|
||||||
for(var v : sec.info.production.values()){
|
for(var v : sec.info.production.values()){
|
||||||
total += v.mean;
|
if(v.mean > 0) total += v.mean * 60;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SStat.maxProduction.max((int)total);
|
SStat.maxProduction.max(Mathf.round(total));
|
||||||
});
|
});
|
||||||
|
|
||||||
Events.run(Trigger.newGame, () -> Core.app.post(() -> {
|
Events.run(Trigger.newGame, () -> Core.app.post(() -> {
|
||||||
|
|||||||
6
fastlane/metadata/android/en-US/changelogs/29750.txt
Normal file
6
fastlane/metadata/android/en-US/changelogs/29750.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[This is a truncated changelog, see Github for full notes]
|
||||||
|
- Leaving sectors while guardians are present is now heavily penalized
|
||||||
|
- Made community servers sort by ping
|
||||||
|
- Changed "global items" to "total items"
|
||||||
|
- Added hint about core item incineration
|
||||||
|
- Made sector landing zones display on map when visible but not unlocked
|
||||||
6
fastlane/metadata/android/en-US/changelogs/29753.txt
Normal file
6
fastlane/metadata/android/en-US/changelogs/29753.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[This is a truncated changelog, see Github for full notes]
|
||||||
|
- Leaving sectors while guardians are present is now heavily penalized
|
||||||
|
- Made community servers sort by ping
|
||||||
|
- Changed "global items" to "total items"
|
||||||
|
- Added hint about core item incineration
|
||||||
|
- Made sector landing zones display on map when visible but not unlocked
|
||||||
6
fastlane/metadata/android/en-US/changelogs/29755.txt
Normal file
6
fastlane/metadata/android/en-US/changelogs/29755.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[This is a truncated changelog, see Github for full notes]
|
||||||
|
- Leaving sectors while guardians are present is now heavily penalized
|
||||||
|
- Made community servers sort by ping
|
||||||
|
- Changed "global items" to "total items"
|
||||||
|
- Added hint about core item incineration
|
||||||
|
- Made sector landing zones display on map when visible but not unlocked
|
||||||
6
fastlane/metadata/android/en-US/changelogs/29757.txt
Normal file
6
fastlane/metadata/android/en-US/changelogs/29757.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[This is a truncated changelog, see Github for full notes]
|
||||||
|
- Leaving sectors while guardians are present is now heavily penalized
|
||||||
|
- Made community servers sort by ping
|
||||||
|
- Changed "global items" to "total items"
|
||||||
|
- Added hint about core item incineration
|
||||||
|
- Made sector landing zones display on map when visible but not unlocked
|
||||||
6
fastlane/metadata/android/en-US/changelogs/29759.txt
Normal file
6
fastlane/metadata/android/en-US/changelogs/29759.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[This is a truncated changelog, see Github for full notes]
|
||||||
|
- Leaving sectors while guardians are present is now heavily penalized
|
||||||
|
- Made community servers sort by ping
|
||||||
|
- Changed "global items" to "total items"
|
||||||
|
- Added hint about core item incineration
|
||||||
|
- Made sector landing zones display on map when visible but not unlocked
|
||||||
6
fastlane/metadata/android/en-US/changelogs/29761.txt
Normal file
6
fastlane/metadata/android/en-US/changelogs/29761.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[This is a truncated changelog, see Github for full notes]
|
||||||
|
- Leaving sectors while guardians are present is now heavily penalized
|
||||||
|
- Made community servers sort by ping
|
||||||
|
- Changed "global items" to "total items"
|
||||||
|
- Added hint about core item incineration
|
||||||
|
- Made sector landing zones display on map when visible but not unlocked
|
||||||
6
fastlane/metadata/android/en-US/changelogs/29763.txt
Normal file
6
fastlane/metadata/android/en-US/changelogs/29763.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[This is a truncated changelog, see Github for full notes]
|
||||||
|
- Leaving sectors while guardians are present is now heavily penalized
|
||||||
|
- Made community servers sort by ping
|
||||||
|
- Changed "global items" to "total items"
|
||||||
|
- Added hint about core item incineration
|
||||||
|
- Made sector landing zones display on map when visible but not unlocked
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
org.gradle.daemon=true
|
org.gradle.daemon=true
|
||||||
org.gradle.jvmargs=-Xms256m -Xmx1024m
|
org.gradle.jvmargs=-Xms256m -Xmx1024m
|
||||||
archash=d44cbae08716cfe97012c84399a1e61854d6b16c
|
archash=d9f2b846e51e511aa4985c32297f6cdc8552ca87
|
||||||
|
|||||||
@@ -85,8 +85,6 @@ public class ApplicationTests{
|
|||||||
}catch(Throwable r){
|
}catch(Throwable r){
|
||||||
fail(r);
|
fail(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.info("init app");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ public class PowerTestFixture{
|
|||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
static void initializeDependencies(){
|
static void initializeDependencies(){
|
||||||
Log.info("init power test fixture");
|
|
||||||
headless = true;
|
headless = true;
|
||||||
Core.graphics = new FakeGraphics();
|
Core.graphics = new FakeGraphics();
|
||||||
Core.files = new MockFiles();
|
Core.files = new MockFiles();
|
||||||
|
|||||||
Reference in New Issue
Block a user