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", "-C", "link-arg=-fuse-ld=gold",
] ]
[target.x86_64-pc-windows-gnu]
rustflags = [
# Required for mimalloc
"-C", "link-arg=-lpsapi",
]
[alias] [alias]
# tools # tools
cmd-doc-gen = "run --features=bin_cmd_doc_gen --bin cmd_doc_gen" 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 # https://docs.gitlab.com/ee/ci/yaml/#shallow-cloning
GIT_DEPTH: 3 GIT_DEPTH: 3
GIT_CLEAN_FLAGS: -f GIT_CLEAN_FLAGS: -f
CACHE_IMAGE_TAG: 59fdc4df CACHE_IMAGE_TAG: c96aef21
TAG_REGEX: '/^v[0-9]+\.[0-9]+\.[0-9]+$/' TAG_REGEX: '/^v[0-9]+\.[0-9]+\.[0-9]+$/'
default: default:

View File

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

View File

@ -2,5 +2,8 @@
# exports default env variables in CI # exports default env variables in CI
export DISABLE_GIT_LFS_CHECK=true export DISABLE_GIT_LFS_CHECK=true
export VELOREN_ASSETS="assets" 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 RUSTFLAGS="-D warnings"
export SHADERC_LIB_DIR=/shaderc/combined/ 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-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 update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
export VELOREN_USERDATA_STRATEGY=executable 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 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] ## [Unreleased]
### Added
### Changed
### Removed
### Fixed
## [0.13.0] - 2022-07-23
### Added ### Added
- Chat commands to mute and unmute players - Chat commands to mute and unmute players
- Waypoints saved between sessions and shared with group members. - 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 - Slider for ambience volume
- Weather generated on server is sent to clients, and seen on clients as rain/clouds. - Weather generated on server is sent to clients, and seen on clients as rain/clouds.
- Updated Brazilian Portuguese Translation - Updated Brazilian Portuguese Translation
- Lightning storms
- More varied ambient birdcalls
- Cave biomes
- Updated the Polish translation
### Changed ### Changed
@ -52,10 +66,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Changed module component modifier costs to the following scheme, based on base material: 1 -> 2 -> 5 -> 10 -> 15 -> 25 - Changed module component modifier costs to the following scheme, based on base material: 1 -> 2 -> 5 -> 10 -> 15 -> 25
- Damage from the same source dealt in the same tick will now be grouped up. - Damage from the same source dealt in the same tick will now be grouped up.
- Critical hits are now shown differently in the damage numbers. - Critical hits are now shown differently in the damage numbers.
- Fall damage and some (extra) buffs/debuffs now show up in the damage numbers. - Fall damage and some (extra) buffs/debuffs now show up in the damage numbers.
- Optimized sprite processing decreasing the startup time of voxygen (and long freezes when trying - Optimized sprite processing decreasing the startup time of voxygen (and long freezes when trying
to enter the world when this hasn't finished). to enter the world when this hasn't finished).
- Metadata added to music files. Listen to the soundtrack more easily! - 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
- Removed the options for single and cumulated damage. - Removed the options for single and cumulated damage.
@ -70,7 +85,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixed an error where '{amount} Exp' floater did not use existing localizations - Fixed an error where '{amount} Exp' floater did not use existing localizations
- Fix villagers seeing cultists and familiar enemies through objects. - Fix villagers seeing cultists and familiar enemies through objects.
- Menacing agents are now less spammy with their menacing messages - Menacing agents are now less spammy with their menacing messages
- Fixed the title screen FPS cap not applying when the background FPS limit was set higher than 60 FPS - Fixed the title screen FPS cap not applying when the background FPS limit was set higher than 60 FPS
- Fixed an issue where the hurt animation would "jump" whenever you lost/gained health. - Fixed an issue where the hurt animation would "jump" whenever you lost/gained health.
- Fixed a bug where multiple damage sources in the same tick would show up as a singular attack. - Fixed a bug where multiple damage sources in the same tick would show up as a singular attack.
- Fixed an issue where, if the same amount of healing and damage was received in the same tick, nothing would be shown. - Fixed an issue where, if the same amount of healing and damage was received in the same tick, nothing would be shown.
@ -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 - Most sfx now correctly play when camera is underwater
- All sounds now stop upon quitting to main menu - All sounds now stop upon quitting to main menu
- Combat music now loops and ends properly - 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 ## [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_ _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.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.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 [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", "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]] [[package]]
name = "rstar" name = "rstar"
version = "0.9.2" version = "0.9.2"
@ -5425,9 +5434,9 @@ dependencies = [
[[package]] [[package]]
name = "shaderc" name = "shaderc"
version = "0.6.3" version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50b8aeaae10b9bda5cba66736a7e265f67698e912e1cc6a4678acba286e22be9" checksum = "80e6fe602a861622769530a23bc40bfba31adbf186d0c8412e83f5519c5d6bee"
dependencies = [ dependencies = [
"libc", "libc",
"shaderc-sys", "shaderc-sys",
@ -5435,12 +5444,13 @@ dependencies = [
[[package]] [[package]]
name = "shaderc-sys" name = "shaderc-sys"
version = "0.6.3" version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b12d7c62d6732884c9dfab587503fa3a795b108df152415a89da23812d4737e" checksum = "3794498651f8173d0afbc0bb8aca45ced111098227e755dde4c0ef2888c8d0bf"
dependencies = [ dependencies = [
"cmake", "cmake",
"libc", "libc",
"roxmltree",
] ]
[[package]] [[package]]
@ -6463,7 +6473,7 @@ dependencies = [
[[package]] [[package]]
name = "veloren-client" name = "veloren-client"
version = "0.12.0" version = "0.13.0"
dependencies = [ dependencies = [
"async-channel", "async-channel",
"authc", "authc",
@ -6735,7 +6745,7 @@ dependencies = [
[[package]] [[package]]
name = "veloren-server" name = "veloren-server"
version = "0.12.0" version = "0.13.0"
dependencies = [ dependencies = [
"atomicwrites", "atomicwrites",
"authc", "authc",
@ -6785,7 +6795,7 @@ dependencies = [
[[package]] [[package]]
name = "veloren-server-cli" name = "veloren-server-cli"
version = "0.12.0" version = "0.13.0"
dependencies = [ dependencies = [
"ansi-parser", "ansi-parser",
"clap 3.1.8", "clap 3.1.8",
@ -6809,7 +6819,7 @@ dependencies = [
[[package]] [[package]]
name = "veloren-voxygen" name = "veloren-voxygen"
version = "0.12.0" version = "0.13.0"
dependencies = [ dependencies = [
"assets_manager", "assets_manager",
"backtrace", "backtrace",
@ -7970,6 +7980,12 @@ version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3"
[[package]]
name = "xmlparser"
version = "0.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "114ba2b24d2167ef6d67d7d04c8cc86522b87f490025f39f0303b7db5bf5e3d8"
[[package]] [[package]]
name = "yasna" name = "yasna"
version = "0.5.0" version = "0.5.0"

View File

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

View File

@ -30,8 +30,11 @@
(4.0, Item("common.items.crafting_ing.hide.animal_hide")), (4.0, Item("common.items.crafting_ing.hide.animal_hide")),
// Mob Drops // 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.grim_eyeball")),
(0.15, Item("common.items.crafting_ing.animal_misc.icy_fang")), (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")), (0.5, Item("common.items.crafting_ing.animal_misc.raptor_feather")),
(1.2, Item("common.items.crafting_ing.animal_misc.claw")), (1.2, Item("common.items.crafting_ing.animal_misc.claw")),
(2.5, Item("common.items.crafting_ing.animal_misc.fur")), (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: [ tracks: [
( (
path: "voxygen.audio.ambience.wind", path: "voxygen.audio.ambience.wind",
length: 14.203, length: 14.2,
tag: Wind, tag: Wind,
), ),
( (

View File

@ -11,8 +11,16 @@
), ),
Birdcall: ( Birdcall: (
files: [ files: [
"voxygen.audio.sfx.ambient.birdcall_1", "voxygen.audio.sfx.ambient.birdcall_01",
"voxygen.audio.sfx.ambient.birdcall_2", "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, threshold: 10.0,
), ),
@ -1169,5 +1177,11 @@
], ],
threshold: 1.0, 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), timing: Some(Night),
biomes: [ biomes: [
(Forest, 1), (Forest, 1),
(Taiga, 1),
], ],
site: Some(Void), site: Some(Void),
music_state: Activity(Explore), music_state: Activity(Explore),
@ -79,6 +80,7 @@
timing: Some(Night), timing: Some(Night),
biomes: [ biomes: [
(Forest, 2), (Forest, 2),
(Taiga, 1),
], ],
site: Some(Void), site: Some(Void),
music_state: Activity(Explore), music_state: Activity(Explore),
@ -226,7 +228,6 @@
weather: None, weather: None,
biomes: [ biomes: [
(Snowland, 1), (Snowland, 1),
(Taiga, 1),
], ],
site: Some(Void), site: Some(Void),
music_state: Activity(Explore), music_state: Activity(Explore),
@ -268,6 +269,7 @@
weather: None, weather: None,
biomes: [ biomes: [
(Forest, 2), (Forest, 2),
(Taiga, 1),
], ],
site: Some(Void), site: Some(Void),
music_state: Activity(Explore), music_state: Activity(Explore),
@ -282,6 +284,7 @@
biomes: [ biomes: [
(Forest, 2), (Forest, 2),
(Jungle, 1), (Jungle, 1),
(Taiga, 1),
], ],
site: Some(Void), site: Some(Void),
music_state: Activity(Explore), music_state: Activity(Explore),
@ -322,7 +325,6 @@
weather: None, weather: None,
biomes: [ biomes: [
(Snowland, 1), (Snowland, 1),
(Taiga, 1),
], ],
site: Some(Void), site: Some(Void),
music_state: Activity(Explore), music_state: Activity(Explore),
@ -336,7 +338,6 @@
weather: None, weather: None,
biomes: [ biomes: [
(Snowland, 1), (Snowland, 1),
(Taiga, 1),
], ],
site: Some(Void), site: Some(Void),
music_state: Activity(Explore), music_state: Activity(Explore),
@ -376,6 +377,7 @@
weather: None, weather: None,
biomes: [ biomes: [
(Forest, 2), (Forest, 2),
(Taiga, 1),
], ],
site: Some(Void), site: Some(Void),
music_state: Activity(Explore), music_state: Activity(Explore),
@ -389,6 +391,7 @@
weather: None, weather: None,
biomes: [ biomes: [
(Mountain, 1), (Mountain, 1),
(Taiga, 1),
], ],
site: Some(Void), site: Some(Void),
music_state: Activity(Explore), music_state: Activity(Explore),
@ -402,6 +405,7 @@
weather: None, weather: None,
biomes: [ biomes: [
(Forest, 2), (Forest, 2),
(Taiga, 1),
], ],
site: Some(Void), site: Some(Void),
music_state: Activity(Explore), music_state: Activity(Explore),
@ -521,6 +525,16 @@
// Cave music // 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(( Individual((
title: "Cavernous Hollow", title: "Cavernous Hollow",
path: "voxygen.audio.soundtrack.cave.cavernous_hollow", path: "voxygen.audio.soundtrack.cave.cavernous_hollow",
@ -641,8 +655,8 @@
biomes: [], biomes: [],
site: Some(Dungeon), site: Some(Dungeon),
segments: [ 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-start", 55.97, 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-loop", 53.97, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-end", 6.0, Transition(Combat(High), Explore), None), ("voxygen.audio.soundtrack.combat.barred_paths.barred_paths-end", 6.0, Transition(Combat(High), Explore), None),
], ],
), ),
@ -653,8 +667,8 @@
biomes: [], biomes: [],
site: Some(Dungeon), site: Some(Dungeon),
segments: [ segments: [
("voxygen.audio.soundtrack.combat.reversal.reversal-start", 60.0, Transition(Explore, Combat(High)), Some(Combat(High))), ("voxygen.audio.soundtrack.combat.reversal.reversal-start", 59.97, 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-loop", 59.97, Activity(Combat(High)), None),
("voxygen.audio.soundtrack.combat.reversal.reversal-end", 4.0, Transition(Combat(High), Explore), 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.ship4",
"voxygen.element.animation.loaders.ship5", "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.human": "Чалавек",
"common.species.dwarf": "Дварф", "common.species.dwarf": "Дварф",
"common.species.elf": "Эльф", "common.species.elf": "Эльф",
"common.species.undead": "Нежыць", "common.species.draugr": "Нежыць",
"common.species.danari": "Данары", "common.species.danari": "Данары",
"common.weapons.axe": "Сякера", "common.weapons.axe": "Сякера",

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -53,7 +53,7 @@ Har det kommet nye oppdateringer?"#,
"common.species.human": "Menneske", "common.species.human": "Menneske",
"common.species.dwarf": "Dverg", "common.species.dwarf": "Dverg",
"common.species.elf": "Alv", "common.species.elf": "Alv",
"common.species.undead": "Udødelig", "common.species.draugr": "Udødelig",
"common.species.danari": "Danari", "common.species.danari": "Danari",
"common.weapons.axe": "Øks", "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: ( metadata: (
language_name: "Polish", language_name: "Polish",

View File

@ -1,43 +1,43 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM /// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie /// Localization for Polish
( (
string_map: { string_map: {
// Buffs // Buffs
"buff.remove": "Kliknij by usunąć", "buff.remove": "Kliknij aby usunąć",
"buff.title.missing": "Brak tytułu", "buff.title.missing": "Brak tytułu",
"buff.desc.missing": "Brak opisu", "buff.desc.missing": "Brak opisu",
"buff.title.heal": "Uzdrowienie", "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.title.potion": "Mikstura",
"buff.desc.potion": "Można ją wypić...", "buff.desc.potion": "Można ją wypić...",
"buff.title.saturation": "Najedzenie", "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.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.title.invulnerability": "Nietykalność",
"buff.desc.invulnerability": "Nie można Cię zranić.", "buff.desc.invulnerability": "Nie można Cię zranić.",
"buff.title.protectingward": "Totem ochronny", "buff.title.protectingward": "Totem ochronny",
"buff.desc.protectingward": "Ochrona, poniekąd, przed atakami.", "buff.desc.protectingward": "Częściowa ochrona przed atakami.",
"buff.title.frenzied": "Oszalały", "buff.title.frenzied": "Szał Walki",
"buff.desc.frenzied": "Jesteś wypełniony nienaturalną prędkością i ignorujesz pomniejsze obrażenia.", "buff.desc.frenzied": "Wypełnia cię nienaturalny szał, ignorujesz pomniejsze obrażenia.",
"buff.title.hastened": "Szybkość", "buff.title.hastened": "Pośpiech",
"buff.desc.hastened": "Twoje ruchy i ataki są szybsze.", "buff.desc.hastened": "Twoje ruchy i ataki są szybsze.",
// Debuffs // Debuffs
"buff.title.bleed": "Krwawienie", "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.title.cursed": "Klątwa",
"buff.desc.cursed": "Jesteś przeklęty.", "buff.desc.cursed": "Jesteś przeklęty.",
"buff.title.burn": "Płoniesz", "buff.title.burn": "Ogień",
"buff.desc.burn": "Palisz się żywcem", "buff.desc.burn": "Palisz się żywcem",
"buff.title.crippled": "Okaleczony", "buff.title.crippled": "Okaleczenie",
"buff.desc.crippled": "Ruszasz się jak kaleka, gdyż twoje nogi są bardzo poranione.", "buff.desc.crippled": "Czy noga powinna się wyginać w tę stronę?",
"buff.title.frozen": "Zmrożony", "buff.title.frozen": "Odmrożenia",
"buff.desc.frozen": "Twoje ruchy i ataki są spowolnione.", "buff.desc.frozen": "Twoje ruchy i ataki są spowolnione.",
"buff.title.wet": "Mokry", "buff.title.wet": "Przemoczenie",
"buff.desc.wet": "Ciężko Ci się zatrzymać? W końcu się ślizgasz!", "buff.desc.wet": "Twoje nogi nie trzymają się podłogi.",
"buff.title.ensnared": "Spętany", "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 // Buffs stats
"buff.stat.health": "Odnawia {str_total} Zdrowia", "buff.stat.health": "Odnawia {str_total} Zdrowia",
"buff.stat.increase_max_energy": "Podnosi Maksymalną Wytrzymałość o {strength}", "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 /// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie /// Localization for Polish
( (
string_map: { string_map: {
"char_selection.loading_characters": "Ładowanie postaci...", "char_selection.loading_characters": "Ładowanie Postaci...",
"char_selection.delete_permanently": "Czy chcesz skasować tę postać (nie będzie można jej odzyskać)?", "char_selection.delete_permanently": "Czy na pewno chcesz usunąć tę Postać na zawsze?",
"char_selection.deleting_character": "Kasowanie postaci...", "char_selection.deleting_character": "Usuwanie Postaci...",
"char_selection.change_server": "Zmień serwer", "char_selection.change_server": "Zmień Serwer",
"char_selection.enter_world": "Wejdź do świata", "char_selection.enter_world": "Dołącz do Świata",
"char_selection.logout": "Wyloguj się", "char_selection.logout": "Wyloguj się",
"char_selection.create_new_character": "Stwórz nową postać", "char_selection.create_new_character": "Stwórz nową Postać",
"char_selection.creating_character": "Tworzenie nowej postaci...", "char_selection.creating_character": "Tworzenie nowej Postaci...",
"char_selection.character_creation": "Tworzenie postaci", "char_selection.character_creation": "Tworzenie Postaci",
"char_selection.human_default": "Domyślny człowiek", "char_selection.human_default": "Domyślny człowiek",
"char_selection.level_fmt": "Poziom {level_nb}", "char_selection.level_fmt": "Poziom {level_nb}",
"char_selection.uncanny_valley": "Dzicz", "char_selection.uncanny_valley": "Dzicz",
@ -23,8 +23,8 @@
"char_selection.skin": "Skóra", "char_selection.skin": "Skóra",
"char_selection.eyeshape": "Detale oczu", "char_selection.eyeshape": "Detale oczu",
"char_selection.accessories": "Akcesoria", "char_selection.accessories": "Akcesoria",
"char_selection.create_info_name": "Twoja postać musi posiadać imię!", "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.version_mismatch": "UWAGA! Ten serwer używa innej (potencjalnie niekompatybilnej) wersji gry. Zaktualizuj grę."
}, },
vector_map: { vector_map: {

View File

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

View File

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

View File

@ -1,6 +1,6 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM /// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie /// Localization for Polish
( (
string_map: { string_map: {
"gameinput.primary": "Prosty atak", "gameinput.primary": "Prosty atak",
@ -16,31 +16,31 @@
"gameinput.slot8": "Skrót 8", "gameinput.slot8": "Skrót 8",
"gameinput.slot9": "Skrót 9", "gameinput.slot9": "Skrót 9",
"gameinput.slot10": "Skrót 10", "gameinput.slot10": "Skrót 10",
"gameinput.swaploadout": "Zmień wyposażenie", "gameinput.swaploadout": "Zamień wyposażenie",
"gameinput.togglecursor": "Pokaż/schowaj kursor", "gameinput.togglecursor": "Pokaż/schowaj kursor",
"gameinput.help": "Pokaż/schowaj okno pomocy", "gameinput.help": "Pokaż/schowaj okno pomocy",
"gameinput.toggleinterface": "Pokaż/schowaj interfejs", "gameinput.toggleinterface": "Pokaż/schowaj interfejs",
"gameinput.toggledebug": "Pokaż/schowaj FPS i debugowanie", "gameinput.toggledebug": "Pokaż/schowaj FPS i debugowanie",
"gameinput.toggle_egui_debug": "Włącz debugowanie EGUI", "gameinput.toggle_egui_debug": "Pokaż/schowaj debugowanie EGUI",
"gameinput.togglechat": "Włącz czat", "gameinput.togglechat": "Pokaż/schowaj czat",
"gameinput.screenshot": "Zrób zrzut ekranu", "gameinput.screenshot": "Zrzut ekranu",
"gameinput.toggleingameui": "Pokaż/schowaj imiona i nazwy", "gameinput.toggleingameui": "Pokaż/schowaj imiona postaci",
"gameinput.fullscreen": "Przełącz pełny ekran", "gameinput.fullscreen": "Pełny ekran",
"gameinput.moveforward": "Naprzód", "gameinput.moveforward": "Przód",
"gameinput.moveleft": "Lewo", "gameinput.moveleft": "Lewo",
"gameinput.moveright": "Prawo", "gameinput.moveright": "Prawo",
"gameinput.moveback": "Cofaj się", "gameinput.moveback": "Wstecz",
"gameinput.jump": "Skok", "gameinput.jump": "Skok",
"gameinput.glide": "Lotnia", "gameinput.glide": "Lotnia",
"gameinput.roll": "Przewrót", "gameinput.roll": "Przewrót",
"gameinput.climb": "Wspinaj się", "gameinput.climb": "Wspinaczka w górę",
"gameinput.climbdown": "Opuść się (wspinaczka)", "gameinput.climbdown": "Wspinaczka w dół",
"gameinput.wallleap": "Odskocz (od ściany)", "gameinput.wallleap": "Odskocz od ściany",
"gameinput.togglelantern": "Zapal/zgaś latarnię", "gameinput.togglelantern": "Zapal/zgaś latarnię",
"gameinput.mount": "Dosiądź", "gameinput.mount": "Dosiądź",
"gameinput.chat": "Czat", "gameinput.chat": "Czat",
"gameinput.command": "Komenda", "gameinput.command": "Komenda",
"gameinput.escape": "Menu", "gameinput.escape": "Menu", // TODO: czy nie da się lepiej?
"gameinput.map": "Mapa", "gameinput.map": "Mapa",
"gameinput.bag": "Torba", "gameinput.bag": "Torba",
"gameinput.trade": "Handel", "gameinput.trade": "Handel",
@ -49,26 +49,26 @@
"gameinput.spellbook": "Czary", "gameinput.spellbook": "Czary",
"gameinput.settings": "Ustawienia", "gameinput.settings": "Ustawienia",
"gameinput.respawn": "Odrodzenie", "gameinput.respawn": "Odrodzenie",
"gameinput.charge": "Szarża/Ładowanie", "gameinput.charge": "Szarża/Ładowanie", // TODO: sprawdź które to ma być
"gameinput.togglewield": "Zmień przedmiot w rękach", "gameinput.togglewield": "Przełącz broń",
"gameinput.interact": "Interakcja", "gameinput.interact": "Interakcja",
"gameinput.freelook": "Tryb wolnego widoku", "gameinput.freelook": "Tryb wolnego widoku",
"gameinput.autowalk": "Automatyczne unoszenie/chodzenie", "gameinput.autowalk": "Automatyczne chodzenie/pływanie",
"gameinput.cameraclamp": "Blokada kamery", "gameinput.cameraclamp": "Blokada kamery",
"gameinput.dance": "Tańcz", "gameinput.dance": "Tańcz",
"gameinput.select": "Zaznacz (obiekt)", "gameinput.select": "Zaznacz Obiekt",
"gameinput.acceptgroupinvite": "Akceptuj zaproszenie do grupy", "gameinput.acceptgroupinvite": "Akceptuj zaproszenie do grupy",
"gameinput.declinegroupinvite": "Odrzuć zaproszenie do grupy", "gameinput.declinegroupinvite": "Odrzuć zaproszenie do grupy",
"gameinput.cyclecamera": "Przełącz kamerę", "gameinput.cyclecamera": "Przełącz tryb kamery",
"gameinput.crafting": "Tworzenie", "gameinput.crafting": "Tworzenie", // TODO: check this
"gameinput.fly": "Lot", "gameinput.fly": "Lot",
"gameinput.sneak": "Skradanie", "gameinput.sneak": "Skradanie",
"gameinput.swimdown": "Nurkuj", "gameinput.swimdown": "Płyń w dół",
"gameinput.swimup": "Wynurz", "gameinput.swimup": "Płyń w górę",
"gameinput.mapzoomin": "Przybliż mapę", "gameinput.mapzoomin": "Przybliż mapę",
"gameinput.mapzoomout": "Oddal mapę", "gameinput.mapzoomout": "Oddal mapę",
"gameinput.greet": "Pozdrów", "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 /// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie /// Localization for Polish
( (
string_map: { string_map: {
// Inventory // Inventory
@ -24,7 +24,7 @@
"hud.bag.feet": "Stopy", "hud.bag.feet": "Stopy",
"hud.bag.mainhand": "Ręka główna", "hud.bag.mainhand": "Ręka główna",
"hud.bag.offhand": "Ręka poboczna", "hud.bag.offhand": "Ręka poboczna",
"hud.bag.inactive_mainhand": "Nieaktywna ręka główna", "hud.bag.inactive_mainhand": "Nieaktywna ręka główna",
"hud.bag.inactive_offhand": "Nieaktywna ręka poboczna", "hud.bag.inactive_offhand": "Nieaktywna ręka poboczna",
"hud.bag.swap_equipped_weapons_title": "Zamień założone bronie", "hud.bag.swap_equipped_weapons_title": "Zamień założone bronie",
"hud.bag.swap_equipped_weapons_desc": "Wciśnij {key}", "hud.bag.swap_equipped_weapons_desc": "Wciśnij {key}",
@ -33,7 +33,8 @@
"hud.bag.energy": "Energia", "hud.bag.energy": "Energia",
"hud.bag.combat_rating": "Combat Rating (CR)", "hud.bag.combat_rating": "Combat Rating (CR)",
"hud.bag.protection": "Ochrona", "hud.bag.protection": "Ochrona",
"hud.bag.stun_res": "Odporność na ogłuszenie", "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.combat_rating_desc": "Liczone na postawie Twojego\nekwipunku i zdrowia.",
"hud.bag.protection_desc": "Redukcja obrażeń dzięki pancerzowi", "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.", "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 /// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie /// Localization for Polish
( (
string_map: { string_map: {
"character_window.character_name": "Imię postaci", "character_window.character_name": "Imię postaci",
// Character stats // Character stats
"character_window.character_stats": r#"Wytrzymałość "character_window.character_stats": r#"Wytrzymałość
Wytrenowanie Kondycja
Siła woli Siła woli
Ochrona Obrona
"#, "#,
}, },

View File

@ -1,9 +1,9 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM /// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie /// Localization for Polish
( (
string_map: { string_map: {
"hud.chat.all": "Wszystko", "hud.chat.all": "Wszystko",
"hud.chat.chat_tab_hover_tooltip": "Kliknij prawym aby otworzyć ustawienia", "hud.chat.chat_tab_hover_tooltip": "Kliknij prawym aby otworzyć ustawienia",
// Debuff outcomes // Debuff outcomes
@ -26,16 +26,16 @@
"hud.chat.pvp_melee_kill_msg": "[{attacker}] zwycięża nad [{victim}]", "hud.chat.pvp_melee_kill_msg": "[{attacker}] zwycięża nad [{victim}]",
"hud.chat.pvp_ranged_kill_msg": "[{attacker}] ustrzela [{victim}]", "hud.chat.pvp_ranged_kill_msg": "[{attacker}] ustrzela [{victim}]",
"hud.chat.pvp_explosion_kill_msg": "[{attacker}] wysadza [{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_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.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_ranged_kill_msg": "{attacker} ustrzela [{victim}]",
"hud.chat.npc_explosion_kill_msg": "{attacker} wysadza [{victim}]", "hud.chat.npc_explosion_kill_msg": "{attacker} wysadza [{victim}]",
"hud.chat.npc_energy_kill_msg": "{attacker} ubija [{victim}] magią", "hud.chat.npc_energy_kill_msg": "{attacker} zabija [{victim}] magią",
"hud.chat.npc_other_kill_msg": "{attacker} ubija [{victim}]", "hud.chat.npc_other_kill_msg": "{attacker} zabija [{victim}]",
"hud.chat.loot_msg": "Podniesiono [{item}]", "hud.chat.loot_msg": "Podniesiono [{item}]",
"hud.chat.loot_fail": "Twój ekwipunek jest pełen!", "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 /// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie /// Localization for Polish
( (
string_map: { string_map: {
"hud.crafting": "Tworzenie", "hud.crafting": "Tworzenie",
@ -23,7 +23,7 @@
// Tabs // Tabs
"hud.crafting.tabs.all": "Wszystko", "hud.crafting.tabs.all": "Wszystko",
"hud.crafting.tabs.armor": "Pancerz", "hud.crafting.tabs.armor": "Pancerz",
"hud.crafting.tabs.dismantle": "Zdemontuj", "hud.crafting.tabs.dismantle": "Zdemontuj",
"hud.crafting.tabs.food": "Żywność", "hud.crafting.tabs.food": "Żywność",
"hud.crafting.tabs.glider": "Lotnie", "hud.crafting.tabs.glider": "Lotnie",
"hud.crafting.tabs.potion": "Mikstury", "hud.crafting.tabs.potion": "Mikstury",
@ -34,6 +34,17 @@
"hud.crafting.tabs.processed_material": "Materiały", "hud.crafting.tabs.processed_material": "Materiały",
"hud.crafting.dismantle_title": "Demontowanie", "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.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 /// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie /// Localization for Polish
( (
string_map: { string_map: {
"hud.group": "Drużyna", "hud.group": "Grupa",
"hud.group.invite_to_join": "[{name}] zaprasza Cię do drużyny!", "hud.group.invite_to_join": "[{name}] zaprasza Cię do grupy!",
"hud.group.invite_to_trade": "[{name}] zaprasza Cię do wymiany.", "hud.group.invite_to_trade": "[{name}] zaprasza Cię do wymiany.",
"hud.group.invite": "Zaproś", "hud.group.invite": "Zaproś",
"hud.group.kick": "Wyrzuć", "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.leave": "Opuść drużynę",
"hud.group.dead" : "Martwy", /// forma "hud.group.dead" : "Martwy", /// forma
"hud.group.out_of_range": "Poza zasięgiem", "hud.group.out_of_range": "Poza zasięgiem",
"hud.group.add_friend": "Dodaj do przyjaciół", "hud.group.add_friend": "Dodaj do znajomych",
"hud.group.link_group": "Połącz drużyny", "hud.group.link_group": "Połącz grupy",
"hud.group.in_menu": "W menu", "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 /// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie /// Localization for Polish
( (
string_map: { string_map: {
// Map and Questlog // Map and Questlog
@ -32,10 +32,10 @@
"hud.map.toggle_minimap_voxel": "Przełącz widok wokseli na minimapie", "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.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.gnarling": "Fortyfikacje Gnarlingów",
"hud.map.placed_by": "Umiejscowione poprzez {name}", "hud.map.placed_by": "Umiejscowione przez {name}",
}, },
vector_map: { vector_map: {
} }
) )

View File

@ -1,32 +1,35 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM /// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie /// Localization for Polish
( (
string_map: { string_map: {
"hud.do_not_show_on_startup": "Nie pokazuj tego podczas startu", "hud.do_not_show_on_startup": "Nie pokazuj tego podczas startu",
"hud.show_tips": "Pokaż porady", "hud.show_tips": "Pokaż porady",
"hud.quests": "Zadania", "hud.quests": "Zadania",
"hud.you_died": "Zginąłeś", "hud.you_died": "Zginąłeś", // forma
"hud.waypoint_saved": "Punkt orientacyjny zachowany", "hud.waypoint_saved": "Punkt orientacyjny zapisany",
"hud.sp_arrow_txt": "PR", /// punkty rozwoju "hud.sp_arrow_txt": "PR", // punkty rozwoju
"hud.inventory_full": "Ekwipunek pełen", "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_show_keybindings_fmt": "[{key}] przypisania klawiszy",
"hud.press_key_to_toggle_lantern_fmt": "[{key}] latarnia", "hud.press_key_to_toggle_lantern_fmt": "[{key}] latarnia",
"hud.press_key_to_show_debug_info_fmt": "Naciśnij {key} by zobaczyć debug", "hud.press_key_to_show_debug_info_fmt": "Naciśnij {key} by zobaczyć debug",
"hud.press_key_to_toggle_keybindings_fmt": "Naciśnij {key} by przełączyć przypisania klawiszy", "hud.press_key_to_toggle_keybindings_fmt": "Naciśnij {key} by przełączyć przypisania klawiszy",
"hud.press_key_to_toggle_debug_info_fmt": "Naciśnij {key} by przełączyć debugowanie", "hud.press_key_to_toggle_debug_info_fmt": "Naciśnij {key} by przełączyć debugowanie",
// Respawn message // Respawn message
"hud.press_key_to_respawn": r#"Naciśnij {key} by odrodzić się przy ostatnio odwiedzonym ognisku."#, "hud.press_key_to_respawn": r#"Naciśnij {key} by odrodzić się przy ostatnio odwiedzonym ognisku."#,
// Tutorial Button // Tutorial Button
"hud.tutorial_btn": r#"Samouczek"#, "hud.tutorial_btn": r#"Samouczek"#,
"hud.tutorial_click_here": r#"Naciśnij [ {key} ] by przełączyć tryb przechwytywania myszy i naciśnij ten przycisk!"#, "hud.tutorial_click_here": r#"Naciśnij [ {key} ] by przełączyć tryb przechwytywania myszy i naciśnij ten przycisk!"#,
"hud.tutorial_elements": r#"Tworzenie"#, "hud.tutorial_elements": r#"Tworzenie"#,
"hud.temp_quest_headline": r#"Witaj Przybyszu!"#, "hud.temp_quest_headline": r#"Witaj Przybyszu!"#,
"hud.temp_quest_text": r#"By zacząć swoją podróż zacznij od rozglądnięcia się i zebrania zapasów. "hud.temp_quest_text": r#"By zacząć swoją podróż zacznij od rozglądnięcia się i zebrania zapasów.
Śmiało bierz cokolwiek będzie Ci potrzebne podczas Twojej wyprawy! Śmiało bierz cokolwiek będzie Ci potrzebne podczas Twojej wyprawy!
@ -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.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.camera_clamp_indicator": "Pionowa blokada kamery aktywna. Naciśnij {key} by wyłączyć.",
"hud.auto_walk_indicator": "Automatyczne chodzenie/pływanie aktywne", "hud.auto_walk_indicator": "Automatyczne chodzenie/pływanie aktywne",
"hud.collect": "Zbierz", "hud.collect": "Zbieraj",
"hud.pick_up": "Podnieś", "hud.pick_up": "Podnieś",
"hud.open": "Otwórz", "hud.open": "Otwórz",
"hud.use": "Użyj", "hud.use": "Użyj",

View File

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

View File

@ -1,10 +1,10 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM /// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie /// Localization for Polish
( (
string_map: { string_map: {
// Settings // Settings
"hud.settings.general": "Generalne", "hud.settings.general": "Ogólne",
"hud.settings.none": "Brak", "hud.settings.none": "Brak",
"hud.settings.press_behavior.toggle": "Przełącz", "hud.settings.press_behavior.toggle": "Przełącz",
"hud.settings.press_behavior.hold": "Przytrzymaj", "hud.settings.press_behavior.hold": "Przytrzymaj",
@ -15,8 +15,8 @@
"hud.settings.show_hotkey_hints": "Pokaż klawisze skrótu", "hud.settings.show_hotkey_hints": "Pokaż klawisze skrótu",
"hud.settings.tips_on_startup": "Porady startowe", "hud.settings.tips_on_startup": "Porady startowe",
"hud.settings.ui_scale": "Skala interfejsu", "hud.settings.ui_scale": "Skala interfejsu",
"hud.settings.relative_scaling": "Relatywne skalowanie", "hud.settings.relative_scaling": "Skalowanie relatywne",
"hud.settings.custom_scaling": "Niestandardowe skalowanie", "hud.settings.custom_scaling": "Skalowanie niestandardowe",
"hud.settings.crosshair": "Celownik", "hud.settings.crosshair": "Celownik",
"hud.settings.opacity": "Przezroczystość", "hud.settings.opacity": "Przezroczystość",
"hud.settings.hotbar": "Pasek skrótów", "hud.settings.hotbar": "Pasek skrótów",
@ -25,13 +25,18 @@
"hud.settings.buffs_mmap": "Wzmocnienia na minimapie", "hud.settings.buffs_mmap": "Wzmocnienia na minimapie",
"hud.settings.toggle_bar_experience": "Przełącz pasek doświadczenia", "hud.settings.toggle_bar_experience": "Przełącz pasek doświadczenia",
"hud.settings.scrolling_combat_text": "Przewijanie tekstu podczas walki", "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": "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": "Dymek rozmowy",
"hud.settings.speech_bubble_self": "Pokazuj swój 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_dark_mode": "Dymek rozmowy w trybie ciemnym",
"hud.settings.speech_bubble_icon": "Ikona dymka rozmowy", "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.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.values": "Wartości",
"hud.settings.percentages": "Procenty", "hud.settings.percentages": "Procenty",
"hud.settings.chat": "Czat", "hud.settings.chat": "Czat",
@ -42,8 +47,8 @@
"hud.settings.pan_sensitivity": "Czułość rozglądania", "hud.settings.pan_sensitivity": "Czułość rozglądania",
"hud.settings.zoom_sensitivity": "Czułość przybliżenia", "hud.settings.zoom_sensitivity": "Czułość przybliżenia",
"hud.settings.camera_clamp_angle": "Kąt kamery w osi pionowej w zablokowanym trybie", "hud.settings.camera_clamp_angle": "Kąt kamery w osi pionowej w trybie zablokowanym",
"hud.settings.invert_scroll_zoom": "Odwróć przybliżenie kółkiem myszy", "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_mouse_y_axis": "Odwróć oś Y myszy",
"hud.settings.invert_controller_y_axis": "Odwróć oś Y kontrolera", "hud.settings.invert_controller_y_axis": "Odwróć oś Y kontrolera",
"hud.settings.enable_mouse_smoothing": "Wygładzanie ruchu kamery", "hud.settings.enable_mouse_smoothing": "Wygładzanie ruchu kamery",
@ -53,14 +58,16 @@
"hud.settings.player_physics_behavior": "Fizyka gracza (eksperymentalne)", "hud.settings.player_physics_behavior": "Fizyka gracza (eksperymentalne)",
"hud.settings.stop_auto_walk_on_input": "Przełącz automatyczny chód poruszaniem", "hud.settings.stop_auto_walk_on_input": "Przełącz automatyczny chód poruszaniem",
"hud.settings.auto_camera": "Automatyczna kamera", "hud.settings.auto_camera": "Automatyczna kamera",
"hud.settings.bow_zoom": "Przybliż widok podczas naciągania łuku",
"hud.settings.reset_gameplay": "Zresetuj ustawienia", "hud.settings.reset_gameplay": "Zresetuj ustawienia",
"hud.settings.view_distance": "Odległość renderowania", "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.sprites_view_distance": "Odległość renderowania 2d",
"hud.settings.figures_view_distance": "Odległość renderowania obiektów", "hud.settings.figures_view_distance": "Odległość renderowania obiektów",
"hud.settings.maximum_fps": "Ogranicz maksymalne klatki", "hud.settings.maximum_fps": "Limit klatek",
"hud.settings.background_fps": "Ilość klatek w tle", "hud.settings.background_fps": "Limit klatek w tle",
"hud.settings.present_mode": "Obecny tryb", "hud.settings.present_mode": "Present Mode", // TODO: ask what does this do
"hud.settings.present_mode.fifo": "FIFO", "hud.settings.present_mode.fifo": "FIFO",
"hud.settings.present_mode.mailbox": "MAILBOX", "hud.settings.present_mode.mailbox": "MAILBOX",
"hud.settings.present_mode.immediate": "Natychmiastowy", "hud.settings.present_mode.immediate": "Natychmiastowy",
@ -72,25 +79,25 @@
"hud.settings.upscale_factor": "Rozdzielczość wewnętrzna", "hud.settings.upscale_factor": "Rozdzielczość wewnętrzna",
"hud.settings.cloud_rendering_mode": "Tryb renderowania chmur", "hud.settings.cloud_rendering_mode": "Tryb renderowania chmur",
"hud.settings.fluid_rendering_mode": "Tryb renderowania płynów", "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.fluid_rendering_mode.shiny": "Połyskujący",
"hud.settings.cloud_rendering_mode.minimal": "Minimalny", "hud.settings.cloud_rendering_mode.minimal": "Minimalny",
"hud.settings.cloud_rendering_mode.low": "Niski", "hud.settings.cloud_rendering_mode.low": "Niski",
"hud.settings.cloud_rendering_mode.medium": "Średni", "hud.settings.cloud_rendering_mode.medium": "Średni",
"hud.settings.cloud_rendering_mode.high": "Wysoki", "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": "Pełen ekran",
"hud.settings.fullscreen_mode": "Tryb pełnego ekranu", "hud.settings.fullscreen_mode": "Tryb pełnego ekranu",
"hud.settings.fullscreen_mode.exclusive": "Ekskluzywny (przejęcie)", "hud.settings.fullscreen_mode.exclusive": "Ekskluzywny (przejęcie)",
"hud.settings.fullscreen_mode.borderless": "Okno bez ramek (łatwiejsze alt-tab'owanie)", "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.gpu_profiler": "Włącz taktowanie GPU (Nie zawsze wspierane)", // TODO ask what this does and improve translation
"hud.settings.lossy_terrain_compression": "Słabsza kompresja terenu",
"hud.settings.weapon_trails": "Ścieżki broni (efekt ataku)",
"hud.settings.particles": "Cząsteczki", "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.resolution": "Rozdzielczość",
"hud.settings.bit_depth": "Głębia bitowa", "hud.settings.bit_depth": "Głębia bitowa",
"hud.settings.refresh_rate": "Częstotliwość odświeżania", "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.ashikhmin": "Typ A - Wysokie",
"hud.settings.lighting_rendering_mode.blinnphong": "Typ B - Średnie", "hud.settings.lighting_rendering_mode.blinnphong": "Typ B - Średnie",
"hud.settings.lighting_rendering_mode.lambertian": "Typ L - Lekkie", "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.cheap": "Lekki",
"hud.settings.shadow_rendering_mode.map": "Mapa", "hud.settings.shadow_rendering_mode.map": "Mapa",
"hud.settings.shadow_rendering_mode.map.resolution": "Rozdzielczość", "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.save_window_size": "Zapisz wymiary okna",
"hud.settings.reset_graphics": "Zresetuj ustawienia", "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.point_glow": "Poświata punktowa",
"hud.settings.master_volume": "Głośność ogólna", "hud.settings.master_volume": "Głośność Ogólna",
"hud.settings.inactive_master_volume_perc": "Głośność ogólna (nieaktywne okno)", "hud.settings.inactive_master_volume_perc": "Głośność Ogólna (nieaktywne okno)",
"hud.settings.music_volume": "Głośność muzyki", "hud.settings.music_volume": "Głośność Muzyki",
"hud.settings.sound_effect_volume": "Głośność efektów dźwiękowych", "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.audio_device": "Urządzenie dźwiękowe",
"hud.settings.reset_sound": "Zresetuj ustawienia", "hud.settings.reset_sound": "Zresetuj ustawienia",
@ -132,7 +141,7 @@
"hud.settings.say": "Powiedz", "hud.settings.say": "Powiedz",
"hud.settings.all": "Wszyscy", "hud.settings.all": "Wszyscy",
"hud.settings.group_only": "Tylko dla grupy", "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 /// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie /// Localization for Polish
( (
string_map: { string_map: {
"hud.rank_up": "Nowy punkt rozwoju", "hud.rank_up": "Nowy punkt rozwoju",
@ -106,36 +106,36 @@
// Bow // Bow
"hud.skill.bow_projectile_speed_title" : "Prędkość strzały", "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_projectile_speed" : "Pozwala wypuszczać strzały szybsze i lecące dalej {boost}%{SP}",
"hud.skill.bow_arrow_count_title" : "Ilość strzał", "hud.skill.bow_charged_title" : "Mocny Strzał",
"hud.skill.bow_arrow_count" : "Wystrzel dodatkową strzałę gdy robisz przewrót{SP}", "hud.skill.bow_charged" : "Naciągasz łuk mocniej niż zwykle.",
"hud.skill.bow_repeater_cost_title" : "Wielostrzał - koszt", "hud.skill.bow_charged_damage_title" : "Mocny Strzał - obrażnia",
"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_damage" : "Zwiększa obrażenia o {boost}%{SP}", "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_charged_energy_regen_title" : "Mocny Strzał - odnawiana energia",
"hud.skill.bow_energy_regen" : "Zwiększa regenerację wytrzymałości o {boost}%{SP}", "hud.skill.bow_charged_energy_regen" : "Zwiększa odnawianą energię o {boost}%{SP}",
"hud.skill.bow_title" : "Strzał", "hud.skill.bow_charged_knockback_title" : "Mocny Strzał - odrzut",
"hud.skill.bow" : "Nieskończony kołczan gratis, trzymać zdala od dzieci", "hud.skill.bow_charged_knockback" : "Odrzuć przeciwników dalej o {boost}%{SP}",
"hud.skill.bow_damage_title" : "Obrażenia", "hud.skill.bow_charged_speed_title" : "Mocny Strzał - szybkość",
"hud.skill.bow_damage" : "Zwiększa obrażenia o {boost}%{SP}", "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 // Hammer
"hud.skill.hmr_leap_radius_title" : "Tąpnięcie - zasięg", "hud.skill.hmr_leap_radius_title" : "Tąpnięcie - zasięg",
"hud.skill.hmr_leap_radius" : "Zwiększa zasięg o {boost} metr{SP}", "hud.skill.hmr_leap_radius" : "Zwiększa zasięg o {boost} metr{SP}",
@ -254,4 +254,4 @@
vector_map: { vector_map: {
} }
) )

View File

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

View File

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

View File

@ -1,6 +1,6 @@
/// WARNING: Localization files shall be saved in UTF-8 format without BOM /// WARNING: Localization files shall be saved in UTF-8 format without BOM
/// Lokalizacja na Polskie tłumaczenie /// Localization for Polish
( (
string_map: { string_map: {
/// Start Main screen section /// Start Main screen section
@ -10,83 +10,84 @@
"main.connecting": "Łączenie", "main.connecting": "Łączenie",
"main.creating_world": "Tworzenie świata", "main.creating_world": "Tworzenie świata",
"main.tip": "Porada:", "main.tip": "Porada:",
"main.unbound_key_tip": "Rozwiąż", "main.unbound_key_tip": "nieprzypisany",
// Welcome notice that appears the first time Veloren is started // 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: 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 - Veloren jest objęte licencją typu open-source 'GNU GPLv3'.
chcesz (ograniczeniem jest by praca pochodna też była na licencji GPL 3). 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. - Veloren jest projektem non-profit, w całości tworzonym przez wolontariuszy w wolnym czasie.
Jeśli podoba Ci się ten projekt - zapraszamy do naszych ekip programistów, artystów i innych drużyn rozwojowych. 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! Dziękujemy za przeczytanie tej notki i życzymy miłej gry!
~ Ekipa Veloren"#, ~ Zespół Twórców Veloren"#,
// Login process description // Login process description
"main.login_process": r#"Informacje o procesie logowania: "main.login_process": r#"Informacje o procesie logowania:
By grać na serwerach z wymaganą Aby grać na większości serwerów,
rejestracją musisz stworzyć konto. musisz stworzyć darmowe konto.
Konto możesz stworzyć wchodząc na Możesz to zrobić na stronie:
https://veloren.net/account/."#, https://veloren.net/account/."#,
"main.login.server_not_found": "Serwer nie został znaleziony", "main.login.server_not_found": "Serwer nie został znaleziony",
"main.login.authentication_error": "Błąd autoryzacji na serwerze", "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", "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": "Schemat autoryzacji HTTP NIE JEST wspierany. Jest niezabezpieczony! W celach programistycznych, jest dozwolony dla adresu 'localhost' oraz wersji deweloperskich.",
"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łny",
"main.login.server_full": "Serwer jest pełen",
"main.login.untrusted_auth_server": "Serwer autoryzacji nie jest zaufany", "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.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 (przeładowany, bądź problemy z połączeniem, sprawdź swój ping do serwera).", "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.server_shut_down": "Serwer został wyłączony",
"main.login.network_error": "Błąd sieci", "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.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.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.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.select_language": "Wybierz język",
"main.login.client_version": "Wersja klienta", "main.login.client_version": "Wersja klienta",
"main.login.server_version": "Wersja serwera", "main.login.server_version": "Wersja serwera",
"main.login.client_init_failed": "Błąd inicjalizacji klienta: {init_fail_reason}", "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_bad_characters": "Nazwa użytkownika zawiera nieprawidłowe znaki! (Dozwolone są tylko: znaki alfanumeryczne, '_' i '-')",
"main.login.username_too_long": "Nazwa zbyt długa! Maksymalna długość wynosi: {max_len}", "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.select_server": "Wybierz serwer",
"main.servers.singleplayer_error": "Nie udało się połączyć z serwerem: {sp_error}", "main.servers.singleplayer_error": "Błąd połączenia z serwerem wewnętrznym: {sp_error}",
"main.servers.network_error": "Błąd gniazda/połączenia z serwerem: {raw_error}", "main.servers.network_error": "Błąd sieci: {raw_error}",
"main.servers.participant_error": "Rozłączono klienta/błąd protokołu: {raw_error}", "main.servers.participant_error": "Uczestnik rozłączony/błąd protokołu: {raw_error}",
"main.servers.stream_error": "Błąd (de)serializacji/połączenia z klientem: {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.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}", "main.servers.other_error": "Ogólny błąd serwera: {raw_error}",
// Credits screen // Credits screen
"main.credits": "Twórcy", "main.credits": "Podziękowania",
"main.credits.created_by": "stworzone przez", "main.credits.created_by": "utworzone przez",
"main.credits.music": "Muzyka", "main.credits.music": "Muzyka",
"main.credits.fonts": "Czcionki", "main.credits.fonts": "Czcionki",
"main.credits.other_art": "Inne dzieła", "main.credits.other_art": "Inna Sztuka",
"main.credits.contributors": "Współtwórcy", "main.credits.contributors": "Współtwórcy",
/// End Main screen section /// End Main screen section
}, },
// TODO: Check this whole thing
vector_map: { 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": [ "loading.tips": [
"Naciśnij '{gameinput.togglelantern}' by zapalić latarnię.", "Naciśnij '{gameinput.togglelantern}' by zapalić latarnię.",
"Naciśnij '{gameinput.help}' by zobaczyć podstawową klawiszologię.", "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: { string_map: {
}, },

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -96,7 +96,7 @@
"common.species.human": "Людина", "common.species.human": "Людина",
"common.species.dwarf": "Дварф", "common.species.dwarf": "Дварф",
"common.species.elf": "Ельф", "common.species.elf": "Ельф",
"common.species.undead": "Нежить", "common.species.draugr": "Нежить",
"common.species.danari": "Данарі", "common.species.danari": "Данарі",
// Stats // 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.human": "Loài người",
"common.species.dwarf": "Người lùn", "common.species.dwarf": "Người lùn",
"common.species.elf": "Yêu tinh", "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.species.danari": "Loài Danari",
"common.weapons.axe": "Rìu", "common.weapons.axe": "Rìu",

View File

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

View File

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

View File

@ -83,73 +83,48 @@ void main() {
#if (CLOUD_MODE == CLOUD_MODE_NONE) #if (CLOUD_MODE == CLOUD_MODE_NONE)
color.rgb = apply_point_glow(cam_pos.xyz + focus_off.xyz, dir, dist, color.rgb); color.rgb = apply_point_glow(cam_pos.xyz + focus_off.xyz, dir, dist, color.rgb);
#else #else
vec3 old_color = color.rgb; if (medium.x == MEDIUM_AIR && rain_density > 0.001) {
vec3 cam_wpos = cam_pos.xyz + focus_off.xyz;
// 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;
vec3 adjusted_dir = (vec4(dir, 0) * rain_dir_mat).xyz;
// stretch z values as they move away from 0 vec2 dir2d = adjusted_dir.xy;
float z = (-1 / (abs(adjusted_dir.z) - 1) - 1) * sign(adjusted_dir.z); vec3 rorigin = cam_pos.xyz + focus_off.xyz + 0.5;
// normalize xy to get a 2d direction vec3 rpos = vec3(0.0);
vec2 dir_2d = normalize(adjusted_dir.xy); float t = 0.0;
// sort of map cylinder around the camera to 2d grid const float PLANCK = 0.01;
vec2 view_pos = vec2(atan2(dir_2d.x, dir_2d.y), z); 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;
// compute camera position in the world #if (CLOUD_MODE >= CLOUD_MODE_MEDIUM)
vec3 cam_wpos = cam_pos.xyz + focus_off.xyz; if (t >= 64.0) { break; }
#else
// Rain density is now only based on the cameras current position. if (t >= 16.0) { break; }
// This could be affected by a setting where rain_density_at is instead #endif
// 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;
#else
const int iterations = 4;
#endif
for (int i = 0; i < iterations; i ++) { rpos = rorigin + adjusted_dir * t;
float old_rain_dist = rain_dist;
rain_dist *= 0.3 / 4.0 * iterations;
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); float depth_adjust = fract(hash_two(uvec2(wall_pos.xz) + 500u));
rain_pos.y += integrated_rain_vel; 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( float alpha = 0.5 * clamp((wpos_dist - 1.0) * 0.5, 0.0, 1.0);
old_rain_dist, float light = dot(color.rgb, vec3(1)) + 0.05 + (get_sun_brightness() + get_moon_brightness()) * 0.2;
rain_dist, color.rgb = mix(color.rgb, vec3(0.3, 0.35, 0.5) * light, alpha);
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;
} }
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 #endif

View File

@ -92,9 +92,9 @@ void main() {
// vec3 f_col = f_col_light.rgb; // vec3 f_col = f_col_light.rgb;
// float f_ao = f_col_light.a; // float f_ao = f_col_light.a;
float f_ao, f_glow; float f_ao;
uint material = 0xFFu; 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 #ifdef EXPERIMENTAL_BAREMINIMUM
tgt_color = vec4(simple_lighting(f_pos.xyz, f_col, f_ao), 1); 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; vec3 surf_color = /*srgb_to_linear*/f_col;
float alpha = 1.0; float alpha = 1.0;
const float n2 = 1.5; 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_s2s0 = pow((1.0 - n2) / (1.0 + n2), 2);
const float R_s1s0 = pow((1.3325 - n2) / (1.3325 + 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); 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_d = vec3(1.0);
vec3 k_s = vec3(R_s); 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; vec3 emitted_light, reflected_light;
// Make voxel shadows block the sun and moon // 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); : compute_attenuation_point(f_pos, -view_dir, mu, fluid_alt, /*cam_pos.z <= fluid_alt ? cam_pos.xyz : f_pos*/cam_pos.xyz);
#endif #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 += 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); 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; 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 // 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; int i;
#if (CLOUD_MODE >= CLOUD_MODE_MEDIUM) #if (CLOUD_MODE >= CLOUD_MODE_MEDIUM)
#ifdef EXPERIMENTAL_RAINBOWS #ifndef EXPERIMENTAL_NORAINBOWS
// TODO: Make it a double rainbow // TODO: Make it a double rainbow
float rainbow_t = (0.7 - dot(sun_dir.xyz, dir)) * 8 / 0.05; float rainbow_t = (0.7 - dot(sun_dir.xyz, dir)) * 8 / 0.05;
int rainbow_c = int(floor(rainbow_t)); 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*/) + 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*/) + 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 + 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; emission * density_integrals.y * step;
// Rainbow // Rainbow
#if (CLOUD_MODE >= CLOUD_MODE_MEDIUM) #if (CLOUD_MODE >= CLOUD_MODE_ULTRA)
#ifdef EXPERIMENTAL_RAINBOWS #ifndef EXPERIMENTAL_NORAINBOWS
if (rainbow_c >= 0 && rainbow_c < 8) { if (rainbow_c >= 0 && rainbow_c < 8) {
vec3 colors[9] = { vec3 colors[9] = {
surf_color, surf_color,
@ -300,7 +302,7 @@ vec3 get_cloud_color(vec3 surf_color, vec3 dir, vec3 origin, const float time_of
}; };
float h = max(0.0, min(pos.z, 900.0 - pos.z) / 450.0); float h = max(0.0, min(pos.z, 900.0 - pos.z) / 450.0);
float rain = rain_density_at(pos.xy) * pow(h, 0.1); float rain = rain_density_at(pos.xy) * pow(h, 0.1);
float sun = sun_access * get_sun_brightness(); float sun = sun_access * get_sun_brightness();
float energy = pow(rain * sun * min(cdist / 500.0, 1.0), 2.0) * 0.4; float energy = pow(rain * sun * min(cdist / 500.0, 1.0), 2.0) * 0.4;

View File

@ -19,6 +19,7 @@ layout(std140, set = 0, binding = 0) uniform u_globals {
uvec4 medium; uvec4 medium;
ivec4 select_pos; ivec4 select_pos;
vec4 gamma_exposure; vec4 gamma_exposure;
vec4 last_lightning;
float ambiance; float ambiance;
// 0 - FirstPerson // 0 - FirstPerson
// 1 - ThirdPerson // 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); // 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. // 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 // Multiply the vec3 only once
const float PI = 3.1415926535897932384626433832795; const float PI = 3.1415926535897932384626433832795;

View File

@ -1,6 +1,50 @@
#ifndef POINT_GLOW_GLSL #ifndef POINT_GLOW_GLSL
#define POINT_GLOW_GLSL #define POINT_GLOW_GLSL
#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);
vec3 nearest = wpos + dir * min(t, max_dist);
vec3 difference = light_pos - nearest;
float distance_2 = dot(difference, difference);
//if (distance_2 > 100000.0) {
// return;
//}
#if (CLOUD_MODE >= CLOUD_MODE_HIGH)
vec3 _unused;
float unused2;
float spread = 1.0 / (1.0 + cloud_at(nearest, 0.0, _unused, unused2).z * 0.005);
#else
const float spread = 1.0;
#endif
float strength = pow(attenuation_strength_real(difference), spread);
#ifdef EXPERIMENTAL_LOWGLOWNEARCAMERA
vec3 cam_wpos = cam_pos.xyz + focus_pos.xyz + focus_off.xyz;
vec3 cam_diff = light_pos - cam_wpos;
float cam_dist_2 = dot(cam_diff, cam_diff);
// 3 meters away glow returns to the maximum strength.
strength *= clamp(cam_dist_2 / 9.0, 0.25, 1.0);
#endif
vec3 light_color = srgb_to_linear(L.light_col.rgb) * strength;
const float LIGHT_AMBIANCE = 0.025;
color += light_color
* 0.002
#ifdef POINT_GLOW_FACTOR
// Constant, *should* const fold
* POINT_GLOW_FACTOR
#endif
;
}
vec3 apply_point_glow(vec3 wpos, vec3 dir, float max_dist, vec3 color) { vec3 apply_point_glow(vec3 wpos, vec3 dir, float max_dist, vec3 color) {
#ifndef POINT_GLOW_FACTOR #ifndef POINT_GLOW_FACTOR
return color; return color;
@ -9,44 +53,14 @@ vec3 apply_point_glow(vec3 wpos, vec3 dir, float max_dist, vec3 color) {
// Only access the array once // Only access the array once
Light L = lights[i]; Light L = lights[i];
vec3 light_pos = L.light_pos.xyz; apply_point_glow_light(L, wpos, dir, max_dist, color);
// Project light_pos to dir line
float t = max(dot(light_pos - wpos, dir), 0);
vec3 nearest = wpos + dir * min(t, max_dist);
vec3 difference = light_pos - nearest;
float distance_2 = dot(difference, difference);
if (distance_2 > 100000.0) {
continue;
}
#if (CLOUD_MODE >= CLOUD_MODE_HIGH)
vec3 _unused;
float unused2;
float spread = 1.0 / (1.0 + cloud_at(nearest, 0.0, _unused, unused2).z * 0.005);
#else
const float spread = 1.0;
#endif
float strength = pow(attenuation_strength_real(difference), spread);
#ifdef EXPERIMENTAL_LOWGLOWNEARCAMERA
vec3 cam_wpos = cam_pos.xyz + focus_pos.xyz + focus_off.xyz;
vec3 cam_diff = light_pos - cam_wpos;
float cam_dist_2 = dot(cam_diff, cam_diff);
// 3 meters away glow returns to the maximum strength.
strength *= clamp(cam_dist_2 / 9.0, 0.25, 1.0);
#endif
vec3 light_color = srgb_to_linear(L.light_col.rgb) * strength;
const float LIGHT_AMBIANCE = 0.025;
color += light_color
* 0.002
// Constant, *should* const fold
* POINT_GLOW_FACTOR;
} }
#endif #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; return color;
} }

View File

@ -20,9 +20,7 @@ uniform u_rain_occlusion {
float rain_occlusion_at(in vec3 fragPos) float rain_occlusion_at(in vec3 fragPos)
{ {
float bias = -0.2; vec4 rain_pos = rain_occlusion_texture_mat * vec4(fragPos, 1.0);
vec4 rain_pos = rain_occlusion_texture_mat * vec4(fragPos, 1.0) - vec4(0, 0, bias, 0);
float visibility = textureProj(sampler2DShadow(t_directed_occlusion_maps, s_directed_occlusion_maps), rain_pos); 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)*/); 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). // // Calculates extra emission and reflectance (due to sunlight / moonlight).
// // // //
// // reflectence = k_a * i_a + i_a,persistent // // 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)*/) + 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) + (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 emission
); ) + lightning_at(wpos);
/* light = sun_chroma + moon_chroma + PERSISTENT_AMBIANCE; /* light = sun_chroma + moon_chroma + PERSISTENT_AMBIANCE;
diffuse_light = diffuse_light =

View File

@ -620,35 +620,51 @@ vec3 compute_attenuation_point(vec3 wpos, vec3 ray_dir, vec3 mu, float surface_a
//} //}
//#endif //#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) { 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) {
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;
// TODO: Figure out how to use `texture` and modulation to avoid needing to do manual filtering // 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 // TODO: Use `texture` instead
//vec2 light = texture(t_col_light, f_uv_pos).xy / 31; //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_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_glow = light.y / 31.0;
f_attr = f_col_light.g >> 3u; f_attr = tex_00.g >> 3u;
return srgb_to_linear(f_col); 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) { 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) {
uint f_attr; float _f_attr;
return greedy_extract_col_light_attr(t_col_light, s_col_light, f_uv_pos, f_light, f_glow, 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 #endif

View File

@ -41,7 +41,6 @@ const int SMOKE = 0;
const int FIRE = 1; const int FIRE = 1;
const int GUN_POWDER_SPARK = 2; const int GUN_POWDER_SPARK = 2;
const int SHRAPNEL = 3; const int SHRAPNEL = 3;
const int FIREWORK_BLUE = 4; const int FIREWORK_BLUE = 4;
const int FIREWORK_GREEN = 5; const int FIREWORK_GREEN = 5;
const int FIREWORK_PURPLE = 6; const int FIREWORK_PURPLE = 6;
@ -76,6 +75,7 @@ const int DEATH = 34;
const int ENERGY_BUFFING = 35; const int ENERGY_BUFFING = 35;
const int WEB_STRAND = 36; const int WEB_STRAND = 36;
const int BLACK_SMOKE = 37; const int BLACK_SMOKE = 37;
const int LIGHTNING = 38;
// meters per second squared (acceleration) // meters per second squared (acceleration)
const float earth_gravity = 9.807; 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) spin_in_axis(perp_axis, asin(inst_dir.z / length(inst_dir)) + PI / 2.0)
); );
break; 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: default:
attr = Attr( attr = Attr(
linear_motion( linear_motion(

View File

@ -40,8 +40,8 @@ layout(location = 0) out vec4 tgt_color;
const float FADE_DIST = 32.0; const float FADE_DIST = 32.0;
void main() { void main() {
float f_ao, f_glow; float f_ao;
vec3 f_col = greedy_extract_col_light_glow(t_col_light, s_col_light, f_uv_pos, f_ao, f_glow); vec3 f_col = greedy_extract_col_light_sprite(t_col_light, s_col_light, f_uv_pos, f_ao);
#ifdef EXPERIMENTAL_BAREMINIMUM #ifdef EXPERIMENTAL_BAREMINIMUM
tgt_color = vec4(simple_lighting(f_pos.xyz, f_col, f_ao), 1); 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); : compute_attenuation_point(f_pos, -view_dir, mu, fluid_alt, /*cam_pos.z <= fluid_alt ? cam_pos.xyz : f_pos*/cam_pos.xyz);
#endif #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 += 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; 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); 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); vec3 glow = pow(f_inst_light.y, 3) * 4 * glow_light(f_pos);
emitted_light += glow * cam_attenuation; emitted_light += glow * cam_attenuation;

View File

@ -83,8 +83,10 @@ void main() {
f_pos += chunk_offs; f_pos += chunk_offs;
#ifndef EXPERIMENTAL_BAREMINIMUM #ifndef EXPERIMENTAL_BAREMINIMUM
// Terrain 'pop-in' effect #ifndef EXPERIMENTAL_NOTERRAINPOP
f_pos.z -= 250.0 * (1.0 - min(1.0001 - 0.02 / pow(tick.x - load_time, 10.0), 1.0)); // 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 #endif
#ifdef EXPERIMENTAL_CURVEDWORLD #ifdef EXPERIMENTAL_CURVEDWORLD

View File

@ -84,8 +84,8 @@ void main() {
vec2 f_uv_pos = f_uv_pos + atlas_offs.xy; 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); // 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 = 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; float f_light, f_glow, f_ao, f_sky_exposure;
vec3 f_col = greedy_extract_col_light_glow(t_col_light, s_col_light, f_uv_pos, f_light, f_glow); 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 #ifdef EXPERIMENTAL_BAREMINIMUM
tgt_color = vec4(simple_lighting(f_pos.xyz, f_col, f_light), 1); tgt_color = vec4(simple_lighting(f_pos.xyz, f_col, f_light), 1);
@ -244,22 +244,52 @@ void main() {
drop_pos.z *= 0.5 + hash_fast(uvec3(cell2d, 0)); drop_pos.z *= 0.5 + hash_fast(uvec3(cell2d, 0));
vec3 cell = vec3(cell2d, floor(drop_pos.z * drop_density.z)); 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
vec3 off = vec3(hash_fast(uvec3(cell * 13)), hash_fast(uvec3(cell * 5)), 0); 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)
vec3 near_cell = (cell + 0.5 + (off - 0.5) * 0.5) / drop_density; * 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
float dist = length((drop_pos - near_cell) / vec3(1, 1, 2)); #ifdef EXPERIMENTAL_WETNESS
float drop_rad = 0.1; if (puddle > 0.0) {
float distort = max(1.0 - abs(dist - drop_rad) * 100, 0) * 1.5 * max(drop_pos.z - near_cell.z, 0); float h = (noise_2d((f_pos.xy + focus_off.xy) * 0.3) - 0.5) * sin(tick.x * 8.0 + f_pos.x * 3)
k_a += distort; + (noise_2d((f_pos.xy + focus_off.xy) * 0.6) - 0.5) * sin(tick.x * 3.5 - f_pos.y * 6);
k_d += distort; 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)
k_s += distort; + (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);
f_norm.xy += (drop_pos - near_cell).xy 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)
* max(1.0 - abs(dist - drop_rad) * 30, 0) + (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);
* 500.0 f_norm.xy += mix(vec2(0), vec2(h - hx, h - hy) / 0.1 * 0.03, puddle);
* max(drop_pos.z - near_cell.z, 0) alpha = mix(1.0, 0.2, puddle);
* sign(dist - drop_rad) f_col.rgb *= mix(1.0, 0.7, puddle);
* max(drop_pos.z - near_cell.z, 0); 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;
float dist = length((drop_pos - near_cell) / vec3(1, 1, 2));
float drop_rad = 0.1;
float distort = max(1.0 - abs(dist - drop_rad) * 100, 0) * 1.5 * max(drop_pos.z - near_cell.z, 0);
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
* max(drop_pos.z - near_cell.z, 0)
* sign(dist - drop_rad)
* max(drop_pos.z - near_cell.z, 0);
}
} }
} }
#endif #endif
@ -300,7 +330,7 @@ void main() {
vec3 two_down = f_pos - offset_two; vec3 two_down = f_pos - offset_two;
// Adjust this to change the size of the grid cells relative to the // Adjust this to change the size of the grid cells relative to the
// number of shadow texels // number of shadow texels
float grid_cell_to_texel_ratio = 32.0; float grid_cell_to_texel_ratio = 32.0;
vec2 shadowTexSize = textureSize(sampler2D(t_directed_shadow_maps, s_directed_shadow_maps), 0) / grid_cell_to_texel_ratio; vec2 shadowTexSize = textureSize(sampler2D(t_directed_shadow_maps, s_directed_shadow_maps), 0) / grid_cell_to_texel_ratio;
@ -320,7 +350,7 @@ void main() {
return; return;
} }
#endif #endif
float max_light = 0.0; float max_light = 0.0;
// After shadows are computed, we use a refracted sun and moon direction. // After shadows are computed, we use a refracted sun and moon direction.
@ -354,12 +384,17 @@ void main() {
reflected_light *= f_light; reflected_light *= f_light;
max_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 // 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); 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; 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); 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 #ifndef EXPERIMENTAL_NOCAUSTICS
#if (FLUID_MODE == FLUID_MODE_SHINY) #if (FLUID_MODE == FLUID_MODE_SHINY)
if (faces_fluid) { 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