Merge remote-tracking branch 'origin/master' into sharp/zoomy-worldgen

This commit is contained in:
Joshua Yanovski 2022-07-27 15:30:37 -07:00
commit 9ebf07c6e1
691 changed files with 7751 additions and 2970 deletions

View File

@ -3,6 +3,12 @@ rustflags = [
"-C", "link-arg=-fuse-ld=gold",
]
[target.x86_64-pc-windows-gnu]
rustflags = [
# Required for mimalloc
"-C", "link-arg=-lpsapi",
]
[alias]
# tools
cmd-doc-gen = "run --features=bin_cmd_doc_gen --bin cmd_doc_gen"

View File

@ -13,7 +13,7 @@ variables:
# https://docs.gitlab.com/ee/ci/yaml/#shallow-cloning
GIT_DEPTH: 3
GIT_CLEAN_FLAGS: -f
CACHE_IMAGE_TAG: 59fdc4df
CACHE_IMAGE_TAG: c96aef21
TAG_REGEX: '/^v[0-9]+\.[0-9]+\.[0-9]+$/'
default:

View File

@ -59,6 +59,7 @@ coverage:
extends: .release
stage: build
image: registry.gitlab.com/veloren/veloren-docker-ci/cache/tarpaulin:${CACHE_IMAGE_TAG}
coverage: '/^\d+.\d+% coverage/'
tags: ["veloren/veloren", "check"]
script:
- ln -s /dockercache/target target

View File

@ -2,5 +2,8 @@
# exports default env variables in CI
export DISABLE_GIT_LFS_CHECK=true
export VELOREN_ASSETS="assets"
# When updating RUSTFLAGS here, windows-x86_64.sh must also be updated as it sets them independently
export RUSTFLAGS="-D warnings"
export SHADERC_LIB_DIR=/shaderc/combined/

View File

@ -2,4 +2,10 @@
update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
export VELOREN_USERDATA_STRATEGY=executable
# RUSTFLAGS is set here in addition to env.sh (which is used for all targets not just windows) due to
# https://github.com/rust-lang/cargo/issues/5376 which prevents the windows-specific rustflags set in
# .cargo/config from being applied
export RUSTFLAGS="-D warnings -C link-arg=-lpsapi"
time cargo build --target=x86_64-pc-windows-gnu --release --no-default-features --features default-publish

View File

@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added
### Changed
### Removed
### Fixed
## [0.13.0] - 2022-07-23
### Added
- Chat commands to mute and unmute players
- Waypoints saved between sessions and shared with group members.
@ -38,6 +48,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Slider for ambience volume
- Weather generated on server is sent to clients, and seen on clients as rain/clouds.
- Updated Brazilian Portuguese Translation
- Lightning storms
- More varied ambient birdcalls
- Cave biomes
- Updated the Polish translation
### Changed
@ -56,6 +70,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Optimized sprite processing decreasing the startup time of voxygen (and long freezes when trying
to enter the world when this hasn't finished).
- Metadata added to music files. Listen to the soundtrack more easily!
- Overhauled caves: they're now a multi-layer network spanning the entire world
### Removed
- Removed the options for single and cumulated damage.
@ -78,6 +93,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Most sfx now correctly play when camera is underwater
- All sounds now stop upon quitting to main menu
- Combat music now loops and ends properly
- Modular weapons now have a selling price
- Closing a subwindow now only regrabs the cursor if no other subwindow requires it.
## [0.12.0] - 2022-02-19
@ -985,7 +1002,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
_0.1.0 was part of the legacy engine_
[unreleased]: https://gitlab.com/veloren/veloren/compare?from=v0.12.0&to=master
[unreleased]: https://gitlab.com/veloren/veloren/compare?from=v0.13.0&to=master
[0.13.0]: https://gitlab.com/veloren/veloren/compare?from=v0.12.0&to=v0.13.0
[0.12.0]: https://gitlab.com/veloren/veloren/compare?from=v0.11.0&to=v0.12.0
[0.11.0]: https://gitlab.com/veloren/veloren/compare?from=v0.10.0&to=v0.11.0
[0.10.0]: https://gitlab.com/veloren/veloren/compare?from=v0.9.0&to=v0.10.0

32
Cargo.lock generated
View File

@ -4956,6 +4956,15 @@ dependencies = [
"petgraph 0.5.1",
]
[[package]]
name = "roxmltree"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "921904a62e410e37e215c40381b7117f830d9d89ba60ab5236170541dd25646b"
dependencies = [
"xmlparser",
]
[[package]]
name = "rstar"
version = "0.9.2"
@ -5425,9 +5434,9 @@ dependencies = [
[[package]]
name = "shaderc"
version = "0.6.3"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50b8aeaae10b9bda5cba66736a7e265f67698e912e1cc6a4678acba286e22be9"
checksum = "80e6fe602a861622769530a23bc40bfba31adbf186d0c8412e83f5519c5d6bee"
dependencies = [
"libc",
"shaderc-sys",
@ -5435,12 +5444,13 @@ dependencies = [
[[package]]
name = "shaderc-sys"
version = "0.6.3"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b12d7c62d6732884c9dfab587503fa3a795b108df152415a89da23812d4737e"
checksum = "3794498651f8173d0afbc0bb8aca45ced111098227e755dde4c0ef2888c8d0bf"
dependencies = [
"cmake",
"libc",
"roxmltree",
]
[[package]]
@ -6463,7 +6473,7 @@ dependencies = [
[[package]]
name = "veloren-client"
version = "0.12.0"
version = "0.13.0"
dependencies = [
"async-channel",
"authc",
@ -6735,7 +6745,7 @@ dependencies = [
[[package]]
name = "veloren-server"
version = "0.12.0"
version = "0.13.0"
dependencies = [
"atomicwrites",
"authc",
@ -6785,7 +6795,7 @@ dependencies = [
[[package]]
name = "veloren-server-cli"
version = "0.12.0"
version = "0.13.0"
dependencies = [
"ansi-parser",
"clap 3.1.8",
@ -6809,7 +6819,7 @@ dependencies = [
[[package]]
name = "veloren-voxygen"
version = "0.12.0"
version = "0.13.0"
dependencies = [
"assets_manager",
"backtrace",
@ -7970,6 +7980,12 @@ version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3"
[[package]]
name = "xmlparser"
version = "0.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "114ba2b24d2167ef6d67d7d04c8cc86522b87f490025f39f0303b7db5bf5e3d8"
[[package]]
name = "yasna"
version = "0.5.0"

View File

@ -311,9 +311,9 @@
keyword: "orc",
generic: "Orc"
),
undead: (
keyword: "undead",
generic: "Undead"
draugr: (
keyword: "draugr",
generic: "Draugr"
)
)
),

View File

@ -30,8 +30,11 @@
(4.0, Item("common.items.crafting_ing.hide.animal_hide")),
// Mob Drops
(0.10, Item("common.items.crafting_ing.animal_misc.long_tusk")),
(0.15, Item("common.items.crafting_ing.animal_misc.elegant_crest")),
(0.15, Item("common.items.crafting_ing.animal_misc.grim_eyeball")),
(0.15, Item("common.items.crafting_ing.animal_misc.icy_fang")),
(0.2, Item("common.items.crafting_ing.animal_misc.strong_pincer")),
(0.5, Item("common.items.crafting_ing.animal_misc.raptor_feather")),
(1.2, Item("common.items.crafting_ing.animal_misc.claw")),
(2.5, Item("common.items.crafting_ing.animal_misc.fur")),

BIN
assets/voxygen/audio/ambience/leaves.ogg (Stored with Git LFS)

Binary file not shown.

View File

@ -2,7 +2,7 @@
tracks: [
(
path: "voxygen.audio.ambience.wind",
length: 14.203,
length: 14.2,
tag: Wind,
),
(

View File

@ -11,8 +11,16 @@
),
Birdcall: (
files: [
"voxygen.audio.sfx.ambient.birdcall_1",
"voxygen.audio.sfx.ambient.birdcall_2",
"voxygen.audio.sfx.ambient.birdcall_01",
"voxygen.audio.sfx.ambient.birdcall_02",
"voxygen.audio.sfx.ambient.birdcall_03",
"voxygen.audio.sfx.ambient.birdcall_04",
"voxygen.audio.sfx.ambient.birdcall_05",
"voxygen.audio.sfx.ambient.birdcall_06",
"voxygen.audio.sfx.ambient.birdcall_07",
"voxygen.audio.sfx.ambient.birdcall_08",
"voxygen.audio.sfx.ambient.birdcall_09",
"voxygen.audio.sfx.ambient.birdcall_10",
],
threshold: 10.0,
),
@ -1169,5 +1177,11 @@
],
threshold: 1.0,
),
Lightning: (
files: [
"voxygen.audio.sfx.ambient.lightning_1",
],
threshold: 1.0,
),
}
)

BIN
assets/voxygen/audio/sfx/ambient/birdcall_01.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/ambient/birdcall_02.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/ambient/birdcall_03.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/ambient/birdcall_04.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/ambient/birdcall_05.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/ambient/birdcall_06.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/ambient/birdcall_07.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/ambient/birdcall_08.ogg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/audio/sfx/ambient/birdcall_09.ogg (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
assets/voxygen/audio/sfx/ambient/birdcall_10.ogg (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
assets/voxygen/audio/sfx/ambient/lightning_1.ogg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -67,6 +67,7 @@
timing: Some(Night),
biomes: [
(Forest, 1),
(Taiga, 1),
],
site: Some(Void),
music_state: Activity(Explore),
@ -79,6 +80,7 @@
timing: Some(Night),
biomes: [
(Forest, 2),
(Taiga, 1),
],
site: Some(Void),
music_state: Activity(Explore),
@ -226,7 +228,6 @@
weather: None,
biomes: [
(Snowland, 1),
(Taiga, 1),
],
site: Some(Void),
music_state: Activity(Explore),
@ -268,6 +269,7 @@
weather: None,
biomes: [
(Forest, 2),
(Taiga, 1),
],
site: Some(Void),
music_state: Activity(Explore),
@ -282,6 +284,7 @@
biomes: [
(Forest, 2),
(Jungle, 1),
(Taiga, 1),
],
site: Some(Void),
music_state: Activity(Explore),
@ -322,7 +325,6 @@
weather: None,
biomes: [
(Snowland, 1),
(Taiga, 1),
],
site: Some(Void),
music_state: Activity(Explore),
@ -336,7 +338,6 @@
weather: None,
biomes: [
(Snowland, 1),
(Taiga, 1),
],
site: Some(Void),
music_state: Activity(Explore),
@ -376,6 +377,7 @@
weather: None,
biomes: [
(Forest, 2),
(Taiga, 1),
],
site: Some(Void),
music_state: Activity(Explore),
@ -389,6 +391,7 @@
weather: None,
biomes: [
(Mountain, 1),
(Taiga, 1),
],
site: Some(Void),
music_state: Activity(Explore),
@ -402,6 +405,7 @@
weather: None,
biomes: [
(Forest, 2),
(Taiga, 1),
],
site: Some(Void),
music_state: Activity(Explore),
@ -521,6 +525,16 @@
// Cave music
Individual((
title: "Stars Like Stalactites",
path: "voxygen.audio.soundtrack.cave.stars_like_stalactites",
length: 130.0,
timing: None,
biomes: [],
site: Some(Cave),
music_state: Activity(Explore),
artist: "DragonDee",
)),
Individual((
title: "Cavernous Hollow",
path: "voxygen.audio.soundtrack.cave.cavernous_hollow",
@ -641,8 +655,8 @@
biomes: [],
site: Some(Dungeon),
segments: [
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-start", 56.0, Transition(Explore, Combat(High)), Some(Combat(High))),
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-loop", 54.0, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-start", 55.97, Transition(Explore, Combat(High)), Some(Combat(High))),
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-loop", 53.97, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-end", 6.0, Transition(Combat(High), Explore), None),
],
),
@ -653,8 +667,8 @@
biomes: [],
site: Some(Dungeon),
segments: [
("voxygen.audio.soundtrack.combat.reversal.reversal-start", 60.0, Transition(Explore, Combat(High)), Some(Combat(High))),
("voxygen.audio.soundtrack.combat.reversal.reversal-loop", 60.0, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.reversal.reversal-start", 59.97, Transition(Explore, Combat(High)), Some(Combat(High))),
("voxygen.audio.soundtrack.combat.reversal.reversal-loop", 59.97, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.reversal.reversal-end", 4.0, Transition(Combat(High), Explore), None),
],
),

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/voxygen/background/bg_4.jpg (Stored with Git LFS)

Binary file not shown.

BIN
assets/voxygen/background/bg_main.jpg (Stored with Git LFS)

Binary file not shown.

BIN
assets/voxygen/element/animation/loaders/boat1.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/animation/loaders/boat2.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/animation/loaders/boat3.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/animation/loaders/boat4.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -41,4 +41,10 @@
"voxygen.element.animation.loaders.ship4",
"voxygen.element.animation.loaders.ship5",
]),
(2.0, [
"voxygen.element.animation.loaders.boat1",
"voxygen.element.animation.loaders.boat2",
"voxygen.element.animation.loaders.boat3",
"voxygen.element.animation.loaders.boat4",
]),
])

View File

@ -59,7 +59,7 @@
"common.species.human": "Чалавек",
"common.species.dwarf": "Дварф",
"common.species.elf": "Эльф",
"common.species.undead": "Нежыць",
"common.species.draugr": "Нежыць",
"common.species.danari": "Данары",
"common.weapons.axe": "Сякера",

View File

@ -59,7 +59,7 @@ Està el client actualitzat?"#,
"common.species.human": "Humà",
"common.species.dwarf": "Nan",
"common.species.elf": "Elf",
"common.species.undead": "No-mort",
"common.species.draugr": "No-mort",
"common.species.danari": "Danari",
"common.weapons.axe": "Destral",

View File

@ -57,7 +57,7 @@
"common.species.human": "Člověk",
"common.species.dwarf": "Trpaslík",
"common.species.elf": "Elf",
"common.species.undead": "Nemrtvý",
"common.species.draugr": "Nemrtvý",
"common.species.danari": "Danari",
"common.weapons.axe": "Sekera",

View File

@ -57,7 +57,7 @@ Ist das Spiel auf dem neusten Stand?"#,
"common.species.human": "Mensch",
"common.species.dwarf": "Zwerg",
"common.species.elf": "Elf",
"common.species.undead": "Untoter",
"common.species.draugr": "Untoter",
"common.species.danari": "Danari",
"common.weapons.axe": "Axt",

View File

@ -59,7 +59,7 @@ Is the client up to date?"#,
"common.species.human": "Human",
"common.species.dwarf": "Dwarf",
"common.species.elf": "Elf",
"common.species.undead": "Undead",
"common.species.draugr": "Draugr",
"common.species.danari": "Danari",
"common.weapons.axe": "Axe",

View File

@ -58,7 +58,7 @@
"common.species.human": "Humano",
"common.species.dwarf": "Enano",
"common.species.elf": "Elfo",
"common.species.undead": "No muerto",
"common.species.draugr": "No muerto",
"common.species.danari": "Danari",
"common.weapons.axe": "Hacha",

View File

@ -59,7 +59,7 @@
"common.species.human": "Humano",
"common.species.dwarf": "Enano",
"common.species.elf": "Elfo",
"common.species.undead": "No-Muerto",
"common.species.draugr": "No-Muerto",
"common.species.danari": "Danari",
"common.weapons.axe": "Hacha",

View File

@ -57,7 +57,7 @@ Jokoa eguneratuta duzu?"#,
"common.species.human": "Gizakia",
"common.species.dwarf": "Dwarf",
"common.species.elf": "Elfoa",
"common.species.undead": "Ez-hila",
"common.species.draugr": "Ez-hila",
"common.species.danari": "Danari",
"common.weapons.axe": "Aizkora",

View File

@ -58,7 +58,7 @@ Le client est-il à jour ?"#,
"common.species.human": "Humain",
"common.species.dwarf": "Nain",
"common.species.elf": "Elfe",
"common.species.undead": "Mort-vivant",
"common.species.draugr": "Mort-vivant",
"common.species.danari": "Danari",
"common.weapons.axe": "Hâche",

View File

@ -57,7 +57,7 @@ Naprakész a kliens?"#,
"common.species.human": "Ember",
"common.species.dwarf": "Törpe",
"common.species.elf": "Tünde",
"common.species.undead": "Élőhalott",
"common.species.draugr": "Élőhalott",
"common.species.danari": "Danari",
"common.weapons.axe": "Fejsze",

View File

@ -59,7 +59,7 @@ Il client è aggiornato?"#,
"common.species.human": "Umano",
"common.species.dwarf": "Nano",
"common.species.elf": "Elfo",
"common.species.undead": "Non-Morto",
"common.species.draugr": "Non-Morto",
"common.species.danari": "Danari",
"common.weapons.axe": "Ascia",

View File

@ -55,7 +55,7 @@
"common.species.human": "人間",
"common.species.dwarf": "ドワーフ",
"common.species.elf": "エルフ",
"common.species.undead": "アンデッド",
"common.species.draugr": "アンデッド",
"common.species.danari": "デナリ",
"common.weapons.axe": "",

View File

@ -53,7 +53,7 @@ Is je client nog up to date?"#,
"common.species.human": "Mens",
"common.species.dwarf": "Dwerg",
"common.species.elf": "Elf",
"common.species.undead": "Ondood",
"common.species.draugr": "Ondood",
"common.species.danari": "Danari",
"common.weapons.axe": "Bijl",

View File

@ -53,7 +53,7 @@ Har det kommet nye oppdateringer?"#,
"common.species.human": "Menneske",
"common.species.dwarf": "Dverg",
"common.species.elf": "Alv",
"common.species.undead": "Udødelig",
"common.species.draugr": "Udødelig",
"common.species.danari": "Danari",
"common.weapons.axe": "Øks",

View File

@ -1,6 +1,6 @@
/// Localization for Polish
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Tłumaczenia dla języka polskiego
/// Localization for Polish
(
metadata: (
language_name: "Polish",

View File

@ -1,43 +1,43 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
// Buffs
"buff.remove": "Kliknij by usunąć",
"buff.remove": "Kliknij aby usunąć",
"buff.title.missing": "Brak tytułu",
"buff.desc.missing": "Brak opisu",
"buff.title.heal": "Uzdrowienie",
"buff.desc.heal": "Odnawia zdrowie w ciągu chwili",
"buff.desc.heal": "Regenerujesz zdrowie przez określony czas.",
"buff.title.potion": "Mikstura",
"buff.desc.potion": "Można ją wypić...",
"buff.title.saturation": "Najedzenie",
"buff.desc.saturation": "Odzyskaj zdrowie jedząc żywność.",
"buff.desc.saturation": "Możesz odzyskać zdrowie poprzez jedzenie.",
"buff.title.campfire_heal": "Odpoczynek przy ognisku",
"buff.desc.campfire_heal": "Odpoczywanie przy ognisku odnawia {rate}% zdrowia na sekundę.",
"buff.desc.campfire_heal": "Odpoczywanie przy ognisku przywraca {rate}% zdrowia na sekundę.",
"buff.title.invulnerability": "Nietykalność",
"buff.desc.invulnerability": "Nie można Cię zranić.",
"buff.title.protectingward": "Totem ochronny",
"buff.desc.protectingward": "Ochrona, poniekąd, przed atakami.",
"buff.title.frenzied": "Oszalały",
"buff.desc.frenzied": "Jesteś wypełniony nienaturalną prędkością i ignorujesz pomniejsze obrażenia.",
"buff.title.hastened": "Szybkość",
"buff.desc.hastened": "Twoje ruchy i ataki są szybsze.",
"buff.desc.protectingward": "Częściowa ochrona przed atakami.",
"buff.title.frenzied": "Szał Walki",
"buff.desc.frenzied": "Wypełnia cię nienaturalny szał, ignorujesz pomniejsze obrażenia.",
"buff.title.hastened": "Pośpiech",
"buff.desc.hastened": "Twoje ruchy i ataki są szybsze.",
// Debuffs
"buff.title.bleed": "Krwawienie",
"buff.desc.bleed": "Zadaje regularne obrażenia.",
"buff.desc.bleed": "Zadaje ciągłe obrażenia.",
"buff.title.cursed": "Klątwa",
"buff.desc.cursed": "Jesteś przeklęty.",
"buff.title.burn": "Płoniesz",
"buff.title.burn": "Ogień",
"buff.desc.burn": "Palisz się żywcem",
"buff.title.crippled": "Okaleczony",
"buff.desc.crippled": "Ruszasz się jak kaleka, gdyż twoje nogi są bardzo poranione.",
"buff.title.frozen": "Zmrożony",
"buff.desc.frozen": "Twoje ruchy i ataki są spowolnione.",
"buff.title.wet": "Mokry",
"buff.desc.wet": "Ciężko Ci się zatrzymać? W końcu się ślizgasz!",
"buff.title.crippled": "Okaleczenie",
"buff.desc.crippled": "Czy noga powinna się wyginać w tę stronę?",
"buff.title.frozen": "Odmrożenia",
"buff.desc.frozen": "Twoje ruchy i ataki są spowolnione.",
"buff.title.wet": "Przemoczenie",
"buff.desc.wet": "Twoje nogi nie trzymają się podłogi.",
"buff.title.ensnared": "Spętany",
"buff.desc.ensnared": "Pnącza oplotły twoje nogi, utrudniając Ci ruch.",
"buff.desc.ensnared": "Pnącza oplotły twoje nogi, utrudniając poruszanie się.",
// Buffs stats
"buff.stat.health": "Odnawia {str_total} Zdrowia",
"buff.stat.increase_max_energy": "Podnosi Maksymalną Wytrzymałość o {strength}",

View File

@ -1,17 +1,17 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
"char_selection.loading_characters": "Ładowanie postaci...",
"char_selection.delete_permanently": "Czy chcesz skasować tę postać (nie będzie można jej odzyskać)?",
"char_selection.deleting_character": "Kasowanie postaci...",
"char_selection.change_server": "Zmień serwer",
"char_selection.enter_world": "Wejdź do świata",
"char_selection.loading_characters": "Ładowanie Postaci...",
"char_selection.delete_permanently": "Czy na pewno chcesz usunąć tę Postać na zawsze?",
"char_selection.deleting_character": "Usuwanie Postaci...",
"char_selection.change_server": "Zmień Serwer",
"char_selection.enter_world": "Dołącz do Świata",
"char_selection.logout": "Wyloguj się",
"char_selection.create_new_character": "Stwórz nową postać",
"char_selection.creating_character": "Tworzenie nowej postaci...",
"char_selection.character_creation": "Tworzenie postaci",
"char_selection.create_new_character": "Stwórz nową Postać",
"char_selection.creating_character": "Tworzenie nowej Postaci...",
"char_selection.character_creation": "Tworzenie Postaci",
"char_selection.human_default": "Domyślny człowiek",
"char_selection.level_fmt": "Poziom {level_nb}",
"char_selection.uncanny_valley": "Dzicz",
@ -23,8 +23,8 @@
"char_selection.skin": "Skóra",
"char_selection.eyeshape": "Detale oczu",
"char_selection.accessories": "Akcesoria",
"char_selection.create_info_name": "Twoja postać musi posiadać imię!",
"char_selection.version_mismatch": "UWAGA! Ten serwer używa innej (prawdopodobnie niekompatybilnej) wersji gry. Zaktualizuj grę."
"char_selection.create_info_name": "Twoja Postać musi posiadać imię!",
"char_selection.version_mismatch": "UWAGA! Ten serwer używa innej (potencjalnie niekompatybilnej) wersji gry. Zaktualizuj grę."
},
vector_map: {

View File

@ -1,10 +1,10 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
// Texts used in multiple locations with the same formatting
"common.username": "Nazwa konta",
"common.username": "Nazwa Użytkownika",
"common.singleplayer": "Tryb jednoosobowy",
"common.multiplayer": "Tryb wieloosobowy",
"common.servers": "Serwery",
@ -28,7 +28,7 @@
"common.add": "Dodaj",
"common.accept": "Akceptuj",
"common.decline": "Odrzuć",
"common.disclaimer": "Przypis",
"common.disclaimer": "Uwaga",
"common.cancel": "Anuluj",
"common.none": "Brak",
"common.error": "Błąd",
@ -37,8 +37,8 @@
"common.automatic": "Automatyczne",
"common.random": "Losowo",
"common.empty": "Pusty",
"common.confirm": "Potwierdź",
"common.delete_server": "Usuń serwer",
"common.confirm": "Potwierdzam",
"common.delete_server": "Usuń Serwer",
// Settings Window title
"common.interface_settings": "Ustawienia interfejsu",
@ -51,7 +51,7 @@
// Message when connection to the server is lost
"common.connection_lost": r#"Stracono połączenie!
Serwer jest restartowany?
Czy serwer nie jest właśnie restartowany?.
Czy masz aktualną wersję gry?"#,
@ -59,36 +59,37 @@ Czy masz aktualną wersję gry?"#,
"common.species.human": "Człowiek",
"common.species.dwarf": "Krasnolud",
"common.species.elf": "Elf",
"common.species.undead": "Nieumarły",
"common.species.draugr": "Nieumarły",
"common.species.danari": "Danari",
"common.weapons.axe": "Siekiera",
"common.weapons.dagger": "Sztylet",
"common.weapons.greatsword": "Wielki miecz",
"common.weapons.shortswords": "Krótki miecz",
"common.weapons.greatsword": "Wielki Miecz",
"common.weapons.shortswords": "Krótkie Miecze",
"common.weapons.sword": "Miecz",
"common.weapons.staff": "Kostur maga",
"common.weapons.staff": "Płomienny Kostur",
"common.weapons.bow": "Łuk",
"common.weapons.hammer": "Młot",
"common.weapons.general": "Ogólna walka",
"common.weapons.sceptre": "Kostur druida",
"common.weapons.general": "Ogólna Walka",
"common.weapons.sceptre": "Berło Leczenia",
"common.weapons.shield": "Tarcza",
"common.weapons.spear": "Włócznia",
"common.weapons.hammer_simple": "Prosty młot",
"common.weapons.sword_simple": "Prosty miecz",
"common.weapons.staff_simple": "Prosty kostur maga",
"common.weapons.axe_simple": "Prosta siekiera",
"common.weapons.bow_simple": "Prosty łuk",
"common.weapons.hammer_simple": "Prosty Młot",
"common.weapons.sword_simple": "Prosty Miecz",
"common.weapons.staff_simple": "Prosty Płomienny Kostur",
"common.weapons.axe_simple": "Prosta Siekiera",
"common.weapons.bow_simple": "Prosty Łuk",
"common.weapons.unique": "Unikalny",
"common.tool.debug": "Debug",
"common.tool.farming": "Narzędzie do uprawy",
"common.tool.farming": "Narzędzie Rolnicze",
"common.tool.pick": "Kilof",
"common.tool.mining": "Wykopywanie",
"common.kind.modular_component": "Modularny komponent",
"common.tool.mining": "Kopanie", // TODO: check what this is ingame
"common.kind.modular_component": "Modularna część",
"common.kind.modular_component_partial": "Część",
"common.kind.glider": "Lotnia",
"common.kind.consumable": "Jadalne",
"common.kind.throwable": "Może być rzucone",
"common.kind.utility": "Użytkowy",
"common.kind.utility": "Użytkowe",
"common.kind.ingredient": "Składnik",
"common.kind.lantern": "Latarnia",
"common.hands.one": "Jednoręczne",
@ -101,6 +102,9 @@ Czy masz aktualną wersję gry?"#,
"common.stats.power": "Moc",
"common.stats.speed": "Prędkość",
"common.stats.poise": "Odporność",
"common.stats.range": "Zasięg",
"common.stats.energy_efficiency": "Efektywność Energii",
"common.stats.buff_strength": "Siła Efektów Wzmacniających",
"common.stats.crit_chance": "% na cios kryt.",
"common.stats.crit_mult": "Mnożnik ciosu kryt.",
"common.stats.armor": "Obrona",
@ -114,7 +118,7 @@ Czy masz aktualną wersję gry?"#,
"common.material.metal": "Metal",
"common.material.wood": "Drewno",
"common.material.stone": "Kamień",
"common.material.cloth": "Płótno",
"common.material.cloth": "Tkanina",
"common.material.hide": "Skóra",
"common.sprite.chest": "Skrzynia",

View File

@ -1,6 +1,6 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
"esc_menu.logout": "Wyloguj",

View File

@ -1,6 +1,6 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
"gameinput.primary": "Prosty atak",
@ -16,31 +16,31 @@
"gameinput.slot8": "Skrót 8",
"gameinput.slot9": "Skrót 9",
"gameinput.slot10": "Skrót 10",
"gameinput.swaploadout": "Zmień wyposażenie",
"gameinput.swaploadout": "Zamień wyposażenie",
"gameinput.togglecursor": "Pokaż/schowaj kursor",
"gameinput.help": "Pokaż/schowaj okno pomocy",
"gameinput.toggleinterface": "Pokaż/schowaj interfejs",
"gameinput.toggledebug": "Pokaż/schowaj FPS i debugowanie",
"gameinput.toggle_egui_debug": "Włącz debugowanie EGUI",
"gameinput.togglechat": "Włącz czat",
"gameinput.screenshot": "Zrób zrzut ekranu",
"gameinput.toggleingameui": "Pokaż/schowaj imiona i nazwy",
"gameinput.fullscreen": "Przełącz pełny ekran",
"gameinput.moveforward": "Naprzód",
"gameinput.toggle_egui_debug": "Pokaż/schowaj debugowanie EGUI",
"gameinput.togglechat": "Pokaż/schowaj czat",
"gameinput.screenshot": "Zrzut ekranu",
"gameinput.toggleingameui": "Pokaż/schowaj imiona postaci",
"gameinput.fullscreen": "Pełny ekran",
"gameinput.moveforward": "Przód",
"gameinput.moveleft": "Lewo",
"gameinput.moveright": "Prawo",
"gameinput.moveback": "Cofaj się",
"gameinput.moveback": "Wstecz",
"gameinput.jump": "Skok",
"gameinput.glide": "Lotnia",
"gameinput.roll": "Przewrót",
"gameinput.climb": "Wspinaj się",
"gameinput.climbdown": "Opuść się (wspinaczka)",
"gameinput.wallleap": "Odskocz (od ściany)",
"gameinput.climb": "Wspinaczka w górę",
"gameinput.climbdown": "Wspinaczka w dół",
"gameinput.wallleap": "Odskocz od ściany",
"gameinput.togglelantern": "Zapal/zgaś latarnię",
"gameinput.mount": "Dosiądź",
"gameinput.chat": "Czat",
"gameinput.command": "Komenda",
"gameinput.escape": "Menu",
"gameinput.escape": "Menu", // TODO: czy nie da się lepiej?
"gameinput.map": "Mapa",
"gameinput.bag": "Torba",
"gameinput.trade": "Handel",
@ -49,26 +49,26 @@
"gameinput.spellbook": "Czary",
"gameinput.settings": "Ustawienia",
"gameinput.respawn": "Odrodzenie",
"gameinput.charge": "Szarża/Ładowanie",
"gameinput.togglewield": "Zmień przedmiot w rękach",
"gameinput.charge": "Szarża/Ładowanie", // TODO: sprawdź które to ma być
"gameinput.togglewield": "Przełącz broń",
"gameinput.interact": "Interakcja",
"gameinput.freelook": "Tryb wolnego widoku",
"gameinput.autowalk": "Automatyczne unoszenie/chodzenie",
"gameinput.autowalk": "Automatyczne chodzenie/pływanie",
"gameinput.cameraclamp": "Blokada kamery",
"gameinput.dance": "Tańcz",
"gameinput.select": "Zaznacz (obiekt)",
"gameinput.select": "Zaznacz Obiekt",
"gameinput.acceptgroupinvite": "Akceptuj zaproszenie do grupy",
"gameinput.declinegroupinvite": "Odrzuć zaproszenie do grupy",
"gameinput.cyclecamera": "Przełącz kamerę",
"gameinput.crafting": "Tworzenie",
"gameinput.cyclecamera": "Przełącz tryb kamery",
"gameinput.crafting": "Tworzenie", // TODO: check this
"gameinput.fly": "Lot",
"gameinput.sneak": "Skradanie",
"gameinput.swimdown": "Nurkuj",
"gameinput.swimup": "Wynurz",
"gameinput.swimdown": "Płyń w dół",
"gameinput.swimup": "Płyń w górę",
"gameinput.mapzoomin": "Przybliż mapę",
"gameinput.mapzoomout": "Oddal mapę",
"gameinput.greet": "Pozdrów",
"gameinput.map.locationmarkerbutton": "Ustaw punkt orientacyjny na mapie"
"gameinput.map.locationmarkerbutton": "Utwórz znacznik na mapie"
},

View File

@ -0,0 +1,35 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Localization for Polish
(
string_map: {
// Debug stick
"common.abilities.debug.possess.name": "Strzała Opętania",
"common.abilities.debug.possess.desc": "Pozwala przejąć kontrolę nad twoim celem.",
// Sword
"common.abilities.sword.spin.name": "Cyklon",
"common.abilities.sword.spin.desc": "Poruszasz się do przodu kręcąc się z Twoim mieczem.",
// Axe
"common.abilities.axe.leap.name": "Skok Drwala",
"common.abilities.axe.leap.desc": "Skaczesz w kierunku kursora, tnąc swoją siekierą.",
// Hammer
"common.abilities.hammer.leap.name": "Uderzenie Zagłady",
"common.abilities.hammer.leap.desc": "Atak obszarowy z odrzutem. Skaczesz w kierunku kursora, uderzając w ziemię swoim młotem.",
// Bow
"common.abilities.bow.shotgun.name": "Salwa",
"common.abilities.bow.shotgun.desc": "Wystrzeliwujesz salwę strzał.",
// Staff
"common.abilities.staff.fireshockwave.name": "Pierścień Ognia",
"common.abilities.staff.fireshockwave.desc": "Przywołujesz ognisty pierścień odrzucający przeciwników.",
// Sceptre
"common.abilities.sceptre.wardingaura.name": "Ochronna Aura",
"common.abilities.sceptre.wardingaura.desc": "Chroni twoich sojuszników przed atakami.",
// Unknown
"common.abilities.unknown.name": "Umiejętność bez nazwy",
"common.abilities.unknown.desc": "Umiejętność bez opisu",
},
vector_map: {
}
)

View File

@ -1,6 +1,6 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
// Inventory
@ -34,6 +34,7 @@
"hud.bag.combat_rating": "Combat Rating (CR)",
"hud.bag.protection": "Ochrona",
"hud.bag.stun_res": "Odporność na ogłuszenie",
"hud.bag.stealth": "Ukrywanie się",
"hud.bag.combat_rating_desc": "Liczone na postawie Twojego\nekwipunku i zdrowia.",
"hud.bag.protection_desc": "Redukcja obrażeń dzięki pancerzowi",
"hud.bag.stun_res_desc": "Odporność na ogłuszenie spowodowane przyjmowaniem wielu ciosów.\nRegeneruje się jak energia.",

View File

@ -1,17 +1,17 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
"character_window.character_name": "Imię postaci",
// Character stats
"character_window.character_stats": r#"Wytrzymałość
Wytrenowanie
Kondycja
Siła woli
Ochrona
Obrona
"#,
},

View File

@ -1,6 +1,6 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
"hud.chat.all": "Wszystko",
@ -26,16 +26,16 @@
"hud.chat.pvp_melee_kill_msg": "[{attacker}] zwycięża nad [{victim}]",
"hud.chat.pvp_ranged_kill_msg": "[{attacker}] ustrzela [{victim}]",
"hud.chat.pvp_explosion_kill_msg": "[{attacker}] wysadza [{victim}]",
"hud.chat.pvp_energy_kill_msg": "[{attacker}] ubija [{victim}] magią",
"hud.chat.pvp_energy_kill_msg": "[{attacker}] zabija [{victim}] magią",
"hud.chat.died_of_buff_nonexistent_msg": "[{victim}] {died_of_buff}",
"hud.chat.died_of_npc_buff_msg": "[{victim}] {died_of_buff} nałożone przez {attacker}",
"hud.chat.npc_melee_kill_msg": "{attacker} ubija [{victim}]",
"hud.chat.npc_melee_kill_msg": "{attacker} zabija [{victim}]",
"hud.chat.npc_ranged_kill_msg": "{attacker} ustrzela [{victim}]",
"hud.chat.npc_explosion_kill_msg": "{attacker} wysadza [{victim}]",
"hud.chat.npc_energy_kill_msg": "{attacker} ubija [{victim}] magią",
"hud.chat.npc_other_kill_msg": "{attacker} ubija [{victim}]",
"hud.chat.npc_energy_kill_msg": "{attacker} zabija [{victim}] magią",
"hud.chat.npc_other_kill_msg": "{attacker} zabija [{victim}]",
"hud.chat.loot_msg": "Podniesiono [{item}]",
"hud.chat.loot_fail": "Twój ekwipunek jest pełen!",

View File

@ -1,6 +1,6 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
"hud.crafting": "Tworzenie",
@ -34,6 +34,17 @@
"hud.crafting.tabs.processed_material": "Materiały",
"hud.crafting.dismantle_title": "Demontowanie",
"hud.crafting.dismantle_explanation" : "Najedź na przedmioty w pleacaku aby\nzobaczyć co możesz odzyskać.\n\nKliknij podwójnie aby rozmontować.",
"hud.crafting.modular_desc": "Przeciągnij części przedmiotu aby stworzyć broń",
"hud.crafting.mod_weap_prim_slot_title": "Główna część broni",
"hud.crafting.mod_weap_prim_slot_desc": "Połóż tutaj główną część broni (np. ostrze miecza, siekiery, lub kończyny łuku).",
"hud.crafting.mod_weap_sec_slot_title": "Poboczna część broni",
"hud.crafting.mod_weap_sec_slot_desc": "Połóż tutaj poboczną część bronii (np. rękojeść miecza, uchwyt łuku, lub rdzeń różdżki).", // TODO: prawdopodobnie kostur zamiast różdżki
"hud.crafting.mod_comp_metal_prim_slot_title": "Sztabka metalu",
"hud.crafting.mod_comp_metal_prim_slot_desc": "Połóż tutaj sztabkę metalu, tylko niektóre metale mogą być użyte do tworzenia broni.",
"hud.crafting.mod_comp_wood_prim_slot_title": "Drewno",
"hud.crafting.mod_comp_wood_prim_slot_desc": "Połóż tutaj drewno, tylko niektóre rodzaje drewna mogą być użyte do tworzenia broni.",
"hud.crafting.mod_comp_sec_slot_title": "Materiał zwierzęcy",
"hud.crafting.mod_comp_sec_slot_desc": "Opcjonalnie połóż tutaj zwierzęcy materiał do tworzenia przedmiotów, tylko niektóre materiały zwierzęce mogą zostać użyte do ulepszenia broni.",
},

View File

@ -1,21 +1,21 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
"hud.group": "Drużyna",
"hud.group.invite_to_join": "[{name}] zaprasza Cię do drużyny!",
"hud.group": "Grupa",
"hud.group.invite_to_join": "[{name}] zaprasza Cię do grupy!",
"hud.group.invite_to_trade": "[{name}] zaprasza Cię do wymiany.",
"hud.group.invite": "Zaproś",
"hud.group.kick": "Wyrzuć",
"hud.group.assign_leader": "Daj lidera",
"hud.group.assign_leader": "Przypisz dowódcę",
"hud.group.leave": "Opuść drużynę",
"hud.group.dead" : "Martwy", /// forma
"hud.group.out_of_range": "Poza zasięgiem",
"hud.group.add_friend": "Dodaj do przyjaciół",
"hud.group.link_group": "Połącz drużyny",
"hud.group.add_friend": "Dodaj do znajomych",
"hud.group.link_group": "Połącz grupy",
"hud.group.in_menu": "W menu",
"hud.group.members": "Członkowie drużyny",
"hud.group.members": "Członkowie grupy",
},

View File

@ -1,6 +1,6 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
// Map and Questlog
@ -32,7 +32,7 @@
"hud.map.toggle_minimap_voxel": "Przełącz widok wokseli na minimapie",
"hud.map.zoom_minimap_explanation": "Przybliż minimapę aby zobaczyć\nteren dookoła ciebie z większą dokładnością",
"hud.map.gnarling": "Fortyfikacje Gnarlingów",
"hud.map.placed_by": "Umiejscowione poprzez {name}",
"hud.map.placed_by": "Umiejscowione przez {name}",
},

View File

@ -1,15 +1,18 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
"hud.do_not_show_on_startup": "Nie pokazuj tego podczas startu",
"hud.show_tips": "Pokaż porady",
"hud.quests": "Zadania",
"hud.you_died": "Zginąłeś",
"hud.waypoint_saved": "Punkt orientacyjny zachowany",
"hud.sp_arrow_txt": "PR", /// punkty rozwoju
"hud.you_died": "Zginąłeś", // forma
"hud.waypoint_saved": "Punkt orientacyjny zapisany",
"hud.sp_arrow_txt": "PR", // punkty rozwoju
"hud.inventory_full": "Ekwipunek pełen",
"hud.someone_else": "kogoś innego", // TODO: forma (ktoś inny)
"hud.another_group": "inną grupę", // TODO: forma (inna grupa)
"hud.owned_by_for_secs": "Posiadane przez {name} przez {secs} sekund",
"hud.press_key_to_show_keybindings_fmt": "[{key}] przypisania klawiszy",
"hud.press_key_to_toggle_lantern_fmt": "[{key}] latarnia",
@ -46,7 +49,7 @@ Kiedy poczujesz się gotów, spróbuj zdobyć lepszy ekwipunek z wielu wyzwań r
"hud.free_look_indicator": "Tryb rozglądania aktywny. Naciśnij {key} by wyłączyć.",
"hud.camera_clamp_indicator": "Pionowa blokada kamery aktywna. Naciśnij {key} by wyłączyć.",
"hud.auto_walk_indicator": "Automatyczne chodzenie/pływanie aktywne",
"hud.collect": "Zbierz",
"hud.collect": "Zbieraj",
"hud.pick_up": "Podnieś",
"hud.open": "Otwórz",
"hud.use": "Użyj",

View File

@ -1,6 +1,6 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
// SCT outputs

View File

@ -1,10 +1,10 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
// Settings
"hud.settings.general": "Generalne",
"hud.settings.general": "Ogólne",
"hud.settings.none": "Brak",
"hud.settings.press_behavior.toggle": "Przełącz",
"hud.settings.press_behavior.hold": "Przytrzymaj",
@ -15,8 +15,8 @@
"hud.settings.show_hotkey_hints": "Pokaż klawisze skrótu",
"hud.settings.tips_on_startup": "Porady startowe",
"hud.settings.ui_scale": "Skala interfejsu",
"hud.settings.relative_scaling": "Relatywne skalowanie",
"hud.settings.custom_scaling": "Niestandardowe skalowanie",
"hud.settings.relative_scaling": "Skalowanie relatywne",
"hud.settings.custom_scaling": "Skalowanie niestandardowe",
"hud.settings.crosshair": "Celownik",
"hud.settings.opacity": "Przezroczystość",
"hud.settings.hotbar": "Pasek skrótów",
@ -25,13 +25,18 @@
"hud.settings.buffs_mmap": "Wzmocnienia na minimapie",
"hud.settings.toggle_bar_experience": "Przełącz pasek doświadczenia",
"hud.settings.scrolling_combat_text": "Przewijanie tekstu podczas walki",
"hud.settings.damage_accumulation_duration": "Czas akumulacji obrażeń",
"hud.settings.incoming_damage": "Otrzymywane obrażenia",
"hud.settings.incoming_damage_accumulation_duration": "Czas akumulacji otrzymywanych obrażeń",
"hud.settings.round_damage": "Zaokrąglaj obrażenia",
"hud.settings.speech_bubble": "Dymek rozmowy",
"hud.settings.speech_bubble_self": "Pokazuj swój dymek rozmowy",
"hud.settings.speech_bubble_dark_mode": "Dymek rozmowy w trybie ciemnym",
"hud.settings.speech_bubble_icon": "Ikona dymka rozmowy",
"hud.settings.energybar_numbers": "Numery na pasku energii",
"hud.settings.energybar_numbers": "Liczby na pasku energii",
"hud.settings.always_show_bars": "Zawsze pokazuj paski zdrowia i energii",
"hud.settings.experience_numbers": "Ilość Doświadczenia",
"hud.settings.accumulate_experience": "Kumuluj ilość doświadczenia",
"hud.settings.values": "Wartości",
"hud.settings.percentages": "Procenty",
"hud.settings.chat": "Czat",
@ -42,8 +47,8 @@
"hud.settings.pan_sensitivity": "Czułość rozglądania",
"hud.settings.zoom_sensitivity": "Czułość przybliżenia",
"hud.settings.camera_clamp_angle": "Kąt kamery w osi pionowej w zablokowanym trybie",
"hud.settings.invert_scroll_zoom": "Odwróć przybliżenie kółkiem myszy",
"hud.settings.camera_clamp_angle": "Kąt kamery w osi pionowej w trybie zablokowanym",
"hud.settings.invert_scroll_zoom": "Odwrócone przybliżanie kółkiem myszy",
"hud.settings.invert_mouse_y_axis": "Odwróć oś Y myszy",
"hud.settings.invert_controller_y_axis": "Odwróć oś Y kontrolera",
"hud.settings.enable_mouse_smoothing": "Wygładzanie ruchu kamery",
@ -53,14 +58,16 @@
"hud.settings.player_physics_behavior": "Fizyka gracza (eksperymentalne)",
"hud.settings.stop_auto_walk_on_input": "Przełącz automatyczny chód poruszaniem",
"hud.settings.auto_camera": "Automatyczna kamera",
"hud.settings.bow_zoom": "Przybliż widok podczas naciągania łuku",
"hud.settings.reset_gameplay": "Zresetuj ustawienia",
"hud.settings.view_distance": "Odległość renderowania",
"hud.settings.lod_distance": "Odległość renderowania LoD (elementów uproszczonych)",
"hud.settings.sprites_view_distance": "Odległość renderowania 2d",
"hud.settings.figures_view_distance": "Odległość renderowania obiektów",
"hud.settings.maximum_fps": "Ogranicz maksymalne klatki",
"hud.settings.background_fps": "Ilość klatek w tle",
"hud.settings.present_mode": "Obecny tryb",
"hud.settings.maximum_fps": "Limit klatek",
"hud.settings.background_fps": "Limit klatek w tle",
"hud.settings.present_mode": "Present Mode", // TODO: ask what does this do
"hud.settings.present_mode.fifo": "FIFO",
"hud.settings.present_mode.mailbox": "MAILBOX",
"hud.settings.present_mode.immediate": "Natychmiastowy",
@ -72,25 +79,25 @@
"hud.settings.upscale_factor": "Rozdzielczość wewnętrzna",
"hud.settings.cloud_rendering_mode": "Tryb renderowania chmur",
"hud.settings.fluid_rendering_mode": "Tryb renderowania płynów",
"hud.settings.fluid_rendering_mode.cheap": "Lekki",
"hud.settings.fluid_rendering_mode.cheap": "Szybki",
"hud.settings.fluid_rendering_mode.shiny": "Połyskujący",
"hud.settings.cloud_rendering_mode.minimal": "Minimalny",
"hud.settings.cloud_rendering_mode.low": "Niski",
"hud.settings.cloud_rendering_mode.medium": "Średni",
"hud.settings.cloud_rendering_mode.high": "Wysoki",
"hud.settings.cloud_rendering_mode.ultra": "Uber (bez hairworksów)",
"hud.settings.cloud_rendering_mode.ultra": "Ultra (bez hairworksów)",
"hud.settings.fullscreen": "Pełen ekran",
"hud.settings.fullscreen_mode": "Tryb pełnego ekranu",
"hud.settings.fullscreen_mode.exclusive": "Ekskluzywny (przejęcie)",
"hud.settings.fullscreen_mode.borderless": "Okno bez ramek (łatwiejsze alt-tab'owanie)",
"hud.settings.gpu_profiler": "Włącz taktowanie GPU (Nie zawsze wspierane)",
"hud.settings.lossy_terrain_compression": "Słabsza kompresja terenu",
"hud.settings.weapon_trails": "Ścieżki broni (efekt ataku)",
"hud.settings.gpu_profiler": "Włącz taktowanie GPU (Nie zawsze wspierane)", // TODO ask what this does and improve translation
"hud.settings.particles": "Cząsteczki",
"hud.settings.lossy_terrain_compression": "Stratna kompresja terenu (dla wolnych połączeń)",
"hud.settings.weapon_trails": "Smugi za bronią (efekt ataku)",
"hud.settings.resolution": "Rozdzielczość",
"hud.settings.bit_depth": "Głębia bitowa",
"hud.settings.refresh_rate": "Częstotliwość odświeżania",
"hud.settings.lighting_rendering_mode": "Tryb renderowania odbić",
"hud.settings.lighting_rendering_mode": "Tryb Renderowania Oświetlenia",
"hud.settings.lighting_rendering_mode.ashikhmin": "Typ A - Wysokie",
"hud.settings.lighting_rendering_mode.blinnphong": "Typ B - Średnie",
"hud.settings.lighting_rendering_mode.lambertian": "Typ L - Lekkie",
@ -99,16 +106,18 @@
"hud.settings.shadow_rendering_mode.cheap": "Lekki",
"hud.settings.shadow_rendering_mode.map": "Mapa",
"hud.settings.shadow_rendering_mode.map.resolution": "Rozdzielczość",
"hud.settings.lod_detail": "Ilość szczegółów",
"hud.settings.rain_occlusion.resolution": "Wykrywanie Okluzji Deszczu",
"hud.settings.lod_detail": "Jakość LoD",
"hud.settings.save_window_size": "Zapisz wymiary okna",
"hud.settings.reset_graphics": "Zresetuj ustawienia",
"hud.settings.bloom": "Rozmycie",
"hud.settings.bloom": "Poświata (Bloom)",
"hud.settings.point_glow": "Poświata punktowa",
"hud.settings.master_volume": "Głośność ogólna",
"hud.settings.inactive_master_volume_perc": "Głośność ogólna (nieaktywne okno)",
"hud.settings.music_volume": "Głośność muzyki",
"hud.settings.sound_effect_volume": "Głośność efektów dźwiękowych",
"hud.settings.master_volume": "Głośność Ogólna",
"hud.settings.inactive_master_volume_perc": "Głośność Ogólna (nieaktywne okno)",
"hud.settings.music_volume": "Głośność Muzyki",
"hud.settings.sound_effect_volume": "Głośność Efektów Dźwiękowych",
"hud.settings.ambience_volume": "Głośność Efektów Otoczenia",
"hud.settings.audio_device": "Urządzenie dźwiękowe",
"hud.settings.reset_sound": "Zresetuj ustawienia",
@ -132,7 +141,7 @@
"hud.settings.say": "Powiedz",
"hud.settings.all": "Wszyscy",
"hud.settings.group_only": "Tylko dla grupy",
"hud.settings.reset_chat" : "Przywróć ustawienia podstawowe",
"hud.settings.reset_chat" : "Zresetuj ustawienia",
},

View File

@ -1,6 +1,6 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
"hud.rank_up": "Nowy punkt rozwoju",
@ -106,36 +106,36 @@
// Bow
"hud.skill.bow_projectile_speed_title" : "Prędkość strzały",
"hud.skill.bow_projectile_speed" : "Pozwala wypuszczać strzały szybsze i lecące dalej {boost}%{SP}",
"hud.skill.bow_arrow_count_title" : "Ilość strzał",
"hud.skill.bow_arrow_count" : "Wystrzel dodatkową strzałę gdy robisz przewrót{SP}",
"hud.skill.bow_repeater_cost_title" : "Wielostrzał - koszt",
"hud.skill.bow_repeater_cost" : "Zmniejsza koszt Wytrzymałości wielostrzału o {boost}%{SP}",
"hud.skill.bow_repeater_glide_title" : "Wielostrzał - odskok",
"hud.skill.bow_repeater_glide" : "Odskocz dalej podczas wielostrzału{SP}",
"hud.skill.bow_repeater_damage_title" : "Wielostrzał - obrażenia",
"hud.skill.bow_repeater_damage" : "Zwiększa obrażenia o {boost}%{SP}",
"hud.skill.bow_repeater_unlock_title" : "Wielostrzał",
"hud.skill.bow_repeater_unlock" : "Odblokowuje ładowany sus w powierze i zasypanie przeciwników gradem strzał{SP}",
"hud.skill.bow_charged_title" : "Przeciągnięcie",
"hud.skill.bow_charged" : "Ponieważ naciągnąłeś zbyt mocno (charged shot)",
"hud.skill.bow_charged_knockback_title" : "Przeciągnięcie - odrzut",
"hud.skill.bow_charged_knockback" : "Odrzuć przeciwników {boost}% dalej przeciągnięciem{SP}",
"hud.skill.bow_charged_move_speed_title" : "Przeciągnięcie - poruszanie",
"hud.skill.bow_charged_move_speed" : "Zwiększa możliwość jak bardzo możesz się poruszać podczas przeciągnięcia o {boost}%{SP}",
"hud.skill.bow_charged_speed_title" : "Przeciągnięcie - szybkość",
"hud.skill.bow_charged_speed" : "Zwiększa prędkość ładownia przeciągnięcia o {boost}%{SP}",
"hud.skill.bow_charged_projectile_speed_title" : "Przeciągnięcie - prędkość",
"hud.skill.bow_charged_projectile_speed" : "Dodaje {boost}% prędkości strzale wystrzelonej przeciągnięciem{SP}",
"hud.skill.bow_charged_drain_title" : "Przeciągnięcie - zmęczenie",
"hud.skill.bow_charged_drain" : "Zmniejsza zmęczenie Wytrzymałości o {boost}%{SP}",
"hud.skill.bow_charged_damage_title" : "Przeciągnięcie - obrażnia",
"hud.skill.bow_charged_title" : "Mocny Strzał",
"hud.skill.bow_charged" : "Naciągasz łuk mocniej niż zwykle.",
"hud.skill.bow_charged_damage_title" : "Mocny Strzał - obrażnia",
"hud.skill.bow_charged_damage" : "Zwiększa obrażenia o {boost}%{SP}",
"hud.skill.bow_energy_regen_title" : "Regeneracja Wytrzymałości",
"hud.skill.bow_energy_regen" : "Zwiększa regenerację wytrzymałości o {boost}%{SP}",
"hud.skill.bow_title" : "Strzał",
"hud.skill.bow" : "Nieskończony kołczan gratis, trzymać zdala od dzieci",
"hud.skill.bow_damage_title" : "Obrażenia",
"hud.skill.bow_damage" : "Zwiększa obrażenia o {boost}%{SP}",
"hud.skill.bow_charged_energy_regen_title" : "Mocny Strzał - odnawiana energia",
"hud.skill.bow_charged_energy_regen" : "Zwiększa odnawianą energię o {boost}%{SP}",
"hud.skill.bow_charged_knockback_title" : "Mocny Strzał - odrzut",
"hud.skill.bow_charged_knockback" : "Odrzuć przeciwników dalej o {boost}%{SP}",
"hud.skill.bow_charged_speed_title" : "Mocny Strzał - szybkość",
"hud.skill.bow_charged_speed" : "Zwiększa prędkość ładownia strzału o {boost}%{SP}",
"hud.skill.bow_charged_move_title" : "Mocny Strzał - poruszanie",
"hud.skill.bow_charged_move" : "Zwiększa jak szybko możesz się poruszać podczas ładowania strzału o {boost}%{SP}",
"hud.skill.bow_repeater_title" : "Zwykły Strzał",
"hud.skill.bow_repeater" : "Nieskończony kołczan gratis, trzymać zdala od dzieci. Szybkość strzelania zwiększa się z czasem.",
"hud.skill.bow_repeater_damage_title" : "Zwykły Strzał - obrażenia",
"hud.skill.bow_repeater_damage" : "Zwiększa obrażenia o {boost}%{SP}",
"hud.skill.bow_repeater_cost_title" : "Zwykły Strzał - koszt",
"hud.skill.bow_repeater_cost" : "Zmniejsza koszt Wytrzymałości wielostrzału o {boost}%{SP}",
"hud.skill.bow_repeater_speed_title" : "Zwykły Strzał - szybkość",
"hud.skill.bow_repeater_speed" : "Zwiększa szybkość strzelania o {boost}%{SP}",
"hud.skill.bow_shotgun_unlock_title" : "Odblokowuje Wielostrzał",
"hud.skill.bow_shotgun_unlock" : "Pozwala strzelać kilkoma strzałami na raz.",
"hud.skill.bow_shotgun_damage_title" : "Wielostrzał - Obrażenia",
"hud.skill.bow_shotgun_damage" : "Zwiększa obrażenia wielostrzału o {boost}%{SP}",
"hud.skill.bow_shotgun_cost_title" : "Koszt wielostrzału",
"hud.skill.bow_shotgun_cost" : "Zmniejsza koszt wielostrzału o {boost}%{SP}",
"hud.skill.bow_shotgun_arrow_count_title" : "Wielostrzał - Ilość Strzał",
"hud.skill.bow_shotgun_arrow_count" : "Zwiększa ilość strzał wystrzelonych na raz o {boost}{SP}",
"hud.skill.bow_shotgun_spread_title" : "Wielostrzał - Celność",
"hud.skill.bow_shotgun_spread" : "Zmniejsza rozrzut strzał o {boost}%{SP}",
// Hammer
"hud.skill.hmr_leap_radius_title" : "Tąpnięcie - zasięg",
"hud.skill.hmr_leap_radius" : "Zwiększa zasięg o {boost} metr{SP}",

View File

@ -1,6 +1,6 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
"hud.social": "Inni gracze",

View File

@ -1,6 +1,6 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
"hud.trade.trade_window": "Okno handlu",

View File

@ -1,6 +1,6 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie
/// Localization for Polish
(
string_map: {
/// Start Main screen section
@ -10,83 +10,84 @@
"main.connecting": "Łączenie",
"main.creating_world": "Tworzenie świata",
"main.tip": "Porada:",
"main.unbound_key_tip": "Rozwiąż",
"main.unbound_key_tip": "nieprzypisany",
// Welcome notice that appears the first time Veloren is started
"main.notice": r#"Witaj w alfie Veloren!
"main.notice": r#"Witaj w wersji alfa Veloren!
Zanim zanurzysz się w tym świecie, prosimy pamiętać o kilku rzeczach:
- Jest to bardzo wczesna alfa. Spodziewaj się błędów, bardzo niedokończonej rozgrywki, niedokończonych mechanik i brakujących funkcjonalności.
- Jest to bardzo wczesna alfa. Spodziewaj się błędów, bardzo niedokończonej rozgrywki, niedokończonych mechanik i brakujących funkcji.
- Jeśli chcesz podzielić się konstruktywną krytyką lub zgłosić ąd/błędy - możesz skontakować się z nami na Reddicie, Gitlabie lub Discordzie.
- Jeśli chcesz podzielić się konstruktywną krytyką lub zgłosić ędy, możesz skontakować się z nami na Reddicie, Gitlabie lub Discordzie.
- Veloren jest objęty licencją 'GPL 3 open-source licence'. Co oznacza, że jest darmowy do grania, modyfikacji i redystrybucji gry jakkolwiek
chcesz (ograniczeniem jest by praca pochodna też była na licencji GPL 3).
- Veloren jest objęte licencją typu open-source 'GNU GPLv3'.
Oznacza to że gra jest darmowa, oraz że możesz  modyfikować i udostępniać na zasadach określonych w licencji (zmodyfikowane wersje muszą również używać licencji GNU GPLv3).
- Veloren jest projektem non-profit i każdy wkład jest pracą wolontariuszy.
Jeśli podoba Ci się ten projekt - zapraszamy do naszych ekip programistów, artystów i innych drużyn rozwojowych.
- Veloren jest projektem non-profit, w całości tworzonym przez wolontariuszy w wolnym czasie.
Jeśli polubisz Veloren, zapraszamy cię do dołączenia do naszego zespołu! Nowi programiści, artyści, tłumacze i inni  zawsze mile widziani!
Dziękujemy za przeczytanie tej notki i życzymy miłej gry!
~ Ekipa Veloren"#,
~ Zespół Twórców Veloren"#,
// Login process description
"main.login_process": r#"Informacje o procesie logowania:
By grać na serwerach z wymaganą
rejestracją musisz stworzyć konto.
Aby grać na większości serwerów,
musisz stworzyć darmowe konto.
Konto możesz stworzyć wchodząc na
Możesz to zrobić na stronie:
https://veloren.net/account/."#,
"main.login.server_not_found": "Serwer nie został znaleziony",
"main.login.authentication_error": "Błąd autoryzacji na serwerze",
"main.login.internal_error": "Wewnętrzny błąd klienta (najprawdopodobniej postać gracza została usunięta)",
"main.login.failed_auth_server_url_invalid": "Błąd w łączeniu się z serwerem kont",
/// "The auth Scheme HTTP is NOT supported. It's insecure! For development purposes, HTTP is allowed for 'localhost' or debug builds",
"main.login.insecure_auth_scheme": "Autoryzacja poprzez HTTP nie jest wspierana. HTTP jest dopuszczalne jedynie w kontekście 'localhost' i lokalnych kompilacji do użytku testowego. (The auth Scheme HTTP is NOT supported. It's insecure! For development purposes, HTTP is allowed for 'localhost' or debug builds)",
"main.login.server_full": "Serwer jest pełen",
"main.login.insecure_auth_scheme": "Schemat autoryzacji HTTP NIE JEST wspierany. Jest niezabezpieczony! W celach programistycznych, jest dozwolony dla adresu 'localhost' oraz wersji deweloperskich.",
"main.login.server_full": "Serwer jest pełny",
"main.login.untrusted_auth_server": "Serwer autoryzacji nie jest zaufany",
"main.login.outdated_client_or_server": "Serwer odrzucił połączenie: prawdopodobnie masz inną wersję gry niż serwer - sprawdź aktualizacje.",
"main.login.timeout": "Przekroczenie czasu oczekiwania: serwer nie odpowiedział na czas (przeładowany, bądź problemy z połączeniem, sprawdź swój ping do serwera).",
"main.login.outdated_client_or_server": "Serwer odrzucił połączenie: prawdopodobnie masz inną wersję gry niż serwer - spróbuj zaaktualizować grę.",
"main.login.timeout": "Przekroczenie czasu oczekiwania: serwer nie odpowiedział na czas (Przeciążenie lub problemy z połączeniem).",
"main.login.server_shut_down": "Serwer został wyłączony",
"main.login.network_error": "Błąd sieci",
"main.login.network_wrong_version": "Serwer jest na innej wersji gry niż Ty, sprawdź czy są aktualizacje.",
"main.login.network_wrong_version": "Serwer jest na innej wersji gry niż Ty, sprawdź czy są dostępne aktualizacje.",
"main.login.failed_sending_request": "Błąd z wysysłaniem próby logowania",
"main.login.invalid_character": "Wybrana postać jest wadliwa",
"main.login.invalid_character": "Wybrano nieprawidłową postać",
"main.login.client_crashed": "Klient się wysypał",
"main.login.not_on_whitelist": "Musisz zapytać o dopisanie na białą listę",
"main.login.not_on_whitelist": "Musisz poprosić o dopisanie na listę dozwolonych graczy",
"main.login.banned": "Konto zostało zbanowane z powodu:",
"main.login.kicked": "Sesja została wyrzucona z powodu:",
"main.login.kicked": "Sesja została zamknięta z powodu:",
"main.login.select_language": "Wybierz język",
"main.login.client_version": "Wersja klienta",
"main.login.server_version": "Wersja serwera",
"main.login.client_init_failed": "Błąd inicjalizacji klienta: {init_fail_reason}",
"main.login.username_bad_characters": "Nazwa posiada niedozwolone znaki! (Tylko znaki alfanumeryczne, '_' i '-' są dozwolone)",
"main.login.username_too_long": "Nazwa zbyt długa! Maksymalna długość wynosi: {max_len}",
"main.login.username_bad_characters": "Nazwa użytkownika zawiera nieprawidłowe znaki! (Dozwolone są tylko: znaki alfanumeryczne, '_' i '-')",
"main.login.username_too_long": "Nazwa użytkownika jest zbyt długa! Maksymalna długość: {max_len}",
"main.servers.select_server": "Wybierz serwer",
"main.servers.singleplayer_error": "Nie udało się połączyć z serwerem: {sp_error}",
"main.servers.network_error": "Błąd gniazda/połączenia z serwerem: {raw_error}",
"main.servers.participant_error": "Rozłączono klienta/błąd protokołu: {raw_error}",
"main.servers.stream_error": "Błąd (de)serializacji/połączenia z klientem: {raw_error}",
"main.servers.singleplayer_error": "Błąd połączenia z serwerem wewnętrznym: {sp_error}",
"main.servers.network_error": "Błąd sieci: {raw_error}",
"main.servers.participant_error": "Uczestnik rozłączony/błąd protokołu: {raw_error}",
"main.servers.stream_error": "Błąd kompresji/połączenia/(de)serializacji klienta: {raw_error}",
"main.servers.database_error": "Błąd bazy danych serwera: {raw_error}",
"main.servers.persistence_error": "Błąd wytrzymałości serwera (Prawdopodobnie powiązane z zasobami/danymi postaci): {raw_error}",
"main.servers.persistence_error": "Błąd systemu przechowywania danych serwera (Prawdopodobnie związany z zasobami lub danymi postaci): {raw_error}",
"main.servers.other_error": "Ogólny błąd serwera: {raw_error}",
// Credits screen
"main.credits": "Twórcy",
"main.credits.created_by": "stworzone przez",
"main.credits": "Podziękowania",
"main.credits.created_by": "utworzone przez",
"main.credits.music": "Muzyka",
"main.credits.fonts": "Czcionki",
"main.credits.other_art": "Inne dzieła",
"main.credits.other_art": "Inna Sztuka",
"main.credits.contributors": "Współtwórcy",
/// End Main screen section
},
// TODO: Check this whole thing
vector_map: {
/// The keybinding names can be found in voxygen/src/game_input.rs in the GameInput enum
// The keybinding names can be found in voxygen/src/game_input.rs in the GameInput enum
"loading.tips": [
"Naciśnij '{gameinput.togglelantern}' by zapalić latarnię.",
"Naciśnij '{gameinput.help}' by zobaczyć podstawową klawiszologię.",

View File

@ -1,6 +1,7 @@
/// Localization for Polish
/// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Tłumaczenia dla języka polskiego
/// Localization for Polish
// TODO: Check this whole file
(
string_map: {
},

View File

@ -59,7 +59,7 @@ O cliente está atualizado?"#,
"common.species.human": "Humano",
"common.species.dwarf": "Anão",
"common.species.elf": "Elfo",
"common.species.undead": "Morto-vivo",
"common.species.draugr": "Morto-vivo",
"common.species.danari": "Danari",
"common.weapons.axe": "Machado",

View File

@ -41,7 +41,7 @@ O cliente está atualizado?"#,
"common.species.human": "Humano",
"common.species.dwarf": "Anão",
"common.species.elf": "Elfo",
"common.species.undead": "Morto-vivo",
"common.species.draugr": "Morto-vivo",
"common.species.danari": "Danari",
"common.weapons.axe": "Machado",

View File

@ -59,7 +59,7 @@
"common.species.human": "Человек",
"common.species.dwarf": "Дворф",
"common.species.elf": "Эльф",
"common.species.undead": "Нежить",
"common.species.draugr": "Нежить",
"common.species.danari": "Данари",
"common.weapons.axe": "Топор",

View File

@ -57,7 +57,7 @@
"common.species.human": "Човек",
"common.species.dwarf": "патуљак",
"common.species.elf": "Вилењак",
"common.species.undead": "Мртвац",
"common.species.draugr": "Мртвац",
"common.species.danari": "Данари",
"common.weapons.axe": "Секира",

View File

@ -59,7 +59,7 @@ Startade servern om?
"common.species.human": "Människa",
"common.species.dwarf": "Dvärg",
"common.species.elf": "Alv",
"common.species.undead": "Odöd",
"common.species.draugr": "Odöd",
"common.species.danari": "Danari",
"common.weapons.axe": "Yxa",

View File

@ -59,7 +59,7 @@
"common.species.human": "มนุษย์",
"common.species.dwarf": "คนแคระ",
"common.species.elf": "เอลฟ์",
"common.species.undead": "ภูตผี",
"common.species.draugr": "ภูตผี",
"common.species.danari": "ดานาริ",
"common.weapons.axe": "ขวาน",

View File

@ -57,7 +57,7 @@ Sunucu yeniden mi başladı?
"common.species.human": "İnsan",
"common.species.dwarf": "Cüce",
"common.species.elf": "Elf",
"common.species.undead": "Hortlak",
"common.species.draugr": "Hortlak",
"common.species.danari": "Danari",
"common.weapons.axe": "Balta",

View File

@ -96,7 +96,7 @@
"common.species.human": "Людина",
"common.species.dwarf": "Дварф",
"common.species.elf": "Ельф",
"common.species.undead": "Нежить",
"common.species.draugr": "Нежить",
"common.species.danari": "Данарі",
// Stats

View File

@ -57,7 +57,7 @@ Trò chơi có được cập nhật không?"#,
"common.species.human": "Loài người",
"common.species.dwarf": "Người lùn",
"common.species.elf": "Yêu tinh",
"common.species.undead": "Xác sống",
"common.species.draugr": "Xác sống",
"common.species.danari": "Loài Danari",
"common.weapons.axe": "Rìu",

View File

@ -55,7 +55,7 @@
"common.species.human": "人类",
"common.species.dwarf": "矮人",
"common.species.elf": "精灵",
"common.species.undead": "亡灵",
"common.species.draugr": "亡灵",
"common.species.danari": "丹那利",
"common.weapons.axe": "",

View File

@ -41,7 +41,7 @@
"common.races.human": "人類",
"common.races.dwarf": "矮人",
"common.races.elf": "精靈",
"common.races.undead": "不死族",
"common.races.draugr": "不死族",
"common.races.danari": "丹那利",
"common.weapons.axe": "",

View File

@ -83,73 +83,48 @@ void main() {
#if (CLOUD_MODE == CLOUD_MODE_NONE)
color.rgb = apply_point_glow(cam_pos.xyz + focus_off.xyz, dir, dist, color.rgb);
#else
vec3 old_color = color.rgb;
// normalized direction from the camera position to the fragment in world, transformed by the relative rain direction
vec3 adjusted_dir = (vec4(dir, 0) * rain_dir_mat).xyz;
// stretch z values as they move away from 0
float z = (-1 / (abs(adjusted_dir.z) - 1) - 1) * sign(adjusted_dir.z);
// normalize xy to get a 2d direction
vec2 dir_2d = normalize(adjusted_dir.xy);
// sort of map cylinder around the camera to 2d grid
vec2 view_pos = vec2(atan2(dir_2d.x, dir_2d.y), z);
// compute camera position in the world
if (medium.x == MEDIUM_AIR && rain_density > 0.001) {
vec3 cam_wpos = cam_pos.xyz + focus_off.xyz;
// Rain density is now only based on the cameras current position.
// This could be affected by a setting where rain_density_at is instead
// called each iteration of the loop. With the current implementation
// of rain_dir this has issues with being in a place where it doesn't rain
// and seeing rain.
float rain_density = rain_density * 1.0;
if (medium.x == MEDIUM_AIR && rain_density > 0.0) {
float rain_dist = 50.0;
#if (CLOUD_MODE <= CLOUD_MODE_LOW)
const int iterations = 2;
vec3 adjusted_dir = (vec4(dir, 0) * rain_dir_mat).xyz;
vec2 dir2d = adjusted_dir.xy;
vec3 rorigin = cam_pos.xyz + focus_off.xyz + 0.5;
vec3 rpos = vec3(0.0);
float t = 0.0;
const float PLANCK = 0.01;
for (int i = 0; i < 14 /* log2(64) * 2 + 2 */; i ++) {
float scale = min(pow(2, ceil(t / 2.0)), 32);
vec2 deltas = (step(vec2(0), dir2d) - fract(rpos.xy / scale + 100.0)) / dir2d;
float jump = max(min(deltas.x, deltas.y) * scale, PLANCK);
t += jump;
#if (CLOUD_MODE >= CLOUD_MODE_MEDIUM)
if (t >= 64.0) { break; }
#else
const int iterations = 4;
if (t >= 16.0) { break; }
#endif
for (int i = 0; i < iterations; i ++) {
float old_rain_dist = rain_dist;
rain_dist *= 0.3 / 4.0 * iterations;
rpos = rorigin + adjusted_dir * t;
vec2 drop_density = vec2(30, 1);
vec2 diff = abs(round(rpos.xy) - rpos.xy);
vec3 wall_pos = vec3((diff.x > diff.y) ? rpos.xy : rpos.yx, rpos.z + integrated_rain_vel);
wall_pos.xz *= vec2(4, 0.3);
wall_pos.z += hash_two(uvec2(wall_pos.xy + vec2(0, 0.5)));
vec2 rain_pos = (view_pos * rain_dist);
rain_pos.y += integrated_rain_vel;
float depth_adjust = fract(hash_two(uvec2(wall_pos.xz) + 500u));
float wpos_dist = t - jump * depth_adjust;
vec3 wpos = cam_pos.xyz + dir * wpos_dist;
vec2 cell = floor(rain_pos * drop_density) / drop_density;
if (wpos_dist > dist) { break; }
if (length((fract(wall_pos.xz) - 0.5)) < 0.1 + pow(max(0.0, wpos_dist - (dist - 0.25)) / 0.25, 4.0) * 0.2) {
float density = rain_density * rain_occlusion_at(wpos);
if (fract(hash_two(uvec2(wall_pos.xz) + 1000u)) >= density) { continue; }
float drop_depth = mix(
old_rain_dist,
rain_dist,
fract(hash(fract(vec4(cell, rain_dist, 0) * 0.1)))
);
float dist_to_rain = drop_depth / length(dir.xy);
vec3 rpos = dir * dist_to_rain;
if (dist < dist_to_rain || cam_wpos.z + rpos.z > CLOUD_AVG_ALT) {
continue;
float alpha = 0.5 * clamp((wpos_dist - 1.0) * 0.5, 0.0, 1.0);
float light = dot(color.rgb, vec3(1)) + 0.05 + (get_sun_brightness() + get_moon_brightness()) * 0.2;
color.rgb = mix(color.rgb, vec3(0.3, 0.35, 0.5) * light, alpha);
}
if (dot(rpos * vec3(1, 1, 0.5), rpos) < 1.0) {
break;
}
float rain_density = 10.0 * rain_density * floor(rain_occlusion_at(cam_pos.xyz + rpos.xyz));
if (rain_density < 0.001 || fract(hash(fract(vec4(cell, rain_dist, 0) * 0.01))) > rain_density) {
continue;
}
vec2 near_drop = cell + (vec2(0.5) + (vec2(hash(vec4(cell, 0, 0)), 0.5) - 0.5) * vec2(2, 0)) / drop_density;
vec2 drop_size = vec2(0.0008, 0.03);
float avg_alpha = (drop_size.x * drop_size.y) * 10 / 1;
float alpha = sign(max(1 - length((rain_pos - near_drop) / drop_size * 0.1), 0));
float light = sqrt(dot(old_color, vec3(1))) + (get_sun_brightness() + get_moon_brightness()) * 0.01;
color.rgb = mix(color.rgb, vec3(0.3, 0.4, 0.5) * light, mix(avg_alpha, alpha, min(1000 / dist_to_rain, 1)) * 0.25);
}
}
#endif

View File

@ -92,9 +92,9 @@ void main() {
// vec3 f_col = f_col_light.rgb;
// float f_ao = f_col_light.a;
float f_ao, f_glow;
float f_ao;
uint material = 0xFFu;
vec3 f_col = greedy_extract_col_light_attr(t_col_light, s_col_light, f_uv_pos, f_ao, f_glow, material);
vec3 f_col = greedy_extract_col_light_figure(t_col_light, s_col_light, f_uv_pos, f_ao, material);
#ifdef EXPERIMENTAL_BAREMINIMUM
tgt_color = vec4(simple_lighting(f_pos.xyz, f_col, f_ao), 1);
@ -164,6 +164,17 @@ void main() {
vec3 surf_color = /*srgb_to_linear*/f_col;
float alpha = 1.0;
const float n2 = 1.5;
// This is a silly hack. It's not true reflectance (see below for that), but gives the desired
// effect without breaking the entire lighting model until we come up with a better way of doing
// reflectivity that accounts for physical surroundings like the ground
if ((material & (1u << 1u)) > 0u) {
vec3 reflect_ray_dir = reflect(cam_to_frag, f_norm);
surf_color *= dot(vec3(1.0) - abs(fract(reflect_ray_dir * 1.5) * 2.0 - 1.0) * 0.85, vec3(1));
alpha = 0.1;
}
const float R_s2s0 = pow((1.0 - n2) / (1.0 + n2), 2);
const float R_s1s0 = pow((1.3325 - n2) / (1.3325 + n2), 2);
const float R_s2s1 = pow((1.0 - 1.3325) / (1.0 + 1.3325), 2);
@ -174,14 +185,6 @@ void main() {
vec3 k_d = vec3(1.0);
vec3 k_s = vec3(R_s);
// This is a silly hack. It's not true reflectance (see below for that), but gives the desired
// effect without breaking the entire lighting model until we come up with a better way of doing
// reflectivity that accounts for physical surroundings like the ground
if ((material & (1u << 1u)) > 0u) {
vec3 reflect_ray_dir = reflect(cam_to_frag, f_norm);
surf_color *= dot(vec3(1.0) - abs(fract(reflect_ray_dir * 1.5) * 2.0 - 1.0) * 0.85, vec3(1));
}
vec3 emitted_light, reflected_light;
// Make voxel shadows block the sun and moon
@ -209,10 +212,16 @@ void main() {
: compute_attenuation_point(f_pos, -view_dir, mu, fluid_alt, /*cam_pos.z <= fluid_alt ? cam_pos.xyz : f_pos*/cam_pos.xyz);
#endif
// Prevent the sky affecting light when underground
float not_underground = clamp((f_pos.z - f_alt) / 128.0 + 1.0, 0.0, 1.0);
max_light += get_sun_diffuse2(sun_info, moon_info, f_norm, view_dir, f_pos, mu, cam_attenuation, fluid_alt, k_a, k_d, k_s, alpha, f_norm, 1.0, emitted_light, reflected_light);
max_light += lights_at(f_pos, f_norm, view_dir, mu, cam_attenuation, fluid_alt, k_a, k_d, k_s, alpha, f_norm, 1.0, emitted_light, reflected_light);
// TODO: Hack to add a small amount of underground ambient light to the scene
reflected_light += vec3(0.01, 0.02, 0.03) * (1.0 - not_underground);
float ao = f_ao * sqrt(f_ao);//0.25 + f_ao * 0.75; ///*pow(f_ao, 0.5)*/f_ao * 0.85 + 0.15;
// For now, just make glowing material light be the same colour as the surface

View File

@ -242,7 +242,7 @@ vec3 get_cloud_color(vec3 surf_color, vec3 dir, vec3 origin, const float time_of
int i;
#if (CLOUD_MODE >= CLOUD_MODE_MEDIUM)
#ifdef EXPERIMENTAL_RAINBOWS
#ifndef EXPERIMENTAL_NORAINBOWS
// TODO: Make it a double rainbow
float rainbow_t = (0.7 - dot(sun_dir.xyz, dir)) * 8 / 0.05;
int rainbow_c = int(floor(rainbow_t));
@ -281,11 +281,13 @@ vec3 get_cloud_color(vec3 surf_color, vec3 dir, vec3 origin, const float time_of
sun_color * sun_scatter * get_sun_brightness() * (sun_access * (1.0 - cloud_darken) * cloud_diffuse /*+ sky_color * global_scatter_factor*/) +
moon_color * moon_scatter * get_moon_brightness() * (moon_access * (1.0 - cloud_darken) * cloud_diffuse /*+ sky_color * global_scatter_factor*/) +
sky_light * (1.0 - global_darken) * not_underground +
// A small amount fake ambient light underground
(1.0 - not_underground) * vec3(0.2, 0.35, 0.5) * (1.0 - global_darken) +
emission * density_integrals.y * step;
// Rainbow
#if (CLOUD_MODE >= CLOUD_MODE_MEDIUM)
#ifdef EXPERIMENTAL_RAINBOWS
#if (CLOUD_MODE >= CLOUD_MODE_ULTRA)
#ifndef EXPERIMENTAL_NORAINBOWS
if (rainbow_c >= 0 && rainbow_c < 8) {
vec3 colors[9] = {
surf_color,

View File

@ -19,6 +19,7 @@ layout(std140, set = 0, binding = 0) uniform u_globals {
uvec4 medium;
ivec4 select_pos;
vec4 gamma_exposure;
vec4 last_lightning;
float ambiance;
// 0 - FirstPerson
// 1 - ThirdPerson

View File

@ -153,7 +153,7 @@ float lights_at(vec3 wpos, vec3 wnorm, vec3 /*cam_to_frag*/view_dir, vec3 mu, ve
// float strength = attenuation_strength(difference);// pow(attenuation_strength(difference), 0.6);
// NOTE: This normalizes strength to 0.25 at the center of the point source.
float strength = 1.0 / (4 + distance_2);
float strength = 3.0 / (5 + distance_2);
// Multiply the vec3 only once
const float PI = 3.1415926535897932384626433832795;

View File

@ -1,14 +1,9 @@
#ifndef POINT_GLOW_GLSL
#define POINT_GLOW_GLSL
vec3 apply_point_glow(vec3 wpos, vec3 dir, float max_dist, vec3 color) {
#ifndef POINT_GLOW_FACTOR
return color;
#else
for (uint i = 0u; i < light_shadow_count.x; i ++) {
// Only access the array once
Light L = lights[i];
#include "sky.glsl"
void apply_point_glow_light(Light L, vec3 wpos, vec3 dir, float max_dist, inout vec3 color) {
vec3 light_pos = L.light_pos.xyz;
// Project light_pos to dir line
float t = max(dot(light_pos - wpos, dir), 0);
@ -16,9 +11,9 @@ vec3 apply_point_glow(vec3 wpos, vec3 dir, float max_dist, vec3 color) {
vec3 difference = light_pos - nearest;
float distance_2 = dot(difference, difference);
if (distance_2 > 100000.0) {
continue;
}
//if (distance_2 > 100000.0) {
// return;
//}
#if (CLOUD_MODE >= CLOUD_MODE_HIGH)
vec3 _unused;
@ -43,10 +38,29 @@ vec3 apply_point_glow(vec3 wpos, vec3 dir, float max_dist, vec3 color) {
const float LIGHT_AMBIANCE = 0.025;
color += light_color
* 0.002
#ifdef POINT_GLOW_FACTOR
// Constant, *should* const fold
* POINT_GLOW_FACTOR;
* POINT_GLOW_FACTOR
#endif
;
}
vec3 apply_point_glow(vec3 wpos, vec3 dir, float max_dist, vec3 color) {
#ifndef POINT_GLOW_FACTOR
return color;
#else
for (uint i = 0u; i < light_shadow_count.x; i ++) {
// Only access the array once
Light L = lights[i];
apply_point_glow_light(L, wpos, dir, max_dist, color);
}
#endif
float time_since_lightning = tick.x - last_lightning.w;
if (time_since_lightning < MAX_LIGHTNING_PERIOD) {
// Apply lightning
apply_point_glow_light(Light(last_lightning.xyzw + vec4(0, 0, LIGHTNING_HEIGHT, 0), vec4(vec3(0.2, 0.4, 1) * lightning_intensity() * 0.003, 1)), wpos, dir, max_dist, color);
}
return color;
}

View File

@ -20,9 +20,7 @@ uniform u_rain_occlusion {
float rain_occlusion_at(in vec3 fragPos)
{
float bias = -0.2;
vec4 rain_pos = rain_occlusion_texture_mat * vec4(fragPos, 1.0) - vec4(0, 0, bias, 0);
vec4 rain_pos = rain_occlusion_texture_mat * vec4(fragPos, 1.0);
float visibility = textureProj(sampler2DShadow(t_directed_occlusion_maps, s_directed_occlusion_maps), rain_pos);

View File

@ -232,6 +232,34 @@ DirectionalLight get_moon_info(vec4 _dir, float shade_frac/*, vec4 light_pos[2]*
return DirectionalLight(/*dir, */shadow, block/*, get_moon_color(dir), get_moon_brightness(dir)*/);
}
const float LIGHTNING_HEIGHT = 25.0;
const float MAX_LIGHTNING_PERIOD = 5.0;
float lightning_intensity() {
float time_since_lightning = tick.x - last_lightning.w;
return
// Strength
1000000
// Flash
* max(0.0, 1.0 - time_since_lightning * 1.0)
// Reverb
* max(sin(time_of_day.x * 0.4), 0.0);
}
vec3 lightning_at(vec3 wpos) {
float time_since_lightning = tick.x - last_lightning.w;
if (time_since_lightning < MAX_LIGHTNING_PERIOD) {
vec3 diff = wpos + focus_off.xyz - (last_lightning.xyz + vec3(0, 0, LIGHTNING_HEIGHT));
float dist = length(diff);
return vec3(0.5, 0.8, 1.0)
* lightning_intensity()
// Attenuation
/ pow(50.0 + dist, 2);
} else {
return vec3(0.0);
}
}
// // Calculates extra emission and reflectance (due to sunlight / moonlight).
// //
// // reflectence = k_a * i_a + i_a,persistent
@ -437,7 +465,7 @@ float get_sun_diffuse2(DirectionalLight sun_info, DirectionalLight moon_info, ve
light_reflection_factor(norm, dir, normalize(sun_dir - vec3(0.0, 0.1, 0.0)), k_d, k_s, alpha)*/) +
(1.0 - MOON_AMBIANCE) * moon_chroma * moon_shadow * 1.0 * /*4.0 * */light_reflection_factor(norm, dir, moon_dir, k_d, k_s, alpha, voxel_norm, voxel_lighting) +
emission
);
) + lightning_at(wpos);
/* light = sun_chroma + moon_chroma + PERSISTENT_AMBIANCE;
diffuse_light =

View File

@ -620,35 +620,51 @@ vec3 compute_attenuation_point(vec3 wpos, vec3 ray_dir, vec3 mu, float surface_a
//}
//#endif
vec3 greedy_extract_col_light_attr(texture2D t_col_light, sampler s_col_light, vec2 f_uv_pos, out float f_light, out float f_glow, out uint f_attr) {
uvec4 f_col_light = uvec4(texelFetch(sampler2D(t_col_light, s_col_light), ivec2(f_uv_pos), 0) * 255);
vec3 f_col = vec3(
float(((f_col_light.r & 0x7u) << 1u) | (f_col_light.b & 0xF0u)),
float(f_col_light.a),
float(((f_col_light.g & 0x7u) << 1u) | ((f_col_light.b & 0x0Fu) << 4u))
) / 255.0;
vec3 greedy_extract_col_light_attr(texture2D t_col_light, sampler s_col_light, vec2 f_uv_pos, out float f_light, out float f_glow, out float f_ao, out uint f_attr, out float f_sky_exposure) {
// TODO: Figure out how to use `texture` and modulation to avoid needing to do manual filtering
vec2 light_00 = vec2(uvec2(f_col_light.rg) >> 3u);
vec2 light_10 = vec2(uvec2(texelFetch(sampler2D(t_col_light, s_col_light), ivec2(f_uv_pos) + ivec2(1, 0), 0).rg * 255.0) >> 3u);
vec2 light_01 = vec2(uvec2(texelFetch(sampler2D(t_col_light, s_col_light), ivec2(f_uv_pos) + ivec2(0, 1), 0).rg * 255.0) >> 3u);
vec2 light_11 = vec2(uvec2(texelFetch(sampler2D(t_col_light, s_col_light), ivec2(f_uv_pos) + ivec2(1, 1), 0).rg * 255.0) >> 3u);
vec2 light_0 = mix(light_00, light_01, fract(f_uv_pos.y));
vec2 light_1 = mix(light_10, light_11, fract(f_uv_pos.y));
vec2 light = mix(light_0, light_1, fract(f_uv_pos.x));
// TODO: Use `texture` instead
//vec2 light = texture(t_col_light, f_uv_pos).xy / 31;
uvec4 tex_00 = uvec4(texelFetch(sampler2D(t_col_light, s_col_light), ivec2(f_uv_pos) + ivec2(0, 0), 0) * 255);
uvec4 tex_10 = uvec4(texelFetch(sampler2D(t_col_light, s_col_light), ivec2(f_uv_pos) + ivec2(1, 0), 0) * 255);
uvec4 tex_01 = uvec4(texelFetch(sampler2D(t_col_light, s_col_light), ivec2(f_uv_pos) + ivec2(0, 1), 0) * 255);
uvec4 tex_11 = uvec4(texelFetch(sampler2D(t_col_light, s_col_light), ivec2(f_uv_pos) + ivec2(1, 1), 0) * 255);
vec3 light_00 = vec3(tex_00.rg >> 3u, tex_00.a & 1u);
vec3 light_10 = vec3(tex_10.rg >> 3u, tex_10.a & 1u);
vec3 light_01 = vec3(tex_01.rg >> 3u, tex_01.a & 1u);
vec3 light_11 = vec3(tex_11.rg >> 3u, tex_11.a & 1u);
vec3 light_0 = mix(light_00, light_01, fract(f_uv_pos.y));
vec3 light_1 = mix(light_10, light_11, fract(f_uv_pos.y));
vec3 light = mix(light_0, light_1, fract(f_uv_pos.x));
vec3 f_col = vec3(
float(((tex_00.r & 0x7u) << 1u) | (tex_00.b & 0xF0u)),
float(tex_00.a & 0xFE),
float(((tex_00.g & 0x7u) << 1u) | ((tex_00.b & 0x0Fu) << 4u))
) / 255.0;
f_ao = light.z;
f_light = light.x / 31.0;
f_sky_exposure = light.x / 31.0 + (1.0 - f_ao) * 0.5;
f_glow = light.y / 31.0;
f_attr = f_col_light.g >> 3u;
f_attr = tex_00.g >> 3u;
return srgb_to_linear(f_col);
}
vec3 greedy_extract_col_light_glow(texture2D t_col_light, sampler s_col_light, vec2 f_uv_pos, out float f_light, out float f_glow) {
uint f_attr;
return greedy_extract_col_light_attr(t_col_light, s_col_light, f_uv_pos, f_light, f_glow, f_attr);
vec3 greedy_extract_col_light_terrain(texture2D t_col_light, sampler s_col_light, vec2 f_uv_pos, out float f_light, out float f_glow, out float f_ao, out float f_sky_exposure) {
float _f_attr;
return greedy_extract_col_light_attr(t_col_light, s_col_light, f_uv_pos, f_light, f_glow, f_ao, _f_attr, f_sky_exposure);
}
vec3 greedy_extract_col_light_sprite(texture2D t_col_light, sampler s_col_light, vec2 f_uv_pos, out float f_light) {
float _f_sky_exposure, _f_light, _f_glow, _f_ao;
uint _f_attr;
return greedy_extract_col_light_attr(t_col_light, s_col_light, f_uv_pos, f_light, _f_glow, _f_ao, _f_attr, _f_sky_exposure);
}
vec3 greedy_extract_col_light_figure(texture2D t_col_light, sampler s_col_light, vec2 f_uv_pos, out float f_light, out uint f_attr) {
float _f_sky_exposure, _f_light, _f_glow, _f_ao;
return greedy_extract_col_light_attr(t_col_light, s_col_light, f_uv_pos, f_light, _f_glow, _f_ao, f_attr, _f_sky_exposure);
}
#endif

View File

@ -41,7 +41,6 @@ const int SMOKE = 0;
const int FIRE = 1;
const int GUN_POWDER_SPARK = 2;
const int SHRAPNEL = 3;
const int FIREWORK_BLUE = 4;
const int FIREWORK_GREEN = 5;
const int FIREWORK_PURPLE = 6;
@ -76,6 +75,7 @@ const int DEATH = 34;
const int ENERGY_BUFFING = 35;
const int WEB_STRAND = 36;
const int BLACK_SMOKE = 37;
const int LIGHTNING = 38;
// meters per second squared (acceleration)
const float earth_gravity = 9.807;
@ -602,6 +602,18 @@ void main() {
spin_in_axis(perp_axis, asin(inst_dir.z / length(inst_dir)) + PI / 2.0)
);
break;
case LIGHTNING:
f_reflect = 0.0;
perp_axis = normalize(cross(inst_dir, vec3(0.0, 0.0, 1.0)));
float z = inst_dir.z * (percent() - 1.0);
vec3 start_off = vec3(abs(fract(vec3(vec2(z) * vec2(0.015, 0.01), 0)) - 0.5) * z * 0.4);
attr = Attr(
inst_dir * percent() + start_off,
vec3(max(3.0, 0.05 * length(start_pos + inst_dir * percent()))),
vec4(10.0, 20.0, 50.0, 1.0),// * (1.0 - length(inst_dir) * 0.1),
identity()//spin_in_axis(perp_axis, asin(inst_dir.z / length(inst_dir)) + PI / 2.0)
);
break;
default:
attr = Attr(
linear_motion(

View File

@ -40,8 +40,8 @@ layout(location = 0) out vec4 tgt_color;
const float FADE_DIST = 32.0;
void main() {
float f_ao, f_glow;
vec3 f_col = greedy_extract_col_light_glow(t_col_light, s_col_light, f_uv_pos, f_ao, f_glow);
float f_ao;
vec3 f_col = greedy_extract_col_light_sprite(t_col_light, s_col_light, f_uv_pos, f_ao);
#ifdef EXPERIMENTAL_BAREMINIMUM
tgt_color = vec4(simple_lighting(f_pos.xyz, f_col, f_ao), 1);
@ -100,6 +100,9 @@ void main() {
: compute_attenuation_point(f_pos, -view_dir, mu, fluid_alt, /*cam_pos.z <= fluid_alt ? cam_pos.xyz : f_pos*/cam_pos.xyz);
#endif
// Prevent the sky affecting light when underground
float not_underground = clamp((f_pos.z - f_alt) / 128.0 + 1.0, 0.0, 1.0);
max_light += get_sun_diffuse2(sun_info, moon_info, f_norm, view_dir, f_pos, mu, cam_attenuation, fluid_alt, k_a, k_d, k_s, alpha, f_norm, 1.0, emitted_light, reflected_light);
emitted_light *= sun_info.block;
@ -107,6 +110,9 @@ void main() {
max_light += lights_at(f_pos, f_norm, view_dir, mu, cam_attenuation, fluid_alt, k_a, k_d, k_s, alpha, f_norm, 1.0, emitted_light, reflected_light);
// TODO: Hack to add a small amount of underground ambient light to the scene
reflected_light += vec3(0.01, 0.02, 0.03) * (1.0 - not_underground);
vec3 glow = pow(f_inst_light.y, 3) * 4 * glow_light(f_pos);
emitted_light += glow * cam_attenuation;

View File

@ -83,9 +83,11 @@ void main() {
f_pos += chunk_offs;
#ifndef EXPERIMENTAL_BAREMINIMUM
#ifndef EXPERIMENTAL_NOTERRAINPOP
// Terrain 'pop-in' effect
f_pos.z -= 250.0 * (1.0 - min(1.0001 - 0.02 / pow(tick.x - load_time, 10.0), 1.0));
#endif
#endif
#ifdef EXPERIMENTAL_CURVEDWORLD
f_pos.z -= pow(distance(f_pos.xy + focus_off.xy, focus_pos.xy + focus_off.xy) * 0.05, 2);

View File

@ -84,8 +84,8 @@ void main() {
vec2 f_uv_pos = f_uv_pos + atlas_offs.xy;
// vec4 f_col_light = textureProj(t_col_light, vec3(f_uv_pos + 0.5, textureSize(t_col_light, 0)));//(f_uv_pos/* + 0.5*/) / texSize);
// float f_light = textureProj(t_col_light, vec3(f_uv_pos + 0.5, textureSize(t_col_light, 0))).a;//1.0;//f_col_light.a * 4.0;// f_light = float(v_col_light & 0x3Fu) / 64.0;
float f_light, f_glow;
vec3 f_col = greedy_extract_col_light_glow(t_col_light, s_col_light, f_uv_pos, f_light, f_glow);
float f_light, f_glow, f_ao, f_sky_exposure;
vec3 f_col = greedy_extract_col_light_terrain(t_col_light, s_col_light, f_uv_pos, f_light, f_glow, f_ao, f_sky_exposure);
#ifdef EXPERIMENTAL_BAREMINIMUM
tgt_color = vec4(simple_lighting(f_pos.xyz, f_col, f_light), 1);
@ -244,7 +244,31 @@ void main() {
drop_pos.z *= 0.5 + hash_fast(uvec3(cell2d, 0));
vec3 cell = vec3(cell2d, floor(drop_pos.z * drop_density.z));
if (fract(hash(fract(vec4(cell, 0) * 0.01))) < rain_density * rain_occlusion_at(f_pos.xyz) * 50.0) {
#ifdef EXPERIMENTAL_WETNESS
float puddle = clamp((noise_2d((f_pos.xy + focus_off.xy + vec2(0.1, 0)) * 0.03) - 0.5) * 20.0, 0.0, 1.0)
* min(rain_density * 10.0, 1.0)
* clamp((f_sky_exposure - 0.9) * 50.0, 0.0, 1.0);
#else
const float puddle = 1.0;
#endif
#ifdef EXPERIMENTAL_WETNESS
if (puddle > 0.0) {
float h = (noise_2d((f_pos.xy + focus_off.xy) * 0.3) - 0.5) * sin(tick.x * 8.0 + f_pos.x * 3)
+ (noise_2d((f_pos.xy + focus_off.xy) * 0.6) - 0.5) * sin(tick.x * 3.5 - f_pos.y * 6);
float hx = (noise_2d((f_pos.xy + focus_off.xy + vec2(0.1, 0)) * 0.3) - 0.5) * sin(tick.x * 8.0 + f_pos.x * 3)
+ (noise_2d((f_pos.xy + focus_off.xy + vec2(0.1, 0)) * 0.6) - 0.5) * sin(tick.x * 3.5 - f_pos.y * 6);
float hy = (noise_2d((f_pos.xy + focus_off.xy + vec2(0, 0.1)) * 0.3) - 0.5) * sin(tick.x * 8.0 + f_pos.x * 3)
+ (noise_2d((f_pos.xy + focus_off.xy + vec2(0, 0.1)) * 0.6) - 0.5) * sin(tick.x * 3.5 - f_pos.y * 6);
f_norm.xy += mix(vec2(0), vec2(h - hx, h - hy) / 0.1 * 0.03, puddle);
alpha = mix(1.0, 0.2, puddle);
f_col.rgb *= mix(1.0, 0.7, puddle);
k_s = mix(k_s, vec3(0.7, 0.7, 1.0), puddle);
}
#endif
if (rain_occlusion_at(f_pos.xyz + vec3(0, 0, 0.25)) > 0.5) {
if (fract(hash(fract(vec4(cell, 0) * 0.01))) < rain_density * 2.0 && puddle > 0.3) {
vec3 off = vec3(hash_fast(uvec3(cell * 13)), hash_fast(uvec3(cell * 5)), 0);
vec3 near_cell = (cell + 0.5 + (off - 0.5) * 0.5) / drop_density;
@ -254,6 +278,11 @@ void main() {
k_a += distort;
k_d += distort;
k_s += distort;
#ifdef EXPERIMENTAL_WETNESS
/* puddle = mix(puddle, 1.0, distort * 10); */
#endif
f_norm.xy += (drop_pos - near_cell).xy
* max(1.0 - abs(dist - drop_rad) * 30, 0)
* 500.0
@ -262,6 +291,7 @@ void main() {
* max(drop_pos.z - near_cell.z, 0);
}
}
}
#endif
// float sun_light = get_sun_brightness(sun_dir);
@ -354,12 +384,17 @@ void main() {
reflected_light *= f_light;
max_light *= f_light;
// TODO: Hack to add a small amount of underground ambient light to the scene
reflected_light += vec3(0.01, 0.02, 0.03) * (1.0 - not_underground);
// TODO: Apply AO after this
vec3 glow = glow_light(f_pos) * (pow(f_glow, 3) * 5 + pow(f_glow, 2.0) * 2) * pow(max(dot(face_norm, f_norm), 0), 2);
reflected_light += glow * cam_attenuation;
max_light += lights_at(f_pos, f_norm, view_dir, mu, cam_attenuation, fluid_alt, k_a, k_d, k_s, alpha, f_norm, 1.0, emitted_light, reflected_light);
reflected_light *= 0.4 + f_ao * 0.6;
#ifndef EXPERIMENTAL_NOCAUSTICS
#if (FLUID_MODE == FLUID_MODE_SHINY)
if (faces_fluid) {

BIN
assets/voxygen/voxel/figure/accessory/danari/horns-0.vox (Stored with Git LFS) Normal file → Executable file

Binary file not shown.

BIN
assets/voxygen/voxel/figure/accessory/danari/horns-1.vox (Stored with Git LFS) Normal file → Executable file

Binary file not shown.

BIN
assets/voxygen/voxel/figure/accessory/danari/horns-2.vox (Stored with Git LFS) Normal file → Executable file

Binary file not shown.

BIN
assets/voxygen/voxel/figure/accessory/danari/horns-3.vox (Stored with Git LFS) Normal file → Executable file

Binary file not shown.

BIN
assets/voxygen/voxel/figure/accessory/danari/horns-4.vox (Stored with Git LFS) Normal file → Executable file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More