diff --git a/.clang-tidy b/.clang-tidy
index 05a83f9042025..6a17e66ee1428 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -18,7 +18,6 @@ misc-*,\
modernize-*,\
performance-*,\
readability-*,\
--cata-text-style,\
-bugprone-misplaced-widening-cast,\
-bugprone-narrowing-conversions,\
-bugprone-unused-return-value,\
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 64849033283bb..32e97bc510a0a 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -149,6 +149,8 @@ If you are also looking for suggestions then mark it with [CR] — "comments req
This can help speed up our review process by allowing us to only review the things that are ready for it, and will prevent anything that isn't completely ready from being merged in.
+It is not required to solve or reference an open issue to file a PR, however, if you do so, you need to explain the problem your PR is solving in full detail.
+
### All PRs should have a "Summary" line
Summary is a one-line description of your change that will be extracted and added to the project changelog at https://github.com/CleverRaven/Cataclysm-DDA/blob/master/data/changelog.txt
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 31f3cceeb769d..aae7c6a86c06f 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -32,9 +32,9 @@ See the [Changelog Guidelines](https://github.com/CleverRaven/Cataclysm-DDA/blob
#### Purpose of change
diff --git a/Makefile b/Makefile
index eec8f528a41ce..f7431a5b6d854 100644
--- a/Makefile
+++ b/Makefile
@@ -322,6 +322,7 @@ WARNINGS += -Wimplicit-fallthrough=0
endif
CXXFLAGS += $(WARNINGS) $(DEBUG) $(DEBUGSYMS) $(PROFILE) $(OTHERS) -MMD -MP
+TOOL_CXXFLAGS = -DCATA_IN_TOOL
BINDIST_EXTRAS += README.md data doc
BINDIST = $(BUILD_PREFIX)cataclysmdda-$(VERSION).tar.gz
@@ -801,7 +802,7 @@ localization:
lang/compile_mo.sh $(LANGUAGES)
$(CHKJSON_BIN): $(CHKJSON_SOURCES)
- $(CXX) $(CXXFLAGS) -Isrc/chkjson -Isrc $(CHKJSON_SOURCES) -o $(CHKJSON_BIN)
+ $(CXX) $(CXXFLAGS) $(TOOL_CXXFLAGS) -Isrc/chkjson -Isrc $(CHKJSON_SOURCES) -o $(CHKJSON_BIN)
json-check: $(CHKJSON_BIN)
./$(CHKJSON_BIN)
@@ -1040,7 +1041,8 @@ style-all-json: json_formatter
find data -name "*.json" -print0 | xargs -0 -L 1 $(JSON_FORMATTER_BIN)
json_formatter: $(JSON_FORMATTER_SOURCES)
- $(CXX) $(CXXFLAGS) -Itools/format -Isrc $(JSON_FORMATTER_SOURCES) -o $(JSON_FORMATTER_BIN)
+ $(CXX) $(CXXFLAGS) $(TOOL_CXXFLAGS) -Itools/format -Isrc \
+ $(JSON_FORMATTER_SOURCES) -o $(JSON_FORMATTER_BIN)
tests: version $(BUILD_PREFIX)cataclysm.a
$(MAKE) -C tests
diff --git a/android/app/build.gradle b/android/app/build.gradle
index b393eb0e88317..e9ea11a839860 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -9,8 +9,7 @@ def buildAsLibrary = project.hasProperty('BUILD_AS_LIBRARY');
def buildAsApplication = !buildAsLibrary
if (buildAsApplication) {
apply plugin: 'com.android.application'
-}
-else {
+} else {
apply plugin: 'com.android.library'
}
@@ -23,7 +22,7 @@ if (localPropertiesFile.exists()) {
}
def keystorePropertiesFilename = 'keystore.properties'
-if( localProperties.getProperty('keystorePropertiesFilename') != null ) {
+if (localProperties.getProperty('keystorePropertiesFilename') != null) {
keystorePropertiesFilename = localProperties.getProperty("keystorePropertiesFilename")
}
@@ -37,85 +36,135 @@ if (keystorePropertiesFile.exists()) {
def njobs = getProperty("j")
+def localize = getProperty("localize").toBoolean()
+def abi32 = getProperty("abi32").toBoolean()
+def abi64 = getProperty("abi64").toBoolean()
+def deps = getProperty("deps")
+def override_version = getProperty("override_version")
+def version_header_path = getProperty("version_header_path")
+
+if (!abi32 && !abi64) {
+ throw new GradleException("Both `abi32` and `abi64` properties are set to false")
+}
+if (!file(deps).exists()) {
+ throw new GradleException("Dependencies file does not exist:" + deps)
+}
+
+if (!override_version.isEmpty()) {
+ if (version_header_path.isEmpty()) {
+ throw new GradleException("`version_header_path` cannot be empty when `override_version` is not empty")
+ } else {
+ println("Overriding version number to $override_version using path $version_header_path")
+ }
+}
+
task unzipDeps(type: Copy) {
- def zipFile = new File('./deps.zip')
+ println("Using dependencies file: $deps")
+ def zipFile = new File("$deps")
def outputDir = new File('.')
from zipTree(zipFile)
into outputDir
}
-preBuild.dependsOn unzipDeps
-
-switch(OperatingSystem.current()) {
- case OperatingSystem.LINUX:
- task makeLocalization(type: Exec) {
- workingDir './../..'
- commandLine 'make', 'localization', 'LANGUAGES=all'
- }
-
- preBuild.dependsOn makeLocalization
- break
- case OperatingSystem.WINDOWS:
- task makeLocalization(type: Exec) {
- workingDir './../..'
- commandLine 'sh.exe', 'android/app/makelocalizations.sh'
+task makeLocalization(type: Exec) {
+ if (localize) {
+ println("Building with localization'")
+ switch (OperatingSystem.current()) {
+ case OperatingSystem.LINUX:
+ workingDir './../..'
+ commandLine 'make', 'localization', 'LANGUAGES=all'
+ break
+ case OperatingSystem.WINDOWS:
+ workingDir './../..'
+ commandLine 'sh.exe', 'android/app/makelocalizations.sh'
+ break
+ default:
+ workingDir './../..'
+ commandLine 'echo', 'Building without localization'
+ break
}
-
- unzipDeps.dependsOn makeLocalization
- break
+ } else {
+ workingDir './../..'
+ commandLine 'echo', 'Building without localization'
+ }
}
+makeLocalization
+unzipDeps.dependsOn makeLocalization
+preBuild.dependsOn unzipDeps
+
android {
compileSdkVersion 28
- if(OperatingSystem.current().isLinux()) {
- exec {
- workingDir './../..'
- commandLine 'make', 'version'
+ if (override_version.isEmpty()) {
+ println("Generating version number to $version_header_path")
+ switch (OperatingSystem.current()) {
+ case OperatingSystem.LINUX:
+ exec {
+ workingDir './../..'
+ commandLine 'make', 'version'
+ }
+ break
+ case OperatingSystem.WINDOWS:
+ exec {
+ workingDir './../..'
+ commandLine 'sh.exe', '-c', 'make version'
+ }
+ break
+ default:
+ exec {
+ workingDir './../..'
+ commandLine 'make', 'version'
+ }
+ break
}
- }
- if(OperatingSystem.current().isWindows()) {
+ } else {
+ println("Overriding version number to $override_version")
exec {
workingDir './../..'
- commandLine 'sh.exe', '-c', 'make version'
+ commandLine 'echo', '#define VERSION $override_version', '>', '$version_header_path'
}
}
defaultConfig {
- minSdkVersion 21
+ minSdkVersion 16
targetSdkVersion 28
- versionCode Integer.valueOf(System.env.UPSTREAM_BUILD_NUMBER ?: 1 )
- versionName new File('app/jni/src/version.h').text.split("\"")[1]
+ versionCode Integer.valueOf(System.env.UPSTREAM_BUILD_NUMBER ?: 1)
+ versionName new File("$version_header_path").text.split('\"')[1]
if (buildAsApplication) {
applicationId "com.cleverraven.cataclysmdda"
setProperty("archivesBaseName", "cataclysmdda-" + versionName)
}
- splits {
- // Configures multiple APKs based on ABI.
- abi {
- // Enables building multiple APKs per ABI.
- enable true
- // Resets the list of ABIs that Gradle should create APKs for to none.
- reset()
- // Specifies a list of ABIs that Gradle should create APKs for.
- include "armeabi-v7a"
- include "arm64-v8a"
- // Specifies that we do not want to also generate a universal APK that includes all ABIs.
- universalApk false
+ splits {
+ // Configures multiple APKs based on ABI.
+ abi {
+ // Enables building multiple APKs per ABI.
+ enable true
+ // Resets the list of ABIs that Gradle should create APKs for to none.
+ reset()
+ // Specifies a list of ABIs that Gradle should create APKs for.
+ if (abi32) {
+ include "armeabi-v7a"
+ }
+ if (abi64) {
+ include "arm64-v8a"
+ }
+ // Specifies that we do not want to also generate a universal APK that includes all ABIs.
+ universalApk false
+ }
}
- }
- externalNativeBuild {
- ndkBuild {
- arguments "APP_PLATFORM=android-21", "-j$njobs"
+ externalNativeBuild {
+ ndkBuild {
+ arguments "APP_PLATFORM=android-16", "-j$njobs"
+ }
}
- }
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
- if( keystoreProperties.getProperty('storeFile') != null ) {
- if( file(keystoreProperties.getProperty('storeFile')).exists() ) {
+ if (keystoreProperties.getProperty('storeFile') != null) {
+ if (file(keystoreProperties.getProperty('storeFile')).exists()) {
release {
storeFile file(keystoreProperties.getProperty("storeFile"))
storePassword keystoreProperties.getProperty("storePassword")
@@ -131,7 +180,7 @@ android {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- if( signingConfigs.hasProperty("release") ) {
+ if (signingConfigs.hasProperty("release")) {
signingConfig signingConfigs.release
}
externalNativeBuild {
diff --git a/android/app/deps.zip b/android/app/deps.zip
index 3d049f8e1ae65..75b4d2f68a635 100644
Binary files a/android/app/deps.zip and b/android/app/deps.zip differ
diff --git a/android/app/src/main/java/org/libsdl/app/SDLActivity.java b/android/app/src/main/java/org/libsdl/app/SDLActivity.java
index f370318a340ec..57ddc8a8c58cb 100644
--- a/android/app/src/main/java/org/libsdl/app/SDLActivity.java
+++ b/android/app/src/main/java/org/libsdl/app/SDLActivity.java
@@ -631,9 +631,9 @@ public void handleMessage(Message msg) {
} else {
int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_VISIBLE;
window.getDecorView().setSystemUiVisibility(flags);
- window.addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
- window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
- SDLActivity.mFullscreenModeActive = false;
+ window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
+ SDLActivity.mFullscreenModeActive = true;
}
}
} else {
@@ -1844,7 +1844,9 @@ public boolean onKey(View v, int keyCode, KeyEvent event) {
if (source == InputDevice.SOURCE_UNKNOWN) {
InputDevice device = InputDevice.getDevice(deviceId);
- source = device.getSources();
+ if (device != null) {
+ source = device.getSources();
+ }
}
if ((source & InputDevice.SOURCE_KEYBOARD) != 0) {
@@ -2119,24 +2121,17 @@ public boolean onKey(View v, int keyCode, KeyEvent event) {
//
@Override
public boolean onKeyPreIme (int keyCode, KeyEvent event) {
- // HACK: Make sure the SDL activity receives native events for back button, even if DummyEdit is in focus
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- if (event.getAction()==KeyEvent.ACTION_DOWN)
- SDLActivity.onNativeKeyDown(keyCode);
- else if (event.getAction()==KeyEvent.ACTION_UP)
- SDLActivity.onNativeKeyUp(keyCode);
- }
// As seen on StackOverflow: http://stackoverflow.com/questions/7634346/keyboard-hide-event
// FIXME: Discussion at http://bugzilla.libsdl.org/show_bug.cgi?id=1639
// FIXME: This is not a 100% effective solution to the problem of detecting if the keyboard is showing or not
// FIXME: A more effective solution would be to assume our Layout to be RelativeLayout or LinearLayout
// FIXME: And determine the keyboard presence doing this: http://stackoverflow.com/questions/2150078/how-to-check-visibility-of-software-keyboard-in-android
// FIXME: An even more effective way would be if Android provided this out of the box, but where would the fun be in that :)
- //if (event.getAction()==KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
- // if (SDLActivity.mTextEdit != null && SDLActivity.mTextEdit.getVisibility() == View.VISIBLE) {
- // SDLActivity.onNativeKeyboardFocusLost();
- // }
- //}
+ if (event.getAction()==KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
+ if (SDLActivity.mTextEdit != null && SDLActivity.mTextEdit.getVisibility() == View.VISIBLE) {
+ SDLActivity.onNativeKeyboardFocusLost();
+ }
+ }
return super.onKeyPreIme(keyCode, event);
}
@@ -2144,7 +2139,7 @@ else if (event.getAction()==KeyEvent.ACTION_UP)
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
ic = new SDLInputConnection(this, true);
- outAttrs.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD;
+ outAttrs.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL;
outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI
| EditorInfo.IME_FLAG_NO_FULLSCREEN /* API 11 */;
diff --git a/android/gradle.properties b/android/gradle.properties
index 850bb8cec9752..ddd139c1216c7 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -19,3 +19,27 @@ org.gradle.jvmargs=-Xmx1536m
# This property controls the number of jobs sent by -j switch to ndk-build
# You can override this from the command line by passing "-Pj=#"
j=2
+
+# This property controls whether build should be run with localization
+# You can override this from the command line by passing "-Plocalize=#"
+localize=true
+
+# This property controls whether to build 32 bit ABI
+# You can override this from the command line by passing "-Pabi32=#"
+abi32=true
+
+# This property controls whether to build 64 bit ABI
+# You can override this from the command line by passing "-Pabi64=#"
+abi64=true
+
+# This property controls which dependencies file to use
+# You can override this from the command line by passing "-Pdeps=#"
+deps=./deps.zip
+
+# This property controls which override version number to use
+# You can override this from the command line by passing "-Poverride_version=#"
+override_version=
+
+# This property controls path where overriden version number header should be generated
+# You can override this from the command line by passing "-pversion_header_path=#"
+version_header_path=app/jni/src/version.h
diff --git a/build-scripts/build.sh b/build-scripts/build.sh
index acd9af20bf491..f8249440c0092 100755
--- a/build-scripts/build.sh
+++ b/build-scripts/build.sh
@@ -2,13 +2,14 @@
# Build script intended for use in Travis CI
-set -ex
+set -ex pipefail
num_jobs=3
function run_tests
{
- $WINE "$@" -d yes --rng-seed time $EXTRA_TEST_OPTS
+ # The grep supresses lines that begin with "0.0## s:", which are timing lines for tests with a very short duration.
+ $WINE "$@" -d yes --use-colour yes --rng-seed time $EXTRA_TEST_OPTS | grep -Ev "^0\.0[0-9]{2} s:"
}
date +%s > build-start-time
@@ -144,7 +145,7 @@ then
cd android
# Specify dumb terminal to suppress gradle's constatnt output of time spent building, which
# fills the log with nonsense.
- TERM=dumb ./gradlew assembleDebug -Pj=3
+ TERM=dumb ./gradlew assembleRelease -Pj=$num_jobs -Plocalize=false -Pabi32=false -Pabi64=true -Pdeps=/home/travis/build/CleverRaven/Cataclysm-DDA/android/app/deps.zip
else
make -j "$num_jobs" RELEASE=1 CCACHE=1 BACKTRACE=1 CROSS="$CROSS_COMPILATION" LINTJSON=0
diff --git a/data/changelog.txt b/data/changelog.txt
index cfe9ae3bb417b..c7cd20af3ca22 100644
--- a/data/changelog.txt
+++ b/data/changelog.txt
@@ -1,4 +1,4 @@
-# 0.E (2019-08-31)
+# 0.E (2019-10-09)
## Features:
Correctly set liquids as solid when they freeze.
@@ -101,20 +101,59 @@ NPC will say what their current activity is + some infrastructure.
Added ability to splint broken limbs to autodoc.
Factions: start to implement useful faction relationship API.
Riding animals and animal-pulled vehicles.
-Allow quenching fires with any bashing item instead of wielded.
-Add new mission type MGOAL_TALK_TO_NPC.
-Way to manually put out controlled fire in a fireplace.
-Adds skeletal shocker zombies.
-Add furniture that can emit fields.
-Give dynamic NPCs proper overmap pathing/travel.
-Gutter downspouts to act as funnels.
Faction ownership vehicles.
-Implements baffle strikes on suppressors.
-Use zone for designating a firewood source.
-Add new mission/talk effect u_learn_recipe.
-NPC activity rework - farming and generic multi-activity loop.
-Add u_buy_monster talk effect.
+Allow any rope-type item to tie animals up.
+Gutter downspouts to act as funnels.
+Give dynamic NPCs proper overmap pathing/travel.
+Add furniture that can emit fields.
+Way to manually put out controlled fire in a fireplace.
+Add new mission type MGOAL_TALK_TO_NPC.
+Adds vehicle part cargo weight percentage modifier.
+Allow quenching fires with any bashing item instead of wielded.
+Dogs only bark when they see danger.
Pilotable combat and utility mech-suits.
+Custom Filter loot zone.
+Make secubots/turrets drop ammo and a salvageable robot carcass.
+Allow different tiles for mounted creatures.
+Dialogue writers can now directly add missions from JSON.
+Add new MGOAL_CONDITION mission goal.
+Add u/npc_has_skill condition.
+Add new mapgen piece jmapgen_ter_furn_transform.
+Allow player to pick up and handle frozen liquids.
+Set r keybinding to Reload Item instead of a Reload Wielded Item.
+Don't prompt for a direction for an action if there is only one direction possible.
+Show needs in the comestible inventory windows.
+Add u_buy_monster talk effect.
+Eating raw fat has chance of parasites.
+NPC activity rework - farming and generic multi-activity loop.
+Add new mission/talk effect u_learn_recipe.
+Use zone for designating a firewood source.
+Implements baffle strikes on suppressors.
+Add peeking through vehicle curtains.
+NPC Fishing, Chopping logs and trees, and NPC butchery.
+Charge bionics from UPS via Cable Charger System CBM.
+Vehicle deconstruct zone for NPCs to work on.
+Allow animal-drawn vehicles to follow a walking player.
+NPCs: Improve the tactical AI and NPC QoL.
+Adds SPEED option for enchantments.
+Implements Damage Immunity Flags and Effects.
+Add known factions to faction menu.
+DROPS_AMMO monsters will drop their remaining ammo in magazines.
+NPC missions: wrap the mission name in the selector UI.
+Create dynamic micro-factions for dynamic NPCs.
+NPCs: friendly NPCs consume from nearby camp stores.
+Adds a NON_THRESHOLD flag to mutations so they don't count toward thresholds.
+Adds RANDOM_ spell flags for duration, damage, and aoe.
+Adds 'vomit' spell effect.
+Basecamps: Basecamps anywhere.
+Allow NPC to read books and learn on their own.
+Allow NPCs to repair vehicles.
+Allow player to use more multi-zone activities - chopping, deconstructing etc.
+Adds REGEN_MANA and MAX_MANA to available enchantment values.
+Allow martial arts techniques to target humanoids.
+Add querry to stop trying to fall of sleep after 30min of trying.
+Sleeping in a vehicle has the same features as sleeping on furnitures.
+Basecamps: add an emergency recall option.
## Content:
Adds refluffed and modified plasma gun.
@@ -193,24 +232,32 @@ Bathtubs can be used like kegs or water heaters to store liquids.
Added a metal motor boat with a single gasoline engine.
Minefields will spawn only at the entry of the bridges.
Adds in many missing descriptions for furniture and terrain.
+Adds skeletal shocker zombies.
+Prevent martial arts message when not using martial arts.
+Adds new alien terrain types and a basic mi-go encampment map.
Add deployable workspaces, and UI support for them.
-Added several new types of portal environment.
-Adds refluffed and modified plasma gun.
-Change scenarios to be less restrictive and more generic.
-Creates some monsters to inhabit mi-go encampments, adds prisoner NPCs, and adds mi-go camps to map spawns.
-Adds polearm martial arts and one new weapon.
-Adds new basic alien terrain types and a basic mi-go encampment map, does not yet spawn in-game.
-Giant insects spawned from artifacts are now pets. Added CANPLAY flag to JSON to support it.
-Added new "looters" map extra.
-Ensure proper road connections, add subway connector level.
-Add noise vehicle parts deconstruct (muffler, chimes, stereo, beeper).
-Add sixty science fiction book snippets.
-Add mi-go scout tower.
+Added crashed airliner location.
+Added hunting supply store location.
+Add lighthouse.
+Added a new mi-go monster with ranged capabilities.
Adds steel mill location to the game.
-Adds new foes to the collapsed tower.
-Adds new absurdist texts.
-Jsonify sewage treatment plant.
-Adds speedloaders for shotguns.
+Add mi-go scout tower.
+Ensure proper road connections, add subway connector level.
+Some Free Merchant missions will lead to minor changes around the Refugee Center.
+Adds microlabs, small 4x4 labs that open only to the subway network.
+Add Gazoline Fuel Cell CBM.
+Rework secubot into a TALON UGV.
+Added new human corpses types.
+Add a new M240 equipped CROWS II to outposts.
+Adds a new spell that provides invisibility.
+Adds the Hounds of Tindalos, tough Nether monsters that can appear from teleglow.
+Adds new faction camp expansion option, livestock area.
+Gender-specific clothing on corpses.
+Adds new faction expansion: storage house, includes: stone, log, wood panel, scrap metal and wattle/daub palettes.
+Add Grocery bot to carry your groceries.
+Add blackpowder loads for some cartridges.
+Adds some islands for lakes.
+Expand randomly-generated music descriptions.
## Interface:
Corpses (not underwear) will be shown on top at the places of death in map extras.
@@ -251,23 +298,41 @@ Add guidelines to vehicle interface for easier cursor location.
Message cool-down - reduce similar message appearances.
Wait option: Wait until you regain stamina.
Auto-notes for map extras.
-You can now view your missions from the overmap.
-Add otpion to sepia tint remembered tiles instead of simply darkening them.
-Selecting vehicle controls has been made smarter, and it won't prompt you if it doesn't need to.
-Overmap mission UI improvements.
-Adjust malnourishment to use bmi values.
-Adjust mana panel code to only appear when the player knows spells.
Show best tool quality when selecting butchering.
-Show needs in the comestible inventory windows.
-Don't prompt for a direction for an action if there is only one direction possible.
-Allow different tiles for mounted creatures.
-Fixed the Labels sidebar style.
-Custom Filter loot zone.
-Allow mission descriptions to refer to the effects of the mission.
-Implement selective auto note preferences and a manager GUI to modify them.
-Wait til Dawn/Dusk is changed to Daylight/Night.
-Reordering and grouping skills list in @ menu.
+Adjust mana panel code to only appear when the player knows spells.
+Adjust malnourishment to use bmi values.
+Genericize butchery messages for dissectables.
+Overmap mission UI improvements.
+Selecting vehicle controls has been made smarter, and it won't prompt you if it doesn't need to.
+Added an option to position the item pickup panel.
+You can now view your missions from the overmap.
+Make windowed borderless fullscreen mode default on non-curses non-Android versions.
+Debug tool for viewing map radiation.
+Add movement mode coloration to panels, standardize mode letter fetching.
+Tweaked @-menu (player stats description submenu) UI.
+Allow map memory drawing mode selection through options.
+Add new wide labels sidebar layout. refactor many panels functions.
+Items inspected on the trade screen now show their description in addition to stats.
+NPC trades will check for confirmation and inform players if they may not get full value.
Show if monsters and NPCs are aware of the player in their description (visible when x - looking at them).
+Reordering and grouping skills list in @ menu.
+Wait til Dawn/Dusk is changed to Daylight/Night.
+Implement selective auto note preferences and a manager GUI to modify them.
+Allow mission descriptions to refer to the effects of the mission.
+Map editor overhaul.
+Always prompt before climbing or vaulting over terrain.
+Fix water wheels and wind turbines not showing charge rate on vehicle overview.
+Different starving messages for empty and non-empty stomach.
+Replace kills window with new scores window showing additional info.
+Rewrite some corpse descriptions.
+Fixed "add/remove monster from safemode blacklist" text not visible in Look Around mode.
+Show correct info about transform target's fitness.
+Display craft name and % finished on top of screen.
+Remove progress messages in exchange for progress popups. Add progress popup for disassembly.
+Added ability to toggle minimap on and off in Look Around window.
+Add visual indicators for dead zombies that can still revive.
+Add run and crouch colors for the player's symbol in ASCII.
+Display status for all long activities.
## Mods:
Re-adds fictional martial arts as a mod.
@@ -275,10 +340,20 @@ Added Aftershock sci-fi mod.
Adds Mod: Buildable Hydroponics bays as furniture and adds Hydroponics in Labs.
Adds the Magiclysm Mod.
Add graphical mods category, put mods in it.
-Adjust 'fast healing' mod name/description, fix duration data error.
-Magiclysm: Black Dragons and related gear
-Add Stats Through Kills Mod
+Magiclysm: Add magic basement.
+Add Stats Through Kills Mod.
+Adds Bulettes and will-o-wisps to Magiclysm.
+Magiclysm: Multiple Spell Effects.
+Magiclysm: Adds daytime 'troll' monster to forests.
+Magiclysm: Adds demon spiders and a demon spider queen lair.
+Magiclysm: Add Used Bookstore and Nothic.
Add personal and outer aura layers, as well as the intangible flag.
+Spells can now be given a custom message when cast.
+Magiclysm: Adds a new monster - black pudding.
+Add Blood Power Generator CBM to Magiclysm.
+My Sweet Cataclysm adds the ability to play as an humanoid made of sugar.
+Heavy mining mod added. Add a mining car.
+Adult Black Dragon lair.
## Balance:
Remove reinforcement of non-cloth items.
@@ -301,18 +376,15 @@ Player's weight varies with BMI and size.
Nerf outlandish drug effects.
Surgery consumes anesthetic at a rate of 2mL/mn.
Reduce turn time to 1 second.
-Changes game default start date to 30 days after Spring.
-Salvaged CBM needs to be sterilized and re-conditioned.
-Having a threshold mutation prerequisite no longer makes a particular mutation slightly less likely to occur.
-Being grabbed drastically reduce your dodging ability.
+Adjust turrets to reflect real world remote weapon systems.
Vehicle wheels require vehicle mounts.
Armored creatures won't take damage from stepping on a sharp or rough terrain types.
-Handmade mags and clips require handfitting.
Separates gunpowders by type.
-Martial Arts rebalance project.
-Tweaked turrets and military outpost mapgen.
-Bionics add weight to character.
-Makes vehicles and parts resistant to damage.
+Make most bugs avoid fire and some avoid falling.
+Cbms harvested from NPC are filthy and faulty.
+Changes game default start date to 30 days after Spring.
+Being grabbed drastically reduce your dodging ability.
+Allow zombies to push each other when blocked.
## Bugfixes:
Fixed long overmap location name being overwritten by "Distance to target:" string.
@@ -334,16 +406,19 @@ Consume tool charges incrementally during crafting.
Fixed bugs related to starting time, item rot and monster evolution.
Refuel fires while waiting.
Extreme cold and heat won't be damaging bandages or contaminate disinfected wounds no more.
-Swapping profession in character creation removes previous traits.
-Land zombies ignore fish in water.
-Electric engines won't fail to start.
-fix unpurifiable traits being mutated away.
-Fix long durations displaying as 'forever'.
-NPC running off fix.
-Stop random NPC spawning in lakes and rivers.
-Fix items spawning with bday at 0.
-Vehicles: watercraft move in shallow water with sensible stamina loss.
+Prevent fire from spreading through non-flammable walls.
+Fixed the issue of NPCs shooting through you to get to zombies.
+Fix NPCs reverting to the unrecruited state when asked to stop activity after save and load.
+Fix crash observed when encountering Mi-go slavers with Magiclysm loaded.
Fixed infinite loop on auto-sorting.
+Avoid bug where monsters would sometimes go nuts with unnecessary movement.
+vehicles: always apply a minimal slowdown.
+Fix pulped Z raising anyway.
+Fields are not spreading north-west when they shouldn't anymore.
+Fix horses making engine sounds.
+Fix items lying in furniture get damaged if one is throwing something at them.
+Items piled up beyond a tile's limit can pass through walls.
+You are still stuck in rubble even if you clear it with a shovel after getting stuck in it.
## Performance:
Limit start location search radius.
@@ -366,11 +441,19 @@ Avoid recalculating vision and lightmap unnecessarily.
Only retrieve vehicle list once a turn.
Increase performance by removing check for recipe every crafting turn.
Allow member access to weather_datum to bypass unnecessary translation.
-Speed up item::process_temperature_rot.
-Defer testing validity of scent grid modification points until modification commit.
-Remove dynamic_cast from Creature::sees and map::creature_in_field.
+Speed up calls to get_wind_blockers.
+Improve performance when fishing.
Avoid unecessarally enumerating monsters.
-Introduce a faster linked list implementation.
+Remove dynamic_cast from Creature::sees and map::creature_in_field.
+Defer testing validity of scent grid modification points until modification commit.
+Speed up item::process_temperature_rot.
+Optimize many NPC AI operations.
+More NPC-at-rest optimization.
+Minor vehicle performance optimizations.
+Throttle NPC item search.
+Optimize vine growth special attack.
+Add adjustable 3D vision Z-level cap.
+Skip sunlight calculation on uniform z-levels.
## Infrastructure:
Npctalk: Complete overhaul of NPC conversation infrastructure.
@@ -407,25 +490,90 @@ Cloaking is now tied to a json flag, allowing mods to introduce their own cloaki
Mandate description of terrain and furniture.
Basecamps: add a namespace and calculate workdays.
Significant progress toward rationizing character/player/NPC classes.
-Makes surgery a player_activity.
-Add custom clang-tidy check to enforce consistent point initialization
-Allow aliasing extendable lake shore terrain
-Time audit. Saner calendar field names.
-Use time_durations instead of ints for faults
-Jsonize clothing mod.
-Implement new item type for batteries.
-Jsonize memory-related mutation modifiers.
-Use point/tripoint rather than individual coordinates in overmapbuffer functions.
-Add Spell fields as new members of spell_type.
-Use time duration strings for effects.
-Monsters can cast spells as a special attack.
-JSON-ize terrain and furniture that produce light.
-Change vehicle padding to a more optimal configuration.
+Added weather change effect for carrying artifact with AEP_BAD_WEATHER property.
+calc_ray_end can accept any integer properly.
+Shift artifact effects to JSON.
+Add lighting overlay (debug menu).
Add energy units using units::quantity.
-Add u/npc_adjust_var and u/npc_compare_var effects and conditions.
-Introduce dedicated class to manage memorial log.
-Add a prototype event bus and Cata-specific variant type.
+Refactor player::calc_focus_equilibrium, disp_morale, update_mental_focus, reset_stats
+Template read_from_json_string.
+JSON-ize terrain and furniture that produce light.
+Monsters can cast spells as a special attack.
+Use time duration strings for effects.
+Introduce a faster linked list implementation.
+Add Spell fields as new members of spell_type.
+Jsonize memory-related mutation modifiers.
+Implement new item type for batteries.
+Jsonize clothing mod.
+Use time_durations instead of ints for faults.
+Time audit. Saner calendar field names.
+Unify spell effect functions to deprecate the if else ladder.
+Allow aliasing extendable lake shore terrain.
+Add custom clang-tidy check to enforce consistent point initialization.
+Convert calendar into a namespace.
+Magiclysm: Terrain (and furniture) alteration spell with example.
+Add static analysis check for fields that could be replaced by points.
+Jsonize Environemental protection form cbm.
+Jsonize encumbrance from cbm.
+Enforce use of point / tripoint overloads where available via a custom clang-tidy check.
+Moved windows and flora (trees, shrubs, grass) into new files from terrain.json
+Use bigger Travis ccache, and improve Travis log.
+Kill all of the auto in item.cpp that is not an iterator or lambda.
+Report a verbose error message in case of backtrace failing to grab the symbols.
+Added support of various generator types for map extras.
+Separates out liquid and door terrains.
+Items in trades are better checked for errors.
+Changed mutagen craft tools to crafting requirements.
+clang-tidy now checks for use of point arithmetic and suggest refactoring to make more use thereof.
+Introduce character_id type (rather than just using int).
Jsonize Cbm power generation.
+Change all instances of 'volume' in JSONs to be a metric string.
+Allow spawning exactly one monster from a monster group and set it mission target.
+Add a prototype event bus and Cata-specific variant type.
+Overhaul of enum <-> string conversion code.
+Track kills through event_bus in new dedicated kill_tracker class.
+Change all instances of 'storage' in JSONs to be a metric string.
+Jsonize Weight capacity modifier for armor and CBM.
+Change all instances of 'volume' in JSONs to be a metric string again.
+Allow missions to specify if they provide generic rewards.
+Character: migrate my_fac down from npc.
+Introduce dedicated class to manage memorial log.
+Weight and weight_integral can be defined using a string.
+Monsters casting spells can now get custom message.
+Add u/npc_adjust_var and u/npc_compare_var effects and conditions.
+Use mass strings for item weight.
+Improve built-in support for (de)serialization of containers.
+Show charges, damage, active, tags and item variables of items in debug mode.
+Add new object to track event statistics for use in calculating scores.
+Jsonize passive artifact effects.
+NPCs: annotate talk_tags with the usage.
+NPC can used fueled CBMs.
+Simplify sterilizing CBM behind the scene logic.
+Refactor object cloning to improve memory safety and simplify implementation.
+Stricter json parsing; errors will occur in more places.
+Added post-apocalyptic prices to all ammo types.
+Improve AppStream data.
+Support json-defined scores as a function of events.
+Use clang-tidy to check gettext calls in static variables.
+Jsonise passive stat bonus from bionics.
+Introduce functions to assist with drawing tabbed windows.
+Allow auto-wielding of items in professions.
+Spells can teach new spells.
+Enable Magiclysm on one Travis job.
+Power gen bionic can emit heat, fields and warm part they occupy.
+Preliminary tagging of all overmap locations for NPC AI.
+Make possible to define `item_transform` and `cast_spell` item actions which are only allowed when wielding or wearing item.
+Rework and unify teleport methods.
+Can use string to specify price.
+Make PR validator more robust.
+Create enchantment cache for use with enchantment values.
+Adds JSON capability to range_with_even_chance_of_good_hit.
+Uses the units::energy infrastructure for bionic power.
+Clarify some documentation relevant to monsters and basecamp recipes.
+Add table of contents to JSON_INFO.md
+Add a clang-tidy check to check for text style in the c++ code.
+Encapsulate bionic power and use setter and getter functions.
+Move player armor functions to Character scope.
## Build:
Npctalk: add a python dialogue validator.
@@ -433,11 +581,20 @@ Update homebrew install instructions.
Adds Flatpak build recipe.
Clarify the compiling directions for Visual Studio.
Enable github bot that automates closing stale issues.
-Fixed compilation with gcc 7.4.
+Add cygwin to COMPILING.md, also add short descriptions of each option.
+Android build updates.
+simplify and improve flatpak support.
+Allow building with Clang using MinGW-w64 libs.
+Check translator comments with clang-tidy.
## I18N and A11Y:
Use translation markers to increase performance.
Make the translation for field name display.
+Automatically switch IME mode between text input and raw input on Windows.
+Correctly extract npc dialogue lines for translation.
+Allow translation of non-character key names.
+Add position marker to some format strings.
+Support plural strings in the translation class.
# 0.D (Danny)
diff --git a/data/core/tips.json b/data/core/tips.json
index 984817effb543..c75ea2b1e45b9 100644
--- a/data/core/tips.json
+++ b/data/core/tips.json
@@ -122,7 +122,7 @@
{
"type": "snippet",
"category": "tip",
- "text": [ "Rotten food typically attracts bugs, and bugs got a lot bigger recently..." ]
+ "text": [ "Rotten food typically attracts bugs, and bugs got a lot bigger recently…" ]
},
{
"type": "snippet",
@@ -222,7 +222,7 @@
{
"type": "snippet",
"category": "tip",
- "text": [ "Routine kills. Stay alert! Don't let your guard down." ]
+ "text": [ "Routine kills. Stay alert! Don't let your guard down." ]
},
{
"type": "snippet",
@@ -312,7 +312,7 @@
{
"type": "snippet",
"category": "tip",
- "text": [ "A survivor saved is a friend earned. Most of the time..." ]
+ "text": [ "A survivor saved is a friend earned. Most of the time…" ]
},
{
"type": "snippet",
diff --git a/data/json/bionics.json b/data/json/bionics.json
index 70dcb57f63f43..a9e13c815999a 100644
--- a/data/json/bionics.json
+++ b/data/json/bionics.json
@@ -41,7 +41,7 @@
"id": "bio_armor_arms",
"type": "bionic",
"name": "Alloy Plating - Arms",
- "description": "The flesh on your arms has been surgically replaced by alloy plating. Provides passive protection and can be used in conjunction with bionic martial arts.",
+ "description": "The flesh on your arms has been surgically replaced by alloy plating. Provides passive protection and can be used in conjunction with bionic martial arts.",
"occupied_bodyparts": [ [ "ARM_L", 4 ], [ "ARM_R", 4 ] ],
"flags": [ "BIONIC_NPC_USABLE", "BIONIC_SHOCKPROOF" ]
},
@@ -59,14 +59,14 @@
"type": "bionic",
"name": "Alloy Plating - Head",
"description": "The flesh on your head has been surgically replaced by alloy plating, protecting both your head and jaw regions.",
- "occupied_bodyparts": [ [ "HEAD", 5 ] ],
+ "occupied_bodyparts": [ [ "HEAD", 5 ], [ "MOUTH", 1 ] ],
"flags": [ "BIONIC_NPC_USABLE", "BIONIC_SHOCKPROOF" ]
},
{
"id": "bio_armor_legs",
"type": "bionic",
"name": "Alloy Plating - Legs",
- "description": "The flesh on your legs has been surgically replaced by alloy plating. Provides passive protection and can be used in conjunction with bionic martial arts.",
+ "description": "The flesh on your legs has been surgically replaced by alloy plating. Provides passive protection and can be used in conjunction with bionic martial arts.",
"occupied_bodyparts": [ [ "LEG_L", 6 ], [ "LEG_R", 6 ] ],
"flags": [ "BIONIC_NPC_USABLE", "BIONIC_SHOCKPROOF" ]
},
@@ -82,9 +82,12 @@
"id": "bio_batteries",
"type": "bionic",
"name": "Battery System",
- "capacity": 10,
"description": "You have a battery draining attachment, and thus can make use of the energy contained in normal, everyday batteries. Use 'E' to drain charge from a battery. Can be toggled on and off at will.",
"occupied_bodyparts": [ [ "TORSO", 25 ] ],
+ "fuel_options": [ "battery" ],
+ "fuel_efficiency": 1,
+ "fuel_capacity": 2000,
+ "time": 1,
"flags": [ "BIONIC_POWER_SOURCE", "BIONIC_TOGGLED", "BIONIC_NPC_USABLE" ]
},
{
@@ -136,7 +139,6 @@
"id": "bio_cable",
"type": "bionic",
"name": "Cable Charger System",
- "capacity": 10,
"description": "You have a complex port surgically mounted above your hip. While active, it will recharge bionic power when connected to a power source via jumper cable.",
"occupied_bodyparts": [ [ "TORSO", 10 ] ],
"flags": [ "BIONIC_POWER_SOURCE", "BIONIC_SHOCKPROOF", "BIONIC_TOGGLED" ]
@@ -323,17 +325,24 @@
"id": "bio_ethanol",
"type": "bionic",
"name": "Ethanol Burner",
- "description": "You burn alcohol as fuel in an extremely efficient reaction. However, you will still suffer the inebriating effects of the substance.",
+ "description": "You burn alcohol as fuel in an extremely efficient reaction.",
"occupied_bodyparts": [ [ "TORSO", 26 ] ],
- "flags": [ "BIONIC_POWER_SOURCE", "BIONIC_NPC_USABLE", "BIONIC_SHOCKPROOF" ]
+ "fuel_options": [ "chem_ethanol", "chem_methanol", "denat_alcohol" ],
+ "fuel_capacity": 500,
+ "fuel_efficiency": 0.5,
+ "exothermic_power_gen": true,
+ "time": 1,
+ "flags": [ "BIONIC_POWER_SOURCE", "BIONIC_NPC_USABLE", "BIONIC_SHOCKPROOF", "BIONIC_TOGGLED" ]
},
{
"id": "bio_evap",
"type": "bionic",
"name": "Aero-Evaporator",
- "description": "This unit draws moisture from the surrounding air, which then is poured from a fingertip in the form of water. It may fail in very dry environments.",
- "occupied_bodyparts": [ [ "TORSO", 5 ], [ "HAND_R", 1 ] ],
- "act_cost": "720 kJ"
+ "description": "This unit draws moisture from the surrounding air, which slowly trickles directly into your blood stream. It may fail in very dry environments.",
+ "occupied_bodyparts": [ [ "TORSO", 5 ] ],
+ "react_cost": "60 J",
+ "time": 1,
+ "flags": [ "BIONIC_TOGGLED" ]
},
{
"id": "bio_eye_enhancer",
@@ -563,11 +572,11 @@
{
"id": "bio_lighter",
"type": "bionic",
- "name": "Mini-Flamethrower",
+ "name": "Finger Lighter",
"description": "The index fingers of both hands have powerful fire starters which extend from the tip.",
"occupied_bodyparts": [ [ "HAND_L", 1 ], [ "HAND_R", 1 ] ],
"fake_item": "fake_firestarter",
- "act_cost": 75
+ "act_cost": "3 kJ"
},
{
"id": "bio_lockpick",
@@ -581,7 +590,7 @@
"id": "bio_magnet",
"type": "bionic",
"name": "Electromagnetic Unit",
- "description": "Surgically embedded in your right hand is a powerful electromagnet, allowing you to indiscriminately pull all nearby magnetic objects towards you. Unlucky bystanders might be injured or killed by flying objects.",
+ "description": "Surgically embedded in your right hand is a powerful electromagnet, allowing you to use your own strength to pull all nearby magnetic objects towards you. Unlucky bystanders might be injured or killed by flying objects.",
"occupied_bodyparts": [ [ "HAND_R", 3 ] ],
"act_cost": "10 kJ"
},
@@ -610,6 +619,9 @@
"name": "Metabolic Interchange",
"description": "Your digestive system and power supply are interconnected; bionic energy is replenished by burning calories. Can be toggled on and off at will.",
"occupied_bodyparts": [ [ "TORSO", 25 ] ],
+ "fuel_options": [ "metabolism" ],
+ "fuel_efficiency": 0.25,
+ "time": 1,
"flags": [ "BIONIC_POWER_SOURCE", "BIONIC_TOGGLED", "BIONIC_NPC_USABLE" ]
},
{
@@ -624,15 +636,18 @@
"id": "bio_nanobots",
"type": "bionic",
"name": "Repair Nanobots",
- "description": "Inside your body is a fleet of tiny dormant robots. While activated they will flit about your body, repairing damage at 1 HP/s and stopping bleeding at the cost of power.",
+ "description": "Inside your body is a fleet of tiny dormant robots. While activated they will flit about your body, repairing damage at 1 HP per minute and stopping bleeding at the cost of extra power and stored calories.",
"occupied_bodyparts": [ [ "TORSO", 10 ] ],
- "flags": [ "BIONIC_TOGGLED", "BIONIC_NPC_USABLE" ]
+ "flags": [ "BIONIC_TOGGLED", "BIONIC_NPC_USABLE" ],
+ "act_cost": "80 J",
+ "react_cost": "4 J",
+ "time": 1
},
{
"id": "bio_night",
"type": "bionic",
"name": "Artificial Night Generator",
- "description": "When active, this bionic eliminates all light within a 15 tile radius through destructive interference.",
+ "description": "When active, this bionic eliminates all light within a 2 tile radius through destructive interference.",
"occupied_bodyparts": [ [ "TORSO", 16 ] ],
"flags": [ "BIONIC_TOGGLED" ],
"act_cost": "9 kJ",
@@ -662,7 +677,7 @@
"id": "bio_nostril",
"type": "bionic",
"name": "Bionic Nostril",
- "description": "You're really not sure how the CBM ended up in your nose, but no matter how it got there this badly misplaced bionic makes it difficult to breathe. Increases mouth encumbrance by one.",
+ "description": "You're really not sure how the CBM ended up in your nose, but no matter how it got there this badly misplaced bionic makes it difficult to breathe. Increases mouth encumbrance by ten.",
"occupied_bodyparts": [ [ "HEAD", 2 ], [ "MOUTH", 1 ] ],
"encumbrance": [ [ "MOUTH", 10 ] ],
"flags": [ "BIONIC_FAULTY" ]
@@ -690,7 +705,7 @@
"id": "bio_pokedeye",
"type": "bionic",
"name": "Bionic Visual Impairment",
- "description": "Due to a badly misplaced dielectric stylette, you are now suffering from mild optic neuropathy. Increases eye encumbrance by one.",
+ "description": "Due to a badly misplaced dielectric stylette, you are now suffering from mild optic neuropathy. Increases eye encumbrance by ten.",
"occupied_bodyparts": [ [ "EYES", 1 ] ],
"encumbrance": [ [ "EYES", 10 ] ],
"flags": [ "BIONIC_FAULTY" ]
@@ -719,16 +734,16 @@
"id": "bio_power_storage",
"type": "bionic",
"name": "Power Storage",
- "capacity": 100,
- "description": "A Compact Bionics Module that increases your power capacity by 100 units. Having at least one of these is a prerequisite to using powered bionics. You will also need a power supply, found in various CBMs.",
+ "capacity": "100 kJ",
+ "description": "A Compact Bionics Module that increases your power capacity by 100 kJ. Having at least one of these is a prerequisite to using powered bionics. You will also need a power supply, found in various CBMs.",
"flags": [ "BIONIC_NPC_USABLE" ]
},
{
"id": "bio_power_storage_mkII",
"type": "bionic",
"name": "Power Storage Mk. II",
- "capacity": 250,
- "description": "A Compact Bionics Module that increases your power capacity by 250 units.",
+ "capacity": "250 kJ",
+ "description": "A Compact Bionics Module that increases your power capacity by 250 kJ.",
"flags": [ "BIONIC_NPC_USABLE" ]
},
{
@@ -967,7 +982,7 @@
"id": "bio_thumbs",
"type": "bionic",
"name": "Self-Locking Thumbs",
- "description": "Self-locking thumbs hold tight (even when you really don't want them to) and don't let go (even when you'd rather they did). Increases hand encumbrance by two, while failing to improve your ability to hold objects whatsoever.",
+ "description": "Self-locking thumbs hold tight (even when you really don't want them to) and don't let go (even when you'd rather they did). Increases hand encumbrance by ten, while failing to improve your ability to hold objects whatsoever.",
"occupied_bodyparts": [ [ "HAND_L", 1 ], [ "HAND_R", 1 ] ],
"encumbrance": [ [ "HAND_L", 10 ], [ "HAND_R", 10 ] ],
"flags": [ "BIONIC_FAULTY" ]
@@ -1016,6 +1031,9 @@
"name": "Joint Torsion Ratchet",
"description": "Your joints have been surgically equipped with torsion ratchets that slowly generate power when you move. Whilst this is toggled, moving will require more effort, though more power will be generated.",
"occupied_bodyparts": [ [ "ARM_L", 8 ], [ "ARM_R", 8 ], [ "LEG_L", 12 ], [ "LEG_R", 12 ] ],
+ "fuel_options": [ "muscle" ],
+ "fuel_efficiency": 0.125,
+ "passive_fuel_efficiency": 0.00625,
"flags": [ "BIONIC_POWER_SOURCE", "BIONIC_NPC_USABLE", "BIONIC_TOGGLED" ]
},
{
@@ -1080,7 +1098,7 @@
"id": "bio_fuel_cell_gasoline",
"type": "bionic",
"name": "Gasoline Fuel Cell CBM",
- "description": "A small gasoline fuel cell fixed to your scapula. Despite its limited energy output compared to other fuel cells, this device still produces a significant amount of heat dissipated through a heat exhaust protruding from your back. A diffuse network of bio-plastic bladders has been meshed with your circulatory system and serves as a fuel tank.",
+ "description": "A small gasoline fuel cell fixed to your scapula. Despite its limited energy output compared to other fuel cells, this device still produces a significant amount of heat dissipated through a heat exhaust protruding from your back. A diffuse network of bio-plastic bladders has been meshed with your circulatory system and serves as a fuel tank.",
"occupied_bodyparts": [ [ "TORSO", 8 ] ],
"encumbrance": [ [ "TORSO", 5 ] ],
"fuel_options": [ "gasoline" ],
@@ -1118,7 +1136,7 @@
"id": "bio_taste_blocker",
"type": "bionic",
"name": "Taste Modifier",
- "description": "A set of highly sensitive sensors is installed in your mouth, and a small yet sophisticated analyzer is installed in the cavity of your skull. The active bionic will nullify the taste of all comestibles with negative enjoyment value at the cost of draining bionic power.",
+ "description": "A set of highly sensitive sensors is installed in your mouth, and a small yet sophisticated analyzer is installed in the cavity of your skull. The active bionic will nullify the taste of all comestibles with negative enjoyment value at the cost of draining bionic power.",
"occupied_bodyparts": [ [ "HEAD", 1 ], [ "MOUTH", 1 ] ],
"flags": [ "BIONIC_TOGGLED" ]
},
diff --git a/data/json/body_parts.json b/data/json/body_parts.json
index c973a2db3f448..e1c442afe2631 100644
--- a/data/json/body_parts.json
+++ b/data/json/body_parts.json
@@ -13,7 +13,8 @@
"hit_size_relative": [ 20, 33.33, 36.57 ],
"hit_difficulty": 1,
"side": "both",
- "legacy_id": "TORSO"
+ "legacy_id": "TORSO",
+ "bionic_slots": 80
},
{
"id": "head",
@@ -29,7 +30,8 @@
"hit_size_relative": [ 0, 2.33, 5.71 ],
"hit_difficulty": 1.35,
"side": "both",
- "legacy_id": "HEAD"
+ "legacy_id": "HEAD",
+ "bionic_slots": 18
},
{
"id": "eyes",
@@ -44,7 +46,8 @@
"hit_size_relative": [ 0, 0.33, 0.57 ],
"hit_difficulty": 1.15,
"side": "both",
- "legacy_id": "EYES"
+ "legacy_id": "EYES",
+ "bionic_slots": 4
},
{
"id": "mouth",
@@ -59,7 +62,8 @@
"hit_size_relative": [ 0, 0, 0 ],
"hit_difficulty": 1.15,
"side": "both",
- "legacy_id": "MOUTH"
+ "legacy_id": "MOUTH",
+ "bionic_slots": 4
},
{
"id": "arm_l",
@@ -76,7 +80,8 @@
"hit_size_relative": [ 15, 20, 22.86 ],
"hit_difficulty": 0.95,
"side": "left",
- "legacy_id": "ARM_L"
+ "legacy_id": "ARM_L",
+ "bionic_slots": 20
},
{
"id": "arm_r",
@@ -93,7 +98,8 @@
"hit_size_relative": [ 15, 20, 22.86 ],
"hit_difficulty": 0.95,
"side": "right",
- "legacy_id": "ARM_R"
+ "legacy_id": "ARM_R",
+ "bionic_slots": 20
},
{
"id": "hand_l",
@@ -109,7 +115,8 @@
"hit_size_relative": [ 0, 0, 0 ],
"hit_difficulty": 1.1,
"side": "left",
- "legacy_id": "HAND_L"
+ "legacy_id": "HAND_L",
+ "bionic_slots": 5
},
{
"id": "hand_r",
@@ -125,7 +132,8 @@
"hit_size_relative": [ 0, 0, 0 ],
"hit_difficulty": 1.1,
"side": "right",
- "legacy_id": "HAND_R"
+ "legacy_id": "HAND_R",
+ "bionic_slots": 5
},
{
"id": "leg_l",
@@ -142,7 +150,8 @@
"hit_size_relative": [ 25, 12, 5.71 ],
"hit_difficulty": 0.975,
"side": "left",
- "legacy_id": "LEG_L"
+ "legacy_id": "LEG_L",
+ "bionic_slots": 30
},
{
"id": "leg_r",
@@ -159,7 +168,8 @@
"hit_size_relative": [ 25, 12, 5.71 ],
"hit_difficulty": 0.975,
"side": "right",
- "legacy_id": "LEG_R"
+ "legacy_id": "LEG_R",
+ "bionic_slots": 30
},
{
"id": "foot_l",
@@ -175,7 +185,8 @@
"hit_size_relative": [ 0, 0, 0 ],
"hit_difficulty": 0.8,
"side": "left",
- "legacy_id": "FOOT_L"
+ "legacy_id": "FOOT_L",
+ "bionic_slots": 7
},
{
"id": "foot_r",
@@ -191,7 +202,8 @@
"hit_size_relative": [ 0, 0, 0 ],
"hit_difficulty": 0.8,
"side": "right",
- "legacy_id": "FOOT_R"
+ "legacy_id": "FOOT_R",
+ "bionic_slots": 7
},
{
"id": "num_bp",
diff --git a/data/json/construction.json b/data/json/construction.json
index 317e885fdb418..4b3349750762d 100644
--- a/data/json/construction.json
+++ b/data/json/construction.json
@@ -850,6 +850,38 @@
"pre_terrain": "t_pit_shallow",
"post_terrain": "t_woodchips"
},
+ {
+ "type": "construction",
+ "description": "Make Gravel Floor",
+ "//": "Covers the floor with pebbles. Used for constructing railroads.",
+ "category": "CONSTRUCT",
+ "required_skills": [ [ "fabrication", 1 ] ],
+ "time": "40 m",
+ "components": [ [ [ "pebble", 100 ] ] ],
+ "post_terrain": "t_railroad_rubble"
+ },
+ {
+ "type": "construction",
+ "description": "Build Straight Small Railroad Track",
+ "category": "CONSTRUCT",
+ "required_skills": [ [ "fabrication", 4 ] ],
+ "time": "30 m",
+ "qualities": [ [ { "id": "HAMMER", "level": 2 } ] ],
+ "components": [ [ [ "railroad_track_small", 1 ] ], [ [ "2x4", 4 ] ], [ [ "nail", 20 ] ], [ [ "sheet_metal_small", 2 ] ] ],
+ "pre_terrain": "t_railroad_rubble",
+ "post_terrain": "t_railroad_track_small"
+ },
+ {
+ "type": "construction",
+ "description": "Build Diagonal Small Railroad Track",
+ "category": "CONSTRUCT",
+ "required_skills": [ [ "fabrication", 4 ] ],
+ "time": "30 m",
+ "qualities": [ [ { "id": "HAMMER", "level": 2 } ] ],
+ "components": [ [ [ "railroad_track_small", 1 ] ], [ [ "2x4", 4 ] ], [ [ "nail", 20 ] ], [ [ "sheet_metal_small", 2 ] ] ],
+ "pre_terrain": "t_railroad_rubble",
+ "post_terrain": "t_railroad_track_small_d"
+ },
{
"type": "construction",
"description": "Build Wooden Floor",
@@ -1257,6 +1289,30 @@
"pre_special": "check_empty",
"post_terrain": "t_chaingate_c"
},
+ {
+ "type": "construction",
+ "description": "Build Screen Door",
+ "category": "CONSTRUCT",
+ "required_skills": [ [ "fabrication", 2 ] ],
+ "time": "60 m",
+ "qualities": [ [ { "id": "HAMMER", "level": 2 } ], [ { "id": "SAW_W", "level": 2 } ] ],
+ "components": [ [ [ "screen_mesh", 1 ] ], [ [ "2x4", 4 ] ], [ [ "nail", 20 ] ], [ [ "hinge", 2 ] ] ],
+ "pre_note": "Needs to be supported on both sides by fencing, walls, etc.",
+ "pre_special": "check_empty",
+ "post_terrain": "t_screen_door_c"
+ },
+ {
+ "type": "construction",
+ "description": "Build Screen Mesh Wall",
+ "category": "CONSTRUCT",
+ "required_skills": [ [ "fabrication", 2 ] ],
+ "time": "60 m",
+ "qualities": [ [ { "id": "HAMMER", "level": 2 } ], [ { "id": "SAW_W", "level": 2 } ] ],
+ "components": [ [ [ "screen_mesh", 1 ] ], [ [ "2x4", 4 ] ], [ [ "nail", 10 ] ] ],
+ "pre_note": "Needs to be supported on both sides by fencing, walls, etc.",
+ "pre_special": "check_empty",
+ "post_terrain": "t_screened_porch_wall"
+ },
{
"type": "construction",
"description": "Build Chickenwire Fence",
@@ -1390,6 +1446,17 @@
"pre_special": "check_empty",
"post_terrain": "f_bookcase"
},
+ {
+ "type": "construction",
+ "description": "Build Entertainment Center",
+ "category": "FURN",
+ "required_skills": [ [ "fabrication", 2 ] ],
+ "time": "80 m",
+ "qualities": [ [ { "id": "HAMMER", "level": 2 } ], [ { "id": "SAW_W", "level": 1 } ] ],
+ "components": [ [ [ "2x4", 14 ] ], [ [ "wood_sheet", 1 ], [ "wood_panel", 2 ] ], [ [ "nail", 20 ] ] ],
+ "pre_special": "check_empty",
+ "post_terrain": "f_entertainment_center"
+ },
{
"type": "construction",
"description": "Build Locker",
@@ -1477,6 +1544,17 @@
"pre_special": "check_empty",
"post_terrain": "f_table"
},
+ {
+ "type": "construction",
+ "description": "Build Coffee Table",
+ "category": "FURN",
+ "required_skills": [ [ "fabrication", 1 ] ],
+ "time": "30 m",
+ "qualities": [ [ { "id": "HAMMER", "level": 2 } ], [ { "id": "SAW_W", "level": 1 } ] ],
+ "components": [ [ [ "2x4", 2 ] ], [ [ "wood_sheet", 1 ], [ "wood_panel", 1 ] ], [ [ "nail", 8 ] ] ],
+ "pre_special": "check_empty",
+ "post_terrain": "f_coffee_table"
+ },
{
"type": "construction",
"description": "Build Workbench",
@@ -1575,7 +1653,7 @@
"required_skills": [ [ "fabrication", 4 ] ],
"time": "60 m",
"qualities": [ [ { "id": "HAMMER", "level": 2 } ], [ { "id": "SAW_W", "level": 1 } ] ],
- "components": [ [ [ "2x4", 12 ] ], [ [ "nail", 10 ] ], [ [ "mattress", 1 ] ] ],
+ "components": [ [ [ "2x4", 12 ] ], [ [ "nail", 10 ] ], [ [ "mattress", 1 ], [ "down_mattress", 1 ] ] ],
"pre_special": "check_empty",
"post_terrain": "f_bed"
},
@@ -1596,7 +1674,7 @@
"category": "FURN",
"required_skills": [ [ "fabrication", 0 ] ],
"time": 5,
- "components": [ [ [ "mattress", 1 ] ] ],
+ "components": [ [ [ "mattress", 1 ], [ "down_mattress", 1 ] ] ],
"pre_terrain": "f_bed_frame",
"post_terrain": "f_bed"
},
@@ -2157,7 +2235,7 @@
[ { "id": "HAMMER", "level": 2 } ],
[ { "id": "DIG", "level": 2 } ]
],
- "tools": [ [ [ "pickaxe", -1 ], [ "jackhammer", 30 ], [ "elec_jackhammer", 30 ] ] ],
+ "tools": [ [ [ "pickaxe", -1 ], [ "jackhammer", 140 ], [ "elec_jackhammer", 7000 ] ] ],
"components": [ [ [ "2x4", 8 ], [ "log", 8 ] ], [ [ "rope_makeshift_30", 1 ], [ "rope_30", 1 ], [ "vine_30", 1 ] ] ],
"pre_flags": "DIGGABLE",
"post_special": "done_dig_stair"
@@ -2173,7 +2251,7 @@
[ { "id": "HAMMER", "level": 2 } ],
[ { "id": "DIG", "level": 2 } ]
],
- "tools": [ [ [ "pickaxe", -1 ], [ "jackhammer", 30 ], [ "elec_jackhammer", 30 ] ] ],
+ "tools": [ [ [ "pickaxe", -1 ], [ "jackhammer", 160 ], [ "elec_jackhammer", 8000 ] ] ],
"components": [ [ [ "2x4", 12 ], [ "log", 12 ] ], [ [ "rope_makeshift_30", 1 ], [ "rope_30", 1 ], [ "vine_30", 1 ] ] ],
"pre_special": "check_down_OK",
"pre_terrain": "t_rock_floor",
@@ -2229,7 +2307,7 @@
[ { "id": "DIG", "level": 2 } ]
],
"tools": [
- [ [ "pickaxe", -1 ], [ "jackhammer", 30 ], [ "elec_jackhammer", 30 ] ],
+ [ [ "pickaxe", -1 ], [ "jackhammer", 160 ], [ "elec_jackhammer", 8000 ] ],
[
"miner_hat",
"hat_hard",
@@ -3112,7 +3190,7 @@
"components": [
[ [ "processor", 2 ] ],
[ [ "RAM", 2 ] ],
- [ [ "small_lcd_screen", 1 ] ],
+ [ [ "large_lcd_screen", 1 ] ],
[ [ "e_scrap", 8 ] ],
[ [ "frame", 1 ] ],
[ [ "circuit", 4 ] ],
@@ -3123,5 +3201,16 @@
],
"pre_flags": [ "FLAT" ],
"post_terrain": "t_radio_controls"
+ },
+ {
+ "type": "construction",
+ "description": "Build Log Stool",
+ "category": "FURN",
+ "required_skills": [ [ "survival", 1 ] ],
+ "time": "10 m",
+ "qualities": [ [ { "id": "CUT", "level": 1 } ] ],
+ "components": [ [ [ "log", 1 ] ] ],
+ "pre_special": "check_empty",
+ "post_terrain": "f_logstool"
}
]
diff --git a/data/json/dreams.json b/data/json/dreams.json
index fc4a05962df2d..372a73dc0f75e 100644
--- a/data/json/dreams.json
+++ b/data/json/dreams.json
@@ -572,6 +572,13 @@
"type": "dream",
"messages": [
"You dream of bees fighting over your sweet nectar. Mmm.",
+ "How grand it would be to sink your roots deep into the soil as the seasons pass you by.",
+ "You dream of a gigantic knot of roots, beating like a heart.",
+ "You have a disturbing dream of termites chewing all over your body.",
+ "You dream of sharing your roots with a vast forest, all plants provided for as the canopy grows ever upwards.",
+ "A family of caterpillars munches away at your leaves.",
+ "Fire rages around you, licking at your bark and engulfing the saplings and bushes near your roots. The once chatty forest is quiet in its wake.",
+ "You dream of communing with an ancient pine. Trees are the true survivors of this world, it tells you.",
"A rather attractive triffid offers you a bouquet of ape heads. How thoughtful!"
],
"category": "PLANT",
diff --git a/data/json/effects.json b/data/json/effects.json
index 154e692dde1ef..e8cc21f70ec52 100644
--- a/data/json/effects.json
+++ b/data/json/effects.json
@@ -734,15 +734,15 @@
"str_mod": [ -1 ],
"dex_mod": [ -1 ],
"vomit_chance": [ 1000, 1200 ],
- "sleep_min": [ 60, 30 ],
- "sleep_chance": [ -102 ]
+ "fatigue_min": [ 360, 180 ],
+ "fatigue_chance": [ -102 ]
},
"scaling_mods": {
"pain_max_val": [ 30, 20 ],
"str_mod": [ -1, -0.5 ],
"dex_mod": [ -1, -0.5 ],
"vomit_chance": [ -400 ],
- "sleep_chance": [ 101 ]
+ "fatigue_chance": [ 101 ]
}
},
{
@@ -760,10 +760,10 @@
"str_mod": [ -1 ],
"dex_mod": [ -1 ],
"vomit_chance": [ 1000 ],
- "sleep_min": [ 60 ],
- "sleep_chance": [ -102 ]
+ "fatigue_min": [ 360 ],
+ "fatigue_chance": [ -102 ]
},
- "scaling_mods": { "pain_max_val": [ 30 ], "str_mod": [ -1 ], "dex_mod": [ -1 ], "vomit_chance": [ -400 ], "sleep_chance": [ 101 ] }
+ "scaling_mods": { "pain_max_val": [ 30 ], "str_mod": [ -1 ], "dex_mod": [ -1 ], "vomit_chance": [ -400 ], "fatigue_chance": [ 101 ] }
},
{
"type": "effect_type",
@@ -852,6 +852,17 @@
"miss_messages": [ [ "You tremble", 4 ] ],
"base_mods": { "str_mod": [ -1 ], "dex_mod": [ -4 ] }
},
+ {
+ "type": "effect_type",
+ "id": "motor_seizure",
+ "name": [ "Seizure" ],
+ "//": "Intended to be applied with downed to make it nearly impossible for player to stand.",
+ "rating": "bad",
+ "remove_message": "You regain control of your muscles!",
+ "desc": [ "Your muscles have seized up, and you can't control them!" ],
+ "miss_messages": [ [ "Your muscles won't cooperate!", 20 ] ],
+ "base_mods": { "str_mod": [ -12 ], "dex_mod": [ -20 ] }
+ },
{
"type": "effect_type",
"id": "bleed",
@@ -1260,8 +1271,8 @@
"base_mods": {
"vomit_chance": [ -43 ],
"sleep_chance": [ -1003 ],
- "sleep_min": [ 2500 ],
- "sleep_max": [ 3500 ],
+ "sleep_min": [ 15000 ],
+ "sleep_max": [ 21000 ],
"pkill_amount": [ 3 ],
"pkill_max_val": [ 3 ],
"pkill_min": [ 1 ],
@@ -1570,6 +1581,19 @@
"remove_message": "Your metabolism becomes more stable.",
"rating": "bad"
},
+ {
+ "type": "effect_type",
+ "id": "toxin_buildup",
+ "name": [ "", "Concerning symptoms", "Unnerving symptoms" ],
+ "desc": [
+ "",
+ "Your muscles keep twitching strangely.",
+ "Your nervous system is malfunctioning, almost like it's being torn apart from the inside."
+ ],
+ "base_mods": { "h_mod_min": [ -1 ], "h_mod_chance": [ 1 ], "h_mod_chance_bot": [ 5 ], "h_mod_tick": [ 1800 ] },
+ "max_intensity": 3,
+ "scaling_mods": { "h_mod_min": [ -5 ] }
+ },
{
"type": "effect_type",
"id": "cough_suppress"
@@ -1773,6 +1797,26 @@
"desc": [ "You've been struck by lightning, and feel... different." ],
"base_mods": { "speed_mod": [ 50 ] }
},
+ {
+ "type": "effect_type",
+ "id": "grown_of_fuse",
+ "name": [ "Grown of Fusion" ],
+ "desc": [ "AI effect to increase stats after fusing with another critter. 1 stack means one absorbed max_hp." ],
+ "//": "stats modified by the zombie_fuse special attack.",
+ "//1": "scaling:",
+ "//2": "/48 HP: +0,5 melee_skill, +0,5 dodge_skill (unexpected movement), +5 Speed (bigger steps&more to attack with), +4 bash",
+ "//3": "/160 HP: +1 size",
+ "max_intensity": 480,
+ "base_mods": { "hit_mod": [ 0.0104 ], "dodge_mod": [ 0.0104 ], "speed_mod": [ 0.1042 ], "bash_mod": [ 0.08333 ] },
+ "scaling_mods": {
+ "hit_mod": [ 0.0104 ],
+ "dodge_mod": [ 0.0104 ],
+ "speed_mod": [ 0.1042 ],
+ "bash_mod": [ 0.08333 ],
+ "size_mod": [ 0.00625 ]
+ },
+ "int_decay_step": 0
+ },
{
"type": "effect_type",
"id": "has_og_comm_freq"
@@ -1780,5 +1824,15 @@
{
"type": "effect_type",
"id": "has_prospectus"
+ },
+ {
+ "type": "effect_type",
+ "id": "recently_coughed"
+ },
+ {
+ "type": "effect_type",
+ "id": "ignore_fall_damage",
+ "//": "Used for translocation via teleporter_list as a way to avoid fall damage by teleporting Z levels",
+ "flags": [ "EFFECT_FEATHER_FALL" ]
}
]
diff --git a/data/json/flags.json b/data/json/flags.json
index 14b1550335b20..136f96447087e 100644
--- a/data/json/flags.json
+++ b/data/json/flags.json
@@ -195,6 +195,7 @@
"type": "json_flag",
"context": [ "ARMOR", "TOOL_ARMOR" ],
"//": "Zombie-dropped clothing giving various penalties if Filthy mod is active. Also CBMs harvested from zombies.",
+ "craft_inherit": true,
"info": "This item is filthy."
},
{
@@ -693,5 +694,32 @@
{
"id": "ELECTRIC_IMMUNE",
"type": "json_flag"
+ },
+ {
+ "id": "NO_CRAFT_INHERIT",
+ "type": "json_flag",
+ "//": "Crafted items with this flag won't inherit flags with craft_inherit from their components."
+ },
+ {
+ "id": "HIDDEN_HALLU",
+ "type": "json_flag",
+ "context": [ "COMESTIBLE" ],
+ "craft_inherit": true,
+ "//": "Contains hallucinogenic compounds from foraged foods."
+ },
+ {
+ "id": "HIDDEN_POISON",
+ "type": "json_flag",
+ "context": [ "COMESTIBLE" ],
+ "craft_inherit": true,
+ "//": "Contains poisonous compounds from foraged foods."
+ },
+ {
+ "id": "BAD_TASTE",
+ "type": "json_flag",
+ "context": [ "COMESTIBLE" ],
+ "craft_inherit": true,
+ "//": "Has a bad taste or texture that can't be covered up through cooking.",
+ "info": "This food is unappetizing in a way that can't be covered up by most cooking."
}
]
diff --git a/data/json/furniture_and_terrain/furniture-appliances.json b/data/json/furniture_and_terrain/furniture-appliances.json
index 4d0893c759c5b..8b1a5d4c3ae15 100644
--- a/data/json/furniture_and_terrain/furniture-appliances.json
+++ b/data/json/furniture_and_terrain/furniture-appliances.json
@@ -450,5 +450,162 @@
{ "item": "pipe", "count": [ 1, 3 ] }
]
}
+ },
+ {
+ "type": "furniture",
+ "id": "f_shredder",
+ "name": "document shredder",
+ "description": "It's not all about hiding government secrets, sometimes you just want to stop identity theft.",
+ "symbol": "H",
+ "bgcolor": "white",
+ "move_cost_mod": 5,
+ "required_str": 6,
+ "looks_like": "f_filing_cabinet",
+ "flags": [ "TRANSPARENT", "CONTAINER", "PLACE_ITEM", "BLOCKSDOOR" ],
+ "deconstruct": {
+ "items": [
+ { "item": "scrap", "count": [ 2, 6 ] },
+ { "item": "steel_chunk", "count": [ 1, 3 ] },
+ { "item": "steel_lump", "count": [ 1, 3 ] },
+ { "item": "plastic_chunk", "count": [ 1, 3 ] },
+ { "item": "sheet_metal_small", "count": [ 0, 4 ] },
+ { "item": "sheet_metal", "count": [ 2, 4 ] },
+ { "item": "pipe", "count": [ 1, 4 ] },
+ { "item": "cable", "charges": [ 1, 15 ] },
+ { "item": "motor", "count": 1 },
+ { "item": "solder_wire", "charges": [ 1, 15 ] }
+ ]
+ },
+ "bash": {
+ "str_min": 18,
+ "str_max": 50,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "items": [
+ { "item": "scrap", "count": [ 2, 7 ] },
+ { "item": "steel_chunk", "count": [ 0, 3 ] },
+ { "item": "sheet_metal_small", "count": [ 8, 12 ] },
+ { "item": "sheet_metal", "count": [ 1, 2 ] },
+ { "item": "pipe", "count": [ 1, 2 ] },
+ { "item": "cable", "charges": [ 1, 15 ] },
+ { "item": "e_scrap", "count": [ 5, 10 ] },
+ { "item": "plastic_chunk", "count": [ 0, 2 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_server",
+ "looks_like": "f_utility_shelf",
+ "name": "server stack",
+ "description": "This is a big pile of computers. They're all turned off.",
+ "symbol": ":",
+ "color": "blue_white",
+ "move_cost_mod": -1,
+ "coverage": 90,
+ "required_str": 8,
+ "flags": [ "BLOCKSDOOR" ],
+ "deconstruct": {
+ "items": [
+ { "item": "sheet_metal_small", "count": [ 4, 6 ] },
+ { "item": "plastic_chunk", "count": [ 2, 12 ] },
+ { "item": "pipe", "count": [ 4, 8 ] },
+ { "item": "laptop", "count": [ 2, 4 ] },
+ { "item": "cable", "charges": [ 5, 10 ] }
+ ]
+ },
+ "bash": {
+ "str_min": 16,
+ "str_max": 40,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "items": [
+ { "item": "scrap", "count": [ 4, 8 ] },
+ { "item": "plastic_chunk", "count": [ 1, 6 ] },
+ { "item": "sheet_metal_small", "count": [ 1, 4 ] },
+ { "item": "pipe", "count": 1 },
+ { "item": "e_scrap", "count": [ 20, 50 ] },
+ { "item": "cable", "charges": [ 2, 8 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_satellite",
+ "name": "large satellite dish",
+ "looks_like": "t_radio_tower",
+ "description": "Somewhere up there, there are still satellites, orbiting and doing their thing, sending signals down to an Earth that is no longer listening.",
+ "symbol": ")",
+ "color": "white_green",
+ "move_cost_mod": -1,
+ "coverage": 70,
+ "required_str": -1,
+ "deconstruct": {
+ "items": [
+ { "item": "pipe", "count": [ 6, 12 ] },
+ { "item": "rebar", "count": [ 6, 12 ] },
+ { "item": "scrap", "count": [ 2, 6 ] },
+ { "item": "steel_chunk", "count": [ 1, 3 ] },
+ { "item": "steel_lump", "count": [ 4, 6 ] },
+ { "item": "sheet_metal_small", "count": [ 0, 4 ] },
+ { "item": "sheet_metal", "count": [ 8, 10 ] },
+ { "item": "cable", "charges": [ 1, 15 ] },
+ { "item": "motor", "count": 1 }
+ ]
+ },
+ "bash": {
+ "str_min": 18,
+ "str_max": 50,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "items": [
+ { "item": "pipe", "count": [ 1, 10 ] },
+ { "item": "rebar", "count": [ 1, 10 ] },
+ { "item": "scrap", "count": [ 6, 16 ] },
+ { "item": "steel_chunk", "count": [ 1, 4 ] },
+ { "item": "steel_lump", "count": [ 0, 6 ] },
+ { "item": "sheet_metal_small", "count": [ 8, 12 ] },
+ { "item": "sheet_metal", "count": [ 1, 2 ] },
+ { "item": "cable", "charges": [ 1, 15 ] },
+ { "item": "scrap_copper", "count": [ 0, 2 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_solar_unit",
+ "name": "mounted solar panel",
+ "description": "A mounted solar panel.",
+ "symbol": "#",
+ "color": "yellow",
+ "move_cost_mod": 2,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "BASHABLE" ],
+ "deconstruct": {
+ "items": [
+ { "item": "scrap", "count": [ 4, 6 ] },
+ { "item": "plastic_chunk", "count": [ 1, 2 ] },
+ { "item": "steel_chunk", "count": 3 },
+ { "item": "pipe", "count": 4 },
+ { "item": "2x4", "count": 4 },
+ { "item": "solar_panel", "count": 1 }
+ ]
+ },
+ "bash": {
+ "str_min": 10,
+ "str_max": 20,
+ "sound": "whack!",
+ "sound_fail": "clang!",
+ "items": [
+ { "item": "solar_cell", "count": [ 1, 5 ] },
+ { "item": "scrap", "count": [ 3, 6 ] },
+ { "item": "amplifier", "prob": 50 },
+ { "item": "cable", "charges": [ 10, 15 ] },
+ { "item": "power_supply", "prob": 50 },
+ { "item": "scrap", "count": [ 4, 6 ] },
+ { "item": "plastic_chunk", "count": [ 1, 2 ] },
+ { "item": "steel_chunk", "count": 3 }
+ ]
+ }
}
]
diff --git a/data/json/furniture_and_terrain/furniture-decorative.json b/data/json/furniture_and_terrain/furniture-decorative.json
new file mode 100644
index 0000000000000..e4a2b4098c47c
--- /dev/null
+++ b/data/json/furniture_and_terrain/furniture-decorative.json
@@ -0,0 +1,209 @@
+[
+ {
+ "type": "furniture",
+ "id": "f_bigmirror",
+ "name": "standing mirror",
+ "symbol": "{",
+ "description": "Lookin' good - is that blood?",
+ "color": "white",
+ "move_cost_mod": 2,
+ "coverage": 80,
+ "required_str": 5,
+ "flags": [ "NOITEM", "BLOCKSDOOR" ],
+ "bash": {
+ "str_min": 5,
+ "str_max": 16,
+ "sound": "glass breaking",
+ "sound_fail": "whack!",
+ "sound_vol": 16,
+ "furn_set": "f_bigmirror_b",
+ "items": [ { "item": "glass_shard", "count": [ 25, 50 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_bigmirror_b",
+ "name": "broken standing mirror",
+ "description": "You could look at yourself, if the mirror wasn't covered in cracks and fractures.",
+ "symbol": "{",
+ "color": "light_gray",
+ "move_cost_mod": 2,
+ "coverage": 80,
+ "required_str": 5,
+ "flags": [ "NOITEM", "BLOCKSDOOR" ],
+ "bash": {
+ "str_min": 8,
+ "str_max": 30,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "items": [ { "item": "scrap", "count": [ 2, 4 ] } ]
+ }
+ },
+ {
+ "id": "f_bitts",
+ "type": "furniture",
+ "name": "bitts",
+ "description": "Paired vertical iron posts mounted on a wharf, pier or quay. They are used to secure mooring lines, ropes, hawsers, or cables.",
+ "symbol": "B",
+ "color": [ "light_gray" ],
+ "move_cost_mod": 2,
+ "coverage": 30,
+ "required_str": 0,
+ "bash": {
+ "str_min": 80,
+ "str_max": 200,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "items": [ { "item": "steel_chunk", "count": [ 5, 10 ] } ]
+ },
+ "flags": [ "TRANSPARENT", "MOUNTABLE", "SHORT" ]
+ },
+ {
+ "id": "f_bitts",
+ "type": "furniture",
+ "name": "bitts",
+ "description": "Paired vertical iron posts mounted on a wharf, pier or quay. They are used to secure mooring lines, ropes, hawsers, or cables.",
+ "symbol": "B",
+ "color": [ "light_gray" ],
+ "move_cost_mod": 2,
+ "coverage": 30,
+ "required_str": 0,
+ "bash": {
+ "str_min": 80,
+ "str_max": 200,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "items": [ { "item": "steel_chunk", "count": [ 5, 10 ] } ]
+ },
+ "flags": [ "TRANSPARENT", "MOUNTABLE", "SHORT" ]
+ },
+ {
+ "type": "furniture",
+ "id": "f_shackle",
+ "name": "manacles",
+ "description": "Chain serfs in your dungeon. All you need now is an iron ball to chain to it.",
+ "symbol": "8",
+ "color": "light_gray",
+ "move_cost_mod": 1,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "ALLOW_FIELD_EFFECT", "MOUNTABLE", "SHORT" ],
+ "bash": {
+ "str_min": 18,
+ "str_max": 40,
+ "sound": "smash!",
+ "sound_fail": "crack.",
+ "items": [ { "item": "chain", "count": [ 0, 2 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_statue",
+ "name": "statue",
+ "description": "A carved statue made of stone.",
+ "symbol": "S",
+ "color": "dark_gray",
+ "move_cost_mod": -1,
+ "coverage": 50,
+ "required_str": 10,
+ "flags": [ "PLACE_ITEM", "BLOCKSDOOR", "MINEABLE" ],
+ "bash": {
+ "str_min": 16,
+ "str_max": 40,
+ "sound": "smash!",
+ "sound_fail": "thump.",
+ "items": [ { "item": "rock", "count": [ 1, 6 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_mannequin",
+ "name": "mannequin",
+ "description": "Put clothes on it, talk to it. Who's around to judge you? Wait… did it just move?",
+ "symbol": "@",
+ "color": "brown",
+ "move_cost_mod": 2,
+ "coverage": 40,
+ "required_str": 5,
+ "flags": [ "PLACE_ITEM", "TRANSPARENT", "FLAMMABLE" ],
+ "bash": {
+ "str_min": 6,
+ "str_max": 40,
+ "sound": "smash!",
+ "sound_fail": "whump.",
+ "items": [ { "item": "splinter", "count": [ 9, 12 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_birdbath",
+ "name": "birdbath",
+ "description": "A decorative cement birdbath and pedestal.",
+ "symbol": "o",
+ "color": "light_gray",
+ "move_cost_mod": -1,
+ "required_str": 10,
+ "flags": [ "PLACE_ITEM", "BLOCKSDOOR", "MINEABLE", "LIQUIDCONT" ],
+ "bash": {
+ "str_min": 16,
+ "str_max": 40,
+ "sound": "smash!",
+ "sound_fail": "thump.",
+ "items": [ { "item": "rock", "count": [ 1, 6 ] }, { "item": "rebar", "count": [ 1, 2 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_rotary_clothesline",
+ "name": "rotary clothes dryer line",
+ "description": "A umbrella shaped clothes line mounted on a pole.",
+ "symbol": "X",
+ "color": "white",
+ "move_cost_mod": -2,
+ "required_str": 10,
+ "flags": [ "TRANSPARENT", "BLOCKSDOOR", "BASHABLE", "PLACE_ITEM" ],
+ "deconstruct": {
+ "items": [ { "item": "pipe", "count": 6 }, { "item": "steel_chunk", "count": [ 2, 6 ] }, { "item": "wire", "count": 10 } ]
+ },
+ "bash": {
+ "str_min": 6,
+ "str_max": 10,
+ "sound": "smash!",
+ "sound_fail": "clang!",
+ "items": [ { "item": "pipe", "count": [ 1, 6 ] }, { "item": "wire", "count": [ 1, 2 ] }, { "item": "scrap", "count": [ 1, 6 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_floor_lamp",
+ "name": "floor lamp",
+ "symbol": "T",
+ "looks_like": "f_rack_coat",
+ "description": "A tall standing lamp, meant to plug into a wall and light up a room.",
+ "color": "light_gray",
+ "move_cost_mod": 2,
+ "required_str": 1,
+ "flags": [ "BLOCKSDOOR", "PLACE_ITEM", "EASY_DECONSTRUCT" ],
+ "deconstruct": {
+ "items": [
+ { "item": "cable", "charges": [ 1, 2 ] },
+ { "item": "amplifier", "count": [ 1, 4 ] },
+ { "item": "light_bulb", "count": [ 1, 4 ] },
+ { "item": "steel_lump", "count": 1 },
+ { "item": "pipe", "count": 1 }
+ ]
+ },
+ "bash": {
+ "str_min": 12,
+ "str_max": 40,
+ "sound": "metal screeching!",
+ "sound_fail": "bonk!",
+ "items": [
+ { "item": "scrap", "count": [ 1, 2 ] },
+ { "item": "cable", "charges": [ 0, 1 ] },
+ { "item": "e_scrap", "count": [ 0, 1 ] },
+ { "item": "glass_shard", "count": [ 0, 8 ] },
+ { "item": "pipe", "count": [ 0, 1 ] }
+ ]
+ }
+ }
+]
diff --git a/data/json/furniture_and_terrain/furniture-eggs.json b/data/json/furniture_and_terrain/furniture-eggs.json
new file mode 100644
index 0000000000000..3c93235d58e73
--- /dev/null
+++ b/data/json/furniture_and_terrain/furniture-eggs.json
@@ -0,0 +1,53 @@
+[
+ {
+ "type": "furniture",
+ "id": "f_egg_sackbw",
+ "name": "spider egg sack",
+ "description": "Much too large, off-white egg sack. Kind of icky. Something IS moving in there.",
+ "symbol": "O",
+ "color": "white",
+ "move_cost_mod": 3,
+ "required_str": 6,
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "TINY" ],
+ "examine_action": "egg_sackbw",
+ "bash": { "str_min": 8, "str_max": 16, "sound": "splat!", "sound_fail": "whump.", "furn_set": "f_egg_sacke" }
+ },
+ {
+ "type": "furniture",
+ "id": "f_egg_sackcs",
+ "name": "spider egg sack",
+ "description": "Bulbous mass of spider eggs. More than kind of icky. Something IS moving in there.",
+ "symbol": "O",
+ "color": "white",
+ "move_cost_mod": 3,
+ "required_str": 6,
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "TINY" ],
+ "examine_action": "egg_sackcs",
+ "bash": { "str_min": 8, "str_max": 16, "sound": "splat!", "sound_fail": "whump.", "furn_set": "f_egg_sacke" }
+ },
+ {
+ "type": "furniture",
+ "id": "f_egg_sackws",
+ "name": "spider egg sack",
+ "description": "A horrifyingly oversized egg sack. Something IS moving in there. If you're seeing this, you're already too close to it.",
+ "symbol": "O",
+ "color": "yellow",
+ "move_cost_mod": 3,
+ "required_str": 6,
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "TINY" ],
+ "examine_action": "egg_sackws",
+ "bash": { "str_min": 4, "str_max": 8, "sound": "splat!", "sound_fail": "whump.", "furn_set": "f_egg_sacke" }
+ },
+ {
+ "type": "furniture",
+ "id": "f_egg_sacke",
+ "name": "ruptured egg sack",
+ "description": "Super icky. Spider stuff's spilling out.",
+ "symbol": "X",
+ "color": "white",
+ "move_cost_mod": 3,
+ "required_str": 6,
+ "flags": [ "TRANSPARENT", "CONTAINER", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "TINY" ],
+ "bash": { "str_min": 2, "str_max": 6, "sound": "splat!", "sound_fail": "whump." }
+ }
+]
diff --git a/data/json/furniture_and_terrain/furniture-emitters.json b/data/json/furniture_and_terrain/furniture-emitters.json
new file mode 100644
index 0000000000000..695dcd7112ce7
--- /dev/null
+++ b/data/json/furniture_and_terrain/furniture-emitters.json
@@ -0,0 +1,32 @@
+[
+ {
+ "type": "furniture",
+ "id": "f_swamp_gas",
+ "name": "swamp gas",
+ "description": "This is a pool of murkey water, it occassionaly bubbles, releasing a mildly toxic gas.",
+ "looks_like": "t_water_sh",
+ "symbol": "~",
+ "color": "blue",
+ "move_cost_mod": 1,
+ "coverage": 0,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "EMITTER" ],
+ "emissions": [ "emit_swamp_gas_leak" ],
+ "//": "a very mild toxicant, inducing nausea.",
+ "bash": { "str_min": 30, "str_max": 60, "sound": "splash!", "sound_fail": "splash!", "furn_set": "f_swamp_gas" }
+ },
+ {
+ "type": "furniture",
+ "id": "f_fog",
+ "name": "fog",
+ "description": "This is a misty cloud of fog.",
+ "looks_like": "t_moss",
+ "symbol": "^",
+ "color": "light_gray",
+ "move_cost_mod": 2,
+ "coverage": 0,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "EMITTER" ],
+ "emissions": [ "emit_fog_plume" ]
+ }
+]
diff --git a/data/json/furniture_and_terrain/furniture-fakes.json b/data/json/furniture_and_terrain/furniture-fakes.json
new file mode 100644
index 0000000000000..7bd3baa8d2c56
--- /dev/null
+++ b/data/json/furniture_and_terrain/furniture-fakes.json
@@ -0,0 +1,42 @@
+[
+ {
+ "type": "furniture",
+ "id": "f_fake_bench_hands",
+ "name": "fake workbench hands",
+ "description": "This fake workbench holds the stats for working on a wielded item.",
+ "symbol": "#",
+ "color": "red",
+ "move_cost_mod": 2,
+ "required_str": -1,
+ "workbench": { "multiplier": 1.0, "mass": 5000, "volume": "10L" }
+ },
+ {
+ "type": "furniture",
+ "//": "This furniture object also gets used as a fake workbench whenever a player crafts on the ground anywhere else.",
+ "id": "f_ground_crafting_spot",
+ "name": "ground crafting spot",
+ "looks_like": "tr_firewood_source",
+ "description": "A cleared spot on the ground for crafting. Slower than using a workbench or holding a project in your hands, but readily available.",
+ "symbol": "x",
+ "color": "white",
+ "move_cost_mod": 2,
+ "required_str": 0,
+ "deconstruct": { "items": [ ] },
+ "bash": { "str_min": 0, "str_max": 0, "items": [ ] },
+ "flags": [ "PLACE_ITEM", "TRANSPARENT", "EASY_DECONSTRUCT" ],
+ "examine_action": "workbench",
+ "workbench": { "multiplier": 0.7, "mass": 1000000, "volume": "1000L" }
+ },
+ {
+ "type": "furniture",
+ "id": "f_no_item",
+ "//": "This is used in a hack to clear furniture with the keg iexamine of all items execept the stored liquid before usage.",
+ "name": "seeing this is a bug",
+ "description": "Seeing this is a bug. If seen, please report and destroy.",
+ "symbol": "#",
+ "color": "black",
+ "move_cost_mod": 2,
+ "required_str": -1,
+ "flags": [ "NOITEM" ]
+ }
+]
diff --git a/data/json/furniture_and_terrain/furniture-flora.json b/data/json/furniture_and_terrain/furniture-flora.json
index 39f9101c98e87..15a818826aa11 100644
--- a/data/json/furniture_and_terrain/furniture-flora.json
+++ b/data/json/furniture_and_terrain/furniture-flora.json
@@ -6,6 +6,7 @@
"description": "These strange flowers have appeared in the wake of the Cataclysm, and their buds can be used for medicinal purposes, like the seeds of the mundane poppy they're named after. The dirt around them gently churns as their roots writhe beneath the soil, and it's surrounded by an overwhelming floral smell that makes you feel sleepy.",
"symbol": "f",
"color": "light_red",
+ "looks_like": "f_dandelion",
"move_cost_mod": 0,
"required_str": -1,
"flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE", "FLOWER" ],
@@ -33,6 +34,7 @@
"description": "Ahh, soothing chamomile tea.",
"symbol": "f",
"color": "white",
+ "looks_like": "f_dandelion",
"move_cost_mod": 0,
"required_str": -1,
"flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE", "FLOWER" ],
@@ -47,7 +49,7 @@
"description": "A bright, colorful flower with petals forming a small cup at its top.",
"symbol": "f",
"looks_like": "f_mutpoppy",
- "color": "magenta",
+ "color": "light_blue",
"move_cost_mod": 0,
"required_str": -1,
"flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE", "FLOWER" ],
@@ -107,7 +109,7 @@
"description": "A yellow flower that has a dark ball in the middle. Sometimes known as an oxe-eye daisy.",
"looks_like": "f_dandelion",
"symbol": "f",
- "color": "yellow",
+ "color": "light_green",
"move_cost_mod": 0,
"required_str": -1,
"flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE", "FLOWER" ],
@@ -128,7 +130,7 @@
"description": "A pretty flower that comes in a variety of colors.",
"looks_like": "f_flower_tulip",
"symbol": "f",
- "color": "magenta",
+ "color": "pink",
"move_cost_mod": 0,
"required_str": -1,
"flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE", "ORGANIC" ],
@@ -197,6 +199,7 @@
"id": "f_bluebell",
"name": "bluebell",
"description": "A common bluebell flower. Pretty.",
+ "looks_like": "f_dandelion",
"symbol": "f",
"color": "blue",
"move_cost_mod": 0,
@@ -218,6 +221,7 @@
"description": "A puffy flower with many tightly layered petals.",
"symbol": "f",
"color": "magenta",
+ "looks_like": "f_dandelion",
"move_cost_mod": 0,
"required_str": -1,
"flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE", "FLOWER" ],
@@ -231,6 +235,7 @@
"description": "A blue flower imported from Europe, also known as a Cornflower.",
"symbol": "f",
"color": "cyan",
+ "looks_like": "f_dandelion",
"move_cost_mod": 0,
"required_str": -1,
"flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE", "FLOWER" ],
@@ -245,6 +250,7 @@
"description": "A pretty moonflower.",
"symbol": "*",
"color": "light_green",
+ "looks_like": "f_dandelion",
"move_cost_mod": 1,
"required_str": -1,
"flags": [ "TRANSPARENT", "TINY", "FLAMMABLE_ASH", "NOCOLLIDE", "ORGANIC" ],
@@ -264,6 +270,7 @@
"symbol": "#",
"description": "A sizable pile of leaves. You could sleep on it if you don't care about comfort or warmth.",
"color": "brown",
+ "looks_like": "t_dirtpile",
"move_cost_mod": 3,
"coverage": 35,
"comfort": 1,
diff --git a/data/json/furniture_and_terrain/furniture-fungal.json b/data/json/furniture_and_terrain/furniture-fungal.json
index af6980b33c053..9230b5ee032ef 100644
--- a/data/json/furniture_and_terrain/furniture-fungal.json
+++ b/data/json/furniture_and_terrain/furniture-fungal.json
@@ -3,7 +3,7 @@
"type": "furniture",
"id": "f_flower_marloss",
"name": "marloss flower",
- "description": "This flower is like the other flowers taken by the mushrooms, but its bulb is colored a brilliant cyan color, and it emits an aroma both overwhelming and... delicious?",
+ "description": "This flower is like the other flowers taken by the mushrooms, but its bulb is colored a brilliant cyan color, and it emits an aroma both overwhelming and… delicious?",
"symbol": "f",
"color": "cyan",
"move_cost_mod": 1,
diff --git a/data/json/furniture_and_terrain/furniture-graves.json b/data/json/furniture_and_terrain/furniture-graves.json
new file mode 100644
index 0000000000000..9602d4df9119d
--- /dev/null
+++ b/data/json/furniture_and_terrain/furniture-graves.json
@@ -0,0 +1,99 @@
+[
+ {
+ "type": "furniture",
+ "id": "f_slab",
+ "name": "stone slab",
+ "description": "A flat slab of heavy stone.",
+ "symbol": "n",
+ "color": "dark_gray",
+ "move_cost_mod": 2,
+ "coverage": 30,
+ "required_str": 12,
+ "crafting_pseudo_item": "boulder_anvil",
+ "flags": [ "PLACE_ITEM", "BLOCKSDOOR", "TRANSPARENT", "ALLOW_FIELD_EFFECT", "MOUNTABLE", "SHORT", "MINEABLE" ],
+ "bash": {
+ "str_min": 20,
+ "str_max": 40,
+ "sound": "smash!",
+ "sound_fail": "thump.",
+ "items": [ { "item": "rock", "count": [ 2, 7 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_grave_head",
+ "name": "headstone",
+ "description": "Keeps the bodies.",
+ "symbol": "_",
+ "color": "light_gray",
+ "move_cost_mod": 0,
+ "required_str": -1,
+ "crafting_pseudo_item": "boulder_anvil",
+ "flags": [ "MINEABLE", "TRANSPARENT", "SHORT", "NOCOLLIDE", "ALLOW_FIELD_EFFECT", "MOUNTABLE", "PLACE_ITEM" ],
+ "bash": {
+ "str_min": 50,
+ "str_max": 150,
+ "sound": "crash!",
+ "sound_fail": "thump!",
+ "items": [ { "item": "rock", "count": [ 2, 4 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_grave_stone",
+ "name": "gravestone",
+ "description": "Keeps the bodies. More fancy.",
+ "symbol": "^",
+ "color": "light_gray",
+ "move_cost_mod": 2,
+ "coverage": 50,
+ "required_str": -1,
+ "crafting_pseudo_item": "boulder_anvil",
+ "flags": [ "MINEABLE", "NOITEM", "TRANSPARENT", "MOUNTABLE", "ROUGH", "PLACE_ITEM" ],
+ "bash": {
+ "str_min": 60,
+ "str_max": 160,
+ "sound": "crash!",
+ "sound_fail": "thump!",
+ "items": [ { "item": "rock", "count": [ 8, 14 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_grave_stone_old",
+ "name": "worn gravestone",
+ "description": "A worn-out gravestone.",
+ "symbol": "^",
+ "color": "dark_gray",
+ "move_cost_mod": 1.5,
+ "coverage": 50,
+ "required_str": -1,
+ "flags": [ "MINEABLE", "NOITEM", "TRANSPARENT", "MOUNTABLE", "ROUGH", "PLACE_ITEM", "UNSTABLE" ],
+ "bash": {
+ "str_min": 40,
+ "str_max": 120,
+ "sound": "crash!",
+ "sound_fail": "thump!",
+ "items": [ { "item": "rock", "count": [ 5, 10 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_grave_monument",
+ "name": "obelisk",
+ "description": "Monument to pride.",
+ "symbol": "$",
+ "color": "black_white",
+ "move_cost_mod": -1,
+ "coverage": 55,
+ "required_str": -1,
+ "flags": [ "MINEABLE", "NOITEM" ],
+ "bash": {
+ "str_min": 80,
+ "str_max": 180,
+ "sound": "crash!",
+ "sound_fail": "thunk!",
+ "items": [ { "item": "rock", "count": [ 18, 30 ] } ]
+ }
+ }
+]
diff --git a/data/json/furniture_and_terrain/furniture-industrial.json b/data/json/furniture_and_terrain/furniture-industrial.json
new file mode 100644
index 0000000000000..557b592f69b44
--- /dev/null
+++ b/data/json/furniture_and_terrain/furniture-industrial.json
@@ -0,0 +1,123 @@
+[
+ {
+ "type": "furniture",
+ "id": "f_robotic_assembler",
+ "name": "robotic assembler",
+ "looks_like": "f_robotic_arm",
+ "description": "A durable and versatile robotic arm with a tool fitted to the end, for working on an assembly line.",
+ "symbol": "3",
+ "color": "magenta_cyan",
+ "move_cost_mod": -1,
+ "coverage": 35,
+ "required_str": -1,
+ "bash": {
+ "str_min": 40,
+ "str_max": 150,
+ "sound_fail": "clang!",
+ "items": [
+ { "item": "processor", "count": [ 1, 2 ] },
+ { "item": "RAM", "count": [ 4, 8 ] },
+ { "item": "cable", "charges": [ 4, 6 ] },
+ { "item": "small_lcd_screen", "count": [ 1, 2 ] },
+ { "item": "e_scrap", "count": [ 5, 8 ] },
+ { "item": "circuit", "count": [ 3, 5 ] },
+ { "item": "power_supply", "count": [ 1, 2 ] },
+ { "item": "amplifier", "count": [ 1, 2 ] },
+ { "item": "plastic_chunk", "count": [ 10, 12 ] },
+ { "item": "scrap", "count": [ 6, 8 ] }
+ ]
+ },
+ "deconstruct": {
+ "items": [
+ { "item": "processor", "count": [ 2, 4 ] },
+ { "item": "RAM", "count": [ 8, 16 ] },
+ { "item": "cable", "charges": [ 8, 12 ] },
+ { "item": "small_lcd_screen", "count": [ 2, 4 ] },
+ { "item": "e_scrap", "count": [ 10, 16 ] },
+ { "item": "circuit", "count": [ 6, 10 ] },
+ { "item": "power_supply", "count": [ 2, 4 ] },
+ { "item": "amplifier", "count": [ 2, 4 ] },
+ { "item": "plastic_chunk", "count": [ 10, 12 ] },
+ { "item": "scrap", "count": [ 6, 8 ] },
+ { "item": "motor_small", "count": [ 0, 1 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_chemical_mixer",
+ "description": "When chemicals need to be mixed in large quantities at just the right combinations and temperatures, this is the tool for the job.",
+ "name": "chemical mixer",
+ "symbol": "0",
+ "color": "red_green",
+ "move_cost_mod": -1,
+ "coverage": 40,
+ "required_str": 16,
+ "bash": {
+ "str_min": 40,
+ "str_max": 150,
+ "sound_fail": "clang!",
+ "items": [
+ { "item": "cable", "charges": [ 0, 4 ] },
+ { "item": "scrap", "count": [ 8, 12 ] },
+ { "item": "steel_chunk", "count": [ 2, 4 ] },
+ { "item": "metal_tank_little", "count": [ 0, 2 ] },
+ { "item": "jerrycan", "count": [ 0, 2 ] },
+ { "item": "metal_tank", "count": [ 0, 2 ] }
+ ]
+ },
+ "deconstruct": {
+ "items": [
+ { "item": "cable", "charges": [ 4, 8 ] },
+ { "item": "steel_chunk", "count": [ 4, 6 ] },
+ { "item": "scrap", "count": [ 12, 16 ] },
+ { "item": "metal_tank_little", "count": [ 2, 4 ] },
+ { "item": "jerrycan", "count": [ 2, 4 ] },
+ { "item": "metal_tank", "count": [ 2, 4 ] },
+ { "item": "motor_small", "count": 1 }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_robotic_arm",
+ "name": "robotic arm",
+ "description": "Automation! Science! Industry! Make a better horse! This robot arm promises to do it all. Except it's currently unpowered. You could remove the casing and retrieve the electronics through disassembly.",
+ "symbol": "&",
+ "bgcolor": "yellow",
+ "move_cost_mod": 3,
+ "required_str": 18,
+ "flags": [ "TRANSPARENT", "MOUNTABLE" ],
+ "deconstruct": {
+ "items": [
+ { "item": "processor", "prob": 75 },
+ { "item": "RAM", "prob": 80 },
+ { "item": "power_supply", "prob": 70 },
+ { "item": "amplifier", "prob": 90 },
+ { "item": "steel_chunk", "count": [ 1, 4 ] },
+ { "item": "spring", "prob": 80 },
+ { "item": "steel_lump", "prob": 60 },
+ { "item": "sheet_metal", "prob": 50 },
+ { "item": "motor", "prob": 60 }
+ ]
+ },
+ "bash": {
+ "str_min": 8,
+ "str_max": 45,
+ "sound": "smash!",
+ "sound_fail": "thunk.",
+ "items": [
+ { "item": "processor", "prob": 15 },
+ { "item": "RAM", "prob": 30 },
+ { "item": "power_supply", "prob": 50 },
+ { "item": "amplifier", "prob": 70 },
+ { "item": "steel_chunk", "count": [ 1, 3 ] },
+ { "item": "spring", "prob": 80 },
+ { "item": "steel_lump", "prob": 50 },
+ { "item": "sheet_metal", "prob": 30 },
+ { "item": "scrap", "count": [ 2, 5 ] },
+ { "item": "motor", "prob": 30 }
+ ]
+ }
+ }
+]
diff --git a/data/json/furniture_and_terrain/furniture-medical.json b/data/json/furniture_and_terrain/furniture-medical.json
index 7dd43708361d4..ed7fe56116d92 100644
--- a/data/json/furniture_and_terrain/furniture-medical.json
+++ b/data/json/furniture_and_terrain/furniture-medical.json
@@ -92,7 +92,6 @@
"coverage": 60,
"required_str": 16,
"max_volume": 4000,
- "insulation": 2,
"looks_like": "f_washer",
"flags": [ "CONTAINER", "PLACE_ITEM", "BLOCKSDOOR", "FLAT_SURF" ],
"deconstruct": {
@@ -138,7 +137,6 @@
"coverage": 60,
"required_str": 16,
"max_volume": 4000,
- "insulation": 2,
"looks_like": "f_washer",
"flags": [ "CONTAINER", "PLACE_ITEM", "BLOCKSDOOR", "FLAT_SURF", "SEALED" ],
"deconstruct": {
@@ -183,7 +181,6 @@
"coverage": 80,
"required_str": 18,
"max_volume": 7000,
- "insulation": 6,
"looks_like": "f_fridge",
"flags": [ "CONTAINER", "PLACE_ITEM", "BLOCKSDOOR" ],
"deconstruct": {
diff --git a/data/json/furniture_and_terrain/furniture-migo.json b/data/json/furniture_and_terrain/furniture-migo.json
index b8a4beb432f59..8fc9bad0eb932 100644
--- a/data/json/furniture_and_terrain/furniture-migo.json
+++ b/data/json/furniture_and_terrain/furniture-migo.json
@@ -32,7 +32,7 @@
"type": "furniture",
"id": "f_alien_gasper",
"name": "gasping tube",
- "description": "This is a meaty green stalactite with a thickened hide like that of a starfish, extending from the floor to the ceiling. In the center is a series of ports somewhat like mouths, from which pour bursts of a vile smelling gas.",
+ "description": "This is a meaty green stalactite with a thickened hide like that of a starfish, extending from the floor to the ceiling. In the center is a series of ports somewhat like mouths, from which pour bursts of a vile smelling gas.",
"symbol": "{",
"color": "green",
"move_cost_mod": 6,
@@ -118,7 +118,7 @@
"type": "furniture",
"id": "f_alien_table",
"name": "fleshy altar",
- "description": "This pulsing protuberance juts from the floor, its sides covered in scaled, oozing skin. The surface is flat, but undulates softly. A handful of unidentifiable appendages reach from the sides, suggesting a sort of nightmarish living autodoc.",
+ "description": "This pulsing protuberance juts from the floor, its sides covered in scaled, oozing skin. The surface is flat, but undulates softly. A handful of unidentifiable appendages reach from the sides, suggesting a sort of nightmarish living autodoc.",
"symbol": "n",
"color": "pink",
"move_cost_mod": -1,
diff --git a/data/json/furniture_and_terrain/furniture-recreation.json b/data/json/furniture_and_terrain/furniture-recreation.json
index 8c7e0ac0189ae..6993d6cc7fdcf 100644
--- a/data/json/furniture_and_terrain/furniture-recreation.json
+++ b/data/json/furniture_and_terrain/furniture-recreation.json
@@ -255,7 +255,7 @@
"type": "furniture",
"id": "f_treadmill",
"name": "treadmill",
- "description": "Used for training leg muscles. It'll be extra hard without power. Could be taken apart for its... parts.",
+ "description": "Used for training leg muscles. It'll be extra hard without power. Could be taken apart for its… parts.",
"symbol": "L",
"color": "dark_gray",
"move_cost_mod": 1,
@@ -315,7 +315,7 @@
"type": "furniture",
"id": "f_piano",
"name": "piano",
- "description": "The ol' ebony and ivory. Really classes up the place. You could take it apart if you wanted... you monster.",
+ "description": "The ol' ebony and ivory. Really classes up the place. You could take it apart if you wanted… you monster.",
"symbol": "P",
"color": "i_black",
"move_cost_mod": 6,
@@ -347,5 +347,44 @@
{ "item": "plastic_chunk", "count": [ 1, 5 ] }
]
}
+ },
+ {
+ "type": "furniture",
+ "id": "f_speaker_cabinet",
+ "name": "speaker cabinet",
+ "description": "A cabinet loaded with 12-inch speakers, intended to help make various things loud. It can't serve its original purpose these days, but it could be disassembled for various electronic parts.",
+ "symbol": "7",
+ "color": "blue",
+ "move_cost_mod": -1,
+ "coverage": 50,
+ "max_volume": 15,
+ "required_str": 7,
+ "flags": [ "TRANSPARENT", "FLAMMABLE", "PLACE_ITEM" ],
+ "deconstruct": {
+ "items": [
+ { "item": "scrap", "count": [ 4, 6 ] },
+ { "item": "e_scrap", "count": [ 1, 2 ] },
+ { "item": "plastic_chunk", "count": [ 0, 2 ] },
+ { "item": "wood_panel", "count": 1 },
+ { "item": "2x4", "count": 4 },
+ { "item": "nail", "charges": [ 8, 10 ] },
+ { "item": "cable", "charges": [ 3, 4 ] }
+ ]
+ },
+ "bash": {
+ "str_min": 8,
+ "str_max": 20,
+ "sound": "smash!",
+ "sound_fail": "whump!",
+ "items": [
+ { "item": "splinter", "count": [ 0, 6 ] },
+ { "item": "scrap", "count": [ 0, 3 ] },
+ { "item": "2x4", "count": [ 1, 2 ] },
+ { "item": "nail", "charges": [ 2, 6 ] },
+ { "item": "cable", "charges": [ 1, 3 ] },
+ { "item": "e_scrap", "prob": 25 },
+ { "item": "plastic_chunk", "count": [ 0, 1 ] }
+ ]
+ }
}
]
diff --git a/data/json/furniture_and_terrain/furniture-roof.json b/data/json/furniture_and_terrain/furniture-roof.json
index f84cbf4886041..b9f6e25c30d33 100644
--- a/data/json/furniture_and_terrain/furniture-roof.json
+++ b/data/json/furniture_and_terrain/furniture-roof.json
@@ -93,7 +93,7 @@
"items": [
{ "item": "pipe", "count": [ 1, 6 ] },
{ "item": "scrap", "count": [ 2, 6 ] },
- { "item": "cable", "count": [ 2, 6 ] }
+ { "item": "cable", "charges": [ 2, 6 ] }
]
}
},
diff --git a/data/json/furniture_and_terrain/furniture-seats.json b/data/json/furniture_and_terrain/furniture-seats.json
index be502d2814df1..44d107e66e1bc 100644
--- a/data/json/furniture_and_terrain/furniture-seats.json
+++ b/data/json/furniture_and_terrain/furniture-seats.json
@@ -161,5 +161,72 @@
"sound_fail": "whump.",
"items": [ { "item": "2x4", "count": 1 }, { "item": "nail", "charges": [ 1, 5 ] }, { "item": "splinter", "count": 3 } ]
}
+ },
+ {
+ "type": "furniture",
+ "id": "f_camp_chair",
+ "name": "camp chair",
+ "symbol": "#",
+ "looks_like": "f_chair",
+ "description": "Sit down, have a drink. It can folded for easy transportation.",
+ "color": "brown",
+ "move_cost_mod": 1,
+ "coverage": 35,
+ "floor_bedding_warmth": -1000,
+ "bonus_fire_warmth_feet": 1000,
+ "required_str": 3,
+ "deployed_item": "camp_chair",
+ "examine_action": "deployed_furniture",
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "CAN_SIT" ],
+ "max_volume": 3500,
+ "deconstruct": { "items": [ { "item": "camp_chair", "count": 1 } ] }
+ },
+ {
+ "type": "furniture",
+ "id": "f_bench",
+ "name": "bench",
+ "symbol": "#",
+ "description": "Hobo bed. Airy. Use at your own risk.",
+ "color": "brown",
+ "move_cost_mod": 1,
+ "coverage": 35,
+ "comfort": 1,
+ "floor_bedding_warmth": -1500,
+ "bonus_fire_warmth_feet": 1000,
+ "required_str": 5,
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "SHORT", "CAN_SIT" ],
+ "max_volume": 4000,
+ "deconstruct": { "items": [ { "item": "2x4", "count": 4 }, { "item": "nail", "charges": [ 6, 10 ] } ] },
+ "bash": {
+ "str_min": 12,
+ "str_max": 40,
+ "sound": "smash!",
+ "sound_fail": "whump.",
+ "items": [ { "item": "2x4", "count": [ 1, 3 ] }, { "item": "nail", "charges": [ 2, 6 ] }, { "item": "splinter", "count": 1 } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_logstool",
+ "name": "log stool",
+ "symbol": "#",
+ "description": "A log tipped on its end with any rough edges cut off. Basically a very simple seat.",
+ "color": "brown",
+ "move_cost_mod": 1,
+ "coverage": 40,
+ "comfort": 1,
+ "floor_bedding_warmth": -1000,
+ "bonus_fire_warmth_feet": 1000,
+ "required_str": 5,
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "SHORT", "CAN_SIT" ],
+ "max_volume": 3000,
+ "deconstruct": { "items": [ { "item": "log", "count": 1 } ] },
+ "bash": {
+ "str_min": 12,
+ "str_max": 40,
+ "sound": "smash!",
+ "sound_fail": "whump.",
+ "items": [ { "item": "splinter", "count": [ 2, 6 ] } ]
+ }
}
]
diff --git a/data/json/furniture_and_terrain/furniture-signs.json b/data/json/furniture_and_terrain/furniture-signs.json
new file mode 100644
index 0000000000000..fd3c6d62dc145
--- /dev/null
+++ b/data/json/furniture_and_terrain/furniture-signs.json
@@ -0,0 +1,91 @@
+[
+ {
+ "type": "furniture",
+ "id": "f_bulletin",
+ "name": "bulletin board",
+ "description": "A big, cork bulletin board capable of sporting various notices. Pin some notes for other survivors to read.",
+ "symbol": "6",
+ "color": "blue",
+ "move_cost_mod": -1,
+ "coverage": 75,
+ "required_str": -1,
+ "flags": [ "FLAMMABLE", "NOITEM", "ORGANIC", "TRANSPARENT" ],
+ "examine_action": "bulletin_board",
+ "deconstruct": { "items": [ { "item": "2x4", "count": 4 }, { "item": "nail", "charges": [ 4, 8 ] } ] },
+ "bash": {
+ "str_min": 3,
+ "str_max": 40,
+ "sound": "crunch!",
+ "sound_fail": "whump.",
+ "items": [
+ { "item": "2x4", "count": [ 0, 3 ] },
+ { "item": "nail", "charges": [ 4, 6 ] },
+ { "item": "splinter", "count": [ 1, 4 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_sign",
+ "name": "sign",
+ "symbol": "P",
+ "description": "Read it. Warnings ahead.",
+ "color": "brown",
+ "examine_action": "sign",
+ "move_cost_mod": 1,
+ "coverage": 35,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "SIGN" ],
+ "deconstruct": { "items": [ { "item": "2x4", "count": 3 }, { "item": "nail", "charges": [ 2, 5 ] } ] },
+ "bash": {
+ "str_min": 6,
+ "str_max": 40,
+ "sound": "smash!",
+ "sound_fail": "whump.",
+ "items": [ { "item": "2x4", "count": [ 1, 2 ] }, { "item": "nail", "charges": [ 2, 4 ] }, { "item": "splinter", "count": 2 } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_sign",
+ "name": "sign",
+ "symbol": "P",
+ "description": "Read it. Warnings ahead.",
+ "color": "brown",
+ "examine_action": "sign",
+ "move_cost_mod": 1,
+ "coverage": 35,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "SIGN" ],
+ "deconstruct": { "items": [ { "item": "2x4", "count": 3 }, { "item": "nail", "charges": [ 2, 5 ] } ] },
+ "bash": {
+ "str_min": 6,
+ "str_max": 40,
+ "sound": "smash!",
+ "sound_fail": "whump.",
+ "items": [ { "item": "2x4", "count": [ 1, 2 ] }, { "item": "nail", "charges": [ 2, 4 ] }, { "item": "splinter", "count": 2 } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_sign_warning",
+ "name": "warning sign",
+ "symbol": "P",
+ "description": "A triangle-shaped sign on a post meant to indicate something important or hazard.",
+ "color": "red",
+ "examine_action": "sign",
+ "looks_like": "f_sign",
+ "move_cost_mod": 1,
+ "coverage": 35,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "SIGN" ],
+ "deconstruct": { "items": [ { "item": "2x4", "count": 3 }, { "item": "nail", "charges": [ 2, 5 ] } ] },
+ "bash": {
+ "str_min": 6,
+ "str_max": 40,
+ "sound": "smash!",
+ "sound_fail": "whump.",
+ "items": [ { "item": "2x4", "count": [ 1, 2 ] }, { "item": "nail", "charges": [ 2, 4 ] }, { "item": "splinter", "count": 2 } ]
+ }
+ }
+]
diff --git a/data/json/furniture_and_terrain/furniture-sleep.json b/data/json/furniture_and_terrain/furniture-sleep.json
index f368e7167143a..4e527b9652f1c 100644
--- a/data/json/furniture_and_terrain/furniture-sleep.json
+++ b/data/json/furniture_and_terrain/furniture-sleep.json
@@ -80,7 +80,7 @@
{
"type": "furniture",
"id": "f_down_mattress",
- "name": "down_mattress",
+ "name": "down mattress",
"description": "A comfortable feather down mattress has been tossed on the floor for sleeping here. It's not quite as comfy as a real bed, but it's pretty close.",
"symbol": "0",
"color": "magenta",
diff --git a/data/json/furniture_and_terrain/furniture-storage.json b/data/json/furniture_and_terrain/furniture-storage.json
index bffd0a434d8c7..10b1edf65da2a 100644
--- a/data/json/furniture_and_terrain/furniture-storage.json
+++ b/data/json/furniture_and_terrain/furniture-storage.json
@@ -26,6 +26,35 @@
"items": [ { "item": "2x4", "count": [ 2, 6 ] }, { "item": "nail", "charges": [ 4, 12 ] }, { "item": "splinter", "count": 1 } ]
}
},
+ {
+ "type": "furniture",
+ "id": "f_entertainment_center",
+ "name": "entertainment center",
+ "symbol": "{",
+ "description": "Stores audio visual equipment, books and collectible.",
+ "color": "brown",
+ "looks_like": "f_bookcase",
+ "move_cost_mod": -1,
+ "coverage": 80,
+ "required_str": 10,
+ "flags": [ "FLAMMABLE", "PLACE_ITEM", "ORGANIC", "BLOCKSDOOR" ],
+ "deconstruct": {
+ "items": [ { "item": "2x4", "count": 14 }, { "item": "wood_panel", "count": 2 }, { "item": "nail", "charges": [ 12, 20 ] } ]
+ },
+ "max_volume": 8000,
+ "bash": {
+ "str_min": 6,
+ "str_max": 40,
+ "sound": "smash!",
+ "sound_fail": "whump.",
+ "items": [
+ { "item": "2x4", "count": [ 2, 12 ] },
+ { "item": "nail", "charges": [ 4, 20 ] },
+ { "item": "splinter", "count": [ 6, 10 ] },
+ { "item": "wood_panel", "count": [ 0, 1 ] }
+ ]
+ }
+ },
{
"type": "furniture",
"id": "f_coffin_c",
@@ -160,6 +189,31 @@
"items": [ { "item": "2x4", "count": [ 1, 5 ] }, { "item": "nail", "charges": [ 2, 10 ] } ]
}
},
+ {
+ "type": "furniture",
+ "id": "f_cardboard_box",
+ "name": "large cardboard box",
+ "symbol": "X",
+ "description": "A large cardboard box: this could be used to store things, or as a hiding place.",
+ "color": "brown",
+ "move_cost_mod": 7,
+ "coverage": 90,
+ "comfort": 1,
+ "floor_bedding_warmth": 200,
+ "required_str": 3,
+ "deconstruct": { "items": [ { "item": "box_large", "count": 1 } ] },
+ "max_volume": 6000,
+ "deployed_item": "box_large",
+ "examine_action": "deployed_furniture",
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "PLACE_ITEM", "ORGANIC", "EASY_DECONSTRUCT", "BASHABLE", "HIDE_PLACE", "NO_SIGHT" ],
+ "bash": {
+ "str_min": 2,
+ "str_max": 15,
+ "sound": "crumple!",
+ "sound_fail": "thud.",
+ "items": [ { "item": "paper", "charges": [ 50, 100 ] } ]
+ }
+ },
{
"type": "furniture",
"id": "f_cupboard",
@@ -578,6 +632,64 @@
"items": [ { "item": "plastic_chunk", "count": [ 1, 2 ] } ]
}
},
+ {
+ "type": "furniture",
+ "id": "f_wardrobe",
+ "name": "wardrobe",
+ "looks_like": "f_dresser",
+ "description": "A tall piece of furniture - basically a freestanding closet.",
+ "symbol": "{",
+ "color": "i_brown",
+ "move_cost_mod": -1,
+ "coverage": 85,
+ "required_str": 9,
+ "flags": [ "CONTAINER", "FLAMMABLE", "PLACE_ITEM", "ORGANIC", "BLOCKSDOOR", "MOUNTABLE" ],
+ "deconstruct": {
+ "items": [ { "item": "2x4", "count": 20 }, { "item": "nail", "charges": [ 16, 24 ] }, { "item": "pipe", "count": 2 } ]
+ },
+ "max_volume": 2000,
+ "bash": {
+ "str_min": 12,
+ "str_max": 40,
+ "sound": "smash!",
+ "sound_fail": "whump.",
+ "items": [
+ { "item": "2x4", "count": [ 8, 12 ] },
+ { "item": "nail", "charges": [ 8, 14 ] },
+ { "item": "splinter", "count": [ 4, 10 ] },
+ { "item": "pipe", "count": [ 0, 1 ] },
+ { "item": "scrap", "count": [ 2, 5 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_filing_cabinet",
+ "name": "filing cabinet",
+ "looks_like": "f_rack",
+ "description": "A set of drawers in a sturdy metal cabinet, used to hold files. It can be locked to protect important information. If you're lucky, there are often keys nearby.",
+ "symbol": "}",
+ "color": "dark_gray",
+ "move_cost_mod": 2,
+ "coverage": 70,
+ "required_str": 7,
+ "flags": [ "PLACE_ITEM", "TRANSPARENT", "CONTAINER", "BLOCKSDOOR", "MOUNTABLE" ],
+ "deconstruct": {
+ "items": [
+ { "item": "sheet_metal", "count": [ 2, 6 ] },
+ { "item": "scrap", "count": [ 2, 6 ] },
+ { "item": "lock", "count": [ 0, 1 ] }
+ ]
+ },
+ "max_volume": 800,
+ "bash": {
+ "str_min": 8,
+ "str_max": 30,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "items": [ { "item": "scrap", "count": [ 0, 6 ] }, { "item": "sheet_metal", "count": [ 0, 4 ] } ]
+ }
+ },
{
"type": "furniture",
"id": "f_utility_shelf",
@@ -647,5 +759,91 @@
{ "item": "splinter", "count": 1 }
]
}
+ },
+ {
+ "type": "furniture",
+ "id": "f_displaycase",
+ "name": "display case",
+ "description": "Display your stuff fancily and securely.",
+ "symbol": "#",
+ "color": "light_cyan",
+ "move_cost_mod": 2,
+ "coverage": 80,
+ "required_str": 9,
+ "flags": [ "TRANSPARENT", "SEALED", "PLACE_ITEM" ],
+ "bash": {
+ "str_min": 6,
+ "str_max": 20,
+ "sound": "glass breaking",
+ "sound_fail": "whack!",
+ "sound_vol": 16,
+ "sound_fail_vol": 12,
+ "furn_set": "f_displaycase_b",
+ "items": [ { "item": "glass_shard", "count": [ 25, 50 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_displaycase_b",
+ "name": "broken display case",
+ "description": "Display your stuff. It'll get stolen.",
+ "symbol": "#",
+ "color": "light_gray",
+ "move_cost_mod": 2,
+ "coverage": 80,
+ "required_str": 9,
+ "flags": [ "TRANSPARENT", "PLACE_ITEM" ],
+ "bash": {
+ "str_min": 8,
+ "str_max": 30,
+ "sound": "crunch!",
+ "sound_fail": "whump.",
+ "items": [ { "item": "2x4", "count": [ 3, 6 ] }, { "item": "splinter", "count": [ 2, 4 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_standing_tank",
+ "name": "standing tank",
+ "description": "A large freestanding metal tank, useful for holding liquids.",
+ "symbol": "O",
+ "color": "light_gray",
+ "move_cost_mod": -1,
+ "coverage": 90,
+ "required_str": -1,
+ "flags": [ "BASHABLE", "CONTAINER", "DECONSTRUCT", "LIQUIDCONT", "NOITEM", "SEALED", "TRANSPARENT" ],
+ "deconstruct": { "items": [ { "item": "metal_tank", "count": 4 }, { "item": "water_faucet", "count": 1 } ] },
+ "examine_action": "keg",
+ "keg_capacity": 1200,
+ "bash": {
+ "str_min": 10,
+ "str_max": 20,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "items": [ { "item": "scrap", "count": [ 8, 32 ] }, { "item": "water_faucet", "prob": 50 } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_dumpster",
+ "name": "dumpster",
+ "description": "Stores trash. Doesn't get picked up anymore. Note the smell.",
+ "symbol": "{",
+ "color": "green",
+ "move_cost_mod": 3,
+ "coverage": 70,
+ "required_str": 16,
+ "flags": [ "CONTAINER", "PLACE_ITEM", "BLOCKSDOOR", "HIDE_PLACE", "NO_SIGHT" ],
+ "bash": {
+ "str_min": 8,
+ "str_max": 45,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "items": [
+ { "item": "scrap", "count": [ 2, 8 ] },
+ { "item": "steel_chunk", "count": [ 1, 3 ] },
+ { "item": "pipe", "count": [ 1, 2 ] }
+ ]
+ }
}
]
diff --git a/data/json/furniture_and_terrain/furniture-surfaces.json b/data/json/furniture_and_terrain/furniture-surfaces.json
index 1c8c062db2946..673529dfe9f0f 100644
--- a/data/json/furniture_and_terrain/furniture-surfaces.json
+++ b/data/json/furniture_and_terrain/furniture-surfaces.json
@@ -97,6 +97,41 @@
"examine_action": "workbench",
"workbench": { "multiplier": 1.1, "mass": 200000, "volume": "75L" }
},
+ {
+ "type": "furniture",
+ "id": "f_workbench",
+ "name": "workbench",
+ "description": "A sturdy workbench built out of metal. It is perfect for crafting large and heavy things.",
+ "symbol": "#",
+ "color": "red",
+ "move_cost_mod": 2,
+ "required_str": -1,
+ "looks_like": "f_lab_bench",
+ "flags": [ "TRANSPARENT", "PLACE_ITEM", "MOUNTABLE", "FLAT_SURF" ],
+ "deconstruct": {
+ "items": [
+ { "item": "pipe", "count": [ 6, 8 ] },
+ { "item": "sheet_metal", "count": 2 },
+ { "item": "sheet_metal_small", "count": [ 2, 4 ] }
+ ]
+ },
+ "max_volume": 4000,
+ "bash": {
+ "str_min": 35,
+ "str_max": 80,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "items": [
+ { "item": "pipe", "count": [ 4, 6 ] },
+ { "item": "sheet_metal", "count": [ 0, 1 ] },
+ { "item": "sheet_metal_small", "count": [ 12, 24 ] },
+ { "item": "steel_chunk", "count": [ 4, 8 ] },
+ { "item": "scrap", "count": [ 12, 24 ] }
+ ]
+ },
+ "examine_action": "workbench",
+ "workbench": { "multiplier": 1.2, "mass": 500000, "volume": "200L" }
+ },
{
"type": "furniture",
"id": "f_leather_tarp",
@@ -167,7 +202,7 @@
"type": "furniture",
"id": "f_tourist_table",
"name": "tourist table",
- "description": "Small metal folding table, ideal for off-road trips into the wild. Can be used as a workbench in a pinch.",
+ "description": "Small metal folding table, ideal for off-road trips into the wild. Can be used as a workbench in a pinch.",
"symbol": "#",
"bgcolor": "light_gray",
"move_cost_mod": 2,
@@ -220,5 +255,36 @@
},
"examine_action": "workbench",
"workbench": { "multiplier": 1.1, "mass": 200000, "volume": "75L" }
+ },
+ {
+ "type": "furniture",
+ "id": "f_coffee_table",
+ "name": "table",
+ "description": "a low table for livingrooms.",
+ "symbol": "#",
+ "color": "red",
+ "looks_like": "f_table",
+ "move_cost_mod": 2,
+ "coverage": 50,
+ "required_str": 5,
+ "max_volume": 4000,
+ "flags": [ "TRANSPARENT", "FLAMMABLE", "ORGANIC", "MOUNTABLE", "SHORT", "FLAT_SURF" ],
+ "deconstruct": {
+ "items": [ { "item": "2x4", "count": 2 }, { "item": "wood_panel", "count": 1 }, { "item": "nail", "charges": [ 6, 8 ] } ]
+ },
+ "bash": {
+ "str_min": 10,
+ "str_max": 50,
+ "sound": "smash!",
+ "sound_fail": "whump.",
+ "items": [
+ { "item": "2x4", "count": [ 1, 2 ] },
+ { "item": "wood_panel", "count": [ 0, 1 ] },
+ { "item": "nail", "charges": [ 4, 8 ] },
+ { "item": "splinter", "count": 1 }
+ ]
+ },
+ "examine_action": "workbench",
+ "workbench": { "multiplier": 0.85, "mass": 200000, "volume": "75L" }
}
]
diff --git a/data/json/furniture_and_terrain/furniture-terrains.json b/data/json/furniture_and_terrain/furniture-terrains.json
new file mode 100644
index 0000000000000..ad6e9dae3aa90
--- /dev/null
+++ b/data/json/furniture_and_terrain/furniture-terrains.json
@@ -0,0 +1,674 @@
+[
+ {
+ "id": "f_tatami",
+ "type": "furniture",
+ "name": "tatami mat",
+ "description": "A tatami is a type of mat used as a flooring material in traditional Japanese-style rooms.",
+ "symbol": "#",
+ "color": [ "brown" ],
+ "move_cost_mod": 0,
+ "comfort": 2,
+ "floor_bedding_warmth": -1500,
+ "max_volume": 4000,
+ "required_str": 7,
+ "bash": {
+ "str_min": 8,
+ "str_max": 30,
+ "sound": "crunch.",
+ "sound_fail": "whump.",
+ "items": [
+ { "item": "straw_pile", "count": [ 5, 8 ] },
+ { "item": "rag", "count": [ 2, 4 ] },
+ { "item": "string_36", "count": [ 1, 2 ] }
+ ]
+ },
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC" ]
+ },
+ {
+ "type": "furniture",
+ "id": "f_pillow_fort",
+ "name": "pillow fort",
+ "symbol": "^",
+ "description": "A comfy place to hide from the world. Not very defensible, though.",
+ "color": "white",
+ "move_cost_mod": 3,
+ "coverage": 90,
+ "comfort": 4,
+ "floor_bedding_warmth": 1000,
+ "required_str": -1,
+ "deconstruct": { "items": [ { "item": "pillow", "count": 19 }, { "item": "blanket", "count": 3 } ] },
+ "max_volume": 4000,
+ "flags": [
+ "TRANSPARENT",
+ "FLAMMABLE_ASH",
+ "PLACE_ITEM",
+ "ORGANIC",
+ "REDUCE_SCENT",
+ "EASY_DECONSTRUCT",
+ "BASHABLE",
+ "HIDE_PLACE",
+ "NO_SIGHT"
+ ],
+ "bash": {
+ "str_min": 1,
+ "str_max": 1,
+ "sound": "paf!",
+ "sound_fail": "poof.",
+ "items": [ { "item": "pillow", "count": 19 }, { "item": "blanket", "count": 3 } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_cardboard_fort",
+ "name": "cardboard fort",
+ "symbol": "^",
+ "description": "A fort built by tipping a cardboard box on its side, lining it with blankets, and partly weather sealing it with a plastic sheet.",
+ "color": "brown",
+ "move_cost_mod": 3,
+ "coverage": 95,
+ "comfort": 4,
+ "floor_bedding_warmth": 700,
+ "required_str": 3,
+ "deconstruct": {
+ "items": [
+ { "item": "box_large", "count": 1 },
+ { "item": "plastic_sheet", "count": 1 },
+ { "item": "blanket", "count": 2 },
+ { "item": "pillow", "count": 4 }
+ ]
+ },
+ "max_volume": 4000,
+ "flags": [
+ "TRANSPARENT",
+ "FLAMMABLE_ASH",
+ "PLACE_ITEM",
+ "ORGANIC",
+ "REDUCE_SCENT",
+ "EASY_DECONSTRUCT",
+ "BASHABLE",
+ "HIDE_PLACE",
+ "NO_SIGHT",
+ "BLOCK_WIND"
+ ],
+ "bash": {
+ "str_min": 4,
+ "str_max": 15,
+ "sound": "crumple!",
+ "sound_fail": "thud.",
+ "items": [ { "item": "paper", "count": [ 50, 100 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_cardboard_wall",
+ "name": "cardboard wall",
+ "symbol": "#",
+ "bgcolor": "brown",
+ "move_cost_mod": -1,
+ "coverage": 100,
+ "description": "This is a pile of cardboard boxes that have been filled with rags and junk and stacked together like bricks to form a wall.",
+ "required_str": -1,
+ "flags": [ "NOITEM", "BLOCKSDOOR", "FLAMMABLE_ASH", "ORGANIC", "EASY_DECONSTRUCT", "BLOCK_WIND" ],
+ "deconstruct": {
+ "items": [
+ { "item": "box_large", "count": 1 },
+ { "item": "box_medium", "count": 2 },
+ { "item": "box_small", "count": 4 },
+ { "item": "rag", "count": 50 },
+ { "item": "paper", "count": 50 },
+ { "item": "plastic_chunk", "count": 20 },
+ { "item": "plastic_sheet", "count": 2 }
+ ]
+ },
+ "bash": {
+ "str_min": 8,
+ "str_max": 30,
+ "sound": "crash!",
+ "sound_fail": "whump.",
+ "items": [
+ { "item": "box_large", "count": [ 0, 1 ] },
+ { "item": "box_medium", "count": [ 0, 2 ] },
+ { "item": "box_small", "count": [ 0, 4 ] },
+ { "item": "rag", "count": [ 20, 50 ] },
+ { "item": "paper", "count": [ 50, 150 ] },
+ { "item": "plastic_chunk", "count": [ 5, 20 ] },
+ { "item": "plastic_sheet", "count": [ 0, 2 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_beaded_door",
+ "name": "beaded curtain",
+ "description": "This beaded curtain could be pulled aside.",
+ "symbol": "+",
+ "color": "pink",
+ "looks_like": "f_canvas_door",
+ "move_cost_mod": 6,
+ "coverage": 90,
+ "required_str": -1,
+ "flags": [ "NOITEM", "DOOR", "PERMEABLE", "FLAMMABLE_ASH", "MOUNTABLE" ],
+ "open": "f_beaded_door_o",
+ "deconstruct": {
+ "items": [ { "item": "stick_long", "count": 1 }, { "item": "string_36", "count": 20 }, { "item": "wooden_bead", "count": 2000 } ]
+ },
+ "bash": {
+ "str_min": 1,
+ "str_max": 1,
+ "sound": "clickity clack… clack… clack",
+ "sound_fail": "clickity clack… clack",
+ "sound_vol": 15,
+ "items": [
+ { "item": "string_36", "count": [ 3, 15 ] },
+ { "item": "stick_long", "count": 1 },
+ { "item": "wooden_bead", "count": [ 200, 500 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_beaded_door_o",
+ "name": "open beaded curtain",
+ "description": "This beaded curtain has been pulled aside.",
+ "symbol": ".",
+ "color": "pink",
+ "looks_like": "f_canvas_door_o",
+ "move_cost_mod": 0,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "FLAT" ],
+ "close": "f_beaded_door",
+ "deconstruct": {
+ "items": [ { "item": "stick_long", "count": 1 }, { "item": "string_36", "count": 20 }, { "item": "wooden_bead", "count": 2000 } ]
+ },
+ "bash": {
+ "str_min": 1,
+ "str_max": 1,
+ "sound": "clickity clack… clack… clack!",
+ "sound_fail": "clickity clack… clack",
+ "sound_vol": 15,
+ "items": [
+ { "item": "string_36", "count": [ 3, 15 ] },
+ { "item": "stick_long", "count": 1 },
+ { "item": "wooden_bead", "count": [ 200, 500 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_canvas_floor",
+ "name": "canvas floor",
+ "description": "Flooring made out of stretched, waterproof cloth. Helps keep the dirt out of the tent.",
+ "symbol": "#",
+ "color": "white",
+ "move_cost_mod": 0,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "FLAMMABLE", "PLACE_ITEM" ]
+ },
+ {
+ "type": "furniture",
+ "id": "f_canvas_wall",
+ "name": "canvas wall",
+ "description": "A wall made of stretched, waterproof cloth.",
+ "symbol": "#",
+ "color": "blue",
+ "move_cost_mod": -1,
+ "coverage": 95,
+ "required_str": -1,
+ "flags": [ "FLAMMABLE_HARD", "NOITEM", "BLOCK_WIND" ],
+ "bash": {
+ "str_min": 1,
+ "str_max": 8,
+ "sound": "rrrrip!",
+ "sound_fail": "slap!",
+ "sound_vol": 8,
+ "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_large_canvas_wall",
+ "name": "canvas wall",
+ "description": "A wall made of stretched, heavy-duty, waterproof cloth.",
+ "symbol": "#",
+ "color": "blue",
+ "move_cost_mod": -1,
+ "coverage": 95,
+ "required_str": -1,
+ "flags": [ "FLAMMABLE_HARD", "NOITEM", "BLOCK_WIND" ],
+ "bash": {
+ "str_min": 1,
+ "str_max": 8,
+ "sound": "rrrrip!",
+ "sound_fail": "slap!",
+ "sound_vol": 8,
+ "collapse_radius": 2,
+ "tent_centers": [ "f_center_groundsheet" ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_canvas_door",
+ "name": "canvas flap",
+ "description": "This canvas flap door could be pulled aside.",
+ "symbol": "+",
+ "color": "blue",
+ "move_cost_mod": -1,
+ "coverage": 95,
+ "required_str": -1,
+ "flags": [ "FLAMMABLE_HARD", "NOITEM", "DOOR", "BLOCK_WIND" ],
+ "open": "f_canvas_door_o",
+ "bash": {
+ "str_min": 1,
+ "str_max": 8,
+ "sound": "rrrrip!",
+ "sound_fail": "slap!",
+ "sound_vol": 8,
+ "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_canvas_door_o",
+ "name": "open canvas flap",
+ "description": "This canvas flap door has been pulled aside.",
+ "symbol": ".",
+ "color": "blue",
+ "move_cost_mod": 0,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT" ],
+ "close": "f_canvas_door",
+ "bash": {
+ "str_min": 1,
+ "str_max": 8,
+ "sound": "rrrrip!",
+ "sound_fail": "slap!",
+ "sound_vol": 8,
+ "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet", "f_center_groundsheet" ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_large_canvas_door",
+ "name": "canvas flap",
+ "description": "This heavy canvas flap door could be pulled aside.",
+ "symbol": "+",
+ "color": "blue",
+ "move_cost_mod": -1,
+ "coverage": 95,
+ "required_str": -1,
+ "flags": [ "FLAMMABLE_HARD", "NOITEM", "DOOR", "BLOCK_WIND" ],
+ "open": "f_large_canvas_door_o",
+ "bash": {
+ "str_min": 1,
+ "str_max": 8,
+ "sound": "rrrrip!",
+ "sound_fail": "slap!",
+ "sound_vol": 8,
+ "collapse_radius": 2,
+ "tent_centers": [ "f_center_groundsheet" ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_large_canvas_door_o",
+ "name": "open canvas flap",
+ "description": "This heavy canvas flap door has been pulled aside.",
+ "symbol": ".",
+ "color": "blue",
+ "move_cost_mod": 0,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT" ],
+ "close": "f_large_canvas_door",
+ "bash": {
+ "str_min": 1,
+ "str_max": 8,
+ "sound": "rrrrip!",
+ "sound_fail": "slap!",
+ "sound_vol": 8,
+ "collapse_radius": 2,
+ "tent_centers": [ "f_center_groundsheet" ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_groundsheet",
+ "name": "groundsheet",
+ "description": "This plastic groundsheet could keep you dry.",
+ "symbol": ";",
+ "color": "green",
+ "move_cost_mod": 0,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "INDOORS", "NOCOLLIDE" ],
+ "examine_action": "portable_structure",
+ "deployed_item": "tent_kit",
+ "bash": {
+ "str_min": 1,
+ "str_max": 8,
+ "sound": "rrrrip!",
+ "sound_fail": "slap!",
+ "sound_vol": 8,
+ "items": [ { "item": "broketent" } ],
+ "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_large_groundsheet",
+ "name": "groundsheet",
+ "description": "This large plastic groundsheet could keep you dry.",
+ "symbol": ";",
+ "color": "green",
+ "move_cost_mod": 0,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "INDOORS", "NOCOLLIDE" ],
+ "bash": {
+ "str_min": 1,
+ "str_max": 8,
+ "sound": "rrrrip!",
+ "sound_fail": "slap!",
+ "sound_vol": 8,
+ "collapse_radius": 2,
+ "tent_centers": [ "f_center_groundsheet" ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_center_groundsheet",
+ "name": "groundsheet",
+ "description": "This plastic groundsheet could keep you dry.",
+ "symbol": ";",
+ "color": "green",
+ "move_cost_mod": 0,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "INDOORS", "NOCOLLIDE" ],
+ "examine_action": "portable_structure",
+ "deployed_item": "large_tent_kit",
+ "bash": {
+ "str_min": 1,
+ "str_max": 8,
+ "sound": "rrrrip!",
+ "sound_fail": "slap!",
+ "sound_vol": 8,
+ "collapse_radius": 2,
+ "items": [ { "item": "largebroketent" } ],
+ "tent_centers": [ "f_center_groundsheet" ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_fema_groundsheet",
+ "name": "groundsheet",
+ "description": "This plastic government-issue groundsheet could keep you dry, but was made by the lowest bidder.",
+ "symbol": ";",
+ "color": "green",
+ "move_cost_mod": 0,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "INDOORS", "ORGANIC", "NOCOLLIDE" ],
+ "bash": {
+ "str_min": 1,
+ "str_max": 8,
+ "sound": "rrrrip!",
+ "sound_fail": "slap!",
+ "sound_vol": 8,
+ "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_skin_wall",
+ "name": "animalskin wall",
+ "symbol": "#",
+ "description": "Wall made out of animal skin. Either an amazing or horrifying sight.",
+ "color": "brown",
+ "move_cost_mod": -1,
+ "coverage": 95,
+ "required_str": -1,
+ "flags": [ "FLAMMABLE_HARD", "NOITEM", "BLOCK_WIND" ],
+ "bash": {
+ "str_min": 1,
+ "str_max": 8,
+ "sound": "rrrrip!",
+ "sound_fail": "slap!",
+ "sound_vol": 8,
+ "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_skin_door",
+ "name": "animalskin flap",
+ "description": "This animal skin flap could be pulled aside.",
+ "symbol": "+",
+ "color": "white",
+ "move_cost_mod": -1,
+ "coverage": 95,
+ "required_str": -1,
+ "flags": [ "FLAMMABLE_HARD", "NOITEM", "BLOCK_WIND" ],
+ "open": "f_skin_door_o",
+ "bash": {
+ "str_min": 1,
+ "str_max": 8,
+ "sound": "rrrrip!",
+ "sound_fail": "slap!",
+ "sound_vol": 8,
+ "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_skin_door_o",
+ "name": "open animalskin flap",
+ "description": "This animal skin flap has been pulled aside.",
+ "symbol": ".",
+ "color": "white",
+ "move_cost_mod": 0,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT" ],
+ "close": "f_skin_door",
+ "bash": {
+ "str_min": 1,
+ "str_max": 8,
+ "sound": "rrrrip!",
+ "sound_fail": "slap!",
+ "sound_vol": 8,
+ "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_skin_groundsheet",
+ "name": "animalskin floor",
+ "description": "This animal skin groundsheet could keep you dry.",
+ "symbol": ";",
+ "color": "brown",
+ "move_cost_mod": 0,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "INDOORS", "NOCOLLIDE" ],
+ "examine_action": "portable_structure",
+ "deployed_item": "shelter_kit",
+ "bash": {
+ "str_min": 1,
+ "str_max": 8,
+ "sound": "rrrrip!",
+ "sound_fail": "slap!",
+ "sound_vol": 8,
+ "items": [ { "item": "damaged_shelter_kit" } ],
+ "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_rubble",
+ "name": "pile of rubble",
+ "symbol": "^",
+ "description": "Pile of various metals, bricks, and other building materials. You could clear it with a shovel.",
+ "color": "light_gray",
+ "move_cost_mod": 6,
+ "max_volume": 3000,
+ "required_str": -1,
+ "flags": [
+ "TRANSPARENT",
+ "UNSTABLE",
+ "ROUGH",
+ "PLACE_ITEM",
+ "MOUNTABLE",
+ "CONTAINER",
+ "SEALED",
+ "ALLOW_FIELD_EFFECT",
+ "TINY",
+ "RUBBLE"
+ ],
+ "examine_action": "rubble"
+ },
+ {
+ "type": "furniture",
+ "id": "f_rubble_rock",
+ "name": "pile of rocky rubble",
+ "description": "Pile of rocks. Useless?",
+ "symbol": "^",
+ "color": "dark_gray",
+ "move_cost_mod": 6,
+ "max_volume": 3000,
+ "required_str": -1,
+ "flags": [
+ "TRANSPARENT",
+ "UNSTABLE",
+ "ROUGH",
+ "PLACE_ITEM",
+ "MOUNTABLE",
+ "CONTAINER",
+ "SEALED",
+ "ALLOW_FIELD_EFFECT",
+ "SHORT",
+ "RUBBLE"
+ ],
+ "examine_action": "rubble"
+ },
+ {
+ "type": "furniture",
+ "id": "f_rubble_landfill",
+ "name": "pile of trashy rubble",
+ "description": "Trash topped with dirt and grass, it smells gross, but another man's trash…",
+ "symbol": "#",
+ "color": "green",
+ "move_cost_mod": 8,
+ "max_volume": 3000,
+ "required_str": -1,
+ "flags": [
+ "TRANSPARENT",
+ "UNSTABLE",
+ "ROUGH",
+ "PLACE_ITEM",
+ "MOUNTABLE",
+ "CONTAINER",
+ "SEALED",
+ "ALLOW_FIELD_EFFECT",
+ "SHORT",
+ "RUBBLE"
+ ],
+ "examine_action": "rubble"
+ },
+ {
+ "type": "furniture",
+ "id": "f_wreckage",
+ "name": "metal wreckage",
+ "description": "Pile of various bent and twisted metals.",
+ "symbol": "#",
+ "color": "cyan",
+ "move_cost_mod": 6,
+ "max_volume": 3000,
+ "required_str": -1,
+ "flags": [
+ "TRANSPARENT",
+ "UNSTABLE",
+ "ROUGH",
+ "SHARP",
+ "PLACE_ITEM",
+ "MOUNTABLE",
+ "CONTAINER",
+ "SEALED",
+ "ALLOW_FIELD_EFFECT",
+ "SHORT",
+ "RUBBLE"
+ ],
+ "examine_action": "rubble"
+ },
+ {
+ "type": "furniture",
+ "id": "f_ash",
+ "name": "pile of ash",
+ "symbol": "#",
+ "description": "Some ash, from wood or possibly bodies.",
+ "color": "light_gray",
+ "move_cost_mod": 0,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "NOCOLLIDE", "CONTAINER", "SEALED", "PLACE_ITEM", "RUBBLE" ],
+ "examine_action": "rubble"
+ },
+ {
+ "type": "furniture",
+ "id": "f_boulder_small",
+ "name": "small boulder",
+ "description": "Blocking your path. Should be easy to move. It can be used as a primitive anvil.",
+ "symbol": "o",
+ "color": "dark_gray",
+ "move_cost_mod": 3,
+ "coverage": 30,
+ "required_str": 10,
+ "crafting_pseudo_item": "boulder_anvil",
+ "flags": [ "TRANSPARENT", "MINEABLE", "UNSTABLE", "MOUNTABLE", "TINY" ],
+ "bash": {
+ "str_min": 16,
+ "str_max": 40,
+ "sound": "smash!",
+ "sound_fail": "thump.",
+ "items": [ { "item": "rock", "count": [ 1, 6 ] }, { "item": "sharp_rock", "count": [ 0, 2 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_boulder_medium",
+ "name": "medium boulder",
+ "description": "Blocking your path. It'll be a struggle to move. It can be used as a primitive anvil.",
+ "symbol": "0",
+ "color": "dark_gray",
+ "move_cost_mod": 6,
+ "coverage": 45,
+ "required_str": 16,
+ "crafting_pseudo_item": "boulder_anvil",
+ "flags": [ "NOITEM", "TRANSPARENT", "MINEABLE", "UNSTABLE", "MOUNTABLE", "SHORT", "BASHABLE" ],
+ "bash": {
+ "str_min": 32,
+ "str_max": 80,
+ "sound": "smash!",
+ "sound_fail": "thump.",
+ "items": [ { "item": "rock", "count": [ 5, 11 ] }, { "item": "sharp_rock", "count": [ 1, 4 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_boulder_large",
+ "name": "large boulder",
+ "description": "Now how are you going to move this?",
+ "symbol": "O",
+ "color": "dark_gray",
+ "move_cost_mod": -1,
+ "coverage": 65,
+ "required_str": 32,
+ "flags": [ "NOITEM", "MINEABLE", "BASHABLE", "BLOCK_WIND" ],
+ "bash": {
+ "str_min": 64,
+ "str_max": 160,
+ "sound": "smash!",
+ "sound_fail": "thump.",
+ "items": [
+ { "item": "rock", "count": [ 10, 22 ] },
+ { "item": "sharp_rock", "count": [ 3, 7 ] },
+ { "item": "material_limestone", "charges": [ 2, 5 ], "prob": 30 },
+ { "item": "material_rocksalt", "count": [ 0, 1 ], "prob": 10 },
+ { "item": "material_rhodonite", "count": [ 0, 1 ], "prob": 1 },
+ { "item": "material_zincite", "count": [ 0, 5 ], "prob": 2 }
+ ]
+ }
+ }
+]
diff --git a/data/json/furniture_and_terrain/furniture-tools.json b/data/json/furniture_and_terrain/furniture-tools.json
index 4075ca0343aa6..5bd4fad664b52 100644
--- a/data/json/furniture_and_terrain/furniture-tools.json
+++ b/data/json/furniture_and_terrain/furniture-tools.json
@@ -878,5 +878,233 @@
"sound_fail": "clang!",
"items": [ { "item": "scrap", "count": [ 1, 3 ] }, { "item": "pipe", "count": [ 1, 3 ] } ]
}
+ },
+ {
+ "id": "f_hanging_meathook",
+ "type": "furniture",
+ "name": "hanging meathook",
+ "description": "A hefty hook suspended from a chain for stringing up corpses.",
+ "symbol": "g",
+ "required_str": -1,
+ "move_cost_mod": 2,
+ "color": "light_gray",
+ "deconstruct": { "items": [ { "item": "grip_hook", "count": 1 }, { "item": "chain", "count": 1 } ] },
+ "flags": [ "TRANSPARENT", "BUTCHER_EQ" ]
+ },
+ {
+ "type": "furniture",
+ "id": "f_wind_mill",
+ "name": "wind mill",
+ "description": "A small wind-powered mill that can convert starchy products into flour.",
+ "symbol": "T",
+ "bgcolor": "red",
+ "move_cost_mod": 2,
+ "required_str": -1,
+ "examine_action": "quern_examine",
+ "flags": [ "SEALED", "ALLOW_FIELD_EFFECT", "CONTAINER", "NOITEM", "BLOCKSDOOR" ],
+ "deconstruct": { "items": [ { "item": "wind_mill", "count": 1 } ] },
+ "bash": {
+ "str_min": 16,
+ "str_max": 50,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "items": [
+ { "item": "scrap", "count": [ 4, 8 ] },
+ { "item": "pipe", "count": [ 1, 3 ] },
+ { "item": "sheet_metal_small", "count": [ 4, 8 ] },
+ { "item": "rock", "count": [ 8, 15 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_wind_mill_active",
+ "name": "active wind mill",
+ "description": "A small wind-powered mill that can convert starchy products into flour. Its brake has been removed and it is turning.",
+ "symbol": "T",
+ "bgcolor": "red",
+ "move_cost_mod": 2,
+ "required_str": -1,
+ "examine_action": "quern_examine",
+ "flags": [ "SEALED", "ALLOW_FIELD_EFFECT", "CONTAINER", "NOITEM", "BLOCKSDOOR" ],
+ "deconstruct": { "items": [ { "item": "wind_mill", "count": 1 } ] },
+ "bash": {
+ "str_min": 16,
+ "str_max": 50,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "items": [
+ { "item": "scrap", "count": [ 4, 8 ] },
+ { "item": "pipe", "count": [ 1, 3 ] },
+ { "item": "sheet_metal_small", "count": [ 4, 8 ] },
+ { "item": "rock", "count": [ 8, 15 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_water_mill",
+ "name": "water mill",
+ "description": "A small water-powered mill that can convert starchy products into flour.",
+ "symbol": "*",
+ "bgcolor": "red",
+ "move_cost_mod": 2,
+ "required_str": -1,
+ "examine_action": "quern_examine",
+ "flags": [ "SEALED", "ALLOW_FIELD_EFFECT", "CONTAINER", "NOITEM", "BLOCKSDOOR" ],
+ "deconstruct": { "items": [ { "item": "water_mill", "count": 1 } ] },
+ "bash": {
+ "str_min": 12,
+ "str_max": 50,
+ "sound": "smash!",
+ "sound_fail": "whump.",
+ "items": [
+ { "item": "2x4", "count": [ 1, 5 ] },
+ { "item": "nail", "charges": [ 5, 15 ] },
+ { "item": "splinter", "count": [ 20, 30 ] },
+ { "item": "sheet_metal_small", "count": [ 2, 3 ] },
+ { "item": "scrap", "count": [ 3, 5 ] },
+ { "item": "rock", "count": [ 8, 15 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_water_mill_active",
+ "name": "active water mill",
+ "description": "A small water-powered mill that can convert starchy products into flour. Its brake has been removed and it is turning.",
+ "symbol": "*",
+ "bgcolor": "red",
+ "move_cost_mod": 2,
+ "required_str": -1,
+ "examine_action": "quern_examine",
+ "flags": [ "SEALED", "ALLOW_FIELD_EFFECT", "CONTAINER", "NOITEM", "BLOCKSDOOR" ],
+ "deconstruct": { "items": [ { "item": "water_mill", "count": 1 } ] },
+ "bash": {
+ "str_min": 12,
+ "str_max": 50,
+ "sound": "smash!",
+ "sound_fail": "whump.",
+ "items": [
+ { "item": "2x4", "count": [ 1, 5 ] },
+ { "item": "nail", "charges": [ 5, 15 ] },
+ { "item": "splinter", "count": [ 20, 30 ] },
+ { "item": "sheet_metal_small", "count": [ 2, 3 ] },
+ { "item": "scrap", "count": [ 3, 5 ] },
+ { "item": "rock", "count": [ 8, 15 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_aut_gas_console",
+ "name": "automated gas console",
+ "description": "Automated gas flow control console.",
+ "symbol": "9",
+ "color": "blue",
+ "move_cost_mod": -1,
+ "coverage": 40,
+ "required_str": 25,
+ "flags": [ "SEALED", "ALARMED", "BLOCKSDOOR" ],
+ "examine_action": "pay_gas",
+ "bash": { "str_min": 7, "str_max": 30, "sound": "glass breaking!", "sound_fail": "whack!", "furn_set": "f_aut_gas_console_o" }
+ },
+ {
+ "type": "furniture",
+ "id": "f_aut_gas_console_o",
+ "name": "broken automated gas console",
+ "description": "Automated gas flow control console. Broken. This is not a good thing.",
+ "symbol": "9",
+ "color": "dark_gray",
+ "move_cost_mod": -1,
+ "coverage": 40,
+ "required_str": 20,
+ "flags": [ "BLOCKSDOOR" ],
+ "bash": {
+ "str_min": 5,
+ "str_max": 45,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "items": [
+ { "item": "scrap", "count": [ 2, 8 ] },
+ { "item": "steel_chunk", "count": [ 0, 3 ] },
+ { "item": "hose", "count": 1 },
+ { "item": "cu_pipe", "count": [ 1, 4 ] },
+ { "item": "scrap_copper", "count": [ 0, 2 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_vending_reinforced",
+ "name": "reinforced vending machine",
+ "description": "A bit tougher to crack open than regular vending machines. That just makes it all the sweeter a target, doesn't it?",
+ "symbol": "{",
+ "color": "light_red",
+ "move_cost_mod": -1,
+ "coverage": 90,
+ "required_str": 30,
+ "flags": [ "SEALED", "PLACE_ITEM", "ALARMED", "CONTAINER", "BLOCKSDOOR", "FLAMMABLE_HARD", "MINEABLE" ],
+ "examine_action": "vending",
+ "bash": {
+ "str_min": 150,
+ "str_max": 520,
+ "sound": "glass breaking!",
+ "sound_fail": "whack!",
+ "furn_set": "f_vending_o",
+ "items": [
+ { "item": "glass_shard", "count": [ 8, 25 ] },
+ { "item": "sheet_metal", "count": [ 0, 2 ] },
+ { "item": "steel_chunk", "count": [ 1, 5 ] }
+ ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_vending_c",
+ "name": "vending machine",
+ "symbol": "{",
+ "description": "Buy stuff with a cash card.",
+ "color": "light_cyan",
+ "move_cost_mod": -1,
+ "coverage": 90,
+ "required_str": 12,
+ "flags": [ "SEALED", "PLACE_ITEM", "ALARMED", "CONTAINER", "BLOCKSDOOR", "MINEABLE" ],
+ "examine_action": "vending",
+ "bash": {
+ "str_min": 20,
+ "str_max": 40,
+ "sound": "glass breaking!",
+ "sound_fail": "whack!",
+ "sound_vol": 16,
+ "sound_fail_vol": 12,
+ "furn_set": "f_vending_o",
+ "items": [ { "item": "glass_shard", "count": [ 25, 50 ] } ]
+ }
+ },
+ {
+ "type": "furniture",
+ "id": "f_vending_o",
+ "name": "broken vending machine",
+ "description": "Ponder if you could buy stuff, as it's broken. Maybe if you broke it more, you wouldn't need to pay at all!",
+ "symbol": "{",
+ "color": "dark_gray",
+ "move_cost_mod": -1,
+ "coverage": 90,
+ "required_str": 12,
+ "flags": [ "PLACE_ITEM", "CONTAINER", "BLOCKSDOOR", "MINEABLE" ],
+ "bash": {
+ "str_min": 30,
+ "str_max": 50,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "items": [
+ { "item": "scrap", "count": [ 2, 8 ] },
+ { "item": "steel_chunk", "count": [ 0, 3 ] },
+ { "item": "hose", "count": 1 },
+ { "item": "cu_pipe", "count": [ 1, 4 ] },
+ { "item": "scrap_copper", "count": [ 0, 2 ] }
+ ]
+ }
}
]
diff --git a/data/json/furniture_and_terrain/furniture.json b/data/json/furniture_and_terrain/furniture.json
deleted file mode 100644
index e75a6ff32db25..0000000000000
--- a/data/json/furniture_and_terrain/furniture.json
+++ /dev/null
@@ -1,2012 +0,0 @@
-[
- {
- "type": "furniture",
- "id": "f_rubble",
- "name": "pile of rubble",
- "symbol": "^",
- "description": "Pile of various metals, bricks, and other building materials. You could clear it with a shovel.",
- "color": "light_gray",
- "move_cost_mod": 6,
- "max_volume": 3000,
- "required_str": -1,
- "flags": [
- "TRANSPARENT",
- "UNSTABLE",
- "ROUGH",
- "PLACE_ITEM",
- "MOUNTABLE",
- "CONTAINER",
- "SEALED",
- "ALLOW_FIELD_EFFECT",
- "TINY",
- "RUBBLE"
- ],
- "examine_action": "rubble"
- },
- {
- "type": "furniture",
- "id": "f_rubble_rock",
- "name": "pile of rocky rubble",
- "description": "Pile of rocks. Useless?",
- "symbol": "^",
- "color": "dark_gray",
- "move_cost_mod": 6,
- "max_volume": 3000,
- "required_str": -1,
- "flags": [
- "TRANSPARENT",
- "UNSTABLE",
- "ROUGH",
- "PLACE_ITEM",
- "MOUNTABLE",
- "CONTAINER",
- "SEALED",
- "ALLOW_FIELD_EFFECT",
- "SHORT",
- "RUBBLE"
- ],
- "examine_action": "rubble"
- },
- {
- "type": "furniture",
- "id": "f_rubble_landfill",
- "name": "pile of trashy rubble",
- "description": "Trash topped with dirt and grass, it smells gross, but another man's trash...",
- "symbol": "#",
- "color": "green",
- "move_cost_mod": 8,
- "max_volume": 3000,
- "required_str": -1,
- "flags": [
- "TRANSPARENT",
- "UNSTABLE",
- "ROUGH",
- "PLACE_ITEM",
- "MOUNTABLE",
- "CONTAINER",
- "SEALED",
- "ALLOW_FIELD_EFFECT",
- "SHORT",
- "RUBBLE"
- ],
- "examine_action": "rubble"
- },
- {
- "type": "furniture",
- "id": "f_wreckage",
- "name": "metal wreckage",
- "description": "Pile of various bent and twisted metals.",
- "symbol": "#",
- "color": "cyan",
- "move_cost_mod": 6,
- "max_volume": 3000,
- "required_str": -1,
- "flags": [
- "TRANSPARENT",
- "UNSTABLE",
- "ROUGH",
- "SHARP",
- "PLACE_ITEM",
- "MOUNTABLE",
- "CONTAINER",
- "SEALED",
- "ALLOW_FIELD_EFFECT",
- "SHORT",
- "RUBBLE"
- ],
- "examine_action": "rubble"
- },
- {
- "type": "furniture",
- "id": "f_ash",
- "name": "pile of ash",
- "symbol": "#",
- "description": "Some ash, from wood or possibly bodies.",
- "color": "light_gray",
- "move_cost_mod": 0,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "NOCOLLIDE", "CONTAINER", "SEALED", "PLACE_ITEM", "RUBBLE" ],
- "examine_action": "rubble"
- },
- {
- "type": "furniture",
- "id": "f_bulletin",
- "name": "bulletin board",
- "description": "A big, cork bulletin board capable of sporting various notices. Pin some notes for other survivors to read.",
- "symbol": "6",
- "color": "blue",
- "move_cost_mod": -1,
- "coverage": 75,
- "required_str": -1,
- "flags": [ "FLAMMABLE", "NOITEM", "ORGANIC", "TRANSPARENT" ],
- "examine_action": "bulletin_board",
- "deconstruct": { "items": [ { "item": "2x4", "count": 4 }, { "item": "nail", "charges": [ 4, 8 ] } ] },
- "bash": {
- "str_min": 3,
- "str_max": 40,
- "sound": "crunch!",
- "sound_fail": "whump.",
- "items": [
- { "item": "2x4", "count": [ 0, 3 ] },
- { "item": "nail", "charges": [ 4, 6 ] },
- { "item": "splinter", "count": [ 1, 4 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_sign",
- "name": "sign",
- "symbol": "P",
- "description": "Read it. Warnings ahead.",
- "color": "brown",
- "examine_action": "sign",
- "move_cost_mod": 1,
- "coverage": 35,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "SIGN" ],
- "deconstruct": { "items": [ { "item": "2x4", "count": 3 }, { "item": "nail", "charges": [ 2, 5 ] } ] },
- "bash": {
- "str_min": 6,
- "str_max": 40,
- "sound": "smash!",
- "sound_fail": "whump.",
- "items": [ { "item": "2x4", "count": [ 1, 2 ] }, { "item": "nail", "charges": [ 2, 4 ] }, { "item": "splinter", "count": 2 } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_bench",
- "name": "bench",
- "symbol": "#",
- "description": "Hobo bed. Airy. Use at your own risk.",
- "color": "brown",
- "move_cost_mod": 1,
- "coverage": 35,
- "comfort": 1,
- "floor_bedding_warmth": -1500,
- "bonus_fire_warmth_feet": 1000,
- "required_str": 5,
- "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "SHORT", "CAN_SIT" ],
- "max_volume": 4000,
- "deconstruct": { "items": [ { "item": "2x4", "count": 4 }, { "item": "nail", "charges": [ 6, 10 ] } ] },
- "bash": {
- "str_min": 12,
- "str_max": 40,
- "sound": "smash!",
- "sound_fail": "whump.",
- "items": [ { "item": "2x4", "count": [ 1, 3 ] }, { "item": "nail", "charges": [ 2, 6 ] }, { "item": "splinter", "count": 1 } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_table",
- "name": "table",
- "description": "Sit down when you eat!",
- "symbol": "#",
- "color": "red",
- "move_cost_mod": 2,
- "coverage": 50,
- "required_str": 5,
- "max_volume": 4000,
- "flags": [ "TRANSPARENT", "FLAMMABLE", "ORGANIC", "MOUNTABLE", "SHORT", "FLAT_SURF" ],
- "deconstruct": {
- "items": [ { "item": "2x4", "count": 4 }, { "item": "wood_panel", "count": 1 }, { "item": "nail", "charges": [ 6, 8 ] } ]
- },
- "bash": {
- "str_min": 12,
- "str_max": 50,
- "sound": "smash!",
- "sound_fail": "whump.",
- "items": [
- { "item": "2x4", "count": [ 2, 4 ] },
- { "item": "wood_panel", "count": [ 0, 1 ] },
- { "item": "nail", "charges": [ 4, 8 ] },
- { "item": "splinter", "count": 1 }
- ]
- },
- "examine_action": "workbench",
- "workbench": { "multiplier": 1.1, "mass": 200000, "volume": "75L" }
- },
- {
- "type": "furniture",
- "id": "f_rack_coat",
- "name": "coat rack",
- "description": "A hooked rack for hanging jackets and hats.",
- "symbol": "Y",
- "color": "brown",
- "move_cost_mod": -1,
- "coverage": 30,
- "required_str": 4,
- "flags": [ "TRANSPARENT", "FLAMMABLE", "PLACE_ITEM", "BLOCKSDOOR", "MOUNTABLE" ],
- "deconstruct": { "items": [ { "item": "nail", "charges": [ 2, 6 ] }, { "item": "2x4", "count": 2 } ] },
- "max_volume": 120,
- "bash": {
- "str_min": 6,
- "str_max": 30,
- "sound": "smash!",
- "sound_fail": "whump.",
- "items": [ { "item": "splinter", "count": [ 3, 8 ] }, { "item": "nail", "charges": [ 1, 3 ] }, { "item": "2x4", "count": 1 } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_sign",
- "name": "sign",
- "symbol": "P",
- "description": "Read it. Warnings ahead.",
- "color": "brown",
- "examine_action": "sign",
- "move_cost_mod": 1,
- "coverage": 35,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "SIGN" ],
- "deconstruct": { "items": [ { "item": "2x4", "count": 3 }, { "item": "nail", "charges": [ 2, 5 ] } ] },
- "bash": {
- "str_min": 6,
- "str_max": 40,
- "sound": "smash!",
- "sound_fail": "whump.",
- "items": [ { "item": "2x4", "count": [ 1, 2 ] }, { "item": "nail", "charges": [ 2, 4 ] }, { "item": "splinter", "count": 2 } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_sign_warning",
- "name": "warning sign",
- "symbol": "P",
- "description": "A triangle-shaped sign on a post meant to indicate something important or hazard.",
- "color": "red",
- "examine_action": "sign",
- "looks_like": "f_sign",
- "move_cost_mod": 1,
- "coverage": 35,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "SIGN" ],
- "deconstruct": { "items": [ { "item": "2x4", "count": 3 }, { "item": "nail", "charges": [ 2, 5 ] } ] },
- "bash": {
- "str_min": 6,
- "str_max": 40,
- "sound": "smash!",
- "sound_fail": "whump.",
- "items": [ { "item": "2x4", "count": [ 1, 2 ] }, { "item": "nail", "charges": [ 2, 4 ] }, { "item": "splinter", "count": 2 } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_bigmirror",
- "name": "standing mirror",
- "symbol": "{",
- "description": "Lookin' good - is that blood?",
- "color": "white",
- "move_cost_mod": 2,
- "coverage": 80,
- "required_str": 5,
- "flags": [ "NOITEM", "BLOCKSDOOR" ],
- "bash": {
- "str_min": 5,
- "str_max": 16,
- "sound": "glass breaking",
- "sound_fail": "whack!",
- "sound_vol": 16,
- "furn_set": "f_bigmirror_b",
- "items": [ { "item": "glass_shard", "count": [ 25, 50 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_bigmirror_b",
- "name": "broken standing mirror",
- "description": "You could look at yourself, if the mirror wasn't covered in cracks and fractures.",
- "symbol": "{",
- "color": "light_gray",
- "move_cost_mod": 2,
- "coverage": 80,
- "required_str": 5,
- "flags": [ "NOITEM", "BLOCKSDOOR" ],
- "bash": {
- "str_min": 8,
- "str_max": 30,
- "sound": "metal screeching!",
- "sound_fail": "clang!",
- "items": [ { "item": "scrap", "count": [ 2, 4 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_vending_c",
- "name": "vending machine",
- "symbol": "{",
- "description": "Buy stuff with a cash card.",
- "color": "light_cyan",
- "move_cost_mod": -1,
- "coverage": 90,
- "required_str": 12,
- "flags": [ "SEALED", "PLACE_ITEM", "ALARMED", "CONTAINER", "BLOCKSDOOR", "MINEABLE" ],
- "examine_action": "vending",
- "bash": {
- "str_min": 20,
- "str_max": 40,
- "sound": "glass breaking!",
- "sound_fail": "whack!",
- "sound_vol": 16,
- "sound_fail_vol": 12,
- "furn_set": "f_vending_o",
- "items": [ { "item": "glass_shard", "count": [ 25, 50 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_vending_o",
- "name": "broken vending machine",
- "description": "Ponder if you could buy stuff, as it's broken. Maybe if you broke it more, you wouldn't need to pay at all!",
- "symbol": "{",
- "color": "dark_gray",
- "move_cost_mod": -1,
- "coverage": 90,
- "required_str": 12,
- "flags": [ "PLACE_ITEM", "CONTAINER", "BLOCKSDOOR", "MINEABLE" ],
- "bash": {
- "str_min": 30,
- "str_max": 50,
- "sound": "metal screeching!",
- "sound_fail": "clang!",
- "items": [
- { "item": "scrap", "count": [ 2, 8 ] },
- { "item": "steel_chunk", "count": [ 0, 3 ] },
- { "item": "hose", "count": 1 },
- { "item": "cu_pipe", "count": [ 1, 4 ] },
- { "item": "scrap_copper", "count": [ 0, 2 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_dumpster",
- "name": "dumpster",
- "description": "Stores trash. Doesn't get picked up anymore. Note the smell.",
- "symbol": "{",
- "color": "green",
- "move_cost_mod": 3,
- "coverage": 70,
- "required_str": 16,
- "flags": [ "CONTAINER", "PLACE_ITEM", "BLOCKSDOOR", "HIDE_PLACE", "NO_SIGHT" ],
- "bash": {
- "str_min": 8,
- "str_max": 45,
- "sound": "metal screeching!",
- "sound_fail": "clang!",
- "items": [
- { "item": "scrap", "count": [ 2, 8 ] },
- { "item": "steel_chunk", "count": [ 1, 3 ] },
- { "item": "pipe", "count": [ 1, 2 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_canvas_wall",
- "name": "canvas wall",
- "description": "A wall made of stretched, waterproof cloth.",
- "symbol": "#",
- "color": "blue",
- "move_cost_mod": -1,
- "coverage": 95,
- "required_str": -1,
- "flags": [ "FLAMMABLE_HARD", "NOITEM", "BLOCK_WIND" ],
- "bash": {
- "str_min": 1,
- "str_max": 8,
- "sound": "rrrrip!",
- "sound_fail": "slap!",
- "sound_vol": 8,
- "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
- }
- },
- {
- "type": "furniture",
- "id": "f_large_canvas_wall",
- "name": "canvas wall",
- "description": "A wall made of stretched, heavy-duty, waterproof cloth.",
- "symbol": "#",
- "color": "blue",
- "move_cost_mod": -1,
- "coverage": 95,
- "required_str": -1,
- "flags": [ "FLAMMABLE_HARD", "NOITEM", "BLOCK_WIND" ],
- "bash": {
- "str_min": 1,
- "str_max": 8,
- "sound": "rrrrip!",
- "sound_fail": "slap!",
- "sound_vol": 8,
- "collapse_radius": 2,
- "tent_centers": [ "f_center_groundsheet" ]
- }
- },
- {
- "type": "furniture",
- "id": "f_canvas_door",
- "name": "canvas flap",
- "description": "This canvas flap door could be pulled aside.",
- "symbol": "+",
- "color": "blue",
- "move_cost_mod": -1,
- "coverage": 95,
- "required_str": -1,
- "flags": [ "FLAMMABLE_HARD", "NOITEM", "DOOR", "BLOCK_WIND" ],
- "open": "f_canvas_door_o",
- "bash": {
- "str_min": 1,
- "str_max": 8,
- "sound": "rrrrip!",
- "sound_fail": "slap!",
- "sound_vol": 8,
- "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
- }
- },
- {
- "type": "furniture",
- "id": "f_canvas_door_o",
- "name": "open canvas flap",
- "description": "This canvas flap door has been pulled aside.",
- "symbol": ".",
- "color": "blue",
- "move_cost_mod": 0,
- "required_str": -1,
- "flags": [ "TRANSPARENT" ],
- "close": "f_canvas_door",
- "bash": {
- "str_min": 1,
- "str_max": 8,
- "sound": "rrrrip!",
- "sound_fail": "slap!",
- "sound_vol": 8,
- "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet", "f_center_groundsheet" ]
- }
- },
- {
- "type": "furniture",
- "id": "f_large_canvas_door",
- "name": "canvas flap",
- "description": "This heavy canvas flap door could be pulled aside.",
- "symbol": "+",
- "color": "blue",
- "move_cost_mod": -1,
- "coverage": 95,
- "required_str": -1,
- "flags": [ "FLAMMABLE_HARD", "NOITEM", "DOOR", "BLOCK_WIND" ],
- "open": "f_large_canvas_door_o",
- "bash": {
- "str_min": 1,
- "str_max": 8,
- "sound": "rrrrip!",
- "sound_fail": "slap!",
- "sound_vol": 8,
- "collapse_radius": 2,
- "tent_centers": [ "f_center_groundsheet" ]
- }
- },
- {
- "type": "furniture",
- "id": "f_large_canvas_door_o",
- "name": "open canvas flap",
- "description": "This heavy canvas flap door has been pulled aside.",
- "symbol": ".",
- "color": "blue",
- "move_cost_mod": 0,
- "required_str": -1,
- "flags": [ "TRANSPARENT" ],
- "close": "f_large_canvas_door",
- "bash": {
- "str_min": 1,
- "str_max": 8,
- "sound": "rrrrip!",
- "sound_fail": "slap!",
- "sound_vol": 8,
- "collapse_radius": 2,
- "tent_centers": [ "f_center_groundsheet" ]
- }
- },
- {
- "type": "furniture",
- "id": "f_groundsheet",
- "name": "groundsheet",
- "description": "This plastic groundsheet could keep you dry.",
- "symbol": ";",
- "color": "green",
- "move_cost_mod": 0,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "INDOORS", "NOCOLLIDE" ],
- "examine_action": "portable_structure",
- "deployed_item": "tent_kit",
- "bash": {
- "str_min": 1,
- "str_max": 8,
- "sound": "rrrrip!",
- "sound_fail": "slap!",
- "sound_vol": 8,
- "items": [ { "item": "broketent" } ],
- "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
- }
- },
- {
- "type": "furniture",
- "id": "f_large_groundsheet",
- "name": "groundsheet",
- "description": "This large plastic groundsheet could keep you dry.",
- "symbol": ";",
- "color": "green",
- "move_cost_mod": 0,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "INDOORS", "NOCOLLIDE" ],
- "bash": {
- "str_min": 1,
- "str_max": 8,
- "sound": "rrrrip!",
- "sound_fail": "slap!",
- "sound_vol": 8,
- "collapse_radius": 2,
- "tent_centers": [ "f_center_groundsheet" ]
- }
- },
- {
- "type": "furniture",
- "id": "f_center_groundsheet",
- "name": "groundsheet",
- "description": "This plastic groundsheet could keep you dry.",
- "symbol": ";",
- "color": "green",
- "move_cost_mod": 0,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "INDOORS", "NOCOLLIDE" ],
- "examine_action": "portable_structure",
- "deployed_item": "large_tent_kit",
- "bash": {
- "str_min": 1,
- "str_max": 8,
- "sound": "rrrrip!",
- "sound_fail": "slap!",
- "sound_vol": 8,
- "collapse_radius": 2,
- "items": [ { "item": "largebroketent" } ],
- "tent_centers": [ "f_center_groundsheet" ]
- }
- },
- {
- "type": "furniture",
- "id": "f_fema_groundsheet",
- "name": "groundsheet",
- "description": "This plastic government-issue groundsheet could keep you dry, but was made by the lowest bidder.",
- "symbol": ";",
- "color": "green",
- "move_cost_mod": 0,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "INDOORS", "ORGANIC", "NOCOLLIDE" ],
- "bash": {
- "str_min": 1,
- "str_max": 8,
- "sound": "rrrrip!",
- "sound_fail": "slap!",
- "sound_vol": 8,
- "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
- }
- },
- {
- "type": "furniture",
- "id": "f_skin_wall",
- "name": "animalskin wall",
- "symbol": "#",
- "description": "Wall made out of animal skin. Either an amazing or horrifying sight.",
- "color": "brown",
- "move_cost_mod": -1,
- "coverage": 95,
- "required_str": -1,
- "flags": [ "FLAMMABLE_HARD", "NOITEM", "BLOCK_WIND" ],
- "bash": {
- "str_min": 1,
- "str_max": 8,
- "sound": "rrrrip!",
- "sound_fail": "slap!",
- "sound_vol": 8,
- "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
- }
- },
- {
- "type": "furniture",
- "id": "f_skin_door",
- "name": "animalskin flap",
- "description": "This animal skin flap could be pulled aside.",
- "symbol": "+",
- "color": "white",
- "move_cost_mod": -1,
- "coverage": 95,
- "required_str": -1,
- "flags": [ "FLAMMABLE_HARD", "NOITEM", "BLOCK_WIND" ],
- "open": "f_skin_door_o",
- "bash": {
- "str_min": 1,
- "str_max": 8,
- "sound": "rrrrip!",
- "sound_fail": "slap!",
- "sound_vol": 8,
- "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
- }
- },
- {
- "type": "furniture",
- "id": "f_skin_door_o",
- "name": "open animalskin flap",
- "description": "This animal skin flap has been pulled aside.",
- "symbol": ".",
- "color": "white",
- "move_cost_mod": 0,
- "required_str": -1,
- "flags": [ "TRANSPARENT" ],
- "close": "f_skin_door",
- "bash": {
- "str_min": 1,
- "str_max": 8,
- "sound": "rrrrip!",
- "sound_fail": "slap!",
- "sound_vol": 8,
- "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
- }
- },
- {
- "type": "furniture",
- "id": "f_skin_groundsheet",
- "name": "animalskin floor",
- "description": "This animal skin groundsheet could keep you dry.",
- "symbol": ";",
- "color": "brown",
- "move_cost_mod": 0,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "INDOORS", "NOCOLLIDE" ],
- "examine_action": "portable_structure",
- "deployed_item": "shelter_kit",
- "bash": {
- "str_min": 1,
- "str_max": 8,
- "sound": "rrrrip!",
- "sound_fail": "slap!",
- "sound_vol": 8,
- "items": [ { "item": "damaged_shelter_kit" } ],
- "tent_centers": [ "f_groundsheet", "f_fema_groundsheet", "f_skin_groundsheet" ]
- }
- },
- {
- "type": "furniture",
- "id": "f_statue",
- "name": "statue",
- "description": "A carved statue made of stone.",
- "symbol": "S",
- "color": "dark_gray",
- "move_cost_mod": -1,
- "coverage": 50,
- "required_str": 10,
- "flags": [ "PLACE_ITEM", "BLOCKSDOOR", "MINEABLE" ],
- "bash": {
- "str_min": 16,
- "str_max": 40,
- "sound": "smash!",
- "sound_fail": "thump.",
- "items": [ { "item": "rock", "count": [ 1, 6 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_mannequin",
- "name": "mannequin",
- "description": "Put clothes on it, talk to it. Who's around to judge you? Wait... did it just move?",
- "symbol": "@",
- "color": "brown",
- "move_cost_mod": 2,
- "coverage": 40,
- "required_str": 5,
- "flags": [ "PLACE_ITEM", "TRANSPARENT", "FLAMMABLE" ],
- "bash": {
- "str_min": 6,
- "str_max": 40,
- "sound": "smash!",
- "sound_fail": "whump.",
- "items": [ { "item": "splinter", "count": [ 9, 12 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_birdbath",
- "name": "birdbath",
- "description": "A decorative cement birdbath and pedestal.",
- "symbol": "o",
- "color": "light_gray",
- "move_cost_mod": -1,
- "required_str": 10,
- "flags": [ "PLACE_ITEM", "BLOCKSDOOR", "MINEABLE", "LIQUIDCONT" ],
- "bash": {
- "str_min": 16,
- "str_max": 40,
- "sound": "smash!",
- "sound_fail": "thump.",
- "items": [ { "item": "rock", "count": [ 1, 6 ] }, { "item": "rebar", "count": [ 1, 2 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_rotary_clothesline",
- "name": "rotary clothes dryer line",
- "description": "A umbrella shaped clothes line mounted on a pole.",
- "symbol": "X",
- "color": "white",
- "move_cost_mod": -2,
- "required_str": 10,
- "flags": [ "TRANSPARENT", "BLOCKSDOOR", "BASHABLE", "PLACE_ITEM" ],
- "deconstruct": {
- "items": [ { "item": "pipe", "count": 6 }, { "item": "steel_chunk", "count": [ 2, 6 ] }, { "item": "wire", "count": 10 } ]
- },
- "bash": {
- "str_min": 6,
- "str_max": 10,
- "sound": "smash!",
- "sound_fail": "clang!",
- "items": [ { "item": "pipe", "count": [ 1, 6 ] }, { "item": "wire", "count": [ 1, 2 ] }, { "item": "scrap", "count": [ 1, 6 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_solar_unit",
- "name": "mounted solar panel",
- "description": "A mounted solar panel.",
- "symbol": "#",
- "color": "yellow",
- "move_cost_mod": 2,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "BASHABLE" ],
- "deconstruct": {
- "items": [
- { "item": "scrap", "count": [ 4, 6 ] },
- { "item": "plastic_chunk", "count": [ 1, 2 ] },
- { "item": "steel_chunk", "count": 3 },
- { "item": "pipe", "count": 4 },
- { "item": "2x4", "count": 4 },
- { "item": "solar_panel", "count": 1 }
- ]
- },
- "bash": {
- "str_min": 10,
- "str_max": 20,
- "sound": "whack!",
- "sound_fail": "clang!",
- "items": [
- { "item": "solar_cell", "count": [ 1, 5 ] },
- { "item": "scrap", "count": [ 3, 6 ] },
- { "item": "amplifier", "prob": 50 },
- { "item": "cable", "charges": [ 10, 15 ] },
- { "item": "power_supply", "prob": 50 },
- { "item": "scrap", "count": [ 4, 6 ] },
- { "item": "plastic_chunk", "count": [ 1, 2 ] },
- { "item": "steel_chunk", "count": 3 }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_egg_sackbw",
- "name": "spider egg sack",
- "description": "Much too large, off-white egg sack. Kind of icky. Something IS moving in there.",
- "symbol": "O",
- "color": "white",
- "move_cost_mod": 3,
- "required_str": 6,
- "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "TINY" ],
- "examine_action": "egg_sackbw",
- "bash": { "str_min": 8, "str_max": 16, "sound": "splat!", "sound_fail": "whump.", "furn_set": "f_egg_sacke" }
- },
- {
- "type": "furniture",
- "id": "f_egg_sackcs",
- "name": "spider egg sack",
- "description": "Bulbous mass of spider eggs. More than kind of icky. Something IS moving in there.",
- "symbol": "O",
- "color": "white",
- "move_cost_mod": 3,
- "required_str": 6,
- "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "TINY" ],
- "examine_action": "egg_sackcs",
- "bash": { "str_min": 8, "str_max": 16, "sound": "splat!", "sound_fail": "whump.", "furn_set": "f_egg_sacke" }
- },
- {
- "type": "furniture",
- "id": "f_egg_sackws",
- "name": "spider egg sack",
- "description": "A horrifyingly oversized egg sack. Something IS moving in there. If you're seeing this, you're already too close to it.",
- "symbol": "O",
- "color": "yellow",
- "move_cost_mod": 3,
- "required_str": 6,
- "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "TINY" ],
- "examine_action": "egg_sackws",
- "bash": { "str_min": 4, "str_max": 8, "sound": "splat!", "sound_fail": "whump.", "furn_set": "f_egg_sacke" }
- },
- {
- "type": "furniture",
- "id": "f_egg_sacke",
- "name": "ruptured egg sack",
- "description": "Super icky. Spider stuff's spilling out.",
- "symbol": "X",
- "color": "white",
- "move_cost_mod": 3,
- "required_str": 6,
- "flags": [ "TRANSPARENT", "CONTAINER", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "TINY" ],
- "bash": { "str_min": 2, "str_max": 6, "sound": "splat!", "sound_fail": "whump." }
- },
- {
- "type": "furniture",
- "id": "f_vending_reinforced",
- "name": "reinforced vending machine",
- "description": "A bit tougher to crack open than regular vending machines. That just makes it all the sweeter a target, doesn't it?",
- "symbol": "{",
- "color": "light_red",
- "move_cost_mod": -1,
- "coverage": 90,
- "required_str": 30,
- "flags": [ "SEALED", "PLACE_ITEM", "ALARMED", "CONTAINER", "BLOCKSDOOR", "FLAMMABLE_HARD", "MINEABLE" ],
- "examine_action": "vending",
- "bash": {
- "str_min": 150,
- "str_max": 520,
- "sound": "glass breaking!",
- "sound_fail": "whack!",
- "furn_set": "f_vending_o",
- "items": [
- { "item": "glass_shard", "count": [ 8, 25 ] },
- { "item": "sheet_metal", "count": [ 0, 2 ] },
- { "item": "steel_chunk", "count": [ 1, 5 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_displaycase",
- "name": "display case",
- "description": "Display your stuff fancily and securely.",
- "symbol": "#",
- "color": "light_cyan",
- "move_cost_mod": 2,
- "coverage": 80,
- "required_str": 9,
- "flags": [ "TRANSPARENT", "SEALED", "PLACE_ITEM" ],
- "bash": {
- "str_min": 6,
- "str_max": 20,
- "sound": "glass breaking",
- "sound_fail": "whack!",
- "sound_vol": 16,
- "sound_fail_vol": 12,
- "furn_set": "f_displaycase_b",
- "items": [ { "item": "glass_shard", "count": [ 25, 50 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_displaycase_b",
- "name": "broken display case",
- "description": "Display your stuff. It'll get stolen.",
- "symbol": "#",
- "color": "light_gray",
- "move_cost_mod": 2,
- "coverage": 80,
- "required_str": 9,
- "flags": [ "TRANSPARENT", "PLACE_ITEM" ],
- "bash": {
- "str_min": 8,
- "str_max": 30,
- "sound": "crunch!",
- "sound_fail": "whump.",
- "items": [ { "item": "2x4", "count": [ 3, 6 ] }, { "item": "splinter", "count": [ 2, 4 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_standing_tank",
- "name": "standing tank",
- "description": "A large freestanding metal tank, useful for holding liquids.",
- "symbol": "O",
- "color": "light_gray",
- "move_cost_mod": -1,
- "coverage": 90,
- "required_str": -1,
- "flags": [ "BASHABLE", "CONTAINER", "DECONSTRUCT", "LIQUIDCONT", "NOITEM", "SEALED", "TRANSPARENT" ],
- "deconstruct": { "items": [ { "item": "metal_tank", "count": 4 }, { "item": "water_faucet", "count": 1 } ] },
- "examine_action": "keg",
- "keg_capacity": 1200,
- "bash": {
- "str_min": 10,
- "str_max": 20,
- "sound": "metal screeching!",
- "sound_fail": "clang!",
- "items": [ { "item": "scrap", "count": [ 8, 32 ] }, { "item": "water_faucet", "prob": 50 } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_canvas_floor",
- "name": "canvas floor",
- "description": "Flooring made out of stretched, waterproof cloth. Helps keep the dirt out of the tent.",
- "symbol": "#",
- "color": "white",
- "move_cost_mod": 0,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "FLAMMABLE", "PLACE_ITEM" ]
- },
- {
- "type": "furniture",
- "id": "f_robotic_arm",
- "name": "robotic arm",
- "description": "Automation! Science! Industry! Make a better horse! This robot arm promises to do it all. Except it's currently unpowered. You could remove the casing and retrieve the electronics through disassembly.",
- "symbol": "&",
- "bgcolor": "yellow",
- "move_cost_mod": 3,
- "required_str": 18,
- "flags": [ "TRANSPARENT", "MOUNTABLE" ],
- "deconstruct": {
- "items": [
- { "item": "processor", "prob": 75 },
- { "item": "RAM", "prob": 80 },
- { "item": "power_supply", "prob": 70 },
- { "item": "amplifier", "prob": 90 },
- { "item": "steel_chunk", "count": [ 1, 4 ] },
- { "item": "spring", "prob": 80 },
- { "item": "steel_lump", "prob": 60 },
- { "item": "sheet_metal", "prob": 50 },
- { "item": "motor", "prob": 60 }
- ]
- },
- "bash": {
- "str_min": 8,
- "str_max": 45,
- "sound": "smash!",
- "sound_fail": "thunk.",
- "items": [
- { "item": "processor", "prob": 15 },
- { "item": "RAM", "prob": 30 },
- { "item": "power_supply", "prob": 50 },
- { "item": "amplifier", "prob": 70 },
- { "item": "steel_chunk", "count": [ 1, 3 ] },
- { "item": "spring", "prob": 80 },
- { "item": "steel_lump", "prob": 50 },
- { "item": "sheet_metal", "prob": 30 },
- { "item": "scrap", "count": [ 2, 5 ] },
- { "item": "motor", "prob": 30 }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_aut_gas_console",
- "name": "automated gas console",
- "description": "Automated gas flow control console.",
- "symbol": "9",
- "color": "blue",
- "move_cost_mod": -1,
- "coverage": 40,
- "required_str": 25,
- "flags": [ "SEALED", "ALARMED", "BLOCKSDOOR" ],
- "examine_action": "pay_gas",
- "bash": { "str_min": 7, "str_max": 30, "sound": "glass breaking!", "sound_fail": "whack!", "furn_set": "f_aut_gas_console_o" }
- },
- {
- "type": "furniture",
- "id": "f_aut_gas_console_o",
- "name": "broken automated gas console",
- "description": "Automated gas flow control console. Broken. This is not a good thing.",
- "symbol": "9",
- "color": "dark_gray",
- "move_cost_mod": -1,
- "coverage": 40,
- "required_str": 20,
- "flags": [ "BLOCKSDOOR" ],
- "bash": {
- "str_min": 5,
- "str_max": 45,
- "sound": "metal screeching!",
- "sound_fail": "clang!",
- "items": [
- { "item": "scrap", "count": [ 2, 8 ] },
- { "item": "steel_chunk", "count": [ 0, 3 ] },
- { "item": "hose", "count": 1 },
- { "item": "cu_pipe", "count": [ 1, 4 ] },
- { "item": "scrap_copper", "count": [ 0, 2 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_boulder_small",
- "name": "small boulder",
- "description": "Blocking your path. Should be easy to move. It can be used as a primitive anvil.",
- "symbol": "o",
- "color": "dark_gray",
- "move_cost_mod": 3,
- "coverage": 30,
- "required_str": 10,
- "crafting_pseudo_item": "boulder_anvil",
- "flags": [ "TRANSPARENT", "MINEABLE", "UNSTABLE", "MOUNTABLE", "TINY" ],
- "bash": {
- "str_min": 16,
- "str_max": 40,
- "sound": "smash!",
- "sound_fail": "thump.",
- "items": [ { "item": "rock", "count": [ 1, 6 ] }, { "item": "sharp_rock", "count": [ 0, 2 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_boulder_medium",
- "name": "medium boulder",
- "description": "Blocking your path. It'll be a struggle to move. It can be used as a primitive anvil.",
- "symbol": "0",
- "color": "dark_gray",
- "move_cost_mod": 6,
- "coverage": 45,
- "required_str": 16,
- "crafting_pseudo_item": "boulder_anvil",
- "flags": [ "NOITEM", "TRANSPARENT", "MINEABLE", "UNSTABLE", "MOUNTABLE", "SHORT", "BASHABLE" ],
- "bash": {
- "str_min": 32,
- "str_max": 80,
- "sound": "smash!",
- "sound_fail": "thump.",
- "items": [ { "item": "rock", "count": [ 5, 11 ] }, { "item": "sharp_rock", "count": [ 1, 4 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_boulder_large",
- "name": "large boulder",
- "description": "Now how are you going to move this?",
- "symbol": "O",
- "color": "dark_gray",
- "move_cost_mod": -1,
- "coverage": 65,
- "required_str": 32,
- "flags": [ "NOITEM", "MINEABLE", "BASHABLE", "BLOCK_WIND" ],
- "bash": {
- "str_min": 64,
- "str_max": 160,
- "sound": "smash!",
- "sound_fail": "thump.",
- "items": [
- { "item": "rock", "count": [ 10, 22 ] },
- { "item": "sharp_rock", "count": [ 3, 7 ] },
- { "item": "material_limestone", "charges": [ 2, 5 ], "prob": 30 },
- { "item": "material_rocksalt", "count": [ 0, 1 ], "prob": 10 },
- { "item": "material_rhodonite", "count": [ 0, 1 ], "prob": 1 },
- { "item": "material_zincite", "count": [ 0, 5 ], "prob": 2 }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_slab",
- "name": "stone slab",
- "description": "A flat slab of heavy stone.",
- "symbol": "n",
- "color": "dark_gray",
- "move_cost_mod": 2,
- "coverage": 30,
- "required_str": 12,
- "crafting_pseudo_item": "boulder_anvil",
- "flags": [ "PLACE_ITEM", "BLOCKSDOOR", "TRANSPARENT", "ALLOW_FIELD_EFFECT", "MOUNTABLE", "SHORT", "MINEABLE" ],
- "bash": {
- "str_min": 20,
- "str_max": 40,
- "sound": "smash!",
- "sound_fail": "thump.",
- "items": [ { "item": "rock", "count": [ 2, 7 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_shackle",
- "name": "manacles",
- "description": "Chain serfs in your dungeon. All you need now is an iron ball to chain to it.",
- "symbol": "8",
- "color": "light_gray",
- "move_cost_mod": 1,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "ALLOW_FIELD_EFFECT", "MOUNTABLE", "SHORT" ],
- "bash": {
- "str_min": 18,
- "str_max": 40,
- "sound": "smash!",
- "sound_fail": "crack.",
- "items": [ { "item": "chain", "count": [ 0, 2 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_grave_head",
- "name": "headstone",
- "description": "Keeps the bodies.",
- "symbol": "_",
- "color": "light_gray",
- "move_cost_mod": 0,
- "required_str": -1,
- "crafting_pseudo_item": "boulder_anvil",
- "flags": [ "MINEABLE", "TRANSPARENT", "SHORT", "NOCOLLIDE", "ALLOW_FIELD_EFFECT", "MOUNTABLE", "PLACE_ITEM" ],
- "bash": {
- "str_min": 50,
- "str_max": 150,
- "sound": "crash!",
- "sound_fail": "thump!",
- "items": [ { "item": "rock", "count": [ 2, 4 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_grave_stone",
- "name": "gravestone",
- "description": "Keeps the bodies. More fancy.",
- "symbol": "^",
- "color": "light_gray",
- "move_cost_mod": 2,
- "coverage": 50,
- "required_str": -1,
- "crafting_pseudo_item": "boulder_anvil",
- "flags": [ "MINEABLE", "NOITEM", "TRANSPARENT", "MOUNTABLE", "ROUGH", "PLACE_ITEM" ],
- "bash": {
- "str_min": 60,
- "str_max": 160,
- "sound": "crash!",
- "sound_fail": "thump!",
- "items": [ { "item": "rock", "count": [ 8, 14 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_grave_stone_old",
- "name": "worn gravestone",
- "description": "A worn-out gravestone.",
- "symbol": "^",
- "color": "dark_gray",
- "move_cost_mod": 1.5,
- "coverage": 50,
- "required_str": -1,
- "flags": [ "MINEABLE", "NOITEM", "TRANSPARENT", "MOUNTABLE", "ROUGH", "PLACE_ITEM", "UNSTABLE" ],
- "bash": {
- "str_min": 40,
- "str_max": 120,
- "sound": "crash!",
- "sound_fail": "thump!",
- "items": [ { "item": "rock", "count": [ 5, 10 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_grave_monument",
- "name": "obelisk",
- "description": "Monument to pride.",
- "symbol": "$",
- "color": "black_white",
- "move_cost_mod": -1,
- "coverage": 55,
- "required_str": -1,
- "flags": [ "MINEABLE", "NOITEM" ],
- "bash": {
- "str_min": 80,
- "str_max": 180,
- "sound": "crash!",
- "sound_fail": "thunk!",
- "items": [ { "item": "rock", "count": [ 18, 30 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_camp_chair",
- "name": "camp chair",
- "symbol": "#",
- "looks_like": "f_chair",
- "description": "Sit down, have a drink. It can folded for easy transportation.",
- "color": "brown",
- "move_cost_mod": 1,
- "coverage": 35,
- "floor_bedding_warmth": -1000,
- "bonus_fire_warmth_feet": 1000,
- "required_str": 3,
- "deployed_item": "camp_chair",
- "examine_action": "deployed_furniture",
- "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC", "MOUNTABLE", "CAN_SIT" ],
- "max_volume": 3500,
- "deconstruct": { "items": [ { "item": "camp_chair", "count": 1 } ] }
- },
- {
- "type": "furniture",
- "id": "f_wind_mill",
- "name": "wind mill",
- "description": "A small wind-powered mill that can convert starchy products into flour.",
- "symbol": "T",
- "bgcolor": "red",
- "move_cost_mod": 2,
- "required_str": -1,
- "examine_action": "quern_examine",
- "flags": [ "SEALED", "ALLOW_FIELD_EFFECT", "CONTAINER", "NOITEM", "BLOCKSDOOR" ],
- "deconstruct": { "items": [ { "item": "wind_mill", "count": 1 } ] },
- "bash": {
- "str_min": 16,
- "str_max": 50,
- "sound": "metal screeching!",
- "sound_fail": "clang!",
- "items": [
- { "item": "scrap", "count": [ 4, 8 ] },
- { "item": "pipe", "count": [ 1, 3 ] },
- { "item": "sheet_metal_small", "count": [ 4, 8 ] },
- { "item": "rock", "count": [ 8, 15 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_wind_mill_active",
- "name": "active wind mill",
- "description": "A small wind-powered mill that can convert starchy products into flour. Its brake has been removed and it is turning.",
- "symbol": "T",
- "bgcolor": "red",
- "move_cost_mod": 2,
- "required_str": -1,
- "examine_action": "quern_examine",
- "flags": [ "SEALED", "ALLOW_FIELD_EFFECT", "CONTAINER", "NOITEM", "BLOCKSDOOR" ],
- "deconstruct": { "items": [ { "item": "wind_mill", "count": 1 } ] },
- "bash": {
- "str_min": 16,
- "str_max": 50,
- "sound": "metal screeching!",
- "sound_fail": "clang!",
- "items": [
- { "item": "scrap", "count": [ 4, 8 ] },
- { "item": "pipe", "count": [ 1, 3 ] },
- { "item": "sheet_metal_small", "count": [ 4, 8 ] },
- { "item": "rock", "count": [ 8, 15 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_water_mill",
- "name": "water mill",
- "description": "A small water-powered mill that can convert starchy products into flour.",
- "symbol": "*",
- "bgcolor": "red",
- "move_cost_mod": 2,
- "required_str": -1,
- "examine_action": "quern_examine",
- "flags": [ "SEALED", "ALLOW_FIELD_EFFECT", "CONTAINER", "NOITEM", "BLOCKSDOOR" ],
- "deconstruct": { "items": [ { "item": "water_mill", "count": 1 } ] },
- "bash": {
- "str_min": 12,
- "str_max": 50,
- "sound": "smash!",
- "sound_fail": "whump.",
- "items": [
- { "item": "2x4", "count": [ 1, 5 ] },
- { "item": "nail", "charges": [ 5, 15 ] },
- { "item": "splinter", "count": [ 20, 30 ] },
- { "item": "sheet_metal_small", "count": [ 2, 3 ] },
- { "item": "scrap", "count": [ 3, 5 ] },
- { "item": "rock", "count": [ 8, 15 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_water_mill_active",
- "name": "active water mill",
- "description": "A small water-powered mill that can convert starchy products into flour. Its brake has been removed and it is turning.",
- "symbol": "*",
- "bgcolor": "red",
- "move_cost_mod": 2,
- "required_str": -1,
- "examine_action": "quern_examine",
- "flags": [ "SEALED", "ALLOW_FIELD_EFFECT", "CONTAINER", "NOITEM", "BLOCKSDOOR" ],
- "deconstruct": { "items": [ { "item": "water_mill", "count": 1 } ] },
- "bash": {
- "str_min": 12,
- "str_max": 50,
- "sound": "smash!",
- "sound_fail": "whump.",
- "items": [
- { "item": "2x4", "count": [ 1, 5 ] },
- { "item": "nail", "charges": [ 5, 15 ] },
- { "item": "splinter", "count": [ 20, 30 ] },
- { "item": "sheet_metal_small", "count": [ 2, 3 ] },
- { "item": "scrap", "count": [ 3, 5 ] },
- { "item": "rock", "count": [ 8, 15 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_pillow_fort",
- "name": "pillow fort",
- "symbol": "^",
- "description": "A comfy place to hide from the world. Not very defensible, though.",
- "color": "white",
- "move_cost_mod": 3,
- "coverage": 90,
- "comfort": 4,
- "floor_bedding_warmth": 1000,
- "required_str": -1,
- "deconstruct": { "items": [ { "item": "pillow", "count": 19 }, { "item": "blanket", "count": 3 } ] },
- "max_volume": 4000,
- "flags": [
- "TRANSPARENT",
- "FLAMMABLE_ASH",
- "PLACE_ITEM",
- "ORGANIC",
- "REDUCE_SCENT",
- "EASY_DECONSTRUCT",
- "BASHABLE",
- "HIDE_PLACE",
- "NO_SIGHT"
- ],
- "bash": {
- "str_min": 1,
- "str_max": 1,
- "sound": "paf!",
- "sound_fail": "poof.",
- "items": [ { "item": "pillow", "count": 19 }, { "item": "blanket", "count": 3 } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_cardboard_fort",
- "name": "cardboard fort",
- "symbol": "^",
- "description": "A fort built by tipping a cardboard box on its side, lining it with blankets, and partly weather sealing it with a plastic sheet.",
- "color": "brown",
- "move_cost_mod": 3,
- "coverage": 95,
- "comfort": 4,
- "floor_bedding_warmth": 700,
- "required_str": 3,
- "deconstruct": {
- "items": [
- { "item": "box_large", "count": 1 },
- { "item": "plastic_sheet", "count": 1 },
- { "item": "blanket", "count": 2 },
- { "item": "pillow", "count": 4 }
- ]
- },
- "max_volume": 4000,
- "flags": [
- "TRANSPARENT",
- "FLAMMABLE_ASH",
- "PLACE_ITEM",
- "ORGANIC",
- "REDUCE_SCENT",
- "EASY_DECONSTRUCT",
- "BASHABLE",
- "HIDE_PLACE",
- "NO_SIGHT",
- "BLOCK_WIND"
- ],
- "bash": {
- "str_min": 4,
- "str_max": 15,
- "sound": "crumple!",
- "sound_fail": "thud.",
- "items": [ { "item": "paper", "count": [ 50, 100 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_cardboard_wall",
- "name": "cardboard wall",
- "symbol": "#",
- "bgcolor": "brown",
- "move_cost_mod": -1,
- "coverage": 100,
- "description": "This is a pile of cardboard boxes that have been filled with rags and junk and stacked together like bricks to form a wall.",
- "required_str": -1,
- "flags": [ "NOITEM", "BLOCKSDOOR", "FLAMMABLE_ASH", "ORGANIC", "EASY_DECONSTRUCT", "BLOCK_WIND" ],
- "deconstruct": {
- "items": [
- { "item": "box_large", "count": 1 },
- { "item": "box_medium", "count": 2 },
- { "item": "box_small", "count": 4 },
- { "item": "rag", "count": 50 },
- { "item": "paper", "count": 50 },
- { "item": "plastic_chunk", "count": 20 },
- { "item": "plastic_sheet", "count": 2 }
- ]
- },
- "bash": {
- "str_min": 8,
- "str_max": 30,
- "sound": "crash!",
- "sound_fail": "whump.",
- "items": [
- { "item": "box_large", "count": [ 0, 1 ] },
- { "item": "box_medium", "count": [ 0, 2 ] },
- { "item": "box_small", "count": [ 0, 4 ] },
- { "item": "rag", "count": [ 20, 50 ] },
- { "item": "paper", "count": [ 50, 150 ] },
- { "item": "plastic_chunk", "count": [ 5, 20 ] },
- { "item": "plastic_sheet", "count": [ 0, 2 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_cardboard_box",
- "name": "large cardboard box",
- "symbol": "X",
- "description": "A large cardboard box: this could be used to store things, or as a hiding place.",
- "color": "brown",
- "move_cost_mod": 7,
- "coverage": 90,
- "comfort": 1,
- "floor_bedding_warmth": 200,
- "required_str": 3,
- "deconstruct": { "items": [ { "item": "box_large", "count": 1 } ] },
- "max_volume": 6000,
- "deployed_item": "box_large",
- "examine_action": "deployed_furniture",
- "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "PLACE_ITEM", "ORGANIC", "EASY_DECONSTRUCT", "BASHABLE", "HIDE_PLACE", "NO_SIGHT" ],
- "bash": {
- "str_min": 2,
- "str_max": 15,
- "sound": "crumple!",
- "sound_fail": "thud.",
- "items": [ { "item": "paper", "charges": [ 50, 100 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_beaded_door",
- "name": "beaded curtain",
- "description": "This beaded curtain could be pulled aside.",
- "symbol": "+",
- "color": "pink",
- "looks_like": "f_canvas_door",
- "move_cost_mod": 6,
- "coverage": 90,
- "required_str": -1,
- "flags": [ "NOITEM", "DOOR", "PERMEABLE", "FLAMMABLE_ASH", "MOUNTABLE" ],
- "open": "f_beaded_door_o",
- "deconstruct": {
- "items": [ { "item": "stick_long", "count": 1 }, { "item": "string_36", "count": 20 }, { "item": "wooden_bead", "count": 2000 } ]
- },
- "bash": {
- "str_min": 1,
- "str_max": 1,
- "sound": "clickity clack...clack...clack",
- "sound_fail": "clickity clack...clack",
- "sound_vol": 15,
- "items": [
- { "item": "string_36", "count": [ 3, 15 ] },
- { "item": "stick_long", "count": 1 },
- { "item": "wooden_bead", "count": [ 200, 500 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_beaded_door_o",
- "name": "open beaded curtain",
- "description": "This beaded curtain has been pulled aside.",
- "symbol": ".",
- "color": "pink",
- "looks_like": "f_canvas_door_o",
- "move_cost_mod": 0,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "FLAT" ],
- "close": "f_beaded_door",
- "deconstruct": {
- "items": [ { "item": "stick_long", "count": 1 }, { "item": "string_36", "count": 20 }, { "item": "wooden_bead", "count": 2000 } ]
- },
- "bash": {
- "str_min": 1,
- "str_max": 1,
- "sound": "clickity clack...clack...clack!",
- "sound_fail": "clickity clack...clack",
- "sound_vol": 15,
- "items": [
- { "item": "string_36", "count": [ 3, 15 ] },
- { "item": "stick_long", "count": 1 },
- { "item": "wooden_bead", "count": [ 200, 500 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_filing_cabinet",
- "name": "filing cabinet",
- "looks_like": "f_rack",
- "description": "A set of drawers in a sturdy metal cabinet, used to hold files. It can be locked to protect important information. If you're lucky, there are often keys nearby.",
- "symbol": "}",
- "color": "dark_gray",
- "move_cost_mod": 2,
- "coverage": 70,
- "required_str": 7,
- "flags": [ "PLACE_ITEM", "TRANSPARENT", "CONTAINER", "BLOCKSDOOR", "MOUNTABLE" ],
- "deconstruct": {
- "items": [
- { "item": "sheet_metal", "count": [ 2, 6 ] },
- { "item": "scrap", "count": [ 2, 6 ] },
- { "item": "lock", "count": [ 0, 1 ] }
- ]
- },
- "max_volume": 800,
- "bash": {
- "str_min": 8,
- "str_max": 30,
- "sound": "metal screeching!",
- "sound_fail": "clang!",
- "items": [ { "item": "scrap", "count": [ 0, 6 ] }, { "item": "sheet_metal", "count": [ 0, 4 ] } ]
- }
- },
- {
- "type": "furniture",
- "id": "f_wardrobe",
- "name": "wardrobe",
- "looks_like": "f_dresser",
- "description": "A tall piece of furniture - basically a freestanding closet.",
- "symbol": "{",
- "color": "i_brown",
- "move_cost_mod": -1,
- "coverage": 85,
- "required_str": 9,
- "flags": [ "CONTAINER", "FLAMMABLE", "PLACE_ITEM", "ORGANIC", "BLOCKSDOOR", "MOUNTABLE" ],
- "deconstruct": {
- "items": [ { "item": "2x4", "count": 20 }, { "item": "nail", "charges": [ 16, 24 ] }, { "item": "pipe", "count": 2 } ]
- },
- "max_volume": 2000,
- "bash": {
- "str_min": 12,
- "str_max": 40,
- "sound": "smash!",
- "sound_fail": "whump.",
- "items": [
- { "item": "2x4", "count": [ 8, 12 ] },
- { "item": "nail", "charges": [ 8, 14 ] },
- { "item": "splinter", "count": [ 4, 10 ] },
- { "item": "pipe", "count": [ 0, 1 ] },
- { "item": "scrap", "count": [ 2, 5 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_robotic_assembler",
- "name": "robotic assembler",
- "looks_like": "f_robotic_arm",
- "description": "A durable and versatile robotic arm with a tool fitted to the end, for working on an assembly line.",
- "symbol": "3",
- "color": "magenta_cyan",
- "move_cost_mod": -1,
- "coverage": 35,
- "required_str": -1,
- "bash": {
- "str_min": 40,
- "str_max": 150,
- "sound_fail": "clang!",
- "items": [
- { "item": "processor", "count": [ 1, 2 ] },
- { "item": "RAM", "count": [ 4, 8 ] },
- { "item": "cable", "charges": [ 4, 6 ] },
- { "item": "small_lcd_screen", "count": [ 1, 2 ] },
- { "item": "e_scrap", "count": [ 5, 8 ] },
- { "item": "circuit", "count": [ 3, 5 ] },
- { "item": "power_supply", "count": [ 1, 2 ] },
- { "item": "amplifier", "count": [ 1, 2 ] },
- { "item": "plastic_chunk", "count": [ 10, 12 ] },
- { "item": "scrap", "count": [ 6, 8 ] }
- ]
- },
- "deconstruct": {
- "items": [
- { "item": "processor", "count": [ 2, 4 ] },
- { "item": "RAM", "count": [ 8, 16 ] },
- { "item": "cable", "charges": [ 8, 12 ] },
- { "item": "small_lcd_screen", "count": [ 2, 4 ] },
- { "item": "e_scrap", "count": [ 10, 16 ] },
- { "item": "circuit", "count": [ 6, 10 ] },
- { "item": "power_supply", "count": [ 2, 4 ] },
- { "item": "amplifier", "count": [ 2, 4 ] },
- { "item": "plastic_chunk", "count": [ 10, 12 ] },
- { "item": "scrap", "count": [ 6, 8 ] },
- { "item": "motor_small", "count": [ 0, 1 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_chemical_mixer",
- "description": "When chemicals need to be mixed in large quantities at just the right combinations and temperatures, this is the tool for the job.",
- "name": "chemical mixer",
- "symbol": "0",
- "color": "red_green",
- "move_cost_mod": -1,
- "coverage": 40,
- "required_str": 16,
- "bash": {
- "str_min": 40,
- "str_max": 150,
- "sound_fail": "clang!",
- "items": [
- { "item": "cable", "charges": [ 0, 4 ] },
- { "item": "scrap", "count": [ 8, 12 ] },
- { "item": "steel_chunk", "count": [ 2, 4 ] },
- { "item": "metal_tank_little", "count": [ 0, 2 ] },
- { "item": "jerrycan", "count": [ 0, 2 ] },
- { "item": "metal_tank", "count": [ 0, 2 ] }
- ]
- },
- "deconstruct": {
- "items": [
- { "item": "cable", "charges": [ 4, 8 ] },
- { "item": "steel_chunk", "count": [ 4, 6 ] },
- { "item": "scrap", "count": [ 12, 16 ] },
- { "item": "metal_tank_little", "count": [ 2, 4 ] },
- { "item": "jerrycan", "count": [ 2, 4 ] },
- { "item": "metal_tank", "count": [ 2, 4 ] },
- { "item": "motor_small", "count": 1 }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_floor_lamp",
- "name": "floor lamp",
- "symbol": "T",
- "looks_like": "f_rack_coat",
- "description": "A tall standing lamp, meant to plug into a wall and light up a room.",
- "color": "light_gray",
- "move_cost_mod": 2,
- "required_str": 1,
- "flags": [ "BLOCKSDOOR", "PLACE_ITEM", "EASY_DECONSTRUCT" ],
- "deconstruct": {
- "items": [
- { "item": "cable", "charges": [ 1, 2 ] },
- { "item": "amplifier", "count": [ 1, 4 ] },
- { "item": "light_bulb", "count": [ 1, 4 ] },
- { "item": "steel_lump", "count": 1 },
- { "item": "pipe", "count": 1 }
- ]
- },
- "bash": {
- "str_min": 12,
- "str_max": 40,
- "sound": "metal screeching!",
- "sound_fail": "bonk!",
- "items": [
- { "item": "scrap", "count": [ 1, 2 ] },
- { "item": "cable", "charges": [ 0, 1 ] },
- { "item": "e_scrap", "count": [ 0, 1 ] },
- { "item": "glass_shard", "count": [ 0, 8 ] },
- { "item": "pipe", "count": [ 0, 1 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_shredder",
- "name": "document shredder",
- "description": "It's not all about hiding government secrets, sometimes you just want to stop identity theft.",
- "symbol": "H",
- "bgcolor": "white",
- "move_cost_mod": 5,
- "required_str": 6,
- "looks_like": "f_filing_cabinet",
- "flags": [ "TRANSPARENT", "CONTAINER", "PLACE_ITEM", "BLOCKSDOOR" ],
- "deconstruct": {
- "items": [
- { "item": "scrap", "count": [ 2, 6 ] },
- { "item": "steel_chunk", "count": [ 1, 3 ] },
- { "item": "steel_lump", "count": [ 1, 3 ] },
- { "item": "plastic_chunk", "count": [ 1, 3 ] },
- { "item": "sheet_metal_small", "count": [ 0, 4 ] },
- { "item": "sheet_metal", "count": [ 2, 4 ] },
- { "item": "pipe", "count": [ 1, 4 ] },
- { "item": "cable", "charges": [ 1, 15 ] },
- { "item": "motor", "count": 1 },
- { "item": "solder_wire", "charges": [ 1, 15 ] }
- ]
- },
- "bash": {
- "str_min": 18,
- "str_max": 50,
- "sound": "metal screeching!",
- "sound_fail": "clang!",
- "items": [
- { "item": "scrap", "count": [ 2, 7 ] },
- { "item": "steel_chunk", "count": [ 0, 3 ] },
- { "item": "sheet_metal_small", "count": [ 8, 12 ] },
- { "item": "sheet_metal", "count": [ 1, 2 ] },
- { "item": "pipe", "count": [ 1, 2 ] },
- { "item": "cable", "charges": [ 1, 15 ] },
- { "item": "e_scrap", "count": [ 5, 10 ] },
- { "item": "plastic_chunk", "count": [ 0, 2 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_server",
- "looks_like": "f_utility_shelf",
- "name": "server stack",
- "description": "This is a big pile of computers. They're all turned off.",
- "symbol": ":",
- "color": "blue_white",
- "move_cost_mod": -1,
- "coverage": 90,
- "required_str": 8,
- "flags": [ "BLOCKSDOOR" ],
- "deconstruct": {
- "items": [
- { "item": "sheet_metal_small", "count": [ 4, 6 ] },
- { "item": "plastic_chunk", "count": [ 2, 12 ] },
- { "item": "pipe", "count": [ 4, 8 ] },
- { "item": "laptop", "count": [ 2, 4 ] },
- { "item": "cable", "charges": [ 5, 10 ] }
- ]
- },
- "bash": {
- "str_min": 16,
- "str_max": 40,
- "sound": "metal screeching!",
- "sound_fail": "clang!",
- "items": [
- { "item": "scrap", "count": [ 4, 8 ] },
- { "item": "plastic_chunk", "count": [ 1, 6 ] },
- { "item": "sheet_metal_small", "count": [ 1, 4 ] },
- { "item": "pipe", "count": 1 },
- { "item": "e_scrap", "count": [ 20, 50 ] },
- { "item": "cable", "charges": [ 2, 8 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_satellite",
- "name": "large satellite dish",
- "looks_like": "t_radio_tower",
- "description": "Somewhere up there, there are still satellites, orbiting and doing their thing, sending signals down to an Earth that is no longer listening.",
- "symbol": ")",
- "color": "white_green",
- "move_cost_mod": -1,
- "coverage": 70,
- "required_str": -1,
- "deconstruct": {
- "items": [
- { "item": "pipe", "count": [ 6, 12 ] },
- { "item": "rebar", "count": [ 6, 12 ] },
- { "item": "scrap", "count": [ 2, 6 ] },
- { "item": "steel_chunk", "count": [ 1, 3 ] },
- { "item": "steel_lump", "count": [ 4, 6 ] },
- { "item": "sheet_metal_small", "count": [ 0, 4 ] },
- { "item": "sheet_metal", "count": [ 8, 10 ] },
- { "item": "cable", "charges": [ 1, 15 ] },
- { "item": "motor", "count": 1 }
- ]
- },
- "bash": {
- "str_min": 18,
- "str_max": 50,
- "sound": "metal screeching!",
- "sound_fail": "clang!",
- "items": [
- { "item": "pipe", "count": [ 1, 10 ] },
- { "item": "rebar", "count": [ 1, 10 ] },
- { "item": "scrap", "count": [ 6, 16 ] },
- { "item": "steel_chunk", "count": [ 1, 4 ] },
- { "item": "steel_lump", "count": [ 0, 6 ] },
- { "item": "sheet_metal_small", "count": [ 8, 12 ] },
- { "item": "sheet_metal", "count": [ 1, 2 ] },
- { "item": "cable", "charges": [ 1, 15 ] },
- { "item": "scrap_copper", "count": [ 0, 2 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_workbench",
- "name": "workbench",
- "description": "A sturdy workbench built out of metal. It is perfect for crafting large and heavy things.",
- "symbol": "#",
- "color": "red",
- "move_cost_mod": 2,
- "required_str": -1,
- "looks_like": "f_lab_bench",
- "flags": [ "TRANSPARENT", "PLACE_ITEM", "MOUNTABLE", "FLAT_SURF" ],
- "deconstruct": {
- "items": [
- { "item": "pipe", "count": [ 6, 8 ] },
- { "item": "sheet_metal", "count": 2 },
- { "item": "sheet_metal_small", "count": [ 2, 4 ] }
- ]
- },
- "max_volume": 4000,
- "bash": {
- "str_min": 35,
- "str_max": 80,
- "sound": "metal screeching!",
- "sound_fail": "clang!",
- "items": [
- { "item": "pipe", "count": [ 4, 6 ] },
- { "item": "sheet_metal", "count": [ 0, 1 ] },
- { "item": "sheet_metal_small", "count": [ 12, 24 ] },
- { "item": "steel_chunk", "count": [ 4, 8 ] },
- { "item": "scrap", "count": [ 12, 24 ] }
- ]
- },
- "examine_action": "workbench",
- "workbench": { "multiplier": 1.2, "mass": 500000, "volume": "200L" }
- },
- {
- "id": "f_hanging_meathook",
- "type": "furniture",
- "name": "hanging meathook",
- "description": "A hefty hook suspended from a chain for stringing up corpses.",
- "symbol": "g",
- "required_str": -1,
- "move_cost_mod": 2,
- "color": "light_gray",
- "deconstruct": { "items": [ { "item": "grip_hook", "count": 1 }, { "item": "chain", "count": 1 } ] },
- "flags": [ "TRANSPARENT", "BUTCHER_EQ" ]
- },
- {
- "type": "furniture",
- "id": "f_fake_bench_hands",
- "name": "fake workbench hands",
- "description": "This fake workbench holds the stats for working on a wielded item.",
- "symbol": "#",
- "color": "red",
- "move_cost_mod": 2,
- "required_str": -1,
- "workbench": { "multiplier": 1.0, "mass": 5000, "volume": "10L" }
- },
- {
- "type": "furniture",
- "//": "This furniture object also gets used as a fake workbench whenever a player crafts on the ground anywhere else.",
- "id": "f_ground_crafting_spot",
- "name": "ground crafting spot",
- "looks_like": "tr_firewood_source",
- "description": "A cleared spot on the ground for crafting. Slower than using a workbench or holding a project in your hands, but readily available.",
- "symbol": "x",
- "color": "white",
- "move_cost_mod": 2,
- "required_str": 0,
- "deconstruct": { "items": [ ] },
- "bash": { "str_min": 0, "str_max": 0, "items": [ ] },
- "flags": [ "PLACE_ITEM", "TRANSPARENT", "EASY_DECONSTRUCT" ],
- "examine_action": "workbench",
- "workbench": { "multiplier": 0.7, "mass": 1000000, "volume": "1000L" }
- },
- {
- "id": "f_tatami",
- "type": "furniture",
- "name": "tatami mat",
- "description": "A tatami is a type of mat used as a flooring material in traditional Japanese-style rooms.",
- "symbol": "#",
- "color": [ "brown" ],
- "move_cost_mod": 0,
- "comfort": 2,
- "floor_bedding_warmth": -1500,
- "max_volume": 4000,
- "required_str": 7,
- "bash": {
- "str_min": 8,
- "str_max": 30,
- "sound": "crunch.",
- "sound_fail": "whump.",
- "items": [
- { "item": "straw_pile", "count": [ 5, 8 ] },
- { "item": "rag", "count": [ 2, 4 ] },
- { "item": "string_36", "count": [ 1, 2 ] }
- ]
- },
- "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "ORGANIC" ]
- },
- {
- "id": "f_bitts",
- "type": "furniture",
- "name": "bitts",
- "description": "Paired vertical iron posts mounted on a wharf, pier or quay. They are used to secure mooring lines, ropes, hawsers, or cables.",
- "symbol": "B",
- "color": [ "light_gray" ],
- "move_cost_mod": 2,
- "coverage": 30,
- "required_str": 0,
- "bash": {
- "str_min": 80,
- "str_max": 200,
- "sound": "metal screeching!",
- "sound_fail": "clang!",
- "items": [ { "item": "steel_chunk", "count": [ 5, 10 ] } ]
- },
- "flags": [ "TRANSPARENT", "MOUNTABLE", "SHORT" ]
- },
- {
- "type": "furniture",
- "id": "f_speaker_cabinet",
- "name": "speaker cabinet",
- "description": "A cabinet loaded with 12-inch speakers, intended to help make various things loud. It can't serve its original purpose these days, but it could be disassembled for various electronic parts.",
- "symbol": "7",
- "color": "blue",
- "move_cost_mod": -1,
- "coverage": 50,
- "max_volume": 15,
- "required_str": 7,
- "flags": [ "TRANSPARENT", "FLAMMABLE", "PLACE_ITEM" ],
- "deconstruct": {
- "items": [
- { "item": "scrap", "count": [ 4, 6 ] },
- { "item": "e_scrap", "count": [ 1, 2 ] },
- { "item": "plastic_chunk", "count": [ 0, 2 ] },
- { "item": "wood_panel", "count": 1 },
- { "item": "2x4", "count": 4 },
- { "item": "nail", "charges": [ 8, 10 ] },
- { "item": "cable", "charges": [ 3, 4 ] }
- ]
- },
- "bash": {
- "str_min": 8,
- "str_max": 20,
- "sound": "smash!",
- "sound_fail": "whump!",
- "items": [
- { "item": "splinter", "count": [ 0, 6 ] },
- { "item": "scrap", "count": [ 0, 3 ] },
- { "item": "2x4", "count": [ 1, 2 ] },
- { "item": "nail", "charges": [ 2, 6 ] },
- { "item": "cable", "charges": [ 1, 3 ] },
- { "item": "e_scrap", "prob": 25 },
- { "item": "plastic_chunk", "count": [ 0, 1 ] }
- ]
- }
- },
- {
- "type": "furniture",
- "id": "f_no_item",
- "//": "This is used in a hack to clear furniture with the keg iexamine of all items execept the stored liquid before usage.",
- "name": "seeing this is a bug",
- "description": "Seeing this is a bug. If seen, please report and destroy.",
- "symbol": "#",
- "color": "black",
- "move_cost_mod": 2,
- "required_str": -1,
- "flags": [ "NOITEM" ]
- },
- {
- "type": "furniture",
- "id": "f_swamp_gas",
- "name": "swamp gas",
- "description": "This is a pool of murkey water, it occassionaly bubbles, releasing a mildly toxic gas.",
- "looks_like": "t_water_sh",
- "symbol": "~",
- "color": "blue",
- "move_cost_mod": 1,
- "coverage": 0,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "EMITTER" ],
- "emissions": [ "emit_swamp_gas_leak" ],
- "//": "a very mild toxicant, inducing nausea.",
- "bash": { "str_min": 30, "str_max": 60, "sound": "splash!", "sound_fail": "splash!", "furn_set": "f_swamp_gas" }
- },
- {
- "type": "furniture",
- "id": "f_fog",
- "name": "fog",
- "description": "This is a misty cloud of fog.",
- "looks_like": "t_moss",
- "symbol": "^",
- "color": "light_gray",
- "move_cost_mod": 2,
- "coverage": 0,
- "required_str": -1,
- "flags": [ "TRANSPARENT", "EMITTER" ],
- "emissions": [ "emit_fog_plume" ]
- }
-]
diff --git a/data/json/furniture_and_terrain/terrain-bridges-docks.json b/data/json/furniture_and_terrain/terrain-bridges-docks.json
index ee070e16a8248..8b39741fbce9e 100644
--- a/data/json/furniture_and_terrain/terrain-bridges-docks.json
+++ b/data/json/furniture_and_terrain/terrain-bridges-docks.json
@@ -32,7 +32,7 @@
"type": "terrain",
"id": "t_dock_deep_pile",
"name": "deep dock pile",
- "description": "A sturdy pile made of wood extending all the way to the riverbed. A frame will be required to support a surface.",
+ "description": "A sturdy pile made of wood extending all the way to the riverbed. A frame will be required to support a surface.",
"symbol": "|",
"color": "brown",
"move_cost": 8,
@@ -53,7 +53,7 @@
"type": "terrain",
"id": "t_dock_deep_frame",
"name": "deep dock frame",
- "description": "A log frame secured atop a wooden pile. Adding a wood surface will make this into a proper dock section.",
+ "description": "A log frame secured atop a wooden pile. Adding a wood surface will make this into a proper dock section.",
"symbol": "#",
"color": "brown",
"move_cost": 6,
@@ -73,7 +73,7 @@
"type": "terrain",
"id": "t_dock_deep",
"name": "deep dock",
- "description": "A wooden platform held by a tall wooden pile that extend to the riverbed. Very sturdy, and likely to outlast you.",
+ "description": "A wooden platform held by a tall wooden pile that extend to the riverbed. Very sturdy, and likely to outlast you.",
"symbol": "8",
"color": "brown",
"move_cost": 2,
diff --git a/data/json/furniture_and_terrain/terrain-doors.json b/data/json/furniture_and_terrain/terrain-doors.json
index b50dbbfcb4b65..62358e2d8ce97 100644
--- a/data/json/furniture_and_terrain/terrain-doors.json
+++ b/data/json/furniture_and_terrain/terrain-doors.json
@@ -97,6 +97,7 @@
"name": "closed reinforced glass door",
"description": "A closed glass door reinforced with woven steel wires in a stylish, but practical pattern.",
"symbol": "+",
+ "looks_like": "t_door_glass_c",
"color": "light_cyan",
"move_cost": 0,
"roof": "t_flat_roof",
@@ -123,6 +124,7 @@
"name": "closed reinforced glass door",
"description": "A closed glass door reinforced with woven steel wires in a stylish, but practical pattern.",
"symbol": "+",
+ "looks_like": "t_reinforced_door_glass_c",
"color": "light_cyan",
"move_cost": 0,
"roof": "t_flat_roof",
@@ -149,6 +151,7 @@
"name": "open reinforced glass door",
"description": "A glass door reinforced with woven steel wires in a stylish, but practical pattern. Yep, it's open.",
"symbol": "'",
+ "looks_like": "t_door_glass_o",
"color": "light_cyan",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -175,6 +178,7 @@
"name": "open reinforced glass door",
"description": "A glass door reinforced with woven steel wires in a stylish, but practical pattern. Yep, it's open.",
"symbol": "'",
+ "looks_like": "t_reinforced_door_glass_o",
"color": "light_cyan",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -238,6 +242,7 @@
"name": "closed wood door",
"description": "A standard wooden door that doesn't look very resilient. It'd probably burn easily, too.",
"symbol": "+",
+ "looks_like": "t_door_c",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -275,6 +280,7 @@
"name": "closed wood door",
"description": "A standard wooden door that doesn't look very resilient. It'd probably burn easily, too.",
"symbol": "+",
+ "looks_like": "t_door_c",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -312,6 +318,7 @@
"name": "closed wood door",
"description": "A standard wooden door that doesn't look very resilient. It'd probably burn easily, too.",
"symbol": "+",
+ "looks_like": "t_door_c",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -349,6 +356,7 @@
"name": "closed wood door",
"description": "A standard wooden door that doesn't look very resilient. It'd probably burn easily, too.",
"symbol": "+",
+ "looks_like": "t_door_c",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -386,6 +394,7 @@
"name": "closed wood door",
"description": "A standard wooden door that doesn't look very resilient. It'd probably burn easily, too.",
"symbol": "+",
+ "looks_like": "t_door_c",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -423,6 +432,7 @@
"name": "open wood door",
"description": "A standard wooden door that doesn't look very resilient. It'd probably burn easily, too. This one is wide open.",
"symbol": "'",
+ "looks_like": "t_door_o",
"color": "brown",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -459,6 +469,7 @@
"name": "open wood door",
"description": "A standard wooden door that doesn't look very resilient. It'd probably burn easily, too. This one is wide open.",
"symbol": "'",
+ "looks_like": "t_door_o",
"color": "brown",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -495,6 +506,7 @@
"name": "open wood door",
"description": "A standard wooden door that doesn't look very resilient. It'd probably burn easily, too. This one is wide open.",
"symbol": "'",
+ "looks_like": "t_door_o",
"color": "brown",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -531,6 +543,7 @@
"name": "open wood door",
"description": "A standard wooden door that doesn't look very resilient. It'd probably burn easily, too. This one is wide open.",
"symbol": "'",
+ "looks_like": "t_door_o",
"color": "brown",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -567,6 +580,7 @@
"name": "damaged wood door",
"description": "A trashed wooden door, that is more of an obstacle than a door. Also, you can see right through it. It could be boarded up with a few two by fours.",
"symbol": "&",
+ "looks_like": "t_door_b",
"color": "brown",
"move_cost": 0,
"coverage": 60,
@@ -602,6 +616,7 @@
"name": "damaged wood door",
"description": "A trashed wooden door, that is more of an obstacle than a door. Also, you can see right through it. It could be boarded up with a few two by fours.",
"symbol": "&",
+ "looks_like": "t_door_b",
"color": "brown",
"move_cost": 0,
"coverage": 60,
@@ -637,6 +652,7 @@
"name": "damaged wood door",
"description": "A trashed wooden door, that is more of an obstacle than a door. Also, you can see right through it. It could be boarded up with a few two by fours.",
"symbol": "&",
+ "looks_like": "t_door_b",
"color": "brown",
"move_cost": 0,
"coverage": 60,
@@ -672,6 +688,7 @@
"name": "damaged wood door",
"description": "A trashed wooden door, that is more of an obstacle than a door. Also, you can see right through it. It could be boarded up with a few two by fours.",
"symbol": "&",
+ "looks_like": "t_door_b",
"color": "brown",
"move_cost": 0,
"coverage": 60,
@@ -707,6 +724,7 @@
"name": "empty door frame",
"description": "An empty door frame made from two by fours and nails. A variety of doors could be constructed here.",
"symbol": ".",
+ "looks_like": "t_door_frame",
"color": "brown",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -731,6 +749,7 @@
"name": "empty door frame",
"description": "An empty door frame made from two by fours and nails. A variety of doors could be constructed here.",
"symbol": ".",
+ "looks_like": "t_door_frame",
"color": "brown",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -755,6 +774,7 @@
"name": "empty door frame",
"description": "An empty door frame made from two by fours and nails. A variety of doors could be constructed here.",
"symbol": ".",
+ "looks_like": "t_door_frame",
"color": "brown",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -779,6 +799,7 @@
"name": "empty door frame",
"description": "An empty door frame made from two by fours and nails. A variety of doors could be constructed here.",
"symbol": ".",
+ "looks_like": "t_door_frame",
"color": "brown",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -803,6 +824,7 @@
"name": "closed glass door",
"description": "A sliding glass door, the kind that was on social media with people and animals running into. This one is closed, so don't hurt yourself.",
"symbol": "+",
+ "looks_like": "t_door_glass_c",
"color": "light_cyan",
"move_cost": 0,
"roof": "t_flat_roof",
@@ -826,6 +848,7 @@
"name": "closed glass door",
"description": "A sliding glass door, the kind that was on social media with people and animals running into. This one is closed, so don't hurt yourself.",
"symbol": "+",
+ "looks_like": "t_door_glass_c",
"color": "light_cyan",
"move_cost": 0,
"roof": "t_flat_roof",
@@ -849,6 +872,7 @@
"name": "closed glass door",
"description": "A sliding glass door, the kind that was on social media with people and animals running into. This one is closed, so don't hurt yourself.",
"symbol": "+",
+ "looks_like": "t_door_glass_c",
"color": "light_cyan",
"move_cost": 0,
"roof": "t_flat_roof",
@@ -872,6 +896,7 @@
"name": "closed glass door",
"description": "A sliding glass door, the kind that was on social media with people and animals running into. This one is closed, so don't hurt yourself.",
"symbol": "+",
+ "looks_like": "t_door_glass_c",
"color": "light_cyan",
"move_cost": 0,
"roof": "t_flat_roof",
@@ -895,6 +920,7 @@
"name": "open glass door",
"description": "A sliding glass door that has been left open for all manner of things to travel through.",
"symbol": "'",
+ "looks_like": "t_door_glass_c",
"color": "light_cyan",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -918,6 +944,7 @@
"name": "open glass door",
"description": "A sliding glass door that has been left open for all manner of things to travel through.",
"symbol": "'",
+ "looks_like": "t_door_glass_c",
"color": "light_cyan",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -941,6 +968,7 @@
"name": "open glass door",
"description": "A sliding glass door that has been left open for all manner of things to travel through.",
"symbol": "'",
+ "looks_like": "t_door_glass_o",
"color": "light_cyan",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -964,6 +992,7 @@
"name": "open glass door",
"description": "A sliding glass door that has been left open for all manner of things to travel through.",
"symbol": "'",
+ "looks_like": "t_door_glass_o",
"color": "light_cyan",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -987,6 +1016,7 @@
"name": "closed wood door with peephole",
"description": "A regular door made of ordinary wood, except this one has a peephole. If you examined it more closely, you'd be able to peek through the hole.",
"symbol": "+",
+ "looks_like": "t_door_c",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -1025,6 +1055,7 @@
"name": "damaged wood door",
"description": "A trashed wooden door, that is more of an obstacle than a door. Also, you can see right through it. It could be boarded up with a few two by fours.",
"symbol": "&",
+ "looks_like": "t_door_c",
"color": "brown",
"move_cost": 0,
"coverage": 60,
@@ -1060,6 +1091,7 @@
"name": "damaged wood door",
"description": "A trashed wooden door, that is more of an obstacle than a door. Also, you can see right through it. It could be boarded up with a few two by fours.",
"symbol": "&",
+ "looks_like": "t_door_b",
"color": "brown",
"move_cost": 0,
"coverage": 60,
@@ -1096,6 +1128,7 @@
"//": "There's no need for a use-peephole, because the door is transparent",
"description": "Bad news is the peephole is broken and you can't look outside the door. Good news is the door is nearly broken down, so there's nothing blocking the view. A few planks, nails and the right tools could patch up all the damage.",
"symbol": "&",
+ "looks_like": "t_door_b",
"color": "brown",
"move_cost": 0,
"coverage": 60,
@@ -1168,6 +1201,7 @@
"name": "open wood door",
"description": "A standard wooden door that doesn't look very resilient. It'd probably burn easily, too. This one is wide open.",
"symbol": "'",
+ "looks_like": "t_door_o",
"color": "brown",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -1203,6 +1237,7 @@
"name": "open wood door with peephole",
"description": "A regular door made of ordinary wood, except this one has a peephole. If you examined it more closely, you'd be able to peek through the hole. Although, you don't need to peek through it since the door is open anyway.",
"symbol": "'",
+ "looks_like": "t_door_o",
"color": "brown",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -1241,6 +1276,7 @@
"name": "closed reinforced wood door",
"description": "Just like other wooden doors, except this one has layers of nailed in two by fours and additional hinge for reinforcement. It might be barricaded, but still susceptible to fire.",
"symbol": "+",
+ "looks_like": "t_door_c",
"color": "red",
"move_cost": 0,
"coverage": 100,
@@ -1277,6 +1313,7 @@
"name": "damaged reinforced wood door",
"description": "There are splintering planks and visible holes in the wood, it looks like it could be smashed apart if not repaired.",
"symbol": "&",
+ "looks_like": "t_door_b",
"color": "red",
"move_cost": 0,
"coverage": 75,
@@ -1312,6 +1349,7 @@
"name": "open reinforced wood door",
"description": "Just like other wooden doors, except this one has layers of nailed in two by fours for reinforcement. It might be fortified, but still susceptible to fire. It's open so it's not stopping anything right now.",
"symbol": "'",
+ "looks_like": "t_door_o",
"color": "red",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -1348,6 +1386,7 @@
"name": "closed wood door",
"description": "A standard wooden door that doesn't look very resilient. It'd probably burn easily, too. This one has an extra keyhole, so it's likely locked. You could pry it open or pick the lock.",
"symbol": "+",
+ "looks_like": "t_door_locked",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -1376,6 +1415,7 @@
"name": "closed wood door",
"description": "A standard wooden door that doesn't look very resilient. It'd probably burn easily, too. This one has a deadbolt keyhole, so it's likely locked. You could pry it open or pick the lock, or unlock the deadbolt from the inside.",
"symbol": "+",
+ "looks_like": "t_door_c",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -1414,6 +1454,7 @@
"name": "closed wood door",
"description": "A regular door made of ordinary wood, except this one has a peephole. If you examined it more closely, you'd be able to peek through the hole. This one has a deadbolt keyhole, so it's likely locked. You could pry it open or pick the lock, or unlock the deadbolt from the inside.",
"symbol": "+",
+ "looks_like": "t_door_c_peep",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -1452,6 +1493,7 @@
"name": "closed wood door",
"description": "A standard wooden door that doesn't look very resilient. It'd probably burn easily, too. This one has an extra keyhole, so it's likely locked. You could pry it open or pick the lock.",
"symbol": "+",
+ "looks_like": "t_door_locked",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -1480,6 +1522,7 @@
"name": "closed door curtain",
"description": "Repurposed curtains from a window acting as a door. Could be easily taken down for supplies or placed somewhere else.",
"symbol": "+",
+ "looks_like": "t_curtains",
"color": "dark_gray",
"move_cost": 0,
"coverage": 95,
@@ -1512,6 +1555,7 @@
"name": "closed makeshift door",
"description": "A makeshift screen consisting of two by fours bound together with vertical rope hanging from the top of the doorway. Could be easily taken down and re-purposed.",
"symbol": "+",
+ "looks_like": "t_door_c",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -1541,6 +1585,7 @@
"name": "open door curtain",
"description": "Repurposed curtains from a window acting as a door. Could be easily taken down for supplies or placed somewhere else. These curtains are open, bundled and tied next to the doorway.",
"symbol": "'",
+ "looks_like": "t_door_frame",
"color": "dark_gray",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -1572,6 +1617,7 @@
"name": "open makeshift door",
"description": "A makeshift screen consisting of two by fours bound together with rope hanging from the top of the doorway. Could be easily taken down and re-purposed. The planks have been rolled up and attached to the top of the doorway, allowing free movement through.",
"symbol": "'",
+ "looks_like": "t_door_o",
"color": "brown",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -1600,6 +1646,7 @@
"name": "empty door frame",
"description": "An empty door frame made from two by fours and nails. A variety of doors could be constructed here.",
"symbol": ".",
+ "looks_like": "t_floor",
"color": "brown",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -1624,6 +1671,7 @@
"name": "empty door frame",
"description": "An empty door frame made from two by fours and nails. A variety of doors could be constructed here.",
"symbol": ".",
+ "looks_like": "t_door_frame",
"color": "brown",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -1648,6 +1696,7 @@
"name": "empty metal door frame",
"description": "An empty door frame made of steel and assorted metal. A variety of doors could be constructed here.",
"symbol": ".",
+ "looks_like": "t_door_frame",
"color": "dark_gray",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -1667,6 +1716,7 @@
"name": "empty metal door frame",
"description": "An empty door frame made of steel and assorted metal. A variety of doors could be constructed here.",
"symbol": ".",
+ "looks_like": "t_mdoor_frame",
"color": "dark_gray",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -1686,6 +1736,7 @@
"name": "empty metal window frame",
"description": "An empty window frame constructed from assembled metal and carefully braced with various hardware.",
"symbol": ".",
+ "looks_like": "t_mdoor_frame",
"color": "dark_gray",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -1705,6 +1756,7 @@
"name": "boarded up door",
"description": "A standard wooden door that has several planks across it, nailed down to board it up and increase its durability. Still flammable though.",
"symbol": "#",
+ "looks_like": "t_door_locked",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -1732,6 +1784,7 @@
"name": "boarded up damaged door",
"description": "A boarded up wooden door, except some of the planks are fractured or coming loose. Without repairs, it could be broken down easily.",
"symbol": "#",
+ "looks_like": "t_door_b",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -1759,6 +1812,7 @@
"name": "boarded up door with peephole",
"description": "A boarded up door made of ordinary wood, except this one has a peephole. Although it's been covered up in planks, you could still examine the peephole.",
"symbol": "#",
+ "looks_like": "t_door_boarded",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -1786,6 +1840,7 @@
"name": "boarded up reinforced door",
"description": "An additionally reinforced door of layered two by fours that has been boarded up with more wood to prevent it from opening. Still susceptible to fire.",
"symbol": "#",
+ "looks_like": "t_door_boarded",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -1813,6 +1868,7 @@
"name": "boarded up damaged reinforced door",
"description": "A battered and torn reinforced door with planks bursting from the joints. The boarded up two by fours are fragmented and in pieces, this doesn't look like an easy repair.",
"symbol": "#",
+ "looks_like": "t_door_b",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -1840,6 +1896,7 @@
"name": "boarded up damaged door with peephole",
"description": "A wrecked door made of ordinary wood, except this one has a peephole. Although it's been covered up in planks, the peephole was damaged and can't be used to see through.",
"symbol": "#",
+ "looks_like": "t_door_boarded_damaged",
"color": "brown",
"move_cost": 0,
"coverage": 95,
@@ -1869,6 +1926,7 @@
"name": "closed metal door",
"description": "An extremely resilient door made of assorted steel, carved and pounded into shape.",
"symbol": "+",
+ "looks_like": "t_door_c",
"color": "cyan",
"move_cost": 0,
"coverage": 95,
@@ -1936,6 +1994,7 @@
"name": "closed metal door",
"description": "An extremely resilient door made of assorted steel, carved and pounded into shape.",
"symbol": "+",
+ "looks_like": "t_door_metal_c",
"color": "cyan",
"move_cost": 0,
"coverage": 95,
@@ -1961,6 +2020,7 @@
"name": "open metal door",
"description": "An extremely resilient door made of assorted steel, carved and pounded into shape. It's open, so no tools are needed to break in.",
"symbol": "'",
+ "looks_like": "t_door_o",
"color": "cyan",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -1985,6 +2045,7 @@
"name": "open metal door",
"description": "An extremely resilient door made of assorted steel, carved and pounded into shape. It's open, so no tools are needed to break in.",
"symbol": "'",
+ "looks_like": "t_door_metal_o",
"color": "cyan",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -2009,6 +2070,7 @@
"name": "closed metal door with peephole",
"description": "An extremely resilient door made of assorted steel, carved and pounded into shape. If you examined it more closely, you'd be able to peek through the hole.",
"symbol": "+",
+ "looks_like": "t_door_metal_c",
"color": "cyan",
"move_cost": 0,
"coverage": 95,
@@ -2036,6 +2098,7 @@
"name": "open metal door with peephole",
"description": "An extremely resilient door made of assorted steel, carved and pounded into shape. If you examined it more closely, you'd be able to peek through the hole. Although, you don't need to peek through it since the door is open anyway.",
"symbol": "'",
+ "looks_like": "t_door_metal_o",
"color": "cyan",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -2062,6 +2125,7 @@
"description": "A galvanized steel door, forged to withstand punishment and impede anyone or anything. Typically used in conjunction with automated electronic locking mechanisms that require an external source to unlock.",
"//": "Actually locked",
"symbol": "+",
+ "looks_like": "t_door_metal_c",
"color": "cyan",
"move_cost": 0,
"coverage": 95,
@@ -2087,12 +2151,14 @@
"description": "An extremely resilient door made of assorted steel, carved and pounded into shape. This one has an extra keyhole, so it's likely locked. You could probably pick the lock.",
"//": "Actually pickable, but locked",
"symbol": "+",
+ "looks_like": "t_door_metal_locked",
"color": "cyan",
"move_cost": 0,
"coverage": 95,
"roof": "t_flat_roof",
"flags": [ "NOITEM", "REDUCE_SCENT", "OPENCLOSE_INSIDE", "CONNECT_TO_WALL", "LOCKED", "MINEABLE", "BLOCK_WIND" ],
"open": "t_door_metal_o",
+ "examine_action": "locked_object_pickable",
"bash": {
"str_min": 80,
"str_max": 250,
@@ -2113,6 +2179,7 @@
"description": "A detention door made up of crisscrossed stainless steel bars. The locking mechanism doesn't appear to be engaged.",
"//": "Unlocked, only created at map gen",
"symbol": "+",
+ "looks_like": "t_door_metal_c",
"color": "cyan",
"move_cost": 0,
"roof": "t_flat_roof",
@@ -2140,6 +2207,7 @@
"name": "open bar door",
"description": "A detention door made up of crisscrossed stainless steel bars. It's swung wide open. Freedom!",
"symbol": "'",
+ "looks_like": "t_door_metal_o",
"color": "cyan",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -2167,10 +2235,12 @@
"description": "A detention door made up of crisscrossed stainless steel bars. The locking mechanism appears to be engaged. The mechanism could be picked open with enough skill.",
"//": "Locked",
"symbol": "+",
+ "looks_like": "t_door_metal_locked",
"color": "cyan",
"move_cost": 0,
"roof": "t_flat_roof",
"flags": [ "TRANSPARENT", "NOITEM", "PERMEABLE", "CONNECT_TO_WALL", "LOCKED", "THIN_OBSTACLE" ],
+ "examine_action": "locked_object_pickable",
"bash": {
"str_min": 30,
"str_max": 210,
@@ -2192,6 +2262,7 @@
"name": "closed glass door",
"description": "A sliding glass door, the kind that was on social media with people and animals running into. This one is closed, so don't hurt yourself.",
"symbol": "+",
+ "looks_like": "t_door_c",
"color": "light_cyan",
"move_cost": 0,
"roof": "t_flat_roof",
@@ -2215,6 +2286,7 @@
"name": "closed glass door",
"description": "A sliding glass door, the kind that was on social media with people and animals running into. This one is closed, so don't hurt yourself.",
"symbol": "+",
+ "looks_like": "t_door_glass_c",
"color": "light_cyan",
"move_cost": 0,
"roof": "t_flat_roof",
@@ -2238,6 +2310,7 @@
"name": "open glass door",
"description": "A sliding glass door that has been left open for all manner of things to travel through.",
"symbol": "'",
+ "looks_like": "t_door_o",
"color": "light_cyan",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -2261,6 +2334,7 @@
"name": "open glass door",
"description": "A sliding glass door that has been left open for all manner of things to travel through.",
"symbol": "'",
+ "looks_like": "t_door_glass_o",
"color": "light_cyan",
"move_cost": 2,
"roof": "t_flat_roof",
@@ -2284,6 +2358,7 @@
"name": "closed frosted glass door",
"description": "A sliding door of frosted white glass.",
"symbol": "+",
+ "looks_like": "t_door_glass_c",
"color": "white",
"flags": [ "DOOR", "NOITEM", "CONNECT_TO_WALL", "BLOCK_WIND" ],
"open": "t_door_glass_frosted_o",
@@ -2295,6 +2370,7 @@
"name": "closed frosted glass door",
"description": "A sliding door of frosted white glass.",
"symbol": "+",
+ "looks_like": "t_door_glass_frosted_c",
"color": "white",
"flags": [ "DOOR", "NOITEM", "CONNECT_TO_WALL" ],
"open": "t_door_glass_frosted_lab_o",
@@ -2306,6 +2382,7 @@
"name": "open frosted glass door",
"description": "A sliding glass door that has been left open for all manner of things to travel through.",
"symbol": "'",
+ "looks_like": "t_door_glass_o",
"color": "white",
"flags": [ "TRANSPARENT", "FLAT", "CONNECT_TO_WALL", "ROAD" ],
"close": "t_door_glass_frosted_c",
@@ -2317,6 +2394,7 @@
"name": "open frosted glass door",
"description": "A sliding glass door that has been left open for all manner of things to travel through.",
"symbol": "'",
+ "looks_like": "t_door_glass_frosted_o",
"color": "white",
"flags": [ "TRANSPARENT", "FLAT", "CONNECT_TO_WALL", "ROAD" ],
"close": "t_door_glass_frosted_lab_c",
diff --git a/data/json/furniture_and_terrain/terrain-fences-gates.json b/data/json/furniture_and_terrain/terrain-fences-gates.json
index 6b6db529e89f9..5208bd42c4e66 100644
--- a/data/json/furniture_and_terrain/terrain-fences-gates.json
+++ b/data/json/furniture_and_terrain/terrain-fences-gates.json
@@ -66,6 +66,7 @@
"move_cost": 0,
"flags": [ "TRANSPARENT", "PERMEABLE", "LOCKED", "THIN_OBSTACLE", "BURROWABLE" ],
"connects_to": "CHAINFENCE",
+ "examine_action": "locked_object_pickable",
"bash": {
"str_min": 10,
"str_max": 150,
@@ -198,6 +199,76 @@
]
}
},
+ {
+ "type": "terrain",
+ "id": "t_screen_door_c",
+ "name": "closed screen door",
+ "description": "A simple wooden doorway with screen mesh.",
+ "symbol": "+",
+ "color": "brown",
+ "looks_like": "t_chickenwire_gate_c",
+ "move_cost": 0,
+ "flags": [ "TRANSPARENT", "DOOR", "PERMEABLE", "BURROWABLE", "CONNECT_TO_WALL" ],
+ "open": "t_screen_door_o",
+ "deconstruct": {
+ "ter_set": "t_floor",
+ "items": [
+ { "item": "2x4", "count": 4 },
+ { "item": "screen_mesh", "count": 1 },
+ { "item": "nail", "charges": 20 },
+ { "item": "hinge", "count": [ 1, 2 ] }
+ ]
+ },
+ "bash": {
+ "str_min": 5,
+ "str_max": 12,
+ "str_min_blocked": 5,
+ "str_max_blocked": 15,
+ "sound": "rattle!",
+ "sound_fail": "thump!",
+ "ter_set": "t_floor",
+ "items": [
+ { "item": "screen_mesh", "count": [ 0, 1 ] },
+ { "item": "2x4", "count": [ 2, 4 ] },
+ { "item": "hinge", "count": [ 1, 2 ] }
+ ]
+ }
+ },
+ {
+ "type": "terrain",
+ "id": "t_screen_door_o",
+ "name": "closed screen door",
+ "description": "A simple wooden doorway with screen mesh.",
+ "symbol": "+",
+ "color": "brown",
+ "looks_like": "t_chickenwire_gate_o",
+ "move_cost": 0,
+ "flags": [ "TRANSPARENT", "DOOR", "PERMEABLE", "BURROWABLE", "CONNECT_TO_WALL" ],
+ "close": "t_screen_door_c",
+ "deconstruct": {
+ "ter_set": "t_floor",
+ "items": [
+ { "item": "2x4", "count": 4 },
+ { "item": "screen_mesh", "count": 1 },
+ { "item": "nail", "charges": 20 },
+ { "item": "hinge", "count": [ 1, 2 ] }
+ ]
+ },
+ "bash": {
+ "str_min": 5,
+ "str_max": 12,
+ "str_min_blocked": 5,
+ "str_max_blocked": 15,
+ "sound": "rattle!",
+ "sound_fail": "thump!",
+ "ter_set": "t_floor",
+ "items": [
+ { "item": "screen_mesh", "count": [ 0, 1 ] },
+ { "item": "2x4", "count": [ 2, 4 ] },
+ { "item": "hinge", "count": [ 1, 2 ] }
+ ]
+ }
+ },
{
"type": "terrain",
"id": "t_chickenwire_gate_c",
@@ -357,6 +428,34 @@
"items": [ { "item": "wire", "count": [ 5, 10 ] } ]
}
},
+ {
+ "type": "terrain",
+ "id": "t_screened_porch_wall",
+ "name": "screen mesh wall",
+ "description": "A rather flimsy tall wall made of 2x4s and screen mesh, suitable for keeping the bugs out.",
+ "symbol": "LINE_OXOX",
+ "color": "brown",
+ "looks_like": "t_chickenwire_fence",
+ "move_cost": 0,
+ "flags": [ "TRANSPARENT", "NOITEM", "PERMEABLE", "AUTO_WALL_SYMBOL", "BURROWABLE", "AUTO_WALL_SYMBOL" ],
+ "examine_action": "chainfence",
+ "deconstruct": {
+ "ter_set": "t_null",
+ "items": [ { "item": "screen_mesh", "count": 1 }, { "item": "nail", "charges": 10 }, { "item": "2x4", "charges": 4 } ]
+ },
+ "bash": {
+ "str_min": 5,
+ "str_max": 12,
+ "sound": "metal rattling!",
+ "sound_fail": "whack!",
+ "ter_set": "t_floor",
+ "items": [
+ { "item": "screen_mesh", "count": [ 0, 1 ] },
+ { "item": "nail", "charges": [ 5, 10 ] },
+ { "item": "2x4", "count": [ 1, 3 ] }
+ ]
+ }
+ },
{
"type": "terrain",
"id": "t_chickenwire_fence_post",
diff --git a/data/json/furniture_and_terrain/terrain-floors-outdoors.json b/data/json/furniture_and_terrain/terrain-floors-outdoors.json
index 44b4bbc3bf7ce..2f832f031efce 100644
--- a/data/json/furniture_and_terrain/terrain-floors-outdoors.json
+++ b/data/json/furniture_and_terrain/terrain-floors-outdoors.json
@@ -235,7 +235,7 @@
"type": "terrain",
"id": "t_floor_noroof",
"name": "wooden floor",
- "description": "Wooden floor created from boards, packed tightly together and nailed down. Common in patios.",
+ "description": "Wooden floor created from boards, packed tightly together and nailed down. Common in patios.",
"symbol": ".",
"color": "brown",
"move_cost": 2,
diff --git a/data/json/furniture_and_terrain/terrain-floors_indoor.json b/data/json/furniture_and_terrain/terrain-floors_indoor.json
index c4c7627bd1e84..39d1835e8f84b 100644
--- a/data/json/furniture_and_terrain/terrain-floors_indoor.json
+++ b/data/json/furniture_and_terrain/terrain-floors_indoor.json
@@ -568,7 +568,7 @@
"id": "t_rad_platform",
"looks_like": "t_blue_floor",
"name": "radiation platform",
- "description": "A dual purpose platform that serves as a containment, and as a device that exposes items places on in to the radioactive source, by temporarily hoisting the radioactive material stored within. Operated from external console.",
+ "description": "A dual purpose platform that serves as a containment, and as a device that exposes items places on in to the radioactive source, by temporarily hoisting the radioactive material stored within. Operated from external console.",
"symbol": "0",
"color": "light_blue",
"move_cost": 100,
@@ -640,7 +640,7 @@
"id": "t_rad_platform",
"looks_like": "t_blue_floor",
"name": "radiation platform",
- "description": "A dual purpose platform that serves as a containment, and as a device that exposes items places on in to the radioactive source, by temporarily hoisting the radioactive material stored within. Operated from external console.",
+ "description": "A dual purpose platform that serves as a containment, and as a device that exposes items places on in to the radioactive source, by temporarily hoisting the radioactive material stored within. Operated from external console.",
"symbol": "0",
"color": "light_blue",
"move_cost": 100,
diff --git a/data/json/furniture_and_terrain/terrain-flora.json b/data/json/furniture_and_terrain/terrain-flora.json
index ec135e496d65f..509d7c62eefce 100644
--- a/data/json/furniture_and_terrain/terrain-flora.json
+++ b/data/json/furniture_and_terrain/terrain-flora.json
@@ -5,7 +5,7 @@
"name": "walnut tree",
"description": "A massive tree belonging to the 'Juglans' genus. If you look closely you can see some unharvested walnuts. You could cut it down with the right tools.",
"symbol": "7",
- "color": [ "green", "green", "brown_green", "brown" ],
+ "color": [ "green", "green", "yellow_yellow", "brown" ],
"move_cost": 0,
"coverage": 80,
"flags": [ "FLAMMABLE_ASH", "NOITEM", "SUPPORTS_ROOF", "TREE", "REDUCE_SCENT" ],
@@ -47,6 +47,7 @@
"type": "terrain",
"id": "t_tree_blackjack",
"name": "blackjack oak",
+ "looks_like": "t_tree",
"description": "A deciduous tree of the genus 'Quercus', with bark cracked into rectangular black plates split by narrow orange fissures. You could peel off the bark sections if you examined the tree more closely. You could cut it down with the right tools.",
"symbol": "7",
"color": "brown",
@@ -70,10 +71,11 @@
{
"type": "terrain",
"id": "t_tree_blackjack_harvested",
+ "looks_like": "t_tree_dead",
"description": "A deciduous tree of the genus 'Quercus', with bark cracked into rectangular black plates split by narrow orange fissures. All usable bark has been stripped off. You could cut it down with the right tools.",
"name": "blackjack oak",
"symbol": "7",
- "color": "brown",
+ "color": "green",
"move_cost": 0,
"coverage": 80,
"flags": [ "FLAMMABLE_ASH", "NOITEM", "SUPPORTS_ROOF", "TREE", "REDUCE_SCENT" ],
@@ -93,7 +95,7 @@
"name": "chestnut tree",
"description": "A massive tree belonging to the 'Castanea' genus. If you look closely you can see some unharvested chestnuts. You could cut it down with the right tools.",
"symbol": "7",
- "color": [ "green", "green", "brown_green", "brown" ],
+ "color": [ "green", "green", "green_yellow", "brown" ],
"move_cost": 0,
"coverage": 80,
"flags": [ "FLAMMABLE_ASH", "NOITEM", "SUPPORTS_ROOF", "TREE", "REDUCE_SCENT" ],
@@ -137,7 +139,7 @@
"name": "beech tree",
"description": "A massive tree belonging to the 'Fagus' genus. If you look closely you can see some unharvested beech nuts. You could cut it down with the right tools.",
"symbol": "7",
- "color": [ "green", "green", "brown_green", "brown" ],
+ "color": [ "green", "green", "black_green", "brown" ],
"move_cost": 0,
"coverage": 80,
"flags": [ "FLAMMABLE_ASH", "NOITEM", "SUPPORTS_ROOF", "TREE", "REDUCE_SCENT" ],
@@ -181,7 +183,7 @@
"name": "hazelnut tree",
"description": "A stubby tree belonging to the 'Corylus' genus. If you look closely you can see some unharvested hazelnuts. You could cut it down with the right tools.",
"symbol": "7",
- "color": [ "green", "green", "brown_green", "brown" ],
+ "color": [ "green", "green", "light_green_yellow", "brown" ],
"move_cost": 0,
"coverage": 80,
"flags": [ "FLAMMABLE_ASH", "NOITEM", "SUPPORTS_ROOF", "TREE", "REDUCE_SCENT" ],
@@ -246,6 +248,7 @@
"type": "terrain",
"id": "t_tree_harvested",
"name": "oak tree",
+ "looks_like": "t_tree_dead",
"description": "A massive deciduous tree belonging to the 'Quercus' genus, commonly found throughout New England region. You could cut it down with the right tools.",
"symbol": "7",
"color": [ "green", "green", "green", "brown" ],
@@ -269,7 +272,7 @@
"looks_like": "t_tree",
"description": "A large tree belonging to the 'Populus' genus, commonly found throughout New England region. You could cut it down with the right tools.",
"symbol": "7",
- "color": [ "green", "green", "brown_green", "brown" ],
+ "color": [ "green", "green", "green", "brown" ],
"//": "Do something cool with this and have it spread cotton around the area or something.",
"move_cost": 0,
"coverage": 80,
@@ -287,10 +290,10 @@
"type": "terrain",
"id": "t_tree_elm",
"name": "elm tree",
- "looks_like": "t_tree",
+ "looks_like": "t_tree_cottonwood",
"description": "A large tree belonging to the 'Ulmus' genus, commonly found throughout New England region. You could cut it down with the right tools.",
"symbol": "7",
- "color": [ "green", "green", "brown_green", "brown" ],
+ "color": [ "green", "green", "green", "brown" ],
"move_cost": 0,
"coverage": 80,
"flags": [ "FLAMMABLE_ASH", "NOITEM", "SUPPORTS_ROOF", "TREE", "REDUCE_SCENT" ],
@@ -307,6 +310,7 @@
"type": "terrain",
"id": "t_tree_dead",
"name": "dead tree",
+ "looks_like": "t_tree",
"description": "An indiscernible tree that has withered away, whether by weather, fire or otherworldy. You could cut it down with the right tools.",
"symbol": "7",
"color": "brown",
@@ -326,6 +330,7 @@
"type": "terrain",
"id": "t_tree_young",
"name": "young tree",
+ "looks_like": "t_tree",
"description": "A relatively young sapling of an indeterminate species. It could take decades before reaching maturity, so there's no use waiting around.",
"symbol": "1",
"color": [ "green", "green", "green", "brown" ],
@@ -345,6 +350,7 @@
"type": "terrain",
"id": "t_tree_apple",
"name": "apple tree",
+ "looks_like": "t_tree",
"description": "This tree is a member of the 'Malus' genus, producing fruit commonly known as apples. If you examined the branches more closely, you could probably find a few mature ones in autumn. You could also cut it down with the right tools.",
"symbol": "7",
"color": [ "light_green", "light_green", "red_green", "brown" ],
@@ -368,6 +374,7 @@
"type": "terrain",
"id": "t_tree_apple_harvested",
"name": "apple tree",
+ "looks_like": "t_tree_dead",
"description": "This tree is a member of the 'Malus' genus, producing fruit commonly known as apples. There doesn't appear to be any ripe apples now. You could also cut it down with the right tools.",
"symbol": "7",
"color": [ "light_green", "light_green", "light_green", "brown" ],
@@ -390,6 +397,7 @@
"type": "terrain",
"id": "t_tree_pear",
"name": "pear tree",
+ "looks_like": "t_tree_apple",
"description": "This is 'Pyrus communis', or the common pear tree, which produces viable pears in the fall. If you examined the branches more closely, you could probably find a few mature ones. You could also cut it down with the right tools.",
"symbol": "7",
"color": [ "light_green", "light_green", "light_green_green", "brown" ],
@@ -413,6 +421,7 @@
"type": "terrain",
"id": "t_tree_pear_harvested",
"name": "pear tree",
+ "looks_like": "t_tree_apple_harvested",
"description": "This is 'Pyrus communis', or the common pear tree, which produces viable pears in the fall. Looks like all the ripe pears have been picked. You could also cut it down with the right tools.",
"symbol": "7",
"color": [ "light_green", "light_green", "light_green", "brown" ],
@@ -490,6 +499,7 @@
"type": "terrain",
"id": "t_tree_cherry",
"name": "cherry tree",
+ "looks_like": "t_tree_apple",
"description": "One of the several species of 'Prunus' trees found in New England, it bears cherries in the summer. If you examined the foliage more closely, you could probably find some viable clusters. You could also cut it down with the right tools.",
"symbol": "7",
"color": [ "light_green", "red_green", "light_green", "brown" ],
@@ -513,6 +523,7 @@
"type": "terrain",
"id": "t_tree_cherry_harvested",
"name": "cherry tree",
+ "looks_like": "t_tree_apple_harvested",
"description": "One of the several species of 'Prunus' trees found in New England, it bears cherries in the summer. Looks like all the ripe bunches of cherries have been picked. You could also cut it down with the right tools.",
"symbol": "7",
"color": [ "light_green", "light_green", "light_green", "brown" ],
@@ -535,10 +546,10 @@
"type": "terrain",
"id": "t_tree_juniper",
"name": "juniper tree",
- "description": "One of the species of 'Juniperus' that grows in New England, juniper berries grow over two to three years, first flowering. On the second year producing a green berry, the last, they produce their more famed blue varieties. If you examined the foliage more closely, you could probably find some viable clusters. You could also cut it down with the right tools.",
- "symbol": "7",
"looks_like": "t_tree_pine",
- "color": [ "light_green", "blue_green", "light_green", "brown" ],
+ "description": "One of the species of 'Juniperus' that grows in New England, juniper berries grow over two to three years, first flowering. On the second year producing a green berry, the last, they produce their more famed blue varieties. If you examined the foliage more closely, you could probably find some viable clusters. You could also cut it down with the right tools.",
+ "symbol": "7",
+ "color": [ "light_green", "light_green", "blue_green", "brown" ],
"//": "Can be picked at any point in the third year assuming the berries have turned blue. But it takes a long time to regrow.",
"move_cost": 0,
"coverage": 80,
@@ -559,9 +570,9 @@
"type": "terrain",
"id": "t_tree_juniper_harvested",
"name": "juniper tree",
+ "looks_like": "t_tree_pine_harvested",
"description": "One of the species of 'Juniperus' that grows in New England, juniper berries grow over two to three years. In the first year they flower, in the second year they produce a green berry, the last, they produce their more famed blue varieties. Looks like all the ripe bunches of berries have been picked. You could also cut it down with the right tools.",
"symbol": "7",
- "looks_like": "t_tree_pine",
"color": [ "light_green", "light_green", "light_green", "brown" ],
"//": "Will take three years to regrow, in reality.",
"move_cost": 0,
@@ -582,6 +593,7 @@
"type": "terrain",
"id": "t_tree_peach",
"name": "peach tree",
+ "looks_like": "t_tree_apple",
"description": "One of the several species of 'Prunus' trees found in New England, it bears peaches in the summer. If you examined the branches more closely, you could probably find some mature peaches. You could also cut it down with the right tools.",
"symbol": "7",
"color": [ "light_green", "light_red_green", "light_green", "brown" ],
@@ -605,6 +617,7 @@
"type": "terrain",
"id": "t_tree_peach_harvested",
"name": "peach tree",
+ "looks_like": "t_tree_apple_harvested",
"description": "One of the several species of 'Prunus' trees found in New England, it bears peaches in the summer. Looks like all the ripe peaches have been picked. You could also cut it down with the right tools.",
"symbol": "7",
"color": [ "light_green", "light_green", "light_green", "brown" ],
@@ -627,6 +640,7 @@
"type": "terrain",
"id": "t_tree_apricot",
"name": "apricot tree",
+ "looks_like": "t_tree_peach",
"description": "A transplanted species of 'Prunus armeniaca', rarely found in New England. It produces apricots in the summer. If you examined the spurs more closely, you could probably find some mature apricots. You could also cut it down with the right tools.",
"symbol": "7",
"color": [ "light_green", "light_red_green", "light_green", "brown" ],
@@ -650,6 +664,7 @@
"type": "terrain",
"id": "t_tree_apricot_harvested",
"name": "apricot tree",
+ "looks_like": "t_tree_peach_harvested",
"description": "A transplanted species of 'Prunus armeniaca', rarely found in New England. It produces apricots in the summer. Looks like all the ripe apricots have been picked. You could also cut it down with the right tools.",
"symbol": "7",
"color": [ "light_green", "light_green", "light_green", "brown" ],
@@ -672,6 +687,7 @@
"type": "terrain",
"id": "t_tree_plum",
"name": "plum tree",
+ "looks_like": "t_tree_apple",
"description": "One of the several species of 'Prunus' trees found in New England, it produces plums in the summer. If you examined the spurs more closely, you could probably find some ripe plums. You could also cut it down with the right tools.",
"symbol": "7",
"color": [ "light_green", "magenta_green", "light_green", "brown" ],
@@ -695,6 +711,7 @@
"type": "terrain",
"id": "t_tree_plum_harvested",
"name": "plum tree",
+ "looks_like": "t_tree_apple_harvested",
"description": "One of the several species of 'Prunus' trees found in New England, it produces plums in the summer. Looks like all the ripe plums have been picked. You could also cut it down with the right tools.",
"symbol": "7",
"color": [ "light_green", "light_green", "light_green", "brown" ],
@@ -719,7 +736,7 @@
"name": "mulberry tree",
"description": "This tree is a member of the 'Morus' genus, producing fruit commonly known as mulberries. In the summer many berries can be picked. You could also cut it down with the right tools.",
"symbol": "7",
- "color": [ "light_green", "light_green", "red_green", "brown" ],
+ "color": [ "light_green", "red_green", "light_green", "brown" ],
"//": "barren in winter, fruits in summer",
"move_cost": 0,
"coverage": 80,
@@ -774,7 +791,7 @@
"name": "elderberry tree",
"description": "This tree is a member of the 'Sambucus' genus, producing fruit commonly known as elderberries. In the summer many berries can be picked. You could also cut it down with the right tools.",
"symbol": "7",
- "color": [ "light_green", "light_green", "red_green", "brown" ],
+ "color": [ "light_green", "red_green", "light_green", "brown" ],
"//": "barren in winter, fruits in summer",
"move_cost": 0,
"coverage": 80,
@@ -827,6 +844,7 @@
"type": "terrain",
"id": "t_tree_pine",
"name": "pine tree",
+ "looks_like": "t_tree",
"description": "A towering coniferous tree that belongs to the 'Pinus' genus, with the New England species varying from 'P. strobus', 'P. resinosa' and 'P. rigida'. If you examined the tree more closely, you might find usable sticky whorls and unharvested pinecones. Also, you could cut it down with the right tools.",
"symbol": "4",
"color": "green",
@@ -856,7 +874,7 @@
"name": "pine tree",
"description": "A towering coniferous tree that belongs to the 'Pinus' genus, with the New England species varying from 'P. strobus', 'P. resinosa' and 'P. rigida'. Some of the branches have been stripped away and many of the pinecones aren't developed fully yet, but given a season, it could be harvestable again. Also, you could cut it down with the right tools.",
"symbol": "4",
- "color": "green",
+ "color": "brown",
"copy-from": "t_tree_pine",
"looks_like": "t_tree_deadpine",
"transforms_into": "t_tree_pine",
@@ -866,6 +884,7 @@
"type": "terrain",
"id": "t_tree_deadpine",
"name": "dead pine tree",
+ "looks_like": "t_tree_dead",
"description": "A towering coniferous tree that belongs to the 'Pinus' genus, with the New England species varying from 'P. strobus', 'P. resinosa' and 'P. rigida'. This trees branches are bare, and it appears to be dead. You could cut it down with the right tools.",
"symbol": "4",
"color": "brown",
@@ -885,9 +904,10 @@
"type": "terrain",
"id": "t_tree_birch",
"name": "birch tree",
+ "looks_like": "t_tree",
"description": "A tall deciduous tree of the 'Betula' genus, with the characteristic peeling bark. Species like 'B. alleghaniensis', 'B. papyrifera', and 'B. populifolia' are the most common in the New England region. You could tear off some strips of bark if you examined the tree more closely. You could cut it down with the right tools.",
"symbol": "7",
- "color": [ "light_green", "light_green", "light_green", "brown" ],
+ "color": "white",
"//": "barren in winter, harvestable all year round",
"move_cost": 0,
"coverage": 80,
@@ -910,6 +930,7 @@
"type": "terrain",
"id": "t_tree_birch_harvested",
"name": "birch tree",
+ "looks_like": "t_tree_harvested",
"description": "A tall deciduous tree of the 'Betula' genus, with the characteristic peeling bark. Species like 'B. alleghaniensis', 'B. papyrifera', and 'B. populifolia' are the most common in the New England region. Looks like there isn't enough rhytidome to peel off yet. You could cut it down with the right tools.",
"symbol": "7",
"color": "green",
@@ -930,6 +951,7 @@
"type": "terrain",
"id": "t_tree_willow",
"name": "willow tree",
+ "looks_like": "t_tree",
"description": "A tall, wide deciduous tree of the 'Salix' genus, with long thin leafy branches that hang down like curtains. You could tear off some bark. You could cut it down with the right tools.",
"symbol": "4",
"color": [ "light_green", "light_green", "light_green", "brown" ],
@@ -955,6 +977,7 @@
"type": "terrain",
"id": "t_tree_willow_harvested",
"name": "willow tree",
+ "looks_like": "t_tree_harvested",
"description": "A tall, wide deciduous tree of the 'Salix' genus, with long thin leafy branches that hang down like curtains. Looks like all usable bark has been torn off, and new rhytidomes have not formed yet. You could cut it down with the right tools.",
"symbol": "4",
"color": [ "brown", "brown", "brown", "brown" ],
@@ -975,6 +998,7 @@
"type": "terrain",
"id": "t_tree_maple",
"name": "maple tree",
+ "looks_like": "t_tree",
"description": "A large deciduous tree of the 'Acer' genus. The leaves are distinctively shaped with five prongs. It could be tapped in order to extract maple syrup. You could cut it down with the right tools.",
"symbol": "7",
"color": [ "red", "light_green", "light_green", "red" ],
@@ -995,6 +1019,7 @@
"type": "terrain",
"id": "t_tree_maple_tapped",
"name": "maple tree",
+ "looks_like": "t_tree_maple",
"description": "A large deciduous tree of the 'Acer' genus. The leaves are distinctively shaped with five prongs. A spigot is wedged into the trunk, and sweet maple syrup can be extracted. You could cut it down with the right tools.",
"symbol": "7",
"color": [ "red", "light_green", "light_green", "red" ],
@@ -1015,9 +1040,10 @@
"type": "terrain",
"id": "t_tree_hickory",
"name": "hickory tree",
+ "looks_like": "t_tree",
"description": "A tall deciduous tree of the 'Carya' genus. You could look for hickory nuts if you examined the tree more closely. You could cut it down with the right tools.",
"symbol": "7",
- "color": [ "light_green", "light_green", "brown_green", "brown" ],
+ "color": [ "light_green", "light_green", "i_light_green", "brown" ],
"//": "barren in winter, harvestable in autum",
"move_cost": 0,
"coverage": 80,
@@ -1039,6 +1065,7 @@
{
"type": "terrain",
"id": "t_tree_hickory_harvested",
+ "looks_like": "t_tree_harvested",
"description": "A tall deciduous tree of the 'Carya' genus. It looks like the tree has been picked clean of hickory nuts. You could cut it down with the right tools.",
"name": "hickory tree",
"symbol": "7",
@@ -1154,6 +1181,7 @@
"type": "terrain",
"id": "t_tree_pecan",
"name": "pecan tree",
+ "looks_like": "t_tree_walnut",
"description": "A tall deciduous tree of the 'Carya' genus. You could look for pecan nuts if you examined the tree more closely. You could cut it down with the right tools.",
"//": "Pecan tree is not a local native and is only used in specific locations like orchards and gardens.",
"symbol": "7",
@@ -1177,6 +1205,7 @@
"type": "terrain",
"id": "t_tree_pecan_harvested",
"name": "pecan tree",
+ "looks_like": "t_tree_walnut_harvested",
"description": "A tall deciduous tree of the 'Carya' genus. It doesn't look like there are any pecan nuts left on the tree. You could cut it down with the right tools.",
"symbol": "7",
"color": [ "light_green", "light_green", "light_green", "brown" ],
@@ -1198,9 +1227,10 @@
"type": "terrain",
"id": "t_tree_hickory_dead",
"name": "dead hickory tree",
+ "looks_like": "t_tree_dead",
"description": "The dead remnants of a tall deciduous tree of the 'Carya' genus. Nothing useful can be foraged from this poor, dead tree. You could cut it down with the right tools.",
"symbol": "7",
- "color": "green",
+ "color": "brown",
"//": "dead, not usable at all",
"move_cost": 0,
"coverage": 80,
@@ -1218,6 +1248,7 @@
"type": "terrain",
"id": "t_underbrush",
"name": "underbrush",
+ "looks_like": "t_shrub",
"description": "Small plants and shrubs that decorate the forest. An observant forager could obtain edible plants, acorns, eggs, and mushrooms from it.",
"symbol": "#",
"color": "light_green",
@@ -1237,6 +1268,7 @@
"type": "terrain",
"id": "t_underbrush_harvested_spring",
"name": "underbrush",
+ "looks_like": "t_underbrush",
"description": "Small plants and shrubs that decorate the forest. It has been rummaged through and doesn't have anything useful left to forage from it.",
"symbol": "#",
"color": "green",
@@ -1266,6 +1298,7 @@
"type": "terrain",
"id": "t_underbrush_harvested_summer",
"name": "underbrush",
+ "looks_like": "t_underbrush",
"description": "Small plants and shrubs that decorate the forest. It has been rummaged through and doesn't have anything useful left to forage from it.",
"symbol": "#",
"color": "green",
@@ -1295,6 +1328,7 @@
"type": "terrain",
"id": "t_underbrush_harvested_autumn",
"name": "underbrush",
+ "looks_like": "t_underbrush",
"description": "Small plants and shrubs that decorate the forest. It has been rummaged through and doesn't have anything useful left to forage from it.",
"symbol": "#",
"color": "green",
@@ -1324,6 +1358,7 @@
"type": "terrain",
"id": "t_underbrush_harvested_winter",
"name": "underbrush",
+ "looks_like": "t_underbrush",
"description": "Small plants and shrubs that decorate the forest. It has been rummaged through and doesn't have anything useful left to forage from it. Frost covers it.",
"symbol": "#",
"color": "green",
@@ -1372,6 +1407,7 @@
"type": "terrain",
"id": "t_shrub_peanut",
"name": "peanut bush",
+ "looks_like": "t_shrub",
"description": "A small bush of crunchy peanuts.",
"//": "Peanut bushes are not a local native so this is for use in specific locations like farms and gardens.",
"symbol": "#",
@@ -1395,9 +1431,10 @@
"type": "terrain",
"id": "t_shrub_peanut_harvested",
"name": "peanut bush",
+ "looks_like": "t_shrub",
"description": "A small peanut bush that's fruitless.",
"symbol": "#",
- "color": "brown_green",
+ "color": "light_gray_green",
"move_cost": 8,
"coverage": 40,
"flags": [ "TRANSPARENT", "CONTAINER", "FLAMMABLE_ASH", "THIN_OBSTACLE", "SHRUB", "SHORT", "HARVESTED" ],
@@ -1416,6 +1453,7 @@
"type": "terrain",
"id": "t_shrub_blueberry",
"name": "blueberry bush",
+ "looks_like": "t_shrub",
"description": "A small bush of sweet blueberries.",
"symbol": "#",
"color": "light_blue_green",
@@ -1446,6 +1484,7 @@
"type": "terrain",
"id": "t_shrub_blueberry_harvested",
"name": "blueberry bush",
+ "looks_like": "t_shrub",
"description": "A small blueberry bush that's fruitless.",
"symbol": "#",
"color": "blue_green",
@@ -1467,6 +1506,7 @@
"type": "terrain",
"id": "t_shrub_strawberry",
"name": "strawberry bush",
+ "looks_like": "t_shrub",
"description": "A small bush of juicy strawberries.",
"symbol": "#",
"color": "light_red_green",
@@ -1497,6 +1537,7 @@
"type": "terrain",
"id": "t_shrub_strawberry_harvested",
"name": "strawberry bush",
+ "looks_like": "t_shrub",
"description": "A small strawberry bush that's fruitless.",
"symbol": "#",
"color": "red_green",
@@ -1551,7 +1592,7 @@
"name": "blackberry bush",
"description": "A small blackberry bush that's fruitless. Watch out for its thorns!",
"symbol": "#",
- "color": "black_green",
+ "color": "white_green",
"move_cost": 8,
"coverage": 40,
"flags": [ "TRANSPARENT", "CONTAINER", "FLAMMABLE_ASH", "THIN_OBSTACLE", "SHRUB", "SHORT", "SHARP", "HARVESTED" ],
@@ -1778,13 +1819,13 @@
"name": "hydrangea bush",
"description": "A fat, bush of fragrant blue hydrangeas.",
"symbol": "#",
- "color": "light_blue_green",
+ "color": "light_blue",
"move_cost": 8,
"coverage": 40,
"flags": [ "TRANSPARENT", "CONTAINER", "FLAMMABLE_ASH", "THIN_OBSTACLE", "SHRUB", "SHORT" ],
"transforms_into": "t_shrub_hydrangea_harvested",
"examine_action": "harvest_ter_nectar",
- "looks_like": "t_shrub_blueberry",
+ "looks_like": "t_shrub",
"//": "Insert hydrangea harvest in autumn once flowers have a use (same for other generic flowers).",
"bash": {
"str_min": 4,
@@ -1807,7 +1848,7 @@
"flags": [ "TRANSPARENT", "CONTAINER", "FLAMMABLE_ASH", "THIN_OBSTACLE", "SHRUB", "SHORT", "HARVESTED" ],
"transforms_into": "t_shrub_hydrangea",
"examine_action": "harvested_plant",
- "looks_like": "t_shrub_blueberry_harvested",
+ "looks_like": "t_shrub",
"bash": {
"str_min": 4,
"str_max": 60,
@@ -1823,13 +1864,13 @@
"name": "lilac bush",
"description": "A wide, bush of bright pinkish purple lilacs.",
"symbol": "#",
- "color": "magenta_green",
+ "color": "magenta",
"move_cost": 8,
"coverage": 40,
"flags": [ "TRANSPARENT", "CONTAINER", "FLAMMABLE_ASH", "THIN_OBSTACLE", "SHRUB", "SHORT" ],
"transforms_into": "t_shrub_lilac_harvested",
"examine_action": "harvest_ter_nectar",
- "looks_like": "t_shrub_hydrangea",
+ "looks_like": "t_shrub",
"//": "Insert lilac harvest once flowers have a use (same for other generic flowers).",
"bash": {
"str_min": 4,
@@ -1852,7 +1893,7 @@
"flags": [ "TRANSPARENT", "CONTAINER", "FLAMMABLE_ASH", "THIN_OBSTACLE", "SHRUB", "SHORT", "HARVESTED" ],
"transforms_into": "t_shrub_lilac",
"examine_action": "harvested_plant",
- "looks_like": "t_shrub_hydrangea_harvested",
+ "looks_like": "t_shrub",
"bash": {
"str_min": 4,
"str_max": 60,
@@ -1940,6 +1981,7 @@
"type": "terrain",
"id": "t_grass_white",
"name": "white grass",
+ "looks_like": "t_grass",
"description": "A section of Kentucky bluegrass covered in white latex-based paint, with neat lines designed for recreational sports.",
"symbol": ".",
"color": "white",
@@ -1965,8 +2007,8 @@
"name": "tall grass",
"description": "Tall grass about head high.",
"looks_like": "t_shrub",
- "symbol": ",",
- "color": "brown_green",
+ "symbol": "'",
+ "color": "green",
"move_cost": 5,
"coverage": 50,
"flags": [ "TRANSPARENT", "DIGGABLE", "PLOWABLE" ],
@@ -2000,6 +2042,7 @@
"type": "terrain",
"id": "t_golf_hole",
"name": "golf hole",
+ "looks_like": "t_grass_golf",
"description": "A small plastic cup embedded in the grass.",
"symbol": "o",
"color": "white",
@@ -2012,9 +2055,9 @@
"id": "t_fern",
"name": "fern",
"description": "A short plant with thousands of leaves which grow in a fractal pattern from the stem.",
- "symbol": "#",
- "looks_like": "t_shrub",
- "color": [ "green", "brown_green", "brown", "brown" ],
+ "symbol": ",",
+ "looks_like": "t_underbrush",
+ "color": [ "brown_green", "green", "green", "green" ],
"move_cost": 3,
"coverage": 20,
"flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "DIGGABLE", "FLAT", "THIN_OBSTACLE", "SHRUB" ],
@@ -2035,9 +2078,9 @@
"id": "t_fern_harvested",
"name": "fern",
"description": "A short plant with thousands leaves which grow in a fractal pattern, without any curled shoots.",
- "symbol": "#",
- "looks_like": "t_underbrush_harvested_spring",
- "color": [ "green", "brown_green", "brown", "brown" ],
+ "symbol": ",",
+ "looks_like": "t_grass_long",
+ "color": "green",
"move_cost": 3,
"coverage": 20,
"flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "DIGGABLE", "FLAT", "THIN_OBSTACLE", "SHRUB" ],
diff --git a/data/json/furniture_and_terrain/terrain-liquids.json b/data/json/furniture_and_terrain/terrain-liquids.json
index 21ada254267b2..e4bf0682d10e2 100644
--- a/data/json/furniture_and_terrain/terrain-liquids.json
+++ b/data/json/furniture_and_terrain/terrain-liquids.json
@@ -32,6 +32,7 @@
"name": "deep water",
"description": "You're having trouble seeing the bottom through the deep water here. With a watertight container, you could gather fresh water from here. Not safe to drink as is.",
"symbol": "~",
+ "looks_like": "t_water_sh",
"color": "blue",
"move_cost": 8,
"flags": [ "TRANSPARENT", "LIQUID", "SWIMMABLE", "DEEP_WATER", "FISHABLE" ],
@@ -143,6 +144,7 @@
"name": "shallow water",
"description": "The water isn't too deep here. With a watertight container, you could gather salt water from here.",
"symbol": "~",
+ "looks_like": "t_water_sh",
"color": "light_blue",
"move_cost": 5,
"flags": [ "TRANSPARENT", "LIQUID", "SWIMMABLE", "SALT_WATER", "FISHABLE" ],
@@ -170,6 +172,7 @@
"name": "deep water",
"description": "You're having trouble seeing the bottom through the deep water here. With a watertight container, you could gather salt water from here.",
"symbol": "~",
+ "looks_like": "t_water_dp",
"color": "blue",
"move_cost": 8,
"flags": [ "TRANSPARENT", "LIQUID", "SWIMMABLE", "SALT_WATER", "DEEP_WATER", "FISHABLE" ],
@@ -197,6 +200,7 @@
"name": "pool water",
"description": "A deep pool full of water. Never swim without a lifeguard present. Even though monsters probably ate them.",
"symbol": "~",
+ "looks_like": "t_water_dp",
"color": "light_blue",
"move_cost": 5,
"flags": [ "TRANSPARENT", "LIQUID", "SWIMMABLE", "INDOORS", "DEEP_WATER" ],
@@ -208,17 +212,43 @@
"name": "shallow pool water",
"description": "A shallow pool of water.",
"symbol": "~",
+ "looks_like": "t_water_pool",
"color": "light_blue",
"move_cost": 5,
"flags": [ "TRANSPARENT", "LIQUID", "SWIMMABLE", "INDOORS" ],
"examine_action": "water_source"
},
+ {
+ "type": "terrain",
+ "id": "t_water_pool_outdoors",
+ "name": "pool water",
+ "description": "A deep pool full of water. Never swim without a lifeguard present. Even though monsters probably ate them.",
+ "symbol": "~",
+ "looks_like": "t_water_pool",
+ "color": "light_blue",
+ "move_cost": 5,
+ "flags": [ "TRANSPARENT", "LIQUID", "SWIMMABLE", "DEEP_WATER" ],
+ "examine_action": "water_source"
+ },
+ {
+ "type": "terrain",
+ "id": "t_water_pool_shallow_outdoors",
+ "name": "shallow pool water",
+ "description": "A shallow pool of water.",
+ "symbol": "~",
+ "looks_like": "t_water_pool",
+ "color": "light_blue",
+ "move_cost": 5,
+ "flags": [ "TRANSPARENT", "LIQUID", "SWIMMABLE" ],
+ "examine_action": "water_source"
+ },
{
"type": "terrain",
"id": "t_sewage",
"name": "sewage",
"description": "Gross. Sewage water flows through here. As if it needed saying, this isn't safe to drink.",
"symbol": "~",
+ "looks_like": "t_water_murky",
"color": "light_green",
"move_cost": 6,
"flags": [ "TRANSPARENT", "SWIMMABLE" ],
@@ -270,6 +300,7 @@
"name": "ocean bed",
"description": "You are standing at the bottom of a body of salt water. With a watertight container, you could gather salt water from here. Not safe to drink as is.",
"symbol": "~",
+ "looks_like": "t_sand",
"color": "blue",
"move_cost": 8,
"flags": [ "TRANSPARENT", "LIQUID", "SWIMMABLE", "DEEP_WATER", "GOES_UP" ],
diff --git a/data/json/furniture_and_terrain/terrain-manufactured.json b/data/json/furniture_and_terrain/terrain-manufactured.json
index 7b8f805aacacf..f0bd6b6afeb8d 100644
--- a/data/json/furniture_and_terrain/terrain-manufactured.json
+++ b/data/json/furniture_and_terrain/terrain-manufactured.json
@@ -139,7 +139,7 @@
"type": "terrain",
"id": "t_atm",
"name": "ATM",
- "description": "For your banking convenience, this Automated Teller Machine is fully capable of operating autonomously in the event of complete network failure. You can deposit funds from cash cards and migrate all of your inflation-adjusted earnings to a single card. These things have seen better days. There's been a run on the bank, and this machine has the dents and cracks to prove it.",
+ "description": "For your banking convenience, this Automated Teller Machine is fully capable of operating autonomously in the event of complete network failure. You can deposit funds from cash cards and migrate all of your inflation-adjusted earnings to a single card. These things have seen better days. There's been a run on the bank, and this machine has the dents and cracks to prove it.",
"symbol": "&",
"color": "magenta",
"move_cost": 0,
@@ -294,7 +294,7 @@
{ "item": "processor", "count": [ 1, 2 ] },
{ "item": "RAM", "count": [ 4, 8 ] },
{ "item": "cable", "charges": [ 4, 6 ] },
- { "item": "small_lcd_screen", "count": [ 1, 2 ] },
+ { "item": "large_lcd_screen", "count": 1 },
{ "item": "e_scrap", "count": [ 10, 16 ] },
{ "item": "circuit", "count": [ 6, 10 ] },
{ "item": "power_supply", "count": [ 2, 4 ] },
@@ -313,7 +313,7 @@
{ "item": "processor", "prob": 25 },
{ "item": "RAM", "count": [ 0, 2 ], "prob": 50 },
{ "item": "cable", "charges": [ 1, 2 ], "prob": 50 },
- { "item": "small_lcd_screen", "prob": 25 },
+ { "item": "large_lcd_screen", "prob": 25 },
{ "item": "e_scrap", "count": [ 1, 4 ], "prob": 50 },
{ "item": "circuit", "count": [ 0, 2 ], "prob": 50 },
{ "item": "power_supply", "prob": 25 },
@@ -369,7 +369,7 @@
"type": "terrain",
"id": "t_centrifuge",
"name": "centrifuge",
- "description": "This is a centrifuge, a liquid separating device with an automated analyzer unit. It could be used to analyze a medical fluid sample, such as blood, if a test tube was placed in it.",
+ "description": "This is a centrifuge, a liquid separating device with an automated analyzer unit. It could be used to analyze a medical fluid sample, such as blood, if a test tube was placed in it.",
"symbol": "{",
"color": "magenta",
"move_cost": 0,
@@ -640,6 +640,7 @@
{ "item": "RAM", "count": [ 4, 8 ] },
{ "item": "cable", "charges": [ 8, 16 ] },
{ "item": "small_lcd_screen", "count": [ 2, 4 ] },
+ { "item": "large_lcd_screen", "count": 1 },
{ "item": "e_scrap", "count": [ 12, 24 ] },
{ "item": "circuit", "count": [ 6, 10 ] },
{ "item": "power_supply", "count": [ 4, 8 ] },
diff --git a/data/json/furniture_and_terrain/terrain-mechanisms.json b/data/json/furniture_and_terrain/terrain-mechanisms.json
index 5d1fbaea6348b..7c2d7515c3063 100644
--- a/data/json/furniture_and_terrain/terrain-mechanisms.json
+++ b/data/json/furniture_and_terrain/terrain-mechanisms.json
@@ -16,7 +16,7 @@
{ "item": "processor", "count": [ 1, 2 ] },
{ "item": "RAM", "count": [ 4, 8 ] },
{ "item": "cable", "charges": [ 4, 6 ] },
- { "item": "small_lcd_screen", "count": [ 1, 2 ] },
+ { "item": "large_lcd_screen", "count": 1 },
{ "item": "e_scrap", "count": [ 10, 16 ] },
{ "item": "circuit", "count": [ 6, 10 ] },
{ "item": "power_supply", "count": [ 2, 4 ] },
@@ -35,7 +35,7 @@
{ "item": "processor", "prob": 25 },
{ "item": "RAM", "count": [ 0, 2 ], "prob": 50 },
{ "item": "cable", "charges": [ 1, 2 ], "prob": 50 },
- { "item": "small_lcd_screen", "prob": 25 },
+ { "item": "large_lcd_screen", "prob": 25 },
{ "item": "e_scrap", "count": [ 1, 4 ], "prob": 50 },
{ "item": "circuit", "count": [ 0, 2 ], "prob": 50 },
{ "item": "power_supply", "prob": 25 },
@@ -63,7 +63,7 @@
{ "item": "processor", "count": [ 1, 2 ] },
{ "item": "RAM", "count": [ 4, 8 ] },
{ "item": "cable", "charges": [ 4, 6 ] },
- { "item": "small_lcd_screen", "count": [ 1, 2 ] },
+ { "item": "large_lcd_screen", "count": 1 },
{ "item": "e_scrap", "count": [ 10, 16 ] },
{ "item": "circuit", "count": [ 6, 10 ] },
{ "item": "power_supply", "count": [ 2, 4 ] },
@@ -82,7 +82,7 @@
{ "item": "processor", "prob": 25 },
{ "item": "RAM", "count": [ 0, 2 ], "prob": 50 },
{ "item": "cable", "charges": [ 1, 2 ], "prob": 50 },
- { "item": "small_lcd_screen", "prob": 25 },
+ { "item": "large_lcd_screen", "prob": 25 },
{ "item": "e_scrap", "count": [ 1, 4 ], "prob": 50 },
{ "item": "circuit", "count": [ 0, 2 ], "prob": 50 },
{ "item": "power_supply", "prob": 25 },
diff --git a/data/json/furniture_and_terrain/terrain-migo.json b/data/json/furniture_and_terrain/terrain-migo.json
index ef962b0dd83d7..511cb9a995394 100644
--- a/data/json/furniture_and_terrain/terrain-migo.json
+++ b/data/json/furniture_and_terrain/terrain-migo.json
@@ -98,7 +98,7 @@
"type": "terrain",
"id": "t_resin_hole_c",
"name": "closed resin portal",
- "description": "A tricuspid hatch of some sort of damp, flexible, resinous material. This one is closed tightly, but it looks like a firm push would cause it to snap open.",
+ "description": "A tricuspid hatch of some sort of damp, flexible, resinous material. This one is closed tightly, but it looks like a firm push would cause it to snap open.",
"symbol": "Y",
"color": "light_gray",
"move_cost": 0,
@@ -120,7 +120,7 @@
"type": "terrain",
"id": "t_resin_hole_o",
"name": "open resin portal",
- "description": "A tricuspid hatch of some sort of damp, flexible, resinous material. This one is open, the flaps held out by some sort of stringy mucus-like substance.",
+ "description": "A tricuspid hatch of some sort of damp, flexible, resinous material. This one is open, the flaps held out by some sort of stringy mucus-like substance.",
"symbol": "D",
"color": "light_gray",
"move_cost": 2,
diff --git a/data/json/furniture_and_terrain/terrain-railroads.json b/data/json/furniture_and_terrain/terrain-railroads.json
index d99efa6e62a27..bafd65519450b 100644
--- a/data/json/furniture_and_terrain/terrain-railroads.json
+++ b/data/json/furniture_and_terrain/terrain-railroads.json
@@ -8,15 +8,15 @@
"color": [ "brown" ],
"move_cost": 2,
"bash": {
- "str_min": 4,
+ "str_min": 30,
"str_max": 40,
- "ter_set": "t_rock_floor",
+ "ter_set": "t_null",
"sound": "crunch!",
"sound_fail": "whump!",
"items": [ { "item": "pebble", "count": [ 1, 3 ] }, { "item": "sharp_rock", "count": [ 0, 1 ] } ]
},
"deconstruct": {
- "ter_set": "t_rock_floor",
+ "ter_set": "t_null",
"items": [ { "item": "pebble", "count": [ 2, 6 ] }, { "item": "sharp_rock", "count": [ 1, 3 ] } ]
},
"flags": [ "BASHABLE", "TRANSPARENT" ]
@@ -562,5 +562,73 @@
"items": [ { "item": "pipe", "count": [ 2, 3 ] }, { "item": "scrap", "count": [ 0, 2 ] } ]
},
"flags": [ "TRANSPARENT", "NOITEM" ]
+ },
+ {
+ "id": "t_railroad_track_small",
+ "type": "terrain",
+ "name": "small railroad track",
+ "description": "Like a railroad track, only smaller. You could probably run a small vehicle on this.",
+ "symbol": "=",
+ "color": [ "cyan" ],
+ "move_cost": 3,
+ "looks_like": "t_railroad_track",
+ "bash": {
+ "str_min": 60,
+ "str_max": 210,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "ter_set": "t_railroad_rubble",
+ "items": [
+ { "item": "steel_lump", "count": [ 0, 1 ] },
+ { "item": "steel_chunk", "count": [ 0, 2 ] },
+ { "item": "scrap", "count": [ 2, 6 ] },
+ { "item": "splinter", "count": [ 6, 12 ] }
+ ]
+ },
+ "deconstruct": {
+ "ter_set": "t_railroad_rubble",
+ "items": [
+ { "item": "steel_lump", "count": [ 0, 1 ] },
+ { "item": "steel_chunk", "count": [ 0, 2 ] },
+ { "item": "scrap", "count": [ 2, 6 ] },
+ { "item": "splinter", "count": [ 6, 12 ] }
+ ]
+ },
+ "connects_to": "RAIL",
+ "flags": [ "BASHABLE", "RAIL", "TRANSPARENT" ]
+ },
+ {
+ "id": "t_railroad_track_small_d",
+ "type": "terrain",
+ "name": "small railroad track",
+ "description": "Like a railroad track, only smaller. You could probably run a small vehicle on this.",
+ "symbol": "=",
+ "color": [ "cyan" ],
+ "looks_like": "t_railroad_track_d",
+ "move_cost": 3,
+ "bash": {
+ "str_min": 60,
+ "str_max": 210,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "ter_set": "t_railroad_rubble",
+ "items": [
+ { "item": "steel_lump", "count": [ 0, 1 ] },
+ { "item": "steel_chunk", "count": [ 0, 2 ] },
+ { "item": "scrap", "count": [ 2, 6 ] },
+ { "item": "splinter", "count": [ 6, 12 ] }
+ ]
+ },
+ "deconstruct": {
+ "ter_set": "t_railroad_rubble",
+ "items": [
+ { "item": "steel_lump", "count": [ 0, 1 ] },
+ { "item": "steel_chunk", "count": [ 0, 2 ] },
+ { "item": "scrap", "count": [ 2, 6 ] },
+ { "item": "splinter", "count": [ 6, 12 ] }
+ ]
+ },
+ "connects_to": "RAIL",
+ "flags": [ "BASHABLE", "RAIL", "TRANSPARENT" ]
}
]
diff --git a/data/json/furniture_and_terrain/terrain-recreational.json b/data/json/furniture_and_terrain/terrain-recreational.json
index 1824976719054..52146b264b0e1 100644
--- a/data/json/furniture_and_terrain/terrain-recreational.json
+++ b/data/json/furniture_and_terrain/terrain-recreational.json
@@ -5,6 +5,7 @@
"name": "sandbox",
"description": "Children used to play in this sandbox. The population of lice probably diminished considerably now that they no longer do.",
"symbol": "#",
+ "looks_like": "t_sand",
"color": "yellow",
"move_cost": 3,
"deconstruct": {
@@ -36,6 +37,7 @@
"name": "slide",
"description": "A children's slide. Too small to slide on comfortably anymore.",
"symbol": "#",
+ "looks_like": "t_ladder_up",
"color": "light_cyan",
"move_cost": 4,
"deconstruct": { "ter_set": "t_dirt", "items": [ { "item": "sheet_metal", "count": 1 }, { "item": "pipe", "count": [ 4, 8 ] } ] },
@@ -53,6 +55,7 @@
"type": "terrain",
"id": "t_monkey_bars",
"name": "monkey bars",
+ "looks_like": "t_ladder_up",
"description": "A set of monkey bars, to be used by children to train their arms by hanging from the bars, and have fun.",
"symbol": "#",
"color": "cyan",
@@ -73,6 +76,7 @@
"id": "t_backboard",
"name": "backboard",
"description": "A basketball backboard.",
+ "looks_like": "t_chainfence",
"symbol": "7",
"color": "red",
"move_cost": 0,
@@ -97,6 +101,7 @@
"name": "backboard",
"description": "A metal backboard.",
"symbol": "7",
+ "looks_like": "t_backboard",
"color": [ "red" ],
"move_cost": 0,
"roof": "t_flat_roof",
diff --git a/data/json/furniture_and_terrain/terrain-roofs.json b/data/json/furniture_and_terrain/terrain-roofs.json
index 32ba328e06998..fd62eeac4bb63 100644
--- a/data/json/furniture_and_terrain/terrain-roofs.json
+++ b/data/json/furniture_and_terrain/terrain-roofs.json
@@ -43,6 +43,7 @@
"description": "Channels water from the roof towards the ground, it looks flimsy.",
"name": "rain gutter",
"symbol": "LINE_OXOX",
+ "looks_like": "t_metal_floor",
"color": "white",
"move_cost": 3,
"flags": [ "TRANSPARENT", "NOITEM", "THIN_OBSTACLE", "MOUNTABLE", "TINY", "AUTO_WALL_SYMBOL", "UNSTABLE" ],
@@ -66,6 +67,7 @@
"description": "Channels water from the roof towards the ground, it looks flimsy.",
"name": "rain gutter",
"symbol": "LINE_OXOX",
+ "looks_like": "t_gutter_north",
"color": "white",
"move_cost": 3,
"flags": [ "TRANSPARENT", "NOITEM", "THIN_OBSTACLE", "MOUNTABLE", "TINY", "AUTO_WALL_SYMBOL", "UNSTABLE" ],
@@ -89,6 +91,7 @@
"description": "Channels water from the roof towards the ground, it looks flimsy.",
"name": "rain gutter",
"symbol": "LINE_OXOX",
+ "looks_like": "t_gutter_north",
"color": "white",
"move_cost": 3,
"flags": [ "TRANSPARENT", "NOITEM", "THIN_OBSTACLE", "MOUNTABLE", "TINY", "AUTO_WALL_SYMBOL", "UNSTABLE" ],
@@ -112,6 +115,7 @@
"description": "Channels water from the roof towards the ground, it looks flimsy.",
"name": "rain gutter",
"symbol": "LINE_OXOX",
+ "looks_like": "t_gutter_north",
"color": "white",
"move_cost": 3,
"flags": [ "TRANSPARENT", "NOITEM", "THIN_OBSTACLE", "MOUNTABLE", "TINY", "AUTO_WALL_SYMBOL", "UNSTABLE" ],
@@ -133,8 +137,9 @@
"type": "terrain",
"id": "t_gutter_drop",
"name": "gutter drop",
- "description": "Funnels water from gutter system towards the ground, it looks flimsy. You may be able to climb down here.",
+ "description": "Funnels water from gutter system towards the ground, it looks flimsy. You may be able to climb down here.",
"symbol": "o",
+ "looks_like": "t_gutter_north",
"color": "white",
"move_cost": 3,
"flags": [ "TRANSPARENT", "NOITEM", "THIN_OBSTACLE", "MOUNTABLE", "TINY", "AUTO_WALL_SYMBOL", "UNSTABLE", "CLIMBABLE" ],
@@ -156,8 +161,9 @@
"type": "terrain",
"id": "t_gutter_downspout",
"name": "downspout",
- "description": "A length of gutter running from the roof to the ground, you could place a container underneath it to collect rainwater. It looks flimsy. You may be able to climb down here.",
+ "description": "A length of gutter running from the roof to the ground, you could place a container underneath it to collect rainwater. It looks flimsy. You may be able to climb down here.",
"symbol": "|",
+ "looks_like": "t_chainfence_posts",
"color": "white",
"move_cost": 3,
"trap": "tr_downspout_funnel",
@@ -181,6 +187,7 @@
"name": "flat roof",
"description": "A flat, gray section of rooftop.",
"symbol": ".",
+ "looks_like": "t_concrete",
"color": "dark_gray",
"move_cost": 2,
"flags": [ "TRANSPARENT", "FLAT" ],
@@ -294,6 +301,7 @@
"name": "skylight",
"description": "A giant sheet of glass inserted into the roof, lets light pass through.",
"symbol": "o",
+ "looks_like": "t_linoleum_white",
"color": "cyan",
"move_cost": 2,
"trap": "tr_ledge",
@@ -312,7 +320,7 @@
"id": "t_rock_roof",
"name": "rock roof",
"description": "A section of flat natural rock.",
- "looks_like": "t_flat_roof",
+ "looks_like": "t_rock_floor",
"symbol": ".",
"color": "brown",
"move_cost": 2,
diff --git a/data/json/furniture_and_terrain/terrain-traps.json b/data/json/furniture_and_terrain/terrain-traps.json
index 308ed4e601079..6d6d564d03819 100644
--- a/data/json/furniture_and_terrain/terrain-traps.json
+++ b/data/json/furniture_and_terrain/terrain-traps.json
@@ -8,7 +8,7 @@
"color": "black",
"move_cost": 2,
"trap": "tr_ledge",
- "flags": [ "TRANSPARENT", "NOITEM" ]
+ "flags": [ "TRANSPARENT", "NOITEM", "NO_FLOOR" ]
},
{
"type": "terrain",
diff --git a/data/json/furniture_and_terrain/terrain-walls.json b/data/json/furniture_and_terrain/terrain-walls.json
index ff4b3f9235dd3..5a5f91f6c905b 100644
--- a/data/json/furniture_and_terrain/terrain-walls.json
+++ b/data/json/furniture_and_terrain/terrain-walls.json
@@ -6,8 +6,12 @@
"entries": [
{ "item": "rock", "count": [ 0, 2 ] },
{ "item": "wood_panel", "count": [ 0, 1 ] },
- { "item": "nail", "charges": [ 2, 8 ] },
- { "item": "splinter", "count": [ 1, 5 ] }
+ { "item": "nail", "charges": [ 4, 16 ] },
+ { "item": "splinter", "count": [ 1, 5 ] },
+ { "item": "2x4", "count": [ 1, 2 ], "prob": 25 },
+ { "item": "pipe", "count": [ 0, 2 ], "prob": 10 },
+ { "item": "cu_pipe", "count": [ 0, 2 ], "prob": 10 },
+ { "item": "cable", "charges": [ 0, 200 ], "prob": 10 }
]
},
{
@@ -1220,7 +1224,7 @@
"type": "terrain",
"id": "t_column_halfway",
"name": "half-built column",
- "description": "An empty wooden frame in the shape of a column, built around a concrete and rebar foundation. It isn't capable of supporting roofs or shelter, and appears to need more resources before being considered complete.",
+ "description": "An empty wooden frame in the shape of a column, built around a concrete and rebar foundation. It isn't capable of supporting roofs or shelter, and appears to need more resources before being considered complete.",
"symbol": "*",
"color": "light_gray",
"move_cost": 5,
diff --git a/data/json/furniture_and_terrain/terrain-windows.json b/data/json/furniture_and_terrain/terrain-windows.json
index 5158db842bdd4..e3396f46b8c47 100644
--- a/data/json/furniture_and_terrain/terrain-windows.json
+++ b/data/json/furniture_and_terrain/terrain-windows.json
@@ -136,7 +136,16 @@
"move_cost": 4,
"coverage": 60,
"roof": "t_flat_roof",
- "flags": [ "TRANSPARENT", "FLAMMABLE", "NOITEM", "OPENCLOSE_INSIDE", "MOUNTABLE", "CONNECT_TO_WALL", "THIN_OBSTACLE" ],
+ "flags": [
+ "TRANSPARENT",
+ "FLAMMABLE",
+ "NOITEM",
+ "OPENCLOSE_INSIDE",
+ "MOUNTABLE",
+ "CONNECT_TO_WALL",
+ "THIN_OBSTACLE",
+ "SMALL_PASSAGE"
+ ],
"close": "t_window_no_curtains",
"bash": {
"str_min": 3,
@@ -211,7 +220,16 @@
"move_cost": 4,
"coverage": 60,
"roof": "t_flat_roof",
- "flags": [ "TRANSPARENT", "FLAMMABLE", "NOITEM", "OPENCLOSE_INSIDE", "MOUNTABLE", "CONNECT_TO_WALL", "THIN_OBSTACLE" ],
+ "flags": [
+ "TRANSPARENT",
+ "FLAMMABLE",
+ "NOITEM",
+ "OPENCLOSE_INSIDE",
+ "MOUNTABLE",
+ "CONNECT_TO_WALL",
+ "THIN_OBSTACLE",
+ "SMALL_PASSAGE"
+ ],
"examine_action": "curtains",
"close": "t_window_domestic",
"bash": {
@@ -337,7 +355,16 @@
"symbol": "0",
"color": "yellow",
"move_cost": 4,
- "flags": [ "TRANSPARENT", "NOITEM", "FLAMMABLE", "SUPPORTS_ROOF", "MOUNTABLE", "CONNECT_TO_WALL", "THIN_OBSTACLE" ],
+ "flags": [
+ "TRANSPARENT",
+ "NOITEM",
+ "FLAMMABLE",
+ "SUPPORTS_ROOF",
+ "MOUNTABLE",
+ "CONNECT_TO_WALL",
+ "THIN_OBSTACLE",
+ "SMALL_PASSAGE"
+ ],
"bash": {
"str_min": 10,
"str_max": 70,
@@ -371,7 +398,7 @@
"ter_set": "t_window_empty",
"items": [ { "item": "glass_shard", "count": [ 6, 10 ] } ]
},
- "flags": [ "TRANSPARENT", "SHARP", "FLAMMABLE", "NOITEM", "MOUNTABLE", "CONNECT_TO_WALL" ]
+ "flags": [ "TRANSPARENT", "SHARP", "FLAMMABLE", "NOITEM", "MOUNTABLE", "CONNECT_TO_WALL", "SMALL_PASSAGE" ]
},
{
"type": "terrain",
diff --git a/data/json/furniture_and_terrain/terrain-zlevel-transitions.json b/data/json/furniture_and_terrain/terrain-zlevel-transitions.json
index e443cdc68951d..eee796b62309c 100644
--- a/data/json/furniture_and_terrain/terrain-zlevel-transitions.json
+++ b/data/json/furniture_and_terrain/terrain-zlevel-transitions.json
@@ -153,7 +153,7 @@
"symbol": "<",
"color": "dark_gray",
"move_cost": 2,
- "flags": [ "TRANSPARENT", "GOES_UP", "PLACE_ITEM" ]
+ "flags": [ "TRANSPARENT", "GOES_UP", "PLACE_ITEM", "DIFFICULT_Z" ]
},
{
"type": "terrain",
@@ -163,7 +163,7 @@
"symbol": ">",
"color": "dark_gray",
"move_cost": 2,
- "flags": [ "TRANSPARENT", "GOES_DOWN", "PLACE_ITEM" ]
+ "flags": [ "TRANSPARENT", "GOES_DOWN", "PLACE_ITEM", "DIFFICULT_Z" ]
},
{
"type": "terrain",
@@ -193,7 +193,7 @@
"symbol": "<",
"color": "white",
"move_cost": 2,
- "flags": [ "TRANSPARENT", "GOES_UP" ]
+ "flags": [ "TRANSPARENT", "GOES_UP", "DIFFICULT_Z" ]
},
{
"type": "terrain",
diff --git a/data/json/gates.json b/data/json/gates.json
index e9cb08b6858b5..e196db0af5b80 100644
--- a/data/json/gates.json
+++ b/data/json/gates.json
@@ -18,7 +18,7 @@
"t_strconc_wall"
],
"messages": {
- "pull": "You turn the handle...",
+ "pull": "You turn the handle…",
"open": "The gate is opened!",
"close": "The gate is closed!",
"fail": "The gate can't be closed!"
@@ -45,7 +45,7 @@
"t_strconc_wall"
],
"messages": {
- "pull": "You turn the handle...",
+ "pull": "You turn the handle…",
"open": "The gate is opened!",
"close": "The gate is closed!",
"fail": "The gate can't be closed!"
@@ -60,7 +60,7 @@
"floor": "t_dirtfloor",
"walls": "t_wall_wood",
"messages": {
- "pull": "You pull the rope...",
+ "pull": "You pull the rope…",
"open": "The barn doors opened!",
"close": "The barn doors closed!",
"fail": "The barn doors can't be closed!"
@@ -75,7 +75,7 @@
"floor": "t_palisade_gate_o",
"walls": "t_palisade",
"messages": {
- "pull": "You pull the rope...",
+ "pull": "You pull the rope…",
"open": "The palisade gate swings open!",
"close": "The palisade gate swings closed with a crash!",
"fail": "The palisade gate can't be closed!"
@@ -90,7 +90,7 @@
"floor": "t_metal_floor",
"walls": "t_wall_metal",
"messages": {
- "pull": "You throw the lever...",
+ "pull": "You throw the lever…",
"open": "The door rises!",
"close": "The door slams shut!",
"fail": "The door can't be closed!"
diff --git a/data/json/harvest.json b/data/json/harvest.json
index 2b837a01768d6..49512175917ee 100644
--- a/data/json/harvest.json
+++ b/data/json/harvest.json
@@ -130,6 +130,32 @@
{ "drop": "fat", "type": "flesh", "mass_ratio": 0.07 }
]
},
+ {
+ "id": "human_fur",
+ "//": "drops regular stomach",
+ "type": "harvest",
+ "entries": [
+ { "drop": "mutant_human_flesh", "type": "flesh", "mass_ratio": 0.34 },
+ { "drop": "hstomach", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" },
+ { "drop": "bone", "type": "bone", "mass_ratio": 0.15 },
+ { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 },
+ { "drop": "raw_fur", "type": "skin", "mass_ratio": 0.02 },
+ { "drop": "mutant_human_fat", "type": "flesh", "mass_ratio": 0.07 }
+ ]
+ },
+ {
+ "id": "human_large_fur",
+ "//": "drops large stomach",
+ "type": "harvest",
+ "entries": [
+ { "drop": "mutant_human_flesh", "type": "flesh", "mass_ratio": 0.34 },
+ { "drop": "hstomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" },
+ { "drop": "bone", "type": "bone", "mass_ratio": 0.15 },
+ { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 },
+ { "drop": "raw_fur", "type": "skin", "mass_ratio": 0.02 },
+ { "drop": "mutant_human_fat", "type": "flesh", "mass_ratio": 0.07 }
+ ]
+ },
{
"id": "mammal_small_leather",
"//": "does not drop stomach or other small organs",
@@ -184,6 +210,25 @@
{ "drop": "fat", "type": "flesh", "mass_ratio": 0.07 }
]
},
+ {
+ "id": "mutant_mammal_large_leather",
+ "//": "drops large stomach",
+ "type": "harvest",
+ "entries": [
+ { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.32 },
+ { "drop": "mutant_meat_scrap", "type": "flesh", "mass_ratio": 0.01 },
+ { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 },
+ { "drop": "liver", "type": "offal", "mass_ratio": 0.01 },
+ { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 },
+ { "drop": "sweetbread", "type": "flesh", "mass_ratio": 0.002 },
+ { "drop": "kidney", "type": "offal", "mass_ratio": 0.002 },
+ { "drop": "stomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" },
+ { "drop": "bone", "type": "bone", "mass_ratio": 0.15 },
+ { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 },
+ { "drop": "raw_leather", "type": "skin", "mass_ratio": 0.02 },
+ { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.07 }
+ ]
+ },
{
"id": "mammal_small_wool",
"//": "does not drop stomach or other small organs",
@@ -255,6 +300,24 @@
{ "drop": "fat", "type": "flesh", "mass_ratio": 0.07 }
]
},
+ {
+ "id": "mutant_animal_large_noskin",
+ "//": "for those vertebrates that don't have something you can skin off of them",
+ "type": "harvest",
+ "entries": [
+ { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.32 },
+ { "drop": "mutant_meat_scrap", "type": "flesh", "mass_ratio": 0.01 },
+ { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 },
+ { "drop": "liver", "type": "offal", "mass_ratio": 0.01 },
+ { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 },
+ { "drop": "sweetbread", "type": "flesh", "mass_ratio": 0.002 },
+ { "drop": "kidney", "type": "offal", "mass_ratio": 0.002 },
+ { "drop": "stomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" },
+ { "drop": "bone", "type": "bone", "mass_ratio": 0.15 },
+ { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 },
+ { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.07 }
+ ]
+ },
{
"id": "meatslug",
"//": "no bones or organs",
@@ -265,6 +328,16 @@
{ "drop": "fat", "type": "offal", "mass_ratio": 0.1 }
]
},
+ {
+ "id": "mutant_meatslug",
+ "//": "no bones or organs",
+ "type": "harvest",
+ "entries": [
+ { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.4 },
+ { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.1 },
+ { "drop": "mutant_fat", "type": "offal", "mass_ratio": 0.1 }
+ ]
+ },
{
"id": "bird_tiny",
"type": "harvest",
@@ -287,9 +360,9 @@
"id": "bird_large",
"type": "harvest",
"entries": [
- { "drop": "meat", "type": "flesh", "mass_ratio": 0.3 },
- { "drop": "meat_scrap", "type": "flesh", "mass_ratio": 0.03 },
- { "drop": "fat", "type": "flesh", "mass_ratio": 0.18 },
+ { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.3 },
+ { "drop": "mutant_meat_scrap", "type": "flesh", "mass_ratio": 0.03 },
+ { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.18 },
{ "drop": "feather", "type": "skin", "mass_ratio": 0.02 },
{ "drop": "bone", "type": "bone", "mass_ratio": 0.1 }
]
@@ -338,8 +411,8 @@
"id": "arachnid",
"type": "harvest",
"entries": [
- { "drop": "meat", "type": "flesh", "mass_ratio": 0.33 },
- { "drop": "fat", "type": "flesh", "mass_ratio": 0.04 },
+ { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.33 },
+ { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.04 },
{ "drop": "sinew", "type": "bone", "mass_ratio": 0.01 },
{ "drop": "chitin_piece", "type": "bone", "mass_ratio": 0.1 }
]
@@ -359,7 +432,7 @@
"//": "todo: add stinger here and remove drops from death",
"type": "harvest",
"entries": [
- { "drop": "meat", "type": "flesh", "mass_ratio": 0.33 },
+ { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.33 },
{ "drop": "sinew", "type": "bone", "mass_ratio": 0.01 },
{ "drop": "chitin_piece", "type": "bone", "mass_ratio": 0.1 }
]
@@ -369,7 +442,7 @@
"//": "todo: add stinger here and remove drops from death",
"type": "harvest",
"entries": [
- { "drop": "meat", "type": "flesh", "mass_ratio": 0.33 },
+ { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.33 },
{ "drop": "sinew", "type": "bone", "mass_ratio": 0.01 },
{ "drop": "chitin_piece", "type": "bone", "mass_ratio": 0.1 }
]
@@ -459,7 +532,19 @@
"entries": [
{ "drop": "human_flesh", "type": "flesh", "mass_ratio": 0.2 },
{ "drop": "hstomach", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" },
- { "drop": "fat", "type": "flesh", "mass_ratio": 0.1 },
+ { "drop": "human_fat", "type": "flesh", "mass_ratio": 0.1 },
+ { "drop": "bone_human", "type": "bone", "mass_ratio": 0.12 },
+ { "drop": "sinew", "type": "bone", "mass_ratio": 0.001 },
+ { "drop": "raw_leather", "type": "skin", "mass_ratio": 0.01 }
+ ]
+ },
+ {
+ "id": "mutant_human",
+ "type": "harvest",
+ "entries": [
+ { "drop": "mutant_human_flesh", "type": "flesh", "mass_ratio": 0.2 },
+ { "drop": "hstomach", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" },
+ { "drop": "mutant_human_fat", "type": "flesh", "mass_ratio": 0.1 },
{ "drop": "bone_human", "type": "bone", "mass_ratio": 0.12 },
{ "drop": "sinew", "type": "bone", "mass_ratio": 0.001 },
{ "drop": "raw_leather", "type": "skin", "mass_ratio": 0.01 }
@@ -472,7 +557,7 @@
{ "drop": "human_flesh", "type": "flesh", "mass_ratio": 0.18 },
{ "drop": "meat", "type": "flesh", "mass_ratio": 0.4 },
{ "drop": "hstomach", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" },
- { "drop": "fat", "type": "flesh", "mass_ratio": 0.1 },
+ { "drop": "human_fat", "type": "flesh", "mass_ratio": 0.1 },
{ "drop": "bone_human", "type": "bone", "mass_ratio": 0.12 },
{ "drop": "sinew", "type": "bone", "mass_ratio": 0.001 },
{ "drop": "raw_leather", "type": "skin", "mass_ratio": 0.01 },
diff --git a/data/json/item_actions.json b/data/json/item_actions.json
index cf01fb65d0cd8..e0d14f221888f 100644
--- a/data/json/item_actions.json
+++ b/data/json/item_actions.json
@@ -782,7 +782,7 @@
{
"type": "item_action",
"id": "RADIOCAR",
- "name": "..."
+ "name": "…"
},
{
"type": "item_action",
diff --git a/data/json/item_category.json b/data/json/item_category.json
index c64f823b076d7..5ffa968ae86e2 100644
--- a/data/json/item_category.json
+++ b/data/json/item_category.json
@@ -3,54 +3,63 @@
"id": "guns",
"type": "ITEM_CATEGORY",
"name": "GUNS",
+ "zone": "LOOT_GUNS",
"sort_rank": -23
},
{
"id": "magazines",
"type": "ITEM_CATEGORY",
"name": "MAGAZINES",
+ "zone": "LOOT_MAGAZINES",
"sort_rank": -22
},
{
"id": "ammo",
"type": "ITEM_CATEGORY",
"name": "AMMO",
+ "zone": "LOOT_AMMO",
"sort_rank": -21
},
{
"id": "weapons",
"type": "ITEM_CATEGORY",
"name": "WEAPONS",
+ "zone": "LOOT_WEAPONS",
"sort_rank": -20
},
{
"id": "tools",
"type": "ITEM_CATEGORY",
"name": "TOOLS",
+ "zone": "LOOT_TOOLS",
"sort_rank": -19
},
{
"id": "clothing",
"type": "ITEM_CATEGORY",
"name": "CLOTHING",
+ "//": "zone is hardcoded due to filthy clothing",
"sort_rank": -18
},
{
"id": "food",
"type": "ITEM_CATEGORY",
"name": "FOOD",
+ "//": "zone is hardcoded",
"sort_rank": -17
},
{
"id": "drugs",
"type": "ITEM_CATEGORY",
"name": "DRUGS",
+ "zone": "LOOT_DRUGS",
"sort_rank": -16
},
{
"id": "books",
"type": "ITEM_CATEGORY",
"name": "BOOKS",
+ "zone": "LOOT_BOOKS",
"sort_rank": -15
},
{
@@ -63,66 +72,96 @@
"id": "mods",
"type": "ITEM_CATEGORY",
"name": "MODS",
+ "zone": "LOOT_MODS",
"sort_rank": -13
},
{
"id": "mutagen",
"type": "ITEM_CATEGORY",
"name": "MUTAGENS",
+ "zone": "LOOT_MUTAGENS",
"sort_rank": -12
},
{
"id": "bionics",
"type": "ITEM_CATEGORY",
"name": "BIONICS",
+ "zone": "LOOT_BIONICS",
"sort_rank": -12
},
{
"id": "veh_parts",
"type": "ITEM_CATEGORY",
"name": "VEHICLE PARTS",
+ "zone": "LOOT_VEHICLE_PARTS",
"sort_rank": -10
},
{
"id": "other",
"type": "ITEM_CATEGORY",
"name": "OTHER",
+ "zone": "LOOT_OTHER",
"sort_rank": -9
},
{
"id": "fuel",
"type": "ITEM_CATEGORY",
"name": "FUEL",
+ "zone": "LOOT_FUEL",
"sort_rank": -8
},
{
"id": "seeds",
"type": "ITEM_CATEGORY",
"name": "SEEDS",
+ "zone": "LOOT_SEEDS",
"sort_rank": -7
},
{
"id": "chems",
"type": "ITEM_CATEGORY",
"name": "CHEMICAL STUFF",
+ "zone": "LOOT_CHEMICAL",
"sort_rank": 5
},
{
"id": "spare_parts",
"type": "ITEM_CATEGORY",
"name": "SPARE PARTS",
+ "zone": "LOOT_SPARE_PARTS",
"sort_rank": 8
},
+ {
+ "id": "container",
+ "type": "ITEM_CATEGORY",
+ "name": "CONTAINERS",
+ "zone": "LOOT_CONTAINERS",
+ "sort_rank": 9
+ },
{
"id": "artifacts",
"type": "ITEM_CATEGORY",
"name": "ARTIFACTS",
+ "zone": "LOOT_ARTIFACTS",
"sort_rank": 10
},
{
"id": "armor",
"type": "ITEM_CATEGORY",
"name": "ARMOR",
+ "//": "zone is hardcoded due to filthy clothing",
"sort_rank": 20
+ },
+ {
+ "id": "ITEMS_WORN",
+ "type": "ITEM_CATEGORY",
+ "name": "ITEMS WORN",
+ "sort_rank": -100
+ },
+ {
+ "id": "WEAPON_HELD",
+ "type": "ITEM_CATEGORY",
+ "name": "WEAPON HELD",
+ "sort_rank": -200
}
]
diff --git a/data/json/itemgroups/SUS_specific_use_storage_items.json b/data/json/itemgroups/SUS_specific_use_storage_items.json
index 0133f372f0ef4..9c428abddbf11 100644
--- a/data/json/itemgroups/SUS_specific_use_storage_items.json
+++ b/data/json/itemgroups/SUS_specific_use_storage_items.json
@@ -188,8 +188,8 @@
{ "item": "towel", "count": [ 1, 3 ] },
{ "item": "brush" },
{ "item": "brush", "prob": 85 },
- { "item": "bleach", "prob": 75 },
- { "item": "ammonia", "prob": 65 }
+ { "item": "bleach", "prob": 75, "charges-min": 1 },
+ { "item": "ammonia", "prob": 65, "charges-min": 1 }
]
}
]
diff --git a/data/json/itemgroups/ammo.json b/data/json/itemgroups/ammo.json
index 2156da28544d9..4d76677a737f4 100644
--- a/data/json/itemgroups/ammo.json
+++ b/data/json/itemgroups/ammo.json
@@ -178,7 +178,9 @@
[ "3006", 20 ],
[ "50_incendiary", 10 ],
[ "50bmg", 30 ],
+ [ "50match", 30 ],
[ "50ss", 10 ],
+ [ "50_mk211", 1 ],
[ "556_incendiary", 15 ],
[ "556", 85 ],
[ "762_51_incendiary", 10 ],
diff --git a/data/json/itemgroups/clothing.json b/data/json/itemgroups/clothing.json
index 1d927003cead0..ea7c33317b601 100644
--- a/data/json/itemgroups/clothing.json
+++ b/data/json/itemgroups/clothing.json
@@ -279,7 +279,16 @@
{
"id": "clothing_watch",
"type": "item_group",
- "items": [ [ "gold_watch", 10 ], [ "pocketwatch", 25 ], [ "wristwatch", 100 ] ]
+ "items": [
+ { "item": "wristwatch", "prob": 90 },
+ { "item": "silver_watch", "prob": 70 },
+ { "item": "gold_watch", "prob": 40 },
+ { "item": "platinum_watch", "prob": 10 },
+ { "item": "sf_watch", "prob": 5 },
+ { "item": "pocketwatch", "prob": 30 },
+ { "item": "diving_watch", "prob": 20 },
+ { "item": "game_watch", "prob": 20 }
+ ]
},
{
"id": "clothing_work_boots",
@@ -445,6 +454,7 @@
[ "jersey", 40 ],
[ "coat_rain", 15 ],
[ "hood_rain", 15 ],
+ [ "unitard", 10 ],
[ "gloves_wraps", 45 ],
[ "jeans", 30 ],
[ "sports_bra", 25 ],
@@ -520,6 +530,8 @@
[ "nanoskirt", 30 ],
[ "camisole", 60 ],
[ "corset", 20 ],
+ [ "unitard", 5 ],
+ [ "leotard", 10 ],
[ "stockings", 50 ],
[ "leggings", 20 ],
[ "tights", 50 ]
@@ -551,16 +563,24 @@
"subtype": "distribution",
"entries": [
{ "item": "jeans", "prob": 90 },
- { "item": "pants_checkered", "prob": 5 },
+ { "item": "jeans_red", "prob": 50 },
{ "item": "shorts", "prob": 70 },
{ "item": "shorts_denim", "prob": 35 },
+ { "item": "b_shorts", "prob": 30 },
+ { "item": "shorts_cargo", "prob": 50 },
+ { "item": "postman_shorts", "prob": 12 },
+ { "item": "under_armor_shorts", "prob": 5 },
{ "item": "pants", "prob": 75 },
- { "item": "leather_belt", "prob": 30 },
{ "item": "pants_leather", "prob": 60 },
{ "item": "pants_cargo", "prob": 70 },
- { "item": "shorts_cargo", "prob": 50 },
- { "item": "under_armor_shorts", "prob": 20 },
- { "item": "postman_shorts", "prob": 5 },
+ { "item": "pants_checkered", "prob": 55 },
+ { "item": "pants_ski", "prob": 45 },
+ { "item": "pants_fur", "prob": 5 },
+ { "item": "pants_faux_fur", "prob": 15 },
+ { "item": "hot_pants", "prob": 30 },
+ { "item": "hot_pants_fur", "prob": 5 },
+ { "item": "hot_pants_leather", "prob": 25 },
+ { "item": "breeches", "prob": 25 },
{ "item": "kilt", "prob": 5 }
]
},
@@ -573,11 +593,2296 @@
{ "item": "skirt", "prob": 75 },
{ "item": "skirt_leather", "prob": 5 },
{ "item": "leggings", "prob": 15 },
- { "item": "dress", "prob": 70 },
- { "item": "sundress", "prob": 50 },
- { "item": "dress_wedding", "prob": 1 },
- { "item": "b_shorts", "prob": 15 },
{ "item": "nanoskirt", "prob": 10 }
]
+ },
+ {
+ "type": "item_group",
+ "id": "dresser",
+ "ammo": 50,
+ "magazine": 100,
+ "items": [
+ [ "jeans", 90 ],
+ [ "pants_checkered", 5 ],
+ [ "shorts", 70 ],
+ [ "shorts_denim", 50 ],
+ [ "pants", 75 ],
+ [ "leather_belt", 30 ],
+ [ "pants_leather", 60 ],
+ [ "pants_cargo", 70 ],
+ [ "shorts_cargo", 50 ],
+ [ "motorbike_pants", 5 ],
+ [ "breeches", 5 ],
+ [ "skirt", 75 ],
+ [ "dress", 70 ],
+ [ "sundress", 50 ],
+ [ "camisole", 60 ],
+ [ "bra", 70 ],
+ [ "hairpin", 30 ],
+ [ "fc_hairpin", 5 ],
+ [ "barrette", 15 ],
+ [ "tieclip", 10 ],
+ [ "collarpin", 10 ],
+ [ "undershirt", 70 ],
+ [ "boxer_shorts", 50 ],
+ [ "briefs", 40 ],
+ [ "boxer_briefs", 45 ],
+ [ "panties", 70 ],
+ [ "boy_shorts", 25 ],
+ [ "gown", 1 ],
+ [ "long_glove_white", 1 ],
+ [ "veil_wedding", 1 ],
+ [ "dress_wedding", 1 ],
+ [ "tshirt", 80 ],
+ [ "longshirt", 70 ],
+ [ "polo_shirt", 65 ],
+ [ "dress_shirt", 60 ],
+ [ "tank_top", 50 ],
+ [ "sweatshirt", 75 ],
+ [ "sweater", 75 ],
+ [ "hoodie", 65 ],
+ [ "jacket_light", 50 ],
+ [ "jacket_windbreaker", 25 ],
+ [ "jacket_jean", 35 ],
+ [ "blazer", 35 ],
+ [ "towel", 40 ],
+ [ "jacket_leather", 30 ],
+ [ "motorbike_armor", 5 ],
+ [ "poncho", 15 ],
+ [ "folding_poncho", 5 ],
+ [ "trenchcoat", 12 ],
+ [ "sleeveless_trenchcoat", 2 ],
+ [ "duster", 12 ],
+ [ "sleeveless_duster", 2 ],
+ [ "peacoat", 30 ],
+ [ "greatcoat", 15 ],
+ [ "vest", 15 ],
+ [ "mag_porn", 20 ],
+ [ "photo_album", 10 ],
+ [ "lighter", 60 ],
+ [ "ref_lighter", 2 ],
+ [ "sewing_kit", 30 ],
+ [ "thread", 40 ],
+ [ "flashlight", 40 ],
+ [ "suit", 60 ],
+ [ "waistcoat", 30 ],
+ [ "tophat", 10 ],
+ [ "bowhat", 10 ],
+ [ "cowboy_hat", 10 ],
+ [ "bullwhip", 1 ],
+ [ "10gal_hat", 5 ],
+ [ "glasses_monocle", 2 ],
+ [ "duct_tape", 60 ],
+ [ "firecracker_pack", 5 ],
+ [ "firecracker", 5 ],
+ [ "wolfsuit", 4 ],
+ [ "dinosuit", 4 ],
+ [ "zentai", 5 ],
+ [ "vibrator", 5 ],
+ { "item": "condom", "prob": 30, "count": [ 1, 5 ] },
+ [ "snuggie", 5 ],
+ [ "flyer", 10 ],
+ [ "socks", 70 ],
+ [ "socks_wool", 30 ],
+ [ "pocketwatch", 5 ],
+ [ "flask_hip", 2 ],
+ [ "bholster", 5 ],
+ [ "tux", 1 ],
+ [ "dress_wedding", 1 ],
+ [ "clogs", 2 ],
+ [ "wristwatch", 15 ],
+ [ "maid_dress", 3 ],
+ [ "maid_hat", 3 ],
+ [ "knitting_needles", 1 ],
+ [ "survnote", 1 ],
+ [ "b_shorts", 15 ],
+ [ "halter_top", 30 ],
+ [ "linuxtshirt", 10 ],
+ [ "kilt", 5 ],
+ [ "nanoskirt", 10 ],
+ [ "sleeveless_tunic", 5 ],
+ [ "fedora", 10 ],
+ [ "straw_hat", 5 ],
+ [ "straw_fedora", 5 ],
+ [ "holy_symbol", 20 ],
+ [ "kufi", 5 ],
+ [ "kippah", 5 ],
+ [ "headscarf", 5 ],
+ { "item": "kirpan", "container-item": "sheath", "prob": 1 },
+ { "item": "kirpan_cheap", "container-item": "sheath", "prob": 3 },
+ [ "robe", 10 ],
+ [ "eboshi", 1 ],
+ [ "kariginu", 1 ],
+ [ "geta", 1 ],
+ [ "kimono", 2 ],
+ [ "yukata", 6 ],
+ [ "haori", 2 ],
+ [ "hakama", 4 ],
+ [ "eclipse_glasses", 1 ],
+ [ "thermos", 20 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "shoes",
+ "items": [
+ [ "sneakers", 80 ],
+ [ "socks", 70 ],
+ [ "tights", 20 ],
+ [ "stockings", 20 ],
+ [ "knee_high_boots", 20 ],
+ [ "thigh_high_boots", 20 ],
+ [ "boots", 70 ],
+ [ "flip_flops", 35 ],
+ [ "lowtops", 45 ],
+ [ "dress_shoes", 50 ],
+ [ "dance_shoes", 5 ],
+ [ "heels", 50 ],
+ [ "golf_shoes", 20 ],
+ [ "boots_combat", 10 ],
+ [ "boots_hiking", 20 ],
+ [ "boots_western", 10 ],
+ [ "clogs", 1 ],
+ [ "leathersandals", 10 ],
+ [ "rollerskates", 1 ],
+ [ "roller_blades", 5 ],
+ [ "roller_shoes_off", 1 ],
+ [ "mocassins", 20 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "pants",
+ "items": [
+ [ "jeans", 90 ],
+ [ "pants_checkered", 5 ],
+ [ "shorts", 70 ],
+ [ "shorts_denim", 35 ],
+ [ "pants", 75 ],
+ [ "leather_belt", 30 ],
+ [ "pants_leather", 60 ],
+ [ "pants_cargo", 70 ],
+ [ "shorts_cargo", 50 ],
+ [ "skirt", 75 ],
+ [ "skirt_leather", 5 ],
+ [ "leggings", 15 ],
+ [ "under_armor_shorts", 20 ],
+ [ "dress", 70 ],
+ [ "sundress", 50 ],
+ [ "dress_wedding", 1 ],
+ [ "postman_shorts", 5 ],
+ [ "b_shorts", 15 ],
+ [ "kilt", 5 ],
+ [ "nanoskirt", 10 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "shirts",
+ "items": [
+ [ "tshirt", 80 ],
+ [ "longshirt", 80 ],
+ [ "polo_shirt", 65 ],
+ [ "dress_shirt", 60 ],
+ [ "tank_top", 50 ],
+ [ "sweatshirt", 75 ],
+ [ "sweater", 75 ],
+ [ "hoodie", 65 ],
+ [ "under_armor", 20 ],
+ [ "jersey", 40 ],
+ [ "camisole", 60 ],
+ [ "tie_clipon", 10 ],
+ [ "tie_necktie", 10 ],
+ [ "tie_skinny", 10 ],
+ [ "tieclip", 5 ],
+ [ "collarpin", 5 ],
+ [ "postman_shirt", 5 ],
+ [ "halter_top", 50 ],
+ [ "linuxtshirt", 10 ],
+ [ "sleeveless_tunic", 5 ],
+ [ "poncho", 20 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "jackets",
+ "items": [
+ [ "jacket_light", 50 ],
+ [ "jacket_windbreaker", 25 ],
+ [ "jacket_jean", 35 ],
+ [ "blazer", 35 ],
+ [ "jacket_leather", 30 ],
+ [ "coat_rain", 50 ],
+ [ "trenchcoat", 12 ],
+ [ "duster", 12 ],
+ { "group": "neckties", "prob": 5 },
+ [ "tieclip", 2 ],
+ [ "collarpin", 2 ],
+ [ "apron_leather", 1 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "suits",
+ "items": [
+ [ "dress_shirt", 100 ],
+ { "group": "neckties", "prob": 50 },
+ [ "tieclip", 30 ],
+ [ "collarpin", 30 ],
+ [ "undershirt", 100 ],
+ [ "suit", 100 ],
+ [ "waistcoat", 70 ],
+ [ "tophat", 30 ],
+ [ "tux", 50 ],
+ [ "gown", 50 ],
+ [ "long_glove_white", 30 ],
+ [ "breeches", 10 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "winter",
+ "ammo": 50,
+ "magazine": 100,
+ "items": [
+ [ "coat_winter", 50 ],
+ [ "peacoat", 30 ],
+ [ "ski_jacket", 40 ],
+ [ "greatcoat", 15 ],
+ [ "gloves_light", 35 ],
+ [ "mittens", 30 ],
+ [ "gloves_wool", 33 ],
+ [ "thermal_socks", 10 ],
+ [ "thermal_gloves", 10 ],
+ [ "thermal_suit", 10 ],
+ [ "thermal_mask", 10 ],
+ [ "thermal_outfit", 5 ],
+ [ "gloves_winter", 40 ],
+ [ "gloves_liner", 25 ],
+ [ "gloves_leather", 45 ],
+ [ "scarf", 45 ],
+ [ "knit_scarf", 35 ],
+ [ "long_knit_scarf", 15 ],
+ [ "scarf_long", 2 ],
+ [ "hat_cotton", 45 ],
+ [ "hat_newsboy", 20 ],
+ [ "hat_knit", 25 ],
+ [ "hat_fur", 15 ],
+ [ "hat_faux_fur", 20 ],
+ [ "pants_ski", 60 ],
+ [ "mask_ski", 15 ],
+ [ "long_underpants", 40 ],
+ [ "long_undertop", 40 ],
+ [ "union_suit", 40 ],
+ [ "tights", 20 ],
+ [ "arm_warmers", 20 ],
+ [ "leg_warmers", 20 ],
+ [ "balclava", 15 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "fancyfurs",
+ "items": [
+ [ "hat_fur", 300 ],
+ [ "hat_faux_fur", 300 ],
+ [ "sleeveless_trenchcoat_fur", 10 ],
+ [ "sleeveless_duster_fur", 10 ],
+ [ "sleeveless_trenchcoat_faux_fur", 10 ],
+ [ "coat_fur_sf", 100 ],
+ [ "coat_faux_fur", 300 ],
+ [ "coat_fur", 300 ],
+ [ "gloves_fur", 300 ],
+ [ "boots_fur", 200 ],
+ [ "trenchcoat_faux_fur", 50 ],
+ [ "duster_faux_fur", 50 ],
+ [ "pants_faux_fur", 50 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "hatstore_hats",
+ "items": [
+ [ "hat_cotton", 30 ],
+ [ "hat_knit", 40 ],
+ [ "hat_faux_fur", 30 ],
+ [ "hat_fur", 20 ],
+ [ "hat_newsboy", 20 ],
+ [ "hat_sombrero", 30 ],
+ [ "fedora", 100 ],
+ [ "straw_hat", 100 ],
+ [ "straw_fedora", 100 ],
+ [ "hat_chef", 10 ],
+ [ "maid_hat", 30 ],
+ [ "hat_golf", 50 ],
+ [ "hat_ball", 100 ],
+ [ "postman_hat", 10 ],
+ [ "tophat", 50 ],
+ [ "bowhat", 50 ],
+ [ "cowboy_hat", 100 ],
+ [ "10gal_hat", 100 ],
+ [ "kufi", 30 ],
+ [ "kippah", 30 ],
+ [ "eboshi", 30 ],
+ [ "balclava", 20 ],
+ [ "porkpie", 30 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "hatstore_accessories",
+ "items": [
+ [ "scarf", 50 ],
+ [ "knit_scarf", 50 ],
+ [ "long_knit_scarf", 30 ],
+ [ "scarf_long", 30 ],
+ [ "bandana", 100 ],
+ [ "hairpin", 50 ],
+ [ "fc_hairpin", 20 ],
+ [ "barrette", 30 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "shoestore_shoes",
+ "items": [
+ [ "sneakers", 100 ],
+ [ "knee_high_boots", 40 ],
+ [ "thigh_high_boots", 40 ],
+ [ "boots", 100 ],
+ [ "flip_flops", 50 ],
+ [ "lowtops", 100 ],
+ [ "dress_shoes", 50 ],
+ [ "dance_shoes", 20 ],
+ [ "heels", 100 ],
+ [ "golf_shoes", 40 ],
+ [ "boots_hiking", 40 ],
+ [ "boots_western", 60 ],
+ [ "clogs", 60 ],
+ [ "leathersandals", 100 ],
+ [ "rollerskates", 10 ],
+ [ "roller_blades", 20 ],
+ [ "roller_shoes_off", 10 ],
+ [ "boots_rubber", 20 ],
+ [ "clownshoes", 10 ],
+ [ "mocassins", 40 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "shoestore_accessories",
+ "items": [ [ "socks", 100 ], [ "thermal_socks", 25 ], [ "socks_wool", 50 ], [ "string_36", 200 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "bags",
+ "items": [
+ [ "backpack", 38 ],
+ [ "backpack_hiking", 3 ],
+ [ "petpack", 3 ],
+ [ "backpack_tactical_large", 1 ],
+ [ "bigback", 1 ],
+ [ "travelpack", 5 ],
+ [ "purse", 40 ],
+ [ "mbag", 20 ],
+ [ "slingpack", 8 ],
+ [ "rucksack", 20 ],
+ [ "backpack_leather", 8 ],
+ [ "briefcase", 10 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "bags_trip",
+ "items": [ [ "suitcase_l", 37 ], [ "suitcase_m", 55 ], [ "duffelbag", 8 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "dresses",
+ "items": [ [ "dress", 55 ], [ "sundress", 43 ], [ "gown", 10 ], [ "dress_wedding", 2 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "female_underwear_top",
+ "items": [
+ [ "bra", 70 ],
+ [ "sports_bra", 50 ],
+ [ "camisole", 30 ],
+ [ "halter_top", 30 ],
+ [ "bikini_top", 10 ],
+ [ "bikini_top_leather", 7 ],
+ [ "bikini_top_fur", 5 ],
+ [ "corset", 5 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "female_underwear_bottom",
+ "items": [ [ "panties", 70 ], [ "boy_shorts", 50 ], [ "bikini_bottom", 10 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "male_underwear_top",
+ "items": [ [ "undershirt", 50 ], [ "long_undertop", 20 ], [ "thermal_shirt", 10 ], [ "under_armor", 20 ], [ "tank_top", 50 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "male_underwear_bottom",
+ "items": [
+ [ "boxer_shorts", 70 ],
+ [ "briefs", 30 ],
+ [ "boxer_briefs", 50 ],
+ [ "long_underpants", 20 ],
+ [ "under_armor_shorts", 20 ],
+ [ "trunks", 10 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "allclothes",
+ "items": [
+ [ "jeans", 90 ],
+ [ "pants_checkered", 5 ],
+ [ "shorts", 70 ],
+ [ "shorts_denim", 35 ],
+ [ "ski_jacket", 40 ],
+ [ "pants", 75 ],
+ [ "breeches", 10 ],
+ [ "leather_belt", 30 ],
+ [ "suit", 60 ],
+ [ "waistcoat", 30 ],
+ [ "tophat", 10 ],
+ [ "bowhat", 10 ],
+ [ "cowboy_hat", 10 ],
+ [ "boots_western", 8 ],
+ [ "glasses_monocle", 2 ],
+ [ "pants_leather", 60 ],
+ [ "pants_cargo", 70 ],
+ [ "shorts_cargo", 50 ],
+ [ "skirt", 75 ],
+ [ "skirt_leather", 5 ],
+ [ "tshirt", 70 ],
+ [ "longshirt", 80 ],
+ [ "polo_shirt", 65 ],
+ [ "dress_shirt", 60 ],
+ [ "tank_top", 50 ],
+ [ "camisole", 30 ],
+ [ "bra", 30 ],
+ [ "undershirt", 30 ],
+ [ "boxer_shorts", 30 ],
+ [ "briefs", 15 ],
+ [ "boxer_briefs", 20 ],
+ [ "panties", 30 ],
+ [ "boy_shorts", 25 ],
+ [ "sweatshirt", 75 ],
+ [ "sweater", 75 ],
+ [ "hoodie", 65 ],
+ [ "jacket_light", 50 ],
+ [ "jacket_windbreaker", 25 ],
+ [ "jacket_jean", 35 ],
+ [ "blazer", 35 ],
+ [ "jacket_leather", 30 ],
+ [ "coat_winter", 50 ],
+ [ "peacoat", 30 ],
+ [ "greatcoat", 15 ],
+ [ "gloves_light", 35 ],
+ [ "mittens", 30 ],
+ [ "gloves_wool", 33 ],
+ [ "thermal_socks", 2 ],
+ [ "thermal_gloves", 2 ],
+ [ "thermal_suit", 2 ],
+ [ "thermal_mask", 2 ],
+ [ "thermal_outfit", 1 ],
+ [ "thermal_shirt", 1 ],
+ [ "gloves_winter", 40 ],
+ [ "gloves_liner", 25 ],
+ [ "gloves_leather", 45 ],
+ [ "gloves_work", 5 ],
+ [ "scarf", 45 ],
+ [ "hat_golf", 30 ],
+ [ "knit_scarf", 35 ],
+ [ "long_knit_scarf", 5 ],
+ [ "scarf_long", 1 ],
+ [ "hat_cotton", 45 ],
+ [ "hat_knit", 25 ],
+ [ "hat_newsboy", 20 ],
+ [ "hat_sombrero", 3 ],
+ [ "hat_fur", 15 ],
+ [ "hat_faux_fur", 20 ],
+ [ "under_armor", 20 ],
+ [ "under_armor_shorts", 20 ],
+ [ "tights", 20 ],
+ [ "leggings", 20 ],
+ [ "stockings", 20 ],
+ [ "balclava", 15 ],
+ [ "pants_ski", 60 ],
+ [ "long_underpants", 40 ],
+ [ "long_undertop", 40 ],
+ [ "union_suit", 20 ],
+ [ "leotard", 3 ],
+ [ "unitard", 1 ],
+ [ "arm_warmers", 20 ],
+ [ "leg_warmers", 20 ],
+ [ "trenchcoat_leather", 12 ],
+ [ "trenchcoat_faux_fur", 6 ],
+ [ "sleeveless_trenchcoat", 2 ],
+ [ "sleeveless_trenchcoat_leather", 2 ],
+ [ "sleeveless_trenchcoat_faux_fur", 2 ],
+ [ "trenchcoat_leather", 12 ],
+ [ "sleeveless_trenchcoat_fur", 1 ],
+ [ "duster_leather", 12 ],
+ [ "duster_faux_fur", 6 ],
+ [ "sleeveless_duster", 2 ],
+ [ "sleeveless_duster_leather", 2 ],
+ [ "sleeveless_duster_faux_fur", 2 ],
+ [ "sleeveless_duster_fur", 1 ],
+ [ "cloak", 5 ],
+ [ "cloak_wool", 5 ],
+ [ "house_coat", 25 ],
+ [ "flotation_vest", 1 ],
+ [ "fishing_waders", 5 ],
+ [ "wetsuit", 5 ],
+ [ "wetsuit_spring", 5 ],
+ [ "wetsuit_gloves", 10 ],
+ [ "wetsuit_booties", 10 ],
+ [ "wetsuit_hood", 5 ],
+ [ "dive_bag", 5 ],
+ [ "jedi_cloak", 1 ],
+ [ "apron_leather", 1 ],
+ [ "clown_suit", 1 ],
+ [ "clownshoes", 1 ],
+ [ "clown_wig", 1 ],
+ [ "clown_nose", 1 ],
+ [ "bondage_suit", 1 ],
+ [ "bondage_mask", 1 ],
+ [ "zentai", 1 ],
+ [ "corset", 10 ],
+ [ "chestwrap", 5 ],
+ [ "boots_combat", 10 ],
+ [ "pants_army", 10 ],
+ [ "jacket_army", 10 ],
+ [ "winter_pants_army", 10 ],
+ [ "winter_jacket_army", 10 ],
+ [ "winter_gloves_army", 10 ],
+ [ "army_top", 20 ],
+ [ "tux", 1 ],
+ [ "gown", 1 ],
+ [ "long_glove_white", 1 ],
+ [ "veil_wedding", 1 ],
+ [ "dress_wedding", 1 ],
+ [ "porkpie", 5 ],
+ [ "tie_bow", 5 ],
+ [ "tie_clipon", 5 ],
+ [ "tie_necktie", 5 ],
+ [ "tie_skinny", 5 ],
+ [ "tieclip", 2 ],
+ [ "collarpin", 2 ],
+ [ "jersey", 40 ],
+ [ "postman_shorts", 5 ],
+ [ "postman_shirt", 5 ],
+ [ "postman_hat", 5 ],
+ [ "maid_dress", 3 ],
+ [ "maid_hat", 3 ],
+ [ "halter_top", 50 ],
+ [ "linuxtshirt", 20 ],
+ [ "kilt", 5 ],
+ [ "nanoskirt", 10 ],
+ [ "sleeveless_tunic", 5 ],
+ [ "ear_spool", 30 ],
+ [ "fedora", 5 ],
+ [ "straw_hat", 5 ],
+ [ "straw_fedora", 5 ],
+ [ "kufi", 2 ],
+ [ "kippah", 2 ],
+ [ "thawb", 1 ],
+ [ "kittel", 1 ],
+ [ "cassock", 1 ],
+ [ "robe", 5 ],
+ [ "eboshi", 1 ],
+ [ "kariginu", 1 ],
+ [ "geta", 1 ],
+ [ "kimono", 2 ],
+ [ "yukata", 4 ],
+ [ "haori", 1 ],
+ [ "hakama", 2 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "allclothes_damaged",
+ "subtype": "distribution",
+ "items": [ { "group": "allclothes", "damage": [ 3, 4 ] } ]
+ },
+ {
+ "type": "item_group",
+ "id": "swimmer_head",
+ "items": [
+ [ "goggles_swim", 90 ],
+ [ "wetsuit_hood", 30 ],
+ [ "fancy_sunglasses", 1 ],
+ [ "rebreather", 1 ],
+ [ "fitover_sunglasses", 5 ],
+ [ "sunglasses", 10 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "swimmer_torso",
+ "items": [ [ "bikini_top", 50 ], [ "dive_bag", 5 ], [ "flotation_vest", 10 ], [ "scuba_tank", 2 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "swimmer_pants",
+ "items": [ [ "trunks", 80 ], [ "bikini_bottom", 35 ], [ "hot_pants", 30 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "swimmer_shoes",
+ "items": [ [ "flip_flops", 80 ], [ "swim_fins", 20 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "swimmer_wetsuit",
+ "items": [ [ "wetsuit", 90 ], [ "wetsuit_spring", 10 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "lab_shoes",
+ "items": [ [ "sneakers", 80 ], [ "boots", 70 ], [ "boots_steel", 50 ], [ "boots_hiking", 40 ], [ "dress_shoes", 50 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "lab_torso",
+ "items": [
+ [ "coat_lab", 20 ],
+ [ "coat_lab", 20 ],
+ [ "coat_lab", 20 ],
+ [ "coat_lab", 20 ],
+ [ "tshirt", 80 ],
+ [ "longshirt", 80 ],
+ [ "polo_shirt", 65 ],
+ [ "dress_shirt", 60 ],
+ [ "dress", 70 ],
+ [ "sweatshirt", 75 ],
+ [ "sweater", 75 ],
+ [ "hoodie", 65 ],
+ [ "jumpsuit", 20 ],
+ [ "badge_doctor", 10 ],
+ [ "hazmat_suit", 5 ],
+ [ "cleansuit", 10 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "lab_pants",
+ "items": [ [ "jeans", 90 ], [ "pants_checkered", 5 ], [ "pants", 75 ], [ "pants_cargo", 70 ], [ "skirt", 75 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "postman_gear",
+ "items": [
+ [ "postman_hat", 50 ],
+ [ "postman_shirt", 70 ],
+ [ "postman_shorts", 70 ],
+ [ "mbag", 40 ],
+ [ "newest_newspaper", 10 ],
+ [ "wristwatch", 50 ],
+ [ "leather_belt", 70 ],
+ [ "briefs", 90 ],
+ [ "socks", 70 ],
+ [ "sneakers", 70 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "mil_armor",
+ "items": [
+ [ "pants_army", 10 ],
+ [ "jacket_army", 10 ],
+ [ "winter_pants_army", 30 ],
+ [ "winter_jacket_army", 30 ],
+ [ "winter_gloves_army", 30 ],
+ [ "army_top", 30 ],
+ [ "kevlar", 10 ],
+ [ "modularvest", 15 ],
+ [ "modularvestkevlar", 18 ],
+ [ "modularvestceramic", 25 ],
+ [ "modularveststeel", 20 ],
+ [ "modularvestsuper", 2 ],
+ [ "modularvesthard", 1 ],
+ [ "vest", 15 ],
+ [ "mask_gas", 10 ],
+ [ "goggles_nv", 1 ],
+ [ "goggles_ir", 1 ],
+ [ "optical_cloak", 1 ],
+ [ "holo_cloak", 1 ],
+ [ "backpack", 38 ],
+ [ "UPS_off", 5 ],
+ [ "adv_UPS_off", 3 ],
+ [ "tacvest", 10 ],
+ [ "molle_pack", 8 ],
+ [ "duffelbag", 15 ],
+ [ "dump_pouch", 20 ],
+ [ "legrig", 10 ],
+ [ "under_armor", 20 ],
+ [ "boots", 70 ],
+ [ "boots_combat", 70 ],
+ [ "gloves_tactical", 30 ],
+ [ "glasses_bal", 40 ],
+ [ "armguard_hard", 20 ],
+ [ "legguard_hard", 15 ],
+ [ "power_armor_helmet_basic", 3 ],
+ [ "power_armor_basic", 3 ],
+ [ "power_armor_frame", 4 ],
+ [ "helmet_army", 40 ],
+ [ "helmet_liner", 10 ],
+ [ "UPS_off", 5 ],
+ [ "adv_UPS_off", 3 ],
+ [ "beret", 50 ],
+ [ "beret_wool", 40 ],
+ [ "elbow_pads", 50 ],
+ [ "knee_pads", 50 ],
+ [ "solarpack", 5 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "mil_accessories",
+ "items": [
+ [ "mask_gas", 10 ],
+ [ "duffelbag", 15 ],
+ [ "goggles_nv", 1 ],
+ [ "goggles_ir", 1 ],
+ [ "optical_cloak", 1 ],
+ [ "holo_cloak", 1 ],
+ [ "mess_kit", 9 ],
+ [ "mil_mess_kit", 1 ],
+ [ "backpack", 38 ],
+ [ "briefcase", 10 ],
+ [ "UPS_off", 5 ],
+ [ "adv_UPS_off", 3 ],
+ [ "armguard_hard", 20 ],
+ [ "legguard_hard", 15 ],
+ [ "power_armor_frame", 4 ],
+ [ "elbow_pads", 40 ],
+ [ "knee_pads", 40 ],
+ [ "mask_bal", 5 ],
+ [ "e_tool", 10 ],
+ [ "waterproof_gunmod", 8 ],
+ [ "grapnel", 3 ],
+ [ "glasses_bal", 30 ],
+ [ "sheath", 10 ],
+ [ "bootsheath", 8 ],
+ [ "holster", 15 ],
+ [ "sholster", 10 ],
+ [ "bandolier_shotgun", 8 ],
+ [ "solarpack", 5 ],
+ [ "chem_hexamine", 3 ],
+ [ "esbit_stove", 6 ],
+ [ "mess_tin", 4 ],
+ [ "survival_kit", 4 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "mil_armor_torso",
+ "items": [
+ [ "kevlar", 10 ],
+ [ "modularvest", 15 ],
+ [ "modularvestkevlar", 18 ],
+ [ "modularvestceramic", 25 ],
+ [ "modularveststeel", 20 ],
+ [ "modularvestsuper", 2 ],
+ [ "modularvesthard", 1 ],
+ [ "winter_jacket_army", 30 ],
+ [ "vest", 15 ],
+ [ "tacvest", 10 ],
+ [ "molle_pack", 8 ],
+ [ "under_armor", 20 ],
+ [ "power_armor_basic", 5 ],
+ [ "army_top", 30 ],
+ [ "elbow_pads", 20 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "mil_armor_helmet",
+ "items": [
+ [ "helmet_army", 40 ],
+ [ "helmet_liner", 20 ],
+ [ "beret", 50 ],
+ [ "beret_wool", 40 ],
+ [ "mask_bal", 10 ],
+ [ "power_armor_helmet_basic", 4 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "mil_armor_pants",
+ "items": [
+ [ "pants_army", 10 ],
+ [ "winter_pants_army", 40 ],
+ [ "pants", 75 ],
+ [ "pants_cargo", 70 ],
+ [ "legrig", 10 ],
+ [ "knee_pads", 20 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "survival_armor",
+ "items": [
+ [ "boots_steel", 50 ],
+ [ "boots_combat", 50 ],
+ [ "boots_hiking", 50 ],
+ [ "bootsheath", 8 ],
+ [ "pants_cargo", 70 ],
+ [ "shorts_cargo", 50 ],
+ [ "pants_army", 30 ],
+ [ "jacket_army", 30 ],
+ [ "winter_pants_army", 10 ],
+ [ "winter_jacket_army", 10 ],
+ [ "winter_gloves_army", 10 ],
+ [ "jumpsuit", 20 ],
+ [ "jacket_leather", 30 ],
+ [ "sleeveless_trenchcoat", 2 ],
+ [ "sleeveless_trenchcoat_leather", 5 ],
+ [ "sleeveless_duster", 2 ],
+ [ "sleeveless_duster_leather", 5 ],
+ [ "kevlar", 30 ],
+ [ "modularvest", 12 ],
+ [ "modularvestkevlar", 10 ],
+ [ "modularvestceramic", 8 ],
+ [ "modularveststeel", 5 ],
+ [ "modularvestsuper", 1 ],
+ [ "dump_pouch", 20 ],
+ [ "mask_bal", 5 ],
+ [ "vest", 15 ],
+ [ "gloves_fingerless", 20 ],
+ [ "gloves_tactical", 20 ],
+ [ "glasses_bal", 20 ],
+ [ "elbow_pads", 40 ],
+ [ "knee_pads", 40 ],
+ [ "mask_filter", 30 ],
+ [ "mask_gas", 10 ],
+ [ "goggles_ski", 30 ],
+ [ "helmet_skid", 30 ],
+ [ "armguard_hard", 20 ],
+ [ "legguard_hard", 15 ],
+ [ "under_armor", 20 ],
+ [ "long_underpants", 40 ],
+ [ "long_undertop", 40 ],
+ [ "union_suit", 20 ],
+ [ "helmet_ball", 45 ],
+ [ "helmet_riot", 25 ],
+ [ "helmet_motor", 40 ],
+ [ "touring_suit", 15 ],
+ [ "motorbike_armor", 5 ],
+ [ "motorbike_pants", 5 ],
+ [ "motorbike_boots", 5 ],
+ [ "holster", 8 ],
+ [ "sholster", 4 ],
+ [ "bootstrap", 3 ],
+ [ "legpouch", 12 ],
+ [ "legpouch_large", 6 ],
+ [ "chestpouch", 9 ],
+ [ "ammo_satchel", 4 ],
+ [ "UPS_off", 5 ],
+ [ "adv_UPS_off", 3 ],
+ [ "tacvest", 10 ],
+ [ "molle_pack", 8 ],
+ [ "legrig", 10 ],
+ [ "rucksack", 20 ],
+ [ "emer_blanket", 20 ],
+ [ "flotation_vest", 1 ],
+ [ "fishing_waders", 2 ],
+ [ "cloak", 5 ],
+ [ "cloak_wool", 5 ],
+ [ "tac_helmet", 5 ],
+ [ "tac_fullhelmet", 2 ],
+ [ "helmet_lobster", 2 ],
+ [ "apron_leather", 2 ],
+ [ "tool_belt", 5 ],
+ [ "bootsheath", 8 ],
+ [ "sheath", 5 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "construction_worker",
+ "items": [
+ [ "boots", 70 ],
+ [ "boots_steel", 50 ],
+ [ "boots_hiking", 10 ],
+ [ "jumpsuit", 20 ],
+ [ "gloves_rubber", 20 ],
+ [ "gloves_leather", 45 ],
+ [ "gloves_work", 45 ],
+ [ "mask_filter", 30 ],
+ [ "glasses_safety", 40 ],
+ [ "hat_hard", 50 ],
+ [ "hat_hard_hooded", 25 ],
+ [ "wearable_light", 5 ],
+ [ "ear_plugs", 50 ],
+ { "group": "ammo_any_batteries_full", "prob": 50 },
+ [ "flashlight", 40 ],
+ [ "boots_rubber", 20 ],
+ [ "toolbox", 1 ],
+ [ "apron_leather", 10 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "loincloth",
+ "items": [ [ "loincloth", 2 ], [ "loincloth_wool", 1 ], [ "loincloth_fur", 1 ], [ "loincloth_leather", 1 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "fireman_torso",
+ "items": [ [ "bunker_coat", 80 ], [ "vest", 30 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "fireman_pants",
+ "items": [ [ "bunker_pants", 80 ], [ "nomex_suit", 40 ], [ "pants_cargo", 10 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "fireman_boots",
+ "items": [
+ [ "boots_bunker", 70 ],
+ [ "boots_steel", 20 ],
+ [ "boots_combat", 5 ],
+ [ "boots_rubber", 10 ],
+ [ "boots_hiking", 5 ],
+ [ "nomex_socks", 40 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "fireman_gloves",
+ "items": [
+ [ "fire_gauntlets", 60 ],
+ [ "gloves_medical", 5 ],
+ [ "gloves_tactical", 20 ],
+ [ "gloves_rubber", 10 ],
+ [ "nomex_gloves", 30 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "fireman_head",
+ "items": [
+ [ "firehelmet", 60 ],
+ [ "hat_knit", 10 ],
+ [ "nomex_hood", 40 ],
+ [ "hat_hard", 5 ],
+ [ "hat_hard_hooded", 3 ],
+ [ "hat_noise_cancelling", 5 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "fireman_mask",
+ "items": [
+ [ "mask_bunker", 70 ],
+ [ "mask_dust", 30 ],
+ [ "mask_gas", 20 ],
+ [ "mask_filter", 10 ],
+ [ "goggles_ir", 2 ],
+ [ "goggles_nv", 1 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "hazmat_torso",
+ "items": [ [ "cleansuit", 40 ], [ "jumpsuit", 60 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "hazmat_boots",
+ "items": [ [ "boots_rubber", 1 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "hazmat_gloves",
+ "items": [ [ "gloves_medical", 60 ], [ "gloves_rubber", 40 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "hazmat_full",
+ "items": [ [ "hazmat_suit", 80 ], [ "anbc_suit", 20 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "hazmat_mask",
+ "items": [ [ "mask_dust", 80 ], [ "mask_filter", 20 ], [ "mask_gas", 10 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "hazmat_eyes",
+ "items": [ [ "glasses_safety", 50 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "survivorzed_suits",
+ "items": [
+ [ "survivor_suit", 8 ],
+ [ "lsurvivor_suit", 10 ],
+ [ "hsurvivor_suit", 6 ],
+ [ "wsurvivor_suit", 6 ],
+ [ "fsurvivor_suit", 4 ],
+ [ "h20survivor_suit", 2 ],
+ [ "touring_suit", 16 ],
+ [ "armor_larmor", 28 ],
+ [ "armor_blarmor", 14 ],
+ [ "armor_farmor", 8 ],
+ [ "armor_plarmor", 2 ],
+ [ "swat_armor", 6 ],
+ [ "aep_suit", 4 ],
+ [ "armor_scrapsuit", 12 ],
+ [ "armor_chitin", 2 ],
+ [ "armor_lightplate", 1 ],
+ [ "cuirass_lightplate", 2 ],
+ [ "armor_plate", 1 ],
+ [ "bondage_suit", 1 ],
+ [ "snuggie", 1 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "survivorzed_tops",
+ "items": [
+ [ "trenchcoat_survivor", 5 ],
+ [ "sleeveless_trenchcoat_survivor", 2 ],
+ [ "duster_survivor", 5 ],
+ [ "sleeveless_duster_survivor", 2 ],
+ [ "vest", 40 ],
+ [ "kevlar", 16 ],
+ [ "jacket_army", 28 ],
+ [ "trenchcoat", 12 ],
+ [ "trenchcoat_leather", 10 ],
+ [ "trenchcoat_fur", 5 ],
+ [ "sleeveless_trenchcoat", 7 ],
+ [ "sleeveless_trenchcoat_leather", 5 ],
+ [ "sleeveless_trenchcoat_fur", 2 ],
+ [ "duster", 12 ],
+ [ "duster_leather", 10 ],
+ [ "duster_fur", 5 ],
+ [ "sleeveless_duster", 7 ],
+ [ "sleeveless_duster_leather", 5 ],
+ [ "sleeveless_duster_fur", 2 ],
+ [ "peacoat", 14 ],
+ [ "greatcoat", 7 ],
+ [ "vest_leather", 22 ],
+ [ "bunker_coat", 6 ],
+ [ "bookplate", 10 ],
+ [ "modularvest", 4 ],
+ [ "modularvesthard", 1 ],
+ [ "modularvestkevlar", 2 ],
+ [ "modularvestceramic", 2 ],
+ [ "modularveststeel", 1 ],
+ [ "modularvestsuper", 1 ],
+ [ "dragonskin", 1 ],
+ [ "corset", 1 ],
+ [ "football_armor", 18 ],
+ [ "jacket_leather", 12 ],
+ [ "jacket_jean", 8 ],
+ [ "jacket_flannel", 6 ],
+ [ "cuirass_scrap", 12 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "survivorzed_bottoms",
+ "items": [
+ [ "pants_survivor", 10 ],
+ [ "pants_cargo", 40 ],
+ [ "shorts_cargo", 22 ],
+ [ "pants_army", 28 ],
+ [ "winter_pants_army", 10 ],
+ [ "bunker_pants", 14 ],
+ [ "pants_leather", 18 ],
+ [ "legguard_scrap", 12 ],
+ [ "skirt", 6 ],
+ [ "kilt", 1 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "survivorzed_gloves",
+ "items": [
+ [ "gloves_lsurvivor", 10 ],
+ [ "gloves_survivor", 8 ],
+ [ "gloves_hsurvivor", 4 ],
+ [ "gloves_wsurvivor", 4 ],
+ [ "gloves_fsurvivor", 2 ],
+ [ "gloves_h20survivor", 1 ],
+ [ "gloves_fingerless", 28 ],
+ [ "gloves_fingerless_mod", 20 ],
+ [ "gloves_tactical", 12 ],
+ [ "gauntlets_larmor", 14 ],
+ [ "gauntlets_chitin", 2 ],
+ [ "armguard_larmor", 7 ],
+ [ "vambrace_larmor", 6 ],
+ [ "armguard_chitin", 1 ],
+ [ "armguard_scrap", 12 ],
+ [ "gloves_fur", 4 ],
+ [ "gloves_leather", 22 ],
+ [ "gloves_work", 22 ],
+ [ "gloves_plate", 2 ],
+ [ "gloves_wraps", 1 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "survivorzed_boots",
+ "items": [
+ [ "boots_lsurvivor", 10 ],
+ [ "boots_survivor", 8 ],
+ [ "boots_hsurvivor", 4 ],
+ [ "boots_wsurvivor", 4 ],
+ [ "boots_fsurvivor", 2 ],
+ [ "boots_h20survivor", 1 ],
+ [ "boots", 20 ],
+ [ "boots_scrap", 12 ],
+ [ "boots_steel", 28 ],
+ [ "boots_hiking", 24 ],
+ [ "knee_high_boots", 8 ],
+ [ "boots_combat", 12 ],
+ [ "boots_larmor", 14 ],
+ [ "boots_fur", 22 ],
+ [ "boots_plate", 2 ],
+ [ "boots_bunker", 8 ],
+ [ "footrags", 1 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "survivorzed_head",
+ "items": [
+ [ "hood_lsurvivor", 10 ],
+ [ "hood_survivor", 8 ],
+ [ "helmet_survivor", 8 ],
+ [ "helmet_hsurvivor", 4 ],
+ [ "hood_wsurvivor", 4 ],
+ [ "hood_fsurvivor", 2 ],
+ [ "hood_h20survivor", 1 ],
+ [ "helmet_army", 26 ],
+ [ "tac_helmet", 22 ],
+ [ "helmet_riot", 18 ],
+ [ "tac_fullhelmet", 8 ],
+ [ "helmet_lobster", 8 ],
+ [ "pot_helmet", 22 ],
+ [ "helmet_larmor", 14 ],
+ [ "pickelhaube", 1 ],
+ [ "firehelmet", 2 ],
+ [ "helmet_barbute", 1 ],
+ [ "helmet_plate", 1 ],
+ [ "helmet_scrap", 12 ],
+ [ "bondage_mask", 1 ],
+ [ "survivor_goggles", 10 ],
+ [ "hood_rain", 14 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "survivorzed_extra",
+ "items": [
+ [ "daypack", 4 ],
+ [ "mask_lsurvivor", 10 ],
+ [ "mask_survivor", 8 ],
+ [ "mask_hsurvivor", 6 ],
+ [ "survivor_vest", 8 ],
+ [ "survivor_runner_pack", 6 ],
+ [ "survivor_pack", 5 ],
+ [ "survivor_rucksack", 4 ],
+ [ "survivor_duffel_bag", 3 ],
+ [ "dive_bag", 10 ],
+ [ "runner_bag", 20 ],
+ [ "molle_pack", 12 ],
+ [ "backpack", 40 ],
+ [ "backpack_leather", 32 ],
+ [ "mbag", 26 ],
+ [ "purse", 14 ],
+ [ "slingpack", 12 ],
+ [ "rucksack", 12 ],
+ [ "duffelbag", 8 ],
+ [ "mask_h20survivor", 1 ],
+ [ "mask_bal", 14 ],
+ [ "mask_hockey", 26 ],
+ [ "mask_gas", 24 ],
+ [ "mask_filter", 12 ],
+ [ "mask_bunker", 2 ],
+ [ "mask_wsurvivor", 4 ],
+ [ "mask_fsurvivor", 2 ],
+ [ "sunglasses", 12 ],
+ [ "fitover_sunglasses", 8 ],
+ [ "glasses_bal", 18 ],
+ [ "glasses_safety", 24 ],
+ [ "goggles_ski", 14 ],
+ [ "goggles_nv", 2 ],
+ [ "goggles_ir", 1 ],
+ [ "tacvest", 22 ],
+ [ "legrig", 22 ],
+ [ "tool_belt", 16 ],
+ [ "fanny", 12 ],
+ [ "dump_pouch", 6 ],
+ [ "ragpouch", 22 ],
+ [ "leather_pouch", 16 ],
+ [ "quiver", 14 ],
+ [ "quiver_large", 8 ],
+ [ "wristwatch", 24 ],
+ [ "diving_watch", 16 ],
+ [ "pocketwatch", 14 ],
+ [ "holster", 14 ],
+ [ "bandana", 18 ],
+ [ "scarf", 26 ],
+ [ "long_knit_scarf", 15 ],
+ [ "mask_gas_xl", 4 ],
+ [ "hat_boonie", 16 ],
+ [ "beret", 18 ],
+ [ "beret_wool", 14 ],
+ [ "balclava", 12 ],
+ [ "mask_survivorxl", 2 ],
+ [ "combatsaw_off", 1 ],
+ [ "firemachete_off", 1 ],
+ [ "shishkebab_off", 2 ],
+ [ "helsing", 1 ],
+ [ "tihar", 2 ],
+ [ "bigun", 2 ],
+ [ "ashot", 4 ],
+ [ "pickaxe", 1 ],
+ [ "makeshift_machete", 4 ],
+ [ "flamethrower_crude", 6 ],
+ [ "fungicide", 10 ],
+ [ "insecticide", 10 ],
+ [ "antifungal", 1 ],
+ [ "antiparasitic", 5 ],
+ [ "diazepam", 1 ],
+ [ "throw_extinguisher", 2 ],
+ [ "small_repairkit", 14 ],
+ [ "grapnel", 6 ],
+ [ "misc_repairkit", 8 ],
+ [ "survival_kit", 3 ],
+ [ "toolbox", 1 ],
+ [ "survivor_belt", 2 ],
+ [ "survivor_machete", 2 ],
+ [ "spear_survivor", 2 ],
+ [ "survivor_light", 24 ],
+ [ "survivor_mess_kit", 6 ],
+ [ "survivor_shavingkit", 3 ],
+ [ "survivor_hairtrimmer", 1 ],
+ [ "survivor_scope", 1 ],
+ [ "survnote", 30 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "bio_op_face",
+ "items": [ [ "glasses_bal", 40 ], [ "mask_filter", 30 ], [ "mask_bal", 30 ], [ "mask_gas", 40 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "bio_op_torso",
+ "items": [ [ "dragonskin", 50 ], [ "winter_jacket_army", 10 ], [ "modularvestceramic", 40 ], [ "modularvestkevlar", 20 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "bio_op_boots",
+ "items": [ [ "boots_combat", 1 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "bio_op_gloves",
+ "items": [ [ "gloves_tactical", 60 ], [ "gloves_fingerless", 40 ], [ "winter_gloves_army", 40 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "museum_armor",
+ "items": [
+ [ "armor_plate", 60 ],
+ [ "gloves_plate", 60 ],
+ [ "boots_plate", 60 ],
+ [ "armor_lightplate", 45 ],
+ [ "cuirass_lightplate", 45 ],
+ [ "armguard_lightplate", 30 ],
+ [ "legguard_lightplate", 30 ],
+ [ "helmet_barbute", 50 ],
+ [ "helmet_conical", 30 ],
+ [ "armor_lamellar", 20 ],
+ [ "armor_lorica", 25 ],
+ [ "armor_samurai", 50 ],
+ [ "helmet_kabuto", 50 ],
+ [ "helmet_larmor", 40 ],
+ [ "helmet_nasal", 50 ],
+ [ "helmet_galea", 40 ],
+ [ "boots_larmor", 40 ],
+ [ "armor_larmor", 40 ],
+ [ "armguard_larmor", 40 ],
+ [ "vambrace_larmor", 20 ],
+ [ "gambeson", 50 ],
+ [ "legguard_metal", 10 ],
+ [ "helmet_corinthian", 45 ],
+ [ "armor_cuirass", 25 ],
+ [ "legguard_bronze", 20 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "museum_armor_torso",
+ "items": [
+ [ "armor_plate", 60 ],
+ [ "armor_lightplate", 45 ],
+ [ "cuirass_lightplate", 45 ],
+ [ "armor_lamellar", 20 ],
+ [ "armor_lorica", 25 ],
+ [ "armor_samurai", 50 ],
+ [ "armor_larmor", 40 ],
+ [ "gambeson", 50 ],
+ [ "armor_cuirass", 25 ],
+ [ "chainmail_suit", 10 ],
+ [ "chainmail_vest", 3 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "museum_armor_legs",
+ "items": [ [ "legguard_lightplate", 30 ], [ "legguard_metal", 10 ], [ "legguard_bronze", 20 ], [ "chainmail_legs", 10 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "museum_armor_feet",
+ "items": [ [ "boots_plate", 60 ], [ "boots_larmor", 40 ], [ "chainmail_feet", 40 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "museum_armor_head",
+ "items": [
+ [ "helmet_barbute", 50 ],
+ [ "helmet_conical", 30 ],
+ [ "helmet_kabuto", 50 ],
+ [ "helmet_larmor", 40 ],
+ [ "helmet_nasal", 50 ],
+ [ "helmet_galea", 40 ],
+ [ "chainmail_hood", 30 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "museum_armor_arms",
+ "items": [
+ [ "armguard_lightplate", 30 ],
+ [ "armguard_larmor", 40 ],
+ [ "vambrace_larmor", 20 ],
+ [ "gloves_plate", 60 ],
+ [ "chainmail_arms", 30 ],
+ [ "chainmail_hands", 30 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "coat_rack",
+ "items": [
+ [ "jacket_light", 50 ],
+ [ "jacket_windbreaker", 25 ],
+ [ "jacket_jean", 35 ],
+ [ "blazer", 35 ],
+ [ "jacket_leather", 30 ],
+ [ "coat_rain", 50 ],
+ [ "trenchcoat", 10 ],
+ [ "duster", 15 ],
+ [ "peacoat", 30 ],
+ [ "tophat", 10 ],
+ [ "hat_ball", 40 ],
+ [ "fedora", 15 ],
+ [ "hat_cotton", 30 ],
+ [ "hat_knit", 20 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "laundry",
+ "items": [
+ [ "basket_laundry", 30 ],
+ [ "jeans", 90 ],
+ [ "pants_checkered", 5 ],
+ [ "shorts", 70 ],
+ [ "shorts_denim", 35 ],
+ [ "pants", 75 ],
+ [ "breeches", 10 ],
+ [ "suit", 60 ],
+ [ "waistcoat", 30 ],
+ [ "pants_leather", 60 ],
+ [ "pants_cargo", 70 ],
+ [ "shorts_cargo", 50 ],
+ [ "skirt", 75 ],
+ [ "skirt_leather", 5 ],
+ [ "tshirt", 70 ],
+ [ "longshirt", 80 ],
+ [ "polo_shirt", 65 ],
+ [ "dress_shirt", 60 ],
+ [ "tank_top", 50 ],
+ [ "camisole", 30 ],
+ [ "bra", 30 ],
+ [ "undershirt", 30 ],
+ [ "boxer_shorts", 30 ],
+ [ "briefs", 15 ],
+ [ "boxer_briefs", 20 ],
+ [ "panties", 30 ],
+ [ "boy_shorts", 25 ],
+ [ "sweatshirt", 75 ],
+ [ "sweater", 75 ],
+ [ "hoodie", 65 ],
+ [ "jacket_light", 50 ],
+ [ "jacket_windbreaker", 25 ],
+ [ "jacket_jean", 35 ],
+ [ "blazer", 35 ],
+ [ "gloves_light", 35 ],
+ [ "mittens", 30 ],
+ [ "thermal_socks", 2 ],
+ [ "thermal_gloves", 2 ],
+ [ "gloves_liner", 25 ],
+ [ "scarf", 45 ],
+ [ "scarf_long", 1 ],
+ [ "hat_cotton", 45 ],
+ [ "hat_knit", 25 ],
+ [ "hat_newsboy", 20 ],
+ [ "under_armor", 20 ],
+ [ "under_armor_shorts", 20 ],
+ [ "tights", 20 ],
+ [ "leggings", 20 ],
+ [ "stockings", 20 ],
+ [ "long_underpants", 40 ],
+ [ "long_undertop", 40 ],
+ [ "union_suit", 20 ],
+ [ "arm_warmers", 20 ],
+ [ "leg_warmers", 20 ],
+ [ "corset", 10 ],
+ [ "pants_army", 10 ],
+ [ "army_top", 20 ],
+ [ "tux", 1 ],
+ [ "gown", 1 ],
+ [ "jersey", 40 ],
+ [ "maid_dress", 3 ],
+ [ "halter_top", 50 ],
+ [ "linuxtshirt", 20 ],
+ [ "kilt", 5 ],
+ [ "nanoskirt", 10 ],
+ [ "robe", 50 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "common_gloves",
+ "items": [
+ { "item": "gloves_light", "prob": 15 },
+ { "item": "gloves_leather", "prob": 15 },
+ { "item": "gloves_golf", "prob": 15 },
+ { "item": "gloves_wool", "prob": 15 },
+ { "item": "gloves_winter", "prob": 10 },
+ { "item": "gloves_fingerless", "prob": 15 },
+ { "item": "gloves_liner", "prob": 15 },
+ { "item": "mittens", "prob": 5 },
+ { "item": "thermal_gloves", "prob": 2 }
+ ]
+ },
+ {
+ "id": "dollar_clothes",
+ "type": "item_group",
+ "items": [
+ [ "bandana", 25 ],
+ [ "boxer_shorts", 25 ],
+ [ "boxer_briefs", 25 ],
+ [ "boy_shorts", 25 ],
+ [ "bra", 25 ],
+ [ "socks", 45 ],
+ [ "stockings", 20 ],
+ [ "hat_cotton", 35 ],
+ [ "copper_bracelet", 10 ],
+ [ "sunglasses", 25 ],
+ [ "tieclip", 15 ],
+ [ "hairpin", 15 ]
+ ]
+ },
+ {
+ "id": "desks_bedroom_unisex",
+ "type": "item_group",
+ "//": "clothing and wearable items for domestic desks, tables, etc.",
+ "subtype": "collection",
+ "items": [
+ { "group": "accesories_personal_unisex", "prob": 70, "count": [ 1, 4 ] },
+ { "group": "accesories_personal_womens", "prob": 50 },
+ { "group": "accesories_personal_mens", "prob": 50 },
+ { "group": "masks_unisex", "prob": 20 },
+ { "group": "socks_unisex", "prob": 60 },
+ { "group": "scarfs_unisex", "prob": 30 },
+ { "group": "gloves_womens", "prob": 10 },
+ { "group": "gloves_unisex", "prob": 30 },
+ { "group": "hats_unisex", "prob": 50 }
+ ]
+ },
+ {
+ "id": "wardrobe_mens",
+ "type": "item_group",
+ "//": "clothing found in a man's wardrobe",
+ "subtype": "collection",
+ "items": [
+ { "group": "shoes_unisex", "prob": 50 },
+ { "item": "fishing_waders", "prob": 3 },
+ { "item": "kilt", "prob": 10 },
+ { "item": "football_armor", "prob": 10 },
+ { "item": "sleeping_bag", "prob": 10 },
+ { "item": "sleeping_bag_roll", "prob": 10 },
+ { "item": "bscabbard", "prob": 5 },
+ { "item": "kilt_leather", "prob": 5 },
+ { "item": "chaps_leather", "prob": 5 },
+ { "group": "coats_unisex", "prob": 50 },
+ { "group": "suits_unisex", "prob": 30 },
+ { "group": "suits_mens", "prob": 30 },
+ { "group": "bags_unisex", "prob": 20 }
+ ]
+ },
+ {
+ "id": "wardrobe_womens",
+ "type": "item_group",
+ "//": "clothing found in a woman's wardrobe",
+ "subtype": "collection",
+ "items": [
+ { "group": "shoes_unisex", "prob": 50 },
+ { "group": "shoes_womens", "prob": 60 },
+ { "item": "fishing_waders", "prob": 2 },
+ { "item": "football_armor", "prob": 5 },
+ { "item": "skirt", "prob": 20 },
+ { "item": "skirt_leather", "prob": 10 },
+ { "item": "bscabbard", "prob": 3 },
+ { "item": "sleeping_bag", "prob": 10 },
+ { "item": "sleeping_bag_roll", "prob": 10 },
+ { "item": "chaps_leather", "prob": 5 },
+ { "group": "coats_unisex", "prob": 50 },
+ { "group": "suits_unisex", "prob": 30 },
+ { "group": "suits_womens", "prob": 40 },
+ { "group": "bags_unisex", "prob": 20 }
+ ]
+ },
+ {
+ "id": "dresser_mens",
+ "type": "item_group",
+ "//": "clothing found in a man's dresser",
+ "subtype": "collection",
+ "items": [
+ { "group": "accesories_personal_unisex", "prob": 10 },
+ { "group": "accesories_personal_mens", "prob": 10 },
+ { "group": "masks_unisex", "prob": 5 },
+ { "group": "socks_unisex", "prob": 70 },
+ { "group": "scarfs_unisex", "prob": 20 },
+ { "group": "shirts_unisex", "prob": 50 },
+ { "group": "underwear_mens", "prob": 80 },
+ { "group": "underwear_unisex", "prob": 80 },
+ { "group": "pants_unisex", "prob": 50 },
+ { "group": "pants_mens", "prob": 60 },
+ { "group": "gloves_unisex", "prob": 20 }
+ ]
+ },
+ {
+ "id": "dresser_womens",
+ "type": "item_group",
+ "//": "clothing found in a woman's dresser",
+ "subtype": "collection",
+ "items": [
+ { "group": "accesories_personal_unisex", "prob": 30 },
+ { "group": "accesories_personal_womens", "prob": 5 },
+ { "group": "masks_unisex", "prob": 5 },
+ { "group": "socks_unisex", "prob": 70 },
+ { "group": "scarfs_unisex", "prob": 10 },
+ { "group": "shirts_womens", "prob": 60 },
+ { "group": "shirts_unisex", "prob": 50 },
+ { "group": "underwear_womens", "prob": 80 },
+ { "group": "underwear_unisex", "prob": 80 },
+ { "group": "pants_unisex", "prob": 50 },
+ { "group": "pants_womens", "prob": 60 },
+ { "group": "gloves_womens", "prob": 5 },
+ { "group": "gloves_unisex", "prob": 30 }
+ ]
+ },
+ {
+ "id": "unisex_coat_rack",
+ "type": "item_group",
+ "//": "clothing found on a coat rack",
+ "subtype": "collection",
+ "items": [
+ { "group": "scarfs_unisex", "prob": 30 },
+ { "group": "bags_unisex", "prob": 20 },
+ { "group": "coats_unisex", "prob": 70 },
+ { "group": "hats_unisex", "prob": 70 }
+ ]
+ },
+ {
+ "id": "hats_unisex",
+ "type": "item_group",
+ "//": "unisex hats for domestic locations",
+ "subtype": "distribution",
+ "items": [
+ {
+ "distribution": [
+ { "item": "tricorne", "prob": 5 },
+ { "item": "10gal_hat", "prob": 30 },
+ { "item": "tophat", "prob": 10 },
+ { "item": "hat_sombrero", "prob": 10 }
+ ],
+ "prob": 5
+ },
+ {
+ "distribution": [ { "item": "kippah", "prob": 33 }, { "item": "turban", "prob": 33 }, { "item": "kufi", "prob": 33 } ],
+ "prob": 10
+ },
+ {
+ "distribution": [
+ { "item": "helmet_motor", "prob": 20 },
+ { "item": "helmet_bike", "prob": 50 },
+ { "item": "headgear", "prob": 10 },
+ { "item": "helmet_ball", "prob": 15 },
+ { "item": "wetsuit_hood", "prob": 5 }
+ ],
+ "prob": 30
+ },
+ {
+ "distribution": [
+ { "item": "hat_hunting", "prob": 20 },
+ { "item": "hat_faux_fur", "prob": 10 },
+ { "item": "hat_fur", "prob": 5 },
+ { "item": "hat_boonie", "prob": 15 },
+ { "item": "cowl_wool", "prob": 15 },
+ { "item": "hood_rain", "prob": 25 }
+ ],
+ "prob": 50
+ },
+ {
+ "distribution": [
+ { "item": "bowhat", "prob": 10 },
+ { "item": "fedora", "prob": 40 },
+ { "item": "hat_newsboy", "prob": 5 },
+ { "item": "cowboy_hat", "prob": 20 },
+ { "item": "straw_fedora", "prob": 5 },
+ { "item": "hat_golf", "prob": 15 },
+ { "item": "straw_hat", "prob": 15 },
+ { "item": "beret_wool", "prob": 5 },
+ { "item": "beret", "prob": 10 },
+ { "item": "porkpie", "prob": 15 }
+ ],
+ "prob": 50
+ },
+ { "item": "hat_knit", "prob": 30 },
+ { "item": "hat_cotton", "prob": 40 },
+ { "item": "hat_ball", "prob": 50 }
+ ]
+ },
+ {
+ "id": "masks_unisex",
+ "type": "item_group",
+ "//": "unisex masks for domestic locations",
+ "subtype": "distribution",
+ "items": [
+ { "item": "bondage_mask", "prob": 10 },
+ { "item": "mask_dust", "prob": 15 },
+ { "item": "mask_guy_fawkes", "prob": 10 },
+ { "item": "mask_hockey", "prob": 15 },
+ { "item": "mouthpiece", "prob": 5 },
+ { "item": "mask_filter", "prob": 5 }
+ ]
+ },
+ {
+ "id": "socks_unisex",
+ "type": "item_group",
+ "//": "unisex socks",
+ "subtype": "distribution",
+ "items": [ { "item": "socks", "prob": 70 }, { "item": "socks_wool", "prob": 30 }, { "item": "thermal_socks", "prob": 10 } ]
+ },
+ {
+ "id": "scarfs_unisex",
+ "type": "item_group",
+ "//": "unisex scarfs and fabric coverings",
+ "subtype": "distribution",
+ "items": [
+ { "item": "bandana", "prob": 90 },
+ { "item": "balclava", "prob": 50 },
+ { "item": "headscarf", "prob": 50 },
+ { "item": "scarf_fur_long", "prob": 10 },
+ { "item": "scarf_fur", "prob": 20 },
+ { "item": "scarf", "prob": 80 },
+ { "item": "scarf_long", "prob": 40 },
+ { "item": "long_knit_scarf", "prob": 40 },
+ { "item": "knit_scarf", "prob": 80 },
+ { "item": "keffiyeh", "prob": 30 },
+ { "item": "mask_ski", "prob": 30 },
+ { "item": "thermal_mask", "prob": 5 },
+ { "item": "blindfold", "prob": 5 }
+ ]
+ },
+ {
+ "id": "shirts_unisex",
+ "type": "item_group",
+ "//": "unisex shirts",
+ "subtype": "distribution",
+ "items": [
+ { "item": "longshirt", "prob": 70 },
+ { "item": "arm_warmers", "prob": 20 },
+ { "item": "armguard_soft", "prob": 10 },
+ { "item": "dress_shirt", "prob": 50 },
+ { "item": "flag_shirt", "prob": 15 },
+ { "item": "jersey", "prob": 30 },
+ { "item": "linuxtshirt", "prob": 10 },
+ { "item": "polo_shirt", "prob": 30 },
+ { "item": "thermal_shirt", "prob": 20 },
+ { "item": "sleeveless_tunic", "prob": 10 },
+ { "item": "sweater", "prob": 40 },
+ { "item": "sweatshirt", "prob": 50 },
+ { "item": "tank_top", "prob": 30 },
+ { "item": "tshirt", "prob": 80 },
+ { "item": "tshirt_text", "prob": 50 },
+ { "item": "tunic", "prob": 10 },
+ { "item": "waistcoat", "prob": 10 },
+ { "item": "wool_hoodie", "prob": 10 },
+ { "item": "hoodie", "prob": 40 }
+ ]
+ },
+ {
+ "id": "shirts_womens",
+ "type": "item_group",
+ "//": "womens shirts",
+ "subtype": "distribution",
+ "items": [ { "item": "halter_top", "prob": 30 } ]
+ },
+ {
+ "id": "underwear_unisex",
+ "type": "item_group",
+ "//": "unisex underwear",
+ "subtype": "distribution",
+ "items": [
+ { "item": "thermal_suit", "prob": 15 },
+ { "item": "thermal_outfit", "prob": 5 },
+ { "item": "long_undertop", "prob": 30 },
+ { "item": "under_armor", "prob": 10 },
+ { "item": "undershirt", "prob": 40 },
+ { "item": "under_armor_shorts", "prob": 10 },
+ { "item": "long_underpants", "prob": 30 }
+ ]
+ },
+ {
+ "id": "underwear_womens",
+ "type": "item_group",
+ "//": "womens underwear.",
+ "subtype": "distribution",
+ "items": [
+ { "item": "bikini_bottom", "prob": 20 },
+ { "item": "boy_shorts", "prob": 30 },
+ { "item": "bra", "prob": 60 },
+ { "item": "panties", "prob": 70 },
+ { "item": "bikini_top", "prob": 20 },
+ { "item": "bikini_top_fur", "prob": 5 },
+ { "item": "bikini_top_leather", "prob": 10 },
+ { "item": "camisole", "prob": 30 },
+ { "item": "corset", "prob": 10 },
+ { "item": "sports_bra", "prob": 50 },
+ { "item": "stockings", "prob": 20 },
+ { "item": "tights", "prob": 20 }
+ ]
+ },
+ {
+ "id": "underwear_mens",
+ "type": "item_group",
+ "//": "mens underwear.",
+ "subtype": "distribution",
+ "items": [
+ { "item": "boxer_briefs", "prob": 30 },
+ { "item": "boxer_shorts", "prob": 50 },
+ { "item": "briefs", "prob": 50 },
+ { "item": "trunks", "prob": 10 }
+ ]
+ },
+ {
+ "id": "pants_unisex",
+ "type": "item_group",
+ "//": "pants and leg coverings for domestic locations.",
+ "subtype": "distribution",
+ "items": [
+ {
+ "distribution": [
+ { "item": "hot_pants", "prob": 40 },
+ { "item": "hot_pants_fur", "prob": 5 },
+ { "item": "hot_pants_leather", "prob": 35 }
+ ],
+ "prob": 10
+ },
+ {
+ "distribution": [
+ { "item": "chaps_leather", "prob": 30 },
+ { "item": "motorbike_pants", "prob": 35 },
+ { "item": "breeches", "prob": 25 },
+ { "item": "pants_ski", "prob": 45 },
+ { "item": "pants_checkered", "prob": 55 },
+ { "item": "pants_fur", "prob": 5 },
+ { "item": "pants_faux_fur", "prob": 15 }
+ ],
+ "prob": 20
+ },
+ { "item": "jeans", "prob": 80 },
+ { "item": "jeans_red", "prob": 20 },
+ { "item": "leg_warmers", "prob": 20 },
+ { "item": "leggings", "prob": 30 },
+ { "item": "legguard_hard", "prob": 3 },
+ { "item": "pants", "prob": 70 },
+ { "item": "pants_cargo", "prob": 60 },
+ { "item": "pants_leather", "prob": 20 },
+ { "item": "shorts", "prob": 50 },
+ { "item": "shorts_cargo", "prob": 60 },
+ { "item": "shorts_denim", "prob": 40 },
+ { "item": "b_shorts", "prob": 60 }
+ ]
+ },
+ {
+ "id": "pants_womens",
+ "type": "item_group",
+ "//": "womens pants and leg coverings for domestic locations.",
+ "subtype": "distribution",
+ "items": [ { "item": "nanoskirt", "prob": 10 }, { "item": "skirt", "prob": 50 }, { "item": "skirt_leather", "prob": 10 } ]
+ },
+ {
+ "id": "pants_mens",
+ "type": "item_group",
+ "//": "mens pants and leg coverings for domestic locations.",
+ "subtype": "distribution",
+ "items": [ { "item": "kilt", "prob": 10 }, { "item": "kilt_leather", "prob": 5 } ]
+ },
+ {
+ "id": "gloves_unisex",
+ "type": "item_group",
+ "//": "gloves and mittens for domestic locations.",
+ "subtype": "distribution",
+ "items": [
+ { "item": "gloves_leather", "prob": 60 },
+ { "item": "gloves_light", "prob": 60 },
+ { "item": "gloves_fingerless", "prob": 40 },
+ { "item": "gloves_wool", "prob": 25 },
+ { "item": "gloves_winter", "prob": 15 },
+ { "item": "mittens", "prob": 30 },
+ { "item": "gloves_work", "prob": 20 },
+ { "item": "gloves_golf", "prob": 10 },
+ { "item": "wetsuit_gloves", "prob": 5 },
+ { "item": "gloves_fur", "prob": 5 },
+ { "item": "thermal_gloves", "prob": 2 }
+ ]
+ },
+ {
+ "id": "gloves_womens",
+ "type": "item_group",
+ "//": "womens gloves and mittens for domestic locations.",
+ "subtype": "distribution",
+ "items": [ { "item": "long_glove_white", "prob": 5 } ]
+ },
+ {
+ "id": "bags_unisex",
+ "type": "item_group",
+ "//": "worn bags of all sorts for domestic buildings",
+ "subtype": "distribution",
+ "items": [
+ {
+ "distribution": [
+ { "item": "basket_laundry", "prob": 60 },
+ { "item": "straw_basket", "prob": 35 },
+ { "item": "suitcase_l", "prob": 15 },
+ { "item": "suitcase_m", "prob": 25 }
+ ],
+ "prob": 20
+ },
+ {
+ "distribution": [ { "item": "2lcanteen", "prob": 50 }, { "item": "camelbak", "prob": 25 }, { "item": "canteen", "prob": 70 } ],
+ "prob": 5
+ },
+ {
+ "distribution": [
+ { "item": "fanny", "prob": 60 },
+ { "item": "mbag", "prob": 35 },
+ { "item": "runner_bag", "prob": 45 },
+ { "item": "slingpack", "prob": 65 },
+ { "item": "purse", "prob": 70 },
+ { "item": "briefcase", "prob": 40 },
+ { "item": "hk_briefcase", "prob": 1 }
+ ],
+ "prob": 60
+ },
+ {
+ "distribution": [
+ { "item": "case_violin", "prob": 5 },
+ { "item": "quiver", "prob": 20 },
+ { "item": "quiver_large", "prob": 15 },
+ { "item": "solarpack", "prob": 5 },
+ { "item": "ammo_satchel", "prob": 10 },
+ { "item": "chestrig", "prob": 20 },
+ { "item": "dive_bag", "prob": 50 },
+ { "item": "petpack", "prob": 50 }
+ ],
+ "prob": 30
+ },
+ {
+ "distribution": [
+ { "item": "daypack", "prob": 25 },
+ { "item": "backpack_leather", "prob": 40 },
+ { "item": "backpack", "prob": 85 },
+ { "item": "backpack_hiking", "prob": 25 },
+ { "item": "duffelbag", "prob": 80 },
+ { "item": "travelpack", "prob": 25 },
+ { "item": "gobag", "prob": 1 }
+ ],
+ "prob": 80
+ }
+ ]
+ },
+ {
+ "id": "suits_unisex",
+ "type": "item_group",
+ "//": "suits, full body coverage",
+ "subtype": "distribution",
+ "items": [
+ { "item": "bondage_suit", "prob": 10 },
+ { "item": "dinosuit", "prob": 5 },
+ { "item": "yukata", "prob": 20 },
+ { "item": "leotard", "prob": 40 },
+ { "item": "motorbike_armor", "prob": 30 },
+ { "item": "suit", "prob": 70 },
+ { "item": "touring_suit", "prob": 40 },
+ { "item": "wolfsuit", "prob": 5 },
+ { "item": "wool_suit", "prob": 20 },
+ { "item": "unitard", "prob": 60 },
+ { "item": "zentai", "prob": 10 },
+ { "item": "wetsuit", "prob": 5 },
+ { "item": "union_suit", "prob": 40 },
+ { "item": "wetsuit_spring", "prob": 5 }
+ ]
+ },
+ {
+ "id": "suits_mens",
+ "type": "item_group",
+ "//": "suits, full body coverage for men.",
+ "subtype": "distribution",
+ "items": [ { "item": "tux", "prob": 30 }, { "item": "thawb", "prob": 10 }, { "item": "cassock", "prob": 10 } ]
+ },
+ {
+ "id": "suits_womens",
+ "type": "item_group",
+ "//": "suits/dresses, full body coverage for women.",
+ "subtype": "distribution",
+ "items": [
+ { "item": "dress_wedding", "prob": 5 },
+ { "item": "sundress", "prob": 60 },
+ { "item": "gown", "prob": 20 },
+ { "item": "dress", "prob": 60 },
+ { "item": "veil_wedding", "prob": 5 }
+ ]
+ },
+ {
+ "id": "coats_unisex",
+ "type": "item_group",
+ "//": "unisex coats, jackets, cloaks, etc.",
+ "subtype": "distribution",
+ "items": [
+ {
+ "distribution": [
+ { "item": "cloak", "prob": 80 },
+ { "item": "cloak_wool", "prob": 40 },
+ { "item": "cloak_leather", "prob": 20 },
+ { "item": "cloak_fur", "prob": 10 },
+ { "item": "jedi_cloak", "prob": 5 }
+ ],
+ "prob": 20
+ },
+ {
+ "distribution": [
+ { "item": "duster", "prob": 80 },
+ { "item": "duster_leather", "prob": 60 },
+ { "item": "duster_faux_fur", "prob": 30 },
+ { "item": "duster_fur", "prob": 5 },
+ { "item": "sleeveless_duster", "prob": 70 },
+ { "item": "sleeveless_duster_leather", "prob": 50 },
+ { "item": "sleeveless_duster_fur", "prob": 20 },
+ { "item": "sleeveless_duster_faux_fur", "prob": 10 }
+ ],
+ "prob": 60
+ },
+ {
+ "distribution": [
+ { "item": "trenchcoat", "prob": 80 },
+ { "item": "trenchcoat_leather", "prob": 60 },
+ { "item": "trenchcoat_faux_fur", "prob": 30 },
+ { "item": "trenchcoat_fur", "prob": 5 },
+ { "item": "sleeveless_trenchcoat", "prob": 40 },
+ { "item": "sleeveless_trenchcoat_leather", "prob": 30 },
+ { "item": "sleeveless_trenchcoat_fur", "prob": 10 },
+ { "item": "sleeveless_trenchcoat_faux_fur", "prob": 20 }
+ ],
+ "prob": 40
+ },
+ {
+ "distribution": [
+ { "item": "coat_rain", "prob": 80 },
+ { "item": "coat_winter", "prob": 50 },
+ { "item": "peacoat", "prob": 50 },
+ { "item": "greatcoat", "prob": 35 },
+ { "item": "coat_faux_fur", "prob": 20 },
+ { "item": "coat_fur", "prob": 10 },
+ { "item": "coat_fur_sf", "prob": 5 }
+ ],
+ "prob": 80
+ },
+ {
+ "distribution": [
+ { "item": "jacket_jean", "prob": 80 },
+ { "item": "jacket_flannel", "prob": 50 },
+ { "item": "jacket_leather", "prob": 50 },
+ { "item": "jacket_leather_red", "prob": 25 },
+ { "item": "jacket_light", "prob": 60 },
+ { "item": "jacket_windbreaker", "prob": 70 },
+ { "item": "poncho", "prob": 30 },
+ { "item": "ski_jacket", "prob": 25 }
+ ],
+ "prob": 60
+ },
+ {
+ "distribution": [ { "item": "house_coat", "prob": 80 }, { "item": "kimono", "prob": 20 }, { "item": "robe", "prob": 10 } ],
+ "prob": 30
+ },
+ {
+ "distribution": [
+ { "item": "vest", "prob": 80 },
+ { "item": "vest_leather", "prob": 20 },
+ { "item": "army_top", "prob": 40 },
+ { "item": "blazer", "prob": 70 }
+ ],
+ "prob": 40
+ }
+ ]
+ },
+ {
+ "id": "shoes_unisex",
+ "type": "item_group",
+ "//": "unisex shoes (there are no men's only shoes)",
+ "subtype": "distribution",
+ "items": [
+ {
+ "distribution": [
+ { "item": "boots", "prob": 80 },
+ { "item": "boots_hiking", "prob": 50 },
+ { "item": "boots_steel", "prob": 50 },
+ { "item": "boots_combat", "prob": 45 },
+ { "item": "boots_fur", "prob": 10 },
+ { "item": "boots_western", "prob": 40 },
+ { "item": "boots_winter", "prob": 30 },
+ { "item": "knee_high_boots", "prob": 15 },
+ { "item": "motorbike_boots", "prob": 35 },
+ { "item": "thigh_high_boots", "prob": 5 }
+ ],
+ "prob": 60
+ },
+ {
+ "distribution": [
+ { "item": "bastsandals", "prob": 20 },
+ { "item": "straw_sandals", "prob": 20 },
+ { "item": "flip_flops", "prob": 40 },
+ { "item": "leathersandals", "prob": 35 }
+ ],
+ "prob": 60
+ },
+ {
+ "distribution": [
+ { "item": "cleats", "prob": 20 },
+ { "item": "golf_shoes", "prob": 20 },
+ { "item": "dance_shoes", "prob": 30 },
+ { "item": "roller_blades", "prob": 35 },
+ { "item": "rollerskates", "prob": 35 },
+ { "item": "roller_shoes_off", "prob": 45 }
+ ],
+ "prob": 20
+ },
+ {
+ "distribution": [
+ { "item": "dress_shoes", "prob": 50 },
+ { "item": "lowtops", "prob": 30 },
+ { "item": "mocassins", "prob": 10 },
+ { "item": "sneakers", "prob": 35 }
+ ],
+ "prob": 70
+ },
+ {
+ "distribution": [
+ { "item": "boots_rubber", "prob": 50 },
+ { "item": "clogs", "prob": 20 },
+ { "item": "geta", "prob": 10 },
+ { "item": "slippers", "prob": 75 }
+ ],
+ "prob": 70
+ }
+ ]
+ },
+ {
+ "id": "shoes_womens",
+ "type": "item_group",
+ "//": "womens only shoes",
+ "subtype": "distribution",
+ "items": [ { "item": "heels", "prob": 100 } ]
+ },
+ {
+ "id": "accesories_personal_unisex",
+ "type": "item_group",
+ "//": "unisex personal accessories",
+ "subtype": "collection",
+ "items": [
+ { "group": "clothing_glasses", "prob": 10 },
+ { "group": "clothing_watch", "prob": 10 },
+ {
+ "distribution": [
+ { "item": "ring_wedding", "prob": 50, "count": [ 1, 2 ] },
+ { "item": "copper_ring", "prob": 80, "count": [ 1, 3 ] },
+ { "item": "silver_ring", "prob": 50, "count": [ 1, 3 ] },
+ { "item": "gold_ring", "prob": 40, "count": [ 1, 3 ] },
+ { "item": "diamond_ring", "prob": 10 },
+ { "item": "platinum_ring", "prob": 10 }
+ ],
+ "prob": 15
+ },
+ {
+ "distribution": [
+ { "item": "ear_spool", "prob": 20, "count": [ 1, 2 ] },
+ { "item": "bead_ear", "prob": 70, "count": [ 1, 2 ] },
+ { "item": "copper_ear", "prob": 60, "count": [ 1, 2 ] },
+ { "item": "silver_ear", "prob": 40, "count": [ 1, 2 ] },
+ { "item": "gold_ear", "prob": 40, "count": [ 1, 2 ] },
+ { "item": "platinum_ear", "prob": 10 },
+ { "item": "ear_plugs", "prob": 40 },
+ { "item": "attached_ear_plugs_off", "prob": 30 }
+ ]
+ },
+ {
+ "distribution": [
+ { "item": "bead_bracelet", "prob": 80, "count": [ 1, 2 ] },
+ { "item": "bracelet_friendship", "prob": 60, "count": [ 1, 2 ] },
+ { "item": "copper_bracelet", "prob": 50, "count": [ 1, 2 ] },
+ { "item": "silver_bracelet", "prob": 40, "count": [ 1, 2 ] },
+ { "item": "gold_bracelet", "prob": 10, "count": [ 1, 2 ] },
+ { "item": "platinum_bracelet", "prob": 10 }
+ ],
+ "prob": 15
+ },
+ {
+ "distribution": [
+ { "item": "gold_dental_grill", "prob": 50, "count": [ 1, 2 ] },
+ { "item": "platinum_dental_grill", "prob": 30, "count": [ 1, 2 ] },
+ { "item": "diamond_dental_grill", "prob": 10 }
+ ],
+ "prob": 15
+ },
+ {
+ "distribution": [
+ { "item": "bead_necklace", "prob": 80, "count": [ 1, 2 ] },
+ { "item": "copper_necklace", "prob": 60, "count": [ 1, 2 ] },
+ { "item": "silver_necklace", "prob": 40, "count": [ 1, 2 ] },
+ { "item": "gold_necklace", "prob": 20, "count": [ 1, 2 ] },
+ { "item": "platinum_necklace", "prob": 10, "count": [ 1, 2 ] },
+ { "item": "copper_locket", "prob": 60, "count": [ 1, 2 ] },
+ { "item": "silver_locket", "prob": 40, "count": [ 1, 2 ] },
+ { "item": "gold_locket", "prob": 20, "count": [ 1, 2 ] },
+ { "item": "platinum_locket", "prob": 10, "count": [ 1, 2 ] },
+ { "item": "collarpin", "prob": 10 },
+ { "item": "bronze_medal", "prob": 6 },
+ { "item": "silver_medal", "prob": 4 },
+ { "item": "gold_medal", "prob": 2 },
+ { "item": "small_relic", "prob": 10 },
+ { "item": "holy_symbol", "prob": 10 },
+ { "item": "holy_symbol_wood", "prob": 10 }
+ ],
+ "prob": 15
+ },
+ {
+ "distribution": [
+ { "item": "faux_fur_cat_ears", "prob": 80 },
+ { "item": "leather_cat_ears", "prob": 50 },
+ { "item": "fur_cat_ears", "prob": 10 },
+ { "item": "faux_fur_cat_tail", "prob": 80 },
+ { "item": "leather_cat_tail", "prob": 50 },
+ { "item": "fur_cat_tail", "prob": 10 },
+ { "item": "faux_fur_collar", "prob": 80 },
+ { "item": "leather_collar", "prob": 50 },
+ { "item": "fur_collar", "prob": 10 }
+ ],
+ "prob": 15
+ },
+ {
+ "distribution": [
+ { "item": "bootstrap", "prob": 20 },
+ { "item": "bootsheath", "prob": 50 },
+ { "item": "sheath", "prob": 80 },
+ { "item": "back_holster", "prob": 10 },
+ { "item": "holster", "prob": 30 },
+ { "item": "sholster", "prob": 10 },
+ { "item": "bholster", "prob": 10 }
+ ],
+ "prob": 15
+ },
+ {
+ "distribution": [
+ { "item": "elbow_pads", "prob": 50 },
+ { "item": "knee_pads", "prob": 50 },
+ { "item": "iggaak", "prob": 5 },
+ { "item": "goggles_swim", "prob": 10 },
+ { "item": "glasses_bal", "prob": 10 },
+ { "item": "eclipse_glasses", "prob": 5 },
+ { "item": "goggles_ski", "prob": 10 }
+ ],
+ "prob": 15
+ },
+ { "item": "folding_poncho", "prob": 10 },
+ { "item": "american_flag", "prob": 2 },
+ { "item": "tool_belt", "prob": 10 },
+ { "item": "leather_belt", "prob": 60 },
+ { "item": "wearable_light", "prob": 30 },
+ { "item": "binoculars", "prob": 10 },
+ { "item": "whistle", "prob": 30 },
+ { "item": "harmonica_holder", "prob": 10 },
+ { "group": "flask_liquor", "prob": 10 }
+ ]
+ },
+ {
+ "id": "accesories_personal_womens",
+ "type": "item_group",
+ "//": "womens personal accessories",
+ "subtype": "distribution",
+ "items": [
+ { "item": "hairpin", "prob": 90 },
+ { "item": "fc_hairpin", "prob": 70 },
+ { "item": "copper_hairpin", "prob": 60 },
+ { "item": "silver_hairpin", "prob": 50 },
+ { "item": "gold_hairpin", "prob": 30 },
+ { "item": "platinum_hairpin", "prob": 10 },
+ { "item": "ring_engagement", "prob": 5 },
+ { "item": "ring_purity", "prob": 10 },
+ { "item": "barrette", "prob": 60 },
+ { "item": "pearl_collar", "prob": 5 },
+ { "item": "jade_brooch", "prob": 5 }
+ ]
+ },
+ {
+ "id": "accesories_personal_mens",
+ "type": "item_group",
+ "//": "men's personal accessories",
+ "subtype": "distribution",
+ "items": [
+ { "item": "tie_bow", "prob": 30 },
+ { "item": "tie_clipon", "prob": 10 },
+ { "item": "tie_necktie", "prob": 80 },
+ { "item": "tieclip", "prob": 20 },
+ { "item": "cufflinks", "prob": 20 },
+ { "item": "cufflinks_intricate", "prob": 5 },
+ { "item": "ring_signet", "prob": 30 },
+ { "item": "tie_skinny", "prob": 20 }
+ ]
}
]
diff --git a/data/json/itemgroups/defense_mode.json b/data/json/itemgroups/defense_mode.json
index 8294c120df6a8..a0cd99314e559 100644
--- a/data/json/itemgroups/defense_mode.json
+++ b/data/json/itemgroups/defense_mode.json
@@ -27,7 +27,7 @@
{ "item": "crossbow" },
{ "item": "marlin_9a" },
{ "item": "hk_mp5" },
- { "item": "taurus_38" },
+ { "item": "taurus_spectrum" },
{ "item": "deagle_44" },
{ "item": "m1911" },
{ "item": "hk_ump45" },
diff --git a/data/json/itemgroups/drugs.json b/data/json/itemgroups/drugs.json
index 9c75e9970983c..ccb941e8d8c58 100644
--- a/data/json/itemgroups/drugs.json
+++ b/data/json/itemgroups/drugs.json
@@ -53,6 +53,7 @@
"items": [
[ "adderall", 100 ],
[ "antibiotics", 100 ],
+ [ "strong_antibiotic", 45 ],
[ "antifungal", 100 ],
[ "antiparasitic", 100 ],
[ "diazepam", 100 ],
diff --git a/data/json/itemgroups/food.json b/data/json/itemgroups/food.json
index 263b970e5b2a4..65c6a64fae8dc 100644
--- a/data/json/itemgroups/food.json
+++ b/data/json/itemgroups/food.json
@@ -145,8 +145,59 @@
[ "strawberries", 2 ],
[ "raspberries", 7 ],
[ "blackberries", 7 ],
+ [ "cholla_bud", 3 ],
[ "garlic", 3 ],
[ "pine_nuts", 2 ]
]
+ },
+ {
+ "type": "item_group",
+ "id": "softdrinks_canned",
+ "items": [
+ [ "cola", 60 ],
+ [ "colamdew", 55 ],
+ [ "creamsoda", 50 ],
+ [ "lemonlime", 50 ],
+ [ "orangesoda", 45 ],
+ [ "rootbeer", 40 ],
+ [ "crispycran", 35 ],
+ [ "purple_drink", 35 ],
+ [ "choc_drink", 25 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "candy_chocolate",
+ "items": [
+ [ "chocolate", 70 ],
+ [ "candy", 70 ],
+ [ "candy2", 70 ],
+ [ "candy3", 70 ],
+ [ "maltballs", 60 ],
+ [ "mintpatties", 60 ],
+ [ "neccowafers", 55 ],
+ [ "powder_candy", 50 ],
+ [ "candycigarette", 15 ],
+ [ "maple_candy", 10 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "salty_snacks",
+ "items": [
+ [ "chips", 65 ],
+ [ "chips2", 65 ],
+ [ "chips3", 65 ],
+ [ "pretzels", 55 ],
+ [ "jerky", 55 ],
+ [ "porkstick", 55 ],
+ [ "nachos", 50 ],
+ [ "chocpretzels", 40 ],
+ [ "popcorn", 25 ],
+ [ "popcorn2", 35 ],
+ [ "popcorn3", 35 ],
+ [ "cracklins", 25 ],
+ [ "fried_seeds", 25 ]
+ ]
}
]
diff --git a/data/json/itemgroups/food_service.json b/data/json/itemgroups/food_service.json
index 7bd38c3bee335..63f2bcc83720c 100644
--- a/data/json/itemgroups/food_service.json
+++ b/data/json/itemgroups/food_service.json
@@ -130,8 +130,7 @@
[ "oj", 40 ],
[ "juice", 35 ],
[ "cranberry_juice", 35 ],
- [ "cola", 50 ],
- [ "lemonlime", 45 ],
+ { "group": "softdrinks_canned", "prob": 95 },
[ "V8", 15 ],
[ "fries", 7 ],
[ "cheese_fries", 5 ],
@@ -247,18 +246,7 @@
{
"id": "pizza_soda",
"type": "item_group",
- "items": [
- [ "purple_drink", 3 ],
- [ "crispycran", 7 ],
- [ "rootbeer", 15 ],
- [ "colamdew", 9 ],
- [ "orangesoda", 10 ],
- [ "lemonlime", 9 ],
- [ "creamsoda", 9 ],
- [ "cola", 9 ],
- [ "energy_drink", 5 ],
- [ "lemonade", 8 ]
- ]
+ "items": [ { "group": "softdrinks_canned", "prob": 70 }, [ "energy_drink", 5 ], [ "lemonade", 8 ] ]
},
{
"id": "pizza_table",
@@ -284,7 +272,7 @@
[ "towel", 15 ],
[ "soap", 15 ],
[ "detergent", 15 ],
- [ "bleach", 15 ],
+ { "item": "bleach", "prob": 15, "charges-min": 1 },
[ "broom", 13 ],
[ "dinosuit", 7 ],
[ "hat_ball", 19 ],
@@ -416,7 +404,7 @@
[ "detergent", 8 ],
[ "rag", 15 ],
[ "broom", 8 ],
- [ "bleach", 8 ],
+ { "item": "bleach", "prob": 8, "charges-min": 1 },
[ "hotplate", 1 ],
[ "vinegar", 3 ]
]
@@ -460,13 +448,7 @@
[ "cheeseburger", 15 ],
[ "hamburger", 15 ],
[ "fish_sandwich", 10 ],
- [ "cola", 15 ],
- [ "lemonlime", 10 ],
- [ "orangesoda", 10 ],
- [ "crispycran", 10 ],
- [ "rootbeer", 13 ],
- [ "colamdew", 10 ],
- [ "lemonade", 7 ]
+ { "group": "softdrinks_canned", "prob": 75 }
]
},
{
@@ -533,7 +515,7 @@
[ "soap", 30 ],
[ "detergent", 30 ],
[ "rag", 30 ],
- [ "bleach", 30 ],
+ { "item": "bleach", "prob": 30, "charges-min": 1 },
[ "vinegar", 30 ],
[ "backpack", 5 ]
]
@@ -621,15 +603,8 @@
[ "sports_drink", 40 ],
[ "energy_drink", 40 ],
[ "energy_drink_atomic", 5 ],
- [ "cola", 35 ],
- [ "creamsoda", 30 ],
- [ "lemonlime", 40 ],
- [ "orangesoda", 30 ],
- [ "colamdew", 40 ],
- [ "rootbeer", 30 ],
+ { "group": "softdrinks_canned", "prob": 290 },
[ "spezi", 10 ],
- [ "crispycran", 35 ],
- [ "purple_drink", 50 ],
{ "item": "cola", "prob": 30, "container-item": "bottle_plastic" },
{ "item": "creamsoda", "prob": 20, "container-item": "bottle_plastic" },
{ "item": "lemonlime", "prob": 20, "container-item": "bottle_plastic" },
@@ -1056,7 +1031,8 @@
[ "tongs", 10 ],
[ "carver_off", 5 ],
[ "meat", 1 ],
- [ "hacksaw", 10 ]
+ [ "hacksaw", 10 ],
+ [ "gloves_cut_resistant", 10 ]
]
}
]
diff --git a/data/json/itemgroups/guns.json b/data/json/itemgroups/guns.json
index 7e9a73e299d6b..84ee65c7ad9c5 100644
--- a/data/json/itemgroups/guns.json
+++ b/data/json/itemgroups/guns.json
@@ -15,6 +15,7 @@
{ "item": "sw_22", "prob": 15, "charges-min": 0, "charges-max": 10 },
{ "item": "sw_610", "prob": 20, "charges-min": 0, "charges-max": 6 },
{ "item": "sw_619", "prob": 25, "charges-min": 0, "charges-max": 7 },
+ { "item": "taurus_spectrum", "prob": 15, "charges-min": 0, "charges-max": 6 },
{ "item": "p226_357sig", "prob": 20, "charges-min": 0, "charges-max": 15 },
{ "item": "p320_357sig", "prob": 10, "charges-min": 0, "charges-max": 14 },
{ "item": "kp32", "prob": 10, "charges-min": 0, "charges-max": 7 },
@@ -56,7 +57,6 @@
{ "item": "sig_p230", "prob": 45, "charges-min": 0, "charges-max": 8 },
{ "item": "sw_500", "prob": 25, "charges-min": 0, "charges-max": 5 },
{ "item": "sw629", "prob": 40, "charges-min": 0, "charges-max": 6 },
- { "item": "taurus_38", "prob": 35, "charges-min": 0, "charges-max": 10 },
{ "item": "usp_45", "prob": 70, "charges-min": 0, "charges-max": 12 },
{ "item": "usp_9mm", "prob": 120, "charges-min": 0, "charges-max": 15 }
]
diff --git a/data/json/itemgroups/item_groups.json b/data/json/itemgroups/item_groups.json
index 7d91a1f5d2e86..741e858df2c12 100644
--- a/data/json/itemgroups/item_groups.json
+++ b/data/json/itemgroups/item_groups.json
@@ -3,27 +3,14 @@
"type": "item_group",
"id": "child_items",
"items": [
- [ "chocolate", 50 ],
- [ "candy", 60 ],
- [ "candy2", 60 ],
- [ "candy3", 60 ],
- [ "maple_candy", 10 ],
+ { "group": "candy_chocolate", "prob": 360 },
[ "toastem", 10 ],
[ "toastem2", 10 ],
[ "toastem3", 12 ],
- [ "powder_candy", 40 ],
- [ "neccowafers", 50 ],
- [ "maltballs", 50 ],
[ "cookies", 80 ],
[ "crack", 8 ],
[ "bat", 60 ],
- [ "purple_drink", 12 ],
- [ "cola", 6 ],
- [ "creamsoda", 6 ],
- [ "lemonlime", 6 ],
- [ "orangesoda", 5 ],
- [ "crispycran", 12 ],
- [ "colamdew", 8 ],
+ { "group": "softdrinks_canned", "prob": 55 },
{ "item": "cola", "prob": 6, "container-item": "bottle_plastic" },
{ "item": "creamsoda", "prob": 6, "container-item": "bottle_plastic" },
{ "item": "lemonlime", "prob": 6, "container-item": "bottle_plastic" },
@@ -55,7 +42,6 @@
[ "novel_pulp", 16 ],
[ "fairy_tales", 20 ],
[ "mag_comic", 20 ],
- [ "candycigarette", 10 ],
[ "radio_car_box", 1 ],
[ "basketball", 8 ],
[ "radiocontrol", 5 ],
@@ -203,20 +189,12 @@
"ammo": 50,
"magazine": 100,
"items": [
- [ "rootbeer", 65 ],
+ { "group": "softdrinks_canned", "prob": 325 },
[ "mag_computer", 35 ],
- [ "purple_drink", 35 ],
- [ "creamsoda", 35 ],
[ "basket_laundry", 20 ],
- [ "lemonlime", 35 ],
- [ "orangesoda", 20 ],
- [ "crispycran", 20 ],
- [ "colamdew", 35 ],
[ "television", 30 ],
[ "clock", 10 ],
[ "fp_loyalty_card", 5 ],
- [ "cola", 70 ],
- [ "choc_drink", 10 ],
{ "item": "cola", "prob": 20, "container-item": "bottle_plastic" },
{ "item": "rootbeer", "prob": 20, "container-item": "bottle_plastic" },
{ "item": "lemonlime", "prob": 10, "container-item": "bottle_plastic" },
@@ -386,24 +364,7 @@
[ "nic_gum", 2 ],
[ "oxygen_tank", 2 ],
[ "smoxygen_tank", 1 ],
- [ "holybook_bible1", 4 ],
- [ "holybook_bible2", 3 ],
- [ "holybook_quran", 3 ],
- [ "holybook_hadith", 3 ],
- [ "holybook_talmud", 2 ],
- [ "holybook_tanakh", 2 ],
- [ "holybook_vedas", 3 ],
- [ "holybook_upanishads", 3 ],
- [ "holybook_tripitaka", 3 ],
- [ "holybook_sutras", 3 ],
- [ "holybook_granth", 2 ],
- [ "holybook_mormon", 1 ],
- [ "holybook_kojiki", 1 ],
- [ "holybook_havamal", 1 ],
- [ "holybook_pastafarian", 1 ],
- [ "holybook_slack", 1 ],
- [ "holybook_kallisti", 1 ],
- [ "holybook_scientology", 1 ],
+ { "group": "religious_books", "prob": 38 },
[ "leathersandals", 25 ],
[ "phonebook", 5 ],
[ "survnote", 1 ],
@@ -426,9 +387,8 @@
"ammo": 75,
"magazine": 100,
"items": [
+ { "group": "snacks", "prob": 370 },
[ "aluminum_foil", 25 ],
- [ "chips", 65 ],
- [ "fried_seeds", 15 ],
[ "rolling_pin", 25 ],
[ "cereal", 50 ],
[ "cereal2", 60 ],
@@ -439,7 +399,6 @@
[ "clock", 10 ],
[ "hat_chef", 2 ],
[ "jacket_chef", 2 ],
- [ "kernels", 35 ],
[ "pot", 25 ],
[ "sponge", 30 ],
[ "pot_copper", 15 ],
@@ -481,20 +440,17 @@
[ "wine_noir", 2 ],
[ "wine_marsala", 2 ],
[ "wine_vermouth", 9 ],
- [ "syrup", 20 ],
[ "sweet_sausage", 2 ],
- [ "coffee_syrup", 10 ],
[ "roasted_coffee_bean", 10 ],
[ "bacon", 25 ],
- [ "bleach", 20 ],
- [ "ammonia", 24 ],
+ { "item": "bleach", "prob": 20, "charges-min": 1 },
+ { "item": "ammonia", "prob": 24, "charges-min": 1 },
[ "flour", 60 ],
[ "yeast", 50 ],
[ "molasses", 15 ],
[ "milk_powder", 15 ],
[ "cornmeal", 40 ],
[ "powder_eggs", 20 ],
- [ "granola", 5 ],
{
"item": "protein_powder",
"prob": 12,
@@ -509,7 +465,6 @@
[ "fchicken", 25 ],
[ "lunchmeat", 10 ],
[ "bologna", 10 ],
- [ "nachos", 50 ],
[ "nachosc", 10 ],
[ "nachosm", 10 ],
[ "nachosmc", 2 ],
@@ -521,14 +476,11 @@
[ "brownie", 30 ],
[ "cooking_oil", 20 ],
[ "cooking_oil2", 20 ],
- [ "fruit_leather", 15 ],
[ "sugar", 40 ],
[ "lemonade_powder", 15 ],
[ "salt", 40 ],
[ "pepper", 30 ],
[ "cinnamon", 15 ],
- [ "tea_raw", 10 ],
- [ "coffee_raw", 15 ],
[ "funnel", 50 ],
[ "vac_sealer", 10 ],
[ "seasoning_italian", 25 ],
@@ -536,8 +488,6 @@
[ "cookbook_italian", 25 ],
[ "family_cookbook", 6 ],
[ "brewing_cookbook", 4 ],
- [ "chips2", 65 ],
- [ "chips3", 65 ],
[ "pizza_veggy", 8 ],
[ "pizza_meat", 8 ],
[ "pizza_cheese", 8 ],
@@ -671,15 +621,7 @@
[ "cranberry_juice", 50 ],
[ "sports_drink", 30 ],
[ "lemonade", 50 ],
- [ "cola", 70 ],
- [ "choc_drink", 30 ],
- [ "rootbeer", 65 ],
- [ "purple_drink", 35 ],
- [ "creamsoda", 35 ],
- [ "lemonlime", 35 ],
- [ "orangesoda", 20 ],
- [ "crispycran", 20 ],
- [ "colamdew", 35 ],
+ { "group": "softdrinks_canned", "prob": 345 },
{ "item": "cola", "prob": 15, "container-item": "bottle_twoliter" },
{ "item": "creamsoda", "prob": 15, "container-item": "bottle_twoliter" },
{ "item": "lemonlime", "prob": 15, "container-item": "bottle_twoliter" },
@@ -996,16 +938,11 @@
[ "firecracker", 5 ],
[ "fried_seeds", 30 ],
[ "chips", 65 ],
- [ "cola", 70 ],
- [ "lemonlime", 70 ],
- [ "orangesoda", 60 ],
- [ "crispycran", 30 ],
- [ "creamsoda", 70 ],
- [ "colamdew", 70 ],
- [ "choc_drink", 10 ],
+ { "group": "softdrinks_canned", "prob": 380 },
[ "picklocks", 10 ],
[ "wolfsuit", 4 ],
[ "dinosuit", 4 ],
+ [ "zentai", 4 ],
[ "glowstick", 60 ],
[ "handflare", 40 ],
[ "blanket", 10 ],
@@ -1053,24 +990,7 @@
[ "alarmclock", 30 ],
[ "maid_dress", 3 ],
[ "maid_hat", 3 ],
- [ "holybook_bible1", 4 ],
- [ "holybook_bible2", 3 ],
- [ "holybook_quran", 3 ],
- [ "holybook_hadith", 3 ],
- [ "holybook_talmud", 2 ],
- [ "holybook_tanakh", 2 ],
- [ "holybook_vedas", 3 ],
- [ "holybook_upanishads", 3 ],
- [ "holybook_tripitaka", 3 ],
- [ "holybook_sutras", 3 ],
- [ "holybook_granth", 2 ],
- [ "holybook_mormon", 1 ],
- [ "holybook_kojiki", 1 ],
- [ "holybook_havamal", 1 ],
- [ "holybook_pastafarian", 1 ],
- [ "holybook_slack", 1 ],
- [ "holybook_kallisti", 1 ],
- [ "holybook_scientology", 1 ],
+ { "group": "religious_books", "prob": 38 },
[ "mouthpiece", 1 ],
[ "leathersandals", 25 ],
[ "survnote", 2 ],
@@ -1084,130 +1004,6 @@
{ "item": "condom", "prob": 50, "count": [ 1, 5 ] }
]
},
- {
- "type": "item_group",
- "id": "dresser",
- "ammo": 50,
- "magazine": 100,
- "items": [
- [ "jeans", 90 ],
- [ "pants_checkered", 5 ],
- [ "shorts", 70 ],
- [ "shorts_denim", 50 ],
- [ "pants", 75 ],
- [ "leather_belt", 30 ],
- [ "pants_leather", 60 ],
- [ "pants_cargo", 70 ],
- [ "shorts_cargo", 50 ],
- [ "motorbike_pants", 5 ],
- [ "breeches", 5 ],
- [ "skirt", 75 ],
- [ "dress", 70 ],
- [ "sundress", 50 ],
- [ "camisole", 60 ],
- [ "bra", 70 ],
- [ "hairpin", 30 ],
- [ "fc_hairpin", 5 ],
- [ "barrette", 15 ],
- [ "tieclip", 10 ],
- [ "collarpin", 10 ],
- [ "undershirt", 70 ],
- [ "boxer_shorts", 50 ],
- [ "briefs", 40 ],
- [ "boxer_briefs", 45 ],
- [ "panties", 70 ],
- [ "boy_shorts", 25 ],
- [ "gown", 1 ],
- [ "long_glove_white", 1 ],
- [ "veil_wedding", 1 ],
- [ "dress_wedding", 1 ],
- [ "tshirt", 80 ],
- [ "longshirt", 70 ],
- [ "polo_shirt", 65 ],
- [ "dress_shirt", 60 ],
- [ "tank_top", 50 ],
- [ "sweatshirt", 75 ],
- [ "sweater", 75 ],
- [ "hoodie", 65 ],
- [ "jacket_light", 50 ],
- [ "jacket_windbreaker", 25 ],
- [ "jacket_jean", 35 ],
- [ "blazer", 35 ],
- [ "towel", 40 ],
- [ "jacket_leather", 30 ],
- [ "motorbike_armor", 5 ],
- [ "poncho", 15 ],
- [ "folding_poncho", 5 ],
- [ "trenchcoat", 12 ],
- [ "sleeveless_trenchcoat", 2 ],
- [ "duster", 12 ],
- [ "sleeveless_duster", 2 ],
- [ "peacoat", 30 ],
- [ "greatcoat", 15 ],
- [ "vest", 15 ],
- [ "mag_porn", 20 ],
- [ "photo_album", 10 ],
- [ "lighter", 60 ],
- [ "ref_lighter", 2 ],
- [ "sewing_kit", 30 ],
- [ "thread", 40 ],
- [ "flashlight", 40 ],
- [ "suit", 60 ],
- [ "waistcoat", 30 ],
- [ "tophat", 10 ],
- [ "bowhat", 10 ],
- [ "cowboy_hat", 10 ],
- [ "bullwhip", 1 ],
- [ "10gal_hat", 5 ],
- [ "glasses_monocle", 2 ],
- [ "duct_tape", 60 ],
- [ "firecracker_pack", 5 ],
- [ "firecracker", 5 ],
- [ "wolfsuit", 4 ],
- [ "dinosuit", 4 ],
- [ "vibrator", 5 ],
- { "item": "condom", "prob": 30, "count": [ 1, 5 ] },
- [ "snuggie", 5 ],
- [ "flyer", 10 ],
- [ "socks", 70 ],
- [ "socks_wool", 30 ],
- [ "pocketwatch", 5 ],
- [ "flask_hip", 2 ],
- [ "tux", 1 ],
- [ "dress_wedding", 1 ],
- [ "clogs", 2 ],
- [ "wristwatch", 15 ],
- [ "maid_dress", 3 ],
- [ "maid_hat", 3 ],
- [ "knitting_needles", 1 ],
- [ "survnote", 1 ],
- [ "b_shorts", 15 ],
- [ "halter_top", 30 ],
- [ "linuxtshirt", 10 ],
- [ "kilt", 5 ],
- [ "nanoskirt", 10 ],
- [ "sleeveless_tunic", 5 ],
- [ "fedora", 10 ],
- [ "straw_hat", 5 ],
- [ "straw_fedora", 5 ],
- [ "holy_symbol", 20 ],
- [ "kufi", 5 ],
- [ "kippah", 5 ],
- [ "headscarf", 5 ],
- { "item": "kirpan", "container-item": "sheath", "prob": 1 },
- { "item": "kirpan_cheap", "container-item": "sheath", "prob": 3 },
- [ "robe", 10 ],
- [ "eboshi", 1 ],
- [ "kariginu", 1 ],
- [ "geta", 1 ],
- [ "kimono", 2 ],
- [ "yukata", 6 ],
- [ "haori", 2 ],
- [ "hakama", 4 ],
- [ "eclipse_glasses", 1 ],
- [ "thermos", 20 ]
- ]
- },
{
"type": "item_group",
"id": "dining",
@@ -1234,34 +1030,15 @@
"type": "item_group",
"id": "vending_food_items",
"items": [
- [ "chips", 65 ],
- [ "fried_seeds", 25 ],
- [ "pretzels", 55 ],
- [ "chocpretzels", 40 ],
- [ "chocolate", 50 ],
- [ "jerky", 55 ],
- [ "cracklins", 25 ],
- [ "porkstick", 55 ],
- [ "candy", 80 ],
- [ "candy2", 80 ],
- [ "candy3", 80 ],
- [ "maple_candy", 5 ],
- [ "powder_candy", 60 ],
- [ "neccowafers", 80 ],
- [ "maltballs", 80 ],
- [ "mintpatties", 80 ],
+ { "group": "candy_chocolate", "prob": 615 },
+ { "group": "salty_snacks", "prob": 485 },
[ "peanut_unshelled", 60 ],
[ "almond_unshelled", 60 ],
[ "cashews", 60 ],
[ "pistachio_unshelled", 60 ],
[ "cookies", 80 ],
[ "choco_coffee_beans", 10 ],
- [ "nachos", 50 ],
- [ "chips3", 65 ],
- [ "fruit_leather", 25 ],
- [ "popcorn", 25 ],
- [ "popcorn2", 25 ],
- [ "candycigarette", 20 ]
+ [ "fruit_leather", 25 ]
]
},
{
@@ -1278,8 +1055,7 @@
[ "lemonade", 50 ],
[ "energy_drink", 55 ],
[ "energy_drink_atomic", 4 ],
- [ "crispycran", 40 ],
- [ "choc_drink", 30 ],
+ { "group": "softdrinks_canned", "prob": 70 },
{ "item": "cola", "prob": 70, "container-item": "bottle_plastic" },
{ "item": "rootbeer", "prob": 20, "container-item": "bottle_plastic" },
{ "item": "creamsoda", "prob": 60, "container-item": "bottle_plastic" },
@@ -1296,42 +1072,21 @@
"type": "item_group",
"id": "snacks",
"items": [
- [ "chips", 65 ],
- [ "fried_seeds", 25 ],
- [ "pretzels", 55 ],
- [ "chocpretzels", 40 ],
- [ "chocolate", 50 ],
- [ "jerky", 55 ],
- [ "cracklins", 25 ],
+ { "group": "candy_chocolate", "prob": 620 },
+ { "group": "salty_snacks", "prob": 595 },
[ "pemmican", 5 ],
[ "granola", 10 ],
- [ "porkstick", 55 ],
- [ "candy", 80 ],
- [ "candy2", 80 ],
- [ "candy3", 80 ],
- [ "maple_candy", 10 ],
- [ "powder_candy", 60 ],
- [ "neccowafers", 80 ],
- [ "maltballs", 80 ],
- [ "mintpatties", 80 ],
[ "cookies", 80 ],
[ "tea_raw", 10 ],
[ "coffee_raw", 15 ],
[ "choco_coffee_beans", 10 ],
- [ "nachos", 50 ],
- [ "chips2", 65 ],
- [ "chips3", 65 ],
[ "salt", 10 ],
[ "pepper", 10 ],
[ "syrup", 10 ],
[ "coffee_syrup", 10 ],
- [ "popcorn", 25 ],
- [ "popcorn2", 35 ],
- [ "popcorn3", 35 ],
[ "fruit_leather", 25 ],
[ "kernels", 25 ],
- [ "pine_nuts", 5 ],
- [ "candycigarette", 20 ]
+ [ "pine_nuts", 5 ]
]
},
{
@@ -1366,15 +1121,7 @@
[ "energy_drink", 55 ],
[ "herbal_tea", 30 ],
[ "energy_drink_atomic", 4 ],
- [ "cola", 70 ],
- [ "creamsoda", 60 ],
- [ "lemonlime", 60 ],
- [ "orangesoda", 40 ],
- [ "crispycran", 30 ],
- [ "colamdew", 60 ],
- [ "choc_drink", 30 ],
- [ "rootbeer", 65 ],
- [ "purple_drink", 45 ],
+ { "group": "softdrinks_canned", "prob": 460 },
[ "milk", 50 ],
[ "yoghurt", 40 ],
[ "pudding", 50 ],
@@ -1432,16 +1179,9 @@
"type": "item_group",
"id": "fast_food",
"items": [
+ { "group": "candy_chocolate", "prob": 480 },
+ { "group": "softdrinks_canned", "prob": 480 },
[ "water_clean", 90 ],
- [ "cola", 70 ],
- [ "choc_drink", 30 ],
- [ "rootbeer", 65 ],
- [ "creamsoda", 60 ],
- [ "lemonlime", 60 ],
- [ "orangesoda", 60 ],
- [ "crispycran", 30 ],
- [ "colamdew", 60 ],
- [ "purple_drink", 45 ],
[ "sandwich_t", 30 ],
[ "sandwich_pb", 30 ],
[ "sandwich_pbj", 30 ],
@@ -1456,14 +1196,6 @@
[ "pie_maple", 10 ],
[ "chips", 65 ],
[ "fried_seeds", 25 ],
- [ "candy", 80 ],
- [ "candy2", 80 ],
- [ "candy3", 80 ],
- [ "maple_candy", 2 ],
- [ "powder_candy", 60 ],
- [ "mintpatties", 60 ],
- [ "maltballs", 60 ],
- [ "neccowafers", 60 ],
[ "cookies", 60 ],
[ "mayonnaise", 60 ],
[ "spork", 10 ],
@@ -1503,17 +1235,12 @@
"type": "item_group",
"id": "coffee_shop",
"items": [
+ { "group": "candy_chocolate", "prob": 530 },
+ { "group": "softdrinks_canned", "prob": 470 },
+ { "group": "snacks", "prob": 560 },
+ [ "coffee_raw", 70 ],
[ "water_clean", 90 ],
[ "water_mineral", 10 ],
- [ "cola", 70 ],
- [ "choc_drink", 40 ],
- [ "rootbeer", 65 ],
- [ "creamsoda", 60 ],
- [ "lemonlime", 60 ],
- [ "orangesoda", 40 ],
- [ "crispycran", 40 ],
- [ "colamdew", 60 ],
- [ "purple_drink", 35 ],
[ "almond_milk", 30 ],
[ "soy_milk", 30 ],
[ "juice", 20 ],
@@ -1534,41 +1261,16 @@
[ "hotdogs_cooked", 35 ],
[ "corndogs_frozen", 30 ],
[ "blt", 40 ],
- [ "pretzels", 55 ],
- [ "chocpretzels", 50 ],
- [ "chocolate", 50 ],
- [ "jerky", 55 ],
- [ "cracklins", 25 ],
[ "salted_fish", 15 ],
- [ "porkstick", 55 ],
- [ "candy", 80 ],
- [ "powder_candy", 60 ],
- [ "mintpatties", 80 ],
- [ "maltballs", 80 ],
- [ "tea_raw", 10 ],
[ "pie", 20 ],
[ "pie_meat", 20 ],
[ "pie_veggy", 20 ],
[ "pie_maple", 10 ],
- [ "fried_seeds", 15 ],
- [ "chips", 65 ],
- [ "chips2", 50 ],
- [ "chips3", 45 ],
- [ "candy", 80 ],
- [ "candy2", 80 ],
- [ "candy3", 80 ],
- [ "maple_candy", 20 ],
- [ "cookies", 80 ],
- [ "pepper", 10 ],
[ "cinnamon", 15 ],
- [ "coffee_raw", 85 ],
- [ "choco_coffee_beans", 10 ],
[ "coffee_bean", 20 ],
[ "roasted_coffee_bean", 50 ],
[ "restaurantmap", 5 ],
[ "touristmap", 2 ],
- [ "salt", 10 ],
- [ "pine_nuts", 10 ],
[ "brioche", 50 ]
]
},
@@ -1763,6 +1465,7 @@
[ "thorazine", 7 ],
[ "prozac", 10 ],
[ "antibiotics", 25 ],
+ [ "strong_antibiotic", 5 ],
[ "antifungal", 2 ],
[ "antiparasitic", 3 ],
[ "survnote", 1 ],
@@ -1982,8 +1685,8 @@
"id": "cleaning",
"items": [
[ "salt_water", 20 ],
- [ "bleach", 20 ],
- [ "ammonia", 24 ],
+ { "item": "bleach", "prob": 20, "charges-min": 1 },
+ { "item": "ammonia", "prob": 24, "charges-min": 1 },
[ "broom", 30 ],
[ "mop", 30 ],
[ "sponge", 30 ],
@@ -2069,6 +1772,7 @@
[ "aspirin", 85 ],
[ "bat", 60 ],
[ "boxing_gloves", 35 ],
+ [ "pool_cue", 30 ],
[ "bat_metal", 60 ],
[ "football_armor", 10 ],
[ "helmet_football", 10 ],
@@ -2079,6 +1783,8 @@
[ "longshirt", 70 ],
[ "tank_top", 50 ],
[ "sports_bra", 30 ],
+ [ "unitard", 10 ],
+ [ "leotard", 5 ],
[ "trunks", 50 ],
[ "bikini_top", 50 ],
[ "arm_warmers", 20 ],
@@ -2158,6 +1864,12 @@
[ "fencing_foil", 8 ],
[ "fencing_sabre", 8 ],
[ "fencing_epee", 8 ],
+ [ "lame_foil", 8 ],
+ [ "lame_saber", 8 ],
+ [ "plastron_cotton", 8 ],
+ [ "plastron_plastic", 8 ],
+ [ "gauntlet_fencing", 8 ],
+ [ "gauntlet_fencing_l", 1 ],
[ "survnote", 1 ],
[ "halter_top", 30 ],
[ "linuxtshirt", 10 ],
@@ -2552,6 +2264,12 @@
[ "fencing_foil", 10 ],
[ "fencing_sabre", 10 ],
[ "fencing_epee", 10 ],
+ [ "lame_foil", 10 ],
+ [ "lame_saber", 10 ],
+ [ "plastron_cotton", 10 ],
+ [ "plastron_plastic", 10 ],
+ [ "gauntlet_fencing", 8 ],
+ [ "gauntlet_fencing_l", 2 ],
[ "survnote", 1 ],
[ "slingshot", 10 ],
[ "wristrocket", 5 ],
@@ -2733,509 +2451,34 @@
[ "creepy_doll", 1 ],
[ "straw_doll", 1 ],
[ "striped_shirt", 1 ],
- [ "striped_pants", 1 ],
- [ "foodperson_mask", 1 ],
- [ "razor_blade", 10 ],
- [ "survnote", 5 ],
- [ "eclipse_glasses", 1 ],
- [ "plastic_sheet", 5 ],
- [ "box_medium", 5 ],
- [ "thermos", 30 ],
- { "group": "tinware", "prob": 15 }
- ]
- },
- {
- "type": "item_group",
- "id": "trash_cart",
- "items": [
- [ "bottle_plastic", 5 ],
- [ "bottle_plastic_small", 15 ],
- [ "bottle_glass", 2 ],
- { "group": "tinware", "prob": 2 },
- [ "can_drink_unsealed", 5 ],
- [ "plastic_shopping_bag", 13 ],
- [ "bag_plastic", 15 ],
- [ "wrapper", 30 ],
- [ "flyer", 15 ],
- [ "scorecard", 10 ],
- [ "eclipse_glasses", 1 ],
- [ "plastic_sheet", 5 ]
- ]
- },
- {
- "type": "item_group",
- "id": "shoes",
- "items": [
- [ "sneakers", 80 ],
- [ "socks", 70 ],
- [ "tights", 20 ],
- [ "stockings", 20 ],
- [ "knee_high_boots", 20 ],
- [ "thigh_high_boots", 20 ],
- [ "boots", 70 ],
- [ "flip_flops", 35 ],
- [ "lowtops", 45 ],
- [ "dress_shoes", 50 ],
- [ "dance_shoes", 5 ],
- [ "heels", 50 ],
- [ "golf_shoes", 20 ],
- [ "boots_combat", 10 ],
- [ "boots_hiking", 20 ],
- [ "boots_western", 10 ],
- [ "clogs", 1 ],
- [ "leathersandals", 10 ],
- [ "rollerskates", 1 ],
- [ "roller_blades", 5 ],
- [ "roller_shoes_off", 1 ],
- [ "mocassins", 20 ]
- ]
- },
- {
- "type": "item_group",
- "id": "pants",
- "items": [
- [ "jeans", 90 ],
- [ "pants_checkered", 5 ],
- [ "shorts", 70 ],
- [ "shorts_denim", 35 ],
- [ "pants", 75 ],
- [ "leather_belt", 30 ],
- [ "pants_leather", 60 ],
- [ "pants_cargo", 70 ],
- [ "shorts_cargo", 50 ],
- [ "skirt", 75 ],
- [ "skirt_leather", 5 ],
- [ "leggings", 15 ],
- [ "under_armor_shorts", 20 ],
- [ "dress", 70 ],
- [ "sundress", 50 ],
- [ "dress_wedding", 1 ],
- [ "postman_shorts", 5 ],
- [ "b_shorts", 15 ],
- [ "kilt", 5 ],
- [ "nanoskirt", 10 ]
- ]
- },
- {
- "type": "item_group",
- "id": "shirts",
- "items": [
- [ "tshirt", 80 ],
- [ "longshirt", 80 ],
- [ "polo_shirt", 65 ],
- [ "dress_shirt", 60 ],
- [ "tank_top", 50 ],
- [ "sweatshirt", 75 ],
- [ "sweater", 75 ],
- [ "hoodie", 65 ],
- [ "under_armor", 20 ],
- [ "jersey", 40 ],
- [ "camisole", 60 ],
- [ "tie_clipon", 10 ],
- [ "tie_necktie", 10 ],
- [ "tie_skinny", 10 ],
- [ "tieclip", 5 ],
- [ "collarpin", 5 ],
- [ "postman_shirt", 5 ],
- [ "halter_top", 50 ],
- [ "linuxtshirt", 10 ],
- [ "sleeveless_tunic", 5 ],
- [ "poncho", 20 ]
- ]
- },
- {
- "type": "item_group",
- "id": "jackets",
- "items": [
- [ "jacket_light", 50 ],
- [ "jacket_windbreaker", 25 ],
- [ "jacket_jean", 35 ],
- [ "blazer", 35 ],
- [ "jacket_leather", 30 ],
- [ "coat_rain", 50 ],
- [ "trenchcoat", 12 ],
- [ "duster", 12 ],
- { "group": "neckties", "prob": 5 },
- [ "tieclip", 2 ],
- [ "collarpin", 2 ],
- [ "apron_leather", 1 ]
- ]
- },
- {
- "type": "item_group",
- "id": "suits",
- "items": [
- [ "dress_shirt", 100 ],
- { "group": "neckties", "prob": 50 },
- [ "tieclip", 30 ],
- [ "collarpin", 30 ],
- [ "undershirt", 100 ],
- [ "suit", 100 ],
- [ "waistcoat", 70 ],
- [ "tophat", 30 ],
- [ "tux", 50 ],
- [ "gown", 50 ],
- [ "long_glove_white", 30 ],
- [ "breeches", 10 ]
- ]
- },
- {
- "type": "item_group",
- "id": "winter",
- "ammo": 50,
- "magazine": 100,
- "items": [
- [ "coat_winter", 50 ],
- [ "peacoat", 30 ],
- [ "ski_jacket", 40 ],
- [ "greatcoat", 15 ],
- [ "gloves_light", 35 ],
- [ "mittens", 30 ],
- [ "gloves_wool", 33 ],
- [ "thermal_socks", 10 ],
- [ "thermal_gloves", 10 ],
- [ "thermal_suit", 10 ],
- [ "thermal_mask", 10 ],
- [ "thermal_outfit", 5 ],
- [ "gloves_winter", 40 ],
- [ "gloves_liner", 25 ],
- [ "gloves_leather", 45 ],
- [ "scarf", 45 ],
- [ "knit_scarf", 35 ],
- [ "long_knit_scarf", 15 ],
- [ "scarf_long", 2 ],
- [ "hat_cotton", 45 ],
- [ "hat_newsboy", 20 ],
- [ "hat_knit", 25 ],
- [ "hat_fur", 15 ],
- [ "hat_faux_fur", 20 ],
- [ "pants_ski", 60 ],
- [ "mask_ski", 15 ],
- [ "long_underpants", 40 ],
- [ "long_undertop", 40 ],
- [ "union_suit", 40 ],
- [ "tights", 20 ],
- [ "arm_warmers", 20 ],
- [ "leg_warmers", 20 ],
- [ "balclava", 15 ]
- ]
- },
- {
- "type": "item_group",
- "id": "fancyfurs",
- "items": [
- [ "hat_fur", 300 ],
- [ "hat_faux_fur", 300 ],
- [ "sleeveless_trenchcoat_fur", 10 ],
- [ "sleeveless_duster_fur", 10 ],
- [ "sleeveless_trenchcoat_faux_fur", 10 ],
- [ "coat_fur_sf", 100 ],
- [ "coat_faux_fur", 300 ],
- [ "coat_fur", 300 ],
- [ "gloves_fur", 300 ],
- [ "boots_fur", 200 ],
- [ "trenchcoat_faux_fur", 50 ],
- [ "duster_faux_fur", 50 ],
- [ "pants_faux_fur", 50 ]
- ]
- },
- {
- "type": "item_group",
- "id": "hatstore_hats",
- "items": [
- [ "hat_cotton", 30 ],
- [ "hat_knit", 40 ],
- [ "hat_faux_fur", 30 ],
- [ "hat_fur", 20 ],
- [ "hat_newsboy", 20 ],
- [ "hat_sombrero", 30 ],
- [ "fedora", 100 ],
- [ "straw_hat", 100 ],
- [ "straw_fedora", 100 ],
- [ "hat_chef", 10 ],
- [ "maid_hat", 30 ],
- [ "hat_golf", 50 ],
- [ "hat_ball", 100 ],
- [ "postman_hat", 10 ],
- [ "tophat", 50 ],
- [ "bowhat", 50 ],
- [ "cowboy_hat", 100 ],
- [ "10gal_hat", 100 ],
- [ "kufi", 30 ],
- [ "kippah", 30 ],
- [ "eboshi", 30 ],
- [ "balclava", 20 ],
- [ "porkpie", 30 ]
- ]
- },
- {
- "type": "item_group",
- "id": "hatstore_accessories",
- "items": [
- [ "scarf", 50 ],
- [ "knit_scarf", 50 ],
- [ "long_knit_scarf", 30 ],
- [ "scarf_long", 30 ],
- [ "bandana", 100 ],
- [ "hairpin", 50 ],
- [ "fc_hairpin", 20 ],
- [ "barrette", 30 ]
- ]
- },
- {
- "type": "item_group",
- "id": "shoestore_shoes",
- "items": [
- [ "sneakers", 100 ],
- [ "knee_high_boots", 40 ],
- [ "thigh_high_boots", 40 ],
- [ "boots", 100 ],
- [ "flip_flops", 50 ],
- [ "lowtops", 100 ],
- [ "dress_shoes", 50 ],
- [ "dance_shoes", 20 ],
- [ "heels", 100 ],
- [ "golf_shoes", 40 ],
- [ "boots_hiking", 40 ],
- [ "boots_western", 60 ],
- [ "clogs", 60 ],
- [ "leathersandals", 100 ],
- [ "rollerskates", 10 ],
- [ "roller_blades", 20 ],
- [ "roller_shoes_off", 10 ],
- [ "boots_rubber", 20 ],
- [ "clownshoes", 10 ],
- [ "mocassins", 40 ]
- ]
- },
- {
- "type": "item_group",
- "id": "shoestore_accessories",
- "items": [ [ "socks", 100 ], [ "thermal_socks", 25 ], [ "socks_wool", 50 ], [ "string_36", 200 ] ]
- },
- {
- "type": "item_group",
- "id": "bags",
- "items": [
- [ "backpack", 38 ],
- [ "backpack_hiking", 3 ],
- [ "petpack", 3 ],
- [ "backpack_tactical_large", 1 ],
- [ "bigback", 1 ],
- [ "travelpack", 5 ],
- [ "purse", 40 ],
- [ "mbag", 20 ],
- [ "slingpack", 8 ],
- [ "rucksack", 20 ],
- [ "backpack_leather", 8 ],
- [ "briefcase", 10 ]
- ]
- },
- {
- "type": "item_group",
- "id": "bags_trip",
- "items": [ [ "suitcase_l", 37 ], [ "suitcase_m", 55 ], [ "duffelbag", 8 ] ]
- },
- {
- "type": "item_group",
- "id": "dresses",
- "items": [ [ "dress", 55 ], [ "sundress", 43 ], [ "gown", 10 ], [ "dress_wedding", 2 ] ]
- },
- {
- "type": "item_group",
- "id": "female_underwear_top",
- "items": [ [ "bra", 70 ], [ "sports_bra", 50 ], [ "bikini_top", 10 ] ]
- },
- {
- "type": "item_group",
- "id": "female_underwear_bottom",
- "items": [ [ "panties", 70 ], [ "boy_shorts", 50 ], [ "bikini_bottom", 10 ] ]
- },
- {
- "type": "item_group",
- "id": "male_underwear_top",
- "items": [ [ "undershirt", 50 ], [ "long_undertop", 20 ], [ "under_armor", 20 ], [ "tank_top", 50 ] ]
- },
- {
- "type": "item_group",
- "id": "male_underwear_bottom",
- "items": [
- [ "boxer_shorts", 70 ],
- [ "briefs", 30 ],
- [ "boxer_briefs", 50 ],
- [ "long_underpants", 20 ],
- [ "under_armor_shorts", 20 ]
- ]
- },
- {
- "type": "item_group",
- "id": "allclothes",
- "items": [
- [ "jeans", 90 ],
- [ "pants_checkered", 5 ],
- [ "shorts", 70 ],
- [ "shorts_denim", 35 ],
- [ "ski_jacket", 40 ],
- [ "pants", 75 ],
- [ "breeches", 10 ],
- [ "leather_belt", 30 ],
- [ "suit", 60 ],
- [ "waistcoat", 30 ],
- [ "tophat", 10 ],
- [ "bowhat", 10 ],
- [ "cowboy_hat", 10 ],
- [ "boots_western", 8 ],
- [ "glasses_monocle", 2 ],
- [ "pants_leather", 60 ],
- [ "pants_cargo", 70 ],
- [ "shorts_cargo", 50 ],
- [ "skirt", 75 ],
- [ "skirt_leather", 5 ],
- [ "tshirt", 70 ],
- [ "longshirt", 80 ],
- [ "polo_shirt", 65 ],
- [ "dress_shirt", 60 ],
- [ "tank_top", 50 ],
- [ "camisole", 30 ],
- [ "bra", 30 ],
- [ "undershirt", 30 ],
- [ "boxer_shorts", 30 ],
- [ "briefs", 15 ],
- [ "boxer_briefs", 20 ],
- [ "panties", 30 ],
- [ "boy_shorts", 25 ],
- [ "sweatshirt", 75 ],
- [ "sweater", 75 ],
- [ "hoodie", 65 ],
- [ "jacket_light", 50 ],
- [ "jacket_windbreaker", 25 ],
- [ "jacket_jean", 35 ],
- [ "blazer", 35 ],
- [ "jacket_leather", 30 ],
- [ "coat_winter", 50 ],
- [ "peacoat", 30 ],
- [ "greatcoat", 15 ],
- [ "gloves_light", 35 ],
- [ "mittens", 30 ],
- [ "gloves_wool", 33 ],
- [ "thermal_socks", 2 ],
- [ "thermal_gloves", 2 ],
- [ "thermal_suit", 2 ],
- [ "thermal_mask", 2 ],
- [ "thermal_outfit", 1 ],
- [ "gloves_winter", 40 ],
- [ "gloves_liner", 25 ],
- [ "gloves_leather", 45 ],
- [ "gloves_work", 5 ],
- [ "scarf", 45 ],
- [ "hat_golf", 30 ],
- [ "knit_scarf", 35 ],
- [ "long_knit_scarf", 5 ],
- [ "scarf_long", 1 ],
- [ "hat_cotton", 45 ],
- [ "hat_knit", 25 ],
- [ "hat_newsboy", 20 ],
- [ "hat_sombrero", 3 ],
- [ "hat_fur", 15 ],
- [ "hat_faux_fur", 20 ],
- [ "under_armor", 20 ],
- [ "under_armor_shorts", 20 ],
- [ "tights", 20 ],
- [ "leggings", 20 ],
- [ "stockings", 20 ],
- [ "balclava", 15 ],
- [ "pants_ski", 60 ],
- [ "long_underpants", 40 ],
- [ "long_undertop", 40 ],
- [ "union_suit", 20 ],
- [ "arm_warmers", 20 ],
- [ "leg_warmers", 20 ],
- [ "trenchcoat_leather", 12 ],
- [ "trenchcoat_faux_fur", 6 ],
- [ "sleeveless_trenchcoat", 2 ],
- [ "sleeveless_trenchcoat_leather", 2 ],
- [ "sleeveless_trenchcoat_faux_fur", 2 ],
- [ "trenchcoat_leather", 12 ],
- [ "sleeveless_trenchcoat_fur", 1 ],
- [ "duster_leather", 12 ],
- [ "duster_faux_fur", 6 ],
- [ "sleeveless_duster", 2 ],
- [ "sleeveless_duster_leather", 2 ],
- [ "sleeveless_duster_faux_fur", 2 ],
- [ "sleeveless_duster_fur", 1 ],
- [ "cloak", 5 ],
- [ "cloak_wool", 5 ],
- [ "house_coat", 25 ],
- [ "flotation_vest", 1 ],
- [ "fishing_waders", 5 ],
- [ "wetsuit", 5 ],
- [ "wetsuit_spring", 5 ],
- [ "wetsuit_gloves", 10 ],
- [ "wetsuit_booties", 10 ],
- [ "wetsuit_hood", 5 ],
- [ "dive_bag", 5 ],
- [ "jedi_cloak", 1 ],
- [ "apron_leather", 1 ],
- [ "clown_suit", 1 ],
- [ "clownshoes", 1 ],
- [ "bondage_suit", 1 ],
- [ "bondage_mask", 1 ],
- [ "corset", 10 ],
- [ "chestwrap", 5 ],
- [ "boots_combat", 10 ],
- [ "pants_army", 10 ],
- [ "jacket_army", 10 ],
- [ "winter_pants_army", 10 ],
- [ "winter_jacket_army", 10 ],
- [ "winter_gloves_army", 10 ],
- [ "army_top", 20 ],
- [ "tux", 1 ],
- [ "gown", 1 ],
- [ "long_glove_white", 1 ],
- [ "veil_wedding", 1 ],
- [ "dress_wedding", 1 ],
- [ "porkpie", 5 ],
- [ "tie_bow", 5 ],
- [ "tie_clipon", 5 ],
- [ "tie_necktie", 5 ],
- [ "tie_skinny", 5 ],
- [ "tieclip", 2 ],
- [ "collarpin", 2 ],
- [ "jersey", 40 ],
- [ "postman_shorts", 5 ],
- [ "postman_shirt", 5 ],
- [ "postman_hat", 5 ],
- [ "maid_dress", 3 ],
- [ "maid_hat", 3 ],
- [ "halter_top", 50 ],
- [ "linuxtshirt", 20 ],
- [ "kilt", 5 ],
- [ "nanoskirt", 10 ],
- [ "sleeveless_tunic", 5 ],
- [ "ear_spool", 30 ],
- [ "fedora", 5 ],
- [ "straw_hat", 5 ],
- [ "straw_fedora", 5 ],
- [ "kufi", 2 ],
- [ "kippah", 2 ],
- [ "thawb", 1 ],
- [ "kittel", 1 ],
- [ "cassock", 1 ],
- [ "robe", 5 ],
- [ "eboshi", 1 ],
- [ "kariginu", 1 ],
- [ "geta", 1 ],
- [ "kimono", 2 ],
- [ "yukata", 4 ],
- [ "haori", 1 ],
- [ "hakama", 2 ]
+ [ "striped_pants", 1 ],
+ [ "foodperson_mask", 1 ],
+ [ "razor_blade", 10 ],
+ [ "survnote", 5 ],
+ [ "eclipse_glasses", 1 ],
+ [ "plastic_sheet", 5 ],
+ [ "box_medium", 5 ],
+ [ "thermos", 30 ],
+ { "group": "tinware", "prob": 15 }
]
},
{
"type": "item_group",
- "id": "allclothes_damaged",
- "subtype": "distribution",
- "items": [ { "group": "allclothes", "damage": [ 3, 4 ] } ]
+ "id": "trash_cart",
+ "items": [
+ [ "bottle_plastic", 5 ],
+ [ "bottle_plastic_small", 15 ],
+ [ "bottle_glass", 2 ],
+ { "group": "tinware", "prob": 2 },
+ [ "can_drink_unsealed", 5 ],
+ [ "plastic_shopping_bag", 13 ],
+ [ "bag_plastic", 15 ],
+ [ "wrapper", 30 ],
+ [ "flyer", 15 ],
+ [ "scorecard", 10 ],
+ [ "eclipse_glasses", 1 ],
+ [ "plastic_sheet", 5 ]
+ ]
},
{
"type": "item_group",
@@ -3463,70 +2706,6 @@
[ "survnote", 2 ]
]
},
- {
- "type": "item_group",
- "id": "swimmer_head",
- "items": [
- [ "goggles_swim", 90 ],
- [ "wetsuit_hood", 30 ],
- [ "fancy_sunglasses", 1 ],
- [ "rebreather", 1 ],
- [ "fitover_sunglasses", 5 ],
- [ "sunglasses", 10 ]
- ]
- },
- {
- "type": "item_group",
- "id": "swimmer_torso",
- "items": [ [ "bikini_top", 50 ], [ "dive_bag", 5 ], [ "flotation_vest", 10 ], [ "scuba_tank", 2 ] ]
- },
- {
- "type": "item_group",
- "id": "swimmer_pants",
- "items": [ [ "trunks", 80 ], [ "bikini_bottom", 35 ], [ "hot_pants", 30 ] ]
- },
- {
- "type": "item_group",
- "id": "swimmer_shoes",
- "items": [ [ "flip_flops", 80 ], [ "swim_fins", 20 ] ]
- },
- {
- "type": "item_group",
- "id": "swimmer_wetsuit",
- "items": [ [ "wetsuit", 90 ], [ "wetsuit_spring", 10 ] ]
- },
- {
- "type": "item_group",
- "id": "lab_shoes",
- "items": [ [ "sneakers", 80 ], [ "boots", 70 ], [ "boots_steel", 50 ], [ "boots_hiking", 40 ], [ "dress_shoes", 50 ] ]
- },
- {
- "type": "item_group",
- "id": "lab_torso",
- "items": [
- [ "coat_lab", 20 ],
- [ "coat_lab", 20 ],
- [ "coat_lab", 20 ],
- [ "coat_lab", 20 ],
- [ "tshirt", 80 ],
- [ "longshirt", 80 ],
- [ "polo_shirt", 65 ],
- [ "dress_shirt", 60 ],
- [ "dress", 70 ],
- [ "sweatshirt", 75 ],
- [ "sweater", 75 ],
- [ "hoodie", 65 ],
- [ "jumpsuit", 20 ],
- [ "badge_doctor", 10 ],
- [ "hazmat_suit", 5 ],
- [ "cleansuit", 10 ]
- ]
- },
- {
- "type": "item_group",
- "id": "lab_pants",
- "items": [ [ "jeans", 90 ], [ "pants_checkered", 5 ], [ "pants", 75 ], [ "pants_cargo", 70 ], [ "skirt", 75 ] ]
- },
{
"type": "item_group",
"id": "hospital_lab",
@@ -3534,7 +2713,7 @@
[ "blood", 20 ],
[ "iodine", 5 ],
[ "prussian_blue", 5 ],
- [ "bleach", 20 ],
+ { "item": "bleach", "prob": 20, "charges-min": 10 },
[ "bandages", 50 ],
[ "cotton_ball", 50 ],
[ "syringe", 8 ],
@@ -3571,6 +2750,8 @@
[ "jar_3l_glass", 15 ],
[ "magnifying_glass", 5 ],
[ "chem_hydrogen_peroxide", 5 ],
+ [ "strong_antibiotic", 1 ],
+ [ "antibiotics", 5 ],
[ "weak_antibiotic", 15 ]
]
},
@@ -3629,25 +2810,7 @@
[ "antiparasitic", 3 ],
[ "diazepam", 3 ],
[ "recipe_augs", 3 ],
- [ "holybook_bible1", 4 ],
- [ "holybook_bible2", 3 ],
- [ "holybook_bible3", 6 ],
- [ "holybook_quran", 3 ],
- [ "holybook_hadith", 3 ],
- [ "holybook_talmud", 2 ],
- [ "holybook_tanakh", 2 ],
- [ "holybook_vedas", 3 ],
- [ "holybook_upanishads", 3 ],
- [ "holybook_tripitaka", 3 ],
- [ "holybook_sutras", 3 ],
- [ "holybook_granth", 2 ],
- [ "holybook_mormon", 1 ],
- [ "holybook_kojiki", 1 ],
- [ "holybook_havamal", 1 ],
- [ "holybook_pastafarian", 1 ],
- [ "holybook_slack", 1 ],
- [ "holybook_kallisti", 1 ],
- [ "holybook_scientology", 1 ],
+ { "group": "religious_books", "prob": 54 },
[ "recipe_medicalmut", 1 ],
[ "survnote", 1 ],
[ "badge_doctor", 1 ],
@@ -3655,22 +2818,6 @@
[ "thermos", 10 ]
]
},
- {
- "type": "item_group",
- "id": "postman_gear",
- "items": [
- [ "postman_hat", 50 ],
- [ "postman_shirt", 70 ],
- [ "postman_shorts", 70 ],
- [ "mbag", 40 ],
- [ "newest_newspaper", 10 ],
- [ "wristwatch", 50 ],
- [ "leather_belt", 70 ],
- [ "briefs", 90 ],
- [ "socks", 70 ],
- [ "sneakers", 70 ]
- ]
- },
{
"type": "item_group",
"id": "surgery",
@@ -3715,12 +2862,7 @@
"ammo": 75,
"magazine": 100,
"items": [
- [ "cola", 70 ],
- [ "creamsoda", 60 ],
- [ "lemonlime", 60 ],
- [ "orangesoda", 60 ],
- [ "crispycran", 40 ],
- [ "colamdew", 60 ],
+ { "group": "softdrinks_canned", "prob": 370 },
[ "file", 90 ],
[ "mag_barter", 35 ],
[ "mag_computer", 35 ],
@@ -3733,7 +2875,6 @@
[ "mag_unarmed", 10 ],
[ "decoy_anarch", 8 ],
[ "recipe_augs", 8 ],
- [ "choc_drink", 20 ],
[ "aspirin", 85 ],
[ "junk_burrito", 25 ],
[ "cigar", 5 ],
@@ -3788,13 +2929,7 @@
"type": "item_group",
"id": "cubical_office",
"items": [
- [ "cola", 70 ],
- [ "choc_drink", 30 ],
- [ "creamsoda", 60 ],
- [ "lemonlime", 60 ],
- [ "orangesoda", 60 ],
- [ "crispycran", 40 ],
- [ "colamdew", 60 ],
+ { "group": "softdrinks_canned", "prob": 560 },
[ "file", 90 ],
[ "mag_barter", 15 ],
[ "mag_computer", 35 ],
@@ -3848,8 +2983,6 @@
[ "bubblewrap", 50 ],
[ "coffee_raw", 15 ],
[ "usb_drive", 5 ],
- [ "rootbeer", 65 ],
- [ "purple_drink", 55 ],
[ "cig", 80 ],
[ "tobacco", 10 ],
[ "chaw", 20 ],
@@ -3886,26 +3019,10 @@
"type": "item_group",
"id": "office_breakroom",
"items": [
- [ "cola", 100 ],
- [ "choc_drink", 100 ],
- [ "creamsoda", 100 ],
- [ "lemonlime", 100 ],
- [ "orangesoda", 100 ],
- [ "crispycran", 100 ],
- [ "colamdew", 100 ],
- [ "rootbeer", 100 ],
- [ "purple_drink", 100 ],
- [ "maltballs", 60 ],
- [ "chocolate", 100 ],
+ { "group": "softdrinks_canned", "prob": 900 },
+ { "group": "candy_chocolate", "prob": 625 },
[ "cookies", 60 ],
[ "brownie", 60 ],
- [ "candy", 100 ],
- [ "candy2", 100 ],
- [ "candy3", 100 ],
- [ "maple_candy", 5 ],
- [ "powder_candy", 60 ],
- [ "neccowafers", 60 ],
- [ "mintpatties", 60 ],
[ "aspirin", 40 ],
[ "ecig", 20 ],
[ "chaw", 20 ],
@@ -3946,6 +3063,7 @@
"id": "school",
"type": "item_group",
"items": [
+ { "group": "candy_chocolate", "prob": 292 },
[ "glasses_reading", 90 ],
[ "purse", 40 ],
[ "mbag", 20 ],
@@ -4017,15 +3135,7 @@
[ "novel_horror", 18 ],
[ "novel_tragedy", 8 ],
[ "ZSG", 2 ],
- [ "chocolate", 50 ],
[ "cookies", 50 ],
- [ "candy", 60 ],
- [ "candy2", 60 ],
- [ "candy3", 60 ],
- [ "maple_candy", 2 ],
- [ "powder_candy", 40 ],
- [ "neccowafers", 60 ],
- [ "mintpatties", 60 ],
[ "backpack", 38 ],
[ "backpack_leather", 18 ],
[ "slingpack", 18 ],
@@ -4077,24 +3187,7 @@
[ "poetry_book", 6 ],
[ "philosophy_book", 2 ],
[ "survivormap", 1 ],
- [ "holybook_bible1", 4 ],
- [ "holybook_bible2", 3 ],
- [ "holybook_quran", 3 ],
- [ "holybook_hadith", 3 ],
- [ "holybook_talmud", 2 ],
- [ "holybook_tanakh", 2 ],
- [ "holybook_vedas", 3 ],
- [ "holybook_upanishads", 3 ],
- [ "holybook_tripitaka", 3 ],
- [ "holybook_sutras", 3 ],
- [ "holybook_granth", 2 ],
- [ "holybook_mormon", 1 ],
- [ "holybook_kojiki", 1 ],
- [ "holybook_havamal", 1 ],
- [ "holybook_pastafarian", 1 ],
- [ "holybook_slack", 1 ],
- [ "holybook_kallisti", 1 ],
- [ "holybook_scientology", 1 ],
+ { "group": "religious_books", "prob": 38 },
[ "folding_poncho", 1 ],
[ "pocketwatch", 10 ],
[ "knitting_needles", 10 ],
@@ -4106,7 +3199,8 @@
[ "thawb", 10 ],
[ "kufi", 10 ],
[ "kittel", 10 ],
- [ "kippah", 10 ]
+ [ "kippah", 10 ],
+ [ "icon", 20 ]
]
},
{
@@ -4275,6 +3369,8 @@
[ "chainmail_vest", 3 ],
[ "chainmail_arms", 3 ],
[ "chainmail_legs", 3 ],
+ [ "chainmail_feet", 3 ],
+ [ "chainmail_hands", 3 ],
[ "legguard_metal", 1 ],
[ "textbook_weapwest", 5 ],
[ "textbook_weapeast", 5 ],
@@ -4688,6 +3784,8 @@
[ "chainmail_vest", 2 ],
[ "chainmail_arms", 2 ],
[ "chainmail_legs", 2 ],
+ [ "chainmail_feet", 2 ],
+ [ "chainmail_hands", 2 ],
[ "motorbike_armor", 2 ],
[ "motorbike_pants", 2 ],
[ "motorbike_boots", 2 ],
@@ -5011,8 +4109,8 @@
[ "decoy_elfa", 2 ],
[ "water_clean", 90 ],
[ "salt_water", 30 ],
- [ "bleach", 10 ],
- [ "ammonia", 12 ],
+ { "item": "bleach", "prob": 10, "charges-min": 6 },
+ { "item": "ammonia", "prob": 12, "charges-min": 6 },
[ "mutagen", 1 ],
[ "purifier", 1 ],
[ "yeast", 3 ],
@@ -5040,13 +4138,13 @@
[ "tin", 10 ],
[ "chem_hydrogen_peroxide", 10 ],
[ "chem_muriatic_acid", 5 ],
- [ "chem_sulphur", 10 ],
+ { "item": "chem_sulphur", "prob": 10, "charges-min": 100 },
[ "chem_aluminium_powder", 5 ],
- [ "chem_zinc_powder", 10 ],
- [ "chem_zinc", 5 ],
- [ "chem_manganese_dioxide", 10 ],
+ { "item": "chem_zinc_powder", "prob": 10, "charges-min": 100 },
+ { "item": "chem_zinc", "prob": 5, "charges-min": 100 },
+ { "item": "chem_manganese_dioxide", "prob": 10, "charges-min": 100 },
[ "chem_saltpetre", 10 ],
- [ "chem_carbide", 10 ],
+ { "item": "chem_carbide", "prob": 10, "charges-min": 100 },
[ "denat_alcohol", 10 ]
]
},
@@ -5061,8 +4159,8 @@
[ "adv_chemistry", 6 ],
[ "water_clean", 80 ],
[ "salt_water", 30 ],
- [ "bleach", 20 ],
- [ "ammonia", 24 ],
+ { "item": "bleach", "prob": 20, "charges-min": 1 },
+ { "item": "ammonia", "prob": 24, "charges-min": 1 },
[ "yeast", 2 ],
[ "royal_jelly", 8 ],
[ "superglue", 20 ],
@@ -5087,10 +4185,10 @@
[ "charcoal", 15 ],
[ "tin", 15 ],
[ "chem_hydrogen_peroxide", 15 ],
- [ "chem_carbide", 10 ],
- [ "chem_zinc_powder", 10 ],
- [ "chem_manganese_dioxide", 5 ],
- [ "chem_potassium_chloride", 5 ],
+ { "item": "chem_carbide", "prob": 10, "charges-min": 100 },
+ { "item": "chem_zinc_powder", "prob": 10, "charges-min": 100 },
+ { "item": "chem_manganese_dioxide", "prob": 5, "charges-min": 100 },
+ { "item": "chem_potassium_chloride", "prob": 5, "charges-min": 100 },
[ "chem_muriatic_acid", 15 ],
[ "denat_alcohol", 10 ]
]
@@ -5119,8 +4217,8 @@
[ "recipe_labchem", 6 ],
[ "water_clean", 90 ],
[ "salt_water", 20 ],
- [ "bleach", 20 ],
- [ "ammonia", 24 ],
+ { "item": "bleach", "prob": 20, "charges-min": 1 },
+ { "item": "ammonia", "prob": 24, "charges-min": 10 },
[ "royal_jelly", 8 ],
[ "superglue", 30 ],
[ "bottle_glass", 10 ],
@@ -5145,18 +4243,18 @@
[ "thermometer", 3 ],
[ "hygrometer", 3 ],
[ "barometer", 3 ],
- [ "chem_sulphur", 10 ],
+ { "item": "chem_sulphur", "prob": 10, "charges-min": 100 },
[ "chem_aluminium_powder", 10 ],
[ "chem_hexamine", 10 ],
[ "chem_saltpetre", 15 ],
[ "chem_nitric_acid", 15 ],
[ "chem_muriatic_acid", 20 ],
- [ "chem_potassium_chloride", 5 ],
- [ "chem_potassium_hydroxide", 10 ],
- [ "chem_zinc", 10 ],
- [ "chem_chromium_oxide", 10 ],
- [ "chem_zinc_powder", 10 ],
- [ "chem_manganese_dioxide", 5 ],
+ { "item": "chem_potassium_chloride", "prob": 5, "charges-min": 100 },
+ { "item": "chem_potassium_hydroxide", "prob": 10, "charges-min": 100 },
+ { "item": "chem_zinc", "prob": 10, "charges-min": 100 },
+ { "item": "chem_chromium_oxide", "prob": 10, "charges-min": 100 },
+ { "item": "chem_zinc_powder", "prob": 10, "charges-min": 100 },
+ { "item": "chem_manganese_dioxide", "prob": 5, "charges-min": 100 },
[ "denat_alcohol", 10 ]
]
},
@@ -5214,8 +4312,8 @@
[ "purifier", 10 ],
[ "iv_purifier", 8 ],
[ "syringe", 8 ],
- [ "bleach", 20 ],
- [ "ammonia", 24 ],
+ { "item": "bleach", "prob": 20, "charges-min": 1 },
+ { "item": "ammonia", "prob": 24, "charges-min": 10 },
[ "lye_powder", 10 ],
[ "oxy_powder", 12 ],
[ "chemistry_set", 5 ],
@@ -5351,7 +4449,7 @@
[ "emergency_book", 1 ],
[ "recipe_creepy", 2 ],
[ "recipe_labchem", 1 ],
- [ "bleach", 20 ],
+ { "item": "bleach", "prob": 20, "charges-min": 6 },
[ "bandages", 50 ],
[ "cotton_ball", 50 ],
[ "string_6", 2 ],
@@ -5608,10 +4706,9 @@
[ "firecracker", 1 ],
[ "fried_seeds", 10 ],
[ "chips", 65 ],
- [ "cola", 70 ],
+ { "group": "softdrinks_canned", "prob": 90 },
[ "choco_coffee_beans", 20 ],
[ "caffeine", 20 ],
- [ "choc_drink", 20 ],
[ "cola_meth", 1 ],
[ "picklocks", 10 ],
[ "wolfsuit", 4 ],
@@ -5639,24 +4736,7 @@
[ "flask_hip", 5 ],
[ "corset", 15 ],
[ "tieclip", 3 ],
- [ "holybook_bible1", 1 ],
- [ "holybook_bible2", 1 ],
- [ "holybook_quran", 1 ],
- [ "holybook_hadith", 1 ],
- [ "holybook_talmud", 1 ],
- [ "holybook_tanakh", 1 ],
- [ "holybook_vedas", 1 ],
- [ "holybook_upanishads", 1 ],
- [ "holybook_tripitaka", 1 ],
- [ "holybook_sutras", 1 ],
- [ "holybook_granth", 1 ],
- [ "holybook_mormon", 1 ],
- [ "holybook_kojiki", 1 ],
- [ "holybook_havamal", 1 ],
- [ "holybook_pastafarian", 1 ],
- [ "holybook_slack", 1 ],
- [ "holybook_kallisti", 1 ],
- [ "holybook_scientology", 1 ],
+ { "group": "religious_books", "prob": 18 },
[ "collarpin", 3 ],
[ "survnote", 1 ],
[ "magnifying_glass", 2 ],
@@ -5842,6 +4922,8 @@
[ "m134", 1 ],
[ "m107a1", 8 ],
[ "50bmg", 12 ],
+ [ "50match", 4 ],
+ [ "50_mk211", 1 ],
[ "50ss", 8 ],
[ "50_incendiary", 8 ],
[ "8mm_fmj", 6 ],
@@ -5875,141 +4957,6 @@
[ "c4", 50 ]
]
},
- {
- "type": "item_group",
- "id": "mil_armor",
- "items": [
- [ "pants_army", 10 ],
- [ "jacket_army", 10 ],
- [ "winter_pants_army", 30 ],
- [ "winter_jacket_army", 30 ],
- [ "winter_gloves_army", 30 ],
- [ "army_top", 30 ],
- [ "kevlar", 10 ],
- [ "modularvest", 15 ],
- [ "modularvestkevlar", 18 ],
- [ "modularvestceramic", 25 ],
- [ "modularveststeel", 20 ],
- [ "modularvestsuper", 2 ],
- [ "modularvesthard", 1 ],
- [ "vest", 15 ],
- [ "mask_gas", 10 ],
- [ "goggles_nv", 1 ],
- [ "goggles_ir", 1 ],
- [ "optical_cloak", 1 ],
- [ "holo_cloak", 1 ],
- [ "backpack", 38 ],
- [ "UPS_off", 5 ],
- [ "adv_UPS_off", 3 ],
- [ "tacvest", 10 ],
- [ "molle_pack", 8 ],
- [ "duffelbag", 15 ],
- [ "dump_pouch", 20 ],
- [ "legrig", 10 ],
- [ "under_armor", 20 ],
- [ "boots", 70 ],
- [ "boots_combat", 70 ],
- [ "gloves_tactical", 30 ],
- [ "glasses_bal", 40 ],
- [ "armguard_hard", 20 ],
- [ "legguard_hard", 15 ],
- [ "power_armor_helmet_basic", 3 ],
- [ "power_armor_basic", 3 ],
- [ "power_armor_frame", 4 ],
- [ "helmet_army", 40 ],
- [ "helmet_liner", 10 ],
- [ "UPS_off", 5 ],
- [ "adv_UPS_off", 3 ],
- [ "beret", 50 ],
- [ "beret_wool", 40 ],
- [ "elbow_pads", 50 ],
- [ "knee_pads", 50 ],
- [ "solarpack", 5 ]
- ]
- },
- {
- "type": "item_group",
- "id": "mil_accessories",
- "items": [
- [ "mask_gas", 10 ],
- [ "duffelbag", 15 ],
- [ "goggles_nv", 1 ],
- [ "goggles_ir", 1 ],
- [ "optical_cloak", 1 ],
- [ "holo_cloak", 1 ],
- [ "mess_kit", 9 ],
- [ "mil_mess_kit", 1 ],
- [ "backpack", 38 ],
- [ "briefcase", 10 ],
- [ "UPS_off", 5 ],
- [ "adv_UPS_off", 3 ],
- [ "armguard_hard", 20 ],
- [ "legguard_hard", 15 ],
- [ "power_armor_frame", 4 ],
- [ "elbow_pads", 40 ],
- [ "knee_pads", 40 ],
- [ "mask_bal", 5 ],
- [ "e_tool", 10 ],
- [ "waterproof_gunmod", 8 ],
- [ "grapnel", 3 ],
- [ "glasses_bal", 30 ],
- [ "sheath", 10 ],
- [ "bootsheath", 8 ],
- [ "holster", 15 ],
- [ "sholster", 10 ],
- [ "bandolier_shotgun", 8 ],
- [ "solarpack", 5 ],
- [ "chem_hexamine", 3 ],
- [ "esbit_stove", 6 ],
- [ "mess_tin", 4 ],
- [ "survival_kit", 4 ]
- ]
- },
- {
- "type": "item_group",
- "id": "mil_armor_torso",
- "items": [
- [ "kevlar", 10 ],
- [ "modularvest", 15 ],
- [ "modularvestkevlar", 18 ],
- [ "modularvestceramic", 25 ],
- [ "modularveststeel", 20 ],
- [ "modularvestsuper", 2 ],
- [ "modularvesthard", 1 ],
- [ "winter_jacket_army", 30 ],
- [ "vest", 15 ],
- [ "tacvest", 10 ],
- [ "molle_pack", 8 ],
- [ "under_armor", 20 ],
- [ "power_armor_basic", 5 ],
- [ "army_top", 30 ],
- [ "elbow_pads", 20 ]
- ]
- },
- {
- "type": "item_group",
- "id": "mil_armor_helmet",
- "items": [
- [ "helmet_army", 40 ],
- [ "helmet_liner", 20 ],
- [ "beret", 50 ],
- [ "beret_wool", 40 ],
- [ "mask_bal", 10 ],
- [ "power_armor_helmet_basic", 4 ]
- ]
- },
- {
- "type": "item_group",
- "id": "mil_armor_pants",
- "items": [
- [ "pants_army", 10 ],
- [ "winter_pants_army", 40 ],
- [ "pants", 75 ],
- [ "pants_cargo", 70 ],
- [ "legrig", 10 ],
- [ "knee_pads", 20 ]
- ]
- },
{
"type": "item_group",
"id": "mil_food",
@@ -6249,113 +5196,34 @@
[ "hatchet", 10 ],
[ "ax", 8 ],
[ "knife_combat", 14 ],
- [ "kukri", 2 ],
- [ "knife_hunting", 4 ],
- [ "knife_rambo", 8 ],
- [ "knife_rm42", 2 ],
- [ "throwing_knife", 7 ],
- [ "throwing_axe", 6 ],
- [ "punch_dagger", 6 ],
- [ "pipe", 20 ],
- [ "bat", 60 ],
- [ "bullwhip", 10 ],
- [ "machete", 5 ],
- [ "baton", 8 ],
- [ "blackjack", 10 ],
- [ "tazer", 3 ],
- [ "rapier", 3 ],
- [ "cavalry_sabre", 2 ],
- [ "bat_metal", 60 ],
- [ "e_tool", 2 ],
- [ "knife_trench", 7 ],
- [ "switchblade", 4 ],
- [ "tonfa", 10 ],
- [ "tonfa_wood", 10 ],
- [ "shocktonfa_off", 5 ],
- [ "tanto", 7 ],
- [ "wakizashi", 3 ],
- [ "nodachi", 1 ],
- [ "katana", 2 ],
- [ "survnote", 1 ]
- ]
- },
- {
- "type": "item_group",
- "id": "survival_armor",
- "items": [
- [ "boots_steel", 50 ],
- [ "boots_combat", 50 ],
- [ "boots_hiking", 50 ],
- [ "bootsheath", 8 ],
- [ "pants_cargo", 70 ],
- [ "shorts_cargo", 50 ],
- [ "pants_army", 30 ],
- [ "jacket_army", 30 ],
- [ "winter_pants_army", 10 ],
- [ "winter_jacket_army", 10 ],
- [ "winter_gloves_army", 10 ],
- [ "jumpsuit", 20 ],
- [ "jacket_leather", 30 ],
- [ "sleeveless_trenchcoat", 2 ],
- [ "sleeveless_trenchcoat_leather", 5 ],
- [ "sleeveless_duster", 2 ],
- [ "sleeveless_duster_leather", 5 ],
- [ "kevlar", 30 ],
- [ "modularvest", 12 ],
- [ "modularvestkevlar", 10 ],
- [ "modularvestceramic", 8 ],
- [ "modularveststeel", 5 ],
- [ "modularvestsuper", 1 ],
- [ "dump_pouch", 20 ],
- [ "mask_bal", 5 ],
- [ "vest", 15 ],
- [ "gloves_fingerless", 20 ],
- [ "gloves_tactical", 20 ],
- [ "glasses_bal", 20 ],
- [ "elbow_pads", 40 ],
- [ "knee_pads", 40 ],
- [ "mask_filter", 30 ],
- [ "mask_gas", 10 ],
- [ "goggles_ski", 30 ],
- [ "helmet_skid", 30 ],
- [ "armguard_hard", 20 ],
- [ "legguard_hard", 15 ],
- [ "under_armor", 20 ],
- [ "long_underpants", 40 ],
- [ "long_undertop", 40 ],
- [ "union_suit", 20 ],
- [ "helmet_ball", 45 ],
- [ "helmet_riot", 25 ],
- [ "helmet_motor", 40 ],
- [ "touring_suit", 15 ],
- [ "motorbike_armor", 5 ],
- [ "motorbike_pants", 5 ],
- [ "motorbike_boots", 5 ],
- [ "holster", 8 ],
- [ "sholster", 4 ],
- [ "bootstrap", 3 ],
- [ "legpouch", 12 ],
- [ "legpouch_large", 6 ],
- [ "chestpouch", 9 ],
- [ "ammo_satchel", 4 ],
- [ "UPS_off", 5 ],
- [ "adv_UPS_off", 3 ],
- [ "tacvest", 10 ],
- [ "molle_pack", 8 ],
- [ "legrig", 10 ],
- [ "rucksack", 20 ],
- [ "emer_blanket", 20 ],
- [ "flotation_vest", 1 ],
- [ "fishing_waders", 2 ],
- [ "cloak", 5 ],
- [ "cloak_wool", 5 ],
- [ "tac_helmet", 5 ],
- [ "tac_fullhelmet", 2 ],
- [ "helmet_lobster", 2 ],
- [ "apron_leather", 2 ],
- [ "tool_belt", 5 ],
- [ "bootsheath", 8 ],
- [ "sheath", 5 ]
+ [ "kukri", 2 ],
+ [ "knife_hunting", 4 ],
+ [ "knife_rambo", 8 ],
+ [ "knife_rm42", 2 ],
+ [ "throwing_knife", 7 ],
+ [ "throwing_axe", 6 ],
+ [ "punch_dagger", 6 ],
+ [ "pipe", 20 ],
+ [ "bat", 60 ],
+ [ "bullwhip", 10 ],
+ [ "machete", 5 ],
+ [ "baton", 8 ],
+ [ "blackjack", 10 ],
+ [ "tazer", 3 ],
+ [ "rapier", 3 ],
+ [ "cavalry_sabre", 2 ],
+ [ "bat_metal", 60 ],
+ [ "e_tool", 2 ],
+ [ "knife_trench", 7 ],
+ [ "switchblade", 4 ],
+ [ "tonfa", 10 ],
+ [ "tonfa_wood", 10 ],
+ [ "shocktonfa_off", 5 ],
+ [ "tanto", 7 ],
+ [ "wakizashi", 3 ],
+ [ "nodachi", 1 ],
+ [ "katana", 2 ],
+ [ "survnote", 1 ]
]
},
{
@@ -6407,30 +5275,6 @@
[ "chem_aluminium_sulphate", 20 ]
]
},
- {
- "type": "item_group",
- "id": "construction_worker",
- "items": [
- [ "boots", 70 ],
- [ "boots_steel", 50 ],
- [ "boots_hiking", 10 ],
- [ "jumpsuit", 20 ],
- [ "gloves_rubber", 20 ],
- [ "gloves_leather", 45 ],
- [ "gloves_work", 45 ],
- [ "mask_filter", 30 ],
- [ "glasses_safety", 40 ],
- [ "hat_hard", 50 ],
- [ "hat_hard_hooded", 25 ],
- [ "wearable_light", 5 ],
- [ "ear_plugs", 50 ],
- { "group": "ammo_any_batteries_full", "prob": 50 },
- [ "flashlight", 40 ],
- [ "boots_rubber", 20 ],
- [ "toolbox", 1 ],
- [ "apron_leather", 10 ]
- ]
- },
{
"type": "item_group",
"id": "mine_storage",
@@ -6516,12 +5360,7 @@
"type": "item_group",
"id": "radio",
"items": [
- [ "cola", 70 ],
- [ "choc_drink", 20 ],
- [ "creamsoda", 60 ],
- [ "lemonlime", 40 ],
- [ "orangesoda", 40 ],
- [ "colamdew", 60 ],
+ { "group": "softdrinks_canned", "prob": 290 },
[ "caffeine", 25 ],
[ "maltballs", 30 ],
[ "cig", 90 ],
@@ -7147,6 +5986,8 @@
[ "bipod", 1 ],
[ "50bmg", 3 ],
[ "50ss", 2 ],
+ [ "50match", 1 ],
+ [ "50_mk211", 1 ],
[ "small_repairkit", 10 ],
[ "50_incendiary", 2 ],
[ "water_clean", 90 ],
@@ -7414,8 +6255,8 @@
{ "group": "tools_science", "prob": 50 },
[ "ether", 5 ],
[ "water_clean", 90 ],
- [ "bleach", 20 ],
- [ "ammonia", 24 ],
+ { "item": "bleach", "prob": 20, "charges-min": 1 },
+ { "item": "ammonia", "prob": 24, "charges-min": 1 },
[ "mutagen", 8 ],
[ "purifier", 12 ],
[ "iodine", 5 ],
@@ -7540,22 +6381,14 @@
"items": [
[ "water_clean", 90 ],
[ "water_mineral", 5 ],
- [ "cola", 70 ],
- [ "creamsoda", 60 ],
- [ "lemonlime", 60 ],
- [ "orangesoda", 60 ],
- [ "crispycran", 40 ],
- [ "colamdew", 60 ],
- [ "choc_drink", 30 ],
+ { "group": "softdrinks_canned", "prob": 380 },
+ { "group": "salty_snacks", "prob": 135 },
{ "item": "cola", "prob": 25, "container-item": "bottle_glass" },
{ "item": "creamsoda", "prob": 25, "container-item": "bottle_glass" },
{ "item": "lemonlime", "prob": 25, "container-item": "bottle_glass" },
{ "item": "orangesoda", "prob": 25, "container-item": "bottle_glass" },
{ "item": "colamdew", "prob": 25, "container-item": "bottle_glass" },
- [ "jerky", 55 ],
- [ "cracklins", 25 ],
[ "salted_fish", 35 ],
- [ "porkstick", 55 ],
[ "ravioli", 25 ],
[ "cheese_hard", 15 ],
[ "can_beans", 40 ],
@@ -7627,9 +6460,7 @@
[ "whiskey", 16 ],
[ "bum_wine", 10 ],
[ "chem_ethanol", 12 ],
- [ "jerky", 55 ],
- [ "cracklins", 25 ],
- [ "porkstick", 55 ],
+ { "group": "salty_snacks", "prob": 135 },
[ "bandages", 50 ],
[ "cotton_ball", 50 ],
[ "caffeine", 25 ],
@@ -7670,6 +6501,7 @@
[ "backpack", 38 ],
[ "backpack_leather", 28 ],
[ "holster", 8 ],
+ [ "bholster", 2 ],
[ "armguard_soft", 40 ],
[ "armguard_hard", 20 ],
[ "legguard_hard", 15 ],
@@ -7755,8 +6587,8 @@
[ "meth", 90 ],
[ "jar_glass", 80 ],
[ "heroin", 1 ],
- [ "bleach", 60 ],
- [ "ammonia", 60 ],
+ { "item": "bleach", "prob": 60, "charges-min": 10 },
+ { "item": "ammonia", "prob": 60, "charges-min": 10 },
[ "syringe", 30 ],
[ "punch_dagger", 12 ],
[ "water_clean", 80 ],
@@ -7923,73 +6755,11 @@
"id": "cow",
"items": [ [ "cow_bell", 1 ] ]
},
- {
- "type": "item_group",
- "id": "loincloth",
- "items": [ [ "loincloth", 2 ], [ "loincloth_wool", 1 ], [ "loincloth_fur", 1 ], [ "loincloth_leather", 1 ] ]
- },
{
"type": "item_group",
"id": "dog_cop",
"items": [ [ "kevlar_harness", 1 ] ]
},
- {
- "type": "item_group",
- "id": "fireman_torso",
- "items": [ [ "bunker_coat", 80 ], [ "vest", 30 ] ]
- },
- {
- "type": "item_group",
- "id": "fireman_pants",
- "items": [ [ "bunker_pants", 80 ], [ "nomex_suit", 40 ], [ "pants_cargo", 10 ] ]
- },
- {
- "type": "item_group",
- "id": "fireman_boots",
- "items": [
- [ "boots_bunker", 70 ],
- [ "boots_steel", 20 ],
- [ "boots_combat", 5 ],
- [ "boots_rubber", 10 ],
- [ "boots_hiking", 5 ],
- [ "nomex_socks", 40 ]
- ]
- },
- {
- "type": "item_group",
- "id": "fireman_gloves",
- "items": [
- [ "fire_gauntlets", 60 ],
- [ "gloves_medical", 5 ],
- [ "gloves_tactical", 20 ],
- [ "gloves_rubber", 10 ],
- [ "nomex_gloves", 30 ]
- ]
- },
- {
- "type": "item_group",
- "id": "fireman_head",
- "items": [
- [ "firehelmet", 60 ],
- [ "hat_knit", 10 ],
- [ "nomex_hood", 40 ],
- [ "hat_hard", 5 ],
- [ "hat_hard_hooded", 3 ],
- [ "hat_noise_cancelling", 5 ]
- ]
- },
- {
- "type": "item_group",
- "id": "fireman_mask",
- "items": [
- [ "mask_bunker", 70 ],
- [ "mask_dust", 30 ],
- [ "mask_gas", 20 ],
- [ "mask_filter", 10 ],
- [ "goggles_ir", 2 ],
- [ "goggles_nv", 1 ]
- ]
- },
{
"type": "item_group",
"id": "fireman_gear",
@@ -8060,36 +6830,6 @@
[ "bag_body_bag", 5 ]
]
},
- {
- "type": "item_group",
- "id": "hazmat_torso",
- "items": [ [ "cleansuit", 40 ], [ "jumpsuit", 60 ] ]
- },
- {
- "type": "item_group",
- "id": "hazmat_boots",
- "items": [ [ "boots_rubber", 1 ] ]
- },
- {
- "type": "item_group",
- "id": "hazmat_gloves",
- "items": [ [ "gloves_medical", 60 ], [ "gloves_rubber", 40 ] ]
- },
- {
- "type": "item_group",
- "id": "hazmat_full",
- "items": [ [ "hazmat_suit", 80 ], [ "anbc_suit", 20 ] ]
- },
- {
- "type": "item_group",
- "id": "hazmat_mask",
- "items": [ [ "mask_dust", 80 ], [ "mask_filter", 20 ], [ "mask_gas", 10 ] ]
- },
- {
- "type": "item_group",
- "id": "hazmat_eyes",
- "items": [ [ "glasses_safety", 50 ] ]
- },
{
"type": "item_group",
"id": "rad_gear",
@@ -8104,280 +6844,6 @@
[ "iodine", 50 ]
]
},
- {
- "type": "item_group",
- "id": "survivorzed_suits",
- "items": [
- [ "survivor_suit", 8 ],
- [ "lsurvivor_suit", 10 ],
- [ "hsurvivor_suit", 6 ],
- [ "wsurvivor_suit", 6 ],
- [ "fsurvivor_suit", 4 ],
- [ "h20survivor_suit", 2 ],
- [ "touring_suit", 16 ],
- [ "armor_larmor", 28 ],
- [ "armor_blarmor", 14 ],
- [ "armor_farmor", 8 ],
- [ "armor_plarmor", 2 ],
- [ "swat_armor", 6 ],
- [ "aep_suit", 4 ],
- [ "armor_scrapsuit", 12 ],
- [ "armor_chitin", 2 ],
- [ "armor_lightplate", 1 ],
- [ "cuirass_lightplate", 2 ],
- [ "armor_plate", 1 ],
- [ "bondage_suit", 1 ],
- [ "snuggie", 1 ]
- ]
- },
- {
- "type": "item_group",
- "id": "survivorzed_tops",
- "items": [
- [ "trenchcoat_survivor", 5 ],
- [ "sleeveless_trenchcoat_survivor", 2 ],
- [ "duster_survivor", 5 ],
- [ "sleeveless_duster_survivor", 2 ],
- [ "vest", 40 ],
- [ "kevlar", 16 ],
- [ "jacket_army", 28 ],
- [ "trenchcoat", 12 ],
- [ "trenchcoat_leather", 10 ],
- [ "trenchcoat_fur", 5 ],
- [ "sleeveless_trenchcoat", 7 ],
- [ "sleeveless_trenchcoat_leather", 5 ],
- [ "sleeveless_trenchcoat_fur", 2 ],
- [ "duster", 12 ],
- [ "duster_leather", 10 ],
- [ "duster_fur", 5 ],
- [ "sleeveless_duster", 7 ],
- [ "sleeveless_duster_leather", 5 ],
- [ "sleeveless_duster_fur", 2 ],
- [ "peacoat", 14 ],
- [ "greatcoat", 7 ],
- [ "vest_leather", 22 ],
- [ "bunker_coat", 6 ],
- [ "bookplate", 10 ],
- [ "modularvest", 4 ],
- [ "modularvesthard", 1 ],
- [ "modularvestkevlar", 2 ],
- [ "modularvestceramic", 2 ],
- [ "modularveststeel", 1 ],
- [ "modularvestsuper", 1 ],
- [ "dragonskin", 1 ],
- [ "corset", 1 ],
- [ "football_armor", 18 ],
- [ "jacket_leather", 12 ],
- [ "jacket_jean", 8 ],
- [ "jacket_flannel", 6 ],
- [ "cuirass_scrap", 12 ]
- ]
- },
- {
- "type": "item_group",
- "id": "survivorzed_bottoms",
- "items": [
- [ "pants_survivor", 10 ],
- [ "pants_cargo", 40 ],
- [ "shorts_cargo", 22 ],
- [ "pants_army", 28 ],
- [ "winter_pants_army", 10 ],
- [ "bunker_pants", 14 ],
- [ "pants_leather", 18 ],
- [ "legguard_scrap", 12 ],
- [ "skirt", 6 ],
- [ "kilt", 1 ]
- ]
- },
- {
- "type": "item_group",
- "id": "survivorzed_gloves",
- "items": [
- [ "gloves_lsurvivor", 10 ],
- [ "gloves_survivor", 8 ],
- [ "gloves_hsurvivor", 4 ],
- [ "gloves_wsurvivor", 4 ],
- [ "gloves_fsurvivor", 2 ],
- [ "gloves_h20survivor", 1 ],
- [ "gloves_fingerless", 28 ],
- [ "gloves_fingerless_mod", 20 ],
- [ "gloves_tactical", 12 ],
- [ "gauntlets_larmor", 14 ],
- [ "gauntlets_chitin", 2 ],
- [ "armguard_larmor", 7 ],
- [ "vambrace_larmor", 6 ],
- [ "armguard_chitin", 1 ],
- [ "armguard_scrap", 12 ],
- [ "gloves_fur", 4 ],
- [ "gloves_leather", 22 ],
- [ "gloves_work", 22 ],
- [ "gloves_plate", 2 ],
- [ "gloves_wraps", 1 ]
- ]
- },
- {
- "type": "item_group",
- "id": "survivorzed_boots",
- "items": [
- [ "boots_lsurvivor", 10 ],
- [ "boots_survivor", 8 ],
- [ "boots_hsurvivor", 4 ],
- [ "boots_wsurvivor", 4 ],
- [ "boots_fsurvivor", 2 ],
- [ "boots_h20survivor", 1 ],
- [ "boots", 20 ],
- [ "boots_scrap", 12 ],
- [ "boots_steel", 28 ],
- [ "boots_hiking", 24 ],
- [ "knee_high_boots", 8 ],
- [ "boots_combat", 12 ],
- [ "boots_larmor", 14 ],
- [ "boots_fur", 22 ],
- [ "boots_plate", 2 ],
- [ "boots_bunker", 8 ],
- [ "footrags", 1 ]
- ]
- },
- {
- "type": "item_group",
- "id": "survivorzed_head",
- "items": [
- [ "hood_lsurvivor", 10 ],
- [ "hood_survivor", 8 ],
- [ "helmet_survivor", 8 ],
- [ "helmet_hsurvivor", 4 ],
- [ "hood_wsurvivor", 4 ],
- [ "hood_fsurvivor", 2 ],
- [ "hood_h20survivor", 1 ],
- [ "helmet_army", 26 ],
- [ "tac_helmet", 22 ],
- [ "helmet_riot", 18 ],
- [ "tac_fullhelmet", 8 ],
- [ "helmet_lobster", 8 ],
- [ "pot_helmet", 22 ],
- [ "helmet_larmor", 14 ],
- [ "pickelhaube", 1 ],
- [ "firehelmet", 2 ],
- [ "helmet_barbute", 1 ],
- [ "helmet_plate", 1 ],
- [ "helmet_scrap", 12 ],
- [ "bondage_mask", 1 ],
- [ "survivor_goggles", 10 ],
- [ "hood_rain", 14 ]
- ]
- },
- {
- "type": "item_group",
- "id": "survivorzed_extra",
- "items": [
- [ "daypack", 4 ],
- [ "mask_lsurvivor", 10 ],
- [ "mask_survivor", 8 ],
- [ "mask_hsurvivor", 6 ],
- [ "survivor_vest", 8 ],
- [ "survivor_runner_pack", 6 ],
- [ "survivor_pack", 5 ],
- [ "survivor_rucksack", 4 ],
- [ "survivor_duffel_bag", 3 ],
- [ "dive_bag", 10 ],
- [ "runner_bag", 20 ],
- [ "molle_pack", 12 ],
- [ "backpack", 40 ],
- [ "backpack_leather", 32 ],
- [ "mbag", 26 ],
- [ "purse", 14 ],
- [ "slingpack", 12 ],
- [ "rucksack", 12 ],
- [ "duffelbag", 8 ],
- [ "mask_h20survivor", 1 ],
- [ "mask_bal", 14 ],
- [ "mask_hockey", 26 ],
- [ "mask_gas", 24 ],
- [ "mask_filter", 12 ],
- [ "mask_bunker", 2 ],
- [ "mask_wsurvivor", 4 ],
- [ "mask_fsurvivor", 2 ],
- [ "sunglasses", 12 ],
- [ "fitover_sunglasses", 8 ],
- [ "glasses_bal", 18 ],
- [ "glasses_safety", 24 ],
- [ "goggles_ski", 14 ],
- [ "goggles_nv", 2 ],
- [ "goggles_ir", 1 ],
- [ "tacvest", 22 ],
- [ "legrig", 22 ],
- [ "tool_belt", 16 ],
- [ "fanny", 12 ],
- [ "dump_pouch", 6 ],
- [ "ragpouch", 22 ],
- [ "leather_pouch", 16 ],
- [ "quiver", 14 ],
- [ "quiver_large", 8 ],
- [ "wristwatch", 24 ],
- [ "diving_watch", 16 ],
- [ "pocketwatch", 14 ],
- [ "holster", 14 ],
- [ "bandana", 18 ],
- [ "scarf", 26 ],
- [ "long_knit_scarf", 15 ],
- [ "mask_gas_xl", 4 ],
- [ "hat_boonie", 16 ],
- [ "beret", 18 ],
- [ "beret_wool", 14 ],
- [ "balclava", 12 ],
- [ "mask_survivorxl", 2 ],
- [ "combatsaw_off", 1 ],
- [ "firemachete_off", 1 ],
- [ "shishkebab_off", 2 ],
- [ "helsing", 1 ],
- [ "tihar", 2 ],
- [ "bigun", 2 ],
- [ "ashot", 4 ],
- [ "pickaxe", 1 ],
- [ "makeshift_machete", 4 ],
- [ "flamethrower_crude", 6 ],
- [ "fungicide", 10 ],
- [ "insecticide", 10 ],
- [ "antifungal", 1 ],
- [ "antiparasitic", 5 ],
- [ "diazepam", 1 ],
- [ "throw_extinguisher", 2 ],
- [ "small_repairkit", 14 ],
- [ "grapnel", 6 ],
- [ "misc_repairkit", 8 ],
- [ "survival_kit", 3 ],
- [ "toolbox", 1 ],
- [ "survivor_belt", 2 ],
- [ "survivor_machete", 2 ],
- [ "spear_survivor", 2 ],
- [ "survivor_light", 24 ],
- [ "survivor_mess_kit", 6 ],
- [ "survivor_shavingkit", 3 ],
- [ "survivor_hairtrimmer", 1 ],
- [ "survivor_scope", 1 ],
- [ "survnote", 30 ]
- ]
- },
- {
- "type": "item_group",
- "id": "bio_op_face",
- "items": [ [ "glasses_bal", 40 ], [ "mask_filter", 30 ], [ "mask_bal", 30 ], [ "mask_gas", 40 ] ]
- },
- {
- "type": "item_group",
- "id": "bio_op_torso",
- "items": [ [ "dragonskin", 50 ], [ "winter_jacket_army", 10 ], [ "modularvestceramic", 40 ], [ "modularvestkevlar", 20 ] ]
- },
- {
- "type": "item_group",
- "id": "bio_op_boots",
- "items": [ [ "boots_combat", 1 ] ]
- },
- {
- "type": "item_group",
- "id": "bio_op_gloves",
- "items": [ [ "gloves_tactical", 60 ], [ "gloves_fingerless", 40 ], [ "winter_gloves_army", 40 ] ]
- },
{
"type": "item_group",
"id": "trash_forest",
@@ -8426,6 +6892,7 @@
[ "steel_chunk", 1 ],
{ "item": "scrap", "prob": 2, "count-min": 1, "count-max": 10 },
{ "item": "glass_shard", "prob": 3, "count-min": 8, "count-max": 84 },
+ { "item": "feather", "prob": 5, "count-min": 5, "count-max": 10 },
[ "wire", 1 ],
[ "wire_barbed", 1 ],
[ "splinter", 3 ],
@@ -8445,6 +6912,8 @@
"ammo": 75,
"magazine": 100,
"items": [
+ { "group": "candy_chocolate", "prob": 320 },
+ { "group": "softdrinks_canned", "prob": 244 },
[ "bbgun", 30 ],
[ "bb", 30 ],
[ "portable_game", 60 ],
@@ -8453,26 +6922,11 @@
[ "manual_dodge_kid", 5 ],
[ "inflatable_boat", 10 ],
[ "hand_pump", 15 ],
- [ "chocolate", 30 ],
- [ "candy", 45 ],
- [ "candy2", 45 ],
- [ "candy3", 45 ],
- [ "maple_candy", 5 ],
[ "toastem", 45 ],
[ "toastem2", 45 ],
[ "toastem3", 45 ],
- [ "powder_candy", 45 ],
- [ "neccowafers", 45 ],
- [ "maltballs", 45 ],
[ "cookies", 45 ],
[ "bat", 15 ],
- [ "purple_drink", 42 ],
- [ "cola", 32 ],
- [ "creamsoda", 42 ],
- [ "lemonlime", 32 ],
- [ "orangesoda", 32 ],
- [ "crispycran", 32 ],
- [ "colamdew", 32 ],
[ "backpack", 20 ],
[ "hairpin", 10 ],
[ "fc_hairpin", 4 ],
@@ -8487,7 +6941,6 @@
[ "novel_pulp", 30 ],
[ "fairy_tales", 30 ],
[ "mag_comic", 30 ],
- [ "candycigarette", 45 ],
[ "folding_bicycle", 3 ],
[ "sunglasses", 25 ],
[ "cowboy_hat", 25 ],
@@ -8904,88 +7357,6 @@
[ "hand_axe", 50 ]
]
},
- {
- "type": "item_group",
- "id": "museum_armor",
- "items": [
- [ "armor_plate", 60 ],
- [ "gloves_plate", 60 ],
- [ "boots_plate", 60 ],
- [ "armor_lightplate", 45 ],
- [ "cuirass_lightplate", 45 ],
- [ "armguard_lightplate", 30 ],
- [ "legguard_lightplate", 30 ],
- [ "helmet_barbute", 50 ],
- [ "helmet_conical", 30 ],
- [ "armor_lamellar", 20 ],
- [ "armor_lorica", 25 ],
- [ "armor_samurai", 50 ],
- [ "helmet_kabuto", 50 ],
- [ "helmet_larmor", 40 ],
- [ "helmet_nasal", 50 ],
- [ "helmet_galea", 40 ],
- [ "boots_larmor", 40 ],
- [ "armor_larmor", 40 ],
- [ "armguard_larmor", 40 ],
- [ "vambrace_larmor", 20 ],
- [ "gambeson", 50 ],
- [ "legguard_metal", 10 ],
- [ "helmet_corinthian", 45 ],
- [ "armor_cuirass", 25 ],
- [ "legguard_bronze", 20 ]
- ]
- },
- {
- "type": "item_group",
- "id": "museum_armor_torso",
- "items": [
- [ "armor_plate", 60 ],
- [ "armor_lightplate", 45 ],
- [ "cuirass_lightplate", 45 ],
- [ "armor_lamellar", 20 ],
- [ "armor_lorica", 25 ],
- [ "armor_samurai", 50 ],
- [ "armor_larmor", 40 ],
- [ "gambeson", 50 ],
- [ "armor_cuirass", 25 ],
- [ "chainmail_suit", 10 ],
- [ "chainmail_vest", 3 ]
- ]
- },
- {
- "type": "item_group",
- "id": "museum_armor_legs",
- "items": [ [ "legguard_lightplate", 30 ], [ "legguard_metal", 10 ], [ "legguard_bronze", 20 ], [ "chainmail_legs", 10 ] ]
- },
- {
- "type": "item_group",
- "id": "museum_armor_feet",
- "items": [ [ "boots_plate", 60 ], [ "boots_larmor", 40 ] ]
- },
- {
- "type": "item_group",
- "id": "museum_armor_head",
- "items": [
- [ "helmet_barbute", 50 ],
- [ "helmet_conical", 30 ],
- [ "helmet_kabuto", 50 ],
- [ "helmet_larmor", 40 ],
- [ "helmet_nasal", 50 ],
- [ "helmet_galea", 40 ],
- [ "chainmail_hood", 30 ]
- ]
- },
- {
- "type": "item_group",
- "id": "museum_armor_arms",
- "items": [
- [ "armguard_lightplate", 30 ],
- [ "armguard_larmor", 40 ],
- [ "vambrace_larmor", 20 ],
- [ "gloves_plate", 60 ],
- [ "chainmail_arms", 30 ]
- ]
- },
{
"type": "item_group",
"id": "museum_armor_pet",
@@ -9358,8 +7729,7 @@
[ "water_clean", 50 ],
[ "granola", 60 ],
[ "fruit_leather", 50 ],
- [ "jerky", 70 ],
- [ "porkstick", 60 ],
+ { "group": "salty_snacks", "prob": 130 },
[ "aspirin", 80 ],
[ "inhaler", 30 ],
[ "vodka", 60 ],
@@ -9387,6 +7757,8 @@
[ "armguard_soft", 50 ],
[ "armguard_hard", 20 ],
[ "legguard_hard", 50 ],
+ [ "leotard", 5 ],
+ [ "unitard", 5 ],
[ "hat_ball", 100 ],
[ "helmet_ball", 80 ],
[ "baseball", 100 ],
@@ -9472,14 +7844,9 @@
"type": "item_group",
"id": "coffee_display",
"items": [
+ { "group": "salty_snacks", "prob": 121 },
[ "sandwich_t", 22 ],
- [ "jerky", 17 ],
- [ "porkstick", 18 ],
[ "tea_raw", 50 ],
- [ "fried_seeds", 5 ],
- [ "chips", 28 ],
- [ "chips2", 27 ],
- [ "chips3", 26 ],
[ "cookies", 25 ],
[ "brownie", 25 ],
[ "coffee_raw", 90 ],
@@ -9496,11 +7863,8 @@
"items": [
[ "water_clean", 30 ],
[ "water_mineral", 15 ],
- [ "cola", 30 ],
- [ "choc_drink", 30 ],
+ { "group": "softdrinks_canned", "prob": 121 },
[ "milk_UHT", 10 ],
- [ "rootbeer", 33 ],
- [ "creamsoda", 28 ],
[ "juice", 31 ],
[ "pie", 40 ],
[ "pie_meat", 28 ],
@@ -9573,8 +7937,7 @@
[ "textbook_chemistry", 15 ],
[ "child_book", 15 ],
[ "manual_dodge_kid", 5 ],
- [ "holybook_bible1", 5 ],
- [ "holybook_quran", 5 ],
+ { "group": "religious_books", "prob": 10 },
[ "novel_thriller", 15 ],
[ "novel_sports", 15 ],
[ "novel_war", 15 ],
@@ -9617,7 +7980,8 @@
{ "item": "two_way_radio", "prob": 30, "charges-min": 0, "charges-max": 15 },
[ "transponder", 25 ],
[ "receiver", 25 ],
- [ "small_lcd_screen", 20 ],
+ [ "small_lcd_screen", 10 ],
+ [ "large_lcd_screen", 10 ],
[ "mobile_memory_card", 35 ],
[ "mobile_memory_card_used", 35 ],
[ "mobile_memory_card_encrypted", 35 ],
@@ -9852,24 +8216,6 @@
[ "32_casing", 70 ]
]
},
- {
- "id": "dollar_clothes",
- "type": "item_group",
- "items": [
- [ "bandana", 25 ],
- [ "boxer_shorts", 25 ],
- [ "boxer_briefs", 25 ],
- [ "boy_shorts", 25 ],
- [ "bra", 25 ],
- [ "socks", 45 ],
- [ "stockings", 20 ],
- [ "hat_cotton", 35 ],
- [ "copper_bracelet", 10 ],
- [ "sunglasses", 25 ],
- [ "tieclip", 15 ],
- [ "hairpin", 15 ]
- ]
- },
{
"id": "dollar_books",
"type": "item_group",
@@ -9935,12 +8281,10 @@
"id": "dollar_food",
"type": "item_group",
"items": [
- [ "fruit_leather", 20 ],
- [ "chips", 30 ],
- [ "pretzels", 30 ],
+ { "group": "candy_chocolate", "prob": 45 },
+ { "group": "salty_snacks", "prob": 80 },
[ "peanut_unshelled", 20 ],
[ "almond_unshelled", 20 ],
- [ "chocolate", 20 ],
[ "cereal", 25 ],
[ "cereal3", 25 ],
[ "soup_tomato", 25 ],
@@ -9955,29 +8299,8 @@
[ "dry_rice", 20 ],
[ "dry_beans", 20 ],
[ "dry_lentils", 50 ],
- [ "bread", 40 ],
[ "cookies", 25 ],
- [ "candy", 20 ]
- ]
- },
- {
- "type": "item_group",
- "id": "coat_rack",
- "items": [
- [ "jacket_light", 50 ],
- [ "jacket_windbreaker", 25 ],
- [ "jacket_jean", 35 ],
- [ "blazer", 35 ],
- [ "jacket_leather", 30 ],
- [ "coat_rain", 50 ],
- [ "trenchcoat", 10 ],
- [ "duster", 15 ],
- [ "peacoat", 30 ],
- [ "tophat", 10 ],
- [ "hat_ball", 40 ],
- [ "fedora", 15 ],
- [ "hat_cotton", 30 ],
- [ "hat_knit", 20 ]
+ [ "bread", 40 ]
]
},
{
@@ -10027,82 +8350,7 @@
[ "touristmap", 3 ],
[ "trailmap", 3 ],
[ "phonebook", 60 ],
- [ "holybook_bible1", 1 ],
- [ "holybook_bible2", 1 ],
- [ "holybook_quran", 1 ],
- [ "holybook_scientology", 1 ]
- ]
- },
- {
- "type": "item_group",
- "id": "laundry",
- "items": [
- [ "basket_laundry", 30 ],
- [ "jeans", 90 ],
- [ "pants_checkered", 5 ],
- [ "shorts", 70 ],
- [ "shorts_denim", 35 ],
- [ "pants", 75 ],
- [ "breeches", 10 ],
- [ "suit", 60 ],
- [ "waistcoat", 30 ],
- [ "pants_leather", 60 ],
- [ "pants_cargo", 70 ],
- [ "shorts_cargo", 50 ],
- [ "skirt", 75 ],
- [ "skirt_leather", 5 ],
- [ "tshirt", 70 ],
- [ "longshirt", 80 ],
- [ "polo_shirt", 65 ],
- [ "dress_shirt", 60 ],
- [ "tank_top", 50 ],
- [ "camisole", 30 ],
- [ "bra", 30 ],
- [ "undershirt", 30 ],
- [ "boxer_shorts", 30 ],
- [ "briefs", 15 ],
- [ "boxer_briefs", 20 ],
- [ "panties", 30 ],
- [ "boy_shorts", 25 ],
- [ "sweatshirt", 75 ],
- [ "sweater", 75 ],
- [ "hoodie", 65 ],
- [ "jacket_light", 50 ],
- [ "jacket_windbreaker", 25 ],
- [ "jacket_jean", 35 ],
- [ "blazer", 35 ],
- [ "gloves_light", 35 ],
- [ "mittens", 30 ],
- [ "thermal_socks", 2 ],
- [ "thermal_gloves", 2 ],
- [ "gloves_liner", 25 ],
- [ "scarf", 45 ],
- [ "scarf_long", 1 ],
- [ "hat_cotton", 45 ],
- [ "hat_knit", 25 ],
- [ "hat_newsboy", 20 ],
- [ "under_armor", 20 ],
- [ "under_armor_shorts", 20 ],
- [ "tights", 20 ],
- [ "leggings", 20 ],
- [ "stockings", 20 ],
- [ "long_underpants", 40 ],
- [ "long_undertop", 40 ],
- [ "union_suit", 20 ],
- [ "arm_warmers", 20 ],
- [ "leg_warmers", 20 ],
- [ "corset", 10 ],
- [ "pants_army", 10 ],
- [ "army_top", 20 ],
- [ "tux", 1 ],
- [ "gown", 1 ],
- [ "jersey", 40 ],
- [ "maid_dress", 3 ],
- [ "halter_top", 50 ],
- [ "linuxtshirt", 20 ],
- [ "kilt", 5 ],
- [ "nanoskirt", 10 ],
- [ "robe", 50 ]
+ { "group": "religious_books", "prob": 4 }
]
},
{
@@ -10148,21 +8396,6 @@
{ "item": "smart_phone", "prob": 1, "charges-min": 130, "charges-max": 130 }
]
},
- {
- "type": "item_group",
- "id": "common_gloves",
- "items": [
- { "item": "gloves_light", "prob": 15 },
- { "item": "gloves_leather", "prob": 15 },
- { "item": "gloves_golf", "prob": 15 },
- { "item": "gloves_wool", "prob": 15 },
- { "item": "gloves_winter", "prob": 10 },
- { "item": "gloves_fingerless", "prob": 15 },
- { "item": "gloves_liner", "prob": 15 },
- { "item": "mittens", "prob": 5 },
- { "item": "thermal_gloves", "prob": 2 }
- ]
- },
{
"id": "sewing_group",
"type": "item_group",
diff --git a/data/json/itemgroups/locations.json b/data/json/itemgroups/locations.json
index e8c9b1d061e5e..9a4b69c85f7a8 100644
--- a/data/json/itemgroups/locations.json
+++ b/data/json/itemgroups/locations.json
@@ -322,8 +322,7 @@
[ "oj", 40 ],
[ "juice", 35 ],
[ "cranberry_juice", 35 ],
- [ "cola", 50 ],
- [ "lemonlime", 45 ],
+ { "group": "softdrinks_canned", "prob": 95 },
[ "V8", 15 ],
[ "gum", 15 ]
]
@@ -337,8 +336,7 @@
[ "oj", 40 ],
[ "juice", 35 ],
[ "cranberry_juice", 35 ],
- [ "cola", 50 ],
- [ "lemonlime", 45 ],
+ { "group": "softdrinks_canned", "prob": 95 },
[ "V8", 15 ],
[ "fries", 7 ],
[ "cheese_fries", 5 ],
@@ -685,13 +683,11 @@
"id": "ic_merch_vending",
"//": "for cs_internet_cafe",
"items": [
+ { "group": "salty_snacks", "prob": 300 },
[ "water_clean", 100 ],
[ "water_mineral", 100 ],
[ "coffee", 100 ],
- [ "atomic_coffee", 100 ],
- [ "chips", 100 ],
- [ "chips2", 100 ],
- [ "chips3", 100 ]
+ [ "atomic_coffee", 100 ]
]
},
{
@@ -1072,6 +1068,8 @@
"//": "for ws_regional_dump",
"items": [
{ "group": "ammo_pocket_batteries", "prob": 30 },
+ { "group": "candy_chocolate", "prob": 570 },
+ { "group": "snacks", "prob": 820 },
[ "radio", 10 ],
[ "eyedrops", 10 ],
[ "rag", 30 ],
@@ -1081,43 +1079,7 @@
[ "cell_phone", 10 ],
[ "file", 40 ],
[ "mag_mechanics", 20 ],
- [ "manual_mechanics", 10 ],
- [ "chips", 65 ],
- [ "fried_seeds", 25 ],
- [ "pretzels", 55 ],
- [ "chocpretzels", 40 ],
- [ "chocolate", 50 ],
- [ "jerky", 55 ],
- [ "cracklins", 25 ],
- [ "pemmican", 5 ],
- [ "granola", 10 ],
- [ "porkstick", 55 ],
- [ "candy", 80 ],
- [ "candy2", 80 ],
- [ "candy3", 80 ],
- [ "maple_candy", 10 ],
- [ "powder_candy", 60 ],
- [ "neccowafers", 80 ],
- [ "maltballs", 80 ],
- [ "mintpatties", 80 ],
- [ "cookies", 80 ],
- [ "tea_raw", 10 ],
- [ "coffee_raw", 15 ],
- [ "choco_coffee_beans", 10 ],
- [ "nachos", 50 ],
- [ "chips2", 65 ],
- [ "chips3", 65 ],
- [ "salt", 10 ],
- [ "pepper", 10 ],
- [ "syrup", 10 ],
- [ "coffee_syrup", 10 ],
- [ "popcorn", 25 ],
- [ "popcorn2", 35 ],
- [ "popcorn3", 35 ],
- [ "fruit_leather", 25 ],
- [ "kernels", 25 ],
- [ "pine_nuts", 5 ],
- [ "candycigarette", 20 ]
+ [ "manual_mechanics", 10 ]
]
},
{
@@ -1369,7 +1331,8 @@
[ "e_scrap", 95 ],
[ "antenna", 50 ],
[ "circuit", 35 ],
- [ "small_lcd_screen", 20 ],
+ [ "small_lcd_screen", 10 ],
+ [ "large_lcd_screen", 10 ],
[ "RAM", 35 ],
[ "processor", 10 ],
[ "amplifier", 7 ],
@@ -1462,6 +1425,27 @@
[ "fishing_hook_bone", 100 ]
]
},
+ {
+ "id": "hotel_coffee_bar",
+ "type": "item_group",
+ "subtype": "collection",
+ "entries": [
+ { "item": "coffeemaker", "prob": 60, "charges": [ 0, 200 ] },
+ { "group": "coffee_display", "prob": 60, "count": [ 1, 3 ] }
+ ]
+ },
+ {
+ "id": "hotel_luggage",
+ "type": "item_group",
+ "subtype": "collection",
+ "entries": [ { "group": "bags_trip", "prob": 25 }, { "group": "dresser", "prob": 25, "count": [ 1, 4 ] } ]
+ },
+ {
+ "type": "item_group",
+ "id": "book_hotel_tower_bible",
+ "subtype": "collection",
+ "items": [ { "item": "holybook_bible3", "prob": 100 } ]
+ },
{
"id": "laundromat_bleach",
"type": "item_group",
diff --git a/data/json/itemgroups/magazines.json b/data/json/itemgroups/magazines.json
index 5c2bb315a6f8b..4792860345c53 100644
--- a/data/json/itemgroups/magazines.json
+++ b/data/json/itemgroups/magazines.json
@@ -127,6 +127,7 @@
[ "ppq40mag_12rd", 2 ],
[ "ppq40mag_14rd", 1 ],
[ "ppq45mag", 1 ],
+ [ "taurus_spectrum_mag", 1 ],
[ "hptc9", 1 ],
[ "hptcf380", 1 ],
[ "hptjcp", 1 ],
@@ -171,7 +172,6 @@
[ "j22mag", 1 ],
[ "kp32mag", 5 ],
[ "fn1910mag", 2 ],
- [ "taurus38mag", 30 ],
[ "ppkmag", 15 ],
[ "lw12mag", 5 ],
[ "lw21mag", 5 ]
diff --git a/data/json/itemgroups/mall_item_groups.json b/data/json/itemgroups/mall_item_groups.json
index 42b983079b919..934f64c980d13 100644
--- a/data/json/itemgroups/mall_item_groups.json
+++ b/data/json/itemgroups/mall_item_groups.json
@@ -29,18 +29,7 @@
{
"id": "candy_shop",
"type": "item_group",
- "items": [
- [ "chocolate", 50 ],
- [ "cookies", 50 ],
- [ "candy", 60 ],
- [ "candy2", 60 ],
- [ "candy3", 60 ],
- [ "maple_candy", 25 ],
- [ "powder_candy", 40 ],
- [ "neccowafers", 60 ],
- [ "candycigarette", 45 ],
- [ "mintpatties", 60 ]
- ]
+ "items": [ { "group": "candy_chocolate", "prob": 460 }, [ "cookies", 50 ] ]
},
{
"id": "tux_shop",
@@ -313,6 +302,8 @@
[ "postman_shirt", 50 ],
[ "postman_shorts", 30 ],
[ "robe", 45 ],
+ [ "leotard", 5 ],
+ [ "zentai", 5 ],
[ "kimono", 25 ],
[ "yukata", 20 ],
[ "coat_lab", 20 ],
diff --git a/data/json/itemgroups/mansion.json b/data/json/itemgroups/mansion.json
index 2eeb21becb850..353f90610d01a 100644
--- a/data/json/itemgroups/mansion.json
+++ b/data/json/itemgroups/mansion.json
@@ -57,37 +57,97 @@
"subtype": "collection",
"entries": [
{ "group": "everyday_gear", "prob": 40 },
- { "group": "shoes", "prob": 30, "damage": [ 0, 4 ] },
- { "group": "shirts", "prob": 60, "damage": [ 0, 4 ] },
- { "group": "jackets", "prob": 20, "damage": [ 0, 4 ] },
- { "group": "common_gloves", "prob": 20, "damage": [ 0, 4 ] },
- { "group": "hatstore_hats", "prob": 20, "damage": [ 0, 4 ] },
- { "group": "hatstore_accessories", "prob": 20, "damage": [ 0, 4 ] },
- { "group": "clothing_glasses", "prob": 20, "damage": [ 0, 4 ] },
- { "group": "jewelry_accessories", "prob": 15 },
- {
- "distribution": [
- { "item": "wristwatch", "prob": 15 },
- { "item": "pocketwatch", "prob": 5 },
- { "item": "gold_watch", "prob": 5, "damage": [ 1, 4 ] },
- { "item": "diving_watch", "prob": 10, "damage": [ 1, 4 ] },
- { "item": "sf_watch", "prob": 5, "damage": [ 1, 4 ] }
- ],
- "prob": 20
- },
+ { "group": "coats_unisex", "damage": [ 1, 4 ], "prob": 20 },
+ { "group": "common_gloves", "damage": [ 1, 4 ], "prob": 20 },
+ { "group": "hatstore_hats", "damage": [ 1, 4 ], "prob": 20 },
+ { "group": "scarfs_unisex", "damage": [ 1, 4 ], "prob": 20 },
+ { "group": "accesories_personal_unisex", "prob": 15 },
{
"distribution": [
{
"collection": [
- { "group": "male_underwear", "prob": 90, "damage": [ 0, 4 ] },
- { "group": "pants_male", "prob": 60, "damage": [ 0, 4 ] },
+ {
+ "distribution": [
+ { "group": "male_underwear", "prob": 90, "damage": [ 1, 4 ] },
+ { "item": "union_suit", "prob": 10, "damage": [ 1, 4 ] }
+ ]
+ },
+ {
+ "distribution": [
+ {
+ "collection": [
+ { "group": "pants_male", "prob": 60, "damage": [ 1, 4 ] },
+ { "group": "shirts_unisex", "prob": 60, "damage": [ 1, 4 ] },
+ { "item": "leather_belt", "prob": 30, "damage": [ 1, 4 ] }
+ ]
+ },
+ { "item": "suit", "prob": 5, "damage": [ 1, 4 ] },
+ { "item": "tux", "prob": 5, "damage": [ 1, 4 ] },
+ { "item": "thawb", "prob": 10, "damage": [ 1, 4 ] },
+ { "item": "cassock", "prob": 10, "damage": [ 1, 4 ] },
+ { "item": "haori", "prob": 10, "damage": [ 1, 4 ] }
+ ]
+ },
+ { "group": "neckties", "prob": 15, "damage": [ 1, 4 ] },
+ { "group": "shoes_unisex", "prob": 30, "damage": [ 1, 4 ] },
+ { "group": "socks_unisex", "damage": [ 1, 4 ], "prob": 50 },
+ { "group": "accesories_personal_mens", "prob": 15, "damage": [ 1, 4 ] },
{ "group": "corpse_male" }
]
},
{
"collection": [
- { "group": "female_underwear", "prob": 90, "damage": [ 0, 4 ] },
- { "group": "pants_female", "prob": 60, "damage": [ 0, 4 ] },
+ { "group": "female_underwear", "prob": 90, "damage": [ 1, 4 ] },
+ { "group": "accesories_personal_womens", "prob": 15, "damage": [ 1, 4 ] },
+ {
+ "distribution": [
+ {
+ "collection": [
+ { "group": "pants_female", "prob": 60, "damage": [ 1, 4 ] },
+ { "group": "shoes_unisex", "prob": 30, "damage": [ 1, 4 ] },
+ { "group": "shirts_unisex", "prob": 60, "damage": [ 1, 4 ] },
+ {
+ "distribution": [
+ {
+ "distribution": [ { "item": "stockings", "prob": 50, "damage": [ 1, 4 ] }, { "item": "tights", "prob": 50, "damage": [ 1, 4 ] } ]
+ },
+ { "group": "socks_unisex", "prob": 50, "damage": [ 1, 4 ] }
+ ]
+ }
+ ],
+ "prob": 70
+ },
+ {
+ "collection": [
+ {
+ "distribution": [
+ { "item": "gown", "prob": 10, "damage": [ 1, 4 ] },
+ { "item": "dress", "prob": 70, "damage": [ 1, 4 ] },
+ { "item": "sundress", "prob": 50, "damage": [ 1, 4 ] }
+ ]
+ },
+ { "group": "dress_shoes", "prob": 30, "damage": [ 1, 4 ] },
+ {
+ "distribution": [ { "item": "stockings", "prob": 50, "damage": [ 1, 4 ] }, { "item": "tights", "prob": 50, "damage": [ 1, 4 ] } ]
+ },
+ { "item": "long_glove_white", "prob": 20, "damage": [ 1, 4 ] }
+ ],
+ "prob": 20
+ },
+ {
+ "collection": [
+ { "item": "dress_wedding", "damage": [ 1, 4 ] },
+ { "item": "veil_wedding", "damage": [ 1, 4 ] },
+ { "group": "dress_shoes", "prob": 30, "damage": [ 1, 4 ] },
+ {
+ "distribution": [ { "item": "stockings", "prob": 50, "damage": [ 1, 4 ] }, { "item": "tights", "prob": 50, "damage": [ 1, 4 ] } ]
+ },
+ { "item": "long_glove_white", "prob": 20, "damage": [ 1, 4 ] }
+ ],
+ "prob": 10
+ }
+ ]
+ },
{ "group": "corpse_female" }
]
},
@@ -95,6 +155,9 @@
"collection": [
{ "group": "underwear", "prob": 90, "damage": [ 0, 4 ] },
{ "group": "pants", "prob": 60, "damage": [ 0, 4 ] },
+ { "group": "shoes_unisex", "prob": 30, "damage": [ 1, 4 ] },
+ { "group": "shirts_unisex", "prob": 60, "damage": [ 1, 4 ] },
+ { "group": "socks_unisex", "prob": 50, "damage": [ 1, 4 ] },
{ "group": "corpse_child" }
]
}
@@ -631,6 +694,7 @@
{ "item": "blood", "prob": 10, "container-item": "jar_3l_glass" },
[ "bone_human", 10 ],
[ "bondage_mask", 10 ],
+ [ "zentai", 5 ],
[ "bondage_suit", 5 ]
]
},
@@ -660,6 +724,7 @@
[ "novel_erotic", 10 ],
[ "bondage_suit", 10 ],
[ "bondage_mask", 10 ],
+ [ "zentai", 2 ],
[ "bullwhip", 10 ],
[ "leather_cat_ears", 5 ],
[ "leather_cat_tail", 5 ],
@@ -700,6 +765,12 @@
[ "fencing_jacket", 10 ],
[ "fencing_mask", 10 ],
[ "fencing_pants", 10 ],
+ [ "lame_foil", 10 ],
+ [ "lame_saber", 10 ],
+ [ "plastron_cotton", 10 ],
+ [ "plastron_plastic", 10 ],
+ [ "gauntlet_fencing", 9 ],
+ [ "gauntlet_fencing_l", 1 ],
[ "iceaxe", 4 ]
]
},
@@ -1021,6 +1092,8 @@
[ "tshirt", 60 ],
[ "sneakers", 60 ],
[ "hot_pants", 44 ],
+ [ "leotard", 10 ],
+ [ "unitard", 10 ],
[ "undershirt", 60 ],
[ "hoodie", 50 ],
[ "shorts", 60 ],
@@ -1059,10 +1132,10 @@
"items": [
[ "broom", 40 ],
[ "mop", 40 ],
- [ "ammonia", 24 ],
+ { "item": "ammonia", "prob": 24, "charges-min": 1 },
[ "chem_hydrogen_peroxide", 20 ],
[ "boots_rubber", 20 ],
- [ "bleach", 20 ],
+ { "item": "bleach", "prob": 20, "charges-min": 1 },
{ "item": "material_rocksalt", "prob": 10, "container-item": "bag_canvas" },
[ "vinegar", 10 ],
{ "item": "lye_powder", "prob": 5, "container-item": "bag_canvas_small" },
@@ -1209,6 +1282,8 @@
{ "group": "bed", "prob": 30, "damage": [ 0, 2 ] },
[ "sewing_kit", 30 ],
[ "rag", 30 ],
+ [ "lycra_patch", 15 ],
+ [ "nylon", 10 ],
[ "tailors_kit", 20 ]
]
},
@@ -1301,6 +1376,8 @@
[ "hoodie", 65 ],
[ "under_armor", 20 ],
[ "under_armor_shorts", 20 ],
+ [ "leotard", 5 ],
+ [ "unitard", 5 ],
[ "long_underpants", 40 ],
[ "long_undertop", 40 ],
[ "union_suit", 20 ],
@@ -1346,6 +1423,8 @@
[ "long_underpants", 40 ],
[ "long_undertop", 40 ],
[ "union_suit", 20 ],
+ [ "leotard", 5 ],
+ [ "unitard", 5 ],
[ "corset", 10 ],
[ "halter_top", 50 ],
[ "nanoskirt", 10 ]
diff --git a/data/json/itemgroups/supplies.json b/data/json/itemgroups/supplies.json
index ae996fb4cd618..49a66fe386f9a 100644
--- a/data/json/itemgroups/supplies.json
+++ b/data/json/itemgroups/supplies.json
@@ -75,6 +75,7 @@
{ "item": "brick", "prob": 40, "count": [ 5, 10 ] },
{ "item": "pipe", "prob": 40, "count": [ 5, 10 ] },
{ "item": "wire", "prob": 40, "count": [ 5, 10 ] },
+ { "item": "screen_mesh", "prob": 40, "count": [ 5, 10 ] },
{ "item": "spike", "prob": 40, "count": [ 5, 10 ] },
{ "item": "nail", "prob": 60, "count": [ 5, 20 ] },
{ "item": "hinge", "prob": 60, "count": [ 5, 10 ] }
@@ -152,6 +153,28 @@
[ "pine_bough", 10 ]
]
},
+ {
+ "type": "item_group",
+ "id": "wood_workshop",
+ "//": "for domestic or small trade wood working shops",
+ "subtype": "collection",
+ "items": [
+ {
+ "distribution": [
+ { "item": "2x4", "prob": 100, "count": [ 4, 6 ] },
+ { "item": "wood_beam", "prob": 10, "count": [ 1, 2 ] },
+ { "item": "wood_sheet", "prob": 50, "count": [ 2, 3 ] },
+ { "item": "wood_panel", "prob": 30, "count": [ 2, 3 ] },
+ { "item": "stick_long", "prob": 30, "count": [ 5, 10 ] },
+ { "item": "stick", "prob": 50, "count": [ 1, 7 ] },
+ { "item": "nail", "prob": 100, "count": [ 5, 20 ] }
+ ],
+ "prob": 100
+ },
+ [ "plastic_sheet", 5 ],
+ [ "pine_bough", 3 ]
+ ]
+ },
{
"id": "supplies_hardware",
"type": "item_group",
@@ -179,6 +202,7 @@
[ "frame", 20 ],
[ "hdframe", 10 ],
[ "metal_tank", 10 ],
+ [ "screen_mesh", 10 ],
[ "metal_tank_little", 10 ],
[ "water_faucet", 10 ],
[ "wood_panel", 10 ],
@@ -199,8 +223,8 @@
[ "chem_sulphuric_acid", 30 ],
[ "chem_muriatic_acid", 35 ],
[ "peephole", 25 ],
- [ "chem_chromium_oxide", 5 ],
- [ "chem_zinc_powder", 5 ],
+ { "item": "chem_chromium_oxide", "prob": 5, "charges-min": 100 },
+ { "item": "chem_zinc_powder", "prob": 5, "charges-min": 100 },
[ "denat_alcohol", 5 ],
[ "recharge_station", 10 ],
[ "tarp", 15 ]
@@ -214,8 +238,8 @@
[ "water_clean", 90 ],
[ "salt_water", 20 ],
[ "detergent", 10 ],
- [ "bleach", 10 ],
- [ "ammonia", 10 ],
+ { "item": "bleach", "prob": 10, "charges-min": 10 },
+ { "item": "ammonia", "prob": 10, "charges-min": 10 },
[ "iodine", 10 ],
[ "oxy_powder", 10 ],
[ "ash", 5 ],
@@ -223,7 +247,7 @@
[ "lye_powder", 10 ],
[ "magnesium", 10 ],
[ "charcoal", 10 ],
- [ "chem_sulphur", 10 ],
+ { "item": "chem_sulphur", "prob": 10, "charges-min": 100 },
[ "chunk_sulfur", 5 ],
[ "chem_aluminium_powder", 10 ],
[ "chem_aluminium_sulphate", 10 ],
@@ -234,11 +258,11 @@
[ "chem_acetic_acid", 10 ],
[ "chem_formaldehyde", 10 ],
[ "chem_acetone", 10 ],
- [ "chem_carbide", 10 ],
+ { "item": "chem_carbide", "prob": 10, "charges-min": 100 },
[ "chem_ammonium_nitrate", 10 ],
- [ "chem_chromium_oxide", 10 ],
- [ "chem_zinc_powder", 10 ],
- [ "chem_manganese_dioxide", 10 ],
+ { "item": "chem_chromium_oxide", "prob": 10, "charges-min": 100 },
+ { "item": "chem_zinc_powder", "prob": 10, "charges-min": 100 },
+ { "item": "chem_manganese_dioxide", "prob": 10, "charges-min": 100 },
[ "chem_hydrogen_peroxide_conc", 10 ],
[ "material_rocksalt", 2 ],
[ "ether", 10 ],
diff --git a/data/json/itemgroups/tools.json b/data/json/itemgroups/tools.json
index bf2b00c4012da..fcdc7a39561b4 100644
--- a/data/json/itemgroups/tools.json
+++ b/data/json/itemgroups/tools.json
@@ -112,6 +112,7 @@
[ "rope_30", 20 ],
[ "flint_steel", 10 ],
[ "tinderbox", 10 ],
+ [ "lifestraw", 4 ],
[ "chem_hexamine", 10 ],
[ "esbit_stove", 15 ],
[ "mess_tin", 10 ]
@@ -303,6 +304,7 @@
[ "mess_tin", 5 ],
[ "riding_saddle", 3 ],
[ "saddlebag", 5 ],
+ [ "lifestraw", 3 ],
[ "acetylene_machine", 2 ]
]
},
diff --git a/data/json/items/ammo.json b/data/json/items/ammo.json
index 8054707640638..85b7836910917 100644
--- a/data/json/items/ammo.json
+++ b/data/json/items/ammo.json
@@ -27,7 +27,7 @@
"name": "betavoltaic cell",
"symbol": "=",
"color": "green",
- "description": "Harness the power of radiation in your own home! This looks similar to a D-cell battery, but actually contains folded layers of radioactive material inside. It can produce electricity for several years at a steady voltage... but it's barely enough to power a small LED, and these batteries were worth hundreds of dollars. Mostly they're a good way to brag to your neighbors that you have a nuclear power source in your house.",
+ "description": "Harness the power of radiation in your own home! This looks similar to a D-cell battery, but actually contains folded layers of radioactive material inside. It can produce electricity for several years at a steady voltage… but it's barely enough to power a small LED, and these batteries were worth hundreds of dollars. Mostly they're a good way to brag to your neighbors that you have a nuclear power source in your house.",
"material": [ "steel", "plastic", "lead" ],
"flags": [ "LEAK_DAM", "RADIOACTIVE" ],
"volume": "250 ml",
@@ -100,6 +100,7 @@
"name": "sinew",
"symbol": "=",
"color": "light_red",
+ "looks_like": "thread",
"description": "A tough sinew cut from a corpse, usable as thread.",
"material": "flesh",
"volume": "250 ml",
@@ -116,6 +117,7 @@
"name": "plant fiber",
"symbol": "=",
"color": "light_green",
+ "looks_like": "thread",
"description": "Tough thin fiber, taken from a plant. Can be used as thread.",
"material": "veggy",
"volume": "250 ml",
@@ -132,6 +134,7 @@
"name": "yarn",
"symbol": "=",
"color": "white",
+ "looks_like": "thread",
"description": "Wool yarn, could be used to knit wool clothing.",
"material": "wool",
"volume": "250 ml",
@@ -255,6 +258,28 @@
"container": "metal_tank_little",
"count": 10
},
+ {
+ "type": "AMMO",
+ "id": "rock",
+ "symbol": "*",
+ "color": "light_gray",
+ "name": "rock",
+ "description": "A rock the size of a baseball. Makes a decent melee weapon, and is also good for throwing at enemies.",
+ "category": "spare_parts",
+ "material": "stone",
+ "ammo_type": "rock",
+ "flags": "TRADER_AVOID",
+ "weight": "657 g",
+ "volume": "250 ml",
+ "bashing": 7,
+ "damage": 7,
+ "range": 10,
+ "dispersion": 14,
+ "loudness": 0,
+ "to_hit": -2,
+ "effects": [ "NEVER_MISFIRES", "NON-FOULING", "RECOVER_80" ],
+ "qualities": [ [ "HAMMER", 1 ] ]
+ },
{
"type": "AMMO",
"id": "pebble",
@@ -281,6 +306,7 @@
"name": "clay pellet",
"symbol": "=",
"color": "brown",
+ "looks_like": "pebble",
"description": "A handful of round projectiles made of clay, useful for slings or slingshots.",
"material": "clay",
"volume": "250 ml",
@@ -300,6 +326,7 @@
"name": "marble",
"symbol": "=",
"color": "light_gray",
+ "looks_like": "pebble",
"description": "A handful of glass marbles, useful as ammunition for slings or slingshots.",
"material": "glass",
"volume": "250 ml",
@@ -320,6 +347,7 @@
"name_plural": "bearings",
"symbol": "=",
"color": "dark_gray",
+ "looks_like": "pebble",
"description": "A box of ball bearings, useful as ammunition for slings or slingshots.",
"material": "steel",
"volume": "250 ml",
@@ -340,6 +368,7 @@
"name": "BB",
"symbol": "=",
"color": "light_gray",
+ "looks_like": "pebble",
"description": "A box of small steel balls. They deal virtually no damage.",
"material": "steel",
"volume": "200ml",
@@ -991,7 +1020,7 @@
"name": "spiked home-made rocket",
"symbol": ",",
"color": "dark_gray",
- "description": "A hand-built rocket, consisting of a spike welded onto a pipe that was filled with improvised rocket fuel. Horribly inaccurate, as can be expected of this grade of weapon, but packs a fierce punch... if it hits.",
+ "description": "A hand-built rocket, consisting of a spike welded onto a pipe that was filled with improvised rocket fuel. Horribly inaccurate, as can be expected of this grade of weapon, but packs a fierce punch… if it hits.",
"material": [ "steel", "powder" ],
"volume": "1500 ml",
"weight": "1510 g",
@@ -1063,7 +1092,7 @@
"name": "unfinished calcium carbide",
"symbol": "=",
"color": "white",
- "description": "The incomplete process of converting coal and lime into calcium carbide. Useless in this state/",
+ "description": "The incomplete process of converting coal and lime into calcium carbide. Useless in this state.",
"material": "cac2powder",
"volume": "250 ml",
"weight": "300 g",
diff --git a/data/json/items/ammo/410shot.json b/data/json/items/ammo/410shot.json
index 69fe0ace77cec..d792ec61eaec2 100644
--- a/data/json/items/ammo/410shot.json
+++ b/data/json/items/ammo/410shot.json
@@ -4,7 +4,7 @@
"type": "AMMO",
"name": ".410 000 shot",
"description": "A .410 shell with 5 000 pellets. Good for a hunting or combat load.",
- "weight": "32 g",
+ "weight": "16 g",
"volume": "250 ml",
"price": 175,
"price_postapoc": 3500,
@@ -16,9 +16,9 @@
"ammo_type": "410shot",
"casing": "410shot_hull",
"range": 12,
- "damage": 50,
- "recoil": 2500,
- "loudness": 160,
+ "damage": 30,
+ "recoil": 1350,
+ "loudness": 90,
"effects": [ "COOKOFF", "SHOT" ]
},
{
diff --git a/data/json/items/ammo/50.json b/data/json/items/ammo/50.json
index 5e6822144efe2..e7786f0bfe7fc 100644
--- a/data/json/items/ammo/50.json
+++ b/data/json/items/ammo/50.json
@@ -3,17 +3,17 @@
"id": "50_incendiary",
"copy-from": "50bmg",
"type": "AMMO",
- "name": ".50 BMG tracer",
- "description": "A tracer variant of the powerful .50 BMG sniper round. Tracer rounds to help keep the weapon they are fired from on target at the risk of igniting flammable substances.",
+ "name": ".50 BMG M17 tracer",
+ "description": "A tracer variant of the powerful .50 BMG round. Tracer rounds to help keep the weapon they are fired from on target at the risk of igniting flammable substances.",
"count": 10,
"effects": [ "INCENDIARY" ],
- "proportional": { "dispersion": 0.8 }
+ "dispersion": 310
},
{
"id": "50bmg",
"type": "AMMO",
- "name": ".50 BMG Ball",
- "description": "The .50 BMG is a very powerful rifle round designed for long-range use. Its stupendous accuracy and armor piercing capabilities make it one of the most deadly rounds available, offset only by its drastic recoil and noise.",
+ "name": ".50 BMG M33 Ball",
+ "description": ".50 BMG ammunition with mild steel cored 661gr FMJ bullets. The .50 BMG is a very powerful rifle round designed for anti-aircraft use, later adapted to anti-vehicular and anti-personnel roles. Its stupendous energy and armor piercing capabilities make it one of the most deadly rounds available, offset only by its drastic recoil and noise.",
"weight": "114 g",
"volume": "250 ml",
"price": 2200,
@@ -28,35 +28,59 @@
"range": 110,
"damage": 131,
"pierce": 28,
- "dispersion": 30,
+ "dispersion": 150,
"recoil": 26250,
"effects": [ "COOKOFF", "NEVER_MISFIRES" ]
},
+ {
+ "id": "50match",
+ "copy-from": "50bmg",
+ "type": "AMMO",
+ "name": ".50 BMG Match",
+ "description": ".50 BMG FMJ lead core ammunition manufactured with tighter tolerances for long-range competition shooting or other precision rifle use.",
+ "count": 10,
+ "relative": { "damage": 2, "pierce": -4 },
+ "dispersion": 100
+ },
{
"id": "50ss",
"copy-from": "50bmg",
"type": "AMMO",
- "name": ".50 BMG AP",
+ "name": ".50 BMG M2 AP",
"description": "Variant of the .50 BMG round that uses a core of very dense, hardened tungsten steel. Penetration is increased, but damage is reduced.",
"count": 10,
- "relative": { "damage": -10, "pierce": 20 }
+ "relative": { "damage": -10, "pierce": 20 },
+ "dispersion": 600
+ },
+ {
+ "id": "50_mk211",
+ "copy-from": "50bmg",
+ "type": "AMMO",
+ "name": ".50 BMG Raufoss Mk 211",
+ "price": 60000,
+ "price_postapoc": 120000,
+ "description": "This variant of the .50 BMG round makes the most of the caliber's potential payload delivery: the tip is loaded with an incendiary mix, which ignites on impact, detonating the RDX or PETN charge. This also ignites a secondary zirconium powder incendiary charge that surrounds a tungsten carbide penetrator, both encased by a mild steel cup. Fragments from the cup and burning metallic powder follow the penetrator through armored targets, increasing lethality. These rare, complicated, and expensive rounds are not likely to be manufactured again; use them wisely.",
+ "effects": [ "INCENDIARY", "EXPLOSIVE_RAUFOSS" ],
+ "//": "mk 211 is estimated to be as effective as 20mm, which would have 65kJ energy, or 255 damage. ~181 damage is fair.",
+ "relative": { "damage": 50, "pierce": 20 },
+ "dispersion": 100
},
{
"id": "reloaded_50_incendiary",
"copy-from": "50_incendiary",
"type": "AMMO",
"name": "reloaded .50 BMG tracer",
- "description": "A tracer variant of the powerful .50 BMG sniper round. Tracer rounds to help keep the weapon they are fired from on target at the risk of igniting flammable substances. This one has been hand-reloaded.",
+ "description": "A tracer variant of the powerful .50 BMG round. Tracer rounds to help keep the weapon they are fired from on target at the risk of igniting flammable substances. This one has been hand-reloaded.",
"proportional": { "price": 0.7, "damage": 0.9, "dispersion": 1.1 },
"extend": { "effects": [ "RECYCLED" ] },
"delete": { "effects": [ "NEVER_MISFIRES" ] }
},
{
"id": "reloaded_50bmg",
- "copy-from": "50bmg",
+ "copy-from": "50match",
"type": "AMMO",
- "name": "reloaded .50 BMG Ball",
- "description": "The .50 BMG is a very powerful rifle round designed for long-range use. Its stupendous accuracy and armor piercing capabilities make it one of the most deadly rounds available, offset only by its drastic recoil and noise. This one has been hand-reloaded.",
+ "name": "reloaded .50 BMG Match",
+ "description": ".50 BMG ammunition with lead-cored FMJ bullets. The .50 BMG is a very powerful rifle round designed for anti-aircraft use, later adapted to anti-vehicular and anti-personnel roles. Its stupendous energy and armor piercing capabilities make it one of the most deadly rounds available, offset only by its drastic recoil and noise.",
"proportional": { "price": 0.7, "damage": 0.9, "dispersion": 1.1 },
"extend": { "effects": [ "RECYCLED" ] },
"delete": { "effects": [ "NEVER_MISFIRES" ] }
@@ -66,7 +90,7 @@
"copy-from": "50ss",
"type": "AMMO",
"name": "reloaded .50 BMG AP",
- "description": "Variant of the .50 BMG round that uses a core of very dense, hardened tungsten steel. Penetration is increased, but damage is reduced. This one has been hand-reloaded.",
+ "description": "Variant of the .50 BMG round that uses a core hardened steel. Penetration is increased, but damage is reduced. This one has been hand-reloaded.",
"proportional": { "price": 0.7, "damage": 0.9, "dispersion": 1.1 },
"extend": { "effects": [ "RECYCLED" ] },
"delete": { "effects": [ "NEVER_MISFIRES" ] }
diff --git a/data/json/items/ammo_types.json b/data/json/items/ammo_types.json
index 90fb087e5be76..5cc3e23802b12 100644
--- a/data/json/items/ammo_types.json
+++ b/data/json/items/ammo_types.json
@@ -59,6 +59,12 @@
"name": "pebbles",
"default": "pebble"
},
+ {
+ "type": "ammunition_type",
+ "id": "rock",
+ "name": "rocks",
+ "default": "rock"
+ },
{
"type": "ammunition_type",
"id": "shotcanister",
@@ -563,6 +569,12 @@
"name": "milk",
"default": "milk"
},
+ {
+ "type": "ammunition_type",
+ "id": "milk_raw",
+ "name": "raw milk",
+ "default": "milk_raw"
+ },
{
"type": "ammunition_type",
"id": "paintball",
diff --git a/data/json/items/archery.json b/data/json/items/archery.json
index e1ac39d78e832..99e737071c557 100644
--- a/data/json/items/archery.json
+++ b/data/json/items/archery.json
@@ -25,6 +25,7 @@
"name": "wooden bodkin arrow",
"symbol": "=",
"color": "green",
+ "looks_like": "arrow_fire_hardened_fletched",
"description": "A fletched wooden arrow shaft with a pointed tip. Useful for piercing armor. Stands a decent chance of remaining intact once fired.",
"material": [ "wood", "steel" ],
"volume": "250 ml",
@@ -45,6 +46,7 @@
"name": "simple wooden small game arrow",
"symbol": "=",
"color": "green",
+ "looks_like": "arrow_fire_hardened_fletched",
"description": "A simple fletched wooden arrow shaft with a blunted tip. Useful for hunting small woodland creatures without splattering them all over the ground. Stands a low chance of remaining intact once fired.",
"material": "wood",
"volume": "250 ml",
@@ -64,7 +66,8 @@
"name": "wooden broadhead arrow",
"symbol": "=",
"color": "green",
- "description": "A fletched wooden arrow shaft with a bladed tip. Useful for maximising damage to the target. Stands a decent chance of remaining intact once fired.",
+ "looks_like": "arrow_fire_hardened_fletched",
+ "description": "A fletched wooden arrow shaft with a bladed tip. Useful for maximizing damage to the target. Stands a decent chance of remaining intact once fired.",
"material": [ "wood", "steel" ],
"volume": "250 ml",
"weight": "55 g",
@@ -85,6 +88,7 @@
"name": "simple wooden arrow",
"symbol": "=",
"color": "green",
+ "looks_like": "arrow_fire_hardened_fletched",
"description": "A simple fletched wooden arrow shaft with a fire-hardened and sharpened tip. Stands a low chance of remaining intact once fired.",
"material": "wood",
"volume": "250 ml",
@@ -104,6 +108,7 @@
"name": "wooden small game arrow",
"symbol": "=",
"color": "green",
+ "looks_like": "arrow_fire_hardened_fletched",
"description": "A fletched wooden arrow shaft with a blunt tip. Useful for hunting small woodland creatures without splattering them all over the ground. Stands a decent chance of remaining intact once fired.",
"material": [ "wood", "steel" ],
"volume": "250 ml",
@@ -123,6 +128,7 @@
"name": "makeshift wooden arrow",
"symbol": "=",
"color": "green",
+ "looks_like": "arrow_fire_hardened_fletched",
"description": "A simple fletched wooden arrow shaft with a makeshift arrowhead. Stands a low chance of remaining intact once fired.",
"material": "wood",
"volume": "250 ml",
@@ -143,6 +149,7 @@
"name": "simple metal arrow",
"symbol": "=",
"color": "green",
+ "looks_like": "arrow_fire_hardened_fletched",
"description": "A simple fletched steel arrow shaft with a flattened and sharpened tip. Stands a somewhat low chance of remaining intact once fired.",
"material": "steel",
"volume": "250 ml",
@@ -163,7 +170,8 @@
"name": "aluminum broadhead arrow",
"symbol": "=",
"color": "green",
- "description": "A fletched aluminum arrow shaft with a bladed tip. Useful for maximising damage to the target. Stands a good chance of remaining intact once fired.",
+ "looks_like": "arrow_fire_hardened_fletched",
+ "description": "A fletched aluminum arrow shaft with a bladed tip. Useful for maximizing damage to the target. Stands a good chance of remaining intact once fired.",
"material": [ "aluminum", "steel" ],
"volume": "250 ml",
"weight": "50 g",
@@ -185,6 +193,7 @@
"name": "aluminum field point arrow",
"symbol": "=",
"color": "green",
+ "looks_like": "arrow_fire_hardened_fletched",
"description": "A fletched aluminum arrow shaft with a pointed tip. Useful for piercing armor. Stands a good chance of remaining intact once fired.",
"material": [ "aluminum", "steel" ],
"volume": "250 ml",
@@ -207,6 +216,7 @@
"name": "aluminum small game arrow",
"symbol": "=",
"color": "green",
+ "looks_like": "arrow_fire_hardened_fletched",
"description": "A fletched aluminum arrow shaft with a blunt tip. Useful for hunting small woodland creatures without splattering them all over the ground. Stands a good chance of remaining intact once fired.",
"material": [ "aluminum", "steel" ],
"volume": "250 ml",
@@ -228,6 +238,7 @@
"name": "carbon fiber hunting arrow",
"symbol": "=",
"color": "green",
+ "looks_like": "arrow_fire_hardened_fletched",
"description": "A fletched carbon fiber arrow shaft with an expanding broadhead tip. Deals impressive damage to targets. Stands a good chance of remaining intact once fired.",
"material": [ "kevlar_rigid", "steel" ],
"volume": "250 ml",
@@ -249,6 +260,7 @@
"name": "explosive arrow",
"symbol": "=",
"color": "green",
+ "looks_like": "arrow_fire_hardened_fletched",
"description": "This arrow has a small IED strapped to its tip. Horribly inaccurate, heavy, and bulky, not only does this contraption require expert hands to pull off a shot, it requires one to loose this with a small measure of confidence that the shooter won't be caught in the blast radius.",
"material": [ "steel", "powder" ],
"volume": "500 ml",
@@ -284,6 +296,7 @@
"name": "flaming arrow",
"symbol": "=",
"color": "green",
+ "looks_like": "arrow_fire_hardened_fletched",
"description": "This arrow has a flaming rag wrapped around the shaft near the head. You should shoot it soon before it burns your bow.",
"material": "steel",
"volume": "500 ml",
@@ -299,11 +312,12 @@
},
{
"id": "selfbow",
+ "looks_like": "longbow",
"type": "GUN",
"symbol": "(",
"color": "yellow",
"name": "self bow",
- "description": "A primitive bow fashioned from a single piece of wood, made specifically for the person using it. Weak and wildly inaccurate, it doesn't work that well, unfortunately...",
+ "description": "A primitive bow fashioned from a single piece of wood, made specifically for the person using it. Weak and wildly inaccurate, it doesn't work that well, unfortunately…",
"price": 10000,
"//": "Not exactly something that would have high resale value, I'm afraid.",
"material": "wood",
@@ -325,6 +339,7 @@
},
{
"id": "shortbow",
+ "looks_like": "longbow",
"type": "GUN",
"symbol": "(",
"color": "yellow",
@@ -352,6 +367,7 @@
},
{
"id": "compbow",
+ "looks_like": "longbow",
"type": "GUN",
"symbol": "(",
"color": "yellow",
@@ -426,6 +442,7 @@
},
{
"id": "compositebow",
+ "looks_like": "longbow",
"type": "GUN",
"symbol": "(",
"color": "yellow",
@@ -453,6 +470,7 @@
},
{
"id": "recurbow",
+ "looks_like": "longbow",
"type": "GUN",
"symbol": "(",
"color": "yellow",
@@ -480,6 +498,7 @@
},
{
"id": "reflexbow",
+ "looks_like": "longbow",
"type": "GUN",
"symbol": "(",
"color": "yellow",
@@ -507,6 +526,7 @@
},
{
"id": "hybridbow",
+ "looks_like": "longbow",
"type": "GUN",
"symbol": "(",
"color": "yellow",
@@ -534,6 +554,7 @@
},
{
"id": "longbow",
+ "//": "Tileset whitelist for bows",
"type": "GUN",
"symbol": "(",
"color": "yellow",
@@ -579,6 +600,7 @@
},
{
"id": "compgreatbow",
+ "looks_like": "longbow",
"type": "GUN",
"symbol": "(",
"color": "yellow",
@@ -605,6 +627,7 @@
},
{
"id": "reflexrecurvebow",
+ "looks_like": "longbow",
"type": "GUN",
"symbol": "(",
"color": "yellow",
diff --git a/data/json/items/armor.json b/data/json/items/armor.json
index 16e1b3e04df88..a3f4f28ea42da 100644
--- a/data/json/items/armor.json
+++ b/data/json/items/armor.json
@@ -9,6 +9,7 @@
"price": 17900,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "cowboy_hat",
"color": "brown",
"covers": [ "HEAD" ],
"coverage": 50,
@@ -32,6 +33,7 @@
"bashing": 8,
"material": [ "wood" ],
"symbol": "[",
+ "looks_like": "arm_splint",
"color": "brown",
"covers": [ "ARMS" ],
"coverage": 75,
@@ -55,6 +57,7 @@
"bashing": 8,
"material": [ "wood" ],
"symbol": "[",
+ "looks_like": "leg_splint",
"color": "brown",
"covers": [ "LEGS" ],
"coverage": 75,
@@ -74,6 +77,7 @@
"price": 140000,
"material": [ "kevlar", "plastic" ],
"symbol": "[",
+ "looks_like": "hazmat_suit",
"color": "light_red",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 100,
@@ -95,6 +99,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "towel",
"color": "light_red",
"covers": [ "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 60,
@@ -115,6 +120,7 @@
"to_hit": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "vest_leather",
"color": "brown",
"covers": [ "TORSO", "LEGS" ],
"coverage": 70,
@@ -135,6 +141,7 @@
"price": 20000,
"material": [ "wood", "cotton" ],
"symbol": "[",
+ "looks_like": "armguard_hard",
"color": "white",
"covers": [ "ARM_EITHER" ],
"coverage": 75,
@@ -149,6 +156,7 @@
"name": "arm splint XL",
"description": "A tool to help set bones and hold them in place. It is specifically designed to fit Huge survivors.",
"copy-from": "arm_splint",
+ "looks_like": "arm_splint",
"weight": "600 g",
"volume": "2 L",
"price": 25000,
@@ -166,6 +174,7 @@
"price": 1000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "armguard_larmor",
"color": "light_gray",
"covers": [ "ARMS" ],
"coverage": 80,
@@ -187,6 +196,7 @@
"to_hit": 1,
"material": [ "chitin" ],
"symbol": "[",
+ "looks_like": "armguard_hard",
"color": "green",
"covers": [ "ARMS" ],
"coverage": 90,
@@ -199,6 +209,7 @@
{
"id": "armguard_acidchitin",
"copy-from": "armguard_chitin",
+ "looks_like": "armguard_chitin",
"type": "ARMOR",
"name": "pair of biosilicified chitin arm guards",
"name_plural": "pairs of biosilicified chitin arm guards",
@@ -242,6 +253,7 @@
"to_hit": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "arm_warmers",
"color": "brown",
"covers": [ "ARMS" ],
"coverage": 90,
@@ -263,6 +275,7 @@
"to_hit": -1,
"material": [ "steel", "leather" ],
"symbol": "[",
+ "looks_like": "armguard_metal",
"color": "light_gray",
"covers": [ "ARMS" ],
"coverage": 95,
@@ -285,6 +298,7 @@
"to_hit": 1,
"material": [ "iron" ],
"symbol": "[",
+ "looks_like": "armguard_hard",
"color": "light_gray",
"covers": [ "ARMS" ],
"coverage": 80,
@@ -306,6 +320,7 @@
"to_hit": 1,
"material": [ "paper" ],
"symbol": "[",
+ "looks_like": "armguard_larmor",
"color": "blue",
"covers": [ "ARMS" ],
"coverage": 80,
@@ -329,6 +344,7 @@
"cutting": 1,
"material": [ "steel", "iron" ],
"symbol": "[",
+ "looks_like": "armguard_metal",
"color": "light_gray",
"covers": [ "ARMS" ],
"coverage": 80,
@@ -350,6 +366,7 @@
"to_hit": 1,
"material": [ "neoprene", "cotton" ],
"symbol": "[",
+ "looks_like": "arm_warmers",
"color": "light_red",
"covers": [ "ARMS" ],
"coverage": 70,
@@ -372,6 +389,7 @@
"bashing": 2,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "armor_larmor",
"color": "brown",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 90,
@@ -394,6 +412,7 @@
"bashing": 2,
"material": [ "chitin" ],
"symbol": "[",
+ "looks_like": "armor_larmor",
"color": "green",
"covers": [ "LEGS", "TORSO" ],
"coverage": 90,
@@ -405,6 +424,7 @@
{
"id": "armor_acidchitin",
"copy-from": "armor_chitin",
+ "looks_like": "armor_chitin",
"type": "ARMOR",
"name": "biosilicified chitin armor",
"description": "Leg and body armor crafted from the carefully cleaned and pruned biosilicified exoskeletons of acidic ants. Acid-resistant and very durable.",
@@ -425,6 +445,7 @@
"bashing": 2,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "armor_larmor",
"color": "brown",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 90,
@@ -437,17 +458,16 @@
{
"id": "armor_lamellar",
"type": "ARMOR",
- "category": "armor",
"name": "lamellar cuirass",
"name_plural": "lamellar cuirasses",
"description": "A cuirass made of multiple pieces of tough leather, laced together for durable yet flexible protection.",
"weight": "2108 g",
"volume": "9250 ml",
"price": 26000,
- "to_hit": -5,
- "bashing": 2,
"material": [ "leather", "cotton" ],
"symbol": "[",
+ "looks_like": "vest_leather",
+ "copy-from": "armor_chitin",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 80,
@@ -469,6 +489,7 @@
"bashing": 2,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "touring_suit",
"color": "brown",
"covers": [ "LEGS", "TORSO" ],
"coverage": 90,
@@ -491,6 +512,7 @@
"bashing": 8,
"material": [ "steel", "leather" ],
"symbol": "[",
+ "looks_like": "armor_larmor",
"color": "light_gray",
"covers": [ "TORSO", "LEGS", "ARMS" ],
"coverage": 95,
@@ -512,6 +534,7 @@
"bashing": 6,
"material": [ "iron", "leather" ],
"symbol": "[",
+ "looks_like": "armor_lamellar",
"color": "light_gray",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -531,6 +554,7 @@
"to_hit": -3,
"material": [ "cotton", "leather" ],
"symbol": "[",
+ "looks_like": "touring_suit",
"color": "light_red",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 95,
@@ -578,6 +602,7 @@
"symbol": "[",
"color": "brown",
"covers": [ "LEGS", "TORSO", "ARMS" ],
+ "looks_like": "armor_larmor",
"coverage": 90,
"encumbrance": 24,
"storage": "1500 ml",
@@ -599,6 +624,7 @@
"bashing": 8,
"material": [ "steel", "leather" ],
"symbol": "[",
+ "looks_like": "armor_lightplate",
"color": "light_gray",
"covers": [ "TORSO", "LEGS", "ARMS" ],
"coverage": 90,
@@ -613,7 +639,6 @@
"category": "armor",
"name": "riot armor",
"description": "Black armor used by riot police officers. The padded layers and hard plastic shoulder guards offer good protection without much encumbrance. The word POLICE is emblazoned across the front.",
- "looks_like": "kevlar",
"weight": "4000 g",
"volume": "7500 ml",
"price": 35000,
@@ -621,6 +646,7 @@
"bashing": 6,
"material": [ "plastic", "cotton" ],
"symbol": "[",
+ "looks_like": "kevlar",
"color": "light_gray",
"covers": [ "TORSO", "ARMS" ],
"coverage": 70,
@@ -641,6 +667,7 @@
"bashing": 8,
"material": [ "iron", "leather" ],
"symbol": "[",
+ "looks_like": "armor_lightplate",
"color": "dark_gray",
"covers": [ "TORSO", "LEGS", "ARMS", "HANDS" ],
"coverage": 85,
@@ -660,6 +687,7 @@
"to_hit": -3,
"material": [ "kevlar", "cotton" ],
"symbol": "[",
+ "looks_like": "armor_nomad",
"color": "green",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 100,
@@ -684,6 +712,7 @@
"cutting": 8,
"material": [ "steel", "iron" ],
"symbol": "[",
+ "looks_like": "armor_lightplate",
"color": "light_gray",
"covers": [ "TORSO", "LEGS", "ARMS" ],
"coverage": 80,
@@ -702,6 +731,7 @@
"price": 1500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "tank_top",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 60,
@@ -720,6 +750,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "shorts",
"color": "cyan",
"covers": [ "LEGS" ],
"coverage": 50,
@@ -738,6 +769,7 @@
"price": 3500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hat_cotton",
"color": "dark_gray",
"covers": [ "HEAD", "MOUTH" ],
"coverage": 95,
@@ -757,6 +789,7 @@
"bashing": 4,
"material": [ "leather", "wood" ],
"symbol": "[",
+ "looks_like": "sheath",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 10,
@@ -783,6 +816,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "scarf",
"color": "blue",
"covers": [ "MOUTH" ],
"coverage": 95,
@@ -816,6 +850,7 @@
"bashing": 1,
"material": [ "plastic" ],
"symbol": ")",
+ "looks_like": "plastic_shopping_bag",
"color": "light_gray",
"covers": [ "ARMS", "HANDS" ],
"coverage": 5,
@@ -836,6 +871,7 @@
"to_hit": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "gloves_leather",
"color": "white",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -855,6 +891,7 @@
"price": 4500,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "cowboy_hat",
"color": "white",
"covers": [ "HEAD", "EYES", "MOUTH" ],
"coverage": 100,
@@ -875,6 +912,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hazmat_suit",
"color": "white",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 100,
@@ -895,6 +933,7 @@
"price": 1200,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hat_cotton",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 40,
@@ -912,6 +951,7 @@
"price": 1500,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "beret",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 40,
@@ -929,6 +969,7 @@
"price": 1000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "panties",
"color": "light_red",
"covers": [ "LEGS" ],
"coverage": 15,
@@ -946,6 +987,7 @@
"price": 1800,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "bra",
"color": "light_red",
"covers": [ "TORSO" ],
"coverage": 10,
@@ -962,6 +1004,7 @@
"price": 4900,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "bikini_top",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 10,
@@ -979,6 +1022,7 @@
"price": 3500,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "bikini_top",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 10,
@@ -998,6 +1042,7 @@
"bashing": 4,
"material": [ "cotton", "wood" ],
"symbol": "[",
+ "looks_like": "plastic_shopping_bag",
"color": "light_gray",
"covers": [ "ARM_EITHER", "HAND_EITHER" ],
"coverage": 4,
@@ -1017,6 +1062,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "towel",
"color": "blue",
"covers": [ "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 100,
@@ -1036,6 +1082,7 @@
"price": 12000,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "jacket_light",
"color": "dark_gray",
"covers": [ "TORSO", "ARMS" ],
"coverage": 85,
@@ -1056,6 +1103,7 @@
"price": 600,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "scarf",
"color": "dark_gray",
"covers": [ "EYES" ],
"coverage": 95,
@@ -1076,6 +1124,7 @@
"to_hit": -3,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "balclava",
"color": "dark_gray",
"covers": [ "HEAD", "EYES", "MOUTH" ],
"coverage": 100,
@@ -1098,6 +1147,7 @@
"name": "bondage mask (zipped)",
"name_plural": "bondage masks (zipped)",
"description": "A tight mask made of black leather. The eyes and mouth have been zipped closed.",
+ "looks_like": "bondage_mask",
"flags": [ "VARSIZE", "BLIND" ],
"use_action": {
"menu_text": "Unzip",
@@ -1117,6 +1167,7 @@
"to_hit": -3,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "armor_larmor",
"color": "dark_gray",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 75,
@@ -1138,6 +1189,7 @@
"to_hit": -1,
"material": [ "paper" ],
"symbol": "O",
+ "looks_like": "armor_scrapsuit",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 80,
@@ -1157,6 +1209,7 @@
"to_hit": -1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "sheath",
"color": "brown",
"covers": [ "FOOT_EITHER" ],
"coverage": 5,
@@ -1183,6 +1236,7 @@
"to_hit": -1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "bscabbard",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 5,
@@ -1209,6 +1263,7 @@
"price": 4500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hat_cotton",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 50,
@@ -1229,6 +1284,7 @@
"price": 1000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "shorts",
"color": "light_gray",
"covers": [ "LEGS" ],
"coverage": 20,
@@ -1247,6 +1303,7 @@
"price": 1000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "boxer_briefs",
"color": "light_gray",
"covers": [ "LEGS" ],
"coverage": 25,
@@ -1266,6 +1323,7 @@
"to_hit": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "gloves_leather",
"color": "red",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -1286,6 +1344,7 @@
"price": 1000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "boxer_briefs",
"color": "light_gray",
"covers": [ "LEGS" ],
"coverage": 25,
@@ -1303,6 +1362,7 @@
"price": 1000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "tank_top",
"color": "white",
"covers": [ "TORSO" ],
"coverage": 15,
@@ -1322,6 +1382,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "pants",
"color": "brown",
"covers": [ "LEGS" ],
"coverage": 80,
@@ -1342,6 +1403,7 @@
"bashing": 5,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "plastic_shopping_bag",
"color": "light_gray",
"covers": [ "ARM_EITHER", "HAND_EITHER" ],
"coverage": 10,
@@ -1354,6 +1416,7 @@
"id": "hk_briefcase",
"type": "ARMOR",
"copy-from": "briefcase",
+ "looks_like": "briefcase",
"name": "H&K operational briefcase (empty)",
"description": "This is a plain, hard-sided black briefcase with a trigger in the handle and a concealed hole in the side. Squeezing the trigger would currently do nothing, as it is empty. Don't forget to put a suitable MP5 back inside before you try to pay any ransom fees with lead.",
"storage": "14500 ml",
@@ -1371,6 +1434,7 @@
"price": 1000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "boxer-briefs",
"color": "white",
"covers": [ "LEGS" ],
"coverage": 15,
@@ -1389,6 +1453,7 @@
"bashing": 4,
"material": [ "leather", "wood" ],
"symbol": "[",
+ "looks_like": "baldric",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 10,
@@ -1416,6 +1481,7 @@
"to_hit": -1,
"material": [ "nomex", "kevlar" ],
"symbol": "[",
+ "looks_like": "coat_winter",
"color": "yellow",
"covers": [ "TORSO", "ARMS" ],
"coverage": 100,
@@ -1440,6 +1506,7 @@
"to_hit": -1,
"material": [ "nomex", "kevlar" ],
"symbol": "[",
+ "looks_like": "pants_cargo",
"color": "dark_gray",
"covers": [ "LEGS" ],
"coverage": 100,
@@ -1461,6 +1528,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "tank_top",
"color": "light_blue",
"covers": [ "TORSO" ],
"coverage": 45,
@@ -1478,6 +1546,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "]",
+ "looks_like": "cloak",
"color": "pink",
"covers": [ "TORSO" ],
"coverage": 50,
@@ -1498,6 +1567,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "robe",
"color": "dark_gray",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 90,
@@ -1519,6 +1589,7 @@
"to_hit": -1,
"material": [ "iron", "cotton" ],
"symbol": "[",
+ "looks_like": "armguard_metal",
"color": "light_red",
"covers": [ "ARMS" ],
"coverage": 95,
@@ -1538,6 +1609,7 @@
"to_hit": -1,
"material": [ "iron", "cotton" ],
"symbol": "[",
+ "looks_like": "balclava",
"color": "light_red",
"covers": [ "HEAD" ],
"coverage": 95,
@@ -1558,6 +1630,7 @@
"to_hit": -1,
"material": [ "iron", "cotton" ],
"symbol": "[",
+ "looks_like": "legguard_hard",
"color": "light_red",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -1577,6 +1650,7 @@
"to_hit": -1,
"material": [ "iron", "cotton" ],
"symbol": "[",
+ "looks_like": "armor_blarmor",
"color": "light_red",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 95,
@@ -1597,6 +1671,7 @@
"to_hit": -1,
"material": [ "iron", "cotton" ],
"symbol": "[",
+ "looks_like": "touring_suit",
"color": "light_red",
"covers": [ "TORSO", "HEAD", "ARMS", "LEGS" ],
"coverage": 95,
@@ -1617,6 +1692,7 @@
"to_hit": -1,
"material": [ "iron", "cotton" ],
"symbol": "[",
+ "looks_like": "vest_leather",
"color": "light_red",
"covers": [ "TORSO" ],
"coverage": 95,
@@ -1624,6 +1700,65 @@
"material_thickness": 4,
"flags": [ "VARSIZE", "STURDY" ]
},
+ {
+ "id": "chainmail_feet",
+ "type": "ARMOR",
+ "category": "armor",
+ "name": "pair of chainmail chausses",
+ "name_plural": "pairs of chainmail chausses",
+ "description": "Customized chainmail chausses that cover the feet, like booties made of chainmail.",
+ "weight": "2006 g",
+ "volume": "500 ml",
+ "price": 5012,
+ "to_hit": -1,
+ "material": [ "iron", "cotton" ],
+ "symbol": "[",
+ "color": "light_red",
+ "covers": [ "FEET" ],
+ "coverage": 100,
+ "encumbrance": 20,
+ "material_thickness": 4,
+ "flags": [ "VARSIZE", "STURDY" ]
+ },
+ {
+ "id": "chainmail_hands",
+ "type": "ARMOR",
+ "category": "armor",
+ "name": "pair of chainmail gloves",
+ "name_plural": "pairs of chainmail gloves",
+ "description": "Customized chainmail gloves. They fully enclose the fingers and provide excellent protection, but are somewhat cumbersome.",
+ "weight": "2006 g",
+ "volume": "500 ml",
+ "price": 5012,
+ "to_hit": -1,
+ "material": [ "iron", "cotton" ],
+ "symbol": "[",
+ "color": "light_red",
+ "covers": [ "HANDS" ],
+ "coverage": 100,
+ "encumbrance": 30,
+ "material_thickness": 4,
+ "flags": [ "VARSIZE", "STURDY" ]
+ },
+ {
+ "id": "chainmail_suit_faraday",
+ "type": "ARMOR",
+ "category": "armor",
+ "name": "faraday chainmail suit",
+ "description": "A fully customized chainmail suit that can be worn over your normal clothing. The suit is conductively interconnected, protecting against electricity.",
+ "weight": "23335 g",
+ "volume": "3500 ml",
+ "price": 35000,
+ "to_hit": -1,
+ "material": [ "iron", "cotton" ],
+ "symbol": "[",
+ "color": "light_red",
+ "covers": [ "TORSO", "HEAD", "ARMS", "HANDS", "LEGS", "FEET" ],
+ "coverage": 100,
+ "encumbrance": 30,
+ "material_thickness": 4,
+ "flags": [ "VARSIZE", "STURDY", "HELMET_COMPAT", "ELECTRIC_IMMUNE", "OUTER" ]
+ },
{
"id": "chaps_leather",
"type": "ARMOR",
@@ -1636,6 +1771,7 @@
"to_hit": -1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "pants_leather",
"color": "dark_gray",
"covers": [ "LEGS" ],
"coverage": 65,
@@ -1656,6 +1792,7 @@
"to_hit": -2,
"material": [ "plastic", "neoprene" ],
"symbol": "H",
+ "looks_like": "cuirass_lightplate",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 90,
@@ -1675,6 +1812,7 @@
"price": 500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "tshirt",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 25,
@@ -1692,6 +1830,7 @@
"price": 700,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "chestwrap_leather",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 25,
@@ -1710,6 +1849,7 @@
"price": 525,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "chestwrap",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 25,
@@ -1728,6 +1868,7 @@
"price": 500,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "chestwrap",
"color": "blue",
"covers": [ "TORSO" ],
"coverage": 25,
@@ -1746,6 +1887,7 @@
"price": 7700,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "jumpsuit",
"color": "white",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 100,
@@ -1766,6 +1908,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "coat_rain",
"color": "green",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 65,
@@ -1786,6 +1929,7 @@
"to_hit": -1,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "cloak_leather",
"color": "brown",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 65,
@@ -1806,6 +1950,7 @@
"to_hit": -1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "cloak",
"color": "dark_gray",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 65,
@@ -1826,6 +1971,7 @@
"to_hit": -1,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "cloak",
"color": "blue",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 65,
@@ -1846,6 +1992,7 @@
"to_hit": -3,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "touring_suit",
"color": "pink",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 90,
@@ -1855,6 +2002,39 @@
"material_thickness": 2,
"flags": [ "VARSIZE", "FANCY", "POCKETS", "OUTER" ]
},
+ {
+ "id": "clown_wig",
+ "type": "ARMOR",
+ "name": "clown wig",
+ "description": "A colorful and ridiculous wig fit for a clown.",
+ "weight": "125 g",
+ "volume": "1 L",
+ "price": 2500,
+ "to_hit": -3,
+ "material": [ "cotton" ],
+ "symbol": "[",
+ "color": "pink",
+ "covers": [ "HEAD" ],
+ "coverage": 60,
+ "encumbrance": 5,
+ "warmth": 20,
+ "material_thickness": 1,
+ "environmental_protection": 1,
+ "flags": [ "VARSIZE", "FANCY" ]
+ },
+ {
+ "id": "clown_nose",
+ "type": "ARMOR",
+ "name": "clown nose",
+ "description": "A red latex nose often seen being worn by clowns.",
+ "weight": "150 g",
+ "volume": "100 ml",
+ "price": 800,
+ "material": [ "plastic" ],
+ "symbol": ".",
+ "color": "red",
+ "flags": [ "FANCY" ]
+ },
{
"id": "coat_fur",
"type": "ARMOR",
@@ -1866,6 +2046,7 @@
"to_hit": -5,
"material": [ "fur", "cotton" ],
"symbol": "[",
+ "looks_like": "coat_winter",
"color": "brown",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -1880,6 +2061,7 @@
"id": "coat_faux_fur",
"type": "ARMOR",
"copy-from": "coat_fur",
+ "looks_like": "coat_fur",
"name": "faux fur coat",
"description": "A garishly-colored faux fur coat with a couple small pockets. Although not as warm as the natural fur, it gives you some of that unique flair.",
"material": [ "faux_fur", "cotton" ],
@@ -1899,6 +2081,7 @@
"to_hit": -5,
"material": [ "fur", "cotton" ],
"symbol": "[",
+ "looks_like": "coat_fur",
"color": "brown",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -1920,6 +2103,7 @@
"to_hit": -2,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "coat_winter",
"color": "white",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -1939,6 +2123,7 @@
"price": 7900,
"material": [ "plastic", "cotton" ],
"symbol": "[",
+ "looks_like": "coat_winter",
"color": "yellow",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -1959,6 +2144,7 @@
"price": 13000,
"material": [ "gutskin" ],
"symbol": "[",
+ "looks_like": "coat_rain",
"color": "light_gray",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -1979,6 +2165,7 @@
"to_hit": -2,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "coat_rain",
"color": "light_red",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -2000,6 +2187,7 @@
"to_hit": -3,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "vest_leather",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 75,
@@ -2019,6 +2207,7 @@
"price": 9500,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "bowlhat",
"color": "brown",
"covers": [ "HEAD" ],
"coverage": 50,
@@ -2039,6 +2228,7 @@
"to_hit": -2,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "scarf",
"color": "white",
"covers": [ "MOUTH" ],
"coverage": 70,
@@ -2057,6 +2247,7 @@
"price": 30000,
"material": [ "gold" ],
"symbol": "[",
+ "looks_like": "hat_cotton",
"color": "yellow",
"covers": [ "HEAD" ],
"coverage": 30,
@@ -2074,6 +2265,7 @@
"price": 30000,
"material": [ "gold" ],
"symbol": "[",
+ "looks_like": "crown_golden",
"color": "yellow",
"covers": [ "HEAD" ],
"coverage": 30,
@@ -2094,6 +2286,7 @@
"to_hit": -1,
"material": [ "steel", "leather" ],
"symbol": "[",
+ "looks_like": "chestguard_hard",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 95,
@@ -2117,6 +2310,7 @@
"cutting": 3,
"material": [ "steel", "iron" ],
"symbol": "[",
+ "looks_like": "cuirass_lightplate",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 80,
@@ -2131,6 +2325,7 @@
"name": "daypack",
"description": "An ultralight nylon backpack intended for one-day hiking trips. Waterproof, slim, and spacious.",
"symbol": "[",
+ "looks_like": "backpack",
"color": "red",
"weight": 411,
"volume": "2 L",
@@ -2146,8 +2341,7 @@
"max_encumbrance": 18,
"storage": 96,
"warmth": 5,
- "flags": [ "BELTED", "OVERSIZE", "STURDY" ],
- "looks_like": "backpack"
+ "flags": [ "BELTED", "OVERSIZE", "STURDY" ]
},
{
"id": "dinosuit",
@@ -2160,6 +2354,7 @@
"to_hit": -3,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "wolfsuit",
"color": "light_green",
"covers": [ "LEGS", "TORSO", "ARMS", "HANDS", "HEAD", "FEET", "MOUTH", "EYES" ],
"coverage": 100,
@@ -2181,6 +2376,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "blanket",
"color": "blue",
"covers": [ "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 100,
@@ -2203,6 +2399,7 @@
"bashing": 6,
"material": [ "lightceramic", "kevlar" ],
"symbol": "[",
+ "looks_like": "kevlar",
"color": "light_red",
"covers": [ "TORSO" ],
"coverage": 95,
@@ -2224,6 +2421,7 @@
"bashing": 6,
"material": [ "kevlar" ],
"symbol": "[",
+ "looks_like": "dragonskin",
"color": "light_red",
"covers": [ "TORSO" ],
"coverage": 25,
@@ -2244,6 +2442,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "robe",
"color": "pink",
"covers": [ "LEGS", "TORSO" ],
"coverage": 85,
@@ -2262,6 +2461,7 @@
"price": 1500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "longshirt",
"color": "white",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -2271,6 +2471,25 @@
"material_thickness": 1,
"flags": [ "VARSIZE", "FANCY" ]
},
+ {
+ "id": "drinking_hat",
+ "type": "ARMOR",
+ "category": "clothing",
+ "symbol": "[",
+ "color": "blue",
+ "name": "drinking hat",
+ "description": "This is an improvised harness that can be worn over other headgear or bare head, made from two small liquid containers, a rubber hose, a bundle of steel wire, and some cordage. A convenient and simple device for hands-free drinking, though the liquid inside would spill if you put it into your backpack.",
+ "price": 1000,
+ "material": [ "cotton", "aluminum" ],
+ "weight": "733 g",
+ "volume": "1500 ml",
+ "encumbrance": 5,
+ "covers": [ "HEAD" ],
+ "coverage": 15,
+ "material_thickness": 1,
+ "container_data": { "contains": "500 ml", "watertight": true },
+ "flags": [ "OVERSIZE", "BELTED", "ALLOWS_NATURAL_ATTACKS", "WATER_FRIENDLY" ]
+ },
{
"id": "dress_wedding",
"type": "ARMOR",
@@ -2283,6 +2502,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "dress",
"color": "white",
"covers": [ "LEGS", "TORSO" ],
"coverage": 90,
@@ -2304,6 +2524,7 @@
"bashing": 1,
"material": [ "kevlar", "plastic" ],
"symbol": "[",
+ "looks_like": "holster",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 10,
@@ -2323,6 +2544,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "trenchcoat",
"color": "dark_gray",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 90,
@@ -2344,6 +2566,7 @@
"to_hit": -1,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "duster_leather",
"color": "brown",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 90,
@@ -2358,6 +2581,7 @@
"id": "duster_faux_fur",
"type": "ARMOR",
"copy-from": "duster_fur",
+ "looks_like": "duster_fur",
"name": "faux fur duster",
"description": "A thick faux fur duster, falling below your knees. Has many pockets for storing things.",
"material": [ "faux_fur", "cotton" ],
@@ -2376,6 +2600,7 @@
"to_hit": -1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "duster",
"color": "brown",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 90,
@@ -2398,6 +2623,7 @@
"to_hit": -1,
"material": [ "cotton", "kevlar" ],
"symbol": "[",
+ "looks_like": "duster_leather",
"color": "brown",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 85,
@@ -2434,6 +2660,7 @@
"price": 7000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "bowlhat",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 60,
@@ -2454,6 +2681,7 @@
"to_hit": 1,
"material": [ "plastic", "cotton" ],
"symbol": "[",
+ "looks_like": "armguards_hard",
"color": "dark_gray",
"covers": [ "ARMS" ],
"coverage": 30,
@@ -2472,6 +2700,7 @@
"to_hit": -2,
"material": [ "glass", "plastic" ],
"symbol": "[",
+ "looks_like": "sunglasses",
"color": "dark_gray",
"covers": [ "EYES" ],
"coverage": 95,
@@ -2493,6 +2722,7 @@
"bashing": 1,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "holster",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 10,
@@ -2501,6 +2731,41 @@
"material_thickness": 1,
"flags": [ "WAIST", "WATER_FRIENDLY" ]
},
+ {
+ "id": "plastron_cotton",
+ "type": "ARMOR",
+ "name": "underarm protector",
+ "description": "A sturdy cotton plastron that protects much of the torso, the dominant shoulder, and underarm while fencing.",
+ "weight": "110 g",
+ "volume": "500 ml",
+ "price": 1600,
+ "material": [ "cotton" ],
+ "symbol": "[",
+ "color": "white",
+ "covers": [ "TORSO" ],
+ "coverage": 65,
+ "warmth": 5,
+ "material_thickness": 3,
+ "flags": [ "SKINTIGHT" ]
+ },
+ {
+ "id": "plastron_plastic",
+ "type": "ARMOR",
+ "name": "plastic chest protector",
+ "description": "A rigid plastic plastron with molded cups to be worn by female fencers for protection while fencing.",
+ "weight": "194 g",
+ "volume": "850 ml",
+ "price": 3000,
+ "material": [ "plastic" ],
+ "symbol": "[",
+ "color": "white",
+ "covers": [ "TORSO" ],
+ "coverage": 35,
+ "encumbrance": 2,
+ "warmth": 5,
+ "material_thickness": 3,
+ "flags": [ "SKINTIGHT" ]
+ },
{
"id": "fencing_jacket",
"type": "ARMOR",
@@ -2510,15 +2775,52 @@
"weight": "800 g",
"volume": "2500 ml",
"price": 3000,
- "material": [ "cotton", "kevlar" ],
+ "material": [ "cotton", "nylon" ],
"symbol": "[",
+ "looks_like": "coat_lab",
"color": "white",
"covers": [ "TORSO", "ARMS" ],
"coverage": 100,
"encumbrance": 5,
"warmth": 25,
- "material_thickness": 2,
- "flags": [ "OUTER" ]
+ "material_thickness": 3,
+ "flags": [ "STURDY" ]
+ },
+ {
+ "id": "lame_foil",
+ "type": "ARMOR",
+ "name": "lamé (foil)",
+ "description": "A thin, lightweight conductive vest with the zipper on the back used by fencers for electronic scoring. Its outer layer is a woven mix of sturdy cotton and stainless steel strands.",
+ "weight": "843 g",
+ "volume": "2500 ml",
+ "price": 3000,
+ "material": [ "cotton", "budget_steel" ],
+ "symbol": "[",
+ "color": "light_gray",
+ "covers": [ "TORSO" ],
+ "coverage": 100,
+ "encumbrance": 8,
+ "warmth": 10,
+ "material_thickness": 1,
+ "flags": [ "VARSIZE", "OUTER" ]
+ },
+ {
+ "id": "lame_saber",
+ "type": "ARMOR",
+ "name": "lamé (saber)",
+ "description": "A thin, lightweight conductive jacket used by fencers for electronic scoring. Its outer layer is a woven mix of sturdy cotton and stainless steel strands.",
+ "weight": "1043 g",
+ "volume": "2500 ml",
+ "price": 8500,
+ "material": [ "cotton", "budget_steel" ],
+ "symbol": "[",
+ "color": "light_gray",
+ "covers": [ "TORSO", "ARMS" ],
+ "coverage": 100,
+ "encumbrance": 8,
+ "warmth": 10,
+ "material_thickness": 1,
+ "flags": [ "VARSIZE", "OUTER" ]
},
{
"id": "fencing_mask",
@@ -2530,6 +2832,7 @@
"price": 3500,
"material": [ "cotton", "steel" ],
"symbol": "[",
+ "looks_like": "balclava",
"color": "dark_gray",
"covers": [ "HEAD", "MOUTH", "EYES" ],
"coverage": 90,
@@ -2548,6 +2851,7 @@
"price": 2500,
"material": [ "cotton", "kevlar" ],
"symbol": "[",
+ "looks_like": "pants",
"color": "white",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -2557,6 +2861,46 @@
"material_thickness": 2,
"flags": [ "VARSIZE" ]
},
+ {
+ "id": "gauntlet_fencing",
+ "type": "ARMOR",
+ "name": "fencing gauntlet",
+ "description": "A single suede glove with sturdy cotton wrists, padded backs and well-fitting fingers.",
+ "weight": "175 g",
+ "volume": "250 ml",
+ "price": 6400,
+ "to_hit": -2,
+ "material": [ "leather", "cotton" ],
+ "symbol": "[",
+ "color": "white",
+ "covers": [ "HAND_R" ],
+ "encumbrance": 4,
+ "coverage": 100,
+ "warmth": 15,
+ "material_thickness": 3,
+ "environmental_protection": 1,
+ "flags": [ "STURDY" ]
+ },
+ {
+ "id": "gauntlet_fencing_l",
+ "type": "ARMOR",
+ "name": "fencing gauntlet (left)",
+ "description": "A single suede glove with sturdy cotton wrists, padded backs and well-fitting fingers. This one is left-handed.",
+ "weight": "175 g",
+ "volume": "250 ml",
+ "price": 6400,
+ "to_hit": -2,
+ "material": [ "leather", "cotton" ],
+ "symbol": "[",
+ "color": "white",
+ "covers": [ "HAND_L" ],
+ "encumbrance": 4,
+ "coverage": 100,
+ "warmth": 15,
+ "material_thickness": 3,
+ "environmental_protection": 1,
+ "flags": [ "STURDY" ]
+ },
{
"id": "fire_gauntlets",
"type": "ARMOR",
@@ -2570,6 +2914,7 @@
"to_hit": 2,
"material": [ "leather", "nomex" ],
"symbol": "[",
+ "looks_like": "gloves_leather",
"color": "dark_gray",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -2592,6 +2937,7 @@
"bashing": 4,
"material": [ "plastic", "nomex" ],
"symbol": "[",
+ "looks_like": "hat_cowboy",
"color": "yellow",
"covers": [ "HEAD" ],
"coverage": 75,
@@ -2612,6 +2958,7 @@
"bashing": 5,
"material": [ "leather", "steel" ],
"symbol": "[",
+ "looks_like": "holster",
"color": "yellow",
"covers": [ "TORSO" ],
"encumbrance": 4,
@@ -2638,6 +2985,7 @@
"price": 10000,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "pants_ski",
"color": "green",
"covers": [ "TORSO", "LEGS", "FEET" ],
"coverage": 100,
@@ -2660,6 +3008,7 @@
"to_hit": -2,
"material": [ "glass", "plastic" ],
"symbol": "[",
+ "looks_like": "sunglasses",
"color": "dark_gray",
"covers": [ "EYES" ],
"coverage": 90,
@@ -2679,6 +3028,7 @@
"price": 6000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "tshirt",
"color": "light_red",
"covers": [ "TORSO" ],
"coverage": 90,
@@ -2698,6 +3048,7 @@
"bashing": 2,
"material": [ "plastic", "cotton" ],
"symbol": "[",
+ "looks_like": "vest_leather",
"color": "yellow",
"covers": [ "TORSO" ],
"coverage": 40,
@@ -2718,6 +3069,7 @@
"bashing": 2,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "vest_leather",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 40,
@@ -2737,6 +3089,7 @@
"price": 11000,
"material": [ "plastic", "cotton" ],
"symbol": "[",
+ "looks_like": "chestguard_hard",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 45,
@@ -2758,6 +3111,7 @@
"bashing": 6,
"material": [ "kevlar", "nomex" ],
"symbol": "[",
+ "looks_like": "survivor_suit",
"color": "light_gray",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 100,
@@ -2779,6 +3133,7 @@
"to_hit": -1,
"material": [ "cotton", "fur" ],
"symbol": "[",
+ "looks_like": "blanket",
"color": "brown",
"covers": [ "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 100,
@@ -2799,6 +3154,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "coat_winter",
"color": "light_gray",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 80,
@@ -2821,6 +3177,7 @@
"bashing": 2,
"material": [ "chitin" ],
"symbol": "[",
+ "looks_like": "gauntlets_larmor",
"color": "green",
"covers": [ "HANDS" ],
"coverage": 95,
@@ -2833,6 +3190,7 @@
{
"id": "gauntlets_acidchitin",
"copy-from": "gauntlets_chitin",
+ "looks_like": "gauntlets_chitin",
"type": "ARMOR",
"name": "pair of biosilicified chitin gauntlets",
"name_plural": "pairs of biosilicified chitin gauntlets",
@@ -2855,6 +3213,7 @@
"bashing": 2,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "gloves_leather",
"color": "brown",
"covers": [ "HANDS" ],
"coverage": 60,
@@ -2877,6 +3236,7 @@
"to_hit": -2,
"material": [ "kevlar_rigid", "plastic" ],
"symbol": "[",
+ "looks_like": "glasses_safety",
"color": "dark_gray",
"covers": [ "EYES" ],
"coverage": 100,
@@ -2899,6 +3259,7 @@
"to_hit": -2,
"material": [ "paper" ],
"symbol": "[",
+ "looks_like": "sunglasses",
"color": "light_gray",
"covers": [ "EYES" ],
"coverage": 80,
@@ -2920,6 +3281,7 @@
"to_hit": -2,
"material": [ "glass", "plastic" ],
"symbol": "[",
+ "looks_like": "glasses_eye",
"color": "cyan",
"covers": [ "EYES" ],
"coverage": 75,
@@ -2940,6 +3302,7 @@
"to_hit": -2,
"material": [ "glass", "plastic" ],
"symbol": "[",
+ "looks_like": "sunglasses",
"color": "cyan",
"covers": [ "EYES" ],
"coverage": 75,
@@ -2959,6 +3322,7 @@
"to_hit": -2,
"material": [ "glass", "plastic" ],
"symbol": "[",
+ "looks_like": "glasses_eye",
"color": "cyan",
"covers": [ "EYES" ],
"coverage": 20,
@@ -2978,6 +3342,7 @@
"to_hit": -2,
"material": [ "glass", "plastic" ],
"symbol": "[",
+ "looks_like": "glasses_eye",
"color": "cyan",
"covers": [ "EYES" ],
"coverage": 75,
@@ -2998,6 +3363,7 @@
"to_hit": -2,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "glasses_eye",
"color": "light_gray",
"covers": [ "EYES" ],
"coverage": 95,
@@ -3019,6 +3385,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "gloves_leather",
"color": "white",
"covers": [ "HAND_R" ],
"coverage": 95,
@@ -3038,6 +3405,7 @@
"to_hit": -1,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "gloves_wraps",
"color": "light_blue",
"covers": [ "HANDS" ],
"coverage": 70,
@@ -3057,6 +3425,7 @@
"to_hit": 2,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "gloves_light",
"color": "dark_gray",
"covers": [ "HANDS" ],
"coverage": 50,
@@ -3077,6 +3446,7 @@
"to_hit": 2,
"material": [ "steel", "leather" ],
"symbol": "[",
+ "looks_like": "gloves_fingerless",
"color": "dark_gray",
"covers": [ "HANDS" ],
"coverage": 50,
@@ -3098,6 +3468,7 @@
"to_hit": 2,
"material": [ "kevlar", "nomex" ],
"symbol": "[",
+ "looks_like": "fire_gauntlets",
"color": "light_gray",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -3119,6 +3490,7 @@
"to_hit": 1,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "fire_gauntlets",
"color": "brown",
"covers": [ "HANDS" ],
"coverage": 95,
@@ -3126,28 +3498,6 @@
"warmth": 70,
"material_thickness": 3
},
- {
- "id": "gloves_h20survivor",
- "type": "ARMOR",
- "category": "armor",
- "name": "pair of survivor wetsuit gloves",
- "name_plural": "pairs of survivor wetsuit gloves",
- "description": "A pair of customized, Kevlar armored neoprene gloves, modified to be easy to wear while providing maximum protection under extreme conditions.",
- "weight": "390 g",
- "volume": "750 ml",
- "price": 18000,
- "to_hit": 2,
- "material": [ "kevlar", "plastic", "neoprene" ],
- "symbol": "[",
- "color": "dark_gray",
- "covers": [ "HANDS" ],
- "coverage": 100,
- "encumbrance": 25,
- "warmth": 15,
- "material_thickness": 1,
- "environmental_protection": 10,
- "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY" ]
- },
{
"id": "gloves_hsurvivor",
"type": "ARMOR",
@@ -3161,6 +3511,7 @@
"to_hit": 2,
"material": [ "kevlar", "steel" ],
"symbol": "[",
+ "looks_like": "fire_gauntlets",
"color": "dark_gray",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -3182,6 +3533,7 @@
"to_hit": 2,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "gloves_light",
"color": "dark_gray",
"covers": [ "HANDS" ],
"coverage": 95,
@@ -3202,6 +3554,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "gloves_leather",
"color": "light_blue",
"covers": [ "HANDS" ],
"coverage": 95,
@@ -3222,6 +3575,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "gloves_light",
"color": "light_gray",
"covers": [ "HANDS" ],
"coverage": 95,
@@ -3243,6 +3597,7 @@
"to_hit": 2,
"material": [ "kevlar", "cotton" ],
"symbol": "[",
+ "looks_like": "gloves_survivor",
"color": "green",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -3252,6 +3607,29 @@
"environmental_protection": 3,
"flags": [ "VARSIZE", "WATERPROOF", "STURDY" ]
},
+ {
+ "id": "gloves_survivor_fingerless",
+ "type": "ARMOR",
+ "looks_like": "gloves_lsurvivor",
+ "category": "armor",
+ "name": "pair of fingerless survivor gloves",
+ "name_plural": "pairs of fingerless survivor gloves",
+ "description": "A pair of customized, Kevlar armored cloth gloves with no fingers, modified to be easy to wear while providing maximum protection under extreme conditions.",
+ "weight": "160 g",
+ "volume": "700 ml",
+ "price": 16000,
+ "to_hit": 2,
+ "material": [ "kevlar", "cotton" ],
+ "symbol": "[",
+ "color": "green",
+ "covers": [ "HANDS" ],
+ "coverage": 85,
+ "encumbrance": 8,
+ "warmth": 12,
+ "material_thickness": 3,
+ "environmental_protection": 3,
+ "flags": [ "VARSIZE", "WATERPROOF", "STURDY", "ALLOWS_NATURAL_ATTACKS" ]
+ },
{
"id": "gloves_medical",
"type": "ARMOR",
@@ -3264,6 +3642,7 @@
"to_hit": 1,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "gloves_light",
"color": "white",
"covers": [ "HANDS" ],
"coverage": 90,
@@ -3286,6 +3665,7 @@
"bashing": 7,
"material": [ "iron", "leather" ],
"symbol": "[",
+ "looks_like": "fire_gauntlets",
"color": "light_gray",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -3307,6 +3687,7 @@
"to_hit": 2,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "gloves_light",
"color": "yellow",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -3329,6 +3710,7 @@
"to_hit": 2,
"material": [ "kevlar", "leather" ],
"symbol": "[",
+ "looks_like": "fire_gauntlets",
"color": "brown",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -3351,6 +3733,7 @@
"to_hit": 2,
"material": [ "kevlar", "leather" ],
"symbol": "[",
+ "looks_like": "fire_gauntlets",
"color": "dark_gray",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -3371,6 +3754,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "gloves_leather",
"color": "light_blue",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -3390,6 +3774,7 @@
"to_hit": 1,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "gloves_winter",
"color": "blue",
"covers": [ "HANDS" ],
"coverage": 95,
@@ -3409,6 +3794,7 @@
"to_hit": 2,
"material": [ "leather", "cotton" ],
"symbol": "[",
+ "looks_like": "gloves_leather",
"color": "brown",
"covers": [ "HANDS" ],
"coverage": 95,
@@ -3430,8 +3816,8 @@
"to_hit": 2,
"material": [ "steel", "cotton" ],
"symbol": "[",
- "color": "light_gray",
"looks_like": "gloves_work",
+ "color": "light_gray",
"covers": [ "HANDS" ],
"coverage": 95,
"encumbrance": 40,
@@ -3452,6 +3838,7 @@
"to_hit": 2,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "gloves_light",
"color": "white",
"covers": [ "HANDS" ],
"coverage": 50,
@@ -3471,6 +3858,7 @@
"to_hit": 2,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "gloves_wraps",
"color": "white",
"covers": [ "HANDS" ],
"coverage": 50,
@@ -3491,6 +3879,7 @@
"to_hit": 2,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "gloves_wraps",
"color": "white",
"covers": [ "HANDS" ],
"coverage": 50,
@@ -3511,6 +3900,7 @@
"to_hit": 2,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "gloves_wraps",
"color": "blue",
"covers": [ "HANDS" ],
"coverage": 50,
@@ -3532,6 +3922,7 @@
"to_hit": 2,
"material": [ "kevlar", "fur" ],
"symbol": "[",
+ "looks_like": "gloves_winter",
"color": "light_gray",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -3554,6 +3945,7 @@
"to_hit": 2,
"material": [ "kevlar", "leather" ],
"symbol": "[",
+ "looks_like": "gloves_survivor",
"color": "brown",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -3574,6 +3966,7 @@
"to_hit": -5,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "duffelbag",
"color": "green",
"covers": [ "TORSO", "ARMS" ],
"coverage": 50,
@@ -3588,6 +3981,7 @@
"type": "ARMOR",
"name": "personal go bag",
"description": "A huge duffel bag with backpack attached, both packed to the gills. You have packed this to be ready for deployment. Activate to unpack and enjoy.",
+ "looks_like": "gobag",
"use_action": "GOBAG_PERSONAL",
"copy-from": "gobag"
},
@@ -3603,6 +3997,7 @@
"to_hit": -2,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "sunglasses",
"color": "dark_gray",
"covers": [ "EYES" ],
"coverage": 100,
@@ -3613,27 +4008,6 @@
"qualities": [ [ "GLARE", 1 ] ],
"flags": [ "SUN_GLASSES" ]
},
- {
- "id": "goggles_swim",
- "type": "ARMOR",
- "name": "pair of swim goggles",
- "name_plural": "pairs of swim goggles",
- "description": "A small pair of goggles made for swimming.",
- "weight": "81 g",
- "volume": "250 ml",
- "price": 1100,
- "to_hit": -2,
- "material": [ "plastic" ],
- "symbol": "[",
- "color": "light_blue",
- "covers": [ "EYES" ],
- "coverage": 100,
- "encumbrance": 10,
- "warmth": 10,
- "material_thickness": 1,
- "environmental_protection": 4,
- "flags": [ "WATER_FRIENDLY", "SWIM_GOGGLES" ]
- },
{
"id": "goggles_welding",
"type": "ARMOR",
@@ -3646,6 +4020,7 @@
"to_hit": -3,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "glasses_safety",
"color": "dark_gray",
"covers": [ "EYES" ],
"coverage": 100,
@@ -3666,6 +4041,7 @@
"price": 21000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "dress",
"color": "dark_gray",
"covers": [ "TORSO", "LEGS" ],
"coverage": 75,
@@ -3685,6 +4061,7 @@
"to_hit": -3,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "coat_winter",
"color": "blue",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 95,
@@ -3695,29 +4072,6 @@
"environmental_protection": 1,
"flags": [ "VARSIZE", "POCKETS", "COLLAR", "OUTER" ]
},
- {
- "id": "h20survivor_suit",
- "type": "ARMOR",
- "category": "armor",
- "name": "survivor wetsuit",
- "description": "A lightweight, hand-built combination armor made from a cut-down bulletproof vest and a reinforced neoprene wetsuit. Protects from the elements as well as from harm.",
- "weight": "6400 g",
- "volume": "7 L",
- "price": 110000,
- "to_hit": -3,
- "bashing": 6,
- "material": [ "kevlar", "plastic", "neoprene" ],
- "symbol": "[",
- "color": "dark_gray",
- "covers": [ "LEGS", "TORSO", "ARMS" ],
- "coverage": 100,
- "encumbrance": 20,
- "storage": "11500 ml",
- "warmth": 15,
- "material_thickness": 2,
- "environmental_protection": 10,
- "flags": [ "VARSIZE", "WATER_FRIENDLY", "POCKETS", "HOOD", "RAINPROOF", "STURDY" ]
- },
{
"id": "hakama_gi",
"type": "ARMOR",
@@ -3728,6 +4082,7 @@
"price": 2500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "skirt",
"color": "dark_gray",
"covers": [ "LEGS" ],
"coverage": 100,
@@ -3746,6 +4101,7 @@
"price": 3000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "skirt",
"color": "blue",
"covers": [ "LEGS" ],
"coverage": 100,
@@ -3765,6 +4121,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "tank_top",
"color": "pink",
"covers": [ "TORSO" ],
"coverage": 25,
@@ -3783,6 +4140,7 @@
"price": 2500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hat_cotton",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 50,
@@ -3802,6 +4160,7 @@
"price": 1200,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hat_cowboy",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 65,
@@ -3821,6 +4180,7 @@
"price": 500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hat_cotton",
"color": "white",
"covers": [ "HEAD" ],
"coverage": 75,
@@ -3839,6 +4199,7 @@
"price": 2000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hat_ball",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 65,
@@ -3856,6 +4217,7 @@
"price": 5000,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "hat_knit",
"color": "brown",
"covers": [ "HEAD" ],
"coverage": 95,
@@ -3867,6 +4229,7 @@
"id": "hat_faux_fur",
"type": "ARMOR",
"copy-from": "hat_fur",
+ "looks_like": "hat_fur",
"name": "faux fur hat",
"description": "A stylish hat made of faux fur. Like real fur, but without the suffering, if the tag is to be believed. Very warm.",
"material": [ "faux_fur", "cotton" ],
@@ -3885,6 +4248,7 @@
"bashing": 6,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "hat_ball",
"color": "yellow",
"covers": [ "HEAD" ],
"coverage": 80,
@@ -3906,6 +4270,7 @@
"bashing": 6,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "hat_hard",
"color": "yellow",
"covers": [ "HEAD" ],
"coverage": 80,
@@ -3925,6 +4290,7 @@
"price": 3000,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "hat_ball",
"color": "light_red",
"covers": [ "HEAD" ],
"coverage": 85,
@@ -3944,6 +4310,7 @@
"price": 3000,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "hat_cotton",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 65,
@@ -3961,6 +4328,7 @@
"price": 3000,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "hat_ball",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 50,
@@ -3978,6 +4346,7 @@
"price": 2500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hat_cotton",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 5,
@@ -3997,6 +4366,7 @@
"price": 5500,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "hat_cowboy",
"color": "light_red",
"covers": [ "HEAD" ],
"coverage": 50,
@@ -4017,6 +4387,7 @@
"to_hit": 1,
"material": [ "plastic", "leather" ],
"symbol": "[",
+ "looks_like": "balclava",
"color": "red",
"covers": [ "HEAD" ],
"coverage": 75,
@@ -4039,6 +4410,7 @@
"bashing": 10,
"material": [ "kevlar", "plastic" ],
"symbol": "[",
+ "looks_like": "hat_hard",
"color": "green",
"covers": [ "HEAD" ],
"coverage": 95,
@@ -4061,6 +4433,7 @@
"bashing": 7,
"material": [ "plastic", "iron" ],
"symbol": "[",
+ "looks_like": "hat_hard",
"color": "blue",
"covers": [ "HEAD" ],
"coverage": 95,
@@ -4082,6 +4455,7 @@
"bashing": 10,
"material": [ "steel", "leather" ],
"symbol": "[",
+ "looks_like": "helmet_plate",
"color": "light_gray",
"covers": [ "HEAD" ],
"coverage": 90,
@@ -4103,6 +4477,7 @@
"bashing": 4,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "hat_hard",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 75,
@@ -4124,6 +4499,7 @@
"bashing": 2,
"material": [ "chitin" ],
"symbol": "[",
+ "looks_like": "helmet_larmor",
"color": "green",
"covers": [ "HEAD", "EYES", "MOUTH" ],
"coverage": 90,
@@ -4145,6 +4521,7 @@
"bashing": 6,
"material": [ "iron", "fur" ],
"symbol": "[",
+ "looks_like": "helmet_barbute",
"color": "brown",
"covers": [ "HEAD" ],
"coverage": 90,
@@ -4157,6 +4534,7 @@
{
"id": "helmet_acidchitin",
"copy-from": "helmet_chitin",
+ "looks_like": "helmet_chitin",
"type": "ARMOR",
"name": "biosilicified chitin helmet",
"description": "A helmet crafted from the carefully cleaned and pruned biosilicified exoskeletons of acidic ants. Covers the entire head; acid-resistant and very durable.",
@@ -4175,6 +4553,7 @@
"price": 19800,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "helmet_motor",
"color": "yellow",
"covers": [ "HEAD" ],
"coverage": 85,
@@ -4196,6 +4575,7 @@
"bashing": 10,
"material": [ "iron", "leather" ],
"symbol": "[",
+ "looks_like": "helmet_barbute",
"color": "light_gray",
"covers": [ "HEAD" ],
"coverage": 85,
@@ -4218,6 +4598,7 @@
"bashing": 10,
"material": [ "kevlar", "steel" ],
"symbol": "[",
+ "looks_like": "helmet_survivor",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 100,
@@ -4241,6 +4622,7 @@
"bashing": 6,
"material": [ "iron", "leather" ],
"symbol": "[",
+ "looks_like": "helmet_barbute",
"color": "dark_gray",
"covers": [ "HEAD", "EYES", "MOUTH" ],
"coverage": 95,
@@ -4262,6 +4644,7 @@
"price": 14000,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "hat_hard",
"color": "brown",
"covers": [ "HEAD" ],
"coverage": 85,
@@ -4283,6 +4666,7 @@
"bashing": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "balclava",
"color": "green",
"covers": [ "HEAD" ],
"coverage": 100,
@@ -4303,6 +4687,7 @@
"bashing": 10,
"material": [ "kevlar", "plastic" ],
"symbol": "[",
+ "looks_like": "helmet_barbute",
"color": "light_gray",
"covers": [ "HEAD" ],
"coverage": 98,
@@ -4347,6 +4732,7 @@
"bashing": 10,
"material": [ "iron", "leather" ],
"symbol": "[",
+ "looks_like": "helmet_barbute",
"color": "light_gray",
"covers": [ "HEAD", "EYES" ],
"coverage": 80,
@@ -4367,6 +4753,7 @@
"to_hit": -3,
"material": [ "cotton", "leather" ],
"symbol": "[",
+ "looks_like": "balclava",
"color": "white",
"covers": [ "HEAD", "EYES", "MOUTH" ],
"coverage": 95,
@@ -4388,6 +4775,7 @@
"bashing": 10,
"material": [ "steel", "leather" ],
"symbol": "[",
+ "looks_like": "helmet_barbute",
"color": "light_gray",
"covers": [ "HEAD", "EYES", "MOUTH" ],
"coverage": 100,
@@ -4409,6 +4797,7 @@
"to_hit": -3,
"material": [ "kevlar", "cotton" ],
"symbol": "[",
+ "looks_like": "mask_gas",
"color": "white",
"covers": [ "HEAD", "EYES", "MOUTH" ],
"coverage": 100,
@@ -4432,6 +4821,7 @@
"cutting": 2,
"material": [ "steel", "iron" ],
"symbol": "[",
+ "looks_like": "helmet_plate",
"color": "light_gray",
"covers": [ "HEAD", "EYES", "MOUTH" ],
"coverage": 80,
@@ -4452,6 +4842,7 @@
"bashing": 8,
"material": [ "plastic", "iron" ],
"symbol": "[",
+ "looks_like": "helmet_bike",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 65,
@@ -4473,6 +4864,7 @@
"bashing": 10,
"material": [ "kevlar", "leather" ],
"symbol": "[",
+ "looks_like": "helmet_army",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 100,
@@ -4496,6 +4888,7 @@
"bashing": 10,
"material": [ "kevlar", "leather" ],
"symbol": "[",
+ "looks_like": "helmet_survivor",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 100,
@@ -4514,7 +4907,9 @@
"name": "hide bag",
"description": "The raw skin of an animal, quickly turned into a makeshift bag for storage. It will still rot, and needs to be cured and tanned.",
"symbol": "[",
+ "looks_like": "plastic_shopping_bag",
"color": "pink",
+ "proportional": { "weight": 6, "volume": 6, "price": 6, "quench": 6, "calories": 6, "healthy": 6, "fun": 6 },
"armor_data": {
"covers": [ "ARM_EITHER", "HAND_EITHER" ],
"coverage": 5,
@@ -4532,7 +4927,9 @@
"name": "tainted hide bag",
"description": "The raw skin of a monster, quickly turned into a makeshift bag for storage. It will still rot, and needs to be cured and tanned.",
"symbol": "[",
+ "looks_like": "hide_bag",
"color": "pink",
+ "proportional": { "weight": 6, "volume": 6, "price": 6, "quench": 6, "calories": 6, "healthy": 6, "fun": 6 },
"armor_data": {
"covers": [ "ARM_EITHER", "HAND_EITHER" ],
"coverage": 5,
@@ -4555,6 +4952,7 @@
"bashing": 10,
"material": [ "kevlar", "nomex" ],
"symbol": "[",
+ "looks_like": "hood_survivor",
"color": "light_gray",
"covers": [ "HEAD" ],
"coverage": 100,
@@ -4564,28 +4962,6 @@
"environmental_protection": 10,
"flags": [ "VARSIZE", "WATERPROOF", "STURDY", "OUTER", "HELMET_COMPAT" ]
},
- {
- "id": "hood_h20survivor",
- "type": "ARMOR",
- "category": "armor",
- "name": "survivor wetsuit hood",
- "description": "A customized armored neoprene and Kevlar hood, very strong and durable.",
- "weight": "860 g",
- "volume": "1500 ml",
- "price": 58000,
- "to_hit": -1,
- "bashing": 10,
- "material": [ "kevlar", "plastic", "neoprene" ],
- "symbol": "[",
- "color": "dark_gray",
- "covers": [ "HEAD" ],
- "coverage": 100,
- "encumbrance": 25,
- "warmth": 15,
- "material_thickness": 2,
- "environmental_protection": 10,
- "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY", "OUTER", "HELMET_COMPAT" ]
- },
{
"id": "hood_lsurvivor",
"type": "ARMOR",
@@ -4599,6 +4975,7 @@
"bashing": 10,
"material": [ "kevlar", "cotton" ],
"symbol": "[",
+ "looks_like": "hood_survivor",
"color": "green",
"covers": [ "HEAD" ],
"coverage": 100,
@@ -4618,6 +4995,7 @@
"price": 2000,
"material": [ "plastic", "cotton" ],
"symbol": "[",
+ "looks_like": "hat_cotton",
"color": "yellow",
"covers": [ "HEAD" ],
"coverage": 100,
@@ -4639,6 +5017,7 @@
"bashing": 10,
"material": [ "kevlar", "leather" ],
"symbol": "[",
+ "looks_like": "hood_rain",
"color": "brown",
"covers": [ "HEAD" ],
"coverage": 100,
@@ -4662,6 +5041,7 @@
"bashing": 10,
"material": [ "kevlar", "fur" ],
"symbol": "[",
+ "looks_like": "hood_survivor",
"color": "light_gray",
"covers": [ "HEAD" ],
"coverage": 100,
@@ -4684,6 +5064,7 @@
"bashing": 10,
"material": [ "kevlar", "leather" ],
"symbol": "[",
+ "looks_like": "hood_survivor",
"color": "brown",
"covers": [ "HEAD" ],
"coverage": 100,
@@ -4704,6 +5085,7 @@
"price": 3800,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "sweater",
"color": "dark_gray",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -4724,6 +5106,7 @@
"price": 2500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "boxer_briefs",
"color": "light_red",
"covers": [ "LEGS" ],
"coverage": 15,
@@ -4741,6 +5124,7 @@
"price": 5500,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "hot_pants_leather",
"color": "brown",
"covers": [ "LEGS" ],
"coverage": 15,
@@ -4759,6 +5143,7 @@
"price": 2500,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "hot_pants",
"color": "dark_gray",
"covers": [ "LEGS" ],
"coverage": 15,
@@ -4777,6 +5162,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "coat_lab",
"color": "blue",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 85,
@@ -4800,6 +5186,7 @@
"bashing": 6,
"material": [ "kevlar", "steel", "leather" ],
"symbol": "[",
+ "looks_like": "survivor_suit",
"color": "dark_gray",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 100,
@@ -4822,6 +5209,7 @@
"to_hit": -2,
"material": [ "bone" ],
"symbol": "[",
+ "looks_like": "sunglasses",
"color": "light_gray",
"covers": [ "EYES" ],
"coverage": 90,
@@ -4842,6 +5230,7 @@
"price": 3500,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "coat_winter",
"color": "green",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -4861,6 +5250,7 @@
"price": 7000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "coat_lab",
"color": "white",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -4880,6 +5270,7 @@
"price": 1000,
"material": [ "plastic", "cotton" ],
"symbol": "[",
+ "looks_like": "jacket_leather",
"color": "cyan",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -4899,6 +5290,7 @@
"price": 6000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "coat_winter",
"color": "light_red",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -4918,6 +5310,7 @@
"price": 4000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "jacket_windbreaker",
"color": "light_blue",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -4944,6 +5337,7 @@
"to_hit": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "jacket_windbreaker",
"color": "dark_gray",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -4965,6 +5359,7 @@
"to_hit": 1,
"material": [ "leather", "iron" ],
"symbol": "[",
+ "looks_like": "jacket_leather",
"color": "dark_gray",
"covers": [ "TORSO", "ARMS" ],
"coverage": 85,
@@ -4986,6 +5381,7 @@
"to_hit": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "jacket_leather",
"color": "red",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -5006,6 +5402,7 @@
"price": 4500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "jacket_windbreaker",
"color": "blue",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -5025,6 +5422,7 @@
"price": 1000,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "jacket_light",
"color": "cyan",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -5047,6 +5445,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "pants",
"color": "blue",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -5068,6 +5467,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "jeans",
"color": "red",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -5088,6 +5488,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "robe",
"color": "brown",
"covers": [ "TORSO", "HEAD", "ARMS", "HANDS", "LEGS" ],
"coverage": 65,
@@ -5108,6 +5509,7 @@
"price": 8900,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "tshirt",
"color": "yellow",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -5237,6 +5639,7 @@
"price": 5000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "robe",
"color": "white",
"covers": [ "ARMS", "LEGS", "TORSO" ],
"coverage": 95,
@@ -5256,6 +5659,7 @@
"to_hit": -3,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "touring_suit",
"color": "yellow",
"covers": [ "LEGS", "ARMS", "TORSO" ],
"coverage": 95,
@@ -5269,6 +5673,7 @@
"id": "robofac_jumpsuit",
"type": "ARMOR",
"copy-from": "jumpsuit",
+ "looks_like": "jumpsuit",
"name": "Hub 01 jumpsuit",
"description": "A brown jumpsuit worn by the staff of Hub 01.",
"color": "brown"
@@ -5284,6 +5689,7 @@
"to_hit": -3,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "jumpsuit",
"color": "yellow",
"covers": [ "LEGS", "ARMS", "TORSO" ],
"coverage": 95,
@@ -5303,6 +5709,7 @@
"price": 5000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "judo_gi",
"color": "white",
"covers": [ "ARMS", "LEGS", "TORSO" ],
"coverage": 80,
@@ -5321,6 +5728,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "robe",
"color": "white",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 100,
@@ -5341,6 +5749,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "scarf",
"color": "white",
"covers": [ "MOUTH" ],
"coverage": 85,
@@ -5354,6 +5763,7 @@
"id": "marloss_scarf",
"type": "ARMOR",
"copy-from": "keffiyeh",
+ "looks_like": "scarf",
"name": "cyan scarf",
"description": "A simple cloth scarf worn by Marloss Voices. Wherever the Voices go, long sought peace soon follows, for better or for worse.",
"color": "cyan",
@@ -5369,6 +5779,7 @@
"price": 2500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "judo_gi",
"color": "white",
"covers": [ "ARMS", "TORSO" ],
"coverage": 80,
@@ -5389,6 +5800,7 @@
"bashing": 6,
"material": [ "kevlar" ],
"symbol": "[",
+ "looks_like": "vest_leather",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 85,
@@ -5407,6 +5819,7 @@
"price": 6500,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "skirt",
"color": "dark_gray",
"covers": [ "LEGS" ],
"coverage": 50,
@@ -5425,6 +5838,7 @@
"price": 6500,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "kilt",
"color": "dark_gray",
"covers": [ "LEGS" ],
"coverage": 50,
@@ -5444,6 +5858,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "robe",
"color": "white",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 90,
@@ -5464,6 +5879,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "kimono",
"color": "blue",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 80,
@@ -5484,6 +5900,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "housecoat",
"color": "black",
"covers": [ "TORSO", "ARMS" ],
"coverage": 60,
@@ -5503,6 +5920,7 @@
"price": 5000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hat_cotton",
"color": "blue",
"covers": [ "HEAD" ],
"coverage": 40,
@@ -5522,6 +5940,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "robe",
"color": "white",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 80,
@@ -5544,6 +5963,7 @@
"to_hit": 1,
"material": [ "plastic", "cotton" ],
"symbol": "[",
+ "looks_like": "legguard_hard",
"color": "dark_gray",
"covers": [ "LEGS" ],
"coverage": 30,
@@ -5561,6 +5981,7 @@
"price": 3000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hat_cotton",
"color": "white",
"covers": [ "HEAD" ],
"coverage": 50,
@@ -5608,6 +6029,7 @@
"bashing": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "holster",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 15,
@@ -5622,7 +6044,6 @@
"name": "ammo pouch",
"name_plural": "ammo pouches",
"description": "A small pouch that can be used to store most types of small ammunition, rockets will not fit. Activate to store ammunition.",
- "looks_like": "leather_pouch",
"weight": "490 g",
"rigid": false,
"volume": "500 ml",
@@ -5631,6 +6052,7 @@
"bashing": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "leather_pouch",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 10,
@@ -5699,6 +6121,7 @@
"price": 20000,
"material": [ "wood", "cotton" ],
"symbol": "[",
+ "looks_like": "legguard_hard",
"color": "white",
"covers": [ "LEG_EITHER" ],
"coverage": 75,
@@ -5730,6 +6153,7 @@
"price": 1000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "leggings",
"color": "light_gray",
"covers": [ "LEGS" ],
"coverage": 60,
@@ -5749,6 +6173,7 @@
"price": 20000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "leg_warmers",
"color": "light_gray",
"covers": [ "LEGS" ],
"coverage": 60,
@@ -5768,6 +6193,7 @@
"price": 25000,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "leg_warmers_xl",
"color": "light_gray",
"covers": [ "FEET" ],
"coverage": 60,
@@ -5785,8 +6211,9 @@
"weight": "155 g",
"volume": "500 ml",
"price": 1000,
- "material": [ "cotton", "plastic" ],
+ "material": [ "lycra" ],
"symbol": "[",
+ "looks_like": "leg_warmers",
"color": "dark_gray",
"covers": [ "LEGS" ],
"coverage": 100,
@@ -5807,6 +6234,7 @@
"to_hit": 1,
"material": [ "plastic", "neoprene" ],
"symbol": "[",
+ "looks_like": "leg_warmers",
"color": "dark_gray",
"covers": [ "LEGS" ],
"coverage": 75,
@@ -5829,6 +6257,7 @@
"to_hit": -1,
"material": [ "steel", "leather" ],
"symbol": "[",
+ "looks_like": "legguard_hard",
"color": "light_gray",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -5850,6 +6279,7 @@
"to_hit": 1,
"material": [ "iron", "leather" ],
"symbol": "[",
+ "looks_like": "legguard_lightplate",
"color": "light_gray",
"covers": [ "LEGS" ],
"coverage": 70,
@@ -5870,6 +6300,7 @@
"to_hit": 1,
"material": [ "paper" ],
"symbol": "[",
+ "looks_like": "legguard_hard",
"color": "blue",
"covers": [ "LEGS" ],
"coverage": 80,
@@ -5893,6 +6324,7 @@
"cutting": 1,
"material": [ "steel", "iron" ],
"symbol": "[",
+ "looks_like": "legguard_metal",
"color": "light_gray",
"covers": [ "LEGS" ],
"coverage": 80,
@@ -5920,6 +6352,24 @@
"material_thickness": 2,
"flags": [ "VARSIZE", "WATER_FRIENDLY", "BELTED" ]
},
+ {
+ "id": "leotard",
+ "type": "ARMOR",
+ "name": "leotard",
+ "name_plural": "leotard",
+ "description": "A skin-tight spandex garment, covering the body from the groin to the shoulders. With its deep scoop-cut back and high waist cuts, this garment is perfect for showcasing your physique on the stage.",
+ "weight": "60 g",
+ "volume": "500 ml",
+ "price": 1000,
+ "material": [ "lycra" ],
+ "symbol": "[",
+ "color": "dark_gray",
+ "covers": [ "TORSO" ],
+ "coverage": 55,
+ "warmth": 5,
+ "material_thickness": 1,
+ "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ]
+ },
{
"id": "linuxtshirt",
"type": "ARMOR",
@@ -5930,6 +6380,7 @@
"price": 2000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "tshirt",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 90,
@@ -5959,7 +6410,7 @@
},
{
"id": "fedora",
- "text": "A t-shirt with the Fedora logo on it, underneath it says \"Freedom. Friends. Features. First.\""
+ "text": "A t-shirt with the Fedora logo on it, underneath it says \"Freedom. Friends. Features. First.\""
},
{
"id": "redhat",
@@ -5982,6 +6433,7 @@
"price": 900,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "briefs",
"color": "brown",
"covers": [ "LEGS" ],
"coverage": 5,
@@ -5998,6 +6450,7 @@
"price": 7500,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "loincloth_leather",
"color": "brown",
"covers": [ "LEGS" ],
"coverage": 5,
@@ -6015,6 +6468,7 @@
"price": 7500,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "loincloth",
"color": "brown",
"covers": [ "LEGS" ],
"coverage": 5,
@@ -6031,6 +6485,7 @@
"price": 900,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "loincloth",
"color": "blue",
"covers": [ "LEGS" ],
"coverage": 5,
@@ -6050,6 +6505,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "glove_light",
"color": "light_blue",
"covers": [ "HANDS", "ARMS" ],
"coverage": 60,
@@ -6067,6 +6523,7 @@
"price": 1500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "leggings",
"color": "light_gray",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -6085,6 +6542,7 @@
"price": 1500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "longshirt",
"color": "light_gray",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -6098,12 +6556,12 @@
"type": "ARMOR",
"name": "sleeveless underwear top",
"description": "A sleeveless underwear top that helps to maintain body temperature.",
- "looks_like": "long_undertop",
"weight": "80 g",
"volume": "400 ml",
"price": 1200,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "long_undertop",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 95,
@@ -6122,6 +6580,7 @@
"price": 2000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "dress_shirt",
"color": "blue",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -6141,6 +6600,7 @@
"price": 60000,
"material": [ "kevlar", "cotton" ],
"symbol": "[",
+ "looks_like": "survivor_armor",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 95,
@@ -6163,6 +6623,7 @@
"price": 40000,
"material": [ "kevlar", "cotton" ],
"symbol": "[",
+ "looks_like": "survivor_pants",
"color": "green",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -6184,6 +6645,7 @@
"price": 110000,
"material": [ "kevlar", "cotton" ],
"symbol": "[",
+ "looks_like": "survivor_suit",
"color": "green",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 100,
@@ -6205,6 +6667,7 @@
"price": 5000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "dress",
"color": "blue",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 75,
@@ -6224,6 +6687,7 @@
"price": 2500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hat_cotton",
"color": "white",
"covers": [ "HEAD" ],
"coverage": 25,
@@ -6244,6 +6708,7 @@
"to_hit": -3,
"material": [ "kevlar_rigid", "plastic" ],
"symbol": "[",
+ "looks_like": "glasses_bal",
"color": "dark_gray",
"covers": [ "MOUTH", "EYES" ],
"coverage": 95,
@@ -6264,6 +6729,7 @@
"to_hit": -3,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "scarf",
"color": "white",
"covers": [ "MOUTH" ],
"coverage": 100,
@@ -6284,6 +6750,7 @@
"to_hit": -3,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "mask_hockey",
"color": "white",
"covers": [ "MOUTH", "EYES" ],
"coverage": 95,
@@ -6306,6 +6773,7 @@
"to_hit": -3,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "glasses_safety",
"color": "white",
"covers": [ "MOUTH", "EYES" ],
"coverage": 95,
@@ -6326,6 +6794,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "scarf",
"color": "white",
"covers": [ "MOUTH", "HEAD" ],
"coverage": 90,
@@ -6347,6 +6816,7 @@
"to_hit": 1,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "gloves_wool",
"color": "blue",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -6366,6 +6836,7 @@
"bashing": 8,
"material": [ "kevlar", "cotton" ],
"symbol": "[",
+ "looks_like": "jacket_leather",
"color": "dark_gray",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -6387,6 +6858,7 @@
"price": 10000,
"material": [ "kevlar", "cotton" ],
"symbol": "[",
+ "looks_like": "pants_leather",
"color": "dark_gray",
"covers": [ "LEGS" ],
"coverage": 100,
@@ -6424,6 +6896,7 @@
"price": 3000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "skirt",
"color": "pink",
"covers": [ "LEGS" ],
"coverage": 7,
@@ -6442,6 +6915,7 @@
"to_hit": -5,
"material": [ "nomex" ],
"symbol": "[",
+ "looks_like": "gloves_light",
"color": "light_gray",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -6462,6 +6936,7 @@
"to_hit": -5,
"material": [ "nomex" ],
"symbol": "[",
+ "looks_like": "hood_rain",
"color": "light_gray",
"covers": [ "HEAD" ],
"coverage": 100,
@@ -6483,6 +6958,7 @@
"to_hit": -5,
"material": [ "nomex" ],
"symbol": "[",
+ "looks_like": "socks",
"color": "light_gray",
"covers": [ "FEET" ],
"coverage": 100,
@@ -6503,6 +6979,7 @@
"to_hit": -5,
"material": [ "nomex" ],
"symbol": "[",
+ "looks_like": "jumpsuit",
"color": "light_gray",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 100,
@@ -6536,6 +7013,7 @@
"to_hit": -1,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "cloak",
"color": "light_gray",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 65,
@@ -6561,6 +7039,7 @@
"price": 1000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "briefs",
"color": "white",
"covers": [ "LEGS" ],
"coverage": 15,
@@ -6580,6 +7059,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "jeans",
"color": "brown",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -6600,6 +7080,7 @@
"price": 3500,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "pants_cargo",
"color": "green",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -6620,6 +7101,7 @@
"price": 2500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "pants",
"color": "light_gray",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -6640,6 +7122,7 @@
"price": 4000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "pants",
"color": "dark_gray",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -6660,6 +7143,7 @@
"price": 1500,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "leg_warmers",
"color": "brown",
"covers": [ "LEGS" ],
"coverage": 60,
@@ -6680,6 +7164,7 @@
"to_hit": 1,
"material": [ "cotton", "fur" ],
"symbol": "[",
+ "looks_like": "pants",
"color": "brown",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -6712,6 +7197,7 @@
"to_hit": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "pants",
"color": "dark_gray",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -6732,6 +7218,7 @@
"price": 6500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "pants",
"color": "blue",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -6754,6 +7241,7 @@
"price": 38000,
"material": [ "cotton", "kevlar" ],
"symbol": "[",
+ "looks_like": "pants_army",
"color": "green",
"covers": [ "LEGS" ],
"coverage": 100,
@@ -6775,6 +7263,7 @@
"to_hit": -3,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "coat_winter",
"color": "blue",
"covers": [ "TORSO", "ARMS" ],
"coverage": 85,
@@ -6813,6 +7302,7 @@
"cutting": 4,
"material": [ "leather", "iron" ],
"symbol": "[",
+ "looks_like": "helmet_plate",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 70,
@@ -6845,13 +7335,13 @@
"type": "ARMOR",
"name": "police duty belt",
"description": "Black leather belt used by police officers. It has several pouches and a holder for a baton.",
- "looks_like": "fireman_belt",
"weight": "250 g",
"volume": "2 L",
"price": 10000,
"bashing": 5,
"material": [ "leather", "steel" ],
"symbol": "[",
+ "looks_like": "fireman_belt",
"color": "brown",
"covers": [ "TORSO" ],
"encumbrance": 6,
@@ -6877,6 +7367,7 @@
"price": 1500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "tshirt",
"color": "light_red",
"covers": [ "TORSO" ],
"coverage": 90,
@@ -6896,6 +7387,7 @@
"to_hit": -1,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "cloak",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 85,
@@ -6915,6 +7407,7 @@
"price": 5500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "bowlhat",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 50,
@@ -6934,6 +7427,7 @@
"price": 1000,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "hat_ball",
"color": "blue",
"covers": [ "HEAD" ],
"coverage": 60,
@@ -6953,6 +7447,7 @@
"price": 1500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "polo_shirt",
"color": "light_blue",
"covers": [ "TORSO" ],
"coverage": 90,
@@ -6973,6 +7468,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "shorts_cargo",
"color": "blue",
"covers": [ "LEGS" ],
"coverage": 40,
@@ -6993,6 +7489,7 @@
"bashing": 10,
"material": [ "iron" ],
"symbol": "[",
+ "looks_like": "helmet_plate",
"color": "light_gray",
"covers": [ "HEAD" ],
"coverage": 55,
@@ -7013,6 +7510,7 @@
"bashing": 2,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "bscabbard",
"color": "brown",
"covers": [ "LEG_EITHER" ],
"coverage": 10,
@@ -7032,6 +7530,7 @@
"bashing": 2,
"material": [ "wood" ],
"symbol": "[",
+ "looks_like": "quiver",
"color": "light_gray",
"covers": [ "LEG_EITHER" ],
"coverage": 10,
@@ -7051,6 +7550,7 @@
"bashing": 4,
"material": [ "leather", "steel" ],
"symbol": "[",
+ "looks_like": "quiver",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 15,
@@ -7070,6 +7570,7 @@
"bashing": 4,
"material": [ "wood" ],
"symbol": "[",
+ "looks_like": "quiver_birchbark",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 15,
@@ -7111,6 +7612,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "cloak",
"color": "brown",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 80,
@@ -7131,6 +7633,7 @@
"bashing": 4,
"material": [ "leather", "wood" ],
"symbol": "[",
+ "looks_like": "holster",
"color": "brown",
"covers": [ "LEG_EITHER" ],
"coverage": 15,
@@ -7145,44 +7648,6 @@
},
"flags": [ "WAIST", "OVERSIZE", "WATER_FRIENDLY" ]
},
- {
- "id": "shark_suit",
- "type": "ARMOR",
- "name": "shark suit",
- "description": "A one piece chainmail suit used by scuba divers for protection against shark bites. It comes with attached plastic helmet and booties.",
- "weight": "3150 g",
- "volume": "3500 ml",
- "price": 35000,
- "to_hit": -1,
- "material": [ "steel", "plastic" ],
- "symbol": "[",
- "color": "light_red",
- "covers": [ "TORSO", "HEAD", "ARMS", "HANDS", "LEGS", "FEET" ],
- "coverage": 100,
- "encumbrance": 30,
- "warmth": 5,
- "material_thickness": 3,
- "flags": [ "VARSIZE", "STURDY", "WATER_FRIENDLY" ]
- },
- {
- "id": "shark_suit_faraday",
- "type": "ARMOR",
- "name": "faraday shark suit",
- "description": "A one piece chainmail suit used by scuba divers for protection against shark bites. It has been conductively interconnected, protecting against electricity.",
- "weight": "3250 g",
- "volume": "3500 ml",
- "price": 35000,
- "to_hit": -1,
- "material": [ "steel", "plastic" ],
- "symbol": "[",
- "color": "light_red",
- "covers": [ "TORSO", "HEAD", "ARMS", "HANDS", "LEGS", "FEET" ],
- "coverage": 100,
- "encumbrance": 30,
- "warmth": 5,
- "material_thickness": 3,
- "flags": [ "VARSIZE", "STURDY", "WATER_FRIENDLY", "ELECTRIC_IMMUNE", "HELMET_COMPAT" ]
- },
{
"id": "sheath",
"type": "ARMOR",
@@ -7194,6 +7659,7 @@
"price": 3500,
"material": [ "leather" ],
"symbol": "|",
+ "looks_like": "scabbard",
"color": "brown",
"covers": [ "LEG_EITHER" ],
"coverage": 5,
@@ -7219,6 +7685,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "blanket",
"color": "white",
"covers": [ "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 100,
@@ -7237,6 +7704,7 @@
"price": 1100,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "dress_shirt",
"color": "light_gray",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -7258,6 +7726,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "boxers",
"color": "brown",
"covers": [ "LEGS" ],
"coverage": 40,
@@ -7279,6 +7748,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "shorts",
"color": "light_gray",
"covers": [ "LEGS" ],
"coverage": 40,
@@ -7300,6 +7770,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "shorts",
"color": "light_blue",
"covers": [ "LEGS" ],
"coverage": 40,
@@ -7309,6 +7780,23 @@
"material_thickness": 3,
"flags": [ "VARSIZE" ]
},
+ {
+ "id": "thermal_shirt",
+ "type": "ARMOR",
+ "name": "thermal shirt",
+ "description": "A lightweight, form-fitting long-sleeved spandex undershirt that helps maintains body temperature.",
+ "weight": "92 g",
+ "volume": "250 ml",
+ "price": 3200,
+ "material": [ "lycra" ],
+ "symbol": "[",
+ "color": "dark_gray",
+ "covers": [ "TORSO", "ARMS" ],
+ "coverage": 95,
+ "warmth": 20,
+ "material_thickness": 1,
+ "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ]
+ },
{
"id": "tie_skinny",
"type": "ARMOR",
@@ -7332,6 +7820,7 @@
"price": 18000,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "coat_winter",
"color": "light_blue",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -7340,8 +7829,7 @@
"warmth": 80,
"material_thickness": 5,
"environmental_protection": 3,
- "flags": [ "VARSIZE", "POCKETS", "HOOD", "COLLAR", "OUTER" ],
- "looks_like": "coat_winter"
+ "flags": [ "VARSIZE", "POCKETS", "HOOD", "COLLAR", "OUTER" ]
},
{
"id": "skirt",
@@ -7353,6 +7841,7 @@
"price": 6500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "kilt",
"color": "dark_gray",
"covers": [ "LEGS" ],
"coverage": 50,
@@ -7371,6 +7860,7 @@
"price": 9500,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "skirt",
"color": "brown",
"covers": [ "LEGS" ],
"coverage": 35,
@@ -7390,6 +7880,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "blanket",
"color": "light_red",
"covers": [ "TORSO", "HEAD", "MOUTH", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 100,
@@ -7416,6 +7907,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "(",
+ "looks_like": "duffelbag",
"color": "light_red",
"covers": [ "TORSO" ],
"coverage": 10,
@@ -7435,6 +7927,7 @@
"to_hit": -1,
"material": [ "cotton", "fur" ],
"symbol": "[",
+ "looks_like": "sleeping_bag",
"color": "brown",
"covers": [ "TORSO", "HEAD", "MOUTH", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 100,
@@ -7461,6 +7954,7 @@
"to_hit": -1,
"material": [ "cotton", "fur" ],
"symbol": "(",
+ "looks_like": "sleeping_bag_roll",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 10,
@@ -7486,6 +7980,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "duster",
"color": "dark_gray",
"covers": [ "TORSO", "LEGS" ],
"coverage": 90,
@@ -7508,6 +8003,7 @@
"to_hit": -1,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "duster_fur",
"color": "brown",
"covers": [ "TORSO", "LEGS" ],
"coverage": 90,
@@ -7541,6 +8037,7 @@
"to_hit": -1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "duster_leather",
"color": "brown",
"covers": [ "TORSO", "LEGS" ],
"coverage": 90,
@@ -7564,6 +8061,7 @@
"to_hit": -1,
"material": [ "cotton", "kevlar" ],
"symbol": "[",
+ "looks_like": "duster_survivor",
"color": "brown",
"covers": [ "TORSO", "LEGS" ],
"coverage": 85,
@@ -7586,6 +8084,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "sleeveless_duster",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 90,
@@ -7608,6 +8107,7 @@
"to_hit": -1,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "sleeveless_duster_fur",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 90,
@@ -7641,6 +8141,7 @@
"to_hit": -1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "sleeveless_duster_leather",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 90,
@@ -7664,6 +8165,7 @@
"to_hit": -1,
"material": [ "cotton", "kevlar" ],
"symbol": "[",
+ "looks_like": "sleeveless_duster_survivor",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 85,
@@ -7685,6 +8187,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "vest_leather",
"color": "dark_gray",
"covers": [ "LEGS", "TORSO" ],
"coverage": 65,
@@ -7704,6 +8207,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "blanket",
"color": "light_red",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 85,
@@ -7724,6 +8228,7 @@
"price": 0,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "mittens",
"color": "white",
"covers": [ "HANDS" ],
"coverage": 40,
@@ -7742,6 +8247,7 @@
"price": 200,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "socks_wool",
"color": "white",
"covers": [ "FEET" ],
"coverage": 100,
@@ -7760,6 +8266,7 @@
"price": 50,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "socks",
"color": "light_blue",
"covers": [ "FEET" ],
"coverage": 70,
@@ -7778,6 +8285,7 @@
"price": 50,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "socks",
"color": "white",
"covers": [ "FEET" ],
"coverage": 80,
@@ -7795,6 +8303,7 @@
"price": 1200,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "socks",
"color": "blue",
"covers": [ "FEET" ],
"coverage": 100,
@@ -7811,8 +8320,9 @@
"weight": "92 g",
"volume": "500 ml",
"price": 4200,
- "material": [ "cotton", "plastic" ],
+ "material": [ "lycra" ],
"symbol": "[",
+ "looks_like": "bra",
"color": "white",
"covers": [ "TORSO" ],
"coverage": 30,
@@ -7828,8 +8338,9 @@
"weight": "3481 g",
"volume": "7500 ml",
"price": 4500000,
- "material": [ "plastic", "neoprene" ],
+ "material": [ "lycra", "neoprene" ],
"symbol": "[",
+ "looks_like": "jumpsuit",
"color": "dark_gray",
"covers": [ "TORSO", "ARMS", "LEGS", "FEET" ],
"coverage": 95,
@@ -7849,6 +8360,7 @@
"price": 500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "leg_warmers",
"color": "dark_gray",
"covers": [ "FEET", "LEGS" ],
"coverage": 75,
@@ -7868,6 +8380,7 @@
"price": 400,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "arm_warmers",
"color": "dark_gray",
"covers": [ "HANDS", "ARMS" ],
"coverage": 75,
@@ -7887,6 +8400,7 @@
"price": 1200,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "leg_warmers",
"color": "dark_gray",
"covers": [ "FEET", "LEGS" ],
"coverage": 75,
@@ -7906,6 +8420,7 @@
"to_hit": -1,
"material": "paper",
"symbol": "[",
+ "looks_like": "plastic_shopping_bag",
"color": "light_gray",
"covers": [ "ARM_EITHER", "HAND_EITHER" ],
"coverage": 4,
@@ -7924,6 +8439,7 @@
"price": 300,
"material": [ "paper" ],
"symbol": "[",
+ "looks_like": "hat_cowboy",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 40,
@@ -7944,6 +8460,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "pants_checkered",
"color": "white",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -7963,6 +8480,7 @@
"price": 500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "longshirt",
"color": "white",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -7975,13 +8493,14 @@
"id": "subsuit_xl",
"type": "ARMOR",
"name": "subject suit",
- "description": "A thin, short-sleeved and short-legged one-piece suit. Judging by the odd tailoring and adjustment points... maybe you don't want to know who wore it. Provides nominal storage and is not very encumbering.",
+ "description": "A thin, short-sleeved and short-legged one-piece suit. Judging by the odd tailoring and adjustment points… maybe you don't want to know who wore it. Provides nominal storage and is not very encumbering.",
"weight": "810 g",
"volume": "5 L",
"price": 11000,
"to_hit": -3,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "jumpsuit",
"color": "yellow",
"covers": [ "LEGS", "ARMS", "TORSO" ],
"coverage": 95,
@@ -8002,6 +8521,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "jumpsuit",
"color": "light_gray",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 95,
@@ -8022,6 +8542,7 @@
"price": 21000,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "suitcase_m",
"color": "red",
"covers": [ "ARM_EITHER", "HAND_EITHER", "LEG_EITHER" ],
"coverage": 5,
@@ -8040,6 +8561,7 @@
"price": 21000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "briefcase",
"color": "blue",
"covers": [ "ARM_EITHER", "HAND_EITHER" ],
"coverage": 5,
@@ -8060,6 +8582,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "dress",
"color": "yellow",
"covers": [ "LEGS", "TORSO" ],
"coverage": 65,
@@ -8078,6 +8601,7 @@
"to_hit": -2,
"material": [ "glass", "plastic" ],
"symbol": "[",
+ "looks_like": "glasses_eye",
"color": "dark_gray",
"covers": [ "EYES" ],
"coverage": 85,
@@ -8097,6 +8621,7 @@
"price": 15000,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "holster",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 15,
@@ -8126,6 +8651,7 @@
"to_hit": -2,
"material": [ "kevlar", "leather" ],
"symbol": "[",
+ "looks_like": "glasses_bal",
"color": "dark_gray",
"covers": [ "EYES" ],
"coverage": 100,
@@ -8147,6 +8673,7 @@
"price": 150000,
"material": [ "kevlar", "leather" ],
"symbol": "[",
+ "looks_like": "touring_suit",
"color": "brown",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 100,
@@ -8168,6 +8695,7 @@
"to_hit": -5,
"material": "cotton",
"symbol": "[",
+ "looks_like": "duffelbag",
"color": "brown",
"covers": [ "ARM_EITHER", "HAND_EITHER" ],
"coverage": 5,
@@ -8190,6 +8718,7 @@
"bashing": 6,
"material": [ "kevlar", "cotton" ],
"symbol": "[",
+ "looks_like": "touring_suit",
"color": "dark_gray",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 95,
@@ -8210,6 +8739,7 @@
"price": 4500,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "longshirt",
"color": "blue",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -8228,6 +8758,7 @@
"price": 1800,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "longshirt",
"color": "light_red",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -8247,6 +8778,7 @@
"price": 2500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "socks",
"color": "dark_gray",
"covers": [ "FEET" ],
"coverage": 100,
@@ -8265,6 +8797,7 @@
"price": 2500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "socks",
"color": "white",
"covers": [ "FEET" ],
"coverage": 100,
@@ -8285,6 +8818,7 @@
"bashing": 10,
"material": [ "kevlar", "plastic" ],
"symbol": "[",
+ "looks_like": "helmet_motor",
"color": "dark_gray",
"covers": [ "HEAD", "EYES", "MOUTH" ],
"coverage": 100,
@@ -8308,6 +8842,7 @@
"bashing": 10,
"material": [ "kevlar", "plastic" ],
"symbol": "[",
+ "looks_like": "tac_fullhelmet",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 95,
@@ -8327,6 +8862,7 @@
"price": 500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "tshirt",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 40,
@@ -8345,6 +8881,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "pants",
"color": "light_gray",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -8353,9 +8890,9 @@
"warmth": 15,
"material_thickness": 2,
"snippet_category": [
- { "id": "blue", "text": "A pair of blue work pants." },
- { "id": "gray", "text": "A pair of gray work pants." },
- { "id": "lightblue", "text": "A pair of light-blue work pants." }
+ { "id": "technician_pants_blue", "text": "A pair of blue work pants." },
+ { "id": "technician_pants_gray", "text": "A pair of gray work pants." },
+ { "id": "technician_pants_lightblue", "text": "A pair of light-blue work pants." }
],
"flags": [ "VARSIZE", "POCKETS" ]
},
@@ -8369,6 +8906,7 @@
"price": 1000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "polo_shirt",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 40,
@@ -8377,9 +8915,9 @@
"warmth": 8,
"material_thickness": 1,
"snippet_category": [
- { "id": "blue", "text": "A blue work t-shirt with a small front pocket." },
- { "id": "gray", "text": "A gray work t-shirt with a small front pocket." },
- { "id": "lightblue", "text": "A light-blue work t-shirt with a small front pocket." }
+ { "id": "technician_shirt_blue", "text": "A blue work t-shirt with a small front pocket." },
+ { "id": "technician_shirt_gray", "text": "A gray work t-shirt with a small front pocket." },
+ { "id": "technician_shirt_lightblue", "text": "A light-blue work t-shirt with a small front pocket." }
],
"flags": [ "VARSIZE" ]
},
@@ -8395,6 +8933,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "robe",
"color": "white",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 90,
@@ -8454,6 +8993,7 @@
"price": 2000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "leggings",
"color": "dark_gray",
"covers": [ "FEET", "LEGS" ],
"coverage": 100,
@@ -8472,6 +9012,7 @@
"price": 16,
"material": [ "aluminum" ],
"symbol": "[",
+ "looks_like": "hat_cotton",
"color": "yellow",
"covers": [ "HEAD" ],
"coverage": 90,
@@ -8488,6 +9029,7 @@
"bashing": 5,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "holster",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 20,
@@ -8517,6 +9059,7 @@
"price": 19500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hat_porkpie",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 50,
@@ -8538,6 +9081,7 @@
"bashing": 2,
"material": [ "leather", "nomex" ],
"symbol": "[",
+ "looks_like": "jumpsuit",
"color": "light_red",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 95,
@@ -8559,6 +9103,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "coat_winter",
"color": "dark_gray",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -8580,6 +9125,7 @@
"to_hit": -1,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "trenchcoat_leather",
"color": "brown",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -8612,6 +9158,7 @@
"to_hit": -1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "trenchcoat",
"color": "brown",
"covers": [ "TORSO", "ARMS" ],
"coverage": 90,
@@ -8634,6 +9181,7 @@
"to_hit": -1,
"material": [ "cotton", "kevlar" ],
"symbol": "[",
+ "looks_like": "trenchcoat",
"color": "brown",
"covers": [ "TORSO", "ARMS" ],
"coverage": 85,
@@ -8654,6 +9202,7 @@
"price": 7500,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "bowlhat",
"color": "brown",
"covers": [ "HEAD" ],
"coverage": 50,
@@ -8663,24 +9212,6 @@
"environmental_protection": 2,
"flags": [ "VARSIZE", "WATERPROOF", "WATER_FRIENDLY", "FANCY" ]
},
- {
- "id": "trunks",
- "type": "ARMOR",
- "name": "pair of swimming trunks",
- "name_plural": "pairs of swimming trunks",
- "description": "A pair of swimming trunks, with netting.",
- "weight": "210 g",
- "volume": "750 ml",
- "price": 1800,
- "to_hit": 1,
- "material": [ "cotton" ],
- "symbol": "[",
- "color": "blue",
- "covers": [ "LEGS" ],
- "coverage": 35,
- "material_thickness": 1,
- "flags": [ "VARSIZE", "WATER_FRIENDLY" ]
- },
{
"id": "tshirt",
"type": "ARMOR",
@@ -8691,6 +9222,7 @@
"price": 800,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "camisole",
"color": "white",
"covers": [ "TORSO" ],
"coverage": 90,
@@ -8708,6 +9240,7 @@
"price": 800,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "tshirt",
"color": "white",
"covers": [ "TORSO" ],
"coverage": 90,
@@ -8728,6 +9261,7 @@
"name": "tour t-shirt",
"description": "A short-sleeved cotton shirt.",
"price": 1000,
+ "looks_like": "tshirt",
"price_postapoc": 1200,
"color": "dark_gray",
"snippet_category": [
@@ -8776,6 +9310,7 @@
"to_hit": -5,
"material": "cotton",
"symbol": "[",
+ "looks_like": "sweatshirt",
"color": "dark_gray",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 75,
@@ -8794,6 +9329,7 @@
"price": 70,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "tunic",
"color": "light_red",
"covers": [ "TORSO", "LEGS" ],
"coverage": 65,
@@ -8813,6 +9349,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hat_cotton",
"color": "white",
"covers": [ "HEAD" ],
"coverage": 50,
@@ -8832,6 +9369,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "scarf",
"color": "yellow",
"covers": [ "HEAD" ],
"coverage": 70,
@@ -8851,6 +9389,7 @@
"to_hit": -5,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "suit",
"color": "dark_gray",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 95,
@@ -8868,8 +9407,9 @@
"weight": "92 g",
"volume": "250 ml",
"price": 2000,
- "material": [ "cotton", "plastic" ],
+ "material": [ "lycra" ],
"symbol": "[",
+ "looks_like": "longshirt",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 95,
@@ -8886,8 +9426,9 @@
"weight": "82 g",
"volume": "250 ml",
"price": 2000,
- "material": [ "cotton", "plastic" ],
+ "material": [ "lycra" ],
"symbol": "[",
+ "looks_like": "shorts",
"color": "dark_gray",
"covers": [ "LEGS" ],
"coverage": 45,
@@ -8905,6 +9446,7 @@
"price": 1000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "tshirt",
"color": "white",
"covers": [ "TORSO" ],
"coverage": 60,
@@ -8922,6 +9464,7 @@
"price": 2500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "jumpsuit",
"color": "light_gray",
"covers": [ "TORSO", "ARMS", "LEGS" ],
"coverage": 95,
@@ -8943,6 +9486,7 @@
"to_hit": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "armguards_larmor",
"color": "brown",
"covers": [ "ARMS" ],
"coverage": 50,
@@ -8964,6 +9508,7 @@
"to_hit": -1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "scarf",
"color": "white",
"covers": [ "MOUTH", "EYES" ],
"coverage": 100,
@@ -8982,6 +9527,7 @@
"price": 3900,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "tank_top",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 60,
@@ -9002,6 +9548,7 @@
"to_hit": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "vest",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 90,
@@ -9023,6 +9570,7 @@
"to_hit": 1,
"material": [ "leather", "iron" ],
"symbol": "[",
+ "looks_like": "vest_leather",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 90,
@@ -9043,6 +9591,7 @@
"price": 5000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "blazer",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 60,
@@ -9052,88 +9601,6 @@
"material_thickness": 1,
"flags": [ "VARSIZE", "FANCY" ]
},
- {
- "id": "wetsuit",
- "type": "ARMOR",
- "name": "wetsuit",
- "description": "A full-body neoprene wetsuit.",
- "weight": "5110 g",
- "volume": "5 L",
- "price": 10000,
- "to_hit": -3,
- "material": [ "neoprene", "cotton" ],
- "symbol": "[",
- "color": "dark_gray",
- "covers": [ "LEGS", "TORSO", "ARMS" ],
- "coverage": 100,
- "encumbrance": 15,
- "storage": "1 L",
- "warmth": 50,
- "material_thickness": 1,
- "environmental_protection": 2,
- "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ]
- },
- {
- "id": "wetsuit_gloves",
- "type": "ARMOR",
- "name": "pair of swimming gloves",
- "name_plural": "pairs of swimming gloves",
- "description": "A pair of very flexible neoprene-silicone rubber gloves, suitable for underwater use.",
- "weight": "93 g",
- "volume": "500 ml",
- "price": 3000,
- "to_hit": 1,
- "material": [ "neoprene", "cotton" ],
- "symbol": "[",
- "color": "dark_gray",
- "covers": [ "HANDS" ],
- "coverage": 100,
- "encumbrance": 10,
- "warmth": 30,
- "material_thickness": 1,
- "environmental_protection": 1,
- "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ]
- },
- {
- "id": "wetsuit_hood",
- "type": "ARMOR",
- "name": "wetsuit hood",
- "description": "A neoprene hood, commonly worn by divers.",
- "weight": "270 g",
- "volume": "1 L",
- "price": 4500,
- "material": [ "neoprene", "cotton" ],
- "symbol": "[",
- "color": "dark_gray",
- "covers": [ "HEAD" ],
- "coverage": 100,
- "encumbrance": 10,
- "warmth": 30,
- "material_thickness": 1,
- "environmental_protection": 1,
- "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ]
- },
- {
- "id": "wetsuit_spring",
- "type": "ARMOR",
- "name": "spring suit",
- "description": "A long-sleeved spring wetsuit with pink color details and cleavage-enhancing, hip-accentuating construction. Not as protective as a full-body suit, but also less restrictive.",
- "weight": "3120 g",
- "volume": "4 L",
- "price": 12000,
- "to_hit": -3,
- "material": [ "neoprene", "cotton" ],
- "symbol": "[",
- "color": "pink",
- "covers": [ "TORSO", "ARMS" ],
- "coverage": 90,
- "encumbrance": 5,
- "storage": "1 L",
- "warmth": 30,
- "material_thickness": 1,
- "environmental_protection": 2,
- "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ]
- },
{
"id": "winter_gloves_army",
"type": "ARMOR",
@@ -9146,6 +9613,7 @@
"to_hit": 1,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "fire_gauntlets",
"color": "white",
"covers": [ "HANDS" ],
"coverage": 100,
@@ -9164,6 +9632,7 @@
"price": 4375,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "coat_winter",
"color": "white",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -9184,6 +9653,7 @@
"price": 4375,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "pants_army",
"color": "white",
"covers": [ "LEGS" ],
"coverage": 95,
@@ -9204,6 +9674,7 @@
"to_hit": -3,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "dinosuit",
"color": "light_gray",
"covers": [ "LEGS", "TORSO", "ARMS", "HANDS", "HEAD", "FEET", "MOUTH", "EYES" ],
"coverage": 100,
@@ -9224,6 +9695,7 @@
"price": 3500,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "hoodie",
"color": "dark_gray",
"covers": [ "TORSO", "ARMS" ],
"coverage": 95,
@@ -9244,6 +9716,7 @@
"to_hit": -1,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "touring_suit",
"color": "dark_gray",
"covers": [ "TORSO", "HEAD", "ARMS", "LEGS", "FEET" ],
"coverage": 95,
@@ -9265,6 +9738,7 @@
"bashing": 6,
"material": [ "kevlar", "fur" ],
"symbol": "[",
+ "looks_like": "survivor_suit",
"color": "light_gray",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 100,
@@ -9288,6 +9762,7 @@
"bashing": 6,
"material": [ "kevlar", "leather" ],
"symbol": "[",
+ "looks_like": "survivor_suit",
"color": "brown",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 100,
@@ -9304,7 +9779,6 @@
"category": "armor",
"name": "XL heavy survivor suit",
"description": "A massive, heavy, hand-built combination armor made from a reinforced bulletproof vest and a metal-plated leather jumpsuit. Protects from the elements as well as from harm.",
- "looks_like": "hsurvivor_suit",
"weight": "16500 g",
"volume": "18750 ml",
"price": 200000,
@@ -9312,6 +9786,7 @@
"bashing": 6,
"material": [ "kevlar", "steel", "leather" ],
"symbol": "[",
+ "looks_like": "hsurvivor_suit",
"color": "dark_gray",
"covers": [ "LEGS", "TORSO", "ARMS" ],
"coverage": 100,
@@ -9332,6 +9807,7 @@
"price": 2500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "pants",
"color": "white",
"covers": [ "LEGS" ],
"coverage": 80,
@@ -9352,6 +9828,7 @@
"bashing": 8,
"material": [ "plastic", "steel", "leather" ],
"symbol": "&",
+ "looks_like": "briefcase",
"color": "dark_gray",
"covers": [ "ARM_EITHER", "HAND_EITHER" ],
"coverage": 10,
@@ -9370,6 +9847,7 @@
"price": 117500,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "beekeeping_suit",
"color": "yellow",
"covers": [ "HEAD", "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 100,
@@ -9390,6 +9868,7 @@
"price": 400000,
"material": [ "kevlar", "plastic" ],
"symbol": "[",
+ "looks_like": "hazmat_suit",
"color": "light_red",
"covers": [ "HEAD", "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 100,
@@ -9409,6 +9888,7 @@
"price": 117500,
"material": [ "nomex" ],
"symbol": "[",
+ "looks_like": "hazmat_suit",
"color": "brown",
"covers": [ "HEAD", "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 100,
@@ -9429,6 +9909,7 @@
"price": 240500,
"material": [ "nomex", "kevlar" ],
"symbol": "[",
+ "looks_like": "jumpsuit",
"color": "light_gray",
"covers": [ "HEAD", "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 100,
@@ -9450,6 +9931,7 @@
"to_hit": 2,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "gloves_light",
"color": "dark_gray",
"covers": [ "HANDS" ],
"coverage": 90,
@@ -9469,6 +9951,7 @@
"price": 2200,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "hat_ball",
"color": "dark_gray",
"covers": [ "HEAD" ],
"coverage": 40,
@@ -9490,6 +9973,7 @@
"rigid": false,
"material": "leather",
"symbol": "[",
+ "looks_like": "quiver",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 30,
@@ -9518,6 +10002,7 @@
"bashing": 10,
"material": "steel",
"symbol": "[",
+ "looks_like": "pot_helmet",
"color": "light_gray",
"covers": [ "HEAD" ],
"coverage": 55,
@@ -9539,6 +10024,7 @@
"bashing": 10,
"material": [ "bronze" ],
"symbol": "[",
+ "looks_like": "helmet_plate",
"color": "yellow",
"covers": [ "HEAD", "EYES", "MOUTH" ],
"coverage": 90,
@@ -9562,6 +10048,7 @@
"bashing": 6,
"material": [ "bronze" ],
"symbol": "[",
+ "looks_like": "cuirass_lightplate",
"color": "yellow",
"covers": [ "TORSO" ],
"coverage": 90,
@@ -9583,6 +10070,7 @@
"to_hit": 1,
"material": [ "bronze", "leather" ],
"symbol": "[",
+ "looks_like": "legguard_lightplate",
"color": "yellow",
"covers": [ "LEGS" ],
"coverage": 70,
@@ -9602,6 +10090,7 @@
"to_hit": -1,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "blanket",
"color": "light_blue",
"covers": [ "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 90,
@@ -9610,5 +10099,39 @@
"material_thickness": 1,
"environmental_protection": 1,
"flags": [ "OVERSIZE", "OUTER", "WATERPROOF", "ALLOWS_NATURAL_ATTACKS" ]
+ },
+ {
+ "id": "unitard",
+ "type": "ARMOR",
+ "name": "unitard",
+ "description": "A skin-tight spandex garment resembling a crew necked leotard combined with leggings. Commonly used by gymnasts, dancers and equestrian vaulters, the unitard provides overall coverage with great flexibility.",
+ "weight": "110 g",
+ "volume": "250 ml",
+ "price": 3100,
+ "material": [ "lycra" ],
+ "symbol": "[",
+ "color": "dark_gray",
+ "covers": [ "TORSO", "LEGS" ],
+ "coverage": 90,
+ "warmth": 20,
+ "material_thickness": 1,
+ "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ]
+ },
+ {
+ "id": "zentai",
+ "type": "ARMOR",
+ "name": "zentai",
+ "description": "Short for 'zenshin taitsu', a zentai is a form fitting full body nylon and spandex garment. Though it covers your face, you can see through the integrated hood. With a couple of these and some friends and you could put on some kabuki.",
+ "weight": "300 g",
+ "volume": "500 ml",
+ "price": 2500,
+ "material": [ "lycra" ],
+ "symbol": "[",
+ "color": "dark_gray",
+ "covers": [ "HEAD", "MOUTH", "EYES", "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
+ "coverage": 100,
+ "warmth": 20,
+ "material_thickness": 1,
+ "flags": [ "VARSIZE", "SKINTIGHT", "WATER_FRIENDLY" ]
}
]
diff --git a/data/json/items/armor/ammo_pouch.json b/data/json/items/armor/ammo_pouch.json
index 21504d34db9c4..f2f81f5026b52 100644
--- a/data/json/items/armor/ammo_pouch.json
+++ b/data/json/items/armor/ammo_pouch.json
@@ -10,6 +10,7 @@
"price_postapoc": 5000,
"material": "cotton",
"symbol": "[",
+ "looks_like": "pouch",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 20,
@@ -38,6 +39,7 @@
"rigid": false,
"material": "cotton",
"symbol": "[",
+ "looks_like": "pouch",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 15,
@@ -65,6 +67,7 @@
"rigid": false,
"material": "cotton",
"symbol": "[",
+ "looks_like": "tool_belt",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 15,
@@ -87,6 +90,7 @@
"description": "This light vest is meant to carry your gear and ammunition comfortably distributed about your torso. They are popular amongst law enforcement, but less so than combination tactical vests incorporating kevlar. Lightweight and easy to don, this vest can hold four magazines close at hand in its many pouches.",
"weight": "600 g",
"volume": "1250 ml",
+ "looks_like": "vest",
"price": 7400,
"price_postapoc": 12000,
"rigid": false,
@@ -122,6 +126,7 @@
"price_postapoc": 4500,
"material": "cotton",
"symbol": "[",
+ "looks_like": "pouch",
"color": "dark_gray",
"covers": [ "FOOT_EITHER" ],
"coverage": 5,
@@ -150,6 +155,7 @@
"rigid": false,
"material": "cotton",
"symbol": "[",
+ "looks_like": "ammo_satchel",
"color": "dark_gray",
"covers": [ "LEG_EITHER" ],
"coverage": 15,
@@ -180,6 +186,7 @@
"bashing": 6,
"material": [ "kevlar" ],
"symbol": "[",
+ "looks_like": "modularvestkevlar",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 85,
@@ -214,6 +221,7 @@
"bashing": 6,
"material": [ "kevlar", "ceramic" ],
"symbol": "[",
+ "looks_like": "modularvestkevlar",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 85,
@@ -248,6 +256,7 @@
"bashing": 6,
"material": [ "kevlar", "hardsteel" ],
"symbol": "[",
+ "looks_like": "modularvestkevlar",
"color": "light_cyan",
"covers": [ "TORSO" ],
"coverage": 85,
@@ -282,6 +291,7 @@
"bashing": 6,
"material": [ "kevlar", "kevlar_rigid" ],
"symbol": "[",
+ "looks_like": "vest",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 85,
@@ -316,6 +326,7 @@
"bashing": 8,
"material": [ "kevlar", "steel" ],
"symbol": "[",
+ "looks_like": "modularvestkevlar",
"color": "light_cyan",
"covers": [ "TORSO" ],
"coverage": 85,
@@ -350,6 +361,7 @@
"bashing": 8,
"material": [ "kevlar", "superalloy" ],
"symbol": "[",
+ "looks_like": "modularvestkevlar",
"color": "light_cyan",
"covers": [ "TORSO" ],
"coverage": 85,
diff --git a/data/json/items/armor/backpacks.json b/data/json/items/armor/backpacks.json
index a44938418fc7e..a3b12162595d9 100644
--- a/data/json/items/armor/backpacks.json
+++ b/data/json/items/armor/backpacks.json
@@ -11,6 +11,7 @@
"rigid": false,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "pouch",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 30,
@@ -33,6 +34,7 @@
"rigid": false,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "backpack",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 50,
@@ -65,6 +67,7 @@
"rigid": false,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "backpack",
"color": "green",
"covers": [ "TORSO", "LEGS" ],
"coverage": 75,
@@ -87,6 +90,7 @@
"rigid": false,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "backpack",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 30,
@@ -109,6 +113,7 @@
"rigid": false,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "backpack",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 50,
@@ -129,7 +134,9 @@
"price": 20000,
"price_postapoc": 40000,
"rigid": false,
+ "material": [ "leather" ],
"symbol": "[",
+ "looks_like": "rucksack",
"color": "black",
"covers": [ "TORSO" ],
"coverage": 50,
@@ -152,6 +159,7 @@
"rigid": false,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "backpack",
"color": "yellow",
"covers": [ "TORSO" ],
"coverage": 40,
@@ -173,6 +181,7 @@
"rigid": false,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "rucksack",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 50,
@@ -194,6 +203,7 @@
"price_postapoc": 7900,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "backpack",
"color": "blue",
"covers": [ "TORSO" ],
"coverage": 40,
@@ -217,6 +227,7 @@
"to_hit": -1,
"material": [ "plastic", "cotton" ],
"symbol": "[",
+ "looks_like": "backpack",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 40,
@@ -238,6 +249,7 @@
"rigid": false,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "pouch",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 30,
@@ -261,6 +273,7 @@
"to_hit": -2,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "pouch",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 40,
@@ -286,6 +299,7 @@
"bashing": 1,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "purse",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 30,
@@ -307,6 +321,7 @@
"rigid": false,
"material": [ "cotton", "kevlar" ],
"symbol": "[",
+ "looks_like": "backpack",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 35,
@@ -331,6 +346,7 @@
"bashing": 2,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "pouch",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 10,
@@ -352,6 +368,7 @@
"rigid": false,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "backpack",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 40,
@@ -376,6 +393,7 @@
"bashing": 1,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "backpack",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 20,
@@ -400,6 +418,7 @@
"bashing": 1,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "purse",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 30,
@@ -422,6 +441,7 @@
"rigid": false,
"material": [ "leather", "cotton" ],
"symbol": "[",
+ "looks_like": "rucksack",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 40,
@@ -443,6 +463,7 @@
"rigid": false,
"material": [ "leather", "cotton" ],
"symbol": "[",
+ "looks_like": "backpack",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 30,
@@ -464,6 +485,7 @@
"rigid": false,
"material": [ "leather", "cotton" ],
"symbol": "[",
+ "looks_like": "rucksack",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 40,
@@ -485,6 +507,7 @@
"rigid": false,
"material": [ "leather", "cotton" ],
"symbol": "[",
+ "looks_like": "backpack",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 30,
@@ -506,6 +529,7 @@
"rigid": false,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "quiver_large",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 35,
@@ -536,6 +560,7 @@
"rigid": false,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "backpack",
"color": "yellow",
"covers": [ "TORSO" ],
"coverage": 40,
diff --git a/data/json/items/armor/bandolier.json b/data/json/items/armor/bandolier.json
index 8fa00fcedc2ae..0bce8b165f478 100644
--- a/data/json/items/armor/bandolier.json
+++ b/data/json/items/armor/bandolier.json
@@ -10,6 +10,7 @@
"price_postapoc": 2900,
"material": "leather",
"symbol": "[",
+ "looks_like": "belt",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 10,
@@ -18,7 +19,27 @@
"use_action": {
"type": "bandolier",
"capacity": 18,
- "ammo": [ "32", "762x25", "38", "357mag", "38super", "40", "10mm", "44", "45", "45colt", "9x18", "9mm", "454", "500" ],
+ "ammo": [
+ "32",
+ "762x25",
+ "38",
+ "357mag",
+ "357sig",
+ "380",
+ "38super",
+ "40",
+ "10mm",
+ "44",
+ "45",
+ "45colt",
+ "46",
+ "57",
+ "9x18",
+ "9mm",
+ "454",
+ "460",
+ "500"
+ ],
"draw_cost": 20
},
"flags": [ "WATER_FRIENDLY", "WAIST", "OVERSIZE", "FANCY" ]
@@ -34,6 +55,7 @@
"price_postapoc": 2900,
"material": "leather",
"symbol": "[",
+ "looks_like": "belt",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 10,
@@ -42,7 +64,23 @@
"use_action": {
"type": "bandolier",
"capacity": 16,
- "ammo": [ "22", "223", "5x50", "545x39", "3006", "308", "300", "762", "762R", "8x40mm" ],
+ "ammo": [
+ "22",
+ "223",
+ "270win",
+ "300blk",
+ "5x50",
+ "545x39",
+ "3006",
+ "308",
+ "300",
+ "762",
+ "762R",
+ "8x40mm",
+ "4570",
+ "50",
+ "700nx"
+ ],
"draw_cost": 20
},
"flags": [ "WATER_FRIENDLY", "WAIST", "OVERSIZE" ]
@@ -58,12 +96,13 @@
"price_postapoc": 2900,
"material": "leather",
"symbol": "[",
+ "looks_like": "belt",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 10,
"encumbrance": 2,
"material_thickness": 1,
- "use_action": { "type": "bandolier", "capacity": 25, "ammo": [ "410shot", "shot", "20x66mm", "shotcanister" ], "draw_cost": 25 },
+ "use_action": { "type": "bandolier", "capacity": 25, "ammo": [ "410shot", "shot", "20x66mm", "signal_flare" ], "draw_cost": 25 },
"flags": [ "WATER_FRIENDLY", "WAIST", "OVERSIZE" ]
},
{
@@ -77,12 +116,13 @@
"price_postapoc": 6900,
"material": "leather",
"symbol": "[",
+ "looks_like": "belt",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 12,
"encumbrance": 3,
"material_thickness": 1,
- "use_action": { "type": "bandolier", "capacity": 50, "ammo": [ "410shot", "shot", "20x66mm", "shotcanister" ], "draw_cost": 35 },
+ "use_action": { "type": "bandolier", "capacity": 50, "ammo": [ "410shot", "shot", "20x66mm", "signal_flare" ], "draw_cost": 35 },
"flags": [ "WATER_FRIENDLY", "OVERSIZE", "BELTED" ]
},
{
@@ -97,12 +137,18 @@
"price_postapoc": 8900,
"material": "leather",
"symbol": "[",
+ "looks_like": "ammo_pouch",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 10,
"encumbrance": 2,
"material_thickness": 1,
- "use_action": { "type": "bandolier", "capacity": 14, "ammo": [ "flintlock", "36paper", "44paper", "blunderbuss" ], "draw_cost": 20 },
+ "use_action": {
+ "type": "bandolier",
+ "capacity": 14,
+ "ammo": [ "flintlock", "36paper", "44paper", "blunderbuss", "shotcanister", "shotpaper" ],
+ "draw_cost": 20
+ },
"flags": [ "WATER_FRIENDLY", "WAIST", "OVERSIZE" ]
},
{
@@ -116,6 +162,7 @@
"price_postapoc": 5900,
"material": "cotton",
"symbol": "[",
+ "looks_like": "belt",
"color": "dark_gray",
"covers": [ "HAND_EITHER" ],
"coverage": 5,
@@ -124,7 +171,23 @@
"use_action": {
"type": "bandolier",
"capacity": 4,
- "ammo": [ "22", "223", "5x50", "545x39", "3006", "308", "300", "762", "762R", "8x40mm" ],
+ "ammo": [
+ "22",
+ "223",
+ "270win",
+ "300blk",
+ "5x50",
+ "545x39",
+ "3006",
+ "308",
+ "300",
+ "762",
+ "762R",
+ "8x40mm",
+ "4570",
+ "50",
+ "700nx"
+ ],
"draw_cost": 20
},
"flags": [ "WATER_FRIENDLY", "BELTED", "ALLOWS_NATURAL_ATTACKS" ]
@@ -141,6 +204,7 @@
"price_postapoc": 9900,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "ammo_satchel",
"color": "dark_gray",
"covers": [ "LEG_EITHER" ],
"coverage": 10,
@@ -149,6 +213,28 @@
"use_action": { "type": "bandolier", "capacity": 4, "ammo": [ "40mm" ], "draw_cost": 20 },
"flags": [ "WATER_FRIENDLY", "BELTED", "OVERSIZE" ]
},
+ {
+ "id": "stone_pouch",
+ "type": "ARMOR",
+ "name": "stone pouch",
+ "name_plural": "stone pouches",
+ "description": "A medium-sized pouch for storing rocks, with straps for attaching it to your belt or other webbing.",
+ "weight": "90 g",
+ "volume": "250 ml",
+ "price": 5900,
+ "price_postapoc": 9900,
+ "rigid": false,
+ "material": [ "cotton", "leather" ],
+ "symbol": "[",
+ "looks_like": "ammo_satchel",
+ "color": "dark_gray",
+ "covers": [ "LEG_EITHER" ],
+ "coverage": 10,
+ "encumbrance": 4,
+ "material_thickness": 1,
+ "use_action": { "type": "bandolier", "capacity": 10, "ammo": [ "rock" ], "draw_cost": 20 },
+ "flags": [ "WATER_FRIENDLY", "BELTED", "OVERSIZE" ]
+ },
{
"id": "grenadebandolier",
"type": "ARMOR",
@@ -162,6 +248,7 @@
"rigid": false,
"material": "cotton",
"symbol": "[",
+ "looks_like": "belt",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 15,
diff --git a/data/json/items/armor/boots.json b/data/json/items/armor/boots.json
index 22f2dd767b3e3..fbda446ccd05f 100644
--- a/data/json/items/armor/boots.json
+++ b/data/json/items/armor/boots.json
@@ -12,6 +12,7 @@
"to_hit": -2,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "flip_flops",
"color": "brown",
"covers": [ "FEET" ],
"coverage": 40,
@@ -33,6 +34,7 @@
"bashing": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "dress_shoes",
"color": "dark_gray",
"covers": [ "FEET" ],
"coverage": 90,
@@ -57,6 +59,7 @@
"bashing": 4,
"material": [ "bone", "leather" ],
"symbol": "[",
+ "looks_like": "boots",
"color": "white",
"covers": [ "FEET" ],
"coverage": 95,
@@ -80,6 +83,7 @@
"to_hit": 2,
"material": [ "plastic", "nomex" ],
"symbol": "[",
+ "looks_like": "steeltoed",
"color": "dark_gray",
"covers": [ "FEET" ],
"coverage": 100,
@@ -104,6 +108,7 @@
"bashing": 4,
"material": [ "chitin" ],
"symbol": "[",
+ "looks_like": "boots_bone",
"color": "green",
"covers": [ "FEET" ],
"coverage": 95,
@@ -139,6 +144,7 @@
"bashing": 1,
"material": [ "kevlar", "leather" ],
"symbol": "[",
+ "looks_like": "boots",
"color": "dark_gray",
"covers": [ "FEET" ],
"coverage": 100,
@@ -163,6 +169,7 @@
"bashing": 1,
"material": [ "kevlar", "nomex" ],
"symbol": "[",
+ "looks_like": "boots_combat",
"color": "light_gray",
"covers": [ "FEET" ],
"coverage": 100,
@@ -186,6 +193,7 @@
"bashing": 1,
"material": [ "leather", "fur" ],
"symbol": "[",
+ "looks_like": "boots",
"color": "brown",
"covers": [ "FEET" ],
"coverage": 90,
@@ -210,6 +218,7 @@
"bashing": 1,
"material": [ "kevlar", "plastic", "neoprene" ],
"symbol": "[",
+ "looks_like": "boots_bunker",
"color": "dark_gray",
"covers": [ "FEET" ],
"coverage": 100,
@@ -233,6 +242,7 @@
"bashing": 1,
"material": [ "leather", "plastic" ],
"symbol": "[",
+ "looks_like": "boots",
"color": "brown",
"covers": [ "FEET" ],
"coverage": 95,
@@ -257,6 +267,7 @@
"bashing": 1,
"material": [ "kevlar", "steel" ],
"symbol": "[",
+ "looks_like": "boots_combat",
"color": "dark_gray",
"covers": [ "FEET" ],
"coverage": 100,
@@ -281,6 +292,7 @@
"bashing": 4,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "boots",
"color": "brown",
"covers": [ "FEET" ],
"coverage": 95,
@@ -305,6 +317,7 @@
"bashing": 1,
"material": [ "kevlar", "cotton" ],
"symbol": "[",
+ "looks_like": "boots_combat",
"color": "green",
"covers": [ "FEET" ],
"coverage": 100,
@@ -329,6 +342,7 @@
"bashing": 7,
"material": [ "iron", "leather" ],
"symbol": "[",
+ "looks_like": "boots_steel",
"color": "light_gray",
"covers": [ "FEET" ],
"coverage": 100,
@@ -351,6 +365,7 @@
"to_hit": 2,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "boots",
"color": "dark_gray",
"covers": [ "FEET" ],
"coverage": 100,
@@ -375,6 +390,7 @@
"bashing": 4,
"material": [ "steel", "iron" ],
"symbol": "[",
+ "looks_like": "boots_steel",
"color": "light_gray",
"covers": [ "FEET" ],
"coverage": 80,
@@ -398,6 +414,7 @@
"bashing": 4,
"material": [ "leather", "steel" ],
"symbol": "[",
+ "looks_like": "boots_combat",
"color": "brown",
"covers": [ "FEET" ],
"coverage": 90,
@@ -422,6 +439,7 @@
"bashing": 1,
"material": [ "kevlar", "leather" ],
"symbol": "[",
+ "looks_like": "boots_combat",
"color": "brown",
"covers": [ "FEET" ],
"coverage": 100,
@@ -456,6 +474,7 @@
"to_hit": -1,
"material": [ "wool", "plastic" ],
"symbol": "[",
+ "looks_like": "boots_larmor",
"color": "light_gray",
"covers": [ "FEET" ],
"coverage": 90,
@@ -480,6 +499,7 @@
"bashing": 1,
"material": [ "kevlar", "fur" ],
"symbol": "[",
+ "looks_like": "boots_fur",
"color": "light_gray",
"covers": [ "FEET" ],
"coverage": 100,
@@ -504,6 +524,7 @@
"bashing": 1,
"material": [ "kevlar", "leather" ],
"symbol": "[",
+ "looks_like": "boots_combat",
"color": "brown",
"covers": [ "FEET" ],
"coverage": 100,
@@ -526,6 +547,7 @@
"bashing": 2,
"material": [ "cotton", "leather" ],
"symbol": "[",
+ "looks_like": "sneakers",
"color": "light_gray",
"covers": [ "FEET" ],
"coverage": 80,
@@ -547,6 +569,7 @@
"bashing": 2,
"material": [ "cotton", "leather" ],
"symbol": "[",
+ "looks_like": "dress_shoes",
"color": "light_gray",
"covers": [ "FEET" ],
"coverage": 70,
@@ -569,6 +592,7 @@
"bashing": 5,
"material": [ "wood" ],
"symbol": "[",
+ "looks_like": "sandals",
"color": "yellow",
"covers": [ "FEET" ],
"coverage": 85,
@@ -592,6 +616,7 @@
"bashing": 14,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "sneakers",
"color": "light_red",
"covers": [ "FEET" ],
"coverage": 85,
@@ -615,6 +640,7 @@
"bashing": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "dress_shoes",
"color": "dark_gray",
"covers": [ "FEET" ],
"coverage": 60,
@@ -637,6 +663,7 @@
"bashing": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "sneakers",
"color": "dark_gray",
"covers": [ "FEET" ],
"coverage": 60,
@@ -658,6 +685,7 @@
"to_hit": -2,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "sneakers",
"color": "blue",
"covers": [ "FEET" ],
"coverage": 10,
@@ -677,6 +705,7 @@
"price_postapoc": 500,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "socks",
"color": "brown",
"covers": [ "FEET" ],
"coverage": 65,
@@ -697,6 +726,7 @@
"price_postapoc": 700,
"material": [ "fur" ],
"symbol": "[",
+ "looks_like": "socks_wool",
"color": "brown",
"covers": [ "FEET" ],
"coverage": 65,
@@ -717,6 +747,7 @@
"price_postapoc": 525,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "socks",
"color": "brown",
"covers": [ "FEET" ],
"coverage": 65,
@@ -737,6 +768,7 @@
"price_postapoc": 500,
"material": [ "wool" ],
"symbol": "[",
+ "looks_like": "socks_wool",
"color": "blue",
"covers": [ "FEET" ],
"coverage": 65,
@@ -759,6 +791,7 @@
"bashing": 5,
"material": [ "wood", "cotton" ],
"symbol": "[",
+ "looks_like": "clogs",
"color": "yellow",
"covers": [ "FEET" ],
"coverage": 50,
@@ -782,6 +815,7 @@
"bashing": 6,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "dress_shoes",
"color": "dark_gray",
"covers": [ "FEET" ],
"coverage": 30,
@@ -803,6 +837,7 @@
"bashing": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "boots_larmor",
"color": "dark_gray",
"covers": [ "FEET", "LEGS" ],
"coverage": 65,
@@ -825,6 +860,7 @@
"to_hit": -2,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "flip_flops",
"color": "brown",
"covers": [ "FEET" ],
"coverage": 20,
@@ -845,6 +881,7 @@
"to_hit": -2,
"material": [ "cotton", "plastic" ],
"symbol": "[",
+ "looks_like": "sneakers",
"color": "dark_gray",
"covers": [ "FEET" ],
"coverage": 80,
@@ -864,6 +901,7 @@
"price_postapoc": 5000,
"material": [ "fur", "leather" ],
"symbol": "[",
+ "looks_like": "Sandals",
"color": "brown",
"covers": [ "FEET" ],
"coverage": 50,
@@ -885,6 +923,7 @@
"bashing": 5,
"material": [ "kevlar", "cotton" ],
"symbol": "[",
+ "looks_like": "steeltoed",
"color": "dark_gray",
"covers": [ "FEET" ],
"coverage": 95,
@@ -907,6 +946,7 @@
"to_hit": -2,
"material": [ "plastic", "cotton" ],
"symbol": "[",
+ "looks_like": "rollerskates",
"color": "light_gray",
"covers": [ "FEET" ],
"coverage": 100,
@@ -930,6 +970,7 @@
"bashing": 6,
"material": [ "leather", "steel" ],
"symbol": "[",
+ "looks_like": "rollerblades",
"color": "brown",
"covers": [ "FEET" ],
"coverage": 100,
@@ -951,6 +992,7 @@
"price_postapoc": 3500,
"material": [ "wood" ],
"symbol": "[",
+ "looks_like": "clogs",
"color": "light_gray",
"covers": [ "FEET" ],
"coverage": 50,
@@ -971,6 +1013,7 @@
"price_postapoc": 1900,
"material": [ "cotton", "leather" ],
"symbol": "[",
+ "looks_like": "dress_shoes",
"color": "light_blue",
"covers": [ "FEET" ],
"coverage": 80,
@@ -992,6 +1035,7 @@
"to_hit": -2,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "socks_wool",
"color": "brown",
"covers": [ "FEET" ],
"coverage": 30,
@@ -1012,6 +1056,7 @@
"price_postapoc": 12000,
"material": [ "cotton", "leather" ],
"symbol": "[",
+ "looks_like": "shoes_bowling",
"color": "light_blue",
"covers": [ "FEET" ],
"coverage": 80,
@@ -1033,6 +1078,7 @@
"to_hit": -2,
"material": [ "paper" ],
"symbol": "[",
+ "looks_like": "sandals",
"color": "light_gray",
"covers": [ "FEET" ],
"coverage": 30,
@@ -1052,6 +1098,7 @@
"price_postapoc": 4000,
"material": [ "plastic" ],
"symbol": "[",
+ "looks_like": "clownshoes",
"color": "dark_gray",
"covers": [ "FEET" ],
"coverage": 85,
@@ -1074,6 +1121,7 @@
"bashing": 1,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "boots_larmor",
"color": "dark_gray",
"covers": [ "FEET", "LEGS" ],
"coverage": 80,
@@ -1095,6 +1143,7 @@
"price_postapoc": 6900,
"material": [ "neoprene", "cotton" ],
"symbol": "[",
+ "looks_like": "boots_rubber",
"color": "dark_gray",
"covers": [ "FEET" ],
"coverage": 100,
@@ -1116,6 +1165,7 @@
"price_postapoc": 14000,
"material": [ "cotton", "leather" ],
"symbol": "[",
+ "looks_like": "sneakers",
"color": "light_blue",
"covers": [ "FEET" ],
"coverage": 80,
@@ -1137,6 +1187,7 @@
"price_postapoc": 14000,
"material": [ "cotton", "leather" ],
"symbol": "[",
+ "looks_like": "sneakers",
"color": "light_blue",
"covers": [ "FEET" ],
"coverage": 80,
diff --git a/data/json/items/armor/holster.json b/data/json/items/armor/holster.json
index 9b7096be3a4bd..d9eac312df66a 100644
--- a/data/json/items/armor/holster.json
+++ b/data/json/items/armor/holster.json
@@ -10,6 +10,7 @@
"price_postapoc": 19000,
"material": "leather",
"symbol": "[",
+ "looks_like": "quiver_large",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 5,
@@ -29,6 +30,7 @@
"price_postapoc": 12000,
"material": "leather",
"symbol": "[",
+ "looks_like": "holster",
"color": "brown",
"covers": [ "FOOT_EITHER" ],
"coverage": 5,
@@ -56,6 +58,7 @@
"price_postapoc": 9000,
"material": [ "cotton" ],
"symbol": "[",
+ "looks_like": "slingpack",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 5,
@@ -75,6 +78,7 @@
"price_postapoc": 9000,
"material": "leather",
"symbol": "[",
+ "looks_like": "SHEATH_KNIFE",
"color": "light_gray",
"covers": [ "LEG_EITHER" ],
"coverage": 5,
@@ -102,7 +106,7 @@
"volume": "250 ml",
"price": 3000,
"price_postapoc": 1900,
- "material": "plastic",
+ "material": "lycra",
"covers": [ "LEGS" ],
"encumbrance": 1,
"use_action": {
@@ -127,6 +131,7 @@
"price_postapoc": 20000,
"material": [ "leather", "cotton" ],
"symbol": "[",
+ "looks_like": "tacvest",
"color": "green",
"covers": [ "TORSO" ],
"coverage": 20,
@@ -148,6 +153,7 @@
"rigid": false,
"material": "leather",
"symbol": "[",
+ "looks_like": "quiver_large",
"color": "light_gray",
"covers": [ "LEG_EITHER" ],
"coverage": 10,
diff --git a/data/json/items/armor/jewelry.json b/data/json/items/armor/jewelry.json
index f400c3c0d39c9..1f3e4dd15d8e9 100644
--- a/data/json/items/armor/jewelry.json
+++ b/data/json/items/armor/jewelry.json
@@ -27,6 +27,7 @@
"price_postapoc": 100,
"material": [ "wood" ],
"symbol": "[",
+ "looks_like": "earrings",
"color": "brown"
},
{
@@ -71,6 +72,7 @@
"price_postapoc": 1000,
"material": [ "iron" ],
"symbol": "[",
+ "looks_like": "copper_locket",
"color": "brown",
"flags": [ "FANCY" ]
},
@@ -87,6 +89,7 @@
"cutting": 3,
"material": [ "gold" ],
"symbol": "[",
+ "looks_like": "gold_dental_grill",
"color": "yellow",
"covers": [ "MOUTH" ],
"encumbrance": 10,
@@ -103,6 +106,7 @@
"price_postapoc": 1700,
"material": [ "gold" ],
"symbol": "[",
+ "looks_like": "ring_engagement",
"color": "yellow",
"flags": [ "FANCY" ]
},
@@ -119,6 +123,7 @@
"to_hit": -1,
"material": [ "steel" ],
"symbol": "[",
+ "looks_like": "gold_watch",
"color": "light_gray",
"covers": [ "HAND_EITHER" ],
"coverage": 5,
@@ -136,6 +141,7 @@
"price_postapoc": 200,
"material": [ "silver" ],
"symbol": "[",
+ "looks_like": "tieclip",
"color": "light_gray",
"flags": [ "FANCY" ]
},
@@ -150,6 +156,7 @@
"price_postapoc": 100,
"material": [ "copper" ],
"symbol": "[",
+ "looks_like": "bracelet",
"color": "brown"
},
{
@@ -164,6 +171,7 @@
"price_postapoc": 50,
"material": [ "copper" ],
"symbol": "[",
+ "looks_like": "earrings",
"color": "brown"
},
{
@@ -177,6 +185,7 @@
"price_postapoc": 500,
"material": [ "copper" ],
"symbol": "[",
+ "looks_like": "tieclip",
"color": "brown"
},
{
@@ -190,6 +199,7 @@
"price_postapoc": 1000,
"material": [ "copper" ],
"symbol": "[",
+ "looks_like": "necklace",
"color": "brown"
},
{
@@ -203,6 +213,7 @@
"price_postapoc": 1000,
"material": [ "copper" ],
"symbol": "[",
+ "looks_like": "necklace",
"color": "brown"
},
{
@@ -216,6 +227,7 @@
"price_postapoc": 500,
"material": [ "copper" ],
"symbol": "[",
+ "looks_like": "ring_purity",
"color": "brown"
},
{
diff --git a/data/json/items/armor/pets_dog_armor.json b/data/json/items/armor/pets_dog_armor.json
index d1b113355ddc6..32b4ed40e3dce 100644
--- a/data/json/items/armor/pets_dog_armor.json
+++ b/data/json/items/armor/pets_dog_armor.json
@@ -3,6 +3,7 @@
"type": "PET_ARMOR",
"id": "kevlar_harness",
"symbol": "[",
+ "looks_like": "tacvest",
"color": "blue",
"name": "Kevlar dog harness",
"name_plural": "Kevlar dog harnesses",
diff --git a/data/json/items/armor/pets_horse_armor.json b/data/json/items/armor/pets_horse_armor.json
index d7017b98344ab..c4640b3106bd2 100644
--- a/data/json/items/armor/pets_horse_armor.json
+++ b/data/json/items/armor/pets_horse_armor.json
@@ -3,6 +3,7 @@
"type": "PET_ARMOR",
"id": "kevlar_armor_horse",
"symbol": "[",
+ "looks_like": "hsurvivor_suit",
"color": "yellow",
"name": "Kevlar-lined horse peto",
"description": "A heavy mattress-like armor of cloth, leather and thick linings of Kevlar, originally used as protection in bullfighting. You could put this on a friendly horse.",
@@ -135,6 +136,7 @@
"price": 15000,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "dump_pouch",
"color": "green",
"covers": [ "HANDS" ],
"coverage": 50,
diff --git a/data/json/items/armor/power_armor.json b/data/json/items/armor/power_armor.json
index a91d001cb9455..6189ecb845272 100644
--- a/data/json/items/armor/power_armor.json
+++ b/data/json/items/armor/power_armor.json
@@ -14,6 +14,7 @@
"bashing": 1,
"material": [ "steel" ],
"symbol": "[",
+ "looks_like": "power_armor",
"color": "light_gray",
"covers": [ "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 95,
@@ -38,6 +39,7 @@
"bashing": 1,
"material": [ "steel" ],
"symbol": "[",
+ "looks_like": "power_armor_helmet_basic",
"color": "light_gray",
"covers": [ "HEAD", "EYES", "MOUTH" ],
"coverage": 95,
@@ -62,6 +64,7 @@
"bashing": 1,
"material": [ "steel" ],
"symbol": "[",
+ "looks_like": "depowered_armor",
"color": "light_gray",
"covers": [ "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 100,
@@ -88,6 +91,7 @@
"bashing": 1,
"material": [ "steel" ],
"symbol": "[",
+ "looks_like": "bigpack",
"color": "light_gray",
"coverage": 100,
"encumbrance": 40,
@@ -110,6 +114,7 @@
"bashing": 1,
"material": [ "hardsteel", "steel" ],
"symbol": "[",
+ "looks_like": "power_armor",
"color": "dark_gray",
"covers": [ "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 100,
@@ -136,6 +141,7 @@
"bashing": 1,
"material": [ "steel" ],
"symbol": "[",
+ "looks_like": "depowered_helmet",
"color": "light_gray",
"covers": [ "HEAD", "EYES", "MOUTH" ],
"coverage": 100,
@@ -161,6 +167,7 @@
"bashing": 1,
"material": [ "hardsteel", "steel" ],
"symbol": "[",
+ "looks_like": "power_armor_helmet_basic",
"color": "dark_gray",
"covers": [ "HEAD", "EYES", "MOUTH" ],
"coverage": 100,
@@ -186,6 +193,7 @@
"bashing": 1,
"material": [ "superalloy", "plastic" ],
"symbol": "[",
+ "looks_like": "power_armor_helmet_basic",
"color": "dark_gray",
"covers": [ "HEAD", "EYES", "MOUTH" ],
"coverage": 100,
@@ -211,6 +219,7 @@
"bashing": 1,
"material": [ "superalloy", "plastic" ],
"symbol": "[",
+ "looks_like": "depowered_armor",
"color": "dark_gray",
"covers": [ "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"coverage": 100,
diff --git a/data/json/items/armor/swimming.json b/data/json/items/armor/swimming.json
new file mode 100644
index 0000000000000..9b38db838f1f8
--- /dev/null
+++ b/data/json/items/armor/swimming.json
@@ -0,0 +1,239 @@
+[
+ {
+ "id": "trunks",
+ "type": "ARMOR",
+ "name": "pair of swimming trunks",
+ "name_plural": "pairs of swimming trunks",
+ "description": "A pair of swimming trunks, with netting.",
+ "weight": "210 g",
+ "volume": "750 ml",
+ "price": 1800,
+ "to_hit": 1,
+ "material": [ "cotton" ],
+ "symbol": "[",
+ "looks_like": "shorts",
+ "color": "blue",
+ "covers": [ "LEGS" ],
+ "coverage": 35,
+ "material_thickness": 1,
+ "flags": [ "VARSIZE", "WATER_FRIENDLY" ]
+ },
+ {
+ "id": "wetsuit",
+ "type": "ARMOR",
+ "name": "wetsuit",
+ "description": "A full-body neoprene wetsuit.",
+ "weight": "5110 g",
+ "volume": "5 L",
+ "price": 10000,
+ "to_hit": -3,
+ "material": [ "neoprene", "cotton" ],
+ "symbol": "[",
+ "looks_like": "wetsuit_spring",
+ "color": "dark_gray",
+ "covers": [ "LEGS", "TORSO", "ARMS" ],
+ "coverage": 100,
+ "encumbrance": 15,
+ "storage": "1 L",
+ "warmth": 50,
+ "material_thickness": 1,
+ "environmental_protection": 2,
+ "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ]
+ },
+ {
+ "id": "wetsuit_hood",
+ "type": "ARMOR",
+ "name": "wetsuit hood",
+ "description": "A neoprene hood, commonly worn by divers.",
+ "weight": "270 g",
+ "volume": "1 L",
+ "price": 4500,
+ "material": [ "neoprene", "cotton" ],
+ "symbol": "[",
+ "looks_like": "hood_rain",
+ "color": "dark_gray",
+ "covers": [ "HEAD" ],
+ "coverage": 100,
+ "encumbrance": 10,
+ "warmth": 30,
+ "material_thickness": 1,
+ "environmental_protection": 1,
+ "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ]
+ },
+ {
+ "id": "hood_h20survivor",
+ "type": "ARMOR",
+ "category": "armor",
+ "name": "survivor wetsuit hood",
+ "description": "A customized armored neoprene and Kevlar hood, very strong and durable.",
+ "weight": "860 g",
+ "volume": "1500 ml",
+ "price": 58000,
+ "to_hit": -1,
+ "bashing": 10,
+ "material": [ "kevlar", "plastic", "neoprene" ],
+ "symbol": "[",
+ "looks_like": "wetsuit_hood",
+ "color": "dark_gray",
+ "covers": [ "HEAD" ],
+ "coverage": 100,
+ "encumbrance": 25,
+ "warmth": 15,
+ "material_thickness": 2,
+ "environmental_protection": 10,
+ "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY", "OUTER", "HELMET_COMPAT" ]
+ },
+ {
+ "id": "h20survivor_suit",
+ "type": "ARMOR",
+ "category": "armor",
+ "name": "survivor wetsuit",
+ "description": "A lightweight, hand-built combination armor made from a cut-down bulletproof vest and a reinforced neoprene wetsuit. Protects from the elements as well as from harm.",
+ "weight": "6400 g",
+ "volume": "7 L",
+ "price": 110000,
+ "to_hit": -3,
+ "bashing": 6,
+ "material": [ "kevlar", "plastic", "neoprene" ],
+ "symbol": "[",
+ "looks_like": "wetsuit",
+ "color": "dark_gray",
+ "covers": [ "LEGS", "TORSO", "ARMS" ],
+ "coverage": 100,
+ "encumbrance": 20,
+ "storage": "11500 ml",
+ "warmth": 15,
+ "material_thickness": 2,
+ "environmental_protection": 10,
+ "flags": [ "VARSIZE", "WATER_FRIENDLY", "POCKETS", "HOOD", "RAINPROOF", "STURDY" ]
+ },
+ {
+ "id": "gloves_h20survivor",
+ "type": "ARMOR",
+ "category": "armor",
+ "name": "pair of survivor wetsuit gloves",
+ "name_plural": "pairs of survivor wetsuit gloves",
+ "description": "A pair of customized, Kevlar armored neoprene gloves, modified to be easy to wear while providing maximum protection under extreme conditions.",
+ "weight": "390 g",
+ "volume": "750 ml",
+ "price": 18000,
+ "to_hit": 2,
+ "material": [ "kevlar", "plastic", "neoprene" ],
+ "symbol": "[",
+ "looks_like": "gloves_rubber",
+ "color": "dark_gray",
+ "covers": [ "HANDS" ],
+ "coverage": 100,
+ "encumbrance": 25,
+ "warmth": 15,
+ "material_thickness": 1,
+ "environmental_protection": 10,
+ "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY" ]
+ },
+ {
+ "id": "wetsuit_spring",
+ "type": "ARMOR",
+ "name": "spring suit",
+ "description": "A long-sleeved spring wetsuit with pink color details and cleavage-enhancing, hip-accentuating construction. Not as protective as a full-body suit, but also less restrictive.",
+ "weight": "1320 g",
+ "volume": "4 L",
+ "price": 12000,
+ "to_hit": -3,
+ "material": [ "neoprene", "cotton" ],
+ "symbol": "[",
+ "looks_like": "wetsuit",
+ "color": "pink",
+ "covers": [ "TORSO", "ARMS" ],
+ "coverage": 90,
+ "encumbrance": 5,
+ "storage": "1 L",
+ "warmth": 30,
+ "material_thickness": 1,
+ "environmental_protection": 2,
+ "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ]
+ },
+ {
+ "id": "shark_suit_faraday",
+ "type": "ARMOR",
+ "name": "faraday shark suit",
+ "description": "A one piece chainmail suit used by scuba divers for protection against shark bites. It has been conductively interconnected, protecting against electricity.",
+ "weight": "3250 g",
+ "volume": "3500 ml",
+ "price": 35000,
+ "to_hit": -1,
+ "material": [ "steel", "plastic" ],
+ "symbol": "[",
+ "looks_like": "chainmail_hauberk",
+ "color": "light_red",
+ "covers": [ "TORSO", "HEAD", "ARMS", "HANDS", "LEGS", "FEET" ],
+ "coverage": 100,
+ "encumbrance": 30,
+ "warmth": 5,
+ "material_thickness": 3,
+ "flags": [ "VARSIZE", "STURDY", "WATER_FRIENDLY", "ELECTRIC_IMMUNE", "HELMET_COMPAT" ]
+ },
+ {
+ "id": "shark_suit",
+ "type": "ARMOR",
+ "name": "shark suit",
+ "description": "A one piece chainmail suit used by scuba divers for protection against shark bites. It comes with attached plastic helmet and booties.",
+ "weight": "3150 g",
+ "volume": "3500 ml",
+ "price": 35000,
+ "to_hit": -1,
+ "material": [ "steel", "plastic" ],
+ "symbol": "[",
+ "looks_like": "chainmail_suit",
+ "color": "light_red",
+ "covers": [ "TORSO", "HEAD", "ARMS", "HANDS", "LEGS", "FEET" ],
+ "coverage": 100,
+ "encumbrance": 30,
+ "warmth": 5,
+ "material_thickness": 3,
+ "flags": [ "VARSIZE", "STURDY", "WATER_FRIENDLY" ]
+ },
+ {
+ "id": "goggles_swim",
+ "type": "ARMOR",
+ "name": "pair of swim goggles",
+ "name_plural": "pairs of swim goggles",
+ "description": "A small pair of goggles made for swimming.",
+ "weight": "81 g",
+ "volume": "250 ml",
+ "price": 1100,
+ "to_hit": -2,
+ "material": [ "plastic" ],
+ "symbol": "[",
+ "looks_like": "goggles_welding",
+ "color": "light_blue",
+ "covers": [ "EYES" ],
+ "coverage": 100,
+ "encumbrance": 10,
+ "warmth": 10,
+ "material_thickness": 1,
+ "environmental_protection": 4,
+ "flags": [ "WATER_FRIENDLY", "SWIM_GOGGLES" ]
+ },
+ {
+ "id": "wetsuit_gloves",
+ "type": "ARMOR",
+ "name": "pair of swimming gloves",
+ "name_plural": "pairs of swimming gloves",
+ "description": "A pair of very flexible neoprene-silicone rubber gloves, suitable for underwater use.",
+ "weight": "93 g",
+ "volume": "500 ml",
+ "price": 3000,
+ "to_hit": 1,
+ "material": [ "neoprene", "cotton" ],
+ "symbol": "[",
+ "looks_like": "gloves_tactical",
+ "color": "dark_gray",
+ "covers": [ "HANDS" ],
+ "coverage": 100,
+ "encumbrance": 10,
+ "warmth": 30,
+ "material_thickness": 1,
+ "environmental_protection": 1,
+ "flags": [ "VARSIZE", "WATER_FRIENDLY", "SKINTIGHT" ]
+ }
+]
diff --git a/data/json/items/battery.json b/data/json/items/battery.json
index 93d2ca43919a6..17b23244fb097 100644
--- a/data/json/items/battery.json
+++ b/data/json/items/battery.json
@@ -299,7 +299,7 @@
"category": "spare_parts",
"name": "heavy disposable battery",
"name_plural": "heavy disposable batteries",
- "description": "This is a heavy battery cell, universally compatible with all kinds of industrial-grade equipment and large tools. The battery's chemistry means that it has a very high capacity, but cannot be recharged.",
+ "description": "This is a heavy battery cell, universally compatible with all kinds of industrial-grade equipment and large tools. The battery's chemistry means that it has a very high capacity, but cannot be recharged.",
"weight": "950 g",
"volume": "1000ml",
"price": 10000,
diff --git a/data/json/items/bionics.json b/data/json/items/bionics.json
index 68855b52332f9..7e4307671b778 100644
--- a/data/json/items/bionics.json
+++ b/data/json/items/bionics.json
@@ -36,6 +36,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Adrenaline Pump CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A stimulator system that is implanted alongside the adrenal glands, allowing the user to trigger their body's adrenaline response at the cost of some bionic power.",
"price": 4000,
"weight": "250 g",
@@ -46,6 +47,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Active Defense System CBM",
+ "looks_like": "bio_int_enhancer",
"description": "This bionic projects a thin forcefield around the user's body. Anything attempting to penetrate this field has a chance of being deflected at the cost of energy, reducing their ability to deal damage. Bullets will be deflected more than swords and those in turn more than massive objects.",
"price": 950000,
"weight": "1000 g",
@@ -56,6 +58,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Alarm System CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A motion-detecting alarm system will notice almost all movement within a fifteen-foot radius, and will silently alert the user. This is very useful during sleep, or if the user suspects a cloaked pursuer.",
"price": 25000,
"weight": "500 g",
@@ -75,6 +78,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Protective Lenses CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A bionic package that seals the user's eye sockets with highly protective mirrored lenses and re-routes their tear ducts to their mouth. When the user cries, they must spit out or swallow their tears.",
"price": 550000,
"weight": "500 g",
@@ -85,6 +89,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Head Alloy Plating CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Alloy plating that replaces the flesh on the user's head, protecting both their head and jaw regions.",
"price": 350000,
"weight": "1000 g",
@@ -95,6 +100,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Legs Alloy Plating CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Alloy plating that replaces the flesh on the user's legs. Provides passive protection and can be used in conjunction with bionic martial arts.",
"price": 350000,
"difficulty": 3
@@ -104,6 +110,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Torso Alloy Plating CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Alloy plating that replaces the flesh on the user's torso, protecting it from physical trauma.",
"price": 350000,
"weight": "3000 g",
@@ -114,6 +121,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Battery System CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A battery draining attachment to make use of the energy contained in normal, everyday batteries.",
"price": 80000,
"weight": "250 g",
@@ -124,6 +132,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Monomolecular Blade CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A deadly foot-long blade made of advanced material that is installed inside the forearm, capable of being extended through the back of the user's wrist at the cost of a small amount of power. Though exceptionally sharp, it will prevent the user from holding anything else while extended.",
"price": 8000,
"weight": "250 g",
@@ -134,6 +143,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Shotgun Arm CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A concealed, single shot 12 gauge shotgun that is implanted inside the left forearm. Perfect in a pinch.",
"price": 220000,
"difficulty": 3
@@ -143,6 +153,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Blood Analysis CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Small sensors that are implanted in the user's heart, allowing them to analyze their blood. This will detect many illnesses, drugs, and other conditions.",
"price": 320000,
"weight": "150 g",
@@ -153,6 +164,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Blood Filter CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A filtration system that is installed in the heart and can actively filter out chemical impurities, primarily drugs, with limited impact on viruses. Note that it is not a targeted filter; ALL drugs in the system will be affected.",
"price": 350000,
"weight": "200 g",
@@ -163,6 +175,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Cable Charger System CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A complex port that is mounted above the hip. While active, it will recharge bionic power when connected to a battery via jumper cable.",
"price": 80000,
"weight": "250 g",
@@ -173,6 +186,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Subdermal Carbon Filament CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A thin armor made of carbon nanotubes, implanted just beneath the skin. This reduces bashing damage by 2 and cutting damage by 4.",
"price": 750000,
"difficulty": 9
@@ -182,6 +196,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Chain Lightning CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A chain lightning generator that emits a blast of lightning at a target, leaving a trail of lightning in its wake and jumping to additional targets within 4 tiles of the previous target.",
"price": 220000,
"difficulty": 4
@@ -191,6 +206,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Bionic Claws CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Vicious, retractable claws that are implanted inside the user's fingers. These do considerable cutting damage, but prevent the user from holding anything else while extended.",
"price": 550000,
"weight": "500 g",
@@ -201,6 +217,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Internal Climate Control CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A network of thermal piping which eases the effects of high and low ambient temperatures once activated.",
"price": 350000,
"difficulty": 3
@@ -210,6 +227,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Cloaking System CBM",
+ "looks_like": "bio_int_enhancer",
"description": "This high-power system uses a set of cameras and LEDs to make the user blend into their surroundings, rendering them fully invisible to eyes and optical sensors. However, this doesn't prevent detection from other means such as infrared, sonar, etc.",
"price": 850000,
"difficulty": 5
@@ -219,6 +237,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Close Quarters Battle CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A set of bionic processors and databanks, loaded with martial arts combat programs. Whilst active, the CQB module will improve the user's hand to hand combat skills, but prevents them from improving them through combat experience.",
"price": 220000,
"weight": "250 g",
@@ -229,6 +248,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Wired Reflexes CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Bionic nerve stimulators that greatly enhance reaction times, granting a +2 bonus to dexterity.",
"price": 800000,
"weight": "500 g",
@@ -239,6 +259,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Expanded Digestive System CBM",
+ "looks_like": "bio_int_enhancer",
"description": "This module contains three synthetic stomachs and industrial-grade intestines. Not only will these extract much more nutrition from food, but also increase the user's resistance to foodborne illness, and occasionally allow the digestion of rotten food.",
"price": 550000,
"difficulty": 6
@@ -248,6 +269,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Enhanced Hearing CBM",
+ "looks_like": "bio_int_enhancer",
"description": "While this bionic is active, the user's hearing will be drastically improved, allowing them to hear ten times better than the average person. Additionally, high-intensity sounds will be automatically dampened before they can damage their hearing.",
"price": 500000,
"weight": "500 g",
@@ -258,6 +280,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Directional EMP CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Small parabolic EMP field generators that are mounted in the palm of the user's right hand. These can be be used to instantly fire a wide, but short-ranged blast which will disable electronics and robots.",
"price": 720000,
"difficulty": 5
@@ -267,6 +290,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "EMP Projector CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A ranged EMP generator system that is implanted in the user's right arm and hand. The system fires precise, single-target pulses that require time to aim. Extremely effective against electronic targets but mostly useless otherwise.",
"price": 220000,
"difficulty": 5
@@ -276,7 +300,8 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Ethanol Burner CBM",
- "description": "A reactor that burns alcohol as fuel in an extremely efficient reaction. However, the user will still suffer the inebriating effects of the substance.",
+ "looks_like": "bio_int_enhancer",
+ "description": "A reactor that burns alcohol as fuel in an extremely efficient reaction. It can store up to 500ml and accept ethanol, methanol and denatured aclohol as fuel.",
"price": 120000,
"difficulty": 4
},
@@ -285,6 +310,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Aero-Evaporator CBM",
+ "looks_like": "bio_int_enhancer",
"description": "This unit draws moisture from the surrounding air, which then is poured from a fingertip in the form of water. It may fail in very dry environments.",
"price": 550000,
"difficulty": 4
@@ -294,6 +320,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Diamond Cornea CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A set of diamond corneas which greatly enhance the user's vision, granting a +2 bonus to perception.",
"price": 800000,
"weight": "100 g",
@@ -304,6 +331,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Telescopic Eyes CBM",
+ "looks_like": "bio_int_enhancer",
"description": "An array of high-powered, auto-focusing lenses that replaces much of the material in the inner eye. This fixes any vision problems and allows for an increased vision range akin to binoculars.",
"price": 500000,
"weight": "100 g",
@@ -314,6 +342,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Facial Distortion CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Through controlled application of electrochemical impulses, this bionic module lets the user alter their facial structure so as to subtly affect the reactions of others. This grants a bonus to all social interactions.",
"price": 850000,
"weight": "200 g",
@@ -324,6 +353,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Dielectric Capacitance System CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A network of miniature piezoelectric capacitors, implanted throughout the body to protect from external electrical discharge.",
"price": 5000,
"weight": "500 g",
@@ -334,7 +364,8 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Fingerhack CBM",
- "description": "A miniature electrohack, surgically embedded in a finger of the right hand. This is an all-purpose hacking unit used to override control panels and the like, but not computers. Computer proficiency is important, and a failed use may cause damage.",
+ "looks_like": "bio_int_enhancer",
+ "description": "A miniature electrohack, surgically embedded in a finger of the right hand. This is an all-purpose hacking unit used to override control panels and the like, but not computers. Computer proficiency is important, and a failed use may cause damage.",
"price": 350000,
"weight": "100 g",
"difficulty": 2
@@ -344,6 +375,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Flashbang Generator CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A combination of LEDs and speakers that create a flash and sound comparable to a flashbang grenade, deafening and blinding nearby enemies.",
"price": 720000,
"weight": "500 g",
@@ -354,6 +386,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Cranial Flashlight CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A small, but powerful LED flashlight that is mounted between the eyes.",
"price": 20000,
"weight": "250 g",
@@ -364,6 +397,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "LED Tattoo",
+ "looks_like": "bio_int_enhancer",
"description": "An LED display implanted beneath the epidermis that can display patterns or pictures through the skin. When active it glows dimly, providing a very small amount of light.",
"price": 20000,
"weight": "20 g",
@@ -374,6 +408,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Integrated Dosimeter CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Small radiation sensors that are implanted throughout the body, allowing the user to analyze their level of absorbed radiation. They will also alert the user whenever exposed to environmental radiation.",
"price": 350000,
"weight": "150 g",
@@ -384,6 +419,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Respirator CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A complex respiration augmentation system that increases the user's maximal oxygen uptake and allows for underwater breathing akin to gills. Will automatically activate if the user is drowning.",
"price": 450000,
"weight": "700 g",
@@ -394,6 +430,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Terranian Sonar CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Precision sonar equipment, implanted in the feet to allow the detection of below-ground movement, buried traps, and unstable terrain.",
"price": 450000,
"weight": "500 g",
@@ -404,6 +441,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Heat Drain CBM",
+ "looks_like": "bio_int_enhancer",
"description": "While fighting unarmed against a warm-blooded opponent, there is a chance that a successful hit will drain body heat, inflicting a small amount of extra damage, and recharging the user's bionic power reserves slightly.",
"price": 550000,
"weight": "500 g",
@@ -414,6 +452,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Thermal Dissipation CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Powerful heatsinks and supermaterials are woven into the user's flesh. While powered, this system will prevent external heat damage up to 2000 degrees Fahrenheit. Note that this does not affect the internal body temperature.",
"price": 350000,
"difficulty": 3
@@ -423,6 +462,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Hydraulic Muscles CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A hydraulic muscle support system that when active, increases strength by 20.",
"price": 400000,
"difficulty": 6
@@ -432,6 +472,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Infrared Vision CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A bionic module that extends the range of vision into the infrared, allowing the user to see warm-blooded creatures in the dark and through smoke.",
"price": 450000,
"weight": "500 g",
@@ -452,6 +493,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Finger-Mounted Laser CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A small, high-powered laser that is embedded in the fingertip. This long range weapon is not incredibly damaging, but is very accurate, and has the potential to start fires.",
"price": 720000,
"weight": "500 g",
@@ -462,6 +504,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Leukocyte Breeder System CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Bionic stimulators which augment the user's haematopoiesis system, allowing them to accelerate white blood cell production using bionic power. It is designed for continuous use and may cause unpleasant side effects when turned off.",
"price": 6000,
"weight": "600 g",
@@ -471,7 +514,8 @@
"id": "bio_lighter",
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
- "name": "Mini-Flamethrower CBM",
+ "name": "Finger Lighter CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Powerful fire starters which extend from the tip of both hands' index fingers.",
"price": 130000,
"weight": "500 g",
@@ -482,6 +526,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Fingerpick CBM",
+ "looks_like": "bio_int_enhancer",
"description": "An electronic lockpick that is embedded in a fingertip. This automatic system will quickly unlock all but the most advanced key locks without any skill required on the part of the user.",
"price": 350000,
"weight": "200 g",
@@ -492,6 +537,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Electromagnetic Unit CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A powerful electromagnet that is implanted into the user's right hand, allowing them to indiscriminately pull all nearby magnetic objects towards them. Unlucky bystanders might be injured or killed by flying objects.",
"price": 200000,
"weight": "700 g",
@@ -502,6 +548,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Nictating Membrane CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A thin membrane that closes over the eyes while underwater, negating any vision penalties.",
"price": 450000,
"weight": "1 g",
@@ -512,6 +559,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Enhanced Memory Banks CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A set of highly-advanced quantum storage drives used to enhance memory. While active, they increase the rate that the user learns skills, and give them near-perfect memory of skills and terrain.",
"price": 1000000,
"weight": "100 g",
@@ -522,6 +570,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Metabolic Interchange CBM",
+ "looks_like": "bio_int_enhancer",
"description": "This module interconnects the user's digestive system and power supply, letting them replenish bionic energy by burning calories.",
"price": 70000,
"weight": "700 g",
@@ -532,6 +581,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Weather Reader CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A multitude of scientific instruments and sensors collect environmental data. The data is compiled and presented as a simple readout of the current weather. It also passively tells the user their external temperature.",
"price": 350000,
"weight": "700 g",
@@ -542,6 +592,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Repair Nanobots CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A fleet of tiny dormant robots. While activated they will flit about the user's body, repairing damage and stopping bleeding at the cost of power.",
"price": 950000,
"weight": "200 g",
@@ -552,6 +603,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Artificial Night Generator CBM",
+ "looks_like": "bio_int_enhancer",
"description": "When active, this bionic eliminates all light within a 15 tile radius through destructive interference.",
"price": 850000,
"difficulty": 5
@@ -561,6 +613,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Implanted Night Vision CBM",
+ "looks_like": "bio_int_enhancer",
"description": "This bionic module modifies the user's eyes to amplify existing light, allowing them to see in the dark.",
"price": 900000,
"weight": "100 g",
@@ -571,6 +624,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Offensive Defense System CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A thin forcefield gets projected around the user's body, continually draining power. This field does not deflect attacks, but rather delivers a strong shock, damaging unarmed attackers and those with a conductive weapon.",
"price": 950000,
"weight": "1000 g",
@@ -581,6 +635,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Sensory Dulling CBM",
+ "looks_like": "bio_int_enhancer",
"description": "This module lets the user's nervous system inhibit pain signals, allowing them to dull their senses at will. However, the use of this system may cause delayed reaction times and drowsiness.",
"price": 200000,
"weight": "300 g",
@@ -591,6 +646,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Power Armor Interface CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Interfaces the user's bionic power system with the internal charging port on suits of power armor, allowing them to draw from the user's bionic power banks.",
"price": 120000,
"weight": "500 g",
@@ -601,7 +657,8 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Power Armor Mk. II Interface CBM",
- "description": "Interfaces the user's bionic power system with the internal charging port on suits of power armor, allowing them to draw from the user's bionic power banks. Twice as efficient as the Mk. I model. The Mk. II was designed by DoubleTech Inc., to meet the popularity of the Mk. II power armor series.",
+ "looks_like": "bio_int_enhancer",
+ "description": "Interfaces the user's bionic power system with the internal charging port on suits of power armor, allowing them to draw from the user's bionic power banks. Twice as efficient as the Mk. I model. The Mk. II was designed by DoubleTech Inc., to meet the popularity of the Mk. II power armor series.",
"price": 1000000,
"weight": "400 g",
"difficulty": 8
@@ -611,6 +668,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Power Storage CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A Compact Bionics Module that upgrades the user's power capacity by 100 units. Having at least one of these is a prerequisite to using powered bionics. The user will also need a power supply, found in various CBMs.",
"price": 380000,
"weight": "70 g",
@@ -622,6 +680,7 @@
"type": "BIONIC_ITEM",
"name": "Power Storage CBM Mk. II",
"name_plural": "Power Storage CBM Mk. II",
+ "looks_like": "bio_int_enhancer",
"description": "A Compact Bionics Module developed at DoubleTech Industries as a replacement for the highly successful Power Storage CBM. Increases the user's power capacity by 250 units.",
"price": 1000000,
"weight": "50 g",
@@ -632,6 +691,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Probability Travel CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Increases the body's wavelength, allowing the user to quantum tunnel through walls, reappearing on the other side. Power drain in standby is minimal, but each tile tunneled through costs 250 bionic power.",
"price": 1400000,
"difficulty": 11
@@ -641,6 +701,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Air Filtration System CBM",
+ "looks_like": "bio_int_enhancer",
"description": "An advanced filtration system that is implanted in the trachea. If toxins, or airborne diseases find their way into the windpipe, the filter will attempt to remove them.",
"price": 450000,
"weight": "100 g",
@@ -651,6 +712,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Radiation Scrubber System CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A system of advanced piezomechanical blood filters that are implanted throughout your body, allowing the user to purge themself of absorbed radiation at the cost of some bionic power.",
"price": 450000,
"weight": "100 g",
@@ -661,6 +723,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Railgun CBM",
+ "looks_like": "bio_int_enhancer",
"description": "EM field generators in the user's arms increase the range and damage of thrown magnetic objects at a cost of 1 bionic power per throw. They will create a trail of electricity that can cause additional damage.",
"price": 220000,
"weight": "1000 g",
@@ -671,6 +734,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Fingertip Razors CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A set of ten double-edged, four centimeter long razor-sharp claws that are implanted underneath the fingernails. These will deal a small amount of unarmed slashing damage whenever the user's fingertips are uncovered.",
"price": 450000,
"weight": "5 g",
@@ -681,6 +745,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Gasoline Fuel Cell CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A small gasoline fuel cell able to convert gasoline to bionic power. It's connected to a diffuse network of bio-plastic bladders able to hold up to 500 ml of gasoline.",
"price": 450000,
"weight": 600,
@@ -691,6 +756,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Recycler Unit CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A series of filters and processors that is implanted in the user's digestive system, allowing them to reclaim waste liquid and, to a lesser degree, nutrients. The net effect is a greatly reduced need to eat and drink.",
"price": 850000,
"weight": "1500 g",
@@ -701,6 +767,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Remote Controller CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A small module that connects to the user's brain and allows them to interface with nearby devices with wireless capabilities.",
"price": 600000,
"weight": "250 g",
@@ -711,6 +778,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Sonic Resonator CBM",
+ "looks_like": "bio_int_enhancer",
"description": "This bionic module allows the user's entire body to resonate at very high power, creating a short-range shockwave. While it will not do much damage to creatures, solid objects such as walls and doors will be damaged.",
"price": 1200000,
"difficulty": 11
@@ -720,6 +788,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Olfactory Mask CBM",
+ "looks_like": "bio_int_enhancer",
"description": "While this system is powered, the user's body will produce very little odor, making it nearly impossible for creatures to track them by scent.",
"price": 850000,
"weight": "1000 g",
@@ -730,6 +799,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Scent Vision CBM",
+ "looks_like": "bio_int_enhancer",
"description": "This system lets the user visually sense their own scent, making it possible for them to recognize their surroundings even in complete darkness.",
"price": 450000,
"weight": "100 g",
@@ -740,6 +810,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Electroshock Unit CBM",
+ "looks_like": "bio_int_enhancer",
"description": "While fighting unarmed, or with a weapon that conducts electricity, there is a chance that a successful hit will shock the user's opponent, inflicting extra damage and disabling them temporarily at the cost of some energy.",
"price": 550000,
"weight": "1000 g",
@@ -750,6 +821,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Shockwave Generator CBM",
+ "looks_like": "bio_int_enhancer",
"description": "This bionic module generates a powerful shockwave, knocking back all nearby creatures. Targets are stunned briefly, take damage and additional stun upon impact with impassable terrain, and knock back any creatures they collide with.",
"price": 550000,
"weight": "1000 g",
@@ -760,6 +832,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Synaptic Accelerator CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Bionic stimulators that enhance the nervous system, granting a 10% boost to your speed.",
"price": 10000,
"weight": "400 g",
@@ -770,6 +843,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Muscle Augmentation CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Myomer fibers that enhance the muscular system, granting a +2 bonus to strength.",
"price": 800000,
"weight": "1500 g",
@@ -780,6 +854,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Autonomous Surgical Scalpels CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A system of surgical grade scalpels that is implanted in the user's fingers. They allow for automated precise cuts and can be used as a high-quality butchering tool.",
"price": 220000,
"weight": "20 g",
@@ -790,6 +865,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Anti-Glare Compensators CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A set of quick-reacting transition lenses that are installed over the user's eyes. They negate glare penalties, partially protect from bright flashes, and protect the eyes when welding.",
"price": 450000,
"weight": "1 g",
@@ -800,6 +876,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Targeting System CBM",
+ "looks_like": "bio_int_enhancer",
"description": "This bionic module contains range finders and synchronizes the movement of the user's eyes with their arms, to a degree. Shots they fire will be much more accurate, particularly at long ranges.",
"price": 650000,
"weight": "250 g",
@@ -810,6 +887,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Teleportation Unit CBM",
+ "looks_like": "bio_int_enhancer",
"description": "This highly experimental unit folds space over short distances, instantly transporting the user's body up to 25 feet in a random duration at the cost of much power. Note that prolonged or frequent use may have dangerous side effects.",
"price": 700000,
"difficulty": 7
@@ -819,6 +897,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Time Dilation CBM",
+ "looks_like": "bio_int_enhancer",
"description": "At the cost of all stored bionic power, the user may increase their body speed and reactions dramatically, essentially freezing time. Violent or rapid movements may cause damage due to friction.",
"price": 1400000,
"difficulty": 11
@@ -828,6 +907,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Integrated Toolset CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A surgically implanted set of tools - screwdriver, hammer, wrench, hacksaw, hand drill, welder and heating elements. These can be used in place of many tools when crafting.",
"price": 800000,
"difficulty": 6
@@ -837,6 +917,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Joint Torsion Ratchet CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Torsion ratchets that replace the user's joints to slowly generate power when they move. These can be toggled to generate more power, but movement will require more effort.",
"price": 380000,
"weight": "1000 g",
@@ -847,6 +928,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Joint Servo CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A set of servomotors that get installed on leg joints to provide power-assisted movement. They are optimized for running, but walking also requires less effort while this bionic is active. However, when it's offline it will hamper the user's movement.",
"price": 450000,
"weight": "1000 g",
@@ -857,6 +939,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Uncanny Dodge CBM",
+ "looks_like": "bio_int_enhancer",
"description": "Bionic processors that augment the the user's nervous system, allowing them to dodge attacks beyond normal human capability, including bullets.",
"price": 950000,
"weight": "1000 g",
@@ -867,6 +950,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Unified Power System CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A Unified Power System that is wired into the user's bionic power banks. Objects that run on a UPS can now directly draw power from the bionic power supply.",
"price": 25000,
"weight": "700 g",
@@ -877,6 +961,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Internal Chronometer CBM",
+ "looks_like": "bio_int_enhancer",
"description": "This bionic module contains an atomic clock, complete with silent alarm clock function.",
"price": 1000,
"weight": "10 g",
@@ -887,6 +972,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Water Extraction Unit CBM",
+ "looks_like": "bio_int_enhancer",
"description": "This module contains nanotubes that are embedded in the palm of the hand to pump any available fluid out of a dead body, cleanse it of impurities and convert it into potable water. Water container not included.",
"price": 550000,
"weight": "100 g",
@@ -897,6 +983,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Intravenous Needletip CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A small tube with a retractable needle that terminates in a net of tiny hoses instead of a plunger. Installed, it allows the user to draw substances directly into their bloodstream akin to a regular syringe.",
"price": 1000,
"weight": "10 g",
@@ -907,6 +994,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Titanium Skeletal Bracing CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A set of hinges, springs, and other synthetic augments for the skeletal structure. These artificial enhancers strengthen the knees and elbows, allowing the user to carry more weight.",
"price": 50000,
"weight": "3000 g",
@@ -917,6 +1005,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Kinetic Shock Absorbers CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A set of hydraulic springs and foldable padding that replaces most of the flesh in the limbs and upper torso. While active, these absorbers will negate damage from severe impacts such as falling, at the cost of reducing the user's ability to move effectively.",
"price": 10000,
"weight": "3000 g",
@@ -927,6 +1016,7 @@
"copy-from": "bionic_general",
"type": "BIONIC_ITEM",
"name": "Taste Modifier CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A set of highly sensitive sensors implanted in the user's mouth, combined with a sophisticated analyzer. While active, it will block all unpleasant taste and texture at the cost of bionic energy.",
"price": 40000,
"weight": "100 g",
@@ -937,6 +1027,7 @@
"copy-from": "bionic_general_npc_usable",
"type": "BIONIC_ITEM",
"name": "Soporific Induction CBM",
+ "looks_like": "bio_int_enhancer",
"description": "A microscopic electrode designed to gently stimulate a particular cluster of neurons in the hypothalamus, helping the user to fall asleep.",
"price": 350000,
"weight": "50 g",
@@ -1002,7 +1093,7 @@
"copy-from": "bionic_general_faulty",
"type": "BIONIC_ITEM",
"name": "Glowy Thing",
- "description": "It's a... thing? And it glows, at least it did when it was plugged in.",
+ "description": "It's a… thing? And it glows, at least it did when it was plugged in.",
"weight": "5 g",
"difficulty": 3
},
diff --git a/data/json/items/book/cooking.json b/data/json/items/book/cooking.json
index 8c83843ce911e..dea59b662c498 100644
--- a/data/json/items/book/cooking.json
+++ b/data/json/items/book/cooking.json
@@ -63,7 +63,7 @@
"name": "To Serve Man",
"name_plural": "To Serve Man",
"//": "Wasn't commercially traded. ('Parody' only covers so much.) Should get a serious price modifier for non-Cannibals.",
- "description": "It's... it's a cookbook!",
+ "description": "It's… it's a cookbook!",
"weight": "454 g",
"volume": "1 L",
"price": 40000,
@@ -198,7 +198,7 @@
"type": "BOOK",
"name": "PE050 \"Alpha\": Preliminary Report",
"name_plural": "PE050 \"Alpha\": Preliminary Report",
- "description": "This sheaf of papers-dated two weeks before all this started-describes some new chemical formula, and its effects on human subjects. It's stamped \"APPROVED\"...",
+ "description": "This sheaf of papers-dated two weeks before all this started-describes some new chemical formula, and its effects on human subjects. It's stamped \"APPROVED\"…",
"weight": "50 g",
"volume": "500 ml",
"price": 125000,
@@ -238,7 +238,7 @@
"type": "BOOK",
"name": "PE065 \"Chimera\": Best Practices",
"name_plural": "PE065 \"Chimera\": Best Practices",
- "description": "This sheaf of papers describes a new chemical formula in detail and supplies instructions for its use as some sort of ... crowd-control catalyst? That can't be right...",
+ "description": "This sheaf of papers describes a new chemical formula in detail and supplies instructions for its use as some sort of… crowd-control catalyst? That can't be right…",
"weight": "50 g",
"volume": "500 ml",
"price": 125000,
@@ -258,7 +258,7 @@
"type": "BOOK",
"name": "lab journal-Smythe",
"name_plural": "lab journals-Smythe",
- "description": "This team logbook details several varieties of mutagenic experiments, focusing on those derived from flesh contaminated with XE037. The results look promising but the procurement methods seem awfully vague...",
+ "description": "This team logbook details several varieties of mutagenic experiments, focusing on those derived from flesh contaminated with XE037. The results look promising but the procurement methods seem awfully vague…",
"weight": "1700 g",
"volume": "500 ml",
"price": 50000,
@@ -277,7 +277,7 @@
"id": "recipe_elfa",
"type": "BOOK",
"name": "standpipe maintenance log",
- "description": "This binder details the scheduled maintenance for several plumbing systems throughout the facility. However, some of the log sheets seem to be filled with...a chemical formula?",
+ "description": "This binder details the scheduled maintenance for several plumbing systems throughout the facility. However, some of the log sheets seem to be filled with… a chemical formula?",
"weight": "400 g",
"volume": "750 ml",
"price": 400,
@@ -337,7 +337,7 @@
"type": "BOOK",
"name": "PE023 \"Medical\": Application and Findings",
"name_plural": "PE023 \"Medical\": Application and Findings",
- "description": "This binder of highly technical papers describes some new chemical formula, and its effects on human subjects. It's stamped \"APPROVED\"....",
+ "description": "This binder of highly technical papers describes some new chemical formula, and its effects on human subjects. It's stamped \"APPROVED\"…",
"weight": "1934 g",
"volume": "1750 ml",
"price": 62000,
diff --git a/data/json/items/book/electronics.json b/data/json/items/book/electronics.json
index 31e07a1d34223..d7ff922f69fee 100644
--- a/data/json/items/book/electronics.json
+++ b/data/json/items/book/electronics.json
@@ -122,7 +122,7 @@
"type": "BOOK",
"name": "lab journal-Herrera",
"name_plural": "lab journals-Herrera",
- "description": "This hefty binder contains a multitude of diagrams and technical specifications for various electronic materials. Some of the diagrams use symbols you've not seen before...",
+ "description": "This hefty binder contains a multitude of diagrams and technical specifications for various electronic materials. Some of the diagrams use symbols you've not seen before…",
"weight": "2000 g",
"volume": "500 ml",
"price": 56000,
diff --git a/data/json/items/book/fabrication.json b/data/json/items/book/fabrication.json
index 375c6f48f284b..4b99daf6ff33c 100644
--- a/data/json/items/book/fabrication.json
+++ b/data/json/items/book/fabrication.json
@@ -119,7 +119,7 @@
"type": "BOOK",
"name": "The Handloader's Helper",
"name_plural": "The Handloader's Helper",
- "description": "Everything you could ever want to know about handloading ammunition, sealed with a ...childproof cover. Apparently a liability thing, because the chapter on explosive rounds covers them in excellent detail too.",
+ "description": "Everything you could ever want to know about handloading ammunition, sealed with a… childproof cover. Apparently a liability thing, because the chapter on explosive rounds covers them in excellent detail too.",
"weight": "1454 g",
"volume": "1500 ml",
"price": 12000,
diff --git a/data/json/items/book/martial.json b/data/json/items/book/martial.json
index 06c8509b29d73..044b573d37cde 100644
--- a/data/json/items/book/martial.json
+++ b/data/json/items/book/martial.json
@@ -248,7 +248,7 @@
"type": "GENERIC",
"name": "Beautiful Springtime",
"name_plural": "Beautiful Springtime",
- "description": "A complete guide to Wing Chun Kung-fu. Includes a section on butterfly swords and the use of long poles at the end.",
+ "description": "A complete guide to Wing Chun Kung-fu.",
"book_data": { "martial_art": "style_wingchun" }
},
{
@@ -257,7 +257,7 @@
"type": "GENERIC",
"name": "Fior Di Battaglia",
"name_plural": "Fior Di Battaglia",
- "description": "A completely translated medieval guide teaching various techniques with polearms, there is a chapter about the many variations of common polearms... there are even pictures!",
+ "description": "A completely translated medieval guide teaching various techniques with polearms, there is a chapter about the many variations of common polearms… there are even pictures!",
"book_data": { "martial_art": "style_medievalpole" }
},
{
diff --git a/data/json/items/book/mechanics.json b/data/json/items/book/mechanics.json
index fe6bb97063a6c..bc404e925683d 100644
--- a/data/json/items/book/mechanics.json
+++ b/data/json/items/book/mechanics.json
@@ -71,7 +71,7 @@
"copy-from": "recipe_lab_cvd",
"name": "lab journal-Curie",
"name_plural": "lab journals-Curie",
- "description": "This lab notebook is filled with the collective discoveries and refinements of a research team dedicated to nuclear energy. You don't think you're ready to start a second Cataclysm, but the general information provided might be useful...",
+ "description": "This lab notebook is filled with the collective discoveries and refinements of a research team dedicated to nuclear energy. You don't think you're ready to start a second Cataclysm, but the general information provided might be useful…",
"skill": "mechanics",
"required_level": 6
},
diff --git a/data/json/items/book/misc.json b/data/json/items/book/misc.json
index 84eeb4076c118..3e165ae003767 100644
--- a/data/json/items/book/misc.json
+++ b/data/json/items/book/misc.json
@@ -856,11 +856,11 @@
"snippet_category": [
{
"id": "scifi1_1",
- "text": "This is a copy of Gibson's \"Neuromancer\". Written in the eighties, it was surprisingly accurate in predicting much of modern society... Until recently."
+ "text": "This is a copy of Gibson's \"Neuromancer\". Written in the eighties, it was surprisingly accurate in predicting much of modern society… Until recently."
},
{
"id": "scifi1_2",
- "text": "This is a copy of \"The Stars My Destination\" by Alfred Bester. \n\nTyger, Tyger, Burning bright, \nIn the forests of the night: \nWhat immortal hand or eye, \nDare frame thy fearful symmetry?"
+ "text": "This is a copy of \"The Stars My Destination\" by Alfred Bester.\n\nTyger, Tyger, Burning bright,\nIn the forests of the night:\nWhat immortal hand or eye,\nDare frame thy fearful symmetry?"
},
{
"id": "scifi1_3",
@@ -868,14 +868,10 @@
},
{ "id": "scifi1_4", "text": "This is a copy of \"The Dispossessed\" by Ursula Le Guin." },
{ "id": "scifi1_5", "text": "This copy of Ray Bradbury's \"Fahrenheit 451\"." },
- {
- "id": "scifi1_5",
- "text": "This is a well-worn copy of \"The Hitchhikers Guide to the Galaxy\" by Douglas Adams."
- },
{ "id": "scifi1_6", "text": "This is a copy of \"Hyperion\" by Dan Simmons." },
{
"id": "scifi1_7",
- "text": "This is a copy of \"Endymion\" by Dan Simmons. It opens with a poem by D.H. Lawrence:\n\nGive us gods. Oh give them us! \nGive us gods. \nWe are so tired of men \nAnd motor-power."
+ "text": "This is a copy of \"Endymion\" by Dan Simmons. It opens with a poem by D.H. Lawrence:\n\nGive us gods. Oh give them us!\nGive us gods.\nWe are so tired of men\nAnd motor-power."
},
{ "id": "scifi1_8", "text": "This is a copy of Philip K. Dick's \"Do Androids Dream of Electric Sheep?\"." },
{ "id": "scifi1_9", "text": "This is a dog-eared copy of \"Nova Express\" by William Burroughs." },
@@ -974,10 +970,10 @@
{ "id": "scifi1_42", "text": "This is a copy of \"Islands in the Sky\" by Arthur C. Clarke." },
{ "id": "scifi1_43", "text": "This is a copy of H. G. Wells' \"The Island of Doctor Moreau\"." },
{ "id": "scifi1_44", "text": "This is a copy of Stanislaw Lem's \"His Masters Voice\"." },
- { "id": "scifi_45", "text": "This is a copy of Fred Hoyle's \"The Black Cloud\"." },
- { "id": "scifi_46", "text": "This is a copy of \"Last and First Men\" by Olaf Stapeldon." },
- { "id": "scifi_47", "text": "This is a copy of Stanislaw Lem's \"Solaris\"." },
- { "id": "scifi_48", "text": "This is a copy of Theodore Sturgeon's \"More Than Human\"." },
+ { "id": "scifi1_45", "text": "This is a copy of Fred Hoyle's \"The Black Cloud\"." },
+ { "id": "scifi1_46", "text": "This is a copy of \"Last and First Men\" by Olaf Stapeldon." },
+ { "id": "scifi1_47", "text": "This is a copy of Stanislaw Lem's \"Solaris\"." },
+ { "id": "scifi1_48", "text": "This is a copy of Theodore Sturgeon's \"More Than Human\"." },
{ "id": "scifi1_49", "text": "This is a copy of \"Vurt\" by Jeff Noon." },
{ "id": "scifi1_50", "text": "This is a copy of \"A Canticle for Leibowitz\" by Walter M. Miller Jr." },
{ "id": "scifi1_51", "text": "This is a copy of \"The War of The Worlds\" by H.G Wells." },
@@ -995,6 +991,10 @@
{
"id": "scifi1_60",
"text": "This is a copy of Larry Niven's \"Ringworld\". There are a couple of pages missing from the end of the book. Luckily only mail-order advertisements."
+ },
+ {
+ "id": "scifi1_61",
+ "text": "This is a well-worn copy of \"The Hitchhikers Guide to the Galaxy\" by Douglas Adams."
}
]
},
@@ -1261,7 +1261,24 @@
{
"id": "philosophy40",
"text": "This is a copy of \"Up-Wingers: A Futurist Manifesto\" by FM-2030. It seems that the author's real name is Fereidoun M. Esfandiary."
- }
+ },
+ {
+ "id": "philosophy41",
+ "text": "This is a copy of \"The Bastiat Collection\", a large collection of essays by Frederic Bastiat."
+ },
+ {
+ "id": "philosophy42",
+ "text": "This is a copy of \"Anarchy, State, and Utopia\" by Robert Nozick, one of the most influential books of modern libertarianism."
+ },
+ {
+ "id": "philosophy43",
+ "text": "This is a copy of \"Socialism\" by Ludwig von Mises, a critical examination of socialism."
+ },
+ {
+ "id": "philosophy44",
+ "text": "This is a copy of \"The ABC of Communism\" by Nikolai Bukharin, one of the most influential books of early Marxism-Leninism."
+ },
+ { "id": "philosophy45", "text": "This is a copy of \"Anti-Capitalist Mentality\" by Ludwig von Mises." }
],
"weight": "350 g",
"volume": "750 ml",
@@ -1370,7 +1387,7 @@
"id": "record_accounting",
"type": "BOOK",
"name": "corporate accounting ledger",
- "description": "If you knew what to look for something might stand out...",
+ "description": "If you knew what to look for something might stand out…",
"weight": "566 g",
"volume": "1250 ml",
"price": 2000,
@@ -1570,7 +1587,31 @@
"text": "This is a hardcover copy of \"The Gates Have Opened\" by Arianna Methusalah. You feel like you've read this before, but can't remember where. Something about the book fills you with unease."
},
{ "id": "classic29", "text": "This is a copy of \"The Count of Monte Cristo\" by Dumas." },
- { "id": "classic30", "text": "This is a copy of \"The Secret Garden\" by Frances Burnett." }
+ { "id": "classic30", "text": "This is a copy of \"The Secret Garden\" by Frances Burnett." },
+ { "id": "classic31", "text": "This is a copy of \"Lieutenant Hornblower\" by C.S. Forester." },
+ { "id": "classic32", "text": "This is a copy of \"Master and Commander\" by Patrick O'Brian." },
+ { "id": "classic33", "text": "This is a copy of \"The Warden\" by Anthony Trollope." },
+ { "id": "classic34", "text": "This is a copy of \"The Far Side of the World\" by Patrick O'Brian." },
+ { "id": "classic35", "text": "This is a copy of \"HMS Surprise\" by Patrick O'Brian." },
+ { "id": "classic36", "text": "This is a copy of \"Barchester Towers\" by Anthony Trollope." },
+ { "id": "classic37", "text": "This is a copy of \"The Land Ironclads\" by H.G. Wells." },
+ { "id": "classic38", "text": "This is a copy of \"The Great Boer War\" by Arthur Conan Doyle." },
+ { "id": "classic39", "text": "This is a copy of \"The Crime of the Congo\" by Arthur Conan Doyle." },
+ { "id": "classic40", "text": "This is a copy of \"The Parasite\" by Arthur Conan Doyle." },
+ { "id": "classic41", "text": "This is a copy of \"By Stroke of Sword\" by Andrew Balfour." },
+ { "id": "classic42", "text": "This is a copy of \"The Secret Agent\" by Joseph Conrad." },
+ { "id": "classic43", "text": "This is a copy of \"Lord Jim\" by Joseph Conrad." },
+ { "id": "classic44", "text": "This is a copy of \"Vanity Fair\" by William Makepeace Thackeray." },
+ { "id": "classic45", "text": "This is a copy of \"The Luck of Barry Lyndon\" by William Makepeace Thackeray." },
+ { "id": "classic46", "text": "This is a copy of \"North and South\" by Elizabeth Gaskell." },
+ { "id": "classic47", "text": "This is a copy of \"The Mayor of Casterbridge\" by Thomas Hardy." },
+ { "id": "classic48", "text": "This is a copy of \"Wessex Tales\" by Thomas Hardy." },
+ { "id": "classic49", "text": "This is a copy of \"Far from the Madding Crowd\" by Thomas Hardy." },
+ { "id": "classic50", "text": "This is a copy of \"Captains Courageous\" by Rudyard Kipling." },
+ { "id": "classic51", "text": "This is a copy of \"The Canterbury Tales\" by Geoffrey Chaucer." },
+ { "id": "classic52", "text": "This is a copy of \"Harold, the Last of the Saxons\" by Edward Bulwer-Lytton." },
+ { "id": "classic53", "text": "This is a copy of \"Mr Midshipman Easy\" by Frederick Marryat." },
+ { "id": "classic54", "text": "This is a copy of \"Peter Simple\" by Frederick Marryat." }
],
"weight": "350 g",
"volume": "750 ml",
diff --git a/data/json/items/chemicals_and_resources.json b/data/json/items/chemicals_and_resources.json
index e1a88ee982596..235f9e49fbea7 100644
--- a/data/json/items/chemicals_and_resources.json
+++ b/data/json/items/chemicals_and_resources.json
@@ -25,14 +25,14 @@
"name_plural": "sulfur",
"symbol": "=",
"color": "yellow",
- "description": "A handful of yellow grains of pure sulfur. Primarily used to make battery acid, sulfur is sometimes used as fuel for explosives. Can be burned to produce acidic smoke, that is deadly to bacteria and humans alike, or oxidized to make paper-bleaching agents.",
+ "description": "A handful of pure sulfur. Primarily used to make battery acid, sulfur is sometimes used as fuel for explosives. Can be burned to produce acidic smoke, that is deadly to bacteria and humans alike, or oxidized to make paper-bleaching agents.",
"material": "powder",
- "volume": "250 ml",
- "weight": "5 g",
- "//": "NOTE: Weights are given for ONE UNIT. The actual weight of a spawned pile of sulfur is now 5*100 = 500g. For reference, 1 C:DDA unit of volume is around a quarter of a liter (calculated from the weight of water).",
+ "volume": "16 ml",
+ "weight": "320 mg",
+ "//": "Density: 2g/cm3. NOTE: Weights for chemical powders are 1/100 mol. Weights are given for ONE UNIT. Volume is for all units.",
"bashing": 1,
"ammo_type": "components",
- "container": "bag_canvas",
+ "container": "bottle_plastic_small",
"count": 100
},
{
@@ -44,10 +44,11 @@
"name_plural": "chunks of sulfur",
"symbol": "*",
"color": "yellow",
- "description": "A large chunk of pure sulfur. Break it up to use it.",
+ "description": "A chunk of pure sulfur. Break it up to use it.",
"material": "powder",
- "volume": "1250 ml",
+ "volume": "250 ml",
"weight": "500 g",
+ "//": "density is around 2g/cm3",
"bashing": 1,
"ammo_type": "components"
},
@@ -176,10 +177,11 @@
"name_plural": "rhodonite",
"symbol": "*",
"color": "red",
- "description": "A chunk of rhodonite. It has manganese dioxide covering and going through it in veins, which can be obtained using a chisel.",
+ "description": "A chunk of rhodonite. It has manganese dioxide covering and going through it in veins, which can be obtained using a chisel.",
"material": "stone",
- "volume": "2500 ml",
- "weight": 500,
+ "volume": "250 ml",
+ "weight": "915 g",
+ "//": "density: 3.57–3.76 g/cm3",
"bashing": 1
},
{
@@ -191,10 +193,11 @@
"name_plural": "zincite",
"symbol": "*",
"color": "red",
- "description": "A chunk of zincite. Could be refined into zinc oxide, then into zinc by reduction with a source of carbon.",
+ "description": "A chunk of zincite. Could be refined into zinc oxide, then into zinc by reduction with a source of carbon.",
"material": "stone",
- "volume": "2500 ml",
- "weight": 500,
+ "volume": "250 ml",
+ "weight": "1412 g",
+ "//": "density: 5.64–5.68 g/cm3",
"bashing": 1
},
{
@@ -473,8 +476,9 @@
"color": "white",
"description": "A handful of zinc powder. While commercially used mostly in cosmetics and for paints, hobbyists used to mix it with sulfur to make basic rocket fuel / smokescreen. When treated with a strong acid, it will produce hydrogen.",
"material": "powder",
- "volume": "250 ml",
- "weight": "8400 mg",
+ "volume": "9 ml",
+ "weight": "654 mg",
+ "//": "density: 7.14 g/cm3",
"bashing": 1,
"ammo_type": "components",
"container": "bottle_plastic_small",
@@ -489,10 +493,11 @@
"name_plural": "zinc oxide",
"symbol": "=",
"color": "white",
- "description": "A handful of zinc oxide. It can be reduced into zinc, or used for some other reactions of its own.",
+ "description": "A handful of zinc oxide. It can be reduced into zinc, or used for some other reactions of its own.",
"material": "powder",
- "volume": "250 ml",
- "weight": 12.8,
+ "volume": "16 ml",
+ "weight": "814 mg",
+ "//": "density: 5.1 g/cm3",
"bashing": 1,
"ammo_type": "components",
"container": "bottle_plastic_small",
@@ -507,13 +512,14 @@
"name_plural": "manganese dioxide",
"symbol": "=",
"color": "white",
- "description": "A handful of manganese dioxide powder. Occurring naturally in the mineral pyrolusite, it is used commercially in the production of alkaline and zinc-carbon batteries.",
+ "description": "A handful of manganese dioxide powder. Occurring naturally in the mineral pyrolusite, it is used commercially in the production of alkaline and zinc-carbon batteries.",
"material": "powder",
- "volume": "250 ml",
- "weight": 12.6,
+ "volume": "17 ml",
+ "weight": "869 mg",
+ "//": "density: 5.026 g/cm3",
"bashing": 1,
"ammo_type": "components",
- "container": "bag_plastic",
+ "container": "bottle_plastic_small",
"count": 100
},
{
@@ -525,13 +531,14 @@
"name_plural": "potassium chloride",
"symbol": "=",
"color": "white",
- "description": "A handful of potassium chloride. Although it occurs naturally in the mineral sylvite, it can be produced as a byproduct of the reaction of saltpeter and hydrochloric acid. It can be used for making fertilizer, or potassium hydroxide by way of electrolysis.",
+ "description": "A handful of potassium chloride. Although it occurs naturally in the mineral sylvite, it can be produced as a byproduct of the reaction of saltpeter and hydrochloric acid. It can be used for making fertilizer, or potassium hydroxide by way of electrolysis.",
"material": "powder",
- "volume": "250 ml",
- "weight": 5,
+ "volume": "38 ml",
+ "weight": "746 mg",
+ "//": "density: 1.984 g/cm3",
"bashing": 1,
"ammo_type": "components",
- "container": "bag_plastic",
+ "container": "bottle_plastic_small",
"count": 100
},
{
@@ -543,13 +550,14 @@
"name_plural": "potassium hydroxide",
"symbol": "=",
"color": "white",
- "description": "A handful of potassium hydroxide. Commonly called caustic potash, it was mainly used industrially for its caustic nature. It can be used as an electrolyte in alkaline batteries, among other applications.",
+ "description": "A handful of potassium hydroxide. Commonly called caustic potash, it was mainly used industrially for its caustic nature. It can be used as an electrolyte in alkaline batteries, among other applications.",
"material": "powder",
- "volume": "250 ml",
- "weight": 5.1,
+ "volume": "26 ml",
+ "weight": "561 mg",
+ "//": "density: 2.12 g/cm3 (25 °C)",
"bashing": 1,
"ammo_type": "components",
- "container": "bag_plastic",
+ "container": "bottle_plastic_small",
"count": 100
},
{
@@ -582,7 +590,7 @@
"symbol": "=",
"color": "white",
"flags": [ "DROP_ACTION_ONLY_IF_LIQUID" ],
- "description": "Hydrochloric acid, also known as muriatic acid. It is a strong acid that has a distinctive smell, important and frequently used ever since its discovery. It still has a vast multitude of uses.",
+ "description": "Hydrochloric acid, also known as muriatic acid. It is a strong acid that has a distinctive smell, important and frequently used ever since its discovery. It still has a vast multitude of uses.",
"volume": "250 ml",
"weight": 460,
"bashing": 1,
@@ -638,13 +646,14 @@
"name_plural": "chromium oxide",
"symbol": "=",
"color": "green",
- "description": "A handful of chromium oxide pellets. This substance, typically known as the only stable green pigment for paints, is also a mild oxidizer, which can be mixed with aluminum powder to make thermite for welding. If one had access to a CVD machine and a laboratory worth of reagents, they might be able to produce very durable ceramic layers.",
+ "description": "A handful of chromium oxide. This substance, typically known as the only stable green pigment for paints, is also a mild oxidizer, which can be mixed with aluminum powder to make thermite for welding. If one had access to a CVD machine and a laboratory worth of reagents, they might be able to produce very durable ceramic layers.",
"material": "powder",
- "volume": "250 ml",
- "weight": "13050 mg",
+ "volume": "29 ml",
+ "weight": "1520 mg",
+ "//": "density: 5.22 g/cm3",
"bashing": 1,
"ammo_type": "components",
- "container": "bag_canvas",
+ "container": "bottle_plastic_small",
"count": 100
},
{
@@ -656,13 +665,14 @@
"name_plural": "calcium carbide",
"symbol": "=",
"color": "white",
- "description": "A handful of calcium carbide chunks, giving off a faint, garlic-like smell. Commercially, calcium carbide was used for on-the-spot manufacture of acetylene and historically to power acetylene lamps. If mixed with water and sealed, it will explode with little strength, but with relatively loud noise and could maybe be used as a decoy.",
+ "description": "A handful of calcium carbide, giving off a faint, garlic-like smell. Commercially, calcium carbide was used for on-the-spot manufacture of acetylene and historically to power acetylene lamps. If mixed with water and sealed, it will explode with little strength, but with relatively loud noise and could maybe be used as a decoy.",
"material": "powder",
- "volume": "250 ml",
- "weight": "5550 mg",
+ "volume": "29 ml",
+ "weight": "641 mg",
+ "//": "density: 2.22 g/cm3",
"bashing": 1,
"ammo_type": "components",
- "container": "bag_plastic",
+ "container": "bottle_plastic_small",
"count": 100
},
{
@@ -852,12 +862,12 @@
"color": "dark_gray",
"description": "A handful of black gunpowder, made by mixing charcoal and sulfur with saltpeter. Pretty useless for making modern cartridges, as the soot produced when it burns will quickly clog any firearm, but it could be used to make some vicious bombs.",
"material": "powder",
- "volume": "250 ml",
+ "volume": "100 ml",
"weight": "1 g",
"bashing": 1,
"ammo_type": "components",
- "container": "bag_canvas",
- "count": 250
+ "container": "bag_plastic",
+ "count": 100
},
{
"type": "AMMO",
@@ -868,7 +878,7 @@
"name_plural": "match head powder",
"symbol": "=",
"color": "light_red",
- "description": "Some match head powder from match heads, similar to black gunpowder but a bit weaker. It can be used in crafting explosives and fuses when other more suitable candidates are less available.",
+ "description": "Some match head powder from match heads, similar to black gunpowder but a bit weaker. It can be used in crafting explosives and fuses when other more suitable candidates are less available.",
"material": "powder",
"volume": "10 ml",
"weight": "1 g",
@@ -970,8 +980,7 @@
"category": "food",
"symbol": "%",
"color": "brown",
- "name": "handful of hickory nuts",
- "name_plural": "handfuls of hickory nuts",
+ "name": { "str": "hickory nuts", "str_pl": "hickory nuts" },
"description": "A handful of hard nuts from a hickory tree, still in their shell.",
"//spoils_in": "180 days",
"price": 0,
@@ -985,8 +994,7 @@
"category": "food",
"symbol": "%",
"color": "brown",
- "name": "handful of pecans",
- "name_plural": "handfuls of pecans",
+ "name": { "str": "pecans", "str_pl": "pecans" },
"description": "A handful of hard nuts from a pecan tree, still in their shell.",
"//spoils_in": "180 days",
"price": 0,
@@ -1000,8 +1008,7 @@
"category": "food",
"symbol": "%",
"color": "brown",
- "name": "handful of pistachios",
- "name_plural": "handfuls of pistachios",
+ "name": { "str": "pistachios", "str_pl": "pistachios" },
"description": "A handful of hard nuts from a pistachio tree, still in their shell.",
"//spoils_in": "90 days",
"price": 0,
@@ -1015,8 +1022,7 @@
"category": "food",
"symbol": "%",
"color": "brown",
- "name": "handful of almonds",
- "name_plural": "handfuls of almonds",
+ "name": { "str": "almonds", "str_pl": "almonds" },
"description": "A handful of hard nuts from a almond tree, still in their shell.",
"//spoils_in": "300 days",
"price": 0,
@@ -1030,8 +1036,7 @@
"category": "food",
"symbol": "%",
"color": "brown",
- "name": "handful of peanuts",
- "name_plural": "handfuls of peanuts",
+ "name": { "str": "peanuts", "str_pl": "peanuts" },
"description": "A handful of hard nuts from a peanut bush, still in their shell.",
"//spoils_in": "240 days",
"price": 0,
@@ -1045,8 +1050,7 @@
"category": "food",
"symbol": "%",
"color": "brown",
- "name": "handful of hazelnuts",
- "name_plural": "handfuls of hazelnuts",
+ "name": { "str": "hazelnuts", "str_pl": "hazelnuts" },
"description": "A handful of hard nuts from a hazelnut tree, still in their shell.",
"//spoils_in": "150 days",
"price": 0,
@@ -1060,8 +1064,7 @@
"category": "food",
"symbol": "%",
"color": "brown",
- "name": "handful of chestnuts",
- "name_plural": "handfuls of chestnuts",
+ "name": { "str": "chestnuts", "str_pl": "chestnuts" },
"description": "A handful of hard nuts from a chestnut tree, still in their shell.",
"//spoils_in": "180 days",
"price": 0,
@@ -1075,8 +1078,7 @@
"category": "food",
"symbol": "%",
"color": "brown",
- "name": "handful of walnuts",
- "name_plural": "handfuls of walnuts",
+ "name": { "str": "walnuts", "str_pl": "walnuts" },
"description": "A handful of hard nuts from a walnut tree, still in their shell.",
"//spoils_in": "180 days",
"price": 0,
@@ -1407,7 +1409,7 @@
"type": "COMESTIBLE",
"name": "acetylene",
"category": "chems",
- "description": "A flammable gas that explodes under pressure. Combined with oxygen, acetylene makes a great welding gas.",
+ "description": "A flammable gas that explodes under pressure. Combined with oxygen, acetylene makes a great welding gas.",
"weight": "40 g",
"volume": "250 ml",
"price": 1200,
diff --git a/data/json/items/comestibles/alcohol.json b/data/json/items/comestibles/alcohol.json
index bed238a898e08..cc7f759221217 100644
--- a/data/json/items/comestibles/alcohol.json
+++ b/data/json/items/comestibles/alcohol.json
@@ -548,7 +548,7 @@
"id": "long_island",
"name": "Long Island iced tea",
"name_plural": "Long Island iced tea",
- "weight": "51 g",
+ "weight": "232 g",
"color": "brown",
"addiction_type": "alcohol",
"use_action": "ALCOHOL",
@@ -559,7 +559,7 @@
"quench": -10,
"healthy": -2,
"addiction_potential": 5,
- "calories": 328,
+ "calories": 426,
"description": "A blend of incredibly strong-flavored liquors that somehow tastes like none of them. It contains no tea, but the inclusion of cola gives it a tea-like color.",
"price": 600,
"material": [ "alcohol", "water" ],
@@ -642,7 +642,7 @@
"quench": 25,
"healthy": -2,
"addiction_potential": 4,
- "calories": 253,
+ "calories": 177,
"description": "Suitable for tropical retreats and Canadian artists alike.",
"price": 600,
"material": [ "alcohol", "junk" ],
@@ -1000,7 +1000,7 @@
"quench": 15,
"healthy": 3,
"addiction_potential": 6,
- "calories": 35,
+ "calories": 68,
"description": "Strawberries left to ferment with a few other choice ingredients offer up a surprisingly palatable mixture; you barely even have to force yourself to drink it after the first few gulps.",
"price": 1600,
"material": [ "alcohol", "water", "fruit" ],
@@ -1029,7 +1029,7 @@
"quench": 15,
"healthy": 1,
"addiction_potential": 18,
- "calories": 36,
+ "calories": 82,
"description": "This fermented blueberry mixture is surprisingly hearty, though the soup-like consistency is slightly unsettling no matter how much you drink.",
"price": 1400,
"material": [ "alcohol", "water", "fruit" ],
@@ -1164,11 +1164,11 @@
"quench": 25,
"healthy": -1,
"addiction_potential": 4,
- "calories": 385,
+ "calories": 261,
"description": "A mixed drink made of whiskey and lemon juice.",
"price": 800,
"material": "alcohol",
- "volume": "500 ml",
+ "volume": "250 ml",
"phase": "liquid",
"flags": [ "EATEN_COLD" ],
"freezing_point": -22,
@@ -1266,7 +1266,7 @@
"symbol": "~",
"quench": 5,
"addiction_potential": 4,
- "calories": 13,
+ "calories": 104,
"description": "This is a popular cocktail made with gin and dry vermouth, dating from the Prohibition era.",
"price": 850,
"material": [ "alcohol", "water" ],
diff --git a/data/json/items/comestibles/bread.json b/data/json/items/comestibles/bread.json
index 9e7ad6b48cef5..b466e04ce3951 100644
--- a/data/json/items/comestibles/bread.json
+++ b/data/json/items/comestibles/bread.json
@@ -99,7 +99,7 @@
"looks_like": "bread",
"volume": "750 ml",
"charges": 8,
- "flags": [ "EATEN_HOT" ],
+ "flags": [ "EATEN_HOT", "NUTRIENT_OVERRIDE" ],
"fun": 2
},
{
diff --git a/data/json/items/comestibles/brewing.json b/data/json/items/comestibles/brewing.json
index 86d225ee20597..ace7f9a88528a 100644
--- a/data/json/items/comestibles/brewing.json
+++ b/data/json/items/comestibles/brewing.json
@@ -7,7 +7,7 @@
"weight": "33 g",
"color": "white",
"container": "bottle_glass",
- "flags": [ "EATEN_COLD", "MYCUS_OK" ],
+ "flags": [ "EATEN_COLD", "MYCUS_OK", "NUTRIENT_OVERRIDE" ],
"symbol": "~",
"calories": 25,
"quench": -5,
@@ -53,7 +53,7 @@
"stim": -2,
"container": "jug_plastic",
"symbol": "~",
- "calories": 9,
+ "calories": 26,
"quench": 2,
"healthy": -2,
"fun": 2,
@@ -99,7 +99,7 @@
"stim": -2,
"container": "jug_plastic",
"symbol": "~",
- "calories": 9,
+ "calories": 26,
"quench": 2,
"healthy": -2,
"fun": 2,
@@ -189,7 +189,7 @@
"stim": -2,
"container": "jug_plastic",
"symbol": "~",
- "calories": 9,
+ "calories": 26,
"quench": 2,
"healthy": -2,
"fun": 2,
@@ -337,7 +337,7 @@
"stim": -3,
"container": "jug_plastic",
"symbol": "~",
- "calories": 9,
+ "calories": 33,
"quench": -2,
"healthy": -10,
"fun": -20,
@@ -374,7 +374,7 @@
"id": "brew_vinegar",
"name": "unfermented vinegar",
"description": "Mixture of water, alcohol and fruit juice that will eventually become vinegar.",
- "weight": "127 g",
+ "weight": "15 g",
"color": "yellow",
"container": "jug_plastic",
"symbol": "~",
@@ -383,7 +383,7 @@
"fun": -15,
"price": 0,
"volume": "250 ml",
- "charges": 2,
+ "charges": 16,
"phase": "liquid",
"comestible_type": "DRINK",
"flags": [ "NUTRIENT_OVERRIDE" ],
diff --git a/data/json/items/comestibles/carnivore.json b/data/json/items/comestibles/carnivore.json
index e4d19698fa1c9..687883c18e86a 100644
--- a/data/json/items/comestibles/carnivore.json
+++ b/data/json/items/comestibles/carnivore.json
@@ -55,10 +55,37 @@
"description": "The stomach of a large humanoid creature. It is surprisingly durable.",
"proportional": { "weight": 2.0, "volume": 2.0, "price": 1.5, "calories": 2.0 }
},
+ {
+ "id": "human_fat",
+ "copy-from": "fat",
+ "type": "COMESTIBLE",
+ "name": "chunk of human fat",
+ "name_plural": "chunks of human fat",
+ "description": "Freshly harvested from a human body.",
+ "material": "hflesh"
+ },
+ {
+ "type": "COMESTIBLE",
+ "id": "human_tallow",
+ "name": "human tallow",
+ "copy-from": "tallow",
+ "description": "A smooth white block of cleaned and rendered human fat. It will remain edible for a very long time, and can be used as an ingredient in many foods and projects.",
+ "price": 500,
+ "//": "*May* have been commercially traded.",
+ "material": "hflesh"
+ },
+ {
+ "type": "COMESTIBLE",
+ "id": "human_lard",
+ "name": "human lard",
+ "copy-from": "human_tallow",
+ "description": "A smooth white block of dry-rendered human fat. It will remain edible for a very long time, and can be used as an ingredient in many foods and projects."
+ },
{
"id": "human_flesh",
"copy-from": "meat",
"type": "COMESTIBLE",
+ "cooks_like": "human_cooked",
"name": "human flesh",
"name_plural": "human fleshes",
"description": "Freshly butchered from a human body.",
@@ -69,6 +96,7 @@
{
"id": "human_cooked",
"copy-from": "human_flesh",
+ "calories": 402,
"type": "COMESTIBLE",
"name": "cooked creep",
"description": "A freshly cooked slice of some unpleasant person. Tastes great.",
@@ -109,6 +137,55 @@
"delete": { "flags": [ "SMOKABLE" ] },
"vitamins": [ [ "vitA", 0 ], [ "vitC", 0 ], [ "calcium", 0 ], [ "iron", 0 ], [ "vitB", 0 ] ]
},
+ {
+ "id": "mutant_meat",
+ "type": "COMESTIBLE",
+ "copy-from": "meat",
+ "name": "chunk of mutant meat",
+ "name_plural": "chunks of mutant meat",
+ "description": "Meat from a heavily mutated animal. It has an unsettling loose and spongy texture, but smells… mostly normal. There are strange tangles and formations in it that don't appear natural at all: bits of bone and hair crusted up inside the muscle, as if trying to form another organism. Still, seems digestible at least, if you cook it and remove the worst parts.",
+ "looks_like": "meat",
+ "cooks_like": "mutant_meat_cooked",
+ "proportional": { "price": 0.2, "calories": 0.5 },
+ "vitamins": [ [ "vitC", 6 ], [ "calcium", 1 ], [ "iron", 26 ], [ "vitB", 389 ], [ "mutant_toxin", 25 ] ],
+ "flags": [ "SMOKABLE", "BAD_TASTE" ]
+ },
+ {
+ "id": "mutant_meat_scrap",
+ "type": "COMESTIBLE",
+ "copy-from": "meat_scrap",
+ "name": "scrap of mutant meat",
+ "name_plural": "scraps of mutant meat",
+ "description": "A tiny scrap of meat from a heavily mutated animal. It smells a bit odd, and has bits of hair and bone mixed in that seem like they grew inside the muscle itself. Still, seems digestible at least, if you cook it and remove the worst parts.",
+ "looks_like": "meat_scrap",
+ "cooks_like": "mutant_meat_scrap_cooked",
+ "proportional": { "price": 0.2, "calories": 0.5 },
+ "vitamins": [ [ "mutant_toxin", 2 ] ],
+ "flags": [ "BAD_TASTE" ]
+ },
+ {
+ "id": "mutant_human_flesh",
+ "copy-from": "mutant_meat",
+ "type": "COMESTIBLE",
+ "cooks_like": "mutant_human_cooked",
+ "name": "mutant humanoid meat",
+ "description": "Freshly butchered from the body of a heavily mutated creature that was unsettlingly humanoid in appearance. It has odd bits of fur and other tissue lodged in it that clearly don't belong. You'd have to be crazy or starving to eat this.",
+ "material": "hflesh",
+ "smoking_result": "human_smoked"
+ },
+ {
+ "id": "mutant_human_cooked",
+ "copy-from": "mutant_human_flesh",
+ "calories": 402,
+ "type": "COMESTIBLE",
+ "name": "cooked cretin",
+ "description": "Cooked meat from a heavily mutated humanoid. Now that the worst bits have been picked out, it's probably digestible, if not very appetizing.",
+ "proportional": { "price": 1.5 },
+ "parasites": 0,
+ "healthy": 0,
+ "fun": 0,
+ "flags": [ "EATEN_HOT", "NUTRIENT_OVERRIDE", "BAD_TASTE" ]
+ },
{
"type": "COMESTIBLE",
"comestible_type": "FOOD",
@@ -132,15 +209,16 @@
},
{
"id": "meat_cooked",
- "copy-from": "meat",
+ "copy-from": "flesh",
+ "weight": "296 g",
+ "volume": "250 ml",
+ "spoils_in": "1 day",
"type": "COMESTIBLE",
"name": "cooked meat",
"description": "This is a chunk of freshly cooked meat. It's filling and nutritious, but unseasoned and a bit bland.",
- "proportional": { "price": 1.5 },
+ "price": 750,
"parasites": 0,
"calories": 402,
- "healthy": 0,
- "fun": 0,
"vitamins": [ [ "vitC", 16 ], [ "calcium", 2 ], [ "iron", 69 ], [ "vitB", 778 ] ],
"flags": [ "EATEN_HOT", "NUTRIENT_OVERRIDE" ]
},
@@ -156,6 +234,33 @@
"flags": [ "NUTRIENT_OVERRIDE" ],
"calories": 51
},
+ {
+ "id": "mutant_meat_cooked",
+ "type": "COMESTIBLE",
+ "copy-from": "mutant_meat",
+ "name": "cooked mutant meat",
+ "description": "This is a cooked chunk of meat from a mutated animal. It has an unsettling, spongy texture, but otherwise tastes… mostly normal. Hopefully you got all the bits of hair and bone out…",
+ "looks_like": "meat_cooked",
+ "proportional": { "price": 1.5 },
+ "parasites": 0,
+ "calories": 200,
+ "healthy": 0,
+ "fun": -1,
+ "flags": [ "EATEN_HOT", "NUTRIENT_OVERRIDE", "BAD_TASTE" ]
+ },
+ {
+ "id": "mutant_meat_scrap_cooked",
+ "type": "COMESTIBLE",
+ "copy-from": "mutant_meat_scrap",
+ "name": "cooked scrap of mutant meat",
+ "name_plural": "cooked scraps of mutant meat",
+ "looks_like": "meat_scrap_cooked",
+ "parasites": 0,
+ "calories": 25,
+ "fun": 0,
+ "healthy": 0,
+ "flags": [ "NUTRIENT_OVERRIDE", "NO_CRAFT_INHERIT" ]
+ },
{
"id": "offal",
"copy-from": "meat",
@@ -221,7 +326,7 @@
"volume": "250 ml",
"price": 200,
"spoils_in": "8 hours",
- "calories": 40,
+ "calories": 60,
"quench": 1,
"healthy": -1,
"fun": -15
@@ -254,7 +359,7 @@
"fun": 4,
"calories": 348,
"vitamins": [ [ "vitA", 0 ], [ "vitC", 0 ], [ "calcium", 2 ], [ "iron", 26 ], [ "vitB", 35 ] ],
- "delete": { "flags": [ "SMOKABLE" ] },
+ "flags": "NO_CRAFT_INHERIT",
"proportional": { "price": 0.64 }
},
{
@@ -372,7 +477,7 @@
"name": "raw liver",
"description": "The liver from an animal. Although many dislike the texture, it's one of the more vitamin rich parts of the animal. It is very good in sausages, but maybe a little less appetizing when cooked on its own.",
"quench": -4,
- "calories": 73,
+ "calories": 92,
"vitamins": [ [ "vitA", 75 ], [ "vitC", 0 ], [ "calcium", 0 ], [ "iron", 8 ], [ "vitB", 336 ] ]
},
{
@@ -393,7 +498,7 @@
"looks_like": "offal",
"name": "raw brains",
"name_plural": "raw brains",
- "description": "The brain from an animal. You wouldn't want to eat this raw...",
+ "description": "The brain from an animal. You wouldn't want to eat this raw…",
"color": "light_gray",
"healthy": -15,
"quench": 10,
@@ -459,7 +564,7 @@
"looks_like": "meat_cooked",
"name": "cooked sweetbread",
"fun": -4,
- "description": "Normally a delicacy, it needs a little... something.",
+ "description": "Normally a delicacy, it needs a little… something.",
"parasites": 0
},
{
@@ -546,6 +651,58 @@
"copy-from": "tallow",
"description": "A smooth white block of dry-rendered animal fat. It will remain edible for a very long time, and can be used as an ingredient in many foods and projects."
},
+ {
+ "id": "mutant_fat",
+ "type": "COMESTIBLE",
+ "copy-from": "fat",
+ "name": "chunk of mutant fat",
+ "name_plural": "chunks of mutant fat",
+ "description": "Freshly butchered fat from a heavily mutated animal. You could eat it raw, but it is better used as an ingredient in other foods or projects.",
+ "looks_like": "fat",
+ "proportional": { "price": 0.2 },
+ "vitamins": [ [ "mutant_toxin", 360 ] ]
+ },
+ {
+ "id": "mutant_tallow",
+ "type": "COMESTIBLE",
+ "copy-from": "tallow",
+ "name": "mutant tallow",
+ "description": "A smooth white block of cleaned and rendered fat sourced from a mutant animal. It will remain edible for a very long time, and can be used as an ingredient in many foods and projects.",
+ "looks_like": "tallow",
+ "proportional": { "price": 0.2 },
+ "vitamins": [ [ "mutant_toxin", 180 ] ]
+ },
+ {
+ "id": "mutant_lard",
+ "type": "COMESTIBLE",
+ "copy-from": "mutant_tallow",
+ "name": "mutant lard",
+ "description": "A smooth white block of dry-rendered fat sourced from a mutant animal. It will remain edible for a very long time, and can be used as an ingredient in many foods and projects."
+ },
+ {
+ "id": "mutant_human_fat",
+ "type": "COMESTIBLE",
+ "copy-from": "mutant_fat",
+ "name": "chunk of mutant humanoid fat",
+ "name_plural": "chunks of mutant humanoid fat",
+ "description": "Freshly butchered fat from a heavily mutated humanoid.",
+ "material": "hflesh"
+ },
+ {
+ "type": "COMESTIBLE",
+ "id": "mutant_human_tallow",
+ "name": "mutant humanoid tallow",
+ "copy-from": "mutant_tallow",
+ "description": "A smooth white block of cleaned and rendered fat sourced from a mutant humanoid. It won't rot for a very long time, and can be used as an ingredient in many foods and projects.",
+ "material": "hflesh"
+ },
+ {
+ "type": "COMESTIBLE",
+ "id": "mutant_human_lard",
+ "name": "mutant humanoid lard",
+ "copy-from": "mutant_human_tallow",
+ "description": "A smooth white block of dry-rendered fat sourced from a mutant humanoid. It won't rot for a very long time, and can be used as an ingredient in many foods and projects."
+ },
{
"type": "COMESTIBLE",
"id": "meat_tainted",
@@ -564,7 +721,7 @@
"material": "flesh",
"volume": "250 ml",
"fun": -10,
- "flags": [ "TRADER_AVOID", "SMOKABLE" ],
+ "flags": [ "TRADER_AVOID", "SMOKABLE", "NUTRIENT_OVERRIDE" ],
"smoking_result": "dry_meat_tainted"
},
{
@@ -627,7 +784,7 @@
"symbol": "%",
"quench": -10,
"healthy": -2,
- "calories": 52,
+ "calories": 18,
"description": "A smooth grayish block of cleaned and rendered monster fat. It will remain 'fresh' for a very long time, and can be used as an ingredient in many projects. You could eat it, but it will poison you.",
"price": 0,
"//": "Not for use in edible/foodsafe recipes. Inefficiency is handled by tainted tallow recipe requiring 200% as much materials input as regular tallow recipe.",
@@ -640,18 +797,10 @@
{
"type": "COMESTIBLE",
"id": "stomach_boiled",
+ "copy-from": "small_stomach_boiled",
"name": "large boiled stomach",
- "weight": "145 g",
- "color": "red",
- "spoils_in": "1 day",
- "comestible_type": "FOOD",
- "symbol": ",",
- "calories": 260,
"description": "A boiled stomach from an animal, nothing else. It looks all but appetizing.",
- "price": 750,
- "material": "flesh",
- "volume": "250 ml",
- "flags": [ "EATEN_HOT" ],
+ "proportional": { "price": 2.0, "calories": 2.0, "volume": 2.0, "weight": 2.0 },
"fun": -5
},
{
@@ -671,7 +820,7 @@
"spoils_in": "1 day",
"comestible_type": "FOOD",
"symbol": ",",
- "calories": 130,
+ "calories": 60,
"description": "A small boiled stomach from an animal, nothing else. It looks all but appetizing.",
"price": 375,
"material": "flesh",
@@ -787,7 +936,7 @@
"healthy": -10,
"calories": 347,
"quench": 20,
- "description": "A thick, hulking mass of flesh superficially resembling a mammalian heart, covered in ribbed grooves and easily the size of your head. It's still full of, er, whatever passes for blood in jabberwocks, and is heavy in your hands. After everything you've seen lately, you can't help but remember old sayings about eating the hearts of your enemies...",
+ "description": "A thick, hulking mass of flesh superficially resembling a mammalian heart, covered in ribbed grooves and easily the size of your head. It's still full of, er, whatever passes for blood in jabberwocks, and is heavy in your hands. After everything you've seen lately, you can't help but remember old sayings about eating the hearts of your enemies…",
"price": 6500,
"material": [ "flesh" ],
"volume": "1 L",
diff --git a/data/json/items/comestibles/dairy.json b/data/json/items/comestibles/dairy.json
index 0c932f17b9e73..6447cac17229c 100644
--- a/data/json/items/comestibles/dairy.json
+++ b/data/json/items/comestibles/dairy.json
@@ -179,7 +179,8 @@
"primary_material": "cheese",
"volume": "250 ml",
"vitamins": [ [ "vitA", 5 ], [ "calcium", 32 ], [ "iron", 2 ] ],
- "fun": 5
+ "fun": 5,
+ "flags": [ "NUTRIENT_OVERRIDE" ]
},
{
"type": "COMESTIBLE",
@@ -229,13 +230,13 @@
"id": "milk_powder",
"name": "powdered milk",
"name_plural": "powdered milk",
- "weight": "7 g",
+ "weight": "30 g",
"color": "white",
"container": "bag_plastic",
"comestible_type": "FOOD",
"symbol": "%",
"quench": -1,
- "calories": 26,
+ "calories": 132,
"description": "Dehydrated milk powder. Mix with water to make drinkable milk.",
"price": 1100,
"material": [ "powder", "milk" ],
@@ -243,7 +244,7 @@
"volume": "250 ml",
"cooks_like": "milk",
"flags": [ "EDIBLE_FROZEN" ],
- "charges": 10,
+ "charges": 4,
"vitamins": [ [ "vitA", 3 ], [ "vitC", 1 ], [ "calcium", 7 ] ],
"fun": -5
},
diff --git a/data/json/items/comestibles/drink.json b/data/json/items/comestibles/drink.json
index 4b2152c33616c..fe8c862b4509b 100644
--- a/data/json/items/comestibles/drink.json
+++ b/data/json/items/comestibles/drink.json
@@ -237,7 +237,7 @@
"quench": 36,
"healthy": 3,
"calories": 11,
- "description": "Toasted, ground chicory root steeped in boiling water. This bitter brew is used as a coffee substitute, though it tastes nothing like coffee.",
+ "description": "Toasted, ground chicory root steeped in boiling water. This bitter brew is used as a coffee substitute, though it tastes nothing like coffee.",
"price": 125,
"volume": "250 ml",
"material": [ "water" ],
diff --git a/data/json/items/comestibles/drink_other.json b/data/json/items/comestibles/drink_other.json
index 070fa133a91f3..eaa708ec9cb96 100644
--- a/data/json/items/comestibles/drink_other.json
+++ b/data/json/items/comestibles/drink_other.json
@@ -3,7 +3,7 @@
"type": "COMESTIBLE",
"id": "sauce_red",
"name": "red sauce",
- "weight": "32 g",
+ "weight": "64 g",
"color": "red",
"spoils_in": "3 days",
"container": "can_food",
@@ -16,7 +16,7 @@
"//": "Small cans--needs upsized after the string freeze.",
"material": "tomato",
"volume": "250 ml",
- "charges": 8,
+ "charges": 4,
"phase": "liquid",
"flags": [ "EATEN_HOT" ],
"fun": 1
@@ -38,8 +38,8 @@
"container": "metal_tank",
"material": "water",
"quench": 45,
- "//": "need 40 parts maple sap to make 1 part maple syrup",
- "proportional": { "calories": 0.025 },
+ "//": "need 40 charges of maple sap to make 16 charges of maple syrup",
+ "proportional": { "calories": 0.4 },
"fun": 1,
"flags": [ "EATEN_COLD" ],
"phase": "liquid",
diff --git a/data/json/items/comestibles/frozen.json b/data/json/items/comestibles/frozen.json
index 9c4deed88c548..c84cb49bc2477 100644
--- a/data/json/items/comestibles/frozen.json
+++ b/data/json/items/comestibles/frozen.json
@@ -171,7 +171,7 @@
"name": "gelato",
"name_plural": "gelato scoops",
"description": "Italian-style ice cream. Less airy, and more dense, giving it a richer flavor and texture.",
- "calories": 328,
+ "calories": 240,
"price": 300,
"weight": "90 g",
"primary_material": "ice_cream",
diff --git a/data/json/items/comestibles/fruit_dishes.json b/data/json/items/comestibles/fruit_dishes.json
index 51ad0e8a9a5d3..4c8c8ddc58a86 100644
--- a/data/json/items/comestibles/fruit_dishes.json
+++ b/data/json/items/comestibles/fruit_dishes.json
@@ -100,15 +100,14 @@
{
"type": "COMESTIBLE",
"id": "lemonade_powder",
- "name": "lemonade drink mix",
- "name_plural": "servings of lemonade drink mix",
+ "name": { "str": "lemonade drink mix", "str_pl": "lemonade drink mix" },
"weight": "19 g",
"color": "yellow",
"container": "bottle_plastic_small",
"comestible_type": "FOOD",
"symbol": "%",
"quench": -1,
- "calories": 74,
+ "calories": 104,
"description": "Tangy yellow powder that smells strongly of lemons. Can be mixed with water to make lemonade.",
"price": 10,
"material": [ "powder", "fruit" ],
diff --git a/data/json/items/comestibles/junkfood.json b/data/json/items/comestibles/junkfood.json
index a433ba52ee528..b7b2a3decd187 100644
--- a/data/json/items/comestibles/junkfood.json
+++ b/data/json/items/comestibles/junkfood.json
@@ -92,16 +92,17 @@
"id": "kernels",
"name": "popcorn kernels",
"name_plural": "popcorn kernels",
- "weight": "85 g",
+ "weight": "32 g",
"color": "brown",
"container": "bag_plastic",
"comestible_type": "FOOD",
"symbol": "%",
- "calories": 17,
+ "calories": 120,
"description": "Dried kernels from a particular type of corn. Practically inedible raw, they can be cooked to make a tasty snack.",
"price": 100,
"material": "junk",
"volume": "250 ml",
+ "charges": 8,
"flags": [ "EDIBLE_FROZEN" ],
"fun": -6
},
@@ -110,7 +111,7 @@
"id": "popcorn",
"name": "popcorn",
"name_plural": "popcorn",
- "weight": "12 g",
+ "weight": "8 g",
"color": "white",
"spoils_in": "360 days",
"container": "bag_plastic",
@@ -118,11 +119,12 @@
"symbol": "%",
"quench": -1,
"healthy": 1,
- "calories": 58,
+ "calories": 30,
"description": "Plain and unseasoned popcorn. Not as tasty as other kinds, but healthier as a result.",
"price": 115,
"material": "veggy",
- "volume": "250 ml",
+ "volume": "1 L",
+ "charges": 4,
"flags": [ "EATEN_HOT", "FREEZERBURN" ],
"fun": 4,
"vitamins": [ [ "iron", 2 ] ]
@@ -243,7 +245,7 @@
"container": "bag_plastic",
"comestible_type": "FOOD",
"symbol": "%",
- "calories": 655,
+ "calories": 418,
"description": "A pair of graham crackers with some chocolate and a marshmallow between them.",
"price": 400,
"material": [ "wheat", "junk" ],
@@ -267,7 +269,7 @@
"quench": -1,
"healthy": -1,
"calories": 209,
- "description": "A handful of peanut butter cups... your favorite!",
+ "description": "A handful of peanut butter cups… your favorite!",
"price": 180,
"material": "junk",
"volume": "250 ml",
@@ -356,7 +358,7 @@
"symbol": "%",
"quench": -1,
"healthy": -1,
- "calories": 130,
+ "calories": 54,
"description": "This golden, translucent leaf candy is made with pure maple syrup and melt slowly as you savor the taste of real maple.",
"price": 600,
"material": "junk",
@@ -486,7 +488,7 @@
"copy-from": "jihelucake",
"stim": 8,
"quench": -5,
- "description": "A cake coated in the thickest icing you've ever seen. Someone has written guff in quotation marks on it...",
+ "description": "A cake coated in the thickest icing you've ever seen. Someone has written guff in quotation marks on it…",
"fun": 20
},
{
@@ -559,7 +561,7 @@
"symbol": "%",
"healthy": -2,
"calories": 165,
- "description": "A handful of soft chocolate-covered peppermint patties... yum!",
+ "description": "A handful of soft chocolate-covered peppermint patties… yum!",
"price": 130,
"material": "junk",
"volume": "250 ml",
@@ -857,12 +859,13 @@
"symbol": "%",
"quench": -2,
"healthy": -2,
- "calories": 434,
+ "calories": 313,
"description": "Now with ONE POUND of meat and ONE POUND of carbs! Not as appetizing or nutritious as it would be if heated up.",
"price": 320,
"material": [ "flesh", "junk" ],
"primary_material": "processed_food",
"volume": "1 L",
+ "charges": 2,
"fun": -3
},
{
diff --git a/data/json/items/comestibles/meat_dishes.json b/data/json/items/comestibles/meat_dishes.json
index ebff6ac7e8a7c..1fa62d681eedf 100644
--- a/data/json/items/comestibles/meat_dishes.json
+++ b/data/json/items/comestibles/meat_dishes.json
@@ -369,7 +369,7 @@
"symbol": "%",
"quench": -2,
"healthy": 1,
- "calories": 49,
+ "calories": 121,
"description": "Lutefisk is preserved fish that has been dried in a lye solution. Vile and soap-like yet highly nutritious, it is reminiscent of the afterbirth of a dog or the world's largest chunk of phlegm.",
"price": 200,
"material": "flesh",
@@ -400,6 +400,16 @@
"fun": -8,
"vitamins": [ [ "iron", 3 ] ]
},
+ {
+ "type": "COMESTIBLE",
+ "id": "debug_nutrition",
+ "copy-from": "can_spam",
+ "name": "holy SPAM of debugging",
+ "calories": 2100,
+ "description": "A mysterious lump of SPAM that contains just enough calories and vitamins to feed you for a day. For debug use only.",
+ "//": "This is used for the all_nutrient_starve_test.",
+ "vitamins": [ [ "vitA", 96 ], [ "vitB", 96 ], [ "vitC", 96 ], [ "calcium", 96 ], [ "iron", 96 ] ]
+ },
{
"type": "COMESTIBLE",
"id": "can_sardine",
@@ -806,6 +816,7 @@
"description": "Meat slices cured in brine. Salty but tasty in a pinch.",
"price": 500,
"material": "flesh",
+ "delete": { "flags": [ "NUTRIENT_OVERRIDE" ] },
"primary_material": "cured_meat",
"fun": 2
},
@@ -956,6 +967,7 @@
"healthy": 1,
"description": "This is a serving of crisply brined and canned meat. Tasty and nutritious.",
"price": 250,
+ "delete": { "flags": [ "NUTRIENT_OVERRIDE" ] },
"fun": 6
},
{
@@ -972,7 +984,7 @@
"material": "flesh",
"primary_material": "cured_meat",
"volume": "125 ml",
- "flags": [ "EDIBLE_FROZEN" ]
+ "flags": [ "EDIBLE_FROZEN", "NO_CRAFT_INHERIT" ]
},
{
"type": "COMESTIBLE",
@@ -982,6 +994,7 @@
"color": "light_red",
"description": "Reconstituted meat flakes, which are much more enjoyable to eat now that they have been rehydrated.",
"price": 900,
+ "delete": { "flags": [ "NUTRIENT_OVERRIDE" ] },
"fun": 2
},
{
diff --git a/data/json/items/comestibles/med.json b/data/json/items/comestibles/med.json
index 7271c66145381..880a26e0de13a 100644
--- a/data/json/items/comestibles/med.json
+++ b/data/json/items/comestibles/med.json
@@ -56,7 +56,7 @@
"comestible_type": "MED",
"name": "antibiotics",
"name_plural": "antibiotics",
- "description": "A prescription-strength antibacterial medication designed to prevent or stop the spread of infection. It's the quickest and most reliable way to cure any infections you might have. One dose lasts twelve hours.",
+ "description": "A strong antibacterial medication designed to prevent or stop the spread of infection. It's the safest way to cure any infections you might have. One dose lasts twelve hours.",
"weight": "1 g",
"volume": "250 ml",
"price": 9000,
@@ -387,6 +387,7 @@
"quench": 15,
"healthy": -8,
"addiction_potential": 60,
+ "calories": 49,
"description": "A potent cocktail of amphetamines, caffeine and corn syrup, this stuff puts a spring in your step, a fire in your eye, and a bad case of tachycardia tremors in your somersaulting heart.",
"price": 9000,
"material": "junk",
@@ -1313,7 +1314,7 @@
"comestible_type": "MED",
"name": "antiseptic soaked rag",
"name_plural": "antiseptic soaked rags",
- "description": "A rag soaked in antiseptic. Useful for light wounds, probaby won't help with deep bites.",
+ "description": "A rag soaked in antiseptic. Useful for light wounds, probaby won't help with deep bites.",
"weight": "80 g",
"//": "Can't copy-from rag, it breaks the stacking for some reason!",
"volume": "250 ml",
@@ -1400,7 +1401,7 @@
"comestible_type": "MED",
"name": "Panaceus",
"name_plural": "Panaceii",
- "description": "An apple-red gel capsule the size of your thumbnail, filled with a thick oily liquid that shifts from black to purple at unpredictable intervals, flecked with tiny gray dots. Given the place you got it from, it's either very potent, or highly experimental. Holding it, all the little aches and pains seem to fade, just for a moment...",
+ "description": "An apple-red gel capsule the size of your thumbnail, filled with a thick oily liquid that shifts from black to purple at unpredictable intervals, flecked with tiny gray dots. Given the place you got it from, it's either very potent, or highly experimental. Holding it, all the little aches and pains seem to fade, just for a moment…",
"weight": "15 g",
"volume": "5 ml",
"price": 1000000,
@@ -1437,5 +1438,22 @@
"move_cost": 100,
"effects": [ { "id": "pkill1", "duration": 720 } ]
}
+ },
+ {
+ "id": "strong_antibiotic",
+ "type": "COMESTIBLE",
+ "comestible_type": "MED",
+ "name": "destragon",
+ "description": "A prescription-strength antibacterial medication designed to prevent or stop the spread of infection. It contains nearly toxic levels of antibiotics, but can treat any bacterial infections you may encounter. One dose lasts twelve hours.",
+ "weight": "1 g",
+ "volume": "250 ml",
+ "price": 15000,
+ "charges": 5,
+ "stack_size": 200,
+ "symbol": "!",
+ "color": "white",
+ "healthy": -10,
+ "flags": "NPC_SAFE",
+ "use_action": { "type": "STRONG_ANTIBIOTIC" }
}
]
diff --git a/data/json/items/comestibles/mutagen.json b/data/json/items/comestibles/mutagen.json
index 53a5599ce0e8b..4acbce1a61769 100644
--- a/data/json/items/comestibles/mutagen.json
+++ b/data/json/items/comestibles/mutagen.json
@@ -28,7 +28,7 @@
"type": "COMESTIBLE",
"comestible_type": "MED",
"name": "abstract iv mutagen flavor",
- "description": "A super-concentrated mutagen. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen. You need a syringe to inject it… if you really want to?",
"price": 200000,
"weight": "10 g",
"volume": "10ml",
@@ -56,7 +56,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "alpha serum",
- "description": "A super-concentrated mutagen strongly resembling blood. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen strongly resembling blood. You need a syringe to inject it… if you really want to?",
"price": 1000000,
"color": "red",
"healthy": -4,
@@ -67,7 +67,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "beast serum",
- "description": "A super-concentrated mutagen as red as a matador's cape. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen as red as a matador's cape. You need a syringe to inject it… if you really want to?",
"color": "red",
"use_action": { "type": "mutagen_iv", "mutation_category": "BEAST" }
},
@@ -76,7 +76,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "bird serum",
- "description": "A super-concentrated mutagen the color of the pre-cataclysmic skies. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen the color of the pre-cataclysmic skies. You need a syringe to inject it… if you really want to?",
"color": "cyan",
"use_action": { "type": "mutagen_iv", "mutation_category": "BIRD" }
},
@@ -85,7 +85,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "cattle serum",
- "description": "A super-concentrated mutagen the color of grass. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen the color of grass. You need a syringe to inject it… if you really want to?",
"color": "light_green",
"use_action": { "type": "mutagen_iv", "mutation_category": "CATTLE" }
},
@@ -94,7 +94,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "cephalopod serum",
- "description": "A super-concentrated mutagen as black as ink. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen as black as ink. You need a syringe to inject it… if you really want to?",
"color": "dark_gray",
"use_action": { "type": "mutagen_iv", "mutation_category": "CEPHALOPOD" }
},
@@ -103,7 +103,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "chimera serum",
- "description": "A super-concentrated mutagen that churns with iridescence. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen that churns with iridescence. You need a syringe to inject it… if you really want to?",
"price": 400000,
"color": "red",
"healthy": -15,
@@ -116,7 +116,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "elf-a serum",
- "description": "A super-concentrated mutagen that's a striking sylvan green. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen that's a striking sylvan green. You need a syringe to inject it… if you really want to?",
"price": 400000,
"color": "light_green",
"use_action": { "type": "mutagen_iv", "mutation_category": "ELFA" }
@@ -126,7 +126,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "feline serum",
- "description": "A super-concentrated mutagen, yellow and highly reflective. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen, yellow and highly reflective. You need a syringe to inject it… if you really want to?",
"color": "yellow",
"use_action": { "type": "mutagen_iv", "mutation_category": "FELINE" }
},
@@ -135,7 +135,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "fish serum",
- "description": "A super-concentrated mutagen the color of the ocean, with white foam at the top. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen the color of the ocean, with white foam at the top. You need a syringe to inject it… if you really want to?",
"color": "light_blue",
"use_action": { "type": "mutagen_iv", "mutation_category": "FISH" }
},
@@ -144,7 +144,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "insect serum",
- "description": "A super-concentrated mutagen that's a beautiful amber color. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen that's a beautiful amber color. You need a syringe to inject it… if you really want to?",
"color": "yellow",
"use_action": { "type": "mutagen_iv", "mutation_category": "INSECT" }
},
@@ -153,7 +153,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "lizard serum",
- "description": "A super-concentrated mutagen that shifts between various shades of green. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen that shifts between various shades of green. You need a syringe to inject it… if you really want to?",
"color": "light_green",
"use_action": { "type": "mutagen_iv", "mutation_category": "LIZARD" }
},
@@ -162,7 +162,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "lupine serum",
- "description": "A super-concentrated mutagen as white as a full moon. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen as white as a full moon. You need a syringe to inject it… if you really want to?",
"color": "white",
"use_action": { "type": "mutagen_iv", "mutation_category": "LUPINE" }
},
@@ -171,7 +171,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "medical serum",
- "description": "A super-concentrated mutagen that looks like a mixture of bodily fluids. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen that looks like a mixture of bodily fluids. You need a syringe to inject it… if you really want to?",
"price": 300000,
"color": "light_red",
"healthy": -4,
@@ -182,7 +182,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "plant serum",
- "description": "A super-concentrated mutagen that looks like pureed spinach. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen that looks like pureed spinach. You need a syringe to inject it… if you really want to?",
"color": "green",
"use_action": { "type": "mutagen_iv", "mutation_category": "PLANT" }
},
@@ -191,7 +191,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "raptor serum",
- "description": "A super-concentrated mutagen that seems to shift slightly whenever you look at it. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen that seems to shift slightly whenever you look at it. You need a syringe to inject it… if you really want to?",
"price": 400000,
"color": "green",
"use_action": { "type": "mutagen_iv", "mutation_category": "RAPTOR" }
@@ -201,7 +201,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "rat serum",
- "description": "A super-concentrated mutagen that's a rather unappealing beige. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen that's a rather unappealing beige. You need a syringe to inject it… if you really want to?",
"color": "brown",
"use_action": { "type": "mutagen_iv", "mutation_category": "RAT" }
},
@@ -210,7 +210,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "slime serum",
- "description": "A super-concentrated mutagen that looks very much like the black ooze in the zombies' eyes. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen that looks very much like the black ooze in the zombies' eyes. You need a syringe to inject it… if you really want to?",
"color": "dark_gray",
"use_action": { "type": "mutagen_iv", "mutation_category": "SLIME" }
},
@@ -219,7 +219,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "spider serum",
- "description": "A super-concentrated mutagen with pale filaments suspended in it. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen with pale filaments suspended in it. You need a syringe to inject it… if you really want to?",
"color": "light_gray",
"use_action": { "type": "mutagen_iv", "mutation_category": "SPIDER" }
},
@@ -228,7 +228,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "troglobite serum",
- "description": "A super-concentrated mutagen that seems to recoil from the light. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen that seems to recoil from the light. You need a syringe to inject it… if you really want to?",
"color": "dark_gray",
"use_action": { "type": "mutagen_iv", "mutation_category": "TROGLOBITE" }
},
@@ -237,7 +237,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "ursine serum",
- "description": "A super-concentrated mutagen that's the color of honey, and is just as thick. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen that's the color of honey, and is just as thick. You need a syringe to inject it… if you really want to?",
"color": "yellow",
"use_action": { "type": "mutagen_iv", "mutation_category": "URSINE" }
},
@@ -246,7 +246,7 @@
"copy-from": "iv_mutagen_flavor",
"type": "COMESTIBLE",
"name": "mouse serum",
- "description": "A super-concentrated mutagen resembling liquefied metal. You need a syringe to inject it... if you really want to?",
+ "description": "A super-concentrated mutagen resembling liquefied metal. You need a syringe to inject it… if you really want to?",
"color": "light_gray",
"use_action": { "type": "mutagen_iv", "mutation_category": "MOUSE" }
},
@@ -263,7 +263,7 @@
"copy-from": "mutagen",
"type": "COMESTIBLE",
"name": "congealed blood",
- "description": "A thick, soupy red liquid. It looks and smells disgusting, and seems to bubble with an intelligence of its own...",
+ "description": "A thick, soupy red liquid. It looks and smells disgusting, and seems to bubble with an intelligence of its own…",
"color": "red",
"addiction_potential": 0,
"charges": 5,
diff --git a/data/json/items/comestibles/nuts.json b/data/json/items/comestibles/nuts.json
index 73c921678a380..0e5c2e277e5c2 100644
--- a/data/json/items/comestibles/nuts.json
+++ b/data/json/items/comestibles/nuts.json
@@ -2,8 +2,7 @@
{
"type": "COMESTIBLE",
"id": "pine_nuts",
- "name": "handful of pine nuts",
- "name_plural": "handfuls of pine nuts",
+ "name": { "str": "pine nuts", "str_pl": "pine nuts" },
"weight": "30 g",
"color": "brown",
"spoils_in": 1080,
@@ -25,8 +24,7 @@
{
"type": "COMESTIBLE",
"id": "juniper",
- "name": "handful of junipers",
- "name_plural": "handful of junipers",
+ "name": { "str": "junipers", "str_pl": "junipers" },
"weight": "122 g",
"color": "blue",
"comestible_type": "FOOD",
@@ -44,8 +42,7 @@
{
"type": "COMESTIBLE",
"id": "pistachio_unshelled",
- "name": "handful of shelled pistachios",
- "name_plural": "handfuls of shelled pistachios",
+ "name": { "str": "shelled pistachios", "str_pl": "shelled pistachios" },
"weight": "30 g",
"color": "green",
"spoils_in": "90 days",
@@ -67,8 +64,7 @@
{
"type": "COMESTIBLE",
"id": "pistachio_roasted",
- "name": "handful of roasted pistachios",
- "name_plural": "handfuls of roasted pistachios",
+ "name": { "str": "roasted pistachios", "str_pl": "roasted pistachios" },
"copy-from": "pistachio_unshelled",
"healthy": 2,
"description": "A handful of roasted nuts from an pistachio tree.",
@@ -79,8 +75,7 @@
{
"type": "COMESTIBLE",
"id": "almond_unshelled",
- "name": "handful of shelled almonds",
- "name_plural": "handfuls of shelled almonds",
+ "name": { "str": "shelled almonds", "str_pl": "shelled almonds" },
"weight": "30 g",
"color": "brown",
"spoils_in": "300 days",
@@ -99,11 +94,29 @@
"charges": 4,
"fun": 1
},
+ {
+ "type": "COMESTIBLE",
+ "id": "almond_pulp",
+ "name": "almond pulp",
+ "name_plural": "almond pulp",
+ "looks_like": "granola",
+ "weight": "30 g",
+ "color": "brown",
+ "spoils_in": "300 days",
+ "comestible_type": "FOOD",
+ "symbol": "%",
+ "calories": 184,
+ "description": "Pulp left over after making almond milk. It's gritty and incredibly bland.",
+ "price": 10,
+ "material": "nut",
+ "volume": "125 ml",
+ "flags": [ "EDIBLE_FROZEN" ],
+ "fun": -8
+ },
{
"type": "COMESTIBLE",
"id": "almond_roasted",
- "name": "handful of roasted almonds",
- "name_plural": "handfuls of roasted almonds",
+ "name": { "str": "roasted almonds", "str_pl": "roasted almonds" },
"copy-from": "almond_unshelled",
"healthy": 2,
"description": "A handful of roasted nuts from an almond tree.",
@@ -114,8 +127,7 @@
{
"type": "COMESTIBLE",
"id": "cashews",
- "name": "handful of cashews",
- "name_plural": "handfuls of cashews",
+ "name": { "str": "cashews", "str_pl": "cashews" },
"weight": "30 g",
"color": "brown",
"spoils_in": "240 days",
@@ -137,8 +149,7 @@
{
"type": "COMESTIBLE",
"id": "pecan_unshelled",
- "name": "handful of shelled pecans",
- "name_plural": "handfuls of shelled pecans",
+ "name": { "str": "shelled pecans", "str_pl": "shelled pecans" },
"weight": "30 g",
"color": "brown",
"spoils_in": "180 days",
@@ -160,8 +171,7 @@
{
"type": "COMESTIBLE",
"id": "pecan_roasted",
- "name": "handful of roasted pecans",
- "name_plural": "handfuls of roasted pecans",
+ "name": { "str": "roasted pecans", "str_pl": "roasted pecans" },
"copy-from": "pecan_unshelled",
"description": "A handful of roasted nuts from a pecan tree.",
"price": 150,
@@ -171,8 +181,7 @@
{
"type": "COMESTIBLE",
"id": "peanut_unshelled",
- "name": "handful of shelled peanuts",
- "name_plural": "handful of shelled peanuts",
+ "name": { "str": "shelled peanuts", "str_pl": "shelled peanuts" },
"weight": "30 g",
"color": "brown",
"spoils_in": "240 days",
@@ -194,8 +203,7 @@
{
"type": "COMESTIBLE",
"id": "beech_nuts",
- "name": "handful of beech nuts",
- "name_plural": "handfuls of beech nuts",
+ "name": { "str": "beech nuts", "str_pl": "beech nuts" },
"weight": "30 g",
"color": "brown",
"spoils_in": "90 days",
@@ -215,8 +223,7 @@
{
"type": "COMESTIBLE",
"id": "walnut_unshelled",
- "name": "handful of shelled walnuts",
- "name_plural": "handfuls of shelled walnuts",
+ "name": { "str": "shelled walnuts", "str_pl": "shelled walnuts" },
"weight": "30 g",
"color": "brown",
"spoils_in": "180 days",
@@ -237,8 +244,7 @@
{
"type": "COMESTIBLE",
"id": "walnut_roasted",
- "name": "handful of roasted walnuts",
- "name_plural": "handfuls of roasted walnuts",
+ "name": { "str": "roasted walnuts", "str_pl": "roasted walnuts" },
"copy-from": "walnut_unshelled",
"healthy": 1,
"description": "A handful of roasted nuts from a walnut tree.",
@@ -249,8 +255,7 @@
{
"type": "COMESTIBLE",
"id": "chestnut_unshelled",
- "name": "handful of shelled chestnuts",
- "name_plural": "handfuls of shelled chestnuts",
+ "name": { "str": "shelled chestnuts", "str_pl": "shelled chestnuts" },
"weight": "30 g",
"color": "brown",
"spoils_in": "180 days",
@@ -271,8 +276,7 @@
{
"type": "COMESTIBLE",
"id": "chestnut_roasted",
- "name": "handful of roasted chestnuts",
- "name_plural": "handfuls of roasted chestnuts",
+ "name": { "str": "roasted chestnuts", "str_pl": "roasted chestnuts" },
"copy-from": "chestnut_unshelled",
"healthy": 1,
"description": "A handful of roasted nuts from a chestnut tree.",
@@ -283,8 +287,7 @@
{
"type": "COMESTIBLE",
"id": "hazelnut_unshelled",
- "name": "handful of shelled hazelnuts",
- "name_plural": "handfuls of shelled hazelnuts",
+ "name": { "str": "shelled hazelnuts", "str_pl": "shelled hazelnuts" },
"weight": "30 g",
"color": "brown",
"spoils_in": "150 days",
@@ -305,8 +308,7 @@
{
"type": "COMESTIBLE",
"id": "edamame_roasted",
- "name": "handful of roasted edamame",
- "name_plural": "handful of roasted edamame",
+ "name": { "str": "roasted edamame", "str_pl": "roasted edamame" },
"weight": "30 g",
"color": "brown",
"spoils_in": "240 days",
@@ -327,8 +329,7 @@
{
"type": "COMESTIBLE",
"id": "soy_nuts",
- "name": "handful of roasted soy nuts",
- "name_plural": "handful of roasted soy nuts",
+ "name": { "str": "roasted soy nuts", "str_pl": "roasted soy nuts" },
"weight": "30 g",
"color": "brown",
"spoils_in": "240 days",
@@ -349,8 +350,7 @@
{
"type": "COMESTIBLE",
"id": "hazelnut_roasted",
- "name": "handful of roasted hazelnuts",
- "name_plural": "handfuls of roasted hazelnuts",
+ "name": { "str": "roasted hazelnuts", "str_pl": "roasted hazelnuts" },
"copy-from": "hazelnut_unshelled",
"healthy": 1,
"description": "A handful of roasted nuts from a hazelnut tree.",
@@ -361,8 +361,7 @@
{
"type": "COMESTIBLE",
"id": "hickory_nut_unshelled",
- "name": "handful of shelled hickory nuts",
- "name_plural": "handfuls of shelled hickory nuts",
+ "name": { "str": "shelled hickory nuts", "str_pl": "shelled hickory nuts" },
"weight": "30 g",
"color": "brown",
"spoils_in": "180 days",
@@ -383,8 +382,7 @@
{
"type": "COMESTIBLE",
"id": "hickory_nut_roasted",
- "name": "handful of roasted hickory nuts",
- "name_plural": "handfuls of roasted hickory nuts",
+ "name": { "str": "roasted hickory nuts", "str_pl": "roasted hickory nuts" },
"copy-from": "hickory_nut_unshelled",
"healthy": 1,
"description": "A handful of roasted nuts from a hickory tree.",
@@ -417,8 +415,7 @@
{
"type": "COMESTIBLE",
"id": "acorns",
- "name": "handful of acorns",
- "name_plural": "handfuls of acorns",
+ "name": { "str": "acorns", "str_pl": "acorns" },
"weight": "30 g",
"color": "brown",
"spoils_in": "240 days",
@@ -440,8 +437,7 @@
{
"type": "COMESTIBLE",
"id": "acorn_roasted",
- "name": "handful of roasted acorns",
- "name_plural": "handfuls of roasted acorns",
+ "name": { "str": "roasted acorns", "str_pl": "roasted acorns" },
"copy-from": "acorns",
"healthy": 1,
"description": "A handful roasted nuts from an oak tree.",
diff --git a/data/json/items/comestibles/offal_dishes.json b/data/json/items/comestibles/offal_dishes.json
index ec3376ac6fb3e..e2ce88b2aef52 100644
--- a/data/json/items/comestibles/offal_dishes.json
+++ b/data/json/items/comestibles/offal_dishes.json
@@ -34,9 +34,8 @@
"color": "brown",
"weight": "206 g",
"volume": "250 ml",
- "charges": 2,
"spoils_in": "1 day",
- "calories": 327,
+ "calories": 398,
"healthy": 2,
"quench": -3,
"flags": [ "EATEN_HOT", "FREEZERBURN" ],
diff --git a/data/json/items/comestibles/other.json b/data/json/items/comestibles/other.json
index b51a3f24a00c1..31ab474f86f18 100644
--- a/data/json/items/comestibles/other.json
+++ b/data/json/items/comestibles/other.json
@@ -81,7 +81,7 @@
"price": 20000,
"//": "Didn't precisely exist pre-cataclysm, so tough to price.",
"volume": "250 ml",
- "flags": [ "EDIBLE_FROZEN" ],
+ "flags": [ "EDIBLE_FROZEN", "NUTRIENT_OVERRIDE" ],
"fun": 7
},
{
@@ -195,6 +195,7 @@
"comestible_type": "FOOD",
"symbol": "%",
"description": "This is a grayish bone meal made from rotten bones.",
+ "calories": 4,
"price": 0,
"material": "powder",
"volume": "250 ml",
@@ -217,7 +218,7 @@
"price": 25,
"material": "powder",
"volume": "250 ml",
- "flags": [ "EDIBLE_FROZEN" ],
+ "flags": [ "EDIBLE_FROZEN", "NUTRIENT_OVERRIDE" ],
"charges": 4,
"fun": -10
},
@@ -230,7 +231,6 @@
"color": "white",
"comestible_type": "FOOD",
"symbol": "`",
- "calories": 9,
"description": "A piece of paper. Can be used for fires.",
"price": 0,
"material": "paper",
@@ -468,6 +468,7 @@
"name_plural": "Kentucky coffee grounds",
"container": "bag_plastic",
"description": "Coffee grounds created through washing, cleaning, and roasting the pods from a Kentucky coffeetree. They can be used to create coffee.",
+ "flags": [ "EDIBLE_FROZEN", "NUTRIENT_OVERRIDE", "NO_CRAFT_INHERIT" ],
"charges": 5,
"stack_size": 20
},
@@ -496,7 +497,7 @@
"id": "can_tomato",
"name": "canned tomato",
"name_plural": "canned tomatoes",
- "weight": "256 g",
+ "weight": "128 g",
"color": "red",
"spoils_in": "3 days 18 hours",
"container": "can_food",
@@ -504,7 +505,7 @@
"symbol": "%",
"quench": 3,
"healthy": 1,
- "calories": 82,
+ "calories": 41,
"description": "Canned tomato. A staple in many pantries, and useful for many recipes.",
"price": 350,
"material": "tomato",
diff --git a/data/json/items/comestibles/protein.json b/data/json/items/comestibles/protein.json
index 6b445c4f18969..26955af51a78c 100644
--- a/data/json/items/comestibles/protein.json
+++ b/data/json/items/comestibles/protein.json
@@ -13,8 +13,7 @@
"id": "hflesh_powder",
"copy-from": "protein_powder",
"type": "COMESTIBLE",
- "name": "soylent green powder",
- "name_plural": "servings of soylent green powder",
+ "name": { "str": "soylent green powder", "str_pl": "soylent green powder" },
"description": "Raw, refined protein made out of people! While quite nutritious, it is impossible to enjoy in its pure form, try adding water.",
"material": [ "powder", "hflesh" ]
},
@@ -59,8 +58,7 @@
"id": "protein_powder",
"type": "COMESTIBLE",
"comestible_type": "FOOD",
- "name": "protein powder",
- "name_plural": "servings of protein powder",
+ "name": { "str": "protein powder", "str_pl": "protein powder" },
"description": "Raw, refined protein. While quite nutritious, it is impossible to enjoy in its pure form, try adding water.",
"//": "1 g of protein powder is 0.959 ml, 1 serving is 28g and 27ml",
"weight": "28 g",
diff --git a/data/json/items/comestibles/raw_fruit.json b/data/json/items/comestibles/raw_fruit.json
index 139d4139992a8..c9efd13837d8c 100644
--- a/data/json/items/comestibles/raw_fruit.json
+++ b/data/json/items/comestibles/raw_fruit.json
@@ -85,8 +85,7 @@
{
"type": "COMESTIBLE",
"id": "blueberries",
- "name": "handful of blueberries",
- "name_plural": "handful of blueberries",
+ "name": { "str": "blueberries", "str_pl": "blueberries" },
"weight": "156 g",
"color": "blue",
"spoils_in": "2 days 12 hours",
@@ -107,8 +106,7 @@
{
"type": "COMESTIBLE",
"id": "strawberries",
- "name": "handful of strawberries",
- "name_plural": "handful of strawberries",
+ "name": { "str": "strawberries", "str_pl": "strawberries" },
"weight": "144 g",
"color": "red",
"spoils_in": "2 days 12 hours",
@@ -129,8 +127,7 @@
{
"type": "COMESTIBLE",
"id": "cranberries",
- "name": "handful of cranberries",
- "name_plural": "handful of cranberries",
+ "name": { "str": "cranberries", "str_pl": "cranberries" },
"weight": "116 g",
"color": "red",
"spoils_in": 640,
@@ -151,8 +148,7 @@
{
"type": "COMESTIBLE",
"id": "raspberries",
- "name": "handful of raspberries",
- "name_plural": "handful of raspberries",
+ "name": { "str": "raspberries", "str_pl": "raspberries" },
"weight": "148 g",
"color": "red",
"spoils_in": "2 days 12 hours",
@@ -173,8 +169,7 @@
{
"type": "COMESTIBLE",
"id": "huckleberries",
- "name": "handful of huckleberries",
- "name_plural": "handful of huckleberries",
+ "name": { "str": "huckleberries", "str_pl": "huckleberries" },
"weight": "150 g",
"color": "blue",
"spoils_in": "2 days 12 hours",
@@ -195,8 +190,7 @@
{
"type": "COMESTIBLE",
"id": "mulberries",
- "name": "handful of mulberries",
- "name_plural": "handful of mulberries",
+ "name": { "str": "mulberries", "str_pl": "mulberries" },
"weight": "148 g",
"color": "red",
"spoils_in": "2 days 12 hours",
@@ -217,8 +211,7 @@
{
"type": "COMESTIBLE",
"id": "elderberries",
- "name": "handful of elderberries",
- "name_plural": "handful of elderberries",
+ "name": { "str": "elderberries", "str_pl": "elderberries" },
"weight": "153 g",
"color": "red",
"spoils_in": "2 days 12 hours",
@@ -239,8 +232,7 @@
{
"type": "COMESTIBLE",
"id": "rose_hips",
- "name": "handful of rose hips",
- "name_plural": "handful of rose hips",
+ "name": { "str": "rose hips", "str_pl": "rose hips" },
"weight": "134 g",
"color": "red",
"spoils_in": "2 days 12 hours",
@@ -324,8 +316,7 @@
{
"type": "COMESTIBLE",
"id": "cherries",
- "name": "handful of cherries",
- "name_plural": "handful of cherries",
+ "name": { "str": "cherries", "str_pl": "cherries" },
"weight": "146 g",
"color": "red",
"spoils_in": "2 days 12 hours",
@@ -367,8 +358,7 @@
{
"type": "COMESTIBLE",
"id": "grapes",
- "name": "handful of grapes",
- "name_plural": "handful of grapes",
+ "name": { "str": "grapes", "str_pl": "grapes" },
"weight": "97 g",
"color": "light_green",
"spoils_in": "5 days",
@@ -502,8 +492,7 @@
{
"type": "COMESTIBLE",
"id": "blackberries",
- "name": "handful of blackberries",
- "name_plural": "handful of blackberries",
+ "name": { "str": "blackberries", "str_pl": "blackberries" },
"weight": "166 g",
"color": "blue",
"spoils_in": "2 days 12 hours",
@@ -612,8 +601,7 @@
{
"type": "COMESTIBLE",
"id": "apricot",
- "name": "handful of apricots",
- "name_plural": "handful of apricots",
+ "name": { "str": "apricots", "str_pl": "apricots" },
"//": "a handful of apricots is about 4.6 apricots",
"weight": "164 g",
"color": "yellow",
@@ -632,6 +620,27 @@
"smoking_result": "dry_fruit",
"vitamins": [ [ "vitA", 17 ], [ "vitC", 18 ], [ "calcium", 2 ], [ "iron", 4 ] ]
},
+ {
+ "type": "COMESTIBLE",
+ "id": "cholla_bud",
+ "name": "cholla bud",
+ "weight": "92 g",
+ "color": "red",
+ "spoils_in": "6 days 16 hours",
+ "comestible_type": "FOOD",
+ "symbol": "%",
+ "quench": 6,
+ "healthy": 2,
+ "calories": 62,
+ "description": "Edible bud of a cholla cactus, with spines removed; the candy of the Mojave indigenous peoples. Tastes similar to asparagus.",
+ "price": 900,
+ "material": "fruit",
+ "volume": "175 ml",
+ "fun": 6,
+ "flags": [ "FREEZERBURN", "SMOKABLE" ],
+ "smoking_result": "dry_fruit",
+ "vitamins": [ [ "vitA", 2 ], [ "vitC", 18 ], [ "iron", 1 ] ]
+ },
{
"type": "COMESTIBLE",
"id": "cactus_pad",
diff --git a/data/json/items/comestibles/raw_veggy.json b/data/json/items/comestibles/raw_veggy.json
index 35c59677a353f..ce522cb5332e0 100644
--- a/data/json/items/comestibles/raw_veggy.json
+++ b/data/json/items/comestibles/raw_veggy.json
@@ -193,7 +193,7 @@
"description": "Neither tasty nor very nutritious, but it goes well with salad.",
"price": 200,
"material": "veggy",
- "volume": "250 ml",
+ "volume": "1000 ml",
"flags": [ "FREEZERBURN", "SMOKABLE" ],
"smoking_result": "dry_veggy",
"vitamins": [ [ "vitA", 3 ], [ "vitC", 4 ], [ "calcium", 4 ], [ "iron", 1 ] ]
@@ -299,8 +299,7 @@
{
"type": "COMESTIBLE",
"id": "salsify_raw",
- "name": "salsify",
- "name_plural": "handfuls of salsify",
+ "name": { "str": "salsify", "str_pl": "salsify" },
"weight": "133 g",
"color": "green",
"spoils_in": "30 days",
@@ -320,8 +319,7 @@
{
"type": "COMESTIBLE",
"id": "chicory_raw",
- "name": "chicory",
- "name_plural": "handfuls of chicory",
+ "name": { "str": "chicory", "str_pl": "chicory" },
"weight": "60 g",
"color": "cyan",
"spoils_in": "30 days",
@@ -492,13 +490,14 @@
"id": "potato",
"name": "raw potato",
"name_plural": "raw potatoes",
+ "cooks_like": "potato_baked",
"weight": "210 g",
"color": "brown",
"spoils_in": "60 days",
"comestible_type": "FOOD",
"symbol": "%",
"healthy": -2,
- "calories": 162,
+ "calories": 121,
"description": "Mildly toxic and not very tasty raw. When cooked, it is delicious.",
"price": 90,
"material": "veggy",
@@ -534,8 +533,7 @@
{
"type": "COMESTIBLE",
"id": "raw_dandelion",
- "name": "handful of dandelions",
- "name_plural": "handfuls of dandelions",
+ "name": { "str": "dandelions", "str_pl": "dandelions" },
"weight": "58 g",
"color": "yellow",
"spoils_in": "1 day 6 hours",
@@ -621,14 +619,14 @@
"id": "tomato",
"name": "tomato",
"name_plural": "tomatoes",
- "weight": "212 g",
+ "weight": "231 g",
"color": "red",
"spoils_in": "3 days 18 hours",
"comestible_type": "FOOD",
"symbol": "%",
"quench": 28,
"healthy": 1,
- "calories": 32,
+ "calories": 41,
"description": "Juicy red tomato. It gained popularity in Italy after being brought back from the New World.",
"price": 90,
"material": "tomato",
@@ -762,8 +760,7 @@
{
"type": "COMESTIBLE",
"id": "fiddlehead_raw",
- "name": "handful of fiddleheads",
- "name_plural": "handfuls of fiddleheads",
+ "name": { "str": "fiddleheads", "str_pl": "fiddleheads" },
"weight": "50 g",
"flags": [ "FREEZERBURN" ],
"color": "light_green",
diff --git a/data/json/items/comestibles/seed.json b/data/json/items/comestibles/seed.json
index a4d9be0196ce8..1404d3fd2169a 100644
--- a/data/json/items/comestibles/seed.json
+++ b/data/json/items/comestibles/seed.json
@@ -753,6 +753,7 @@
"charges": 4,
"fun": -10,
"flags": [ "HIDDEN_POISON" ],
+ "use_action": "POISON",
"//": "USDA states that the pods of the Kentucky coffeetree contain a toxic alkaloid broken down in the roasting process, so they're poisonous"
},
{
diff --git a/data/json/items/comestibles/veggy_dishes.json b/data/json/items/comestibles/veggy_dishes.json
index f1ef9b954c92e..e744c3679d430 100644
--- a/data/json/items/comestibles/veggy_dishes.json
+++ b/data/json/items/comestibles/veggy_dishes.json
@@ -314,18 +314,18 @@
"id": "potato_baked",
"name": "baked potato",
"name_plural": "baked potatoes",
- "weight": "241 g",
+ "weight": "170 g",
"color": "brown",
"spoils_in": "2 days",
"comestible_type": "FOOD",
"symbol": "%",
"healthy": 1,
- "calories": 359,
+ "calories": 162,
"description": "A delicious baked potato. Got any sour cream?",
"price": 150,
"material": "veggy",
"volume": "250 ml",
- "flags": [ "EATEN_HOT" ],
+ "flags": [ "EATEN_HOT", "NUTRIENT_OVERRIDE" ],
"fun": 3,
"vitamins": [ [ "vitA", 1 ], [ "vitC", 9 ], [ "calcium", 13 ], [ "iron", 8 ] ]
},
@@ -492,7 +492,7 @@
"symbol": "%",
"quench": 5,
"healthy": 1,
- "calories": 111,
+ "calories": 230,
"description": "This is a delicious sautee of lovely diced onions and sauerkraut. The smell alone is enough to make your mouth water.",
"price": 500,
"material": "veggy",
diff --git a/data/json/items/comestibles/wheat.json b/data/json/items/comestibles/wheat.json
index b2b5de4da92d8..322cbf78db5a6 100644
--- a/data/json/items/comestibles/wheat.json
+++ b/data/json/items/comestibles/wheat.json
@@ -54,7 +54,7 @@
"comestible_type": "FOOD",
"symbol": "%",
"calories": 222,
- "description": "A type of pasta usually used when preparing spaghetti. It could be eaten raw if you're desperate, but is much better cooked.",
+ "description": "A type of pasta usually used when preparing spaghetti. It could be eaten raw if you're desperate, but is much better cooked.",
"price": 120,
"material": "wheat",
"volume": "62 ml",
@@ -74,7 +74,7 @@
"comestible_type": "FOOD",
"symbol": "%",
"calories": 222,
- "description": "A pasta sheet used in making lasagne. It could be eaten raw if you're desperate, but is much better cooked.",
+ "description": "A pasta sheet used in making lasagne. It could be eaten raw if you're desperate, but is much better cooked.",
"price": 120,
"material": "wheat",
"volume": "62 ml",
diff --git a/data/json/items/containers.json b/data/json/items/containers.json
index 11efe4121c85a..a386b62ec941f 100644
--- a/data/json/items/containers.json
+++ b/data/json/items/containers.json
@@ -2,7 +2,7 @@
{
"id": "2lcanteen",
"type": "CONTAINER",
- "category": "clothing",
+ "category": "container",
"name": "2.5L canteen",
"description": "A large plastic water canteen, with a 2.5 liter capacity and carrying strap.",
"weight": "155 g",
@@ -22,7 +22,7 @@
{
"id": "30gal_barrel",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "30 gallon barrel",
"description": "A huge plastic barrel with a resealable lid.",
"weight": "6800 g",
@@ -41,7 +41,7 @@
{
"id": "30gal_drum",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "steel drum (100L)",
"name_plural": "steel drums (100L)",
"description": "A huge steel barrel with a resealable lid.",
@@ -61,7 +61,7 @@
{
"id": "55gal_drum",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "steel drum (200L)",
"name_plural": "steel drums (200L)",
"description": "A massive steel barrel with a resealable lid.",
@@ -81,7 +81,7 @@
{
"id": "bag_canvas",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "canvas sack",
"description": "A large and sturdy canvas sack. Smells faintly of earth and hard work.",
"weight": "415 g",
@@ -98,7 +98,7 @@
{
"id": "bag_canvas_small",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "canvas bag",
"description": "Small bag made of canvas. Looks fine to store dried herbs in.",
"weight": "5 g",
@@ -115,10 +115,10 @@
{
"id": "bag_plastic",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "plastic bag",
"description": "A small, open plastic bag. Essentially trash.",
- "weight": "2 g",
+ "weight": "5 g",
"volume": 0,
"price": 0,
"to_hit": -1,
@@ -132,7 +132,7 @@
{
"id": "bag_zipper",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "zipper bag",
"looks_like": "bag_plastic",
"description": "An inexpensive flexible rectangular storage bag on its typical small size. Transparent and made of plastic, it can be sealed and opened by a slider which works in a similar way to a zip fastener.",
@@ -150,7 +150,7 @@
{
"id": "bag_body_bag",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "body bag",
"looks_like": "bag_canvas",
"description": "A large, human size, rectangular bag made of strong plastic, with a zipper in the middle. Used to hold a dead body.",
@@ -168,7 +168,7 @@
{
"id": "bottle_glass",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "glass bottle",
"description": "A resealable glass bottle, holds 750 ml of liquid.",
"weight": "200 g",
@@ -187,7 +187,7 @@
{
"id": "bottle_plastic",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "plastic bottle",
"description": "A resealable plastic bottle, holds 500 ml of liquid.",
"weight": "13 g",
@@ -204,7 +204,7 @@
{
"id": "bottle_plastic_small",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "small plastic bottle",
"description": "A resealable plastic bottle, holds 250 ml of liquid.",
"weight": "7 g",
@@ -221,7 +221,7 @@
{
"id": "bottle_twoliter",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "large plastic bottle",
"description": "It's a two-liter plastic bottle that can hold a lot of soda, or, nowadays, boiled water.",
"weight": "13 g",
@@ -238,7 +238,7 @@
{
"id": "bowl_clay",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "clay bowl",
"description": "A clay bowl with a waterproofed hide lid. Can be used as a container or as a tool. Holds 250 ml of liquid.",
"weight": "60 g",
@@ -256,7 +256,7 @@
{
"id": "box_cigarette",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "pack",
"name_plural": "packs",
"description": "SURGEON GENERAL'S WARNING: Smoking Causes Lung Cancer, Heart Disease, Emphysema And May Complicate Pregnancy.",
@@ -271,7 +271,7 @@
{
"id": "box_small",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "small cardboard box",
"name_plural": "small cardboard boxes",
"description": "A small cardboard box. No bigger than a foot in dimension.",
@@ -286,7 +286,7 @@
{
"id": "box_medium",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "cardboard box",
"name_plural": "cardboard boxes",
"description": "A sturdy cardboard box, about the size of a banana box. Great for packing.",
@@ -302,7 +302,7 @@
{
"id": "box_large",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "large cardboard box",
"name_plural": "large cardboard boxes",
"description": "A very large cardboard box, the sort children would have loved to hide in, when there were still children.",
@@ -319,7 +319,7 @@
{
"id": "bucket",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "bucket",
"name_plural": "buckets",
"description": "A galvanized bucket for peanuts, chilled wine, iced beer, lobster, crab legs, French fries, animal feed, farm use, tailgating, crafts, planting flowers, holding gift baskets, containing a fruit basket and herbs, loose item storage or as an ice bucket.",
@@ -336,7 +336,7 @@
{
"id": "camelbak",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "hydration pack",
"description": "A slim and lightweight insulated plastic bladder worn on the back. It has a large pocket and a capped mouth for filling with liquid with a hose that allows the wearer to drink hands-free.",
"weight": "286 g",
@@ -356,7 +356,7 @@
{
"id": "can_drink",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "aluminum can",
"description": "An aluminum can, like what soda comes in.",
"weight": "13 g",
@@ -387,9 +387,9 @@
{
"id": "carton_sealed",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "paper carton",
- "description": "A half gallon carton constructed of a paper, aluminum and plastic laminate. It has a threaded cap for easy resealing.",
+ "description": "A half gallon carton constructed of a paper, aluminum and plastic laminate. It has a threaded cap for easy resealing.",
"weight": "28 g",
"volume": "2 L",
"price": 0,
@@ -407,7 +407,7 @@
"copy-from": "carton_sealed",
"type": "CONTAINER",
"name": "opened paper carton",
- "description": "A half gallon carton constructed of a paper, aluminum and plastic laminate. This one is open and its contents will spoil.",
+ "description": "A half gallon carton constructed of a paper, aluminum and plastic laminate. This one is open and its contents will spoil.",
"symbol": ")",
"color": "light_blue",
"preserves": false,
@@ -419,7 +419,7 @@
{
"id": "plastic_bag_vac",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "vacuum-packed bag",
"description": "This is a bag of vacuum-packed food.",
"weight": "2 g",
@@ -437,7 +437,7 @@
{
"id": "can_food",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "tin can",
"description": "A tin can, like what beans come in.",
"weight": "40 g",
@@ -466,7 +466,7 @@
{
"id": "canteen",
"type": "CONTAINER",
- "category": "clothing",
+ "category": "container",
"name": "plastic canteen",
"description": "A military-style water canteen with a 1.5 liter capacity. Commonly worn at the hip.",
"weight": "155 g",
@@ -485,7 +485,7 @@
{
"id": "thermos",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "thermos",
"name_plural": "thermoses",
"description": "A Thermos brand vacuum flask. Built for temperature retention, helps keep things hot or cold. Contains 1L of liquid.",
@@ -503,7 +503,7 @@
{
"id": "clay_canister",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "clay canister",
"description": "A fragile clay vessel. It can be used to make crude impact grenades or to store liquid.",
"weight": "268 g",
@@ -521,7 +521,7 @@
{
"id": "clay_hydria",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "clay hydria",
"description": "A 15-liter clay pot with three handles for carrying and for pouring.",
"weight": "1955 g",
@@ -540,7 +540,7 @@
{
"id": "clay_watercont",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "large clay pot",
"description": "A bulky and heavy clay pot with a waterproofed hide lid, meant to store water, but can carry other liquids in a pinch.",
"weight": "4887 g",
@@ -558,7 +558,7 @@
{
"id": "cup_plastic",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "plastic cup",
"description": "A small, vacuum formed cup.",
"weight": "6 g",
@@ -586,7 +586,7 @@
{
"id": "flask_glass",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "glass flask",
"description": "A 250 ml laboratory conical flask, with a rubber bung.",
"weight": "48 g",
@@ -605,7 +605,7 @@
{
"id": "test_tube",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "test tube",
"description": "A 10ml laboratory cylindrical test tube, with a rubber stopper.",
"weight": "36 g",
@@ -624,7 +624,7 @@
{
"id": "beaker",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "beaker",
"description": "A 250ml laboratory beaker. Basically a cup with delusions of grandeur.",
"weight": "150 g",
@@ -642,7 +642,7 @@
{
"id": "gradcylinder",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "graduated cylinder",
"description": "A tall, narrow glass cylinder with precise markings for measuring fluid quantities. An important science tool, it is also useful for anal retentive chefs.",
"weight": "150 g",
@@ -660,7 +660,7 @@
{
"id": "test_tube_micro",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "microcentrifuge tube",
"description": "These plastic tubes, with little built in snap-caps, are a great way to store a tiny amount of liquid. Great for jello shooters if 1mL is enough for a shot for you. Cool people call these \"eppies\".",
"weight": "1 g",
@@ -678,7 +678,7 @@
{
"id": "flask_hip",
"type": "CONTAINER",
- "category": "clothing",
+ "category": "container",
"name": "hip flask",
"description": "A 250 ml metal flask with a hinged screw-on lid, commonly used to discreetly transport alcohol.",
"weight": "120 g",
@@ -699,6 +699,7 @@
{
"id": "jar_3l_glass",
"type": "CONTAINER",
+ "category": "container",
"name": "3L glass jar",
"description": "A three-liter glass jar with a metal screw top lid, used for canning.",
"weight": "365 g",
@@ -718,7 +719,6 @@
"id": "jar_3l_glass_sealed",
"copy-from": "jar_3l_glass",
"type": "CONTAINER",
- "category": "other",
"name": "sealed 3L glass jar",
"description": "A three-liter glass jar with a metal screw top lid, used for canning. Sealed tightly to preserve contents from rot.",
"symbol": ")",
@@ -730,7 +730,7 @@
{
"id": "jar_glass",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "glass jar",
"description": "A half-liter glass jar with a metal screw top lid, used for canning.",
"weight": "150 g",
@@ -761,7 +761,7 @@
{
"id": "jerrycan",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "plastic jerrycan",
"description": "A bulky plastic jerrycan, meant to carry fuel, but can carry other liquids in a pinch.",
"weight": "1587 g",
@@ -778,7 +778,7 @@
{
"id": "jerrycan_big",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "steel jerrycan",
"description": "A steel jerrycan, meant to carry fuel, but can carry other liquids in a pinch.",
"weight": "4815 g",
@@ -797,7 +797,7 @@
{
"id": "jug_clay",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "clay jug",
"description": "A clay container with a lid, used to hold and pour liquids.",
"weight": "400 g",
@@ -815,7 +815,7 @@
{
"id": "jug_plastic",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "gallon jug",
"description": "A standard plastic jug used for milk and household cleaning chemicals.",
"weight": "190 g",
@@ -832,7 +832,7 @@
{
"id": "keg",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "aluminum keg",
"description": "A reusable lightweight aluminum keg, used for shipping beer. It has a capacity of 50 liters.",
"weight": "5040 g",
@@ -851,7 +851,7 @@
{
"id": "keg_steel",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "steel keg",
"description": "A reusable heavy steel keg, used for shipping beer. It has a capacity of 50 liters.",
"weight": "12600 g",
@@ -870,7 +870,7 @@
{
"id": "large_stomach_sealed",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "large sealed stomach",
"description": "The stomach of a large creature, cleaned and sealed with strings. It can hold 3 liters of water.",
"weight": "783 g",
@@ -889,7 +889,7 @@
{
"id": "metal_tank",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "metal tank (60L)",
"name_plural": "metal tanks (60L)",
"description": "A large metal tank for holding liquids. Useful for crafting.",
@@ -909,7 +909,7 @@
{
"id": "metal_tank_little",
"type": "CONTAINER",
- "category": "spare_parts",
+ "category": "container",
"name": "metal tank (2L)",
"name_plural": "metal tanks (2L)",
"description": "A small metal tank for gas or liquids. Useful for crafting.",
@@ -929,7 +929,7 @@
{
"id": "canteen_wood",
"type": "CONTAINER",
- "category": "clothing",
+ "category": "container",
"name": "wooden canteen",
"description": "A water canteen made from wood, secured by metal bands and sealed with wax or pitch. Holds 1.5 liters and has a simple carry strap.",
"weight": "232 g",
@@ -948,7 +948,7 @@
{
"id": "stomach_sealed",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "sealed stomach",
"description": "The stomach of a creature, cleaned and sealed with a string. It can hold 1.5 liters of water.",
"weight": "453 g",
@@ -967,7 +967,7 @@
{
"id": "waterskin",
"type": "CONTAINER",
- "category": "clothing",
+ "category": "container",
"name": "small waterskin",
"description": "A small watertight leather bag with a carrying strap, can hold 1.5 liters of water.",
"weight": "453 g",
@@ -988,7 +988,7 @@
{
"id": "waterskin2",
"type": "CONTAINER",
- "category": "clothing",
+ "category": "container",
"name": "waterskin",
"description": "A watertight leather bag with a carrying strap, can hold 3 liters of water.",
"weight": "783 g",
@@ -1009,7 +1009,7 @@
{
"id": "waterskin3",
"type": "CONTAINER",
- "category": "clothing",
+ "category": "container",
"name": "large waterskin",
"description": "A large watertight leather bag with a carrying strap, can hold 5 liters of water.",
"weight": "990 g",
@@ -1030,7 +1030,7 @@
{
"id": "wooden_barrel",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "wooden barrel",
"description": "Traditionally made of white oak; these vessels are known for delivering delicious whiskey to the future. It has a capacity of 100 liters.",
"weight": "42408 g",
@@ -1049,7 +1049,7 @@
{
"id": "wrapper",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "paper wrapper",
"description": "Just a piece of butcher's paper. Good for starting fires.",
"weight": "3 g",
@@ -1066,7 +1066,7 @@
{
"id": "styrofoam_cup",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "styrofoam cup",
"description": "A cheap, disposable cup with a plastic lid and straw.",
"weight": "50 g",
@@ -1082,7 +1082,7 @@
{
"id": "plastic_bucket",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "plastic tub",
"description": "A big, square plastic bucket usually used for carrying ice cream.",
"weight": "1360 g",
@@ -1099,7 +1099,7 @@
{
"id": "condom",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "condom",
"description": "A gentleman's balloon. A single use life preventer. A thumbless latex mitten. This could be used as a makeshift water container, but otherwise it's anyone's guess what it's for.",
"weight": "5 g",
@@ -1118,7 +1118,7 @@
{
"id": "can_food_big",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "large tin can",
"description": "A large tin can, like what beans come in. Holds a substantial amount of food.",
"weight": "350 g",
@@ -1147,9 +1147,9 @@
{
"id": "survival_kit_box",
"type": "CONTAINER",
- "category": "other",
+ "category": "container",
"name": "survival kit box",
- "description": "An aluminum box that used to contain a small survival kit. Can hold 1 liter of liquid.",
+ "description": "An aluminum box that used to contain a small survival kit. Can hold 1 liter of liquid.",
"weight": 200,
"volume": "1 L",
"price": 0,
diff --git a/data/json/items/corpses.json b/data/json/items/corpses.json
index 51f4c57b4d35a..fd7b918e8ab27 100644
--- a/data/json/items/corpses.json
+++ b/data/json/items/corpses.json
@@ -118,7 +118,7 @@
"id": "corpse_painful",
"copy-from": "corpse",
"name": "corpse",
- "description": "A dead body with a frightful grimace. He appears to have been horribly mangled prior to his death.",
+ "description": "A dead body with a frightful grimace. He appears to have been horribly mangled prior to his death.",
"looks_like": "corpse",
"material": "hflesh"
},
@@ -156,7 +156,7 @@
"id": "corpse_halved_upper",
"copy-from": "corpse",
"name": "corpse",
- "description": "The upper half of a dead body, as if torn apart with enormous force. Some organs are hanging out.",
+ "description": "The upper half of a dead body, as if torn apart with enormous force. Some organs are hanging out.",
"looks_like": "corpse",
"volume": "30000 ml",
"weight": "40000 g",
diff --git a/data/json/items/corpses/inactive_bots.json b/data/json/items/corpses/inactive_bots.json
index 75e7f304397d9..5c6be291af004 100644
--- a/data/json/items/corpses/inactive_bots.json
+++ b/data/json/items/corpses/inactive_bots.json
@@ -139,7 +139,7 @@
"price": 600000,
"to_hit": -3,
"bashing": 8,
- "material": [ "superalloy", "plastic" ],
+ "material": [ "steel", "plastic" ],
"symbol": ";",
"color": "white",
"use_action": {
@@ -295,7 +295,7 @@
"id": "bot_secubot",
"type": "TOOL",
"name": "inactive TALON UGV",
- "description": "This is an inactive TALON UGV equipped with an M16A4. Using this item involves loading the unit with the factory-loaded 5.56x45mm rounds in your inventory (if you wish to divide your ammunition, set aside whatever 5.56x45mm you do NOT want to give the robot) turning it on, and placing it on the ground. If reprogrammed and rewired successfully the security bot will then identify you as a friendly, roam around or follow you, and attack all enemies with its rifle.",
+ "description": "This is an inactive TALON UGV equipped with an M16A4. Using this item involves loading the unit with the factory-loaded 5.56x45mm rounds in your inventory (if you wish to divide your ammunition, set aside whatever 5.56x45mm you do NOT want to give the robot) turning it on, and placing it on the ground. If reprogrammed and rewired successfully the security bot will then identify you as a friendly, roam around or follow you, and attack all enemies with its rifle.",
"weight": "40750 g",
"volume": "30 L",
"price": 750000,
@@ -319,7 +319,7 @@
"id": "bot_talon_m202a1",
"type": "TOOL",
"name": "inactive M202A1 TALON UGV",
- "description": "This is an inactive TALON UGV equipped with an M202A1. Using this item involves loading the unit with the M235 rockets in your inventory (if you wish to divide your ammunition, set aside whatever M235 rockets you do NOT want to give the robot) turning it on, and placing it on the ground. If reprogrammed and rewired successfully the security bot will then identify you as a friendly, roam around or follow you, and attack all enemies with its M202A1.",
+ "description": "This is an inactive TALON UGV equipped with an M202A1. Using this item involves loading the unit with the M235 rockets in your inventory (if you wish to divide your ammunition, set aside whatever M235 rockets you do NOT want to give the robot) turning it on, and placing it on the ground. If reprogrammed and rewired successfully the security bot will then identify you as a friendly, roam around or follow you, and attack all enemies with its M202A1.",
"weight": "40750 g",
"volume": "30 L",
"price": 750000,
@@ -415,7 +415,7 @@
"id": "bot_broken_cyborg",
"type": "TOOL",
"name": "inactive broken cyborg",
- "description": "This is a deactivated broken cyborg, the last shreds of its humanity still rotting away. Using this item involves placing it on the ground and reactivating its mechanical body. If reprogrammed and rewired successfully the cyborg will then follow you and attack enemies. You monster.",
+ "description": "This is a deactivated broken cyborg, the last shreds of its humanity still rotting away. Using this item involves placing it on the ground and reactivating its mechanical body. If reprogrammed and rewired successfully the cyborg will then follow you and attack enemies. You monster.",
"weight": "81500 g",
"volume": "62500 ml",
"//": "It is a disgusting mass of rotting flesh and jagged metal pieces, no one will buy it.",
@@ -467,7 +467,7 @@
"id": "bot_chickenbot",
"type": "TOOL",
"name": "inactive chicken walker",
- "description": "This is an inactive chicken walker. Using this item involves placing it on the ground, loading the unit with the factory-loaded 5.56 rounds and 40mm cartridge grenades in your inventory (if you wish to divide your ammunition, set aside whatever ammunition you do NOT want to give the robot) and turning it on. If reprogrammed and rewired successfully the chicken walker will then identify you as a friendly, roam around or follow you, and attack all enemies with a built-in firearm and grenade launcher.",
+ "description": "This is an inactive chicken walker. Using this item involves placing it on the ground, loading the unit with the factory-loaded 5.56 rounds and 40mm cartridge grenades in your inventory (if you wish to divide your ammunition, set aside whatever ammunition you do NOT want to give the robot) and turning it on. If reprogrammed and rewired successfully the chicken walker will then identify you as a friendly, roam around or follow you, and attack all enemies with a built-in firearm and grenade launcher.",
"weight": "120000 g",
"volume": "92500 ml",
"price": 50000000,
@@ -493,7 +493,7 @@
"looks_like": "broken_copbot",
"type": "TOOL",
"name": "inactive police bot",
- "description": "This is an inactive police robot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully the police bot will then identify you as law enforcement, roam around or follow you, and attempt to detain lawbreakers.",
+ "description": "This is an inactive police robot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully the police bot will then identify you as law enforcement, roam around or follow you, and attempt to detain lawbreakers.",
"weight": "81500 g",
"volume": "62500 ml",
"price": 100000,
@@ -519,7 +519,7 @@
"looks_like": "broken_eyebot",
"type": "TOOL",
"name": "inactive eyebot",
- "description": "This is an inactive eyebot. Using this item involves turning it on and launching the UAV. If reprogrammed and rewired successfully the eyebot will then keep watch for intruders.",
+ "description": "This is an inactive eyebot. Using this item involves turning it on and launching the UAV. If reprogrammed and rewired successfully the eyebot will then keep watch for intruders.",
"weight": "40750 g",
"volume": "30 L",
"price": 10000,
@@ -544,7 +544,7 @@
"id": "bot_hazmatbot",
"type": "TOOL",
"name": "inactive cleaner bot",
- "description": "This is an inactive cleaner bot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully the cleaner bot will respond to future commands.",
+ "description": "This is an inactive cleaner bot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully the cleaner bot will respond to future commands.",
"weight": "81500 g",
"volume": "62500 ml",
"price": 10000,
@@ -570,7 +570,7 @@
"looks_like": "broken_molebot",
"type": "TOOL",
"name": "inactive miner bot",
- "description": "This is an inactive mining robot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully the miner bot will respond to future commands.",
+ "description": "This is an inactive mining robot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully the miner bot will respond to future commands.",
"weight": "81500 g",
"volume": "62500 ml",
"price": 25000,
@@ -596,7 +596,7 @@
"looks_like": "broken_riotbot",
"type": "TOOL",
"name": "inactive riot control bot",
- "description": "This is an inactive riot control bot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully the robot will bring order and peace to the horde.",
+ "description": "This is an inactive riot control bot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully the robot will bring order and peace to the horde.",
"weight": "81500 g",
"volume": "62500 ml",
"price": 35000,
@@ -622,7 +622,7 @@
"looks_like": "broken_skitterbot",
"type": "TOOL",
"name": "inactive skitterbot",
- "description": "This is an inactive skitterbot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully the robot will race towards enemies and shock them.",
+ "description": "This is an inactive skitterbot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully the robot will race towards enemies and shock them.",
"weight": "40750 g",
"volume": "30 L",
"price": 80000,
@@ -674,7 +674,7 @@
"looks_like": "broken_tankbot",
"type": "TOOL",
"name": "inactive tank drone",
- "description": "This is an inactive Beagle Mini-Tank UGV. Using this item involves placing it on the ground, loading the unit with the factory-loaded 5.56 rounds and 40mm cartridge grenades in your inventory (if you wish to divide your ammunition, set aside whatever ammunition you do NOT want to give the robot) and turning it on. If reprogrammed and rewired successfully the tank drone will then identify you as a friendly, roam around or follow you, and attack all enemies with a built-in firearm and grenade launcher.",
+ "description": "This is an inactive Beagle Mini-Tank UGV. Using this item involves placing it on the ground, loading the unit with the factory-loaded 5.56 rounds and 40mm cartridge grenades in your inventory (if you wish to divide your ammunition, set aside whatever ammunition you do NOT want to give the robot) and turning it on. If reprogrammed and rewired successfully the tank drone will then identify you as a friendly, roam around or follow you, and attack all enemies with a built-in firearm and grenade launcher.",
"weight": "200000 g",
"//": "cheating a bit with the volume due to lack of proper vehicle storage options",
"volume": "250 L",
@@ -701,7 +701,7 @@
"looks_like": "broken_tripod",
"type": "TOOL",
"name": "inactive tripod",
- "description": "This is an inactive Honda Regnal. Using this item involves placing it on the ground, wondering how it fuels its flamethrower and turning it on. If reprogrammed and rewired successfully the tribot will then identify you as an ally, roam around or follow you, and impale hostiles with its spiked cable weapons.",
+ "description": "This is an inactive Honda Regnal. Using this item involves placing it on the ground, wondering how it fuels its flamethrower and turning it on. If reprogrammed and rewired successfully the tribot will then identify you as an ally, roam around or follow you, and impale hostiles with its spiked cable weapons.",
"weight": "120000 g",
"volume": "92500 ml",
"price": 100000000,
@@ -726,7 +726,7 @@
"id": "bot_turret_searchlight",
"type": "TOOL",
"name": "inactive milspec searchlight",
- "description": "This is an inactive military-grade automated searchlight. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully the searchlight will then identify you as an ally, survey the area, and illuminate approaching hostiles. Seems to have an unhealthy fascination with you.",
+ "description": "This is an inactive military-grade automated searchlight. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully the searchlight will then identify you as an ally, survey the area, and illuminate approaching hostiles. Seems to have an unhealthy fascination with you.",
"weight": "120000 g",
"volume": "92500 ml",
"price": 500000,
diff --git a/data/json/items/crossbows.json b/data/json/items/crossbows.json
index 7dc46ad9dccbd..cdd1f20007dc9 100644
--- a/data/json/items/crossbows.json
+++ b/data/json/items/crossbows.json
@@ -243,6 +243,7 @@
},
{
"id": "hand_crossbow",
+ "looks_like": "crossbow",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
@@ -275,6 +276,7 @@
},
{
"id": "crossbow",
+ "//": "Tileset whitelist for crossbows",
"type": "GUN",
"reload_noise_volume": 5,
"symbol": "(",
@@ -311,6 +313,7 @@
},
{
"id": "compositecrossbow",
+ "looks_like": "crossbow",
"type": "GUN",
"symbol": "(",
"color": "green",
@@ -347,6 +350,7 @@
},
{
"id": "compcrossbow",
+ "looks_like": "crossbow",
"type": "GUN",
"symbol": "(",
"color": "green",
@@ -383,6 +387,7 @@
},
{
"id": "huge_crossbow",
+ "looks_like": "crossbow",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
@@ -420,6 +425,7 @@
},
{
"id": "rep_crossbow",
+ "looks_like": "crossbow",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
diff --git a/data/json/items/fake.json b/data/json/items/fake.json
index 58e7a7614f424..7a8866283bb54 100644
--- a/data/json/items/fake.json
+++ b/data/json/items/fake.json
@@ -75,7 +75,7 @@
"symbol": "v",
"color": "red",
"name": "clairvoyance rod",
- "description": "Item to test aep_clairvoyance_plus flag. If this spawns randomly, then it's a bug.",
+ "description": "Item to test aep_clairvoyance_plus flag. If this spawns randomly, then it's a bug.",
"price": 5000,
"material": [ "steel" ],
"weight": "150 g",
diff --git a/data/json/items/faults_bionic.json b/data/json/items/faults_bionic.json
index 5f9021b03342c..401f145ccb52c 100644
--- a/data/json/items/faults_bionic.json
+++ b/data/json/items/faults_bionic.json
@@ -4,8 +4,15 @@
"type": "fault",
"name": "Already deployed",
"description": "This bionic needs to be reset to its factory state.",
- "time": "45 m",
- "skills": [ [ "mechanics", 3 ], [ "electronics", 2 ], [ "firstaid", 4 ] ],
- "requirements": { "qualities": [ { "id": "WRENCH_FINE", "level": 1 }, { "id": "SCREW_FINE", "level": 1 } ] }
+ "mending_methods": [
+ {
+ "id": "mend_fault_bonic_salvaged_reset",
+ "name": "Reset to factory state",
+ "success_msg": "You successfully reset the %s to its factory state",
+ "time": "45 m",
+ "skills": [ { "id": "mechanics", "level": 3 }, { "id": "electronics", "level": 2 }, { "id": "firstaid", "level": 4 } ],
+ "requirements": { "qualities": [ { "id": "WRENCH_FINE", "level": 1 }, { "id": "SCREW_FINE", "level": 1 } ] }
+ }
+ ]
}
]
diff --git a/data/json/items/fuel.json b/data/json/items/fuel.json
index 151ce35758b6c..fdd7c424f2ab7 100644
--- a/data/json/items/fuel.json
+++ b/data/json/items/fuel.json
@@ -184,7 +184,7 @@
"name": "flamethrower fuel",
"name_plural": "flamethrower fuel",
"copy-from": "gasoline",
- "description": "A mixture of gasoline and diesel oil in equal parts. Its combustion properties make it unfit for applications where you would use any of them separately, but it can be used to feed a flamethrower.",
+ "description": "A mixture of gasoline and diesel oil in equal parts. Its combustion properties make it unfit for applications where you would use any of them separately, but it can be used to feed a flamethrower.",
"price": 400,
"ammo_type": "flammable",
"range": 0
diff --git a/data/json/items/generic.json b/data/json/items/generic.json
index 33c7c52d55511..8ac168f0eb8d4 100644
--- a/data/json/items/generic.json
+++ b/data/json/items/generic.json
@@ -57,6 +57,20 @@
"flags": [ "PSEUDO", "PERPETUAL" ],
"fuel": { "energy": 1 }
},
+ {
+ "type": "GENERIC",
+ "//": "pseudo item, used as fuel type for CBMs that are metabolism-powered",
+ "id": "metabolism",
+ "symbol": "?",
+ "color": "white",
+ "name": "metabolism",
+ "description": "seeing this is a bug",
+ "stackable": true,
+ "price": 0,
+ "volume": 0,
+ "flags": [ "PERPETUAL" ],
+ "fuel": { "energy": 1 }
+ },
{
"type": "GENERIC",
"//": "pseudo item, only used for as a required tool, checked for in player::amount_of",
@@ -126,7 +140,7 @@
"symbol": "-",
"color": "pink",
"name": "foodplace loyalty card",
- "description": "A bright pink loyalty card, all the points are stamped. This would definitely prove your fidelity to Foodplace, if it still meant anything...",
+ "description": "A bright pink loyalty card, all the points are stamped. This would definitely prove your fidelity to Foodplace, if it still meant anything…",
"price": 0,
"material": "paper",
"flags": "TRADER_AVOID",
@@ -167,6 +181,7 @@
"color": "pink",
"name": "faux fur pelt",
"description": "A small bolt of garishly colored faux fur. Can be made into clothing.",
+ "flags": [ "NO_SALVAGE" ],
"material": [ "faux_fur" ]
},
{
@@ -282,6 +297,7 @@
"description": "A piece of an insect's exoskeleton. It is light and very durable.",
"price": 0,
"material": "chitin",
+ "flags": [ "NO_SALVAGE" ],
"weight": "89 g",
"volume": "250 ml",
"bashing": 1,
@@ -295,7 +311,7 @@
"color": "light_gray",
"name": "set of 100 ceramic disk",
"name_plural": "ceramic disks",
- "description": "A set of small slightly elongated disks, made of high-grade ceramic. They remind you of scales",
+ "description": "A set of small slightly elongated disks, made of high-grade ceramic. They remind you of scales.",
"price": 0,
"material": "lightceramic",
"weight": "100 g",
@@ -311,6 +327,7 @@
"name_plural": "chunks of biosilicified chitin",
"description": "A lump of exoskeleton that has undergone biosilicification. It is acid-resistant and remarkably sturdy.",
"material": "acidchitin",
+ "flags": [ "NO_SALVAGE" ],
"proportional": { "weight": 1.25 },
"relative": { "bashing": 2 }
},
@@ -660,6 +677,20 @@
"to_hit": 2,
"qualities": [ [ "HAMMER", 1 ] ]
},
+ {
+ "type": "GENERIC",
+ "id": "railroad_track_small",
+ "symbol": "=",
+ "color": "dark_gray",
+ "name": "small railroad track",
+ "description": "A length of track, made from some planks and rails.",
+ "category": "spare_parts",
+ "price": 7500,
+ "price_postapoc": 1000,
+ "material": [ "wood", "steel" ],
+ "weight": "40 kg",
+ "volume": "30000 ml"
+ },
{
"type": "GENERIC",
"id": "concrete",
@@ -734,7 +765,7 @@
"price": 1000,
"price_postapoc": 100,
"material": "iron",
- "weight": "3220 g",
+ "weight": "3000 g",
"volume": "750 ml"
},
{
@@ -817,11 +848,11 @@
"symbol": ";",
"color": "dark_gray",
"name": "television",
- "description": "A large cathode ray tube television, full of delicious electronics.",
+ "description": "A large LCD television, full of delicious electronics.",
"price": 0,
"material": "plastic",
- "weight": "22600 g",
- "volume": "3 L",
+ "weight": "15000 g",
+ "volume": "20 L",
"bashing": 5,
"to_hit": -5
},
@@ -1383,6 +1414,20 @@
"volume": "250 ml",
"to_hit": -1
},
+ {
+ "type": "GENERIC",
+ "id": "large_lcd_screen",
+ "symbol": ",",
+ "color": "dark_gray",
+ "name": "large LCD screen",
+ "category": "spare_parts",
+ "description": "A large backlit screen, used for displaying images. Useful in some electronics recipes.",
+ "price": 10000,
+ "material": "plastic",
+ "weight": "13000 g",
+ "volume": "15000 ml",
+ "to_hit": -4
+ },
{
"type": "GENERIC",
"id": "small_lcd_screen",
@@ -1510,8 +1555,8 @@
"description": "A very small electric motor like those used in RC cars. Useful in lots of electronics recipes.",
"price": 1000,
"material": [ "steel", "plastic" ],
- "weight": "110 g",
- "volume": "250 ml"
+ "weight": "125 g",
+ "volume": "25 ml"
},
{
"type": "GENERIC",
@@ -1808,7 +1853,7 @@
"color": "white",
"name": "Science SD-Memory card",
"name_plural": "Science SD-Memory cards",
- "description": "This memory card appears to be related to 'XEDRA', and is certainly encrypted. Looks * Interesting *, though...",
+ "description": "This memory card appears to be related to 'XEDRA', and is certainly encrypted. Looks *Interesting*, though…",
"price": 10000,
"price_postapoc": 0,
"material": "plastic",
@@ -1900,8 +1945,7 @@
{
"type": "GENERIC",
"id": "chamomile",
- "name": "handful of chamomile flowers",
- "name_plural": "handfuls of chamomile flowers",
+ "name": { "str": "chamomile flowers", "str_pl": "chamomile flowers" },
"description": "White chamomile flowers, used as a herbal remedy since the ancient times.",
"weight": "50 g",
"color": "white",
@@ -2275,6 +2319,7 @@
"name": "cigar butt",
"color": "dark_gray",
"symbol": "!",
+ "weight": "1 g",
"description": "A true gentleman always finishes his cigars.",
"category": "other",
"flags": [ "TRADER_AVOID" ]
@@ -2306,8 +2351,9 @@
"name": "cigarette butt",
"color": "dark_gray",
"symbol": "!",
- "description": "What was once a wonderfully addictive tube of dried tobacco leaf is now just a smelly piece of trash. What a tragedy!\nThe leftover tobacco in a few of these could probably be used to roll another cigarette. If you're willing to go that far...",
+ "description": "What was once a wonderfully addictive tube of dried tobacco leaf is now just a smelly piece of trash. What a tragedy!\nThe leftover tobacco in a few of these could probably be used to roll another cigarette. If you're willing to go that far…",
"category": "other",
+ "weight": "1 g",
"flags": [ "TRADER_AVOID" ]
},
{
@@ -2340,6 +2386,7 @@
"symbol": "!",
"description": "The smoked-down butt of a joint, a reminder of some good times. Pretty much trash now. Bummer, man.\nA few of these could probably be used to roll another joint.",
"category": "other",
+ "weight": "1 g",
"flags": [ "TRADER_AVOID" ]
},
{
@@ -2359,8 +2406,7 @@
"id": "tobacco_raw",
"symbol": "%",
"color": "light_green",
- "name": "raw tobacco",
- "name_plural": "handfuls of raw tobacco",
+ "name": { "str": "raw tobacco", "str_pl": "raw tobacco" },
"description": "Various parts of tobacco plant, full of nicotine. They need to be dried to become smokable.",
"looks_like": "wild_herbs",
"price": 300,
@@ -2375,8 +2421,8 @@
"color": "yellow",
"name": "cash card",
"description": "A yellow plastic card used to store money. These became popular once the government officially moved to all electronic money. It holds up to 2 million dollars.",
- "price": 100,
- "price_postapoc": 10,
+ "price": 1000,
+ "price_postapoc": 1,
"material": "plastic",
"flags": [ "NO_UNLOAD", "NO_RELOAD" ],
"weight": "6 g",
diff --git a/data/json/items/generic/casing.json b/data/json/items/generic/casing.json
index e278185091429..365bc7964f2b8 100644
--- a/data/json/items/generic/casing.json
+++ b/data/json/items/generic/casing.json
@@ -22,6 +22,7 @@
{
"id": "22_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".22 LR casing",
"description": "An empty casing from a .22 LR round. These can't be hand-reloaded.",
@@ -31,6 +32,7 @@
{
"id": "3006_casing",
"copy-from": "casing",
+ "looks_like": "223_casing",
"type": "GENERIC",
"name": ".30-06 casing",
"description": "An empty casing from a .30-06 round.",
@@ -40,6 +42,7 @@
{
"id": "270win_casing",
"copy-from": "casing",
+ "looks_like": "223_casing",
"type": "GENERIC",
"name": ".270 Winchester casing",
"description": "An empty casing from a .270 Winchester round.",
@@ -49,6 +52,7 @@
{
"id": "300_casing",
"copy-from": "casing",
+ "looks_like": "223_casing",
"type": "GENERIC",
"name": ".300 Win Mag casing",
"description": "An empty casing from a .300 Winchester Magnum round.",
@@ -58,6 +62,7 @@
{
"id": "308_casing",
"copy-from": "casing",
+ "looks_like": "223_casing",
"type": "GENERIC",
"name": ".308 casing",
"description": "An empty casing from a .308 round.",
@@ -67,6 +72,7 @@
{
"id": "762_51_casing",
"copy-from": "casing",
+ "looks_like": "223_casing",
"type": "GENERIC",
"name": "7.62x51mm casing",
"description": "An empty casing from a 7.62x51mm M80 round.",
@@ -76,6 +82,7 @@
{
"id": "32_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".32 ACP casing",
"description": "An empty casing from a .32 ACP round.",
@@ -85,6 +92,7 @@
{
"id": "38_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".38 Special casing",
"description": "An empty casing from a .38 Special round.",
@@ -94,6 +102,7 @@
{
"id": "38super_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".38 Super casing",
"description": "An empty casing from a .38 Super round.",
@@ -103,6 +112,7 @@
{
"id": "40_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".40 S&W casing",
"description": "An empty casing from a .40 S&W round.",
@@ -112,6 +122,7 @@
{
"id": "10mm_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": "10mm Auto casing",
"description": "An empty casing from a 10mm Auto round.",
@@ -133,6 +144,7 @@
{
"id": "44_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".44 Magnum casing",
"description": "An empty casing from a .44 Magnum round.",
@@ -142,6 +154,7 @@
{
"id": "454_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".454 Casull casing",
"description": "An empty casing from a .454 Casull round.",
@@ -151,6 +164,7 @@
{
"id": "45_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".45 ACP casing",
"description": "An empty casing from a .45 ACP round.",
@@ -160,6 +174,7 @@
{
"id": "45colt_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".45 Colt casing",
"description": "An empty casing from a .45 Colt round.",
@@ -169,6 +184,7 @@
{
"id": "4570_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".45-70 casing",
"description": "An empty casing from a .45-70 Government round.",
@@ -178,6 +194,7 @@
{
"id": "46mm_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": "4.6x30mm casing",
"description": "An empty casing from a 4.6x30mm round.",
@@ -187,6 +204,7 @@
{
"id": "460_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".460 Rowland casing",
"description": "An empty casing from a .460 Rowland round. It looks deceptively like a .45ACP casing.",
@@ -196,6 +214,7 @@
{
"id": "5x50_hull",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": "5x50mm hull",
"description": "An empty plastic hull from a 5x50mm flechette round.",
@@ -207,6 +226,7 @@
{
"id": "500_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".500 S&W Magnum casing",
"description": "An empty casing from a .500 S&W Magnum round.",
@@ -216,6 +236,7 @@
{
"id": "50_casing",
"copy-from": "casing",
+ "looks_like": "223_casing",
"type": "GENERIC",
"name": ".50 BMG casing",
"description": "An empty casing from a .50 BMG round. These are rare, so you might want to hold onto these.",
@@ -225,6 +246,7 @@
{
"id": "545_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": "5.45x39mm casing",
"description": "An empty casing from a 5.45x39mm round.",
@@ -234,6 +256,7 @@
{
"id": "57mm_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": "5.7x28mm casing",
"description": "An empty casing from a 5.7x28mm round.",
@@ -243,6 +266,7 @@
{
"id": "700nx_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".700 NX casing",
"description": "An empty casing from a .700 NX round. These are rare, so you might want to hold onto these.",
@@ -252,6 +276,7 @@
{
"id": "762R_casing",
"copy-from": "casing",
+ "looks_like": "223_casing",
"type": "GENERIC",
"name": "7.62x54mmR casing",
"description": "An empty casing from a 7.62x54mmR round.",
@@ -261,6 +286,7 @@
{
"id": "762_casing",
"copy-from": "casing",
+ "looks_like": "223_casing",
"type": "GENERIC",
"name": "7.62x39mm casing",
"description": "An empty casing from a 7.62x39mm round.",
@@ -270,6 +296,7 @@
{
"id": "762_25_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": "7.62x25mm casing",
"description": "An empty casing from a 7.62x25mm round.",
@@ -288,6 +315,7 @@
{
"id": "357sig_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".357 SIG casing",
"description": "An empty casing from a .357 SIG round.",
@@ -297,6 +325,7 @@
{
"id": "357mag_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".357 magnum casing",
"description": "An empty casing from a .357 magnum round.",
@@ -306,6 +335,7 @@
{
"id": "9x18mm_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": "9x18mm casing",
"description": "An empty casing from a 9x18mm round.",
@@ -315,6 +345,7 @@
{
"id": "380_casing",
"copy-from": "casing",
+ "looks_like": "9mm_casing",
"type": "GENERIC",
"name": ".380 ACP casing",
"description": "An empty casing from a .380 ACP round.",
@@ -357,12 +388,14 @@
"stackable": true,
"material": "plastic",
"symbol": "=",
+ "looks_like": "shot_hull",
"color": "red",
"damage_states": [ 0, 0 ]
},
{
"id": "300blk_casing",
"copy-from": "casing",
+ "looks_like": "223_casing",
"type": "GENERIC",
"name": ".300BLK casing",
"description": "An empty casing from a .300 AAC Blackout round.",
diff --git a/data/json/items/generic/currency.json b/data/json/items/generic/currency.json
index 666d35ed9f6af..7bae6eb716fa6 100644
--- a/data/json/items/generic/currency.json
+++ b/data/json/items/generic/currency.json
@@ -53,5 +53,18 @@
"color": "white",
"symbol": "$",
"material": [ "paper" ]
+ },
+ {
+ "type": "GENERIC",
+ "id": "icon",
+ "name": "icon",
+ "description": "This is a small picture, about the same size as an ID card, symbolizing a religious figure. On the back, there is a text that faintly reads 'New England Church Community'.",
+ "price": 200,
+ "price_postapoc": 320,
+ "weight": "1 g",
+ "to_hit": -3,
+ "color": "white",
+ "symbol": "$",
+ "material": [ "paper" ]
}
]
diff --git a/data/json/items/generic/dining_kitchen.json b/data/json/items/generic/dining_kitchen.json
index 9e990334d0bb8..026a0ae40ccdd 100644
--- a/data/json/items/generic/dining_kitchen.json
+++ b/data/json/items/generic/dining_kitchen.json
@@ -356,7 +356,7 @@
"category": "other",
"id": "fork",
"name": "fork",
- "description": "A fork, if you stab something with it you eat it right away. Wait... nevermind.",
+ "description": "A fork, if you stab something with it you eat it right away. Wait… nevermind.",
"copy-from": "base_silverware",
"flags": [ "STAB", "SHEATH_KNIFE" ]
},
@@ -722,6 +722,7 @@
"copy-from": "base_cookpot",
"material": "steel",
"color": "light_gray",
+ "looks_like": "pan",
"proportional": { "to_hit": 2 },
"weight": "528 g",
"volume": "1 L",
@@ -739,6 +740,7 @@
"copy-from": "base_cookpot",
"material": "copper",
"color": "light_red",
+ "looks_like": "pan",
"proportional": { "to_hit": 2 },
"weight": "628 g",
"volume": "1 L",
diff --git a/data/json/items/grenades.json b/data/json/items/grenades.json
index f5694c9d219b6..547584a62afe5 100644
--- a/data/json/items/grenades.json
+++ b/data/json/items/grenades.json
@@ -277,7 +277,7 @@
"id": "nail_bomb",
"type": "TOOL",
"name": "nail bomb",
- "description": "A crude and bulky improvised bomb. Made from a container, an explosive surrounded by nails and a fuse. Use this item to light the fuse. You will then have five turns before it explodes; throwing it would be a good idea.",
+ "description": "A crude and bulky improvised bomb. Made from a container, an explosive surrounded by nails and a fuse. Use this item to light the fuse. You will then have five turns before it explodes; throwing it would be a good idea.",
"category": "weapons",
"weight": "470 g",
"volume": "500 ml",
@@ -305,7 +305,7 @@
"copy-from": "nail_bomb",
"type": "TOOL",
"name": "active nail bomb",
- "description": "A crude and bulky improvised bomb. Made from a container, an explosive surrounded by nails and a fuse. The fuse has been lit, you should throw it.",
+ "description": "A crude and bulky improvised bomb. Made from a container, an explosive surrounded by nails and a fuse. The fuse has been lit, you should throw it.",
"price": 0,
"initial_charges": 5,
"max_charges": 5,
@@ -323,7 +323,7 @@
"id": "fragment_bomb",
"type": "TOOL",
"name": "fragment bomb",
- "description": "A crude and bulky improvised bomb. Made from a container, an explosive surrounded by small pieces of metal and a fuse. Use this item to light the fuse. You will then have five turns before it explodes; throwing it would be a good idea.",
+ "description": "A crude and bulky improvised bomb. Made from a container, an explosive surrounded by small pieces of metal and a fuse. Use this item to light the fuse. You will then have five turns before it explodes; throwing it would be a good idea.",
"category": "weapons",
"weight": "470 g",
"volume": "500 ml",
@@ -351,7 +351,7 @@
"copy-from": "fragment_bomb",
"type": "TOOL",
"name": "active fragment bomb",
- "description": "A crude and bulky improvised bomb. Made from a container, an explosive surrounded by small pieces of metal and a fuse. The fuse has been lit, you should throw it.",
+ "description": "A crude and bulky improvised bomb. Made from a container, an explosive surrounded by small pieces of metal and a fuse. The fuse has been lit, you should throw it.",
"price": 0,
"initial_charges": 5,
"max_charges": 5,
@@ -370,7 +370,7 @@
"type": "TOOL",
"category": "weapons",
"name": "can bomb",
- "description": "This is a tin can filled to the brim with explosive and with a bit of fuse sticking out of it. Will produce metal shrapnel that can deal with armor ... you think.",
+ "description": "This is a tin can filled to the brim with explosive and with a bit of fuse sticking out of it. Will produce metal shrapnel that can deal with armor… you think.",
"//": "40g of tin can and 250ml/412g of gunpowder",
"weight": "452 g",
"volume": "250 ml",
@@ -397,7 +397,7 @@
"copy-from": "can_bomb",
"type": "TOOL",
"name": "active can bomb",
- "description": "This is a tin can filled to the brim with explosive and with a bit of fuse sticking out of it. Will produce metal shrapnel that can deal with armor ... you think. The fuse has been lit, you should throw it.",
+ "description": "This is a tin can filled to the brim with explosive and with a bit of fuse sticking out of it. Will produce metal shrapnel that can deal with armor… you think. The fuse has been lit, you should throw it.",
"price": 0,
"initial_charges": 5,
"max_charges": 5,
@@ -418,6 +418,7 @@
"name": "smoke bomb",
"description": "This is a canister grenade filled with a variety of pyrotechnic chemicals. Use this item to pull the pin and light the fuse, turning it into an active smoke bomb. Five turns after you do that, it will begin to expel a thick black smoke. This smoke will slow those who enter it, as well as obscuring vision and scent.",
"price": 1800,
+ "weight": "569 g",
"countdown_action": { "type": "transform", "target": "smokebomb_act" }
},
{
diff --git a/data/json/items/gun/12mm.json b/data/json/items/gun/12mm.json
index f1e43da529350..3926edb362c36 100644
--- a/data/json/items/gun/12mm.json
+++ b/data/json/items/gun/12mm.json
@@ -2,6 +2,7 @@
{
"id": "hk_g80",
"copy-from": "gun_base",
+ "looks_like": "ar15",
"type": "GUN",
"name": "H&K G80 Railgun",
"description": "Developed by Heckler & Koch in the first quarter of 21st century, the railgun magnetically propels a ferromagnetic projectile using an alternating current. Powered by UPS.",
diff --git a/data/json/items/gun/20x66mm.json b/data/json/items/gun/20x66mm.json
index 2c903c1145e18..0758ca553462f 100644
--- a/data/json/items/gun/20x66mm.json
+++ b/data/json/items/gun/20x66mm.json
@@ -1,6 +1,7 @@
[
{
"id": "rm120c",
+ "looks_like": "remington_870",
"type": "GUN",
"reload_noise_volume": 10,
"reload_noise": "chuk chuk.",
@@ -37,6 +38,7 @@
},
{
"id": "rm20",
+ "looks_like": "remington_870",
"type": "GUN",
"reload_noise_volume": 10,
"name": "RM20 autoshotgun",
@@ -53,7 +55,7 @@
"skill": "shotgun",
"dispersion": 335,
"durability": 9,
- "burst": 4,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 2 ] ],
"valid_mod_locations": [
[ "accessories", 4 ],
[ "grip", 1 ],
@@ -71,6 +73,7 @@
},
{
"id": "rm228",
+ "looks_like": "remington_870",
"type": "GUN",
"reload_noise_volume": 10,
"name": "RM228 PDW",
diff --git a/data/json/items/gun/22.json b/data/json/items/gun/22.json
index 7e31cf8e6cf4d..dddea2ae55977 100644
--- a/data/json/items/gun/22.json
+++ b/data/json/items/gun/22.json
@@ -1,6 +1,7 @@
[
{
"id": "american_180",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 10,
"name": "American-180",
@@ -20,7 +21,7 @@
"dispersion": 280,
"durability": 6,
"min_cycle_recoil": 39,
- "burst": 20,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 6 ] ],
"barrel_length": 1,
"valid_mod_locations": [
[ "accessories", 3 ],
@@ -41,6 +42,7 @@
},
{
"id": "marlin_9a",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "Marlin 39A",
@@ -81,6 +83,7 @@
},
{
"id": "moss_brownie",
+ "looks_like": "glock_17",
"copy-from": "pistol_base",
"type": "GUN",
"name": "Mossberg Brownie",
@@ -114,6 +117,7 @@
},
{
"id": "rifle_22",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "pipe rifle: .22",
@@ -152,6 +156,7 @@
},
{
"id": "rm360_carbine",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "RM360 rotary carbine",
@@ -171,7 +176,7 @@
"durability": 9,
"blackpowder_tolerance": 24,
"min_cycle_recoil": 39,
- "burst": 20,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 6 ] ],
"reload": 500,
"valid_mod_locations": [
[ "accessories", 3 ],
@@ -190,6 +195,7 @@
},
{
"id": "ruger_1022",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "Ruger 10/22",
@@ -230,6 +236,7 @@
},
{
"id": "ruger_lcr_22",
+ "looks_like": "sw_619",
"copy-from": "ruger_lcr_38",
"type": "GUN",
"name": "Ruger LCR .22",
@@ -240,6 +247,7 @@
},
{
"id": "sig_mosquito",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "SIG Mosquito",
@@ -279,6 +287,7 @@
{
"id": "sw_22",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "S&W 22A",
"name_plural": "S&W 22A",
@@ -300,6 +309,7 @@
{
"id": "j22",
"copy-from": "pistol_backup",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Jennings J-22",
"description": "One of the quintessential 'saturday night specials', the Jennings J-22 was very affordably priced with its injection molded zinc slide and frame. Intended to fill the void left after small pocket pistols were banned from import, these were more commonly used by criminals unfazed by their glaring safety issues.",
@@ -320,9 +330,10 @@
{
"id": "walther_p22",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Walther P22",
- "description": "The Walther P22 is a blowback operated semi-automatic pistol. It is about half the size of most Walthers. It is made mostly with plastic, with the slide and key components being made of die-cast zinc alloy",
+ "description": "The Walther P22 is a blowback operated semi-automatic pistol. It is about half the size of most Walthers. It is made mostly with plastic, with the slide and key components being made of die-cast zinc alloy",
"weight": "480 g",
"volume": "263 ml",
"price": 8500,
diff --git a/data/json/items/gun/223.json b/data/json/items/gun/223.json
index 3ba0c229f2964..fa463b758e29c 100644
--- a/data/json/items/gun/223.json
+++ b/data/json/items/gun/223.json
@@ -2,6 +2,7 @@
{
"id": "acr",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Remington ACR",
"description": "This carbine was developed for military use in the early 21st century. It is damaging and accurate, though its rate of fire is a bit slower than competing .223 carbines.",
@@ -18,7 +19,7 @@
"dispersion": 150,
"durability": 8,
"min_cycle_recoil": 1350,
- "burst": 11,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"barrel_length": 1,
"built_in_mods": [ "folding_stock" ],
"magazines": [ [ "223", [ "stanag30", "stanag50", "survivor223mag" ] ] ]
@@ -28,7 +29,7 @@
"copy-from": "rifle_semi",
"type": "GUN",
"name": "AR-15",
- "//": "This is assumed to be the standard model matching the (currently not in-game) M16.",
+ "//": "This is assumed to be the standard model matching the (currently not in-game) M16. Tileset whitelist for rifles",
"description": "This ubiquitous rifle is the forefather of M16 rifle series. It is lightweight and accurate, but will malfunction if not properly maintained. This one is a semi automatic civilian version.",
"weight": "2815 g",
"volume": "2 L",
@@ -47,6 +48,7 @@
{
"id": "h&k416a5",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "HK416 A5",
"//": "*Current* milspec gear is now ridiculously overpriced, as seen with the M2010 IRL.",
@@ -64,12 +66,13 @@
"dispersion": 180,
"durability": 8,
"min_cycle_recoil": 1350,
- "burst": 14,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"magazines": [ [ "223", [ "stanag30", "stanag50", "survivor223mag" ] ] ]
},
{
"id": "hk_g36",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "H&K G36",
"description": "Designed as a replacement for the early H&K G3 battle rifle, the G36 is more accurate, and uses the much-lighter .223 round, allowing for a higher ammo capacity.",
@@ -85,12 +88,13 @@
"dispersion": 150,
"durability": 8,
"min_cycle_recoil": 1350,
- "burst": 13,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"magazines": [ [ "223", [ "stanag30", "stanag50", "survivor223mag" ] ] ]
},
{
"id": "l_bak_223",
"copy-from": "pistol_revolver",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "L2037 Backup",
"name_plural": "L2037 Backups",
@@ -119,6 +123,7 @@
{
"id": "l_base_223",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "L523 platform",
"//": "Current milspec, so Expensive.",
@@ -147,7 +152,7 @@
"description": "Leadworks LLC's bullpup L523 platform utilizes the ubiquitous 5.56 round in multiple applications, and is designed to part-swap quickly, safely, and effectively from one to the next. The carbine model incorporates Leadworks' proprietary gyro-stabilization technology and includes a red-dot sight and an integral laser sight. Additionally it comes with underslung shotgun for close range encounters. Like the rest of the family, doesn't accept third-party modifications.",
"price": 520000,
"durability": 9,
- "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 5 ] ],
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"relative": { "weight": 400 },
"built_in_mods": [ "lead_red_dot_sight", "lead_barrel_small", "lead_laser_sight", "lead_u_shotgun", "lead_stabilizer" ],
"valid_mod_locations": [
@@ -231,6 +236,7 @@
{
"id": "m249",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "M249",
"description": "The M249 is a mountable machine gun used by the US military and SWAT teams. Quite inaccurate and difficult to control, the M249 is designed to fire many rounds very quickly.",
@@ -247,7 +253,7 @@
"durability": 7,
"min_cycle_recoil": 1350,
"reload": 400,
- "modes": [ [ "DEFAULT", "auto", 12 ] ],
+ "modes": [ [ "DEFAULT", "burst", 4 ] ],
"built_in_mods": [ "bipod" ],
"valid_mod_locations": [
[ "accessories", 4 ],
@@ -271,13 +277,14 @@
"name": "M27 IAR",
"description": "A H&K416 carbine outfitted with a heavier barrel to enable higher amounts of suppressive fire while retaining a good degree of mobility.",
"weight": "3495 g",
- "burst": 13,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"magazines": [ [ "223", [ "stanag30", "stanag50", "survivor223mag" ] ] ],
"relative": { "ranged_damage": 1, "durability": 1 }
},
{
"id": "m4a1",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "M4A1",
"description": "A popular carbine, long used by the US military. Though accurate, small, and lightweight, it is infamous for its unreliability when not properly maintained.",
@@ -294,12 +301,13 @@
"dispersion": 180,
"durability": 6,
"min_cycle_recoil": 1350,
- "burst": 14,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"magazines": [ [ "223", [ "stanag30", "stanag50", "survivor223mag" ] ] ]
},
{
"id": "m16a4",
"copy-from": "rifle_semi",
+ "looks_like": "ar15",
"type": "GUN",
"name": "M16A4",
"description": "The M16 is a very common assault rifle descended from the AR-15, used by militaries across the world for over 50 years. It is a gas operated, rotating bolt rifle known for its accuracy and controllable recoil.",
@@ -321,6 +329,7 @@
{
"id": "rifle_223",
"copy-from": "gun_base",
+ "looks_like": "ar15",
"type": "GUN",
"name": "pipe rifle: .223",
"name_plural": "pipe rifles: .223",
@@ -359,6 +368,7 @@
{
"id": "ruger_mini",
"copy-from": "rifle_semi",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Ruger Mini-14",
"description": "A small, lightweight semi-auto carbine designed for civilian and police use. Its superb accuracy and low recoil makes it more suitable than full-auto rifles for some situations.",
@@ -395,6 +405,7 @@
{
"id": "scar_l",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "FN SCAR-L",
"description": "A highly accurate and modular assault rifle specially designed for the United States Special Operations Command. The 'L' in its name stands for light, as it uses the lightweight .223 round.",
@@ -411,12 +422,13 @@
"dispersion": 150,
"durability": 8,
"min_cycle_recoil": 1350,
- "burst": 10,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"magazines": [ [ "223", [ "stanag30", "stanag50", "survivor223mag" ] ] ]
},
{
"id": "sig552",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "SIG 552",
"description": "A compact selective fire automatic rifle designed for the Swiss military. It features a three-round burst mode and an integrated folding stock.",
@@ -430,13 +442,14 @@
"dispersion": 180,
"durability": 9,
"min_cycle_recoil": 1350,
- "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 12 ] ],
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 4 ] ],
"built_in_mods": [ "folding_stock" ],
"magazines": [ [ "223", [ "stanag30", "stanag50", "survivor223mag" ] ] ]
},
{
"id": "steyr_aug",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Steyr AUG",
"description": "The Steyr AUG is an Austrian assault rifle that uses a bullpup design. It is used in the armed forces and police forces of many nations, and enjoys low recoil and high accuracy.",
@@ -452,7 +465,7 @@
"dispersion": 140,
"durability": 8,
"min_cycle_recoil": 1350,
- "burst": 12,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"built_in_mods": [ "grip" ],
"valid_mod_locations": [
[ "accessories", 4 ],
@@ -473,6 +486,7 @@
{
"id": "surv_carbine_223",
"copy-from": "rifle_semi",
+ "looks_like": "ar15",
"type": "GUN",
"name": "handmade carbine",
"//": "It's smaller than an M4A1, plus it's a homemade firearm.",
diff --git a/data/json/items/gun/270win.json b/data/json/items/gun/270win.json
index dbadae8b0f5fb..c064656d5dda4 100644
--- a/data/json/items/gun/270win.json
+++ b/data/json/items/gun/270win.json
@@ -2,6 +2,7 @@
{
"id": "remington700_270",
"copy-from": "rifle_manual",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Remington 700",
"description": "A classic bolt action rifle chambered for .270 Winchester, very polular among hunters. This is a CDL SF model with a forged, fluted, 416 stainless steel barrel threaded into the receiver and a recessed bolt face. It has checkered walnut furniture and a recoil pad to reduce perceived recoil.",
diff --git a/data/json/items/gun/300.json b/data/json/items/gun/300.json
index f0f20f9ed3523..89c19811439e8 100644
--- a/data/json/items/gun/300.json
+++ b/data/json/items/gun/300.json
@@ -2,6 +2,7 @@
{
"id": "m2010",
"copy-from": "rifle_base",
+ "looks_like": "ar15",
"type": "GUN",
"name": "M2010 ESR",
"name_plural": "M2010 ESR",
@@ -24,6 +25,7 @@
{
"id": "weatherby_5",
"copy-from": "rifle_manual",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Weatherby Mark V",
"name_plural": "Weatherby Mark V",
@@ -47,6 +49,7 @@
{
"id": "win70",
"copy-from": "rifle_manual",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Winchester Model 70",
"name_plural": "Winchester Model 70",
diff --git a/data/json/items/gun/3006.json b/data/json/items/gun/3006.json
index 4680cdf2909dd..993ddb3df9221 100644
--- a/data/json/items/gun/3006.json
+++ b/data/json/items/gun/3006.json
@@ -1,6 +1,7 @@
[
{
"id": "browning_blr",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "Browning BLR",
@@ -41,6 +42,7 @@
},
{
"id": "garand",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "M1 Garand",
@@ -79,6 +81,7 @@
{
"id": "m1903",
"copy-from": "rifle_manual",
+ "looks_like": "ar15",
"type": "GUN",
"name": "M1903 Springfield",
"description": "A powerful military rifle chambered in .30-06, developed to replace the US Army's older Krag rifle. Served as the main American rifle in World War I, was used alongside the M1 Garand in World War II, and was used as a sniper rifle as late as the Vietnam War.",
@@ -114,6 +117,7 @@
},
{
"id": "m1918",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "Browning Automatic Rifle",
@@ -131,7 +135,7 @@
"dispersion": 180,
"durability": 8,
"min_cycle_recoil": 3420,
- "burst": 8,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"barrel_length": 4,
"valid_mod_locations": [
[ "accessories", 4 ],
@@ -153,6 +157,7 @@
{
"id": "remington_700",
"copy-from": "rifle_manual",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Remington 700",
"name_plural": "Remington 700",
@@ -174,6 +179,7 @@
},
{
"id": "rifle_3006",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "pipe rifle: .30-06",
diff --git a/data/json/items/gun/300BLK.json b/data/json/items/gun/300BLK.json
index 74ebf2024189e..95459c058ae58 100644
--- a/data/json/items/gun/300BLK.json
+++ b/data/json/items/gun/300BLK.json
@@ -2,6 +2,7 @@
{
"id": "acr_300blk",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Remington ACR .300BLK",
"description": "This carbine was developed for military use in the early 21st century. It is damaging and accurate, though its rate of fire is a bit slower than competing carbines. This version is chambered for the .300 AAC Blackout round.",
@@ -18,7 +19,7 @@
"dispersion": 150,
"durability": 8,
"min_cycle_recoil": 1700,
- "burst": 11,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"barrel_length": 1,
"built_in_mods": [ "folding_stock" ],
"magazines": [ [ "300blk", [ "stanag30", "stanag50", "survivor223mag" ] ] ]
@@ -26,6 +27,7 @@
{
"id": "iwi_tavor_x95_300blk",
"copy-from": "rifle_semi",
+ "looks_like": "ar15",
"type": "GUN",
"name": "IWI Tavor X95 .300BLK",
"description": "The IWI Tavor X95 (also called Micro-Tavor or MTAR) is an Israeli bullpup assault rifle designed and produced by Israel Weapon Industries. This is the civilian version chambered for .300 AAC Blackout.",
@@ -60,24 +62,9 @@
},
{
"id": "ar15_retool_300blk",
- "copy-from": "rifle_semi",
+ "copy-from": "ar15",
"type": "GUN",
"name": "AR-15",
- "//": "This is assumed to be the standard model matching the (currently not in-game) M16.",
- "description": "This ubiquitous rifle is the forefather of M16 rifle series. It is lightweight and accurate, but will malfunction if not properly maintained. This one is a semi automatic civilian version.",
- "weight": "2815 g",
- "volume": "2 L",
- "price": 125000,
- "to_hit": -1,
- "bashing": 12,
- "material": [ "steel", "plastic" ],
- "symbol": "(",
- "color": "dark_gray",
- "ammo": "223",
- "dispersion": 150,
- "durability": 7,
- "min_cycle_recoil": 1350,
- "default_mods": [ "retool_ar15_300blk" ],
- "magazines": [ [ "223", [ "stanag30", "stanag50", "survivor223mag" ] ] ]
+ "default_mods": [ "retool_ar15_300blk" ]
}
]
diff --git a/data/json/items/gun/308.json b/data/json/items/gun/308.json
index d2e1a61019d52..b302b3adf86f0 100644
--- a/data/json/items/gun/308.json
+++ b/data/json/items/gun/308.json
@@ -2,6 +2,7 @@
{
"id": "fn_fal",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "FN FAL",
"name_plural": "FN FAL",
@@ -19,13 +20,14 @@
"dispersion": 150,
"durability": 8,
"min_cycle_recoil": 2700,
- "burst": 12,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"barrel_length": 2,
"magazines": [ [ "308", [ "falmag", "falbigmag" ] ] ]
},
{
"id": "hk_g3",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "H&K G3",
"name_plural": "H&K G3",
@@ -43,11 +45,12 @@
"dispersion": 150,
"min_cycle_recoil": 2700,
"durability": 8,
- "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 10 ] ],
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 4 ] ],
"magazines": [ [ "308", [ "g3mag", "g3bigmag" ] ] ]
},
{
"id": "m134",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "M134D-H Minigun",
@@ -84,7 +87,7 @@
"weight": "4820 g",
"price": 195000,
"material": [ "steel", "plastic" ],
- "burst": 12,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"valid_mod_locations": [
[ "accessories", 4 ],
[ "barrel", 1 ],
@@ -103,6 +106,7 @@
{
"id": "m1a",
"copy-from": "rifle_semi",
+ "looks_like": "ar15",
"type": "GUN",
"name": "M1A",
"name_plural": "M1A",
@@ -140,6 +144,7 @@
{
"id": "m240",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "M240",
"description": "The M240 is a medium machine gun used by the US military, replacing the older M60. Quite inaccurate and difficult to control, the M240 is designed to fire many rounds very quickly.",
@@ -156,7 +161,7 @@
"durability": 9,
"min_cycle_recoil": 2700,
"reload": 400,
- "modes": [ [ "DEFAULT", "auto", 11 ] ],
+ "modes": [ [ "DEFAULT", "burst", 4 ] ],
"built_in_mods": [ "bipod" ],
"valid_mod_locations": [
[ "accessories", 4 ],
@@ -176,6 +181,7 @@
{
"id": "m60",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "M60",
"description": "The M60 is a general-purpose machine gun developed to replace the .30-caliber M1918 and M1919. Heavy and difficult to handle fired from the shoulder, as most people aren't action-movie heroes.",
@@ -193,7 +199,7 @@
"durability": 7,
"min_cycle_recoil": 2700,
"reload": 400,
- "modes": [ [ "DEFAULT", "auto", 11 ] ],
+ "modes": [ [ "DEFAULT", "burst", 4 ] ],
"built_in_mods": [ "bipod" ],
"valid_mod_locations": [
[ "accessories", 4 ],
@@ -213,6 +219,7 @@
{
"id": "rifle_308",
"copy-from": "rifle_manual",
+ "looks_like": "ar15",
"type": "GUN",
"name": "pipe rifle: .308",
"name_plural": "pipe rifles: .308",
@@ -253,6 +260,7 @@
{
"id": "savage_111f",
"copy-from": "rifle_manual",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Savage 111F",
"name_plural": "Savage 111F",
@@ -276,6 +284,7 @@
{
"id": "scar_h",
"copy-from": "scar_l",
+ "looks_like": "ar15",
"type": "GUN",
"name": "FN SCAR-H",
"name_plural": "FN SCAR-H",
@@ -289,10 +298,11 @@
{
"id": "M24",
"copy-from": "rifle_manual",
+ "looks_like": "ar15",
"type": "GUN",
"name": "M24",
"name_plural": "M24",
- "description": "The M24 Sniper is the military and police version of the Remington Model 700 rifle, M24 being the model name assigned by the United States Army after adoption as their standard sniper rifle in 1988. The M24 is referred to as a 'weapon system' because it consists of not only a rifle, but also a detachable telescopic sight and other accessories.",
+ "description": "The M24 Sniper is the military and police version of the Remington Model 700 rifle, M24 being the model name assigned by the United States Army after adoption as their standard sniper rifle in 1988. The M24 is referred to as a 'weapon system' because it consists of not only a rifle, but also a detachable telescopic sight and other accessories.",
"weight": "4500 g",
"volume": "2750 ml",
"price": 350000,
@@ -327,6 +337,7 @@
{
"id": "hk417_13",
"copy-from": "rifle_auto",
+ "looks_like": "ar15",
"type": "GUN",
"name": "HK417 A2",
"description": "A German battle rifle with a 13\" barrel and telescopic stock. It is a gas operated, rotating bolt rifle with a short-stroke piston design similar to that of the G36.",
@@ -343,13 +354,14 @@
"dispersion": 180,
"durability": 8,
"min_cycle_recoil": 2700,
- "burst": 10,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"default_mods": [ "adjustable_stock" ],
"magazines": [ [ "308", [ "hk417mag_20rd", "hk417mag_10rd" ] ] ]
},
{
"id": "m110a1",
"copy-from": "rifle_semi",
+ "looks_like": "ar15",
"type": "GUN",
"name": "M110A1",
"description": "A derivative of H&K's G28 with an aluminium upper reciever to meet US Army weight requirements. It is a gas operated, rotating bolt rifle accurate to 1.5 MOA with standard ammunition.",
@@ -372,6 +384,7 @@
{
"id": "ar10",
"copy-from": "rifle_semi",
+ "looks_like": "ar15",
"type": "GUN",
"name": "AR-10",
"description": "Somewhat similar to the later AR-15, the AR-10 is a gas operated, rotating bolt rifle chambered for 7.62x51mm rounds.",
diff --git a/data/json/items/gun/32.json b/data/json/items/gun/32.json
index 60a45d4b4f255..1667b4d01f7c5 100644
--- a/data/json/items/gun/32.json
+++ b/data/json/items/gun/32.json
@@ -1,6 +1,7 @@
[
{
"id": "sig_p230",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "SIG Sauer P230",
@@ -38,6 +39,7 @@
},
{
"id": "skorpion_61",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 10,
"name": "Skorpion Vz. 61",
@@ -56,7 +58,7 @@
"dispersion": 360,
"durability": 6,
"min_cycle_recoil": 135,
- "burst": 14,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 5 ] ],
"built_in_mods": [ "folding_stock" ],
"valid_mod_locations": [
[ "accessories", 3 ],
@@ -77,6 +79,7 @@
},
{
"id": "walther_ppk",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "Walther PPK",
@@ -114,10 +117,11 @@
},
{
"id": "kp32",
+ "looks_like": "glock_17",
"copy-from": "pistol_backup",
"type": "GUN",
"name": "Kel-Tec P32",
- "description": "One of Kel-tec's oldest designs, the P32 is a popular option for deep concealment and backup usage. Despite its extreme light weight and small size, its .32 ACP chambering makes for good handling and recoil control.",
+ "description": "One of Kel-tec's oldest designs, the P32 is a popular option for deep concealment and backup usage. Despite its extreme light weight and small size, its .32 ACP chambering makes for good handling and recoil control.",
"weight": "186 g",
"volume": "186ml",
"price": 14000,
diff --git a/data/json/items/gun/357sig.json b/data/json/items/gun/357sig.json
index 9c4962fd88b4c..15dfae8dc94f8 100644
--- a/data/json/items/gun/357sig.json
+++ b/data/json/items/gun/357sig.json
@@ -2,6 +2,7 @@
{
"id": "p226_357sig",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "SIG P226",
"description": "A SIG Sauer P226 chambered for .357 SIG. The P226 is a DA/SA, short-recoil operated semi-automatic pistol.",
@@ -31,6 +32,7 @@
{
"id": "p320_357sig",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "SIG P320",
"description": "The P320 is a semi automatic, short recoil operated pistol. This one is chambered for .357 SIG.",
diff --git a/data/json/items/gun/36paper.json b/data/json/items/gun/36paper.json
index 6faa9d58bb5b0..893f3d27446bb 100644
--- a/data/json/items/gun/36paper.json
+++ b/data/json/items/gun/36paper.json
@@ -2,6 +2,7 @@
{
"id": "colt_navy",
"copy-from": "pistol_revolver_cap_ball",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "Colt M1861 Navy",
"name_plural": "Colt M1861 Navy",
diff --git a/data/json/items/gun/38.json b/data/json/items/gun/38.json
index 3e90d7224714a..b8e643ce9e539 100644
--- a/data/json/items/gun/38.json
+++ b/data/json/items/gun/38.json
@@ -1,6 +1,7 @@
[
{
"id": "2_shot_special",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "2 Shot Special",
@@ -36,17 +37,17 @@
{
"id": "cop_38",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
- "name": "COP .38",
- "name_plural": "COP .38",
- "description": "The COP .38 is a small, chubby derringer pistol that bears a slight resemblance to the Mossberg Brownie. It has four barrels arranged in a square formation.",
+ "name": "COP .357 Derringer",
+ "description": "A small, chubby derringer pistol bearing a slight resemblance to the Mossberg Brownie. It uses a rotating firing pin to fire the individual hammers of the four barrels arranged in a square formation.",
"weight": "857 g",
"volume": "399ml",
"price": 120000,
"to_hit": -1,
"bashing": 3,
"material": [ "steel", "wood" ],
- "ammo": "38",
+ "ammo": [ "357mag", "38" ],
"range": 3,
"dispersion": 520,
"durability": 6,
@@ -68,6 +69,7 @@
{
"id": "rifle_38",
"copy-from": "gun_base",
+ "looks_like": "ar15",
"type": "GUN",
"name": "pipe rifle: .38 Special",
"name_plural": "pipe rifles: .38 Special",
@@ -105,6 +107,7 @@
{
"id": "ruger_lcr_38",
"copy-from": "pistol_revolver",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "Ruger LCR .38",
"name_plural": "Ruger LCR .38",
@@ -139,6 +142,7 @@
{
"id": "sw_619",
"copy-from": "pistol_revolver",
+ "//": "Tileset whitelist for revolvers.",
"type": "GUN",
"name": "S&W 619",
"name_plural": "S&W 619",
@@ -168,42 +172,5 @@
[ "stock", 1 ],
[ "underbarrel", 1 ]
]
- },
- {
- "id": "taurus_38",
- "type": "GUN",
- "reload_noise_volume": 10,
- "name": "Taurus Pro .38",
- "name_plural": "Taurus Pro .38",
- "description": "A popular .38 pistol. Designed with numerous safety features and built from high-quality, durable materials.",
- "weight": "515 g",
- "volume": "500 ml",
- "price": 64000,
- "to_hit": -2,
- "bashing": 8,
- "material": [ "steel", "plastic" ],
- "symbol": "(",
- "color": "dark_gray",
- "ammo": "38",
- "skill": "pistol",
- "dispersion": 480,
- "durability": 7,
- "min_cycle_recoil": 225,
- "valid_mod_locations": [
- [ "accessories", 2 ],
- [ "barrel", 1 ],
- [ "bore", 1 ],
- [ "brass catcher", 1 ],
- [ "grip", 1 ],
- [ "mechanism", 4 ],
- [ "muzzle", 1 ],
- [ "rail", 1 ],
- [ "sights", 1 ],
- [ "stock", 1 ],
- [ "underbarrel", 1 ]
- ],
- "faults": [ "fault_gun_blackpowder", "fault_gun_dirt", "fault_gun_chamber_spent" ],
- "magazine_well": 1,
- "magazines": [ [ "38", [ "taurus38mag" ] ] ]
}
]
diff --git a/data/json/items/gun/380.json b/data/json/items/gun/380.json
index 22a0d98f7561f..1650d4c0c0f2d 100644
--- a/data/json/items/gun/380.json
+++ b/data/json/items/gun/380.json
@@ -2,6 +2,7 @@
{
"id": "mac_11",
"copy-from": "mac_10",
+ "looks_like": "hk_mp5",
"type": "GUN",
"name": "MAC-11",
"description": "A lesser known variant of the MAC-10, this machine pistol is chambered in .380 ACP for a smaller overall size while remaining inherently subsonic. Smaller in almost every dimension, this inexpensive automatic weapon was declared 'fit only for combat in a phone booth' due to its low weight and absurd fire rate ranging from 1200 to 1400 rounds per minute.",
@@ -11,7 +12,7 @@
"bashing": 5,
"ammo": "380",
"min_cycle_recoil": 270,
- "burst": 23,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 6 ] ],
"magazines": [ [ "380", [ "mac11mag" ] ] ]
},
{
@@ -30,6 +31,7 @@
{
"id": "fn1910",
"copy-from": "pistol_backup",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "FN 1910 .380",
"description": "Made infamous in Sarajevo in 1914, the FN1910 was a popular pocket pistol, albeit in .32 ACP. Collectors value the .380 model for its notoriety and more modern terminal performance. If such a humble firearm could start a world war, could it perhaps protect you from the undead?",
@@ -49,6 +51,7 @@
{
"id": "rugerlcp",
"copy-from": "pistol_backup",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Ruger LCP",
"description": "One of the best selling modern day 'pocket pistol's, the LCP is an affordable, polymer framed pistol chambered in .380 ACP. Despite the round's relatively low power, the pistol's low weight and short sight radius make for a moderately poor handling pistol.",
@@ -68,9 +71,10 @@
{
"id": "hptcf380",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Hi-Point CF-380",
- "description": "The Hi-Point CF-380 is a blowback operated semi automatic pistol designed by Hi-Point Firearms, which is known for making inexpensive firearms, and for making said firearms bulky and uncomfortable. Hi-Points have slides made with a zinc pot-metal which is relatively fragile compared to steel slides.",
+ "description": "The Hi-Point CF-380 is a blowback operated semi automatic pistol designed by Hi-Point Firearms, which is known for making inexpensive firearms, and for making said firearms bulky and uncomfortable. Hi-Points have slides made with a zinc pot-metal which is relatively fragile compared to steel slides.",
"weight": "709 g",
"volume": "539 ml",
"price": 7500,
@@ -83,5 +87,28 @@
"durability": 7,
"magazine_well": 1,
"magazines": [ [ "380", [ "hptcf380mag_8rd", "hptcf380mag_10rd" ] ] ]
+ },
+ {
+ "id": "taurus_spectrum",
+ "copy-from": "pistol_backup",
+ "looks_like": "glock_17",
+ "type": "GUN",
+ "name": "Taurus Spectrum",
+ "name_plural": "Taurus Spectrum",
+ "description": "A .380 subcompact pistol. Designed for concealed carry and built from high-quality, durable materials.",
+ "weight": "283 g",
+ "volume": "187 ml",
+ "price": 64000,
+ "to_hit": -2,
+ "bashing": 8,
+ "material": [ "steel", "aluminum" ],
+ "symbol": "(",
+ "color": "dark_gray",
+ "ammo": "380",
+ "dispersion": 480,
+ "durability": 7,
+ "min_cycle_recoil": 225,
+ "magazine_well": 1,
+ "magazines": [ [ "380", [ "taurus_spectrum_mag" ] ] ]
}
]
diff --git a/data/json/items/gun/38super.json b/data/json/items/gun/38super.json
index b6221d38e8415..9331cee1c66ef 100644
--- a/data/json/items/gun/38super.json
+++ b/data/json/items/gun/38super.json
@@ -2,6 +2,7 @@
{
"id": "m1911a1_38super",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "M1911A1",
"description": "The M1911A1 is an extremely popular pistol known for its reliability. This one is chambered for .38 Super.",
diff --git a/data/json/items/gun/40.json b/data/json/items/gun/40.json
index 38b9ea39926fb..afd179307586a 100644
--- a/data/json/items/gun/40.json
+++ b/data/json/items/gun/40.json
@@ -1,6 +1,7 @@
[
{
"id": "glock_22",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "Glock 22",
@@ -41,6 +42,7 @@
{
"id": "rifle_40",
"copy-from": "gun_base",
+ "looks_like": "ar15",
"type": "GUN",
"name": "pipe rifle: .40 S&W",
"name_plural": "pipe rifles: .40 S&W",
@@ -77,6 +79,7 @@
},
{
"id": "sig_40",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "SIG Pro .40",
@@ -115,6 +118,7 @@
{
"id": "smg_40",
"copy-from": "smg_base",
+ "looks_like": "hk_mp5",
"type": "GUN",
"name": "Luty SMG: .40 S&W",
"name_plural": "Luty SMGs: .40 S&W",
@@ -133,7 +137,7 @@
"durability": 4,
"blackpowder_tolerance": 24,
"min_cycle_recoil": 425,
- "modes": [ [ "DEFAULT", "auto", 10 ] ],
+ "modes": [ [ "DEFAULT", "burst", 5 ] ],
"loudness": 25,
"barrel_length": 1,
"valid_mod_locations": [
@@ -153,6 +157,7 @@
},
{
"id": "surv_six_shooter",
+ "looks_like": "sw_619",
"type": "GUN",
"reload_noise_volume": 10,
"name": "handmade six-shooter",
@@ -190,6 +195,7 @@
{
"id": "sw_610",
"copy-from": "pistol_revolver",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "S&W 610",
"name_plural": "S&W 610",
@@ -223,9 +229,10 @@
{
"id": "hi_power_40",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Browning Hi-Power .40 S&W",
- "description": "The Browning Hi-Power is a semi-automatic handgun developed shortly before the second world war. Widely issued since then, it remains in use by India, Canada and Australia. This is a commercial variant produced by Browning Arms in .40 S&W.",
+ "description": "The Browning Hi-Power is a semi-automatic handgun developed shortly before the second world war. Widely issued since then, it remains in use by India, Canada and Australia. This is a commercial variant produced by Browning Arms in .40 S&W.",
"weight": "900 g",
"volume": "418 ml",
"price": 54000,
@@ -242,6 +249,7 @@
{
"id": "walther_ppq_40",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Walther PPQ .40 S&W",
"description": "The Walther PPQ is a semi-automatic pistol originating from the Walther P99QA, and maintains compatibility with some of its predecessor's accessories. This model is chambered in .40 S&W.",
@@ -260,9 +268,10 @@
{
"id": "hptjcp",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Hi-Point Model JCP",
- "description": "The Hi-Point Model JCP is a blowback operated semi automatic pistol designed by Hi-Point Firearms, which is known for making inexpensive firearms, and for making said firearms bulky and uncomfortable. Hi-Points have slides made with a zinc pot-metal which is relatively fragile compared to steel slides.",
+ "description": "The Hi-Point Model JCP is a blowback operated semi automatic pistol designed by Hi-Point Firearms, which is known for making inexpensive firearms, and for making said firearms bulky and uncomfortable. Hi-Points have slides made with a zinc pot-metal which is relatively fragile compared to steel slides.",
"weight": "800 g",
"volume": "703 ml",
"price": 7500,
diff --git a/data/json/items/gun/40mm.json b/data/json/items/gun/40mm.json
index a9b605ed1ff50..8d535c4bf967d 100644
--- a/data/json/items/gun/40mm.json
+++ b/data/json/items/gun/40mm.json
@@ -2,6 +2,7 @@
{
"id": "launcher_simple",
"copy-from": "launcher_base",
+ "looks_like": "m79",
"type": "GUN",
"name": "tube 40mm launcher",
"description": "A simple, home-made grenade launcher. Basically a tube with a pin firing mechanism to activate the grenade.",
@@ -30,6 +31,7 @@
{
"id": "m320",
"copy-from": "launcher_base",
+ "looks_like": "m79",
"type": "GUN",
"name": "M320 stand alone launcher",
"description": "Heckler & Koch's M320 grenade launcher offers the functionality of larger launchers in a very small package at the cost of decreased accuracy. This one is combined with a buttstock for stand alone operation.",
@@ -49,6 +51,7 @@
{
"id": "m79",
"copy-from": "launcher_base",
+ "//": "Tileset whitelist for launchers.",
"type": "GUN",
"name": "M79 launcher",
"description": "A widely-used grenade launcher that first saw use by American forces in the Vietnam war. Though mostly replaced by more modern launchers, the M79 still sees use with many units worldwide.",
@@ -78,6 +81,7 @@
{
"id": "mark19",
"copy-from": "launcher_base",
+ "looks_like": "m79",
"type": "GUN",
"name": "Mark 19 grenade launcher",
"description": "A heavy, tripod-mounted belt-fed grenade launcher used by the US Military since the start of the cold war all the way to the cataclysm, and if you can find some 40mm grenades, maybe even beyond.",
@@ -102,13 +106,14 @@
[ "rail mount", 1 ],
[ "underbarrel mount", 1 ]
],
- "modes": [ [ "DEFAULT", "semi-auto", 1, "NPC_AVOID" ], [ "AUTO", "auto", 6, "NPC_AVOID" ] ],
+ "modes": [ [ "DEFAULT", "semi-auto", 1, "NPC_AVOID" ] ],
"magazines": [ [ "40mm", [ "belt40mm" ] ] ],
"flags": [ "MOUNTED_GUN" ]
},
{
"id": "mgl",
"copy-from": "launcher_base",
+ "looks_like": "m79",
"type": "GUN",
"name": "Milkor MGL",
"name_plural": "Milkor MGL",
@@ -138,6 +143,7 @@
{
"id": "rm802",
"copy-from": "launcher_base",
+ "looks_like": "m79",
"type": "GUN",
"name": "RM802 grenade launcher",
"//": "Either Rivtech or milspec would make it Expensive. Combined, you could buy a half-decent car for the price.",
diff --git a/data/json/items/gun/410shot.json b/data/json/items/gun/410shot.json
index cec4e28b82f9d..e9193a9f89732 100644
--- a/data/json/items/gun/410shot.json
+++ b/data/json/items/gun/410shot.json
@@ -2,6 +2,7 @@
{
"id": "saiga_410",
"copy-from": "shotgun_base",
+ "looks_like": "remington_870",
"type": "GUN",
"name": "Saiga-410",
"description": "The Saiga-410 is a semi-automatic shotgun designed on the same Kalashnikov pattern as the AK47 rifle. It reloads with a magazine, rather than one shell at a time like most shotguns.",
diff --git a/data/json/items/gun/44.json b/data/json/items/gun/44.json
index ade01e1e26322..d5287ee4b4216 100644
--- a/data/json/items/gun/44.json
+++ b/data/json/items/gun/44.json
@@ -1,6 +1,7 @@
[
{
"id": "deagle_44",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "Desert Eagle .44",
@@ -40,6 +41,7 @@
{
"id": "henry_big_boy",
"copy-from": "rifle_manual",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Henry Big Boy .44",
"name_plural": "Henry Big Boy .44",
@@ -75,6 +77,7 @@
{
"id": "rifle_44",
"copy-from": "gun_base",
+ "looks_like": "ar15",
"type": "GUN",
"name": "pipe rifle: .44 Magnum",
"name_plural": "pipe rifles: .44 Magnum",
@@ -112,6 +115,7 @@
{
"id": "ruger_redhawk",
"copy-from": "pistol_revolver",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "Ruger Redhawk",
"name_plural": "Ruger Redhawk",
@@ -145,6 +149,7 @@
{
"id": "sw629",
"copy-from": "pistol_revolver",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "S&W 629",
"name_plural": "S&W 629",
diff --git a/data/json/items/gun/44paper.json b/data/json/items/gun/44paper.json
index 4a5494bb81311..ea204275beebc 100644
--- a/data/json/items/gun/44paper.json
+++ b/data/json/items/gun/44paper.json
@@ -2,6 +2,7 @@
{
"id": "colt_army",
"copy-from": "pistol_revolver_cap_ball",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "Colt M1860 Army",
"name_plural": "Colt M1860 Army",
@@ -21,6 +22,7 @@
{
"id": "lemat_revolver",
"copy-from": "pistol_revolver_cap_ball",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "LeMat revolver",
"description": "A Pietta reproduction of the civil war era LeMat revolver, a rare and unusual cap & ball .44-caliber revolver. While its original non-standard .42 or .35 caliber curbed its usefulness for the CSA army, this reproduction is offered in more prevalent .44 caliber. Despite modern quality materials, the design is still rather delicate.",
diff --git a/data/json/items/gun/45.json b/data/json/items/gun/45.json
index efe45ffd50ba3..081546905bd71 100644
--- a/data/json/items/gun/45.json
+++ b/data/json/items/gun/45.json
@@ -1,6 +1,7 @@
[
{
"id": "TDI",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 10,
"name": "TDI Vector",
@@ -18,7 +19,7 @@
"dispersion": 280,
"durability": 7,
"min_cycle_recoil": 540,
- "burst": 20,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 6 ] ],
"valid_mod_locations": [
[ "accessories", 3 ],
[ "barrel", 1 ],
@@ -39,6 +40,7 @@
},
{
"id": "hk_ump45",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 10,
"name": "H&K UMP45",
@@ -57,7 +59,7 @@
"dispersion": 240,
"durability": 8,
"min_cycle_recoil": 540,
- "burst": 10,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"valid_mod_locations": [
[ "accessories", 3 ],
[ "barrel", 1 ],
@@ -78,6 +80,7 @@
{
"id": "m1911",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "M1911",
"//": "You can get 'em for over US$1K if you want. This is a fairly cheap remake.",
@@ -101,6 +104,7 @@
{
"id": "m1911_MEU",
"copy-from": "m1911",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "M45A1",
"description": "The M45A1 supplanted earlier M45 MEUSOC pistols in use by Force Recon elements of Marine Expeditionary Units. Where the original M45 pistols were gutted M1911A1's hand-fitted by USMC armorers, the updated M45A1's are hardly different from any other commercial 1911 design save for their dual recoil springs. Most were replaced in 2016 with Glock 19's due to logistics issues.",
@@ -112,6 +116,7 @@
},
{
"id": "mac_10",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 10,
"name": "MAC-10",
@@ -129,7 +134,7 @@
"dispersion": 520,
"durability": 7,
"min_cycle_recoil": 540,
- "burst": 18,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 5 ] ],
"built_in_mods": [ "wire_stock" ],
"valid_mod_locations": [
[ "accessories", 3 ],
@@ -151,6 +156,7 @@
},
{
"id": "rifle_45",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "pipe rifle: .45",
@@ -190,6 +196,7 @@
{
"id": "smg_45",
"copy-from": "smg_base",
+ "looks_like": "hk_mp5",
"type": "GUN",
"name": "Luty SMG: .45",
"name_plural": "Luty SMGs: .45",
@@ -208,7 +215,7 @@
"durability": 4,
"blackpowder_tolerance": 24,
"min_cycle_recoil": 456,
- "modes": [ [ "DEFAULT", "auto", 10 ] ],
+ "modes": [ [ "DEFAULT", "burst", 5 ] ],
"loudness": 25,
"barrel_length": 1,
"valid_mod_locations": [
@@ -229,6 +236,7 @@
{
"id": "surv_hand_cannon",
"copy-from": "pistol_revolver",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "homemade hand cannon",
"//": "On one hand, it's very big for a handgun. On the other, it's still a scrap weapon.",
@@ -251,6 +259,7 @@
},
{
"id": "tommygun",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 10,
"name": "Thompson submachine gun",
@@ -269,7 +278,7 @@
"dispersion": 360,
"durability": 7,
"min_cycle_recoil": 540,
- "burst": 10,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"barrel_length": 2,
"valid_mod_locations": [
[ "accessories", 3 ],
@@ -312,6 +321,7 @@
{
"id": "walther_ppq_45",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Walther PPQ .45 ACP",
"description": "The Walther PPQ is a semi-automatic pistol originating from the Walther P99QA, and maintains compatibility with some of its predecessor's accessories. This model is chambered in .45 ACP.",
@@ -330,9 +340,10 @@
{
"id": "hptjhp",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Hi-Point Model JHP",
- "description": "The Hi-Point Model JHP is a blowback operated semi automatic pistol designed by Hi-Point Firearms, which is known for making inexpensive firearms, and for making said firearms bulky and uncomfortable. Hi-Points have slides made with a zinc pot-metal which is relatively fragile compared to steel slides.",
+ "description": "The Hi-Point Model JHP is a blowback operated semi automatic pistol designed by Hi-Point Firearms, which is known for making inexpensive firearms, and for making said firearms bulky and uncomfortable. Hi-Points have slides made with a zinc pot-metal which is relatively fragile compared to steel slides.",
"weight": "800 g",
"volume": "720 ml",
"price": 7500,
diff --git a/data/json/items/gun/454.json b/data/json/items/gun/454.json
index f77932835115d..3ba84f2375fed 100644
--- a/data/json/items/gun/454.json
+++ b/data/json/items/gun/454.json
@@ -2,6 +2,7 @@
{
"id": "raging_bull",
"copy-from": "pistol_revolver",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "Taurus Raging Bull",
"name_plural": "Taurus Raging Bull",
diff --git a/data/json/items/gun/4570.json b/data/json/items/gun/4570.json
index 676966f184572..10f8df2560f8a 100644
--- a/data/json/items/gun/4570.json
+++ b/data/json/items/gun/4570.json
@@ -2,6 +2,7 @@
{
"id": "1895sbl",
"copy-from": "rifle_manual",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Marlin 1895 SBL",
"description": "A handy but powerful lever-action rifle chambered for .45-70 Government. Designed for wilderness guides for defense against large predators such as grizzly bears, moose, and dinosaurs.",
@@ -34,6 +35,7 @@
{
"id": "bfr",
"copy-from": "pistol_revolver",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "Magnum Research BFR",
"description": "A massive single-action revolver. While the .45-70 rifle round loses significant velocity in its short pistol barrel, it still competes with other large magnum handguns in terms of power.",
@@ -64,6 +66,7 @@
{
"id": "sharps",
"copy-from": "gun_base",
+ "looks_like": "ar15",
"type": "GUN",
"name": "1874 Sharps",
"name_plural": "1874 Sharps",
diff --git a/data/json/items/gun/45colt.json b/data/json/items/gun/45colt.json
index 65a6023bedc52..75c7f9a09d850 100644
--- a/data/json/items/gun/45colt.json
+++ b/data/json/items/gun/45colt.json
@@ -2,6 +2,7 @@
{
"id": "colt_saa",
"copy-from": "pistol_revolver",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "Uberti Cattleman",
"name_plural": "Uberti Cattleman",
diff --git a/data/json/items/gun/46.json b/data/json/items/gun/46.json
index e10f0cbb196a2..45dac19c34820 100644
--- a/data/json/items/gun/46.json
+++ b/data/json/items/gun/46.json
@@ -1,6 +1,7 @@
[
{
"id": "hk_mp7",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 10,
"name": "H&K MP7A2",
@@ -18,7 +19,7 @@
"dispersion": 260,
"durability": 8,
"min_cycle_recoil": 81,
- "burst": 16,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 5 ] ],
"built_in_mods": [ "wire_stock" ],
"valid_mod_locations": [
[ "accessories", 3 ],
diff --git a/data/json/items/gun/460.json b/data/json/items/gun/460.json
index 0714108e5c7b9..2e3772e6522ff 100644
--- a/data/json/items/gun/460.json
+++ b/data/json/items/gun/460.json
@@ -27,6 +27,7 @@
{
"id": "l_enforcer_45",
"copy-from": "pistol_revolver",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "L2031 Enforcer",
"name_plural": "L2031 Enforcer",
@@ -59,6 +60,7 @@
},
{
"id": "l_long_45",
+ "looks_like": "sw_619",
"type": "GUN",
"reload_noise_volume": 10,
"name": "L1820 Long Ranger",
diff --git a/data/json/items/gun/50.json b/data/json/items/gun/50.json
index 34d771db244aa..b34f088fda80c 100644
--- a/data/json/items/gun/50.json
+++ b/data/json/items/gun/50.json
@@ -2,6 +2,7 @@
{
"id": "m107a1",
"copy-from": "rifle_base",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Barrett M107A1",
"name_plural": "Barrett M107A1",
@@ -16,7 +17,7 @@
"ammo": "50",
"range": 100,
"ranged_damage": -5,
- "dispersion": 90,
+ "dispersion": 130,
"durability": 8,
"barrel_length": 5,
"default_mods": [ "bipod", "rifle_scope", "muzzle_brake" ],
@@ -27,6 +28,7 @@
{
"id": "m2browning",
"copy-from": "gun_base",
+ "looks_like": "ar15",
"type": "GUN",
"name": "M2HB Browning HMG",
"name_plural": "M2HB Browning HMG",
@@ -40,11 +42,11 @@
"ammo": "50",
"skill": "rifle",
"range": 110,
- "dispersion": 200,
+ "dispersion": 250,
"durability": 8,
"reload": 400,
"barrel_length": 5,
- "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 8 ] ],
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"valid_mod_locations": [
[ "accessories", 4 ],
[ "barrel", 1 ],
@@ -89,13 +91,14 @@
{
"id": "as50",
"copy-from": "rifle_base",
+ "looks_like": "ar15",
"type": "GUN",
"name": "AI AS50",
"description": ".50 caliber anti-materiel rifle made by Accuracy International. With high accuracy for long range target and high fire rate, this weapon is still being used by Greek national guard.",
"weight": "14000 g",
"volume": "3500 ml",
"price": 1500000,
- "to-hit": -1,
+ "to_hit": -1,
"bashing": 13,
"material": "steel",
"ammo": "50",
@@ -113,13 +116,14 @@
{
"id": "tac50",
"copy-from": "rifle_base",
+ "looks_like": "ar15",
"type": "GUN",
"name": "McMillan TAC-50",
"description": "A long-range anti-materiel and anti-personnel sniper rifle made by McMillan Firearms, serving the Canadian Army since 2000 as the C15, and the Navy Seals as the Mk 15 Mod 0. This .50 caliber bolt-action rifle is capable of defeating light vehicles, radar installations and crew served weapons at extreme distances. It notably holds the longest range confirmed sniper kill, as well as the 4th and 5th longest.",
"weight": "11800 g",
"volume": "3127 ml",
"price": 870000,
- "to-hit": -1,
+ "to_hit": -1,
"bashing": 12,
"material": "steel",
"ammo": "50",
@@ -137,13 +141,14 @@
{
"id": "bfg50",
"copy-from": "rifle_base",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Serbu BFG-50",
"description": "A single-shot, bolt-action rifle made by Serbu Firearms, the BFG-50 is a very affordable firearm for those wishing to shoot .50 BMG.",
"weight": "8504 g",
"volume": "1387 ml",
"price": 239500,
- "to-hit": -1,
+ "to_hit": -1,
"bashing": 12,
"material": "steel",
"ammo": "50",
diff --git a/data/json/items/gun/500.json b/data/json/items/gun/500.json
index 914e52db98862..6f3f6694b60f0 100644
--- a/data/json/items/gun/500.json
+++ b/data/json/items/gun/500.json
@@ -2,6 +2,7 @@
{
"id": "bh_m89",
"copy-from": "rifle_manual",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Big Horn Model 89",
"name_plural": "Big Horn Model 89",
@@ -37,6 +38,7 @@
{
"id": "sw_500",
"copy-from": "pistol_revolver",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "S&W 500",
"name_plural": "S&W 500",
diff --git a/data/json/items/gun/545x39.json b/data/json/items/gun/545x39.json
index c4b827601b875..8f3fac8ea789c 100644
--- a/data/json/items/gun/545x39.json
+++ b/data/json/items/gun/545x39.json
@@ -1,6 +1,7 @@
[
{
"id": "ak74",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "AK-74M",
@@ -18,7 +19,7 @@
"skill": "rifle",
"dispersion": 150,
"durability": 8,
- "burst": 10,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"barrel_length": 1,
"valid_mod_locations": [
[ "accessories", 4 ],
@@ -39,6 +40,7 @@
},
{
"id": "an94",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "AN-94",
@@ -56,7 +58,7 @@
"dispersion": 150,
"durability": 7,
"barrel_length": 1,
- "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "2 rd.", 2 ], [ "AUTO", "auto", 10 ] ],
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "2 rd.", 2 ], [ "AUTO", "auto", 4 ] ],
"valid_mod_locations": [
[ "accessories", 4 ],
[ "barrel", 1 ],
diff --git a/data/json/items/gun/57.json b/data/json/items/gun/57.json
index dc9c8698600ce..0c2e2d8b7edd8 100644
--- a/data/json/items/gun/57.json
+++ b/data/json/items/gun/57.json
@@ -1,6 +1,7 @@
[
{
"id": "fn57",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "FN Five-Seven",
@@ -37,6 +38,7 @@
},
{
"id": "fn_p90",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 10,
"name": "FN P90",
@@ -54,7 +56,7 @@
"dispersion": 260,
"durability": 8,
"min_cycle_recoil": 81,
- "burst": 15,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 5 ] ],
"valid_mod_locations": [
[ "accessories", 3 ],
[ "barrel", 1 ],
diff --git a/data/json/items/gun/5x50.json b/data/json/items/gun/5x50.json
index 1827c111e41d3..f26e0aaedb6cc 100644
--- a/data/json/items/gun/5x50.json
+++ b/data/json/items/gun/5x50.json
@@ -1,6 +1,7 @@
[
{
"id": "needlegun",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 10,
"name": "RM216 SPIW",
@@ -20,7 +21,7 @@
"dispersion": 220,
"durability": 9,
"barrel_length": 1,
- "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "5 rd.", 5 ], [ "AUTO", "auto", 10 ] ],
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "5 rd.", 5 ], [ "AUTO", "auto", 4 ] ],
"valid_mod_locations": [
[ "accessories", 3 ],
[ "barrel", 1 ],
@@ -40,6 +41,7 @@
},
{
"id": "needlepistol",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "RM232 IDW",
@@ -56,7 +58,7 @@
"skill": "pistol",
"dispersion": 280,
"durability": 9,
- "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "2 rd.", 2 ], [ "AUTO", "auto", 5 ] ],
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "2 rd.", 2 ], [ "AUTO", "auto", 4 ] ],
"valid_mod_locations": [
[ "accessories", 3 ],
[ "brass catcher", 1 ],
diff --git a/data/json/items/gun/66mm.json b/data/json/items/gun/66mm.json
index c685a0d489b9b..80d5c0b625ab5 100644
--- a/data/json/items/gun/66mm.json
+++ b/data/json/items/gun/66mm.json
@@ -1,6 +1,7 @@
[
{
"id": "m202_flash",
+ "looks_like": "m79",
"type": "GUN",
"symbol": "(",
"color": "dark_gray",
diff --git a/data/json/items/gun/700nx.json b/data/json/items/gun/700nx.json
index b1f3c43d71b3b..a96641cf74f1d 100644
--- a/data/json/items/gun/700nx.json
+++ b/data/json/items/gun/700nx.json
@@ -1,6 +1,7 @@
[
{
"id": "trex_gun",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "Elephant gun",
diff --git a/data/json/items/gun/762.json b/data/json/items/gun/762.json
index 875861494f443..745915174ea58 100644
--- a/data/json/items/gun/762.json
+++ b/data/json/items/gun/762.json
@@ -1,6 +1,7 @@
[
{
"id": "ak47",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "AKM",
@@ -17,7 +18,7 @@
"skill": "rifle",
"dispersion": 180,
"durability": 9,
- "burst": 10,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"barrel_length": 1,
"valid_mod_locations": [
[ "accessories", 4 ],
@@ -38,6 +39,7 @@
},
{
"id": "arx160",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "Beretta ARX-160",
@@ -56,7 +58,7 @@
"skill": "rifle",
"dispersion": 160,
"durability": 9,
- "burst": 12,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"barrel_length": 1,
"default_mods": [ "folding_stock" ],
"valid_mod_locations": [
@@ -77,6 +79,7 @@
},
{
"id": "sks",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "SKS",
diff --git a/data/json/items/gun/762R.json b/data/json/items/gun/762R.json
index bf11bf1efe134..1ad817a62305d 100644
--- a/data/json/items/gun/762R.json
+++ b/data/json/items/gun/762R.json
@@ -36,6 +36,7 @@
{
"id": "mosin91_30",
"copy-from": "rifle_manual",
+ "looks_like": "ar15",
"type": "GUN",
"name": "Mosin-Nagant 1891/30",
"name_plural": "Mosin-Nagant 1891/30",
diff --git a/data/json/items/gun/762x25.json b/data/json/items/gun/762x25.json
index 5390e997bf5e0..7b3aad011a54b 100644
--- a/data/json/items/gun/762x25.json
+++ b/data/json/items/gun/762x25.json
@@ -1,6 +1,7 @@
[
{
"id": "ppsh",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 10,
"name": "PPSh-41",
@@ -21,7 +22,7 @@
"durability": 8,
"min_cycle_recoil": 270,
"barrel_length": 2,
- "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 15 ] ],
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 5 ] ],
"valid_mod_locations": [
[ "accessories", 3 ],
[ "barrel", 1 ],
@@ -41,6 +42,7 @@
{
"id": "tokarev",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Tokarev TT-33",
"name_plural": "Tokarev TT-33",
diff --git a/data/json/items/gun/84x246mm.json b/data/json/items/gun/84x246mm.json
index 535f0635808f7..6ddbc30be2db1 100644
--- a/data/json/items/gun/84x246mm.json
+++ b/data/json/items/gun/84x246mm.json
@@ -1,6 +1,7 @@
[
{
"id": "m3_carlgustav",
+ "looks_like": "m79",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
diff --git a/data/json/items/gun/8x40mm.json b/data/json/items/gun/8x40mm.json
index 9845f215b3620..f169ff2fcf163 100644
--- a/data/json/items/gun/8x40mm.json
+++ b/data/json/items/gun/8x40mm.json
@@ -1,6 +1,7 @@
[
{
"id": "rm103a_pistol",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "RM103A automagnum",
@@ -35,6 +36,7 @@
},
{
"id": "rm11b_sniper_rifle",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "RM11B scout rifle",
@@ -53,7 +55,7 @@
"ranged_damage": 10,
"dispersion": 10,
"durability": 9,
- "burst": 2,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 2 ] ],
"barrel_length": 3,
"built_in_mods": [ "riv_scope", "riv_suppressor" ],
"valid_mod_locations": [
@@ -71,6 +73,7 @@
},
{
"id": "rm2000_smg",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 10,
"name": "RM2000 submachine gun",
@@ -87,7 +90,7 @@
"skill": "smg",
"dispersion": 120,
"durability": 9,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"valid_mod_locations": [
[ "accessories", 3 ],
[ "grip", 1 ],
@@ -123,7 +126,7 @@
"ranged_damage": 10,
"dispersion": 90,
"durability": 9,
- "burst": 30,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 6 ] ],
"reload": 400,
"barrel_length": 6,
"magazine_well": 6,
@@ -150,7 +153,7 @@
"ranged_damage": 5,
"dispersion": 50,
"durability": 9,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"valid_mod_locations": [
[ "accessories", 4 ],
[ "grip", 1 ],
@@ -187,7 +190,7 @@
"durability": 9,
"reload": 200,
"barrel_length": 2,
- "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "4 rd.", 4 ], [ "AUTO", "auto", 20 ] ],
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "4 rd.", 4 ], [ "AUTO", "auto", 6 ] ],
"valid_mod_locations": [
[ "accessories", 4 ],
[ "barrel", 1 ],
@@ -222,7 +225,7 @@
"ranged_damage": 10,
"dispersion": 30,
"durability": 9,
- "burst": 10,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"barrel_length": 2,
"valid_mod_locations": [
[ "accessories", 4 ],
diff --git a/data/json/items/gun/9mm.json b/data/json/items/gun/9mm.json
index 542d29cd3ea68..274a0b74924df 100644
--- a/data/json/items/gun/9mm.json
+++ b/data/json/items/gun/9mm.json
@@ -1,6 +1,7 @@
[
{
"id": "calico",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 10,
"name": "Calico M960",
@@ -21,7 +22,7 @@
"dispersion": 280,
"durability": 6,
"min_cycle_recoil": 450,
- "burst": 13,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"valid_mod_locations": [
[ "accessories", 3 ],
[ "barrel", 1 ],
@@ -42,6 +43,7 @@
},
{
"id": "cx4",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "Cx4 Storm",
@@ -83,6 +85,7 @@
{
"id": "glock_19",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Glock 19",
"description": "Possibly the most popular pistol in existence. The Glock 19 is often derided for its plastic construction, but it is easy to shoot.",
@@ -105,6 +108,7 @@
},
{
"id": "hk_mp5",
+ "//": "Tileset whitelist for SMGs",
"type": "GUN",
"reload_noise_volume": 10,
"name": "H&K MP5A2",
@@ -124,7 +128,7 @@
"durability": 8,
"min_cycle_recoil": 450,
"blackpowder_tolerance": 32,
- "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 13 ] ],
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 4 ] ],
"valid_mod_locations": [
[ "accessories", 3 ],
[ "barrel", 1 ],
@@ -162,7 +166,7 @@
[ "sling", 1 ],
[ "stock", 1 ]
],
- "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 12 ] ],
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ], [ "AUTO", "auto", 4 ] ],
"built_in_mods": [ "mp5sd_suppressor" ]
},
{
@@ -237,6 +241,7 @@
},
{
"id": "ksub2000",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 10,
"name": "Kel-Tec SUB-2000",
@@ -278,6 +283,7 @@
{
"id": "l_lookout_9mm",
"copy-from": "l_enforcer_45",
+ "looks_like": "sw_619",
"type": "GUN",
"name": "L2032 Lookout",
"name_plural": "L2032 Lookout",
@@ -294,12 +300,13 @@
"//": "The M93R can go through up to 110 rounds in six seconds, FWIW.",
"description": "A selective-firing 9x19mm handgun introduced by Leadworks LLC's, L39B provides accurate single-shot placement as well as controllable short-range firepower with its three-round burst mode. Users praised its accuracy and fearsome appearance. Comes with built in red dot and laser sights. Similar to other Leadworks products it doesn't accept third-party modifications.",
"price": 95000,
- "burst": 3,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "3 rd.", 3 ] ],
"relative": { "weight": 130, "durability": -1 }
},
{
"id": "l_sp_9mm",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "L39",
"//": "L39s are based off the Robocop Auto-9, in turn a dolled-up Beretta 93R.",
@@ -335,6 +342,7 @@
{
"id": "m9",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Beretta M9",
"description": "A very popular 9x19mm pistol, the M9 has been the standard issue sidearm of the US army since 1985.",
@@ -356,6 +364,7 @@
},
{
"id": "rifle_9mm",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "pipe rifle: 9x19mm",
@@ -396,6 +405,7 @@
{
"id": "smg_9mm",
"copy-from": "smg_base",
+ "looks_like": "hk_mp5",
"type": "GUN",
"name": "Luty SMG: 9x19mm",
"name_plural": "Luty SMGs: 9x19mm",
@@ -414,7 +424,7 @@
"durability": 4,
"blackpowder_tolerance": 24,
"min_cycle_recoil": 380,
- "modes": [ [ "DEFAULT", "auto", 10 ] ],
+ "modes": [ [ "DEFAULT", "burst", 5 ] ],
"loudness": 25,
"barrel_length": 1,
"valid_mod_locations": [
@@ -434,6 +444,7 @@
},
{
"id": "sten",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 10,
"name": "STEN",
@@ -452,7 +463,7 @@
"durability": 5,
"blackpowder_tolerance": 24,
"min_cycle_recoil": 450,
- "modes": [ [ "DEFAULT", "auto", 10 ] ],
+ "modes": [ [ "DEFAULT", "burst", 4 ] ],
"valid_mod_locations": [
[ "accessories", 2 ],
[ "muzzle", 1 ],
@@ -468,6 +479,7 @@
},
{
"id": "tec9",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "TEC-9",
@@ -486,7 +498,7 @@
"dispersion": 520,
"durability": 6,
"min_cycle_recoil": 450,
- "modes": [ [ "DEFAULT", "auto", 8 ] ],
+ "modes": [ [ "DEFAULT", "burst", 4 ] ],
"valid_mod_locations": [
[ "accessories", 3 ],
[ "barrel", 1 ],
@@ -508,6 +520,7 @@
{
"id": "usp_9mm",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "USP 9mm",
"name_plural": "USP 9mm",
@@ -532,6 +545,7 @@
{
"id": "uzi",
"copy-from": "smg_base",
+ "looks_like": "hk_mp5",
"type": "GUN",
"name": "Uzi 9mm",
"name_plural": "Uzi 9mm",
@@ -549,7 +563,7 @@
"dispersion": 360,
"durability": 7,
"min_cycle_recoil": 450,
- "burst": 10,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"built_in_mods": [ "folding_stock" ],
"valid_mod_locations": [
[ "accessories", 3 ],
@@ -571,6 +585,7 @@
{
"id": "glock_17",
"copy-from": "pistol_base",
+ "//": "Tilelist whitelist for pistols.",
"type": "GUN",
"name": "Glock 17",
"description": "Designed for all shooters, the Glock 17 is marketed towards law-enforcement and military.",
@@ -598,7 +613,7 @@
"name": "Glock 18C",
"description": "A selective fire variation on the Glock 17, originally designed for Austria's EKO Cobra unit. It has compensator cuts along its barrel to make recoil more manageable.",
"price": 100000,
- "burst": 20,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 6 ] ],
"built_in_mods": [ "barrel_ported" ]
},
{
@@ -619,6 +634,7 @@
{
"id": "m17",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "M17",
"description": "The M17 is a semi automatic, short recoil operated pistol derived from the SIG Sauer P320.",
@@ -639,9 +655,10 @@
{
"id": "hi_power_9mm",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Browning Hi-Power 9x19mm",
- "description": "The Browning Hi-Power is a semi-automatic handgun developed shortly before the second world war. Widely issued since then, it remains in use by India, Canada and Australia. This is a commercial variant produced by Browning Arms in 9x19mm Parabellum.",
+ "description": "The Browning Hi-Power is a semi-automatic handgun developed shortly before the second world war. Widely issued since then, it remains in use by India, Canada and Australia. This is a commercial variant produced by Browning Arms in 9x19mm Parabellum.",
"weight": "900 g",
"volume": "418 ml",
"price": 32000,
@@ -658,9 +675,10 @@
{
"id": "walther_p38",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Walther P38",
- "description": "The Walther P38 is a semi-automatic handgun adopted shortly before the second world war. Developed due to the high production costs of its predecessor, the Luger P08, the P38 is also chambered in 9mm Parabellum. This early DA/SA locked-breech design would introduce features later seen on more modern firearms such as the Beretta 92 series, and served Germany until 2004.",
+ "description": "The Walther P38 is a semi-automatic handgun adopted shortly before the second world war. Developed due to the high production costs of its predecessor, the Luger P08, the P38 is also chambered in 9mm Parabellum. This early DA/SA locked-breech design would introduce features later seen on more modern firearms such as the Beretta 92 series, and served Germany until 2004.",
"weight": "950 g",
"volume": "547 ml",
"price": 39000,
@@ -677,9 +695,10 @@
{
"id": "walther_ppq_9mm",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Walther PPQ 9mm",
- "description": "The Walther PPQ is a semi-automatic pistol originating from the Walther P99QA, and maintains compatibility with some of its predecessor's accessories. This model is chambered in 9x19mm Parabellum.",
+ "description": "The Walther PPQ is a semi-automatic pistol originating from the Walther P99QA, and maintains compatibility with some of its predecessor's accessories. This model is chambered in 9x19mm Parabellum.",
"weight": "615 g",
"volume": "413 ml",
"price": 65000,
@@ -695,9 +714,10 @@
{
"id": "hptc9",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Hi-Point C-9",
- "description": "The Hi-Point C-9 is a blowback operated semi automatic pistol designed by Hi-Point Firearms, which is known for making inexpensive firearms, and for making said firearms bulky and uncomfortable. Hi-Points have slides made with a zinc pot-metal which is relatively fragile compared to steel slides.",
+ "description": "The Hi-Point C-9 is a blowback operated semi automatic pistol designed by Hi-Point Firearms, which is known for making inexpensive firearms, and for making said firearms bulky and uncomfortable. Hi-Points have slides made with a zinc pot-metal which is relatively fragile compared to steel slides.",
"weight": "709 g",
"volume": "539 ml",
"price": 7500,
@@ -714,9 +734,10 @@
{
"id": "cz75",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "CZ-75",
- "description": "The CZ-75 is a semi-automatic pistol developed in Czechoslovakia, and is one of the original wonder nines. Though designed for export to western countries, it was declared a state secret; lack of international patent protection meant that many clones and variants were produced and distributed around the world, with Česká zbrojovka only joining in the 90's. This pistol remains wildly popular among competition shooters.",
+ "description": "The CZ-75 is a semi-automatic pistol developed in Czechoslovakia, and is one of the original wonder nines. Though designed for export to western countries, it was declared a state secret; lack of international patent protection meant that many clones and variants were produced and distributed around the world, with Česká zbrojovka only joining in the 90's. This pistol remains wildly popular among competition shooters.",
"weight": "1120 g",
"volume": "526 ml",
"price": 10000,
@@ -733,9 +754,10 @@
{
"id": "walther_ccp",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Walther CCP",
- "description": "The Walther CCP is a gas-delayed blowback semi-automatic pistol intended for the concealed carry consumer market. Internally, it is nearly identical to the cult classic H&K P7. Its fixed barrel design makes it potentially more accurate than many other pistols, though this may difficult to realize with its average trigger and short sight radius.",
+ "description": "The Walther CCP is a gas-delayed blowback semi-automatic pistol intended for the concealed carry consumer market. Internally, it is nearly identical to the cult classic H&K P7. Its fixed barrel design makes it potentially more accurate than many other pistols, though this may difficult to realize with its average trigger and short sight radius.",
"weight": "633 g",
"volume": "318 ml",
"price": 12500,
diff --git a/data/json/items/gun/9x18.json b/data/json/items/gun/9x18.json
index 78d0fb13b3bc9..6a3fd5e7c56a2 100644
--- a/data/json/items/gun/9x18.json
+++ b/data/json/items/gun/9x18.json
@@ -2,6 +2,7 @@
{
"id": "makarov",
"copy-from": "pistol_base",
+ "looks_like": "glock_17",
"type": "GUN",
"name": "Makarov PM",
"//": "10 and 12-round magazines exist, but were made for the newer PMM, and are not compatible with the old PM.",
@@ -36,6 +37,7 @@
{
"id": "skorpion_82",
"copy-from": "skorpion_61",
+ "looks_like": "hk_mp5",
"type": "GUN",
"name": "Skorpion Vz. 82",
"//": "Total unloaded weight of gun 1451.496 grams, rounded to 1451. Current weight of folding stock 200 grams.",
@@ -43,7 +45,7 @@
"weight": "1251 g",
"ammo": "9x18",
"min_cycle_recoil": 270,
- "burst": 15,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 5 ] ],
"magazines": [ [ "9x18", [ "skorpion82mag" ] ] ]
}
]
diff --git a/data/json/items/gun/atgm.json b/data/json/items/gun/atgm.json
index 0f85ccb6cda32..d40799d31dffb 100644
--- a/data/json/items/gun/atgm.json
+++ b/data/json/items/gun/atgm.json
@@ -2,6 +2,7 @@
{
"id": "atgm_launcher",
"copy-from": "gun_base",
+ "looks_like": "m79",
"type": "GUN",
"name": "BGM-71F TOW",
"name_plural": "BGM-71F TOW",
diff --git a/data/json/items/gun/bio.json b/data/json/items/gun/bio.json
index 1d7fef4a58782..421e1f75697e7 100644
--- a/data/json/items/gun/bio.json
+++ b/data/json/items/gun/bio.json
@@ -1,6 +1,7 @@
[
{
"id": "bio_shotgun_gun",
+ "looks_like": "remington_870",
"type": "GUN",
"name": "bionic shotgun",
"description": "Bionic one-shot retracting shotgun integrated with your arm.",
@@ -39,7 +40,6 @@
"//": "This is a pulse, not a laser. It's a point and shoot system, like a shotgun but even more so since this is a single mass.",
"durability": 10,
"loudness": 20,
- "reload": 0,
"modes": [ [ "DEFAULT", "auto", 5 ] ],
"ammo_effects": [ "DRAW_AS_LINE", "WIDE", "EMP" ],
"flags": [ "NEVER_JAMS", "NO_UNLOAD", "TRADER_AVOID" ]
@@ -62,7 +62,6 @@
"dispersion": 10,
"durability": 10,
"loudness": 7,
- "reload": 500,
"ammo_effects": [ "LASER", "INCENDIARY" ],
"flags": [ "NEVER_JAMS", "TRADER_AVOID", "FIRESTARTER" ]
},
@@ -83,7 +82,6 @@
"dispersion": 10,
"durability": 10,
"loudness": 10,
- "reload": 500,
"ammo_effects": [ "LIGHTNING", "BOUNCE" ],
"flags": [ "NEVER_JAMS", "TRADER_AVOID" ]
},
@@ -104,7 +102,6 @@
"dispersion": 600,
"durability": 10,
"loudness": 5,
- "reload": 500,
"ammo_effects": [ "SHOT" ],
"flags": [ "NEVER_JAMS", "TRADER_AVOID" ]
}
diff --git a/data/json/items/gun/blunderbuss.json b/data/json/items/gun/blunderbuss.json
index 1dbd7fac55f2b..cbd6e016dbf9f 100644
--- a/data/json/items/gun/blunderbuss.json
+++ b/data/json/items/gun/blunderbuss.json
@@ -1,6 +1,7 @@
[
{
"id": "blunderbuss",
+ "looks_like": "remington_870",
"type": "GUN",
"reload_noise_volume": 10,
"name": "blunderbuss",
diff --git a/data/json/items/gun/chemical_spray.json b/data/json/items/gun/chemical_spray.json
index 9e7dc9c1eb01e..f7c5cf6ab8f90 100644
--- a/data/json/items/gun/chemical_spray.json
+++ b/data/json/items/gun/chemical_spray.json
@@ -2,6 +2,7 @@
{
"id": "chemical_thrower",
"copy-from": "gun_base",
+ "looks_like": "m79",
"type": "GUN",
"reload_noise": "slosh.",
"name": "makeshift chemical thrower",
@@ -12,7 +13,7 @@
"to_hit": -1,
"bashing": 9,
"material": [ "steel", "plastic" ],
- "flags": [ "FIRE_50", "NEVER_JAMS" ],
+ "flags": [ "FIRE_50", "NEVER_JAMS", "NON-FOULING" ],
"skill": "launcher",
"ammo": "chemical_spray",
"dispersion": 300,
diff --git a/data/json/items/gun/faults_gun.json b/data/json/items/gun/faults_gun.json
index 4c483f4cfb25d..850ad97070071 100644
--- a/data/json/items/gun/faults_gun.json
+++ b/data/json/items/gun/faults_gun.json
@@ -3,33 +3,56 @@
"id": "fault_gun_blackpowder",
"type": "fault",
"name": "Blackpowder fouling",
- "description": "Firing blackpowder loads from a gun fouls it, which reduces reliability and, if left uncleaned, leads to rust. It fouls the gun much faster than the use of modern smokeless powder cartridges. Fouling is only a significant impact on reliability at high levels, but black powder fouling accumulates quickly.",
- "time": "50 m",
- "skills": [ [ "mechanics", 1 ] ],
- "requirements": {
- "qualities": [ { "id": "SCREW", "level": 1 } ],
- "tools": [ [ [ "pipe_cleaner", -1 ], [ "small_repairkit", -1 ], [ "large_repairkit", -1 ] ] ]
- }
+ "description": "Firing blackpowder loads from a gun fouls it, which reduces reliability and, if left uncleaned, leads to rust. It fouls the gun much faster than the use of modern smokeless powder cartridges. Fouling is only a significant impact on reliability at high levels, but black powder fouling accumulates quickly.",
+ "mending_methods": [
+ {
+ "id": "mend_fault_gun_blackpowder_clean",
+ "name": "Clean blackpowder fouling",
+ "success_msg": "You clean your %s.",
+ "time": "50 m",
+ "skills": [ { "id": "mechanics", "level": 1 } ],
+ "requirements": {
+ "qualities": [ { "id": "SCREW", "level": 1 } ],
+ "tools": [ [ [ "pipe_cleaner", -1 ], [ "small_repairkit", -1 ], [ "large_repairkit", -1 ] ] ]
+ }
+ }
+ ],
+ "flags": [ "SILENT" ]
},
{
"id": "fault_gun_chamber_spent",
"type": "fault",
"name": "Spent casing in chamber",
"description": "This gun currently has an empty casing chambered. It will have to be removed before firing.",
- "time": 50,
- "skills": [ ],
- "requirements": { }
+ "mending_methods": [
+ {
+ "id": "mend_fault_gun_chamber_spent_eject",
+ "name": "Eject spent casing",
+ "success_msg": "You eject the spent casing from the %s.",
+ "time": "1 s",
+ "skills": [ ],
+ "requirements": { }
+ }
+ ]
},
{
"id": "fault_gun_dirt",
"type": "fault",
"name": "Fouling",
- "description": "Fouling is caused by firing gunpowder loads repeatedly, which reduces reliability and can eventually cause damage to the gun. Fouling accumulates slowly (unless blackpowder is used) due to the design of modern smokeless powder found in the vast majority of retail cartridges and it is not a significant problem until high levels of fouling are reached due to firing thousands of rounds without cleaning your firearm.",
- "time": "50 m",
- "skills": [ [ "mechanics", 1 ] ],
- "requirements": {
- "qualities": [ { "id": "SCREW", "level": 1 } ],
- "tools": [ [ [ "pipe_cleaner", -1 ], [ "small_repairkit", -1 ], [ "large_repairkit", -1 ] ] ]
- }
+ "description": "Fouling is caused by firing gunpowder loads repeatedly, which reduces reliability and can eventually cause damage to the gun. Fouling accumulates slowly (unless blackpowder is used) due to the design of modern smokeless powder found in the vast majority of retail cartridges and it is not a significant problem until high levels of fouling are reached due to firing thousands of rounds without cleaning your firearm.",
+ "mending_methods": [
+ {
+ "id": "mend_fault_gun_dirt_clean",
+ "name": "Clean gun",
+ "success_msg": "You clean you %s.",
+ "time": "50 m",
+ "skills": [ { "id": "mechanics", "level": 1 } ],
+ "requirements": {
+ "qualities": [ { "id": "SCREW", "level": 1 } ],
+ "tools": [ [ [ "pipe_cleaner", -1 ], [ "small_repairkit", -1 ], [ "large_repairkit", -1 ] ] ]
+ }
+ }
+ ],
+ "flags": [ "SILENT" ]
}
]
diff --git a/data/json/items/gun/flammable.json b/data/json/items/gun/flammable.json
index f085a27d79d28..df307bda7cee2 100644
--- a/data/json/items/gun/flammable.json
+++ b/data/json/items/gun/flammable.json
@@ -2,6 +2,7 @@
{
"id": "flamethrower",
"copy-from": "flamethrower_base",
+ "looks_like": "m79",
"type": "GUN",
"name": "flamethrower",
"description": "A large flamethrower with substantial gas reserves. Very menacing and deadly.",
@@ -14,7 +15,7 @@
"range": 6,
"dispersion": 300,
"durability": 8,
- "burst": 4,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"valid_mod_locations": [
[ "accessories", 1 ],
[ "grip", 1 ],
@@ -29,6 +30,7 @@
{
"id": "rm451_flamethrower",
"copy-from": "flamethrower_base",
+ "looks_like": "m79",
"type": "GUN",
"name": "RM451 flamethrower",
"description": "A military-grade combat flamethrower designed by Rivtech, the RM451 flamethrower incorporates a cycling pressure rapid-feed fuel system with a high-speed piezoelectric igniter. Solidly built with durability in mind, it serves as an incredibly destructive weapon in the right hands.",
@@ -42,9 +44,9 @@
"ranged_damage": 10,
"dispersion": 240,
"durability": 9,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"valid_mod_locations": [ [ "accessories", 4 ], [ "rail", 1 ], [ "grip", 1 ], [ "sling", 1 ], [ "stock", 1 ], [ "underbarrel", 1 ] ],
- "extend": { "flags": [ "FIRE_20", "MODE_BURST" ] },
+ "extend": { "flags": [ "FIRE_20", "MODE_BURST", "NON-FOULING" ] },
"delete": { "flags": [ "FIRE_100" ] },
"magazines": [ [ "flammable", [ "rm4502", "rm4504" ] ] ]
}
diff --git a/data/json/items/gun/flintlock.json b/data/json/items/gun/flintlock.json
index 8a8c2a8ed0295..73378ff059229 100644
--- a/data/json/items/gun/flintlock.json
+++ b/data/json/items/gun/flintlock.json
@@ -2,6 +2,7 @@
{
"id": "carbine_flintlock",
"copy-from": "rifle_flintlock",
+ "looks_like": "ar15",
"type": "GUN",
"name": "flintlock carbine",
"description": "This short rifle design once dominated the battlefields of ancient Europe, and may yet re-earn its feared status due to its ease of handling and ability to use easily-crafted ammunition.",
@@ -30,6 +31,7 @@
},
{
"id": "pistol_flintlock",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "flintlock pistol",
@@ -63,6 +65,7 @@
},
{
"id": "rifle_flintlock",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "flintlock rifle",
diff --git a/data/json/items/gun/metal_rail.json b/data/json/items/gun/metal_rail.json
index 53c94951b072b..cac810f95854b 100644
--- a/data/json/items/gun/metal_rail.json
+++ b/data/json/items/gun/metal_rail.json
@@ -1,6 +1,7 @@
[
{
"id": "heavy_rail_rifle",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "heavy rail rifle",
@@ -37,6 +38,7 @@
},
{
"id": "rebar_rifle",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "ferromagnetic rail rifle",
diff --git a/data/json/items/gun/nail.json b/data/json/items/gun/nail.json
index 36568481ba639..a09a46bbdde22 100644
--- a/data/json/items/gun/nail.json
+++ b/data/json/items/gun/nail.json
@@ -2,6 +2,7 @@
{
"id": "coilgun",
"copy-from": "gun_base",
+ "looks_like": "ar15",
"type": "GUN",
"name": "coilgun",
"//": "Hard to make, plentiful and cheap ammo, and silent - people will want this thing.",
@@ -33,6 +34,7 @@
},
{
"id": "nailgun",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "nail gun",
@@ -57,13 +59,14 @@
{
"id": "nailrifle",
"copy-from": "nailgun",
+ "looks_like": "ar15",
"type": "GUN",
"name": "nail rifle",
"description": "This is a nailgun that has been extensively modified with the addition of a short barrel, stock and hand guard. It can be reloaded using detachable magazines and is an overall much more effective weapon.",
"to_hit": -1,
"bashing": 12,
"skill": "rifle",
- "burst": 10,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"clip_size": 0,
"valid_mod_locations": [
[ "accessories", 4 ],
diff --git a/data/json/items/gun/paintball.json b/data/json/items/gun/paintball.json
index 5dfb5b8954cc7..013e18a6a7282 100644
--- a/data/json/items/gun/paintball.json
+++ b/data/json/items/gun/paintball.json
@@ -1,6 +1,7 @@
[
{
"id": "paintballgun",
+ "looks_like": "hk_mp5",
"type": "GUN",
"reload_noise_volume": 6,
"symbol": "(",
@@ -9,7 +10,7 @@
"description": "A fairly harmless gun that shoots small paintballs.",
"price": 8000,
"material": [ "aluminum", "plastic" ],
- "flags": "NEVER_JAMS",
+ "flags": [ "NEVER_JAMS", "NON-FOULING" ],
"skill": "smg",
"ammo": "paintball",
"weight": "1600 g",
diff --git a/data/json/items/gun/shot.json b/data/json/items/gun/shot.json
index 4321239ab327c..5ddab3e6d5176 100644
--- a/data/json/items/gun/shot.json
+++ b/data/json/items/gun/shot.json
@@ -2,6 +2,7 @@
{
"id": "abzats",
"copy-from": "shotgun_base",
+ "looks_like": "remington_870",
"type": "GUN",
"name": "heavy automatic shotgun",
"description": "Modified from the massive M2 Browning, this heavy machine gun has been re-chambered and re-bored for shotgun shells, and completely redesigned to be wielded unmounted by one user.",
@@ -15,7 +16,7 @@
"color": "dark_gray",
"dispersion": 450,
"durability": 6,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"loudness": 25,
"reload": 400,
"barrel_length": 3,
@@ -23,6 +24,7 @@
},
{
"id": "ashot",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "12 gauge pistol",
@@ -56,6 +58,7 @@
{
"id": "bigun",
"copy-from": "shotgun_base",
+ "looks_like": "remington_870",
"type": "GUN",
"name": "manual autoshotgun",
"//": "Hard to value this thing, but considering what a $2000 pricepoint puts it on par with, that is too much.",
@@ -68,7 +71,7 @@
"material": [ "aluminum", "steel" ],
"dispersion": 855,
"durability": 6,
- "burst": 6,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"clip_size": 6,
"reload": 110,
"valid_mod_locations": [
@@ -85,6 +88,7 @@
{
"id": "ksg",
"copy-from": "shotgun_pump",
+ "looks_like": "remington_870",
"type": "GUN",
"name": "Kel-Tec KSG",
"name_plural": "Kel-Tec KSG",
@@ -117,6 +121,7 @@
{
"id": "l_def_12",
"copy-from": "shotgun_pump",
+ "looks_like": "remington_870",
"type": "GUN",
"name": "L12 Defender",
"name_plural": "L12 Defender",
@@ -148,6 +153,7 @@
{
"id": "m1014",
"copy-from": "shotgun_base",
+ "looks_like": "remington_870",
"type": "GUN",
"name": "M1014 shotgun",
"name_plural": "M1014 shotguns",
@@ -168,6 +174,7 @@
{
"id": "mossberg_500",
"copy-from": "shotgun_pump",
+ "looks_like": "remington_870",
"type": "GUN",
"name": "Mossberg 500",
"name_plural": "Mossberg 500",
@@ -187,6 +194,7 @@
{
"id": "pipe_double_shotgun",
"copy-from": "pipe_shotgun",
+ "looks_like": "remington_870",
"type": "GUN",
"name": "double-barrel pipe shotgun",
"description": "A home-made double-barreled shotgun. It is simply two pipes attached to a stock, with a pair of hammers to strike the two rounds it holds.",
@@ -208,6 +216,7 @@
{
"id": "pipe_shotgun",
"copy-from": "shotgun_base",
+ "looks_like": "remington_870",
"type": "GUN",
"name": "pipe shotgun",
"description": "A home-made shotgun. It is simply a pipe attached to a stock, with a hammer to strike the single round it holds.",
@@ -239,6 +248,7 @@
{
"id": "remington_870",
"copy-from": "shotgun_pump",
+ "//": "Tileset whitelist for shotguns.",
"type": "GUN",
"name": "Remington 870",
"name_plural": "Remington 870",
@@ -258,6 +268,7 @@
{
"id": "revolver_shotgun",
"copy-from": "shotgun_base",
+ "looks_like": "remington_870",
"type": "GUN",
"name": "shotgun revolver",
"description": "A shotgun modified to use a revolver cylinder mechanism, it can hold 6 cartridges.",
@@ -287,6 +298,7 @@
{
"id": "saiga_12",
"copy-from": "shotgun_base",
+ "looks_like": "remington_870",
"type": "GUN",
"name": "Saiga-12",
"description": "The Saiga-12 is a semi-automatic shotgun designed on the same Kalashnikov pattern as the AK47 rifle. It reloads with a magazine, rather than one shell at a time like most shotguns.",
@@ -328,6 +340,7 @@
{
"id": "shotgun_s",
"copy-from": "shotgun_base",
+ "looks_like": "remington_870",
"type": "GUN",
"name": "single barrel shotgun",
"description": "An old shotgun, possibly antique. It is little more than a barrel, a wood stock, and a hammer to strike the cartridge. Its simple design keeps it both light and accurate.",
@@ -358,6 +371,7 @@
{
"id": "surv_levershotgun",
"copy-from": "shotgun_base",
+ "looks_like": "remington_870",
"type": "GUN",
"name": "handmade lever shotgun",
"description": "A well designed homemade lever-action shotgun. With a 8 round magazine, this is one of the better homemade weapons.",
diff --git a/data/json/items/gun/signal_flare.json b/data/json/items/gun/signal_flare.json
index 9c87aa5321cf6..6a42afd0be5b2 100644
--- a/data/json/items/gun/signal_flare.json
+++ b/data/json/items/gun/signal_flare.json
@@ -1,6 +1,7 @@
[
{
"id": "flaregun",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "flaregun",
diff --git a/data/json/items/gun/ups.json b/data/json/items/gun/ups.json
index 31ce0f1b34b01..dac0f19ddc8b5 100644
--- a/data/json/items/gun/ups.json
+++ b/data/json/items/gun/ups.json
@@ -1,6 +1,7 @@
[
{
"id": "emp_gun",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "XM34 EMP projector",
@@ -19,7 +20,7 @@
"pierce": 20,
"dispersion": 10,
"durability": 10,
- "burst": 3,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"loudness": 23,
"ups_charges": 70,
"reload": 0,
@@ -34,10 +35,11 @@
[ "underbarrel", 1 ]
],
"ammo_effects": [ "DRAW_LASER_BEAM", "EMP" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD" ]
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "NON-FOULING" ]
},
{
"id": "gatling_mech_laser",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 20,
"name": "CMES laser cannon",
@@ -61,10 +63,20 @@
"reload": 0,
"modes": [ [ "DEFAULT", "3 rd.", 3 ], [ "BURST", "5 rd.", 5 ], [ "AUTO", "high auto", 15 ] ],
"ammo_effects": [ "LASER", "INCENDIARY" ],
- "flags": [ "NO_UNLOAD", "NEVER_JAMS", "MECH_WEAPON", "NO_UNWIELD", "NO_SALVAGE", "NO_REPAIR", "UNBREAKABLE_MELEE" ]
+ "flags": [
+ "NO_UNLOAD",
+ "NEVER_JAMS",
+ "MECH_WEAPON",
+ "NO_UNWIELD",
+ "NO_SALVAGE",
+ "NO_REPAIR",
+ "UNBREAKABLE_MELEE",
+ "NON-FOULING"
+ ]
},
{
"id": "recon_mech_laser",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 2,
"name": "RMES marksman system",
@@ -91,6 +103,7 @@
},
{
"id": "laser_cannon",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "handheld laser cannon",
@@ -123,10 +136,11 @@
[ "underbarrel mount", 1 ]
],
"ammo_effects": [ "LASER", "INCENDIARY" ],
- "flags": [ "NO_UNLOAD" ]
+ "flags": [ "NO_UNLOAD", "NON-FOULING" ]
},
{
"id": "laser_rifle",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"name": "A7 laser rifle",
@@ -145,7 +159,7 @@
"pierce": 15,
"dispersion": 10,
"durability": 8,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 4 ] ],
"loudness": 12,
"ups_charges": 40,
"reload": 0,
@@ -161,10 +175,11 @@
[ "underbarrel", 1 ]
],
"ammo_effects": [ "LASER", "INCENDIARY" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD" ]
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "NON-FOULING" ]
},
{
"id": "v29",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"name": "V29 laser pistol",
@@ -197,6 +212,6 @@
[ "underbarrel", 1 ]
],
"ammo_effects": [ "LASER", "INCENDIARY" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD" ]
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "NON-FOULING" ]
}
]
diff --git a/data/json/items/gunmod/barrel.json b/data/json/items/gunmod/barrel.json
index f0ed2bdeb4c12..86b6fe88fb2de 100644
--- a/data/json/items/gunmod/barrel.json
+++ b/data/json/items/gunmod/barrel.json
@@ -19,7 +19,7 @@
"id": "upstest",
"type": "GUNMOD",
"name": "upstest",
- "description": "Testmod for UPS drain on mods, this should never spawn, if you see this, it's a bug. 50x more UPS drain.",
+ "description": "Testmod for UPS drain on mods, this should never spawn, if you see this, it's a bug. 50x more UPS drain.",
"weight": "450 g",
"volume": "500 ml",
"price": 20000,
diff --git a/data/json/items/gunmod/laser_gunmods.json b/data/json/items/gunmod/laser_gunmods.json
index 074e0d1b19643..1d44d81c4b3c2 100644
--- a/data/json/items/gunmod/laser_gunmods.json
+++ b/data/json/items/gunmod/laser_gunmods.json
@@ -21,7 +21,7 @@
"id": "focusing_lens",
"type": "GUNMOD",
"name": "focusing lens",
- "description": "A set of optics to concentrate the laser beam on a smaller focus point. This increases range and damage output, but complicates targeting.",
+ "description": "A set of optics to concentrate the laser beam on a smaller focus point. This increases range and damage output, but complicates targeting.",
"weight": "380 g",
"volume": "250 ml",
"price": 84000,
@@ -58,7 +58,7 @@
"id": "effective_emitter",
"type": "GUNMOD",
"name": "effective emitter",
- "description": "A set of electronics to optimize emitter workcycle and increase overall energy efficiency. Decreases power consumption.",
+ "description": "A set of electronics to optimize emitter workcycle and increase overall energy efficiency. Decreases power consumption.",
"weight": "380 g",
"volume": "250 ml",
"integral_volume": 0,
@@ -75,7 +75,7 @@
"id": "high_density_capacitor",
"type": "GUNMOD",
"name": "high density capacitor",
- "description": "A capacitor with a higher energy density increases range and damage; at the cost of a markedly increased power consumption.",
+ "description": "A capacitor with a higher energy density increases range and damage; at the cost of a markedly increased power consumption.",
"weight": "380 g",
"volume": "250 ml",
"integral_volume": 0,
diff --git a/data/json/items/gunmod/mechanism.json b/data/json/items/gunmod/mechanism.json
index 4449567615b9a..ec40ec110a2a9 100644
--- a/data/json/items/gunmod/mechanism.json
+++ b/data/json/items/gunmod/mechanism.json
@@ -37,7 +37,7 @@
"//install_time": "5 m",
"dispersion_modifier": 10,
"//durability_modifier": -1,
- "mode_modifier": [ [ "AUTO", "auto", 13 ] ],
+ "mode_modifier": [ [ "AUTO", "auto", 4 ] ],
"min_skills": [ [ "rifle", 2 ] ]
},
{
diff --git a/data/json/items/gunmod/muzzle.json b/data/json/items/gunmod/muzzle.json
index ece02bb90238a..1acbf9774ef76 100644
--- a/data/json/items/gunmod/muzzle.json
+++ b/data/json/items/gunmod/muzzle.json
@@ -36,6 +36,14 @@
"loudness_modifier": 14,
"min_skills": [ [ "weapon", 2 ] ]
},
+ {
+ "id": "muzzle_brake_mod",
+ "copy-from": "muzzle_brake",
+ "type": "GUNMOD",
+ "name": "modified muzzle brake",
+ "description": "A muzzle brake redirects exhaust gases to compensate for muzzle climb, improving recoil but increasing bulk, noise, and reducing accuracy slightly. This one was modified and customized to mount on pretty much any firearm other than launchers, if you so want.",
+ "mod_targets": [ "pistol", "smg", "rifle", "shotgun" ]
+ },
{
"id": "crafted_suppressor",
"type": "GUNMOD",
@@ -121,9 +129,10 @@
"id": "shot_suppressor",
"type": "GUNMOD",
"name": "shotgun suppressor",
- "description": "A suppressor designed to work with shotguns. It's a lot more complex than a suppressor for a pistol or rifle.",
- "weight": "600 g",
- "volume": "1 L",
+ "//": "SilencerCo Salvo 12",
+ "description": "A large suppressor designed to work with shotguns. It's a lot more complex than a suppressor for a pistol or rifle.",
+ "weight": "968 g",
+ "volume": "1286 ml",
"price": 140000,
"to_hit": 1,
"bashing": 3,
@@ -143,10 +152,10 @@
"id": "suppressor",
"type": "GUNMOD",
"name": "suppressor",
- "//": "SilencerCo Saker ASR 556K",
+ "//": "SilencerCo Hybrid 46",
"description": "A suppressor reduces the amount of noise and muzzle flash generated by the report of a firearm. Gunfire is extremely loud and can damage your hearing without protection; a suppressor will bring the loudness of a report down to generally safe levels.",
- "weight": "402 g",
- "volume": "156 ml",
+ "weight": "490 g",
+ "volume": "247 ml",
"price": 77000,
"to_hit": 1,
"bashing": 3,
@@ -183,8 +192,9 @@
"type": "GUNMOD",
"name": "compact suppressor",
"description": "A compact suppressor designed for pistols and best used with smaller calibers.",
- "weight": "140 g",
- "volume": "250 ml",
+ "weight": "303 g",
+ "//": "SilencerCo Omega 45K",
+ "volume": "179 ml",
"price": 78000,
"material": "steel",
"symbol": ":",
diff --git a/data/json/items/gunmod/rail.json b/data/json/items/gunmod/rail.json
index 565a3bdf91463..7d4bdb2f6fa34 100644
--- a/data/json/items/gunmod/rail.json
+++ b/data/json/items/gunmod/rail.json
@@ -22,8 +22,16 @@
"clip_size": 1
},
"dispersion_modifier": 60,
- "min_skills": [ [ "weapon", 2 ], [ "archery", 1 ] ],
- "flags": [ "STR_RELOAD" ]
+ "min_skills": [ [ "weapon", 2 ], [ "rifle", 1 ] ],
+ "flags": [ "STR_RELOAD", "NON-FOULING" ]
+ },
+ {
+ "id": "gun_crossbow_mod",
+ "copy-from": "gun_crossbow",
+ "type": "GUNMOD",
+ "name": "modified rail-mounted crossbow",
+ "description": "A kit to attach a pair of crossbow arms and a firing rail to the barrel of a long firearm. It allows crossbow bolts to be fired. This one was modified and customized to mount on pretty much any weapon other than pistols and SMGs, if you so want.",
+ "mod_targets": [ "rifle", "shotgun", "launcher", "crossbow" ]
},
{
"id": "offset_sights",
@@ -38,6 +46,14 @@
"proportional": { "sight_dispersion": 1.25 },
"delete": { "flags": [ "DISABLE_SIGHTS" ] }
},
+ {
+ "id": "offset_sights_mod",
+ "copy-from": "offset_sights",
+ "type": "GUNMOD",
+ "name": { "str": "modified offset iron sights", "str_pl": "modified offset iron sights" },
+ "description": "An alternative set of iron sights mounted at 45° for use when a scope or other modification prevents use of the primary sights. This one was modified and customized to mount on pretty much any weapon, if you so want.",
+ "mod_targets": [ "pistol", "smg", "rifle", "shotgun", "launcher", "crossbow" ]
+ },
{
"id": "offset_sight_rail",
"type": "GUNMOD",
@@ -54,6 +70,14 @@
"min_skills": [ [ "gun", 1 ] ],
"add_mod": [ [ "sights", 1 ] ]
},
+ {
+ "id": "offset_sight_rail_mod",
+ "copy-from": "offset_sight_rail",
+ "type": "GUNMOD",
+ "name": "modified offset sight rail",
+ "description": "An additional rail set at 45° for attaching a secondary optic. This one was modified and customized to mount on pretty much any weapon, if you so want.",
+ "mod_targets": [ "pistol", "smg", "rifle", "shotgun", "launcher", "crossbow" ]
+ },
{
"id": "rail_laser_sight",
"type": "GUNMOD",
@@ -90,6 +114,14 @@
"handling_modifier": 6,
"min_skills": [ [ "weapon", 6 ] ]
},
+ {
+ "id": "stabilizer_mod",
+ "copy-from": "stabilizer",
+ "type": "GUNMOD",
+ "name": "modified gyroscopic stabilizer",
+ "description": "An advanced unit that straps onto the side of your firearm and reduces vibration, greatly reducing recoil and slightly increasing accuracy. This one was modified and customized to mount on pretty much any weapon other than pistols, if you so want.",
+ "mod_targets": [ "smg", "rifle", "shotgun", "launcher", "crossbow" ]
+ },
{
"id": "lead_stabilizer",
"copy-from": "stabilizer",
diff --git a/data/json/items/gunmod/sights.json b/data/json/items/gunmod/sights.json
index af7142cfbfc28..908dc6a548d9a 100644
--- a/data/json/items/gunmod/sights.json
+++ b/data/json/items/gunmod/sights.json
@@ -50,7 +50,8 @@
"mod_targets": [ "bow" ],
"sight_dispersion": 1,
"aim_speed": 2,
- "min_skills": [ [ "archery", 3 ] ]
+ "min_skills": [ [ "archery", 3 ] ],
+ "flags": [ "ZOOM" ]
},
{
"id": "holo_sight",
@@ -104,7 +105,7 @@
"symbol": ":",
"color": "dark_gray",
"location": "sights",
- "mod_targets": [ "pistol", "crossbow" ],
+ "mod_targets": [ "pistol", "smg" ],
"sight_dispersion": 8,
"aim_speed": 2,
"min_skills": [ [ "weapon", 2 ], [ "gun", 4 ] ],
@@ -149,6 +150,14 @@
"min_skills": [ [ "weapon", 2 ], [ "gun", 4 ] ],
"flags": [ "DISABLE_SIGHTS", "ZOOM" ]
},
+ {
+ "id": "rifle_scope_mod",
+ "copy-from": "rifle_scope",
+ "type": "GUNMOD",
+ "name": "modified rifle scope",
+ "description": "A 3-18x44 rifle scope. It is adjustable for windage and elevation in 1/10th mrad increments and is remarkably small and light for its magnification. This one was modified and customized to mount on pretty much any weapon other than pistols and SMGs, if you so want.",
+ "mod_targets": [ "rifle", "shotgun", "launcher", "crossbow" ]
+ },
{
"id": "acog_scope",
"type": "GUNMOD",
@@ -168,6 +177,14 @@
"min_skills": [ [ "weapon", 2 ], [ "gun", 4 ] ],
"flags": [ "DISABLE_SIGHTS", "ZOOM" ]
},
+ {
+ "id": "acog_scope_mod",
+ "copy-from": "acog_scope",
+ "type": "GUNMOD",
+ "name": "modified ACOG scope",
+ "description": "A 4x32 TA01 Advanced Combat Optical Gunsight with a tritium illuminated crosshair. This one was modified and customized to mount on pretty much any weapon other than pistols, if you so want.",
+ "mod_targets": [ "smg", "rifle", "shotgun", "launcher", "crossbow" ]
+ },
{
"id": "riv_scope",
"copy-from": "rifle_scope",
@@ -185,7 +202,7 @@
"id": "tele_sight",
"type": "GUNMOD",
"name": "telescopic sight",
- "description": "A simple telescopic sight, essentially a small telescope with crosshairs. Increases weight but improves accuracy.",
+ "description": "A simple hand-crafted telescopic sight, essentially a small telescope with crosshairs. Not as good as the ones made before the cataclysm. Increases weight but improves accuracy.",
"weight": "300 g",
"volume": "250 ml",
"price": 30000,
@@ -193,14 +210,14 @@
"symbol": ":",
"color": "dark_gray",
"location": "sights",
- "mod_targets": [ "smg", "rifle", "shotgun", "crossbow", "pistol", "launcher" ],
+ "mod_targets": [ "rifle", "shotgun", "crossbow", "launcher" ],
"//install_time": "30 m",
"consume_chance": 1000,
"consume_divisor": 505,
"sight_dispersion": 15,
"aim_speed": 1,
"min_skills": [ [ "weapon", 2 ], [ "gun", 3 ] ],
- "flags": [ "DISABLE_SIGHTS", "CONSUMABLE" ]
+ "flags": [ "DISABLE_SIGHTS", "CONSUMABLE", "ZOOM" ]
},
{
"id": "tele_sight_pistol",
@@ -214,13 +231,13 @@
"symbol": ":",
"color": "dark_gray",
"location": "sights",
- "mod_targets": [ "pistol", "crossbow" ],
+ "mod_targets": [ "pistol", "smg" ],
"sight_dispersion": 20,
"aim_speed": 1,
"consume_chance": 1000,
"consume_divisor": 85,
"min_skills": [ [ "weapon", 2 ], [ "gun", 3 ] ],
- "flags": [ "DISABLE_SIGHTS", "CONSUMABLE" ]
+ "flags": [ "DISABLE_SIGHTS", "CONSUMABLE", "ZOOM" ]
},
{
"id": "lead_red_dot_sight",
diff --git a/data/json/items/gunmod/underbarrel.json b/data/json/items/gunmod/underbarrel.json
index 07fefb2addb72..d334be791a2ea 100644
--- a/data/json/items/gunmod/underbarrel.json
+++ b/data/json/items/gunmod/underbarrel.json
@@ -11,13 +11,12 @@
"symbol": ":",
"color": "light_red",
"location": "underbarrel",
- "mod_targets": [ "rifle", "shotgun", "smg", "crossbow" ],
+ "mod_targets": [ "rifle", "shotgun", "smg", "crossbow", "launcher" ],
"gun_data": { "ammo": "flammable", "skill": "launcher", "dispersion": 300, "durability": 10 },
"magazine_well": 1,
"magazines": [ [ "flammable", [ "aux_pressurized_tank" ] ] ],
- "dispersion_modifier": 30,
"min_skills": [ [ "weapon", 2 ], [ "launcher", 1 ] ],
- "flags": [ "FIRE_100" ]
+ "flags": [ "FIRE_100", "PUMP_RAIL_COMPATIBLE", "NON-FOULING" ]
},
{
"id": "bipod",
@@ -38,6 +37,15 @@
"min_skills": [ [ "weapon", 2 ] ],
"flags": [ "BIPOD", "SLOW_WIELD" ]
},
+ {
+ "id": "bipod_mod",
+ "copy-from": "bipod",
+ "type": "GUNMOD",
+ "name": "modified bipod",
+ "description": "Bipods are commonly used on rifles and machine guns to provide a forward rest and reduce motion. Although they greatly improve handling of recoil they are usable only on certain surfaces and are slow to equip. This one was modified and customized to mount on pretty much any weapon, if you so want.",
+ "mod_targets": [ "pistol", "smg", "rifle", "shotgun", "launcher", "crossbow" ],
+ "extend": { "flags": [ "PUMP_RAIL_COMPATIBLE" ] }
+ },
{
"id": "combination_gun_shotgun",
"type": "GUNMOD",
@@ -53,7 +61,6 @@
"location": "underbarrel",
"mod_targets": [ "rifle" ],
"gun_data": { "ammo": "shot", "skill": "shotgun", "range": 2, "dispersion": 345, "durability": 10, "clip_size": 2 },
- "dispersion_modifier": 15,
"flags": [ "IRREMOVABLE", "RELOAD_ONE", "RELOAD_EJECT" ]
},
{
@@ -91,6 +98,14 @@
"min_skills": [ [ "weapon", 2 ] ],
"flags": [ "PUMP_RAIL_COMPATIBLE" ]
},
+ {
+ "id": "grip_mod",
+ "copy-from": "grip",
+ "type": "GUNMOD",
+ "name": "modified forward grip",
+ "description": "A grip placed forward on the barrel allows for greater control. Not as effective as a bipod but usable under all conditions. This one was modified and customized to mount on pretty much any weapon, if you so want.",
+ "mod_targets": [ "pistol", "smg", "rifle", "shotgun", "launcher", "crossbow" ]
+ },
{
"id": "inter_bayonet",
"type": "GUNMOD",
@@ -106,7 +121,6 @@
"color": "light_gray",
"location": "underbarrel",
"mod_targets": [ "shotgun", "rifle" ],
- "dispersion_modifier": 10,
"mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE", "REACH_ATTACK" ] ] ],
"qualities": [ [ "CUT", 1 ], [ "COOK", 1 ], [ "BUTCHER", -18 ] ],
"flags": [ "SLOW_WIELD", "IRREMOVABLE", "STAB" ]
@@ -193,10 +207,17 @@
"location": "underbarrel",
"mod_targets": [ "rifle", "crossbow" ],
"gun_data": { "ammo": "40mm", "skill": "launcher", "dispersion": 300, "durability": 10, "clip_size": 1 },
- "dispersion_modifier": 30,
"min_skills": [ [ "weapon", 2 ], [ "launcher", 1 ] ],
"flags": [ "NEVER_JAMS", "RELOAD_EJECT" ]
},
+ {
+ "id": "m203_mod",
+ "copy-from": "m203",
+ "type": "GUNMOD",
+ "name": "modified M203",
+ "description": "The M203 was originally designed for use with M16 variants but today can be attached to almost any rifle. It allows a single 40mm grenade to be loaded and fired. This one was modified and customized to mount on pretty much any weapon other than pistols and pump-action guns, if you so want.",
+ "mod_targets": [ "smg", "rifle", "shotgun", "launcher", "crossbow" ]
+ },
{
"id": "m320_mod",
"type": "GUNMOD",
@@ -212,10 +233,17 @@
"location": "underbarrel",
"mod_targets": [ "rifle", "crossbow" ],
"gun_data": { "ammo": "40mm", "skill": "launcher", "dispersion": 270, "durability": 10, "clip_size": 1 },
- "dispersion_modifier": 60,
"min_skills": [ [ "weapon", 2 ], [ "launcher", 1 ] ],
"flags": [ "NEVER_JAMS", "RELOAD_EJECT" ]
},
+ {
+ "id": "m320_mod_mod",
+ "copy-from": "m320_mod",
+ "type": "GUNMOD",
+ "name": "modified M320 GLM",
+ "description": "The M320 Grenade Launcher Module offers the functionality of larger launchers in a very small package at the cost of decreased accuracy. It can be either attached to a rifle or combined with a buttstock for stand alone use. This one was modified and customized to mount on pretty much any weapon other than pistols and pump-action guns, if you so want.",
+ "mod_targets": [ "smg", "rifle", "shotgun", "launcher", "crossbow" ]
+ },
{
"id": "makeshift_bayonet",
"copy-from": "spike",
@@ -224,12 +252,12 @@
"description": "A makeshift version of a bayonet that consists of a mere spike with some string.",
"gunmod_data": {
"location": "underbarrel",
- "mod_targets": [ "shotgun", "rifle", "smg", "crossbow" ],
- "dispersion_modifier": 10,
+ "mod_targets": [ "shotgun", "rifle", "smg", "launcher", "crossbow" ],
"mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE", "REACH_ATTACK" ] ] ]
},
"min_skills": [ [ "weapon", 2 ], [ "melee", 1 ] ],
- "qualities": [ [ "COOK", 1 ] ]
+ "qualities": [ [ "COOK", 1 ] ],
+ "extend": { "flags": [ "PUMP_RAIL_COMPATIBLE" ] }
},
{
"id": "masterkey",
@@ -245,15 +273,22 @@
"location": "underbarrel",
"mod_targets": [ "rifle", "crossbow" ],
"gun_data": { "ammo": "shot", "skill": "shotgun", "dispersion": 330, "durability": 10, "clip_size": 4 },
- "dispersion_modifier": 15,
"min_skills": [ [ "weapon", 2 ], [ "shotgun", 1 ] ],
"flags": [ "RELOAD_ONE" ]
},
+ {
+ "id": "masterkey_mod",
+ "copy-from": "masterkey",
+ "type": "GUNMOD",
+ "name": "modified masterkey shotgun",
+ "description": "A minimalist pump action shotgun, which can be mounted under the barrel of many rifles. It allows a total of four shotgun shells to be loaded and fired. This one was modified and customized to mount on pretty much any weapon other than pistols and pump-action guns, if you so want.",
+ "mod_targets": [ "smg", "rifle", "shotgun", "launcher", "crossbow" ]
+ },
{
"id": "pipe_launcher40mm",
"type": "GUNMOD",
"name": "40mm pipe launcher",
- "description": "This is a home built launcher tube that can be attached to almost any rifle. It allows a single 40mm grenade to be loaded and fired.",
+ "description": "This is a home built launcher tube that can be attached to almost any weapon except handguns. It allows a single 40mm grenade to be loaded and fired.",
"weight": "2080 g",
"volume": "750 ml",
"price": 25000,
@@ -261,9 +296,8 @@
"symbol": ":",
"color": "light_gray",
"location": "underbarrel",
- "mod_targets": [ "rifle", "crossbow" ],
+ "mod_targets": [ "smg", "rifle", "shotgun", "launcher", "crossbow" ],
"gun_data": { "ammo": "40mm", "skill": "launcher", "dispersion": 450, "durability": 10, "clip_size": 1 },
- "dispersion_modifier": 60,
"min_skills": [ [ "weapon", 2 ], [ "launcher", 1 ] ]
},
{
@@ -281,7 +315,6 @@
"color": "light_gray",
"location": "underbarrel",
"mod_targets": [ "pistol" ],
- "dispersion_modifier": 15,
"min_skills": [ [ "weapon", 2 ], [ "melee", 1 ] ],
"qualities": [ [ "CUT", 1 ], [ "BUTCHER", 15 ] ],
"flags": [ "STAB" ]
@@ -300,12 +333,19 @@
"location": "underbarrel",
"mod_targets": [ "rifle", "crossbow" ],
"gun_data": { "ammo": "20x66mm", "skill": "shotgun", "dispersion": 320, "durability": 9, "reload": 125 },
- "dispersion_modifier": 30,
"min_skills": [ [ "weapon", 2 ], [ "shotgun", 2 ] ],
"magazine_well": 1,
"magazines": [ [ "20x66mm", [ "20x66_10_mag" ] ] ],
"flags": [ "WATERPROOF_GUN", "NEVER_JAMS" ]
},
+ {
+ "id": "rm121aux_mod",
+ "copy-from": "rm121aux",
+ "type": "GUNMOD",
+ "name": "modified RM121 aux shotgun",
+ "description": "The Rivtech RM121 auxiliary weapon system is a magazine-fed semi-automatic caseless shotgun, which can be mounted under the barrel of many rifles. Accepts RMSA10 box magazines. This one was modified and customized to mount on pretty much any weapon other than pistols, if you so want.",
+ "mod_targets": [ "smg", "rifle", "shotgun", "launcher", "crossbow" ]
+ },
{
"id": "u_shotgun",
"type": "GUNMOD",
@@ -320,10 +360,17 @@
"location": "underbarrel",
"mod_targets": [ "rifle", "crossbow" ],
"gun_data": { "ammo": "shot", "skill": "shotgun", "dispersion": 375, "durability": 10, "clip_size": 2 },
- "dispersion_modifier": 30,
"min_skills": [ [ "weapon", 2 ], [ "shotgun", 1 ] ],
"flags": [ "RELOAD_ONE" ]
},
+ {
+ "id": "u_shotgun_mod",
+ "copy-from": "u_shotgun",
+ "type": "GUNMOD",
+ "name": "modified underslung shotgun",
+ "description": "A short shotgun with 2 barrels, which can be mounted under the barrel of many rifles. It allows two shotgun shells to be loaded and fired. This one was modified and customized to mount on pretty much any weapon other than pistols, if you so want.",
+ "mod_targets": [ "smg", "rifle", "shotgun", "launcher", "crossbow" ]
+ },
{
"id": "lead_laser_sight",
"copy-from": "laser_sight",
@@ -366,7 +413,6 @@
"weight": "0 g",
"volume": 0,
"price": 0,
- "dispersion_modifier": 0,
"flags": [ "RELOAD_ONE", "IRREMOVABLE" ]
},
{
@@ -379,7 +425,6 @@
"weight": "0 g",
"volume": 0,
"price": 0,
- "dispersion_modifier": 0,
"flags": [ "NEVER_JAMS", "RELOAD_EJECT", "IRREMOVABLE" ]
}
]
diff --git a/data/json/items/items_holiday.json b/data/json/items/items_holiday.json
index 1e394d6ebfbc2..84507be637bd9 100644
--- a/data/json/items/items_holiday.json
+++ b/data/json/items/items_holiday.json
@@ -29,7 +29,7 @@
"type": "TOOL",
"name": "spooky jack o'lantern",
"name_plural": "jack o'lanterns",
- "description": "There is a thick LED candle inside the pumpkin face. It doesn't provide very much light, but it can burn for quite a long time. This candle is lit. The face shifts.",
+ "description": "There is a thick LED candle inside the pumpkin face. It doesn't provide very much light, but it can burn for quite a long time. This candle is lit. The face shifts.",
"weight": "113 g",
"volume": "3964 ml",
"price": 0,
@@ -46,8 +46,7 @@
"type": "transform",
"target": "plastic_jack_o_lantern",
"msg": "The candle winks out inside the lantern.",
- "menu_text": "Extinguish",
- "revert_to": "plastic_jack_o_lantern"
+ "menu_text": "Extinguish"
},
"flags": [ "LIGHT_6", "TRADER_AVOID" ]
}
diff --git a/data/json/items/magazine/308.json b/data/json/items/magazine/308.json
index 00f371e13def4..b7115fdcffa9e 100644
--- a/data/json/items/magazine/308.json
+++ b/data/json/items/magazine/308.json
@@ -48,7 +48,7 @@
"id": "g3bigmag",
"type": "MAGAZINE",
"name": "H&K G3 drum magazine",
- "description": "An 50-round drum magazine for the H&K G3 rifle.",
+ "description": "A 50-round drum magazine for the H&K G3 rifle.",
"weight": "650 g",
"volume": "1 L",
"price": 7900,
@@ -118,7 +118,7 @@
"id": "scarhbigmag",
"type": "MAGAZINE",
"name": "FN SCAR-H drum magazine",
- "description": "An 50-round drum magazine for the FN SCAR-H rifle.",
+ "description": "A 50-round drum magazine for the FN SCAR-H rifle.",
"weight": "400 g",
"volume": "1 L",
"price": 8900,
diff --git a/data/json/items/magazine/38.json b/data/json/items/magazine/38.json
index d69500f3231d6..6105f9b878c53 100644
--- a/data/json/items/magazine/38.json
+++ b/data/json/items/magazine/38.json
@@ -1,20 +1,4 @@
[
- {
- "id": "taurus38mag",
- "type": "MAGAZINE",
- "name": "Taurus .38 magazine",
- "description": "A compact steel box magazine for use with the Taurus Pro .38 pistol.",
- "weight": "80 g",
- "volume": "250 ml",
- "price": 3400,
- "material": "steel",
- "symbol": "#",
- "color": "light_gray",
- "ammo_type": "38",
- "capacity": 10,
- "reliability": 8,
- "flags": [ "MAG_COMPACT" ]
- },
{
"id": "38_speedloader",
"type": "MAGAZINE",
diff --git a/data/json/items/magazine/380.json b/data/json/items/magazine/380.json
index 7fa647be06f2e..6d84dc879511c 100644
--- a/data/json/items/magazine/380.json
+++ b/data/json/items/magazine/380.json
@@ -94,5 +94,21 @@
"capacity": 10,
"reliability": 8,
"flags": [ "MAG_COMPACT" ]
+ },
+ {
+ "id": "taurus_spectrum_mag",
+ "type": "MAGAZINE",
+ "name": "Taurus Spectrum magazine",
+ "description": "A compact, 6-round steel box magazine for use with the Taurus Spectrum.",
+ "weight": "65 g",
+ "volume": "74 ml",
+ "price": 3400,
+ "material": "steel",
+ "symbol": "#",
+ "color": "light_gray",
+ "ammo_type": "380",
+ "capacity": 6,
+ "reliability": 8,
+ "flags": [ "MAG_COMPACT" ]
}
]
diff --git a/data/json/items/magazine/weldgas.json b/data/json/items/magazine/weldgas.json
index 1d5aa9908e142..8fd3d58b8b750 100644
--- a/data/json/items/magazine/weldgas.json
+++ b/data/json/items/magazine/weldgas.json
@@ -32,22 +32,5 @@
"count": 240,
"reliability": 10,
"flags": [ "NO_UNLOAD", "NO_RELOAD" ]
- },
- {
- "id": "oxygen_cylinder",
- "type": "MAGAZINE",
- "name": "oxygen cylinder",
- "description": "A large steel cylinder used for storing pressurized gas. It is marked with a faded, but legible O2 symbol.",
- "weight": "12888 g",
- "volume": "2500 ml",
- "price": 13400,
- "material": "steel",
- "symbol": ";",
- "color": "blue",
- "ammo_type": "oxygen",
- "capacity": 300,
- "count": 300,
- "reliability": 10,
- "flags": [ "NO_UNLOAD", "NO_RELOAD" ]
}
]
diff --git a/data/json/items/melee.json b/data/json/items/melee.json
index 053a89fae488c..67cc757dc1b6f 100644
--- a/data/json/items/melee.json
+++ b/data/json/items/melee.json
@@ -68,22 +68,6 @@
"category": "weapons",
"qualities": [ [ "AXE", 2 ], [ "CUT", 1 ], [ "HAMMER", 2 ], [ "HAMMER_FINE", 1 ], [ "BUTCHER", 16 ] ]
},
- {
- "type": "GENERIC",
- "id": "rock",
- "symbol": "*",
- "color": "light_gray",
- "name": "rock",
- "description": "A rock the size of a baseball. Makes a decent melee weapon, and is also good for throwing at enemies.",
- "category": "spare_parts",
- "material": "stone",
- "flags": "TRADER_AVOID",
- "weight": "657 g",
- "volume": "250 ml",
- "bashing": 7,
- "to_hit": -2,
- "qualities": [ [ "HAMMER", 1 ] ]
- },
{
"type": "GENERIC",
"id": "sharp_rock",
diff --git a/data/json/items/melee/bludgeons.json b/data/json/items/melee/bludgeons.json
index 5214e80a08baa..e40977b669065 100644
--- a/data/json/items/melee/bludgeons.json
+++ b/data/json/items/melee/bludgeons.json
@@ -8,7 +8,7 @@
"color": "brown",
"symbol": "/",
"material": [ "wood", "steel" ],
- "flags": "NONCONDUCTIVE",
+ "flags": [ "NONCONDUCTIVE", "ALWAYS_TWOHAND" ],
"techniques": [ "WBLOCK_1", "BRUTAL", "WIDE", "SWEEP" ],
"volume": "2500 ml",
"bashing": 40,
@@ -642,7 +642,7 @@
"type": "GENERIC",
"id": "mjolnir",
"name": "Mjölnir",
- "description": "A large hammer, forged from the heart of a dying star. It bears the inscription:\n\nWhosoever holds this hammer,\nIf he be worthy,\nShall possess the power to...\nCRUSH!'",
+ "description": "A large hammer, forged from the heart of a dying star. It bears the inscription:\n\nWhosoever holds this hammer,\nIf he be worthy,\nShall possess the power to…\nCRUSH!'",
"weight": "5443 g",
"color": "light_gray",
"symbol": "/",
diff --git a/data/json/items/melee/spears_and_polearms.json b/data/json/items/melee/spears_and_polearms.json
index aeb023ed32c86..ab84ca79b7891 100644
--- a/data/json/items/melee/spears_and_polearms.json
+++ b/data/json/items/melee/spears_and_polearms.json
@@ -39,7 +39,7 @@
"type": "TOOL",
"category": "weapons",
"name": "makeshift war scythe",
- "description": "This farming tool has been modified into an improvised weapon by rotating its blade 90 degrees, transforming it into a deadly giant blade on the end of a stick. However it's quite fragile.",
+ "description": "This farming tool has been modified into an improvised weapon by rotating its blade 90 degrees, transforming it into a deadly giant blade on the end of a stick. However it's quite fragile.",
"weight": "3013 g",
"volume": "3250 ml",
"price": 16000,
diff --git a/data/json/items/melee/swords_and_blades.json b/data/json/items/melee/swords_and_blades.json
index 7036d91aea17e..ea24d1bd9d857 100644
--- a/data/json/items/melee/swords_and_blades.json
+++ b/data/json/items/melee/swords_and_blades.json
@@ -100,7 +100,6 @@
"gunmod_data": {
"location": "underbarrel",
"mod_targets": [ "shotgun", "rifle", "smg", "crossbow" ],
- "dispersion_modifier": 10,
"mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE", "REACH_ATTACK" ] ] ]
},
"min_skills": [ [ "weapon", 2 ], [ "melee", 1 ] ],
@@ -109,6 +108,20 @@
"thrown_damage": [ { "damage_type": "stab", "amount": 14 } ],
"flags": [ "STAB", "DURABLE_MELEE", "SHEATH_KNIFE", "NPC_THROWN" ]
},
+ {
+ "id": "knife_combat_mod",
+ "copy-from": "knife_combat",
+ "type": "TOOL",
+ "name": "modified combat knife",
+ "name_plural": "modified combat knives",
+ "description": "This is a military combat knife. It is light and extremely sharp, and could be deadly in either the right hands or when attached as a bayonet. This one was modified and customized to mount on pretty much any weapon other than pistols, if you so want.",
+ "gunmod_data": {
+ "location": "underbarrel",
+ "mod_targets": [ "smg", "rifle", "shotgun", "launcher", "crossbow" ],
+ "mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE", "REACH_ATTACK" ] ] ]
+ },
+ "extend": { "flags": [ "PUMP_RAIL_COMPATIBLE" ] }
+ },
{
"id": "knife_hunting",
"type": "TOOL",
@@ -166,7 +179,6 @@
"gunmod_data": {
"location": "underbarrel",
"mod_targets": [ "shotgun", "rifle" ],
- "dispersion_modifier": 10,
"mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE", "REACH_ATTACK" ] ] ]
},
"min_skills": [ [ "weapon", 2 ], [ "melee", 1 ] ],
@@ -538,7 +550,7 @@
"symbol": "/",
"color": "light_gray",
"name": "estoc",
- "description": "This is a thin thrusting sword, a sort of predecessor to the rapier. It requires a larger baldric or scabbard, compared to smaller swords. It seems a bit too bendy.",
+ "description": "This is a thin thrusting sword, a sort of predecessor to the rapier. It requires a larger baldric or scabbard, compared to smaller swords. It seems a bit too bendy.",
"price": 13500,
"price_postapoc": 0,
"material": "budget_steel",
@@ -651,6 +663,7 @@
"type": "GENERIC",
"symbol": "/",
"color": "light_gray",
+ "looks_like": "arming_sword",
"name": "arming sword",
"description": "This is a dull, cheaply made replica of a classic medieval sword, just the right size to use one-handed.",
"price": 10000,
@@ -670,6 +683,7 @@
"type": "TOOL",
"symbol": "/",
"color": "light_gray",
+ "looks_like": "arming_sword",
"name": "arming sword",
"description": "This is a classic medieval sword, just the right size to use one-handed. This one doesn't seem to have been made right.",
"price": 100000,
@@ -781,7 +795,6 @@
"gunmod_data": {
"location": "underbarrel",
"mod_targets": [ "shotgun", "rifle", "crossbow", "launcher" ],
- "dispersion_modifier": 20,
"mode_modifier": [ [ "REACH", "bayonet", 2, [ "MELEE", "REACH_ATTACK" ] ] ]
},
"min_skills": [ [ "weapon", 2 ], [ "melee", 2 ] ],
@@ -789,6 +802,14 @@
"qualities": [ [ "CUT", 1 ], [ "COOK", 1 ], [ "BUTCHER", 7 ] ],
"flags": [ "DURABLE_MELEE", "SHEATH_SWORD" ]
},
+ {
+ "id": "sword_bayonet_mod",
+ "copy-from": "sword_bayonet",
+ "type": "TOOL",
+ "name": "modified sword bayonet",
+ "description": "A sword bayonet is a large slashing weapon that can be attached to the front of a firearm or crossbow converting it into a pike. This one was modified and customized to mount on pretty much any weapon other than pistols and SMGs, if you so want.",
+ "extend": { "flags": [ "PUMP_RAIL_COMPATIBLE" ] }
+ },
{
"id": "tanto",
"type": "TOOL",
@@ -1071,8 +1092,8 @@
"type": "GENERIC",
"symbol": "/",
"color": "light_gray",
- "name": "fencing epee",
- "description": "A weapon used for fencing, the most noble of all sports. The epee is the heaviest and stiffest of the fencing weapons, and therefore perhaps the most useful.",
+ "name": "fencing épée",
+ "description": "A weapon used for fencing, the most noble of all sports. The épée is the heaviest and stiffest of the fencing weapons, and therefore perhaps the most useful.",
"price": 2000,
"price_postapoc": 1000,
"material": "steel",
@@ -1090,7 +1111,7 @@
"symbol": "/",
"color": "light_gray",
"name": "fencing saber",
- "description": "A weapon used for fencing, the most noble of all sports. The fencing saber is marginally shorter than the foil and epee, but no less effective.",
+ "description": "A weapon used for fencing, the most noble of all sports. The fencing saber is marginally shorter than the foil and épée, but no less effective.",
"price": 2000,
"price_postapoc": 0,
"material": "steel",
@@ -1102,6 +1123,92 @@
"techniques": [ "PRECISE", "RAPID", "WBLOCK_2" ],
"flags": [ "STAB", "SHEATH_SWORD" ]
},
+ {
+ "id": "fencing_foil_sharpened",
+ "type": "GENERIC",
+ "copy-from": "fencing_foil",
+ "looks_like": "fencing_foil",
+ "name": "sharpened foil",
+ "description": "This once mostly harmless fencing foil has had its electrical plunger assembly removed and has been crudely sharpened to a point. Though it still lacks a cutting edge, it is now somewhat more lethal, yet still familiar to the practiced fencer.",
+ "relative": { "weight": -25, "cutting": 2 }
+ },
+ {
+ "id": "fencing_epee_sharpened",
+ "type": "GENERIC",
+ "copy-from": "fencing_epee",
+ "looks_like": "fencing_epee",
+ "name": "sharpened épée",
+ "description": "This once mostly harmless fencing épée has had its electrical plunger assembly removed and has been crudely sharpened to a point. Though it still lacks a cutting edge, it is now considerably more lethal, yet still familiar to the practiced fencer.",
+ "relative": { "weight": -35, "cutting": 5 }
+ },
+ {
+ "id": "fencing_sabre_sharpened",
+ "type": "GENERIC",
+ "copy-from": "fencing_sabre",
+ "looks_like": "fencing_sabre",
+ "name": "sharpened saber",
+ "description": "This once mostly harmless fencing saber has had its rounded tip snapped off and has been crudely sharpened to a point. Though it still lacks a cutting edge, it is now considerably more lethal, yet still familiar to the practiced fencer.",
+ "relative": { "weight": -10, "cutting": 5 }
+ },
+ {
+ "id": "shock_foil",
+ "type": "TOOL",
+ "copy-from": "fencing_foil_sharpened",
+ "name": "electrified foil",
+ "description": "The modifications made to this fencing foil may not be sporting, but they might give you an edge in this final competition. Extra effort has been made to insulate the grip and a high voltage stun gun has been attached to the guard, wired through the electronic scoring circuit to the tip. Thrusting the sharpened tip into a foe and activating the momentary switch will deliver a painful electric shock.",
+ "ammo": "battery",
+ "charges_per_use": 100,
+ "use_action": "TAZER",
+ "extend": { "flags": [ "NONCONDUCTIVE" ] },
+ "relative": { "volume": "250 ml", "weight": "151 g" },
+ "magazines": [
+ [
+ "battery",
+ [ "medium_battery_cell", "medium_plus_battery_cell", "medium_atomic_battery_cell", "medium_disposable_cell" ]
+ ]
+ ],
+ "magazine_well": 2
+ },
+ {
+ "id": "shock_epee",
+ "type": "TOOL",
+ "copy-from": "fencing_epee_sharpened",
+ "looks_like": "fencing_epee",
+ "name": "electrified épée",
+ "description": "The modifications made to this fencing épée may not be sporting, but they might give you an edge in this final competition. Extra effort has been made to insulate the grip and a high voltage stun gun has been attached to the guard, wired through the electronic scoring circuit to the tip. Thrusting the sharpened tip into a foe and activating the momentary switch will deliver a painful electric shock.",
+ "ammo": "battery",
+ "charges_per_use": 100,
+ "use_action": "TAZER",
+ "extend": { "flags": [ "NONCONDUCTIVE" ] },
+ "relative": { "volume": "250 ml", "weight": "151 g" },
+ "magazines": [
+ [
+ "battery",
+ [ "medium_battery_cell", "medium_plus_battery_cell", "medium_atomic_battery_cell", "medium_disposable_cell" ]
+ ]
+ ],
+ "magazine_well": 2
+ },
+ {
+ "id": "shock_sabre",
+ "type": "TOOL",
+ "copy-from": "fencing_sabre_sharpened",
+ "looks_like": "fencing_sabre",
+ "name": "electrified saber",
+ "description": "The modifications made to this fencing saber may not be sporting, but they might give you an edge in this final competition. Extra effort has been made to insulate the grip and a high voltage stun gun has been attached to the guard, wired to the tip along the saber's groove. Thrusting the sharpened tip into a foe and activating the momentary switch will deliver a painful electric shock.",
+ "ammo": "battery",
+ "charges_per_use": 100,
+ "use_action": "TAZER",
+ "extend": { "flags": [ "NONCONDUCTIVE" ] },
+ "relative": { "volume": "250 ml", "weight": "151 g" },
+ "magazines": [
+ [
+ "battery",
+ [ "medium_battery_cell", "medium_plus_battery_cell", "medium_atomic_battery_cell", "medium_disposable_cell" ]
+ ]
+ ],
+ "magazine_well": 2
+ },
{
"id": "hollow_cane",
"type": "GENERIC",
diff --git a/data/json/items/migration.json b/data/json/items/migration.json
index 28d45850b2ddf..c0a79915b0c58 100644
--- a/data/json/items/migration.json
+++ b/data/json/items/migration.json
@@ -713,5 +713,15 @@
"id": "tool_black_powder_bomb",
"type": "MIGRATION",
"replace": "can_bomb"
+ },
+ {
+ "id": "taurus_38",
+ "type": "MIGRATION",
+ "replace": "taurus_spectrum"
+ },
+ {
+ "id": "taurus38mag",
+ "type": "MIGRATION",
+ "replace": "taurus_spectrum_mag"
}
]
diff --git a/data/json/items/obsolete.json b/data/json/items/obsolete.json
index a752625f026bf..8aa0c3e9cd200 100644
--- a/data/json/items/obsolete.json
+++ b/data/json/items/obsolete.json
@@ -23,7 +23,7 @@
"color": "light_gray",
"name": "leaf spring",
"category": "spare_parts",
- "description": "A large, heavy-duty leaf spring. Probably from some car or truck, and looks an awful lot like a bow. You can barely bend it...",
+ "description": "A large, heavy-duty leaf spring. Probably from some car or truck, and looks an awful lot like a bow. You can barely bend it…",
"price": 5000,
"price_postapoc": 500,
"material": "steel",
@@ -939,5 +939,36 @@
"material": [ "veggy" ],
"volume": "250 ml",
"price": 200
+ },
+ {
+ "id": "hobo_stove_on",
+ "type": "TOOL",
+ "name": "hobo stove (lit)",
+ "name_plural": "hobo stoves (lit)",
+ "description": "This is a small improvised wood stove, made from a metal can or similar container of the right size. Useful for defrosting and reheating food, uses simple tinder.",
+ "weight": "500 g",
+ "volume": "250 ml",
+ "price": 0,
+ "to_hit": -1,
+ "bashing": 2,
+ "material": "steel",
+ "symbol": ",",
+ "color": "light_gray",
+ "ammo": "tinder",
+ "max_charges": 100,
+ "charges_per_use": 25,
+ "turns_per_charge": 300,
+ "revert_to": "hobo_stove",
+ "use_action": [
+ "HOTPLATE",
+ {
+ "target": "hobo_stove",
+ "msg": "The ember is extinguished.",
+ "active": false,
+ "menu_text": "Extinguish",
+ "type": "transform"
+ }
+ ],
+ "flags": [ "LIGHT_3", "ALLOWS_REMOTE_USE" ]
}
]
diff --git a/data/json/items/ranged.json b/data/json/items/ranged.json
index 626ee05dc0d27..70ee012afc17c 100644
--- a/data/json/items/ranged.json
+++ b/data/json/items/ranged.json
@@ -2,6 +2,7 @@
{
"id": "bbgun",
"type": "GUN",
+ "looks_like": "ar15",
"reload_noise_volume": 10,
"symbol": "(",
"color": "brown",
@@ -35,6 +36,7 @@
},
{
"id": "sling",
+ "looks_like": "slingshot",
"type": "GUN",
"symbol": "(",
"color": "brown",
@@ -55,8 +57,43 @@
"durability": 6,
"clip_size": 1
},
+ {
+ "id": "staff_sling",
+ "looks_like": "slingshot",
+ "type": "GUN",
+ "symbol": "(",
+ "color": "brown",
+ "name": "staff sling",
+ "description": "A leather sling attached to a staff, easy to use and accurate. It uses rocks as ammunition.",
+ "price": 150,
+ "//": "The staff sling,consists of a staff with a short sling at one end. ",
+ "material": [ "wood", "leather" ],
+ "flags": [
+ "RELOAD_AND_SHOOT",
+ "NEVER_JAMS",
+ "PRIMITIVE_RANGED_WEAPON",
+ "BELTED",
+ "DURABLE_MELEE",
+ "NONCONDUCTIVE",
+ "SHEATH_SPEAR",
+ "ALWAYS_TWOHAND"
+ ],
+ "techniques": [ "WBLOCK_2", "RAPID", "SWEEP" ],
+ "skill": "throw",
+ "ammo": "rock",
+ "weight": "2000 g",
+ "volume": "3 L",
+ "to_hit": 1,
+ "ranged_damage": 10,
+ "bashing": 18,
+ "range": 10,
+ "dispersion": 200,
+ "durability": 8,
+ "clip_size": 1
+ },
{
"id": "slingshot",
+ "//": "Tileset whitelist for sling & slingshots.",
"type": "GUN",
"symbol": "(",
"color": "brown",
@@ -79,6 +116,7 @@
},
{
"id": "wristrocket",
+ "looks_like": "sling",
"type": "GUN",
"symbol": "(",
"color": "dark_gray",
@@ -136,6 +174,7 @@
{
"id": "LAW",
"type": "GUN",
+ "looks_like": "m79",
"symbol": "(",
"color": "green",
"name": "M72 LAW",
@@ -166,6 +205,7 @@
},
{
"id": "TANK",
+ "looks_like": "m79",
"type": "GUN",
"symbol": "(",
"color": "green",
@@ -187,6 +227,7 @@
},
{
"id": "plasma_rifle",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
@@ -195,7 +236,7 @@
"description": "Boeing developed the focused plasma weaponry together with DARPA. It heats solid hydrogen to create plasma and envelops it with polymers to reduce blooming. While powerful, it suffers from short range. Powered by UPS.",
"price": 1750000,
"material": "steel",
- "flags": [ "MODE_BURST", "NEVER_JAMS" ],
+ "flags": [ "MODE_BURST", "NEVER_JAMS", "NON-FOULING" ],
"ups_charges": 5,
"ammo_effects": [ "PLASMA", "EXPLOSIVE_SMALL", "FLAME" ],
"skill": "rifle",
@@ -207,7 +248,7 @@
"ranged_damage": 5,
"dispersion": 60,
"durability": 8,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"clip_size": 25,
"reload": 700,
"valid_mod_locations": [
@@ -224,16 +265,17 @@
},
{
"id": "plasma_gun",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
"color": "light_gray",
"name": "PPA-5",
- "description": "Portable Plasma Accelerator Model Five, developed by Lockheed Martin Corporation. This device uses highly advanced capacitor banks to create a torus of superheated hydrogen plasma and accelerate it to incredible speed. It was designed to take down heavy vehicles, and was expected to fully enter US Army service not long before the Cataclysm.",
+ "description": "Portable Plasma Accelerator Model Five, developed by Lockheed Martin Corporation. This device uses highly advanced capacitor banks to create a torus of superheated hydrogen plasma and accelerate it to incredible speed. It was designed to take down heavy vehicles, and was expected to fully enter US Army service not long before the Cataclysm.",
"price": 980000,
"material": [ "steel", "plastic" ],
"ammo_effects": [ "PLASMA", "FLAME", "EMP", "EXPLOSIVE_SMALL" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD" ],
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "NON-FOULING" ],
"ups_charges": 100,
"skill": "rifle",
"ammo": "plasma",
@@ -261,6 +303,7 @@
},
{
"id": "pipe_combination_gun",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
@@ -297,6 +340,7 @@
},
{
"id": "tihar",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
@@ -316,7 +360,7 @@
"range": 15,
"dispersion": 75,
"durability": 7,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"clip_size": 15,
"reload": 6000,
"loudness": 18,
@@ -333,6 +377,7 @@
},
{
"id": "helsing",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
@@ -368,11 +413,11 @@
},
{
"id": "pneumatic_shotgun",
+ "looks_like": "pipe_double_shotgun",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
"color": "dark_gray",
- "looks_like": "pipe_double_shotgun",
"name": "pneumatic shotgun",
"description": "A double-barreled pneumatic air shotgun handcrafted from scrap. Though it's firepower is lacking compared to more conventional shotguns, this thing can still pack quite a punch. That is, if your target is directly in front of you.",
"price": 220000,
@@ -405,6 +450,7 @@
},
{
"id": "mininuke_launcher",
+ "looks_like": "m79",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
@@ -413,7 +459,7 @@
"description": "A powerful handheld launcher handcrafted from scrap. Made to launch modified handheld nuclear weapons, it is an exceedingly powerful weapon.",
"price": 750000,
"material": [ "aluminum", "wood" ],
- "flags": [ "STR_RELOAD", "NEVER_JAMS" ],
+ "flags": [ "STR_RELOAD", "NEVER_JAMS", "NON-FOULING" ],
"skill": "launcher",
"ammo": "mininuke_mod",
"weight": "11260 g",
@@ -429,6 +475,7 @@
},
{
"id": "RPG",
+ "looks_like": "m79",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
@@ -462,6 +509,7 @@
},
{
"id": "speargun",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
@@ -470,7 +518,7 @@
"description": "An underwater fishing implement designed to fire a specialized type of spear using tension in a rubber band. While highly effective when used underwater, it is nearly useless on dry land.",
"price": 11500,
"material": [ "wood", "plastic" ],
- "flags": [ "STR_RELOAD", "WATERPROOF_GUN", "UNDERWATER_GUN", "NEVER_JAMS" ],
+ "flags": [ "STR_RELOAD", "WATERPROOF_GUN", "UNDERWATER_GUN", "NEVER_JAMS", "NON-FOULING" ],
"skill": "rifle",
"ammo": "fishspear",
"weight": "2100 g",
@@ -495,6 +543,7 @@
},
{
"id": "minispeargun",
+ "looks_like": "glock_17",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
@@ -503,7 +552,7 @@
"description": "A small underwater fishing implement designed to fire a specialized type of spear using tension in a rubber band. While highly effective when used underwater, it is nearly useless on dry land.",
"price": 10000,
"material": [ "wood", "plastic" ],
- "flags": [ "STR_RELOAD", "WATERPROOF_GUN", "UNDERWATER_GUN", "NEVER_JAMS" ],
+ "flags": [ "STR_RELOAD", "WATERPROOF_GUN", "UNDERWATER_GUN", "NEVER_JAMS", "NON-FOULING" ],
"skill": "pistol",
"ammo": "fishspear",
"weight": "840 g",
@@ -525,6 +574,7 @@
},
{
"id": "doublespeargun",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
@@ -533,7 +583,7 @@
"description": "A double-loading underwater fishing implement designed to fire a specialized type of spear using tension in a rubber band. While highly effective when used underwater, it is nearly useless on dry land.",
"price": 17500,
"material": [ "wood", "plastic" ],
- "flags": [ "RELOAD_ONE", "STR_RELOAD", "WATERPROOF_GUN", "UNDERWATER_GUN", "NEVER_JAMS" ],
+ "flags": [ "RELOAD_ONE", "STR_RELOAD", "WATERPROOF_GUN", "UNDERWATER_GUN", "NEVER_JAMS", "NON-FOULING" ],
"skill": "rifle",
"ammo": "fishspear",
"weight": "3060 g",
@@ -558,6 +608,7 @@
},
{
"id": "airspeargun",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
@@ -566,7 +617,7 @@
"description": "A sophisticated underwater fishing implement designed to fire a specialized type of spear using a hand-pump pressure system. While highly effective when used underwater, it is nearly useless on dry land.",
"price": 25000,
"material": [ "plastic", "steel" ],
- "flags": [ "RELOAD_ONE", "STR_RELOAD", "WATERPROOF_GUN", "UNDERWATER_GUN" ],
+ "flags": [ "RELOAD_ONE", "STR_RELOAD", "WATERPROOF_GUN", "UNDERWATER_GUN", "NON-FOULING" ],
"skill": "rifle",
"ammo": "fishspear",
"weight": "3460 g",
@@ -592,6 +643,7 @@
},
{
"id": "combination_gun",
+ "looks_like": "ar15",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "(",
@@ -630,6 +682,7 @@
},
{
"id": "surv_rocket_launcher",
+ "looks_like": "m79",
"type": "GUN",
"reload_noise_volume": 10,
"symbol": "/",
@@ -647,7 +700,7 @@
"to_hit": -3,
"dispersion": 300,
"durability": 5,
- "burst": 1,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ] ],
"clip_size": 1,
"reload": 800,
"loudness": 200,
@@ -655,6 +708,7 @@
},
{
"id": "watercannon",
+ "looks_like": "m79",
"type": "GUN",
"symbol": "&",
"color": "dark_gray",
@@ -662,7 +716,7 @@
"description": "A water cannon from a fire truck. Mounted on a vehicle, it could be used to stop fires or \"protesters\".",
"price": 50000,
"material": "steel",
- "flags": [ "MODE_BURST", "NEVER_JAMS", "MOUNTED_GUN", "NO_RELOAD" ],
+ "flags": [ "MODE_BURST", "NEVER_JAMS", "MOUNTED_GUN", "NO_RELOAD", "NON-FOULING" ],
"ammo_effects": [ "JET", "BEANBAG", "NEVER_MISFIRES", "RECOVER_10" ],
"skill": "launcher",
"ammo": "water",
@@ -673,7 +727,7 @@
"range": 10,
"dispersion": 450,
"durability": 10,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "burst", 4 ] ],
"clip_size": 100,
"reload": 0,
"valid_mod_locations": [ [ "sling", 1 ] ]
diff --git a/data/json/items/resources/chemicals.json b/data/json/items/resources/chemicals.json
new file mode 100644
index 0000000000000..d6d7c84b6513e
--- /dev/null
+++ b/data/json/items/resources/chemicals.json
@@ -0,0 +1,34 @@
+[
+ {
+ "id": "chem_potassium_alum",
+ "type": "AMMO",
+ "category": "chems",
+ "name": "potassium alum",
+ "description": "Small water-soluble white crystals with watery metallic odor, historically used for many different purposes. Also known as potash alum and potassium aluminum sulfate; often called simply alum, as it's the most important member of the generic class of compounds called alums.",
+ "container": "bottle_plastic_small",
+ "weight": "1725 mg",
+ "volume": "250 ml",
+ "price": 2500,
+ "material": "powder_nonflam",
+ "symbol": "=",
+ "color": "dark_gray",
+ "count": 250,
+ "ammo_type": "components"
+ },
+ {
+ "id": "dye_powder",
+ "type": "AMMO",
+ "category": "chems",
+ "name": "cloth dye powder",
+ "description": "This is a powdered colorful cloth dye, which can be used to dye many fabrics if combined with water and some mordant.",
+ "container": "bottle_plastic_small",
+ "weight": "1540 mg",
+ "volume": "250 ml",
+ "price": 2500,
+ "material": "powder_nonflam",
+ "symbol": "=",
+ "color": "dark_gray",
+ "count": 250,
+ "ammo_type": "components"
+ }
+]
diff --git a/data/json/items/resources/fasteners.json b/data/json/items/resources/fasteners.json
new file mode 100644
index 0000000000000..9d442a606f0bf
--- /dev/null
+++ b/data/json/items/resources/fasteners.json
@@ -0,0 +1,92 @@
+[
+ {
+ "id": "buckle_steel",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "steel buckle",
+ "description": "A steel buckle, like that usually found on belts.",
+ "weight": "24 g",
+ "volume": "5 ml",
+ "price": 100,
+ "material": "steel",
+ "symbol": "=",
+ "color": "dark_gray",
+ "ammo_type": "components"
+ },
+ {
+ "id": "button_plastic",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "plastic button",
+ "description": "A plastic button, usually found on clothing.",
+ "weight": "1 g",
+ "volume": "20 ml",
+ "price": 100,
+ "material": "plastic",
+ "symbol": "=",
+ "color": "dark_gray",
+ "count": 20,
+ "ammo_type": "components"
+ },
+ {
+ "id": "button_steel",
+ "copy-from": "button_plastic",
+ "type": "AMMO",
+ "name": "steel button",
+ "description": "A steel button, usually found on clothing.",
+ "weight": "8 g",
+ "price": 300,
+ "material": "steel"
+ },
+ {
+ "id": "button_wood",
+ "copy-from": "button_plastic",
+ "type": "AMMO",
+ "name": "wooden button",
+ "description": "A crude wooden button, usually found on very old clothing.",
+ "material": "wood"
+ },
+ {
+ "id": "snapfastener_steel",
+ "copy-from": "button_steel",
+ "type": "AMMO",
+ "name": "steel snap fastener",
+ "description": "A steel snap fastener, usually found on clothing."
+ },
+ {
+ "id": "touch_fastener",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "touch fastener",
+ "description": "This is a pair of cloth strips, one of which has tiny hooks and another has tiny loops. Useful as a fastener for clothing and footwear.",
+ "weight": "2 g",
+ "volume": "2 ml",
+ "price": 100,
+ "material": "cotton",
+ "symbol": "=",
+ "color": "dark_gray",
+ "ammo_type": "components"
+ },
+ {
+ "id": "zipper_long_plastic",
+ "copy-from": "zipper_short_plastic",
+ "type": "AMMO",
+ "name": "long plastic zipper",
+ "description": "A long zipper made from plastic, usually found on clothing.",
+ "proportional": { "weight": 3, "volume": 3, "price": 3 }
+ },
+ {
+ "id": "zipper_short_plastic",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "short plastic zipper",
+ "description": "A short zipper made from plastic, usually found on footwear or clothing pockets.",
+ "weight": 4,
+ "volume": "4 ml",
+ "price": 100,
+ "material": [ "plastic", "cotton" ],
+ "symbol": "=",
+ "color": "dark_gray",
+ "ammo_type": "components"
+ }
+]
diff --git a/data/json/items/resources/home_improvement.json b/data/json/items/resources/home_improvement.json
index fa83df19b998a..461febfa50716 100644
--- a/data/json/items/resources/home_improvement.json
+++ b/data/json/items/resources/home_improvement.json
@@ -168,5 +168,20 @@
"weight": "5 g",
"volume": "250 ml",
"to_hit": -3
+ },
+ {
+ "type": "GENERIC",
+ "id": "screen_mesh",
+ "symbol": "#",
+ "color": "brown",
+ "looks_like": "r_carpet",
+ "name": "mesh screen",
+ "category": "spare_parts",
+ "description": "A roll of fine mesh screen for bug barriers on porches.",
+ "price": 1200,
+ "material": [ "plastic" ],
+ "weight": "25 g",
+ "volume": "1000 ml",
+ "to_hit": -3
}
]
diff --git a/data/json/items/resources/metal.json b/data/json/items/resources/metal.json
index 4df3613fbd346..60271bdc9c3d5 100644
--- a/data/json/items/resources/metal.json
+++ b/data/json/items/resources/metal.json
@@ -74,7 +74,7 @@
"type": "GENERIC",
"category": "spare_parts",
"name": "aluminum ingot",
- "description": "A small aluminum ingot, standardized for further processing. Light but durable, this could be cast into various shapes for construction or ground down to a powder, for more... high-profile applications.",
+ "description": "A small aluminum ingot, standardized for further processing. Light but durable, this could be cast into various shapes for construction or ground down to a powder, for more… high-profile applications.",
"weight": "675 g",
"//": "Density 2.70g/cm³ = 675g/250ml",
"volume": "250 ml",
@@ -147,7 +147,7 @@
"category": "spare_parts",
"name": "zinc",
"name_plural": "zinc",
- "description": "A slightly brittle metal. Apart from being an essential mineral that the body needs, it reacts readily with acids, alkalis and other non-metals. It can be crushed to make zinc powder, used in the production of batteries, among other things.",
+ "description": "A slightly brittle metal. Apart from being an essential mineral that the body needs, it reacts readily with acids, alkalis and other non-metals. It can be crushed to make zinc powder, used in the production of batteries, among other things.",
"weight": 7,
"volume": "50ml",
"price": 3000,
@@ -277,7 +277,7 @@
"type": "AMMO",
"category": "spare_parts",
"name": "door hinge",
- "description": "A small metal hinge with two metal plates with screw holes. Useful for making doors.",
+ "description": "A small metal hinge with two metal plates with screw holes. Useful for making doors.",
"weight": "300 g",
"volume": "250 ml",
"price": 3000,
@@ -319,8 +319,8 @@
"description": "A small chunk of copper, usable for crafting or repairs.",
"price": 1000,
"material": "copper",
- "weight": "200 g",
- "volume": "250 ml",
+ "weight": "50 g",
+ "volume": "62 ml",
"bashing": 1,
"to_hit": -2
},
@@ -332,7 +332,7 @@
"name": "tin powder",
"symbol": "=",
"color": "light_gray",
- "description": "A fine gray powder composed of tin, usable for making solder and lining containers to prevent corrosion.",
+ "description": "A fine gray powder composed of tin, usable for making solder and lining containers to prevent corrosion.",
"material": "tin",
"volume": "50ml",
"weight": "2 g",
diff --git a/data/json/items/resources/misc.json b/data/json/items/resources/misc.json
index da084aeceba7e..32eeb54d5f63d 100644
--- a/data/json/items/resources/misc.json
+++ b/data/json/items/resources/misc.json
@@ -37,10 +37,10 @@
"id": "down_mattress",
"type": "GENERIC",
"category": "spare_parts",
- "name": "down_mattress",
- "name_plural": "down_mattresses",
+ "name": "down mattress",
+ "name_plural": "down mattresses",
"description": "This is a single, or twin, sized down filled mattress.",
- "weight": 20000,
+ "weight": "6 kg",
"volume": "300000 ml",
"price": 1000,
"material": [ "cotton" ],
@@ -65,5 +65,19 @@
"count": 50,
"ammo_type": "components",
"effects": [ "COOKOFF" ]
+ },
+ {
+ "id": "sole_rubber",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "rubber sole",
+ "description": "This is a sole made from rubber, usually found on the bottoms of boots. Can be used for making actual boots.",
+ "weight": "140 g",
+ "volume": "500 ml",
+ "price": 100,
+ "material": "plastic",
+ "symbol": "=",
+ "color": "dark_gray",
+ "ammo_type": "components"
}
]
diff --git a/data/json/items/resources/plastic.json b/data/json/items/resources/plastic.json
index baea60252b7ab..6795301d82255 100644
--- a/data/json/items/resources/plastic.json
+++ b/data/json/items/resources/plastic.json
@@ -5,7 +5,7 @@
"category": "spare_parts",
"name": "plastic chunk",
"description": "This is a piece of plastic. It could be used to fabricate, repair, or reinforce plastic items.",
- "weight": "70 g",
+ "weight": "50 g",
"volume": "250 ml",
"price": 0,
"material": "plastic",
@@ -13,6 +13,35 @@
"color": "light_blue",
"flags": [ "NO_SALVAGE" ]
},
+ {
+ "id": "nylon",
+ "type": "TOOL",
+ "category": "spare_parts",
+ "name": "synthetic fabric",
+ "description": "This is small bolt of synthetic fabric. Unlike you and other natural materials, it won't degrade much with age. Maybe that's less of a bad thing now.",
+ "weight": "55 g",
+ "volume": "250 ml",
+ "price": 0,
+ "material": "nylon",
+ "symbol": ",",
+ "color": "white",
+ "flags": [ "NO_SALVAGE" ]
+ },
+ {
+ "id": "lycra_patch",
+ "type": "TOOL",
+ "category": "spare_parts",
+ "name": "lycra patch",
+ "name_plural": "lycra patches",
+ "description": "This is a small bolt of a synthetic fabric blended with stretchy lycra fibers. It could be used to make flexible yet strong clothing. Stylish, but bad for the environment; at least you're recycling it.",
+ "weight": "87 g",
+ "volume": "250 ml",
+ "price": 0,
+ "material": "lycra",
+ "symbol": ",",
+ "color": "light_blue",
+ "flags": [ "NO_SALVAGE" ]
+ },
{
"id": "plastic_sheet",
"type": "GENERIC",
diff --git a/data/json/items/resources/tailoring.json b/data/json/items/resources/tailoring.json
new file mode 100644
index 0000000000000..cfeeb9801300a
--- /dev/null
+++ b/data/json/items/resources/tailoring.json
@@ -0,0 +1,347 @@
+[
+ {
+ "id": "scrap_cotton",
+ "type": "AMMO",
+ "category": "other",
+ "name": "cotton scraps",
+ "name_plural": "cotton scraps",
+ "description": "Oddly-shaped smallish bits of cotton, waste material from tailoring projects. Not useful for much and usually disposed of, but can be recycled into some thread if you really want.",
+ "weight": "1 g",
+ "volume": "1 ml",
+ "price": 1,
+ "material": "cotton",
+ "symbol": "=",
+ "color": "dark_gray",
+ "ammo_type": "components",
+ "flags": [ "NO_SALVAGE" ]
+ },
+ {
+ "id": "scrap_faux_fur",
+ "copy-from": "scrap_cotton",
+ "type": "AMMO",
+ "name": "faux fur scraps",
+ "name_plural": "faux fur scraps",
+ "description": "Oddly-shaped smallish bits of faux fur, waste material from tailoring projects. Not useful for much and usually disposed of.",
+ "price": 0,
+ "material": "faux_fur"
+ },
+ {
+ "id": "scrap_felt",
+ "copy-from": "scrap_cotton",
+ "type": "AMMO",
+ "name": "felt scraps",
+ "name_plural": "felt scraps",
+ "description": "Oddly-shaped smallish bits of felt, waste material from tailoring projects. Not useful for much and usually disposed of, but can be recycled into some wool fiber if you really want.",
+ "material": "wool"
+ },
+ {
+ "id": "scrap_fur",
+ "copy-from": "scrap_cotton",
+ "type": "AMMO",
+ "name": "fur scraps",
+ "name_plural": "fur scraps",
+ "description": "Oddly-shaped smallish bits of fur, waste material from tailoring projects. Not useful for much and usually disposed of.",
+ "price": 0,
+ "material": "fur"
+ },
+ {
+ "id": "scrap_kevlar",
+ "copy-from": "scrap_cotton",
+ "type": "AMMO",
+ "name": "Kevlar scraps",
+ "name_plural": "Kevlar scraps",
+ "description": "Oddly-shaped smallish bits of Kevlar fabric, waste material from tailoring projects. Normally it's disposed of, but since Kevlar would be very difficult to make in a post-apocalyptic world, it might be worth recycling it for Kevlar thread.",
+ "price": 5,
+ "material": "kevlar"
+ },
+ {
+ "id": "scrap_leather",
+ "copy-from": "scrap_cotton",
+ "type": "AMMO",
+ "name": "leather scraps",
+ "name_plural": "leather scraps",
+ "description": "Oddly-shaped smallish bits of leather, waste material from tailoring projects. Not useful for much and usually disposed of.",
+ "price": 0,
+ "material": "leather"
+ },
+ {
+ "id": "scrap_lycra",
+ "copy-from": "scrap_cotton",
+ "type": "AMMO",
+ "name": "lycra scraps",
+ "name_plural": "lycra scraps",
+ "description": "Oddly-shaped smallish bits of lycra, waste material from tailoring projects. Not useful for much and usually disposed of.",
+ "price": 0,
+ "material": "lycra"
+ },
+ {
+ "id": "scrap_neoprene",
+ "copy-from": "scrap_cotton",
+ "type": "AMMO",
+ "name": "neoprene scraps",
+ "name_plural": "neoprene scraps",
+ "description": "Oddly-shaped smallish bits of neoprene, waste material from tailoring projects. Not useful for much and usually disposed of.",
+ "price": 0,
+ "material": "neoprene"
+ },
+ {
+ "id": "scrap_nylon",
+ "copy-from": "scrap_cotton",
+ "type": "AMMO",
+ "name": "synthetic fabric scraps",
+ "name_plural": "synthetic fabric scraps",
+ "description": "Oddly-shaped smallish bits of synthetic fabric, waste material from tailoring projects. Not useful for much and usually disposed of.",
+ "price": 0,
+ "material": "nylon"
+ },
+ {
+ "id": "scrap_nomex",
+ "copy-from": "scrap_cotton",
+ "type": "AMMO",
+ "name": "Nomex scraps",
+ "name_plural": "Nomex scraps",
+ "description": "Oddly-shaped smallish bits of heat-resistant Nomex fabric, waste material from tailoring projects. Normally it's disposed of, but since Nomex would be very difficult to make in a post-apocalyptic world, it might be worth recycling it.",
+ "price": 5,
+ "material": "nomex"
+ },
+ {
+ "id": "sheet_cotton",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "cotton sheet",
+ "description": "A sheet of cotton fabric, suitable for making clothing.",
+ "weight": "5 g",
+ "volume": "300 ml",
+ "price": 1000,
+ "material": "cotton",
+ "symbol": "=",
+ "color": "dark_gray",
+ "count": 100,
+ "ammo_type": "components"
+ },
+ {
+ "id": "sheet_cotton_patchwork",
+ "copy-from": "sheet_cotton",
+ "type": "AMMO",
+ "name": "patchwork cotton clothing parts",
+ "name_plural": "patchwork cotton clothing parts",
+ "description": "A selection of various clothing parts, sewn together from cotton patches in a patchwork fashion. Suitable for making most clothing, though it's much less time-efficient than if using proper material sheets.",
+ "weight": "100 g",
+ "volume": "60 ml",
+ "price": 200,
+ "count": 1
+ },
+ {
+ "id": "sheet_faux_fur",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "faux fur sheet",
+ "description": "A sheet of fake synthetic colorful fur, suitable for making clothing.",
+ "weight": "10 g",
+ "volume": "4500 ml",
+ "price": 5000,
+ "material": "faux_fur",
+ "symbol": "=",
+ "color": "dark_gray",
+ "count": 100,
+ "ammo_type": "components"
+ },
+ {
+ "id": "sheet_faux_fur_patchwork",
+ "copy-from": "sheet_faux_fur",
+ "type": "AMMO",
+ "name": "patchwork faux fur clothing parts",
+ "name_plural": "patchwork faux fur clothing parts",
+ "description": "A selection of various clothing parts, sewn together from faux fur patches in a patchwork fashion. Suitable for making most clothing, though it's much less time-efficient than if using proper material sheets.",
+ "weight": "200 g",
+ "volume": "900 ml",
+ "price": 1000,
+ "count": 1
+ },
+ {
+ "id": "sheet_felt",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "felt sheet",
+ "description": "A sheet of felt, suitable for making clothing.",
+ "weight": "8 g",
+ "volume": "1800 ml",
+ "price": 2500,
+ "material": "wool",
+ "symbol": "=",
+ "color": "dark_gray",
+ "count": 100,
+ "ammo_type": "components"
+ },
+ {
+ "id": "sheet_felt_patchwork",
+ "copy-from": "sheet_felt",
+ "type": "AMMO",
+ "name": "patchwork felt clothing parts",
+ "name_plural": "patchwork felt clothing parts",
+ "description": "A selection of various clothing parts, sewn together from felt patches in a patchwork fashion. Suitable for making most clothing, though it's much less time-efficient than if using proper material sheets.",
+ "weight": "160 g",
+ "volume": "360 ml",
+ "price": 500,
+ "count": 1
+ },
+ {
+ "id": "sheet_kevlar",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "Kevlar sheet",
+ "description": "A sheet of Kevlar synthetic fabric, suitable for making bulletproof armor. In this form, unlike rigid plates, it can be stitched.",
+ "weight": "5 g",
+ "volume": "300 ml",
+ "price": 15000,
+ "material": "kevlar",
+ "symbol": "=",
+ "color": "dark_gray",
+ "count": 100,
+ "ammo_type": "components"
+ },
+ {
+ "id": "sheet_lycra",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "lycra sheet",
+ "description": "A sheet of synthetic fabric blended with stretchy lycra fibers, suitable for making flexible yet strong clothing.",
+ "weight": "3 g",
+ "volume": "300 ml",
+ "price": 5000,
+ "material": "lycra",
+ "symbol": "=",
+ "color": "dark_gray",
+ "count": 100,
+ "ammo_type": "components"
+ },
+ {
+ "id": "sheet_lycra_patchwork",
+ "copy-from": "sheet_lycra",
+ "type": "AMMO",
+ "name": "patchwork lycra clothing parts",
+ "name_plural": "patchwork lycra clothing parts",
+ "description": "A selection of various clothing parts, sewn together from lycra patches in a patchwork fashion. Suitable for making most clothing, though it's much less time-efficient than if using proper material sheets.",
+ "weight": "60 g",
+ "volume": "60 ml",
+ "price": 1000,
+ "count": 1
+ },
+ {
+ "id": "sheet_neoprene",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "neoprene sheet",
+ "description": "A sheet of neoprene, a synthetic rubber, suitable for making underwater gear.",
+ "weight": "6 g",
+ "volume": "300 ml",
+ "price": 5000,
+ "material": "neoprene",
+ "symbol": "=",
+ "color": "dark_gray",
+ "count": 100,
+ "ammo_type": "components"
+ },
+ {
+ "id": "sheet_neoprene_patchwork",
+ "copy-from": "sheet_neoprene",
+ "type": "AMMO",
+ "name": "patchwork neoprene clothing parts",
+ "name_plural": "patchwork neoprene clothing parts",
+ "description": "A selection of various clothing parts, sewn together from neoprene patches in a patchwork fashion, with waterproofed seams. Suitable for making most clothing, though it's much less time-efficient than if using proper material sheets.",
+ "weight": "120 g",
+ "volume": "60 ml",
+ "price": 1000,
+ "count": 1
+ },
+ {
+ "id": "sheet_nomex",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "Nomex sheet",
+ "description": "A sheet of Nomex synthetic fabric, suitable for making heat-resistant clothing.",
+ "weight": "5 g",
+ "volume": "300 ml",
+ "price": 15000,
+ "material": "nomex",
+ "symbol": "=",
+ "color": "dark_gray",
+ "count": 100,
+ "ammo_type": "components"
+ },
+ {
+ "id": "sheet_nomex_patchwork",
+ "copy-from": "sheet_nomex",
+ "type": "AMMO",
+ "name": "patchwork Nomex clothing parts",
+ "name_plural": "patchwork Nomex clothing parts",
+ "description": "A selection of various clothing parts, sewn together with Nomex thread from Nomex patches in a patchwork fashion. Suitable for making most clothing, though it's much less time-efficient than if using proper material sheets.",
+ "weight": "100 g",
+ "volume": "60 ml",
+ "price": 3000,
+ "count": 1
+ },
+ {
+ "id": "sheet_nylon",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "synthetic fabric sheet",
+ "description": "A sheet of synthetic fabric, suitable for making clothing.",
+ "weight": "3 g",
+ "volume": "300 ml",
+ "price": 5000,
+ "material": "nylon",
+ "symbol": "=",
+ "color": "dark_gray",
+ "count": 100,
+ "ammo_type": "components"
+ },
+ {
+ "id": "sheet_nylon_patchwork",
+ "copy-from": "sheet_nylon",
+ "type": "AMMO",
+ "name": "patchwork synthetic fabric clothing parts",
+ "name_plural": "patchwork synthetic fabric clothing parts",
+ "description": "A selection of various clothing parts, sewn together from synthetic fabric patches in a patchwork fashion. Suitable for making most clothing, though it's much less time-efficient than if using proper material sheets.",
+ "weight": "60 g",
+ "volume": "60 ml",
+ "price": 1000,
+ "count": 1
+ },
+ {
+ "type": "AMMO",
+ "id": "thread_kevlar",
+ "category": "spare_parts",
+ "price": 5000,
+ "name": "Kevlar thread",
+ "symbol": "=",
+ "color": "light_gray",
+ "looks_like": "thread",
+ "description": "Some very durable Kevlar thread that would be particularly useful for making ballistic armor, though it's fine to use in place of normal thread too, in most cases. Making armor-grade Kevlar sheets from this would need a particularly tight weave, and so would need some specialized machinery.",
+ "material": "kevlar",
+ "flags": [ "NO_SALVAGE" ],
+ "volume": "200 ml",
+ "weight": "1 g",
+ "ammo_type": "thread",
+ "count": 50,
+ "stack_size": 200
+ },
+ {
+ "type": "AMMO",
+ "id": "thread_nomex",
+ "category": "spare_parts",
+ "price": 5000,
+ "name": "Nomex thread",
+ "symbol": "=",
+ "color": "light_gray",
+ "looks_like": "thread",
+ "description": "Some heat-resistant Nomex thread that would be particularly useful for making heat protection gear, though it's fine to use in place of normal thread too, in most cases.",
+ "material": "nomex",
+ "flags": [ "NO_SALVAGE" ],
+ "volume": "200 ml",
+ "weight": "1 g",
+ "ammo_type": "thread",
+ "count": 50,
+ "stack_size": 200
+ }
+]
diff --git a/data/json/items/resources/wood.json b/data/json/items/resources/wood.json
index a46fd6e28c63b..f13f619f194cb 100644
--- a/data/json/items/resources/wood.json
+++ b/data/json/items/resources/wood.json
@@ -25,7 +25,7 @@
"description": "A splintered piece of wood, could be used as a skewer or for kindling.",
"category": "other",
"material": "wood",
- "weight": "453 g",
+ "weight": "225 g",
"volume": "250 ml",
"bashing": 4,
"to_hit": 1,
@@ -131,6 +131,7 @@
"weight": "15000 g",
"to_hit": 1,
"color": "brown",
+ "looks_like": "2x4",
"symbol": "H",
"material": [ "wood" ],
"techniques": [ "WBLOCK_1" ],
diff --git a/data/json/items/tool/lighting.json b/data/json/items/tool/lighting.json
index 5f7b8aeab9df2..a0ef935c04922 100644
--- a/data/json/items/tool/lighting.json
+++ b/data/json/items/tool/lighting.json
@@ -27,7 +27,15 @@
"magazines": [
[
"battery",
- [ "medium_battery_cell", "medium_plus_battery_cell", "medium_atomic_battery_cell", "medium_disposable_cell" ]
+ [
+ "light_minus_battery_cell",
+ "light_minus_disposable_cell",
+ "light_minus_atomic_battery_cell",
+ "light_battery_cell",
+ "light_disposable_cell",
+ "light_plus_battery_cell",
+ "light_atomic_battery_cell"
+ ]
]
],
"magazine_well": 2
@@ -38,7 +46,7 @@
"type": "TOOL",
"name": "electric lantern (on)",
"name_plural": "electric lanterns (on)",
- "power_draw": 5000,
+ "power_draw": 1000,
"revert_to": "electric_lantern",
"use_action": { "menu_text": "Turn off", "type": "transform", "target": "electric_lantern", "msg": "You turn the lamp off." },
"flags": [ "RADIO_MODABLE", "LIGHT_15", "TRADER_AVOID", "ALLOWS_REMOTE_USE" ]
diff --git a/data/json/items/tool/radio_tools.json b/data/json/items/tool/radio_tools.json
index e55094ce8b951..466c9eab5f5d3 100644
--- a/data/json/items/tool/radio_tools.json
+++ b/data/json/items/tool/radio_tools.json
@@ -132,7 +132,7 @@
"id": "two_way_radio",
"type": "TOOL",
"name": "two-way radio",
- "description": "This is a radio with a transmitting unit. You could use it to contact someone who also has one. Unfortunately no one seems to use those nowadays...",
+ "description": "This is a radio with a transmitting unit. You could use it to contact someone who also has one. Unfortunately no one seems to use those nowadays…",
"weight": "431 g",
"volume": "500 ml",
"price": 2000,
diff --git a/data/json/items/tool/science.json b/data/json/items/tool/science.json
index 14d107da55f11..26fef354db78c 100644
--- a/data/json/items/tool/science.json
+++ b/data/json/items/tool/science.json
@@ -261,7 +261,7 @@
"type": "TOOL",
"category": "tools",
"name": "microscope",
- "description": "A classic tool for the ages! This hefty, durable piece of lab equipment makes small things look bigger. Without electricity the light doesn't work, but the rest of it is surprisingly functional. Unfortunately it's not useful for very much at the moment.",
+ "description": "A classic tool for the ages! This hefty, durable piece of lab equipment makes small things look bigger. Without electricity the light doesn't work, but the rest of it is surprisingly functional. Unfortunately it's not useful for very much at the moment.",
"weight": "2000 g",
"volume": "3800ml",
"price": 3000,
diff --git a/data/json/items/tool/tailoring.json b/data/json/items/tool/tailoring.json
index 3d0973451bfb6..43f3309e997f7 100644
--- a/data/json/items/tool/tailoring.json
+++ b/data/json/items/tool/tailoring.json
@@ -29,5 +29,45 @@
"material": [ "steel", "wood" ],
"delete": { "qualities": [ [ "LEATHER_AWL", 1 ] ] },
"extend": { "qualities": [ [ "LEATHER_AWL", 2 ] ] }
+ },
+ {
+ "id": "loom_frame",
+ "type": "GENERIC",
+ "category": "tools",
+ "name": "frame loom",
+ "description": "This is a rather bulky and primitive wooden frame which can be used to weave cloth sheets. It is very slow, though.",
+ "weight": "3804 g",
+ "volume": "6000 ml",
+ "price": 4000,
+ "material": "wood",
+ "symbol": ";",
+ "color": "yellow"
+ },
+ {
+ "id": "shed_stick",
+ "type": "GENERIC",
+ "category": "tools",
+ "name": "wooden shed stick",
+ "description": "This is a short thin flat wooden stick, used as a tool while weaving cloth with a frame loom.",
+ "weight": "300 g",
+ "volume": "250 ml",
+ "price": 100,
+ "bashing": 2,
+ "material": "wood",
+ "symbol": ";",
+ "color": "yellow"
+ },
+ {
+ "id": "tailoring_pattern_set",
+ "type": "GENERIC",
+ "category": "tools",
+ "name": "tailoring pattern set",
+ "description": "This is a large set of tailoring patterns made from paper. They're useful for making any kind of cloth or leather items from scratch, but are necessary for more advanced projects.",
+ "weight": "1000 g",
+ "volume": "833 ml",
+ "price": 4000,
+ "material": "paper",
+ "symbol": ";",
+ "color": "yellow"
}
]
diff --git a/data/json/items/tool/workshop.json b/data/json/items/tool/workshop.json
index 0a057518f3f48..5ac218ea5d822 100644
--- a/data/json/items/tool/workshop.json
+++ b/data/json/items/tool/workshop.json
@@ -7,7 +7,7 @@
"material": "steel",
"symbol": ";",
"color": "light_gray",
- "weight": "7000 g",
+ "weight": "5000 g",
"volume": "1500 ml",
"price": 18000,
"bashing": 8,
diff --git a/data/json/items/tool_armor.json b/data/json/items/tool_armor.json
index 16db53248a536..87d77053bbb37 100644
--- a/data/json/items/tool_armor.json
+++ b/data/json/items/tool_armor.json
@@ -590,6 +590,49 @@
"covers": [ "HEAD" ],
"magazine_well": 1
},
+ {
+ "id": "wearable_atomic_light",
+ "type": "TOOL_ARMOR",
+ "category": "clothing",
+ "symbol": "[",
+ "color": "blue",
+ "looks_like": "survivor_light_on",
+ "name": "atomic headlamp",
+ "description": "This is a custom made reinforced headlamp powered by the magic of nuclear decay, focused for more usable brightness. The adjustable strap allows it to be comfortably worn on your head or attached to your helmet. Use it to close the cover and hide the light.",
+ "price": 4000,
+ "material": [ "steel", "plastic" ],
+ "flags": [ "LIGHT_200", "LEAK_DAM", "RADIOACTIVE", "DURABLE_MELEE", "OVERSIZE", "BELTED", "ALLOWS_NATURAL_ATTACKS" ],
+ "weight": "1 kg",
+ "volume": "1500 ml",
+ "bashing": 2,
+ "use_action": {
+ "type": "transform",
+ "msg": "You close the headlamp's cover.",
+ "menu_text": "Close cover",
+ "target": "wearable_atomic_light_off",
+ "active": true
+ },
+ "covers": [ "HEAD" ],
+ "encumbrance": 5,
+ "coverage": 20,
+ "material_thickness": 1
+ },
+ {
+ "id": "wearable_atomic_light_off",
+ "copy-from": "wearable_atomic_light",
+ "type": "TOOL_ARMOR",
+ "looks_like": "survivor_light",
+ "name": "atomic headlamp (covered)",
+ "name_plural": "atomic headlamps (covered)",
+ "description": "This is a custom made reinforced headlamp powered by the magic of nuclear decay, focused for more usable brightness. The adjustable strap allows it to be comfortably worn on your head or attached to your helmet. Use it to open the cover and show the light.",
+ "flags": [ "LEAK_DAM", "RADIOACTIVE", "DURABLE_MELEE", "OVERSIZE", "BELTED", "ALLOWS_NATURAL_ATTACKS" ],
+ "use_action": {
+ "type": "transform",
+ "msg": "You open the headlamp's cover.",
+ "menu_text": "Open cover",
+ "target": "wearable_atomic_light"
+ }
+ },
{
"id": "rm13_armor",
"type": "TOOL_ARMOR",
@@ -693,7 +736,7 @@
"target": "dimensional_anchor"
},
"covers": [ "TORSO" ],
- "flags": [ "DIMENSIONAL_ANCHOR" ]
+ "flags": [ "DIMENSIONAL_ANCHOR", "OVERSIZE", "STRAPPED" ]
},
{
"id": "phase_immersion_suit",
@@ -714,13 +757,13 @@
"initial_charges": 1000,
"use_action": {
"type": "transform",
- "msg": "Initiating \nRunning suit integrity diagnostics...\nAll systems operational.",
- "target": "dimensional_anchor_on",
+ "msg": "Initiating\nRunning suit integrity diagnostics…\nAll systems operational.",
+ "target": "phase_immersion_suit_on",
"active": true,
"need_charges": 1,
"need_charges_msg": "Warning: Operating on minimal power. Protection compromised."
},
- "covers": [ "TORSO" ],
+ "covers": [ "HEAD", "MOUTH", "EYES", "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"warmth": 30,
"environmental_protection": 10,
"coverage": 100,
@@ -751,15 +794,21 @@
"turns_per_charge": 25,
"revert_to": "phase_immersion_suit",
"use_action": { "type": "transform", "menu_text": "Turn off", "msg": "Suit shutting down.", "target": "phase_immersion_suit" },
- "covers": [ "TORSO" ],
+ "covers": [ "HEAD", "MOUTH", "EYES", "TORSO", "ARMS", "HANDS", "LEGS", "FEET" ],
"environmental_protection": 80,
"flags": [
- "VARSIZE",
+ "RAD_PROOF",
"STURDY",
"WATERPROOF",
+ "HYGROMETER",
+ "THERMOMETER",
+ "SUPER_FANCY",
"RAINPROOF",
+ "WATCH",
+ "ALARMCLOCK",
"SWIM_GOGGLES",
"SUN_GLASSES",
+ "STURDY",
"ELECTRIC_IMMUNE",
"PARTIAL_DEAF",
"GAS_PROOF",
@@ -1560,7 +1609,8 @@
"max_volume": "1 L",
"flags": [ "SHEATH_KNIFE", "SHEATH_SWORD" ]
},
- "CROWBAR"
+ "CROWBAR",
+ "HAMMER"
],
"qualities": [
[ "HAMMER", 3 ],
@@ -2425,8 +2475,8 @@
"color": "blue",
"name": "shooter's earmuffs",
"name_plural": "shooter's earmuffs",
- "description": "A pair of earmuffs favored by shooters. The earmuffs are turned off. They will block sounds over a certain decibel amount, assuming it is charged with batteries.",
- "flags": [ "OVERSIZE", "BELTED", "ALLOWS_NATURAL_ATTACKS" ],
+ "description": "A pair of earmuffs favored by shooters. Without batteries or when turned off they function like normal earmuffs and block all sound. They will block sounds over a certain decibel amount when turned on. The earmuffs are currently off.",
+ "flags": [ "DEAFEN", "OVERSIZE", "BELTED", "ALLOWS_NATURAL_ATTACKS" ],
"price": 12500,
"material": [ "plastic" ],
"weight": "179 g",
diff --git a/data/json/items/tools.json b/data/json/items/tools.json
index 43537f97d7627..a5f4a67715128 100644
--- a/data/json/items/tools.json
+++ b/data/json/items/tools.json
@@ -256,7 +256,7 @@
"id": "water_mill",
"type": "TOOL",
"name": "water mill",
- "description": "A small water-powered mill that can convert starchy products into flour. Can be placed via the construction menu.",
+ "description": "A small water-powered mill that can convert starchy products into flour. Can be placed via the construction menu.",
"weight": "120000 g",
"volume": "22500 ml",
"price": 100000,
@@ -271,7 +271,7 @@
"id": "wind_mill",
"type": "TOOL",
"name": "wind mill",
- "description": "A small wind-powered mill that can convert starchy products into flour. Can be placed via the construction menu.",
+ "description": "A small wind-powered mill that can convert starchy products into flour. Can be placed via the construction menu.",
"weight": "120000 g",
"volume": "22500 ml",
"price": 100000,
@@ -287,7 +287,7 @@
"type": "GENERIC",
"category": "tools",
"name": "atomic coffee maker",
- "description": "This is a Curie-G coffeemaker, by CuppaTech. It famously uses a radioactive generator to heat water for coffee. Normally the water is heated using energy stored in a capacitor, and makes ordinary coffee. However, as a special feature, water from the RTG containment area can be used, giving the coffee a very special kick. The Curie-G is illegal in most countries.",
+ "description": "This is a Curie-G coffeemaker, by CuppaTech. It famously uses a radioactive generator to heat water for coffee. Normally the water is heated using energy stored in a capacitor, and makes ordinary coffee. However, as a special feature, water from the RTG containment area can be used, giving the coffee a very special kick. The Curie-G is illegal in most countries.",
"weight": "6102 g",
"volume": "1000 ml",
"price": 100000,
@@ -454,7 +454,7 @@
"type": "TOOL",
"name": "bear trap",
"description": "This is a spring-loaded pair of steel jaws connected to a sensitive pressure plate. Use it to set it on the ground, creating a trap that will ensnare and damage anything that steps on it. If you are carrying a shovel, you will have the option of burying it.",
- "weight": "11793 g",
+ "weight": "14000 g",
"volume": "1500 ml",
"price": 6000,
"to_hit": -2,
@@ -924,7 +924,7 @@
"type": "TOOL",
"name": "electric carver (off)",
"name_plural": "electric carvers (off)",
- "description": "An electric meat carver powered by batteries. Two serrated blades that vibrate together to slice just about anything from turkey to ham... even zombies!",
+ "description": "An electric meat carver powered by batteries. Two serrated blades that vibrate together to slice just about anything from turkey to ham… even zombies!",
"weight": "1106 g",
"volume": "1500 ml",
"price": 2000,
@@ -1021,7 +1021,7 @@
"power_draw": 500,
"revert_to": "cell_phone",
"use_action": { "target": "cell_phone", "msg": "You stop lighting up the screen.", "menu_text": "Turn off", "type": "transform" },
- "flags": [ "WATCH", "LIGHT_15", "CHARGEDIM", "TRADER_AVOID" ]
+ "flags": [ "WATCH", "LIGHT_8", "CHARGEDIM", "TRADER_AVOID" ]
},
{
"id": "smart_phone",
@@ -1074,7 +1074,7 @@
"type": "TOOL",
"name": "smartphone - Flashlight",
"name_plural": "smartphones - Flashlight",
- "power_draw": 500,
+ "power_draw": 1500,
"revert_to": "smart_phone",
"use_action": {
"target": "smart_phone",
@@ -1174,6 +1174,26 @@
"use_action": "WATER_PURIFIER",
"flags": [ "ALLOWS_REMOTE_USE" ]
},
+ {
+ "id": "lifestraw",
+ "type": "TOOL",
+ "name": "lifestraw",
+ "description": "Set the lifestraw in suspect water, let sit for one minute then drink. The two part filtration system will purify the water you drink. Water taken from uncertain sources like a river may be dirty.",
+ "weight": "104 g",
+ "volume": "592 ml",
+ "price": 4000,
+ "price_postapoc": 75000,
+ "to_hit": -3,
+ "bashing": 1,
+ "material": [ "cotton", "plastic" ],
+ "symbol": "i",
+ "looks_like": "advanced_ecig",
+ "color": "light_cyan",
+ "initial_charges": 4000,
+ "max_charges": 4000,
+ "charges_per_use": 1,
+ "use_action": "WATER_PURIFIER"
+ },
{
"id": "char_smoker",
"type": "TOOL",
@@ -1598,7 +1618,7 @@
"symbol": ";",
"color": "dark_gray",
"qualities": [ [ "PRY", 3 ], [ "HAMMER", 1 ] ],
- "use_action": "CROWBAR",
+ "use_action": [ "HAMMER", "CROWBAR" ],
"techniques": [ "WBLOCK_1" ],
"flags": [ "BELT_CLIP" ]
},
@@ -1769,7 +1789,7 @@
"//": "Too small to be effectively used for butchering, still not bad at it due to serrated edge.",
"description": "This is a short, sturdy knife with a serrated edge for cutting lines and straps, and a blunt tip for prying. Used primarily by divers, it is very light and takes up virtually no space in one's pockets.",
"weight": "226 g",
- "volume": 0,
+ "volume": "250 ml",
"price": 14000,
"cutting": 12,
"material": [ "steel", "plastic" ],
@@ -1894,7 +1914,7 @@
"type": "TOOL",
"name": "electronic handcuffs",
"name_plural": "electronic handcuffs",
- "description": "A pair of electronic handcuffs, used by police and riot bots to detain captives. Their continuous siren clearly identifies the wearer as an arrested criminal and alerts human police. Wait for their arrival, don't try to escape or to remove the cuffs - they will administer an electric shock.\nHowever, since the only police likely to respond are undead, you may have a long wait ahead, unless you get creative...",
+ "description": "A pair of electronic handcuffs, used by police and riot bots to detain captives. Their continuous siren clearly identifies the wearer as an arrested criminal and alerts human police. Wait for their arrival, don't try to escape or to remove the cuffs - they will administer an electric shock.\nHowever, since the only police likely to respond are undead, you may have a long wait ahead, unless you get creative…",
"weight": "2000 g",
"volume": "250 ml",
"price": 0,
@@ -2056,9 +2076,9 @@
"symbol": ";",
"color": "light_gray",
"ammo": "battery",
- "initial_charges": 3500,
- "max_charges": 7000,
- "charges_per_use": 3500,
+ "initial_charges": 4000,
+ "max_charges": 8000,
+ "charges_per_use": 500,
"use_action": "JACKHAMMER",
"flags": [ "STAB", "DIG_TOOL", "POWERED", "USE_UPS", "NO_UNLOAD", "NO_RELOAD" ]
},
@@ -2874,7 +2894,7 @@
"type": "GENERIC",
"category": "tools",
"name": "grappling hook",
- "description": "A folding grappling hook attached to a stout 30-foot long piece of lightweight cord. Useful for keeping yourself safe from falls. Can be used in place of a long rope for butchering, in a pinch.",
+ "description": "A folding grappling hook attached to a stout 30-foot long piece of lightweight cord. Useful for keeping yourself safe from falls. Can be used in place of a long rope for butchering, in a pinch.",
"weight": "760 g",
"volume": "750 ml",
"price": 25000,
@@ -2921,7 +2941,7 @@
"color": "dark_gray",
"techniques": [ "WBLOCK_1", "BRUTAL", "SWEEP" ],
"qualities": [ [ "PRY", 4 ], [ "HAMMER", 2 ], [ "DIG", 1 ] ],
- "use_action": "CROWBAR",
+ "use_action": [ "HAMMER", "CROWBAR" ],
"flags": [ "DURABLE_MELEE", "BELT_CLIP" ]
},
{
@@ -3267,7 +3287,7 @@
"category": "spare_parts",
"name": "Kevlar plate",
"description": "This is a plate of reinforced Kevlar. It could be used to repair items made of Kevlar.",
- "weight": "360 g",
+ "weight": "300 g",
"volume": "250 ml",
"price": 1000,
"material": "kevlar",
@@ -3402,7 +3422,7 @@
[ "SCREW", 1 ],
[ "CHISEL", 3 ]
],
- "use_action": [ "GUN_REPAIR", "CROWBAR" ],
+ "use_action": [ "GUN_REPAIR", "CROWBAR", "HAMMER" ],
"magazines": [
[
"battery",
@@ -4085,7 +4105,7 @@
"use_action": {
"type": "repair_item",
"item_action_type": "repair_fabric",
- "materials": [ "cotton", "leather", "wool", "fur", "faux_fur", "nomex", "kevlar", "gutskin" ],
+ "materials": [ "cotton", "leather", "lycra", "nylon", "wool", "fur", "faux_fur", "nomex", "kevlar", "gutskin" ],
"skill": "tailor",
"tool_quality": -1,
"cost_scaling": 0.1,
@@ -4139,7 +4159,7 @@
"use_action": {
"type": "repair_item",
"item_action_type": "repair_fabric",
- "materials": [ "cotton", "leather", "wool", "fur", "faux_fur", "nomex", "gutskin" ],
+ "materials": [ "cotton", "lycra", "nylon", "leather", "wool", "fur", "faux_fur", "nomex", "gutskin" ],
"skill": "tailor",
"tool_quality": -1,
"cost_scaling": 0.1,
@@ -4271,6 +4291,24 @@
"charges_per_use": 1,
"use_action": "OXYGEN_BOTTLE"
},
+ {
+ "id": "oxygen_cylinder",
+ "type": "TOOL",
+ "name": "oxygen cylinder",
+ "description": "A large steel cylinder used for storing pressurized gas. It is marked with a faded, but legible O2 symbol.",
+ "weight": "12888 g",
+ "volume": "2500 ml",
+ "price": 13400,
+ "to_hit": -4,
+ "bashing": 10,
+ "material": [ "steel", "plastic" ],
+ "symbol": ";",
+ "color": "blue",
+ "initial_charges": 300,
+ "max_charges": 300,
+ "charges_per_use": 10,
+ "use_action": "OXYGEN_BOTTLE"
+ },
{
"id": "nitrogen_tank",
"type": "TOOL",
@@ -4765,7 +4803,7 @@
"id": "sponge",
"type": "TOOL",
"name": "sponge",
- "description": "A sponge is a tool or cleaning aid made of soft, porous material. Typically used for cleaning impervious surfaces.",
+ "description": "A sponge is a tool or cleaning aid made of soft, porous material. Typically used for cleaning impervious surfaces.",
"weight": "80 g",
"volume": "250 ml",
"price": 0,
@@ -4811,20 +4849,7 @@
"need_charges_msg": "The reading light winks out.",
"type": "transform"
},
- "magazines": [
- [
- "battery",
- [
- "light_disposable_cell",
- "light_minus_disposable_cell",
- "light_battery_cell",
- "light_plus_battery_cell",
- "light_minus_battery_cell",
- "light_atomic_battery_cell",
- "light_minus_atomic_battery_cell"
- ]
- ]
- ],
+ "magazines": [ [ "battery", [ "light_minus_disposable_cell", "light_minus_battery_cell", "light_minus_atomic_battery_cell" ] ] ],
"magazine_well": 1
},
{
@@ -4834,10 +4859,10 @@
"name": "reading light (active)",
"name_plural": "reading lights (active)",
"description": "A little clip-on LED light, meant for reading books in the dark. This one is turned on.",
- "power_draw": 6000,
+ "power_draw": 1000,
"revert_to": "reading_light",
"use_action": { "target": "reading_light", "msg": "You switch off the reading light.", "menu_text": "Turn off", "type": "transform" },
- "flags": [ "LIGHT_8", "CHARGEDIM" ]
+ "flags": [ "LIGHT_15", "CHARGEDIM" ]
},
{
"id": "ref_lighter",
@@ -5146,7 +5171,7 @@
"use_action": {
"type": "repair_item",
"item_action_type": "repair_fabric",
- "materials": [ "cotton", "leather", "wool", "fur", "faux_fur", "nomex", "kevlar", "gutskin" ],
+ "materials": [ "cotton", "leather", "lycra", "nylon", "wool", "fur", "faux_fur", "nomex", "kevlar", "gutskin" ],
"skill": "tailor",
"tool_quality": 0,
"cost_scaling": 0.1,
@@ -5231,7 +5256,6 @@
"max_charges": 50,
"use_action": {
"type": "fireweapon_off",
- "active": true,
"target_id": "shishkebab_on",
"moves": 10,
"noise": 10,
@@ -5372,7 +5396,7 @@
[ "SCREW", 1 ],
[ "CHISEL", 3 ]
],
- "use_action": [ "GUN_REPAIR", "CROWBAR" ],
+ "use_action": [ "GUN_REPAIR", "CROWBAR", "HAMMER" ],
"magazines": [
[
"battery",
@@ -5703,7 +5727,7 @@
{
"type": "repair_item",
"item_action_type": "repair_fabric",
- "materials": [ "cotton", "leather", "wool", "fur", "faux_fur", "nomex", "kevlar", "neoprene", "gutskin" ],
+ "materials": [ "cotton", "leather", "lycra", "nylon", "wool", "fur", "faux_fur", "nomex", "kevlar", "neoprene", "gutskin" ],
"skill": "tailor",
"tool_quality": 1,
"cost_scaling": 0.1,
@@ -5711,7 +5735,21 @@
},
{
"type": "sew_advanced",
- "materials": [ "cotton", "leather", "wool", "fur", "faux_fur", "nomex", "kevlar", "neoprene", "gutskin", "plastic", "kevlar_rigid" ],
+ "materials": [
+ "cotton",
+ "leather",
+ "lycra",
+ "nylon",
+ "wool",
+ "fur",
+ "faux_fur",
+ "nomex",
+ "kevlar",
+ "neoprene",
+ "gutskin",
+ "plastic",
+ "kevlar_rigid"
+ ],
"skill": "tailor",
"clothing_mods": [ "leather_padded", "kevlar_padded", "furred", "wooled" ]
}
@@ -6084,7 +6122,7 @@
"type": "TOOL",
"category": "weapons",
"name": "black gunpowder charge",
- "description": "This is a home-made explosive device, consisting of a large plastic jug filled with black gunpowder and scrap metal, equipped with a long fuse. Use this item to light the fuse. Should explode in a few minutes...",
+ "description": "This is a home-made explosive device, consisting of a large plastic jug filled with black gunpowder and scrap metal, equipped with a long fuse. Use this item to light the fuse. Should explode in a few minutes…",
"weight": "5000 g",
"volume": "4 L",
"price": 20000,
@@ -7073,48 +7111,7 @@
"ammo": "tinder",
"max_charges": 100,
"charges_per_use": 25,
- "use_action": [
- {
- "target": "hobo_stove_on",
- "msg": "The hobo stove is lit.",
- "need_fire": 1,
- "need_fire_msg": "You need a source of fire!",
- "active": false,
- "menu_text": "Light",
- "type": "transform"
- }
- ]
- },
- {
- "id": "hobo_stove_on",
- "type": "TOOL",
- "name": "hobo stove (lit)",
- "name_plural": "hobo stoves (lit)",
- "description": "This is a small improvised wood stove, made from a metal can or similar container of the right size. Useful for defrosting and reheating food, uses simple tinder.",
- "weight": "500 g",
- "volume": "250 ml",
- "price": 0,
- "to_hit": -1,
- "bashing": 2,
- "material": "steel",
- "symbol": ",",
- "color": "light_gray",
- "ammo": "tinder",
- "max_charges": 100,
- "charges_per_use": 25,
- "turns_per_charge": 300,
- "revert_to": "hobo_stove",
- "use_action": [
- "HOTPLATE",
- {
- "target": "hobo_stove",
- "msg": "The ember is extinguished.",
- "active": false,
- "menu_text": "Extinguish",
- "type": "transform"
- }
- ],
- "flags": [ "LIGHT_3", "ALLOWS_REMOTE_USE" ]
+ "use_action": "HOTPLATE"
},
{
"id": "tinderbox",
@@ -7135,6 +7132,8 @@
"active": true,
"need_fire": 1,
"need_fire_msg": "You need a lighter or fire to light this.",
+ "need_charges": 1,
+ "need_charges_msg": "The ember carrier is out of tinder.",
"type": "transform"
}
},
@@ -7328,7 +7327,7 @@
"category": "weapons",
"id": "grip_hook",
"name": "grip hook",
- "description": "A simple steel meathook with a circular steel handle. Makes a passable melee weapon.",
+ "description": "A simple steel meathook with a circular steel handle. Makes a passable melee weapon.",
"weight": "900 g",
"to_hit": 1,
"color": "light_gray",
diff --git a/data/json/items/vehicle/boat.json b/data/json/items/vehicle/boat.json
index 5e95b547ac3b7..8951464d34fa9 100644
--- a/data/json/items/vehicle/boat.json
+++ b/data/json/items/vehicle/boat.json
@@ -71,7 +71,7 @@
"name": "sail",
"name_plural": "sails",
"description": "Sails for a boat.",
- "weight": "945 g",
+ "weight": "7904 g",
"to_hit": -1,
"color": "light_gray",
"symbol": ":",
diff --git a/data/json/items/vehicle/cables.json b/data/json/items/vehicle/cables.json
index dfc1f6a836a33..318992dbbbe1c 100644
--- a/data/json/items/vehicle/cables.json
+++ b/data/json/items/vehicle/cables.json
@@ -22,7 +22,7 @@
"type": "TOOL",
"id": "jumper_cable_heavy",
"name": "heavy-duty cable",
- "description": "A long, thick, heavy-duty cable with power leads on either end. It looks like you could use it to hook up two vehicles to each other, though you expect the power loss would be noticeable. Can also link other electrical systems.",
+ "description": "A long, thick, heavy-duty cable with power leads on either end. It looks like you could use it to hook up two vehicles to each other, though you expect the power loss would be noticeable. Can also link other electrical systems.",
"volume": "1500 ml",
"weight": "750 g",
"max_charges": 20,
diff --git a/data/json/items/vehicle/controls.json b/data/json/items/vehicle/controls.json
index 3dda828dde67f..63ec8a5773d16 100644
--- a/data/json/items/vehicle/controls.json
+++ b/data/json/items/vehicle/controls.json
@@ -68,5 +68,17 @@
"bashing": 1,
"price": 20000,
"copy-from": "vehicle_controls"
+ },
+ {
+ "type": "GENERIC",
+ "id": "turret_controls",
+ "name": "turret control unit",
+ "description": "A set of motor, camera, and various electronic modules banded together to allow for tracking targets, friend-or-foe identification, and firing the connected turret in full automatic mode.",
+ "weight": "4000 g",
+ "color": "white",
+ "symbol": "&",
+ "volume": "9 L",
+ "price": 500000,
+ "copy-from": "vehicle_controls"
}
]
diff --git a/data/json/items/vehicle/motors.json b/data/json/items/vehicle/motors.json
index 1ab79453459a2..37e30c90df8d5 100644
--- a/data/json/items/vehicle/motors.json
+++ b/data/json/items/vehicle/motors.json
@@ -4,11 +4,11 @@
"id": "motor",
"name": "electric motor",
"description": "A powerful electric motor. Useful for crafting.",
- "weight": "27200 g",
+ "weight": "25 kg",
"color": "light_cyan",
"symbol": ",",
"material": [ "steel" ],
- "volume": "9700 ml",
+ "volume": "5 L",
"bashing": 4,
"category": "veh_parts",
"price": 12000
@@ -18,9 +18,9 @@
"id": "motor_enhanced",
"name": "enhanced electric motor",
"description": "A very powerful and yet lightweight electric motor. Useful for crafting.",
- "weight": "81600 g",
+ "weight": "100 kg",
"material": [ "superalloy" ],
- "volume": "2650 ml",
+ "volume": "20 L",
"price": 68000,
"copy-from": "motor"
},
@@ -29,8 +29,8 @@
"id": "motor_super",
"name": "super electric motor",
"description": "The most powerfull electric motor on the market. Useful for crafting.",
- "weight": "133800 g",
- "volume": "111 L",
+ "weight": "125 kg",
+ "volume": "25 L",
"price": 80000,
"copy-from": "motor"
},
@@ -39,10 +39,10 @@
"id": "motor_large",
"name": "large electric motor",
"description": "A large and very powerful electric motor. Useful for crafting.",
- "weight": "68000 g",
+ "weight": "75 kg",
"to_hit": -3,
"symbol": ":",
- "volume": "1740 ml",
+ "volume": "15 L",
"bashing": 9,
"price": 22000,
"copy-from": "motor"
@@ -52,8 +52,8 @@
"id": "motor_small",
"name": "small electric motor",
"description": "A small electric motor. Useful for crafting.",
- "weight": "7500 g",
- "volume": "5 L",
+ "weight": "5 kg",
+ "volume": "1 L",
"bashing": 1,
"price": 2000,
"copy-from": "motor"
@@ -63,11 +63,11 @@
"id": "motor_tiny",
"name": "tiny electric motor",
"description": "A tiny electric motor. Useful for crafting.",
- "weight": "5800 g",
+ "weight": "625 g",
"color": "light_cyan",
"symbol": ",",
"material": [ "steel", "plastic" ],
- "volume": "500 ml",
+ "volume": "125 ml",
"category": "veh_parts",
"price": 2000
}
diff --git a/data/json/items/vehicle/utilities.json b/data/json/items/vehicle/utilities.json
index a94d4656f20dd..b72355505ea4b 100644
--- a/data/json/items/vehicle/utilities.json
+++ b/data/json/items/vehicle/utilities.json
@@ -14,6 +14,21 @@
"category": "veh_parts",
"price": 60000
},
+ {
+ "type": "GENERIC",
+ "id": "programmable_autopilot",
+ "name": "programmable autopilot",
+ "description": "A computer system hooked up to the steering and engine of a vehicle to allow it to follow simple paths.",
+ "weight": "11246 g",
+ "to_hit": -2,
+ "color": "light_blue",
+ "symbol": "A",
+ "material": "steel",
+ "volume": "10 L",
+ "bashing": 3,
+ "category": "veh_parts",
+ "price": 90000
+ },
{
"type": "GENERIC",
"id": "vh_autoclave",
diff --git a/data/json/items/vehicle/wheel.json b/data/json/items/vehicle/wheel.json
index d42c3bf2b4d27..5d756050043d5 100644
--- a/data/json/items/vehicle/wheel.json
+++ b/data/json/items/vehicle/wheel.json
@@ -17,7 +17,7 @@
"type": "GENERIC",
"category": "veh_parts",
"name": "medium wheel hub assembly",
- "description": "A metal assembly that allows bolting a wheel on a car. Fit for a car wheel.",
+ "description": "A metal assembly that allows bolting a wheel on a car. Fit for a car wheel.",
"weight": 5000,
"volume": "6 L",
"price": 3000,
@@ -32,7 +32,7 @@
"type": "GENERIC",
"category": "veh_parts",
"name": "heavy wheel hub assembly",
- "description": "A heavy metal assembly that allows bolting a wheel on a car. Fit for a large car wheel.",
+ "description": "A heavy metal assembly that allows bolting a wheel on a car. Fit for a large car wheel.",
"weight": 6000,
"volume": "7 L",
"price": 5000,
@@ -186,6 +186,19 @@
"diameter": 20,
"width": 4
},
+ {
+ "id": "wheel_rail_small_pair",
+ "name": "pair of small rail wheels",
+ "type": "WHEEL",
+ "description": "A pair of small rail wheels. It fits small railroad rails found in places like amusement parks. Mostly for hobby purposes rather then transportation.",
+ "copy-from": "wheel_rail",
+ "price": 900,
+ "weight": "12239 g",
+ "price_postapoc": 750,
+ "symbol": "=",
+ "diameter": 10,
+ "width": 3
+ },
{
"id": "wheel_motorbike",
"type": "WHEEL",
diff --git a/data/json/legacy_artifact_active.json b/data/json/legacy_artifact_active.json
index c822e0c3c7629..8bcbf90fe23ad 100644
--- a/data/json/legacy_artifact_active.json
+++ b/data/json/legacy_artifact_active.json
@@ -408,7 +408,7 @@
"valid_targets": [ "self" ],
"min_aoe": 20,
"max_aoe": 20,
- "message": "You have a vision of the surrounding area...",
+ "message": "You have a vision of the surrounding area…",
"base_casting_time": 100
},
{
diff --git a/data/json/loot_zones.json b/data/json/loot_zones.json
new file mode 100644
index 0000000000000..fe6001d53d538
--- /dev/null
+++ b/data/json/loot_zones.json
@@ -0,0 +1,188 @@
+[
+ {
+ "id": "LOOT_UNSORTED",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Unsorted",
+ "description": "Place to drop unsorted loot. You can use \"sort out loot\" zone-action to sort items inside. It can overlap with Loot zones of different types."
+ },
+ {
+ "id": "LOOT_FOOD",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Food",
+ "description": "Destination for comestibles. If more specific food zone is not defined, all food is moved here."
+ },
+ {
+ "id": "LOOT_PFOOD",
+ "type": "LOOT_ZONE",
+ "name": "Loot: P.Food",
+ "description": "Destination for perishable comestibles. Does include perishable drinks if such zone is not specified."
+ },
+ {
+ "id": "LOOT_DRINK",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Drink",
+ "description": "Destination for drinks. Does include perishable drinks if such zone is not specified."
+ },
+ {
+ "id": "LOOT_PDRINK",
+ "type": "LOOT_ZONE",
+ "name": "Loot: P.Drink",
+ "description": "Destination for perishable drinks."
+ },
+ {
+ "id": "LOOT_CONTAINERS",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Containers",
+ "description": "Destination for empty containers."
+ },
+ {
+ "id": "LOOT_GUNS",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Guns",
+ "description": "Destination for guns, bows and similar wearpons."
+ },
+ {
+ "id": "LOOT_MAGAZINES",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Magazines",
+ "description": "Destination for gun magazines."
+ },
+ {
+ "id": "LOOT_AMMO",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Ammo",
+ "description": "Destination for ammo."
+ },
+ {
+ "id": "LOOT_WEAPONS",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Weapons",
+ "description": "Destination for melee weapons."
+ },
+ {
+ "id": "LOOT_TOOLS",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Tools",
+ "description": "Destination for tools."
+ },
+ {
+ "id": "LOOT_CLOTHING",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Clothing",
+ "description": "Destination for clothing. Does include filthy clothing if such zone is not specified."
+ },
+ {
+ "id": "LOOT_FCLOTHING",
+ "type": "LOOT_ZONE",
+ "name": "Loot: F.Clothing",
+ "description": "Destination for filthy clothing."
+ },
+ {
+ "id": "LOOT_DRUGS",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Drugs",
+ "description": "Destination for drugs and other medical items."
+ },
+ {
+ "id": "LOOT_BOOKS",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Books",
+ "description": "Destination for books and magazines."
+ },
+ {
+ "id": "LOOT_MODS",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Mods",
+ "description": "Destination for firearm modifications and similar items."
+ },
+ {
+ "id": "LOOT_MUTAGENS",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Mutagens",
+ "description": "Destination for mutagens, serums, and purifiers."
+ },
+ {
+ "id": "LOOT_BIONICS",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Bionics",
+ "description": "Destination for Compact Bionics Modules, a.k.a. CBMS."
+ },
+ {
+ "id": "LOOT_VEHICLE_PARTS",
+ "type": "LOOT_ZONE",
+ "name": "Loot: V.Parts",
+ "description": "Destination for vehicle parts."
+ },
+ {
+ "id": "LOOT_OTHER",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Other",
+ "description": "Destination for other miscellaneous items."
+ },
+ {
+ "id": "LOOT_FUEL",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Fuel",
+ "description": "Destination for gasoline, diesel, lamp oil and other substances used as a fuel."
+ },
+ {
+ "id": "LOOT_SEEDS",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Seeds",
+ "description": "Destination for seeds, stems and similar items."
+ },
+ {
+ "id": "LOOT_CHEMICAL",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Chemical",
+ "description": "Destination for chemicals."
+ },
+ {
+ "id": "LOOT_SPARE_PARTS",
+ "type": "LOOT_ZONE",
+ "name": "Loot: S.Parts",
+ "description": "Destination for spare parts."
+ },
+ {
+ "id": "LOOT_ARTIFACTS",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Artifacts",
+ "description": "Destination for artifacts"
+ },
+ {
+ "id": "LOOT_CORPSE",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Corpses",
+ "description": "Destination for corpses"
+ },
+ {
+ "id": "LOOT_ARMOR",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Armor",
+ "description": "Destination for armor. Does include filthy armor if such zone is not specified."
+ },
+ {
+ "id": "LOOT_FARMOR",
+ "type": "LOOT_ZONE",
+ "name": "Loot: F.Armor",
+ "description": "Destination for filthy armor."
+ },
+ {
+ "id": "LOOT_WOOD",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Wood",
+ "description": "Destination for firewood and items that can be used as such."
+ },
+ {
+ "id": "LOOT_CUSTOM",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Custom",
+ "description": "Destination for loot with a custom filter that you can modify"
+ },
+ {
+ "id": "LOOT_IGNORE",
+ "type": "LOOT_ZONE",
+ "name": "Loot: Ignore",
+ "description": "Items inside of this zone are ignored by \"sort out loot\" zone-action."
+ }
+]
diff --git a/data/json/mapgen/basecamps/modular_firestation1.json b/data/json/mapgen/basecamps/modular_firestation1.json
index 56a5ea0a1157a..070983896923f 100644
--- a/data/json/mapgen/basecamps/modular_firestation1.json
+++ b/data/json/mapgen/basecamps/modular_firestation1.json
@@ -50,14 +50,14 @@
],
"palettes": [ "fbmc_firestation1_palette" ],
"place_furniture": [
- { "furn": "f_null", "x": 0, "y": 2, "chance": 100 },
- { "furn": "f_null", "x": 0, "y": 3, "chance": 100 },
- { "furn": "f_null", "x": 1, "y": 2, "chance": 100 },
- { "furn": "f_null", "x": 1, "y": 3, "chance": 100 },
- { "furn": "f_null", "x": 1, "y": 4, "chance": 100 },
- { "furn": "f_null", "x": 2, "y": 2, "chance": 100 },
- { "furn": "f_null", "x": 2, "y": 3, "chance": 100 },
- { "furn": "f_null", "x": 2, "y": 4, "chance": 100 }
+ { "furn": "f_null", "x": 0, "y": 2 },
+ { "furn": "f_null", "x": 0, "y": 3 },
+ { "furn": "f_null", "x": 1, "y": 2 },
+ { "furn": "f_null", "x": 1, "y": 3 },
+ { "furn": "f_null", "x": 1, "y": 4 },
+ { "furn": "f_null", "x": 2, "y": 2 },
+ { "furn": "f_null", "x": 2, "y": 3 },
+ { "furn": "f_null", "x": 2, "y": 4 }
]
}
},
@@ -69,7 +69,7 @@
"place_nested": [ { "chunks": [ "fbmc_firestation1_kitchen1" ], "x": 1, "y": 9 } ],
"place_loot": [
{ "item": "2x4", "repeat": 24, "x": 2, "y": 10, "chance": 100 },
- { "item": "nail", "charges": 36, "x": 2, "y": 10, "chance": 100 }
+ { "item": "nail", "repeat": 36, "x": 2, "y": 10, "chance": 100 }
]
}
},
@@ -135,14 +135,14 @@
"object": {
"mapgensize": [ 6, 6 ],
"place_furniture": [
- { "furn": "f_null", "x": 0, "y": 3, "chance": 100 },
- { "furn": "f_null", "x": 0, "y": 4, "chance": 100 },
- { "furn": "f_null", "x": 2, "y": 1, "chance": 100 },
- { "furn": "f_null", "x": 2, "y": 2, "chance": 100 },
- { "furn": "f_null", "x": 1, "y": 0, "chance": 100 },
- { "furn": "f_null", "x": 0, "y": 0, "chance": 100 },
- { "furn": "f_null", "x": 1, "y": 1, "chance": 100 },
- { "furn": "f_null", "x": 1, "y": 2, "chance": 100 }
+ { "furn": "f_null", "x": 0, "y": 3 },
+ { "furn": "f_null", "x": 0, "y": 4 },
+ { "furn": "f_null", "x": 2, "y": 1 },
+ { "furn": "f_null", "x": 2, "y": 2 },
+ { "furn": "f_null", "x": 1, "y": 0 },
+ { "furn": "f_null", "x": 0, "y": 0 },
+ { "furn": "f_null", "x": 1, "y": 1 },
+ { "furn": "f_null", "x": 1, "y": 2 }
]
}
},
diff --git a/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_common.json b/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_common.json
new file mode 100644
index 0000000000000..4f1c2300cf5c4
--- /dev/null
+++ b/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_common.json
@@ -0,0 +1,73 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_0",
+ "object": {
+ "mapgensize": [ 6, 6 ],
+ "rows": [
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ ],
+ "palettes": [ "fbmsw_wood_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "faction_base_saltworks_0",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_0" ], "x": 15, "y": 3 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_brewery1_still",
+ "object": {
+ "mapgensize": [ 7, 7 ],
+ "rows": [
+ " ",
+ " ",
+ " ",
+ " ^ ",
+ " # ",
+ " s tr ",
+ " "
+ ],
+ "palettes": [ "fbmsw_wad_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_brewery1_southwest",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_brewery1_still" ], "x": 3, "y": 14 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_brewery2_kegs",
+ "object": {
+ "mapgensize": [ 7, 7 ],
+ "rows": [
+ " ",
+ " H r ",
+ " ",
+ " ",
+ " H ",
+ " H ",
+ " "
+ ],
+ "palettes": [ "fbmsw_wad_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_brewery2_southwest",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_brewery2_kegs" ], "x": 3, "y": 14 } ] }
+ }
+]
diff --git a/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_log.json b/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_log.json
new file mode 100644
index 0000000000000..4d9b0fafeb6b8
--- /dev/null
+++ b/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_log.json
@@ -0,0 +1,108 @@
+[
+ {
+ "type": "palette",
+ "id": "fbmsw_log_palette",
+ "terrain": {
+ ".": "t_floor_primitive",
+ "b": "t_floor_primitive",
+ "r": "t_floor_primitive",
+ "t": "t_floor_primitive",
+ "#": "t_floor_primitive",
+ "H": "t_floor_primitive",
+ "^": "t_floor_primitive",
+ "s": "t_floor_primitive",
+ "~": "t_swater_sh",
+ "o": "t_window_no_curtains",
+ "w": "t_wall_log",
+ "+": "t_door_c"
+ },
+ "furniture": {
+ "b": "f_bench",
+ "r": "f_rack",
+ "t": "f_table",
+ "#": "f_stool",
+ "c": "f_counter",
+ "H": "f_wood_keg",
+ "O": "f_fvat_empty",
+ "^": "f_still",
+ "s": "f_woodstove"
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "faction_base_saltworks_0",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_0" ], "x": 15, "y": 3 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_saltpan_log",
+ "object": {
+ "mapgensize": [ 7, 7 ],
+ "rows": [
+ "wwwowww",
+ "w.....w",
+ "w.c.c.w",
+ "o.~t~.o",
+ "w.~#~.w",
+ "w.....w",
+ "www+www"
+ ],
+ "palettes": [ "fbmsw_log_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_saltpan_log_northeast",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_saltpan_log" ], "x": 14, "y": 3 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_shack_log",
+ "object": {
+ "mapgensize": [ 6, 6 ],
+ "rows": [
+ " ",
+ " woww",
+ " wwrrw",
+ " +..to",
+ " orrrw",
+ " wwoww"
+ ],
+ "palettes": [ "fbmsw_log_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_shack_log_southeast",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_shack_log" ], "x": 15, "y": 15 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_brewery0_log",
+ "object": {
+ "mapgensize": [ 7, 7 ],
+ "rows": [
+ "wwwwwww",
+ "w.rrr.w",
+ "oH....+",
+ "wO....w",
+ "o.....w",
+ "w.....w",
+ "wwwwwww"
+ ],
+ "palettes": [ "fbmsw_log_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_brewery0_log_southwest",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_brewery0_log" ], "x": 3, "y": 14 } ] }
+ }
+]
diff --git a/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_metal.json b/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_metal.json
new file mode 100644
index 0000000000000..ac5c4d2c2c288
--- /dev/null
+++ b/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_metal.json
@@ -0,0 +1,102 @@
+[
+ {
+ "type": "palette",
+ "id": "fbmsw_metal_palette",
+ "terrain": {
+ ".": "t_metal_floor",
+ "b": "t_metal_floor",
+ "r": "t_metal_floor",
+ "t": "t_metal_floor",
+ "#": "t_metal_floor",
+ "H": "t_metal_floor",
+ "^": "t_metal_floor",
+ "s": "t_metal_floor",
+ "~": "t_swater_sh",
+ "o": "t_window_no_curtains",
+ "w": "t_scrap_wall",
+ "+": "t_door_c"
+ },
+ "furniture": {
+ "b": "f_bench",
+ "r": "f_rack",
+ "t": "f_table",
+ "#": "f_stool",
+ "c": "f_counter",
+ "H": "f_wood_keg",
+ "O": "f_fvat_empty",
+ "^": "f_still",
+ "s": "f_woodstove"
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_saltpan_metal",
+ "object": {
+ "mapgensize": [ 7, 7 ],
+ "rows": [
+ "wwwowww",
+ "w.....w",
+ "w.c.c.w",
+ "o.~t~.o",
+ "w.~#~.w",
+ "w.....w",
+ "www+www"
+ ],
+ "palettes": [ "fbmsw_metal_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_saltpan_metal_northeast",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_saltpan_metal" ], "x": 14, "y": 3 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_shack_metal",
+ "object": {
+ "mapgensize": [ 6, 6 ],
+ "rows": [
+ " ",
+ " woww",
+ " wwrrw",
+ " +..to",
+ " orrrw",
+ " wwoww"
+ ],
+ "palettes": [ "fbmsw_metal_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_shack_metal_southeast",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_shack_metal" ], "x": 15, "y": 15 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_brewery0_metal",
+ "object": {
+ "mapgensize": [ 7, 7 ],
+ "rows": [
+ "wwwwwww",
+ "w.rrr.w",
+ "oH....+",
+ "wO....w",
+ "o.....w",
+ "w.....w",
+ "wwwwwww"
+ ],
+ "palettes": [ "fbmsw_metal_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_brewery0_metal_southwest",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_brewery0_metal" ], "x": 3, "y": 14 } ] }
+ }
+]
diff --git a/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_rock.json b/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_rock.json
new file mode 100644
index 0000000000000..5e418f5a22370
--- /dev/null
+++ b/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_rock.json
@@ -0,0 +1,102 @@
+[
+ {
+ "type": "palette",
+ "id": "fbmsw_rock_palette",
+ "terrain": {
+ ".": "t_rock_floor",
+ "b": "t_rock_floor",
+ "r": "t_rock_floor",
+ "t": "t_rock_floor",
+ "#": "t_rock_floor",
+ "H": "t_rock_floor",
+ "^": "t_rock_floor",
+ "s": "t_rock_floor",
+ "~": "t_swater_sh",
+ "o": "t_window_no_curtains",
+ "w": "t_rock_wall",
+ "+": "t_door_c"
+ },
+ "furniture": {
+ "b": "f_bench",
+ "r": "f_rack",
+ "t": "f_table",
+ "#": "f_stool",
+ "c": "f_counter",
+ "H": "f_wood_keg",
+ "O": "f_fvat_empty",
+ "^": "f_still",
+ "s": "f_woodstove"
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_saltpan_rock",
+ "object": {
+ "mapgensize": [ 7, 7 ],
+ "rows": [
+ "wwwowww",
+ "w.....w",
+ "w.c.c.w",
+ "o.~t~.o",
+ "w.~#~.w",
+ "w.....w",
+ "www+www"
+ ],
+ "palettes": [ "fbmsw_rock_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_saltpan_rock_northeast",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_saltpan_rock" ], "x": 14, "y": 3 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_shack_rock",
+ "object": {
+ "mapgensize": [ 6, 6 ],
+ "rows": [
+ " ",
+ " woww",
+ " wwrrw",
+ " +..to",
+ " orrrw",
+ " wwoww"
+ ],
+ "palettes": [ "fbmsw_rock_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_shack_rock_southeast",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_shack_rock" ], "x": 15, "y": 15 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_brewery0_rock",
+ "object": {
+ "mapgensize": [ 7, 7 ],
+ "rows": [
+ "wwwwwww",
+ "w.rrr.w",
+ "oH....+",
+ "wO....w",
+ "o.....w",
+ "w.....w",
+ "wwwwwww"
+ ],
+ "palettes": [ "fbmsw_rock_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_brewery0_rock_southwest",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_brewery0_rock" ], "x": 3, "y": 14 } ] }
+ }
+]
diff --git a/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_wad.json b/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_wad.json
new file mode 100644
index 0000000000000..43fbdfb7ce1f3
--- /dev/null
+++ b/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_wad.json
@@ -0,0 +1,89 @@
+[
+ {
+ "type": "palette",
+ "id": "fbmsw_wad_palette",
+ "terrain": { ".": "t_dirtfloor", "~": "t_swater_sh", "o": "t_wall_wattle_half", "w": "t_wall_wattle", "+": "t_door_makeshift_c" },
+ "furniture": {
+ "b": "f_bench",
+ "r": "f_rack",
+ "t": "f_table",
+ "#": "f_stool",
+ "c": "f_counter",
+ "H": "f_wood_keg",
+ "O": "f_fvat_empty",
+ "^": "f_still",
+ "s": "f_woodstove"
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_saltpan_wad",
+ "object": {
+ "mapgensize": [ 7, 7 ],
+ "rows": [
+ "wwwowww",
+ "w.....w",
+ "w.c.c.w",
+ "o.~t~.o",
+ "w.~#~.w",
+ "w.....w",
+ "www+www"
+ ],
+ "palettes": [ "fbmsw_wad_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_saltpan_wad_northeast",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_saltpan_wad" ], "x": 14, "y": 3 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_shack_wad",
+ "object": {
+ "mapgensize": [ 6, 6 ],
+ "rows": [
+ " ",
+ " woww",
+ " wwrrw",
+ " +..to",
+ " orrrw",
+ " wwoww"
+ ],
+ "palettes": [ "fbmsw_wad_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_shack_wad_southeast",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_shack_wad" ], "x": 15, "y": 15 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_brewery0_wad",
+ "object": {
+ "mapgensize": [ 7, 7 ],
+ "rows": [
+ "wwwwwww",
+ "w.rrr.w",
+ "oH....+",
+ "wO....w",
+ "o.....w",
+ "w.....w",
+ "wwwwwww"
+ ],
+ "palettes": [ "fbmsw_wad_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_brewery0_wad_southwest",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_brewery0_wad" ], "x": 3, "y": 14 } ] }
+ }
+]
diff --git a/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_wood.json b/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_wood.json
new file mode 100644
index 0000000000000..83b9392c33229
--- /dev/null
+++ b/data/json/mapgen/basecamps/modular_saltworks/modular_saltworks_wood.json
@@ -0,0 +1,102 @@
+[
+ {
+ "type": "palette",
+ "id": "fbmsw_wood_palette",
+ "terrain": {
+ ".": "t_floor",
+ "b": "t_floor",
+ "r": "t_floor",
+ "t": "t_floor",
+ "#": "t_floor",
+ "H": "t_floor",
+ "^": "t_floor",
+ "s": "t_floor",
+ "~": "t_swater_sh",
+ "o": "t_window_no_curtains",
+ "w": "t_wall_wood",
+ "+": "t_door_c"
+ },
+ "furniture": {
+ "b": "f_bench",
+ "r": "f_rack",
+ "t": "f_table",
+ "#": "f_stool",
+ "c": "f_counter",
+ "H": "f_wood_keg",
+ "O": "f_fvat_empty",
+ "^": "f_still",
+ "s": "f_woodstove"
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_saltpan_wood",
+ "object": {
+ "mapgensize": [ 7, 7 ],
+ "rows": [
+ "wwwowww",
+ "w.....w",
+ "w.c.c.w",
+ "o.~t~.o",
+ "w.~#~.w",
+ "w.....w",
+ "www+www"
+ ],
+ "palettes": [ "fbmsw_wood_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_saltpan_wood_northeast",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_saltpan_wood" ], "x": 14, "y": 3 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_shack_wood",
+ "object": {
+ "mapgensize": [ 6, 6 ],
+ "rows": [
+ " ",
+ " woww",
+ " wwrrw",
+ " +..to",
+ " orrrw",
+ " wwoww"
+ ],
+ "palettes": [ "fbmsw_wood_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_shack_wood_southeast",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_shack_wood" ], "x": 15, "y": 15 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmsw_brewery0_wood",
+ "object": {
+ "mapgensize": [ 7, 7 ],
+ "rows": [
+ "wwwwwww",
+ "w.rrr.w",
+ "oH....+",
+ "wO....w",
+ "o.....w",
+ "w.....w",
+ "wwwwwww"
+ ],
+ "palettes": [ "fbmsw_wood_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmsw_brewery0_wood_southwest",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmsw_brewery0_wood" ], "x": 3, "y": 14 } ] }
+ }
+]
diff --git a/data/json/mapgen/basecamps/modular_shelter/modular_shelter_common.json b/data/json/mapgen/basecamps/modular_shelter/modular_shelter_common.json
index b57a89a18abc4..09cd4d6977119 100644
--- a/data/json/mapgen/basecamps/modular_shelter/modular_shelter_common.json
+++ b/data/json/mapgen/basecamps/modular_shelter/modular_shelter_common.json
@@ -70,112 +70,6 @@
"method": "json",
"object": { "set": [ { "point": "terrain", "id": "t_water_pump", "x": 16, "y": 9 } ] }
},
- {
- "type": "mapgen",
- "method": "json",
- "nested_mapgen_id": "fbmc_shelter_bedroom_SE",
- "object": {
- "mapgensize": [ 4, 4 ],
- "rows": [
- "wwww",
- "w ",
- "d ",
- "w "
- ],
- "palettes": [ "fbmc_shelter_palette" ]
- }
- },
- {
- "type": "mapgen",
- "update_mapgen_id": "fbmc_shelter_bedroom_se",
- "method": "json",
- "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_SE" ], "x": 15, "y": 19 } ] }
- },
- {
- "type": "mapgen",
- "method": "json",
- "nested_mapgen_id": "fbmc_shelter_bedroom_E",
- "object": {
- "mapgensize": [ 4, 4 ],
- "rows": [
- "wwww",
- "w ",
- "d ",
- "w "
- ],
- "palettes": [ "fbmc_shelter_palette" ]
- }
- },
- {
- "type": "mapgen",
- "update_mapgen_id": "fbmc_shelter_bedroom_e",
- "method": "json",
- "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_E" ], "x": 15, "y": 15 } ] }
- },
- {
- "type": "mapgen",
- "method": "json",
- "nested_mapgen_id": "fbmc_shelter_bedroom_SW",
- "object": {
- "mapgensize": [ 5, 5 ],
- "rows": [
- " wwww",
- " w",
- " d",
- " w",
- " www"
- ],
- "palettes": [ "fbmc_shelter_palette" ]
- }
- },
- {
- "type": "mapgen",
- "update_mapgen_id": "fbmc_shelter_bedroom_SW",
- "method": "json",
- "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_SW" ], "x": 4, "y": 16 } ] }
- },
- {
- "type": "mapgen",
- "method": "json",
- "nested_mapgen_id": "fbmc_shelter_bedroom_W",
- "object": {
- "mapgensize": [ 4, 4 ],
- "rows": [
- "wwww",
- " w",
- " d",
- " w"
- ],
- "palettes": [ "fbmc_shelter_palette" ]
- }
- },
- {
- "type": "mapgen",
- "update_mapgen_id": "fbmc_shelter_bedroom_W",
- "method": "json",
- "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_W" ], "x": 5, "y": 12 } ] }
- },
- {
- "type": "mapgen",
- "method": "json",
- "nested_mapgen_id": "fbmc_shelter_bedroom_NW",
- "object": {
- "mapgensize": [ 4, 4 ],
- "rows": [
- " ",
- " w",
- " d",
- " w"
- ],
- "palettes": [ "fbmc_shelter_palette" ]
- }
- },
- {
- "type": "mapgen",
- "update_mapgen_id": "fbmc_shelter_bedroom_NW",
- "method": "json",
- "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_NW" ], "x": 5, "y": 8 } ] }
- },
{
"type": "mapgen",
"method": "json",
diff --git a/data/json/mapgen/basecamps/modular_shelter/modular_shelter_standard.json b/data/json/mapgen/basecamps/modular_shelter/modular_shelter_standard.json
index d0ea3612852bc..b9b9d6c94e010 100644
--- a/data/json/mapgen/basecamps/modular_shelter/modular_shelter_standard.json
+++ b/data/json/mapgen/basecamps/modular_shelter/modular_shelter_standard.json
@@ -1,26 +1,8 @@
[
- {
- "type": "palette",
- "id": "fbmc_shelter_palette_rock",
- "terrain": { "w": "t_rock_wall", "d": "t_door_c" },
- "furniture": {
- "h": "f_chair",
- "t": "f_table",
- "c": "f_workbench",
- "r": "f_rack",
- "b": "f_bed",
- "m": "f_straw_bed",
- "n": "f_makeshift_bed",
- "L": "f_locker",
- "s": "f_sofa",
- "C": "f_armchair",
- "B": "f_bookcase"
- }
- },
{
"type": "mapgen",
"method": "json",
- "nested_mapgen_id": "fbmc_shelter_bedroom_SE_rock",
+ "nested_mapgen_id": "fbmc_shelter_bedroom_SE",
"object": {
"mapgensize": [ 4, 4 ],
"rows": [
@@ -29,19 +11,19 @@
"d ",
"w "
],
- "palettes": [ "fbmc_shelter_palette_rock" ]
+ "palettes": [ "fbmc_shelter_palette" ]
}
},
{
"type": "mapgen",
- "update_mapgen_id": "fbmc_shelter_bedroom_se_rock",
+ "update_mapgen_id": "fbmc_shelter_bedroom_se",
"method": "json",
- "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_SE_rock" ], "x": 15, "y": 19 } ] }
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_SE" ], "x": 15, "y": 19 } ] }
},
{
"type": "mapgen",
"method": "json",
- "nested_mapgen_id": "fbmc_shelter_bedroom_E_rock",
+ "nested_mapgen_id": "fbmc_shelter_bedroom_E",
"object": {
"mapgensize": [ 4, 4 ],
"rows": [
@@ -50,19 +32,19 @@
"d ",
"w "
],
- "palettes": [ "fbmc_shelter_palette_rock" ]
+ "palettes": [ "fbmc_shelter_palette" ]
}
},
{
"type": "mapgen",
- "update_mapgen_id": "fbmc_shelter_bedroom_e_rock",
+ "update_mapgen_id": "fbmc_shelter_bedroom_e",
"method": "json",
- "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_E_rock" ], "x": 15, "y": 15 } ] }
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_E" ], "x": 15, "y": 15 } ] }
},
{
"type": "mapgen",
"method": "json",
- "nested_mapgen_id": "fbmc_shelter_bedroom_SW_rock",
+ "nested_mapgen_id": "fbmc_shelter_bedroom_SW",
"object": {
"mapgensize": [ 5, 5 ],
"rows": [
@@ -72,19 +54,19 @@
" w",
" www"
],
- "palettes": [ "fbmc_shelter_palette_rock" ]
+ "palettes": [ "fbmc_shelter_palette" ]
}
},
{
"type": "mapgen",
- "update_mapgen_id": "fbmc_shelter_bedroom_SW_rock",
+ "update_mapgen_id": "fbmc_shelter_bedroom_SW",
"method": "json",
- "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_SW_rock" ], "x": 4, "y": 16 } ] }
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_SW" ], "x": 4, "y": 16 } ] }
},
{
"type": "mapgen",
"method": "json",
- "nested_mapgen_id": "fbmc_shelter_bedroom_W_rock",
+ "nested_mapgen_id": "fbmc_shelter_bedroom_W",
"object": {
"mapgensize": [ 4, 4 ],
"rows": [
@@ -93,19 +75,19 @@
" d",
" w"
],
- "palettes": [ "fbmc_shelter_palette_rock" ]
+ "palettes": [ "fbmc_shelter_palette" ]
}
},
{
"type": "mapgen",
- "update_mapgen_id": "fbmc_shelter_bedroom_W_rock",
+ "update_mapgen_id": "fbmc_shelter_bedroom_W",
"method": "json",
- "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_W_rock" ], "x": 5, "y": 12 } ] }
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_W" ], "x": 5, "y": 12 } ] }
},
{
"type": "mapgen",
"method": "json",
- "nested_mapgen_id": "fbmc_shelter_bedroom_NW_rock",
+ "nested_mapgen_id": "fbmc_shelter_bedroom_NW",
"object": {
"mapgensize": [ 4, 4 ],
"rows": [
@@ -114,13 +96,13 @@
" d",
" w"
],
- "palettes": [ "fbmc_shelter_palette_rock" ]
+ "palettes": [ "fbmc_shelter_palette" ]
}
},
{
"type": "mapgen",
- "update_mapgen_id": "fbmc_shelter_bedroom_NW_rock",
+ "update_mapgen_id": "fbmc_shelter_bedroom_NW",
"method": "json",
- "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_NW_rock" ], "x": 5, "y": 8 } ] }
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_bedroom_NW" ], "x": 5, "y": 8 } ] }
}
]
diff --git a/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_common.json b/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_common.json
new file mode 100644
index 0000000000000..e0dad10157f68
--- /dev/null
+++ b/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_common.json
@@ -0,0 +1,494 @@
+[
+ {
+ "type": "palette",
+ "id": "fbmc_shelter_1_palette",
+ "terrain": { "w": "t_wall_w", "d": "t_door_c" },
+ "furniture": {
+ "h": "f_chair",
+ "t": "f_table",
+ "x": "f_coffee_table",
+ "c": "f_workbench",
+ "r": "f_rack",
+ "b": "f_bed",
+ "m": "f_straw_bed",
+ "n": "f_makeshift_bed",
+ "L": "f_locker",
+ "s": "f_sofa",
+ "C": "f_armchair",
+ "B": "f_bookcase"
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_0",
+ "method": "json",
+ "object": {
+ "set": [
+ { "point": "terrain", "id": "t_floor", "x": 15, "y": 15 },
+ { "point": "furniture", "id": "f_bulletin", "x": 15, "y": 15 }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_fireplace",
+ "method": "json",
+ "object": {
+ "set": [
+ { "point": "furniture", "id": "f_fireplace", "x": 18, "y": 14 },
+ { "point": "furniture", "id": "f_table", "x": 18, "y": 15 }
+ ],
+ "place_loot": [ { "item": "pot", "x": 18, "y": 15, "chance": 100 } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_brazier",
+ "method": "json",
+ "object": {
+ "set": [
+ { "point": "furniture", "id": "f_brazier", "x": 18, "y": 14 },
+ { "point": "furniture", "id": "f_table", "x": 18, "y": 15 }
+ ],
+ "place_loot": [ { "item": "pot", "x": 18, "y": 15, "chance": 100 } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_stove",
+ "method": "json",
+ "object": {
+ "set": [
+ { "point": "furniture", "id": "f_woodstove", "x": 18, "y": 14 },
+ { "point": "furniture", "id": "f_table", "x": 18, "y": 15 }
+ ],
+ "place_loot": [ { "item": "pot", "x": 18, "y": 15, "chance": 100 } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_well",
+ "method": "json",
+ "object": { "set": [ { "point": "terrain", "id": "t_water_pump", "x": 16, "y": 18 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_straw_nw_wall",
+ "object": { "mapgensize": [ 2, 2 ], "rows": [
+ "mL",
+ "m "
+ ], "palettes": [ "fbmc_shelter_1_palette" ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_straw_NW",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_straw_nw_wall" ], "x": 8, "y": 8 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_makeshift_nw_wall",
+ "object": { "mapgensize": [ 2, 2 ], "rows": [
+ "nL",
+ "n "
+ ], "palettes": [ "fbmc_shelter_1_palette" ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_makeshift_NW",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_makeshift_nw_wall" ], "x": 8, "y": 8 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_standard_bed_nw_wall",
+ "object": { "mapgensize": [ 2, 2 ], "rows": [
+ "bL",
+ "b "
+ ], "palettes": [ "fbmc_shelter_1_palette" ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_standard_NW",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_standard_bed_nw_wall" ], "x": 8, "y": 8 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_w1_wall",
+ "object": { "mapgensize": [ 2, 2 ], "rows": [
+ "bb",
+ "L "
+ ], "palettes": [ "fbmc_shelter_1_palette" ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_W1",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_w1_wall" ], "x": 5, "y": 10 } ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_W2",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_w1_wall" ], "x": 5, "y": 13 } ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_W3",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_w1_wall" ], "x": 5, "y": 16 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_straw_west_wall",
+ "object": { "mapgensize": [ 2, 2 ], "rows": [
+ "mm",
+ "L "
+ ], "palettes": [ "fbmc_shelter_1_palette" ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_straw_W1",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_straw_west_wall" ], "x": 5, "y": 10 } ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_straw_W2",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_straw_west_wall" ], "x": 5, "y": 13 } ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_straw_W3",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_straw_west_wall" ], "x": 5, "y": 16 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_makeshift_west_wall",
+ "object": { "mapgensize": [ 2, 2 ], "rows": [
+ "nn",
+ "L "
+ ], "palettes": [ "fbmc_shelter_1_palette" ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_makeshift_W1",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_makeshift_west_wall" ], "x": 5, "y": 10 } ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_makeshift_W2",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_makeshift_west_wall" ], "x": 5, "y": 13 } ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_makeshift_W3",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_makeshift_west_wall" ], "x": 5, "y": 16 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_standard_southwest_wall",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ "L ",
+ " ",
+ "b ",
+ "bt "
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_standard_SW",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_standard_southwest_wall" ], "x": 5, "y": 19 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_standard_southwest_wall",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ "L ",
+ " ",
+ "b ",
+ "bt "
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_standard_SW",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_standard_southwest_wall" ], "x": 5, "y": 19 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_straw_southwest_wall",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ "L ",
+ " ",
+ "m ",
+ "mt "
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_straw_SW",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_straw_southwest_wall" ], "x": 5, "y": 19 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_makeshift_southwest_wall",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ "L ",
+ " ",
+ "n ",
+ "nt "
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_makeshift_SW",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_makeshift_southwest_wall" ], "x": 5, "y": 19 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_standard_south1_wall",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ "L L",
+ "b b",
+ "btb"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_standard_S1",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_standard_south1_wall" ], "x": 8, "y": 20 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_straw_south1_wall",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ "L L",
+ "m m",
+ "mtm"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_straw_S1",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_straw_south1_wall" ], "x": 8, "y": 20 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_makeshift_south1_wall",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ "L L",
+ "n n",
+ "ntn"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_makeshift_S1",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_makeshift_south1_wall" ], "x": 8, "y": 20 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_standard_south2_wall",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ " L",
+ " bb",
+ " L",
+ " bb"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_standard_S2",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_standard_south2_wall" ], "x": 11, "y": 19 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_straw_south2_wall",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ " L",
+ " mm",
+ " L",
+ " mm"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_straw_S2",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_straw_south2_wall" ], "x": 11, "y": 19 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bed_makeshift_south2_wall",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ " L",
+ " nn",
+ " L",
+ " nn"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bed_makeshift_S2",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bed_makeshift_south2_wall" ], "x": 11, "y": 19 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_dining_room",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ " hth",
+ " hth",
+ " hth",
+ " hth"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_dining",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_dining_room" ], "x": 12, "y": 9 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_living_room",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ "sss",
+ " ",
+ "xxx"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_livingroom",
+ "method": "json",
+ "object": {
+ "place_nested": [ { "chunks": [ "fbmc_shelter_1_living_room" ], "x": 9, "y": 12 } ],
+ "set": [
+ { "point": "furniture", "id": "f_bookcase", "x": 8, "y": 16 },
+ { "point": "furniture", "id": "f_bookcase", "x": 9, "y": 16 },
+ { "point": "furniture", "id": "f_bookcase", "x": 10, "y": 16 }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_pantry",
+ "method": "json",
+ "object": {
+ "set": [
+ { "point": "furniture", "id": "f_rack_wood", "x": 18, "y": 16 },
+ { "point": "furniture", "id": "f_rack_wood", "x": 18, "y": 17 },
+ { "point": "furniture", "id": "f_rack_wood", "x": 13, "y": 15 },
+ { "point": "furniture", "id": "f_rack_wood", "x": 14, "y": 15 },
+ { "point": "furniture", "id": "f_rack_wood", "x": 18, "y": 20 },
+ { "point": "furniture", "id": "f_rack_wood", "x": 18, "y": 21 },
+ { "point": "furniture", "id": "f_rack_wood", "x": 18, "y": 22 }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_craftspot",
+ "method": "json",
+ "object": {
+ "set": [
+ { "point": "furniture", "id": "f_workbench", "x": 16, "y": 15 },
+ { "point": "furniture", "id": "f_workbench", "x": 16, "y": 16 },
+ { "point": "furniture", "id": "f_workbench", "x": 17, "y": 11 }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_radio_console",
+ "method": "json",
+ "object": {
+ "set": [
+ { "point": "terrain", "id": "t_radio_tower", "x": 18, "y": 8 },
+ { "point": "terrain", "id": "t_radio_controls", "x": 18, "y": 9 }
+ ]
+ }
+ }
+]
diff --git a/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_log.json b/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_log.json
new file mode 100644
index 0000000000000..317b9c6f703a3
--- /dev/null
+++ b/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_log.json
@@ -0,0 +1,157 @@
+[
+ {
+ "type": "palette",
+ "id": "fbmc_shelter_1_palette_log",
+ "terrain": { "w": "t_wall_log", "d": "t_door_c" },
+ "furniture": {
+ "h": "f_chair",
+ "t": "f_table",
+ "x": "f_coffee_table",
+ "c": "f_workbench",
+ "r": "f_rack",
+ "b": "f_bed",
+ "m": "f_straw_bed",
+ "n": "f_makeshift_bed",
+ "L": "f_locker",
+ "s": "f_sofa",
+ "C": "f_armchair",
+ "B": "f_bookcase"
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_NW_log",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " w",
+ "wdw"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_log" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_NW_log",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_NW_log" ], "x": 8, "y": 8 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W1_log",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " d",
+ "www"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_log" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_W1_log",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_W1_log" ], "x": 5, "y": 10 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W2_log",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " d",
+ "www"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_log" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_W2",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_W2_log" ], "x": 5, "y": 13 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W3_log",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " X ",
+ " d"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_log" ],
+ "terrain": { "X": "t_floor" }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_SW_log",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ " ww",
+ " w ",
+ " w ",
+ " w "
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_log" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_SW_log",
+ "method": "json",
+ "object": {
+ "place_nested": [
+ { "chunks": [ "fbmc_shelter_1_bedroom_SW_log" ], "x": 5, "y": 19 },
+ { "chunks": [ "fbmc_shelter_1_bedroom_W3_log" ], "x": 5, "y": 16 }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_S1_log",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ " dww",
+ " w",
+ " w",
+ " w"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_log" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_S2_log",
+ "object": { "mapgensize": [ 2, 2 ], "rows": [
+ "dw",
+ " "
+ ], "palettes": [ "fbmc_shelter_1_palette_log" ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_S_log",
+ "method": "json",
+ "object": {
+ "place_nested": [
+ { "chunks": [ "fbmc_shelter_1_bedroom_S1_log" ], "x": 8, "y": 19 },
+ { "chunks": [ "fbmc_shelter_1_bedroom_S2_log" ], "x": 12, "y": 19 }
+ ]
+ }
+ }
+]
diff --git a/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_rock.json b/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_rock.json
new file mode 100644
index 0000000000000..513841147063c
--- /dev/null
+++ b/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_rock.json
@@ -0,0 +1,157 @@
+[
+ {
+ "type": "palette",
+ "id": "fbmc_shelter_1_palette_rock",
+ "terrain": { "w": "t_rock_wall", "d": "t_door_c" },
+ "furniture": {
+ "h": "f_chair",
+ "t": "f_table",
+ "x": "f_coffee_table",
+ "c": "f_workbench",
+ "r": "f_rack",
+ "b": "f_bed",
+ "m": "f_straw_bed",
+ "n": "f_makeshift_bed",
+ "L": "f_locker",
+ "s": "f_sofa",
+ "C": "f_armchair",
+ "B": "f_bookcase"
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_NW_rock",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " w",
+ "wdw"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_rock" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_NW_rock",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_NW_rock" ], "x": 8, "y": 8 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W1_rock",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " d",
+ "www"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_rock" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_W1_rock",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_W1_rock" ], "x": 5, "y": 10 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W2_rock",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " d",
+ "www"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_rock" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_W2",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_W2_rock" ], "x": 5, "y": 13 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W3_rock",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " X ",
+ " d"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_rock" ],
+ "terrain": { "X": "t_floor" }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_SW_rock",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ " ww",
+ " w ",
+ " w ",
+ " w "
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_rock" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_SW_rock",
+ "method": "json",
+ "object": {
+ "place_nested": [
+ { "chunks": [ "fbmc_shelter_1_bedroom_SW_rock" ], "x": 5, "y": 19 },
+ { "chunks": [ "fbmc_shelter_1_bedroom_W3_rock" ], "x": 5, "y": 16 }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_S1_rock",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ " dww",
+ " w",
+ " w",
+ " w"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_rock" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_S2_rock",
+ "object": { "mapgensize": [ 2, 2 ], "rows": [
+ "dw",
+ " "
+ ], "palettes": [ "fbmc_shelter_1_palette_rock" ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_S_rock",
+ "method": "json",
+ "object": {
+ "place_nested": [
+ { "chunks": [ "fbmc_shelter_1_bedroom_S1_rock" ], "x": 8, "y": 19 },
+ { "chunks": [ "fbmc_shelter_1_bedroom_S2_rock" ], "x": 12, "y": 19 }
+ ]
+ }
+ }
+]
diff --git a/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_standard.json b/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_standard.json
new file mode 100644
index 0000000000000..270ab9e69df87
--- /dev/null
+++ b/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_standard.json
@@ -0,0 +1,138 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_NW",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " w",
+ "wdw"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_NW",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_NW" ], "x": 8, "y": 8 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W1",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " d",
+ "www"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_W1",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_W1" ], "x": 5, "y": 10 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W2",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " d",
+ "www"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_W2",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_W2" ], "x": 5, "y": 13 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W3",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " X ",
+ " d"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ],
+ "terrain": { "X": "t_floor" }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_SW",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ " ww",
+ " w ",
+ " w ",
+ " w "
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_standard_bedroom_SW",
+ "method": "json",
+ "object": {
+ "place_nested": [
+ { "chunks": [ "fbmc_shelter_1_bedroom_SW" ], "x": 5, "y": 19 },
+ { "chunks": [ "fbmc_shelter_1_bedroom_W3" ], "x": 5, "y": 16 }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_S1",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ " dww",
+ " w",
+ " w",
+ " w"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_S2",
+ "object": { "mapgensize": [ 2, 2 ], "rows": [
+ "dw",
+ " "
+ ], "palettes": [ "fbmc_shelter_1_palette" ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_S",
+ "method": "json",
+ "object": {
+ "place_nested": [
+ { "chunks": [ "fbmc_shelter_1_bedroom_S1" ], "x": 8, "y": 19 },
+ { "chunks": [ "fbmc_shelter_1_bedroom_S2" ], "x": 12, "y": 19 }
+ ]
+ }
+ }
+]
diff --git a/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_wad.json b/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_wad.json
new file mode 100644
index 0000000000000..007ad5abd03eb
--- /dev/null
+++ b/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_wad.json
@@ -0,0 +1,157 @@
+[
+ {
+ "type": "palette",
+ "id": "fbmc_shelter_1_palette_wad",
+ "terrain": { "w": "t_wall_wattle", "d": "t_door_makeshift_c" },
+ "furniture": {
+ "h": "f_chair",
+ "t": "f_table",
+ "x": "f_coffee_table",
+ "c": "f_workbench",
+ "r": "f_rack",
+ "b": "f_bed",
+ "m": "f_straw_bed",
+ "n": "f_makeshift_bed",
+ "L": "f_locker",
+ "s": "f_sofa",
+ "C": "f_armchair",
+ "B": "f_bookcase"
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_NW_wad",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " w",
+ "wdw"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_wad" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_NW_wad",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_NW_wad" ], "x": 8, "y": 8 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W1_wad",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " d",
+ "www"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_wad" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_W1_wad",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_W1_wad" ], "x": 5, "y": 10 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W2_wad",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " d",
+ "www"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_wad" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_W2",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_W2_wad" ], "x": 5, "y": 13 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W3_wad",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " X ",
+ " d"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_wad" ],
+ "terrain": { "X": "t_floor" }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_SW_wad",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ " ww",
+ " w ",
+ " w ",
+ " w "
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_wad" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_SW_wad",
+ "method": "json",
+ "object": {
+ "place_nested": [
+ { "chunks": [ "fbmc_shelter_1_bedroom_SW_wad" ], "x": 5, "y": 19 },
+ { "chunks": [ "fbmc_shelter_1_bedroom_W3_wad" ], "x": 5, "y": 16 }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_S1_wad",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ " dww",
+ " w",
+ " w",
+ " w"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_wad" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_S2_wad",
+ "object": { "mapgensize": [ 2, 2 ], "rows": [
+ "dw",
+ " "
+ ], "palettes": [ "fbmc_shelter_1_palette_wad" ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_S_wad",
+ "method": "json",
+ "object": {
+ "place_nested": [
+ { "chunks": [ "fbmc_shelter_1_bedroom_S1_wad" ], "x": 8, "y": 19 },
+ { "chunks": [ "fbmc_shelter_1_bedroom_S2_wad" ], "x": 12, "y": 19 }
+ ]
+ }
+ }
+]
diff --git a/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_wood.json b/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_wood.json
new file mode 100644
index 0000000000000..5baa147d8b3ac
--- /dev/null
+++ b/data/json/mapgen/basecamps/modular_shelter_1/modular_shelter_1_wood.json
@@ -0,0 +1,157 @@
+[
+ {
+ "type": "palette",
+ "id": "fbmc_shelter_1_palette_wood",
+ "terrain": { "w": "t_wall_wood", "d": "t_door_c" },
+ "furniture": {
+ "h": "f_chair",
+ "t": "f_table",
+ "x": "f_coffee_table",
+ "c": "f_workbench",
+ "r": "f_rack",
+ "b": "f_bed",
+ "m": "f_straw_bed",
+ "n": "f_makeshift_bed",
+ "L": "f_locker",
+ "s": "f_sofa",
+ "C": "f_armchair",
+ "B": "f_bookcase"
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_NW_wood",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " w",
+ "wdw"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_wood" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_NW_wood",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_NW_wood" ], "x": 8, "y": 8 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W1_wood",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " d",
+ "www"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_wood" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_W1_wood",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_W1_wood" ], "x": 5, "y": 10 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W2_wood",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " d",
+ "www"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_wood" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_W2",
+ "method": "json",
+ "object": { "place_nested": [ { "chunks": [ "fbmc_shelter_1_bedroom_W2_wood" ], "x": 5, "y": 13 } ] }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_W3_wood",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rows": [
+ " w",
+ " X ",
+ " d"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_wood" ],
+ "terrain": { "X": "t_floor" }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_SW_wood",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ " ww",
+ " w ",
+ " w ",
+ " w "
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_wood" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_SW_wood",
+ "method": "json",
+ "object": {
+ "place_nested": [
+ { "chunks": [ "fbmc_shelter_1_bedroom_SW_wood" ], "x": 5, "y": 19 },
+ { "chunks": [ "fbmc_shelter_1_bedroom_W3_wood" ], "x": 5, "y": 16 }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_S1_wood",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rows": [
+ " dww",
+ " w",
+ " w",
+ " w"
+ ],
+ "palettes": [ "fbmc_shelter_1_palette_wood" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "nested_mapgen_id": "fbmc_shelter_1_bedroom_S2_wood",
+ "object": { "mapgensize": [ 2, 2 ], "rows": [
+ "dw",
+ " "
+ ], "palettes": [ "fbmc_shelter_1_palette_wood" ] }
+ },
+ {
+ "type": "mapgen",
+ "update_mapgen_id": "fbmc_shelter_1_bedroom_S_wood",
+ "method": "json",
+ "object": {
+ "place_nested": [
+ { "chunks": [ "fbmc_shelter_1_bedroom_S1_wood" ], "x": 8, "y": 19 },
+ { "chunks": [ "fbmc_shelter_1_bedroom_S2_wood" ], "x": 12, "y": 19 }
+ ]
+ }
+ }
+]
diff --git a/data/json/mapgen/basement/basement_chem.json b/data/json/mapgen/basement/basement_chem.json
index 21ba2910a8007..7f8132666ab1f 100644
--- a/data/json/mapgen/basement/basement_chem.json
+++ b/data/json/mapgen/basement/basement_chem.json
@@ -3,43 +3,194 @@
"type": "mapgen",
"method": "json",
"om_terrain": [ "basement" ],
- "weight": 500,
+ "weight": 250,
"object": {
- "fill_ter": "t_rock",
"rotation": [ 0, 3 ],
+ "fill_ter": "t_rock",
"rows": [
- "|----------------------|",
- "|c....................c|",
- "|c....................c|",
- "|c....................c|",
- "|c....................c|",
- "|c....................c|",
- "|c....................c|",
- "|c....................c|",
- "|c....................c|",
- "|c....................c|",
- "|c....................c|",
- "|c....................c|",
- "|c....................c|",
- "|c....................c|",
- "|c....................c|",
- "|......................|",
- "|.........|++|.........|",
- "|.........|..|.........|",
- "|.........|<<|.........|",
- "------------------------",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " |||||||||||| ",
+ " |F_XXX|X__c| ",
+ " |?_XXX|X__4| ",
+ " |?__XX|X__c| ",
+ " |||+|||X__H| ",
+ " |R________U| ",
+ " |R__TTTT__U| ",
+ " |R___TTh__c| ",
+ " |R___TT___c| ",
+ " |R________i| ",
+ " |||+|++||||| ",
+ " |W__|..| ",
+ " |E_R|<<| ",
+ " |||||||| ",
" ",
" ",
" ",
" "
],
- "terrain": { "+": "t_door_c", "-": "t_wall", ".": "t_rock_floor", "<": "t_stairs_up", "c": "t_rock_floor", "|": "t_wall" },
- "furniture": { "c": "f_counter" },
- "place_loot": [
- { "group": "chem_home", "x": 1, "y": [ 1, 14 ], "chance": 10, "repeat": [ 1, 10 ] },
- { "group": "electronics", "x": 22, "y": [ 1, 14 ], "chance": 10, "repeat": [ 1, 10 ] }
+ "terrain": {
+ "|": "t_wall",
+ "<": "t_stairs_up",
+ "+": "t_door_c",
+ ".": "t_floor",
+ "_": "t_linoleum_gray",
+ "c": "t_linoleum_gray",
+ "U": "t_linoleum_gray",
+ "X": "t_linoleum_gray",
+ "W": "t_linoleum_gray",
+ "E": "t_linoleum_gray",
+ "i": "t_linoleum_gray",
+ "H": "t_linoleum_gray",
+ "4": "t_machinery_old",
+ "R": "t_linoleum_gray",
+ "?": "t_linoleum_gray",
+ "h": "t_linoleum_gray",
+ "T": "t_linoleum_gray",
+ "F": "t_linoleum_gray"
+ },
+ "liquids": { "E": { "liquid": "water_clean", "amount": [ 0, 100 ] } },
+ "furniture": {
+ "T": "f_workbench",
+ "c": "f_counter",
+ "h": "f_chair",
+ "R": "f_rack",
+ "E": "f_water_heater",
+ "W": "f_water_purifier",
+ "X": [ "f_crate_c", "f_crate_o", "f_cardboard_box" ],
+ "U": "f_utility_shelf",
+ "H": "f_bookcase",
+ "F": "f_fridge",
+ "i": "f_sink",
+ "?": "f_sofa"
+ },
+ "items": {
+ "U": [ { "item": "cleaning", "chance": 30 }, { "item": "home_hw", "chance": 50 } ],
+ "c": [ { "item": "home_hw", "chance": 70 } ],
+ "R": [ { "item": "supplies_hardware", "chance": 30 } ],
+ "X": [
+ { "item": "electronics", "chance": 30 },
+ { "item": "supplies_electronics", "chance": 30 },
+ { "item": "supplies_reagents_lab", "chance": 10 }
+ ],
+ "i": [ { "item": "trash", "chance": 60 } ],
+ "F": [ { "item": "fridgesnacks", "chance": 60 } ],
+ "T": [ { "item": "chem_home", "chance": 10 }, { "item": "electronics", "chance": 30 } ],
+ "H": [ { "item": "magazines", "chance": 30, "repeat": [ 1, 2 ] }, { "item": "hardware_books", "chance": 30 } ]
+ },
+ "toilets": { "&": { } },
+ "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 9, 16 ], "y": [ 9, 14 ], "chance": 4 } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [ "basement" ],
+ "weight": 200,
+ "object": {
+ "rotation": [ 0, 3 ],
+ "fill_ter": "t_rock",
+ "rows": [
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " |||||||||||| ",
+ " |T8T5CfHH??| ",
+ " |,h,,,,,,,?| ",
+ " |n,,,,,,???| ",
+ " ||||,,,,|||| ",
+ " |ffG,,,,ACA| ",
+ " ||||,,,,,,,,,,||||| ",
+ " |&_+,,,,,,,TTT|EWU| ",
+ " |i_|,,TT,,,,,,+___| ",
+ " |||||+||,,||+|||||| ",
+ " |i,A,F|++|U__XU| ",
+ " |D,,,T|..|U___c| ",
+ " |b,,hT|<<|U___c| ",
+ " |b,n,T||||U_U_U| ",
+ " ||||||| ||||||| ",
+ " ",
+ " ",
+ " "
],
- "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 2, 23 ], "y": [ 1, 19 ], "chance": 2 } ]
+ "terrain": {
+ "|": "t_wall",
+ "<": "t_stairs_up",
+ "+": "t_door_c",
+ ".": "t_floor",
+ "_": "t_linoleum_gray",
+ "c": "t_linoleum_gray",
+ "U": "t_linoleum_gray",
+ "X": "t_linoleum_gray",
+ "W": "t_linoleum_gray",
+ "E": "t_linoleum_gray",
+ "i": "t_linoleum_gray",
+ "&": "t_linoleum_gray",
+ ",": "t_linoleum_white",
+ "C": "t_linoleum_white",
+ "?": "t_linoleum_white",
+ "A": "t_linoleum_white",
+ "h": "t_linoleum_white",
+ "D": "t_linoleum_white",
+ "5": "t_linoleum_white",
+ "F": "t_linoleum_white",
+ "f": "t_linoleum_white",
+ "G": "t_linoleum_white",
+ "b": "t_linoleum_white",
+ "n": "t_linoleum_white",
+ "H": "t_linoleum_white",
+ "T": "t_linoleum_white",
+ "8": "t_console_broken"
+ },
+ "liquids": { "E": { "liquid": "water_clean", "amount": [ 0, 100 ] } },
+ "furniture": {
+ "T": "f_workbench",
+ "G": "f_glass_cabinet",
+ "c": "f_counter",
+ "h": "f_chair",
+ "A": "f_air_filter",
+ "C": "f_air_conditioner",
+ "E": "f_water_heater",
+ "W": [ "f_water_purifier", "f_home_furnace" ],
+ "X": [ "f_crate_c", "f_crate_o", "f_cardboard_box" ],
+ "U": "f_utility_shelf",
+ "H": "f_bookcase",
+ "F": "f_glass_fridge",
+ "i": "f_sink",
+ "?": "f_sofa",
+ "n": "f_trashcan",
+ "f": "f_filing_cabinet",
+ "5": "f_server",
+ "b": "f_lab_bench",
+ "D": "f_fume_hood"
+ },
+ "items": {
+ "U": [
+ { "item": "cleaning", "chance": 30 },
+ { "item": "supplies_reagents_lab", "chance": 10 },
+ { "item": "home_hw", "chance": 50 },
+ { "item": "supplies_electronics", "chance": 50 }
+ ],
+ "c": [ { "item": "home_hw", "chance": 70 } ],
+ "X": [ { "item": "electronics", "chance": 70 } ],
+ "b": [ { "item": "chem_home", "chance": 30 } ],
+ "D": [ { "item": "chem_home", "chance": 60 } ],
+ "i": [ { "item": "trash", "chance": 60 } ],
+ "F": [ { "item": "chem_home", "chance": 50 }, { "item": "supplies_reagents_lab", "chance": 20 } ],
+ "T": [ { "item": "chem_home", "chance": 30 }, { "item": "electronics", "chance": 50 } ],
+ "f": [ { "item": "file_room", "chance": 70, "repeat": [ 1, 5 ] } ],
+ "G": [ { "item": "office_paper", "chance": 30 } ],
+ "H": [ { "item": "magazines", "chance": 40, "repeat": [ 1, 2 ] }, { "item": "lab_bookshelves", "chance": 20 } ]
+ },
+ "toilets": { "&": { } },
+ "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 9, 16 ], "y": [ 9, 14 ] } ]
}
}
]
diff --git a/data/json/mapgen/basement/basement_messed.json b/data/json/mapgen/basement/basement_messed.json
new file mode 100644
index 0000000000000..4372b320c3dae
--- /dev/null
+++ b/data/json/mapgen/basement/basement_messed.json
@@ -0,0 +1,90 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [ "basement" ],
+ "weight": 250,
+ "object": {
+ "rotation": [ 0, 3 ],
+ "fill_ter": "t_rock",
+ "rows": [
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " |||||||||||| ",
+ " |a.aaHHbbbr| ",
+ " |a.......ar| ",
+ " |a..a||||||| ",
+ " |a..aaaarrr| ",
+ " |a.a.aaaaaa| ",
+ " |aa....arrr| ",
+ " |||..|++|||| ",
+ " |E..a|..| ",
+ " |W..r|<<| ",
+ " ||||||||| ",
+ " ",
+ " ",
+ " ",
+ " "
+ ],
+ "terrain": {
+ "+": "t_door_c",
+ "-": "t_wall",
+ ".": "t_floor",
+ "a": "t_floor",
+ "r": "t_floor",
+ "E": "t_floor",
+ "c": "t_floor",
+ "H": "t_floor",
+ "W": "t_floor",
+ "b": "t_floor",
+ "<": "t_stairs_up",
+ "|": "t_wall"
+ },
+ "liquids": { "E": { "liquid": "water_clean", "amount": [ 0, 100 ] } },
+ "furniture": {
+ "c": "f_counter",
+ "r": "f_rack",
+ "E": "f_water_heater",
+ "W": [ "f_water_purifier", "f_home_furnace" ],
+ "a": [
+ [ "f_table", 30 ],
+ [ "f_armchair", 30 ],
+ [ "f_chair", 60 ],
+ [ "f_counter", 30 ],
+ [ "f_cupboard", 30 ],
+ [ "f_floor_lamp", 15 ],
+ [ "f_desk", 30 ],
+ [ "f_null", 50 ]
+ ],
+ "H": "f_bookcase",
+ "b": "f_workbench"
+ },
+ "items": {
+ ".": [ { "item": "trash", "chance": 5 } ],
+ "r": [
+ { "item": "livingroom", "chance": 30 },
+ { "item": "bedroom", "chance": 30 },
+ { "item": "allclothes", "chance": 50 },
+ { "item": "kitchen_appliances", "chance": 20 },
+ { "item": "pawn", "chance": 5 },
+ { "item": "musicstore_showpiece", "chance": 10 },
+ { "item": "sports", "chance": 30 }
+ ],
+ "H": [
+ { "item": "magazines", "chance": 60, "repeat": [ 0, 3 ] },
+ { "item": "homebooks", "chance": 50 },
+ { "item": "exotic_books", "chance": 5 }
+ ],
+ "b": [ { "item": "home_hw", "chance": 60 }, { "item": "mechanics", "chance": 30 } ]
+ },
+ "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 9, 16 ], "y": [ 12, 16 ] } ]
+ }
+ }
+]
diff --git a/data/json/mapgen/basement/basement_weed.json b/data/json/mapgen/basement/basement_weed.json
index ac2b01e5fc57d..5b428d917d6c5 100644
--- a/data/json/mapgen/basement/basement_weed.json
+++ b/data/json/mapgen/basement/basement_weed.json
@@ -1,55 +1,100 @@
[
+ {
+ "id": "weed_farm",
+ "type": "item_group",
+ "items": [
+ { "item": "weed", "prob": 70, "count-min": 0, "count-max": 4 },
+ { "item": "seed_weed", "prob": 60 },
+ { "item": "cannabis", "prob": 50 },
+ { "item": "withered", "prob": 70 }
+ ]
+ },
{
"type": "mapgen",
"method": "json",
"om_terrain": [ "basement" ],
- "weight": 500,
+ "weight": 250,
"object": {
- "fill_ter": "t_rock",
"rotation": [ 0, 3 ],
+ "fill_ter": "t_rock",
"rows": [
- "|----------------------|",
- "|c....................c|",
- "|c.ddd..ddd..ddd..ddd.c|",
- "|c.ddd..ddd..ddd..ddd.c|",
- "|c.ddd..ddd..ddd..ddd.c|",
- "|c....................c|",
- "|c.ddd..ddd..ddd..ddd.c|",
- "|c.ddd..ddd..ddd..ddd.c|",
- "|c.ddd..ddd..ddd..ddd.c|",
- "|c....................c|",
- "|c.ddd..ddd..ddd..ddd.c|",
- "|c.ddd..ddd..ddd..ddd.c|",
- "|c.ddd..ddd..ddd..ddd.c|",
- "|c....................c|",
- "|c....................c|",
- "|......................|",
- "|.........|++|.........|",
- "|.........|..|.........|",
- "|.........|<<|.........|",
- "------------------------",
+ " ",
+ " ",
+ " ||||||||| ",
+ " |R__Gccc| ",
+ " |R____hc| ",
+ " |R_____R| ",
+ " ||||||||+|||||||| ",
+ " |QQQQQQ,,,QQQQQQ| ",
+ " |T,,,,,,,,,,,,,T| ",
+ " |QQQQQQT,TQQQQQQ| ",
+ " |A,,,,,,,,,,,,,A| ",
+ " |QQQQQQ,,,QQQQQQ| ",
+ " ||||||||++||||||| ",
+ " |C_____+__XXX| ",
+ " |C_U|WH|__XXX| ",
+ " ||||||||__|||| ",
+ " |++| ",
+ " |..| ",
+ " |<<| ",
+ " |||| ",
" ",
" ",
" ",
" "
],
"terrain": {
- "+": "t_door_c",
- "-": "t_wall",
- ".": "t_rock_floor",
+ "|": "t_wall",
"<": "t_stairs_up",
- "c": "t_rock_floor",
- "d": "t_dirt",
- "|": "t_wall"
+ "+": "t_door_c",
+ ".": "t_floor",
+ "_": "t_linoleum_gray",
+ "C": "t_linoleum_gray",
+ "X": "t_linoleum_gray",
+ "W": "t_linoleum_gray",
+ "G": "t_linoleum_gray",
+ "R": "t_linoleum_gray",
+ "H": "t_linoleum_gray",
+ "c": "t_linoleum_gray",
+ "h": "t_linoleum_gray",
+ "U": "t_linoleum_gray",
+ ",": "t_linoleum_white",
+ "A": "t_linoleum_white",
+ "Q": "t_linoleum_white",
+ "T": "t_linoleum_white"
},
- "furniture": { "c": "f_counter" },
- "place_loot": [
- { "item": "seed_weed", "x": [ 3, 20 ], "y": [ 2, 12 ], "chance": 96, "repeat": [ 1, 10 ] },
- { "item": "weed", "x": [ 3, 20 ], "y": [ 2, 12 ], "chance": 80, "repeat": [ 1, 10 ] },
- { "group": "stoner", "x": 1, "y": [ 1, 14 ], "chance": 10, "repeat": [ 1, 10 ] },
- { "group": "stoner", "x": 22, "y": [ 1, 14 ], "chance": 10, "repeat": [ 1, 10 ] }
- ],
- "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 2, 23 ], "y": [ 1, 19 ], "chance": 2 } ]
+ "liquids": { "H": { "liquid": "water_clean", "amount": [ 0, 100 ] } },
+ "sealed_item": { "Q": { "item": { "item": "seed_weed" }, "furniture": "f_planter_mature" } },
+ "furniture": {
+ "T": "f_workbench",
+ "G": "f_glass_cabinet",
+ "c": "f_table",
+ "h": "f_chair",
+ "R": "f_rack",
+ "A": "f_air_filter",
+ "C": "f_air_conditioner",
+ "H": "f_water_heater",
+ "W": [ "f_water_purifier", "f_home_furnace" ],
+ "X": [ "f_crate_c", "f_crate_o", "f_cardboard_box" ],
+ "U": "f_utility_shelf"
+ },
+ "items": {
+ "T": [ { "item": "supplies_farming", "chance": 70 }, { "item": "weed_farm", "chance": 50 } ],
+ "R": [ { "item": "weed_farm", "chance": 70 } ],
+ "c": [
+ { "item": "stoner", "chance": 70 },
+ { "item": "office_breakroom", "chance": 30 },
+ { "item": "homeguns", "chance": 5 }
+ ],
+ "G": [ { "item": "office_paper", "chance": 40 }, { "item": "dollar_books", "chance": 40 } ],
+ "U": [ { "item": "home_hw", "chance": 50 } ],
+ "X": [
+ { "item": "supplies_farming", "chance": 50 },
+ { "item": "cleaning", "chance": 50 },
+ { "item": "chem_home", "chance": 50 }
+ ]
+ },
+ "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 6, 23 ], "y": [ 6, 12 ] } ]
}
}
]
diff --git a/data/json/mapgen/cemetery_4square.json b/data/json/mapgen/cemetery_4square.json
index 763a95ec7619e..a621df08c00d8 100644
--- a/data/json/mapgen/cemetery_4square.json
+++ b/data/json/mapgen/cemetery_4square.json
@@ -414,7 +414,7 @@
{ "item": "church", "x": [ 11, 12 ], "y": [ 5, 6 ], "chance": 65 },
{ "item": "jackets", "x": [ 12 ], "y": [ 14 ], "chance": 50 }
],
- "place_npcs": [ { "chance": 7, "class": "SEER_Brigitte_LaCroix", "x": 18, "y": 6 } ]
+ "place_npcs": [ { "class": "SEER_Brigitte_LaCroix", "x": 18, "y": 6 } ]
}
}
]
diff --git a/data/json/mapgen/faction_buildings.json b/data/json/mapgen/faction_buildings.json
index 9efd3ca6e35ee..051b7c25c071e 100644
--- a/data/json/mapgen/faction_buildings.json
+++ b/data/json/mapgen/faction_buildings.json
@@ -1,7 +1,7 @@
[
{
"type": "mapgen",
- "om_terrain": [ "faction_base_camp_0" ],
+ "om_terrain": [ "faction_base_camp_0", "faction_base_camp_new_0" ],
"method": "json",
"weight": 250,
"object": {
@@ -2441,6 +2441,43 @@
"palettes": [ "acidia_camp_palette" ]
}
},
+ {
+ "type": "mapgen",
+ "om_terrain": "faction_base_saltworks_0",
+ "method": "json",
+ "weight": 250,
+ "object": {
+ "faction_owner": [ { "id": "your_followers", "x": [ 0, 23 ], "y": [ 0, 23 ] } ],
+ "fill_ter": "t_grass",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,"
+ ],
+ "palettes": [ "acidia_camp_palette" ]
+ }
+ },
{
"type": "mapgen",
"om_terrain": "faction_base_workshop_0",
diff --git a/data/json/mapgen/farm_2side.json b/data/json/mapgen/farm_2side.json
index 36845d5e79bf5..3a11dcaea843d 100644
--- a/data/json/mapgen/farm_2side.json
+++ b/data/json/mapgen/farm_2side.json
@@ -10,9 +10,8 @@
],
"weight": 250,
"object": {
- "fill_ter": "t_dirt",
+ "fill_ter": "t_floor",
"rows": [
- " ",
" FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ",
" F ,,,,,,,,,, , , , $$$F t $ F , , , , ,F ",
" F,,~~~~~~,,,, , , , F F DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD F ",
@@ -39,7 +38,7 @@
" ##### , ,F #++###MMMMMMMM### IIII F, , ,,,,, , , ,F ",
" F,,,, , , F ,,,,,,,,,,,,,O IIIiiIII F DDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
" F , F ,,,,,,,, IIiiiiiiII F , ,,,,, , , F ",
- " F $ t , , , F t ,,,,,,,, t IiiiiiiiiI F DDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
+ " F $ t , , , F t ,,,,,,,, t KiiiiiiiiI F DDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
" F $ , , F $ ,,,,,,,, $ IIiiiiiiII F , ,,,,, , , F ",
" F , t , ,F $ ,,,,,,,, $ IIIiiIII F DDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
" Ft , F $ ,,,,,,,, $ IIII F, , ,,,,, , Q ,F ",
@@ -55,7 +54,7 @@
" F , , F $ ,,,,,,,, $ IIII F , , , , F ",
" F , , F $ ,,,,,,,, $ IIIiiIII F,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD F ",
" F , F $ ,,,,,,,, $ IIiiiiiiII F , , Q , F ",
- " F , , , ,F t ,,,,,,,, t IiiiiiiiiI F DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD F ",
+ " F , , , ,F t ,,,,,,,, t KiiiiiiiiI F DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD F ",
" F , , , F $ ,,,,,,,, $ IIiiiiiiII F, , , , , ,F ",
" F , , F $ ,,,,,,,, $ IIIiiIII F DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD F ",
" F , , F $ ,,,,,,,, $ IIII F, , , , F ",
@@ -72,26 +71,26 @@
" F ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, , F ",
" F DDDDDDD,,,,,DDDDDDDD F ,,,,,,,,,,,,,,,,,, F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
" F , ,,,,, F ,,,,,,,,,,,,,,,, F, , ,,,,, , F ",
- " F DDDDDDD,,,,,DDDDDDDD F $$$$ ,, $$$$ F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD,F ",
- " F ,,,,, F |--ww----++----ww--| F , ,,,,, , F ",
- " F DDDDDDD,,,,,DDDDDDDD F |u.u....Y..|..H...d| F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
- " F Q ,,,,, F -|u.uh......|.....BB| F , ,,,,, , Q , F ",
- " F DDDDDDD,,,,,DDDDDDDD F wo.....hnnh.|.....BB| F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
- " F ,,,,, F we..u..hnnh.|...|---| F , ,,,,, , F ",
- " F DDDDDDD,,,,,DDDDDDDD F -|----+---|.+...+'ST| F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
- " F, ,,,,, , F |d..|ST|.|.|---|'''| F, ,,,,, , ,F ",
- " F DDDDDDD,,,,,DDDDDDDD F wBB.|--|.+.+...+'bb| F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
- " F ,,,,, ,F wBB......|.|...|---| F Q ,, ,,,,, , F ",
- " F DDDDDDD,,,,,DDDDDDDD F |d...H...|+|.....BB| F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
- " F , ,,,,, F |---ww---|s|d.....d| F , ,,,,, , ,F ",
- " F DDDDDDD,,,,,DDDDDDDD Fsssssssssssss|dh...BB| F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
+ " F DDDDDDD,,,,,DDDDDDDD F 8888 ,, 88888 F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD,F ",
+ " F ,,,,, F |--ww----++---www--| F , ,,,,, , F ",
+ " F DDDDDDD,,,,,DDDDDDDD F |uuuue.....Y.2222.6| F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
+ " F Q ,,,,, F -|u.....hhh...2.77.6| F , ,,,,, , Q , F ",
+ " F DDDDDDD,,,,,DDDDDDDD F wo......nnn........6| F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
+ " F ,,,,, F wS......hhh....3|---| F , ,,,,, , F ",
+ " F DDDDDDD,,,,,DDDDDDDD F -|-----........H|S'T| F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
+ " F, ,,,,, , F 4|d..3|AAA|H....+'''w F, ,,,,, , ,F ",
+ " F DDDDDDD,,,,,DDDDDDDD F wBB..|---|....H|'bb| F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
+ " F ,,,,, ,F wBB...99.+.|-+-|---| F Q ,, ,,,,, , F ",
+ " F DDDDDDD,,,,,DDDDDDDD F |d.......|+|.....BB| F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
+ " F , ,,,,, F |---ww---|s|d..h..d| F , ,,,,, , ,F ",
+ " F DDDDDDD,,,,,DDDDDDDD Fsssssssssssss|d.kk.BB| F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
" F ,,,,, Fsssssssssssss|--www--| F , ,,,,, , F ",
- " F DDDDDDD,,,,,DDDDDDDD Fss~~~~~~~ss& t $ F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
- " F , ,,,,, , Fss~~~~~~~ss $ t$ F , ,,,,, , F ",
- " F DDDDDDD,,,,,DDDDDDDD Fss~~~~~~~ss $ F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
- " F, ,,,,, Fss~~~~~~~ss t ##### F , , ,,,,, F ",
- " F DDDDDDD,,,,,DDDDDDDD Fss~~~~~~~ss , ,#lll# F,DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD,F ",
- " F ,,,,,, Q ,Fsssssssssss, , ,,+...# F , ,,,,, , F ",
+ " F DDDDDDD,,,,,DDDDDDDD Fss*******ss& t $ F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
+ " F , ,,,,, , Fss*******ss $ t$ F , ,,,,, , F ",
+ " F DDDDDDD,,,,,DDDDDDDD Fss*******ss $ F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
+ " F, ,,,,, Fss*******ss t ##### F , , ,,,,, F ",
+ " F DDDDDDD,,,,,DDDDDDDD Fss*******ss , ,#lll# F,DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD,F ",
+ " F ,,,,,, Q ,Fsssssssssss, , ,,+___# F , ,,,,, , F ",
" F DDDDDDD,,,,,DDDDDDDD Fsssssssssss $##### F DDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
" F , ,,,,, , FFFFFFFFFFFFFFFFFFFFFFFFFF , , ,,,,, , Q , F ",
" F DDDDDDD,,,,,DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD,,,,,DDDDDDDDDDDDDDDDDD F ",
@@ -107,6 +106,7 @@
" F DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD F ",
" F , , , , , , , F ",
" FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ",
+ " ",
" "
],
"terrain": {
@@ -117,46 +117,49 @@
"i": [ "t_metal_floor" ],
"$": [ "t_shrub" ],
"~": [ "t_water_sh" ],
+ "*": "t_water_pool_outdoors",
"t": [ "t_tree" ],
"&": [ "t_water_pump" ],
"s": [ "t_sidewalk" ],
"+": [ "t_door_c" ],
",": [ "t_dirt" ],
- "-": [ "t_wall" ],
+ "-": [ "t_wall_w" ],
".": [ "t_floor" ],
"'": [ "t_linoleum_white" ],
"1": [ "t_column" ],
+ "4": "t_gutter_downspout",
"5": [ "t_palisade_pulley" ],
- "B": [ "t_floor" ],
+ "8": [ "t_shrub_lilac", "t_shrub_hydrangea", "t_shrub_rose" ],
"D": [ "t_dirtmound" ],
"E": [ "t_dirtmoundfloor" ],
- "F": [ "t_fence_v" ],
- "H": [ "t_floor" ],
+ "F": [ "t_splitrail_fence" ],
"M": [ "t_door_metal_locked" ],
"O": [ "t_barndoor" ],
"P": [ "t_grass" ],
+ "K": "t_door_metal_pickable",
"S": [ "t_linoleum_white" ],
"T": [ "t_linoleum_white" ],
"W": [ "t_window_boarded" ],
- "Y": [ "t_floor" ],
"_": [ "t_dirtfloor" ],
+ "l": [ "t_dirtfloor" ],
"b": [ "t_linoleum_white" ],
- "d": [ "t_floor" ],
"e": [ "t_linoleum_white" ],
- "g": [ "t_fencegate_c" ],
- "h": [ "t_floor" ],
- "n": [ "t_floor" ],
- "k": [ "t_floor" ],
- "l": [ "t_floor" ],
+ "g": [ "t_splitrail_fencegate_c" ],
"o": [ "t_linoleum_white" ],
"u": [ "t_floor" ],
"w": [ "t_window_domestic" ],
"y": [ "t_dirtfloor" ],
- "|": [ "t_wall" ]
+ "|": [ "t_wall_w" ]
},
"furniture": {
+ "2": "f_sofa",
+ "3": "f_armchair",
+ "6": "f_entertainment_center",
+ "7": "f_coffee_table",
+ "9": "f_bookcase",
"B": [ "f_bed" ],
- "H": [ "f_armchair" ],
+ "A": "f_rack_wood",
+ "H": [ "f_indoor_plant_y", "f_indoor_plant" ],
"P": [ "f_mailbox" ],
"S": [ "f_sink" ],
"T": [ "f_toilet" ],
@@ -176,14 +179,28 @@
"items": {
"B": { "item": "bed", "chance": 60 },
"D": { "item": "hydro", "chance": 5 },
- "H": { "item": "livingroom", "chance": 65 },
+ "o": { "item": "oven", "chance": 40, "repeat": [ 2, 3 ] },
+ "7": { "item": "livingroom", "chance": 65 },
+ "9": { "item": "homebooks", "chance": 65 },
+ "H": { "item": "trash", "chance": 65 },
"b": { "item": "softdrugs", "chance": 70 },
- "d": [ { "item": "dresser", "chance": 80 }, { "item": "homeguns", "chance": 20 } ],
+ "d": [
+ { "item": "dresser_mens", "chance": 50 },
+ { "item": "homeguns", "chance": 20 },
+ { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] }
+ ],
"e": { "item": "fridge", "chance": 65, "repeat": [ 1, 8 ] },
- "h": { "item": "bedroom", "chance": 65 },
+ "n": { "item": "bedroom", "chance": 65 },
"k": { "item": "bedroom", "chance": 65 },
"Y": { "item": "coat_rack", "chance": 35, "repeat": [ 1, 4 ] },
"P": { "item": "mail", "chance": 30, "repeat": [ 2, 5 ] },
+ "A": [
+ { "item": "preserved_food", "chance": 20, "repeat": [ 1, 2 ] },
+ { "item": "dry_goods", "chance": 30, "repeat": [ 1, 2 ] },
+ { "item": "pet_food", "chance": 30, "repeat": [ 1, 2 ] },
+ { "item": "condiments", "chance": 30, "repeat": [ 1, 2 ] },
+ { "item": "pantry_liquids", "chance": 10 }
+ ],
"l": [
{ "item": "tools_earthworking", "chance": 65 },
{ "item": "mechanics", "chance": 40 },
@@ -193,7 +210,12 @@
"u": [
{ "item": "kitchen", "chance": 70, "repeat": [ 1, 2 ] },
{ "item": "cannedfood", "chance": 65, "repeat": [ 1, 3 ] },
- { "item": "moonshine_brew", "chance": 65 }
+ { "item": "moonshine_brew", "chance": 65 },
+ { "item": "dishes_utility", "chance": 30 },
+ { "item": "condiments", "chance": 40, "repeat": [ 1, 2 ] },
+ { "item": "SUS_knife_drawer", "chance": 20, "repeat": [ 1, 2 ] },
+ { "item": "SUS_junk_drawer", "chance": 10, "repeat": [ 1, 2 ] },
+ { "item": "SUS_cookware", "chance": 20 }
],
"Q": { "item": "farming_tools", "chance": 15 }
},
@@ -201,6 +223,7 @@
"_": [ { "item": "straw_pile", "chance": 3 }, { "item": "cattlefodder", "chance": 2 } ],
"i": { "item": "wheat", "chance": 40, "repeat": 10 }
},
+ "place_loot": [ { "item": "television", "x": 45, "y": 62, "chance": 100 }, { "item": "stereo", "x": 45, "y": 61, "chance": 50 } ],
"place_items": [ ],
"place_item": [ ],
"place_monsters": [
@@ -209,5 +232,103 @@
],
"place_vehicles": [ { "vehicle": "farm_vehicles", "x": 36, "y": 18, "chance": 100, "rotation": 270 } ]
}
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [ [ "2farm_roof_4", "2farm_roof_3" ] ],
+ "weight": 250,
+ "object": {
+ "fill_ter": "t_shingle_flat_roof",
+ "rows": [
+ " ",
+ " ",
+ " ",
+ " ............. ",
+ " ............. ",
+ " ............. ",
+ " ................. ",
+ " ................. ",
+ " .................... ",
+ " .................... ",
+ " .................... ",
+ " .................... ",
+ " .................... ",
+ " .................... ",
+ " ..... .................... ",
+ " ..... .................... ",
+ " ..... .................... ",
+ " ..... .................... ",
+ " ..... .................... ",
+ " ..... .................... ",
+ " ..... .................... ",
+ " ..... ................. ",
+ " ..... ................. ",
+ " ..... ................. "
+ ],
+ "palettes": [ "roof_palette" ],
+ "terrain": { ".": "t_shingle_flat_roof" }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [ [ "2farm_roof_11" ], [ "2farm_roof_15" ] ],
+ "weight": 250,
+ "object": {
+ "fill_ter": "t_shingle_flat_roof",
+ "rows": [
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " |2222222222222222223 ",
+ " |..................3 ",
+ " ||...............X..3 ",
+ " |....&..............3 ",
+ " |...................3 ",
+ " |5..................3 ",
+ " |................=.3 ",
+ " |..................3 ",
+ " |..................3 ",
+ " |........3-|.......3 ",
+ " |--------3 |.......3 ",
+ " |.......3 ",
+ " |-------3 ",
+ " ",
+ " ",
+ " ",
+ " .....",
+ " .....",
+ " .....",
+ " .....",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ ],
+ "palettes": [ "roof_palette" ],
+ "terrain": { ".": "t_shingle_flat_roof" }
+ }
}
]
diff --git a/data/json/mapgen/gambling_hall.json b/data/json/mapgen/gambling_hall.json
index bae727001e2c7..ab901fddbb157 100644
--- a/data/json/mapgen/gambling_hall.json
+++ b/data/json/mapgen/gambling_hall.json
@@ -199,7 +199,7 @@
"rows": [
"_____sss_____d__________",
"_d__|+-+|______________d",
- "____-...-__dSdSdSdSdSd__",
+ "____-...-__d9d9d9d9d9d__",
"__|||...|||||||||||||||_",
"__|a....{{.#t#....#.&^|_",
"__|^..................|_",
@@ -229,7 +229,7 @@
"6": "t_slot_machine",
"D": "t_pavement",
"P": "t_pavement",
- "S": "t_shrub",
+ "9": "t_shrub",
"_": [ [ "t_grass", 5 ], [ "t_grass_long", 2 ], "t_dirt" ],
"a": "t_atm",
"b": "t_door_metal_c",
diff --git a/data/json/mapgen/hotel_tower.json b/data/json/mapgen/hotel_tower.json
index e3d3f5b8185bb..19fdc6abcb07a 100644
--- a/data/json/mapgen/hotel_tower.json
+++ b/data/json/mapgen/hotel_tower.json
@@ -1,205 +1,137 @@
[
{
- "id": "hotel_coffee_bar",
- "type": "item_group",
- "subtype": "collection",
- "entries": [
- { "item": "coffeemaker", "prob": 60, "charges": [ 0, 200 ] },
- { "group": "coffee_display", "prob": 60, "count": [ 1, 3 ] }
- ]
- },
- {
- "id": "hotel_luggage",
- "type": "item_group",
- "subtype": "collection",
- "entries": [ { "group": "bags_trip", "prob": 25 }, { "group": "dresser", "prob": 25, "count": [ 1, 4 ] } ]
- },
- {
- "type": "item_group",
- "id": "book_hotel_tower_bible",
- "subtype": "collection",
- "items": [ { "item": "holybook_bible3", "prob": 100 } ]
- },
- {
- "name": "GROUP_HOTEL_POOL",
- "type": "monstergroup",
- "default": "mon_zombie_swimmer",
- "monsters": [
- { "monster": "mon_zombie_swimmer", "freq": 100, "cost_multiplier": 2 },
- { "monster": "mon_zombie_swimmer", "freq": 50, "cost_multiplier": 10, "pack_size": [ 3, 8 ] },
- { "monster": "mon_zombie_child", "freq": 35, "cost_multiplier": 1 }
- ]
- },
- {
- "name": "GROUP_HOTEL_GYM",
- "type": "monstergroup",
- "default": "mon_zombie_fat",
- "monsters": [
- { "monster": "mon_zombie_fat", "freq": 30, "cost_multiplier": 2 },
- { "monster": "mon_zombie_fat", "freq": 15, "cost_multiplier": 8, "pack_size": [ 2, 6 ] },
- { "monster": "mon_zombie_tough", "freq": 8, "cost_multiplier": 3 }
- ]
- },
- {
- "type": "mapgen",
"method": "json",
- "om_terrain": [ "hotel_tower_1_1" ],
- "weight": 250,
- "object": {
- "rows": [
- "ssssssssssssssssssssssss",
- "_____,_____,_____,_____s",
- "_____,_____,_____,_____s",
- "_____,_____,_V___,_____s",
- "_____,_____,_____,_____s",
- "_____,_____,_____,_____s",
- "_____,_____,_____,_____s",
- "_______________________s",
- "_______________________s",
- "_______________________s",
- "_______________________s",
- "_______________________s",
- "_____,_____,_____,_____s",
- "_____,_____,_____,_____s",
- "_____,_V___,_V___,_____s",
- "_____,_____,_____,_____s",
- "_____,_____,_____,_____s",
- "_____,_____,_____,_____s",
- "ssssssssssssssssssssssss",
- "ssssssssssssssssssssssss",
- "_____,_____,_____,_____s",
- "_____,_____,_____,_____s",
- "_____,_____,_____,_____s",
- "_____,_____,_____,_____s"
- ],
- "terrain": { ",": "t_pavement_y", "V": "t_pavement", "_": "t_pavement", "s": "t_sidewalk" },
- "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 0, 23 ], "chance": 2 } ],
- "vehicles": { "V": { "vehicle": "suburban_home", "chance": 50, "rotation": 270 } }
- }
- },
- {
+ "om_terrain": [ [ "hotel_tower_1_3", "hotel_tower_1_2", "hotel_tower_1_1" ] ],
"type": "mapgen",
- "method": "json",
- "om_terrain": [ "hotel_tower_1_2" ],
"weight": 250,
"object": {
+ "fill_ter": "t_pavement",
"rows": [
- "ss________sssss________s",
- "_,________s'''s________,",
- "_,________s'''s________,",
- "_,________s'''s________,",
- "_,________s'''s________,",
- "_,________sssss________,",
- "_,_____________________,",
- "________________________",
- "________________________",
- "________________________",
- "________________________",
- "________________________",
- "_,_____________________,",
- "_,________sssss________,",
- "_,________s'''s________,",
- "_,________s'''s________,",
- "_,________s'''s________,",
- "_,________s'''s________,",
- "ss________s'''s________s",
- "ss________s'''s________s",
- "_,________s'''s________,",
- "_,________s'''s________,",
- "_,________sssss________,",
- "_,_____________________,"
+ " sssssssssssssssssssssssss________sssss________sssssssssssssssssssssssss",
+ " s_____,_____,_____,_____,________s'''s________,_____,_____,_____,_____s",
+ " s_____,_____,_____,_____,________s'''s________,_____,_____,_____,_____s",
+ " s_____,_V___,_____,_V___,________s'''s________,_V___,_____,_V___,_____s",
+ " s_____,_____,_____,_____,________s'''s________,_____,_____,_____,_____s",
+ " s_____,_____,_____,_____,________sssss________,_____,_____,_____,_____s",
+ " s_____,_____,_____,_____,_____________________,_____,_____,_____,_____s",
+ " s_____________________________________________________________________s",
+ " s_____________________________________________________________________s",
+ " s_____________________________________________________________________s",
+ " s_____________________________________________________________________s",
+ " s_____________________________________________________________________s",
+ " s_____,_____,_____,_____,_____________________,_____,_____,_____,_____s",
+ " s___V_,_____,___V_,_____,________sssss________,_____,_V___,_____,_V___s",
+ " s_____,_____,_____,_____,________s'''s________,_____,_____,_____,_____s",
+ " s_____,_____,_____,_____,________s'''s________,_____,_____,_____,_____s",
+ " s_____,_____,_____,_____,________s'''s________,_____,_____,_____,_____s",
+ " s_____,_____,_____,_____,________s'''s________,_____,_____,_____,_____s",
+ " sssssssssssssssssssssssss________s'''s________sssssssssssssssssssssssss",
+ " sssssssssssssssssssssssss________s'''s________sssssssssssssssssssssssss",
+ " s_____,_____,_____,_____,________s'''s________,_____,_____,_____,_____s",
+ " s_____,_____,_____,_____,________s'''s________,_____,_____,_____,_____s",
+ " s_____,_____,_____,_____,________sssss________,_____,_____,_____,_____s",
+ " s_____,_____,_____,_____,_____________________,_____,_____,_____,_____s"
],
- "terrain": { "'": "t_grass", ",": "t_pavement_y", "_": "t_pavement", "s": "t_sidewalk" },
- "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 0, 23 ], "chance": 2 } ]
+ "palettes": [ "hotel_tower_palette.json" ],
+ "vehicles": { "V": { "vehicle": "suburban_home", "chance": 50, "rotation": 270 } },
+ "terrain": { "V": "t_pavement" },
+ "place_monsters": [
+ { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 0, 23 ], "chance": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 24, 47 ], "y": [ 0, 23 ], "chance": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 48, 71 ], "y": [ 0, 23 ], "chance": 2 }
+ ]
}
},
{
- "type": "mapgen",
"method": "json",
- "om_terrain": [ "hotel_tower_1_3" ],
+ "om_terrain": [ [ "hotel_tower_1_6", "hotel_tower_1_5", "hotel_tower_1_4" ] ],
+ "type": "mapgen",
"weight": 250,
"object": {
- "fill_ter": "t_pavement",
+ "fill_ter": "t_floor",
"rows": [
- " sssssssssssssssssssssss",
- " s_____,_____,_____,____",
- " s_____,_____,_____,____",
- " s_____,_____,_____,____",
- " s_____,_V___,_____,____",
- " s_____,_____,_____,____",
- " s_____,_____,_____,____",
- " s______________________",
- " s______________________",
- " s______________________",
- " s______________________",
- " s______________________",
- " s_____,_____,_____,____",
- " s_____,_____,_____,____",
- " s_____,_____,_____,____",
- " s_____,_____,_____,____",
- " s_____,_____,___v_,____",
- " s_____,_____,_____,____",
- " sssssssssssssssssssssss",
- " sssssssssssssssssssssss",
- " s_____,_____,_____,____",
- " s_____,_____,_____,____",
- " s_____,_____,_____,____",
- " s_____,_____,_____,____"
+ " s_____,_____,_____,_____,_____________________,_____,_____,_____,_____s",
+ " s_____,_____,_____,_____,_____________________,_____,_____,_____,_____s",
+ " s_____________________________________________________________________s",
+ " s_____________________________________________________________________s",
+ " s_____________________________________________________________________s",
+ " s_____________________________________________________________________s",
+ " s_____________________________________________________________________s",
+ " s___________________________sssssssssssssss___________________________s",
+ " s_____,_____,_____,_____,_sssssssssssssssssss_,_____,_____,_____,_____s",
+ " s_____,_____,_____,_____,sssssssssssssssssssss,_____,_V___,_____,_____s",
+ " s_____,_____,_____,_____,ssssss%HHGGGHH%ssssss,_____,_____,_____,_____s",
+ " s_____,___v_,_____,_____,sssss%%^.....^%%sssss,_____,_____,_____,___v_s",
+ " s_____,_____,_____,_____,ssss%%^......Yc%%ssss,_____,_____,_____,_____s",
+ " s_____,_____,_____,_____,sss%%^.......YcD%%sss,_____,_____,_____,_____s",
+ " ssssssssssssssssssssssssssssH^........YcxDHssssssssssssssssssssssssssss",
+ " ssssssssssssssssssssssssssssH..........ch.Hssssssssssssssssssssssssssss",
+ " s'''''''''''''''''''''''''''H.j.t......c..H'''''''''''''''''''''''''''s",
+ " s'''''''''''''''''''''''''''H.j.t......ch.H'''''''''''''''''''''''''''s",
+ " s''''''''''T'''''T'''''''T''H.j........c..H''T'''''''T'''''T''''''''''s",
+ " s'''''''''''''''''''''''''''%.jjj......c.L%'''''''''''''''''''''''''''s",
+ " s''''%%www%%%www%%%www%%%www%%.........%+%%www%%%www%%%www%%%www%%''''s",
+ " s''''%...Ld|....d|....d|....d|...........|d..ht|d....|d..L.|d....%''''s",
+ " s''''%c..BB|o..BB|c.LBB|c..BB|h.........h|BB..h|BB..o|BB..c|BB..c%''''s",
+ " s''''%c..BB|c..BB|o..BB|c.LBB|t.........t|BB..c|BB..c|BB..o|BB..o%''''s"
],
- "terrain": { " ": [ "t_grass", "t_grass", "t_grass", "t_dirt" ], ",": "t_pavement_y", "_": "t_pavement", "s": "t_sidewalk" },
- "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 0, 23 ], "chance": 2 } ],
+ "palettes": [ "hotel_tower_palette.json" ],
+ "terrain": { "V": "t_pavement", "w": "t_window_domestic", "x": "t_console_broken" },
+ "furniture": { "D": "f_desk" },
+ "items": {
+ "B": { "item": "bed", "chance": 50 },
+ "L": { "item": "hotel_luggage", "chance": 100 },
+ "c": { "item": "magazines", "chance": 15 },
+ "d": { "item": "book_hotel_tower_bible", "chance": 2 },
+ "o": { "item": "hotel_coffee_bar", "chance": 100 }
+ },
"vehicles": {
- "V": { "vehicle": "suburban_home", "chance": 50, "rotation": 270 },
- "v": { "vehicle": "suburban_home", "chance": 50, "rotation": 90 }
- }
+ "V": { "vehicle": "suburban_home", "chance": 60, "rotation": 270 },
+ "v": { "vehicle": "suburban_home", "chance": 60, "rotation": 90 }
+ },
+ "place_monsters": [
+ { "monster": "GROUP_ZOMBIE", "x": [ 7, 23 ], "y": [ 0, 23 ] },
+ { "monster": "GROUP_ZOMBIE", "x": [ 24, 47 ], "y": [ 7, 23 ], "repeat": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 49, 65 ], "y": [ 0, 23 ] }
+ ]
}
},
{
- "type": "mapgen",
"method": "json",
- "om_terrain": [ "hotel_tower_1_4" ],
+ "om_terrain": [ [ "hotel_tower_flr2_1_6", "hotel_tower_flr2_1_5", "hotel_tower_flr2_1_4" ] ],
+ "type": "mapgen",
"weight": 250,
"object": {
"fill_ter": "t_floor",
"rows": [
- "_____,_____,_____,_____s",
- "_____,_____,_____,_____s",
- "_______________________s",
- "_______________________s",
- "_______________________s",
- "_______________________s",
- "_______________________s",
- "_______________________s",
- "_____,_____,_____,_____s",
- "_____,_V___,_____,_____s",
- "_____,_____,_____,_____s",
- "_____,_____,_____,_____s",
- "_____,_____,_____,___v_s",
- "_____,_____,_____,_____s",
- "ssssssssssssssssssssssss",
- "ssssssssssssssssssssssss",
- "'''''''''''''''''''''''s",
- "'''''''''''''''''''''''s",
- "''''''T'''''T''''''''''s",
- "'''''''''''''''''''''''s",
- "|-www-|-www-|-www-|''''s",
- "|d....|d..L.|d....|''''s",
- "|BB..o|BB..c|BB..c|''''s",
- "|BB..c|BB..o|BB..o|''''s"
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "********************************111111111*******************************",
+ "*******************************11111011111******************************",
+ "******************************1111100011111*****************************",
+ "*****************************111110000011111****************************",
+ "*****************************111100000001111****************************",
+ "*****************************111000000000111****************************",
+ "*****************************111000000000111****************************",
+ "*****************************111000000000111****************************",
+ "*****************************111000000000111****************************",
+ "*****************************111111111111111****************************",
+ "******%%www%%%www%%%www%%%www%%H%%HHHHH%%H%%www%%%www%%%www%%%www%%*****",
+ "******%...Ld|....d|....d|....d|^...^^....^|d..ht|d....|d..L.|d....%*****",
+ "******%c..BB|o..BB|c.LBB|c..BB|h.........h|BB..h|BB..o|BB..c|BB..c%*****",
+ "******%c..BB|c..BB|o..BBXc.LBB|t.........t|BB..cXBB..c|BB..o|BB..o%*****"
],
- "terrain": {
- "'": "t_grass",
- ",": "t_pavement_y",
- "-": "t_wall",
- "T": "t_tree_young",
- "V": "t_pavement",
- "_": "t_pavement",
- "s": "t_sidewalk",
- "v": "t_pavement",
- "w": "t_window_domestic",
- "|": "t_wall"
- },
- "furniture": { "B": "f_bed", "c": "f_counter", "d": "f_dresser", "o": "f_counter" },
+ "palettes": [ "hotel_tower_palette.json" ],
+ "terrain": { "w": "t_window_domestic", "x": "t_console_broken" },
+ "furniture": { "D": "f_desk" },
"items": {
"B": { "item": "bed", "chance": 50 },
"L": { "item": "hotel_luggage", "chance": 100 },
@@ -207,271 +139,236 @@
"d": { "item": "book_hotel_tower_bible", "chance": 2 },
"o": { "item": "hotel_coffee_bar", "chance": 100 }
},
- "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 1, 17 ], "y": [ 0, 23 ] } ],
- "vehicles": {
- "V": { "vehicle": "suburban_home", "chance": 60, "rotation": 270 },
- "v": { "vehicle": "suburban_home", "chance": 60, "rotation": 90 }
- }
+ "place_monsters": [
+ { "monster": "GROUP_ZOMBIE", "x": [ 7, 23 ], "y": [ 21, 23 ] },
+ { "monster": "GROUP_ZOMBIE", "x": [ 24, 47 ], "y": [ 21, 23 ], "repeat": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 49, 65 ], "y": [ 21, 23 ] }
+ ]
}
},
{
- "type": "mapgen",
"method": "json",
- "om_terrain": [ "hotel_tower_1_5" ],
+ "om_terrain": [ [ "hotel_tower_flr3_1_6", "hotel_tower_flr3_1_5", "hotel_tower_flr3_1_4" ] ],
+ "type": "mapgen",
"weight": 250,
"object": {
"fill_ter": "t_floor",
"rows": [
- "_,_____________________,",
- "_,_____________________,",
- "________________________",
- "________________________",
- "________________________",
- "________________________",
- "________________________",
- "__sssssssssssssssssssss_",
- "_,sssssCsssssssssCsssss,",
- "_,sssssssssssssssssssss,",
- "_,sss|HHHGGHHHGGHHH|sss,",
- "_,sssV............^|sss,",
- "_,sssV^............Vsss,",
- "_,sss|cccc.........Vsss,",
- "sssss|LL.c.........Vssss",
- "sssss|...x......hh.|ssss",
- "'''''|h..c......tt.V''''",
- "'''''|D.r|......tt.V''''",
- "''T''|-+-|......hh.V''T'",
- "'''''|^............|''''",
- "|-www||...........||www-",
- "|....d|...........|d..ht",
- "|c..BB|h.........h|BB..h",
- "|c.LBB|t.........t|BB..c"
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "******%%www%%%www%%%www%%%www%%%H%%HHH%%H%%%www%%%www%%%www%%%www%%*****",
+ "******%...Ld|....d|....d|....d|^.........^|d..ht|d....|d..L.|d....%*****",
+ "******%c..BB|o..BB|c.LBB|c..BB|h.........h|BB..h|BB..o|BB..c|BB..c%*****",
+ "******%c..BB|c..BB|o..BB|c.LBB|t.........t|BB..c|BB..c|BB..o|BB..o%*****"
],
- "terrain": {
- "'": "t_grass",
- "+": [ "t_door_c", "t_door_c", "t_door_o" ],
- ",": "t_pavement_y",
- "-": "t_wall",
- "C": "t_column",
- "G": "t_door_glass_c",
- "H": "t_wall_glass",
- "T": "t_tree_young",
- "V": "t_wall_glass",
- "_": "t_pavement",
- "s": "t_sidewalk",
- "w": "t_window_domestic",
- "x": "t_console_broken",
- "|": "t_wall"
- },
- "furniture": {
- "B": "f_bed",
- "D": "f_desk",
- "^": "f_indoor_plant",
- "c": "f_counter",
- "d": "f_dresser",
- "h": "f_chair",
- "o": "f_counter",
- "r": "f_rack",
- "t": "f_table"
- },
+ "palettes": [ "hotel_tower_palette.json" ],
+ "terrain": { "w": "t_window_domestic", "x": "t_console_broken" },
+ "furniture": { "D": "f_desk" },
"items": {
"B": { "item": "bed", "chance": 50 },
"L": { "item": "hotel_luggage", "chance": 100 },
"c": { "item": "magazines", "chance": 15 },
- "d": { "item": "book_hotel_tower_bible", "chance": 2 }
+ "d": { "item": "book_hotel_tower_bible", "chance": 2 },
+ "o": { "item": "hotel_coffee_bar", "chance": 100 }
},
- "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 7, 23 ], "repeat": 2 } ],
- "place_vehicles": [ { "vehicle": "luggage_cart", "x": [ 10, 15 ], "y": [ 11, 19 ], "chance": 100, "repeat": [ 1, 3 ] } ]
+ "place_monsters": [
+ { "monster": "GROUP_ZOMBIE", "x": [ 7, 23 ], "y": [ 21, 23 ] },
+ { "monster": "GROUP_ZOMBIE", "x": [ 24, 47 ], "y": [ 21, 23 ], "repeat": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 49, 65 ], "y": [ 21, 23 ] }
+ ]
}
},
{
- "type": "mapgen",
"method": "json",
- "om_terrain": [ "hotel_tower_1_5" ],
+ "om_terrain": [ [ "hotel_tower_flr4_1_6", "hotel_tower_flr4_1_5", "hotel_tower_flr4_1_4" ] ],
+ "type": "mapgen",
"weight": 250,
"object": {
"fill_ter": "t_floor",
"rows": [
- "________________________",
- "________________________",
- "________________________",
- "________________________",
- "________________________",
- "__,,,,,,,,,,,,,,,,,,,,,_",
- "___C_____C_____C_____C__",
- "________________________",
- "________________________",
- "________________________",
- "________________________",
- "________________________",
- "________________________",
- "__'''''''''''''''''''''_",
- "ssssssssssssssssssssssss",
- "sssss|---HGGHGGH---|ssss",
- "'''''|.............|''''",
- "'''''V.............V''''",
- "''T''V....ccccc....V''T'",
- "'''''|^...cDxDc...^|''''",
- "|-www||......hc...||www-",
- "|....d|...ccccc...|d..ht",
- "|c..BB|...........|BB..h",
- "|c.LBB|h.........h|BB..c"
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "************************************************************************",
+ "******%%www%%%www%%%www%%%www%%%H%%HHH%%H%%%www%%%www%%%www%%%www%%*****",
+ "******%...Ld|....d|....d|....d|^.........^|d..ht|d....|d..L.|d....%*****",
+ "******%c..BB|o..BB|c.LBB|c..BB|h.........h|BB..h|BB..o|BB..c|BB..c%*****",
+ "******%c..BB|c..BB|o..BB|c.LBB|t.........t|BB..c|BB..c|BB..o|BB..o%*****"
],
- "terrain": {
- "'": "t_grass",
- "+": [ "t_door_c", "t_door_c", "t_door_o" ],
- ",": "t_pavement_y",
- "-": "t_wall",
- "C": "t_column",
- "G": "t_door_glass_c",
- "H": "t_wall_glass",
- "T": "t_tree_young",
- "V": "t_wall_glass",
- "_": "t_pavement",
- "s": "t_sidewalk",
- "w": "t_window_domestic",
- "x": "t_console_broken",
- "|": "t_wall",
- "~": "t_thconc_floor"
- },
- "furniture": {
- "B": "f_bed",
- "D": "f_desk",
- "^": "f_indoor_plant",
- "c": "f_counter",
- "d": "f_dresser",
- "h": "f_chair",
- "o": "f_counter",
- "r": "f_rack",
- "t": "f_table"
- },
+ "palettes": [ "hotel_tower_palette.json" ],
+ "terrain": { "w": "t_window_domestic", "x": "t_console_broken" },
+ "furniture": { "D": "f_desk" },
"items": {
"B": { "item": "bed", "chance": 50 },
"L": { "item": "hotel_luggage", "chance": 100 },
"c": { "item": "magazines", "chance": 15 },
- "d": { "item": "book_hotel_tower_bible", "chance": 2 }
+ "d": { "item": "book_hotel_tower_bible", "chance": 2 },
+ "o": { "item": "hotel_coffee_bar", "chance": 100 }
},
- "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 7, 23 ], "repeat": 2 } ],
- "place_vehicles": [ { "vehicle": "luggage_cart", "x": [ 3, 21 ], "y": [ 11, 17 ], "chance": 100, "repeat": [ 1, 3 ] } ]
+ "place_monsters": [
+ { "monster": "GROUP_ZOMBIE", "x": [ 7, 23 ], "y": [ 21, 23 ] },
+ { "monster": "GROUP_ZOMBIE", "x": [ 24, 47 ], "y": [ 21, 23 ], "repeat": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 49, 65 ], "y": [ 21, 23 ] }
+ ]
}
},
{
+ "method": "json",
+ "om_terrain": [ [ "hotel_tower_roof_1_6", "hotel_tower_roof_1_5", "hotel_tower_roof_1_4" ] ],
"type": "mapgen",
+ "weight": 250,
+ "object": {
+ "fill_ter": "t_flat_roof",
+ "rows": [
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " |222222222222222222222222222222222222222222222222222222222223 ",
+ " |...........................................................3 ",
+ " |...........................................................3 ",
+ " |...........................................................3 "
+ ],
+ "palettes": [ "roof_palette" ]
+ }
+ },
+ {
"method": "json",
- "om_terrain": [ "hotel_tower_1_5" ],
+ "om_terrain": [ [ "hotel_tower_1_9", "hotel_tower_1_8", "hotel_tower_1_7" ] ],
+ "type": "mapgen",
"weight": 250,
"object": {
"fill_ter": "t_floor",
"rows": [
- "_,_____________________,",
- "_,_____________________,",
- "________________________",
- "________________________",
- "________________________",
- "________________________",
- "________________________",
- "_____sssssssssssssss____",
- "_,_sssssssssssssssssss_,",
- "_,sssssssssssssssssssss,",
- "_,ssssss-HHGGGHH-ssssss,",
- "_,sssss||^.....^||sssss,",
- "_,ssss||^......Yc||ssss,",
- "_,sss||^.......YcD||sss,",
- "sssssV^........YcxDVssss",
- "sssssV..........ch.Vssss",
- "'''''V.j.t......c..V''''",
- "'''''V.j.t......ch.V''''",
- "''T''V.j........c..V''T'",
- "'''''|.jjj......c.L|''''",
- "|-www||.........-+||www-",
- "|....d|...........|d..ht",
- "|c..BB|h.........h|BB..h",
- "|c.LBB|t.........t|BB..c"
+ " s''''%o....|c....|c....|c....|t.........t|d...c|....c|....c|....c%''''s",
+ " s''''%....h|...Lh|....h|....h|h.........h|BB..c|h...L|h....|h....%''''s",
+ " s''''%...ht|...ht|...ht|...ht|^.........^|BB...|th...|th...|th...%''''s",
+ " s''''%..|--|..|--|..|--|..|--|---|...|---|--|..|--|..|--|..|--|..%''''s",
+ " s''''%..+.S|..+.S|..+.S|..+.S|888G...|x88|S.+..|S.+..|S.+..|S.+..%''''s",
+ " s'''4%..|.&|..|.&|..|.&|..|.&|888G...G888|&.|..|&.|..|&.|..|&.|..%4'''s",
+ " s'%%%%..|bb|..|bb|..|bb|..|bb|88x|...G888|bb|..|bb|..|bb|..|bb|..%%%%'s",
+ " s'%<>%-7|--|-7|--|-7|--|-7|--|---|...|---|--|7-|--|7-|--|7-|--|7-%><%'s",
+ " ss%..%...........................................................%..%ss",
+ " ss=..+...........................................................+..=ss",
+ " ss%..%^..........................................................%..%ss",
+ " %UF%-7|--|-7|--|-7|--|-7|--|-7|--|--|7-|--|7-|--|7-|--|7-|--|7-%UF% ",
+ " %%%%..|bb|..|bb|..|bb|..|bb|..|bb|bb|..|bb|..|bb|..|bb|..|bb|..%%%% ",
+ " %..|.&|..|.&|..|.&|..|.&|..|.&|&.|..|&.|..|&.|..|&.|..|&.|..% ",
+ " %..+.S|..+.S|..+.S|..+.S|..+.S|S.+..|S.+..|S.+..|S.+..|S.+..% ",
+ " %..|--|..|--|..|--|..|--|..|--|--|..|--|..|--|..|--|..|--|..% ",
+ " %..Lht|..LBB|...ht|...ht|...ht|BB..L|th...|th...|BB...|th...% ",
+ " %....h|o..BB|....h|....h|....h|BB..c|h....|h....|BB..c|h....% ",
+ " %c....|c...d|c....|c...L|o....|d...c|....c|....o|dL..c|....o% ",
+ " %o..BB|c..BB|c..BB|c..BB|c..BB|BB..o|BB..o|BB..c|BB..o|BB..c% ",
+ " %c..BB|h..BB|o..BB|o..BB|c..BB|BB..h|BB..c|BB..c|BB..h|BB..c% ",
+ " %....d|th..d|....d|....d|....d|d..ht|d....|dL...|d..ht|d....% ",
+ " %%www%%%www%%%www%%%www%%%www%%%www%%%www%%%www%%%www%%%www%% ",
+ " "
],
- "terrain": {
- "'": "t_grass",
- "+": [ "t_door_c", "t_door_c", "t_door_o" ],
- ",": "t_pavement_y",
- "-": "t_wall",
- "C": "t_column",
- "G": "t_door_glass_c",
- "H": "t_wall_glass",
- "T": "t_tree_young",
- "V": "t_wall_glass",
- "_": "t_pavement",
- "s": "t_sidewalk",
- "w": "t_window_domestic",
- "x": "t_console_broken",
- "|": "t_wall"
- },
- "furniture": {
- "B": "f_bed",
- "D": "f_desk",
- "^": "f_indoor_plant",
- "c": "f_counter",
- "d": "f_dresser",
- "h": "f_chair",
- "j": "f_sofa",
- "o": "f_counter",
- "r": "f_rack",
- "t": "f_table"
- },
+ "palettes": [ "hotel_tower_palette.json" ],
+ "terrain": { "+": [ "t_door_c", "t_door_c", "t_door_o" ], "w": "t_window_domestic" },
+ "toilets": { "&": { } },
"items": {
"B": { "item": "bed", "chance": 50 },
"L": { "item": "hotel_luggage", "chance": 100 },
+ "c": { "item": "magazines", "chance": 15 },
"d": { "item": "book_hotel_tower_bible", "chance": 2 },
- "t": { "item": "magazines", "chance": 25 }
+ "o": { "item": "hotel_coffee_bar", "chance": 100 }
},
- "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 7, 23 ], "repeat": 2 } ],
- "vehicles": { "Y": { "vehicle": "luggage_cart", "chance": 85 } }
+ "item": { "S": { "item": "towel", "chance": 3, "amount": [ 1, 2 ] } },
+ "place_monsters": [
+ { "monster": "GROUP_ZOMBIE", "x": [ 7, 23 ], "y": [ 0, 22 ], "repeat": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 24, 47 ], "y": [ 23, 3 ], "repeat": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 49, 65 ], "y": [ 0, 22 ], "repeat": 2 }
+ ]
}
},
{
- "type": "mapgen",
"method": "json",
- "om_terrain": [ "hotel_tower_1_6" ],
+ "om_terrain": [ [ "hotel_tower_flr2_1_9", "hotel_tower_flr2_1_8", "hotel_tower_flr2_1_7" ] ],
+ "type": "mapgen",
"weight": 250,
"object": {
"fill_ter": "t_floor",
"rows": [
- " s_____,_____,_____,____",
- " s_____,_____,_____,____",
- " s______________________",
- " s______________________",
- " s______________________",
- " s______________________",
- " s______________________",
- " s______________________",
- " s_____,_____,_____,____",
- " s_____,_____,_____,____",
- " s_____,_____,_____,____",
- " s_____,_____,_____,____",
- " s_____,___v_,_____,____",
- " s_____,_____,_____,____",
- " sssssssssssssssssssssss",
- " sssssssssssssssssssssss",
- " s''''''''''''''''''''''",
- " s''''''''''''''''''''''",
- " s''''''''''T'''''T'''''",
- " s''''''''''''''''''''''",
- " s''''|-www-|-www-|-www-",
- " s''''|...Ld|....d|....d",
- " s''''|c..BB|o..BB|c.LBB",
- " s''''|c..BB|c..BB|o..BB"
+ "******%o....|c....|c....|c....|t.........t|d...c|....c|....c|....c%*****",
+ "******%....h|...Lh|....h|....h|h.........h|BB..c|h...L|h....|h....%*****",
+ "******%...ht|...ht|...ht|...ht|^.........^|BB...|th...|th...|th...%*****",
+ "******%..|--|..|--|..|--|..|--|---|...|---|--|..|--|..|--|..|--|..%*****",
+ "******%..+.S|..+.S|..+.S|..+.S|888G...|x88|S.+..|S.+..|S.+..|S.+..%*****",
+ "****4*%..|.&|..|.&|..|.&|..|.&|888G...G888|&.|..|&.|..|&.|..|&.|..%*4***",
+ "***%%%%..|bb|..|bb|..|bb|..|bb|88x|...G888|bb|..|bb|..|bb|..|bb|..%%%%**",
+ "***%><%-7|--|-7|--|-7|--|-7|--|---|...|---|--|7-|--|7-|--|7-|--|7-%<>%**",
+ "***H..%...........................................................%..H**",
+ "***H..+...........................................................+..H**",
+ "***H..%^..........................................................%..H**",
+ "***%UF%-7|--|-7|--|-7|--|-7|--|-7|--|--|7-|--|7-|--|7-|--|7-|--|7-%UF%**",
+ "***%%%%..|bb|..|bb|..|bb|..|bb|..|bb|bb|..|bb|..|bb|..|bb|..|bb|..%%%%**",
+ "******%..|.&|..|.&|..|.&|..|.&|..|.&|&.|..|&.|..|&.|..|&.|..|&.|..%*****",
+ "******%..+.S|..+.S|..+.S|..+.S|..+.S|S.+..|S.+..|S.+..|S.+..|S.+..%*****",
+ "******%..|--|..|--|..|--|..|--|..|--|--|..|--|..|--|..|--|..|--|..%*****",
+ "******%..Lht|..LBB|...ht|...ht|...ht|BB..L|th...|th...|BB...|th...%*****",
+ "******%....h|o..BB|....h|....h|....h|BB..c|h....|h....|BB..c|h....%*****",
+ "******%c....|c...d|c....|c...L|o....|d...c|....c|....o|dL..c|....o%*****",
+ "******%o..BB|c..BB|c..BB|c..BB|c..BB|BB..o|BB..o|BB..c|BB..o|BB..c%*****",
+ "******%c..BB|h..BB|o..BB|o..BB|c..BB|BB..h|BB..c|BB..c|BB..h|BB..c%*****",
+ "******%....d|th..d|....d|....d|....d|d..ht|d....|dL...|d..ht|d....%*****",
+ "******%%www%%%www%%%www%%%www%%%www%%%www%%%www%%%www%%%www%%%www%%*****",
+ "*************************************************************************"
],
- "terrain": {
- " ": [ "t_grass", "t_grass", "t_grass", "t_dirt" ],
- "'": "t_grass",
- ",": "t_pavement_y",
- "-": "t_wall",
- "T": "t_tree_young",
- "_": "t_pavement",
- "s": "t_sidewalk",
- "v": "t_pavement",
- "w": "t_window_domestic",
- "|": "t_wall"
- },
- "furniture": { "B": "f_bed", "c": "f_counter", "d": "f_dresser", "o": "f_counter" },
+ "palettes": [ "hotel_tower_palette.json" ],
+ "terrain": { "+": [ "t_door_c", "t_door_c", "t_door_o" ], "w": "t_window_domestic" },
+ "toilets": { "&": { } },
"items": {
"B": { "item": "bed", "chance": 50 },
"L": { "item": "hotel_luggage", "chance": 100 },
@@ -479,67 +376,50 @@
"d": { "item": "book_hotel_tower_bible", "chance": 2 },
"o": { "item": "hotel_coffee_bar", "chance": 100 }
},
- "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 7, 23 ], "y": [ 0, 23 ] } ],
- "vehicles": { "v": { "vehicle": "suburban_home", "chance": 60, "rotation": 90 } }
+ "item": { "S": { "item": "towel", "chance": 3, "amount": [ 1, 2 ] } },
+ "place_monsters": [
+ { "monster": "GROUP_ZOMBIE", "x": [ 7, 23 ], "y": [ 0, 22 ], "repeat": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 24, 47 ], "y": [ 23, 3 ], "repeat": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 49, 65 ], "y": [ 0, 22 ], "repeat": 2 }
+ ]
}
},
{
- "type": "mapgen",
"method": "json",
- "om_terrain": [ "hotel_tower_1_7" ],
+ "om_terrain": [ [ "hotel_tower_flr3_1_9", "hotel_tower_flr3_1_8", "hotel_tower_flr3_1_7" ] ],
+ "type": "mapgen",
"weight": 250,
"object": {
"fill_ter": "t_floor",
"rows": [
- "|....c|....c|....c|''''s",
- "|h...L|h....|h....|''''s",
- "|th...|th...|th...|''''s",
- "|--|..|--|..|--|..|''''s",
- "|S.+..|S.+..|S.+..|''''s",
- "|T.|..|T.|..|T.|..|''''s",
- "|bb|..|bb|..|bb|..|--|'s",
- "|--|D-|--|D-|--|D-|<.|'s",
- "..................|..|ss",
- "..................+..=ss",
- "..................|..|ss",
- "|--|D-|--|D-|--|D-|..| ",
- "|bb|..|bb|..|bb|..|--| ",
- "|T.|..|T.|..|T.|..| ",
- "|S.+..|S.+..|S.+..| ",
- "|--|..|--|..|--|..| ",
- "|th...|BB...|th...| ",
- "|h....|BB..c|h....| ",
- "|....o|dL..c|....o| ",
- "|BB..c|BB..o|BB..c| ",
- "|BB..c|BB..h|BB..c| ",
- "|dL...|d..ht|d....| ",
- "|-www-|-www-|-www-| ",
- " "
+ "******%o....|c....|c....|c....|t.........t|d...c|....c|....c|....c%*****",
+ "******%....h|...Lh|....h|....h|h.........h|BB..c|h...L|h....|h....%*****",
+ "******%...ht|...ht|...ht|...ht|^.........^|BB...|th...|th...|th...%*****",
+ "******%..|--|..|--|..|--|..|--|---|...|---|--|..|--|..|--|..|--|..%*****",
+ "******%..+.S|..+.S|..+.S|..+.S|888G...|x88|S.+..|S.+..|S.+..|S.+..%*****",
+ "*****4%..|.&|..|.&|..|.&|..|.&|888G...G888|&.|..|&.|..|&.|..|&.|..%4****",
+ "***%%%%..|bb|..|bb|..|bb|..|bb|88x|...G888|bb|..|bb|..|bb|..|bb|..%%%%**",
+ "***%<>%-7|--|-7|--|-7|--|-7|--|---|...|---|--|7-|--|7-|--|7-|--|7-%><%**",
+ "***H..%...........................................................%..H**",
+ "***H..+...........................................................+..H**",
+ "***H..%^..........................................................%..H**",
+ "***%UF%-7|--|-7|--|-7|--|-7|--|-7|--|--|7-|--|7-|--|7-|--|7-|--|7-%UF%**",
+ "***%%%%..|bb|..|bb|..|bb|..|bb|..|bb|bb|..|bb|..|bb|..|bb|..|bb|..%%%%**",
+ "******%..|.&|..|.&|..|.&|..|.&|..|.&|&.|..|&.|..|&.|..|&.|..|&.|..%*****",
+ "******%..+.S|..+.S|..+.S|..+.S|..+.S|S.+..|S.+..|S.+..|S.+..|S.+..%*****",
+ "******%..|--|..|--|..|--|..|--|..|--|--|..|--|..|--|..|--|..|--|..%*****",
+ "******%..Lht|..LBB|...ht|...ht|...ht|BB..L|th...|th...|BB...|th...%*****",
+ "******%....h|o..BB|....h|....h|....h|BB..c|h....|h....|BB..c|h....%*****",
+ "******%c....|c...d|c....|c...L|o....|d...c|....c|....o|dL..c|....o%*****",
+ "******%o..BB|c..BB|c..BB|c..BB|c..BB|BB..o|BB..o|BB..c|BB..o|BB..c%*****",
+ "******%c..BB|h..BB|o..BB|o..BB|c..BB|BB..h|BB..c|BB..c|BB..h|BB..c%*****",
+ "******%....d|th..d|....d|....d|....d|d..ht|d....|dL...|d..ht|d....%*****",
+ "******%%www%%%www%%%www%%%www%%%www%%%www%%%www%%%www%%%www%%%www%%*****",
+ "*************************************************************************"
],
- "terrain": {
- " ": [ "t_grass", "t_grass", "t_grass", "t_dirt" ],
- "'": "t_grass",
- "+": [ "t_door_c", "t_door_c", "t_door_o" ],
- "-": "t_wall",
- "<": "t_stairs_down",
- "=": "t_door_locked",
- "D": "t_door_locked_interior",
- "s": "t_sidewalk",
- "w": "t_window_domestic",
- "|": "t_wall"
- },
- "furniture": {
- "B": "f_bed",
- "S": "f_sink",
- "T": "f_toilet",
- "b": "f_bathtub",
- "c": "f_counter",
- "d": "f_dresser",
- "h": "f_chair",
- "o": "f_counter",
- "t": "f_table"
- },
- "toilets": { "T": { } },
+ "palettes": [ "hotel_tower_palette.json" ],
+ "terrain": { "+": [ "t_door_c", "t_door_c", "t_door_o" ], "w": "t_window_domestic" },
+ "toilets": { "&": { } },
"items": {
"B": { "item": "bed", "chance": 50 },
"L": { "item": "hotel_luggage", "chance": 100 },
@@ -548,65 +428,49 @@
"o": { "item": "hotel_coffee_bar", "chance": 100 }
},
"item": { "S": { "item": "towel", "chance": 3, "amount": [ 1, 2 ] } },
- "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 1, 17 ], "y": [ 0, 22 ], "repeat": 2 } ]
+ "place_monsters": [
+ { "monster": "GROUP_ZOMBIE", "x": [ 7, 23 ], "y": [ 0, 22 ], "repeat": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 24, 47 ], "y": [ 23, 3 ], "repeat": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 49, 65 ], "y": [ 0, 22 ], "repeat": 2 }
+ ]
}
},
{
- "type": "mapgen",
"method": "json",
- "om_terrain": [ "hotel_tower_1_8" ],
+ "om_terrain": [ [ "hotel_tower_flr4_1_9", "hotel_tower_flr4_1_8", "hotel_tower_flr4_1_7" ] ],
+ "type": "mapgen",
"weight": 250,
"object": {
"fill_ter": "t_floor",
"rows": [
- "|c....|t.........t|d...c",
- "|....h|h.........h|BB..c",
- "|...ht|^.........^|BB...",
- "|..|--|---|...|---|--|..",
- "|..+.S|EEE=...|xEE|S.+..",
- "|..|.T|EEE=...=EEE|T.|..",
- "|..|bb|EEx|...=EEE|bb|..",
- "|-D|--|---|...|---|--|D-",
- "........................",
- "........................",
- "........................",
- "|-D|--|-D|--|--|D-|--|D-",
- "|..|bb|..|bb|bb|..|bb|..",
- "|..|.T|..|.T|T.|..|T.|..",
- "|..+.S|..+.S|S.+..|S.+..",
- "|..|--|..|--|--|..|--|..",
- "|...ht|...ht|BB..L|th...",
- "|....h|....h|BB..c|h....",
- "|c...L|o....|d...c|....c",
- "|c..BB|c..BB|BB..o|BB..o",
- "|o..BB|c..BB|BB..h|BB..c",
- "|....d|....d|d..ht|d....",
- "|-www-|-www-|-www-|-www-",
- " "
+ "******%o....|c....|c....|c....|t.........t|d...c|....c|....c|....c%*****",
+ "******%....h|...Lh|....h|....h|h.........h|BB..c|h...L|h....|h....%*****",
+ "******%...ht|...ht|...ht|...ht|^.........^|BB...|th...|th...|th...%*****",
+ "******%..|--|..|--|..|--|..|--|---|...|---|--|..|--|..|--|..|--|..%*****",
+ "******%..+.S|..+.S|..+.S|..+.S|888G...|x88|S.+..|S.+..|S.+..|S.+..%*****",
+ "****4*%..|.&|..|.&|..|.&|..|.&|888G...G888|&.|..|&.|..|&.|..|&.|..%*4***",
+ "***%%%%..|bb|..|bb|..|bb|..|bb|88x|...G888|bb|..|bb|..|bb|..|bb|..%%%%**",
+ "***%>F%-7|--|-7|--|-7|--|-7|--|---|...|---|--|7-|--|7-|--|7-|--|7-%F>%**",
+ "***H.U%...........................................................%U.H**",
+ "***H..+...........................................................+..H**",
+ "***%7%%^..........................................................%%7%**",
+ "***%.<%-7|--|-7|--|-7|--|-7|--|-7|--|--|7-|--|7-|--|7-|--|7-|--|7-%<.%**",
+ "***%%%%..|bb|..|bb|..|bb|..|bb|..|bb|bb|..|bb|..|bb|..|bb|..|bb|..%%%%**",
+ "******%..|.&|..|.&|..|.&|..|.&|..|.&|&.|..|&.|..|&.|..|&.|..|&.|..%*****",
+ "******%..+.S|..+.S|..+.S|..+.S|..+.S|S.+..|S.+..|S.+..|S.+..|S.+..%*****",
+ "******%..|--|..|--|..|--|..|--|..|--|--|..|--|..|--|..|--|..|--|..%*****",
+ "******%..Lht|..LBB|...ht|...ht|...ht|BB..L|th...|th...|BB...|th...%*****",
+ "******%....h|o..BB|....h|....h|....h|BB..c|h....|h....|BB..c|h....%*****",
+ "******%c....|c...d|c....|c...L|o....|d...c|....c|....o|dL..c|....o%*****",
+ "******%o..BB|c..BB|c..BB|c..BB|c..BB|BB..o|BB..o|BB..c|BB..o|BB..c%*****",
+ "******%c..BB|h..BB|o..BB|o..BB|c..BB|BB..h|BB..c|BB..c|BB..h|BB..c%*****",
+ "******%....d|th..d|....d|....d|....d|d..ht|d....|dL...|d..ht|d....%*****",
+ "******%%www%%%www%%%www%%%www%%%www%%%www%%%www%%%www%%%www%%%www%%*****",
+ "*************************************************************************"
],
- "terrain": {
- "+": [ "t_door_c", "t_door_c", "t_door_o" ],
- "-": "t_wall",
- "=": "t_door_metal_c",
- "D": "t_door_locked_interior",
- "E": "t_elevator",
- "w": "t_window_domestic",
- "x": "t_elevator_control_off",
- "|": "t_wall"
- },
- "furniture": {
- "B": "f_bed",
- "S": "f_sink",
- "T": "f_toilet",
- "^": "f_indoor_plant",
- "b": "f_bathtub",
- "c": "f_counter",
- "d": "f_dresser",
- "h": "f_chair",
- "o": "f_counter",
- "t": "f_table"
- },
- "toilets": { "T": { } },
+ "palettes": [ "hotel_tower_palette.json" ],
+ "terrain": { "+": [ "t_door_c", "t_door_c", "t_door_o" ], "w": "t_window_domestic" },
+ "toilets": { "&": { } },
"items": {
"B": { "item": "bed", "chance": 50 },
"L": { "item": "hotel_luggage", "chance": 100 },
@@ -615,246 +479,308 @@
"o": { "item": "hotel_coffee_bar", "chance": 100 }
},
"item": { "S": { "item": "towel", "chance": 3, "amount": [ 1, 2 ] } },
- "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 23, 3 ], "repeat": 2 } ]
+ "place_monsters": [
+ { "monster": "GROUP_ZOMBIE", "x": [ 7, 23 ], "y": [ 0, 22 ], "repeat": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 24, 47 ], "y": [ 23, 3 ], "repeat": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 49, 65 ], "y": [ 0, 22 ], "repeat": 2 }
+ ]
}
},
{
- "type": "mapgen",
"method": "json",
- "om_terrain": [ "hotel_tower_1_9" ],
+ "om_terrain": [ [ "hotel_tower_roof_1_9", "hotel_tower_roof_1_8", "hotel_tower_roof_1_7" ] ],
+ "type": "mapgen",
"weight": 250,
"object": {
- "fill_ter": "t_floor",
+ "fill_ter": "t_flat_roof",
"rows": [
- " s''''|o....|c....|c....",
- " s''''|....h|...Lh|....h",
- " s''''|...ht|...ht|...ht",
- " s''''|..|--|..|--|..|--",
- " s''''|..+.S|..+.S|..+.S",
- " s''''|..|.T|..|.T|..|.T",
- " s'|--|..|bb|..|bb|..|bb",
- " s'|.<|-D|--|-D|--|-D|--",
- " ss|..|.................",
- " ss=..+.................",
- " ss|..|^................",
- " |..|-D|--|-D|--|-D|--",
- " |--|..|bb|..|bb|..|bb",
- " |..|.T|..|.T|..|.T",
- " |..+.S|..+.S|..+.S",
- " |..|--|..|--|..|--",
- " |..Lht|..LBB|...ht",
- " |....h|o..BB|....h",
- " |c....|c...d|c....",
- " |o..BB|c..BB|c..BB",
- " |c..BB|h..BB|o..BB",
- " |....d|th..d|....d",
- " |-www-|-www-|-www-",
- " "
+ " |...........................................................3 ",
+ " |...........................................................3 ",
+ " |...........................................................3 ",
+ " |...........................................................3 ",
+ " |...........................................................3 ",
+ " |...........................................................3 ",
+ " |-5|..%%%%%%%%%%%%%%%%%%%%%%%%%DD%%%%%%%%%%%%%%%%%%%%%%%%%%%%..35-3 ",
+ " |.....%.....................................................%.....3 ",
+ " |.....%.....YYYYY.................................YYYYY.....%.....3 ",
+ " ########....66666.................................66666.....####### ",
+ " #______+.....................AAAAAA.........................+____H# ",
+ " #_>_HHH#.....................AAAAAA.........................#___>H# ",
+ " ########.....................AAAAAA.........................####### ",
+ " |..%.....66666.................................66666.....%..3 ",
+ " |..%.....YYYYY.................................YYYYY.....%..3 ",
+ " |..%.....................................................%..3 ",
+ " |..%%%%%%%%%%%%%%%%%%%%%%%%%DD%%%%%%%%%%%%%%%%%%%%%%%%%%%%..3 ",
+ " |...........................................................3 ",
+ " |...........................................................3 ",
+ " |...........................................................3 ",
+ " |...........................................................3 ",
+ " |...........................................................3 ",
+ " |-----------------------------------------------------------3 ",
+ " "
],
+ "palettes": [ "roof_palette" ],
"terrain": {
- " ": [ "t_grass", "t_grass", "t_grass", "t_dirt" ],
- "'": "t_grass",
- "+": [ "t_door_c", "t_door_c", "t_door_o" ],
- "-": "t_wall",
- "<": "t_stairs_down",
- "=": "t_door_locked",
- "D": "t_door_locked_interior",
- "s": "t_sidewalk",
- "w": "t_window_domestic",
- "|": "t_wall"
- },
- "furniture": {
- "B": "f_bed",
- "S": "f_sink",
- "T": "f_toilet",
- "^": "f_indoor_plant",
- "b": "f_bathtub",
- "c": "f_counter",
- "d": "f_dresser",
- "h": "f_chair",
- "o": "f_counter",
- "t": "f_table"
+ ">": [ "t_stairs_down" ],
+ "#": "t_adobe_brick_wall",
+ "_": "t_thconc_floor",
+ "+": "t_door_metal_c",
+ "D": "t_chaingate_l",
+ "%": "t_chainfence",
+ "H": "t_generator_broken"
},
- "toilets": { "T": { } },
+ "furniture": { "Y": "f_standing_tank", "6": "f_water_heater", "7": "f_roof_turbine_vent" },
+ "liquids": { "6": { "liquid": "water_clean", "amount": [ 0, 100 ] }, "Y": { "liquid": "water_clean", "amount": [ 100, 1000 ] } },
+ "place_monsters": [
+ { "monster": "GROUP_ZOMBIE", "x": [ 7, 23 ], "y": [ 0, 22 ], "repeat": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 24, 47 ], "y": [ 23, 3 ], "repeat": 2 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 49, 65 ], "y": [ 0, 22 ], "repeat": 2 }
+ ]
+ }
+ },
+ {
+ "method": "json",
+ "om_terrain": [ [ "hotel_tower_b_3", "hotel_tower_b_2", "hotel_tower_b_1" ] ],
+ "type": "mapgen",
+ "weight": 250,
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ "########################|-----|-----------|-----|#######################",
+ "########################|&+...|.rrr...l..l|...+&|#######################",
+ "########################|-|..c|..........l|c..|-|#######################",
+ "########################|&+..S|---|-+-|---|S..+&|#######################",
+ "########################|-|..c|888+..^|x88|c..|-|#######################",
+ "########################|.+..S|888+...+888|S..+.|#######################",
+ "###|--|#################|&|..c|88x|...+888|c..|&|#################|--|##",
+ "###|UF|-----------------|---+-|---|HGH|---|-+---|-----------------|UF|##",
+ "###|..|^.............mmmm......................mmmm..............^|..|##",
+ "###|..+...........................................................+..|##",
+ "###|..|...........................................................|..|##",
+ "###|.<|-------++---|...............................|-HHHHHHHH-----|<.|##",
+ "###|--|cWWWW......r|m...sssssssssssssssssssssss....|^.............|--|##",
+ "######|c..........r|m...s999999999999999999999s....6..E..E..E..E..|#####",
+ "######|S..........r|m...s999999999999999999999s....6..............|#####",
+ "######|cDDDDrr....r|....s999999999999999999999s....G..E..E..E..E..|#####",
+ "######|--------=---|.ssss999999999999999999999s....6..............|#####",
+ "######|............|.swwwwww999999999999999999s....6...22222222...|#####",
+ "######|...$........|.swwwwww999999999999999999s....6...22222222...|#####",
+ "######|...$........|.swwwwwwsssssssssssssssssss....6...22222222...|#####",
+ "######|$$$$$PP$$$$.|.swwwwwws......................|..............|#####",
+ "######|............|^ssssssss..^rrr^..........mmmm^|...UF.mmm.mmm.|#####",
+ "######|------------|-------------------------------|--------------|#####",
+ "########################################################################"
+ ],
+ "palettes": [ "hotel_tower_palette.json" ],
+ "set": [
+ { "point": "trap", "id": "tr_rollmat", "x": [ 56, 61 ], "y": 17, "repeat": [ 2, 4 ] },
+ { "point": "trap", "id": "tr_rollmat", "x": [ 56, 61 ], "y": 18, "repeat": [ 2, 4 ] },
+ { "point": "trap", "id": "tr_rollmat", "x": [ 56, 61 ], "y": 19, "repeat": [ 2, 4 ] }
+ ],
+ "terrain": { "=": "t_door_locked_interior", ".": "t_thconc_floor", "|": "t_concrete_wall", "-": "t_concrete_wall" },
+ "vendingmachines": { "U": { "item_group": "vending_drink" }, "F": { "item_group": "vending_food" } },
+ "items": { "l": { "item": "cleaning", "chance": 60 } },
+ "item": { "r": { "item": "towel", "chance": 2, "amount": [ 1, 2 ] } },
+ "toilets": { "&": { } },
+ "place_monsters": [
+ { "monster": "GROUP_HOTEL_POOL", "x": [ 24, 46 ], "y": [ 12, 19 ], "repeat": 2 },
+ { "monster": "GROUP_HOTEL_GYM", "x": [ 52, 65 ], "y": [ 12, 21 ], "repeat": 2 }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [ "hotel_tower_1_5B" ],
+ "weight": 250,
+ "object": {
+ "fill_ter": "t_floor",
+ "rows": [
+ "_,_____________________,",
+ "_,_____________________,",
+ "________________________",
+ "________________________",
+ "________________________",
+ "________________________",
+ "________________________",
+ "__sssssssssssssssssssss_",
+ "_,sssssssssssssssssssss,",
+ "_,sssssssssssssssssssss,",
+ "_,sss%HHHGGHHHGGHHH%sss,",
+ "_,sssH............^%sss,",
+ "_,sssH^............Hsss,",
+ "_,sss%cccc.........Hsss,",
+ "sssss%LL.c.........Hssss",
+ "sssss%...x......hh.%ssss",
+ "'''''%h..c......tt.H''''",
+ "'''''%D.r%......tt.H''''",
+ "''T''%%+%%......hh.H''T'",
+ "'''''%^............%''''",
+ "%%www%%...........%%www%",
+ "%....d|...........|d..ht",
+ "%c..BB|h.........h|BB..h",
+ "%c.LBB|t.........t|BB..c"
+ ],
+ "palettes": [ "hotel_tower_palette.json" ],
+ "terrain": { "+": [ "t_door_c", "t_door_c", "t_door_o" ], "w": "t_window_domestic", "x": "t_console_broken" },
+ "furniture": { "D": "f_desk" },
"items": {
"B": { "item": "bed", "chance": 50 },
"L": { "item": "hotel_luggage", "chance": 100 },
"c": { "item": "magazines", "chance": 15 },
- "d": { "item": "book_hotel_tower_bible", "chance": 2 },
- "o": { "item": "hotel_coffee_bar", "chance": 100 }
+ "d": { "item": "book_hotel_tower_bible", "chance": 2 }
},
- "item": { "S": { "item": "towel", "chance": 3, "amount": [ 1, 2 ] } },
- "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 7, 23 ], "y": [ 0, 22 ], "repeat": 2 } ]
+ "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 7, 23 ], "repeat": 2 } ],
+ "place_vehicles": [ { "vehicle": "luggage_cart", "x": [ 10, 15 ], "y": [ 11, 19 ], "chance": 100, "repeat": [ 1, 3 ] } ]
}
},
{
"type": "mapgen",
"method": "json",
- "om_terrain": [ "hotel_tower_b_1" ],
+ "om_terrain": [ "hotel_tower_flr2_1_5B" ],
"weight": 250,
"object": {
"fill_ter": "t_floor",
"rows": [
- "|#######################",
- "|#######################",
- "|#######################",
- "|#######################",
- "|#######################",
- "|#######################",
- "|#################|--|##",
- "|-----------------|..|##",
- "tth..............^|..|##",
- "..................+..|##",
- "..................|..|##",
- "...|-HHHHHHHH-----|<.|##",
- "...|^.............|--|##",
- "...V..E..E..E..E..|#####",
- "...V..............|#####",
- "...G..............|#####",
- "...V..............|#####",
- "...V..E.........E.|#####",
- "...V..............|#####",
- "...V..E...........|#####",
- "...|..............|#####",
- "th^|...ee..E......|#####",
- "---|--------------|#####",
- "########################"
+ "************************",
+ "************************",
+ "************************",
+ "************************",
+ "************************",
+ "************************",
+ "************************",
+ "************************",
+ "************************",
+ "************************",
+ "*****111111111111111****",
+ "*****111111111111111****",
+ "*****111111111111111****",
+ "*****111111111111111****",
+ "*****111111111000111****",
+ "*****111111111000111****",
+ "*****111111111000111****",
+ "*****111111111111111****",
+ "*****111111111111111****",
+ "*****111111111111111****",
+ "%%www%%%%H%HHHH%H%%%www%",
+ "|....d|...^jjjj^..|d..ht",
+ "|c..BB|h.........h|BB..h",
+ "|c.LBB|t.........t|BB..c"
],
- "terrain": {
- "#": "t_rock",
- "+": "t_door_c",
- "-": "t_wall",
- "<": "t_stairs_up",
- "G": "t_door_glass_c",
- "H": "t_wall_glass",
- "V": "t_wall_glass",
- "|": "t_wall"
+ "palettes": [ "hotel_tower_palette.json" ],
+ "terrain": { "+": [ "t_door_c", "t_door_c", "t_door_o" ], "w": "t_window_domestic", "x": "t_console_broken" },
+ "furniture": { "D": "f_desk" },
+ "items": {
+ "B": { "item": "bed", "chance": 50 },
+ "L": { "item": "hotel_luggage", "chance": 100 },
+ "c": { "item": "magazines", "chance": 15 },
+ "d": { "item": "book_hotel_tower_bible", "chance": 2 }
},
- "furniture": { "E": "f_exercise", "^": "f_indoor_plant", "e": "f_fridge", "h": "f_chair", "t": "f_table" },
- "place_monsters": [ { "monster": "GROUP_HOTEL_GYM", "x": [ 4, 17 ], "y": [ 12, 21 ], "repeat": 2 } ]
+ "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 7, 23 ], "y": [ 21, 23 ] } ],
+ "place_vehicles": [ { "vehicle": "luggage_cart", "x": [ 10, 15 ], "y": [ 11, 19 ], "chance": 100, "repeat": [ 1, 3 ] } ]
}
},
{
"type": "mapgen",
"method": "json",
- "om_terrain": [ "hotel_tower_b_2" ],
+ "om_terrain": [ "hotel_tower_1_5C" ],
"weight": 250,
"object": {
"fill_ter": "t_floor",
"rows": [
- "|-----|-----------|-----",
- "|T+...|.rrr...l..l|...+T",
- "|-|..c|..........l|c..|-",
- "|T+..S|---|-+-|---|S..+T",
- "|-|..c|EEE+..^|xEE|c..|-",
- "|.+..S|EEE+...+EEE|S..+.",
- "|T|..c|EEx|...+EEE|c..|T",
- "|---+-|---|HGH|---|-+---",
- "h......................h",
- "........................",
- "........................",
- "........................",
- "sssssssssssssssssssssss.",
- "swwwwwwwwwwwwWWWWWWWWWs.",
- "swwwwwwwwwwwwWWWWWWWWWs.",
- "swwwwwwwwwwwwWWWWWWWWWs.",
- "swwwwwwwwwwwwWWWWWWWWWs.",
- "swwwwwwwwwwwwWWWWWWWWWs.",
- "swwwwwwwwwwwwWWWWWWWWWs.",
- "sssssssssssssssssssssss.",
- "........................",
- ".......^rrr^..........ht",
- "------------------------",
- "########################"
+ "________________________",
+ "________________________",
+ "________________________",
+ "________________________",
+ "________________________",
+ "__,,,,,,,,,,,,,,,,,,,,,_",
+ "___X_____X_____X_____X__",
+ "________________________",
+ "________________________",
+ "________________________",
+ "_____________V__________",
+ "________________________",
+ "________________________",
+ "___MMMMMMsssssssMMMMMM__",
+ "sssXsssssssssssssssssXss",
+ "sssss%%%%HGGHGGH%%%%ssss",
+ "'''''%.............%''''",
+ "'''''H.............H''''",
+ "''T''H....ccccc....H''T'",
+ "'''''%^...cDxDc...^%''''",
+ "%%www%%......hc...%%www%",
+ "|....d|...ccccc...|d..ht",
+ "|c..BB|...........|BB..h",
+ "|c.LBB|h.........h|BB..c"
],
+ "palettes": [ "hotel_tower_palette.json" ],
"terrain": {
- "#": "t_rock",
- "+": "t_door_c",
- "-": "t_wall",
- "E": "t_elevator",
+ "+": [ "t_door_c", "t_door_c", "t_door_o" ],
"G": "t_door_glass_c",
- "H": "t_wall_glass",
- "W": "t_water_dp",
- "s": "t_sidewalk",
- "w": "t_water_sh",
- "x": "t_elevator_control_off",
- "|": "t_wall"
+ "w": "t_window_domestic",
+ "V": "t_pavement",
+ "x": "t_console_broken"
},
- "furniture": {
- "S": "f_sink",
- "T": "f_toilet",
- "^": "f_indoor_plant",
- "c": "f_counter",
- "h": "f_chair",
- "l": "f_locker",
- "r": "f_rack",
- "t": "f_table"
+ "furniture": { "D": "f_desk" },
+ "items": {
+ "B": { "item": "bed", "chance": 50 },
+ "L": { "item": "hotel_luggage", "chance": 100 },
+ "c": { "item": "magazines", "chance": 15 },
+ "d": { "item": "book_hotel_tower_bible", "chance": 2 }
},
- "toilets": { "T": { } },
- "items": { "l": { "item": "cleaning", "chance": 60 } },
- "item": { "r": { "item": "towel", "chance": 2, "amount": [ 1, 2 ] } },
- "place_monsters": [ { "monster": "GROUP_HOTEL_POOL", "x": [ 0, 22 ], "y": [ 12, 19 ], "repeat": 2 } ]
+ "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 7, 23 ], "repeat": 2 } ],
+ "place_vehicles": [ { "vehicle": "luggage_cart", "x": [ 3, 21 ], "y": [ 16, 17 ], "chance": 100, "repeat": [ 1, 3 ] } ],
+ "vehicles": { "V": { "vehicle": "suburban_home", "chance": 100, "rotation": 180 } }
}
},
{
"type": "mapgen",
"method": "json",
- "om_terrain": [ "hotel_tower_b_3" ],
+ "om_terrain": [ "hotel_tower_flr2_1_5C" ],
"weight": 250,
"object": {
"fill_ter": "t_floor",
"rows": [
- "########################",
- "########################",
- "########################",
- "########################",
- "########################",
- "########################",
- "###|--|#################",
- "###|..|-----------------",
- "###|..|^.............htt",
- "###|..+.................",
- "###|..|.................",
- "###|.<|-------++---|....",
- "###|--|cWWWW......r|....",
- "######|c..........r|....",
- "######|S..........r|....",
- "######|cDDDDrr....r|....",
- "######|--------=---|....",
- "######|............|....",
- "######|...$........|....",
- "######|...$........|....",
- "######|$$$$$PP$$$$.|....",
- "######|............|^...",
- "######|------------|----",
- "########################"
+ "************************",
+ "************************",
+ "************************",
+ "************************",
+ "************************",
+ "************************",
+ "***1111111111111111111**",
+ "***1000000000000000001**",
+ "***1000000000000000001**",
+ "***1000000000000000001**",
+ "***1000000000000000001**",
+ "***1000000000000000001**",
+ "***1000000000000000001**",
+ "***1000000000000000001**",
+ "***1111111111111111111**",
+ "*****111111111111111****",
+ "*****111111111111111****",
+ "*****111111111111111****",
+ "*****111111111111111****",
+ "*****111111111111111****",
+ "%%www%%%H%%HHHH%%H%%www%",
+ "|....d|...^jjjj^..|d..ht",
+ "|c..BB|h.........h|BB..h",
+ "|c.LBB|t.........t|BB..c"
],
+ "palettes": [ "hotel_tower_palette.json" ],
"terrain": {
- "#": "t_rock",
- "$": "t_sewage_pipe",
- "+": "t_door_c",
- "-": "t_wall",
- "<": "t_stairs_up",
- "=": "t_door_locked_interior",
- "P": "t_sewage_pump",
- "|": "t_wall"
- },
- "furniture": {
- "D": "f_dryer",
- "S": "f_sink",
- "W": "f_washer",
- "^": "f_indoor_plant",
- "c": "f_counter",
- "h": "f_chair",
- "r": "f_rack",
- "t": "f_table"
+ "+": [ "t_door_c", "t_door_c", "t_door_o" ],
+ "G": "t_door_glass_c",
+ "w": "t_window_domestic",
+ "x": "t_console_broken"
},
+ "furniture": { "D": "f_desk" },
"items": {
- "D": { "item": "dresser", "chance": 25 },
- "W": { "item": "dresser", "chance": 25 },
- "r": { "item": "home_hw", "chance": 60 }
+ "B": { "item": "bed", "chance": 50 },
+ "L": { "item": "hotel_luggage", "chance": 100 },
+ "c": { "item": "magazines", "chance": 15 },
+ "d": { "item": "book_hotel_tower_bible", "chance": 2 }
},
- "item": { "D": { "item": "blanket", "chance": 12 }, "W": { "item": "blanket", "chance": 12 } }
+ "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 7, 23 ], "y": [ 21, 23 ] } ]
}
}
]
diff --git a/data/json/mapgen/house/house_w_1.json b/data/json/mapgen/house/house_w_1.json
index fdd0d031ba932..cb7814bc0ddc4 100644
--- a/data/json/mapgen/house/house_w_1.json
+++ b/data/json/mapgen/house/house_w_1.json
@@ -7,31 +7,32 @@
"fill_ter": "t_floor",
"rows": [
"..........Gss...........",
- ".||oooo||CsssssC........",
- ".|5 +sssssssss......",
- ".| ||o|oo||.s......",
- ".o |4 |.s......",
- ".| | |.s......",
- ".| o.ss.....",
- ".o7 o..s.....",
- ".| | |..s.....",
- ".| | |..s.....",
- ".|||||| | ||||||.ss.....",
- ".|1 | | yJJl|ssss.....",
- ".| | | +ssss.....",
- ".o | | AJ Yoss.......",
- ".| + + AJ K|.........",
- ".||+||| | i|.........",
- ".|OO| + |yKKnK|.........",
- ".|||| |+||||o||.........",
- ".|2 | TT|.............",
- ".| |j o.............",
- ".| |||+|.............",
- ".| +O|t|.............",
- ".|||o||||||.............",
+ ".##oooo##CsssssC........",
+ ".#5 *sssssssss......",
+ ".# ##o#oo##ps......",
+ ".o |4 #ps......",
+ ".# | #ps......",
+ ".# opss.....",
+ ".o7 opXs.....",
+ ".# | #p.s.....",
+ ".# | #p.s.....",
+ ".#||||| | ||||##pss.....",
+ ".#1 | | yJJl#ssss.....",
+ ".# | | *ssss.....",
+ ".o | | AJ Yossps.....",
+ ".# + + AJ K###ps.....",
+ ".#|+||| | i#g*ss.....",
+ ".#OO| + |yKKnK###.s.....",
+ ".#||| |+||##o##.........",
+ ".#2 | TT#^............",
+ ".# |j o.............",
+ ".# |||+#.............",
+ ".# +O|t#.............",
+ ".###o######.............",
"........................"
],
"palettes": [ "house_w_foundation_palette" ],
+ "terrain": { "#": "t_brick_wall" },
"nested": {
"1": {
"chunks": [
@@ -77,7 +78,56 @@
[ "bonus_room_3x3_W_8", 50 ]
]
}
- }
+ },
+ "place_nested": [
+ {
+ "chunks": [
+ [ "null", 40 ],
+ [ "roof_6x6_garden_4", 5 ],
+ [ "roof_6x6_garden_1", 15 ],
+ [ "greenhouse_6x6_herbal", 10 ],
+ [ "pond_6x6", 15 ]
+ ],
+ "x": 16,
+ "y": 17
+ }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "house_w_1_roof",
+ "object": {
+ "fill_ter": "t_shingle_flat_roof",
+ "rows": [
+ " ",
+ " |2222223 ",
+ " |......3 ",
+ " |......32222223 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |............-3 ",
+ " |............3 ",
+ " |............3 ",
+ " |............3 ",
+ " |............323 ",
+ " |..............3 ",
+ " |............--3 ",
+ " |........5---- ",
+ " |........3 ",
+ " |........3 ",
+ " |........3 ",
+ " |........3 ",
+ " |--------3 ",
+ " "
+ ],
+ "palettes": [ "roof_palette" ],
+ "terrain": { ".": "t_shingle_flat_roof" }
}
}
]
diff --git a/data/json/mapgen/house/house_w_2.json b/data/json/mapgen/house/house_w_2.json
index 5064fb663619b..3320871ce0cbb 100644
--- a/data/json/mapgen/house/house_w_2.json
+++ b/data/json/mapgen/house/house_w_2.json
@@ -1,69 +1,123 @@
-{
- "type": "mapgen",
- "method": "json",
- "om_terrain": "house_w_2",
- "object": {
- "fill_ter": "t_floor",
- "rows": [
- "........G.sss...........",
- "...CsssCssssssCsssC.....",
- "...ssssssssssssssss.....",
- "..||o|o|||+|||o||o||....",
- "..|1 | a|5 6 |....",
- "..| | I| |....",
- "..| | I| |....",
- "..| + |||| |||....",
- "..||+|||| |....",
- "..|O O| + 7 o....",
- "..||||||| 8 o....",
- "..|4 |....",
- "..o | |||||||||....",
- "..| | y| tT|.......",
- "..o | + To.......",
- "..| | |j |.......",
- "..||+|||||+||||+|.......",
- "..|J K|2 |w|.......",
- "..|J L K| |||.......",
- "..on L i| |O|.......",
- "..|J K| + |.......",
- "..|lJJ a| |O|.......",
- "..||o|+|||o||||||.......",
- "...ssssss..............."
- ],
- "palettes": [ "house_w_foundation_palette" ],
- "nested": {
- "1": { "chunks": [ [ "bedroom_4x4_adult_1_N", 20 ] ] },
- "2": {
- "chunks": [
- [ "bedroom_5x5_adult_S_1", 50 ],
- [ "bedroom_5x5_adult_W_1", 50 ],
- [ "bedroom_5x5_adult_N_2", 50 ],
- [ "bedroom_5x5_adult_S_2", 50 ],
- [ "bedroom_5x5_adult_E_2", 50 ],
- [ "bedroom_5x5_adult_W_2", 50 ]
- ]
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "house_w_2",
+ "object": {
+ "fill_ter": "t_floor",
+ "rows": [
+ "..MMppMMMGsssMMMppMM....",
+ "..MCsssCssssssCsssCM....",
+ "...ssssssssssssssss.....",
+ "..##o#o###+###o##o##....",
+ "..#1 | a|5 6 #....",
+ "..# | I| #....",
+ "..# | I| #....",
+ "..# + |||| ||#....",
+ "..#|+|||| 8 #....",
+ "..#O O| + 7 o....",
+ "..#|||||| o....",
+ "..#4 #....",
+ "..o | |||||####....",
+ "..# | y| tT#^......",
+ "..o | + To.......",
+ "..# | |j #.......",
+ "..#|+|||||+||||+#.......",
+ "..#J K|2 |w#.......",
+ "..#J L K| ||#.......",
+ "..on L i| |O#.......",
+ "..#J K| + #.......",
+ "..#lJJ a| |O#.......",
+ "..##o#+###o######.......",
+ "...ssssss..............."
+ ],
+ "palettes": [ "house_w_foundation_palette" ],
+ "terrain": { "#": "t_adobe_brick_wall" },
+ "nested": {
+ "1": { "chunks": [ [ "bedroom_4x4_adult_1_N", 20 ] ] },
+ "2": {
+ "chunks": [
+ [ "bedroom_5x5_adult_S_1", 50 ],
+ [ "bedroom_5x5_adult_W_1", 50 ],
+ [ "bedroom_5x5_adult_N_2", 50 ],
+ [ "bedroom_5x5_adult_S_2", 50 ],
+ [ "bedroom_5x5_adult_E_2", 50 ],
+ [ "bedroom_5x5_adult_W_2", 50 ]
+ ]
+ },
+ "4": { "chunks": [ [ "diningroom_5x5_N_S", 50 ], [ "diningroom_5x5_E_W", 50 ] ] },
+ "5": {
+ "chunks": [
+ [ "bonus_room_2x2_1", 50 ],
+ [ "bonus_room_2x2_2", 50 ],
+ [ "bonus_room_2x2_4_W", 50 ],
+ [ "bonus_room_3x3_1", 50 ],
+ [ "bonus_room_3x3_2", 50 ]
+ ]
+ },
+ "6": {
+ "chunks": [
+ [ "bonus_room_3x3_4", 50 ],
+ [ "bonus_room_3x3_N_6", 50 ],
+ [ "bonus_room_3x3_E_6", 50 ],
+ [ "bonus_room_3x3_N_8", 50 ],
+ [ "bonus_room_3x3_E_8", 50 ]
+ ]
+ },
+ "7": { "chunks": [ [ "bonus_room_3x3_S_5", 50 ], [ "bonus_room_3x3_E_5", 50 ] ] },
+ "8": { "chunks": [ [ "bonus_room_2x2_1", 50 ], [ "bonus_room_2x2_2", 50 ] ] }
},
- "4": { "chunks": [ [ "diningroom_5x5_N_S", 50 ], [ "diningroom_5x5_E_W", 50 ] ] },
- "5": {
- "chunks": [
- [ "bonus_room_2x2_1", 50 ],
- [ "bonus_room_2x2_2", 50 ],
- [ "bonus_room_2x2_4_W", 50 ],
- [ "bonus_room_3x3_1", 50 ],
- [ "bonus_room_3x3_2", 50 ]
- ]
- },
- "6": {
- "chunks": [
- [ "bonus_room_3x3_4", 50 ],
- [ "bonus_room_3x3_N_6", 50 ],
- [ "bonus_room_3x3_E_6", 50 ],
- [ "bonus_room_3x3_N_8", 50 ],
- [ "bonus_room_3x3_E_8", 50 ]
- ]
- },
- "7": { "chunks": [ [ "bonus_room_3x3_5", 50 ] ] },
- "8": { "chunks": [ [ "bonus_room_2x2_1", 50 ], [ "bonus_room_2x2_2", 50 ] ] }
+ "place_nested": [
+ {
+ "chunks": [
+ [ "null", 30 ],
+ [ "reflecting_pool_5x5_1", 10 ],
+ [ "reflecting_pool_5x5_2", 10 ],
+ [ "playset_4x4_1", 10 ],
+ [ "playset_4x4_2", 10 ],
+ [ "firepit_5x5_1", 10 ],
+ [ "firepit_5x5_2", 10 ]
+ ],
+ "x": 18,
+ "y": [ 14, 17 ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "house_w_2_roof",
+ "object": {
+ "fill_ter": "t_shingle_flat_roof",
+ "rows": [
+ " ",
+ " ................ ",
+ " ................ ",
+ " |22222222222222223 ",
+ " |................3 ",
+ " |................3 ",
+ " |................3 ",
+ " |................3 ",
+ " |................3 ",
+ " |................3 ",
+ " |................3 ",
+ " |................3 ",
+ " |.............5--3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |-------------3 ",
+ " "
+ ],
+ "palettes": [ "roof_palette" ],
+ "terrain": { ".": "t_shingle_flat_roof" }
}
}
-}
+]
diff --git a/data/json/mapgen/house/house_w_3.json b/data/json/mapgen/house/house_w_3.json
index 1caa1966a57cd..c8b80e0d6249f 100644
--- a/data/json/mapgen/house/house_w_3.json
+++ b/data/json/mapgen/house/house_w_3.json
@@ -1,85 +1,144 @@
-{
- "type": "mapgen",
- "method": "json",
- "om_terrain": "house_w_3",
- "object": {
- "fill_ter": "t_floor",
- "rows": [
- "......G..ss.............",
- ".........ss.............",
- "......CssssssC..........",
- "......ssssssss..........",
- "......ssssssss..........",
- "||o|o|||o++o|||ooo||....",
- "|1 | |6 y|s...",
- "| |5 | 7 +s...",
- "| | + |s...",
- "o | |a |....",
- "| + |||||||....",
- "|+||||| + d|v|....",
- "|O|O|w+ |j t|Q|....",
- "|||+|||4 |||||+|....",
- "|2 + |QQQY |....",
- "o | no....",
- "| | |J K|....",
- "| | |J i|....",
- "| | |lnJJK|....",
- "||||o|||o||o|||o||||....",
- "........................",
- "........................",
- "........................",
- "........................"
- ],
- "palettes": [ "house_w_foundation_palette" ],
- "nested": {
- "1": {
- "chunks": [
- [ "bedroom_5x5_adult_N_1", 50 ],
- [ "bedroom_5x5_adult_S_1", 50 ],
- [ "bedroom_5x5_adult_N_2", 50 ],
- [ "bedroom_5x5_adult_S_2", 50 ],
- [ "bedroom_5x5_adult_E_2", 50 ],
- [ "bedroom_5x5_adult_W_2", 50 ]
- ]
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "house_w_3",
+ "object": {
+ "fill_ter": "t_floor",
+ "rows": [
+ "........Gss.............",
+ ".........ss.............",
+ "......CssssssC..........",
+ ".....MssssssssM.........",
+ "..pppMssssssssMppp......",
+ "##o#o###o**o###ooo##....",
+ "#1 | |6 y#s...",
+ "# |5 | 7 *s...",
+ "# | + #sss.",
+ "o | |a #pps.",
+ "# + ||||||###s.",
+ "#||+||| + d|v|U*s.",
+ "#O|O|w+ |j t|Q|g#..",
+ "#+|||||4 |||||+###..",
+ "#2 + |QQQY #^...",
+ "o | no....",
+ "# | |J K#....",
+ "# | |J i#....",
+ "# | |lnJJK#....",
+ "####o###o##o###o####....",
+ "........................",
+ "........................",
+ "........................",
+ "........................"
+ ],
+ "palettes": [ "house_w_foundation_palette" ],
+ "terrain": { "#": "t_rock_wall" },
+ "nested": {
+ "1": {
+ "chunks": [
+ [ "bedroom_5x5_adult_N_1", 50 ],
+ [ "bedroom_5x5_adult_N_2", 50 ],
+ [ "bedroom_5x5_adult_E_2", 50 ],
+ [ "bedroom_5x5_adult_W_2", 50 ]
+ ]
+ },
+ "2": {
+ "chunks": [
+ [ "bedroom_5x5_adult_S_1", 50 ],
+ [ "bedroom_5x5_adult_E_1", 50 ],
+ [ "bedroom_5x5_adult_W_1", 50 ],
+ [ "bedroom_5x5_adult_S_2", 50 ],
+ [ "bedroom_5x5_adult_E_2", 50 ],
+ [ "bedroom_5x5_adult_W_2", 50 ]
+ ]
+ },
+ "4": {
+ "chunks": [
+ [ "diningroom_6x6_N_S_1A", 20 ],
+ [ "diningroom_6x6_E_W_1", 20 ],
+ [ "diningroom_6x6_E_W_2", 20 ],
+ [ "diningroom_6x6_N_S_2", 20 ]
+ ]
+ },
+ "5": { "chunks": [ [ "livingroom_5x5_N_1", 20 ], [ "livingroom_5x5_S_1", 20 ] ] },
+ "6": {
+ "chunks": [
+ [ "bonus_room_2x2_1", 50 ],
+ [ "bonus_room_2x2_2", 50 ],
+ [ "bonus_room_2x2_4_W", 50 ],
+ [ "bonus_room_2x2_4_N", 50 ],
+ [ "bonus_room_3x3_1", 50 ],
+ [ "bonus_room_3x3_2", 50 ]
+ ]
+ },
+ "7": {
+ "chunks": [
+ [ "bonus_room_3x3_4", 50 ],
+ [ "bonus_room_3x3_W_6", 50 ],
+ [ "bonus_room_3x3_S_6", 50 ],
+ [ "bonus_room_3x3_W_8", 50 ],
+ [ "bonus_room_3x3_S_8", 50 ]
+ ]
+ }
},
- "2": {
- "chunks": [
- [ "bedroom_5x5_adult_S_1", 50 ],
- [ "bedroom_5x5_adult_E_1", 50 ],
- [ "bedroom_5x5_adult_W_1", 50 ],
- [ "bedroom_5x5_adult_S_2", 50 ],
- [ "bedroom_5x5_adult_E_2", 50 ],
- [ "bedroom_5x5_adult_W_2", 50 ]
- ]
- },
- "4": {
- "chunks": [
- [ "diningroom_6x6_N_S_1A", 20 ],
- [ "diningroom_6x6_E_W_1", 20 ],
- [ "diningroom_6x6_E_W_2", 20 ],
- [ "diningroom_6x6_N_S_2", 20 ]
- ]
- },
- "5": { "chunks": [ [ "livingroom_5x5_N_1", 20 ], [ "livingroom_5x5_S_1", 20 ] ] },
- "6": {
- "chunks": [
- [ "bonus_room_2x2_1", 50 ],
- [ "bonus_room_2x2_2", 50 ],
- [ "bonus_room_2x2_4_W", 50 ],
- [ "bonus_room_2x2_4_N", 50 ],
- [ "bonus_room_3x3_1", 50 ],
- [ "bonus_room_3x3_2", 50 ]
- ]
- },
- "7": {
- "chunks": [
- [ "bonus_room_3x3_4", 50 ],
- [ "bonus_room_3x3_W_6", 50 ],
- [ "bonus_room_3x3_S_6", 50 ],
- [ "bonus_room_3x3_W_8", 50 ],
- [ "bonus_room_3x3_S_8", 50 ]
- ]
- }
+ "place_nested": [
+ {
+ "chunks": [ [ "null", 30 ], [ "garden_3x3_1", 20 ], [ "garden_3x3_2", 20 ], [ "garden_3x3_3", 20 ] ],
+ "x": 2,
+ "y": 21
+ },
+ {
+ "chunks": [ [ "null", 30 ], [ "garden_3x3_1", 20 ], [ "garden_3x3_2", 20 ], [ "garden_3x3_3", 20 ] ],
+ "x": 6,
+ "y": 21
+ },
+ {
+ "chunks": [ [ "null", 30 ], [ "garden_3x3_1", 20 ], [ "garden_3x3_2", 20 ], [ "garden_3x3_3", 20 ] ],
+ "x": 10,
+ "y": 21
+ },
+ {
+ "chunks": [ [ "null", 30 ], [ "garden_3x3_1", 20 ], [ "garden_3x3_2", 20 ], [ "garden_3x3_3", 20 ] ],
+ "x": 14,
+ "y": 21
+ }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "house_w_3_roof",
+ "object": {
+ "fill_ter": "t_shingle_flat_roof",
+ "rows": [
+ " ",
+ " ",
+ " ........ ",
+ " ........ ",
+ " ........ ",
+ "|2222222222222222223 ",
+ "|..................3 ",
+ "|..................3 ",
+ "|..................3 ",
+ "|..................3 ",
+ "|..................223 ",
+ "|....................3 ",
+ "|....................3 ",
+ "|..................5-3 ",
+ "|..................3 ",
+ "|..................3 ",
+ "|..................3 ",
+ "|..................3 ",
+ "|..................3 ",
+ "|------------------3 ",
+ " ",
+ " ",
+ " ",
+ " "
+ ],
+ "palettes": [ "roof_palette" ],
+ "terrain": { ".": "t_shingle_flat_roof" }
}
}
-}
+]
diff --git a/data/json/mapgen/house/house_w_4.json b/data/json/mapgen/house/house_w_4.json
index a10779b3bdb41..6578f0ba210f7 100644
--- a/data/json/mapgen/house/house_w_4.json
+++ b/data/json/mapgen/house/house_w_4.json
@@ -1,73 +1,130 @@
-{
- "type": "mapgen",
- "method": "json",
- "om_terrain": "house_w_4",
- "object": {
- "fill_ter": "t_floor",
- "rows": [
- ".........sG.............",
- ".........s..............",
- "........sss.............",
- "...||ooo|+||oo|o|.......",
- "...|5 |R 7 |.......",
- "...| |R o.......",
- "...| o.......",
- "...| |6 o.......",
- "...| | |.......",
- ".|o|||||||||| |||.......",
- ".|4 |KKlKy J|........",
- ".o io........",
- ".o A no........",
- ".o |a JJJ |........",
- ".| ||+||||+|........",
- ".|o||||| |Q |........",
- "...|w + |QQ|........",
- "...||||||| |||||||.....",
- "...|1 + +2 |.....",
- "...o ||+| |.....",
- "...| |t | |.....",
- "...| |T | |.....",
- "...| |Tj| |.....",
- "...||||o|||o||o||||....."
- ],
- "palettes": [ "house_w_foundation_palette" ],
- "nested": {
- "1": {
- "chunks": [
- [ "bedroom_5x5_adult_N_1", 50 ],
- [ "bedroom_5x5_adult_W_1", 50 ],
- [ "bedroom_5x5_adult_N_2", 50 ],
- [ "bedroom_5x5_adult_S_2", 50 ],
- [ "bedroom_5x5_adult_E_2", 50 ],
- [ "bedroom_5x5_adult_W_2", 50 ]
- ]
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "house_w_4",
+ "object": {
+ "fill_ter": "t_floor",
+ "rows": [
+ ".........sG.............",
+ "..$.....psp......$....$.",
+ ".......MsssM............",
+ "...##ooo#*##oo#o#...$...",
+ "...#5 |R 7 #.......",
+ "...# |R oM..$...",
+ "...# oM......",
+ "...# |6 oM......",
+ "...# | #.......",
+ ".#o#||||||||| |##.......",
+ ".#4 |KKlKy J#........",
+ "Mo iop.......",
+ "Mo AAA nop.......",
+ "Mo |a JJJ #........",
+ ".# ||+||||+#........",
+ ".#o#|+||y RR|Q #........",
+ "..^#W Z| R|QQ#........",
+ "...#|||||| |||####.....",
+ ".$.#1 + +2 #.....",
+ "...o ||+| o.....",
+ "...# |t | #.....",
+ ".$.# |T | o.....",
+ "...# |Tj| #.....",
+ "$..####o###o##o####....."
+ ],
+ "palettes": [ "house_w_foundation_palette" ],
+ "terrain": { "#": "t_brick_wall" },
+ "nested": {
+ "1": {
+ "chunks": [
+ [ "bedroom_5x5_adult_W_1", 50 ],
+ [ "bedroom_5x5_adult_N_2", 50 ],
+ [ "bedroom_5x5_adult_S_2", 50 ],
+ [ "bedroom_5x5_adult_E_2", 50 ],
+ [ "bedroom_5x5_adult_W_2", 50 ]
+ ]
+ },
+ "2": {
+ "chunks": [
+ [ "bedroom_5x5_adult_N_1", 50 ],
+ [ "bedroom_5x5_adult_S_1", 50 ],
+ [ "bedroom_5x5_adult_E_1", 50 ],
+ [ "bedroom_5x5_adult_N_2", 50 ],
+ [ "bedroom_5x5_adult_S_2", 50 ],
+ [ "bedroom_5x5_adult_E_2", 50 ],
+ [ "bedroom_5x5_adult_W_2", 50 ]
+ ]
+ },
+ "4": { "chunks": [ [ "diningroom_5x5_N_S", 50 ], [ "diningroom_5x5_E_W", 50 ] ] },
+ "5": { "chunks": [ [ "livingroom_5x5_S_1", 20 ], [ "livingroom_5x5_E_1", 20 ], [ "livingroom_5x5_W_1", 20 ] ] },
+ "6": {
+ "chunks": [ [ "bonus_room_2x2_1", 50 ], [ "bonus_room_2x2_2", 50 ], [ "bonus_room_2x2_4_S", 50 ], [ "bonus_room_2x2_4_W", 50 ] ]
+ },
+ "7": {
+ "chunks": [
+ [ "bonus_room_3x3_4", 40 ],
+ [ "bonus_room_3x3_E_6", 20 ],
+ [ "bonus_room_3x3_N_6", 20 ],
+ [ "bonus_room_3x3_E_8", 30 ],
+ [ "bonus_room_3x3_N_8", 30 ]
+ ]
+ }
},
- "2": {
- "chunks": [
- [ "bedroom_5x5_adult_N_1", 50 ],
- [ "bedroom_5x5_adult_S_1", 50 ],
- [ "bedroom_5x5_adult_E_1", 50 ],
- [ "bedroom_5x5_adult_W_1", 50 ],
- [ "bedroom_5x5_adult_N_2", 50 ],
- [ "bedroom_5x5_adult_S_2", 50 ],
- [ "bedroom_5x5_adult_E_2", 50 ],
- [ "bedroom_5x5_adult_W_2", 50 ]
- ]
- },
- "4": { "chunks": [ [ "diningroom_5x5_N_S", 50 ], [ "diningroom_5x5_E_W", 50 ] ] },
- "5": { "chunks": [ [ "livingroom_5x5_S_1", 20 ], [ "livingroom_5x5_E_1", 20 ], [ "livingroom_5x5_W_1", 20 ] ] },
- "6": {
- "chunks": [ [ "bonus_room_2x2_1", 50 ], [ "bonus_room_2x2_2", 50 ], [ "bonus_room_2x2_4_S", 50 ], [ "bonus_room_2x2_4_W", 50 ] ]
- },
- "7": {
- "chunks": [
- [ "bonus_room_3x3_4", 40 ],
- [ "bonus_room_3x3_E_6", 20 ],
- [ "bonus_room_3x3_N_6", 20 ],
- [ "bonus_room_3x3_E_8", 30 ],
- [ "bonus_room_3x3_N_8", 30 ]
- ]
- }
+ "place_nested": [
+ {
+ "chunks": [
+ [ "null", 50 ],
+ [ "reflecting_pool_5x5_1", 5 ],
+ [ "reflecting_pool_5x5_2", 5 ],
+ [ "playset_4x4_1", 10 ],
+ [ "playset_4x4_2", 10 ],
+ [ "firepit_5x5_1", 10 ],
+ [ "firepit_5x5_2", 10 ]
+ ],
+ "x": 18,
+ "y": [ 9, 12 ]
+ },
+ {
+ "chunks": [ [ "null", 40 ], [ "garden_3x3_1", 20 ], [ "garden_3x3_2", 20 ], [ "garden_3x3_3", 20 ] ],
+ "x": 20,
+ "y": 19
+ }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "house_w_4_roof",
+ "object": {
+ "fill_ter": "t_shingle_flat_roof",
+ "rows": [
+ " ",
+ " ",
+ " ",
+ " |2222222222223 ",
+ " |............3 ",
+ " |............3 ",
+ " |............3 ",
+ " |............3 ",
+ " |............3 ",
+ " |22...........33 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |.............3 ",
+ " |-5...&.......3 ",
+ " |...........3 ",
+ " |...........3223 ",
+ " |..............3 ",
+ " |..............3 ",
+ " |..............3 ",
+ " |..............3 ",
+ " |..............3 ",
+ " |--------------3 "
+ ],
+ "palettes": [ "roof_palette" ],
+ "terrain": { ".": "t_shingle_flat_roof" }
}
}
-}
+]
diff --git a/data/json/mapgen/house/house_w_5.json b/data/json/mapgen/house/house_w_5.json
index c16fb33b7e276..2c08e21beaeea 100644
--- a/data/json/mapgen/house/house_w_5.json
+++ b/data/json/mapgen/house/house_w_5.json
@@ -1,75 +1,128 @@
-{
- "type": "mapgen",
- "method": "json",
- "om_terrain": "house_w_5",
- "object": {
- "fill_ter": "t_floor",
- "rows": [
- "........ss...G...ss.ss..",
- "......CssssC.....ss.ss..",
- ".....ssssssss....ss.ssu.",
- "..||oo||+||||o|||xxxxx||",
- "..|5 |y7 |~~~~~~u|",
- "..| |~~~~~~U|",
- "..| Y |~~~~~~~o",
- "..| ||||||~~~~~~U|",
- "..| +w| t|~~~~~~~o",
- "..|||||| |||+||~~~~~~U|",
- "..|4 +~~~~~UU|",
- "..o ||||||||~|o||||",
- "..o | 1 |sss.....",
- "..o | o........",
- "..| | o........",
- "||| ||| | |........",
- "|lK |+|||+|........",
- "oK J| |O|O|........",
- "on i||+|+|+|||........",
- "|K Jy |t |6 |........",
- "|| || |T | 3 o........",
- "|QLQ| |Tj| |........",
- "||o||+||o|||o|||........",
- "....ssss................"
- ],
- "palettes": [ "house_w_foundation_palette" ],
- "terrain": { "U": "t_thconc_floor" },
- "nested": {
- "1": {
- "chunks": [
- [ "bedroom_4x4_adult_1_E", 20 ],
- [ "bedroom_4x4_adult_1_N", 20 ],
- [ "bedroom_4x4_adult_2_E", 20 ],
- [ "bedroom_4x4_adult_2_N", 20 ]
- ]
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "house_w_5",
+ "object": {
+ "fill_ter": "t_floor",
+ "rows": [
+ "...$....ssG......ss.ss..",
+ ".$...MCssssCM..$.ss.ss..",
+ "....MssssssssM...ss.ssu.",
+ "..##oo##*####o###xxxxx%#",
+ "..#5 |y7 #~~~~~~u#",
+ "..# #~~~~~~U#",
+ "..# Y #~~~~~~~o",
+ "..# |||||#~~~~~~U#",
+ "..# +w| t#~~~~~~~o",
+ "..#||||| |||+|#~~~~~~U#",
+ "..#4 *~~~~~UU#",
+ ".Mo ||||||##~#o####",
+ ".po | 1 #sssssss.",
+ ".Mo | oMsp$pss.",
+ ".^# | opssssss.",
+ "### ||| | #........",
+ "#lK |+|||+#........",
+ "oK J| |O|O#........",
+ "on i||+|+|+||#........",
+ "#K Jy |t |6 #........",
+ "#| || |T | 3 o........",
+ "#QLQ| |Tj| #........",
+ "##o##*##o###o###........",
+ "..M.ssss................"
+ ],
+ "palettes": [ "house_w_foundation_palette" ],
+ "terrain": { "#": "t_adobe_brick_wall", "U": "t_thconc_floor", "%": "t_wall_w" },
+ "place_vehicles": [
+ { "vehicle": "showroom_small_vehicles", "x": 17, "y": 7, "rotation": 270, "chance": 20, "status": 0 },
+ { "vehicle": "showroom_small_vehicles", "x": 19, "y": 7, "rotation": 270, "chance": 20, "status": 0 }
+ ],
+ "nested": {
+ "1": {
+ "chunks": [
+ [ "bedroom_4x4_adult_1_E", 20 ],
+ [ "bedroom_4x4_adult_1_N", 20 ],
+ [ "bedroom_4x4_adult_2_E", 20 ],
+ [ "bedroom_4x4_adult_2_N", 20 ]
+ ]
+ },
+ "4": { "chunks": [ [ "diningroom_5x5_N_S", 50 ], [ "diningroom_5x5_E_W", 50 ] ] },
+ "3": {
+ "chunks": [ [ "bonus_room_2x2_2", 50 ], [ "bonus_room_2x2_3", 50 ], [ "bonus_room_2x2_4_S", 50 ], [ "bonus_room_2x2_4_E", 50 ] ]
+ },
+ "5": {
+ "chunks": [
+ [ "livingroom_5x5_N_1", 20 ],
+ [ "livingroom_5x5_S_1", 20 ],
+ [ "livingroom_5x5_E_1", 20 ],
+ [ "livingroom_5x5_W_1", 20 ]
+ ]
+ },
+ "6": {
+ "chunks": [ [ "bonus_room_3x3_1", 40 ], [ "bonus_room_3x3_S_5", 20 ], [ "bonus_room_3x3_E_7", 40 ], [ "bonus_room_3x3_S_7", 40 ] ]
+ },
+ "7": {
+ "chunks": [
+ [ "bonus_room_3x3_4", 20 ],
+ [ "bonus_room_3x3_E_6", 20 ],
+ [ "bonus_room_3x3_S_6", 20 ],
+ [ "bonus_room_3x3_E_8", 30 ],
+ [ "bonus_room_3x3_S_8", 30 ]
+ ]
+ }
},
- "4": { "chunks": [ [ "diningroom_5x5_N_S", 50 ], [ "diningroom_5x5_E_W", 50 ] ] },
- "3": {
- "chunks": [ [ "bonus_room_2x2_2", 50 ], [ "bonus_room_2x2_3", 50 ], [ "bonus_room_2x2_4_S", 50 ], [ "bonus_room_2x2_4_E", 50 ] ]
- },
- "5": {
- "chunks": [
- [ "livingroom_5x5_N_1", 20 ],
- [ "livingroom_5x5_S_1", 20 ],
- [ "livingroom_5x5_E_1", 20 ],
- [ "livingroom_5x5_W_1", 20 ]
- ]
- },
- "6": {
- "chunks": [
- [ "bonus_room_3x3_1", 100 ],
- [ "bonus_room_3x3_S_5", 20 ],
- [ "bonus_room_3x3_E_7", 40 ],
- [ "bonus_room_3x3_S_7", 40 ]
- ]
- },
- "7": {
- "chunks": [
- [ "bonus_room_3x3_4", 20 ],
- [ "bonus_room_3x3_E_6", 20 ],
- [ "bonus_room_3x3_S_6", 20 ],
- [ "bonus_room_3x3_E_8", 30 ],
- [ "bonus_room_3x3_S_8", 30 ]
- ]
- }
+ "place_nested": [
+ {
+ "chunks": [
+ [ "null", 50 ],
+ [ "roof_6x6_garden_4", 15 ],
+ [ "roof_6x6_garden_1", 15 ],
+ [ "greenhouse_6x6_herbal", 25 ],
+ [ "greenhouse_6x6_vegetable", 25 ],
+ [ "pond_6x6", 25 ],
+ [ "shed_6x6_junk", 25 ],
+ [ "shed_6x6_woodworker", 25 ]
+ ],
+ "x": 17,
+ "y": 15
+ }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "house_w_5_roof",
+ "object": {
+ "fill_ter": "t_shingle_flat_roof",
+ "rows": [
+ " ",
+ " ...... ",
+ " ...... ",
+ " |222222222222222222223",
+ " |....................3",
+ " |.X..................3",
+ " |....................3",
+ " |.........&..........3",
+ " |....................3",
+ " |....................3",
+ " |....................3",
+ " |............3-------3",
+ " |............3 ",
+ " |............3 ",
+ " |............3 ",
+ "|25............3 ",
+ "|..............3 ",
+ "|..............3 ",
+ "|..............3 ",
+ "|..............3 ",
+ "|......=.......3 ",
+ "|..............3 ",
+ "|--------------3 ",
+ " "
+ ],
+ "palettes": [ "roof_palette" ],
+ "terrain": { ".": "t_shingle_flat_roof" }
}
}
-}
+]
diff --git a/data/json/mapgen/house/house_w_6.json b/data/json/mapgen/house/house_w_6.json
new file mode 100644
index 0000000000000..6ff717ee0d8d2
--- /dev/null
+++ b/data/json/mapgen/house/house_w_6.json
@@ -0,0 +1,187 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "house_w_6",
+ "object": {
+ "fill_ter": "t_floor",
+ "rows": [
+ "..........GssM..........",
+ "...$..MMMMMssMMMMM......",
+ "......C~~~~~~~~~~C..$...",
+ ".$..$.~~~~~~~~~~~~....$.",
+ "....MM~~~~~~~~FFF~MM....",
+ "....##oo##o**##ooo##....",
+ "....#3 R|E |5 #....",
+ "....# R|L | #....",
+ "....# ||++| #....",
+ "....#Yv | h#....",
+ "..M##||||| #....",
+ "..Mo< #....",
+ "..MoRRRa y|+|||| |#....",
+ "..M##||| ||jt|4 y#....",
+ "...^#KiK l|||| #....",
+ "...Mon Y|QQ| oM...",
+ "...MoJ oM...",
+ "...M#J yJJ|QQ|a y#....",
+ "....##*o#######o#o##....",
+ ".....MsM................",
+ ".....sss................",
+ ".....sss................",
+ "........................",
+ "........................"
+ ],
+ "palettes": [ "house_w_foundation_palette" ],
+ "terrain": { "#": "t_brick_wall", "F": "t_thconc_floor" },
+ "nested": {
+ "4": { "chunks": [ [ "diningroom_5x5_N_S", 50 ], [ "diningroom_5x5_E_W", 50 ] ] },
+ "3": {
+ "chunks": [
+ [ "bonus_room_3x3_2", 50 ],
+ [ "bonus_room_3x3_3", 50 ],
+ [ "bonus_room_3x3_4", 50 ],
+ [ "bonus_room_3x3_5", 50 ],
+ [ "bonus_room_3x3_N_6", 50 ],
+ [ "bonus_room_3x3_W_6", 50 ]
+ ]
+ },
+ "5": {
+ "chunks": [
+ [ "livingroom_5x5_N_1", 10 ],
+ [ "livingroom_5x5_S_1", 10 ],
+ [ "livingroom_5x5_N_2", 200 ],
+ [ "livingroom_5x5_S_2", 200 ],
+ [ "livingroom_5x5_E_2", 200 ],
+ [ "livingroom_5x5_W_2", 200 ]
+ ]
+ },
+ "7": {
+ "chunks": [
+ [ "bonus_room_3x3_4", 20 ],
+ [ "bonus_room_3x3_E_6", 20 ],
+ [ "bonus_room_3x3_S_6", 20 ],
+ [ "bonus_room_3x3_E_8", 30 ],
+ [ "bonus_room_3x3_S_8", 30 ]
+ ]
+ }
+ },
+ "place_nested": [
+ {
+ "chunks": [ [ "null", 50 ], [ "firepit_5x5_2", 15 ], [ "reflecting_pool_5x5_1", 15 ], [ "reflecting_pool_5x5_2", 25 ] ],
+ "x": [ 9, 13 ],
+ "y": 19
+ }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "house_w_6_2ndfloor",
+ "object": {
+ "fill_ter": "t_floor",
+ "rows": [
+ "------------------------",
+ "------------------------",
+ "------%%%%%%%%%%%%------",
+ "------%%%%%%%%%%%%------",
+ "------%%%%%%%%%%%%------",
+ "----##oo########oo##----",
+ "----#1 +O| +2 L#----",
+ "----# H|||O| #----",
+ "----# L|w||| #----",
+ "----#L |+| + h#----",
+ "---##||||+| |||||#----",
+ "---o> +w|vO#----",
+ "---oRR|||+||| ||||+#----",
+ "---##||Ry +O| + II #----",
+ "----#3 |||+|4 A #----",
+ "---^# |t | o----",
+ "----o |j | o----",
+ "----#L |TTT|y L#----",
+ "----###o####o####o##----",
+ "------------------------",
+ "------------------------",
+ "------------------------",
+ "------------------------",
+ "------------------------"
+ ],
+ "palettes": [ "house_w_foundation_palette" ],
+ "terrain": { "#": "t_brick_wall", ".": "t_open_air", "%": "t_shingle_flat_roof" },
+ "nested": {
+ "1": {
+ "chunks": [
+ [ "bedroom_4x4_adult_1_N", 20 ],
+ [ "bedroom_4x4_adult_1_S", 20 ],
+ [ "bedroom_4x4_adult_2_N", 20 ],
+ [ "bedroom_4x4_adult_3_S", 200 ],
+ [ "bedroom_4x4_adult_3_N", 200 ]
+ ]
+ },
+ "2": {
+ "chunks": [
+ [ "bedroom_4x4_adult_1_S", 20 ],
+ [ "bedroom_4x4_adult_3_S", 200 ],
+ [ "bedroom_4x4_adult_3_N", 200 ],
+ [ "bedroom_4x4_adult_3_E", 200 ],
+ [ "bedroom_4x4_adult_3_W", 200 ]
+ ]
+ },
+ "3": {
+ "chunks": [
+ [ "bedroom_4x4_adult_1_S", 20 ],
+ [ "bedroom_4x4_adult_2_W", 20 ],
+ [ "bedroom_4x4_adult_2_S", 20 ],
+ [ "bedroom_4x4_adult_3_S", 200 ],
+ [ "bedroom_4x4_adult_3_W", 200 ]
+ ]
+ },
+ "4": {
+ "chunks": [
+ [ "bedroom_4x4_adult_1_E", 20 ],
+ [ "bedroom_4x4_adult_2_W", 20 ],
+ [ "bedroom_4x4_adult_2_W", 20 ],
+ [ "bedroom_4x4_adult_3_E", 200 ],
+ [ "bedroom_4x4_adult_3_W", 200 ]
+ ]
+ }
+ }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "house_w_6_roof",
+ "object": {
+ "fill_ter": "t_shingle_flat_roof",
+ "rows": [
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " |222222222222223 ",
+ " |..............3 ",
+ " |..............3 ",
+ " |..............3 ",
+ " |.............Z3 ",
+ " ||..............3 ",
+ " |...............3 ",
+ " |...............3 ",
+ " ||..............3 ",
+ " |......&.......3 ",
+ " 5..............3 ",
+ " |..............3 ",
+ " |..............3 ",
+ " |--------------3 ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ ],
+ "palettes": [ "roof_palette" ],
+ "terrain": { ".": "t_shingle_flat_roof" }
+ }
+ }
+]
diff --git a/data/json/mapgen/junkyard.json b/data/json/mapgen/junkyard.json
index 9b631b4c9403f..96c198f853a93 100644
--- a/data/json/mapgen/junkyard.json
+++ b/data/json/mapgen/junkyard.json
@@ -1,382 +1,156 @@
[
{
"method": "json",
+ "om_terrain": [ [ "junkyard_1a", "junkyard_1b" ] ],
+ "type": "mapgen",
+ "weight": 100,
"object": {
- "furniture": {
- "#": "f_bench",
- "$": "f_null",
- "&": "f_trashcan",
- "-": "f_null",
- ".": "f_null",
- "C": "f_counter",
- "D": "f_null",
- "S": "f_null",
- "T": "f_toilet",
- "_": "f_null",
- "a": "f_chair",
- "b": "f_sink",
- "c": "f_null",
- "d": "f_desk",
- "f": "f_null",
- "r": "f_null",
- "s": "f_null",
- "t": "f_table",
- "{": "f_vending_c",
- "|": "f_null"
- },
+ "fill_ter": "t_floor",
+ "rows": [
+ "__......________________________________......__",
+ "__......e_%%%---%r%---%%%4_____________e......__",
+ "_$qqqqqq%$%ffBBBfffBBBff%%%%%%%%%%%%%%$%dddddd$_",
+ "_$......e_%ffffffffffffff%ttttttttttt%_e......$_",
+ "_$......__%KffcccccccffffDtttttttttttD__......$_",
+ "_$......__%fffccnnnccfUUf%tttttttttte%e.......$_",
+ "_$......__%fffccnnnccfxff%Cttmmmmmmmmd........$_",
+ "_$......__%FffcccccccfUaf%Cttmmmmmmmmd........$_",
+ "_$......__%fffffffffffUff%Cttmmmmmmmmd........$_",
+ "_$......__%%D%ffpppfffUff%&ttmmmmmmmmd........$_",
+ "_$......__%Rf%r---------r%Cttmmmmmmmmd........$_",
+ "_$......__%bf%fffffffffff%Cttmmmmmmmmd........$_",
+ "_$......__%ff%fIIfIIfffff%Ctttttttttt%_.......$_",
+ "_$......__%fT%ffaffafffff%ttttttttttt%__......$_",
+ "_$......__%%%%%%%%%%%%%D%%%%%%%%%%%%%%__......$_",
+ "_$......__sssss__sssss_SS_sssss__sssss__......$_",
+ "_$......__sssss__sssss_SS_sssss__sssss__......$_",
+ "_$......__sssss__sssss_SS_sssss__sssss__......$_",
+ "_$......__sssss__sssss_SS_sssss__sssss__......$_",
+ "_$......__sssss__sssss_SS_sssss__sssss__......$_",
+ "_$......__sssss__sssss_SS_sssss__sssss_.......$_",
+ "_$......._sssss__sssss_SS_sssss__sssss........$_",
+ "_$............................................$_",
+ "_$............................................$_"
+ ],
+ "palettes": [ "junkyard_palette" ],
+ "place_toilets": [ { "x": 12, "y": 13 } ],
+ "vendingmachines": { "K": { "item_group": "vending_drink" }, "F": { "item_group": "vending_food" } },
+ "place_loot": [ { "item": "television", "x": 17, "y": 9, "chance": 100 } ],
"place_items": [
{ "chance": 25, "item": "cubical_office", "x": [ 18, 19 ], "y": 12 },
{ "chance": 25, "item": "cubical_office", "x": [ 15, 16 ], "y": 12 },
{ "chance": 30, "item": "trash", "x": 11, "y": 10 },
{ "chance": 75, "item": "vending_food_items", "x": 11, "y": 4 },
{ "chance": 75, "item": "vending_drink_items", "x": 11, "y": 7 },
- { "chance": 40, "repeat": 3, "item": "magazines", "x": [ 16, 18 ], "y": [ 5, 6 ] }
+ { "chance": 40, "repeat": 3, "item": "magazines", "x": [ 16, 18 ], "y": [ 5, 6 ] },
+ { "chance": 20, "repeat": 2, "item": "tools_mechanic", "x": 26, "y": [ 10, 12 ] },
+ { "chance": 20, "repeat": 2, "item": "tools_mechanic", "x": 26, "y": [ 6, 8 ] },
+ { "chance": 25, "repeat": 2, "item": "trash", "x": 26, "y": 9 }
],
- "place_toilets": [ { "x": 12, "y": 13 } ],
"place_vehicles": [
- { "chance": 75, "fuel": 0, "rotation": 270, "status": 1, "vehicle": "junkyard_vehicles", "x": 12, "y": 17 },
- { "chance": 75, "fuel": 0, "rotation": 270, "status": 1, "vehicle": "junkyard_vehicles", "x": 19, "y": 17 }
- ],
- "rows": [
- "__......________________",
- "__......e_|||---|r|---||",
- "_$qqqqqq|$|ff###fff###ff",
- "_$......e_|fffffffffffff",
- "_$......__|{ffcccccccfff",
- "_$......__|fffcctttccfCC",
- "_$......__|fffcctttccfCf",
- "_$......__|{ffcccccccfCf",
- "_$......__|fffffffffffCf",
- "_$......__||D|ffffffffCf",
- "_$......__|&f|f||||||fff",
- "_$......__|bf|ffffffffff",
- "_$......__|ff|fddfddffff",
- "_$......__|fT|ffaffaffff",
- "_$......__|||||||||||||D",
- "_$......__sssss__sssss_S",
- "_$......__sssss__sssss_S",
- "_$......__sssss__sssss_S",
- "_$......__sssss__sssss_S",
- "_$......__sssss__sssss_S",
- "_$......__sssss__sssss_S",
- "_$......._sssss__sssss_S",
- "_$......................",
- "_$......................"
- ],
- "terrain": {
- "#": "t_floor",
- "$": "t_fence_barbed",
- "&": "t_floor",
- "e": "t_gates_mech_control",
- "-": "t_wall_glass",
- ".": [
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_dirt",
- "t_dirt",
- "t_grass"
- ],
- "C": "t_floor",
- "D": "t_door_c",
- "S": "t_sidewalk",
- "T": "t_floor",
- "_": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt" ],
- "a": "t_floor",
- "b": "t_floor",
- "q": "t_door_metal_locked",
- "c": "t_carpet_red",
- "d": "t_floor",
- "f": "t_floor",
- "r": "t_reinforced_door_glass_c",
- "s": [ "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass" ],
- "t": "t_carpet_red",
- "{": "t_floor",
- "|": "t_brick_wall"
- }
- },
- "om_terrain": "junkyard_1a",
- "type": "mapgen",
- "weight": 100
+ { "chance": 75, "fuel": 0, "rotation": 270, "status": 1, "vehicle": "junkyard_vehicles", "x": 12, "y": 18 },
+ { "chance": 75, "fuel": 0, "rotation": 270, "status": 1, "vehicle": "junkyard_vehicles", "x": 19, "y": 18 },
+ { "chance": 90, "fuel": 0, "rotation": 0, "status": -1, "vehicle": "engine_crane", "x": 28, "y": 3 },
+ { "chance": 90, "fuel": 0, "rotation": 90, "status": -1, "vehicle": "handjack", "x": 31, "y": 3 },
+ { "chance": 90, "fuel": 30, "rotation": 180, "status": -1, "vehicle": "welding_cart", "x": 34, "y": 3 },
+ { "chance": 75, "fuel": 0, "rotation": 180, "status": -1, "vehicle": "junkyard_vehicles", "x": 31, "y": 9 },
+ { "chance": 75, "fuel": 0, "rotation": 270, "status": 1, "vehicle": "junkyard_vehicles", "x": 28, "y": 18 },
+ { "chance": 75, "fuel": 0, "rotation": 270, "status": 1, "vehicle": "junkyard_vehicles", "x": 35, "y": 18 }
+ ]
+ }
},
{
"method": "json",
+ "om_terrain": [ [ "junkyard_roof_1a", "junkyard_roof_1b" ] ],
+ "type": "mapgen",
+ "weight": 100,
"object": {
- "furniture": {
- "#": "f_counter",
- "$": "f_null",
- "&": "f_trashcan",
- ".": "f_null",
- "D": "f_null",
- "S": "f_null",
- "_": "f_null",
- "d": "f_null",
- "f": "f_null",
- "m": "f_null",
- "s": "f_null",
- "t": "f_null",
- "|": "f_null"
- },
- "place_items": [
- { "chance": 20, "repeat": 2, "item": "tools_mechanic", "x": 2, "y": [ 10, 12 ] },
- { "chance": 20, "repeat": 2, "item": "tools_mechanic", "x": 2, "y": [ 6, 8 ] },
- { "chance": 25, "repeat": 2, "item": "trash", "x": 2, "y": 9 }
- ],
- "place_vehicles": [
- { "chance": 90, "fuel": 0, "rotation": 0, "status": -1, "vehicle": "engine_crane", "x": 4, "y": 3 },
- { "chance": 90, "fuel": 0, "rotation": 90, "status": -1, "vehicle": "handjack", "x": 7, "y": 3 },
- { "chance": 90, "fuel": 30, "rotation": 180, "status": -1, "vehicle": "welding_cart", "x": 10, "y": 3 },
- { "chance": 75, "fuel": 0, "rotation": 180, "status": -1, "vehicle": "junkyard_vehicles", "x": 7, "y": 9 },
- { "chance": 75, "fuel": 0, "rotation": 270, "status": 1, "vehicle": "junkyard_vehicles", "x": 4, "y": 17 },
- { "chance": 75, "fuel": 0, "rotation": 270, "status": 1, "vehicle": "junkyard_vehicles", "x": 11, "y": 17 }
- ],
+ "fill_ter": "t_flat_roof",
"rows": [
- "________________......__",
- "_______________e......__",
- "||||||||||||||$|dddddd$_",
- "f|ttttttttttt|_e......$_",
- "fDtttttttttttD__......$_",
- "f|tttttttttte|e.......$_",
- "f|#ttmmmmmmmmd........$_",
- "f|#ttmmmmmmmmd........$_",
- "f|#ttmmmmmmmmd........$_",
- "f|&ttmmmmmmmmd........$_",
- "f|#ttmmmmmmmmd........$_",
- "f|#ttmmmmmmmmd........$_",
- "f|#tttttttttt|_.......$_",
- "f|ttttttttttt|__......$_",
- "||||||||||||||__......$_",
- "S_sssss__sssss__......$_",
- "S_sssss__sssss__......$_",
- "S_sssss__sssss__......$_",
- "S_sssss__sssss__......$_",
- "S_sssss__sssss__......$_",
- "S_sssss__sssss_.......$_",
- "S_sssss__sssss........$_",
- "......................$_",
- "......................$_"
+ " ",
+ " |22222222222222 ",
+ " |......AA.....52222222222223 ",
+ " |..........................3 ",
+ " |.......................X..3 ",
+ " |..........................3 ",
+ " |..........................3 ",
+ " |..........................3 ",
+ " |..........................3 ",
+ " |.......&...........&......3 ",
+ " |..........................3 ",
+ " |.=........................3 ",
+ " |..........................3 ",
+ " |.......................:..3 ",
+ " |--------------------------3 ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
],
- "terrain": {
- "#": "t_thconc_floor",
- "$": "t_fence_barbed",
- "&": "t_thconc_floor",
- "e": "t_gates_mech_control",
- ".": [
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_dirt",
- "t_dirt",
- "t_grass"
- ],
- "D": "t_door_c",
- "S": "t_sidewalk",
- "_": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt" ],
- "d": "t_door_metal_locked",
- "f": "t_floor",
- "m": "t_metal_floor",
- "s": [ "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass" ],
- "t": "t_thconc_floor",
- "|": "t_brick_wall"
- }
- },
- "om_terrain": "junkyard_1b",
- "type": "mapgen",
- "weight": 100
+ "palettes": [ "roof_palette" ]
+ }
},
{
"method": "json",
+ "om_terrain": [ [ "junkyard_2a", "junkyard_2b" ] ],
+ "type": "mapgen",
+ "weight": 100,
"object": {
- "place_item": [ { "item": "bowl_plastic", "x": 22, "y": 4 } ],
- "furniture": { "-": "f_null", ".": "f_null", "#": "f_straw_bed", "_": "f_null", "g": "f_null", "|": "f_null" },
- "place_monsters": [ { "chance": 65, "density": 1, "monster": "GROUP_DOGS", "x": 23, "y": [ 4, 6 ] } ],
- "place_liquids": [ { "liquid": "water_clean", "chance": 2, "amount": [ 1, 3 ], "x": 22, "y": 4 } ],
+ "fill_ter": "t_dirt",
+ "rows": [
+ "g|............................................$g",
+ "g|............................................$g",
+ "g|............................................$g",
+ "g|......g_____gg_____gggggg_____gg_____.......$g",
+ "g|......g_____gg_____gggggg_____gg_____g......$g",
+ "g|......g_____gg_____g9##9g_____gg_____g......$g",
+ "g|......g_____gg_____g9##9g_____gg_____g......$g",
+ "g|......g_____gg_____g9999g_____gg_____g......$g",
+ "g|......g_____gg_____gggNgg_____gg_____g......$g",
+ "g|......._____gg_____gggggg_____gg_____.......$g",
+ "g|............................................$g",
+ "g|............................................$g",
+ "g|g...........................................$g",
+ "g|g..........................................g$g",
+ "g|gg........................................gg$g",
+ "g|gg_____gg_____gg_____gg_____gg_____gg_____gg$g",
+ "g|gg_____gg_____gg_____gg_____gg_____gg_____gg$g",
+ "g|gg_____gg_____gg_____gg_____gg_____gg_____gg$g",
+ "g|gg_____gg_____gg_____gg_____gg_____gg_____gg$g",
+ "g|gg_____gg_____gg_____gg_____gg_____gg_____gg$g",
+ "g|gg_____gg_____gg_____gg_____gg_____gg_____gg$g",
+ "g|gg_____gg_____gg_____gg_____gg_____gg_____gg$g",
+ "g|||||||||||||||||||||||$$$$$$$$$$$$$$$$$$$$$$$g",
+ "gggggggggggggggggggggggggggggggggggggggggggggggg"
+ ],
+ "palettes": [ "junkyard_palette" ],
+ "place_monsters": [
+ { "chance": 65, "density": 1, "monster": "GROUP_DOGS", "x": 23, "y": [ 4, 6 ] },
+ { "chance": 65, "density": 1, "monster": "GROUP_DOGS", "x": 24, "y": [ 4, 6 ] }
+ ],
"place_vehicles": [
{ "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 11, "y": 7 },
{ "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 18, "y": 7 },
{ "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 6, "y": 19 },
{ "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 13, "y": 19 },
- { "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 20, "y": 19 }
+ { "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 20, "y": 19 },
+ { "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 29, "y": 7 },
+ { "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 36, "y": 7 },
+ { "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 27, "y": 19 },
+ { "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 34, "y": 19 },
+ { "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 41, "y": 19 }
],
- "rows": [
- "g|......................",
- "g|......................",
- "g|......................",
- "g|......g_____gg_____ggg",
- "g|......g_____gg_____ggg",
- "g|......g_____gg_____g-#",
- "g|......g_____gg_____g-#",
- "g|......g_____gg_____g--",
- "g|......g_____gg_____ggg",
- "g|......._____gg_____ggg",
- "g|......................",
- "g|......................",
- "g|g.....................",
- "g|g.....................",
- "g|gg....................",
- "g|gg_____gg_____gg_____g",
- "g|gg_____gg_____gg_____g",
- "g|gg_____gg_____gg_____g",
- "g|gg_____gg_____gg_____g",
- "g|gg_____gg_____gg_____g",
- "g|gg_____gg_____gg_____g",
- "g|gg_____gg_____gg_____g",
- "g|||||||||||||||||||||||",
- "gggggggggggggggggggggggg"
+ "place_item": [
+ { "item": "bowl_plastic", "x": 22, "y": 4 },
+ { "item": "meat", "repeat": [ 1, 4 ], "chance": 50, "x": 25, "y": 4 },
+ { "item": "bowl_plastic", "x": 25, "y": 4 }
],
- "terrain": {
- "-": "t_wall_wood",
- ".": [
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_dirt",
- "t_dirt",
- "t_grass"
- ],
- "#": "t_dirt",
- "_": [ "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass" ],
- "g": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt" ],
- "|": "t_fence_barbed"
- }
- },
- "om_terrain": "junkyard_2a",
- "type": "mapgen",
- "weight": 100
- },
- {
- "method": "json",
- "object": {
- "place_item": [ { "item": "meat", "repeat": [ 1, 4 ], "chance": 50, "x": 1, "y": 4 }, { "item": "bowl_plastic", "x": 1, "y": 4 } ],
- "furniture": { "#": "f_straw_bed", "$": "f_null", ".": "f_null", "_": "f_null", "g": "f_null", "|": "f_null" },
- "place_monsters": [ { "chance": 65, "density": 1, "monster": "GROUP_DOGS", "x": 0, "y": [ 4, 6 ] } ],
- "place_vehicles": [
- { "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 5, "y": 7 },
- { "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 12, "y": 7 },
- { "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 3, "y": 19 },
- { "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 10, "y": 19 },
- { "chance": 75, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "junkyard_vehicles", "x": 17, "y": 19 }
- ],
- "rows": [
- "......................$g",
- "......................$g",
- "......................$g",
- "ggg_____gg_____.......$g",
- "ggg_____gg_____g......$g",
- "#|g_____gg_____g......$g",
- "#|g_____gg_____g......$g",
- "||g_____gg_____g......$g",
- "ggg_____gg_____g......$g",
- "ggg_____gg_____.......$g",
- "......................$g",
- "......................$g",
- "......................$g",
- ".....................g$g",
- "....................gg$g",
- "g_____gg_____gg_____gg$g",
- "g_____gg_____gg_____gg$g",
- "g_____gg_____gg_____gg$g",
- "g_____gg_____gg_____gg$g",
- "g_____gg_____gg_____gg$g",
- "g_____gg_____gg_____gg$g",
- "g_____gg_____gg_____gg$g",
- "$$$$$$$$$$$$$$$$$$$$$$$g",
- "gggggggggggggggggggggggg"
- ],
- "terrain": {
- "|": "t_wall_wood",
- ".": [
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_pavement",
- "t_dirt",
- "t_dirt",
- "t_grass"
- ],
- "#": "t_dirt",
- "_": [ "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_grass" ],
- "g": [ "t_grass", "t_grass", "t_grass", "t_grass", "t_grass", "t_dirt" ],
- "$": "t_fence_barbed"
- }
- },
- "om_terrain": "junkyard_2b",
- "type": "mapgen",
- "weight": 100
+ "place_liquids": [ { "liquid": "water_clean", "chance": 2, "amount": [ 1, 3 ], "x": 22, "y": 4 } ]
+ }
}
]
diff --git a/data/json/mapgen/lab/lab_common.json b/data/json/mapgen/lab/lab_common.json
index b12a7742b86ac..cf354bcd823d9 100644
--- a/data/json/mapgen/lab/lab_common.json
+++ b/data/json/mapgen/lab/lab_common.json
@@ -40,7 +40,12 @@
"id": "lab_loot_research",
"mapping": {
"c": {
- "items": [ { "item": "dissection", "chance": 10 }, { "item": "chem_lab", "chance": 10 }, { "item": "mut_lab", "chance": 2 } ]
+ "items": [
+ { "item": "tools_science", "chance": 10 },
+ { "item": "dissection", "chance": 10 },
+ { "item": "chem_lab", "chance": 10 },
+ { "item": "mut_lab", "chance": 2 }
+ ]
},
"S": { "items": [ { "item": "drugs_heal_simple", "chance": 10 }, { "item": "harddrugs", "chance": 5 } ] },
"X": {
diff --git a/data/json/mapgen/lab/lab_floorplans.json b/data/json/mapgen/lab/lab_floorplans.json
index df170ba3e4030..63daffe762179 100644
--- a/data/json/mapgen/lab/lab_floorplans.json
+++ b/data/json/mapgen/lab/lab_floorplans.json
@@ -209,7 +209,7 @@
"=": "t_conveyor",
"%": "t_machinery_heavy"
},
- "mapping": { "c": { "items": [ { "item": "chem_lab", "chance": 20 } ] } },
+ "mapping": { "c": { "items": [ { "item": "chem_lab", "chance": 20 }, { "item": "tools_science", "chance": 20 } ] } },
"place_nested": [
{ "chunks": [ "lab_spawn_9x9_wall_sw" ], "x": 13, "y": 1 },
{ "chunks": [ "sub_t_concrete_wall" ], "x": 13, "y": 10 },
@@ -261,7 +261,7 @@
"C": "t_centrifuge"
},
"mapping": {
- "c": { "items": [ { "item": "chem_lab", "chance": 10 } ] },
+ "c": { "items": [ { "item": "chem_lab", "chance": 10 }, { "item": "tools_science", "chance": 10 } ] },
"r": { "items": [ { "item": "cleaning", "chance": 30 } ] }
},
"place_nested": [
@@ -486,7 +486,7 @@
]
},
"r": { "items": [ { "item": "mine_equipment", "chance": 30 } ] },
- "c": { "items": [ { "item": "chem_lab", "chance": 30 } ] }
+ "c": { "items": [ { "item": "chem_lab", "chance": 30 }, { "item": "tools_science", "chance": 30 } ] }
},
"place_monster": [ { "monster": "mon_turret_rifle", "x": 11, "y": 9, "chance": 20 } ],
"place_nested": [
@@ -547,6 +547,7 @@
"r": {
"items": [
{ "item": "dissection", "chance": 60 },
+ { "item": "tools_science", "chance": 20 },
{ "item": "bionics_common", "chance": 10 },
{ "item": "mut_lab", "chance": 5 }
]
@@ -683,7 +684,10 @@
],
"palettes": [ "lab_palette" ],
"terrain": { "C": "t_centrifuge", "7": "t_console", ",": "t_floor_blue" },
- "mapping": { "c": { "items": [ { "item": "office", "chance": 30 } ] }, "l": { "items": [ { "item": "science", "chance": 60 } ] } },
+ "mapping": {
+ "c": { "items": [ { "item": "office", "chance": 30 }, { "item": "tools_science", "chance": 15 } ] },
+ "l": { "items": [ { "item": "science", "chance": 60 } ] }
+ },
"computers": {
"6": {
"name": "Containment Control",
diff --git a/data/json/mapgen/megastore.json b/data/json/mapgen/megastore.json
new file mode 100644
index 0000000000000..766414abc9595
--- /dev/null
+++ b/data/json/mapgen/megastore.json
@@ -0,0 +1,2671 @@
+[
+ {
+ "type": "palette",
+ "id": "megastore",
+ "terrain": {
+ "#": "t_open_air",
+ " ": "t_open_air_rooved",
+ "~": "t_flat_roof",
+ ".": "t_thconc_floor",
+ "^": "t_glass_roof",
+ "1": "t_metal_railing",
+ "%": "t_grate",
+ ",": "t_grass",
+ "-": "t_concrete_wall",
+ "|": "t_concrete_wall",
+ "+": "t_door_glass_c",
+ "[": "t_door_metal_locked",
+ "]": "t_door_metal_locked",
+ "!": "t_door_metal_c",
+ "g": "t_wall_glass_alarm",
+ "I": "t_support_l",
+ "P": "t_pavement",
+ "W": "t_sidewalk",
+ "<": "t_stairs_up",
+ ">": "t_stairs_down",
+ "6": "t_console_broken",
+ "Y": "t_switchgear_s"
+ },
+ "furniture": {
+ "a": "f_armchair",
+ "A": "f_sofa",
+ "b": "f_bookcase",
+ "B": "f_bed",
+ "c": "f_chair",
+ "C": "f_counter",
+ "d": "f_dresser",
+ "D": "f_desk",
+ "e": "f_counter",
+ "F": "f_glass_fridge",
+ "f": "f_glass_fridge",
+ "G": "f_glass_cabinet",
+ "H": "f_dumpster",
+ "i": "f_trashcan",
+ "J": "f_indoor_plant",
+ "j": "f_indoor_plant_y",
+ "k": "f_rack",
+ "K": "f_rack",
+ "L": "f_locker",
+ "l": "f_locker",
+ "M": "f_air_filter",
+ "q": "f_air_conditioner",
+ "Q": "f_glass_cabinet",
+ "N": "f_server",
+ "n": "f_bench",
+ "o": "f_oven",
+ "r": "f_rack",
+ "R": "f_rack",
+ "s": "f_sink",
+ "S": "f_shower",
+ "t": "f_trashcan",
+ "T": "f_table",
+ "U": "f_cupboard",
+ "x": "f_crate_o",
+ "X": "f_crate_c",
+ ":": "f_shredder"
+ },
+ "toilets": { "&": { "amount": [ 0, 50 ] } },
+ "items": {
+ "D": { "item": "office", "chance": 60 },
+ "l": { "item": "jackets", "chance": 5 },
+ "L": { "item": "home_hw", "chance": 50 },
+ "o": { "item": "oven", "chance": 70 },
+ "t": { "item": "trash", "chance": 60 },
+ "U": { "item": "kitchen", "chance": 40 },
+ "Q": { "item": "office_mess", "chance": 50, "repeat": [ 1, 3 ] }
+ }
+ },
+ {
+ "type": "palette",
+ "id": "mega_goods_a",
+ "items": {
+ "b": { "item": "novels", "chance": 15, "repeat": [ 1, 2 ] },
+ "f": { "item": "produce", "chance": 15 },
+ "F": { "item": "fridgesnacks", "chance": 15 },
+ "k": { "item": "shirts", "chance": 15 },
+ "K": { "item": "shoes", "chance": 15, "repeat": [ 1, 2 ] },
+ "r": { "item": "pants", "chance": 15 },
+ "R": { "item": "jackets", "chance": 15 },
+ "x": { "item": "child_items", "chance": 15 },
+ "X": { "item": "construction_worker", "chance": 15 }
+ }
+ },
+ {
+ "type": "palette",
+ "id": "mega_goods_b",
+ "items": {
+ "b": { "item": "homebooks", "chance": 20 },
+ "f": { "item": "fridgesnacks", "chance": 15, "repeat": [ 1, 2 ] },
+ "F": { "item": "fridge", "chance": 15, "repeat": [ 1, 2 ] },
+ "k": { "item": "shoes", "chance": 15 },
+ "K": { "item": "cannedfood", "chance": 15 },
+ "r": { "item": "hardware", "chance": 15 },
+ "R": { "item": "mischw", "chance": 15 },
+ "x": { "item": "shelter", "chance": 15 },
+ "X": { "item": "cannedfood", "chance": 15 }
+ }
+ },
+ {
+ "type": "palette",
+ "id": "mega_goods_c",
+ "items": {
+ "b": { "item": "waitingroom", "chance": 10 },
+ "f": { "item": "fridge", "chance": 15 },
+ "F": { "item": "produce", "chance": 15, "repeat": [ 1, 3 ] },
+ "k": { "item": "cannedfood", "chance": 15 },
+ "K": { "item": "pasta", "chance": 15 },
+ "r": { "item": "hardware", "chance": 15 },
+ "R": { "item": "cleaning", "chance": 15, "repeat": [ 1, 2 ] },
+ "x": { "item": "shoes", "chance": 15 },
+ "X": { "item": "dresser", "chance": 15 }
+ }
+ },
+ {
+ "type": "palette",
+ "id": "mega_goods_d",
+ "items": {
+ "b": { "item": "waitingroom", "chance": 15, "repeat": [ 1, 4 ] },
+ "f": { "item": "vending_food_items", "chance": 15, "repeat": [ 1, 2 ] },
+ "F": { "item": "kitchen", "chance": 15 },
+ "k": { "item": "pasta", "chance": 15 },
+ "K": { "item": "winter", "chance": 15 },
+ "r": { "item": "sports", "chance": 15 },
+ "R": { "item": "camping", "chance": 15 },
+ "x": { "item": "cleaning", "chance": 15, "repeat": [ 1, 2 ] },
+ "X": { "item": "pasta", "chance": 15 }
+ }
+ },
+ {
+ "type": "palette",
+ "id": "mega_goods_e",
+ "items": {
+ "b": { "item": "waitingroom", "chance": 15 },
+ "f": { "item": "produce", "chance": 15 },
+ "F": { "item": "vending_drink_items", "chance": 15, "repeat": [ 1, 3 ] },
+ "k": { "item": "cleaning", "chance": 15 },
+ "K": { "item": "camping", "chance": 15 },
+ "r": { "item": "mechanics", "chance": 15 },
+ "R": { "item": "construction_worker", "chance": 15 },
+ "x": { "item": "kitchen", "chance": 15 },
+ "X": { "item": "school", "chance": 15 }
+ }
+ },
+ {
+ "type": "palette",
+ "id": "mega_goods_f",
+ "items": {
+ "b": { "item": "novels", "chance": 15 },
+ "f": { "item": "fridgesnacks", "chance": 15 },
+ "F": { "item": "vending_drink_items", "chance": 15, "repeat": [ 1, 3 ] },
+ "k": { "item": "shirts", "chance": 15 },
+ "K": { "item": "shoes", "chance": 15 },
+ "r": { "item": "snacks", "chance": 25, "repeat": [ 1, 2 ] },
+ "R": { "item": "shelter", "chance": 15 },
+ "x": { "item": "textbooks", "chance": 15 },
+ "X": { "item": "dresser", "chance": 15 }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_parking",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_pavement",
+ "rows": [
+ "#W....................WT",
+ "W......................W",
+ "........................",
+ "______............______",
+ "........................",
+ ".....v.............v....",
+ "........................",
+ "........................",
+ "______............______",
+ "........................",
+ "........................",
+ "......................v.",
+ "........................",
+ "______............______",
+ "...........v..v.........",
+ "........................",
+ "........................",
+ "........................",
+ "______............______",
+ "........................",
+ ".....v..................",
+ "........................",
+ "W_____............_____W",
+ "TW....................W#"
+ ],
+ "rotation": 0,
+ "terrain": {
+ ".": "t_pavement",
+ "_": "t_pavement_y",
+ "#": [ "t_underbrush", "t_grass" ],
+ "T": [ "t_tree_young", "t_tree" ],
+ "W": "t_sidewalk"
+ },
+ "vehicles": { "v": { "vehicle": "city_vehicles", "chance": 10 } }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_0_0",
+ "//": "ground floor. top left corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,--------------------",
+ ",,,,|I..l|&...|l..I|<<|.",
+ ",,,,|n..l|--!-|l..n|<<|.",
+ ",,,,|n..l|s...|l..n|!!|.",
+ ",,,,|...l|s...|l...|....",
+ ",,,,|-!-----!----!-|....",
+ ",,,,|p.............|....",
+ ",,,,|..............|....",
+ ",,,,|....cTTTT.....|....",
+ ",,,,|....cTTTT.....|....",
+ ",,,,[..........--!-|....",
+ ",,,,].....c.c..|...!....",
+ ",,,,|..CCCCCCCC|...|....",
+ ",,-------------------!--",
+ ",,|CCICC%%%CeeeCCCI.....",
+ ",,|e..............g.....",
+ ",,|e....eeeee.....g.....",
+ ",,|e..............g.....",
+ ",,|ggggg......C6CCC.....",
+ ",,|....................."
+ ],
+ "rotation": 0,
+ "palettes": [ "megastore", "mega_goods_a" ],
+ "items": {
+ "C": { "item": "coffee_table", "chance": 30 },
+ "l": { "item": "everyday_gear", "chance": 75 },
+ "T": { "item": "office", "chance": 20 }
+ }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_0_0",
+ "//": "ground floor. top left corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,--------------------",
+ ",,,,|I..l|&...|l..I|<<|.",
+ ",,,,|n..l|--!-|l..n|<<|.",
+ ",,,,|n..l|s...|l..n|!!|.",
+ ",,,,|...l|s...|l...|....",
+ ",,,,|-!-----!----!-|....",
+ ",,,,|p.............|....",
+ ",,,,|..............|....",
+ ",,,,|....cTTTT.....|....",
+ ",,,,|....cTTTT.....|....",
+ ",,,,[..........--!-|....",
+ ",,,,].....c.c..|...!....",
+ ",,,,|..CCCCCCCC|...|....",
+ ",,---------------!------",
+ ",,|..I............I.....",
+ ",,|.....................",
+ ",,|.....................",
+ ",,|.....................",
+ ",,|.....................",
+ ",,|....................."
+ ],
+ "rotation": 0,
+ "palettes": [ "megastore", "mega_goods_c" ],
+ "items": {
+ "C": { "item": "coffee_table", "chance": 30 },
+ "l": { "item": "everyday_gear", "chance": 75 },
+ "T": { "item": "office", "chance": 20 }
+ }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_0_0",
+ "//": "ground floor. top left corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,--------------------",
+ ",,,,|I..l|&...|l..I|<<|.",
+ ",,,,|n..l|--!-|l..n|<<|.",
+ ",,,,|n..l|s...|l..n|!!|.",
+ ",,,,|...l|s...|l...|....",
+ ",,,,|-!-----!----!-|....",
+ ",,,,|p.............|x...",
+ ",,,,|..............|x...",
+ ",,,,|....cTTTT.....|x...",
+ ",,,,|....cTTTT.....|....",
+ ",,,,[..........--!-|....",
+ ",,,,].....c.c..|...!....",
+ ",,,,|..CCCCCCCC|...|....",
+ ",,---------------!------",
+ ",,|.&I|KKKK.......Irrrrr",
+ ",,|+--|.................",
+ ",,|..s|.................",
+ ",,|+---....rrrrrrrrrrrrr",
+ ",,|........rrrrrrrrrrrrr",
+ ",,|....................."
+ ],
+ "rotation": 0,
+ "palettes": [ "megastore", "mega_goods_b" ],
+ "items": {
+ "C": { "item": "coffee_table", "chance": 30 },
+ "l": { "item": "everyday_gear", "chance": 75 },
+ "T": { "item": "office", "chance": 20 }
+ }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_0_0",
+ "//": "ground floor. top left corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,--------------------",
+ ",,,,|I..l|&...|l..I|<<|x",
+ ",,,,|n..l|--!-|l..n|<<|x",
+ ",,,,|n..l|s...|l..n|!!|.",
+ ",,,,|...l|s...|l...|....",
+ ",,,,|-!-----!----!-|....",
+ ",,,,|p.............|....",
+ ",,,,|..............|XX..",
+ ",,,,|....cTTTT.....|XX..",
+ ",,,,|....cTTTT.....|....",
+ ",,,,[..........--!-|....",
+ ",,,,].....c.c..|...!....",
+ ",,,,|..CCCCCCCC|...|....",
+ ",,---------------!------",
+ ",,|K.I............Irrrrr",
+ ",,|K....................",
+ ",,|K.....K..K...........",
+ ",,|K..K..K..K.....rrrrrr",
+ ",,|K..K..K..K...........",
+ ",,|K..K..K..K..........."
+ ],
+ "rotation": 0,
+ "palettes": [ "megastore", "mega_goods_d" ],
+ "items": {
+ "C": { "item": "coffee_table", "chance": 30 },
+ "l": { "item": "everyday_gear", "chance": 75 },
+ "T": { "item": "office", "chance": 20 }
+ }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_0_0",
+ "//": "ground floor. top left corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,--------------------",
+ ",,,,|I..l|&...|l..I|<<|.",
+ ",,,,|n..l|--!-|l..n|<<|.",
+ ",,,,|n..l|s...|l..n|!!|.",
+ ",,,,|...l|s...|l...|....",
+ ",,,,|-!-----!----!-|XX..",
+ ",,,,|p.............|XX..",
+ ",,,,|..............|....",
+ ",,,,|....cTTTT.....|....",
+ ",,,,|....cTTTT.....|....",
+ ",,,,[..........--!-|....",
+ ",,,,].....c.c..|...!....",
+ ",,,,|..CCCCCCCC|...|....",
+ ",,---------------!------",
+ ",,|rrIrrrrrrrrrrr.Irrrrr",
+ ",,|.....................",
+ ",,|..rrrrrrrrrrrrrrrrrr.",
+ ",,|.....................",
+ ",,|..rrrrrrrrrrrrrrrrrr.",
+ ",,|....................."
+ ],
+ "rotation": 0,
+ "palettes": [ "megastore", "mega_goods_e" ],
+ "items": {
+ "C": { "item": "coffee_table", "chance": 30 },
+ "l": { "item": "everyday_gear", "chance": 75 },
+ "T": { "item": "office", "chance": 20 }
+ }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_0_0",
+ "//": "ground floor. top edge",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ ".....ILLLLLLLLLLLLIXX...",
+ "...................XXxx.",
+ ".....................xx.",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "...................LLXX.",
+ "---!--------------------",
+ ".....IkkkkkkkkkkkkIkkkkk",
+ "........................",
+ "........................",
+ ".....kkkkkkkkkkkkkkkkkkk",
+ "........................",
+ "........................"
+ ],
+ "rotation": 0,
+ "palettes": [ "megastore", "mega_goods_a" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_0_0",
+ "//": "ground floor. top edge",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ ".....IRRRRRRRRRRRRI.....",
+ "........................",
+ "..XX.....XX.............",
+ "..XX.....XX.............",
+ ".....XX............x....",
+ ".....XX..........x...x..",
+ "........................",
+ "...............x...x.x..",
+ "..XX..............x.....",
+ "..XX................x.x.",
+ "........................",
+ "rrrrrrr........rrrrrrrrr",
+ "-----------!!-----------",
+ "RRRRRIRRRRR..RRRRRIRRRRR",
+ "........................",
+ "........................",
+ ".fffffffffff..FFFFFFFFF.",
+ ".fffffffffff..FFFFFFFFF.",
+ "........................"
+ ],
+ "rotation": 0,
+ "palettes": [ "megastore", "mega_goods_b" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_0_0",
+ "//": "ground floor. top edge",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ ".....IKKKKKKKKKKKKI.....",
+ "......................xx",
+ "..XX..rrrrrrrrrrrr....xx",
+ "..XX....................",
+ ".....XX.................",
+ "...xxXX.................",
+ "...xx...................",
+ "........................",
+ "...xx............xx.....",
+ "...xx............xx.....",
+ ".........xx..xx.........",
+ ".........xx..xx....LLL..",
+ "-----------!!-----------",
+ "RRRRRIRRRR....RRRRIRRRRR",
+ "........................",
+ ".RRRRRRRRRRRRRRRRRRRRRR.",
+ "........................",
+ ".RRRRRRRRRRRRRRRRRRRRRR.",
+ "........................"
+ ],
+ "rotation": 0,
+ "palettes": [ "megastore", "mega_goods_c" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_0_0",
+ "//": "ground floor. top edge",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ "...XXI.R.R..R.R.R.I.....",
+ "...XXR.R.R..R.R.R.R.....",
+ ".....R.R.R..R.R.R.R.....",
+ "....XX..................",
+ "....XX..................",
+ "........................",
+ "..xx....................",
+ "..xx....................",
+ "........................",
+ ".XX.....................",
+ ".XX.....................",
+ "........................",
+ "---------------------!--",
+ "rrrr|IkkkkkkkkkkkkI|....",
+ "....|k............k|....",
+ "....|k............k|....",
+ "....|k...TTTTTT...k|....",
+ "........................",
+ "........................"
+ ],
+ "rotation": 0,
+ "palettes": [ "megastore", "mega_goods_d" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_0_0",
+ "//": "ground floor. top edge",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ "x....ILLLLLLLLLLLLI.XX..",
+ "x...................XX..",
+ "........................",
+ "...xx.................XX",
+ "...xx.................XX",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "..................XX....",
+ "..................XX....",
+ "........................",
+ "------!!----------------",
+ "KKKKKI...RRRRRRRRRIRRRRR",
+ "........................",
+ "........................",
+ "......KKKKKKKKKKKK......",
+ "......KKKKKKKKKKKK......",
+ "........................"
+ ],
+ "rotation": 0,
+ "palettes": [ "megastore", "mega_goods_e" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_0_0",
+ "//": "ground floor. top right corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,PPPPPPPPPPPP,,,,,,,",
+ ",,,,,PPPPPPPPPPPP,,,,,,,",
+ ",,,,,PPPPPPPPPPPP--[----",
+ ",,,,,PPPPPPPPPPPP|<..|..",
+ ",,,,--][[][][][]-|l..!..",
+ ",,,,|I..........%|I..|..",
+ ",,,,|............|---|..",
+ ",,,,|............|Css|..",
+ ",,,,|............|...!..",
+ ",,,,|............|&|t|..",
+ ",,,,|............|---|..",
+ ",,,,|...x........|&|t|..",
+ ",,,,|............|...!..",
+ ",,,,|.....X...X..|Css|..",
+ ",,,,|............|----..",
+ ",,,,|....x.......|f.....",
+ ",,,,|l..xX...X..v|f.....",
+ ",,,,|----....----|f.....",
+ ",,,,|I.....x...x.|I.....",
+ ",,,,|.....x......|f.....",
+ ",,,,|..X.....x...|f.....",
+ ",,,,|.....X......|f.....",
+ ",,,,|x..x.......x|f.....",
+ ",,,,|..xx........|f....."
+ ],
+ "rotation": 1,
+ "palettes": [ "megastore", "mega_goods_a" ],
+ "terrain": { "%": "t_gates_mech_control", "m": "t_mdoor_frame" },
+ "vehicles": { "v": { "vehicle": "shopping_cart", "chance": 30, "status": 0 } }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_0_0",
+ "//": "ground floor. top right corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,PPPPPPPPPPPP,,,,,,,",
+ ",,,,,PPPPPPPPPPPP,,,,,,,",
+ ",,,,,PPPPPPPPPPPP--[----",
+ ",,,,,PPPPPPPPPPPP|<..|..",
+ ",,,,--][[][][][]-|l..!..",
+ ",,,,|I..........%|I..|..",
+ ",,,,|............|---|..",
+ ",,,,|............|Css|..",
+ ",,,,|............|...!..",
+ ",,,,|............|&|t|..",
+ ",,,,|............|---|..",
+ ",,,,|............|&|t|..",
+ ",,,,|............|...!..",
+ ",,,,|............|Css|..",
+ ",,,,|............|----..",
+ ",,,,|............|RCCC..",
+ ",,,,|l..........v|C.....",
+ ",,,,|----....----|C.....",
+ ",,,,|I.........XX|ICCC..",
+ ",,,,|..........XX|......",
+ ",,,,|............|......",
+ ",,,,|.........XX.|r.....",
+ ",,,,|.........XX.|r.....",
+ ",,,,|............|r....."
+ ],
+ "rotation": 1,
+ "palettes": [ "megastore", "mega_goods_b" ],
+ "terrain": { "%": "t_gates_mech_control" },
+ "vehicles": { "v": { "vehicle": "shopping_cart", "chance": 30, "status": 0 } }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_0_0",
+ "//": "ground floor. top right corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,PPPPPPPPPPPP,,,,,,,",
+ ",,,,,PPPPPPPPPPPP,,,,,,,",
+ ",,,,,PPPPPPPPPPPP--[----",
+ ",,,,,PPPPPPPPPPPP|<..|..",
+ ",,,,--][[][][][]-|l..!..",
+ ",,,,|I..........%|I..|..",
+ ",,,,|............|---|..",
+ ",,,,|............|Css|..",
+ ",,,,|............|...!..",
+ ",,,,|xx....XX....|&|t|..",
+ ",,,,|xx....XX....|---|..",
+ ",,,,|............|&|t|..",
+ ",,,,|............|...!..",
+ ",,,,|............|Css|..",
+ ",,,,|............|----..",
+ ",,,,|............|K.....",
+ ",,,,|l..........v|k.....",
+ ",,,,|----....----|R.....",
+ ",,,,|I........LLL|I.....",
+ ",,,,|...........L|R.....",
+ ",,,,|............|K.....",
+ ",,,,|............|K.....",
+ ",,,,|...........L|r.....",
+ ",,,,|............|r....."
+ ],
+ "rotation": 1,
+ "palettes": [ "megastore", "mega_goods_c" ],
+ "terrain": { "%": "t_gates_mech_control", "m": "t_mdoor_frame" },
+ "vehicles": { "v": { "vehicle": "shopping_cart", "chance": 30, "status": 0 } }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_0_0",
+ "//": "ground floor. top right corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,PPPPPPPPPPPP,,,,,,,",
+ ",,,,,PPPPPPPPPPPP,,,,,,,",
+ ",,,,,PPPPPPPPPPPP--[----",
+ ",,,,,PPPPPPPPPPPP|<..|..",
+ ",,,,--][[][][][]-|l..!..",
+ ",,,,|I..........%|I..|..",
+ ",,,,|............|---|..",
+ ",,,,|............|Css|..",
+ ",,,,|............|...!..",
+ ",,,,|............|&|t|..",
+ ",,,,|............|---|..",
+ ",,,,|............|&|t|..",
+ ",,,,|............|...!..",
+ ",,,,|L...........|Css|..",
+ ",,,,|L...........|----..",
+ ",,,,|L...........|R.....",
+ ",,,,|L..........v|R.....",
+ ",,,,|----....----|R..KK.",
+ ",,,,|IX........xx|I..KK.",
+ ",,,,|XX........xx|R.....",
+ ",,,,|............|R.....",
+ ",,,,|..........xx|R.....",
+ ",,,,|..........xx|R.....",
+ ",,,,|............|R....."
+ ],
+ "rotation": 1,
+ "palettes": [ "megastore", "mega_goods_d" ],
+ "terrain": { "%": "t_gates_mech_control", "m": "t_mdoor_frame" },
+ "vehicles": { "v": { "vehicle": "shopping_cart", "chance": 30, "status": 0 } }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_0_0",
+ "//": "ground floor. top right corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,PPPPPPPPPPPP,,,,,,,",
+ ",,,,,PPPPPPPPPPPP,,,,,,,",
+ ",,,,,PPPPPPPPPPPP--[----",
+ ",,,,,PPPPPPPPPPPP|<..|kk",
+ ",,,,--][[][][][]-|l..!..",
+ ",,,,|I..........%|I..|..",
+ ",,,,|............|---|..",
+ ",,,,|............|Css|..",
+ ",,,,|............|...!..",
+ ",,,,|............|&|t|..",
+ ",,,,|............|---|..",
+ ",,,,|............|&|t|..",
+ ",,,,|............|...!..",
+ ",,,,|............|Css|..",
+ ",,,,|............|----..",
+ ",,,,|............|K.....",
+ ",,,,|l..........v|K.....",
+ ",,,,|----....----|K.....",
+ ",,,,|IRR......rrr|I.....",
+ ",,,,|............|K.....",
+ ",,,,|RRR......rrr|K.....",
+ ",,,,|............|K.....",
+ ",,,,|xx.......rrr|K.....",
+ ",,,,|xx..........|K....."
+ ],
+ "rotation": 1,
+ "palettes": [ "megastore", "mega_goods_e" ],
+ "terrain": { "%": "t_gates_mech_control", "m": "t_mdoor_frame" },
+ "vehicles": { "v": { "vehicle": "shopping_cart", "chance": 30, "status": 0 } }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_1_0",
+ "//": "ground floor. left edge",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ "rrrrrrrrrrrrrrrrrrrrrrrr",
+ "........................",
+ ".....I............I.....",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ ".KK..KK.................",
+ ".KK..KK.................",
+ ".....KK.................",
+ ".....KK.................",
+ ".KK..KK.................",
+ ".KK..KK.................",
+ "........................",
+ ".KK..IK...RRRRRRRRIRRR..",
+ ".KK..KK.................",
+ "..........RRRRRRRRRRRR..",
+ "........................",
+ "..RRRRRRRRRRRRRRRRRRRR..",
+ "........................"
+ ],
+ "rotation": 3,
+ "palettes": [ "megastore", "mega_goods_a" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_1_0",
+ "//": "ground floor. left edge",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ "rrrrr|CCCCCCCCCCCC|RRRRR",
+ "....r|...........%|.....",
+ "....rI..CCCCCCC..%I.....",
+ "....r|...........%|..RR.",
+ "....r|....CCC....%|..RR.",
+ "....r|....6......%|.....",
+ ".....C....C......%|..RR.",
+ ".....C....CCC%%%%CC..RR.",
+ "........................",
+ "........................",
+ "........................",
+ "....kkkkkkkkkkkkkkkk....",
+ "....kkkkkkkkkkkkkkkk....",
+ "........................",
+ "........................",
+ "....RI..R..RR..R..IR....",
+ "....RR..R..RR..R..RR....",
+ ".....R..R..RR..R..R.....",
+ ".....R..R..RR..R..R.....",
+ ".....R..R..RR..R..R.....",
+ "........................"
+ ],
+ "rotation": 3,
+ "palettes": [ "megastore", "mega_goods_b" ],
+ "furniture": { "%": "f_displaycase" },
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ],
+ "items": { "C": { "item": "consumer_electronics", "chance": 60 }, "%": { "item": "jewelry_front", "chance": 60 } }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_1_0",
+ "//": "ground floor. left edge",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ "rrrrrrRRRRRRRRRRRRRRRRRR",
+ ".....rR.................",
+ ".....IR..RR......RI.....",
+ ".....rR..RR..RR..RR..RR.",
+ ".....rR..RR..RR..RR..RR.",
+ ".....rR..RR..RR..RR..RR.",
+ ".....rR..RR..RR..RR..RR.",
+ ".....rR..RR..RR..RR..RR.",
+ "rr...rR..RR..RR..RR..RR.",
+ "........................",
+ "........................",
+ "........................",
+ "..FFFFFFFF...KK..KK.....",
+ "..FFFFFFFF...KK..KK.....",
+ ".............KK..KK.....",
+ "..FFIFFFFF...KK..KI.....",
+ "..ffffffff...KK..KK.....",
+ ".............KK..KK.....",
+ "..ffffffff...KK..KK.....",
+ "..ffffffff...KK..KK.....",
+ "........................"
+ ],
+ "rotation": 3,
+ "palettes": [ "megastore", "mega_goods_c" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_1_0",
+ "//": "ground floor. left edge",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ ".....................rrr",
+ "........................",
+ ".b.b.I.k.k.k..RR..IR....",
+ ".b.b.k.k.k.k..RR..RR....",
+ ".b.b.k.k.k.k............",
+ ".b.b.k.k.k.k............",
+ ".b.b.k.k.k.k..RR..RR....",
+ ".b.b.k.k.k.k..RR..RR....",
+ ".b.b.k.k.k.k............",
+ ".b.b.k.k.k.k..RR..RR....",
+ ".b.b.k.k.k.k..RR..RR....",
+ "........................",
+ "........................",
+ "........................",
+ "...ffffffffffffffffff...",
+ "...ffIffffffffffffIff...",
+ "........................",
+ "........................",
+ "...ffffffffffffffffff...",
+ "...ffffffffffffffffff...",
+ "........................"
+ ],
+ "rotation": 3,
+ "palettes": [ "megastore", "mega_goods_d" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_1_0",
+ "//": "ground floor. left edge",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ "kkkkkkkkkkkkkkkkRRRRRRRR",
+ "........................",
+ ".kkkkIkkkkkkkkkkRRIRRRR.",
+ "........................",
+ ".kkkkkkkkkkkkkkkkkRRRRR.",
+ "........................",
+ ".................RR..RR.",
+ ".................RR..RR.",
+ "........................",
+ "..r..r..r..r.....RR..RR.",
+ "..r..r..r..r.....RR..RR.",
+ "..r..r..r..r............",
+ "..r..r..r..r.....RR..RR.",
+ "..r..r..r..r.....RR..RR.",
+ "..r..r..r..r............",
+ "..r..I..r..r.....RI..RR.",
+ "..r..r..r..r.....RR..RR.",
+ "..r..r..r..r............",
+ "..r..r..r..r.....RR..RR.",
+ "..r..r..r..r.....RR..RR.",
+ "........................"
+ ],
+ "rotation": 3,
+ "palettes": [ "megastore", "mega_goods_e" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_1_0",
+ "//": "ground floor. middle area",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ "........................",
+ ".KKKKKKKKKKKKKK..RR..RR.",
+ ".KKKKKKKKKKKKKK..RR..RR.",
+ ".................RR..RR.",
+ ".KKKKKKKKKKKKKK..RR..RR.",
+ ".KKKKKIKKKKKKKK..RI..RR.",
+ ".................RR..RR.",
+ ".KKKKKKKKKKKKKK..RR..RR.",
+ ".KKKKKKKKKKKKKK..RR..RR.",
+ ".................RR..RR.",
+ ".................RR..RR.",
+ ".kk..kk..........RR..RR.",
+ ".kk..kk.................",
+ ".kk..kk.................",
+ ".kk..kk..rrrrrrrrrrrrrrr",
+ ".kk..kk.................",
+ ".kk..kk..rrrrrrrrrrrrrrr",
+ ".kk..kk.................",
+ ".kk..Ik..rrrrrrrrrrrrrrr",
+ ".kk..kk.................",
+ ".kk..kk..rrrrrrrrrrrrrrr",
+ ".kk..kk.................",
+ ".kk..kk..rrrrrrrrrrrrrrr",
+ "........................"
+ ],
+ "rotation": [ 0, 3 ],
+ "palettes": [ "megastore", "mega_goods_a" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_1_0",
+ "//": "ground floor. middle area",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ "........................",
+ ".....r...rr.............",
+ ".....r...rr...b...b...b.",
+ ".....r...rr...b...b...b.",
+ ".....r...rr...b...b...b.",
+ ".rrrrI...rr...b...I...b.",
+ ".........rr...b...b...b.",
+ ".........rr...b...b...b.",
+ ".rrrrrrrrrr...b...b...b.",
+ ".rrrrrrrrrr...b...b...b.",
+ "........................",
+ "........................",
+ ".kkkkkkkkkkkkkkkkkkkkkk.",
+ "........................",
+ ".kkkkkkkkkkkkkkkkkkkkkk.",
+ "........................",
+ "........................",
+ "........................",
+ "....RI.RR......RR.IR....",
+ "....RR.RR......RR.RR....",
+ "........................",
+ "....RR............RR....",
+ "....RR............RR....",
+ "........................"
+ ],
+ "rotation": [ 0, 3 ],
+ "palettes": [ "megastore", "mega_goods_b" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_1_0",
+ "//": "ground floor. middle area",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ".....rr..........rr.....",
+ ".....rr....rr....rr.....",
+ ".....rr....rr....rr.....",
+ "........................",
+ "........................",
+ "..FFFIFFFFFFFFFFFFIFFF..",
+ "..FFFFFFFFFFFFFFFFFFFF..",
+ "........................",
+ "........................",
+ "..FFFFFFFFFFFFFFFFFFFF..",
+ "..FFFFFFFFFFFFFFFFFFFF..",
+ "........................",
+ "........................",
+ "..FFFFFFFFFFFFFFFFFFFF..",
+ "..ffffffffffffffffffff..",
+ "........................",
+ "........................",
+ "..ffffffffffffffffffff..",
+ "..fffIffffffffffffIfff..",
+ "........................",
+ "........................",
+ "..ffffffffffffffffffff..",
+ "..KKKKKKKKKKKKKKKKKKKK..",
+ "........................"
+ ],
+ "rotation": [ 0, 3 ],
+ "palettes": [ "megastore", "mega_goods_c" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_1_0",
+ "//": "ground floor. middle area",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ".RR..RR..RR.............",
+ ".RR..RR..RR....FFFFFFF..",
+ "...............FFFFFFF..",
+ "........................",
+ ".RR..RR..RR....FFFFFFF..",
+ ".RR..IR..RR....FFFIFFF..",
+ "........................",
+ "...............FFFFFFF..",
+ ".RR..RR..RR....FFFFFFF..",
+ ".RR..RR..RR.............",
+ "........................",
+ "........................",
+ ".....k..k..kk..k..k.....",
+ ".....k..k..kk..k..k.....",
+ ".....k..k..kk..k..k.....",
+ ".....k..k..kk..k..k.....",
+ ".....k..k..kk..k..k.....",
+ ".....k..k..kk..k..k.....",
+ ".....I..k..kk..k..I.....",
+ ".....k..k..kk..K..k.....",
+ ".....k..k..kk..K..k.....",
+ ".....k..k..kk..k..k.....",
+ "........................",
+ "........................"
+ ],
+ "rotation": [ 0, 3 ],
+ "palettes": [ "megastore", "mega_goods_d" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_1_0",
+ "//": "ground floor. middle area",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ "........................",
+ "rrrrrrrrrr..............",
+ ".............KK..KK..KK.",
+ "rrrrrrrrrr...KK..KK..KK.",
+ ".............KK......KK.",
+ ".f.f.I.f.....KK..KI..KK.",
+ ".f.f.f.f.....KK..KK..KK.",
+ ".f.f.f.f.....KK......KK.",
+ ".f.f.f.f.....KK..KK..KK.",
+ ".f.f.f.f.....KK......KK.",
+ ".f.f.f.f.....KK..KK..KK.",
+ ".f.f.f.f.....KK..KK..KK.",
+ ".f.f.f.f.....KK......KK.",
+ ".f.f.f.f.....KK..KK..KK.",
+ ".............KK..KK..kk.",
+ "........................",
+ ".............bbbbbbbbbb.",
+ "........................",
+ ".RR.RI.......bbbbbIbbbb.",
+ ".RR.RR..................",
+ ".............bbbbbbbbbb.",
+ ".RR.RR..................",
+ ".RR.RR.......bbbbbbbbbb.",
+ "........................"
+ ],
+ "rotation": [ 0, 3 ],
+ "palettes": [ "megastore", "mega_goods_e" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_1_0",
+ "//": "ground floor. right edge",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ "fffffffffff.............",
+ "........................",
+ "fffffIfffff.....r.I.r.r.",
+ "FFFFFFFFFFF.....r.r.r.r.",
+ "................r.r.r.r.",
+ "FFFFFFFFFFF.....r.r.r.r.",
+ "bbbbbbbbbbb.....r.r.r.r.",
+ "................r.r.r.r.",
+ "bbbbbbbbbbb.....r.r.r.r.",
+ "bbbbbbbbbbb.....r.r.r.r.",
+ "................r.r.r.r.",
+ "bbbbbbbbbbb.....r.r.r.r.",
+ "bbbbbbbbbbb.....r.r.r.r.",
+ "........................",
+ "........................",
+ ".kk..Ik..kk...rrrrIrrr..",
+ ".kk..kk..kk.............",
+ "..............rrrrrrrr..",
+ ".kk..kk..kk.............",
+ ".kk..kk..kk...rrrrrrrr..",
+ "........................"
+ ],
+ "rotation": 1,
+ "palettes": [ "megastore", "mega_goods_a" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_1_0",
+ "//": "ground floor. right edge",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ "rrrrrrrrrrrrrrrrrrrrrrrr",
+ "........................",
+ "...rrIrrrrrrrrrrrrIrr...",
+ "........................",
+ "...rrrrrrrrrrrrrrrrrr...",
+ "........................",
+ "...rrrrrrrrrrrrrrrrrr...",
+ "........................",
+ "...rrrrrrrrrrrrrrrrrr...",
+ "........................",
+ "...rrrrrrrkkkkkkkkkkk...",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "....RI..RR...RR..RI.....",
+ "....RR..RR...RR..RR.....",
+ "....RR..RR...RR..RR.....",
+ "....RR..RR...RR..RR.....",
+ "....RR..RR...RR..RR.....",
+ "........................"
+ ],
+ "rotation": 1,
+ "palettes": [ "megastore", "mega_goods_b" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_1_0",
+ "//": "ground floor. right edge",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ "kkkkkkkkkk.AA.kkkkkkkkkk",
+ "........................",
+ "...kkIkkkkk..bbbbbIbb...",
+ "........................",
+ "...kkkkkkkk..bbbbbbbb...",
+ "........................",
+ "...kkkkkkkk..bbbbbbbb...",
+ "........................",
+ "...kkkkkkkk..bbbbbbbb...",
+ "........................",
+ "...kkkkkkkk..bbbbbbbb...",
+ "........................",
+ "........................",
+ "........................",
+ ".....KK....KK....KK.....",
+ ".....IK....KK....KI.....",
+ "........................",
+ ".....KK..........KK.....",
+ ".....KK....KK....KK.....",
+ "........................",
+ "........................"
+ ],
+ "rotation": 1,
+ "palettes": [ "megastore", "mega_goods_c" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_1_0",
+ "//": "ground floor. right edge",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ "rrrrrrrrrrrrrrrrrrrrrrrr",
+ "........................",
+ "..rrrIrrrrr..rrrrrIrrr..",
+ "........................",
+ "..rrrrrrrrr..rrrrrrrrr..",
+ "........................",
+ "..rrrrrrrrr..rrrrrrrrr..",
+ "........................",
+ "........................",
+ "........................",
+ ".KK.KK..................",
+ ".KK.KK..................",
+ ".KK.KK..................",
+ ".KK.KK..................",
+ ".KK.KK..................",
+ ".KK.KI......CCCCCCI.....",
+ "..................C.....",
+ "............C.c...C.....",
+ ".RR.........C6CCCCC.....",
+ ".RR.....................",
+ "........................"
+ ],
+ "rotation": 1,
+ "palettes": [ "megastore", "mega_goods_d" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ],
+ "items": { "C": { "item": "consumer_electronics", "chance": 60 } }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_1_0",
+ "//": "ground floor. right edge",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ "------------------------",
+ "bbbbbbbbbbbrrrrrrrrrrrrr",
+ "........................",
+ ".bbbbIbbbbb......KI.....",
+ ".................KK.....",
+ ".................KK.....",
+ ".bbbbbbbbbb......KK.....",
+ ".................KK.....",
+ ".................KK.....",
+ ".bbbbbbbbbb......KK.....",
+ ".................KK.....",
+ ".RR..RR..RR..KK..KK.....",
+ ".RR..RR..RR..KK..KK.....",
+ ".RR..RR..RR..KK..KK.....",
+ ".RR..RR..RR..KK..KK.....",
+ ".RR..RR..KK..KK..KK.....",
+ ".RR..IR..KK..KK..KI.....",
+ ".RR..RR..KK..KK..KK.....",
+ ".RR..RR..KK..KK..KK..rr.",
+ ".RR..RR..KK..KK..KK..rr.",
+ "........................",
+ "........................"
+ ],
+ "rotation": 1,
+ "palettes": [ "megastore", "mega_goods_e" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_2_0",
+ "//": "ground floor. bottom left corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,-------",
+ ",,,,,,,,,,,,,,,,,|KKKKKK",
+ ",,----------------......",
+ ",,|KKIKKKKKKKKKKKKI.....",
+ ",,|.....................",
+ ",,|.....................",
+ ",,|k.k.k.k..FFFFFFFFFF..",
+ ",,|k.k.k.k..FFFFFFFFFF..",
+ ",,|k.k.k.k..............",
+ ",,|k.k.k.k..............",
+ ",,|k.k.k.k..ffffffffff..",
+ ",,|k...k.k..ffffffffff..",
+ ",,|---.k.k..............",
+ ",,|..|..................",
+ ",,|..!..................",
+ ",,|..|..................",
+ ",,|..I.........CCCI.....",
+ ",,----....CCCr.6........",
+ ",,WW|.....6.............",
+ ",,WWg..........CCCr.....",
+ ",,WWg.....CCCr.6........",
+ ",,WWg.....6............."
+ ],
+ "rotation": 3,
+ "palettes": [ "megastore", "mega_goods_a" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_2_0",
+ "//": "ground floor. bottom left corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,-------",
+ ",,,,,,,,,,,,,,,,,|......",
+ ",,----------------......",
+ ",,|U.I|CCCCffFffF|I.....",
+ ",,|o..!..........!......",
+ ",,|o..|.......TTo|......",
+ ",,|----C6CC6CC---|......",
+ ",,|..............|......",
+ ",,|..c..................",
+ ",,|......TT...c.........",
+ ",,|..TT..TT..TT.........",
+ ",,|.cTT......TT.........",
+ ",,|............c........",
+ ",,|----gggggggg----.....",
+ ",,|s..!.................",
+ ",,|-+-|.................",
+ ",,|&.I|........CCCI.....",
+ ",,-----...CCCr.6........",
+ ",,WWg.....6.............",
+ ",,WWg..........CCCr.....",
+ ",,WWg.....CCCr.6........",
+ ",,WWg.....6............."
+ ],
+ "rotation": 3,
+ "palettes": [ "megastore", "mega_goods_b" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_2_0",
+ "//": "ground floor. bottom left corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,-------",
+ ",,,,,,,,,,,,,,,,,|RRRRRR",
+ ",,----------------......",
+ ",,|FFIFFFFFFFFFFFFI.....",
+ ",,|.....................",
+ ",,|.FFFFFFFFFFFFFF......",
+ ",,|.....................",
+ ",,|.KKKKKKKKKKKKKK......",
+ ",,|.....................",
+ ",,|.KKKKKKKKKKKKKK......",
+ ",,|.....................",
+ ",,|.kkkkkkkkkkkkkk......",
+ ",,|.....................",
+ ",,|%....................",
+ ",,|%....................",
+ ",,|.....................",
+ ",,|%%I.........CCCI.....",
+ ",,---.....CCCr.6........",
+ ",,WW|.....6.............",
+ ",,WWg..........CCCr.....",
+ ",,WWg.....CCCr.6........",
+ ",,WWg.....6............."
+ ],
+ "rotation": 3,
+ "palettes": [ "megastore", "mega_goods_c" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ],
+ "furniture": { "%": "f_vending_c" }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_2_0",
+ "//": "ground floor. bottom left corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,-------",
+ ",,,,,,,,,,,,,,,,,|RRRRRR",
+ ",,----------------......",
+ ",,|kkIkkkkkkkkkkkkI.....",
+ ",,|.....................",
+ ",,|.....................",
+ ",,|..kkkkkkkkkkkkkk.....",
+ ",,|.....................",
+ ",,|.....................",
+ ",,|..kkkkkkkkkkkkkk.....",
+ ",,|.....................",
+ ",,|.....................",
+ ",,|..kkkkkkkkkkkkkk.....",
+ ",,|.....................",
+ ",,|.....................",
+ ",,|.....................",
+ ",,|ppI.........CCCI.....",
+ ",,---.....CCCr.6........",
+ ",,WW|.....6.............",
+ ",,WWg..........CCCr.....",
+ ",,WWg.....CCCr.6........",
+ ",,WWg.....6............."
+ ],
+ "rotation": 3,
+ "palettes": [ "megastore", "mega_goods_d" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_2_0",
+ "//": "ground floor. bottom left corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,-------",
+ ",,,,,,,,,,,,,,,,,|RRRRRR",
+ ",,----------------......",
+ ",,|r.IrrrrrrrrrrrrI..RR.",
+ ",,|r.................RR.",
+ ",,|r..rrrrrrrrrrrrr..RR.",
+ ",,|r.................RR.",
+ ",,|r..rrrrrrrrrrrrr..RR.",
+ ",,|r.................RR.",
+ ",,|r..rrrrrrrrrrrrr..RR.",
+ ",,|r....................",
+ ",,|r..rrrrrrrrrrrrr.....",
+ ",,|.....................",
+ ",,|...v.........v.......",
+ ",,|.....................",
+ ",,|.....................",
+ ",,|FFIFFF......CCCI.....",
+ ",,---.....CCCr.6........",
+ ",,WW|.....6.............",
+ ",,WWg..........CCCr.....",
+ ",,WWg.....CCCr.6........",
+ ",,WW|.....6............."
+ ],
+ "rotation": 3,
+ "palettes": [ "megastore", "mega_goods_e" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ],
+ "vehicles": { "v": { "vehicle": "food_cart", "chance": 50, "status": 0 } }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_2_0",
+ "//": "ground floor. entrance",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ "WWWWWWWWWWWWWWWWWWWWWWWW",
+ "WWWWWWWWWWWWWWWWWWWWWWWW",
+ "WWWWW-gg++gg-++g++-WWWWW",
+ "WWWWW|......|.....|WWWWW",
+ "-ggg-|......g.....|ggggg",
+ "....%I......|mm-mmI.....",
+ "............g...........",
+ "............g...........",
+ "............g...........",
+ ".......vvvvv|...........",
+ "....vvvvvvvv|...........",
+ ".-----------|...........",
+ ".|eeeeeee...|6C..6C..6C.",
+ ".|.........D|.C...C...C.",
+ ".|EEEEEEE.cD|.r...r...r.",
+ ".|.........D|...........",
+ ".|eeeee.....|.6C..6C..6C",
+ ".|..........|..C...C...C",
+ ".--!-I--CCC--..r..Ir...r",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................"
+ ],
+ "rotation": 2,
+ "palettes": [ "megastore", "mega_goods_f" ],
+ "terrain": { "%": "t_atm", "m": "t_mdoor_frame" },
+ "items": { "e": { "item": "softdrugs", "chance": 40 }, "E": { "item": "harddrugs", "chance": 10 } },
+ "vehicles": { "v": { "vehicle": "shopping_cart", "chance": 30, "status": 0 } }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_2_0",
+ "//": "ground floor. entrance",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ "WWWWWWWWWWWWWWWWWWWWWWWW",
+ "WWWWWWWWWWWWWWWWWWWWWWWW",
+ "WWWWW-gg++gg-++g++-WWWWW",
+ "WWWWW|......|.....|WWWWW",
+ "-ggg-|......g.....|ggggg",
+ "....%I......|mm-mmI.....",
+ "............g...........",
+ "............g...........",
+ ".........vvvg...........",
+ "...vvvvvvvvv|...........",
+ ".vvvvvvvvvvv|...........",
+ ".-----------|...........",
+ "..TTTT..!..U|6C..6C..6C.",
+ "........|..U|.C...C...C.",
+ "........C..C|.r...r...r.",
+ "........C..f|...........",
+ "........C..f|.6C..6C..6C",
+ "........6..s|..C...C...C",
+ ".....I-------..r..Ir...r",
+ "........................",
+ "........................",
+ "..R..R..R..R...FFFF.....",
+ "..R..R..R..R...FFFF.....",
+ "..R..R..R..R............"
+ ],
+ "rotation": 2,
+ "palettes": [ "megastore", "mega_goods_f" ],
+ "terrain": { "%": "t_atm", "m": "t_mdoor_frame" },
+ "vehicles": { "v": { "vehicle": "shopping_cart", "chance": 25, "status": 0 } }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_2_0",
+ "//": "ground floor. bottom right corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,----------------WWWW",
+ ",,,,|C.....ffCCUUUU|WWWW",
+ ",,,,|C..|..........--gg-",
+ ",,,,|I..|C........I|....",
+ ",,,,|o..|C........U|....",
+ ",,,,|--!--CCCCCCC---....",
+ ",,,,|...................",
+ ",,,,|...................",
+ ",,,,|b...nnnnn..........",
+ ",,,,|b..................",
+ ",,,,|b...nnnnn..........",
+ ",,,,|b...........TT.....",
+ ",,,,|b...nnnnn...TT.....",
+ ",,,,|b..........cTT.....",
+ ",,,,|b..................",
+ ",,---b..................",
+ ",,|r.I...bbbbbbbbbIbb...",
+ ",,|r.....rrrrrrrrrrrr...",
+ ",,|r....................",
+ ",,|r.r.r.r.r.r.r.r.r.r..",
+ ",,|r.r.r.r.r.r.r.r.r.r..",
+ ",,|r.r.r.r.r.r.r.r.r.r.."
+ ],
+ "rotation": 2,
+ "palettes": [ "megastore", "mega_goods_a" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ],
+ "items": { "C": { "item": "coffee_display", "chance": 30 } }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_2_0",
+ "//": "ground floor. bottom right corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,----------------WWWW",
+ ",,,,|ffffffffffffff|WWWW",
+ ",,,,|..............--gg-",
+ ",,,,|I............I|....",
+ ",,,,|----.......----....",
+ ",,,,|K..................",
+ ",,,,|K......KK..........",
+ ",,,,|K..KK..KK..........",
+ ",,,,|K..KK......KK......",
+ ",,,,|K......KK..KK......",
+ ",,,,|K..KK..KK.....KK...",
+ ",,,,|K..KK......KK.KK...",
+ ",,,,|K......KK..KK......",
+ ",,,,|K..KK..KK..........",
+ ",,,,|K..KK..............",
+ ",,---K..................",
+ ",,|rrIrrrrrrrrrrrrIrrr..",
+ ",,|.....................",
+ ",,|...rrrrrrrrrrrrrrrr..",
+ ",,|.....................",
+ ",,|...rrrrrrrrrrrrrrrr..",
+ ",,|....................."
+ ],
+ "rotation": 2,
+ "palettes": [ "megastore", "mega_goods_b" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_2_0",
+ "//": "ground floor. bottom right corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,----------------WWWW",
+ ",,,,|CCCCCCCCCCCCCC|WWWW",
+ ",,,,|C............C--gg-",
+ ",,,,|I...CCCCCC...I.....",
+ ",,,,|C...CCCCCC.........",
+ ",,,,|...................",
+ ",,,,|...................",
+ ",,,,|..rrrrrrrrrrrrrrrr.",
+ ",,,,|...................",
+ ",,,,|..rrrrrrrrrrrrrrrr.",
+ ",,,,|...................",
+ ",,,,|..rrrrrrrrrrrrrrrr.",
+ ",,,,|...................",
+ ",,,,|..RRRRRRRRRRRRRRR..",
+ ",,,,|...................",
+ ",,---...................",
+ ",,|RRIRRRRRRR..RRRRIRRR.",
+ ",,|R....................",
+ ",,|R....................",
+ ",,|R..RRRRRRR..RRRRRRRR.",
+ ",,|R....................",
+ ",,|R...................."
+ ],
+ "rotation": 2,
+ "palettes": [ "megastore", "mega_goods_c" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ],
+ "items": { "C": { "item": "produce", "chance": 30, "repeat": 3 } }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_2_0",
+ "//": "ground floor. bottom right corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,----------------WWWW",
+ ",,,,|k............K|WWWW",
+ ",,,,|k....kk..KK..K--gg-",
+ ",,,,|I....kk..KK..IK....",
+ ",,,,|k....kk..KK..KK....",
+ ",,,,|k....kk..KK..KK....",
+ ",,,,|k....kk..KK..KK....",
+ ",,,,|k....kk..KK..KK....",
+ ",,,,|k....kk..KK..KK....",
+ ",,,,|k....kk..KK..KK....",
+ ",,,,|k..................",
+ ",,,,|k..................",
+ ",,,,|k..RRRRRRRRRRRRRR..",
+ ",,,,|k..................",
+ ",,,,|k..RRRRRRRRRRRRRR..",
+ ",,---k..................",
+ ",,|RRI..RRRRRRRRRRIRRR..",
+ ",,|R....................",
+ ",,|R...RRRRRRRRRRRRRRR..",
+ ",,|R....................",
+ ",,|R...RRRRRRRRRRRRRRR..",
+ ",,|R...................."
+ ],
+ "rotation": 2,
+ "palettes": [ "megastore", "mega_goods_d" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_2_0",
+ "//": "ground floor. bottom right corner",
+ "weight": 100,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,,,,,,,,,,,,,,,,,,,,,",
+ ",,,,----------------WWWW",
+ ",,,,|f..ff....ff..f|WWWW",
+ ",,,,|f..ff....ff..f--gg-",
+ ",,,,|I..ff....ff..I.....",
+ ",,,,|f..ff....ff..f.....",
+ ",,,,|f..ff....ff..f.....",
+ ",,,,|f..ff....ff..f.....",
+ ",,,,|f..ff....ff..f.....",
+ ",,,,|...................",
+ ",,,,|...................",
+ ",,,,|r..rrrrrrrrrrrrrr..",
+ ",,,,|r..................",
+ ",,,,|r..rrrrrrrrrrrrrr..",
+ ",,,,|r..................",
+ ",,,,|r..rrrrrrrrrrrrrr..",
+ ",,---r..................",
+ ",,|RRI..rrrrrrrrrrIrrr..",
+ ",,|R....................",
+ ",,|R....................",
+ ",,|R.RR..RR..RR..RR.....",
+ ",,|R.RR..RR..RR..RR.....",
+ ",,|R...................."
+ ],
+ "rotation": 2,
+ "palettes": [ "megastore", "mega_goods_e" ],
+ "set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_0_1",
+ "//": "second floor. top left corner",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ "########################",
+ "########################",
+ "########################",
+ "########################",
+ "####--------------------",
+ "####|IQ..a.|AAAjAAI|>>| ",
+ "####|J.tD6D|.......!>>| ",
+ "####|......+.......|--- ",
+ "####|qAAA.J|J...Jcc| ",
+ "####|----------+---| ",
+ "####|.c.QQ.c.Q...c.| ",
+ "####|D6D..D6D...D6D| ",
+ "####|j.............g ",
+ "####|D6D..D6Dj.....g ",
+ "####|tc....ct......g ",
+ "####|.c...........:| ",
+ "####|D6DQQ....qNNTT| ",
+ "##--------gggg----------",
+ "##| I I ",
+ "##| ",
+ "##| ",
+ "##| ",
+ "##| ",
+ "##| "
+ ],
+ "rotation": 0,
+ "palettes": [ "megastore" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_0_1",
+ "//": "second floor. top edge",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ "########################",
+ "########################",
+ "########################",
+ "########################",
+ "--------ggg--ggg--------",
+ " I I ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ "------------------------",
+ " I I ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ ],
+ "rotation": 0,
+ "palettes": [ "megastore" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_0_1",
+ "//": "second floor top right corner",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ "########################",
+ "########################",
+ "#################-------",
+ "#################|>.<| ",
+ "####-------------|...| ",
+ "####|I |..q| ",
+ "####| |..L| ",
+ "####| |..L| ",
+ "####| |..M| ",
+ "####| |Y.%| ",
+ "####| |Y.%| ",
+ "####| |Y.M| ",
+ "####| |%.M| ",
+ "####| |q.%| ",
+ "####| |---- ",
+ "####| | ",
+ "####| | ",
+ "####|---- ----| ",
+ "####|I |I ",
+ "####| | ",
+ "####| | ",
+ "####| | ",
+ "####| | ",
+ "####| | "
+ ],
+ "rotation": 1,
+ "palettes": [ "megastore" ],
+ "terrain": { "%": "t_machinery_heavy" }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_1_1",
+ "//": "second floor left edge",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ "########################",
+ "########################",
+ "------------------------",
+ " ",
+ " ",
+ " I I ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " I I ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ ],
+ "rotation": 3,
+ "palettes": [ "megastore" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_1_1",
+ "//": "second floor. middle area",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " I I ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " I I ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ ],
+ "rotation": [ 0, 3 ],
+ "palettes": [ "megastore" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_1_1",
+ "//": "second floor. right edge",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ "########################",
+ "########################",
+ "------------------------",
+ " ",
+ " ",
+ " I I ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " I I ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ ],
+ "rotation": 1,
+ "palettes": [ "megastore" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_2_1",
+ "//": "second floor. bottom left corner",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_open_air",
+ "rows": [
+ "########################",
+ "########################",
+ "#################-------",
+ "#################| ",
+ "##---------------- ",
+ "##| I I ",
+ "##| ",
+ "##| ",
+ "##| ",
+ "##| ",
+ "##| ",
+ "##| ",
+ "##| ",
+ "##| ",
+ "##| ",
+ "##| ",
+ "##| ",
+ "##| ",
+ "##| I I ",
+ "##--- ",
+ "####| ",
+ "####| ",
+ "####| ",
+ "####| "
+ ],
+ "rotation": 3,
+ "palettes": [ "megastore" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_2_1",
+ "//": "second floor. bottom edge",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ "########################",
+ "########################",
+ "#####--------------#####",
+ "#####| |#####",
+ "-----| |-----",
+ " I I ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " I I ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ ],
+ "rotation": 2,
+ "palettes": [ "megastore" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_2_1",
+ "//": "second floor bottom right corner",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_thconc_floor",
+ "rows": [
+ "########################",
+ "########################",
+ "####----------------####",
+ "####| | ####",
+ "####| -----",
+ "####|I I ",
+ "####| ",
+ "####| ",
+ "####| ",
+ "####| ",
+ "####| ",
+ "####| ",
+ "####| ",
+ "####| ",
+ "####| ",
+ "####| ",
+ "####| ",
+ "##--- ",
+ "##| I I ",
+ "##| ",
+ "##| ",
+ "##| ",
+ "##| ",
+ "##| "
+ ],
+ "rotation": 2,
+ "palettes": [ "megastore" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_0_roof",
+ "//": "roof. top left corner.",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_flat_roof",
+ "rows": [
+ "########################",
+ "########################",
+ "########################",
+ "########################",
+ "####11111111111111111111",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "##111===================",
+ "##1=====================",
+ "##1=====================",
+ "##1=====================",
+ "##1=====================",
+ "##1=====================",
+ "##1====================="
+ ],
+ "rotation": 0,
+ "palettes": [ "megastore" ],
+ "place_nested": [
+ {
+ "chunks": [
+ [ "null", 5 ],
+ [ "roof_16x16_help", 5 ],
+ [ "roof_2x2_infrastructure", 80 ],
+ [ "roof_2x2_infrastructure_2", 40 ],
+ [ "roof_2x2_utilities", 40 ],
+ [ "roof_6x6_survivor", 5 ]
+ ],
+ "x": [ 7, 22 ],
+ "y": [ 6, 22 ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_0_roof",
+ "//": "roof. top edge",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_flat_roof",
+ "rows": [
+ "########################",
+ "########################",
+ "########################",
+ "########################",
+ "111111111111111111111111",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================"
+ ],
+ "rotation": 0,
+ "palettes": [ "megastore" ],
+ "place_nested": [
+ {
+ "chunks": [
+ [ "null", 5 ],
+ [ "roof_16x16_help", 5 ],
+ [ "roof_2x2_infrastructure", 80 ],
+ [ "roof_2x2_infrastructure_2", 40 ],
+ [ "roof_2x2_utilities", 40 ],
+ [ "roof_6x6_survivor", 5 ]
+ ],
+ "x": [ 1, 22 ],
+ "y": [ 6, 22 ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_0_roof",
+ "//": "third floor. top right corner",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_flat_roof",
+ "rows": [
+ "########################",
+ "########################",
+ "#################1111111",
+ "#################1=%>%==",
+ "####11111111111111=%%%==",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1==================="
+ ],
+ "rotation": 1,
+ "palettes": [ "megastore" ],
+ "place_nested": [
+ {
+ "chunks": [
+ [ "null", 5 ],
+ [ "roof_16x16_help", 5 ],
+ [ "roof_2x2_infrastructure", 80 ],
+ [ "roof_2x2_infrastructure_2", 40 ],
+ [ "roof_2x2_utilities", 40 ],
+ [ "roof_6x6_survivor", 5 ]
+ ],
+ "x": [ 6, 22 ],
+ "y": [ 7, 22 ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_1_roof",
+ "//": "roof. left edge",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_flat_roof",
+ "rows": [
+ "########################",
+ "########################",
+ "111111111111111111111111",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========11111111========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========11111111========",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================"
+ ],
+ "rotation": 3,
+ "palettes": [ "megastore" ],
+ "place_monsters": [
+ { "monster": "GROUP_ZOMBIE", "x": [ 1, 22 ], "y": [ 1, 22 ] },
+ { "monster": "GROUP_SCHOOL", "x": [ 1, 22 ], "y": [ 1, 22 ], "chance": 20 }
+ ],
+ "place_nested": [
+ {
+ "chunks": [
+ [ "null", 5 ],
+ [ "roof_2x2_infrastructure", 80 ],
+ [ "roof_2x2_infrastructure_2", 40 ],
+ [ "roof_2x2_utilities", 40 ],
+ [ "roof_6x6_survivor", 5 ]
+ ],
+ "x": [ 1, 22 ],
+ "y": [ 18, 22 ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_1_roof",
+ "//": "roof. middle area",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_flat_roof",
+ "rows": [
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========11111111========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========11111111========",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================"
+ ],
+ "rotation": [ 0, 3 ],
+ "palettes": [ "megastore" ],
+ "place_nested": [
+ {
+ "chunks": [ [ "null", 5 ], [ "roof_2x2_infrastructure", 20 ], [ "roof_2x2_infrastructure_2", 20 ], [ "roof_2x2_utilities", 20 ] ],
+ "x": [ 1, 22 ],
+ "y": [ 1, 6 ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_1_roof",
+ "//": "roof. right edge",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_flat_roof",
+ "rows": [
+ "########################",
+ "########################",
+ "111111111111111111111111",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========11111111========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========1^^^^^^1========",
+ "========11111111========",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================"
+ ],
+ "rotation": 1,
+ "palettes": [ "megastore" ],
+ "place_nested": [
+ {
+ "chunks": [
+ [ "null", 5 ],
+ [ "roof_2x2_infrastructure", 80 ],
+ [ "roof_2x2_infrastructure_2", 40 ],
+ [ "roof_2x2_utilities", 40 ],
+ [ "roof_6x6_survivor", 5 ]
+ ],
+ "x": [ 1, 22 ],
+ "y": [ 18, 22 ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_0_2_roof",
+ "//": "third floor. bottom left corner",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_flat_roof",
+ "rows": [
+ "########################",
+ "########################",
+ "#################1111111",
+ "#################1======",
+ "##1111111111111111======",
+ "##1=====================",
+ "##1=====================",
+ "##1=====================",
+ "##1=====11111111========",
+ "##1=====1^^^^^^1========",
+ "##1=====1^^^^^^1========",
+ "##1=====1^^^^^^1========",
+ "##1=====1^^^^^^1========",
+ "##1=====1^^^^^^1========",
+ "##1=====1^^^^^^1========",
+ "##1=====11111111========",
+ "##1=====================",
+ "##1=====================",
+ "##1=====================",
+ "##111===================",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1==================="
+ ],
+ "rotation": 3,
+ "palettes": [ "megastore" ],
+ "place_nested": [
+ {
+ "chunks": [ [ "null", 5 ], [ "roof_2x2_infrastructure", 80 ], [ "roof_2x2_infrastructure_2", 40 ], [ "roof_2x2_utilities", 40 ] ],
+ "x": [ 1, 22 ],
+ "y": [ 18, 22 ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_1_2_roof",
+ "//": "roof. bottom edge",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_flat_roof",
+ "rows": [
+ "########################",
+ "########################",
+ "#####11111111111111#####",
+ "#####1============1#####",
+ "111111============111111",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================",
+ "========================"
+ ],
+ "rotation": 2,
+ "palettes": [ "megastore" ],
+ "place_nested": [
+ {
+ "chunks": [
+ [ "null", 5 ],
+ [ "roof_2x2_infrastructure", 80 ],
+ [ "roof_2x2_infrastructure_2", 40 ],
+ [ "roof_2x2_utilities", 40 ],
+ [ "roof_6x6_survivor", 5 ]
+ ],
+ "x": [ 1, 22 ],
+ "y": [ 7, 22 ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": "megastore_2_2_roof",
+ "//": "third floor bottom right corner",
+ "weight": 10,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_flat_roof",
+ "rows": [
+ "########################",
+ "########################",
+ "####1111111111111111####",
+ "####1==============1####",
+ "####1==============11111",
+ "####1===================",
+ "####1===================",
+ "####1===================",
+ "####1===11111111========",
+ "####1===1^^^^^^1========",
+ "####1===1^^^^^^1========",
+ "####1===1^^^^^^1========",
+ "####1===1^^^^^^1========",
+ "####1===1^^^^^^1========",
+ "####1===1^^^^^^1========",
+ "####1===11111111========",
+ "####1===================",
+ "##111===================",
+ "##1=====================",
+ "##1=====================",
+ "##1=====================",
+ "##1=====================",
+ "##1=====================",
+ "##1====================="
+ ],
+ "rotation": 2,
+ "palettes": [ "megastore" ],
+ "place_nested": [
+ {
+ "chunks": [ [ "null", 5 ], [ "roof_2x2_infrastructure", 80 ], [ "roof_2x2_infrastructure_2", 40 ], [ "roof_2x2_utilities", 40 ] ],
+ "x": [ 7, 22 ],
+ "y": [ 18, 22 ]
+ }
+ ]
+ }
+ }
+]
diff --git a/data/json/mapgen/microlab/microlab_special_tiles.json b/data/json/mapgen/microlab/microlab_special_tiles.json
index 0c2a58fa3f6c4..f831fcbc02f42 100644
--- a/data/json/mapgen/microlab/microlab_special_tiles.json
+++ b/data/json/mapgen/microlab/microlab_special_tiles.json
@@ -90,9 +90,9 @@
" |------------------|6 ",
" |-F cccccc -lll -|r ",
"|||-F 2 c-||2",
- " |--- cc cc - h6-| ",
- " |-F cc cc - h c-|c ",
- " |-F cc cc -cccc-|c ",
+ " |--- cc pp - h6-| ",
+ " |-F cc pt - h c-|c ",
+ " |-F cc pp -cccc-|c ",
" |--- -((((-| ",
"2|G 2 7-|||",
" 5 T----22---- @@-| ",
@@ -111,7 +111,9 @@
],
"palettes": [ "microlab" ],
"terrain": { "0": "t_vat", "G": "t_card_science" },
+ "furniture": { "t": "f_counter", "p": "f_counter" },
"monster": { "T": { "monster": "mon_turret_rifle" } },
+ "item": { "0": { "item": "fetus" }, "t": { "item": "iv_mutagen_alpha" } },
"place_monsters": [ { "monster": "GROUP_LAB", "chance": 2, "x": [ 2, 21 ], "y": [ 2, 21 ], "repeat": [ 1, 5 ] } ]
}
},
diff --git a/data/json/mapgen/miniature_railway/miniature_railway_z1.json b/data/json/mapgen/miniature_railway/miniature_railway_z1.json
new file mode 100644
index 0000000000000..022bf8da2c6e8
--- /dev/null
+++ b/data/json/mapgen/miniature_railway/miniature_railway_z1.json
@@ -0,0 +1,71 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [ [ "miniaturerailway_0_0_0", "miniaturerailway_1_0_0" ], [ "miniaturerailway_0_1_0", "miniaturerailway_1_1_0" ] ],
+ "object": {
+ "fill_ter": "t_grass",
+ "rows": [
+ ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.",
+ ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.",
+ ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.",
+ ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.",
+ ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.",
+ ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.",
+ ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.",
+ ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.",
+ ".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.",
+ ".@@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@pppppppp@.",
+ ".@@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@pppppppp@.",
+ ".@@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@pppppppp@.",
+ ".@@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@pppppppp@.",
+ ".@@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@pppppppp@.",
+ ".@@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@pppppppp@.",
+ ".@@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@pppppppp@.",
+ ".@@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@@@@`@pppppppp@.",
+ ".pppppppppppppppppppppppppppppppppppppppppppppp.",
+ ".%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%HHHHHHHH__HHHH.",
+ ".%uuuuu.............uuuuuuuuuuu..HtHtHD||||H7|H.",
+ ".%uu....X======X....uuuuuuuuuuu..H|H|HV||||*dhH.",
+ ".%uuu..XX.uuuu.XX...uuuuuuuuuuu..H_H_H|||||H||H.",
+ ".%uuu.XX.uuuuuu.XX..uuuuuuuuuuu..H|||||||||_||H.",
+ ".%uuuXX.uuuuuuuu.=..uuuuuuuuuuu..HHHHHHHH__HHHH.",
+ ".%uuu=..uuuuuuu..=........................p.uu%.",
+ ".%uuu=..uuuuuuu..=........................p.uu%.",
+ ".%uuu=.uuuuuuuu..=...pppppppp.............p.uu%.",
+ ".%uuu=.uuuuuuuu.XX...pWWppWWp.............p.uu%.",
+ ".%uuu=.uuuuuuu.XX....pppppppp.............p.uu%.",
+ ".%uuu=.uuuuuu.XX.....pWWppWWppppppppppppppp.uu%.",
+ ".%uuu=.uuuuuu.=......pppppppp.............p.uu%.",
+ ".%uuu=.uuuuuu.=.........p.................p.uu%.",
+ ".%uuu=.uuuuuu.XX........p................=p.uu%.",
+ ".%uuu=.uuuuuu..XX..ppppppppppppppp.......=p.uu%.",
+ ".%uuu=.uuuuuuu..X==================X...5|=||5.%.",
+ ".%uuu=..uuuuuuuu...ppppppppppppppp.XX..5|=||5.%.",
+ ".%uuu=.uuuuuuuuuu.......p.uuuuuuuu..XX.5|=||5.%.",
+ ".%uuu=.uuuuuuuuuuuu.....p.uuuuuuuuu..=.5|=||5.%.",
+ ".%uuu=.uuuuuuuuuuuuu....p.uuuuuuuuu..=.5|=||5.%.",
+ ".%uuu=.......ww.........p....ww......=.5|=|l5.%.",
+ ".%uuuXX.....pppppppppppppppppppp....XX.5|=|s5.%.",
+ ".%uuu.XX.....ww..............ww....XX..5|=|s5.%.",
+ ".%uuuu.XX...uuuuuuuuuuuuuuuuuu....XX...5|=|l5.%.",
+ ".%uuuuu.XX..uuuuuuuuuuuuuuuuuu...XX....5|=||5.%.",
+ ".%uuuuu..X=======================X.....555555.%.",
+ ".%uuuuuu..............................uuuuuuu.%.",
+ ".%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.",
+ "................................................"
+ ],
+ "terrain": { },
+ "furniture": { },
+ "palettes": [ "miniature_railway_palette" ],
+ "place_monsters": [
+ { "monster": "GROUP_SCHOOL", "x": [ 35, 40 ], "y": [ 10, 15 ], "repeat": [ 0, 1 ], "density": 1 },
+ { "monster": "GROUP_SCHOOL", "x": [ 35, 40 ], "y": [ 35, 40 ], "repeat": [ 0, 1 ], "density": 1 }
+ ],
+ "place_vehicles": [
+ { "vehicle": "miniature_train_loco", "x": 5, "y": 31, "chance": 5, "fuel": 20, "status": 25, "rotation": 270 },
+ { "vehicle": "miniature_train_loco", "x": 41, "y": 41, "chance": 5, "fuel": 5, "status": 15, "rotation": 270 }
+ ]
+ }
+ }
+]
diff --git a/data/json/mapgen/miniature_railway/miniature_railway_z2.json b/data/json/mapgen/miniature_railway/miniature_railway_z2.json
new file mode 100644
index 0000000000000..0bef755b407b4
--- /dev/null
+++ b/data/json/mapgen/miniature_railway/miniature_railway_z2.json
@@ -0,0 +1,63 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [ [ "miniaturerailway_0_0_1", "miniaturerailway_1_0_1" ], [ "miniaturerailway_0_1_1", "miniaturerailway_1_1_1" ] ],
+ "object": {
+ "fill_ter": "t_grass",
+ "rows": [
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ ":::::::::::::::::::::::::::::::::rrrrrrrrrrrrrr:",
+ ":::::::::::::::::::::::::::::::::rrrrrrrrrrrrrr:",
+ ":::::::::::::::::::::::::::::::::rrrrrrrrrrrrrr:",
+ ":::::::::::::::::::::::::::::::::rrrrrrrrrrrrrr:",
+ ":::::::::::::::::::::::::::::::::rrrrrrrrrrrrrr:",
+ ":::::::::::::::::::::::::::::::::rrrrrrrrrrrrrr:",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ ":::::::::::::::::::::::::::::::::::::::rrrrrr:::",
+ ":::::::::::::::::::::::::::::::::::::::rrrrrr:::",
+ ":::::::::::::::::::::::::::::::::::::::rrrrrr:::",
+ ":::::::::::::::::::::::::::::::::::::::rrrrrr:::",
+ ":::::::::::::::::::::::::::::::::::::::rrrrrr:::",
+ ":::::::::::::::::::::::::::::::::::::::rrrrrr:::",
+ ":::::::::::::::::::::::::::::::::::::::rrrrrr:::",
+ ":::::::::::::::::::::::::::::::::::::::rrrrrr:::",
+ ":::::::::::::::::::::::::::::::::::::::rrrrrr:::",
+ ":::::::::::::::::::::::::::::::::::::::rrrrrr:::",
+ ":::::::::::::::::::::::::::::::::::::::rrrrrr:::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::",
+ "::::::::::::::::::::::::::::::::::::::::::::::::"
+ ],
+ "terrain": { },
+ "furniture": { },
+ "palettes": [ "miniature_railway_palette" ]
+ }
+ }
+]
diff --git a/data/json/mapgen/movie_theater.json b/data/json/mapgen/movie_theater.json
index 19a1dc5c8ea3b..828860f9074b9 100644
--- a/data/json/mapgen/movie_theater.json
+++ b/data/json/mapgen/movie_theater.json
@@ -1,732 +1,264 @@
[
{
"method": "json",
- "object": {
- "furniture": {
- "#": "f_counter",
- "&": "f_toilet",
- "+": "f_null",
- ".": "f_null",
- "6": "f_arcade_machine",
- "7": "f_pinball_machine",
- "_": "f_null",
- "c": "f_chair",
- "s": "f_sink",
- "t": "f_trashcan",
- "{": "f_vending_c",
- "|": "f_null"
- },
- "place_items": [
- { "chance": 35, "item": "trash_cart", "x": 3, "y": 21 },
- { "chance": 35, "item": "trash_cart", "x": 22, "y": 17 },
- { "chance": 35, "item": "trash_cart", "x": 10, "y": 17 },
- { "chance": 35, "item": "trash_cart", "x": 2, "y": 15 },
- { "chance": 35, "item": "trash_cart", "x": 3, "y": 10 },
- { "chance": 35, "item": "trash_cart", "x": 12, "y": 2 },
- { "chance": 75, "item": "vending_food_items", "x": [ 1, 2 ], "y": 13 },
- { "chance": 35, "item": "misc_smoking", "x": 5, "y": 7 },
- { "chance": 75, "item": "vending_drink_items", "x": [ 3, 4 ], "y": 13 },
- { "chance": 45, "item": "toy_store", "x": 21, "y": 22 },
- { "chance": 45, "item": "toy_store", "x": 8, "y": 14 },
- { "chance": 55, "item": "trash", "x": 17, "y": 11 },
- { "chance": 55, "item": "trash", "x": 18, "y": 1 },
- { "chance": 45, "item": "candy_shop", "x": 14, "y": 19 }
- ],
- "place_monsters": [ { "chance": 15, "density": 0.25, "monster": "GROUP_ZOMBIE", "x": 12, "y": 15 } ],
- "place_toilets": [
- { "x": 1, "y": 5 },
- { "x": 3, "y": 5 },
- { "x": 5, "y": 5 },
- { "x": 7, "y": 5 },
- { "x": 9, "y": 5 },
- { "x": 11, "y": 5 },
- { "x": 13, "y": 5 },
- { "x": 15, "y": 5 },
- { "x": 17, "y": 5 },
- { "x": 19, "y": 5 },
- { "x": 1, "y": 7 },
- { "x": 3, "y": 7 },
- { "x": 5, "y": 7 },
- { "x": 7, "y": 7 },
- { "x": 9, "y": 7 },
- { "x": 11, "y": 7 },
- { "x": 13, "y": 7 }
- ],
- "rows": [
- "||||||||||||||||||||||||",
- "|#s#s#s#s#s#s#s#s#t....|",
- "|......................|",
- "|......................|",
- "|_|+|_|_|_|+|_|+|+|_|..|",
- "|&|&|&|&|&|&|&|&|&|&|..|",
- "|||||||||||||||||||||...",
- "|&|&|&|&|&|&|&|&|&|&|...",
- "|_|_|+|_|+|_|_|.....||||",
- "|...................||||",
- "|.......................",
- "|#s#s#s#s#s#s#s##t......",
- "||||||||||||||||||||||||",
- "|{{{{|6.6.6...7.7..66..|",
- "|....|c.c.c............|",
- "|.......................",
- "|......c........c.......",
- "|...66666....6666.......",
- "|...66666....6666.......",
- "|...c.c.......c........|",
- "|....................c6|",
- "|7...................c6|",
- "|....................c6|",
- "|...7.7.7.7.7.7.7.7....|"
- ],
- "terrain": {
- "#": "t_floor",
- "&": "t_floor",
- "+": "t_door_metal_c",
- ".": "t_floor",
- "6": "t_floor",
- "7": "t_floor",
- "_": "t_door_metal_o",
- "c": "t_floor",
- "s": "t_floor",
- "t": "t_floor",
- "{": "t_floor",
- "|": "t_wall"
- }
- },
- "om_terrain": "movietheater_0_0",
"type": "mapgen",
- "weight": 100
- },
- {
- "method": "json",
- "object": {
- "furniture": { "#": "f_chair", "-": "f_null", ".": "f_null", "H": "f_armchair", "|": "f_null" },
- "place_items": [
- { "chance": 5, "item": "alcohol", "x": 22, "y": 3 },
- { "chance": 5, "item": "alcohol", "x": 23, "y": 1 },
- { "chance": 25, "item": "jackets", "x": 23, "y": 16 },
- { "chance": 25, "item": "jackets", "x": 6, "y": 11 },
- { "chance": 25, "item": "jackets", "x": 23, "y": 2 },
- { "chance": 15, "item": "bags", "x": 15, "y": 9 },
- { "chance": 15, "item": "bags", "x": 4, "y": 5 },
- { "chance": 35, "item": "trash_cart", "x": 16, "y": 22 },
- { "chance": 35, "item": "trash_cart", "x": 6, "y": 20 },
- { "chance": 35, "item": "trash_cart", "x": 20, "y": 18 },
- { "chance": 35, "item": "trash_cart", "x": 7, "y": 17 },
- { "chance": 35, "item": "trash_cart", "x": 17, "y": 16 },
- { "chance": 35, "item": "trash_cart", "x": 14, "y": 14 },
- { "chance": 35, "item": "trash_cart", "x": 20, "y": 13 },
- { "chance": 35, "item": "trash_cart", "x": 4, "y": 13 },
- { "chance": 35, "item": "trash_cart", "x": 10, "y": 12 },
- { "chance": 35, "item": "trash_cart", "x": 13, "y": 11 },
- { "chance": 35, "item": "trash_cart", "x": 21, "y": 9 },
- { "chance": 35, "item": "trash_cart", "x": 6, "y": 8 },
- { "chance": 35, "item": "trash_cart", "x": 16, "y": 7 },
- { "chance": 35, "item": "trash_cart", "x": 10, "y": 7 },
- { "chance": 35, "item": "trash_cart", "x": 14, "y": 5 },
- { "chance": 35, "item": "trash_cart", "x": 19, "y": 4 },
- { "chance": 35, "item": "trash_cart", "x": 9, "y": 4 },
- { "chance": 35, "item": "trash_cart", "x": 17, "y": 1 }
- ],
- "place_monsters": [ { "chance": 15, "density": 0.25, "monster": "GROUP_ZOMBIE", "x": 12, "y": 10 } ],
- "rows": [
- "||||||||||||||||||||||||",
- "|......................#",
- "D........#.#.#.#.#.#.#.#",
- "|........#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|........#.#.#.#.#.#.#.#",
- "|........#.#.#.#.#.#.#.#",
- "|......................#",
- "|.......----.-----||||||",
- "|.......................",
- "|.......................",
- "|.......................",
- "||||||||||||||||||||||||"
- ],
- "terrain": { "#": "t_floor", "D": "t_door_c", "-": "t_railing_h", ".": "t_floor", "H": "t_floor", "|": "t_wall" }
- },
- "om_terrain": "movietheater_0_1",
- "type": "mapgen",
- "weight": 100
- },
- {
- "method": "json",
+ "weight": 100,
+ "om_terrain": [
+ [ "movietheater_0_0", "movietheater_1_0", "movietheater_2_0" ],
+ [ "movietheater_0_1", "movietheater_1_1", "movietheater_2_1" ],
+ [ "movietheater_0_2", "movietheater_1_2", "movietheater_2_2" ]
+ ],
"object": {
- "furniture": { "#": "f_chair", "-": "f_null", ".": "f_null", "H": "f_armchair", "|": "f_null" },
- "place_items": [
- { "chance": 5, "item": "alcohol", "x": 22, "y": 3 },
- { "chance": 5, "item": "alcohol", "x": 23, "y": 1 },
- { "chance": 25, "item": "jackets", "x": 23, "y": 16 },
- { "chance": 25, "item": "jackets", "x": 6, "y": 11 },
- { "chance": 25, "item": "jackets", "x": 23, "y": 2 },
- { "chance": 15, "item": "bags", "x": 15, "y": 9 },
- { "chance": 15, "item": "bags", "x": 4, "y": 5 },
- { "chance": 35, "item": "trash_cart", "x": 16, "y": 22 },
- { "chance": 35, "item": "trash_cart", "x": 6, "y": 20 },
- { "chance": 35, "item": "trash_cart", "x": 20, "y": 18 },
- { "chance": 35, "item": "trash_cart", "x": 7, "y": 17 },
- { "chance": 35, "item": "trash_cart", "x": 17, "y": 16 },
- { "chance": 35, "item": "trash_cart", "x": 14, "y": 14 },
- { "chance": 35, "item": "trash_cart", "x": 20, "y": 13 },
- { "chance": 35, "item": "trash_cart", "x": 4, "y": 13 },
- { "chance": 35, "item": "trash_cart", "x": 10, "y": 12 },
- { "chance": 35, "item": "trash_cart", "x": 13, "y": 11 },
- { "chance": 35, "item": "trash_cart", "x": 21, "y": 9 },
- { "chance": 35, "item": "trash_cart", "x": 6, "y": 8 },
- { "chance": 35, "item": "trash_cart", "x": 16, "y": 7 },
- { "chance": 35, "item": "trash_cart", "x": 10, "y": 7 },
- { "chance": 35, "item": "trash_cart", "x": 14, "y": 5 },
- { "chance": 35, "item": "trash_cart", "x": 19, "y": 4 },
- { "chance": 35, "item": "trash_cart", "x": 9, "y": 4 },
- { "chance": 35, "item": "trash_cart", "x": 17, "y": 1 }
- ],
- "place_monsters": [ { "chance": 15, "density": 0.25, "monster": "GROUP_ZOMBIE", "x": 12, "y": 10 } ],
+ "fill_ter": "t_thconc_floor",
"rows": [
- "||||||||||||||||||||||||",
- "|......................#",
- "D........#.#.#.#.#.#.#.#",
- "|........#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|...H.H..#.#.#.#.#.#.#.#",
- "|........#.#.#.#.#.#.#.#",
- "|........#.#.#.#.#.#.#.#",
- "|......................#",
- "|.......----.-----||||||",
- "|.......................",
- "|.......................",
- "|.......................",
- "||||||||||||||||||||||||"
+ "!!!!!!!!!!!!!!!!!!!!!!!!!!%%^^%%%%%^^%%%%%^^%%!!!!!!!!!!!!!!!!!!!!!!!!!!",
+ "!TsTsTsTsTsTsTsTsTG....|________________________|.......-....|..TT|.XXX!",
+ "!......................|________________________|.......-....+...T|...X!",
+ "!......................|||%%^^%%%%%^^%%%%%^^%%|||....!!G-.-..|...T|...X!",
+ "!+|+|+|+|+|+|+|+|+|+|..|___******************_vv|....!!G-.-..T...T|X..X!",
+ "!&|&|&|&|&|&|&|&|&|&|..|___*$$$$$$$$$$$$$$$$*___........-.-..Tc..T|X...!",
+ "!||||||||||||||||||||...___*$**************$*___@%@.....-.-..T...g|....!",
+ "!&|&|&|&|&|&|&|&|&|&|...___*$$$$********$$$$*___@%@.....-.-..T...g|...X!",
+ "!+|+|+|+|+|+|+|.....||||___****$********$****___@%@.....-.-..T...r|t..X!",
+ "!...................||||______*$*|Z%Z%|*$*______@%@.......-..T...r|t..X!",
+ "!.......................______*$*d*e*e|*$*______..........-..|...o|....!",
+ "!TsTsTsTsTsTsTsTTG......____!_*$*||||||*$*_!____........RR-..|.........!",
+ "!|||||||||||||||||||||||______*$********$*______@%@..........|.........!",
+ "!vFvF|6.6.6...7.7..66..|______*$********$*______@%@..........|gg..|....!",
+ "!....|c.c.c...........G|____!_*$********$*_!____@%@..!!G.....||||||{...!",
+ "!.......................______*$********$*______@%@..!!G.....|vFTT|{...!",
+ "!......c........c.......______*$********$*______.............|...T|{...!",
+ "!...66666....6666.......____!_*$********$*_!____.............|...T||+||!",
+ "!...66666....6666.......______*$********$*______@%@..............T|..{{!",
+ "!...c.c.......c.......G|______*$********$*______@%@..............T|....!",
+ "!....................c6|______*$********$*______@%@..!!G.........T|..ct!",
+ "!7...................c6|______*$********$*______@%@..!!G.........T|..ct!",
+ "!....................c6|______*$********$*______.............|...T||+||!",
+ "!...7.7.7.7.7.7.7.7....|______*$********$*______.............|...T|<.XX!",
+ "!|||||||||||||||||||||||||||||*$********$*|||||||||||||||||||||||||||||!",
+ "!......................#|__tt|*$********$*|tt__|#......................!",
+ "D........#.#.#.#.#.#.#.#|__tt|b$********$b|tt__|#.#.#.#.#.#.#.#........D",
+ "!........#.#.#.#.#.#.#.#|____|b$***!!***$b|____|#.#.#.#.#.#.#.#........!",
+ "!...H.H..#.#.#.#.#.#.#.#|____|b$***!!***$b|___c|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|t___|b$********$b|___t|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#wt___|b$********$b|__ctw#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#wZc__|b$********$b|___Zw#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|____|*$********$*|____|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|___G|*$********$*|G___|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|__|||*$********$*|||__|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|__|a_*$********$*_F|__|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|__|__*$********$*_y|__|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|__|__*$********$*_v|__|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|__|F_*$********$*_y|__|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|__|y_*$***Ki***$*_F|__|#.#.#.#.#.#.#.#..H.H...!",
+ "!........#.#.#.#.#.#.#.#|__|v_*$***iK***$*__|__|#.#.#.#.#.#.#.#........!",
+ "!........#.#.#.#.#.#.#.#|l_|y_*$********$*__|_l|#.#.#.#.#.#.#.#........!",
+ "!......................#|l_|F_*$********$*_a|_l|#......................!",
+ "!.......----.-----||||||||+|||*$********$*|||+||||||||||----.-----.....!",
+ "!.......................+******$********$******+.......................!",
+ "!.......................|*$$$$$$********$$$$$$*|.......................!",
+ "!.......................+******$********$******+.......................!",
+ "!|||||||||||||||||||||||||||||*$********$*|||||||||||||||||||||||||||||!",
+ "!|||||||||||||||||||||||||||||*$********$*|||||||||||||||||||||||||||||!",
+ "!......................#|__tt|*$********$*|tt__|#......................!",
+ "D........#.#.#.#.#.#.#.#|__tt|b$********$b|tt__|#.#.#.#.#.#.#.#........D",
+ "!........#.#.#.#.#.#.#.#|____|b$***!!***$b|____|#.#.#.#.#.#.#.#........!",
+ "!...H.H..#.#.#.#.#.#.#.#|____|b$***!!***$b|___c|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|t___|b$********$b|___t|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#wt___|b$********$b|__ctw#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#wZc__|b$********$b|___Zw#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|____|*$********$*|____|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|___G|*$********$*|G___|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|__|||*$********$*|||__|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|__|a_*$********$*_v|__|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|__|__*$********$*_y|__|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|__|__*$********$*_F|__|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|__|v_*$********$*_y|__|#.#.#.#.#.#.#.#..H.H...!",
+ "!...H.H..#.#.#.#.#.#.#.#|__|y_*$***Ki***$*_v|__|#.#.#.#.#.#.#.#..H.H...!",
+ "!........#.#.#.#.#.#.#.#|__|F_*$***iK***$*__|__|#.#.#.#.#.#.#.#........!",
+ "!........#.#.#.#.#.#.#.#|l_|y_*$********$*__|_l|#.#.#.#.#.#.#.#........!",
+ "!......................#|l_|v_*$********$*_a|_l|#......................!",
+ "!.......----.-----||||||||+|||*$********$*|||+||||||||||----.-----.....!",
+ "!.......................+******$********$******+.......................!",
+ "!.......................|*$$$$$$$$$$$$$$$$$$$$*|.......................!",
+ "!.......................+**********************+.......................!",
+ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
],
- "terrain": { "#": "t_floor", "D": "t_door_c", "-": "t_railing_h", ".": "t_floor", "H": "t_floor", "|": "t_wall" }
- },
- "om_terrain": "movietheater_0_2",
- "type": "mapgen",
- "weight": 100
- },
- {
- "method": "json",
- "object": {
- "furniture": {
- "#": "f_counter",
- "&": "f_null",
- "+": "f_null",
- "-": "f_null",
- ".": "f_null",
- "_": "f_null",
- "d": "f_null",
- "|": "f_null"
+ "palettes": [ "movie_theater_palette.json" ],
+ "terrain": { "#": "t_thconc_floor", "H": "t_thconc_floor", "y": "t_thconc_floor" },
+ "toilets": { "&": { } },
+ "vendingmachines": { "v": { "item_group": "vending_drink" }, "F": { "item_group": "vending_food" } },
+ "items": {
+ "&": { "item": "alcohol", "chance": 10 },
+ "T": { "item": "snacks", "chance": 5 },
+ "X": { "item": "snacks", "chance": 30, "repeat": [ 6, 12 ] },
+ "g": { "item": "fridgesnacks", "chance": 70, "repeat": [ 6, 12 ] },
+ "G": { "item": "trash", "chance": 20, "repeat": [ 2, 4 ] },
+ "t": [
+ { "item": "snacks", "chance": 3 },
+ { "item": "consumer_electronics", "chance": 4 },
+ { "item": "cubical_office", "chance": 10 },
+ { "item": "office_breakroom", "chance": 5 }
+ ],
+ "#": [
+ { "item": "jackets", "chance": 3 },
+ { "item": "bags", "chance": 4 },
+ { "item": "trash_cart", "chance": 8 },
+ { "item": "hatstore_accessories", "chance": 5 }
+ ],
+ "H": [
+ { "item": "jackets", "chance": 3 },
+ { "item": "bags", "chance": 4 },
+ { "item": "trash_cart", "chance": 10 },
+ { "item": "hatstore_accessories", "chance": 5 }
+ ],
+ "{": [
+ { "item": "jackets", "chance": 3 },
+ { "item": "bags", "chance": 4 },
+ { "item": "consumer_electronics", "chance": 5 },
+ { "item": "hatstore_accessories", "chance": 5 },
+ { "item": "manuals", "chance": 5 },
+ { "item": "textbooks", "chance": 5 }
+ ],
+ "l": [
+ { "item": "softdrugs", "chance": 10 },
+ { "item": "bags", "chance": 20 },
+ { "item": "consumer_electronics", "chance": 5 },
+ { "item": "alcohol", "chance": 5 },
+ { "item": "manuals", "chance": 5 },
+ { "item": "textbooks", "chance": 5 }
+ ]
},
"place_items": [
- { "chance": 35, "item": "trash_cart", "x": 21, "y": 21 },
- { "chance": 35, "item": "trash_cart", "x": 1, "y": 19 },
- { "chance": 35, "item": "trash_cart", "x": 14, "y": 16 },
- { "chance": 35, "item": "trash_cart", "x": 6, "y": 7 },
- { "chance": 35, "item": "trash_cart", "x": 19, "y": 6 },
- { "chance": 35, "item": "trash_cart", "x": 2, "y": 2 },
- { "chance": 35, "item": "trash_cart", "x": 15, "y": 1 },
- { "chance": 5, "item": "jackets", "x": 9, "y": 13 },
- { "chance": 15, "item": "consumer_electronics", "x": 8, "y": 20 },
- { "chance": 5, "item": "shoes", "x": 14, "y": 8 },
- { "chance": 35, "item": "cubical_office", "x": [ 10, 11 ], "y": 20 }
+ { "chance": 35, "item": "misc_smoking", "x": 5, "y": 7 },
+ { "chance": 45, "item": "toy_store", "x": 21, "y": 22 },
+ { "chance": 45, "item": "toy_store", "x": 8, "y": 14 }
],
- "rows": [
- "--||++|||||++|||||++||--",
- "________________________",
- "________________________",
- "--||++|||||++|||||++||--",
- "___.................._&&",
- "___..................___",
- "___..................___",
- "___..................___",
- "___..................___",
- "______............______",
- "______............______",
- "____-_............_-____",
- "______............______",
- "______............______",
- "____-_............_-____",
- "______............______",
- "______............______",
- "____-_............_-____",
- "______............______",
- "______............______",
- "______.-####-.....______",
- "______.d....-.....______",
- "______.------.....______",
- "______............______"
+ "place_monsters": [
+ { "chance": 15, "density": 0.25, "monster": "GROUP_ZOMBIE", "x": 12, "y": 15 },
+ { "chance": 15, "density": 0.25, "monster": "GROUP_ZOMBIE", "x": 57, "y": 15 },
+ { "chance": 15, "density": 0.0, "monster": "GROUP_ZOMBIE", "x": 69, "y": 11 },
+ { "chance": 15, "density": 0.25, "monster": "GROUP_ZOMBIE", "x": 12, "y": 34 },
+ { "chance": 15, "density": 0.25, "monster": "GROUP_ZOMBIE", "x": 60, "y": 34 },
+ { "chance": 15, "density": 0.25, "monster": "GROUP_ZOMBIE", "x": 12, "y": 58 },
+ { "chance": 15, "density": 0.25, "monster": "GROUP_ZOMBIE", "x": 60, "y": 58 }
],
- "terrain": {
- "#": "t_carpet_purple",
- "&": "t_atm",
- "+": "t_door_glass_c",
- "-": "t_wall",
- ".": "t_carpet_purple",
- "_": "t_floor",
- "d": "t_door_c",
- "|": "t_wall_glass"
- }
- },
- "om_terrain": "movietheater_1_0",
- "type": "mapgen",
- "weight": 100
+ "place_item": [
+ { "item": "ketchup", "repeat": 1, "x": 65, "y": 16 },
+ { "item": "ketchup", "repeat": 1, "x": 65, "y": 17 },
+ { "item": "ketchup", "repeat": 1, "x": 65, "y": 18 },
+ { "item": "mustard", "repeat": 1, "x": 65, "y": 20 },
+ { "item": "mustard", "repeat": 1, "x": 65, "y": 21 },
+ { "item": "mustard", "repeat": 1, "x": 65, "y": 22 },
+ { "item": "vinegar", "repeat": 1, "x": 65, "y": 22 }
+ ]
+ }
},
{
"method": "json",
- "object": {
- "furniture": {
- "#": "f_table",
- "&": "f_trashcan",
- "+": "f_null",
- ".": "f_null",
- "H": "f_armchair",
- "^": "f_indoor_plant",
- "_": "f_null",
- "a": "f_null",
- "b": "f_bench",
- "c": "f_chair",
- "d": "f_null",
- "i": "f_indoor_plant",
- "l": "f_locker",
- "w": "f_null",
- "{": "f_vending_c",
- "|": "f_null"
- },
- "place_items": [
- { "chance": 45, "item": "jackets", "x": 1, "y": 17 },
- { "chance": 75, "item": "vending_food_items", "x": 4, "y": 18 },
- { "chance": 75, "item": "vending_food_items", "x": 19, "y": 11 },
- { "chance": 45, "item": "softdrugs", "x": 22, "y": 17 },
- { "chance": 35, "item": "cubical_office", "x": 22, "y": 5 },
- { "chance": 35, "item": "cubical_office", "x": 1, "y": 5 },
- { "chance": 35, "item": "cubical_office", "x": 19, "y": [ 1, 2 ] },
- { "chance": 35, "item": "cubical_office", "x": 3, "y": 1 },
- { "chance": 55, "item": "trash", "x": 19, "y": 9 },
- { "chance": 55, "item": "trash", "x": 4, "y": 9 },
- { "chance": 15, "item": "bags", "x": 1, "y": 18 },
- { "chance": 35, "item": "trash_cart", "x": 10, "y": 21 },
- { "chance": 35, "item": "trash_cart", "x": 19, "y": 20 },
- { "chance": 35, "item": "trash_cart", "x": 6, "y": 14 },
- { "chance": 35, "item": "trash_cart", "x": 8, "y": 9 },
- { "chance": 35, "item": "trash_cart", "x": 14, "y": 5 },
- { "chance": 75, "item": "vending_drink_items", "x": 4, "y": 16 },
- { "chance": 75, "item": "vending_drink_items", "x": 19, "y": 15 },
- { "chance": 75, "item": "vending_drink_items", "x": 4, "y": 14 },
- { "chance": 75, "item": "vending_drink_items", "x": 19, "y": 13 },
- { "chance": 25, "item": "manuals", "x": 20, "y": 1 }
- ],
- "rows": [
- "||||||............||||||",
- "|__##|............|##__|",
- "|__##|b..........b|##__|",
- "|____|b....||....b|____|",
- "|____|b....||....b|___c|",
- "|#___|b..........b|___#|",
- "w#___|b..........b|__c#w",
- "wTc__|b..........b|___Tw",
- "|____|............|____|",
- "|___&|............|&___|",
- "|__|||............|||__|",
- "|__|a_............_{|__|",
- "|__|__............_^|__|",
- "|__|__............_{|__|",
- "|__|{_............_^|__|",
- "|__|^_.....Hi....._{|__|",
- "|__|{_.....iH.....__|__|",
- "|l_|^_............__|_l|",
- "|l_|{_............_a|_l|",
- "||+|||............|||+||",
- "+......................d",
- "|......................|",
- "d......................+",
- "||||||............||||||"
- ],
- "terrain": {
- "#": "t_floor",
- "&": "t_floor",
- "+": "t_door_metal_c",
- ".": "t_carpet_purple",
- "H": "t_carpet_purple",
- "^": "t_floor",
- "_": "t_floor",
- "a": "t_atm",
- "b": "t_carpet_purple",
- "c": "t_floor",
- "d": "t_door_metal_o",
- "i": "t_carpet_purple",
- "l": "t_floor",
- "w": "t_window",
- "{": "t_floor",
- "T": "t_console_broken",
- "|": "t_wall"
- }
- },
- "om_terrain": "movietheater_1_1",
"type": "mapgen",
- "weight": 100
- },
- {
- "method": "json",
+ "weight": 100,
+ "om_terrain": [
+ [ "movietheater_roof_0_0", "movietheater_roof_1_0", "movietheater_roof_2_0" ],
+ [ "movietheater_roof_0_1", "movietheater_roof_1_1", "movietheater_roof_2_1" ],
+ [ "movietheater_roof_0_2", "movietheater_roof_1_2", "movietheater_roof_2_2" ]
+ ],
"object": {
- "furniture": {
- "#": "f_table",
- "&": "f_trashcan",
- "+": "f_null",
- ".": "f_null",
- "H": "f_armchair",
- "^": "f_indoor_plant",
- "_": "f_null",
- "a": "f_null",
- "b": "f_bench",
- "c": "f_chair",
- "d": "f_null",
- "i": "f_indoor_plant",
- "l": "f_locker",
- "w": "f_null",
- "{": "f_vending_c",
- "|": "f_null"
- },
- "place_items": [
- { "chance": 45, "item": "jackets", "x": 1, "y": 17 },
- { "chance": 75, "item": "vending_food_items", "x": 4, "y": 18 },
- { "chance": 75, "item": "vending_food_items", "x": 19, "y": 11 },
- { "chance": 35, "item": "cubical_office", "x": 22, "y": 5 },
- { "chance": 35, "item": "cubical_office", "x": 1, "y": 5 },
- { "chance": 35, "item": "cubical_office", "x": 19, "y": [ 1, 2 ] },
- { "chance": 35, "item": "cubical_office", "x": 3, "y": 1 },
- { "chance": 55, "item": "trash", "x": 19, "y": 9 },
- { "chance": 55, "item": "trash", "x": 4, "y": 9 },
- { "chance": 15, "item": "bags", "x": 1, "y": 18 },
- { "chance": 25, "item": "hatstore_hats", "x": 22, "y": 17 },
- { "chance": 35, "item": "trash_cart", "x": 10, "y": 21 },
- { "chance": 35, "item": "trash_cart", "x": 19, "y": 20 },
- { "chance": 35, "item": "trash_cart", "x": 6, "y": 14 },
- { "chance": 35, "item": "trash_cart", "x": 8, "y": 9 },
- { "chance": 35, "item": "trash_cart", "x": 14, "y": 5 },
- { "chance": 35, "item": "textbooks", "x": 22, "y": 18 },
- { "chance": 75, "item": "vending_drink_items", "x": 4, "y": 16 },
- { "chance": 75, "item": "vending_drink_items", "x": 19, "y": 15 },
- { "chance": 75, "item": "vending_drink_items", "x": 4, "y": 14 },
- { "chance": 75, "item": "vending_drink_items", "x": 19, "y": 13 },
- { "chance": 15, "item": "jackets", "x": 17, "y": 3 },
- { "chance": 25, "item": "manuals", "x": 20, "y": 1 }
- ],
+ "fill_ter": "t_thconc_floor",
"rows": [
- "||||||............||||||",
- "|__##|............|##__|",
- "|__##|b..........b|##__|",
- "|____|b....||....b|____|",
- "|____|b....||....b|___c|",
- "|#___|b..........b|___#|",
- "w#___|b..........b|__c#w",
- "wTc__|b..........b|___Tw",
- "|____|............|____|",
- "|___&|............|&___|",
- "|__|||............|||__|",
- "|__|a_............_{|__|",
- "|__|__............_^|__|",
- "|__|__............_{|__|",
- "|__|{_............_^|__|",
- "|__|^_.....Hi....._{|__|",
- "|__|{_.....iH.....__|__|",
- "|l_|^_............__|_l|",
- "|l_|{_............_a|_l|",
- "||+|||............|||+||",
- "+......................d",
- "|......................|",
- "d......................+",
- "||||||||||||||||||||||||"
+ "222222222222222222222222222222222222222222222222222222222222222222222222",
+ "|......................................................................3",
+ "|......=............................................................:..3",
+ "|......................................................................3",
+ "|......&..&..&.............................................&...........3",
+ "|.................................................................=....3",
+ "|......................................................................3",
+ "|......&..&..&.............................................&...........3",
+ "|......................................................................3",
+ "|....=............................................................=....3",
+ "|..........................................................&...........3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|...........................................%%%D%%%%%%%%%%%%%%%%%%%%%..3",
+ "|...........................................%...........AAAAA.AAAAA.%..3",
+ "|...........................................%...YY..................%..3",
+ "|...........................................%...YY...################..3",
+ "|...........................................%........#6666______#pHH#..3",
+ "|...........................................%........+__________#_HH#..3",
+ "|...........................................%........#6666______+__p#..3",
+ "|...........................................%........#__________#####..3",
+ "|...........................................%........#__________#__>#..3",
+ "|...........................................D........#__________##+##..3",
+ "|...........................................%........#______________#..3",
+ "|...........................................%........+__________CCC_#..3",
+ "|...........................................%........#__C______CCC_p#..3",
+ "|...........................................%..X.....#_CCC______C__p#..3",
+ "|...........................................%........#___C_______CCC#..3",
+ "|...........................................%%%%%%%%%################..3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......:..................................................:............3",
+ "5......................................................................5",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|......................................................................3",
+ "|----------------------------------------------------------------------3"
],
+ "palettes": [ "roof_palette" ],
+ "liquids": { "6": { "liquid": "water_clean", "amount": [ 0, 100 ] }, "Y": { "liquid": "water_clean", "amount": [ 100, 1000 ] } },
"terrain": {
- "#": "t_floor",
- "&": "t_floor",
+ ">": "t_ladder_down",
+ "_": "t_thconc_floor",
+ "#": "t_brick_wall",
"+": "t_door_metal_c",
- ".": "t_carpet_purple",
- "H": "t_carpet_purple",
- "^": "t_floor",
- "_": "t_floor",
- "a": "t_atm",
- "b": "t_carpet_purple",
- "c": "t_floor",
- "d": "t_door_metal_o",
- "i": "t_carpet_purple",
- "l": "t_floor",
- "w": "t_window",
- "{": "t_floor",
- "T": "t_console_broken",
- "|": "t_wall"
- }
- },
- "om_terrain": "movietheater_1_2",
- "type": "mapgen",
- "weight": 100
- },
- {
- "method": "json",
- "object": {
- "place_item": [
- { "item": "ketchup", "repeat": 1, "x": 17, "y": 16 },
- { "item": "ketchup", "repeat": 1, "x": 17, "y": 17 },
- { "item": "ketchup", "repeat": 1, "x": 17, "y": 18 },
- { "item": "mustard", "repeat": 1, "x": 17, "y": 20 },
- { "item": "mustard", "repeat": 1, "x": 17, "y": 21 },
- { "item": "mustard", "repeat": 1, "x": 17, "y": 22 },
- { "item": "vinegar", "repeat": 1, "x": 17, "y": 22 }
- ],
- "furniture": {
- "#": "f_counter",
- "+": "f_null",
- "-": "f_null",
- ".": "f_null",
- "R": "f_null",
- "X": "f_crate_c",
- "c": "f_chair",
- "g": "f_glass_fridge",
- "o": "f_oven",
- "r": "f_rack",
- "t": "f_table",
- "v": "f_vending_c",
- "{": "f_locker",
- "|": "f_null"
+ "D": "t_chaingate_l",
+ "%": "t_chainfence",
+ "H": "t_generator_broken",
+ "&": "t_flat_roof",
+ "A": "t_flat_roof",
+ ":": "t_flat_roof",
+ "Y": "t_flat_roof",
+ "X": "t_flat_roof",
+ "=": "t_flat_roof",
+ "p": "t_machinery_old"
},
- "place_items": [
- { "chance": 45, "item": "jackets", "x": 22, "y": 18 },
- { "chance": 75, "item": "vending_food_items", "x": 14, "y": 15 },
- { "chance": 75, "item": "vending_food_items", "x": 22, "y": 8 },
- { "chance": 75, "item": "vending_food_items", "x": 22, "y": 2 },
- { "chance": 75, "item": "vending_food_items", "x": 21, "y": 1 },
- { "chance": 55, "item": "office_breakroom", "x": [ 21, 22 ], "y": 21 },
- { "chance": 35, "item": "school", "x": 21, "y": 23 },
- { "chance": 65, "item": "snacks", "x": 22, "y": 9 },
- { "chance": 65, "item": "snacks", "x": 17, "y": [ 8, 9 ] },
- { "chance": 65, "item": "snacks", "x": 22, "y": 7 },
- { "chance": 65, "item": "snacks", "x": 19, "y": 5 },
- { "chance": 65, "item": "snacks", "x": 22, "y": [ 3, 4 ] },
- { "chance": 65, "item": "snacks", "x": 17, "y": [ 3, 4 ] },
- { "chance": 65, "item": "snacks", "x": 22, "y": 1 },
- { "chance": 15, "item": "bags", "x": 21, "y": 18 },
- { "chance": 35, "item": "trash_cart", "x": 8, "y": 20 },
- { "chance": 35, "item": "trash_cart", "x": 1, "y": 15 },
- { "chance": 35, "item": "trash_cart", "x": 12, "y": 1 },
- { "chance": 75, "item": "vending_drink_items", "x": 15, "y": 15 },
- { "chance": 75, "item": "vending_drink_items", "x": 19, "y": 4 },
- { "chance": 75, "item": "vending_drink_items", "x": 20, "y": 1 },
- { "chance": 55, "item": "coffee_shop", "x": 17, "y": [ 6, 7 ] },
- { "chance": 45, "item": "dining", "x": 17, "y": 2 },
- { "chance": 45, "item": "fridgesnacks", "x": [ 14, 15 ], "y": 13 }
- ],
- "place_monsters": [
- { "chance": 15, "density": 0.25, "monster": "GROUP_ZOMBIE", "x": 9, "y": 15 },
- { "chance": 15, "density": 0.0, "monster": "GROUP_ZOMBIE", "x": 21, "y": 11 }
- ],
- "rows": [
- "||||||||||||||||||||||||",
- "|.......-....|..##|.XXX|",
- "|.......-....+...#|...X|",
- "|....||.-.-..|...#|...X|",
- "|....||.-.-..#...#|X..X|",
- "........-.-..#c..#|X...|",
- "........-.-..#...g|....|",
- "........-.-..#...g|...X|",
- "........-.-..#...r|t..X|",
- "..........-..#...r|t..X|",
- "..........-..|...o|....|",
- "........RR-..|.........|",
- ".............|.........|",
- ".............|gg..|....|",
- ".....||......||||||{...|",
- ".....||......|vv##|{...|",
- ".............|...#|{...|",
- ".............|...#||+|||",
- ".................#|..{{|",
- ".................#|....|",
- ".....||..........#|..c.|",
- ".....||..........#|..tt|",
- ".............|...#|.ctt|",
- ".............|...#|.ctt|"
- ],
- "terrain": {
- "#": "t_floor",
- "+": "t_door_c",
- "-": "t_railing_v",
- ".": "t_floor",
- "R": "t_railing_h",
- "X": "t_floor",
- "c": "t_floor",
- "g": "t_floor",
- "o": "t_floor",
- "r": "t_floor",
- "t": "t_floor",
- "v": "t_floor",
- "{": "t_floor",
- "|": "t_wall"
- }
- },
- "om_terrain": "movietheater_2_0",
- "type": "mapgen",
- "weight": 100
- },
- {
- "method": "json",
- "object": {
- "furniture": { "#": "f_chair", "-": "f_null", ".": "f_null", "H": "f_armchair", "|": "f_null" },
- "place_items": [
- { "chance": 5, "item": "alcohol", "x": 0, "y": 17 },
- { "chance": 5, "item": "alcohol", "x": 0, "y": 1 },
- { "chance": 25, "item": "jackets", "x": 6, "y": 11 },
- { "chance": 25, "item": "jackets", "x": 19, "y": 7 },
- { "chance": 25, "item": "jackets", "x": 2, "y": 7 },
- { "chance": 15, "item": "bags", "x": 15, "y": 9 },
- { "chance": 15, "item": "bags", "x": 4, "y": 5 },
- { "chance": 35, "item": "trash_cart", "x": 16, "y": 22 },
- { "chance": 35, "item": "trash_cart", "x": 8, "y": 22 },
- { "chance": 35, "item": "trash_cart", "x": 10, "y": 20 },
- { "chance": 35, "item": "trash_cart", "x": 6, "y": 20 },
- { "chance": 35, "item": "trash_cart", "x": 20, "y": 18 },
- { "chance": 35, "item": "trash_cart", "x": 7, "y": 17 },
- { "chance": 35, "item": "trash_cart", "x": 17, "y": 16 },
- { "chance": 35, "item": "trash_cart", "x": 1, "y": 15 },
- { "chance": 35, "item": "trash_cart", "x": 14, "y": 14 },
- { "chance": 35, "item": "trash_cart", "x": 20, "y": 13 },
- { "chance": 35, "item": "trash_cart", "x": 4, "y": 13 },
- { "chance": 35, "item": "trash_cart", "x": 17, "y": 12 },
- { "chance": 35, "item": "trash_cart", "x": 10, "y": 12 },
- { "chance": 35, "item": "trash_cart", "x": 13, "y": 11 },
- { "chance": 35, "item": "trash_cart", "x": 0, "y": 11 },
- { "chance": 35, "item": "trash_cart", "x": 19, "y": 10 },
- { "chance": 35, "item": "trash_cart", "x": 6, "y": 8 },
- { "chance": 35, "item": "trash_cart", "x": 16, "y": 7 },
- { "chance": 35, "item": "trash_cart", "x": 10, "y": 7 },
- { "chance": 35, "item": "trash_cart", "x": 14, "y": 5 },
- { "chance": 35, "item": "trash_cart", "x": 19, "y": 4 },
- { "chance": 35, "item": "trash_cart", "x": 9, "y": 4 },
- { "chance": 35, "item": "trash_cart", "x": 1, "y": 4 },
- { "chance": 35, "item": "trash_cart", "x": 12, "y": 3 },
- { "chance": 35, "item": "trash_cart", "x": 17, "y": 1 }
- ],
- "place_monsters": [ { "chance": 15, "density": 0.25, "monster": "GROUP_ZOMBIE", "x": 12, "y": 10 } ],
- "rows": [
- "||||||||||||||||||||||||",
- "#......................|",
- "#.#.#.#.#.#.#.#........D",
- "#.#.#.#.#.#.#.#........|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#........|",
- "#.#.#.#.#.#.#.#........|",
- "#......................|",
- "||||||||----.-----.....|",
- ".......................|",
- ".......................|",
- ".......................|",
- "||||||||||||||||||||||||"
- ],
- "terrain": { "#": "t_floor", "D": "t_door_c", "-": "t_railing_h", ".": "t_floor", "H": "t_floor", "|": "t_wall" }
- },
- "om_terrain": "movietheater_2_1",
- "type": "mapgen",
- "weight": 100
- },
- {
- "method": "json",
- "object": {
- "furniture": { "#": "f_chair", "-": "f_null", ".": "f_null", "H": "f_armchair", "|": "f_null" },
- "place_items": [
- { "chance": 5, "item": "alcohol", "x": 0, "y": 17 },
- { "chance": 5, "item": "alcohol", "x": 0, "y": 1 },
- { "chance": 25, "item": "jackets", "x": 6, "y": 11 },
- { "chance": 25, "item": "jackets", "x": 19, "y": 7 },
- { "chance": 25, "item": "jackets", "x": 2, "y": 7 },
- { "chance": 15, "item": "bags", "x": 15, "y": 9 },
- { "chance": 15, "item": "bags", "x": 4, "y": 5 },
- { "chance": 35, "item": "trash_cart", "x": 16, "y": 22 },
- { "chance": 35, "item": "trash_cart", "x": 8, "y": 22 },
- { "chance": 35, "item": "trash_cart", "x": 10, "y": 20 },
- { "chance": 35, "item": "trash_cart", "x": 6, "y": 20 },
- { "chance": 35, "item": "trash_cart", "x": 20, "y": 18 },
- { "chance": 35, "item": "trash_cart", "x": 7, "y": 17 },
- { "chance": 35, "item": "trash_cart", "x": 17, "y": 16 },
- { "chance": 35, "item": "trash_cart", "x": 1, "y": 15 },
- { "chance": 35, "item": "trash_cart", "x": 14, "y": 14 },
- { "chance": 35, "item": "trash_cart", "x": 20, "y": 13 },
- { "chance": 35, "item": "trash_cart", "x": 4, "y": 13 },
- { "chance": 35, "item": "trash_cart", "x": 17, "y": 12 },
- { "chance": 35, "item": "trash_cart", "x": 10, "y": 12 },
- { "chance": 35, "item": "trash_cart", "x": 13, "y": 11 },
- { "chance": 35, "item": "trash_cart", "x": 0, "y": 11 },
- { "chance": 35, "item": "trash_cart", "x": 19, "y": 10 },
- { "chance": 35, "item": "trash_cart", "x": 6, "y": 8 },
- { "chance": 35, "item": "trash_cart", "x": 16, "y": 7 },
- { "chance": 35, "item": "trash_cart", "x": 10, "y": 7 },
- { "chance": 35, "item": "trash_cart", "x": 14, "y": 5 },
- { "chance": 35, "item": "trash_cart", "x": 19, "y": 4 },
- { "chance": 35, "item": "trash_cart", "x": 9, "y": 4 },
- { "chance": 35, "item": "trash_cart", "x": 1, "y": 4 },
- { "chance": 35, "item": "trash_cart", "x": 12, "y": 3 },
- { "chance": 35, "item": "trash_cart", "x": 17, "y": 1 }
- ],
- "place_monsters": [ { "chance": 15, "density": 0.25, "monster": "GROUP_ZOMBIE", "x": 12, "y": 10 } ],
- "rows": [
- "||||||||||||||||||||||||",
- "#......................|",
- "#.#.#.#.#.#.#.#........D",
- "#.#.#.#.#.#.#.#........|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#..H.H...|",
- "#.#.#.#.#.#.#.#........|",
- "#.#.#.#.#.#.#.#........|",
- "#......................|",
- "||||||||----.-----.....|",
- ".......................|",
- ".......................|",
- ".......................|",
- "||||||||||||||||||||||||"
- ],
- "terrain": { "#": "t_floor", "D": "t_door_c", "-": "t_railing_h", ".": "t_floor", "H": "t_floor", "|": "t_wall" }
- },
- "om_terrain": "movietheater_2_2",
- "type": "mapgen",
- "weight": 100
+ "furniture": { "Y": "f_standing_tank", "6": "f_water_heater", "7": "f_roof_turbine_vent" },
+ "items": { "C": { "item": "snacks", "chance": 30, "repeat": [ 6, 12 ] } }
+ }
}
]
diff --git a/data/json/mapgen/nested/house_nested.json b/data/json/mapgen/nested/house_nested.json
index 5e15d1aa9634f..425fa09e0c10b 100644
--- a/data/json/mapgen/nested/house_nested.json
+++ b/data/json/mapgen/nested/house_nested.json
@@ -15,13 +15,7 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
"L": { "item": "bedroom", "chance": 20, "repeat": [ 1, 2 ] }
}
@@ -43,14 +37,9 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
+ "a": { "item": "unisex_coat_rack", "chance": 100, "repeat": [ 1, 2 ] },
"L": { "item": "bedroom", "chance": 20, "repeat": [ 1, 2 ] }
}
}
@@ -71,13 +60,7 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
"L": { "item": "bedroom", "chance": 20, "repeat": [ 1, 2 ] }
}
@@ -99,14 +82,9 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 30, "repeat": [ 1, 2 ] },
+ "a": { "item": "unisex_coat_rack", "chance": 100, "repeat": [ 1, 2 ] },
"L": { "item": "bedroom", "chance": 20, "repeat": [ 1, 2 ] }
}
}
@@ -127,15 +105,9 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
- "I": { "item": "bedroom", "chance": 40, "repeat": [ 1, 2 ] },
+ "I": { "item": "desks_bedroom_unisex", "chance": 40, "repeat": [ 1, 2 ] },
"L": { "item": "bedroom", "chance": 20, "repeat": [ 1, 2 ] }
}
}
@@ -156,15 +128,10 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
- "I": { "item": "bedroom", "chance": 40, "repeat": [ 1, 2 ] },
+ "I": { "item": "desks_bedroom_unisex", "chance": 40, "repeat": [ 1, 2 ] },
+ "a": { "item": "unisex_coat_rack", "chance": 100, "repeat": [ 1, 2 ] },
"L": { "item": "bedroom", "chance": 20, "repeat": [ 1, 2 ] }
}
}
@@ -185,15 +152,9 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
- "I": { "item": "bedroom", "chance": 40, "repeat": [ 1, 2 ] },
+ "I": { "item": "desks_bedroom_unisex", "chance": 40, "repeat": [ 1, 2 ] },
"L": { "item": "bedroom", "chance": 20, "repeat": [ 1, 2 ] }
}
}
@@ -214,19 +175,101 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
- "I": { "item": "bedroom", "chance": 40, "repeat": [ 1, 2 ] },
+ "I": { "item": "desks_bedroom_unisex", "chance": 40, "repeat": [ 1, 2 ] },
"L": { "item": "homebooks", "chance": 10, "repeat": [ 1, 2 ] }
}
}
},
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "compass direction indicates head of bed, works for rooms with corner doors.",
+ "nested_mapgen_id": "bedroom_4x4_adult_3_S",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " CR ",
+ "O ",
+ " EE ",
+ " EE "
+ ],
+ "palettes": [ "house_w_nest_palette" ],
+ "items": {
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
+ "E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
+ "R": { "item": "homebooks", "chance": 10, "repeat": [ 1, 2 ] }
+ }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "compass direction indicates head of bed, works for rooms with corner doors.",
+ "nested_mapgen_id": "bedroom_4x4_adult_3_N",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " EE ",
+ " EE ",
+ "O ",
+ " CR "
+ ],
+ "palettes": [ "house_w_nest_palette" ],
+ "items": {
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
+ "E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
+ "R": { "item": "homebooks", "chance": 10, "repeat": [ 1, 2 ] }
+ }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "compass direction indicates head of bed, works for rooms with corner doors.",
+ "nested_mapgen_id": "bedroom_4x4_adult_3_E",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " ",
+ "C EE",
+ "R EE",
+ " O "
+ ],
+ "palettes": [ "house_w_nest_palette" ],
+ "items": {
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
+ "E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
+ "R": { "item": "homebooks", "chance": 10, "repeat": [ 1, 2 ] }
+ }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "compass direction indicates head of bed, works for rooms with corner doors.",
+ "nested_mapgen_id": "bedroom_4x4_adult_3_W",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " ",
+ "EE C",
+ "EE R",
+ " O "
+ ],
+ "palettes": [ "house_w_nest_palette" ],
+ "items": {
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
+ "E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
+ "R": { "item": "homebooks", "chance": 10, "repeat": [ 1, 2 ] }
+ }
+ }
+ },
{
"type": "mapgen",
"method": "json",
@@ -244,15 +287,9 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
- "I": { "item": "bedroom", "chance": 40, "repeat": [ 1, 2 ] },
+ "I": { "item": "desks_bedroom_unisex", "chance": 40, "repeat": [ 1, 2 ] },
"L": { "item": "homebooks", "chance": 10, "repeat": [ 1, 2 ] }
}
}
@@ -274,15 +311,9 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
- "I": { "item": "bedroom", "chance": 40, "repeat": [ 1, 2 ] },
+ "I": { "item": "desks_bedroom_unisex", "chance": 40, "repeat": [ 1, 2 ] },
"L": { "item": "homebooks", "chance": 10, "repeat": [ 1, 2 ] }
}
}
@@ -304,15 +335,9 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
- "I": { "item": "bedroom", "chance": 40, "repeat": [ 1, 2 ] },
+ "I": { "item": "desks_bedroom_unisex", "chance": 40, "repeat": [ 1, 2 ] },
"L": { "item": "homebooks", "chance": 10, "repeat": [ 1, 2 ] }
}
}
@@ -334,15 +359,9 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
- "I": { "item": "bedroom", "chance": 40, "repeat": [ 1, 2 ] },
+ "I": { "item": "desks_bedroom_unisex", "chance": 40, "repeat": [ 1, 2 ] },
"L": { "item": "homebooks", "chance": 10, "repeat": [ 1, 2 ] }
}
}
@@ -364,15 +383,10 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
- "I": { "item": "bedroom", "chance": 40, "repeat": [ 1, 2 ] },
+ "I": { "item": "desks_bedroom_unisex", "chance": 40, "repeat": [ 1, 2 ] },
+ "a": { "item": "unisex_coat_rack", "chance": 100, "repeat": [ 1, 2 ] },
"L": { "item": "homebooks", "chance": 10, "repeat": [ 1, 2 ] }
}
}
@@ -394,15 +408,10 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
- "I": { "item": "bedroom", "chance": 40, "repeat": [ 1, 2 ] },
+ "I": { "item": "desks_bedroom_unisex", "chance": 40, "repeat": [ 1, 2 ] },
+ "a": { "item": "unisex_coat_rack", "chance": 100, "repeat": [ 1, 2 ] },
"L": { "item": "homebooks", "chance": 10, "repeat": [ 1, 2 ] }
}
}
@@ -424,15 +433,9 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
- "I": { "item": "bedroom", "chance": 40, "repeat": [ 1, 2 ] },
+ "I": { "item": "desks_bedroom_unisex", "chance": 40, "repeat": [ 1, 2 ] },
"L": { "item": "homebooks", "chance": 10, "repeat": [ 1, 2 ] },
"R": { "item": "homebooks", "chance": 30, "repeat": [ 1, 2 ] }
}
@@ -455,16 +458,11 @@
],
"palettes": [ "house_w_nest_palette" ],
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "dresser_mens", "chance": 50 }, { "item": "dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"E": { "item": "bed", "chance": 40, "repeat": [ 1, 2 ] },
- "I": { "item": "bedroom", "chance": 40, "repeat": [ 1, 2 ] },
+ "I": { "item": "desks_bedroom_unisex", "chance": 40, "repeat": [ 1, 2 ] },
"L": { "item": "homebooks", "chance": 10, "repeat": [ 1, 2 ] },
+ "a": { "item": "unisex_coat_rack", "chance": 100, "repeat": [ 1, 2 ] },
"R": { "item": "homebooks", "chance": 30, "repeat": [ 1, 2 ] }
}
}
@@ -674,12 +672,12 @@
"rows": [
"y@@@L",
" ",
- " LLL ",
+ " ppp ",
" ",
"aCLC "
],
"palettes": [ "house_w_nest_palette" ],
- "items": { "L": [ { "item": "livingroom", "chance": 30 } ] }
+ "items": { "p": [ { "item": "livingroom", "chance": 30 } ] }
}
},
{
@@ -691,14 +689,14 @@
"mapgensize": [ 5, 5 ],
"rotation": [ 0, 3 ],
"rows": [
- " CLCa",
+ " CpCa",
" ",
- " LLL ",
+ " ppp ",
" ",
"y@@@L"
],
"palettes": [ "house_w_nest_palette" ],
- "items": { "L": [ { "item": "livingroom", "chance": 30 } ] }
+ "items": { "p": [ { "item": "livingroom", "chance": 30 } ] }
}
},
{
@@ -711,13 +709,13 @@
"rotation": [ 0, 3 ],
"rows": [
"a L",
- "C L @",
- "L L @",
- "C L @",
+ "C p @",
+ "L p @",
+ "C p @",
" y"
],
"palettes": [ "house_w_nest_palette" ],
- "items": { "L": [ { "item": "livingroom", "chance": 30 } ] }
+ "items": { "p": [ { "item": "livingroom", "chance": 30 } ] }
}
},
{
@@ -730,13 +728,109 @@
"rotation": [ 0, 3 ],
"rows": [
"y a",
- "@ L C",
- "@ L L",
- "@ L C",
+ "@ p C",
+ "@ p L",
+ "@ p C",
"L y"
],
"palettes": [ "house_w_nest_palette" ],
- "items": { "L": [ { "item": "livingroom", "chance": 30 } ] }
+ "items": { "p": [ { "item": "livingroom", "chance": 30 } ] }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "compass direction indicates sofa orientation",
+ "nested_mapgen_id": "livingroom_5x5_N_2",
+ "object": {
+ "mapgensize": [ 5, 5 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " @@p ",
+ " R",
+ " pp R",
+ " ",
+ " xxx "
+ ],
+ "palettes": [ "house_w_nest_palette" ],
+ "place_loot": [
+ { "item": "television", "x": 2, "y": 4, "chance": 100 },
+ { "item": "stereo", "x": 1, "y": 4, "chance": 60 },
+ { "group": "consumer_electronics", "x": 3, "y": 4, "chance": 60, "repeat": [ 1, 4 ] }
+ ],
+ "items": { "p": [ { "item": "livingroom", "chance": 30 } ] }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "compass direction indicates sofa orientation",
+ "nested_mapgen_id": "livingroom_5x5_S_2",
+ "object": {
+ "mapgensize": [ 5, 5 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " xxx ",
+ " ",
+ "@ pp ",
+ "@ ",
+ " @@@ "
+ ],
+ "palettes": [ "house_w_nest_palette" ],
+ "place_loot": [
+ { "item": "television", "x": 2, "y": 0, "chance": 100 },
+ { "item": "stereo", "x": 1, "y": 0, "chance": 60 },
+ { "group": "consumer_electronics", "x": 3, "y": 0, "chance": 60, "repeat": [ 1, 4 ] }
+ ],
+ "items": { "p": [ { "item": "livingroom", "chance": 30 } ] }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "compass direction indicates sofa orientation",
+ "nested_mapgen_id": "livingroom_5x5_E_2",
+ "object": {
+ "mapgensize": [ 5, 5 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " C p",
+ "x p @",
+ "x p @",
+ "x @",
+ " "
+ ],
+ "palettes": [ "house_w_nest_palette" ],
+ "place_loot": [
+ { "item": "television", "x": 0, "y": 2, "chance": 100 },
+ { "item": "stereo", "x": 0, "y": 1, "chance": 60 },
+ { "group": "consumer_electronics", "x": 0, "y": 3, "chance": 60, "repeat": [ 1, 4 ] }
+ ],
+ "items": { "p": [ { "item": "livingroom", "chance": 30 } ] }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "compass direction indicates sofa orientation",
+ "nested_mapgen_id": "livingroom_5x5_W_2",
+ "object": {
+ "mapgensize": [ 5, 5 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " ",
+ "@ p x",
+ "@ p x",
+ "@ x",
+ " @@p "
+ ],
+ "palettes": [ "house_w_nest_palette" ],
+ "place_loot": [
+ { "item": "television", "x": 4, "y": 2, "chance": 100 },
+ { "item": "stereo", "x": 4, "y": 1, "chance": 60 },
+ { "group": "elecsto_persele", "x": 4, "y": 3, "chance": 60, "repeat": [ 1, 4 ] }
+ ],
+ "items": { "p": [ { "item": "livingroom", "chance": 30 } ] }
}
},
{
@@ -765,7 +859,7 @@
"rotation": [ 0, 3 ],
"rows": [
"C ",
- "RH"
+ "R "
],
"palettes": [ "house_w_nest_palette" ],
"items": { "R": [ { "item": "homebooks", "chance": 30 } ] }
@@ -930,10 +1024,10 @@
"rows": [
"@@@",
" ",
- "CLL"
+ "Cpp"
],
"palettes": [ "house_w_nest_palette" ],
- "items": { "L": [ { "item": "livingroom", "chance": 30 } ] }
+ "items": { "p": [ { "item": "livingroom", "chance": 30 } ] }
}
},
{
@@ -953,6 +1047,23 @@
"items": { "L": [ { "item": "livingroom", "chance": 30 } ] }
}
},
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "small furniture groupings for studies, workrooms, hobby rooms, etc",
+ "nested_mapgen_id": "bonus_room_3x3_E_5",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ "T @",
+ "T @",
+ "C @"
+ ],
+ "palettes": [ "house_w_nest_palette" ],
+ "items": { "L": [ { "item": "livingroom", "chance": 30 } ] }
+ }
+ },
{
"type": "mapgen",
"method": "json",
@@ -1122,5 +1233,318 @@
"palettes": [ "house_w_nest_palette" ],
"items": { "E": [ { "item": "bed", "chance": 30 } ], "L": [ { "item": "bedroom", "chance": 30 } ] }
}
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "a nested map for lawns",
+ "nested_mapgen_id": "greenhouse_6x6_herbal",
+ "object": {
+ "mapgensize": [ 6, 6 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " s ",
+ "BBCBB ",
+ "D4R4Dc",
+ "B5R2Bc",
+ "D2R3Dc",
+ "BBCBB "
+ ],
+ "palettes": [ "house_w_nest_garden_palette" ],
+ "terrain": { "s": "t_concrete" },
+ "place_items": [
+ { "item": "farming_tools", "x": 2, "y": [ 2, 4 ], "chance": 25, "repeat": [ 1, 3 ] },
+ { "item": "farming_seeds", "x": 2, "y": [ 2, 4 ], "chance": 25, "repeat": [ 1, 3 ] },
+ { "item": "flower_pots", "x": 5, "y": [ 2, 4 ], "chance": 55, "repeat": [ 1, 4 ] }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "a nested map for lawns",
+ "nested_mapgen_id": "greenhouse_6x6_vegetable",
+ "object": {
+ "mapgensize": [ 6, 6 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " s ",
+ "BBCBB ",
+ "D6R6Dc",
+ "B7R7Bc",
+ "D9R8Dc",
+ "BBCBB "
+ ],
+ "palettes": [ "house_w_nest_garden_palette" ],
+ "terrain": { "s": "t_concrete" },
+ "place_items": [
+ { "item": "farming_tools", "x": 2, "y": [ 2, 4 ], "chance": 25, "repeat": [ 1, 3 ] },
+ { "item": "farming_seeds", "x": 2, "y": [ 2, 4 ], "chance": 25, "repeat": [ 1, 3 ] },
+ { "item": "flower_pots", "x": 5, "y": [ 2, 4 ], "chance": 55, "repeat": [ 1, 4 ] }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "a nested map for lawns",
+ "nested_mapgen_id": "shed_6x6_junk",
+ "object": {
+ "mapgensize": [ 6, 6 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ "||++||",
+ "|O Q|",
+ "|z Q|",
+ "|zzSQ|",
+ "|SzzQ|",
+ "||||||"
+ ],
+ "palettes": [ "house_w_nest_palette" ],
+ "terrain": {
+ "|": "t_wall_metal",
+ "+": "t_door_metal_pickable",
+ " ": "t_thconc_floor",
+ "S": "t_thconc_floor",
+ "z": "t_thconc_floor",
+ "Q": "t_thconc_floor",
+ "O": "t_thconc_floor"
+ },
+ "place_items": [
+ { "item": "home_hw", "x": 4, "y": [ 1, 4 ], "chance": 25, "repeat": [ 1, 3 ] },
+ { "item": "allclothes", "x": 1, "y": 1, "chance": 25, "repeat": [ 1, 3 ] },
+ { "item": "livingroom", "x": 1, "y": [ 2, 3 ], "chance": 55, "repeat": [ 1, 4 ] },
+ { "item": "bedroom", "x": 2, "y": [ 3, 4 ], "chance": 55, "repeat": [ 1, 4 ] }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "a nested map for lawns",
+ "nested_mapgen_id": "shed_6x6_woodworker",
+ "object": {
+ "mapgensize": [ 6, 6 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ "||++||",
+ "|GF A|",
+ "|G C|",
+ "|G FD|",
+ "|GEEB|",
+ "||oo||"
+ ],
+ "terrain": {
+ "|": "t_wall_wood",
+ "+": "t_door_locked",
+ "o": "t_curtains",
+ " ": "t_thconc_floor",
+ "A": "t_thconc_floor",
+ "B": "t_thconc_floor",
+ "C": "t_thconc_floor",
+ "D": "t_thconc_floor",
+ "E": "t_thconc_floor",
+ "F": "t_thconc_floor",
+ "G": "t_thconc_floor"
+ },
+ "furniture": {
+ "A": [ "f_drill_press", "f_planer" ],
+ "B": [ "f_jointer", "f_router", "f_mitresaw" ],
+ "C": "f_tablesaw",
+ "D": "f_bandsaw",
+ "E": "f_workbench",
+ "F": "f_stool",
+ "G": "f_rack_wood"
+ },
+ "place_items": [
+ { "item": "home_hw", "x": [ 1, 3 ], "y": 4, "chance": 50, "repeat": [ 1, 3 ] },
+ { "item": "wood_workshop", "x": 1, "y": [ 1, 4 ], "chance": 70, "repeat": [ 1, 3 ] }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "a nested map for lawns",
+ "nested_mapgen_id": "pond_6x6",
+ "object": {
+ "mapgensize": [ 6, 6 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " N ",
+ " Kk ",
+ "kKkKK ",
+ "NKKK ",
+ " Kcc ",
+ " cZ "
+ ],
+ "palettes": [ "house_w_nest_garden_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "a nested map for lawns",
+ "nested_mapgen_id": "playset_4x4_1",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ "GG c",
+ "GG c",
+ " II",
+ "N II"
+ ],
+ "palettes": [ "house_w_nest_garden_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "a nested map for lawns",
+ "nested_mapgen_id": "playset_4x4_2",
+ "object": {
+ "mapgensize": [ 4, 4 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ "H ",
+ "H I",
+ "G I",
+ " ccI"
+ ],
+ "palettes": [ "house_w_nest_garden_palette" ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "a nested map for lawns",
+ "nested_mapgen_id": "firepit_5x5_1",
+ "object": {
+ "mapgensize": [ 5, 5 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " ccc ",
+ " ",
+ " i ",
+ " ",
+ " ccc "
+ ],
+ "palettes": [ "house_w_nest_garden_palette" ],
+ "place_items": [ { "item": "stash_wood", "x": 1, "y": 2, "chance": 100, "repeat": [ 2, 10 ] } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "a nested map for lawns",
+ "nested_mapgen_id": "firepit_5x5_2",
+ "object": {
+ "mapgensize": [ 5, 5 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " ",
+ "S S",
+ "S i S",
+ "S ",
+ " "
+ ],
+ "palettes": [ "house_w_nest_garden_palette" ],
+ "place_items": [ { "item": "stash_wood", "x": 2, "y": 1, "chance": 100, "repeat": [ 2, 10 ] } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "a nested map for lawns",
+ "nested_mapgen_id": "reflecting_pool_5x5_1",
+ "object": {
+ "mapgensize": [ 5, 5 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " ",
+ " MMM ",
+ " fMf ",
+ " MMM ",
+ " "
+ ],
+ "palettes": [ "house_w_nest_garden_palette" ],
+ "terrain": { " ": "t_concrete", "f": "t_concrete" }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "a nested map for lawns",
+ "nested_mapgen_id": "reflecting_pool_5x5_2",
+ "object": {
+ "mapgensize": [ 5, 5 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ " ",
+ " MMM ",
+ " MZM ",
+ " MMM ",
+ " "
+ ],
+ "palettes": [ "house_w_nest_garden_palette" ],
+ "terrain": { " ": "t_concrete" }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "a nested map for lawns",
+ "nested_mapgen_id": "garden_3x3_1",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ "PPP",
+ "PPP",
+ "PPP"
+ ],
+ "palettes": [ "house_w_nest_garden_palette" ],
+ "place_items": [
+ { "item": "farming_tools", "x": [ 0, 2 ], "y": [ 0, 2 ], "chance": 5, "repeat": [ 1, 3 ] },
+ { "item": "farming_seeds", "x": [ 0, 2 ], "y": [ 0, 2 ], "chance": 75, "repeat": [ 1, 3 ] }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "a nested map for lawns",
+ "nested_mapgen_id": "garden_3x3_2",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ "111",
+ " ",
+ "111"
+ ],
+ "palettes": [ "house_w_nest_garden_palette" ],
+ "place_items": [
+ { "item": "farming_tools", "x": [ 0, 2 ], "y": [ 0, 2 ], "chance": 5, "repeat": [ 1, 3 ] },
+ { "item": "farming_seeds", "x": [ 0, 2 ], "y": [ 0, 2 ], "chance": 75, "repeat": [ 1, 3 ] }
+ ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "//": "a nested map for lawns",
+ "nested_mapgen_id": "garden_3x3_3",
+ "object": {
+ "mapgensize": [ 3, 3 ],
+ "rotation": [ 0, 3 ],
+ "rows": [
+ "111",
+ "1Z1",
+ "111"
+ ],
+ "palettes": [ "house_w_nest_garden_palette" ]
+ }
}
]
diff --git a/data/json/mapgen/outpost.json b/data/json/mapgen/outpost.json
index 8fb96a893273a..ae48f395fd14d 100644
--- a/data/json/mapgen/outpost.json
+++ b/data/json/mapgen/outpost.json
@@ -95,13 +95,13 @@
"toilets": { "&": { } },
"place_monster": [
{ "monster": "mon_crows_m240", "x": 10, "y": 1 },
- { "monster": "mon_laserturret", "x": 13, "y": 1 },
+ { "monster": "mon_turret_bmg", "x": 13, "y": 1 },
{ "monster": "mon_crows_m240", "x": 1, "y": 10 },
- { "monster": "mon_laserturret", "x": 1, "y": 13 },
+ { "monster": "mon_turret_bmg", "x": 1, "y": 13 },
{ "monster": "mon_crows_m240", "x": 22, "y": 10 },
- { "monster": "mon_laserturret", "x": 22, "y": 13 },
+ { "monster": "mon_turret_bmg", "x": 22, "y": 13 },
{ "monster": "mon_crows_m240", "x": 10, "y": 22 },
- { "monster": "mon_laserturret", "x": 13, "y": 22 },
+ { "monster": "mon_turret_bmg", "x": 13, "y": 22 },
{ "monster": "mon_turret_searchlight", "x": 1, "y": 1 },
{ "monster": "mon_turret_searchlight", "x": 22, "y": 22 },
{ "monster": "mon_turret_searchlight", "x": 1, "y": 22 },
@@ -113,7 +113,7 @@
{ "monster": "mon_zombie_bio_op", "chance": 1 },
{ "monster": "mon_dispatch", "chance": 1 },
{ "monster": "mon_dispatch_military", "chance": 1 },
- { "monster": "mon_talon_m202a1", "chance": 1 },
+ { "monster": "mon_secubot", "chance": 5 },
{ "monster": "mon_zombie_flamer", "chance": 1 }
]
}
@@ -221,13 +221,13 @@
"toilets": { "&": { } },
"place_monster": [
{ "monster": "mon_crows_m240", "x": 10, "y": 1 },
- { "monster": "mon_laserturret", "x": 13, "y": 1 },
+ { "monster": "mon_turret_bmg", "x": 13, "y": 1 },
{ "monster": "mon_crows_m240", "x": 1, "y": 10 },
- { "monster": "mon_laserturret", "x": 1, "y": 13 },
+ { "monster": "mon_turret_bmg", "x": 1, "y": 13 },
{ "monster": "mon_crows_m240", "x": 22, "y": 10 },
- { "monster": "mon_laserturret", "x": 22, "y": 13 },
+ { "monster": "mon_turret_bmg", "x": 22, "y": 13 },
{ "monster": "mon_crows_m240", "x": 10, "y": 22 },
- { "monster": "mon_laserturret", "x": 13, "y": 22 },
+ { "monster": "mon_turret_bmg", "x": 13, "y": 22 },
{ "monster": "mon_turret_searchlight", "x": 1, "y": 1 },
{ "monster": "mon_turret_searchlight", "x": 22, "y": 22 },
{ "monster": "mon_turret_searchlight", "x": 1, "y": 22 },
@@ -239,7 +239,7 @@
{ "monster": "mon_zombie_bio_op", "chance": 1 },
{ "monster": "mon_dispatch", "chance": 1 },
{ "monster": "mon_dispatch_military", "chance": 1 },
- { "monster": "mon_talon_m202a1", "chance": 1 },
+ { "monster": "mon_secubot", "chance": 5 },
{ "monster": "mon_zombie_flamer", "chance": 1 }
]
}
diff --git a/data/json/mapgen/pharmacy.json b/data/json/mapgen/pharmacy.json
index f0fc6c585d9b1..f6b4bc86c3a56 100644
--- a/data/json/mapgen/pharmacy.json
+++ b/data/json/mapgen/pharmacy.json
@@ -10,19 +10,19 @@
"________________________",
"________________________",
"|--OOOO----**----OOOO--|",
- "|} #................y|",
- "|} #..{}...{}...{}...|",
- "|} #..{}...{}...{}...|",
- "|} h#..{}...{}...{}...|",
- "|} #..{}...{}...{}...|",
- "| #..{}...{}...{}...|",
- "| ####..{}...{}...{}...|",
+ "|8 #................y|",
+ "|8 #..12...23...35...|",
+ "|8 #..12...23...35...|",
+ "|8 h#..12...23...35...|",
+ "|8 #..12...23...35...|",
+ "| #..12...23...35...|",
+ "| ####..12...23...35...|",
"|......................|",
- "|f......}}}}}}}}}}}}...|",
- "|f......}}}}}}}}}}}}...|",
+ "|f......666666666666...|",
+ "|f......666666666666...|",
"|f.....................|",
- "|f......}}}}}}}}}}}}...|",
- "|f......}}}}}}}}}}}}...|",
+ "|f......777777777777...|",
+ "|f......999999999999...|",
"|y.....................|",
"|..................ffff|",
"|*!!!!!!!!!------------|",
@@ -48,8 +48,14 @@
},
"furniture": {
"%": "f_sink",
- "{": "f_rack",
- "}": "f_rack",
+ "1": "f_rack",
+ "2": "f_rack",
+ "3": "f_rack",
+ "5": "f_rack",
+ "6": "f_rack",
+ "7": "f_rack",
+ "8": "f_rack",
+ "9": "f_rack",
"h": "f_chair",
"f": "f_glass_fridge",
"L": "f_glass_cabinet",
@@ -57,19 +63,19 @@
"y": [ "f_indoor_plant_y", "f_indoor_plant" ]
},
"toilets": { "&": { } },
- "place_loot": [
- { "group": "drugs_pharmacy", "x": [ 12, 19 ], "y": 19, "chance": 70, "repeat": [ 1, 2 ] },
- { "group": "drugs_pharmacy", "x": [ 12, 19 ], "y": 21, "chance": 70, "repeat": [ 1, 2 ] },
- { "group": "drugs_pharmacy", "x": [ 1, 10 ], "y": 21, "chance": 70, "repeat": [ 1, 2 ] },
- { "group": "behindcounter", "x": 1, "y": [ 2, 6 ], "chance": 70, "repeat": [ 1, 2 ] },
- { "group": "fridgesnacks", "x": 1, "y": [ 11, 15 ], "chance": 70, "repeat": [ 1, 2 ] },
- { "group": "fridgesnacks", "x": [ 19, 22 ], "y": 17, "chance": 70, "repeat": [ 1, 2 ] },
- { "group": "snacks", "x": [ 8, 9 ], "y": [ 4, 9 ], "chance": 70, "repeat": [ 1, 3 ] },
- { "group": "magazines", "x": [ 13, 14 ], "y": [ 4, 9 ], "chance": 70, "repeat": [ 1, 3 ] },
- { "group": "cleaning", "x": [ 18, 19 ], "y": [ 4, 9 ], "chance": 70, "repeat": [ 1, 3 ] },
- { "group": "softdrugs", "x": [ 8, 19 ], "y": [ 11, 12 ], "chance": 70, "repeat": [ 1, 3 ] },
- { "group": "softdrugs", "x": [ 8, 19 ], "y": [ 14, 15 ], "chance": 70, "repeat": [ 1, 3 ] }
- ],
+ "items": {
+ "#": [ { "item": "magazines", "chance": 10 } ],
+ "f": { "item": "fridgesnacks", "chance": 20, "repeat": [ 1, 3 ] },
+ "1": { "item": "magazines", "chance": 20, "repeat": [ 1, 3 ] },
+ "2": { "item": "snacks", "chance": 20, "repeat": [ 1, 3 ] },
+ "3": { "item": "tools_home", "chance": 20, "repeat": [ 1, 3 ] },
+ "5": { "item": "beauty", "chance": 20, "repeat": [ 1, 3 ] },
+ "6": { "item": "vitamin_shop", "chance": 20, "repeat": [ 1, 3 ] },
+ "7": { "item": "cleaning", "chance": 20, "repeat": [ 1, 3 ] },
+ "8": { "item": "behindcounter", "chance": 20, "repeat": [ 1, 3 ] },
+ "9": { "item": "pet_food", "chance": 20, "repeat": [ 1, 3 ] },
+ "L": { "item": "drugs_pharmacy", "chance": 30, "repeat": [ 1, 3 ] }
+ },
"vehicles": { ".": { "vehicle": "shopping_cart", "chance": 1, "status": 1 } },
"place_monsters": [ { "monster": "GROUP_PHARM", "x": [ 2, 7 ], "y": [ 10, 17 ], "chance": 2 } ]
}
@@ -147,16 +153,16 @@
"________________________",
"________________________",
"|--OOOO--|______________",
- "|l +______________",
+ "|m +______________",
"|l +______________",
"| |--OOO---OOO--|",
"|#### |",
- "| # rr rrrrrrr f|",
- "|r # rr rrrrrrr f|",
- "|r # rr f|",
- "|r # rr rrrrrrr f|",
- "|r # rr rrrrrrr f|",
- "|r # b|",
+ "| # 12 5555555 f|",
+ "|8 # 12 6666666 f|",
+ "|8 # 12 f|",
+ "|8 # 12 7777777 f|",
+ "|8 # 12 3339999 f|",
+ "|7 # b|",
"| # b|",
"| bby| |ybb|",
"|--+---+------%%%%%----|",
@@ -194,24 +200,36 @@
"c": "f_chair",
"f": "f_glass_fridge",
"l": "f_vending_c",
- "r": "f_rack",
+ "1": "f_rack",
+ "2": "f_rack",
+ "3": "f_rack",
+ "5": "f_rack",
+ "6": "f_rack",
+ "7": "f_rack",
+ "8": "f_rack",
+ "9": "f_rack",
"S": "f_sink",
"y": [ "f_indoor_plant_y", "f_indoor_plant" ],
"x": "f_glass_cabinet"
},
"toilets": { "T": { } },
- "place_loot": [
- { "group": "drugs_pharmacy", "x": [ 10, 22 ], "y": [ 19, 19 ], "chance": 70, "repeat": [ 2, 6 ] },
- { "group": "behindcounter", "x": [ 1, 3 ], "y": [ 7, 12 ], "chance": 50 },
- { "group": "behindcounter", "x": [ 1, 1 ], "y": [ 8, 11 ], "chance": 70 },
- { "group": "vending_drink", "x": [ 1, 1 ], "y": [ 3, 4 ], "chance": 80, "repeat": [ 1, 1 ] },
- { "group": "softdrugs", "x": [ 9, 10 ], "y": [ 7, 11 ], "chance": 40, "repeat": [ 1, 3 ] },
- { "group": "snacks", "x": [ 13, 19 ], "y": [ 7, 8 ], "chance": 70, "repeat": [ 1, 2 ] },
- { "group": "magazines", "x": [ 13, 19 ], "y": [ 10, 11 ], "chance": 70, "repeat": [ 1, 2 ] },
- { "group": "fridgesnacks", "x": [ 22, 22 ], "y": [ 7, 11 ], "chance": 70, "repeat": [ 1, 3 ] },
- { "group": "jackets", "x": 8, "y": [ 16, 17 ], "chance": 70, "repeat": [ 1, 2 ] },
- { "group": "cleaning", "x": 8, "y": [ 16, 17 ], "chance": 70, "repeat": [ 1, 2 ] }
- ]
+ "vendingmachines": { "l": { "item_group": "vending_drink" }, "m": { "item_group": "vending_food" } },
+ "items": {
+ "#": [ { "item": "snacks", "chance": 10 } ],
+ "f": { "item": "fridgesnacks", "chance": 20, "repeat": [ 1, 3 ] },
+ "1": { "item": "magazines", "chance": 20, "repeat": [ 1, 3 ] },
+ "2": { "item": "snacks", "chance": 20, "repeat": [ 1, 3 ] },
+ "3": { "item": "tools_home", "chance": 20, "repeat": [ 1, 3 ] },
+ "5": { "item": "beauty", "chance": 20, "repeat": [ 1, 3 ] },
+ "6": { "item": "vitamin_shop", "chance": 20, "repeat": [ 1, 3 ] },
+ "7": { "item": "cleaning", "chance": 20, "repeat": [ 1, 3 ] },
+ "8": { "item": "behindcounter", "chance": 20, "repeat": [ 1, 3 ] },
+ "9": { "item": "pet_food", "chance": 20, "repeat": [ 1, 3 ] },
+ "x": { "item": "drugs_pharmacy", "chance": 30, "repeat": [ 1, 3 ] },
+ "&": { "item": "jackets", "chance": 30 },
+ "G": { "item": "behindcounter", "chance": 30 },
+ "S": { "item": "softdrugs", "chance": 30 }
+ }
}
},
{
diff --git a/data/json/mapgen/pool.json b/data/json/mapgen/pool.json
index ac61fde66cee5..15282174d1925 100644
--- a/data/json/mapgen/pool.json
+++ b/data/json/mapgen/pool.json
@@ -40,7 +40,7 @@
{ "chance": 15, "item": "magazines", "x": 6, "y": 2 }
],
"place_toilets": [ { "x": 3, "y": 20 }, { "x": 20, "y": 20 } ],
- "place_monsters": [ { "monster": "GROUP_MAPGEN_POOL", "x": [ 6, 17 ], "y": [ 6, 15 ], "repeat": [ 1, 5 ] } ],
+ "place_monsters": [ { "monster": "GROUP_MAPGEN_POOL", "x": [ 6, 17 ], "y": [ 6, 15 ], "repeat": [ 1, 3 ] } ],
"rows": [
"sssssssssssssssssssssss_",
"_||||||||||++||||||||||_",
@@ -297,6 +297,7 @@
{ "chance": 10, "repeat": [ 1, 2 ], "item": "magazines", "x": 2, "y": 17 }
],
"place_toilets": [ { "x": 6, "y": 3 }, { "x": 8, "y": 3 }, { "x": 15, "y": 3 }, { "x": 17, "y": 3 } ],
+ "place_monsters": [ { "monster": "GROUP_MAPGEN_POOL", "x": [ 5, 18 ], "y": [ 5, 18 ], "repeat": [ 1, 3 ] } ],
"rows": [
"ssssssssssssssssssssssss",
"ssssssssssssssssssssssss",
@@ -473,6 +474,7 @@
"{": "t_floor",
"|": "t_brick_wall"
},
+ "place_monsters": [ { "monster": "GROUP_MAPGEN_POOL", "x": [ 5, 18 ], "y": [ 5, 18 ], "repeat": [ 1, 3 ] } ],
"place_signs": [ { "signage": "Women", "x": 9, "y": 19 }, { "signage": "Men", "x": 14, "y": 19 } ]
},
"om_terrain": "pool_3",
@@ -690,7 +692,7 @@
"s": "t_sidewalk"
},
"furniture": { "n": "f_dive_block" },
- "place_monsters": [ { "monster": "GROUP_MAPGEN_POOL", "x": [ 5, 18 ], "y": [ 5, 18 ], "repeat": [ 1, 6 ] } ]
+ "place_monsters": [ { "monster": "GROUP_MAPGEN_POOL", "x": [ 5, 18 ], "y": [ 5, 18 ], "repeat": [ 1, 3 ] } ]
}
},
{
@@ -741,13 +743,13 @@
"n": "f_dive_block",
"x": [ "f_datura", "f_bluebell", "f_mutpoppy", "f_dahlia", "f_flower_tulip", "f_chamomile", "f_flower_spurge", "f_lily" ]
},
- "place_monsters": [ { "monster": "GROUP_MAPGEN_POOL", "x": [ 5, 18 ], "y": [ 5, 18 ], "repeat": [ 2, 7 ] } ]
+ "place_monsters": [ { "monster": "GROUP_MAPGEN_POOL", "x": [ 5, 18 ], "y": [ 5, 18 ], "repeat": [ 1, 3 ] } ]
}
},
{
"name": "GROUP_MAPGEN_POOL",
"type": "monstergroup",
"default": "mon_null",
- "monsters": [ { "monster": "mon_zombie_swimmer", "freq": 450, "cost_multiplier": 0 } ]
+ "monsters": [ { "monster": "mon_zombie_swimmer", "freq": 300, "cost_multiplier": 0 } ]
}
]
diff --git a/data/json/mapgen/prison_1.json b/data/json/mapgen/prison_1.json
index 775ffe348f7b3..50f4595fb32a2 100644
--- a/data/json/mapgen/prison_1.json
+++ b/data/json/mapgen/prison_1.json
@@ -293,14 +293,14 @@
"````~~~~~~~~~ ** ^^^ F___(__((((((((__(___F $Y,,,,,?,,,,,?,,111$ $I,,,+,,,$A,,t,,,,o$,,,$$000$ **^^^)~~~````",
"```~~~~~~~~~~ ***** ^^^^ F___(__(______(__(___F $$$$$$$$,,,,,$$$$$$$ wC,hd$,,,$A,,t,,,,o$,,,$$,,0$**^^^)~~~~````",
"``~~~~~~~~~~ ********^^^ F___(__(______(__(___F $o,,,,1$,,,,,$S,=,T$ $$$$$$,,,$A,,,,,,,J$,,,+G,,0$*^^^)~~~~~````",
- "```~~~~~~~~~ **********^^^F____(_(______(_(____F gdd,,,,?,,,,,$,,$$$$ $I,,,+,,,$$$$$+$$$$$,,,$$,,0$*^^^)~~~~~````",
- "````~~~~~~~~~ ** ****^^^F_____(________(_____F $h,,,,Y$,,,,,=,,=,T$ wC,hd$,,,,,,,,,,,,,,,,,$$000$*^^^)~~~~~````",
- "```~~~~~~~~~~ * ****** ^^^F______((((((((______F $$$$$$$$$$+$$$$$$$$$ $$$$$$$$$$$$$$+$$$$$$$$$$$$$$**^^)~~~~~~```",
+ "```~~~~~~~~~ ***'******^^^F____(_(______(_(____F gdd,,,,?,,,,,$,,$$$$ $I,,,+,,,$$$$$+$$$$$,,,$$,,0$*^^^)~~~~~````",
+ "````~~~~~~~~~ **'' ****^^^F_____(________(_____F $h,,,,Y$,,,,,=,,=,T$ wC,hd$,,,,,,,,,,,,,,,,,$$000$*^^^)~~~~~````",
+ "```~~~~~~~~~~ ''****** ^^^F______((((((((______F $$$$$$$$$$+$$$$$$$$$ $$$$$$$$$$$$$$+$$$$$$$$$$$$$$**^^)~~~~~~```",
"```~~~~~~~~ *** ^^^FffffffffffHfffffffffF^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*^^)~~~~~~```",
"```~~~~~~~~ **|-----|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|-----|^*^^)~~~~~~~``",
- "````~~~~~~~~ **'|>,,,,|%%%%%%%%%%V%%%%%%%%%%V%%%%%%%%%%V%%%%%%%%%%V%%%%%%%%%%V%%%%%%%%^^^%%V%%%%|,,,,>|^*^^)))))~~```",
- "``~~~~~~~~~~ **''|,,,,,+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''%^^^H''''''+,,,,,|^**^^^^^)~~~``",
- "```~~~~~~~~ *''|,,,,,|ffffffffffVffffffffffVffffffffffVffffffffffVffffffffffVffffffffHHHffVffff|,,,,,|^^**^^^^) ~~``",
+ "````~~~~~~~~ ** |>,,,,|%%%%%%%%%%V%%%%%%%%%%V%%%%%%%%%%V%%%%%%%%%%V%%%%%%%%%%V%%%%%%%%^^^%%V%%%%|,,,,>|^*^^)))))~~```",
+ "``~~~~~~~~~~ ** |,,,,,+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''%^^^H''''''+,,,,,|^**^^^^^)~~~``",
+ "```~~~~~~~~ * |,,,,,|ffffffffffVffffffffffVffffffffffVffffffffffVffffffffffVffffffffHHHffVffff|,,,,,|^^**^^^^) ~~``",
"```~~~~~~~~ ***|--+--| ^^^ |--+--|^^****^^) ~~~`",
"``~~~~~~~~ * %'F ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ F'% *^^****^^) ~~`",
"```~~~~~~~ ** %'F |--------------------|--|------------|GB|-------------|--gg--|-g+g-|-gg-| F'% *^^****^^) ~~`",
@@ -326,9 +326,9 @@
"`````~~~~~~~~~ * %'F |6,,,6,,,6|,,|,,,,,,P|,,|----|-----|----|----|,,,,,|----|----|,,,,,|----| F'% ~~~~```",
"````~~~~~~~~~~ ** %'F |6,,,6,,,6|,,|M,,,,,N|,,|^^^^^^^^^^^^^^^|T,,,B,,,,,B,,,T|T,,,B,,,,,B,,,T| F'% ~~~~````",
"````~~~~~~~~~ * %'F |---------|,,|,,,,,,N|,,+^^^^^^^^^^^^^^^|bb,,G,,,,,G,,bb|bb,,G,,,,,G,,bb| F'% ~~~~````",
- "```~~~~~~~~~~ ** %'F |DDDDD,rr,B,,|-------|+-|^^^^E^^888^^K^^|----|,,,,,|----|----|,,,,,|----| F'% ~~~~````",
+ "```~~~~~~~~~~ ** %'F |DDDDD,yy,B,,|-------|+-|^^^^E^^888^^K^^|----|,,,,,|----|----|,,,,,|----| F'% ~~~~````",
"``````~~~~~~ *** %'F |,,,,,,,,,G,,|U|U|U|U|,,|^^^^^^^^^^^^^^^|T,,,B,,,,,B,,,T|T,,,B,,,,,B,,,T| F'% ~~~`````",
- "```~~~~~~~~ ** V'V |WWWWW,rr,B,,|H|H|H|H|,,|^^^^E^^888^^E^^|bb,,G,,,,,G,,bb|bb,,G,,,,,G,,bb| V'V ~~~~````",
+ "```~~~~~~~~ ** V'V |WWWWW,yy,B,,|H|H|H|H|,,|^^^^E^^888^^E^^|bb,,G,,,,,G,,bb|bb,,G,,,,,G,,bb| V'V ~~~~````",
"`````~~~~~ ** %'F |---------|--|,,,,,,,,,,|^^^^^^^^^^^^^^^|----|,,,,,|----|----|,,,,,|----| F'% ~~~~`````",
"```~~~~~~ ** %'F F::;;;:::::::H,,,,,,,,,h|^^^^E^^888^^E^^|T,,,B,,,,,B,,,T|T,,,B,,,,,B,,,T| F'% ~~~~~`````",
"```~~~~~~ ***** %'F F::::::::::::|ScRRRQQQdd|^^^^^^^^^^^^^^^|bb,,G,,,,,G,,bb|bb,,G,,,,,G,,bb| F'% ~~~~~`````",
@@ -458,7 +458,7 @@
"U": { "monster": "mon_dog_gshepherd", "chance": 10 },
":": { "monster": "mon_dog_gshepherd", "chance": 1 }
},
- "place_graffiti": [ { "text": "Dufresne was here", "x": 18, "y": 28 } ]
+ "place_graffiti": [ { "text": "Dufresne was here", "x": 19, "y": 22 } ]
}
},
{
diff --git a/data/json/mapgen/railroad/railroad_station.json b/data/json/mapgen/railroad/railroad_station.json
index 02f2c8fc9ff4a..da16e84fd5b80 100644
--- a/data/json/mapgen/railroad/railroad_station.json
+++ b/data/json/mapgen/railroad/railroad_station.json
@@ -109,6 +109,16 @@
" ^X^^^X^ ^X^^^X^ #######$$.......::.......$$ "
],
"palettes": [ "railroad", "railroad_station" ],
+ "place_monsters": [
+ { "monster": "GROUP_ZOMBIE", "x": [ 25, 46 ], "y": [ 1, 22 ], "repeat": [ 0, 1 ], "density": 1 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 49, 70 ], "y": [ 1, 22 ], "repeat": [ 0, 1 ], "density": 1 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 1, 22 ], "y": [ 25, 46 ], "repeat": [ 0, 1 ], "density": 1 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 25, 46 ], "y": [ 25, 46 ], "repeat": [ 0, 1 ], "density": 1 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 1, 22 ], "y": [ 49, 70 ], "repeat": [ 0, 1 ], "density": 1 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 49, 70 ], "y": [ 49, 70 ], "repeat": [ 0, 1 ], "density": 1 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 25, 46 ], "y": [ 73, 94 ], "repeat": [ 0, 1 ], "density": 1 },
+ { "monster": "GROUP_ZOMBIE", "x": [ 49, 70 ], "y": [ 73, 94 ], "repeat": [ 0, 1 ], "density": 1 }
+ ],
"vendingmachines": {
"6": { "item_group": "vending_drink" },
"7": { "item_group": "vending_food" },
diff --git a/data/json/mapgen/robofachq_static.json b/data/json/mapgen/robofachq_static.json
index 5b7e602ba833a..055c1c9b74b10 100644
--- a/data/json/mapgen/robofachq_static.json
+++ b/data/json/mapgen/robofachq_static.json
@@ -53,20 +53,20 @@
",,|,____________________sssssssssssssssssssssssssssssssss___________,U,,,,,,,,,,,,,,,,,,,,,,,|,,",
",,|,____________________ss,,,,,,,,ss,,,,,,,,,,,,,,,,,,,,,___________,U,,,,,,,,,,,,,,,,,,,,,,,|,,",
",,|,____________________ss,|((((||22||||||||||||(((((||||___________|||,,,,,,,,,,,,,,,,,,,,,,|,,",
- ",,|,____________________ss,| |d h |;i| B||||___________|||,,,,,,,,,,,,,,,,,,,,,,|,,",
- ",,|,____________________ss,|? (dh | | dh B||||55555555555|||,,,,,,,,,,,,,,,,,,,,,,|,,",
- ",,|,____________________ss,|? t (dd66d ||2|hd | |,,,,,,,,,,,,,,,,,,,,,,|,,",
- ",,|,__________yyyyyyyyyyss,|? t ||((((22| |(((([| |,,,,,,,,,,,,,,,,,,,,,,|,,",
- ",,|,____________________ss,|? 2 YY 5 |,,,,,,,,,,,,,,,,,,,,,,|,,",
- ",,|,____________________ss,|^a a 2 5 |,,,,,,,,,,,,,,,,,,,,,,|,,",
- ",,|,____________________ss,|||||||||||||55GI||||55|||| |,,,,,,,,,,,,,,,,,,,,,,|,,",
- ",,|,____________________ss,|hhhhhhhhh| | | |; | |,,,,,,,,,,,,,,,,,,,,,,|,,",
- ",,|,__________yyyyyyyyyyss,| 2 | | 2 i| |,,,,,,,,,,,,,,,,,,,,,,|,,",
- ",,|,____________________ss,| lllllll | ||||55|||| |,,,,,,,,,,,,,,,,,,,,,,|,,",
- ",,|,____________________ss,|2|||||||2|eeeeee(d d( |,,,,,,,,,,,,,,,,,,,,,,|,,",
- ",,|,____________________ss,| 2~|~2 |eeeeee(6h 66 h6( |,,,,,,,,,,,,,,,,,,,,,,|,,",
- ",,|,____________________ss,|i ||||| i|Eeeeee(d 66 d( |,,,,,,,,,,,,,,,,,,,,,,|,,",
- ",,|,__________yyyyyyyyyyss,|i 2~|~2 i|eeeeee| | |,,,,,,,,,,,,,,,,,,,,,,|,,",
+ ",,|,____________________ss,| |d h |;i| B||||55555555555|||,,,,,,,,,,,,,,,,,,,,,,|,,",
+ ",,|,____________________ss,|? (dh | | dh B||||eeeeeeeeeee|||,,,,,,,,,,,,,,,,,,,,,,|,,",
+ ",,|,____________________ss,|? t (dd66d ||2|hd | eeeeeeeeeee |,,,,,,,,,,,,,,,,,,,,,,|,,",
+ ",,|,__________yyyyyyyyyyss,|? t ||((((22| |(((([| eeeeeeeeeee |,,,,,,,,,,,,,,,,,,,,,,|,,",
+ ",,|,____________________ss,|? 2 YY 5 eeeeeeeeeee |,,,,,,,,,,,,,,,,,,,,,,|,,",
+ ",,|,____________________ss,|^a a 2 5 eeeeeeeeeee |,,,,,,,,,,,,,,,,,,,,,,|,,",
+ ",,|,____________________ss,|||||||||||||55GI||||55|||| eeeeeeeeeee |,,,,,,,,,,,,,,,,,,,,,,|,,",
+ ",,|,____________________ss,|hhhhhhhhh| | | |; | eeeeeeeeeee. |,,,,,,,,,,,,,,,,,,,,,,|,,",
+ ",,|,__________yyyyyyyyyyss,| 2 | | 2 i| eeeeeeeeeee |,,,,,,,,,,,,,,,,,,,,,,|,,",
+ ",,|,____________________ss,| lllllll | ||||55|||| eeeeeeeeeee |,,,,,,,,,,,,,,,,,,,,,,|,,",
+ ",,|,____________________ss,|2|||||||2|Eeeeee(d d( eeeeeeeeeee |,,,,,,,,,,,,,,,,,,,,,,|,,",
+ ",,|,____________________ss,| 2~|~2 |eeeeee(6h 66 h6( eeeeeeeeeee |,,,,,,,,,,,,,,,,,,,,,,|,,",
+ ",,|,____________________ss,|i ||||| i|eeeeee(d 66 d( eeeeeeeeeee |,,,,,,,,,,,,,,,,,,,,,,|,,",
+ ",,|,__________yyyyyyyyyyss,|i 2~|~2 i|Eeeeee| | eeeeeeeeeee |,,,,,,,,,,,,,,,,,,,,,,|,,",
",,|,__________ssssssssssss,||||||||||||||||||||||||||||||||||||||||||||,,,,,,,,,,,,,,,,,,,,,,|,,",
",,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,",
",,|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,",
@@ -113,79 +113,98 @@
{
"type": "mapgen",
"om_terrain": [
- [ "robofachq_hab_a0", "robofachq_hab_a1", "robofachq_hab_a2", "robofachq_hab_a3" ],
- [ "robofachq_hab_b0", "robofachq_hab_b1", "robofachq_hab_b2", "robofachq_hab_b3" ]
+ [ "robofachq_exe_a0", "robofachq_exe_a1", "robofachq_exe_a2", "robofachq_exe_a3" ],
+ [ "robofachq_exe_b0", "robofachq_exe_b1", "robofachq_exe_b2", "robofachq_exe_b3" ]
],
"method": "json",
"object": {
"fill_ter": "t_thconc_floor",
"rows": [
- "################################################################################################",
- "#################################################################||||||||||||||||||||||||||||||#",
- "#################################################################|; | i|;Y|FFFFFF|FFFF|FFFFFF|#",
- "########################|||||||||||##############################| 2 i|i | Y | Y | Y |#",
- "########################|^BB6::::B|##########################|||||||||2|||2||2|||||5||||5||||||#",
- "########################| YY c|###########################|; |ii| |rY Y|#",
- "########################|r cc c|##|||||||||||##############| 2 2 |rY Y|#",
- "########################|r ch c||||rrrrrrrrr|||||||||||||||||||||| |||2| i|FY |||||||||| |#",
- "#############||||||||||||r YY (Y ???| htth hh htth G |Yi|F iKKKKooK| |#",
- "#############|6:::::::::|c ( ccccc6 ^|h tth tt htth cYK|FY YY c| |#",
- "#############| |c cc ( ???| htth hh cYK| iKKooK |#",
- "#############| 66::::6 |c cc ( ccccc6 ||||Y YccY YcY Y YY |#",
- "#########||||| G 4 YY 2 ???|Y YccY YcY iKKooK FFF|#",
- "#########|666||||| ||||||(((((((((|G ^| htth hh hh ||||2(((||||||||||||#",
- "#########| 5 Y Y ???| htth tt tt W|#| Y |############",
- "#########| 5 Y Y ||22|||| hh hh t|#|hdh |############",
- "########|| |||22||||(((((2(|||| | |Y Y||==========]]==========|||||||||############",
- "########|6 |c r|^ ^| 4 |Y Y|? . G,,,,,,,,,|^BBB^ |#|||||######",
- "########|||44|||c r| hhh |&i| ||||||||? ,,,,,,,,(YY |||:::|######",
- "########|6 6|c r| ttttt ||||55|eeeeee d (,,,,,,t6t ,,,,,,,,(H dd 5T Y|######",
- "########|6 6|c r|Y hhh Y| |eeeeee Y d (,,,,,,Y Y2 6h Y5 6|######",
- "########|6 66 6|c r|^ ^|66666|Eeeeee Y dh(,,,,,,Yt Y2 hd QY5 :|######",
- "########||||||||||||||||||||||||||||||eeeeee d (,,,,,,t6t ,,,,,,,,( dd 5T Y|######",
- "#####################################||||||||G ,,,,,,,,(YY |||:::|######",
- "#########################################|> 5 G,,,,,,,,,|^ A ^|#|||||######",
- "##########|||||||||#|||||||||#|||||||||#|||||Y Y||==========]]==========||||5||||############",
- "##########|~ ;|~ ;|#|~ ;|~ ;|#|~ ;|~ ;|#|~ ;||22||||B B| ^|##||||||######",
- "##########|~Yi|~Yi|#|~Yi|~Yi|#|~Yi|~Yi|#|~Yi| d |B htth t B htth B|th ^||||i; ~|######",
- "#########|||2|||2|||||||||2|||||2|||2|||||2|| dh|BYhtthYt Y Y BYhtthYB|thY Y 2 Y ~|######",
- "#########|D @|# @|D @|D @|D @|D @|@ D| d |B t B htth B| B|2|||||||######",
- "#########|B @|# @|B @|B @|B @|B @|@ B| |B B| B| h6|#########",
- "########||| Y|||Y ||| Y|||Y ||| Y|||Y ||| Y||G |||BBBB^YH YBBBBB||| h B| t|#########",
- "########|^||2|^|2||^||2|^|2||^||2|^|2||^||2| ||||||||||]]|||||||||,|ccY ||@Y B|#########",
- "########|^ Y Y Y Y Y ] ,,,,| c|@ B|#########",
- "########|^G ] ,,,,|KFoKK||||||#########",
- "########|^ Y Y Y Y Y |h tt YYtt ,,,,|||||||##############",
- "########|^||2|^|2||^||2|^|2||^||2|^|2||^||2| |t ? ? ,,,,|####################",
- "########||| Y|||Y ||| Y|||Y ||| Y|||Y ||| Y|| |||h ????^ G ^????t,,,,|####################",
- "#########|B @|B @|B @|B @|B @|B @|B @||||||||#|||||||||||||||||||||,|####################",
- "#########|D @|D @|D @|D @|D @|D @|D @|############################|||####################",
- "##########||2|||2|||||2|||2|||||2|||2|||||2||###################################################",
- "##########|~Yi|~Yi|#|~Yi|~Yi|#|~Yi|~Yi|#|~Yi|###################################################",
- "##########|~ ;|~ ;|#|~ ;|~ ;|#|~ ;|~ ;|#|~ ;|###################################################",
- "##########|||||||||#|||||||||#|||||||||#|||||###################################################",
- "################################################################################################",
- "################################################################################################",
- "################################################################################################",
+ "############################################| |############################################",
+ "########|||||||||||||||||||||||||#|||||||||||||22|||############################################",
+ "########|k ht|A h ^|#|lll|lllll| YY |############################################",
+ "########|i k k htth ht| Cd6ddC |#|bYb|bYbYb|T YY T|########||||||||############################",
+ "########|k o k htth ht| CCCCCC |#|b b|b b b|| YY ||######||=A6666A=||##########################",
+ "########| W ^|^ h ^|#|l l|l l l| YY |######|,=Y Y=,|##########################",
+ "########|FFFF| htth ?||||[[||||||l l|l l l|T YY T|######|,= htth =,|##########################",
+ "########|||||| htth ?||^^ ^^|| |||22||||||||||,= htth =,|##########################",
+ "########|ffff| 2 YY 2Y bbb bbbb| |L | i|,= htth =,|##########################",
+ "########| |^??t t??^| ,, ||||||||||||| |LY2 Y;|,= htth =,|##########################",
+ "###||||||hd ||||||||||| ,, 2 r r r| d( Y b|||||2||,= htth =,|##########################",
+ "###|;i|T|dd 2 2 (d r r r| Gd( Y b|AhQ ^|,= =,|##########################",
+ "###|@ 2Y2 | T T |G YY G(dh r| 2 Y b|ddd H|,[Y Y[,|##########################",
+ "###|||| |||||||||||||||||||22|||||||||||||||| ^| h ||||| |||||##########################",
+ "###|;i| |''''''''''''''''R R''''''''''''''( ^| YH|###|YY|##############################",
+ "###|@ 2Yh|''''''''''''''''R R''''''''''''''|||22|||====[=|||||22|||||||||||####################",
+ "###|||| t|''''''''''''''''R R''''''''''''''(< GY Y =,,,,,,,,|||||||||############",
+ "###|;i| h|''''''''''''''''R R''''''''''''''(> CC Y G=,,,,,,,,|^BB ^^|#|||||######",
+ "###|@ 2Y |''''''''''''''''R R'''''''|======|| CC ||(RRRRRRRR =======[=(YY CCC |||:::|######",
+ "###|||||||''''''''''''''''R R'''''''=Eeeeee2Y CC ^('''''''([( Y Y(H Cdd 5T Y|######",
+ "#########|''''''''''''''''RYYR'''''''=eeeeee2CCCC.dG('''''''R<( CCCCCCCCCC 2 C6C Y5 6|######",
+ "#########|''''''''''''''''RYYR'''''''=eeeeee2CCCC dh('''''''R>( CCCCCCCCCC 2 hCdh Y5 :|######",
+ "#########|''''''''''''''''R R'''''''=Eeeeee2Y CC ^('''''''([( Y Y( Cdd 5T Y|######",
+ "#########|''''''''''''''''R R'''''''|======|| CC ||(RRRRRRRR =======[=(YY CCC |||:::|######",
+ "#########|''''''''''''''''R R''''''''''''''(> CC Y G=,,,,,,,,|^ A ^|#|||||######",
+ "#########|''''''''''''''''R R''''''''''''''(< GY Y =,,,,,,,,||||55||||###########",
+ "#########|''''''''''''''''R R''''''''''''''|||22|||((2||||||||22|||||||||||^ ^|###########",
+ "#########|''''''''''''''''R R''''''''''''''( Y(dG L|L6dd|^YY^|::::::::| YY |###########",
+ "#########|====|====|=====||22||=======||||||| Y(dh 2 Yhd|^ ^| Y Y | htth |###########",
+ "#########| h ^|h B|h B| |A dh B|A dCCCCCCC ||||||||||||| ||[=======| htth |###########",
+ "#########|dd ^|dd B|dd B| |Bh6 ^| hdCCCCCCC 5Y |Wt| dh dh dh f| h tth |###########",
+ "#|||||||||^h Y|h Y^|h Y^| |B Y2 dCCCCCCC 5Y d d d f| htth |###########",
+ "#|iii |===[|==[=|===[=||YY|||||||||| ((((( d dh dh Y f| YY |###########",
+ "#|Y Y Y |Y ^ ^ ^ ^ Y(,,,(. dh d dY Y d d d Yf|^ ^|###########",
+ "#|2|2|2| |Y CCC Y(,,,[ dh dh dh f||||66||||###########",
+ "#|;|;|;|Y =========================t CCC (,,,[ dh d dY Yf|##||||##############",
+ "#|||||||Y [,,,,,,,,,,,,,,,,,,,,,,,=t CCC (,,,( d dh dh Y d d d f|||||||||||||########",
+ "#|;|;|;|Y =========================t cCC ((((( Y dh dh dh f|^^^^^^^^^^^|########",
+ "#|2|2|2| |YG CCC Y 5Y Y ^|########",
+ "#|Y Y Y |Y Y 5Y G Y ^|########",
+ "#|iii |====[[||=====|===[=|===[|[==||==[=||2||2|||[=======|| |||=====||||||2|||2||||########",
+ "#||||||||| ^| hd^|^ H| | |^ |f ff f| d dh dh| |Y Y^|;2Y | Y2;|########",
+ "#########|dd ] dh|h t|h h | | d |f ff f| dh d d | 2 hhhhh ^||| ||| |||########",
+ "#########| h ] hh |6dd H|ddd |6dd |hd |f ff f| Y Y| 2 ttttt ^|;2Y i|i Y2;|########",
+ "#########|dd dd|Y |h YB|Yh |Yhd |^ Y|f f| d d dh| | hhh h ^||| i|i |||########",
+ "#########|Yh h|BBBB^|^^BBB|A6^^| |BBBB|ffffff| dh d d |^^|Y h Y^|;2Y i|i Y2;|########",
+ "#########|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||########",
"################################################################################################"
],
"palettes": [ "robofachq" ],
"terrain": {
",": [ "t_shrub_rose", "t_shrub", "t_grass", "t_grass", "t_grass_tall" ],
"-": "t_wall_metal",
+ "'": "t_open_air",
"e": "t_elevator",
+ "C": "t_carpet_red",
"E": "t_elevator_control",
"Y": "t_thconc_floor_olight",
"#": "t_rock",
"6": "t_console",
+ "R": "t_railing",
"W": "t_water_dispenser"
},
- "furniture": { ":": "f_server", "K": "f_counter" },
+ "furniture": { ":": "f_server", "K": "f_counter", "H": "f_armchair", "L": "f_locker", "f": "f_filing_cabinet" },
+ "item": { "A": { "item": "american_flag" } },
"items": {
"F": { "item": "fridge", "chance": 80 },
+ "f": { "item": "file_room", "repeat": [ 10, 30 ] },
"@": { "item": "bed", "chance": 80 },
+ "r": [
+ { "item": "cop_armory", "chance": 80 },
+ { "item": "energy_weapon_armory", "chance": 33 },
+ { "item": "ammo_milspec", "chance": 40 },
+ { "item": "mags_milspec", "chance": 40 },
+ { "item": "guns_milspec", "chance": 40 }
+ ],
+ "L": [
+ { "item": "energy_weapon_armory", "chance": 33 },
+ { "item": "ammo_milspec", "chance": 40 },
+ { "item": "mags_milspec", "chance": 40 },
+ { "item": "guns_milspec", "chance": 40 }
+ ],
"K": { "item": "kitchen", "chance": 40 },
"o": { "item": "oven", "chance": 70 },
+ "d": [ { "item": "office_supplies", "chance": 70 }, { "item": "office_mess", "chance": 70, "repeat": [ 1, 3 ] } ],
"D": { "item": "NC_ROBOFAC_SCIENTIST_worn", "chance": 50 },
"B": [
{ "item": "magazines", "chance": 75, "repeat": [ 1, 5 ] },
@@ -195,6 +214,218 @@
"npcs": { "G": { "class": "hub_security" }, "Q": { "class": "hub_security_head" } }
}
},
+ {
+ "type": "mapgen",
+ "om_terrain": [
+ [ "robofachq_hab_a0", "robofachq_hab_a1", "robofachq_hab_a2", "robofachq_hab_a3" ],
+ [ "robofachq_hab_b0", "robofachq_hab_b1", "robofachq_hab_b2", "robofachq_hab_b3" ]
+ ],
+ "method": "json",
+ "object": {
+ "fill_ter": "t_concrete",
+ "rows": [
+ "################################################################################################",
+ "################################||||||||||######################################################",
+ "################################|FFFF|FFF|######################################################",
+ "#############||||||||||||||||||||F F|F F||||#####||||||##||||||################################",
+ "#############|KiKKKKKiKooKKKK K|F F|F F|;Y|#####|~Y ~|##|~ Y~|################################",
+ "#############|K K YY o K|F F|F f|i |#####|| |||##||| ||################################",
+ "#############|k K iKKoK K K||2||||2|||2|||||||i 2;|##|;2 i|################################",
+ "#############| i i| Y Y Y|^^^^^|i |||##||| i|################################",
+ "#############|FFFFFFFF 2 | Y2;||||;2Y |||||############################",
+ "####|||||||||||||||||||YY|||||||||||||||||||||| ||2||||FF|||2||FFF|||||||||||||||||||||||######",
+ "####|,,,.| htth Yffff i|'''''''''''''''(Y Y|Y X X X EE|rrrrrrrrrrrrp|######",
+ "####|,,,,= htth Mi|'''''''''''''''(G CC | TT TT b CCC X X Y | p|######",
+ "####|,,,, ccccccff||||'''''''''''''''( CC | b CCC EE| c cccc p|######",
+ "####|,,,,= htth |WW|RRRRRRRRRRRRRRR| CC | TT TT b CCC X X Y | h6 p|######",
+ "####|,,,,= htth h Y CC |Y ^ ^ X X X EE|ccccYYcccc p|######",
+ "####|,,,,= htth hth Y RRRRRR CC ||=========||22||=======||||||22||||||||######",
+ "####|,,,,= ^| ,,,,,R'''R>YCC Y =,,,,,,,,|cccAYYApppppp|######",
+ "####|,,,,= htth htth htth ^|^bb^ ,,,,,R'''RYCC Y =,,,,,,,,|PPPPPPP P P P|######",
+ "####|,,,,= MM Y RRRRRR CC ||=========||22||========|||||||||||||||######",
+ "####|,,,,= MM Y CC |Y BB BB B|####################",
+ "####|,,,,= hth htth|WW|RRRRRRRRRRRRRRR| CC |htth hhh htth B|####################",
+ "####|,,,,= hth thht htth||||'''''''''''''''( CC |htth ttt ^^ htth B|####################",
+ "####|,,,,= hth thht htth|##|'''''''''''''''( CC |Y B B B|####################",
+ "#||||||||| hth YY htth|##|'''''''''''''''(Y Y|BBBBBBBBBBBBBBBBBBBBBBBB|####################",
+ "#|iii | |||||||||||||||||||||||||||||||||||22|||||||||||||||||||||||||||||||||||############",
+ "#|Y Y Y | ^|##|~Y;|~Y;|~Y;|~Y;|~Y;|~Y;|^ t ^ |~Y;|~Y;|~Y;|~Y;|~Y;|~Y;|~Y;|############",
+ "#|2|2|2| | ^|##|~ i|~ i|~ i|~ i|~ i|~ i|? H^ htth |~ i|~ i|~ i|~ i|~ i|~ i|~ i|||||||||||||",
+ "#|;|;|;|Y ^|##||2|||2|||2|||2|||2|||2||? t ^ htth ||2|||2|||2|||2|||2|||2|||2||~2 |@@ D @@|",
+ "#|||||||Y ^|##|@ D|@ D|@ D|@ D|@ D|@ D|? t H^ |@ D|@ D|@ D|@ D|@ D|@ D| D||| |D @ D|",
+ "#|;|;|;|Y|YY^|##|@ D|@ D|@ D|@ D|@ D|@ D| htth |@ D|@ D|@ D|@ D|@ D|@ D| D|~2 |@@ @ @@|",
+ "#|2|2|2| |||||||||5|||5|||5|||5|||5|||2||Ht H ||5|||5|||5|||5|||5|||5|||5||||2|D D|",
+ "#|Y Y Y |###|,,,=Y Y 2 S @@|",
+ "#|iii |###|,,,=Y Y 2 D|",
+ "#|||||||||###|||||5|||5|||5|||5|||5|||2||G ? t ?||5|||5|||5|||5|||5|||5|||5||||2| @@|",
+ "#############|##|@ D|@ D|@ D|@ D|@ D|@ D|^ h ? t ?|@ D|@ D|@ D|@ D|@ D|@ D|@ D|i |D D|",
+ "#############|##|@ D|@ D|@ D|@ D|@ D|@ D|t??t ^|@ D|@ D|@ D|@ D|@ D|@ D|@ D|i |@@ @ @@|",
+ "#############|##||2|||2|||2|||2|||2|||2||======[[======||2|||2|||2|||2|||2|||2|||2|| |D @ D|",
+ "#############|##|~ i|~ i|~ i|~ i|~ i|~ i|,,,,,,,,,,,,,,|~ i|~ i|~ i|~ i|~ i|~ i|~ i|2|2|@@ D @@|",
+ "#############|##|~Y;|~Y;|~Y;|~Y;|~Y;|~Y;|,,,,,,,,,,,,,,|~Y;|~Y;|~Y;|~Y;|~Y;|~Y;|~Y;|;|;|||||||||",
+ "#############|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||########"
+ ],
+ "palettes": [ "robofachq" ],
+ "terrain": {
+ ",": [ "t_shrub_rose", "t_shrub", "t_grass_tall" ],
+ "-": "t_wall_metal",
+ "'": "t_open_air",
+ "e": "t_elevator",
+ "C": "t_carpet_red",
+ "E": "t_elevator_control",
+ "Y": "t_thconc_floor_olight",
+ "#": "t_rock",
+ "6": "t_console",
+ "R": "t_railing",
+ "W": "t_water_dispenser"
+ },
+ "furniture": {
+ "K": "f_counter",
+ "M": "f_counter",
+ "A": "f_canvas_wall",
+ "%": "f_canvas_door",
+ "E": "f_ergometer",
+ "T": "f_treadmill",
+ "X": "f_exercise"
+ },
+ "sealed_item": {
+ "P": { "item": { "item": "seed_tomato" }, "furniture": "f_planter_mature" },
+ "p": { "item": { "item": "seed_wheat" }, "furniture": "f_planter_mature" }
+ },
+ "items": {
+ "F": { "item": "fridge", "chance": 80, "repeat": [ 2, 6 ] },
+ "@": { "item": "bed", "chance": 80 },
+ "M": [
+ { "item": "SUS_dishes", "chance": 80, "repeat": [ 1, 3 ] },
+ { "item": "SUS_silverware", "chance": 33, "repeat": [ 1, 3 ] }
+ ],
+ "k": [
+ { "item": "kitchen", "chance": 33, "repeat": [ 1, 3 ] },
+ { "item": "SUS_knife_drawer", "chance": 40, "repeat": [ 1, 3 ] },
+ { "item": "SUS_cookware", "chance": 40, "repeat": [ 1, 3 ] }
+ ],
+ "K": { "item": "kitchen", "chance": 40 },
+ "o": { "item": "oven", "chance": 70 },
+ "d": [ { "item": "office_supplies", "chance": 70 }, { "item": "office_mess", "chance": 70, "repeat": [ 1, 3 ] } ],
+ "r": [ { "item": "tools_earthworking", "chance": 50 }, { "item": "supplies_farming", "chance": 70, "repeat": [ 1, 3 ] } ],
+ "D": { "item": "NC_ROBOFAC_SCIENTIST_worn", "chance": 50 },
+ "B": [
+ { "item": "magazines", "chance": 75, "repeat": [ 1, 5 ] },
+ { "item": "lab_bookshelves", "chance": 55, "repeat": [ 1, 3 ] }
+ ]
+ },
+ "npcs": { "G": { "class": "hub_security" } }
+ }
+ },
+ {
+ "type": "mapgen",
+ "om_terrain": [
+ [ "robofachq_res_a0", "robofachq_res_a1", "robofachq_res_a2", "robofachq_res_a3" ],
+ [ "robofachq_res_b0", "robofachq_res_b1", "robofachq_res_b2", "robofachq_res_b3" ]
+ ],
+ "method": "json",
+ "object": {
+ "fill_ter": "t_concrete",
+ "rows": [
+ "############################################| |#############################################",
+ "################################||||||||||##| |#############################################",
+ "################################|FFFF|FFF|##| |#############################################",
+ "#############||||||||||||||||||||F F|F F|||||222|||||||||||||||||||||||||||####################",
+ "#############| |^ ^| :|####################",
+ "#############| |^ ^| === === === === === :|####################",
+ "#############| |^ ^| =6= =6= =6= =6= =6= :|####################",
+ "#############| |^ ^| =2= =2= =2= =2= =2= :|####################",
+ "#############| AAAA |^ ^| :|####################",
+ "####||||||||||||||||||||||||||||YY||||||||||||222|| === === === === === :|||||||||||||||######",
+ "####|,,,.|SSSS6SSSS| h B|##|,,( (,,,,,,,,,( | =6= =6= =6= =6= =6= :|:::::::::::::|######",
+ "####|,,,,|S S|ddd B|##|,,( (,,,,,,,,,( | =2= =2= =2= =2= =2= :| :|######",
+ "####|,,,,|SSS SSSS| h B||||,,( (,,,,,,,,,( | :| 66 66 6 :|######",
+ "####|,,,,|====[====|=[===|YY|((( ((((((((((| | d d d d 2 66 66 6 :|######",
+ "####|,,,,= G Y | dh dh dh dh 2 :|######",
+ "####|,,,,= Y RRRRR ||====[==|||||||||||||||||2(||||||||||||######",
+ "####|,,,,= ||||||| (((((((( ======'''(> 2 G Y(:::::::::::::::| : : : : : |######",
+ "####|,,,,= = 666 = (''''''(^bb^ =,,,,='''( 2 G Y(:::::::::::::::| : : : : : |######",
+ "####|,,,,= RRRRRR ||=[=====|||||||||||||||||2(||||||||||||######",
+ "####|,,,,= |? [ 2 |#################",
+ "####|,,,,= |=[===|=[===|YY|((( ((((((((((|||||||? [ ( Y|#################",
+ "####|,,,,= |S S|s S||||,,( (,,,,,,,,,( ^|^ |[=======|===[|[====||||#################",
+ "####|,,,,= |S hS|S hS|##|,,( (,,,,,,,,,( hdhd|ddd | hhhh ^|h Y|Y h |####################",
+ "#||||||||| ||S6SSS|S6SSS|##|,,( (,,,,,,,,,( d6d| h | tttt 6|d6d | dd6|####################",
+ "#|iii | ^||||||||||||||||((|YY|(((((((((|[[|||| | hhhh | h | h|####################",
+ "#|Y Y Y | ^|lllll|^Y dh = dh^|Y B| |ffff|Y Y|BBBB|BBBBB|####################",
+ "#|2|2|2| | ^|l |B h6 [ d | hdhB|AAAAA||||||||||||||||||||||||||||||||||||||||||||||",
+ "#|;|;|;|Y |l ll |B d ^|||| ||2|Y d B|SSSSSSSS9S|SlllSSSS llSSSS SSS=YDSS SSS SSSll ll|",
+ "#|||||||Y ^|||||2|BY HtH| G|2|||||| hy|SY G Y= Y|",
+ "#|;|;|;|Y|YY^|S |||||||||| A Y|S SSSSS hS hS sh= |",
+ "#|2|2|2| |||||Sh SS6 SSS= y% Y|| SSSSS SS SS SS= SSS t 7966 6|",
+ "#|Y Y Y |###|S h ] Y% SSS Y2Y G ]Y hSSS t 7966 6|",
+ "#|iii |###|S 2 66 A h6SS Y2Y G Y]Y 688 t Y|",
+ "#|||||||||###|||||2|========|]=====]=======|AA%AA|AAAAA||yyyyyyyyyyyyyyyyyy = 9 t &&66 6|",
+ "#############|l ll |Sh SSSS|h d| y6 y = 9 &&66 6|",
+ "#############|l l |SSSSS 6| hhdA y y =t8898888 7|",
+ "#############|l l|S hS| h hdA y y =Y 6 7|",
+ "#############|lllll|SSSSSYYll 6 llYYSSS|ddd h %Y y yY=t77 t7799988ttt777|",
+ "#############|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||",
+ "################################################################################################"
+ ],
+ "palettes": [ "robofachq" ],
+ "terrain": {
+ ",": [ "t_shrub_rose", "t_shrub", "t_grass_tall" ],
+ "-": "t_wall_metal",
+ "'": "t_open_air",
+ "e": "t_elevator",
+ "C": "t_carpet_red",
+ "E": "t_elevator_control",
+ "Y": "t_thconc_floor_olight",
+ "#": "t_rock",
+ "6": "t_console",
+ "R": "t_railing",
+ "9": "t_conveyor",
+ "7": "t_machinery_light",
+ "8": "t_machinery_heavy",
+ "&": "t_machinery_electronic"
+ },
+ "furniture": {
+ "K": "f_counter",
+ "S": "f_table",
+ "A": "f_canvas_wall",
+ "%": "f_canvas_door",
+ "H": "f_armchair",
+ "E": "f_ergometer",
+ "T": "f_treadmill",
+ "X": "f_exercise"
+ },
+ "items": {
+ "S": [
+ { "item": "tools_robotics", "chance": 30, "repeat": [ 1, 3 ] },
+ { "item": "robots", "chance": 50, "repeat": [ 1, 3 ] },
+ { "item": "supplies_electronics", "chance": 50, "repeat": [ 1, 3 ] }
+ ],
+ "d": [ { "item": "office_supplies", "chance": 70 }, { "item": "office_mess", "chance": 70, "repeat": [ 1, 3 ] } ],
+ "B": [
+ { "item": "magazines", "chance": 75, "repeat": [ 1, 5 ] },
+ { "item": "lab_bookshelves", "chance": 55, "repeat": [ 1, 3 ] }
+ ]
+ },
+ "npcs": { "G": { "class": "hub_security" } }
+ }
+ },
{
"type": "mapgen",
"om_terrain": [ [ "robofachq_sub_a0", "robofachq_sub_a1", "robofachq_sub_a2", "robofachq_sub_a3" ] ],
@@ -202,14 +433,14 @@
"object": {
"fill_ter": "t_thconc_floor",
"rows": [
- "#######################| |##############################",
- "#######################| |##############################",
- "#######################| bb bbb bb bb |##############################",
- "#######################| |##############################",
- "#######################|Y Y|##############################",
- "#######################|||||||||||||||||||||||| |(((((|||||||##############################",
- "##############################################||2222||ttttt|####################################",
- "#####################################||||||||||^ ^| hY |####################################",
+ "#######################| ||||||||||||||####################################",
+ "#######################|Y Y (tt ^|####################################",
+ "#######################| bb bbb bb (th |####################################",
+ "#######################| (t |####################################",
+ "#######################|Y ^bb^ ^bbb^ ^bb Y (t ^|####################################",
+ "#######################|||||||||||||||||||||||| |||2|||####################################",
+ "##############################################||5555||tt tt|####################################",
+ "#####################################||||||||||^ ^| h h|####################################",
"#####################################|rrrrrrrr|^ ^| |####################################",
"#####################################|r r|| ||||2|||####################################",
"#####################################|r YY 2 (t G|####################################",
@@ -221,11 +452,11 @@
"#####################################| ~| |~ |^ Y^|####################################",
"#####################################| i| |i |^ Y^|####################################",
"#####################################||||||||||| ||||||||####################################",
- "#####################################|eeeeee5 ^|##########################################",
- "#####################################|eeeeee5 YY ^|##########################################",
- "#####################################|Eeeeee5 YY ^|##########################################",
- "#####################################|eeeeee5 ^|##########################################",
- "#####################################|||||||||||||||||##########################################"
+ "#####################################|lll 2 ^|##########################################",
+ "#####################################|^ ( YY ^|##########################################",
+ "#####################################| d ( YY ^|##########################################",
+ "#####################################|^hdh ( ^|##########################################",
+ "#####################################|||||||| ||||##########################################"
],
"palettes": [ "robofachq" ],
"terrain": { "-": "t_wall_metal", "e": "t_elevator", "E": "t_elevator_control", "Y": "t_utility_light", "I": "t_intercom" },
@@ -233,8 +464,7 @@
"l": [ { "item": "NC_ROBOFAC_FIELD_RESEARCHER_worn", "chance": 50 }, { "item": "NC_ROBOFAC_SCIENTIST_worn", "chance": 50 } ],
"i": { "item": "cleaning", "chance": 50 },
"B": [ { "item": "textbooks", "chance": 50 }, { "item": "manuals", "chance": 50 } ]
- },
- "place_npcs": [ { "class": "robofac_intercom", "x": 46, "y": 17 } ]
+ }
}
},
{
diff --git a/data/json/mapgen/shelter.json b/data/json/mapgen/shelter.json
index 2d8b771b5e9f9..6481427e2a950 100644
--- a/data/json/mapgen/shelter.json
+++ b/data/json/mapgen/shelter.json
@@ -112,8 +112,8 @@
" `!!!!`!!!!`!!!!` ",
" `!!!!`!!!!`!!!!` ",
" `!!!!`!!!!`!!!!` ",
- " &&&&&&&&&&&&&&&& ",
- " |---++---| ",
+ " &&&|---++---|&&& ",
+ " |........| ",
" |-:|........| ",
" |...........|:-| ",
" |.bbbbb.....c.6| ",
@@ -159,10 +159,10 @@
" ",
" ",
" ",
- " ",
" 4444444444 ",
- " |443........| ",
- " |...........|443 ",
+ " |........3 ",
+ " |44|........3 ",
+ " |...........3443 ",
" |..............3 ",
" |..............3 ",
" |..............3 ",
diff --git a/data/json/mapgen_palettes/hotel_tower_palette.json b/data/json/mapgen_palettes/hotel_tower_palette.json
new file mode 100644
index 0000000000000..0b1d665dc2f77
--- /dev/null
+++ b/data/json/mapgen_palettes/hotel_tower_palette.json
@@ -0,0 +1,63 @@
+[
+ {
+ "type": "palette",
+ "id": "hotel_tower_palette.json",
+ "furniture": {
+ "B": "f_bed",
+ "c": "f_counter",
+ "m": "f_bench",
+ "d": "f_dresser",
+ "o": "f_counter",
+ "D": "f_dryer",
+ "^": [ "f_indoor_plant_y", "f_indoor_plant" ],
+ "h": "f_chair",
+ "r": "f_rack",
+ "t": "f_table",
+ "j": "f_sofa",
+ "S": "f_sink",
+ "&": "f_toilet",
+ "b": "f_bathtub",
+ "E": [ "f_exercise", "f_ergometer", "f_treadmill" ],
+ "e": "f_fridge",
+ "l": "f_locker",
+ "W": "f_washer",
+ "F": "f_vending_c",
+ "U": "f_vending_c"
+ },
+ "terrain": {
+ ",": "t_pavement_y",
+ "1": "t_flat_roof",
+ "0": "t_glass_roof",
+ "*": "t_open_air",
+ "6": "t_wall_glass",
+ "_": "t_pavement",
+ "2": "t_carpet_green",
+ "s": "t_sidewalk",
+ "'": [ [ "t_grass", 5 ], "t_dirt", "t_shrub" ],
+ "M": [ "t_shrub_lilac", "t_shrub_hydrangea" ],
+ " ": [ [ "t_grass", 5 ], "t_dirt", "t_shrub" ],
+ "-": "t_wall_w",
+ "|": "t_wall_w",
+ "%": "t_adobe_brick_wall",
+ "T": "t_tree_young",
+ "v": "t_pavement",
+ "w": "t_water_pool_shallow",
+ "9": "t_water_pool",
+ "+": "t_door_c",
+ "G": "t_door_glass_c",
+ "=": "t_door_locked",
+ "7": "t_door_locked_interior",
+ "X": "t_column",
+ "H": "t_wall_glass",
+ "x": "t_elevator_control_off",
+ "8": "t_elevator",
+ "~": "t_thconc_floor",
+ "<": "t_stairs_up",
+ ">": "t_stairs_down",
+ "#": "t_rock",
+ "$": "t_sewage_pipe",
+ "4": "t_gutter_downspout",
+ "P": "t_sewage_pump"
+ }
+ }
+]
diff --git a/data/json/mapgen_palettes/house_w_palette.json b/data/json/mapgen_palettes/house_w_palette.json
index 8bf756f78828d..d2e1f065c0e8f 100644
--- a/data/json/mapgen_palettes/house_w_palette.json
+++ b/data/json/mapgen_palettes/house_w_palette.json
@@ -19,11 +19,11 @@
"L": "f_table",
"M": "f_displaycase",
"N": "f_workbench",
- "O": [ "f_wardrobe", "f_dresser" ],
+ "O": "f_dresser",
"P": "f_locker",
"Q": "f_rack",
"R": "f_bookcase",
- "S": [ "f_filing_cabinet", "f_shredder" ],
+ "S": [ [ "f_filing_cabinet", 80 ], [ "f_shredder", 20 ] ],
"U": "f_utility_shelf",
"V": "f_glass_cabinet",
"W": "f_washer",
@@ -42,11 +42,13 @@
"l": "f_fridge",
"m": "f_glass_fridge",
"n": "f_dishwasher",
+ "p": "f_coffee_table",
"r": "f_wood_keg",
"s": "f_metal_butcher_rack",
"u": "f_rotary_clothesline",
"v": [ "f_gun_safe_el", "f_safe_l" ],
"w": "f_rack_wood",
+ "x": "f_entertainment_center",
"y": [ "f_indoor_plant", "f_indoor_plant_y" ],
"z": [ [ "f_cardboard_box", 5 ], "f_crate_c" ]
},
@@ -58,12 +60,10 @@
"<": "t_stairs_up",
">": "t_stairs_down",
"-": "t_dirt",
- "|": "t_dirt",
+ "|": "t_wall",
"#": "t_glass_railing",
- "+": "t_dirt",
+ "+": "t_door_c",
"=": "t_dirt",
- "p": "t_dirt",
- "x": "t_dirt",
"2": "t_dirt",
"5": "t_dirt",
"6": "t_carpet_red",
@@ -72,7 +72,8 @@
"9": "t_carpet_yellow",
"?": "t_console_broken"
},
- "toilets": { "t": { } }
+ "toilets": { "t": { } },
+ "liquids": { "g": { "liquid": "water_clean", "amount": [ 0, 100 ] } }
},
{
"type": "palette",
@@ -81,14 +82,16 @@
"A": "f_stool",
"B": "f_rotary_clothesline",
"D": "f_camp_chair",
+ "E": "f_rack_coat",
"F": "f_bench",
"G": "f_mailbox",
+ "H": "f_armchair",
"I": "f_desk",
"J": "f_counter",
"K": "f_cupboard",
"L": "f_table",
"N": "f_workbench",
- "O": [ "f_wardrobe", "f_dresser" ],
+ "O": "f_wardrobe",
"P": "f_locker",
"Q": "f_rack",
"R": "f_bookcase",
@@ -107,38 +110,85 @@
"k": "f_woodstove",
"l": "f_fridge",
"m": "f_glass_fridge",
+ "p": [
+ "f_datura",
+ "f_bluebell",
+ "f_mutpoppy",
+ "f_dahlia",
+ "f_flower_tulip",
+ "f_chamomile",
+ "f_flower_spurge",
+ "f_lily",
+ "f_sunflower",
+ "f_chicory",
+ "f_black_eyed_susan",
+ "f_dandelion"
+ ],
"r": "f_wood_keg",
- "v": [ "f_gun_safe_el", "f_safe_l", "f_cardboard_box" ],
+ "v": [ [ "f_safe_l", 25 ], [ "f_cardboard_box", 75 ] ],
"w": "f_rack_wood",
"y": [ "f_indoor_plant", "f_indoor_plant_y" ],
"z": "f_metal_butcher_rack"
},
"terrain": {
- ".": [ [ "t_grass", 5 ], [ "t_grass_long", 2 ], "t_dirt", "t_shrub" ],
+ ".": [ [ "t_grass", 10 ], [ "t_dirt", 2 ], "t_shrub" ],
+ "-": "t_open_air",
"G": "t_grass",
+ "p": "t_grass",
+ "X": "t_grass",
" ": "t_floor",
"|": "t_wall_w",
"<": "t_stairs_up",
">": "t_stairs_down",
- "o": [ "t_window_domestic", "t_window_no_curtains", "t_window_no_curtains_open", "t_window_open", "t_curtains" ],
- "+": "t_door_c",
+ "o": [
+ [ "t_window_domestic", 10 ],
+ "t_window_no_curtains",
+ "t_window_open",
+ "t_window_no_curtains_open",
+ [ "t_curtains", 5 ]
+ ],
+ "+": [ [ "t_door_c", 10 ], [ "t_door_o", 5 ], [ "t_door_locked_interior", 3 ] ],
+ "*": [ [ "t_door_locked_peep", 2 ], "t_door_locked_alarm", [ "t_door_locked", 10 ], "t_door_c" ],
"s": "t_concrete",
"~": "t_thconc_floor",
"u": "t_gates_mech_control",
"x": "t_door_metal_locked",
"C": "t_column",
+ "^": "t_gutter_downspout",
",": "t_linoleum_white",
- ";": "t_linoleum_gray"
+ ";": "t_linoleum_gray",
+ "M": [ "t_shrub_lilac", "t_shrub_hydrangea", "t_shrub_rose" ],
+ "$": [
+ "t_tree_blackjack",
+ "t_tree_walnut",
+ "t_tree_chestnut",
+ "t_tree_beech",
+ "t_tree_hazelnut",
+ "t_tree_cottonwood",
+ "t_tree",
+ "t_tree_elm",
+ "t_tree_dead",
+ "t_tree_apple",
+ "t_tree_pear",
+ "t_tree_cherry",
+ "t_tree_peach",
+ "t_tree_apricot",
+ "t_tree_plum",
+ "t_tree_mulberry",
+ "t_tree_elderberry",
+ "t_tree_pine",
+ "t_tree_birch",
+ "t_tree_willow",
+ "t_tree_maple",
+ "t_tree_hickory",
+ "t_tree_almond",
+ "t_tree_pecan"
+ ]
},
"toilets": { "t": { } },
+ "liquids": { "g": { "liquid": "water_clean", "amount": [ 0, 100 ] } },
"items": {
- "O": [
- { "item": "victoria_shop", "chance": 40 },
- { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
- { "item": "hatstore_accessories", "chance": 10, "repeat": [ 1, 2 ] },
- { "item": "dresser", "chance": 20 }
- ],
+ "O": [ { "item": "wardrobe_mens", "chance": 50 }, { "item": "wardrobe_womens", "chance": 50, "repeat": [ 1, 2 ] } ],
"Q": [
{ "item": "preserved_food", "chance": 20, "repeat": [ 1, 2 ] },
{ "item": "dry_goods", "chance": 30, "repeat": [ 1, 2 ] },
@@ -163,6 +213,12 @@
{ "item": "cleaning", "chance": 30, "repeat": [ 1, 2 ] },
{ "item": "bed", "chance": 30, "repeat": [ 1, 2 ] }
],
+ "v": [
+ { "item": "art", "chance": 5 },
+ { "item": "drugdealer", "chance": 10, "repeat": [ 1, 2 ] },
+ { "item": "maps", "chance": 2 },
+ { "item": "college_sports", "chance": 30, "repeat": [ 1, 2 ] }
+ ],
"U": [
{ "item": "home_hw", "chance": 20, "repeat": [ 1, 2 ] },
{ "item": "cleaning", "chance": 30, "repeat": [ 1, 2 ] },
@@ -180,5 +236,111 @@
"Y": { "item": "trash", "chance": 30, "repeat": [ 1, 2 ] },
"R": { "item": "homebooks", "chance": 30, "repeat": [ 1, 2 ] }
}
+ },
+ {
+ "type": "palette",
+ "id": "house_w_nest_garden_palette",
+ "terrain": {
+ ".": [ [ "t_grass", 5 ], [ "t_grass_long", 2 ], "t_dirt" ],
+ "A": [ "t_shrub", "t_fern" ],
+ "B": "t_reinforced_glass_shutter_open",
+ "C": "t_reinforced_door_glass_c",
+ "D": "t_reinforced_glass_shutter",
+ "E": "t_chickenwire_gate_c",
+ "F": "t_chickenwire_fence",
+ "G": "t_sandbox",
+ "H": "t_slide",
+ "I": "t_monkey_bars",
+ "J": "t_water_pump",
+ "K": "t_water_sh",
+ "k": "t_water_sh",
+ "L": "t_water_pool_outdoors",
+ "M": "t_water_pool_shallow_outdoors",
+ "N": [ "t_shrub_lilac", "t_shrub_hydrangea", "t_shrub_rose" ],
+ "O": [
+ "t_shrub_grape",
+ "t_shrub_raspberry",
+ "t_shrub_huckleberry",
+ "t_shrub_blackberry",
+ "t_shrub_strawberry",
+ "t_shrub_blueberry"
+ ],
+ "P": "t_dirtmound",
+ "Q": "t_dirt",
+ "R": "t_dirtfloor",
+ "S": "t_trunk",
+ "Z": [
+ "t_tree_blackjack",
+ "t_tree_walnut",
+ "t_tree_chestnut",
+ "t_tree_beech",
+ "t_tree_hazelnut",
+ "t_tree_cottonwood",
+ "t_tree",
+ "t_tree_elm",
+ "t_tree_dead",
+ "t_tree_apple",
+ "t_tree_pear",
+ "t_tree_cherry",
+ "t_tree_peach",
+ "t_tree_apricot",
+ "t_tree_plum",
+ "t_tree_mulberry",
+ "t_tree_elderberry",
+ "t_tree_pine",
+ "t_tree_birch",
+ "t_tree_willow",
+ "t_tree_maple",
+ "t_tree_hickory",
+ "t_tree_almond",
+ "t_tree_pecan"
+ ],
+ "g": "t_sandbox",
+ "1": "t_dirtfloor",
+ "2": "t_dirtfloor",
+ "3": "t_dirtfloor",
+ "4": "t_dirtfloor",
+ "5": "t_dirtfloor",
+ "6": "t_dirtfloor"
+ },
+ "furniture": {
+ "a": "f_stool",
+ "b": "f_camp_chair",
+ "c": "f_bench",
+ "d": "f_tourist_table",
+ "e": "f_bookcase",
+ "f": "f_statue",
+ "g": [ "f_boulder_medium", "f_boulder_large" ],
+ "h": [ "f_indoor_plant", "f_indoor_plant_y" ],
+ "i": "f_firering",
+ "j": "f_brazier",
+ "k": [ "f_cattails", "f_lotus", "f_lilypad" ],
+ "l": "f_birdbath",
+ "p": [
+ "f_datura",
+ "f_bluebell",
+ "f_mutpoppy",
+ "f_dahlia",
+ "f_flower_tulip",
+ "f_chamomile",
+ "f_flower_spurge",
+ "f_lily",
+ "f_sunflower",
+ "f_chicory",
+ "f_black_eyed_susan",
+ "f_dandelion"
+ ]
+ },
+ "sealed_item": {
+ "1": { "item": { "item": "seed_rose" }, "furniture": "f_planter_seedling" },
+ "2": { "item": { "item": "seed_chamomile" }, "furniture": "f_planter_harvest" },
+ "3": { "item": { "item": "seed_thyme" }, "furniture": "f_planter_harvest" },
+ "4": { "item": { "item": "seed_bee_balm" }, "furniture": "f_planter_harvest" },
+ "5": { "item": { "item": "seed_mugwort" }, "furniture": "f_planter_harvest" },
+ "6": { "item": { "item": "seed_tomato" }, "furniture": "f_planter_harvest" },
+ "7": { "item": { "item": "seed_cucumber" }, "furniture": "f_planter_harvest" },
+ "8": { "item": { "item": "soybean_seed" }, "furniture": "f_planter_harvest" },
+ "9": { "item": { "item": "seed_zucchini" }, "furniture": "f_planter_harvest" }
+ }
}
]
diff --git a/data/json/mapgen_palettes/junkyard_palette.json b/data/json/mapgen_palettes/junkyard_palette.json
new file mode 100644
index 0000000000000..229fb4dfbb925
--- /dev/null
+++ b/data/json/mapgen_palettes/junkyard_palette.json
@@ -0,0 +1,49 @@
+[
+ {
+ "type": "palette",
+ "id": "junkyard_palette",
+ "terrain": {
+ ".": [ [ "t_pavement", 22 ], [ "t_dirt", 2 ], "t_grass" ],
+ "g": [ [ "t_grass", 5 ], "t_dirt" ],
+ "_": [ [ "t_dirt", 5 ], "t_grass" ],
+ "|": "t_fence_barbed",
+ "$": "t_fence_barbed",
+ "-": "t_laminated_glass",
+ "s": [ [ "t_dirt", 5 ], "t_grass" ],
+ "D": "t_door_c",
+ "S": "t_sidewalk",
+ "q": "t_door_metal_locked",
+ "c": "t_carpet_red",
+ "n": "t_carpet_red",
+ "r": "t_reinforced_door_glass_c",
+ "%": "t_brick_wall",
+ "C": "t_thconc_floor",
+ "&": "t_thconc_floor",
+ "#": "t_thconc_floor",
+ "t": "t_thconc_floor",
+ "e": "t_gates_mech_control",
+ "d": "t_door_metal_locked",
+ "m": "t_metal_floor",
+ "9": "t_wall_wood",
+ "x": "t_console_broken",
+ "4": "t_gutter_downspout"
+ },
+ "furniture": {
+ "#": "f_straw_bed",
+ "N": "f_ladder",
+ "B": "f_bench",
+ "&": "f_trashcan",
+ "R": "f_trashcan",
+ "C": "f_counter",
+ "U": "f_counter",
+ "T": "f_toilet",
+ "a": "f_chair",
+ "b": "f_sink",
+ "I": "f_desk",
+ "n": "f_table",
+ "p": "f_table",
+ "F": "f_vending_c",
+ "K": "f_vending_c"
+ }
+ }
+]
diff --git a/data/json/mapgen_palettes/miniature_railway_palette.json b/data/json/mapgen_palettes/miniature_railway_palette.json
new file mode 100644
index 0000000000000..863d0d16ce1c7
--- /dev/null
+++ b/data/json/mapgen_palettes/miniature_railway_palette.json
@@ -0,0 +1,54 @@
+[
+ {
+ "type": "palette",
+ "id": "miniature_railway_palette",
+ "terrain": {
+ ".": [ "t_grass", "t_grass", "t_grass", "t_grass_long", "t_grass_dead", "t_grass_dead", "t_dirt" ],
+ "u": [ [ "t_grass", 27 ], [ "t_grass_long", 10 ], [ "t_dirt", 14 ], [ "t_underbrush", 4 ], [ "t_tree", 5 ] ],
+ "w": [ "t_grass" ],
+ "_": [ "t_door_locked" ],
+ "@": [ "t_pavement" ],
+ "X": [ "t_railroad_track_small_d" ],
+ "=": [ "t_railroad_track_small" ],
+ "H": [ "t_wall" ],
+ "*": [ "t_wall_glass" ],
+ "%": [ "t_fence" ],
+ "|": [ "t_floor" ],
+ "d": [ "t_floor" ],
+ "h": [ "t_floor" ],
+ "D": [ "t_floor" ],
+ "7": [ "t_floor" ],
+ "l": [ "t_floor" ],
+ "s": [ "t_floor" ],
+ "V": [ "t_floor" ],
+ "t": [ "t_floor" ],
+ "p": [ "t_sidewalk" ],
+ "W": [ "t_sidewalk" ],
+ "5": [ "t_wall_wood" ],
+ ":": [ "t_open_air" ],
+ "r": [ "t_flat_roof" ],
+ "`": [ "t_pavement_y" ]
+ },
+ "furniture": {
+ "h": [ "f_chair" ],
+ "d": [ "f_desk" ],
+ "s": [ "f_utility_shelf" ],
+ "l": [ "f_locker" ],
+ "W": [ "f_bench" ],
+ "w": [ "f_bench" ],
+ "D": [ "f_vending_c" ],
+ "V": [ "f_vending_c" ],
+ "7": [ "f_filing_cabinet" ]
+ },
+ "items": {
+ "d": { "item": "office", "chance": 30 },
+ "s": { "item": "metal_workshop", "chance": 10 },
+ "l": { "item": "metal_workshop", "chance": 10 },
+ "W": [ { "item": "snacks", "chance": 10 }, { "item": "novels", "chance": 10 }, { "item": "alcohol", "chance": 5 } ],
+ "w": [ { "item": "snacks", "chance": 10 }, { "item": "novels", "chance": 10 }, { "item": "alcohol", "chance": 5 } ],
+ "7": { "item": "office_paper", "chance": 30 }
+ },
+ "toilets": { "t": { } },
+ "vendingmachines": { "D": { "item_group": "vending_drink" }, "V": { "item_group": "vending_food" } }
+ }
+]
diff --git a/data/json/mapgen_palettes/movie_theater_palette.json b/data/json/mapgen_palettes/movie_theater_palette.json
new file mode 100644
index 0000000000000..5c53aa82be8c4
--- /dev/null
+++ b/data/json/mapgen_palettes/movie_theater_palette.json
@@ -0,0 +1,58 @@
+[
+ {
+ "type": "palette",
+ "id": "movie_theater_palette.json",
+ "furniture": {
+ "T": "f_counter",
+ "f": "f_counter",
+ "&": "f_toilet",
+ "6": "f_arcade_machine",
+ "7": "f_pinball_machine",
+ "c": "f_stool",
+ "e": "f_stool",
+ "#": "f_chair",
+ "s": "f_sink",
+ "t": "f_table",
+ "{": "f_locker",
+ "H": "f_armchair",
+ "K": "f_armchair",
+ "b": "f_bench",
+ "y": [ "f_indoor_plant", "f_indoor_plant_y" ],
+ "i": [ "f_indoor_plant", "f_indoor_plant_y" ],
+ "l": "f_locker",
+ "G": "f_trashcan",
+ "X": [ [ "f_cardboard_box", 5 ], "f_crate_c" ],
+ "g": "f_glass_fridge",
+ "@": "f_sofa",
+ "o": "f_oven",
+ "r": "f_rack",
+ "F": "f_vending_c",
+ "v": "f_vending_c"
+ },
+ "terrain": {
+ "$": "t_carpet_green",
+ "#": "t_carpet_purple",
+ "K": "t_carpet_purple",
+ "b": "t_carpet_purple",
+ "i": "t_carpet_purple",
+ "*": "t_carpet_purple",
+ "f": "t_carpet_purple",
+ "e": "t_carpet_purple",
+ ".": "t_thconc_floor",
+ "!": "t_brick_wall",
+ "|": "t_wall_b",
+ "%": "t_wall_glass",
+ "+": "t_door_metal_c",
+ "^": "t_door_glass_c",
+ "&": "t_atm",
+ "D": "t_door_c",
+ "d": "t_door_c",
+ "a": "t_atm",
+ "w": "t_window",
+ "Z": "t_console_broken",
+ "-": "t_railing_h",
+ "R": "t_railing_h",
+ "<": "t_ladder_up"
+ }
+ }
+]
diff --git a/data/json/martialarts.json b/data/json/martialarts.json
index 57b09db2767bf..24ca0f952f48c 100644
--- a/data/json/martialarts.json
+++ b/data/json/martialarts.json
@@ -298,6 +298,7 @@
"baton-extended",
"bee_sting",
"bowling_pin",
+ "butterfly_swords",
"cane",
"copper_knife",
"cudgel",
@@ -327,6 +328,9 @@
"scissors",
"screwdriver",
"sharp_toothbrush",
+ "shillelagh",
+ "shillelagh_fake",
+ "shillelagh_weighted",
"shishkebab_off",
"shishkebab_on",
"shocktonfa_off",
@@ -401,11 +405,20 @@
"fencing_foil",
"fencing_sabre",
"fencing_epee",
+ "fencing_foil_sharpened",
+ "fencing_sabre_sharpened",
+ "fencing_epee_sharpened",
+ "shock_foil",
+ "shock_sabre",
+ "shock_epee",
"pointy_stick",
"pipe",
"PR24-extended",
"rapier",
"rapier_fake",
+ "shillelagh",
+ "shillelagh_fake",
+ "shillelagh_weighted",
"sword_cane",
"umbrella"
]
@@ -579,6 +592,7 @@
],
"weapons": [
"baton-extended",
+ "butterfly_swords",
"copper_knife",
"cudgel",
"diveknife",
@@ -870,6 +884,7 @@
"broadsword_fake",
"broadfire_off",
"broadfire_on",
+ "butterfly_swords",
"cavalry_sabre",
"cavalry_sabre_fake",
"copper_knife",
@@ -911,6 +926,9 @@
"scimitar",
"scimitar_fake",
"scimitar_inferior",
+ "shillelagh",
+ "shillelagh_fake",
+ "shillelagh_weighted",
"shishkebab_off",
"shishkebab_on",
"shock_staff",
@@ -1100,6 +1118,7 @@
"weapons": [
"baton-extended",
"bowling_pin",
+ "butterfly_swords",
"cudgel",
"diveknife",
"firemachete_off",
@@ -1139,6 +1158,9 @@
"shocktonfa_off",
"shocktonfa_on",
"sickle",
+ "shillelagh",
+ "shillelagh_fake",
+ "shillelagh_weighted",
"shishkebab_off",
"shishkebab_on",
"spear_knife",
@@ -1258,121 +1280,225 @@
"spear_wood"
]
},
+ {
+ "type": "martial_art",
+ "id": "style_taekwondo",
+ "name": "Taekwondo",
+ "description": "Taekwondo is the national sport of Korea, and was used by the South Korean army in the 20th century. Focused on kicks and so it does not benefit from wielded weapons. It also includes strength training; your blocks absorb extra damage and your attacks do more damage if you are not holding anything.",
+ "initiate": [ "You adopt a narrow fighting stance.", "You adopts a narrow fighting stance." ],
+ "learn_difficulty": 5,
+ "arm_block": 1,
+ "leg_block": 3,
+ "force_unarmed": true,
+ "static_buffs": [
+ {
+ "id": "buff_taekwondo_static",
+ "name": "Taekwondo Stance",
+ "description": "Using your legs to attack allows your hands to be free for better defense.\n\nBlocked damage decreased by 50%% of Strength.",
+ "unarmed_allowed": true,
+ "flat_bonuses": [ [ "block", "str", 0.5 ] ]
+ },
+ {
+ "id": "buff_taekwondo_static2",
+ "name": "Unhindered",
+ "description": "Your attacks are stronger if you are not holding anything in your hands.\n\n+33%% bash damage when not using a weapon.",
+ "unarmed_allowed": true,
+ "min_unarmed": 0,
+ "mult_bonuses": [ [ "damage", "bash", 1.33 ] ]
+ }
+ ],
+ "techniques": [ "tec_taekwondo_disarm", "tec_taekwondo_precise", "tec_taekwondo_push", "tec_taekwondo_sweep" ]
+ },
{
"type": "martial_art",
"id": "style_tai_chi",
"name": "Tai Chi",
- "description": "Though Tai Chi is often seen as a form of mental and physical exercise, it is a legitimate martial art, focused on self-defense. Its ability to absorb the force of an attack makes your Perception decrease damage further on a block.",
+ "description": "Though Tai Chi is often seen as a form of mental and physical exercise, it is a legitimate martial art, focused on self-defense. Its ability to absorb the force of an attack makes your Perception decrease damage further on a block. Pausing for a moment enables powerful palm strike techniques.",
"initiate": [ "You settle into a gentle stance and prepare to defend yourself.", "%s settles into a gentle stance." ],
"learn_difficulty": 4,
- "arm_block": 1,
- "leg_block": 99,
+ "arm_block": 0,
"static_buffs": [
{
- "id": "tai_chi_block",
- "name": "Tai Chi",
+ "id": "buff_tai_chi_static",
+ "name": "Tai Chi Stance",
+ "description": "You are focused of defense and predicting your opponents attacks.\n\n+1 Block attempts, blocked damage reduced by 100%% Perception.",
"unarmed_allowed": true,
"min_unarmed": 0,
+ "bonus_blocks": 1,
+ "flat_bonuses": [ [ "block", "per", 1.0 ] ]
+ }
+ ],
+ "ondodge_buffs": [
+ {
+ "id": "buff_tai_chi_ondodge",
+ "name": "Repulse the Monkey",
+ "description": "By perfectly positioning yourself and your opponent, you have become more accurate and can bypass your opponent's defenses.\n\nAccuracy increased by 20%% of Perception, gain bash Armor Pentration equal to 50%% of Perception.\nLasts 2 turns.",
+ "unarmed_allowed": true,
+ "min_unarmed": 3,
"buff_duration": 2,
- "flat_bonuses": [ [ "block", "per", 1.0 ] ],
- "description": "+1 Block. Perception decreases damage when blocking.",
- "bonus_blocks": 1
+ "flat_bonuses": [ [ "arpen", "bash", "per", 0.5 ], [ "hit", "per", 0.2 ] ]
+ }
+ ],
+ "onpause_buffs": [
+ {
+ "id": "buff_tai_chi_onpause",
+ "name": "Cross Hands",
+ "description": "By taking a moment to prepare yourself, you are able to use your entire body fully for attacking and defending.\n\n+1.0 Dodge skill, blocked damage reduced by 50%% of Perception.\nEnables \"Palm Strike\" and \"Double Palm Strike\" techniques.\nLasts 3 turns.",
+ "unarmed_allowed": true,
+ "min_unarmed": 1,
+ "buff_duration": 3,
+ "flat_bonuses": [ [ "block", "per", 0.5 ], [ "dodge", 1.0 ] ]
}
],
- "techniques": [ "tec_taichi_disarm", "tec_taichi_precise" ]
+ "techniques": [ "tec_taichi_disarm", "tec_taichi_palm", "tec_taichi_counter", "tec_taichi_precise" ]
},
{
"type": "martial_art",
- "id": "style_taekwondo",
- "name": "Taekwondo",
- "description": "Taekwondo is the national sport of Korea, and was used by the South Korean army in the 20th century. Focused on kicks and so it does not benefit from wielded weapons. It also includes strength training; your blocks absorb extra damage the stronger you are.",
- "initiate": [ "You adopt a narrow fighting stance.", "You adopts a narrow fighting stance." ],
- "learn_difficulty": 5,
- "arm_block": 2,
- "leg_block": 3,
- "force_unarmed": true,
+ "id": "style_tiger",
+ "name": "Tiger Kung Fu",
+ "description": "One of the five Shaolin animal styles. The Tiger focuses on relentless attacks above all else. Your Strength determines your accuracy, and your attacks do increasing damage as you continue attacking.",
+ "initiate": [ "You clench your hands into ferocious, tiger-like claws.", "%s assumes a tiger-like stance." ],
+ "learn_difficulty": 10,
"static_buffs": [
{
- "id": "taekwondo_static",
- "name": "Taekwondo",
+ "id": "buff_tiger_static",
+ "name": "Tiger's Strength",
+ "description": "You do not need defense. You do not need a plan. You need strength. Strength will break your opponents' defenses and overwhelm them completely.\n\nStrength increases Accuracy instead of Dexterity.\n\nAccuracy increased by 25%% of Strength but decreased by 25%% of Dexterity.",
+ "min_unarmed": 0,
+ "unarmed_allowed": true,
+ "flat_bonuses": [ [ "hit", "str", 0.25 ], [ "hit", "dex", -0.25 ] ]
+ }
+ ],
+ "onhit_buffs": [
+ {
+ "id": "buff_tiger_onhit",
+ "name": "Tiger Fury",
+ "description": "You attack with an endless barrage of strikes. The more you hit, the stronger you become.\n\n+10%% damage.\nLasts 3 turns. Stacks 4 times.",
+ "unarmed_allowed": true,
+ "min_unarmed": 2,
+ "buff_duration": 3,
+ "max_stacks": 4,
+ "mult_bonuses": [ [ "damage", "bash", 1.1 ], [ "damage", "cut", 1.1 ], [ "damage", "stab", 1.1 ] ]
+ }
+ ],
+ "oncrit_buffs": [
+ {
+ "id": "buff_tiger_oncrit",
+ "name": "Tiger Rampage",
+ "description": "Your opponent's lose is your gain. Your next attack will break through your opponent's guard.\n\nGain Armor Penetration equal to 50%% of Strength.\nLasts 1 turns. Stacks 2 times.",
"unarmed_allowed": true,
- "flat_bonuses": [ [ "block", "str", 0.5 ] ],
- "description": "Strength decreases damage when blocking."
+ "min_unarmed": 3,
+ "buff_duration": 1,
+ "max_stacks": 2,
+ "flat_bonuses": [ [ "arpen", "bash", "str", 0.5 ], [ "arpen", "cut", "str", 0.5 ], [ "arpen", "stab", "str", 0.5 ] ]
}
],
- "techniques": [ "tec_taekwondo_precise", "tec_taekwondo_push", "tec_taekwondo_sweep" ]
+ "techniques": [ "tec_tiger_palm", "tec_tiger_takedown" ]
},
{
"type": "martial_art",
- "id": "style_zui_quan",
- "name": "Zui Quan",
- "description": "AKA \"drunken boxing,\" Zui Quan imitates the movement of a drunk to confuse the enemy, giving you a passive dodge bonus based on your intelligence. The turn after you attack, you may dodge any number of attacks with no penalty, and successfully dodging an attack gives you bonus damage and to-hit based on your intelligence.",
- "initiate": [ "You begin to sway to and fro with a confident swagger.", "%s stumbles as if pretending to be drunk." ],
+ "id": "style_wingchun",
+ "name": "Wing Chun",
+ "description": "Wing Chun is a Chinese martial art that began by selecting the easiest-to-learn effective techniques from the various Shaolin animal forms. It has a high stance, with weight entirely on the rear leg. Wing Chun focuses on sensitivity to the opponent's direction of force, and flowing around it to get back to hitting.",
+ "initiate": [
+ "You take your stance and prepare to receive the gift of violence.",
+ "%s patiently assumes a curiously pigeon-toed stance."
+ ],
"learn_difficulty": 8,
- "arm_block": 99,
- "leg_block": 99,
+ "arm_block": 2,
+ "leg_block": 3,
"static_buffs": [
{
- "id": "zuiquan_static",
- "name": "Zui Quan",
- "description": "Intelligence increases dodging ability",
+ "id": "buff_wingchun_static",
+ "name": "Chi-Sao Sensitivity",
+ "description": "You have a greater understanding of balance and technique. This gives you a better chance to avoid your opponent's attacks.\n\n Dodging Skill increased by 15%% of Perception. Blocked damage reduced by 50%% of Perception.",
+ "min_unarmed": 0,
"unarmed_allowed": true,
- "flat_bonuses": [ [ "dodge", "int", 0.12 ] ]
+ "flat_bonuses": [ [ "block", "per", 0.5 ], [ "dodge", "per", 0.15 ] ]
}
],
- "onattack_buffs": [
+ "onhit_buffs": [
{
- "id": "zuiquan_attack_buff",
- "name": "Drunken Dodging",
- "description": "Unlimited dodges after attacking",
- "buff_duration": 4,
+ "id": "buff_wingchun_onhit",
+ "name": "Chain Punch",
+ "description": "Your punches are properly timed to give your opponent no rest from your strikes.\n\n-10%% move cost.\nLasts 1 turn. Stacks 3 times.",
+ "min_unarmed": 1,
"unarmed_allowed": true,
- "bonus_dodges": 100
+ "buff_duration": 1,
+ "max_stacks": 3,
+ "mult_bonuses": [ [ "movecost", 0.9 ] ]
}
],
- "ondodge_buffs": [
+ "onpause_buffs": [
{
- "id": "zuiquan_dodge_buff",
- "name": "Counter Strike",
- "description": "Extra damage and to-hit after successful dodge",
+ "id": "buff_wingchun_onpause",
+ "name": "Biu Ji",
+ "description": "Through the perfect application of the Thrusting Fingers form, you can strike your opponents' weak points, force them away, and follow!\n\nAccuracy increased by 20%% of Perception, Enables \"Straight Punch (Knockback)\" and \"L-Hook (Knockback)\" techniques.\nLasts 2 turns.",
+ "min_unarmed": 4,
"unarmed_allowed": true,
- "max_stacks": 2,
- "flat_bonuses": [ [ "damage", "bash", "int", 0.5 ], [ "hit", "int", 0.2 ] ]
+ "buff_duration": 2,
+ "flat_bonuses": [ [ "hit", "per", 0.2 ] ]
}
],
- "techniques": [ "tec_zuiquan_feint", "tec_zuiquan_counter" ]
+ "techniques": [
+ "tec_wingchun_punch",
+ "tec_wingchun_hook",
+ "tec_wingchun_punch_knockback",
+ "tec_wingchun_hook_knockback",
+ "tec_wingchun_feint",
+ "tec_wingchun_counter"
+ ]
},
{
"type": "martial_art",
- "id": "style_tiger",
- "name": "Tiger Kung Fu",
- "description": "One of the five Shaolin animal styles. The Tiger focuses on relentless attacks above all else. Your Strength determines your accuracy, and your attacks do increasing damage as you continue attacking.",
- "initiate": [ "You clench your hands into ferocious, tiger-like claws.", "%s assumes a tiger-like stance." ],
- "learn_difficulty": 10,
- "arm_block": 99,
- "leg_block": 99,
+ "id": "style_zui_quan",
+ "name": "Zui Quan",
+ "description": "AKA \"drunken boxing,\" Zui Quan imitates the movement of a drunk to confuse the enemy. You gain a passive dodge bonus and accuracy bonus based on your intelligence. Moving gives you additional dodge attempts and each time you dodge, you inflict more damage with your counterattack for until the end of your next turn.",
+ "initiate": [ "You begin to sway to and fro with a confident swagger.", "%s stumbles as if pretending to be drunk." ],
+ "learn_difficulty": 8,
"static_buffs": [
{
- "id": "tiger_static",
- "name": "Tiger Strength",
- "description": "Strength provides additional damage bonus.",
+ "id": "buff_zuiquan_static",
+ "name": "Zui Quan Stance",
+ "description": "Others might think you stumble about at random but you know better. Each movement is calculated to make evading harm easier.\n\nDodging Skill increased by 15%% of Intelligence.",
+ "min_unarmed": 0,
+ "unarmed_allowed": true,
+ "flat_bonuses": [ [ "dodge", "int", 0.15 ] ]
+ },
+ {
+ "id": "buff_zuiquan_static2",
+ "name": "Advanced Zui Quan",
+ "description": "You have a greater understanding of Zui Quan. Your skills at dodging and landing attacks are much better as a result.\n\n+1 Dodge attempts, Accuracy increased by 15%% of Intelligence.",
+ "min_unarmed": 3,
"unarmed_allowed": true,
- "flat_bonuses": [ [ "damage", "bash", "str", 0.8 ] ]
+ "bonus_dodges": 1,
+ "flat_bonuses": [ [ "hit", "int", 0.15 ] ]
}
],
- "onhit_buffs": [
+ "onmove_buffs": [
{
- "id": "tiger_hit_buff",
- "name": "Tiger Fury",
- "description": "+3 Bash/atk",
+ "id": "buff_zuiquan_onmove",
+ "name": "Drunken Stumble",
+ "description": "With a few quick steps, you can completely change your orientation and dodge additional attacks.\n\n+2 Dodge attempts.\nLasts 3 turns.",
+ "min_unarmed": 5,
"unarmed_allowed": true,
- "min_unarmed": 2,
"buff_duration": 3,
- "max_stacks": 8,
- "flat_bonuses": [ [ "damage", "bash", 3.0 ] ]
+ "bonus_dodges": 2
}
],
- "techniques": [ "tec_tiger_grab" ]
+ "ondodge_buffs": [
+ {
+ "id": "buff_zuiquan_ondodge",
+ "name": "Drunken Dodging",
+ "description": "Each time you dodge, your positional advantage increases against your opponents. This makes your attacks hit harder with each successful dodge.\n\nGain Armor Penetration equal to 25%% of Intelligence.\nLasts 1 turn. Stacks 4 times.",
+ "min_unarmed": 1,
+ "unarmed_allowed": true,
+ "buff_duration": 1,
+ "max_stacks": 4,
+ "flat_bonuses": [ [ "arpen", "bash", "int", 0.25 ], [ "arpen", "cut", "int", 0.25 ], [ "arpen", "stab", "int", 0.25 ] ]
+ }
+ ],
+ "techniques": [ "tec_zuiquan_feint", "tec_zuiquan_break", "tec_zuiquan_counter" ]
},
{
"type": "martial_art",
@@ -1432,37 +1558,5 @@
}
],
"techniques": [ "tec_debug_slow", "tec_debug_arpen" ]
- },
- {
- "type": "martial_art",
- "id": "style_wingchun",
- "name": "Wing Chun",
- "description": "Wing Chun is a Chinese martial art that began by selecting the easiest-to-learn effective techniques from the various Shaolin animal forms. It has a high stance, with weight entirely on the rear leg. Wing Chun focuses on sensitivity to the opponent's direction of force, and flowing around it to get back to hitting.",
- "initiate": [
- "You take your stance and prepare to receive the gift of violence.",
- "%s patiently assumes a curiously pigeon-toed stance."
- ],
- "learn_difficulty": 8,
- "arm_block": 99,
- "leg_block": 99,
- "static_buffs": [
- {
- "id": "wingchun_static",
- "name": "Chi-Sao Sensitivity",
- "description": "Perception increases dodging ability, +1 dodges per turn",
- "unarmed_allowed": true,
- "flat_bonuses": [ [ "dodge", "per", 0.12 ] ],
- "bonus_dodges": 1
- }
- ],
- "techniques": [
- "tec_wingchun_chainpunch",
- "tec_wingchun_break",
- "tec_wingchun_feint",
- "tec_wingchun_stumble",
- "tec_wingchun_counter",
- "tec_wingchun_disarm"
- ],
- "weapons": [ "butterfly_swords", "long_pole" ]
}
]
diff --git a/data/json/martialarts_fictional.json b/data/json/martialarts_fictional.json
index 43ff2567233f3..4d677f5c9b8cd 100644
--- a/data/json/martialarts_fictional.json
+++ b/data/json/martialarts_fictional.json
@@ -171,16 +171,15 @@
"type": "martial_art",
"id": "style_toad",
"name": "Toad Kung Fu",
- "description": "One of the Five Deadly Venoms. Masters of Toad Style can focus themselves against all attacks. You can meditate by pausing, giving you armor, though you will lose focus when you move.",
+ "description": "One of the Five Deadly Venoms, used by Liang Shen. Masters of Toad Style can focus themselves to protect against all attacks. You have powerful armor against physical attacks, though you will lose focus when you move. You can meditate by pausing, giving yourself more armor for a short time.",
"initiate": [ "You pause for a moment and focus on your invincible body.", "%s assumes a toad-like stance." ],
"learn_difficulty": 10,
"arm_block": 3,
- "leg_block": 99,
"static_buffs": [
{
- "id": "toad_static",
+ "id": "buff_toad_static",
"name": "Toad's Iron Skin",
- "description": "Gain up to +6 armor while standing still",
+ "description": "Your body is as strong as iron but only if you don't move.\n\n+6 bash, cut, and stab armor.",
"//": "FWIW, this is twice the amount of armor provided by bionic plating.",
"unarmed_allowed": true,
"flat_bonuses": [ [ "armor", "bash", 6.0 ], [ "armor", "cut", 6.0 ], [ "armor", "stab", 6.0 ] ]
@@ -188,59 +187,74 @@
],
"onmove_buffs": [
{
- "id": "toad_armor_dissipate",
+ "id": "buff_toad_onmove",
"name": "Iron Skin Dissipation",
- "description": "Iron Skin softens when you move!",
+ "description": "Moving causes you to lose your iron skin.\n\n-1 bash, cut, and stab armor.\nLasts 6 turns. Stacks 6 times.",
"unarmed_allowed": true,
- "min_unarmed": 0,
"buff_duration": 6,
"max_stacks": 6,
"flat_bonuses": [ [ "armor", "bash", -1.0 ], [ "armor", "cut", -1.0 ], [ "armor", "stab", -1.0 ] ]
}
],
- "techniques": [ "tec_toad_grab" ]
+ "onpause_buffs": [
+ {
+ "id": "buff_toad_onpause",
+ "name": "Toad's Meditation",
+ "description": "By concentrating for a moment, you can bolster the strength of your iron skin.\n\n+3 bash, cut, and stab armor.\nLasts 2 turns.",
+ "min_unarmed": 5,
+ "unarmed_allowed": true,
+ "buff_duration": 2,
+ "flat_bonuses": [ [ "armor", "bash", 3.0 ], [ "armor", "cut", 3.0 ], [ "armor", "stab", 3.0 ] ]
+ }
+ ],
+ "ongethit_buffs": [
+ {
+ "id": "toad_ongethit",
+ "name": "Toad's Venom",
+ "description": "Your venom is just another lesson about the strength of your iron body.\n\n+2 bash damage.\nLasts 5 turns.",
+ "min_unarmed": 2,
+ "unarmed_allowed": true,
+ "buff_duration": 5,
+ "flat_bonuses": [ [ "damage", "bash", 2.0 ] ]
+ }
+ ],
+ "techniques": [ "tec_toad_counter", "tec_toad_critcounter", "tec_toad_grab" ]
},
{
"type": "martial_art",
"id": "style_venom_snake",
"name": "Viper Kung Fu",
- "description": "A legacy of the Five Deadly Venoms. Viper Style has a unique three-part combo, which initiates on a dodge, then counters with a stunning chop and the legendary Viper Strike.",
+ "description": "A legacy of the Five Deadly Venoms, use by Qi Dong. Viper Style (originally called Snake Style) has a unique three-part combo, which initiates on a dodge, then follows up with a stunning Viper Bite and then finishes with the legendary Viper Strike.",
"initiate": [ "You prepare to strike your foes' weaknesses.", "%s assumes a viper-like stance." ],
"learn_difficulty": 10,
- "arm_block": 99,
- "leg_block": 99,
+ "arm_block": 1,
"static_buffs": [
{
- "id": "venom_snake_static",
- "name": "Viper Patience",
- "description": "+2 Dodge. Dodging an attack initiates a combo.",
+ "id": "buff_venom_snake_static",
+ "name": "Viper's Patience",
+ "description": "Every snake waits for the perfect moment to strike. Turn your opponents' mistakes into your opportunity to strike!\n\n+1.0 Dodge skill.",
+ "min_unarmed": 0,
"unarmed_allowed": true,
- "flat_bonuses": [ [ "dodge", 2.0 ] ]
+ "flat_bonuses": [ [ "dodge", 1.0 ] ]
}
],
"ondodge_buffs": [
{
- "id": "venom_snake_combo_initiate",
- "name": "Viper Ambush",
- "description": "You've lured 'em in! Your next attack will be a Viper Bite.",
+ "id": "buff_venom_snake_ondodge1",
+ "name": "Viper's Ambush",
+ "description": "Your evasiveness has left your opponent wide open to painful bite.\n\nEnables \"Viper Bite\" technique.\nLasts 1 turn.",
+ "min_unarmed": 2,
"unarmed_allowed": true,
- "min_unarmed": 0,
- "buff_duration": 2,
- "max_stacks": 1,
- "mult_bonuses": [ [ "damage", "bash", 1.5 ] ]
- }
- ],
- "onhit_buffs": [
+ "buff_duration": 1
+ },
{
- "id": "venom_snake_combo_continue",
- "name": "Viper Lock",
- "description": "You bit true! Your next attack will be the Viper Strike!",
+ "id": "buff_venom_snake_ondodge2",
+ "name": "Viper's Venom",
+ "description": "Your venom is a harsh reminder to never tease a predator.\n\n+2 bash damage.\nLasts 3 turn.",
+ "min_unarmed": 1,
"unarmed_allowed": true,
- "min_unarmed": 0,
- "req_buffs": [ "venom_snake_combo_initiate" ],
- "buff_duration": 2,
- "max_stacks": 1,
- "mult_bonuses": [ [ "damage", "bash", 3 ] ]
+ "buff_duration": 3,
+ "flat_bonuses": [ [ "damage", "bash", 2.0 ] ]
}
],
"techniques": [
@@ -401,43 +415,52 @@
"type": "technique",
"id": "tec_venom_snake_feint",
"name": "Viper Hiss",
+ "messages": [ "You hiss threateningly at %s", " hisses threateningly at %s" ],
+ "min_unarmed": 3,
"unarmed_allowed": true,
"melee_allowed": true,
"defensive": true,
- "miss_recovery": true,
- "messages": [ "You hiss threateningly at %s", " hisses threateningly at %s" ]
+ "miss_recovery": true
},
{
"type": "technique",
"id": "tec_venom_snake_rapid",
"name": "Viper Fist",
- "min_unarmed": 3,
+ "messages": [ "You quickly chop %s", " quickly chops %s" ],
+ "min_unarmed": 0,
"unarmed_allowed": true,
- "mult_bonuses": [ [ "movecost", 0.5 ], [ "damage", "bash", 0.66 ], [ "damage", "cut", 0.66 ], [ "damage", "stab", 0.66 ] ],
- "messages": [ "You quickly chop %s", " quickly chops %s" ]
+ "mult_bonuses": [ [ "movecost", 0.5 ], [ "damage", "bash", 0.66 ], [ "damage", "cut", 0.66 ], [ "damage", "stab", 0.66 ] ]
},
{
"type": "technique",
"id": "tec_venom_snake_bite",
"name": "Viper Bite",
- "min_unarmed": 0,
+ "messages": [ "You lash out at %s with a Viper Bite", " lash out at %s with a Viper Bite" ],
+ "min_unarmed": 2,
"unarmed_allowed": true,
- "req_buffs": [ "venom_snake_combo_initiate" ],
- "messages": [ "You Snakebite %s", " Snakebites %s" ]
+ "req_buffs": [ "buff_venom_snake_ondodge1" ],
+ "crit_tec": true,
+ "stun_dur": 2,
+ "mult_bonuses": [ [ "damage", "bash", 1.33 ] ]
},
{
"type": "technique",
"id": "tec_venom_snake_strike",
"name": "Viper Strike",
- "min_unarmed": 0,
+ "messages": [ "You hit %s with a spectacular Viper Strike", " hits %s with a spectacular Viper Strike" ],
+ "min_unarmed": 5,
"unarmed_allowed": true,
- "req_buffs": [ "venom_snake_combo_continue" ],
- "messages": [ "You Viper Strike %s", " Viper Strikes %s" ]
+ "stunned_target": true,
+ "weighting": 2,
+ "crit_ok": true,
+ "mult_bonuses": [ [ "damage", "bash", 2.0 ] ]
},
{
"type": "technique",
"id": "tec_venom_snake_break",
"name": "Viper Writhe",
+ "messages": [ "The %s tries to grab you, but you writhe free!", "The %s tries to grab , but they writhe free!" ],
+ "min_unarmed": 4,
"unarmed_allowed": true,
"melee_allowed": true,
"defensive": true,
@@ -476,15 +499,39 @@
"stun_dur": 1,
"mult_bonuses": [ [ "damage", "bash", 1.25 ] ]
},
+ {
+ "type": "technique",
+ "id": "tec_toad_counter",
+ "name": "Toad Smack",
+ "messages": [ "You disregard %s's attack and knock them down", " disregards %s's attack and knocks them down" ],
+ "min_unarmed": 4,
+ "unarmed_allowed": true,
+ "block_counter": true,
+ "down_dur": 1,
+ "mult_bonuses": [ [ "movecost", 0.0 ], [ "damage", "bash", 1.25 ] ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_toad_critcounter",
+ "name": "Toad Slam",
+ "messages": [ "You meet %s's attack head on with a stunning counter", " meet %s's attack head on with a stunning counter" ],
+ "min_unarmed": 4,
+ "unarmed_allowed": true,
+ "block_counter": true,
+ "crit_tec": true,
+ "down_dur": 1,
+ "mult_bonuses": [ [ "movecost", 0.0 ], [ "damage", "bash", 2.0 ] ]
+ },
{
"type": "technique",
"id": "tec_toad_grab",
"name": "Toad's Tongue",
- "min_unarmed": 4,
+ "messages": [ "You snatch and slug %s", " snatches and slug %s" ],
+ "min_unarmed": 1,
"unarmed_allowed": true,
- "mult_bonuses": [ [ "movecost", 0.5 ] ],
+ "crit_ok": true,
"down_dur": 1,
- "messages": [ "You snatch and slug %s", " snatches and slug %s" ]
+ "mult_bonuses": [ [ "movecost", 0.5 ] ]
},
{
"type": "technique",
diff --git a/data/json/materials.json b/data/json/materials.json
index 8291a878f1d0c..c733aa1eacc5c 100644
--- a/data/json/materials.json
+++ b/data/json/materials.json
@@ -737,6 +737,34 @@
{ "fuel": 1, "smoke": 3, "burn": 2 }
]
},
+ {
+ "type": "material",
+ "ident": "lycra",
+ "name": "Lycra",
+ "//": "not actually pure lycra, but poly/nylon and lycra blend",
+ "density": 2,
+ "specific_heat_liquid": 1.7,
+ "specific_heat_solid": 1.7,
+ "latent_heat": 27,
+ "soft": true,
+ "reinforces": true,
+ "bash_resist": 2,
+ "cut_resist": 2,
+ "acid_resist": 9,
+ "fire_resist": 2,
+ "elec_resist": 2,
+ "chip_resist": 6,
+ "repaired_with": "lycra_patch",
+ "salvaged_into": "lycra_patch",
+ "dmg_adj": [ "ripped", "torn", "shredded", "tattered" ],
+ "bash_dmg_verb": "ripped",
+ "cut_dmg_verb": "cut",
+ "burn_data": [
+ { "fuel": 1, "smoke": 2, "burn": 1, "volume_per_turn": "650 ml" },
+ { "fuel": 1, "smoke": 3, "burn": 3 },
+ { "fuel": 1, "smoke": 5, "burn": 5 }
+ ]
+ },
{
"type": "material",
"ident": "milk",
@@ -1103,6 +1131,34 @@
"bash_dmg_verb": "dented",
"cut_dmg_verb": "scratched"
},
+ {
+ "type": "material",
+ "ident": "nylon",
+ "name": "Synthetic Fabric",
+ "//": "blend between nylon 6 and 6,6",
+ "density": 2,
+ "specific_heat_liquid": 1.7,
+ "specific_heat_solid": 1.7,
+ "latent_heat": 42,
+ "soft": true,
+ "reinforces": true,
+ "bash_resist": 3,
+ "cut_resist": 3,
+ "acid_resist": 9,
+ "fire_resist": 2,
+ "elec_resist": 2,
+ "chip_resist": 7,
+ "repaired_with": "nylon",
+ "salvaged_into": "nylon",
+ "dmg_adj": [ "ripped", "torn", "shredded", "tattered" ],
+ "bash_dmg_verb": "ripped",
+ "cut_dmg_verb": "cut",
+ "burn_data": [
+ { "fuel": 1, "smoke": 1, "burn": 1, "volume_per_turn": "650 ml" },
+ { "fuel": 1, "smoke": 1, "burn": 1 },
+ { "fuel": 1, "smoke": 1, "burn": 2 }
+ ]
+ },
{
"type": "material",
"ident": "tin",
diff --git a/data/json/monsterdrops/monster_drops.json b/data/json/monsterdrops/monster_drops.json
index 35945faecd42f..292cf5b945653 100644
--- a/data/json/monsterdrops/monster_drops.json
+++ b/data/json/monsterdrops/monster_drops.json
@@ -5,21 +5,99 @@
"//": "contains cloth for an average zombie",
"id": "default_zombie_clothes",
"entries": [
- { "group": "pants", "damage": [ 1, 4 ] },
- { "group": "shirts", "damage": [ 1, 4 ] },
- { "group": "shoes", "damage": [ 1, 4 ] },
- { "group": "underwear", "damage": [ 1, 4 ] },
- { "group": "jackets", "damage": [ 1, 4 ], "prob": 20 },
- { "group": "suits", "damage": [ 1, 4 ], "prob": 20 },
+ { "group": "coats_unisex", "damage": [ 1, 4 ], "prob": 20 },
+ { "group": "common_gloves", "damage": [ 1, 4 ], "prob": 20 },
+ { "group": "hatstore_hats", "damage": [ 1, 4 ], "prob": 20 },
+ { "group": "scarfs_unisex", "damage": [ 1, 4 ], "prob": 20 },
+ { "group": "accesories_personal_unisex", "damage": [ 1, 4 ], "prob": 15 },
{
"distribution": [
- { "item": "wristwatch", "prob": 15 },
- { "item": "pocketwatch", "prob": 5 },
- { "item": "gold_watch", "prob": 5, "damage": [ 1, 4 ] },
- { "item": "diving_watch", "prob": 10, "damage": [ 1, 4 ] },
- { "item": "sf_watch", "prob": 5, "damage": [ 1, 4 ] }
- ],
- "prob": 20
+ {
+ "collection": [
+ {
+ "distribution": [
+ { "group": "male_underwear", "prob": 90, "damage": [ 1, 4 ] },
+ { "item": "union_suit", "prob": 10, "damage": [ 1, 4 ] }
+ ]
+ },
+ {
+ "distribution": [
+ {
+ "collection": [
+ { "group": "pants_male", "prob": 60, "damage": [ 1, 4 ] },
+ { "group": "shirts_unisex", "prob": 60, "damage": [ 1, 4 ] },
+ { "item": "leather_belt", "prob": 30, "damage": [ 1, 4 ] }
+ ]
+ },
+ { "item": "suit", "prob": 5, "damage": [ 1, 4 ] },
+ { "item": "tux", "prob": 5, "damage": [ 1, 4 ] },
+ { "item": "thawb", "prob": 10, "damage": [ 1, 4 ] },
+ { "item": "cassock", "prob": 10, "damage": [ 1, 4 ] },
+ { "item": "haori", "prob": 10, "damage": [ 1, 4 ] }
+ ]
+ },
+ { "group": "neckties", "prob": 15, "damage": [ 1, 4 ] },
+ { "group": "shoes_unisex", "prob": 30, "damage": [ 1, 4 ] },
+ { "group": "socks_unisex", "damage": [ 1, 4 ], "prob": 50 },
+ { "group": "accesories_personal_mens", "prob": 15, "damage": [ 1, 4 ] }
+ ]
+ },
+ {
+ "collection": [
+ { "group": "female_underwear", "prob": 90, "damage": [ 1, 4 ] },
+ { "group": "accesories_personal_womens", "prob": 15, "damage": [ 1, 4 ] },
+ {
+ "distribution": [
+ {
+ "collection": [
+ { "group": "pants_female", "prob": 60, "damage": [ 1, 4 ] },
+ { "group": "shoes_unisex", "prob": 30, "damage": [ 1, 4 ] },
+ { "group": "shirts_unisex", "prob": 60, "damage": [ 1, 4 ] },
+ {
+ "distribution": [
+ {
+ "distribution": [ { "item": "stockings", "prob": 50, "damage": [ 1, 4 ] }, { "item": "tights", "prob": 50, "damage": [ 1, 4 ] } ]
+ },
+ { "group": "socks_unisex", "prob": 50, "damage": [ 1, 4 ] }
+ ]
+ }
+ ],
+ "prob": 70
+ },
+ {
+ "collection": [
+ {
+ "distribution": [
+ { "item": "gown", "prob": 10, "damage": [ 1, 4 ] },
+ { "item": "dress", "prob": 70, "damage": [ 1, 4 ] },
+ { "item": "sundress", "prob": 50, "damage": [ 1, 4 ] }
+ ]
+ },
+ { "group": "dress_shoes", "prob": 30, "damage": [ 1, 4 ] },
+ {
+ "distribution": [ { "item": "stockings", "prob": 50, "damage": [ 1, 4 ] }, { "item": "tights", "prob": 50, "damage": [ 1, 4 ] } ]
+ },
+ { "item": "long_glove_white", "prob": 20, "damage": [ 1, 4 ] }
+ ],
+ "prob": 20
+ },
+ {
+ "collection": [
+ { "item": "dress_wedding", "damage": [ 1, 4 ] },
+ { "item": "veil_wedding", "damage": [ 1, 4 ] },
+ { "group": "dress_shoes", "prob": 30, "damage": [ 1, 4 ] },
+ {
+ "distribution": [ { "item": "stockings", "prob": 50, "damage": [ 1, 4 ] }, { "item": "tights", "prob": 50, "damage": [ 1, 4 ] } ]
+ },
+ { "item": "long_glove_white", "prob": 20, "damage": [ 1, 4 ] }
+ ],
+ "prob": 10
+ }
+ ]
+ }
+ ]
+ }
+ ]
},
{
"distribution": [
@@ -27,12 +105,7 @@
{ "group": "clothing_biker", "damage": [ 1, 4 ], "prob": 50 }
],
"prob": 10
- },
- { "group": "common_gloves", "damage": [ 1, 4 ], "prob": 20 },
- { "group": "hatstore_hats", "damage": [ 1, 4 ], "prob": 20 },
- { "group": "hatstore_accessories", "damage": [ 1, 4 ], "prob": 20 },
- { "group": "clothing_glasses", "damage": [ 1, 4 ], "prob": 20 },
- { "group": "jewelry_accessories", "prob": 15 }
+ }
]
},
{
@@ -414,5 +487,87 @@
{ "item": "cable", "charges-min": 20, "charges-max": 50 },
{ "item": "amplifier", "count": [ 0, 3 ] }
]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "//": "contains cloth for an average zombie child",
+ "id": "default_zombie_children_clothes",
+ "entries": [
+ { "group": "coats_unisex", "damage": [ 1, 4 ], "prob": 20 },
+ { "group": "common_gloves", "damage": [ 1, 4 ], "prob": 20 },
+ { "group": "hatstore_hats", "damage": [ 1, 4 ], "prob": 20 },
+ { "group": "scarfs_unisex", "damage": [ 1, 4 ], "prob": 20 },
+ { "group": "accesories_personal_unisex", "damage": [ 1, 4 ], "prob": 15 },
+ {
+ "distribution": [
+ {
+ "collection": [
+ {
+ "distribution": [
+ { "group": "male_underwear", "prob": 90, "damage": [ 1, 4 ] },
+ { "item": "union_suit", "prob": 10, "damage": [ 1, 4 ] }
+ ]
+ },
+ {
+ "distribution": [
+ {
+ "collection": [
+ { "group": "pants_male", "prob": 60, "damage": [ 1, 4 ] },
+ { "group": "shirts_unisex", "prob": 60, "damage": [ 1, 4 ] },
+ { "item": "leather_belt", "prob": 30, "damage": [ 1, 4 ] }
+ ]
+ },
+ { "item": "suit", "prob": 5, "damage": [ 1, 4 ] },
+ { "item": "tux", "prob": 5, "damage": [ 1, 4 ] }
+ ]
+ },
+ { "group": "neckties", "prob": 15, "damage": [ 1, 4 ] },
+ { "group": "shoes_unisex", "prob": 30, "damage": [ 1, 4 ] },
+ { "group": "socks_unisex", "damage": [ 1, 4 ], "prob": 50 },
+ { "group": "accesories_personal_mens", "prob": 15, "damage": [ 1, 4 ] }
+ ]
+ },
+ {
+ "collection": [
+ { "group": "female_underwear", "prob": 90, "damage": [ 1, 4 ] },
+ { "group": "accesories_personal_womens", "prob": 15, "damage": [ 1, 4 ] },
+ {
+ "distribution": [
+ {
+ "collection": [
+ { "group": "pants_female", "prob": 60, "damage": [ 1, 4 ] },
+ { "group": "shoes_unisex", "prob": 30, "damage": [ 1, 4 ] },
+ { "group": "shirts_unisex", "prob": 60, "damage": [ 1, 4 ] },
+ {
+ "distribution": [
+ {
+ "distribution": [ { "item": "stockings", "prob": 50, "damage": [ 1, 4 ] }, { "item": "tights", "prob": 50, "damage": [ 1, 4 ] } ]
+ },
+ { "group": "socks_unisex", "prob": 50, "damage": [ 1, 4 ] }
+ ]
+ }
+ ],
+ "prob": 80
+ },
+ {
+ "collection": [
+ {
+ "distribution": [ { "item": "dress", "prob": 70, "damage": [ 1, 4 ] }, { "item": "sundress", "prob": 50, "damage": [ 1, 4 ] } ]
+ },
+ { "group": "dress_shoes", "prob": 30, "damage": [ 1, 4 ] },
+ {
+ "distribution": [ { "item": "stockings", "prob": 50, "damage": [ 1, 4 ] }, { "item": "tights", "prob": 50, "damage": [ 1, 4 ] } ]
+ }
+ ],
+ "prob": 20
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
}
]
diff --git a/data/json/monstergroups/mi-go.json b/data/json/monstergroups/mi-go.json
index 6e100677d855d..d980fade9dd7b 100644
--- a/data/json/monstergroups/mi-go.json
+++ b/data/json/monstergroups/mi-go.json
@@ -3,7 +3,7 @@
"type": "monstergroup",
"name": "GROUP_MI-GO_CAMP_OM",
"//": "Mi-go raiding parties spawning in the vicinity of a mi-go camp. Puts slavers later on and keeps large groups from spawning until the player can deal with them.",
- "default": "mon_mi_go_slaver",
+ "default": "mon_mi_go",
"monsters": [
{ "monster": "mon_mi_go", "freq": 100, "cost_multiplier": 20, "pack_size": [ 2, 4 ] },
{ "monster": "mon_mi_go", "freq": 100, "cost_multiplier": 10, "pack_size": [ 4, 8 ] },
@@ -18,7 +18,7 @@
"type": "monstergroup",
"name": "GROUP_MI-GO_BASE_COMMON",
"//": "Basic mi-go base defenders.",
- "default": "mon_mi_go_slaver",
+ "default": "mon_mi_go_guard",
"monsters": [
{ "monster": "mon_mi_go", "freq": 100, "cost_multiplier": 1, "pack_size": [ 2, 4 ] },
{ "monster": "mon_mi_go", "freq": 100, "cost_multiplier": 3, "pack_size": [ 2, 4 ] },
diff --git a/data/json/monstergroups/monstergroups.json b/data/json/monstergroups/monstergroups.json
index 6098eb62aefde..43a78b86e62ba 100644
--- a/data/json/monstergroups/monstergroups.json
+++ b/data/json/monstergroups/monstergroups.json
@@ -5266,6 +5266,7 @@
"monsters": [
{ "monster": "mon_zombie_technician", "freq": 150, "cost_multiplier": 1 },
{ "monster": "mon_zombie_fat", "freq": 150, "cost_multiplier": 1 },
+ { "monster": "mon_zombie_wretched", "freq": 120, "cost_multiplier": 1 },
{ "monster": "mon_zombie_crawler", "freq": 100, "cost_multiplier": 1 },
{ "monster": "mon_zombie_survivor", "freq": 70, "cost_multiplier": 1 }
]
@@ -5350,5 +5351,25 @@
{ "monster": "mon_dog_auscattle", "freq": 50, "cost_multiplier": 0 },
{ "monster": "mon_dog_auscattle_pup", "freq": 5, "cost_multiplier": 0 }
]
+ },
+ {
+ "name": "GROUP_HOTEL_POOL",
+ "type": "monstergroup",
+ "default": "mon_zombie_swimmer",
+ "monsters": [
+ { "monster": "mon_zombie_swimmer", "freq": 100, "cost_multiplier": 2 },
+ { "monster": "mon_zombie_swimmer", "freq": 50, "cost_multiplier": 10, "pack_size": [ 3, 8 ] },
+ { "monster": "mon_zombie_child", "freq": 35, "cost_multiplier": 1 }
+ ]
+ },
+ {
+ "name": "GROUP_HOTEL_GYM",
+ "type": "monstergroup",
+ "default": "mon_zombie_fat",
+ "monsters": [
+ { "monster": "mon_zombie_fat", "freq": 30, "cost_multiplier": 2 },
+ { "monster": "mon_zombie_fat", "freq": 15, "cost_multiplier": 8, "pack_size": [ 2, 6 ] },
+ { "monster": "mon_zombie_tough", "freq": 8, "cost_multiplier": 3 }
+ ]
}
]
diff --git a/data/json/monsters/drones.json b/data/json/monsters/drones.json
index 2ffd504059a9c..36673a089fa3c 100644
--- a/data/json/monsters/drones.json
+++ b/data/json/monsters/drones.json
@@ -112,7 +112,7 @@
"copy-from": "base_drone",
"type": "MONSTER",
"name": "mininuke hack",
- "description": "Many times as large as a normal manhack, this flying quadcopter drone appears to have a mininuke inside. If this is targeting you... Run.",
+ "description": "Many times as large as a normal manhack, this flying quadcopter drone appears to have a mininuke inside. If this is targeting you… Run.",
"diff": 40,
"hp": 20,
"speed": 150,
diff --git a/data/json/monsters/fish.json b/data/json/monsters/fish.json
index 28be6b66aaa69..d7fa4c1a39775 100644
--- a/data/json/monsters/fish.json
+++ b/data/json/monsters/fish.json
@@ -457,7 +457,7 @@
"id": "mon_fish_lobster",
"type": "MONSTER",
"name": "lobster",
- "description": "These things were once considered pests not worth eating, then some marketing genius started selling them to people as a delicacy and they took off in popularity... and price.",
+ "description": "These things were once considered pests not worth eating, then some marketing genius started selling them to people as a delicacy and they took off in popularity… and price.",
"default_faction": "fish",
"bodytype": "crab",
"categories": [ "WILDLIFE" ],
@@ -486,7 +486,7 @@
"id": "mon_fish_crayfish",
"type": "MONSTER",
"name": { "str": "crayfish", "str_pl": "crayfish" },
- "description": "If you could get ahold of a bunch more of these, a hefty pot of boiling water, and some spicy seasonings...",
+ "description": "If you could get ahold of a bunch more of these, a hefty pot of boiling water, and some spicy seasonings…",
"default_faction": "fish",
"bodytype": "crab",
"categories": [ "WILDLIFE" ],
diff --git a/data/json/monsters/mammal.json b/data/json/monsters/mammal.json
index 4f80a88c41a27..580b8e9f310d7 100644
--- a/data/json/monsters/mammal.json
+++ b/data/json/monsters/mammal.json
@@ -312,7 +312,7 @@
"melee_cut": 6,
"dodge": 2,
"armor_bash": 2,
- "starting_ammo": { "milk": 10 },
+ "starting_ammo": { "milk_raw": 10 },
"path_settings": { "max_dist": 10 },
"anger_triggers": [ "HURT" ],
"fear_triggers": [ "PLAYER_CLOSE" ],
@@ -1542,7 +1542,7 @@
"armor_cut": 2,
"vision_day": 0,
"vision_night": 0,
- "harvest": "mammal_large_leather",
+ "harvest": "mutant_mammal_large_leather",
"special_attacks": [ [ "SHRIEK_ALERT", 10 ], [ "SHRIEK_STUN", 1 ], { "type": "bite", "cooldown": 6 }, [ "impale", 10 ] ],
"anger_triggers": [ "HURT", "SOUND", "STALK" ],
"fear_triggers": [ "FIRE" ],
@@ -1770,7 +1770,7 @@
"id": "mon_sewer_rat",
"type": "MONSTER",
"name": "sewer rat",
- "description": "A worm-tailed rodent with long whiskers and beady eyes. The way it squeaks makes it sound... hungry.",
+ "description": "A worm-tailed rodent with long whiskers and beady eyes. The way it squeaks makes it sound… hungry.",
"default_faction": "rat",
"bodytype": "pig",
"categories": [ "WILDLIFE" ],
@@ -1850,7 +1850,7 @@
"melee_dice_sides": 6,
"melee_cut": 2,
"dodge": 2,
- "starting_ammo": { "milk": 2 },
+ "starting_ammo": { "milk_raw": 2 },
"anger_triggers": [ ],
"harvest": "mammal_large_wool",
"reproduction": { "baby_monster": "mon_sheep_lamb", "baby_count": 1, "baby_timer": 20 },
diff --git a/data/json/monsters/monsters.json b/data/json/monsters/monsters.json
index a3b7399d9e864..b187f431bcd6a 100644
--- a/data/json/monsters/monsters.json
+++ b/data/json/monsters/monsters.json
@@ -489,7 +489,7 @@
"id": "mon_boomer_huge",
"type": "MONSTER",
"name": "huge boomer",
- "description": "This boomer, normally swollen and ready to burst, has strengthened and solidified. The bile dribbling from its mouth also appears to have changed...",
+ "description": "This boomer, normally swollen and ready to burst, has strengthened and solidified. The bile dribbling from its mouth also appears to have changed…",
"default_faction": "zombie",
"bodytype": "human",
"species": [ "ZOMBIE", "HUMAN" ],
@@ -531,6 +531,56 @@
"FILTHY"
]
},
+ {
+ "id": "mon_devourer",
+ "type": "MONSTER",
+ "name": "dissoluted devourer",
+ "description": "Human bodies fused together into a colossus with heads and limbs sticking out of its bloated body. You may have trouble estimating its healthiness and its capabilities might change.",
+ "default_faction": "zombie",
+ "bodytype": "human",
+ "species": [ "ZOMBIE", "HUMAN" ],
+ "diff": 8,
+ "volume": "62500 ml",
+ "weight": 81500,
+ "hp": 112,
+ "speed": 60,
+ "material": [ "flesh" ],
+ "symbol": "Z",
+ "color": "dark_gray_yellow",
+ "aggression": 100,
+ "morale": 100,
+ "melee_skill": 4,
+ "melee_dice": 3,
+ "melee_dice_sides": 3,
+ "melee_cut": 0,
+ "armor_bash": 5,
+ "armor_cut": 5,
+ "vision_night": 3,
+ "harvest": "zombie",
+ "special_attacks": [ [ "GRAB", 7 ], [ "scratch", 20 ], [ "ZOMBIE_FUSE", 80 ] ],
+ "death_drops": {
+ "subtype": "collection",
+ "groups": [ "default_zombie_death_drops", "default_zombie_death_drops", "default_zombie_death_drops" ]
+ },
+ "death_function": [ "NORMAL" ],
+ "flags": [
+ "SEES",
+ "HEARS",
+ "SMELLS",
+ "STUMBLES",
+ "WARM",
+ "BASHES",
+ "GROUP_BASH",
+ "POISON",
+ "NO_BREATHE",
+ "REVIVES",
+ "BILE_BLOOD",
+ "PUSH_MON",
+ "PATH_AVOID_DANGER_1",
+ "FILTHY",
+ "REGENERATES_1"
+ ]
+ },
{
"id": "mon_breather",
"type": "MONSTER",
@@ -618,7 +668,7 @@
"id": "mon_prototype_cyborg",
"type": "MONSTER",
"name": "prototype cyborg",
- "description": "A human fused with a mess of metal parts and wires. While its eyes are empty, flashes of pain pass across its face reminiscent of the person trapped in this grotesque body. With enough surgical skills one might be able to give them back some humanity. If only they cared...",
+ "description": "A human fused with a mess of metal parts and wires. While its eyes are empty, flashes of pain pass across its face reminiscent of the person trapped in this grotesque body. With enough surgical skills one might be able to give them back some humanity. If only they cared…",
"default_faction": "science",
"bodytype": "human",
"species": [ "ROBOT" ],
@@ -743,7 +793,7 @@
"melee_dice_sides": 6,
"melee_cut": 0,
"dodge": 3,
- "harvest": "human",
+ "harvest": "mutant_human",
"path_settings": { "max_dist": 10 },
"special_attacks": [ [ "scratch", 15 ] ],
"death_drops": {
@@ -1514,7 +1564,7 @@
"armor_bash": 4,
"armor_cut": 4,
"harvest": "fungaloid",
- "special_attacks": [ [ "FUNGUS_GROWTH", 100 ] ],
+ "special_attacks": [ [ "FUNGUS_GROWTH", 10000 ] ],
"death_function": [ "NORMAL" ],
"flags": [ "HEARS", "POISON", "NO_BREATHE", "NOHEAD" ]
},
@@ -1710,7 +1760,7 @@
"melee_dice_sides": 6,
"melee_cut": 0,
"armor_bash": 2,
- "harvest": "meatslug",
+ "harvest": "mutant_meatslug",
"death_function": [ "NORMAL" ],
"flags": [ "DIGS", "HEARS", "GOODHEARING", "WARM" ]
},
@@ -2313,7 +2363,7 @@
"melee_dice_sides": 4,
"melee_cut": 0,
"dodge": 5,
- "harvest": "human",
+ "harvest": "mutant_human",
"death_drops": {
"subtype": "collection",
"groups": [ [ "subway", 40 ], [ "sewer", 20 ], [ "trash", 5 ], [ "bedroom", 1 ], [ "dresser", 5 ], [ "ammo", 18 ] ]
@@ -2491,7 +2541,7 @@
"id": "mon_shia",
"type": "MONSTER",
"name": { "str": "Shia LaBeouf", "str_pl": "Shia LaBeouf" },
- "description": "Living in the woods, \nkilling for sport, \neating all the bodies, \nactual cannibal Shia LaBeouf.",
+ "description": "Living in the woods,\nkilling for sport,\neating all the bodies,\nactual cannibal Shia LaBeouf.",
"default_faction": "zombie",
"bodytype": "human",
"species": [ "ZOMBIE" ],
@@ -2744,7 +2794,7 @@
"armor_bash": 8,
"armor_cut": 2,
"vision_day": 30,
- "harvest": "meatslug",
+ "harvest": "mutant_meatslug",
"special_attacks": [ [ "ACID", 10 ] ],
"anger_triggers": [ "PLAYER_CLOSE" ],
"death_function": [ "NORMAL" ],
@@ -2962,7 +3012,7 @@
"melee_dice_sides": 6,
"melee_cut": 3,
"armor_bash": 2,
- "harvest": "meatslug",
+ "harvest": "mutant_meatslug",
"death_function": [ "WORM" ],
"flags": [ "DIGS", "HEARS", "GOODHEARING", "WARM" ]
},
@@ -3102,6 +3152,54 @@
"FILTHY"
]
},
+ {
+ "id": "mon_zombie_wretched",
+ "type": "MONSTER",
+ "name": "wretched puker",
+ "description": "A degenerate corpse, shambling as it walks. Several junks and waste materials have unified into its skin and wounds around it reeks in black goo.",
+ "default_faction": "zombie",
+ "bodytype": "human",
+ "species": [ "ZOMBIE", "HUMAN" ],
+ "diff": 2,
+ "volume": "62500 ml",
+ "//": "Higher weight from attached junks.",
+ "weight": 84500,
+ "hp": 55,
+ "speed": 65,
+ "material": [ "flesh" ],
+ "symbol": "Z",
+ "looks_like": "mon_zombie_acidic",
+ "color": "dark_gray_yellow",
+ "aggression": 100,
+ "morale": 100,
+ "melee_skill": 2,
+ "melee_dice": 2,
+ "melee_dice_sides": 2,
+ "melee_cut": 1,
+ "vision_day": 14,
+ "harvest": "zombie",
+ "special_attacks": [ [ "ACID_BARF", 22 ] ],
+ "death_drops": "default_zombie_death_drops",
+ "death_function": [ "ACID", "NORMAL" ],
+ "burn_into": "mon_zombie_scorched",
+ "upgrades": { "half_life": 8, "into": "mon_zombie_acidic" },
+ "flags": [
+ "SEES",
+ "HEARS",
+ "SMELLS",
+ "STUMBLES",
+ "WARM",
+ "BASHES",
+ "GROUP_BASH",
+ "POISON",
+ "ACIDPROOF",
+ "ACID_BLOOD",
+ "NO_BREATHE",
+ "REVIVES",
+ "PUSH_MON",
+ "FILTHY"
+ ]
+ },
{
"id": "mon_zombie_acidic",
"type": "MONSTER",
@@ -3640,7 +3738,7 @@
"id": "mon_zombie_dancer",
"type": "MONSTER",
"name": "zombie dancer",
- "description": "The foulest stench is in the air, \nThe funk of forty thousand years, \nAnd grisly ghouls from every tomb, \nAre closing in to seal your doom!\n\nThe dancer doesn't even notice you, it seems like something nearby is controlling it.",
+ "description": "The foulest stench is in the air,\nThe funk of forty thousand years,\nAnd grisly ghouls from every tomb,\nAre closing in to seal your doom!\n\nThe dancer doesn't even notice you, it seems like something nearby is controlling it.",
"default_faction": "zombie",
"bodytype": "human",
"species": [ "ZOMBIE", "HUMAN" ],
@@ -4428,7 +4526,7 @@
"id": "mon_zombie_jackson",
"type": "MONSTER",
"name": "Thriller",
- "description": "And though you fight to stay alive, \nYour body starts to shiver. \nFor no mere mortal can resist, \nThe evil of the thriller.",
+ "description": "And though you fight to stay alive,\nYour body starts to shiver.\nFor no mere mortal can resist,\nThe evil of the thriller.",
"default_faction": "zombie",
"bodytype": "human",
"species": [ "ZOMBIE", "HUMAN" ],
@@ -4727,6 +4825,7 @@
"death_drops": "default_zombie_death_drops",
"death_function": [ "NORMAL" ],
"burn_into": "mon_zombie_scorched",
+ "upgrades": { "half_life": 23, "into": "mon_devourer" },
"flags": [
"SEES",
"HEARS",
diff --git a/data/json/monsters/mutant.json b/data/json/monsters/mutant.json
index eb224059b0555..0390c6f8c28ea 100644
--- a/data/json/monsters/mutant.json
+++ b/data/json/monsters/mutant.json
@@ -24,7 +24,7 @@
"armor_cut": 5,
"vision_day": 25,
"vision_night": 5,
- "harvest": "mammal_fur",
+ "harvest": "human_fur",
"special_attacks": [
[ "PARROT", 80 ],
{
@@ -73,7 +73,7 @@
"armor_bash": 7,
"armor_cut": 7,
"vision_night": 15,
- "harvest": "mammal_large_fur",
+ "harvest": "human_large_fur",
"special_attacks": [
[ "PARROT", 80 ],
[ "SMASH", 20 ],
diff --git a/data/json/monsters/obsolete.json b/data/json/monsters/obsolete.json
index bb8bafdb36263..a12dcc9c8cef5 100644
--- a/data/json/monsters/obsolete.json
+++ b/data/json/monsters/obsolete.json
@@ -13,6 +13,7 @@
"material": [ "iflesh" ],
"symbol": ".",
"color": "brown",
+ "looks_like": "mon_centipede_giant",
"melee_cut": 0,
"dodge": 1,
"harvest": "arachnid",
diff --git a/data/json/monsters/reptile_amphibian.json b/data/json/monsters/reptile_amphibian.json
index 968971309a153..d9c73d3009516 100644
--- a/data/json/monsters/reptile_amphibian.json
+++ b/data/json/monsters/reptile_amphibian.json
@@ -22,7 +22,7 @@
"melee_cut": 1,
"dodge": 2,
"armor_bash": 4,
- "harvest": "animal_large_noskin",
+ "harvest": "mutant_animal_large_noskin",
"path_settings": { "max_dist": 5 },
"special_attacks": [ { "type": "leap", "cooldown": 10, "move_cost": 0, "max_range": 10, "min_consider_range": 2 } ],
"anger_triggers": [ "STALK", "PLAYER_WEAK", "PLAYER_CLOSE" ],
@@ -139,7 +139,7 @@
"armor_cut": 4,
"vision_day": 30,
"vision_night": 5,
- "harvest": "animal_large_noskin",
+ "harvest": "mutant_animal_large_noskin",
"special_attacks": [
[ "RATTLE", 6 ],
{
@@ -180,7 +180,7 @@
"dodge": 1,
"vision_day": 1,
"vision_night": 30,
- "harvest": "animal_large_noskin",
+ "harvest": "mutant_animal_large_noskin",
"path_settings": { "max_dist": 5 },
"death_function": [ "NORMAL" ],
"flags": [ "SEES", "SMELLS", "WARM", "VENOM", "SWIMS" ]
diff --git a/data/json/monsters/zed_children.json b/data/json/monsters/zed_children.json
index acf825abd1f16..a61cdfa40a73c 100644
--- a/data/json/monsters/zed_children.json
+++ b/data/json/monsters/zed_children.json
@@ -60,8 +60,8 @@
"special_attacks": [ [ "scratch", 15 ] ],
"death_drops": {
"subtype": "collection",
- "groups": [ [ "default_zombie_clothes", 100 ], [ "child_items", 65 ] ],
- "//": "cloth as any other zombie (always), additional items from child_items (sometimes)"
+ "groups": [ [ "default_zombie_children_clothes", 100 ], [ "child_items", 65 ] ],
+ "//": "default zombie children clothing (always), additional items from child_items (sometimes)"
},
"death_function": [ "NORMAL" ],
"burn_into": "mon_zombie_child_scorched",
diff --git a/data/json/mutations/mutation_appearance.json b/data/json/mutations/mutation_appearance.json
index 9ff276ac0a6fe..8c992318c08e7 100644
--- a/data/json/mutations/mutation_appearance.json
+++ b/data/json/mutations/mutation_appearance.json
@@ -591,7 +591,7 @@
"id": "FACIAL_HAIR_ANCHOR",
"type": "mutation",
"name": "Facial hair: anchor beard",
- "description": "You have a moustache and a beard starting with a strip going down from the bottom lip, then tracing the jaw lines. It looks a bit like an anchor, thus the name.",
+ "description": "You have a moustache and a beard starting with a strip going down from the bottom lip, then tracing the jaw lines. It looks a bit like an anchor, thus the name.",
"points": 0,
"valid": false,
"starting_trait": true,
@@ -603,7 +603,7 @@
"id": "FACIAL_HAIR_SHORTBOXED",
"type": "mutation",
"name": "Facial hair: short boxed beard",
- "description": "You have a moustache and a short beard with trimmed sides. Thin patches connect them both, forming a 'box' around the lips, thus the name.",
+ "description": "You have a moustache and a short beard with trimmed sides. Thin patches connect them both, forming a 'box' around the lips, thus the name.",
"points": 0,
"valid": false,
"starting_trait": true,
@@ -747,7 +747,7 @@
"id": "FACIAL_HAIR_NECKBEARD",
"type": "mutation",
"name": "Facial hair: neckbeard",
- "description": "You have a beard formed from hair grown on neck below the chin line. No moustache included.",
+ "description": "You have a beard formed from hair grown on neck below the chin line. No moustache included.",
"points": 0,
"valid": false,
"starting_trait": true,
diff --git a/data/json/mutations/mutations.json b/data/json/mutations/mutations.json
index 7d8703dd1ec18..c4d1a6f7399b6 100644
--- a/data/json/mutations/mutations.json
+++ b/data/json/mutations/mutations.json
@@ -11,6 +11,36 @@
"types": [ "RUNNING" ],
"movecost_flatground_modifier": 0.85
},
+ {
+ "type": "mutation",
+ "id": "BIOLUM1",
+ "name": "Weak Photophore",
+ "points": 2,
+ "description": "A photophore has grown from your head, you can make it glow soflty. This will make you very visible in the dark, ideal to attract a partner during mating season.",
+ "active": true,
+ "cost": 1,
+ "time": 810000,
+ "hunger": true,
+ "encumbrance_covered": [ [ "HEAD", 5 ] ],
+ "changes_to": [ "BIOLUM2" ],
+ "category": [ "ELFA", "INSECT", "FISH" ],
+ "lumination": [ [ "HEAD", 8 ] ]
+ },
+ {
+ "type": "mutation",
+ "id": "BIOLUM2",
+ "name": "Photophore",
+ "points": 3,
+ "description": "Your can make your photophore glow brightly.",
+ "active": true,
+ "cost": 1,
+ "time": 405000,
+ "hunger": true,
+ "encumbrance_covered": [ [ "HEAD", 5 ] ],
+ "prereqs": [ "BIOLUM1" ],
+ "category": [ "ELFA", "INSECT", "FISH" ],
+ "lumination": [ [ "HEAD", 20 ] ]
+ },
{
"type": "mutation",
"id": "GOODHEARING",
@@ -494,7 +524,7 @@
"cancels": [ "NONADDICTIVE" ],
"points": 2,
"mixed_effect": true,
- "description": "You have a unique history with stimulants (like coffee or amphetamines). You can tolerate a lot more of them without overdosing, but if you indulge too much, you start seeing things...",
+ "description": "You have a unique history with stimulants (like coffee or amphetamines). You can tolerate a lot more of them without overdosing, but if you indulge too much, you start seeing things…",
"starting_trait": true,
"valid": false
},
@@ -623,7 +653,7 @@
"id": "MARTIAL_ARTS5",
"name": "Melee Weapon Training",
"points": 3,
- "description": "You have practiced fighting with weapons. You start with your choice of Eskrima, Fencing, Fior Di Battaglia, Medieval Swordsmanship, Niten Ichi-Ryu, Pentjak Silat, or Sōjutsu.",
+ "description": "You have practiced fighting with weapons. You start with your choice of Eskrima, Fencing, Fior Di Battaglia, Medieval Swordsmanship, Niten Ichi-Ryu, Pentjak Silat, or Sōjutsu.",
"starting_trait": true,
"initial_ma_styles": [
"style_eskrima",
@@ -636,6 +666,16 @@
],
"valid": false
},
+ {
+ "type": "mutation",
+ "id": "MARTIAL_FENCING",
+ "name": "Competitive Fencer",
+ "points": 0,
+ "description": "You were an avid fencer, starting with foil and moving onto saber, then épée. You competed nationally and dabbled with some of the historical fencing weapons afforded by HEMA's popularity.",
+ "starting_trait": false,
+ "initial_ma_styles": [ "style_fencing" ],
+ "valid": false
+ },
{
"type": "mutation",
"id": "WEAKSCENT",
@@ -1352,7 +1392,7 @@
"id": "ELFAEYES",
"name": "Fey Eyes",
"points": 1,
- "description": "Your eyes have turned...green. It's tough to tell the exact shade as it seems to shift. The effect is ...pleasant.",
+ "description": "Your eyes have turned… green. It's tough to tell the exact shade as it seems to shift. The effect is… pleasant.",
"leads_to": [ "ELFA_NV" ],
"valid": false,
"cancels": [ "BIRD_EYE", "LIZ_EYE", "FEL_EYE", "URSINE_EYE", "COMPOUND_EYES" ],
@@ -2497,7 +2537,7 @@
"id": "MARLOSS",
"name": "Marloss Carrier",
"points": 4,
- "description": "Ever since you ate that Marloss berry, you can't get its scent out of your nose, and you have a strong desire to try some seeds and...sap?",
+ "description": "Ever since you ate that Marloss berry, you can't get its scent out of your nose, and you have a strong desire to try some seeds and… sap?",
"purifiable": false,
"valid": false,
"category": [ "MARLOSS" ],
@@ -2508,7 +2548,7 @@
"id": "MARLOSS_BLUE",
"name": "Marloss Vessel",
"points": 4,
- "description": "Ever since you ate that Marloss seed, you can't get its taste off of your tongue, and you have a strong desire to try some berries and...sap?",
+ "description": "Ever since you ate that Marloss seed, you can't get its taste off of your tongue, and you have a strong desire to try some berries and… sap?",
"purifiable": false,
"valid": false,
"category": [ "MARLOSS" ],
@@ -2915,7 +2955,7 @@
"visibility": 10,
"ugliness": 8,
"mixed_effect": true,
- "description": "Your fangs have grown extremely large and incredibly sharp. They make it impossible to wear mouthgear and difficult to eat... but leave nasty wounds when you bite.",
+ "description": "Your fangs have grown extremely large and incredibly sharp. They make it impossible to wear mouthgear and difficult to eat… but leave nasty wounds when you bite.",
"types": [ "TEETH" ],
"prereqs": [ "FANGS" ],
"threshreq": [ "THRESH_FELINE", "THRESH_CHIMERA" ],
@@ -4402,7 +4442,7 @@
"points": -1,
"visibility": 4,
"ugliness": 3,
- "description": "Your face and jaw have begun...changing. Masks and such fit OK, but you're noticeably mutated.",
+ "description": "Your face and jaw have begun… changing. Masks and such fit OK, but you're noticeably mutated.",
"changes_to": [ "BEAK", "BEAK_HUM", "BEAK_PECK", "PROBOSCIS", "MINOTAUR", "MUZZLE", "MUZZLE_BEAR", "MUZZLE_LONG", "MUZZLE_RAT" ],
"category": [ "FELINE" ]
},
@@ -5285,7 +5325,7 @@
"name": "Ectothermic",
"points": 0,
"mixed_effect": true,
- "description": "Your body has become permanently cold-blooded. Your speed lowers--or raises--for every 2 (1.1) degrees below or above 65 F (18.3 C). You only need to eat half as much as an average human.",
+ "description": "Your body has become permanently cold-blooded. Your speed lowers or raises 1% for every 2 (1.1) degrees below or above 65 F (18.3 C). You only need to eat half as much as an average human.",
"prereqs": [ "COLDBLOOD3" ],
"threshreq": [ "THRESH_LIZARD", "THRESH_PLANT" ],
"purifiable": false,
@@ -5717,7 +5757,7 @@
"id": "THRESH_INSECT",
"name": "Insect",
"points": 1,
- "description": "It would be good to be a Queen, having workers constantly servicing your every need...but how would you keep them in line?",
+ "description": "It would be good to be a Queen, having workers constantly servicing your every need… but how would you keep them in line?",
"valid": false,
"purifiable": false,
"threshold": true
@@ -5737,7 +5777,7 @@
"id": "THRESH_SLIME",
"name": "Aqueous",
"points": 1,
- "description": "What was that old advertisement, 'paint the planet'? That might be a good long-term goal, but for now...",
+ "description": "What was that old advertisement, 'paint the planet'? That might be a good long-term goal, but for now…",
"valid": false,
"purifiable": false,
"threshold": true
diff --git a/data/json/npcs/Backgrounds/burger_flipper_1.json b/data/json/npcs/Backgrounds/burger_flipper_1.json
index 7948d5d1d8249..532d2adb938ef 100644
--- a/data/json/npcs/Backgrounds/burger_flipper_1.json
+++ b/data/json/npcs/Backgrounds/burger_flipper_1.json
@@ -22,7 +22,7 @@
{
"id": "BGSS_BURGER_FLIPPER_1_STORY3",
"type": "talk_topic",
- "dynamic_line": "I haven't found them yet. Whenever I see a , a little part of me is afraid it's going to be one of them. But then, maybe not. Maybe they were evacuated, maybe they fought and tried to wait for me but the military took them anyway? I've heard that sort of thing happened. I don't know if I'll ever know.",
+ "dynamic_line": "I haven't found them yet. Whenever I see a , a little part of me is afraid it's going to be one of them. But then, maybe not. Maybe they were evacuated, maybe they fought and tried to wait for me but the military took them anyway? I've heard that sort of thing happened. I don't know if I'll ever know.",
"responses": [
{ "text": "So, did you evacuate?", "topic": "BGSS_BURGER_FLIPPER_1_STORY3" },
{ "text": "", "topic": "TALK_FRIEND" },
diff --git a/data/json/npcs/Backgrounds/codger.json b/data/json/npcs/Backgrounds/codger.json
index 354225bd62cfb..44a2f40b3c602 100644
--- a/data/json/npcs/Backgrounds/codger.json
+++ b/data/json/npcs/Backgrounds/codger.json
@@ -74,7 +74,7 @@
"dynamic_line": "Anyway, long story short, I were headin' back up to Mount Greenwood to check on th'old ranger station again when I heard them bombs fallin and choppers flyin. Decided to camp out there to see it all through, but it didn't ever end, now, did it? So here I am.",
"responses": [
{ "text": "Thanks for the story!", "topic": "TALK_FRIEND" },
- { "text": "...", "topic": "TALK_FRIEND" },
+ { "text": "…", "topic": "TALK_FRIEND" },
{ "text": ".", "topic": "TALK_DONE" }
]
}
diff --git a/data/json/npcs/Backgrounds/dreamer.json b/data/json/npcs/Backgrounds/dreamer.json
index c2e7e823f4cd9..76fcd39c2c7ac 100644
--- a/data/json/npcs/Backgrounds/dreamer.json
+++ b/data/json/npcs/Backgrounds/dreamer.json
@@ -2,7 +2,7 @@
{
"id": "BGSS_DREAMER_STORY1",
"type": "talk_topic",
- "dynamic_line": "OK, this is gonna sound crazy but I, like, I knew this was going to happen. Like, before it did. You can even ask my psychic except, like, I think she's dead now. I told her about my dreams a week before the world ended. Serious!",
+ "dynamic_line": "OK, this is gonna sound crazy but I, like, I knew this was going to happen. Like, before it did. You can even ask my psychic except, like, I think she's dead now. I told her about my dreams a week before the world ended. Serious!",
"responses": [
{ "text": "What were your dreams?", "topic": "BGSS_DREAMER_STORY2" },
{ "text": "", "topic": "TALK_FRIEND" },
diff --git a/data/json/npcs/Backgrounds/evacuee_5.json b/data/json/npcs/Backgrounds/evacuee_5.json
index fbf1115fa79e4..67f7866f4ed82 100644
--- a/data/json/npcs/Backgrounds/evacuee_5.json
+++ b/data/json/npcs/Backgrounds/evacuee_5.json
@@ -7,7 +7,7 @@
"responses": [
{ "text": "Giant bees? Tell me more.", "topic": "BGSS_EVACUEE_5_BEES" },
{
- "text": "But bees aren't usually aggressive...",
+ "text": "But bees aren't usually aggressive…",
"topic": "BGSS_EVACUEE_5_WASPS",
"condition": { "u_has_perception": 8 }
},
@@ -21,7 +21,7 @@
"dynamic_line": "Yeah, I'm sure you've seen them, they're everywhere. Like something out of an old sci-fi movie. Some of the others in the evac shelter got stung, it was no joke. I didn't stick around to see what the lasting effect was though. I'm not ashamed to admit I ran like a chicken.",
"responses": [
{
- "text": "But bees aren't usually aggressive... Do you mean wasps?",
+ "text": "But bees aren't usually aggressive… Do you mean wasps?",
"topic": "BGSS_EVACUEE_5_WASPS",
"condition": { "u_has_perception": 8 }
},
diff --git a/data/json/npcs/Backgrounds/hospital_2.json b/data/json/npcs/Backgrounds/hospital_2.json
index 58e918d9daacc..26965d79fe90b 100644
--- a/data/json/npcs/Backgrounds/hospital_2.json
+++ b/data/json/npcs/Backgrounds/hospital_2.json
@@ -45,7 +45,7 @@
"dynamic_line": "No. I can't. Just, no.",
"responses": [
{
- "text": "Sorry... I'll let you be.",
+ "text": "Sorry… I'll let you be.",
"effect": { "npc_add_effect": "player_BGSS_SAIDNO", "duration": 14000 },
"topic": "TALK_DONE"
}
diff --git a/data/json/npcs/Backgrounds/lab_1.json b/data/json/npcs/Backgrounds/lab_1.json
index 5ccf77097bbcb..2fae18844bdd1 100644
--- a/data/json/npcs/Backgrounds/lab_1.json
+++ b/data/json/npcs/Backgrounds/lab_1.json
@@ -14,7 +14,7 @@
"type": "talk_topic",
"dynamic_line": "Well, the references weren't quite right. Pat referred to things that we'd never played. The situations were close, but not right, and when I put it all together, it told a story. A story about a scholar whose kids were being held captive by a corrupt government, forced to research dark magic for them. And there was a clincher: A warning that the magic had escaped, a warning that all heroes had to leave the kingdom before it fell.",
"responses": [
- { "text": "Okay...", "topic": "BGSS_LAB_1_STORY3" },
+ { "text": "Okay…", "topic": "BGSS_LAB_1_STORY3" },
{ "text": "", "topic": "TALK_FRIEND" },
{ "text": "", "topic": "TALK_DONE" }
]
diff --git a/data/json/npcs/Backgrounds/lost_partner_2.json b/data/json/npcs/Backgrounds/lost_partner_2.json
index 1e0c539816c68..fe727af86ddd9 100644
--- a/data/json/npcs/Backgrounds/lost_partner_2.json
+++ b/data/json/npcs/Backgrounds/lost_partner_2.json
@@ -55,7 +55,7 @@
"id": "BGSS_LOST_PARTNER_2_FUCKOFF",
"type": "talk_topic",
"dynamic_line": "Oh, . This doesn't have anything to do with you, or with us.",
- "responses": [ { "text": "...", "effect": { "npc_add_effect": "player_BGSS_SAIDNO", "duration": 14000 }, "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "effect": { "npc_add_effect": "player_BGSS_SAIDNO", "duration": 14000 }, "topic": "TALK_DONE" } ]
},
{
"id": "BGSS_LOST_PARTNER_2_STORY2",
diff --git a/data/json/npcs/Backgrounds/no_past_3.json b/data/json/npcs/Backgrounds/no_past_3.json
index 1dffa6dbac210..956e1b4e370b4 100644
--- a/data/json/npcs/Backgrounds/no_past_3.json
+++ b/data/json/npcs/Backgrounds/no_past_3.json
@@ -5,7 +5,7 @@
"dynamic_line": "This is gonna sound crazy, but I woke up in the forest in the middle of nowhere, freezing cold, about a week before I met you. I had my clothes, a splitting headache, and absolutely no memory of anything. Like, I know stuff. I can talk, I have skills and understanding... but I don't remember where any of it comes from. I had a driver's license in my pocket and that's the only way I even know my name.",
"responses": [
{ "text": "What do you think happened?", "topic": "BGSS_NO_PAST_3_STORY2" },
- { "text": "That does sound a little crazy...", "topic": "BGSS_NO_PAST_3_CRAZY" },
+ { "text": "That does sound a little crazy…", "topic": "BGSS_NO_PAST_3_CRAZY" },
{ "text": "", "topic": "TALK_NONE" },
{ "text": "", "topic": "TALK_DONE" }
]
@@ -16,7 +16,7 @@
"dynamic_line": "There were some clues. Like, I had a nasty headache that lasted a few days, but no cuts or bruises. And there were scorch marks on the trees in weird slashing patterns around me. Whatever happened to me, I think it was some weird shit.",
"responses": [
{ "text": "Are you trying to get your memory back then?", "topic": "BGSS_NO_PAST_3_STORY3" },
- { "text": "That does sound a little crazy...", "topic": "BGSS_NO_PAST_3_CRAZY" },
+ { "text": "That does sound a little crazy…", "topic": "BGSS_NO_PAST_3_CRAZY" },
{ "text": "", "topic": "TALK_FRIEND" },
{ "text": "", "topic": "TALK_DONE" }
]
@@ -26,7 +26,7 @@
"type": "talk_topic",
"dynamic_line": "Well, not having a memory is weird as heck, but I'll be honest: I think it might be better? With what's going on, I bet you my memories weren't happy ones. Besides my driver's license, there were pictures of kids in my wallet... not that that sparked any reaction from me. I didn't see any kids around. Maybe losing my mind is a mercy. Hell, maybe it's some kind of psychotic break and my brain did this to itself. To be honest with you I think I'd rather focus on surviving, and not worry about it.",
"responses": [
- { "text": "That does sound a little crazy...", "topic": "BGSS_NO_PAST_3_CRAZY" },
+ { "text": "That does sound a little crazy…", "topic": "BGSS_NO_PAST_3_CRAZY" },
{ "text": "", "topic": "TALK_FRIEND" },
{ "text": "", "topic": "TALK_DONE" }
]
diff --git a/data/json/npcs/Backgrounds/no_past_4.json b/data/json/npcs/Backgrounds/no_past_4.json
index 4f4aaa9eacab3..e27c6e60eab30 100644
--- a/data/json/npcs/Backgrounds/no_past_4.json
+++ b/data/json/npcs/Backgrounds/no_past_4.json
@@ -6,7 +6,7 @@
"responses": [
{ "text": "What happened to you after that?", "topic": "BGSS_NO_PAST_4_STORY2" },
{
- "text": "It can't be healthy to abandon your past like that...",
+ "text": "It can't be healthy to abandon your past like that…",
"topic": "BGSS_NO_PAST_4_DROPIT",
"opinion": { "anger": 3 }
},
@@ -20,7 +20,7 @@
"dynamic_line": "I went on, running when I had to and fighting when I could, like the rest of us. Started learning who I am now. Lost the bat in a fight against some crazy electric lightning shooting zombie. It was arcing electricity through my bat so I dropped it and used a nearby two-by-four, but I wound up having to run and leave the ol' slugger behind. I nearly died that day.",
"responses": [
{
- "text": "It can't be healthy to abandon your past like that...",
+ "text": "It can't be healthy to abandon your past like that…",
"topic": "BGSS_NO_PAST_4_DROPIT",
"opinion": { "anger": 3 }
},
diff --git a/data/json/npcs/Backgrounds/religious_1.json b/data/json/npcs/Backgrounds/religious_1.json
index b862080acf881..be49842912c93 100644
--- a/data/json/npcs/Backgrounds/religious_1.json
+++ b/data/json/npcs/Backgrounds/religious_1.json
@@ -4,7 +4,7 @@
"type": "talk_topic",
"dynamic_line": "My story. Huh. It's nothing special. I had people, but they've risen to be with the Lord. I don't understand why He didn't take me too, but I suppose it'll all be clear in time.",
"responses": [
- { "text": "Do you mean in a religious sense, or...?", "topic": "BGSS_RELIGIOUS_1_STORY2" },
+ { "text": "Do you mean in a religious sense, or…?", "topic": "BGSS_RELIGIOUS_1_STORY2" },
{ "text": "", "topic": "TALK_FRIEND" },
{ "text": "", "topic": "TALK_DONE" }
]
diff --git a/data/json/npcs/Backgrounds/scientist_1.json b/data/json/npcs/Backgrounds/scientist_1.json
index d6061779c4dcc..188c87a09dc05 100644
--- a/data/json/npcs/Backgrounds/scientist_1.json
+++ b/data/json/npcs/Backgrounds/scientist_1.json
@@ -6,7 +6,7 @@
"responses": [
{ "text": "What came of it?", "topic": "BGSS_SCIENTIST_1_STORY2" },
{
- "text": "If I got you the right stuff, do you think you'd be able to like... do science to it?",
+ "text": "If I got you the right stuff, do you think you'd be able to like… do science to it?",
"topic": "BGSS_SCIENTIST_1_SCIENCEHELP"
},
{ "text": "", "topic": "TALK_FRIEND" },
@@ -20,7 +20,7 @@
"responses": [
{ "text": "What happened with your leadership run?", "topic": "BGSS_SCIENTIST_1_STORY3" },
{
- "text": "If I got you the right stuff, do you think you'd be able to like... do science to it?",
+ "text": "If I got you the right stuff, do you think you'd be able to like… do science to it?",
"topic": "BGSS_SCIENTIST_1_SCIENCEHELP"
},
{ "text": "", "topic": "TALK_FRIEND" },
@@ -34,7 +34,7 @@
"//": "TK, this survivor could give a quest to locate the other survivor.",
"responses": [
{
- "text": "If I got you the right stuff, do you think you'd be able to like... do science to it?",
+ "text": "If I got you the right stuff, do you think you'd be able to like… do science to it?",
"topic": "BGSS_SCIENTIST_1_SCIENCEHELP"
},
{ "text": "I'm sorry to hear that. ", "topic": "TALK_FRIEND" },
diff --git a/data/json/npcs/Backgrounds/wedding_1.json b/data/json/npcs/Backgrounds/wedding_1.json
index b15c38baec443..71d4359063954 100644
--- a/data/json/npcs/Backgrounds/wedding_1.json
+++ b/data/json/npcs/Backgrounds/wedding_1.json
@@ -4,7 +4,7 @@
"type": "talk_topic",
"dynamic_line": "Oh, that's quite the story. happened on my wedding day.",
"responses": [
- { "text": "Oh, I'm sorry...", "topic": "BGSS_WEDDING_1_STORY2" },
+ { "text": "Oh, I'm sorry…", "topic": "BGSS_WEDDING_1_STORY2" },
{ "text": "", "topic": "TALK_NONE" },
{ "text": "", "topic": "TALK_DONE" }
]
diff --git a/data/json/npcs/NPC_Brigitte_LaCroix.json b/data/json/npcs/NPC_Brigitte_LaCroix.json
index c6e039765f692..885ca662666c1 100644
--- a/data/json/npcs/NPC_Brigitte_LaCroix.json
+++ b/data/json/npcs/NPC_Brigitte_LaCroix.json
@@ -115,18 +115,18 @@
"speaker_effect": { "effect": { "u_add_var": "talked_to_seer", "type": "dialogue", "context": "first_meeting", "value": "yes" } },
"responses": [
{
- "text": "What? What do you mean? What song?",
+ "text": "What? What do you mean? What song?",
"topic": "TALK_BONE_SEER_SONG",
"condition": { "not": { "u_has_var": "asked_about_song", "type": "dialogue", "context": "song", "value": "yes" } },
"effect": { "u_add_var": "asked_about_song", "type": "dialogue", "context": "song", "value": "yes" }
},
{
- "text": "So about the songs...",
+ "text": "So about the songs…",
"topic": "TALK_BONE_SEER_SONG",
"condition": { "u_has_var": "asked_about_song", "type": "dialogue", "context": "song", "value": "yes" }
},
{
- "text": "You mentioned some cycle before, when I gave you the bones. What does that mean?",
+ "text": "You mentioned some cycle before, when I gave you the bones. What does that mean?",
"topic": "TALK_BONE_SEER_CYCLE",
"condition": { "u_has_var": "NC_SEER_MISSION_1", "type": "general", "context": "mission", "value": "yes" }
},
@@ -141,7 +141,7 @@
"topic": "TALK_MISSION_LIST_SEER",
"condition": { "u_has_var": "asked_about_song", "type": "dialogue", "context": "song", "value": "yes" }
},
- { "text": "I have to get going. Take care, Seer.", "topic": "TALK_DONE" }
+ { "text": "I have to get going. Take care, Seer.", "topic": "TALK_DONE" }
]
},
{
@@ -149,8 +149,8 @@
"id": "TALK_BONE_SEER_SONG",
"dynamic_line": "Listen carefully. The bones... they sing. Can you hear it? The song they weave? The stories they hold?",
"responses": [
- { "text": "What? Singing bones? What are you talking about?", "topic": "TALK_BONE_SEER_SONG2" },
- { "text": "Uh... yeah, sure. I think I'll just be on my way.", "topic": "TALK_DONE" }
+ { "text": "What? Singing bones? What are you talking about?", "topic": "TALK_BONE_SEER_SONG2" },
+ { "text": "Uh… yeah, sure. I think I'll just be on my way.", "topic": "TALK_DONE" }
]
},
{
@@ -175,14 +175,14 @@
"dynamic_line": "There are others who follow this cause. You'd do well to aid them, for though we may not be numerous, we are emboldened by the songs we carry.",
"responses": [
{ "text": "I will bear that in mind", "topic": "TALK_NONE" },
- { "text": "Cause? Why do you gather these bones anyway?", "topic": "TALK_BONE_SEER_BONES" }
+ { "text": "Cause? Why do you gather these bones anyway?", "topic": "TALK_BONE_SEER_BONES" }
]
},
{
"type": "talk_topic",
"id": "TALK_BONE_SEER_BONES",
"dynamic_line": "The song can be weaved in many forms. Carved bone charms, weapons and armor all hold immense power, and when the time comes, me and my kindred shall gather a great amount of song and sing it to restore this world. Restore it, or end it. Makes no difference.",
- "responses": [ { "text": "End the world? What?", "topic": "TALK_BONE_SEER_END" } ]
+ "responses": [ { "text": "End the world? What?", "topic": "TALK_BONE_SEER_END" } ]
},
{
"type": "talk_topic",
@@ -190,7 +190,7 @@
"dynamic_line": "We believe that enough power in one song could revert the Cataclysm - or accelerate it to a time beyond all, ending it all the same. But with the world looking as is, both options are preferable.",
"responses": [
{
- "text": "Sounds somewhat... doomsday-ish, but I suppose it's a belief like any other. Still, at least you have a goal to help the world, one way or another.",
+ "text": "Sounds somewhat… doomsday-ish, but I suppose it's a belief like any other. Still, at least you have a goal to help the world, one way or another.",
"topic": "TALK_BONE_SEER_ACOLYTE"
},
{ "text": "You're nuts.", "topic": "TALK_BONE_SEER_INSULT" }
@@ -200,7 +200,7 @@
"type": "talk_topic",
"id": "TALK_BONE_SEER_ACOLYTE",
"dynamic_line": "Your mind is open. More than most. Perhaps one day, you too will feel the power of the song and become Kindred. For now, Acolyte, listen, listen and feel the song.",
- "responses": [ { "text": "I... thank you.", "topic": "TALK_BONE_SEER" } ]
+ "responses": [ { "text": "I… thank you.", "topic": "TALK_BONE_SEER" } ]
},
{
"type": "talk_topic",
@@ -211,7 +211,7 @@
{
"id": "MISSION_SEER_GATHER_BONE",
"type": "mission_definition",
- "name": "Gather bones for the Brigitte. About 8 should do it.",
+ "name": "Gather bones for the Brigitte. About 8 should do it.",
"difficulty": 1,
"value": 10000,
"goal": "MGOAL_FIND_ITEM",
@@ -220,13 +220,8 @@
"origins": [ "ORIGIN_SECONDARY" ],
"end": {
"effect": [
- {
- "u_add_var": "NC_SEER_MISSION_1",
- "type": "general",
- "context": "mission",
- "value": "yes",
- "u_add_trait": "seer_mark"
- }
+ { "u_add_var": "NC_SEER_MISSION_1", "type": "general", "context": "mission", "value": "yes" },
+ { "u_add_trait": "seer_mark" }
]
},
"dialogue": {
@@ -244,7 +239,6 @@
{
"id": "TALK_MISSION_LIST_SEER",
"type": "talk_topic",
- "category": "CATEGORY_MISSION_SEER",
"dynamic_line": {
"has_no_available_mission": {
"has_no_assigned_mission": "The song is... quiet for now. Perhaps with time, more notes will be etched in the bones of this world.",
@@ -284,11 +278,10 @@
{
"id": "TALK_MISSION_OFFER_SEER",
"type": "talk_topic",
- "category": "CATEGORY_MISSION_SEER",
"dynamic_line": "If you wish to be set on the path to enlightenment, first you must learn to listen and hear the song. Go out, butcher a creature and feel the power between your fingertips. Then bring me the bones and I shall carve them for you. ",
"responses": [
{
- "text": "Well, I guess I oughta see where this goes. I'm in.",
+ "text": "Well, I guess I oughta see where this goes. I'm in.",
"topic": "TALK_MISSION_ACCEPTED_SEER",
"effect": "assign_mission"
},
@@ -298,10 +291,9 @@
{
"id": "TALK_MISSION_ACCEPTED_SEER",
"type": "talk_topic",
- "category": "CATEGORY_MISSION_SEER",
"dynamic_line": "Excellent. Now be on your way.",
"responses": [
- { "text": "Consider it done. But I also wanted to ask...", "topic": "TALK_BONE_SEER" },
+ { "text": "Consider it done. But I also wanted to ask…", "topic": "TALK_BONE_SEER" },
{ "text": "Where should I start?", "topic": "TALK_MISSION_ADVICE_SEER" },
{ "text": "Can you share some equipment to aid me in this?", "topic": "TALK_SHARE_EQUIPMENT_SEER" },
{ "text": "I'm off then.", "topic": "TALK_DONE" }
@@ -310,30 +302,25 @@
{
"id": "TALK_MISSION_ADVICE_SEER",
"type": "talk_topic",
- "category": "CATEGORY_MISSION_SEER",
"dynamic_line": "The shambling corpses we see all around move in discord. Their song can be used, but for an Acolyte, this would be needlessly hard. Be sure to carve an unspoiled living creature.",
- "responses": [ { "text": "So, a creature that isn't a zombie, or a monster. Got it.", "topic": "TALK_NONE" } ]
+ "responses": [ { "text": "So, a creature that isn't a zombie, or a monster. Got it.", "topic": "TALK_NONE" } ]
},
{
"id": "TALK_SHARE_EQUIPMENT_SEER",
"type": "talk_topic",
- "category": "CATEGORY_MISSION_SEER",
"dynamic_line": "The path to enlightenment is for you to walk. For me to aid you would ultimately impede your progress and muddle your song.",
- "responses": [ { "text": "I see. Very well then.", "topic": "TALK_NONE" } ]
+ "responses": [ { "text": "I see. Very well then.", "topic": "TALK_NONE" } ]
},
{
"id": "TALK_SUGGEST_FOLLOW_SEER",
"type": "talk_topic",
"dynamic_line": {
"u_has_trait": "seer_mark",
- "type": "dialogue",
- "context": "mark_of_the_seer",
- "value": "yes",
"no": "Only those who bear my mark will prove themselves worthy of my skills.",
"yes": "You bear my mark, meaning I believe you have potential to learn to truly listen to the Song. Yes, I will lend my skills to you, for now."
},
"responses": [
- { "text": "I see. Very well then.", "topic": "TALK_NONE", "condition": { "not": { "u_has_trait": "seer_mark" } } },
+ { "text": "I see. Very well then.", "topic": "TALK_NONE", "condition": { "not": { "u_has_trait": "seer_mark" } } },
{
"text": "I am glad to hear it. Let's go then.",
"effect": "follow",
@@ -341,7 +328,7 @@
"topic": "TALK_DONE"
},
{
- "text": "That's good, but I need to go at it alone right now. Maybe later.",
+ "text": "That's good, but I need to go at it alone right now. Maybe later.",
"condition": { "u_has_trait": "seer_mark" },
"topic": "TALK_NONE"
}
@@ -352,7 +339,7 @@
"type": "talk_topic",
"dynamic_line": "I understand your reluctancy. Feel free to return when you see the way.",
"responses": [
- { "text": "Maybe some other time. Changing the topic...", "topic": "TALK_NONE" },
+ { "text": "Maybe some other time. Changing the topic…", "topic": "TALK_NONE" },
{ "text": "Alright, but I have to go now.", "topic": "TALK_DONE" }
]
},
@@ -362,10 +349,10 @@
"dynamic_line": "It's not just walking horrors and monsters that have changed with the Cataclysm. It started a... cycle, of sorts. Everything repeats. We can only see it in others, but it happens to us, even you and I. How many times have you fallen? Your flesh rent from your body, devoured. Or perhaps it was the quiet whimper of death to exposure. But your bones rose again. Different flesh, different name, sometimes even different knowledge, but the bones, the same. We are all trapped in the same cycle. We just keep forgetting. That's why we need to amass the Song. That's why it has to end, even if it means the destruction, not restoration.",
"responses": [
{
- "text": "That is... that's really one hell of a belief. Well, if it helps you deal with the world, who am I to argue.",
+ "text": "That is… that's really one hell of a belief. Well, if it helps you deal with the world, who am I to argue.",
"topic": "TALK_NONE"
},
- { "text": "And here I thought you were nuts before. I'm out of here.", "topic": "TALK_DONE" }
+ { "text": "And here I thought you were nuts before. I'm out of here.", "topic": "TALK_DONE" }
]
}
]
diff --git a/data/json/npcs/TALK_ALLY_TUTORIAL.json b/data/json/npcs/TALK_ALLY_TUTORIAL.json
index 4c3e35cc2a92d..ed77c9f53697e 100644
--- a/data/json/npcs/TALK_ALLY_TUTORIAL.json
+++ b/data/json/npcs/TALK_ALLY_TUTORIAL.json
@@ -2,10 +2,11 @@
{
"id": "TALK_ALLY_TUTORIAL",
"type": "talk_topic",
- "dynamic_line": "I'm my own person, but I'm willing to follow your lead. I can do a lot of things for you: I can fight, I can train you or you can train me, I can carry stuff, I can bandage your wounds, I can build faction camps, I can do some other activites, I can ride horses, I can go places, I can guard things, I can use some bionics, I can even chit-chat with you or give you tips or talk about my background. You can give me instructions in conversation or by radio or shout commands at me.\n What do you want to know more about?",
+ "dynamic_line": "I'm my own person, but I'm mostly willing to follow your lead. I can do a lot of things for you: I can fight, I can train you or you can train me, I can carry stuff, I can bandage your wounds, I can build faction camps, I can do some other activites, I can ride horses, I can go places, I can guard things, I can use some bionics, I can even chit-chat with you or give you tips or talk about my background. You can give me instructions in conversation or by radio or shout commands at me.\n What do you want to know more about?",
"responses": [
{ "text": "Forget I asked.", "topic": "TALK_FRIEND" },
{ "text": "Skip it, let's get going.", "topic": "TALK_DONE" },
+ { "text": "What do you mean, \"mostly\" willing to follow my lead?", "topic": "TALK_ALLY_TUTORIAL_MUTINY" },
{ "text": "What's that about giving instructions?", "topic": "TALK_ALLY_TUTORIAL_TALK" },
{ "text": "We can talk with radios?", "topic": "TALK_ALLY_TUTORIAL_RADIO" },
{ "text": "How do shouted commands work?", "topic": "TALK_ALLY_TUTORIAL_SHOUTS" },
@@ -23,10 +24,19 @@
{ "text": "What do you do as a guard?", "topic": "TALK_ALLY_TUTORIAL_GUARD" },
{ "text": "You can use bionics? How does that work?", "topic": "TALK_ALLY_TUTORIAL_CBMS" },
{ "text": "What about chit-chatting and your background?", "topic": "TALK_ALLY_TUTORIAL_SOCIAL" },
- { "text": "Anything else I should know?", "topic": "TALK_ALLY_TUTORIAL_MISC" },
+ {
+ "text": "Anything else I should know, like making you pulp zombies or assigning you a seat in my vehicle?",
+ "topic": "TALK_ALLY_TUTORIAL_MISC"
+ },
{ "text": "Any new abilities recently?", "topic": "TALK_ALLY_TUTORIAL_CHANGES" }
]
},
+ {
+ "id": "TALK_ALLY_TUTORIAL_MUTINY",
+ "type": "talk_topic",
+ "dynamic_line": "You and me, we better stick together to survive, right? But that doesn't mean I'll tolerate infinite abuse. Mistreat me too much, or especially fail to keep me fed, and I'll like you less and less. If it gets bad enough, I'll mutiny - and if you have anyone else following you, I may convince some of them to join my mutiny and we'll form our own little band.\n Obviously, if I quit in a huff, there's going to be bad blood between us, and you're probably going to want to kill me for betrayal and I may need to kill you to get my fair share of the loot. So keep me fed and satisfied so it doesn't come to that.",
+ "responses": [ { "text": "Sure. Is there any easy way to keep you fed?", "topic": "TALK_CAMP_TUTORIAL_INTRO" } ]
+ },
{
"id": "TALK_ALLY_TUTORIAL_TALK",
"type": "talk_topic",
@@ -73,7 +83,7 @@
{
"id": "TALK_ALLY_TUTORIAL_TRAINING",
"type": "talk_topic",
- "dynamic_line": "If I'm better at a skill than you, I can help you improve. But it's boring to teach a lot, so I'm not going to do it very often. And I'm not going to do it when we're in danger or if I'm hungry or tired or if you're driving.\n If we're someplace safe and you're reading a book that improves skills, I'll listen if I don't have that skill. You can even read me books for skills that you already have.",
+ "dynamic_line": "If I'm better at a skill than you, I can help you improve. But it's boring to teach a lot, so I'm not going to do it very often. And I'm not going to do it when we're in danger or if I'm hungry or tired or if you're driving.\n If we're someplace safe and you're reading a book that improves skills, I'll listen if I don't have that skill. You can even read me books for skills that you already have.\n If you give me a book that teaches a skill and that's accessible to someone with my current skill, you can ask me about my current activity and tell me to read it, and I'll learn from the book. But while I'm reading, I won't be following you around, so make sure I'm in a safe place.\n And don't bother asking me about learning or teaching martial arts style. My brain just doesn't work that way, so I don't know any to teach you and it's pointless trying to get me to learn any.",
"responses": [ { "text": "Instead of reading to you, can we just talk?", "topic": "TALK_ALLY_TUTORIAL_SOCIAL" } ]
},
{
@@ -100,7 +110,7 @@
{
"id": "TALK_ALLY_TUTORIAL_ACTIVITIES",
"type": "talk_topic",
- "dynamic_line": "I can help with some tasks if you show me where to work.\n Use the zone manager (keybind 'Y') to set up sorting zones for your loot, or to draw blueprints for a building, or to define where you want to plant some crops, or where you'd like some trees cut down, or where you want a vehicle dismantled. Then tell me to sort stuff, or build stuff, or cut down trees, or dismantle a vehicle or do farmwork, and I'll go off and do my best to get what you want done. If I need tools, you should leave them pretty close to where you want me to work - axes for logging, shovels and seeds and fertilizer for farming, wrenches and hacksaws or a toolbox to take apart a vehicle. I can pretty much sort out our stuff without needing tools, but keep the piles of unsorted and sorted stuff kind of close together because I don't want to walk back and forth carrying junk too much.",
+ "dynamic_line": "I can help with some tasks if you show me where to work.\n Use the zone manager (keybind 'Y') to set up sorting zones for your loot, or to draw blueprints for a building, or to define where you want to plant some crops, or where you'd like some trees cut down, or where you want a vehicle dismantled or repaired, or a good fishing spot. Then talk to me about my current activity and tell me to sort stuff, or build stuff, or cut down trees, or repair or dismantle a vehicle, or do farmwork, or catch some fish, and I'll go off and do my best to get what you want done.\n If I need tools, you should leave them in a loot zone near where you want me to work - axes for logging, shovels and seeds and fertilizer for farming, wrenches and hacksaws or a toolbox to take apart a vehicle. I promise to put stuff back in an unsorted loot zone when I'm finished.\n I can pretty much sort out our stuff without needing tools, but keep the piles of unsorted and sorted stuff kind of close together because I don't want to walk back and forth carrying junk too much.",
"responses": [
{ "text": "Good to know. Can you perform first aid?", "topic": "TALK_ALLY_TUTORIAL_MEDIC" },
{ "text": "What about carrying stuff in general?", "topic": "TALK_ALLY_TUTORIAL_MULE" },
@@ -127,8 +137,11 @@
{
"id": "TALK_ALLY_TUTORIAL_GUARD",
"type": "talk_topic",
- "dynamic_line": "You tell me to guard, I'll stay where I am and guard it - unless I'm in a vehicle, in which case I'll stick with the vehicle.\n I'm not a potted plant, though, so if I hear something dangerous happening, I'm going to go see what it is instead of getting jumped in the dark. If you want me to stay put, tell me not to investigate noises - but if I get shot by some bandit because I can't see where he is and you don't want me to go looking, I won't be happy.\n You can also use the zone manager (keybind 'Y') to set up no-investigate zone, so if there's some monsters behind a door that you know about, I can ignore them. You can also set on an investigate-only zone, and I won't investigate noises coming from outside the zone. The no-investigate zone takes precedence over the investigate-only, if there's a noise coming from some place in both zones. And if you've got an investigate-only zone set anywhere, even if it's far away, I won't investigate noises coming from outside of it, so be careful with those zones. Like I said, I don't want to get sniped by some bandit because you told me not to go looking for him - but I also don't want to go investigate something pounding at door only to find out it's some horrible monster you forgot to warn me about.",
- "responses": [ { "text": "Just in case - how else can I tell you to stay put?", "topic": "TALK_ALLY_TUTORIAL_MISC" } ]
+ "dynamic_line": "You tell me to guard, I'll stay where I am and guard it - unless I'm in a vehicle, in which case I'll stick with the vehicle. I might not be able to sop a horde of zombies, but I can keep people other people from stealing our stuff. Well, unless they try to kill me.\n Also, I'm not a potted plant, so if I hear something dangerous happening, I'm going to go see what it is instead of getting jumped in the dark. If you want me to stay put, tell me not to investigate noises - but if I get shot by some bandit because I can't see where he is and you don't want me to go looking, I won't be happy.\n You can also use the zone manager (keybind 'Y') to set up no-investigate zone, so if there's some monsters behind a door that you know about, I can ignore them. You can also set on an investigate-only zone, and I won't investigate noises coming from outside the zone. The no-investigate zone takes precedence over the investigate-only, if there's a noise coming from some place in both zones. And if you've got an investigate-only zone set anywhere, even if it's far away, I won't investigate noises coming from outside of it, so be careful with those zones. Like I said, I don't want to get sniped by some bandit because you told me not to go looking for him - but I also don't want to go investigate something pounding at door only to find out it's some horrible monster you forgot to warn me about.",
+ "responses": [
+ { "text": "Just in case - how else can I tell you to stay put?", "topic": "TALK_ALLY_TUTORIAL_MISC" },
+ { "text": "Hang on, other people can steal our stuff?", "topic": "TALK_ALLY_TUTORIAL_OTHER_FACTIONS" }
+ ]
},
{
"id": "TALK_ALLY_TUTORIAL_CBMS",
@@ -161,14 +174,28 @@
}
]
},
+ {
+ "id": "TALK_ALLY_TUTORIAL_OTHER_FACTIONS",
+ "type": "talk_topic",
+ "dynamic_line": "Just about everyone is dead, but some people survived, right? But just like you go around breaking into houses and taking whatever you think you need or want, well, other survivors do the same thing. And that stack of loot you've been accumulating looks just like some random dead person's loot when it's left alone. If some other scavenger comes around and sees that loot, and you or I or another ally isn't around to claim it, that other survivor is just going to take it. So try to detail someone to watch your stuff - whether its at a base or in a vehicle.\n Also, we've teamed up to better our chances of survival. Other people are going to do the same, forming little factions just like we did. If you open the faction manager (keybind '#'), you can see a list of all your allies, as well as all the other factions you've met so far. Some factions are really just some guy trying to survive on his own, but other factions have dozens of members and fortified bases and such. You might want to find some of them and try to make friends with them.",
+ "responses": [
+ { "text": "Anything else I can do in the faction manager?", "topic": "TALK_ALLY_TUTORIAL_RADIO" },
+ { "text": "Is there any way we can build base for our faction?", "topic": "TALK_CAMP_TUTORIAL_INTRO" }
+ ]
+ },
{
"id": "TALK_ALLY_TUTORIAL_CHANGES",
"type": "talk_topic",
- "dynamic_line": "Well, this conversation is pretty new! But there's been some other changes.\n I've been able to install CBMs on you, and have passive bionics installed in me, for a while. But now I can use some active bionics, and I can explain some details on how I use bionics.\n I can also ride horses, and you can give me orders to do things like farmwork, cutting trees, or even building houses from a blueprint.",
+ "dynamic_line": "Well, this conversation is pretty new! But there's been some other changes.\n I've been able to install CBMs on you, and have passive bionics installed in me, for a while. But now I can use some active bionics, and I can explain some details on how I use bionics.\n I can also ride horses, and you can give me orders to do things like farmwork, cutting trees, or even building houses from a blueprint.\n I can even read books to improve my skills, so you don't have to spend time reading to me.\n If you've got a faction camp, and we're near it, I'll eat from the camp's food reserves when I'm hungry. And if the camp has a well, I'll drink from the well when thirsty. Be careful, though - if other people are out on missions, I may eat the food they expected to eat when they got done!",
"responses": [
{ "text": "You can use bionics? How does that work?", "topic": "TALK_ALLY_TUTORIAL_CBMS" },
{ "text": "You can ride horses? Can I ride horses?", "topic": "TALK_ALLY_TUTORIAL_HORSES" },
- { "text": "Tell me more about the activities you can do now.", "topic": "TALK_ALLY_TUTORIAL_ACTIVITIES" }
+ { "text": "Tell me more about the activities you can do now.", "topic": "TALK_ALLY_TUTORIAL_ACTIVITIES" },
+ {
+ "text": "Hey, you can teach yourself from a book. How does that work?",
+ "topic": "TALK_ALLY_TUTORIAL_TRAINING"
+ },
+ { "text": "Tell me about faction camps.", "topic": "TALK_CAMP_TUTORIAL_INTRO" }
]
},
{
@@ -183,6 +210,8 @@
"TALK_ALLY_TUTORIAL_HORSES",
"TALK_ALLY_TUTORIAL_MEDIC",
"TALK_ALLY_TUTORIAL_MOVEMENT",
+ "TALK_ALLY_TUTORIAL_MUTINY",
+ "TALK_ALLY_TUTORIAL_OTHER_FACTIONS",
"TALK_ALLY_TUTORIAL_GUARD",
"TALK_ALLY_TUTORIAL_CBMS",
"TALK_ALLY_TUTORIAL_SOCIAL",
diff --git a/data/json/npcs/TALK_COMMON_ALLY.json b/data/json/npcs/TALK_COMMON_ALLY.json
index 8f00daf1920e8..205e4577ea67e 100644
--- a/data/json/npcs/TALK_COMMON_ALLY.json
+++ b/data/json/npcs/TALK_COMMON_ALLY.json
@@ -275,15 +275,15 @@
]
},
"responses": [
- { "text": "Change your engagement rules...", "topic": "TALK_COMBAT_ENGAGEMENT" },
- { "text": "Change your aiming rules...", "topic": "TALK_AIM_RULES" },
+ { "text": "Change your engagement rules…", "topic": "TALK_COMBAT_ENGAGEMENT" },
+ { "text": "Change your aiming rules…", "topic": "TALK_AIM_RULES" },
{
- "text": "Change your bionic power reserve rules...",
+ "text": "Change your bionic power reserve rules…",
"topic": "TALK_CBM_RESERVE_RULES",
"condition": { "npc_has_bionics": "ANY" }
},
{
- "text": "Change your bionic power recharge rules...",
+ "text": "Change your bionic power recharge rules…",
"topic": "TALK_CBM_RECHARGE_RULES",
"condition": { "npc_has_bionics": "ANY" }
},
@@ -299,8 +299,8 @@
{
"truefalsetext": {
"condition": { "npc_rule": "follow_distance_2" },
- "true": "",
- "false": ""
+ "false": "",
+ "true": ""
},
"topic": "TALK_COMBAT_COMMANDS",
"effect": { "toggle_npc_rule": "follow_distance_2" }
@@ -771,7 +771,7 @@
"id": "TALK_RADIO",
"type": "talk_topic",
"responses": [
- { "text": "Please go to this location...", "topic": "TALK_GOTO_LOCATION_RADIO", "effect": "goto_location" },
+ { "text": "Please go to this location…", "topic": "TALK_GOTO_LOCATION_RADIO", "effect": "goto_location" },
{ "text": "Stay at your current position.", "topic": "TALK_DONE", "effect": "assign_guard" },
{
"text": "Show me what needs to be done at the camp.",
@@ -911,7 +911,7 @@
],
"responses": [
{
- "text": "Oh you know, not bad, not bad...",
+ "text": "Oh you know, not bad, not bad…",
"topic": "TALK_DONE",
"switch": true,
"effect": [ "morale_chat_activity", { "npc_add_effect": "asked_to_socialize", "duration": 7000 } ]
diff --git a/data/json/npcs/TALK_COMMON_MISSION.json b/data/json/npcs/TALK_COMMON_MISSION.json
index fd26b188fc3b1..f8519ca7931c3 100644
--- a/data/json/npcs/TALK_COMMON_MISSION.json
+++ b/data/json/npcs/TALK_COMMON_MISSION.json
@@ -18,9 +18,9 @@
"TALK_CITY_COP"
],
"responses": [
- { "text": "About that job...", "topic": "TALK_MISSION_INQUIRE", "condition": "has_assigned_mission" },
+ { "text": "About that job…", "topic": "TALK_MISSION_INQUIRE", "condition": "has_assigned_mission" },
{
- "text": "About one of those jobs...",
+ "text": "About one of those jobs…",
"topic": "TALK_MISSION_LIST_ASSIGNED",
"condition": "has_many_assigned_missions"
}
@@ -110,7 +110,7 @@
"type": "talk_topic",
"responses": [
{
- "text": "I'm sorry... I failed.",
+ "text": "I'm sorry… I failed.",
"condition": "mission_failed",
"topic": "TALK_MISSION_FAILURE",
"opinion": { "trust": -1, "value": -1, "anger": 1 }
@@ -144,7 +144,7 @@
},
{ "text": "No. I'll get back to it, bye!", "condition": "mission_incomplete", "topic": "TALK_NONE" },
{
- "text": "Yup! Here it is!",
+ "text": "Yup! Here it is!",
"topic": "TALK_MISSION_SUCCESS",
"condition": {
"and": [
diff --git a/data/json/npcs/TALK_COMMON_OTHER.json b/data/json/npcs/TALK_COMMON_OTHER.json
index 1a2fc78947aaf..4e03839bc26a9 100644
--- a/data/json/npcs/TALK_COMMON_OTHER.json
+++ b/data/json/npcs/TALK_COMMON_OTHER.json
@@ -169,7 +169,7 @@
"type": "talk_topic",
"dynamic_line": "Alright. You can lead now.",
"responses": [
- { "text": "Good. Something else...", "topic": "TALK_FRIEND" },
+ { "text": "Good. Something else…", "topic": "TALK_FRIEND" },
{ "text": "Alright, let's go.", "topic": "TALK_NONE" }
]
},
@@ -271,7 +271,7 @@
"id": "TALK_DENY_PERSONAL",
"type": "talk_topic",
"dynamic_line": "I'd prefer to keep that to myself.",
- "responses": [ { "text": "I understand...", "topic": "TALK_FRIEND" } ]
+ "responses": [ { "text": "I understand…", "topic": "TALK_FRIEND" } ]
},
{
"id": "TALK_SHARE_EQUIPMENT",
@@ -305,7 +305,7 @@
"failure": { "topic": "TALK_DENY_EQUIPMENT", "opinion": { "value": -1 } }
},
{
- "text": "Well, I am helping you out...",
+ "text": "Well, I am helping you out…",
"switch": true,
"default": true,
"condition": { "or": [ "has_assigned_mission", "has_many_assigned_missions" ] },
@@ -377,21 +377,21 @@
"failure": { "topic": "TALK_DONE", "effect": [ "hostile", { "u_faction_rep": -75 } ] }
},
{
- "text": "Look, I really need this. Please let me have it.",
+ "text": "Look, I really need this. Please let me have it.",
"condition": "u_has_stolen_item",
"trial": { "type": "PERSUADE", "difficulty": 20, "mod": [ [ "TRUST", 3 ], [ "VALUE", 3 ], [ "ANGER", -3 ] ] },
"success": { "topic": "TALK_ALLOW_KEEP_ITEM", "effect": { "u_faction_rep": -1 } },
"failure": { "topic": "TALK_DISALLOW_KEEP_ITEM", "opinion": { "trust": -3, "anger": 2 }, "effect": { "u_faction_rep": -15 } }
},
{
- "text": "What, this? It's not the same one, you are mistaken.",
+ "text": "What, this? It's not the same one, you are mistaken.",
"condition": "u_has_stolen_item",
"trial": { "type": "LIE", "difficulty": 25, "mod": [ [ "TRUST", 3 ] ] },
"success": { "topic": "TALK_DONE", "effect": "remove_stolen_status" },
"failure": { "topic": "TALK_DISALLOW_KEEP_ITEM", "opinion": { "trust": -3, "value": -1, "anger": 2 } }
},
{
- "text": "I'm sorry. Look, I already dropped it, okay?",
+ "text": "I'm sorry. Look, I already dropped it, okay?",
"topic": "TALK_DONE",
"effect": [ "remove_stolen_status", { "u_faction_rep": -5 } ],
"condition": { "not": "u_has_stolen_item" }
@@ -402,7 +402,7 @@
"id": "TALK_DISALLOW_KEEP_ITEM",
"type": "talk_topic",
"dynamic_line": "Don't try and talk yourself out of this, drop it now.",
- "responses": [ { "text": "Okay, I'm dropping it...", "effect": "drop_stolen_item", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "Okay, I'm dropping it…", "effect": "drop_stolen_item", "topic": "TALK_DONE" } ]
},
{
"id": "TALK_ALLOW_KEEP_ITEM",
@@ -441,6 +441,6 @@
"id": "TALK_DELIVER_CONFIRM",
"type": "talk_topic",
"dynamic_line": "Pleasure doing business!",
- "responses": [ { "text": "You might be seeing more of me...", "topic": "TALK_DONE", "effect": "u_bulk_trade_accept" } ]
+ "responses": [ { "text": "You might be seeing more of me…", "topic": "TALK_DONE", "effect": "u_bulk_trade_accept" } ]
}
]
diff --git a/data/json/npcs/TALK_CYBORG_1.json b/data/json/npcs/TALK_CYBORG_1.json
index 1cdf5099dcab2..4545accc8f5b4 100644
--- a/data/json/npcs/TALK_CYBORG_1.json
+++ b/data/json/npcs/TALK_CYBORG_1.json
@@ -15,13 +15,13 @@
{
"switch": true,
"condition": { "npc_has_var": "cyborg_has_talked", "type": "dialogue", "context": "cyborg", "value": "yes" },
- "text": "Hey. Let's chat for a second.",
+ "text": "Hey. Let's chat for a second.",
"topic": "TALK_STRANGER_NEUTRAL"
},
{
"switch": true,
"default": true,
- "text": "That's because I saved you. Listen, I could use your help...",
+ "text": "That's because I saved you. Listen, I could use your help…",
"trial": { "type": "PERSUADE", "difficulty": 0 },
"success": { "topic": "TALK_CYBORG_FRIENDLY", "opinion": { "trust": 1, "value": 1 } },
"failure": { "topic": "TALK_CYBORG_WARY", "opinion": { "anger": 1, "fear": 1 } }
@@ -29,7 +29,7 @@
{
"switch": true,
"default": true,
- "text": "Big fucking deal. Do what I say or I'll shove that chip back where it belongs.",
+ "text": "Big fucking deal. Do what I say or I'll shove that chip back where it belongs.",
"trial": { "type": "INTIMIDATE", "difficulty": 20, "mod": [ [ "AGGRESSION", -2 ], [ "BRAVERY", -2 ] ] },
"success": { "topic": "TALK_CYBORG_FEARFUL", "opinion": { "trust": -4, "fear": 3, "value": -1, "anger": 4 } },
"failure": { "topic": "TALK_CYBORG_BREAKDOWN", "opinion": { "trust": -4, "value": -5, "anger": 10 } }
@@ -37,7 +37,7 @@
{
"switch": true,
"default": true,
- "text": "Sorry, I'm nobody. Enjoy your freedom, I guess.",
+ "text": "Sorry, I'm nobody. Enjoy your freedom, I guess.",
"topic": "TALK_DONE"
}
]
@@ -53,7 +53,7 @@
"success": { "topic": "TALK_AGREE_FOLLOW", "effect": "follow", "opinion": { "trust": 1, "value": 1 } },
"failure": { "topic": "TALK_DENY_FOLLOW", "effect": "deny_follow", "opinion": { "trust": -1, "fear": 1 } }
},
- { "text": "We both go our separate ways. Enjoy your freedom.", "topic": "TALK_DONE" }
+ { "text": "We both go our separate ways. Enjoy your freedom.", "topic": "TALK_DONE" }
]
},
{
@@ -68,7 +68,7 @@
"failure": { "topic": "TALK_CYBORG_LEAVES" }
},
{
- "text": "For all you know, I did. I'm being nice for now. You'd better hope that it lasts.",
+ "text": "For all you know, I did. I'm being nice for now. You'd better hope that it lasts.",
"trial": { "type": "INTIMIDATE", "difficulty": 20, "mod": [ [ "AGGRESSION", -2 ], [ "BRAVERY", -2 ] ] },
"success": { "topic": "TALK_CYBORG_FEARFUL", "opinion": { "trust": -4, "fear": 3, "value": -1, "anger": 4 } },
"failure": { "topic": "TALK_CYBORG_BREAKDOWN", "opinion": { "trust": -4, "value": -5, "anger": 10 } }
@@ -94,7 +94,7 @@
"opinion": { "trust": -1, "fear": -2, "anger": -2 }
},
{
- "text": "No, *I'm* sorry, I didn't mean that. Go do what you want.",
+ "text": "No, *I'm* sorry, I didn't mean that. Go do what you want.",
"trial": { "type": "PERSUADE", "difficulty": 10 },
"success": { "topic": "TALK_DONE", "opinion": { "trust": 1, "value": 1, "anger": -1 } },
"failure": { "topic": "TALK_CYBORG_BREAKDOWN", "opinion": { "trust": 4, "value": -5, "anger": 10 } }
@@ -114,7 +114,7 @@
},
{ "text": "Not if I kill you first!", "topic": "TALK_DONE", "effect": "hostile" },
{
- "text": "I'm sorry! I shouldn't have said that!",
+ "text": "I'm sorry! I shouldn't have said that!",
"trial": { "type": "PERSUADE", "difficulty": 30 },
"success": { "topic": "TALK_DONE", "opinion": { "trust": 1, "value": 1, "anger": -1 } },
"failure": { "topic": "TALK_DONE", "effect": "hostile" }
diff --git a/data/json/npcs/TALK_FACTION_CAMP.json b/data/json/npcs/TALK_FACTION_CAMP.json
index 6d8171c9277e7..ca3fca864c806 100644
--- a/data/json/npcs/TALK_FACTION_CAMP.json
+++ b/data/json/npcs/TALK_FACTION_CAMP.json
@@ -34,9 +34,31 @@
{
"id": "TALK_CAMP_TUTORIAL_INTRO",
"type": "talk_topic",
- "dynamic_line": "The faction camp system is designed to give you greater control over your companions by allowing you to assign them to their own missions. These missions can range from gathering and crafting to eventual combat patrols.",
+ "dynamic_line": "The faction camp system allows you to use friendly NPCs to take over existing buildings or construct new buildings and use them to extend the usefulness of your allies. When you have a faction camp, you can order your companions to perform missions, such as crafting new items, building up the camp, hunting for food, or recruiting more allies. Faction camps also simplify some aspects of managing your companions.",
"responses": [
- { "text": "Go on.", "topic": "TALK_CAMP_TUTORIAL_FOOD" },
+ { "text": "Give me an overview of how camps work.", "topic": "TALK_CAMP_TUTORIAL_OVERVIEW" },
+ { "text": "Tell me more about faction camps and food.", "topic": "TALK_CAMP_TUTORIAL_FOOD" },
+ { "text": "Tell me more about camp missions.", "topic": "TALK_CAMP_TUTORIAL_MISSIONS" },
+ { "text": "Tell me about building a camp.", "topic": "TALK_CAMP_TUTORIAL_BUILDING" },
+ { "text": "Give me some advice on building a camp.", "topic": "TALK_CAMP_TUTORIAL_ADVICE" },
+ { "text": "I know the basics. Just tell me what changed.", "topic": "TALK_CAMP_TUTORIAL_CHANGES" },
+ { "text": "Never mind, let's go back to talking about camps.", "topic": "TALK_CAMP_GENERAL" },
+ { "text": "Never mind, let's talk about other things you can do.", "topic": "TALK_ALLY_TUTORIAL" },
+ { "text": "Never mind, let's talk about something else.", "topic": "TALK_FRIEND" },
+ { "text": "Forget it. Let's go.", "topic": "TALK_DONE" }
+ ]
+ },
+ {
+ "id": "TALK_CAMP_TUTORIAL_OVERVIEW",
+ "type": "talk_topic",
+ "dynamic_line": "Each faction camp starts with a bulletin board. You can 'e'xamine the bulletin board to get a list of available missions with descriptions, and to assign an NPC to work on a mission. The bulletin board is the primary way to access the camp.\n If both you and a companion have two-way radios, you can assign missions to the companion remotely by talking on the radio.\n When you ask a companion to start a camp, they'll build a bulletin board at the current location, and that will establish a faction camp at that overmap tile. A faction camp has a central tile where the bulletin board is, and possibly one or more expansions that are in adjacent tiles.\n All of your faction camps can be stocked with food, and your companions will eat from that food when performing camp missions, or even when they're just hungry and near the camp.\n Currently, faction camps can be created in fields, in fire stations, and in some evac shelters.",
+ "responses": [
+ { "text": "Wait, we can talk with radios?", "topic": "TALK_ALLY_TUTORIAL_RADIO" },
+ { "text": "Tell me more about faction camps and food.", "topic": "TALK_CAMP_TUTORIAL_FOOD" },
+ { "text": "Tell me more about camp missions.", "topic": "TALK_CAMP_TUTORIAL_MISSIONS" },
+ { "text": "Tell me about building a camp.", "topic": "TALK_CAMP_TUTORIAL_BUILDING" },
+ { "text": "Give me some advice on building a camp.", "topic": "TALK_CAMP_TUTORIAL_ADVICE" },
+ { "text": "I know the basics. Just tell me what changed.", "topic": "TALK_CAMP_TUTORIAL_CHANGES" },
{ "text": "Never mind, let's go back to talking about camps.", "topic": "TALK_CAMP_GENERAL" },
{ "text": "Never mind, let's talk about other things you can do.", "topic": "TALK_ALLY_TUTORIAL" },
{ "text": "Never mind, let's talk about something else.", "topic": "TALK_FRIEND" },
@@ -46,49 +68,91 @@
{
"id": "TALK_CAMP_TUTORIAL_FOOD",
"type": "talk_topic",
- "dynamic_line": "Food is required for or produced during every mission. Missions that are for a fixed amount of time will require you to pay in advance while repeating missions, like gathering firewood, are paid upon completion. Not having the food needed to pay a companion will result in a loss of reputation across the faction. Which can lead to VERY bad things if it gets too low.",
+ "dynamic_line": "Faction camps require food, but simplify managing your companions.\n When you activate a camp's bulletin board, you'll be required to make some zones if you haven't already. One of those zones must be a camp food zone. If you drop food in the camp food zone and select the 'Distribute Food' mission, then the food will disappear and be converted into stored kcalories.\n When you send companions out on camp missions, they'll eat from the stored food when they return at the rate of 2,500 kcalories per day. Some missions have variable length, and companions will become upset if there isn't enough food when they come back, so try to keep a healthy surplus of food on hand.\n Companions who aren't on camp missions, but who are following you, will also eat from the camp food stores whenever they're hungry and within 2 overmap tiles of the camp. This drastically simplifies keeping your followers fed, so it's worthwhile to build a minimal faction camp just for this feature.\n You can upgrade a camp to include a water well. If you do, your followers will also drink from the well when they're thirsty.",
+ "responses": [
+ { "text": "Tell me more about camp missions.", "topic": "TALK_CAMP_TUTORIAL_MISSIONS" },
+ { "text": "Tell me about building a camp.", "topic": "TALK_CAMP_TUTORIAL_BUILDING" },
+ { "text": "Give me some advice on building a camp.", "topic": "TALK_CAMP_TUTORIAL_ADVICE" },
+ { "text": "I know the basics. Just tell me what changed.", "topic": "TALK_CAMP_TUTORIAL_CHANGES" },
+ { "text": "Never mind, let's go back to talking about camps.", "topic": "TALK_CAMP_GENERAL" },
+ { "text": "Never mind, let's talk about other things you can do.", "topic": "TALK_ALLY_TUTORIAL" },
+ { "text": "Never mind, let's talk about something else.", "topic": "TALK_FRIEND" },
+ { "text": "Forget it. Let's go.", "topic": "TALK_DONE" }
+ ]
+ },
+ {
+ "id": "TALK_CAMP_TUTORIAL_MISSIONS",
+ "type": "talk_topic",
+ "dynamic_line": "When you assign an NPC to a faction camp mission, they'll disappear while they go do whatever you want them to do. When the duration of the mission has elapsed, you'll see a new mission on the bulletin board to have them return and complete the mission by upgrading your camp, returning their hunting kills, dropping off whatever they were crafting, or whatever else the mission results are.\n There are all kinds of faction camp missions: building up the camp, recruiting new allies, hunting and trapping game, scrounging for materials, farming, disassembling cars, and more. Not all activities can be done at every camp - you may need to build some additional buildings, or expand the camp, to get access to some missions.\n Some faction camp missions can be duplicated by companion activities, but building up the camp can only be done via faction camp missions.\n You assign missions by interacting with the bulletin board. You'll see a list of available missions for your central camp tile. If your camp has expansions, you can tab through the expansions to see the available missions at each expansion.\n Remember, companions on camp missions need to be fed, and will become angry if they complete a mission but there isn't any food in the larder.\n There is one special mission called 'Emergency Recall'. You can use this to retrieve any companion on a faction camp mission, but this cancels the mission and wastes any resources used on it. Only use it to recover allies when something has gone really wrong with your camp and you can't get them to come back any ohter way.",
+ "responses": [
+ { "text": "What do you mean by angry?", "topic": "TALK_ALLY_TUTORIAL_MUTINY" },
+ { "text": "Tell me more about faction camps and food.", "topic": "TALK_CAMP_TUTORIAL_FOOD" },
+ { "text": "Tell me about building a camp.", "topic": "TALK_CAMP_TUTORIAL_BUILDING" },
+ { "text": "Give me some advice on building a camp.", "topic": "TALK_CAMP_TUTORIAL_ADVICE" },
+ { "text": "I know the basics. Just tell me what changed.", "topic": "TALK_CAMP_TUTORIAL_CHANGES" },
+ { "text": "Never mind, let's go back to talking about camps.", "topic": "TALK_CAMP_GENERAL" },
+ { "text": "Never mind, let's talk about other things you can do.", "topic": "TALK_ALLY_TUTORIAL" },
+ { "text": "Never mind, let's talk about something else.", "topic": "TALK_FRIEND" },
+ { "text": "Forget it. Let's go.", "topic": "TALK_DONE" }
+ ]
+ },
+ {
+ "id": "TALK_CAMP_TUTORIAL_BUILDING",
+ "type": "talk_topic",
+ "dynamic_line": "Currently, there are three types of camps that you can start building: modular field camps, fire station camps, and evac shelter camps. There used to be a fourth called the primitive field camp, but you can't start those anymore, only upgrade them.\n Modular field camps are the most flexible kind of camp since you can build them almost anywhere and can locate them to have plenty of space for expansions, but you start with nothing in a field and have to build every building, so they can require a lot of resources. Fire station and evac shelter camps are faster to build since you start in an existing building, but you have to establish them in an existing building and there may not be any space for expansions.\n Each camp location will have a variety of upgrade missions for it. The various missions have descriptions. In general, though, you'll need to establish housing if you want to expand, and some missions such as hunting or recruiting will require that you have some kind of kitchen or office that you can use to help schedule activities.",
"responses": [
- { "text": "Go on.", "topic": "TALK_CAMP_TUTORIAL_CONTROL" },
+ { "text": "Tell me about modular field camps.", "topic": "TALK_CAMP_TUTORIAL_MFC" },
+ { "text": "Tell me about fire station camps.", "topic": "TALK_CAMP_TUTORIAL_FIRE_STATION" },
+ { "text": "Tell me about evac shelter camps.", "topic": "TALK_CAMP_TUTORIAL_EVAC_SHELTER" },
+ { "text": "Tell me about expansions.", "topic": "TALK_CAMP_TUTORIAL_EXPANSIONS" },
+ { "text": "Give me some advice on building a camp.", "topic": "TALK_CAMP_TUTORIAL_ADVICE" },
+ { "text": "I know the basics. Just tell me what changed.", "topic": "TALK_CAMP_TUTORIAL_CHANGES" },
{ "text": "Never mind, let's go back to talking about camps.", "topic": "TALK_CAMP_GENERAL" },
- { "text": "Wait, repeat what you said.", "topic": "TALK_NONE" },
{ "text": "Never mind, let's talk about other things you can do.", "topic": "TALK_ALLY_TUTORIAL" },
{ "text": "Never mind, let's talk about something else.", "topic": "TALK_FRIEND" },
{ "text": "Forget it. Let's go.", "topic": "TALK_DONE" }
]
},
{
- "id": "TALK_CAMP_TUTORIAL_CONTROL",
+ "id": "TALK_CAMP_TUTORIAL_MFC",
"type": "talk_topic",
- "dynamic_line": "Each faction camp has a bulletin board associated with it. You can 'e'xamine the bulletin board to get a list of tasks that can be done and that are currently complete at the camp. You can select a task and choose an allied NPC to perform the task. \nThe task list shows tasks for the central camp. If you have expansions, you can hit 'TAB' to move between the central camp and each expansion and see the tasks for the expansions. \nIf you have a two way radio, you can use it to assign tasks remotely to any friendly NPC who also has a two way radio.",
+ "dynamic_line": "Modular field camps are the most flexible kind of camp, but they require a lot of time and resources to build. You start with an empty field - and it has to be a real empty field, not a field on a ranch or farm - and build up from nothing. You can build from wattle-and-dab if you're feeling primitive, wood panels if you have a lot of nails, metal plate if you're a welder, or tents if you're in a hurry.\n You start by building a lean-to and a bed in the northeast corner of the central camp, and then add a fire place, and expand out until you have a small shelter for two people. When that is complete, you can expand the camp in a variety of ways:\n 1. You can build up to 5 more rooms or shacks, 3 on each side of the camp.\n 2. You can build a central building in the south half of the camp, between the rooms. The central building will act as a command center, allowing your camp to perform hunting, recruiting, and combat patrol missions.\n 3. You can dig trenches on all sides of the camp, which can possibly connect to the rooms on the sides to minimize the amount of trenching you need to do.\n 4. You can build various small features such as root cellars to preserve food or a radio tower to make it easier to recruit more companions.\n Each new construction in a modular camp can be made from a different material, so you aren't constrained by what you start with. Tents are fast to put up, but fragile and likely to get destroyed by zombies. The central building has to be made from wattle-and-daub, wood, or metal, and requires more materials if the side rooms are made from tents.",
"responses": [
- { "text": "Go on.", "topic": "TALK_CAMP_TUTORIAL_SETUP" },
+ { "text": "Got it. Tell me about expansions.", "topic": "TALK_CAMP_TUTORIAL_EXPANSIONS" },
+ { "text": "Can we review how camps work?", "topic": "TALK_CAMP_TUTORIAL_OVERVIEW" },
+ { "text": "Give me some advice on building a camp.", "topic": "TALK_CAMP_TUTORIAL_ADVICE" },
+ { "text": "I know the basics. Just tell me what changed.", "topic": "TALK_CAMP_TUTORIAL_CHANGES" },
{ "text": "Never mind, let's go back to talking about camps.", "topic": "TALK_CAMP_GENERAL" },
- { "text": "Wait, repeat what you said.", "topic": "TALK_NONE" },
{ "text": "Never mind, let's talk about other things you can do.", "topic": "TALK_ALLY_TUTORIAL" },
{ "text": "Never mind, let's talk about something else.", "topic": "TALK_FRIEND" },
{ "text": "Forget it. Let's go.", "topic": "TALK_DONE" }
]
},
{
- "id": "TALK_CAMP_TUTORIAL_SETUP",
+ "id": "TALK_CAMP_TUTORIAL_FIRE_STATION",
"type": "talk_topic",
- "dynamic_line": "For your first camp, pick a site that has fields in the 8 adjacent tiles and lots of forests around it. Forests are your primary source of construction materials in the early game while fields can be used for farming. You don't have to be too picky, you can build as many camps as you want. You need a friendly NPC to perform tasks at the camp. \nAlthough you can build a camp from scratch in a field, you can also take over some other buildings. If you talk to a friendly NPC about faction camps and the NPC is standing in a building that can be used as a basecamp, you'll get the option to build a camp in that building.",
+ "dynamic_line": "Fire stations make good basecamps. You start with a brick building with secure metal doors, so you're not going to see your efforts destroyed by zombies. On the downside, there may not be many fields around, so you may not be able to expand much.\n Fire station camps are also very compact. There isn't much living space, but you can build a small pottery or blacksmithy, a chop shop in one of the garage bays, and even tear up some of the pavement to create a garden. The existing kitchen makes it easy to cook from the start, though you may need to spruce it up a bit.",
"responses": [
- { "text": "Go on.", "topic": "TALK_CAMP_TUTORIAL_UPGRADES" },
+ { "text": "Got it. Tell me about expansions.", "topic": "TALK_CAMP_TUTORIAL_EXPANSIONS" },
+ { "text": "Can we review how camps work?", "topic": "TALK_CAMP_TUTORIAL_OVERVIEW" },
+ { "text": "Give me some advice on building a camp.", "topic": "TALK_CAMP_TUTORIAL_ADVICE" },
+ { "text": "I know the basics. Just tell me what changed.", "topic": "TALK_CAMP_TUTORIAL_CHANGES" },
{ "text": "Never mind, let's go back to talking about camps.", "topic": "TALK_CAMP_GENERAL" },
- { "text": "Wait, repeat what you said.", "topic": "TALK_NONE" },
+ { "text": "Never mind, let's talk about other things you can do.", "topic": "TALK_ALLY_TUTORIAL" },
{ "text": "Never mind, let's talk about something else.", "topic": "TALK_FRIEND" },
{ "text": "Forget it. Let's go.", "topic": "TALK_DONE" }
]
},
{
- "id": "TALK_CAMP_TUTORIAL_UPGRADES",
+ "id": "TALK_CAMP_TUTORIAL_EVAC_SHELTER",
"type": "talk_topic",
- "dynamic_line": "After you pick a site you will need to find or make materials to upgrade the camp further to access new missions. The first new missions are focused on gathering materials to upgrade the camp so you don't have to. After two or three upgrades you will have access to the [Menial Labor] mission which will allow you to task companions with sorting all of the items around your camp into categories. Later upgrades allow you to send companions to recruit new members, build overmap fortifications, or even conduct combat patrols",
+ "dynamic_line": "You can build a faction camp in the common evac shelter - the basic design with a single, wide open room. Evac shelters are everywhere and often have fields surrounding them, so they're a little more flexible than a modular field camp but still make it easy to add expansions.\n Evac center camps can be built up in several ways. You basically need to decide between building more bedrooms or adding for crafting and cooking space.",
"responses": [
- { "text": "Go on.", "topic": "TALK_CAMP_TUTORIAL_EXPANSIONS" },
+ { "text": "Got it. Tell me about expansions.", "topic": "TALK_CAMP_TUTORIAL_EXPANSIONS" },
+ { "text": "Can we review how camps work?", "topic": "TALK_CAMP_TUTORIAL_OVERVIEW" },
+ { "text": "Give me some advice on building a camp.", "topic": "TALK_CAMP_TUTORIAL_ADVICE" },
+ { "text": "I know the basics. Just tell me what changed.", "topic": "TALK_CAMP_TUTORIAL_CHANGES" },
{ "text": "Never mind, let's go back to talking about camps.", "topic": "TALK_CAMP_GENERAL" },
- { "text": "Wait, repeat what you said.", "topic": "TALK_NONE" },
{ "text": "Never mind, let's talk about other things you can do.", "topic": "TALK_ALLY_TUTORIAL" },
{ "text": "Never mind, let's talk about something else.", "topic": "TALK_FRIEND" },
{ "text": "Forget it. Let's go.", "topic": "TALK_DONE" }
@@ -97,10 +161,29 @@
{
"id": "TALK_CAMP_TUTORIAL_EXPANSIONS",
"type": "talk_topic",
- "dynamic_line": "When you upgrade your first tent all the way you will unlock the ability to construct expansions. Expansions allow you to specialize each camp you build by focusing on the industries that you need. A [Farm] is recommended for players that want to pursue a large faction while a [Kitchen] is better for players that just want the quality of life improvement of having an NPC do all of their cooking. A [Garage] is useful for chop shop type missions that let you trade vehicles for large amounts of parts and resources. All those resources can be turning into valuable equipment in the [Blacksmith Shop]. You can build an additional expansion every other level after the first is unlocked and when one camp is full you can just as easily build another.",
+ "dynamic_line": "Each camp can have up to 8 expansions, one in each adjacent overmap tile. Expansions add to the capabilities of your camp, such as adding a farm field or a manufactory for crafting all kinds of things.\n You need two beds in a room in your central camp for each expansion, and currently, expansions can only be built in fields and have to be built up from scratch.\n Expansion missions show up in separate tabs in the bulletin board, one set of missions per location, and you'll need to hit 'tab' to see them. The currently available expansions are:\n -- Farm: This is a full tile of plowed fields that you can maintain or send companions on missions to maintain. Plants grow here normally.\n -- Garage: This is a large building. Companions can be sent on missions here to disassemble vehicles. Of course, you can also assign companions to disassemble vehicles without a garage, so this expansion is not very useful.\n -- Canteen: This is an expanded kitchen, dining area, and pantry.\n --Livestock Area: This is a modular set of buildings for holding livestock such as cows, horses, or chickens. Animals are not included!\n Saltworks Area: This is a small expansion for processing salt.\n Fabrication Workshop: This is a large expansion for doing all kinds of crafts. Companions can use some of the furniture in this expansion to craft some items much faster than you can do by yourself by hand.\n Central Storage Building: This is a large building for storing goods.",
"responses": [
- { "text": "Thanks, let's go back to talking about camps.", "topic": "TALK_CAMP_GENERAL" },
- { "text": "Wait, repeat what you said.", "topic": "TALK_NONE" },
+ { "text": "Got it. Give me some advice on building a camp.", "topic": "TALK_CAMP_TUTORIAL_ADVICE" },
+ { "text": "I know the basics. Just tell me what changed.", "topic": "TALK_CAMP_TUTORIAL_CHANGES" },
+ { "text": "Never mind, let's go back to talking about camps.", "topic": "TALK_CAMP_GENERAL" },
+ { "text": "Never mind, let's talk about other things you can do.", "topic": "TALK_ALLY_TUTORIAL" },
+ { "text": "Never mind, let's talk about something else.", "topic": "TALK_FRIEND" },
+ { "text": "Forget it. Let's go.", "topic": "TALK_DONE" }
+ ]
+ },
+ {
+ "id": "TALK_CAMP_TUTORIAL_ADVICE",
+ "type": "talk_topic",
+ "dynamic_line": "Starting a camp doesn't take much time, and you can use a faction camp to keep your companions fed without needing to regularly give them food, so it's a good idea to establish a minimal camp anywhere you intend to be for a while.\n How much you want to expand your camps is up to you. A modular field camp can be very resource intensive, but building one up allows you to send companions off to hunt and farm for you, so there's quite the pay-off. If nothing else, you should consider upgrading the northeast tent to the point where you can build a water well, or if you started with a fire station or evac shelter camp, you should build a water well as soon as you can.\n If you have access to a fire station or evac shelter, you may want to build your camp in them. Both of those camps are are very compact, but have much of the same functionality as an upgraded field camp without requiring so many resources.\n If you are adding expansions to your camp, consider starting with a farm or fabrication workshop. The farm makes it easy to grow your own food, while the fabrication workshop can allow you to craft some of the resources you need to upgrade your camp.\n The canteen, saltworks, livestock area, and storage area probably shouldn't be your first expansions, but they all have their uses.",
+ "responses": [
+ { "text": "Give me an overview of how camps work.", "topic": "TALK_CAMP_TUTORIAL_OVERVIEW" },
+ { "text": "Tell me about modular field camps.", "topic": "TALK_CAMP_TUTORIAL_MFC" },
+ { "text": "Tell me about fire station camps.", "topic": "TALK_CAMP_TUTORIAL_FIRE_STATION" },
+ { "text": "Tell me about evac shelter camps.", "topic": "TALK_CAMP_TUTORIAL_EVAC_SHELTER" },
+ { "text": "Tell me about expansions.", "topic": "TALK_CAMP_TUTORIAL_EXPANSIONS" },
+ { "text": "Give me some advice on building a camp.", "topic": "TALK_CAMP_TUTORIAL_ADVICE" },
+ { "text": "I know the basics. Just tell me what changed.", "topic": "TALK_CAMP_TUTORIAL_CHANGES" },
+ { "text": "Never mind, let's go back to talking about camps.", "topic": "TALK_CAMP_GENERAL" },
{ "text": "Never mind, let's talk about other things you can do.", "topic": "TALK_ALLY_TUTORIAL" },
{ "text": "Never mind, let's talk about something else.", "topic": "TALK_FRIEND" },
{ "text": "Forget it. Let's go.", "topic": "TALK_DONE" }
@@ -111,7 +194,14 @@
"type": "talk_topic",
"dynamic_line": "\n1. Faction camps used to require a second NPC to act as overseer and camp manager, but that's been replaced by the bulletin board and two-way radio.\n2. It used to be impossible to upgrade faction camps if there was a vehicle, even a cart, on the same map. You can now upgrade camps even if there is a vehicle on the map, as long as the upgrade doesn't change the area under the vehicle.\n3. Faction camps used to upgrade by completely redrawing the map. Damage to the camp would be replaced when the camp was upgraded. Now upgrades only change the actual area being upgraded, and you will have to repair damage to the camp yourself.\n4. There used to be a single path for upgrading the main camp. Now, after you have completed the first tent, you will have many options for your next upgrade, and you can have different companions working on different upgrades of the main camp at the same time.\n5. Friendly NPCs who are near a camp will feed themselves from the camp's food stores, and if the camp has a well, they'll use it to quench their thirst.\n6. You can now set up faction camps in select buildings. The list of available buildings is constantly growing, so you'll have to experiment.",
"responses": [
- { "text": "Thanks, let's go back to talking about camps.", "topic": "TALK_NONE" },
+ { "text": "Wait, let's go back over from the start.", "topic": "TALK_CAMP_TUTORIAL_INTRO" },
+ { "text": "Give me an overview of how camps work.", "topic": "TALK_CAMP_TUTORIAL_OVERVIEW" },
+ { "text": "Tell me more about faction camps and food.", "topic": "TALK_CAMP_TUTORIAL_FOOD" },
+ { "text": "Tell me about modular field camps.", "topic": "TALK_CAMP_TUTORIAL_MFC" },
+ { "text": "Tell me about fire station camps.", "topic": "TALK_CAMP_TUTORIAL_FIRE_STATION" },
+ { "text": "Tell me about evac shelter camps.", "topic": "TALK_CAMP_TUTORIAL_EVAC_SHELTER" },
+ { "text": "Tell me about expansions.", "topic": "TALK_CAMP_TUTORIAL_EXPANSIONS" },
+ { "text": "Thanks, let's go back to talking about camps.", "topic": "TALK_CAMP_GENERAL" },
{ "text": "Never mind, let's talk about something else.", "topic": "TALK_FRIEND" },
{ "text": "Forget it. Let's go.", "topic": "TALK_DONE" }
]
diff --git a/data/json/npcs/TALK_MARLOSS_VOICE.json b/data/json/npcs/TALK_MARLOSS_VOICE.json
index 07961e70390d5..f27f620e9820e 100644
--- a/data/json/npcs/TALK_MARLOSS_VOICE.json
+++ b/data/json/npcs/TALK_MARLOSS_VOICE.json
@@ -44,8 +44,8 @@
"dynamic_line": "Dangerous? It may look different, but this land cares and provides for us. We are celebrating with a feast, in fact. Do you care to join us?",
"responses": [
{ "text": "Well, sure.", "topic": "TALK_MARLOSS_VOICE_OFFER_BERRY" },
- { "text": "I'd... rather not.", "topic": "TALK_MARLOSS_VOICE" },
- { "text": "I'm sorry... I have places to be.", "topic": "TALK_DONE" }
+ { "text": "I'd… rather not.", "topic": "TALK_MARLOSS_VOICE" },
+ { "text": "I'm sorry… I have places to be.", "topic": "TALK_DONE" }
]
},
{
@@ -71,7 +71,7 @@
"type": "talk_topic",
"id": "TALK_MARLOSS_VOICE_WITH_US",
"dynamic_line": "Oh, but you already have.",
- "responses": [ { "text": "Yes... yes I have.", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "Yes… yes I have.", "topic": "TALK_DONE" } ]
},
{
"type": "talk_topic",
diff --git a/data/json/npcs/TALK_SURVIVOR_CHEF.json b/data/json/npcs/TALK_SURVIVOR_CHEF.json
index 2182096f8236b..0468087a639ac 100644
--- a/data/json/npcs/TALK_SURVIVOR_CHEF.json
+++ b/data/json/npcs/TALK_SURVIVOR_CHEF.json
@@ -49,7 +49,7 @@
"id": "TALK_NC_SURVIVOR_CHEF_STORY2",
"dynamic_line": "Some lunatic covered in a film of goo, black as oil, had fallen through one of the large glass windows. There were glass shards stuck in its head and neck. I thought the poor guy, girl-thing-whatever was dead. People began to crowd around it, some were taking pictures.",
"responses": [
- { "text": "Horrible. Did you get any pictures yourself?", "topic": "TALK_NC_SURVIVOR_CHEF_STORY3" },
+ { "text": "Horrible. Did you get any pictures yourself?", "topic": "TALK_NC_SURVIVOR_CHEF_STORY3" },
{ "text": "What did you do before the cataclysm?", "topic": "TALK_NC_SURVIVOR_CHEF_EXPERTISE" },
{ "text": "Let's trade items.", "topic": "TALK_NONE", "effect": "start_trade" },
{ "text": "I'm sorry, I gotta go.", "topic": "TALK_DONE" }
diff --git a/data/json/npcs/TALK_TEST.json b/data/json/npcs/TALK_TEST.json
index 92f60c2425ee6..b9fb8c832f221 100644
--- a/data/json/npcs/TALK_TEST.json
+++ b/data/json/npcs/TALK_TEST.json
@@ -172,7 +172,11 @@
"responses": [
{ "text": "This is a basic test response.", "topic": "TALK_DONE" },
{ "text": "This is a npc allies 1 test response.", "topic": "TALK_DONE", "condition": { "npc_allies": 1 } },
- { "text": "This an error! npc allies 2 test response.", "topic": "TALK_DONE", "condition": { "npc_allies": 2 } }
+ {
+ "text": "This an error! npc allies 2 test response.",
+ "topic": "TALK_DONE",
+ "condition": { "npc_allies": 2 }
+ }
]
},
{
@@ -524,7 +528,7 @@
"condition": { "u_has_items": { "item": "beer", "count": 2 } }
},
{
- "text": "Test failure! This is a u_has_items test response.",
+ "text": "Test failure! This is a u_has_items test response.",
"topic": "TALK_DONE",
"condition": { "u_has_items": { "item": "bottle_glass", "count": 2 } }
},
@@ -539,7 +543,7 @@
"condition": { "u_has_item_category": "books", "count": 2 }
},
{
- "text": "Failure! This is a u_has_item_category books count 3 test response.",
+ "text": "Failure! This is a u_has_item_category books count 3 test response.",
"topic": "TALK_DONE",
"condition": { "u_has_item_category": "books", "count": 3 }
}
@@ -701,7 +705,7 @@
"condition": { "u_has_bionics": "bio_ads" }
},
{
- "text": "Failure! This is a npc_has_bionics bio_ads test response.",
+ "text": "Failure! This is a npc_has_bionics bio_ads test response.",
"topic": "TALK_DONE",
"condition": { "npc_has_bionics": "bio_ads" }
},
diff --git a/data/json/npcs/TALK_TRUE_FOODPERSON.json b/data/json/npcs/TALK_TRUE_FOODPERSON.json
index f91bd171d4325..947dc1aef9fb9 100644
--- a/data/json/npcs/TALK_TRUE_FOODPERSON.json
+++ b/data/json/npcs/TALK_TRUE_FOODPERSON.json
@@ -80,7 +80,7 @@
}
]
},
- "text": "Greetings... Foodperson?",
+ "text": "Greetings… Foodperson?",
"topic": "TALK_FOODPERSON_INTRODUCTION"
},
{
@@ -153,7 +153,7 @@
"success": { "topic": "TALK_FOODPERSON_MAIN", "opinion": { "trust": 2, "value": 2 } },
"failure": { "topic": "TALK_FOODPERSON_VEXED", "opinion": { "trust": -5, "value": -5 } }
},
- { "text": "Ah... Well, nice to meet you Foodperson.", "topic": "TALK_FOODPERSON_MAIN" }
+ { "text": "Ah… Well, nice to meet you Foodperson.", "topic": "TALK_FOODPERSON_MAIN" }
]
},
{
@@ -162,7 +162,7 @@
"dynamic_line": "Do not mock me, for my strength is quite real! Get out of here now!",
"responses": [
{ "text": "Sheesh, ok, calm down, I'm leaving!", "topic": "TALK_DONE" },
- { "text": "Forgive me, I didn't mean to disrespect you.", "topic": "TALK_FOODPERSON_MAIN" },
+ { "text": "Forgive me, I didn't mean to disrespect you.", "topic": "TALK_FOODPERSON_MAIN" },
{ "text": "Oh yeah? Show me what you can do!", "topic": "TALK_DONE", "effect": "hostile" }
]
},
@@ -172,7 +172,7 @@
"dynamic_line": "A common mistake, but I can assure you that I'm very real!",
"responses": [
{ "text": "Sure, whatever.", "topic": "TALK_DONE" },
- { "text": "Ok... I believe you.", "topic": "TALK_FOODPERSON_MAIN" }
+ { "text": "Ok… I believe you.", "topic": "TALK_FOODPERSON_MAIN" }
]
},
{
@@ -397,7 +397,7 @@
"type": "talk_topic",
"dynamic_line": "Alright let's see what you've got.",
"speaker_effect": { "effect": { "npc_add_var": "npc_succes_trade", "type": "dialogue", "context": "foodperson", "value": "yes" } },
- "responses": [ { "text": "...", "topic": "TALK_DONE", "effect": "start_trade" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE", "effect": "start_trade" } ]
},
{
"id": "TALK_FOODPERSON_NOTRAINING",
@@ -411,7 +411,7 @@
"type": "talk_topic",
"dynamic_line": "I can teach you a few tricks.",
"speaker_effect": { "effect": { "npc_add_var": "npc_succes_training", "type": "dialogue", "context": "foodperson", "value": "yes" } },
- "responses": [ { "text": "...", "topic": "TALK_TRAIN" }, { "text": "Nevermind.", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_TRAIN" }, { "text": "Nevermind.", "topic": "TALK_DONE" } ]
},
{
"id": "TALK_FOODPERSON_NOSHELTER",
@@ -441,13 +441,13 @@
"speaker_effect": { "effect": { "npc_add_var": "npc_sidekick_offer", "type": "dialogue", "context": "foodperson", "value": "yes" } },
"responses": [
{ "condition": { "not": "has_assigned_mission" }, "text": "That sounds great!", "topic": "TALK_MISSION_LIST" },
- { "condition": { "not": "has_assigned_mission" }, "text": "Ok...", "topic": "TALK_MISSION_LIST" },
+ { "condition": { "not": "has_assigned_mission" }, "text": "Ok…", "topic": "TALK_MISSION_LIST" },
{
"condition": { "not": "has_assigned_mission" },
"text": "I need to think about it.",
"topic": "TALK_FOODPERSON_MAIN"
},
- { "condition": { "not": "has_assigned_mission" }, "text": "Huh... No thanks.", "topic": "TALK_DONE" },
+ { "condition": { "not": "has_assigned_mission" }, "text": "Huh… No thanks.", "topic": "TALK_DONE" },
{
"condition": "has_assigned_mission",
"text": "There's other things I'd like to discuss.",
@@ -462,7 +462,7 @@
"dynamic_line": "The way you talk, the way you move... You're... You're me? But how?",
"responses": [
{
- "text": "I... I don't know. It probably has something to do with ! What do you say we team up to find out?",
+ "text": "I… I don't know. It probably has something to do with ! What do you say we team up to find out?",
"effect": { "npc_add_var": "foodperson_meeting_solved", "type": "dialogue", "context": "foodperson", "value": "yes" },
"topic": "TALK_FOODPERSON_TEAMUP"
},
@@ -531,7 +531,7 @@
{ "text": "I AM THE ONE!", "topic": "TALK_DONE", "effect": "hostile", "opinion": { "trust": -20, "value": -20 } },
{
"condition": { "not": { "u_has_trait": "PROF_FOODP" } },
- "text": "Wow calm down, it's just a prank bro.",
+ "text": "Wow calm down, it's just a prank bro.",
"topic": "TALK_DONE",
"opinion": { "trust": -20, "value": -20 }
},
diff --git a/data/json/npcs/classes.json b/data/json/npcs/classes.json
index 229f5c90c72ae..275401f058bca 100644
--- a/data/json/npcs/classes.json
+++ b/data/json/npcs/classes.json
@@ -141,7 +141,7 @@
"type": "npc_class",
"id": "NC_SCIENTIST",
"name": "Scientist",
- "job_description": "I'm looking for clues concerning these monsters' origins...",
+ "job_description": "I'm looking for clues concerning these monsters' origins…",
"traits": [ { "group": "BG_survival_story_LAB" }, { "group": "NPC_starting_traits" }, { "group": "Appearance_demographics" } ],
"bonus_str": { "rng": [ -1, -3 ] },
"bonus_dex": { "rng": [ -1, 0 ] },
@@ -334,7 +334,7 @@
"type": "npc_class",
"id": "NC_HALLU",
"name": "Real Person",
- "job_description": "I'm just wandering, like a totally real and normal NP... Person!",
+ "job_description": "I'm just wandering, like a totally real and normal NP… Person!",
"traits": [ { "group": "BG_survival_story_UNIVERSAL" }, { "group": "NPC_starting_traits" }, [ "HALLUCINATION", 100 ] ],
"common": false,
"skills": [
@@ -362,7 +362,7 @@
"type": "npc_class",
"id": "NC_TRUE_FOODPERSON",
"name": "Foodperson",
- "job_description": "I AM FOODPERSON. AND I BRING SUSTENANCE!",
+ "job_description": "I AM FOODPERSON. AND I BRING SUSTENANCE!",
"traits": [ { "group": "NPC_starting_traits" }, { "group": "Appearance_demographics" }, [ "PROF_FOODP", 100 ] ],
"common": false,
"worn_override": "NC_TRUE_FOODPERSON_worn",
@@ -379,7 +379,7 @@
"type": "npc_class",
"id": "NC_CYBORG",
"name": "Cyborg",
- "job_description": "Zzzzzt... I...I'm a Cy...BEEEEEP...borg.",
+ "job_description": "Zzzzzt… I… I'm a Cy… BEEEEEP… borg.",
"traits": [ { "group": "BG_survival_story_CYBORG" }, { "group": "NPC_starting_traits" }, { "group": "Appearance_demographics" } ],
"skills": [
{ "skill": "ALL", "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 4, 2 ] }, { "rng": [ -4, -1 ] } ] } ] } }
diff --git a/data/json/npcs/destination_locations.json b/data/json/npcs/destination_locations.json
index f9218d44ec97e..a3ff6c846ad53 100644
--- a/data/json/npcs/destination_locations.json
+++ b/data/json/npcs/destination_locations.json
@@ -2,84 +2,126 @@
{
"type": "overmap_location",
"id": "source_of_anything",
- "terrains": [
- "house",
- "s_gas",
- "s_pharm",
- "s_hardware",
- "s_sports",
- "s_liquor",
- "s_gun",
- "s_library",
- "megastore_entrance",
- "fire_station",
- "mil_surplus",
- "mansion_entry"
- ]
+ "flags": [ "GENERIC_LOOT" ]
},
{
"type": "overmap_location",
"id": "source_of_ammo",
- "terrains": [ "house", "s_gun", "mil_surplus", "mansion_entry" ]
+ "flags": [ "SOURCE_AMMO" ]
},
{
"type": "overmap_location",
- "id": "source_of_gun",
- "terrains": [ "s_gun", "pawn", "hdwr_large_entrance", "mansion_entry" ]
+ "id": "source_of_guns",
+ "flags": [ "SOURCE_GUN" ]
},
{
"type": "overmap_location",
- "id": "source_of_weapon",
- "terrains": [ "s_gun", "s_sports", "s_hardware", "megastore_entrance", "hdwr_large_entrance", "fire_station", "mansion_entry" ]
+ "id": "source_of_weapons",
+ "flags": [ "SOURCE_WEAPON", "SOURCE_GUN" ]
},
{
"type": "overmap_location",
"id": "source_of_drink",
- "terrains": [
- "s_gas",
- "s_pharm",
- "s_pharm_1",
- "s_restaurant",
- "s_restaurant_1",
- "s_restaurant_2",
- "s_restaurant_3",
- "s_restaurant_coffee",
- "s_restaurant_coffee_1",
- "s_restaurant_coffee_2",
- "s_teashop",
- "s_teashop_1",
- "bar",
- "bar_1",
- "s_liquor",
- "s_grocery",
- "megastore_entrance",
- "mansion_entry"
- ]
+ "flags": [ "SOURCE_DRINK" ]
},
{
"type": "overmap_location",
"id": "source_of_food",
- "terrains": [
- "s_grocery",
- "farm_1",
- "2farm_1",
- "dairy_farm_NW",
- "sugar_house",
- "orchard_stall",
- "s_restaurant",
- "s_restaurant_1",
- "s_restaurant_2",
- "s_restaurant_3",
- "s_restaurant_fast",
- "s_restaurant_fast_1",
- "s_butcher",
- "s_butcher_1",
- "s_butcher_2",
- "s_pizza_parlor",
- "s_pizza_parlor_1",
- "megastore_entrance",
- "bakery",
- "mansion_entry"
- ]
+ "flags": [ "SOURCE_FOOD" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_fuel",
+ "flags": [ "SOURCE_FUEL" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_farming",
+ "flags": [ "SOURCE_FARMING" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_fabricaton",
+ "flags": [ "SOURCE_FABRICATION" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_books",
+ "flags": [ "SOURCE_BOOKS" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_forage",
+ "flags": [ "SOURCE_FORAGE" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_cooking",
+ "flags": [ "SOURCE_COOKING" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_tailoring",
+ "flags": [ "SOURCE_TAILORING" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_vehicles",
+ "flags": [ "SOURCE_VEHICLES" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_electronics",
+ "flags": [ "SOURCE_ELECTRONICS" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_construction",
+ "flags": [ "SOURCE_CONSTRUCTION" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_chemistry",
+ "flags": [ "SOURCE_CHEMISTRY" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_clothing",
+ "flags": [ "SOURCE_CLOTHING" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_safety",
+ "flags": [ "SOURCE_SAFETY" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_animals",
+ "flags": [ "SOURCE_ANIMALS" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_medicine",
+ "flags": [ "SOURCE_MEDICINE" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_luxuries",
+ "flags": [ "SOURCE_LUXURY" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "source_of_people",
+ "flags": [ "SOURCE_PEOPLE" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "risk_high",
+ "flags": [ "RISK_HIGH" ]
+ },
+ {
+ "type": "overmap_location",
+ "id": "risk_low",
+ "flags": [ "RISK_LOW" ]
}
]
diff --git a/data/json/npcs/epilogues.json b/data/json/npcs/epilogues.json
index 2f7039991d345..df79c05640e59 100644
--- a/data/json/npcs/epilogues.json
+++ b/data/json/npcs/epilogues.json
@@ -156,6 +156,174 @@
"id": "npc_male_27",
"text": " Was detained and handcuffed by a police robot on multiple counts of looting and vandalism that were tracked and recorded by the few remaining security systems. While being held on the ground awaiting additional police response units he was torn to pieces by the undead that were attracted by the commotion."
},
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_28",
+ "text": " Became a hunter after your death, living alone in the woods. Traced back to his cabin, he was murdered and devoured in his sleep by an actual cannibal."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_29",
+ "text": " Survived for many years, and became a renowned scavenger, eventually setting up a small shop in a Free Merchant outpost. Survived by two sons, he died after a rare artifact poisoned his blood with acid."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_30",
+ "text": " He wandered and scavenged the land for years after your death, eventually becoming a skilled mechanic. Employed by the Free Merchants, he lived a comfortable, if rather uneventful life, dying of cancer, a rare luxury these days."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_31",
+ "text": " Became truly depressed after your death and hid in the woods. If rumors are to be believed, he spent years living as a deranged hermit in a distant cave, worshiping stones and sacrificing dogs."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_32",
+ "text": " After your death, he became obsessed with preserving old knowledge and eventually became known as 'the lorekeeper'. Hired by the Old Guard as a librarian, he spent his life amongst dusty old books, trying to convince others of their value. He even changed his name to Frederic Bastiat, in honor of an old French philosopher."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_33",
+ "text": " He found faith after your death, eventually joining an Anglican community and becoming a Vicar. The crucifix provided him with a sense of meaning, before dying horribly at the hands of raiders. He was still praying when they roasted him alive."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_34",
+ "text": " Lost and damned, he joined a bloody cult after your death, kidnapping and sacrificing young women. His entire group was killed after being discovered by the Old Guard. His head was put on a spike as a reminder that cultists will not be tolerated."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_35",
+ "text": " He did not survive for long after your death. Electrocuted in an old cellar, he kept screaming your name. His body was never found."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_36",
+ "text": " Survived you by just a few days, he drowned trying to escape from a horde."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_37",
+ "text": " He wandered alone for days, before finding a Free Merchant outpost. He spent a few years as a caravan guard, often drinking himself half blind and enjoying any woman he could find. Booze made his grip unsteady and he was eventually fired. He died of alcohol poisoning the same day."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_38",
+ "text": " Obsessed with the idea of settling down, he eventually found love and retired to a farm in the middle of nowhere. Relatively safe from the monsters, he thrived for years. Survived by seven sons and two daughters."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_39",
+ "text": " Became famous in the wastes after finding an old brewery and copying their recipe. His chilled beer, a known delicacy, is traded far and wide by the Free Merchants."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_40",
+ "text": " Found a whole cellar of single malt whisky. Drank himself to death."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_41",
+ "text": " Depressed after your death, he would hang himself after just a few days."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_42",
+ "text": " Wandered for months, before finding a small community that would accept him. Became a farmer and spent the rest of his uneventful life tending to crops, glad that he was no longer alone."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_43",
+ "text": " Obsessed with finding 'the Cure', he died a few weeks later in an old lab, torn to shreds by a security turret."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_44",
+ "text": " Became a runner for the Refugee Center and died after a few months."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_45",
+ "text": " Joined a raider gang and died in a firefight a few weeks later, trying to rob a Free Merchant caravan."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_46",
+ "text": " Traveled north, he eventually found an intact baseball field and built a prosperous farming community there."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_47",
+ "text": " He spent the rest of his short life looking for a new fix. Died of an overdose in an abandoned basement."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_48",
+ "text": " Traveled south and joined a small fishing village. Died a few years later in a raider attack, alongside his young son."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_49",
+ "text": " Thoroughly terrified by your death, he retired to an old LMOE shelter, vowing never to leave. He died of starvation inside."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_50",
+ "text": " He became a very prosperous game hunter, trading meat and furs, and providing many settlements with food in exchange for booze and male company. He died years later of an STD."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_51",
+ "text": " Retired to the woods, he spent the rest of his life fishing and hunting in a desolate cabin, rarely interacting with anyone else."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_52",
+ "text": " Died en route to California, deliriously dreaming of a better life as he was slowly devoured by spiders."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_53",
+ "text": " He tried to cope with loneliness after your death, but failed. He was blind drunk when a group of zombies found his hideout and didn't stand a chance."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_54",
+ "text": " He didn't survive for long, waking up to a horde of zombies. They smashed through his fortified windows in a pinch and only the last bullet prevented him from being devoured alive."
+ },
+ {
+ "type": "epilogue",
+ "group": "male",
+ "id": "npc_male_55",
+ "text": " He got sick soon after your death, and died without any medical help. His last words were 'Why did I live long enough to suffer like that?'"
+ },
{
"type": "epilogue",
"group": "female",
@@ -311,5 +479,155 @@
"group": "female",
"id": "npc_female_26",
"text": " Was detained and incarcerated by a police robot on multiple counts of looting and vandalism that were tracked and recorded by the few remaining security systems. Trapped in a cell awaiting police review, she spent weeks crying out for help and slowly consuming what supplies she carried. Two weeks after being dragged to her cell she died from dehydration."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_27",
+ "text": " Shot by the Old Guard a few weeks later, hunted down after she robbed an important caravan."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_28",
+ "text": " Traveled north, she eventually found a quiet community there and spent the rest of her life farming. She's survived by four daughters."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_29",
+ "text": " She became a runner for the Old Guard and was eventually permitted to join. She spent the rest of her life hunting raiders. She died in a skirmish after a few years, sacrificing her life to let her unit retreat. Her name is venerated in songs and inscriptions."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_30",
+ "text": " Shortly after your death she joined the Free Merchants, becoming a caravan guard and after a few months became the new liaison in the Refugee Center. She died a few years later of a mysterious illness."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_31",
+ "text": " She was found half-dead by the Old Guard who took her in. She became a famous scavenger, known for finding an intact stash of experimental antibiotics."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_32",
+ "text": " She retired to the forest, where she built her own cabin and spending the rest of her life fishing."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_33",
+ "text": " Captured by raiders, she spent the rest of her miserable life as a slave. Hopeless, she slit her wrists with a rusty knife."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_34",
+ "text": " Depressed, she joined a protestant community and became a paragon of virtue. Devoting her life to bible study, she spent the rest of her life in relative peace."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_35",
+ "text": " Killed and devoured by a cannibal just a few days after your death, hardly anyone remembers her name."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_36",
+ "text": " Became a renowned merchant after your death, she built her own outpost in the west. An avid book collector, she established a great library to keep the flame of knowledge burning."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_37",
+ "text": " Traveled around for months before finding an old farm. She spent a few years tending to her crops and living the life of a hermit before being killed by raiders for fun."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_38",
+ "text": " Traveled south and joined a settlement there. She became a renowned engineer, building the largest steam engine in New England."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_39",
+ "text": " Joined a gang after your death, she spent months preying on the innocent, before dying in a dispute with a fellow brute."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_40",
+ "text": " Devoured alive by a group of zombies, she kept thinking of you as she died."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_41",
+ "text": " She found an abandoned APC and spent years traveling around and collecting personal stories. She wrote one of the few post-apocalyptic books, detailing the life after the end."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_42",
+ "text": " Kept wandering for years. Her life was cut short when a group of raiders used her as a target practice."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_43",
+ "text": " She became a skilled game hunter and one of the best shots in the wasteland. Years later she joined the Old Guard and was given the position of Marshal."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_44",
+ "text": " Desperate to save humanity from extinction, she organized her own group of survivors, whose job was to hunt bandits and decorate roads with their mutilated bodies. She died in a skirmish a few months later."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_45",
+ "text": " She became an arsonist, and was incinerated a few weeks later in a fire she set."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_46",
+ "text": " She kept wandering for a few weeks but eventually died after drinking untreated water."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_47",
+ "text": " She wandered north and joined a local community there. She became known for her trapping skills and ensured that the locals always had fresh meat on their tables."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_48",
+ "text": " She joined the Free Merchants and led their first caravan to Canada. She died a few years later of dysentery."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_49",
+ "text": " She built a boat and sailed east towards Europe, hoping that it was not affected by the apocalypse. She was never heard from again."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_50",
+ "text": " She led a doomsday cult for a few years, she was sacrificed to their gods after a particularly terrible harvest."
+ },
+ {
+ "type": "epilogue",
+ "group": "female",
+ "id": "npc_female_51",
+ "text": " Became obsessed with chems, and died of an overdose a few months after your death."
}
]
diff --git a/data/json/npcs/factions.json b/data/json/npcs/factions.json
index 671d0c785c96d..b89389a8a3ad4 100644
--- a/data/json/npcs/factions.json
+++ b/data/json/npcs/factions.json
@@ -482,14 +482,80 @@
{
"type": "faction",
"id": "gods_community",
- "name": "God's Community",
- "likes_u": 35,
- "respects_u": 35,
+ "name": "New England Church Community",
+ "likes_u": 30,
+ "respects_u": 20,
"known_by_u": false,
- "size": 20,
- "power": 50,
- "food_supply": 20000,
- "wealth": 10000,
+ "size": 25,
+ "power": 20,
+ "currency": "icon",
+ "food_supply": 87500,
+ "wealth": 82500,
+ "relations": {
+ "free_merchants": {
+ "kill on sight": false,
+ "watch your back": true,
+ "share my stuff": true,
+ "guard your stuff": true,
+ "lets you in": true,
+ "defends your space": true,
+ "knows your voice": true
+ },
+ "old_guard": {
+ "kill on sight": false,
+ "watch your back": false,
+ "share my stuff": false,
+ "guard your stuff": false,
+ "lets you in": false,
+ "defends your space": false,
+ "knows your voice": false
+ },
+ "tacoma_commune": {
+ "kill on sight": false,
+ "watch your back": true,
+ "share my stuff": true,
+ "guard your stuff": true,
+ "lets you in": true,
+ "defends your space": true
+ },
+ "lobby_beggars": {
+ "kill on sight": false,
+ "watch your back": false,
+ "share my stuff": false,
+ "guard your stuff": true,
+ "lets you in": true,
+ "defends your space": false
+ },
+ "no_faction": {
+ "kill on sight": false,
+ "watch your back": false,
+ "share my stuff": false,
+ "guard your stuff": false,
+ "lets you in": true,
+ "defends your space": false,
+ "knows your voice": true
+ },
+ "wasteland_scavengers": {
+ "kill on sight": false,
+ "watch your back": true,
+ "share my stuff": false,
+ "guard your stuff": true,
+ "lets you in": true,
+ "defends your space": false,
+ "knows your voice": true
+ },
+ "isherwood_family": {
+ "kill on sight": false,
+ "watch your back": true,
+ "share my stuff": false,
+ "guard your stuff": true,
+ "lets you in": true,
+ "defends your space": true,
+ "knows your voice": true
+ },
+ "hells_raiders": { "kill on sight": true },
+ "marloss": { "kill on sight": true }
+ },
"description": "A small group of churchgoers that formed a community in the woods. They welcome anyone in their faction, but hate the unnatural."
}
]
diff --git a/data/json/npcs/hints.json b/data/json/npcs/hints.json
index 6ea97e520122a..9960032426e53 100644
--- a/data/json/npcs/hints.json
+++ b/data/json/npcs/hints.json
@@ -11,34 +11,34 @@
"Those acid-spitting zombies are pretty nasty, but if you're smart, you can get other zombies to wade through the acid.",
"If there's a pool of acid blocking your way, trying tossing a junk item into it. Eating up items will help neutralize the acid faster.",
"Rubber boots aren't as tough as combat boots and you don't run very fast in them. But I've seen zombies vomiting puddles of acid, and I'd hate to have my feet melt off, so I'd consider having a pair of those.",
- "There's this type of zombie that can shoot bolts of lightning! Stay away from walls and stuff when they do... the electricity can travel along solid surfaces.",
+ "There's this type of zombie that can shoot bolts of lightning! Stay away from walls and stuff when they do… the electricity can travel along solid surfaces.",
"Zombie hulks are NASTY, but they're easy to outsmart. If there's other monsters between you and them, they'll kill the monster for you!",
"If you run into a zombie hulk, it's probably a good idea to run. They're fast as hell, but pretty dumb; they'll try to smash through obstacles rather than going around, and that slows them down a lot.",
"Zombie brutes and hulks have really tough hide, but skeletal juggernauts with their bone plates are the worst. Don't bother shooting at them with lower-caliber guns, the bullet will bounce right off!",
"Try not to kill a boomer if it's standing right next to you. They tend to explode when they die, and that pink goop will get all over you.",
"Skeletons are a tough target for a gun. They're so skinny and full of holes that it's hard to make a good hit. And those big ones are hard as nails too.",
"Small skeletons are too delicate to smash through doors or windows. Big ones can walk in through a wall. At least they can't smell you, unlike zombies, so if you turn your light off at night you can sneak right past.",
- "Don't try to take on a skeleton with a bladed weapon... you'll just leave scratch marks. You've got to shatter those bones with a hammer or something.",
+ "Don't try to take on a skeleton with a bladed weapon… you'll just leave scratch marks. You've got to shatter those bones with a hammer or something.",
"It's a good idea to butcher corpses if you have the time. I've seen these weird zombies bring their friends back from the dead!",
- "I have a buddy who was sleeping in this cabin way out in the woods, when he suddenly woke up to trees and vines growing right up through the floor and walls! He said it was some kind of huge tree beast...",
- "Oh man, have you gone down into the old subway systems? I'd be careful... there's these things down there that are like zombies, but tougher.",
+ "I have a buddy who was sleeping in this cabin way out in the woods, when he suddenly woke up to trees and vines growing right up through the floor and walls! He said it was some kind of huge tree beast…",
+ "Oh man, have you gone down into the old subway systems? I'd be careful… there's these things down there that are like zombies, but tougher.",
"There's snakes down in most of the old sewer systems. They're slow on land, but boy, those suckers can swim fast!",
"If you're planning on wandering around the sewers--not that you'd have a reason too--watch out for those fish. Those suckers are fast, and vicious too!",
- "Have you seen those eyebots flying around? It's hard to say, but some faction's controlling them--maybe the military. All I know is, I don't want them taking my picture...",
+ "Have you seen those eyebots flying around? It's hard to say, but some faction's controlling them--maybe the military. All I know is, I don't want them taking my picture…",
"Ever go toe-to-toe with a manhack? Tiny little helicopters covered in knives. Best be packing a shotgun!",
- "They're rare, but molebots are nasty things. They bore through the ground, then pop up to stab ya. Still, you're safe from them if you stay on pavement...",
+ "They're rare, but molebots are nasty things. They bore through the ground, then pop up to stab ya. Still, you're safe from them if you stay on pavement…",
"Don't fire your gun if you can help it - the noise attracts monsters. If you could get a silencer, or make one, it would give you some advantage.",
"Standing behind a window is a good tactic. It takes zombies a long time to crawl through, giving you lots of opportunities to hit them.",
- "Zombies are pretty dumb... heck, most monsters are! If you can get a fire going between you and them, they'll just run straight through it.",
+ "Zombies are pretty dumb… heck, most monsters are! If you can get a fire going between you and them, they'll just run straight through it.",
"I know it's tempting to just go full-auto and unload as many bullets as possible, but don't except as a last resort. It's inaccurate and wastes ammo.",
"If there's a bunch of zombies in a straight line, try unloading a burst from your gun. Be sure to aim at the zombie furthest away; you'll hit more of them that way.",
"If you shoot a zombie, but don't quite kill it, try to finish it off with a punch or something instead of wasting a bullet.",
"If you're in a corridor or something, and there's a bunch of zombies chasing you down it, try to wound the guy in front badly. He'll start moving slow and cause a serious traffic jam!",
"Here's a trick for taking care of a huge swarm of zombies chasing you: head into a liquor store, shoot out as many bottles as you can, then light the alcohol on fire. Then duck out the back door, and watch the zombies run into a burning building!",
"Sledge hammers may seem like a great weapon, but swinging them is really slow, and you won't do much damage unless you're really strong.",
- "For a good melee weapon, you can't beat a machete. I've seen a guy take down a zombie brute with one! Of course, if you can find a katana, that might be even better...",
- "A knife spear makes a good weapon in a pinch, but a spike strapped to a stick isn't the sturdiest construction. At least you can strap the spike back on when it comes off.",
- "You know, a glass bottle can make a good weapon in a pinch. If you break it over someone's head, the shattering glass will hurt them extra. Of course, it might hurt your hands, too...",
+ "For a good melee weapon, you can't beat a machete. I've seen a guy take down a zombie brute with one! Of course, if you can find a katana, that might be even better…",
+ "A knife spear makes a good weapon in a pinch, but a spike strapped to a stick isn't the sturdiest construction. At least you can strap the spike back on when it comes off.",
+ "You know, a glass bottle can make a good weapon in a pinch. If you break it over someone's head, the shattering glass will hurt them extra. Of course, it might hurt your hands, too…",
"You know what makes a nice weapon? Take a two by four, or a baseball bat or something, and stick a bunch of nails through the end!",
"BB guns may seem like a joke, but they've got their uses. They're good for hunting small game, or getting to know the basics of rifles.",
"Crossbows are a great weapon for long term use. Most of the time, you can retrieve the bolt after shooting it, so running out of ammo is less of a concern.",
@@ -49,12 +49,12 @@
"A good submachine gun can't be beat. Most of them use common ammo, they're good at short and long range, and you can burst-fire if you need to!",
"Hunting rifles are great at long range, but suck close up. Plus, most of them don't carry many rounds. Keep a pistol as a sidearm if you use a rifle.",
"You know, you don't have to go full auto with an assault rifle. Firing single shots is more accurate and efficient!",
- "I've seen a couple guys running around with laser pistols. They seem like the perfect weapon... quiet, accurate, and deadly. But I've never found one, and I bet ammo is wicked scarce...",
+ "I've seen a couple guys running around with laser pistols. They seem like the perfect weapon… quiet, accurate, and deadly. But I've never found one, and I bet ammo is wicked scarce…",
"When it comes to footwear, you've got two basic choices as far as I see it; sneakers, for running extra fast, or boots for durability. Depends on your style, I guess.",
"You don't really need to wear gloves most of the time, but once in a while they'll really come in handy.",
"I wish I could still use those rollerblades. I would be so fast. But I took an arrow to the knee, and all that.",
"It's good to keep a filter mask or gas mask handy. You never know when you'll have to go into a smoke-filled room or something.",
- "There's basically no reason not to wear safety glasses... nothing is worse than taking a hit to the eyes and getting blinded for a few seconds.",
+ "There's basically no reason not to wear safety glasses… nothing is worse than taking a hit to the eyes and getting blinded for a few seconds.",
"Ski goggles are a great choice if you're worried about getting stuff in your eyes. Perfect for dealing with boomers!",
"If you get a pair of night vision goggles, hold on to them! A flashlight will give you away, but with goggles you can be sneaky. Beware that some types of zombies are camouflaged against it, and require proper light to be visible.",
"I know they look dumb, but wearing a fanny pack gives you that extra bit of storage without encumbering you.",
@@ -92,7 +92,7 @@
"I've found more good weapons in hardware stores than anywhere else. Except gun stores, of course.",
"Liquor stores are a great place to pick up non-alcoholic beverages, too. Not that I mind alcohol!",
"Most gun stores follow pretty similar layouts. The restricted stuff - SMGs, assault rifles, and most importantly ammo - are always behind the counter.",
- "I've spent many nights in the changing rooms at the back of clothing stores. Walls on four sides, far from the store's entrance, a corridor for easy defense... it's perfect!",
+ "I've spent many nights in the changing rooms at the back of clothing stores. Walls on four sides, far from the store's entrance, a corridor for easy defense… it's perfect!",
"If you're getting chased by a hoard of zombies, try ducking into the subways and traveling a block or two, then coming back up.",
"Have you seen those weird science labs out in the middle of nowhere? I think you need some kind of special ID card to get in.",
"I have a dream of raiding a military bunker, but I well know that good protection plus zombie soldiers are a bad mix. The sheer thought of being sprayed with bullets by a turret is giving me the shivers.",
@@ -112,14 +112,14 @@
"Boil first, then drink. Ten men caravan once drank from a spring, and they are now known as a three man caravan.",
"I've once seen a full duffel bag pass hands five times in a week. Having a lot of stuff is a moot point if you can't run from zombies.",
"Tim says you can drive a car through a horde of zombies. Tim is now a zombie. Any questions?",
- "They said: go solar, save the environment and yourself. Well... there is no environment to save now, but one can still save thyself I guess.",
+ "They said: go solar, save the environment and yourself. Well… there is no environment to save now, but one can still save thyself I guess.",
"If you can't find a knife try smashing potted plants. It just might give you everything you need to make one.",
"What's the difference between a good and a bad choke point? The good one has another back door behind you.",
- "So, methinks: if you could convince the cop-bots that you are their superior...",
+ "So, methinks: if you could convince the cop-bots that you are their superior…",
"You'd be surprised how many items can be disassembled into their components. A guy around here, McSomething whatever his name is, is a master at this.",
"A soldering iron can be an aspiring mechanics' best friend. You can also cauterize a wound with it, but as many people died as lived from that treatment, so I guess it's a last resort.",
"I've seen some folks running with freshly installed CBMs. That means there is a way to get them from places other than ransacked shops. Maybe that explains those cut-up bodies I've seen around.",
- "I'm fed up with smoked meat, but it lasts so long. Well... if I had more heart for learning cooking I guess I'd be able to diversify my food without sacrificing its shelf life.",
+ "I'm fed up with smoked meat, but it lasts so long. Well… if I had more heart for learning cooking I guess I'd be able to diversify my food without sacrificing its shelf life.",
"Tricky Joe was hanged for his inventive ways of killing zombies. Yeah, burning down a building to smoke few hordes is ok, but burning a whole town with all the loot certainly is not.",
"Mr Tombstone always said: take nothing with you for the raids, save the space for loot. He was known as Joe then and he rightfully earned his nickname as the first tombstone 'owner' around this place.",
"When the whole town is one big supermarket a shopping cart becomes your best friend.",
@@ -128,13 +128,13 @@
"Not sure if Mike is sane any more. He was unfortunate enough to be driven in to a school one time. This experience broke more than his ribs then.",
"A thought about explosives. If you can still run and it did not went boom yet, run some more. There is no such thing as excess space between you and a stick of dynamite.",
"Avoid using launchers in narrow hallways, you might miss.",
- "Met a mad chemist once. She made a battery from a potato... or was it lemon?",
+ "Met a mad chemist once. She made a battery from a potato… or was it lemon?",
"Police brutality lives on it seems. It's just more mechanical now, with all the cops dead and cop robots roaming free on the loose. If you'll get arrested who will give you justice? A zombie judge? Will they put you in a zombie prison? No thanks, I'll pass.",
"Is it dead yet? How can you tell if it was dead before and it's dead now? I prefer asking: are? *smash* you? *smash* dead? *smash* yet? *smash smash smash*",
"I hear there's strange big berries around, but why don't I hear first hand if they are filling for their size or not?",
- "I've heard of a gang called The Doctors. You know, bank robbers wearing stethoscopes. What are they trying to achieve? I use paper money to start fires now.",
+ "I've heard of a gang called The Doctors. You know, bank robbers wearing stethoscopes. What are they trying to achieve? I use paper money to start fires now.",
"You can hole up on a roof if you need to. Yeah, the rain will fall on your head, but it's harder for the dead to get you there. Get a tent, a rollmat, a sleeping bag and you're set.",
- "I thought about putting a bag on my dog to carry some of my stuff. It didn't work, because it was a chihuahua, and it was eaten by a rottweiler. Should have put some kevlar on it like those Z9. Oh well...",
+ "I thought about putting a bag on my dog to carry some of my stuff. It didn't work, because it was a chihuahua, and it was eaten by a rottweiler. Should have put some kevlar on it like those Z9. Oh well…",
"Stuff from zombies is filthy but perfectly fine otherwise. Using soap or other detergents won't hurt you. Quick wash and you're equipped for days.",
"Civilization has made a step back in time, so let's learn from the past. No fridges? Build a root cellar or keep food cool in the basement. No guns? Make a pointy stick or a cudgel, and work from there. The end of the world is not the end, it seems.",
"Hey, if you happen to find a set of two two-way radios, give one to me and we will be able to talk while being away from each other.",
@@ -154,7 +154,7 @@
"A friend of mine was a hunter and told me, that if you field dress a corpse, it will stay fresh a bit longer.",
"Look at the sky before you go for adventure. You will know what weather to expect. It's nothing compared to the old meteorology and satellite pictures, but at least you may know if you need the umbrella.",
"Be extra careful on roads. They are easy to travel on, but occasional minefield or a road block can make you feel sorry in an instant. I've even seen a tank once. I ran away like never before.",
- "I know it's not best of times, but try to sleep well. You're not yourself if you're sleep deprived. Grab a pillow and a blanket. If you can't, even a teddy bear under your head and a pile of clothes to keep you warm can make a difference. And pick a spot well, even a chair or a bench is better than a cold ground.",
+ "I know it's not best of times, but try to sleep well. You're not yourself if you're sleep deprived. Grab a pillow and a blanket. If you can't, even a teddy bear under your head and a pile of clothes to keep you warm can make a difference. And pick a spot well, even a chair or a bench is better than a cold ground.",
"There are two ways of throwing grenades. The smart one is throwing from behind a corner. The less smart one involves getting shot while throwing in the open and being torn apart by the resulting explosion."
]
}
diff --git a/data/json/npcs/isherwood_farm/NPC_Carlos_Isherwood.json b/data/json/npcs/isherwood_farm/NPC_Carlos_Isherwood.json
index f982b0d777dbf..a6c72e083478b 100644
--- a/data/json/npcs/isherwood_farm/NPC_Carlos_Isherwood.json
+++ b/data/json/npcs/isherwood_farm/NPC_Carlos_Isherwood.json
@@ -53,7 +53,7 @@
"condition": { "u_is_wearing": "badge_marshal" }
},
{
- "text": "...",
+ "text": "…",
"topic": "TALK_LEAVE_NOW",
"opinion": { "trust": -20, "value": -20 },
"condition": { "u_is_wearing": "badge_marshal" }
@@ -88,7 +88,7 @@
{
"type": "talk_topic",
"id": "TALK_ISHERWOOD_CARLOS_TALK1",
- "dynamic_line": "It is coming together. I want to make our own tools, repair our items and even create some weapons and ammuntion reloading.",
+ "dynamic_line": "It is coming together. I want to make our own tools, repair our items and even create some weapons and ammunition reloading.",
"responses": [
{ "text": "What do you need?", "topic": "TALK_MISSION_LIST" },
{
@@ -108,7 +108,7 @@
{
"type": "talk_topic",
"id": "TALK_CARLOS_BARRY",
- "dynamic_line": "It was pink and really fast, it had lots of limbs, definitly not human. It easily kept up with us when we tried to escape, horrifying stuff. Barry just dropped to the ground, and the thing swept him away.",
+ "dynamic_line": "It was pink and really fast, it had lots of limbs, definitely not human. It easily kept up with us when we tried to escape, horrifying stuff. Barry just dropped to the ground, and the thing swept him away.",
"responses": [
{ "text": "You all just gonna leave him out there to his fate?", "topic": "TALK_CARLOS_BARRY2" },
{ "text": "Let's talk about something else.", "topic": "TALK_ISHERWOOD_CARLOS_TOPICS" },
@@ -146,7 +146,7 @@
"type": "talk_topic",
"id": "TALK_LEAVE_NOW",
"dynamic_line": "You should get off my farm, I won't deal with a a government stooge.",
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
},
{
"type": "talk_topic",
diff --git a/data/json/npcs/isherwood_farm/NPC_Chris_Isherwood.json b/data/json/npcs/isherwood_farm/NPC_Chris_Isherwood.json
index 7e0b94829f1d5..b2da6222b390e 100644
--- a/data/json/npcs/isherwood_farm/NPC_Chris_Isherwood.json
+++ b/data/json/npcs/isherwood_farm/NPC_Chris_Isherwood.json
@@ -41,12 +41,12 @@
"id": "TALK_ISHERWOOD_CHRIS",
"dynamic_line": {
"u_is_wearing": "badge_marshal",
- "yes": "I see that badge, You need to leave our land, my relatives have no fondess for Marshals.",
+ "yes": "I see that badge, You need to leave our land, my relatives have no fondness for Marshals.",
"no": "Hi, what's up?"
},
"responses": [
{
- "text": "...",
+ "text": "…",
"topic": "TALK_LEAVE_NOW",
"opinion": { "trust": -20, "value": -20 },
"condition": { "u_is_wearing": "badge_marshal" }
@@ -139,7 +139,7 @@
"type": "talk_topic",
"id": "TALK_LEAVE_NOW",
"dynamic_line": "You should leave before my family sees you.",
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
},
{
"type": "talk_topic",
diff --git a/data/json/npcs/isherwood_farm/NPC_Claire_Isherwood.json b/data/json/npcs/isherwood_farm/NPC_Claire_Isherwood.json
index 678b595f475ab..671d54996e585 100644
--- a/data/json/npcs/isherwood_farm/NPC_Claire_Isherwood.json
+++ b/data/json/npcs/isherwood_farm/NPC_Claire_Isherwood.json
@@ -106,7 +106,7 @@
"condition": { "u_is_wearing": "badge_marshal" }
},
{
- "text": "...",
+ "text": "…",
"topic": "TALK_LEAVE_NOW",
"opinion": { "trust": -20, "value": -20 },
"condition": { "u_is_wearing": "badge_marshal" }
@@ -171,7 +171,7 @@
"responses": [
{ "text": "He did mention you make remedies, are they effective?", "topic": "TALK_CLAIRE_MEDICINE" },
{ "text": "Must be nice, to have the quiet place amid so much madness.", "topic": "TALK_CLAIRE_FARM" },
- { "text": "I'd like to ask you something else...", "topic": "TALK_ISHERWOOD_CLAIRE_TOPICS" },
+ { "text": "I'd like to ask you something else…", "topic": "TALK_ISHERWOOD_CLAIRE_TOPICS" },
{ "text": "I'd better get going.", "topic": "TALK_DONE" }
]
},
@@ -180,7 +180,7 @@
"id": "TALK_CLAIRE_MEDICINE",
"dynamic_line": "I have always studied and made some natural remedies, but now they are more essential than ever. Who knows the next time we'll see a trained doctor. These remedies aren't always as effective, but they can do the job in a pinch.",
"responses": [
- { "text": "I'd like to ask you something else...", "topic": "TALK_ISHERWOOD_CLAIRE_TOPICS" },
+ { "text": "I'd like to ask you something else…", "topic": "TALK_ISHERWOOD_CLAIRE_TOPICS" },
{ "text": "I'd better get going.", "topic": "TALK_DONE" }
]
},
@@ -190,7 +190,7 @@
"dynamic_line": "Some of their cows were killed before we realized what was happening, Barry and Carlos went into the forest to find the predator but it was like nothing they'd ever seen. Carlos may be willing to tell you more.",
"responses": [
{
- "text": "I'd like to ask you something else...",
+ "text": "I'd like to ask you something else…",
"topic": "TALK_ISHERWOOD_CLAIRE_TOPICS",
"effect": { "u_add_var": "u_learned_about_barry", "type": "general", "context": "meeting", "value": "yes" }
},
@@ -206,7 +206,7 @@
"id": "TALK_CLAIRE_FARM",
"dynamic_line": "We've always tried to live a quiet life out here, I suppose we are doing better than most.",
"responses": [
- { "text": "I'd like to ask you something else...", "topic": "TALK_ISHERWOOD_CLAIRE_TOPICS" },
+ { "text": "I'd like to ask you something else…", "topic": "TALK_ISHERWOOD_CLAIRE_TOPICS" },
{ "text": "I'd better get going.", "topic": "TALK_DONE" }
]
},
@@ -215,7 +215,7 @@
"id": "TALK_CLAIRE_HUSBAND",
"dynamic_line": "Jack and I have been together for 40 years. He's been my anchor through all of this chaos.",
"responses": [
- { "text": "I'd like to ask you something else...", "topic": "TALK_ISHERWOOD_CLAIRE_TOPICS" },
+ { "text": "I'd like to ask you something else…", "topic": "TALK_ISHERWOOD_CLAIRE_TOPICS" },
{ "text": "I'd better get going.", "topic": "TALK_DONE" }
]
},
@@ -224,7 +224,7 @@
"id": "TALK_CLAIRE_DAUGHTER",
"dynamic_line": "Jesse and her family live up at the horse farm. They may have some jobs for you.",
"responses": [
- { "text": "I'd like to ask you something else...", "topic": "TALK_ISHERWOOD_CLAIRE_TOPICS" },
+ { "text": "I'd like to ask you something else…", "topic": "TALK_ISHERWOOD_CLAIRE_TOPICS" },
{ "text": "I'd better get going.", "topic": "TALK_DONE" }
]
},
@@ -233,7 +233,7 @@
"id": "TALK_CLAIRE_BROTHER",
"dynamic_line": "Eddie's dairy is at the end of the road. He's may have some jobs for you if you are interested.",
"responses": [
- { "text": "I'd like to ask you something else...", "topic": "TALK_ISHERWOOD_CLAIRE_TOPICS" },
+ { "text": "I'd like to ask you something else…", "topic": "TALK_ISHERWOOD_CLAIRE_TOPICS" },
{ "text": "I'd better get going.", "topic": "TALK_DONE" }
]
},
@@ -241,7 +241,7 @@
"type": "talk_topic",
"id": "TALK_LEAVE_NOW",
"dynamic_line": "You should get off our land, you have no business here.",
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
},
{
"type": "talk_topic",
@@ -346,7 +346,7 @@
"describe": "I could use a barn cat to keep the mice down.",
"offer": "I saw some feral cats out by the old cabin. Can you capture one for me?",
"accepted": "Thank you! Please hurry back! Take this cage so you have a chance of capturing one.",
- "rejected": "I did't want to use chemicals on these rats.",
+ "rejected": "I didn't want to use chemicals on these rats.",
"advice": "Take this pet carrier; if you can get close to a cat, you can put it inside. If you're having problems, try befriending it with cat food.",
"inquire": "Have you found a cat?",
"success": "Thank you so much, I want you to have this copy of my natural remedy journal. I'll name this handsome fellow Joshua.",
diff --git a/data/json/npcs/isherwood_farm/NPC_Eddie_Isherwood.json b/data/json/npcs/isherwood_farm/NPC_Eddie_Isherwood.json
index 0fdf003f51bbc..d2ce435f3e92a 100644
--- a/data/json/npcs/isherwood_farm/NPC_Eddie_Isherwood.json
+++ b/data/json/npcs/isherwood_farm/NPC_Eddie_Isherwood.json
@@ -66,7 +66,7 @@
"condition": { "u_is_wearing": "badge_marshal" }
},
{
- "text": "...",
+ "text": "…",
"topic": "TALK_LEAVE_NOW",
"opinion": { "trust": -20, "value": -20 },
"condition": { "u_is_wearing": "badge_marshal" }
@@ -175,7 +175,7 @@
"type": "talk_topic",
"id": "TALK_LEAVE_NOW",
"dynamic_line": "You should get off my farm, I won't deal with a a government stooge.",
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
},
{
"type": "talk_topic",
diff --git a/data/json/npcs/isherwood_farm/NPC_Jack_Isherwood.json b/data/json/npcs/isherwood_farm/NPC_Jack_Isherwood.json
index 3f0fac9afa615..601a7a6927e79 100644
--- a/data/json/npcs/isherwood_farm/NPC_Jack_Isherwood.json
+++ b/data/json/npcs/isherwood_farm/NPC_Jack_Isherwood.json
@@ -116,7 +116,7 @@
"dynamic_line": {
"u_is_wearing": "badge_marshal",
"yes": "Is that a U.S. Marshal's badge you're wearing?",
- "no": { "u_male": true, "yes": "Hello travler, what brings you here?", "no": "Hello traveler, what brings you here?" }
+ "no": { "u_male": true, "yes": "Hello traveler, what brings you here?", "no": "Hello traveler, what brings you here?" }
},
"responses": [
{
@@ -127,7 +127,7 @@
"condition": { "u_is_wearing": "badge_marshal" }
},
{
- "text": "...",
+ "text": "…",
"topic": "TALK_LEAVE_NOW",
"opinion": { "trust": -20, "value": -20 },
"condition": { "u_is_wearing": "badge_marshal" }
@@ -188,7 +188,7 @@
{
"type": "talk_topic",
"id": "TALK_ISHERWOOD_JACK2",
- "dynamic_line": "We've had our losses... now we stay close to home, preparing for trouble. We've always taken disaster prepardness seriously, but we didn't expect anything like this though.",
+ "dynamic_line": "We've had our losses... now we stay close to home, preparing for trouble. We've always taken disaster preparedness seriously, but we didn't expect anything like this though.",
"responses": [
{ "text": "Let's talk about something else.", "topic": "TALK_ISHERWOOD_JACK_TOPICS" },
{ "text": "I'd better get going.", "topic": "TALK_DONE" }
@@ -250,8 +250,8 @@
{
"type": "talk_topic",
"id": "TALK_LEAVE_NOW",
- "dynamic_line": "You should get off my land, the governemnt proved its incompetence with this catastrophe.",
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "dynamic_line": "You should get off my land, the government proved its incompetence with this catastrophe.",
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
},
{
"type": "talk_topic",
diff --git a/data/json/npcs/isherwood_farm/NPC_Jesse_Isherwood.json b/data/json/npcs/isherwood_farm/NPC_Jesse_Isherwood.json
index ab02048c623f2..8beb529b3c52f 100644
--- a/data/json/npcs/isherwood_farm/NPC_Jesse_Isherwood.json
+++ b/data/json/npcs/isherwood_farm/NPC_Jesse_Isherwood.json
@@ -57,7 +57,7 @@
"condition": { "u_is_wearing": "badge_marshal" }
},
{
- "text": "...",
+ "text": "…",
"topic": "TALK_LEAVE_NOW",
"opinion": { "trust": -20, "value": -20 },
"condition": { "u_is_wearing": "badge_marshal" }
@@ -126,7 +126,7 @@
"responses": [
{ "text": "I'd like to speak with Carlos too about some work.", "topic": "TALK_JESSE_CARLOS" },
{
- "text": "Is Chris around? I'd like to know what he's run into out in the woods.",
+ "text": "Is Chris around? I'd like to know what he's run into out in the woods.",
"topic": "TALK_JESSE_CHRIS"
},
{ "text": "What needs killing?", "topic": "TALK_MISSION_LIST" },
@@ -165,7 +165,7 @@
"type": "talk_topic",
"id": "TALK_LEAVE_NOW",
"dynamic_line": "You should get off my farm, I won't deal with a a government stooge.",
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
},
{
"type": "talk_topic",
diff --git a/data/json/npcs/isherwood_farm/NPC_Lisa_Isherwood.json b/data/json/npcs/isherwood_farm/NPC_Lisa_Isherwood.json
index 6d3e1ae07e415..4b4c9e6cc580c 100644
--- a/data/json/npcs/isherwood_farm/NPC_Lisa_Isherwood.json
+++ b/data/json/npcs/isherwood_farm/NPC_Lisa_Isherwood.json
@@ -44,7 +44,7 @@
},
"responses": [
{
- "text": "...",
+ "text": "…",
"topic": "TALK_LEAVE_NOW",
"opinion": { "trust": -20, "value": -20 },
"condition": { "u_is_wearing": "badge_marshal" }
@@ -134,6 +134,6 @@
"type": "talk_topic",
"id": "TALK_LEAVE_NOW",
"dynamic_line": "You should get off my farm, I won't deal with a a government stooge.",
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
}
]
diff --git a/data/json/npcs/isherwood_farm/NPC_Luke_Isherwood.json b/data/json/npcs/isherwood_farm/NPC_Luke_Isherwood.json
index 09ee12edfefff..100a2738a1197 100644
--- a/data/json/npcs/isherwood_farm/NPC_Luke_Isherwood.json
+++ b/data/json/npcs/isherwood_farm/NPC_Luke_Isherwood.json
@@ -46,7 +46,7 @@
},
"responses": [
{
- "text": "...",
+ "text": "…",
"topic": "TALK_LEAVE_NOW",
"opinion": { "trust": -20, "value": -20 },
"condition": { "u_is_wearing": "badge_marshal" }
@@ -137,7 +137,7 @@
"type": "talk_topic",
"id": "TALK_LEAVE_NOW",
"dynamic_line": "You won't find any help here.",
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
},
{
"type": "talk_topic",
@@ -192,7 +192,7 @@
"dialogue": {
"describe": "I need more knowledge to get better pottery.",
"offer": "I could really use the book, DIY Compendium. With the internet gone, I don't have any handy references.",
- "accepted": "Fantasic, I'm not supposed to leave our land.",
+ "accepted": "Fantastic, I'm not supposed to leave our land.",
"rejected": "Oh well, figured I'd have to do a lot of practice anyway.",
"advice": "A library, bookstore should have one, schools are another good idea.",
"inquire": "Do you have the book?",
diff --git a/data/json/npcs/missiondef.json b/data/json/npcs/missiondef.json
index 39c0ed3febcfa..2a20d8cca97df 100644
--- a/data/json/npcs/missiondef.json
+++ b/data/json/npcs/missiondef.json
@@ -421,8 +421,8 @@
"monster_kill_goal": 100,
"difficulty": 5,
"value": 250000,
- "start": { "effect": "follow" },
- "end": { "effect": "leave" },
+ "start": { "effect": "follow_only" },
+ "end": { "effect": "stop_following" },
"origins": [ "ORIGIN_SECONDARY" ],
"followup": "MISSION_KILL_HORDE_MASTER",
"dialogue": {
@@ -446,7 +446,7 @@
"value": 250000,
"urgent": true,
"start": "kill_horde_master",
- "end": { "effect": "leave" },
+ "end": { "effect": "stop_following" },
"origins": [ "ORIGIN_SECONDARY" ],
"followup": "MISSION_RECRUIT_TRACKER",
"dialogue": {
@@ -528,8 +528,8 @@
"goal": "MGOAL_GO_TO_TYPE",
"difficulty": 2,
"value": 60000,
- "start": { "effect": "follow" },
- "end": { "effect": "leave" },
+ "start": { "effect": "follow_only" },
+ "end": { "effect": "stop_following" },
"origins": [ "ORIGIN_SECONDARY" ],
"destination": "farm_2",
"dialogue": {
@@ -551,7 +551,7 @@
"goal": "MGOAL_GO_TO_TYPE",
"difficulty": 2,
"value": 60000,
- "start": { "effect": "follow" },
+ "start": { "effect": "follow_only" },
"origins": [ "ORIGIN_SECONDARY" ],
"followup": "MISSION_REACH_FARM_HOUSE",
"destination": "fema",
diff --git a/data/json/npcs/necropolis/NPC_Old_Guard_Captain.json b/data/json/npcs/necropolis/NPC_Old_Guard_Captain.json
index 8f58290c50388..eedf075c97a9d 100644
--- a/data/json/npcs/necropolis/NPC_Old_Guard_Captain.json
+++ b/data/json/npcs/necropolis/NPC_Old_Guard_Captain.json
@@ -39,29 +39,29 @@
"condition": { "u_is_wearing": "badge_marshal" }
},
{
- "text": "About the mission...",
+ "text": "About the mission…",
"topic": "TALK_MISSION_INQUIRE",
"condition": { "and": [ "has_assigned_mission", { "u_is_wearing": "badge_marshal" } ] }
},
{
- "text": "About one of those missions...",
+ "text": "About one of those missions…",
"topic": "TALK_MISSION_LIST_ASSIGNED",
"condition": { "and": [ "has_many_assigned_missions", { "u_is_wearing": "badge_marshal" } ] }
},
- { "text": "I've got to go...", "topic": "TALK_DONE" }
+ { "text": "I've got to go…", "topic": "TALK_DONE" }
]
},
{
"type": "talk_topic",
"id": "TALK_OLD_GUARD_NEC_CPT_GOAL",
"dynamic_line": "I'm leading what remains of my company on a mission to re-secure this facility. We entered the complex with two dozen men and immediately went about securing this control room. From here I dispatched my men to secure vital systems located on this floor and the floors below this one. If we are successful, this facility can be cleared and used as a permanent base of operations in the region. Most importantly it will allow us to redirect refugee traffic away from overcrowded outposts and free up more of our forces to conduct recovery operations.",
- "responses": [ { "text": "Seems like a decent plan...", "topic": "TALK_NONE" } ]
+ "responses": [ { "text": "Seems like a decent plan…", "topic": "TALK_NONE" } ]
},
{
"type": "talk_topic",
"id": "TALK_OLD_GUARD_NEC_CPT_VAULT",
"dynamic_line": "This facility was constructed to provide a safe haven in the event of a global conflict. The vault can support several thousand people for a few years if all systems are operational and sufficient notification is given. Unfortunately, the power system was damaged or sabotaged at some point and released a single extremely lethal burst of radiation. The catastrophic event lasted for several minutes and resulted in the deaths of most people located on the 2nd and lower floors. Those working on this floor were able to seal the access ways to the lower floors before succumbing to radiation sickness. The only other thing the logs tell us is that all water pressure was diverted to the lower levels.",
- "responses": [ { "text": "Whatever they did it must have worked since we are still alive...", "topic": "TALK_NONE" } ]
+ "responses": [ { "text": "Whatever they did it must have worked since we are still alive…", "topic": "TALK_NONE" } ]
},
{
"id": "MISSION_OLD_GUARD_NEC_1",
diff --git a/data/json/npcs/necropolis/NPC_Old_Guard_Commo.json b/data/json/npcs/necropolis/NPC_Old_Guard_Commo.json
index cb19460c1aeb3..833e98c74195b 100644
--- a/data/json/npcs/necropolis/NPC_Old_Guard_Commo.json
+++ b/data/json/npcs/necropolis/NPC_Old_Guard_Commo.json
@@ -46,12 +46,12 @@
"condition": { "and": [ { "u_has_effect": "has_og_comm_freq" }, { "u_is_wearing": "badge_marshal" } ] }
},
{
- "text": "About the mission...",
+ "text": "About the mission…",
"topic": "TALK_MISSION_INQUIRE",
"condition": { "and": [ "has_assigned_mission", { "u_is_wearing": "badge_marshal" } ] }
},
{
- "text": "About one of those missions...",
+ "text": "About one of those missions…",
"topic": "TALK_MISSION_LIST_ASSIGNED",
"condition": { "and": [ "has_many_assigned_missions", { "u_is_wearing": "badge_marshal" } ] }
},
@@ -62,7 +62,7 @@
"type": "talk_topic",
"id": "TALK_OLD_GUARD_NEC_COMMO_GOAL",
"dynamic_line": "We are securing the external communications array for this facility. I'm rather restricted in what I can release... go find my commander if you have any questions.",
- "responses": [ { "text": "I'll try and find your commander then...", "topic": "TALK_NONE" } ]
+ "responses": [ { "text": "I'll try and find your commander then…", "topic": "TALK_NONE" } ]
},
{
"type": "talk_topic",
diff --git a/data/json/npcs/necropolis/NPC_Old_Guard_Soldier.json b/data/json/npcs/necropolis/NPC_Old_Guard_Soldier.json
index 5e3d3c69c6136..0b3f4c71e8af1 100644
--- a/data/json/npcs/necropolis/NPC_Old_Guard_Soldier.json
+++ b/data/json/npcs/necropolis/NPC_Old_Guard_Soldier.json
@@ -32,6 +32,6 @@
}
]
},
- "responses": [ { "text": "Don't mind me...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "Don't mind me…", "topic": "TALK_DONE" } ]
}
]
diff --git a/data/json/npcs/npc.json b/data/json/npcs/npc.json
index 8be2d3fd8fec7..038da474ab041 100644
--- a/data/json/npcs/npc.json
+++ b/data/json/npcs/npc.json
@@ -72,7 +72,7 @@
"//": "Foodperson mascot, except if you ask them Foodperson is a real hero and it's them!",
"name_unique": "Foodperson",
"class": "NC_TRUE_FOODPERSON",
- "attitude": 7,
+ "attitude": 0,
"mission": 7,
"chat": "TALK_TRUE_FOODPERSON",
"mission_offered": "MISSION_PROVE_YOUR_WORTH",
diff --git a/data/json/npcs/refugee_center/beggars/BEGGAR_1_Reena_Sandhu.json b/data/json/npcs/refugee_center/beggars/BEGGAR_1_Reena_Sandhu.json
index 1dab7ecbb330b..b5b6562e4f7a1 100644
--- a/data/json/npcs/refugee_center/beggars/BEGGAR_1_Reena_Sandhu.json
+++ b/data/json/npcs/refugee_center/beggars/BEGGAR_1_Reena_Sandhu.json
@@ -98,7 +98,7 @@
"topic": "TALK_REFUGEE_BEGGAR_1_GIVE_FOOD"
},
{ "text": "Get away from me.", "topic": "TALK_DONE", "opinion": { "trust": -1, "value": -1, "anger": 1 } },
- { "text": "...", "topic": "TALK_DONE" }
+ { "text": "…", "topic": "TALK_DONE" }
]
},
{
diff --git a/data/json/npcs/refugee_center/beggars/BEGGAR_2_Dino_Dave.json b/data/json/npcs/refugee_center/beggars/BEGGAR_2_Dino_Dave.json
index 8fa2a84e78895..19ff822b1017e 100644
--- a/data/json/npcs/refugee_center/beggars/BEGGAR_2_Dino_Dave.json
+++ b/data/json/npcs/refugee_center/beggars/BEGGAR_2_Dino_Dave.json
@@ -65,7 +65,7 @@
"no": "Have I told you about cardboard, friend? Do you have any?"
},
"responses": [
- { "condition": "has_assigned_mission", "text": "About that shopping list of yours...", "topic": "TALK_MISSION_INQUIRE" },
+ { "condition": "has_assigned_mission", "text": "About that shopping list of yours…", "topic": "TALK_MISSION_INQUIRE" },
{
"condition": {
"and": [
@@ -107,7 +107,7 @@
"text": "Get away from me.",
"topic": "TALK_DONE"
},
- { "text": "...", "topic": "TALK_DONE" }
+ { "text": "…", "topic": "TALK_DONE" }
]
},
{
@@ -149,7 +149,7 @@
{ "text": "Would you like me to give you some cardboard?", "topic": "TALK_REFUGEE_BEGGAR_2_GIVECARDBOARD" },
{ "text": "Why are you sitting out here?", "topic": "TALK_REFUGEE_BEGGAR_2_REFUGEE" },
{ "text": "Are you seriously wearing a dinosaur costume?", "topic": "TALK_REFUGEE_BEGGAR_2_DINOSAUR" },
- { "text": "I think I have to get going...", "topic": "TALK_DONE" }
+ { "text": "I think I have to get going…", "topic": "TALK_DONE" }
]
},
{
@@ -160,7 +160,7 @@
{ "text": "Would you like me to give you some cardboard?", "topic": "TALK_REFUGEE_BEGGAR_2_GIVECARDBOARD" },
{ "text": "Why are you sitting out here?", "topic": "TALK_REFUGEE_BEGGAR_2_REFUGEE" },
{ "text": "Are you seriously wearing a dinosaur costume?", "topic": "TALK_REFUGEE_BEGGAR_2_DINOSAUR" },
- { "text": "I think I have to get going...", "topic": "TALK_DONE" }
+ { "text": "I think I have to get going…", "topic": "TALK_DONE" }
]
},
{
@@ -171,7 +171,7 @@
"responses": [
{ "text": "What's next on the list?", "topic": "TALK_MISSION_LIST" },
{ "text": "What were you saying before?", "topic": "TALK_NONE" },
- { "text": "I think I have to get going...", "topic": "TALK_DONE" }
+ { "text": "I think I have to get going…", "topic": "TALK_DONE" }
]
},
{
@@ -179,8 +179,8 @@
"id": "TALK_REFUGEE_BEGGAR_2_SANDMAN",
"dynamic_line": "If you don't know who he is, I definitely can't tell you. He talks to everyone, if you didn't hear him that means you can't be trusted, except to help me out.",
"responses": [
- { "text": "... What were you saying before?", "topic": "TALK_NONE" },
- { "text": "I think I have to get going...", "topic": "TALK_DONE" }
+ { "text": "…What were you saying before?", "topic": "TALK_NONE" },
+ { "text": "I think I have to get going…", "topic": "TALK_DONE" }
]
},
{
@@ -189,7 +189,7 @@
"dynamic_line": "These cowards are afraid of me. They won't let me into their base. I'm going to build my new house and I won't let them in.",
"responses": [
{ "text": "You said you were building a house?", "topic": "TALK_REFUGEE_BEGGAR_2_CARDBOARD" },
- { "text": "I think I have to get going...", "topic": "TALK_DONE" }
+ { "text": "I think I have to get going…", "topic": "TALK_DONE" }
]
},
{
@@ -197,10 +197,10 @@
"id": "TALK_REFUGEE_BEGGAR_2_DINOSAUR",
"dynamic_line": "No.",
"responses": [
- { "text": "I... I can see you wearing it. Why are you wearing that?", "topic": "TALK_REFUGEE_BEGGAR_2_WEARING" },
+ { "text": "I… I can see you wearing it. Why are you wearing that?", "topic": "TALK_REFUGEE_BEGGAR_2_WEARING" },
{ "text": "What was that about cardboard?", "topic": "TALK_REFUGEE_BEGGAR_2_CARDBOARD" },
{ "text": "Why are you sitting out here?", "topic": "TALK_REFUGEE_BEGGAR_2_REFUGEE" },
- { "text": "I think I have to get going...", "topic": "TALK_DONE" }
+ { "text": "I think I have to get going…", "topic": "TALK_DONE" }
]
},
{
@@ -210,7 +210,7 @@
"responses": [
{ "text": "What was that about cardboard?", "topic": "TALK_REFUGEE_BEGGAR_2_CARDBOARD" },
{ "text": "Why are you sitting out here?", "topic": "TALK_REFUGEE_BEGGAR_2_REFUGEE" },
- { "text": "I think I have to get going...", "topic": "TALK_DONE" }
+ { "text": "I think I have to get going…", "topic": "TALK_DONE" }
]
},
{
diff --git a/data/json/npcs/refugee_center/beggars/BEGGAR_3_Luo_Meizhen.json b/data/json/npcs/refugee_center/beggars/BEGGAR_3_Luo_Meizhen.json
index 768f2e8fa6df3..64705c83fa6d4 100644
--- a/data/json/npcs/refugee_center/beggars/BEGGAR_3_Luo_Meizhen.json
+++ b/data/json/npcs/refugee_center/beggars/BEGGAR_3_Luo_Meizhen.json
@@ -154,7 +154,7 @@
"topic": "TALK_REFUGEE_BEGGAR_3_MYCUS4_NOTREADY",
"effect": { "npc_add_var": "luo_owed", "type": "general", "context": "recruit", "value": "yes" }
},
- { "text": "Ok... see ya.", "topic": "TALK_DONE" }
+ { "text": "Ok… see ya.", "topic": "TALK_DONE" }
]
},
{
@@ -257,7 +257,7 @@
"text": "I found a sample of alien fungus for you.",
"topic": "TALK_REFUGEE_BEGGAR_3_MYCUS4_RECRUIT"
},
- { "text": "Ok... see ya.", "topic": "TALK_DONE" },
+ { "text": "Ok… see ya.", "topic": "TALK_DONE" },
{ "text": "I'd better get going.", "topic": "TALK_DONE" }
]
},
@@ -287,7 +287,7 @@
}
]
},
- "text": "I mean, racism could definitely be a part of it... but you are visibly in poor shape. They need strong survivor material.",
+ "text": "I mean, racism could definitely be a part of it… but you are visibly in poor shape. They need strong survivor material.",
"topic": "TALK_REFUGEE_BEGGAR_3_INSULTED"
},
{ "text": "I'd better get going.", "topic": "TALK_DONE" }
@@ -332,7 +332,7 @@
{ "not": { "u_has_var": "luo_recruited", "type": "general", "context": "recruit", "value": "yes" } }
]
},
- "text": "So, about that doctorate of yours...",
+ "text": "So, about that doctorate of yours…",
"topic": "TALK_REFUGEE_BEGGAR_3_DOCTORATE1"
},
{ "text": "What were you saying before?", "topic": "TALK_NONE" },
@@ -368,7 +368,7 @@
]
}
],
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
},
{
"type": "talk_topic",
@@ -416,7 +416,7 @@
{ "not": { "u_has_var": "luo_recruited", "type": "general", "context": "recruit", "value": "yes" } }
]
},
- "text": "So, about that doctorate of yours...",
+ "text": "So, about that doctorate of yours…",
"topic": "TALK_REFUGEE_BEGGAR_3_DOCTORATE1"
},
{ "text": "What did you do before ?", "topic": "TALK_REFUGEE_BEGGAR_3_EXPERTISE" },
@@ -436,7 +436,7 @@
{ "not": { "u_has_var": "luo_recruited", "type": "general", "context": "recruit", "value": "yes" } }
]
},
- "text": "So, about that doctorate of yours...",
+ "text": "So, about that doctorate of yours…",
"topic": "TALK_REFUGEE_BEGGAR_3_DOCTORATE1"
},
{ "text": "What did you do before ?", "topic": "TALK_REFUGEE_BEGGAR_3_EXPERTISE" },
@@ -456,7 +456,7 @@
{ "not": { "u_has_var": "luo_recruited", "type": "general", "context": "recruit", "value": "yes" } }
]
},
- "text": "So, about that doctorate of yours...",
+ "text": "So, about that doctorate of yours…",
"topic": "TALK_REFUGEE_BEGGAR_3_DOCTORATE1"
},
{ "text": "What did you do before ?", "topic": "TALK_REFUGEE_BEGGAR_3_EXPERTISE" },
@@ -521,7 +521,7 @@
"dynamic_line": "No, no I don't, and I'd appreciate you not leaving me hanging on that. There are fungal zombies?",
"responses": [
{
- "text": "Encroaching alien mushrooms, fungal towers, tough mycelium invading ground and trees, zombies taken over by aggressive mold... Yeah. It's ugly stuff.",
+ "text": "Encroaching alien mushrooms, fungal towers, tough mycelium invading ground and trees, zombies taken over by aggressive mold… Yeah. It's ugly stuff.",
"topic": "TALK_REFUGEE_BEGGAR_3_MYCUS2"
},
{ "text": "What was it you were saying before?", "topic": "TALK_NONE" },
diff --git a/data/json/npcs/refugee_center/beggars/BEGGAR_4_Brandon_Garder.json b/data/json/npcs/refugee_center/beggars/BEGGAR_4_Brandon_Garder.json
index 81e40213b77bc..80d680783bc92 100644
--- a/data/json/npcs/refugee_center/beggars/BEGGAR_4_Brandon_Garder.json
+++ b/data/json/npcs/refugee_center/beggars/BEGGAR_4_Brandon_Garder.json
@@ -105,7 +105,7 @@
"text": "I've talked to the others, and they're all willing to come. So, you joining us?",
"topic": "TALK_REFUGEE_BEGGAR_4_RECRUITED"
},
- { "text": "I could maybe help you out... want something to eat?", "topic": "TALK_REFUGEE_BEGGAR_4_GIVE_FOOD" },
+ { "text": "I could maybe help you out… want something to eat?", "topic": "TALK_REFUGEE_BEGGAR_4_GIVE_FOOD" },
{ "text": "What's wrong with you?", "topic": "TALK_REFUGEE_BEGGAR_4_TALK2" },
{ "text": "They won't let you in because you're sick?", "topic": "TALK_REFUGEE_BEGGAR_4_SICKLY" },
{ "text": "How did you even get here if you're so sick?", "topic": "TALK_REFUGEE_BEGGAR_4_ARRIVAL" },
diff --git a/data/json/npcs/refugee_center/surface_refugees/NPC_Alonso_Lautrec.json b/data/json/npcs/refugee_center/surface_refugees/NPC_Alonso_Lautrec.json
index 79cd24841db51..9f57d1e52d6fc 100644
--- a/data/json/npcs/refugee_center/surface_refugees/NPC_Alonso_Lautrec.json
+++ b/data/json/npcs/refugee_center/surface_refugees/NPC_Alonso_Lautrec.json
@@ -62,7 +62,7 @@
"//": "common talk responses",
"id": [ "TALK_REFUGEE_Alonso_2", "TALK_REFUGEE_Alonso_Background", "TALK_REFUGEE_Alonso_Situation" ],
"responses": [
- { "text": "You seem a little forward...", "topic": "TALK_REFUGEE_Alonso_Forward" },
+ { "text": "You seem a little forward…", "topic": "TALK_REFUGEE_Alonso_Forward" },
{
"text": "[PERCEPTION 10] What is up with you? What's with the fake accent, and speaking in the third person?",
"topic": "TALK_REFUGEE_Alonso_CalledOut1",
diff --git a/data/json/npcs/refugee_center/surface_refugees/NPC_Dana_Nunez.json b/data/json/npcs/refugee_center/surface_refugees/NPC_Dana_Nunez.json
index a3878b093b356..54e3131eae2b6 100644
--- a/data/json/npcs/refugee_center/surface_refugees/NPC_Dana_Nunez.json
+++ b/data/json/npcs/refugee_center/surface_refugees/NPC_Dana_Nunez.json
@@ -94,7 +94,7 @@
"condition": { "u_has_var": "Pablo_ask_recruit", "type": "recruit", "context": "general", "value": "yes" }
},
{
- "text": "About that sourdough starter you had me looking for...",
+ "text": "About that sourdough starter you had me looking for…",
"topic": "TALK_MISSION_INQUIRE",
"condition": { "u_has_var": "Dana_Sourdough", "type": "mission", "context": "flag", "value": "in_progress" }
},
diff --git a/data/json/npcs/refugee_center/surface_refugees/NPC_Draco_Dune.json b/data/json/npcs/refugee_center/surface_refugees/NPC_Draco_Dune.json
index 3eee868c84401..dbe7e9c5f8fd3 100644
--- a/data/json/npcs/refugee_center/surface_refugees/NPC_Draco_Dune.json
+++ b/data/json/npcs/refugee_center/surface_refugees/NPC_Draco_Dune.json
@@ -153,7 +153,7 @@
"dynamic_line": "Oh you don't have time for all that, do you? Well, I'll give you the short version. I've gotten kinda tired of it in the telling. Frankly, it's not as heroic, not as inspiring, not as tragic, and certainly not as funny as some of the tales around here. But it's mine, ya know? I'm a musician. Guitar's my baby. You like folk and the blues, friend? Well, that was my bag and I sure could please my own ear with em, anyway. Folks who's bein' generous might also say it pleased theirs. Problem is, I seem to be between guitars right now, you know? Temporarily guitar-light, if you get my saying. Problem is, in the run for my life, I had to use old Jasmine as a bit of a billy club. Had to curb some rowdy dudes on my way here. It was her or me, you understand? You wouldn't begrudge a man breakin' his instrument to save his life, would ya?",
"responses": [
{ "text": "I think I would've done the same. Nobody around here has a guitar?", "topic": "TALK_REFUGEE_Draco_4" },
- { "text": "Yes, yes I would... you monster.", "topic": "TALK_DONE" }
+ { "text": "Yes, yes I would… you monster.", "topic": "TALK_DONE" }
]
},
{
diff --git a/data/json/npcs/refugee_center/surface_refugees/NPC_Garry_Villeneuve.json b/data/json/npcs/refugee_center/surface_refugees/NPC_Garry_Villeneuve.json
index b1007e76eb01a..b1aa63935d9a6 100644
--- a/data/json/npcs/refugee_center/surface_refugees/NPC_Garry_Villeneuve.json
+++ b/data/json/npcs/refugee_center/surface_refugees/NPC_Garry_Villeneuve.json
@@ -130,7 +130,7 @@
"id": "TALK_REFUGEE_Garry_Background",
"dynamic_line": "Before the apocalypse I was an electrician. Boris here is my brother-in-law, and we were a decent contractor team. When the evacuations sounded, we left together with our... with our families. We got stuck into a crowded evac shelter, then onto a crowded bus. Then... everything went wrong. The bus was attacked, destroyed. Nearly everyone died. A few of us made it back... not enough.",
"responses": [
- { "text": "You lost someone...", "topic": "TALK_REFUGEE_Garry_Background_loss" },
+ { "text": "You lost someone…", "topic": "TALK_REFUGEE_Garry_Background_loss" },
{ "text": "What were you saying before?", "topic": "TALK_NONE" },
{ "text": "I'd better get going.", "topic": "TALK_DONE" }
]
diff --git a/data/json/npcs/refugee_center/surface_refugees/NPC_Guneet_Singh.json b/data/json/npcs/refugee_center/surface_refugees/NPC_Guneet_Singh.json
index 150f21cc7ed59..ad4f11b0484e6 100644
--- a/data/json/npcs/refugee_center/surface_refugees/NPC_Guneet_Singh.json
+++ b/data/json/npcs/refugee_center/surface_refugees/NPC_Guneet_Singh.json
@@ -40,8 +40,7 @@
{ "item": "tshirt_text" },
{ "item": "jeans_red" },
{ "item": "turban" },
- { "item": "sneakers" },
- { "item": "scabbard" }
+ { "item": "sneakers" }
]
},
{
diff --git a/data/json/npcs/refugee_center/surface_refugees/NPC_John_Clemens.json b/data/json/npcs/refugee_center/surface_refugees/NPC_John_Clemens.json
index 50d56f0889a07..96c35c24304c4 100644
--- a/data/json/npcs/refugee_center/surface_refugees/NPC_John_Clemens.json
+++ b/data/json/npcs/refugee_center/surface_refugees/NPC_John_Clemens.json
@@ -133,7 +133,7 @@
"dynamic_line": "My story? Just a wanderin' cowhand, eatin' dust on the trail. I settled here for a spell after I came upon some hard times.",
"responses": [
{
- "text": "You... you do know what's going on here, right? With the evacuation and stuff?",
+ "text": "You… you do know what's going on here, right? With the evacuation and stuff?",
"topic": "TALK_REFUGEE_John_Background_cataclysm"
},
{ "text": "What were you saying before?", "topic": "TALK_NONE" },
diff --git a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_broker.json b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_broker.json
index 96291528fa22b..6323c33d6adc2 100644
--- a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_broker.json
+++ b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_broker.json
@@ -131,7 +131,7 @@
"dynamic_line": "All three are easy to locally produce in significant quantities and are non-perishable. We have a local farmer or two and a few hunter types that have been making attempts to provide us with the nutritious supplies. We do always need more suppliers though. This stuff is rather cheap in bulk, so I can pay a premium for any you have on you. Canned food and other edibles are handled by the merchant in the front in trade.",
"responses": [
{ "text": "Are you looking to buy anything else?", "topic": "TALK_FREE_MERCHANT_STOCKS_ALL" },
- { "text": "Very well... let's talk about something else.", "topic": "TALK_FREE_MERCHANT_STOCKS" }
+ { "text": "Very well… let's talk about something else.", "topic": "TALK_FREE_MERCHANT_STOCKS" }
]
},
{
diff --git a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard1.json b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard1.json
index 15ba4d79443ed..c42ac20006ba6 100644
--- a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard1.json
+++ b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard1.json
@@ -105,7 +105,7 @@
"type": "talk_topic",
"id": "TALK_EVAC_GUARD1_BYE",
"dynamic_line": "Stay safe out there. Hate to have to kill you after you've already died.",
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
},
{
"id": "MISSION_EVAC_SMOKER_GET_CIGARETTES",
diff --git a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard2.json b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard2.json
index 4c94b34bec017..f39d6d854f29e 100644
--- a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard2.json
+++ b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard2.json
@@ -27,7 +27,7 @@
"type": "talk_topic",
"id": "TALK_EVAC_GUARD2_NEW",
"dynamic_line": "Yes of course. Just don't bring any trouble and it's all fine by me.",
- "responses": [ { "text": "...", "topic": "TALK_EVAC_GUARD2" } ]
+ "responses": [ { "text": "…", "topic": "TALK_EVAC_GUARD2" } ]
},
{
"type": "talk_topic",
@@ -42,7 +42,7 @@
"type": "talk_topic",
"id": "TALK_EVAC_GUARD2_RULES_BASEMENT",
"dynamic_line": "In short, we had a problem when a sick refugee died and turned into a zombie. We had to expel the refugees and most of our surviving group now stays to the basement to prevent it from happening again. Unless you really prove your worth I don't foresee any exceptions to that rule.",
- "responses": [ { "text": "...", "topic": "TALK_EVAC_GUARD2" } ]
+ "responses": [ { "text": "…", "topic": "TALK_EVAC_GUARD2" } ]
},
{
"type": "talk_topic",
@@ -54,6 +54,6 @@
"type": "talk_topic",
"id": "TALK_EVAC_GUARD2_TRADE",
"dynamic_line": "You are asking the wrong person, should look for our merchant by the main entrance. Perhaps one of the scavengers is also interested.",
- "responses": [ { "text": "...", "topic": "TALK_EVAC_GUARD2" } ]
+ "responses": [ { "text": "…", "topic": "TALK_EVAC_GUARD2" } ]
}
]
diff --git a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard3.json b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard3.json
index 1b03df507c6fd..76113d7c858e7 100644
--- a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard3.json
+++ b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard3.json
@@ -18,27 +18,27 @@
{ "text": "What do you do around here?", "topic": "TALK_EVAC_GUARD3_NEW" },
{ "text": "Got tips for avoiding trouble?", "topic": "TALK_EVAC_GUARD3_RULES" },
{ "text": "Have you seen anyone who might be hiding something?", "topic": "TALK_EVAC_GUARD3_HIDE1" },
- { "text": "Bye...", "topic": "TALK_DONE" }
+ { "text": "Bye…", "topic": "TALK_DONE" }
]
},
{
"id": "TALK_EVAC_GUARD3_NEW",
"type": "talk_topic",
"dynamic_line": "I haven't been here for long but I do my best to watch who comes and goes. You can't always predict who will bring trouble.",
- "responses": [ { "text": "...", "topic": "TALK_EVAC_GUARD3" } ]
+ "responses": [ { "text": "…", "topic": "TALK_EVAC_GUARD3" } ]
},
{
"id": "TALK_EVAC_GUARD3_RULES",
"type": "talk_topic",
"dynamic_line": "Keep your head down and stay out of my way.",
- "responses": [ { "text": "OK...", "topic": "TALK_EVAC_GUARD3" } ]
+ "responses": [ { "text": "OK…", "topic": "TALK_EVAC_GUARD3" } ]
},
{
"id": "TALK_EVAC_GUARD3_HIDE1",
"type": "talk_topic",
"dynamic_line": "Like what?",
"responses": [
- { "text": "I'm not sure...", "topic": "TALK_EVAC_GUARD3_WASTE" },
+ { "text": "I'm not sure…", "topic": "TALK_EVAC_GUARD3_WASTE" },
{ "text": "Like they could be working for someone else?", "topic": "TALK_EVAC_GUARD3_HIDE2" }
]
},
@@ -62,7 +62,7 @@
"success": { "topic": "TALK_EVAC_GUARD3_DEAD", "effect": { "npc_change_faction": "hells_raiders" } },
"failure": { "topic": "TALK_EVAC_GUARD3_INSULT", "effect": { "u_faction_rep": -5 } }
},
- { "text": "Sorry, I didn't mean to offend you...", "topic": "TALK_EVAC_GUARD3_WASTE" }
+ { "text": "Sorry, I didn't mean to offend you…", "topic": "TALK_EVAC_GUARD3_WASTE" }
]
},
{
@@ -75,18 +75,18 @@
"id": "TALK_EVAC_GUARD3_DEAD",
"type": "talk_topic",
"dynamic_line": "That's it, you're dead!",
- "responses": [ { "text": "I didn't mean it!", "topic": "TALK_DONE" }, { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "I didn't mean it!", "topic": "TALK_DONE" }, { "text": "…", "topic": "TALK_DONE" } ]
},
{
"id": "TALK_EVAC_GUARD3_HOSTILE",
"type": "talk_topic",
"dynamic_line": "You must really have a death wish!",
- "responses": [ { "text": "I didn't mean it!", "topic": "TALK_DONE" }, { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "I didn't mean it!", "topic": "TALK_DONE" }, { "text": "…", "topic": "TALK_DONE" } ]
},
{
"id": "TALK_EVAC_GUARD3_INSULT",
"type": "talk_topic",
"dynamic_line": "We don't put-up with garbage like you, finish your business and get the hell out.",
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
}
]
diff --git a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard_generic.json b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard_generic.json
index 86013d6887da1..7c5306be2a3f2 100644
--- a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard_generic.json
+++ b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_guard_generic.json
@@ -22,6 +22,6 @@
"no": [ "Ma'am", "Ma'am, you really shouldn't be traveling out there." ]
}
],
- "responses": [ { "text": "Don't mind me...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "Don't mind me…", "topic": "TALK_DONE" } ]
}
]
diff --git a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json
index 867e05c2bf345..f0a91268f0ec3 100644
--- a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json
+++ b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json
@@ -225,7 +225,7 @@
],
"type": "talk_topic",
"responses": [
- { "text": "I heard this place was a refugee center...", "topic": "TALK_EVAC_MERCHANT_NEW" },
+ { "text": "I heard this place was a refugee center…", "topic": "TALK_EVAC_MERCHANT_NEW" },
{ "text": "What are you doing here?", "topic": "TALK_EVAC_MERCHANT_PLANS" },
{ "text": "Heard anything about the outside world?", "topic": "TALK_EVAC_MERCHANT_WORLD" },
{ "text": "Is there any way I can join your group?", "topic": "TALK_EVAC_MERCHANT_ASK_JOIN" },
@@ -247,7 +247,7 @@
{ "text": "Can I do anything for the center?", "topic": "TALK_MISSION_LIST" },
{ "text": "Let's trade then.", "effect": "start_trade", "topic": "TALK_EVAC_MERCHANT" },
{
- "text": "I figured you might be looking for some help...",
+ "text": "I figured you might be looking for some help…",
"topic": "TALK_NONE",
"effect": { "companion_mission": "REFUGEE_MERCHANT" },
"condition": { "u_has_any_trait": [ "NPC_MISSION_LEV_1" ] }
@@ -279,7 +279,7 @@
"dynamic_line": "I'm sorry, but the only way we're going to make it is if we keep our gates buttoned fast. The guards in the basement have orders to shoot on sight, if you so much as peep your head in the lower levels. I don't know what made the scavengers out there so ruthless but some of us have had to kill our own bloody kids... don't even think about strong arming us.",
"responses": [
{
- "text": "[INT 10] Wait, six buses and refugees... how many people do you still have crammed in here?",
+ "text": "[INT 10] Wait, six buses and refugees… how many people do you still have crammed in here?",
"topic": "TALK_EVAC_MERCHANT_PLANS3",
"condition": { "u_has_intelligence": 10 }
}
@@ -310,13 +310,13 @@
"id": "TALK_EVAC_MERCHANT_NO",
"type": "talk_topic",
"dynamic_line": "I'm sorry, not a risk we are willing to take right now.",
- "responses": [ { "text": "Fine...", "topic": "TALK_EVAC_MERCHANT" } ]
+ "responses": [ { "text": "Fine…", "topic": "TALK_EVAC_MERCHANT" } ]
},
{
"id": "TALK_EVAC_MERCHANT_HELL_NO",
"type": "talk_topic",
"dynamic_line": "There isn't a chance in hell! We had one guy come in here with bloody fur all over his body... well I guess that isn't all that strange but I'm pretty sure whatever toxic waste is still out there is bound to mutate more than just his hair.",
- "responses": [ { "text": "Fine... *coughupyourscough*", "topic": "TALK_EVAC_MERCHANT" } ]
+ "responses": [ { "text": "Fine… *coughupyourscough*", "topic": "TALK_EVAC_MERCHANT" } ]
},
{
"id": "TALK_EVAC_MERCHANT_ASK_JOIN",
@@ -335,7 +335,7 @@
"topic": "TALK_EVAC_MERCHANT_NO",
"condition": { "and": [ { "not": { "u_has_intelligence": 7 } }, { "u_has_strength": 11 } ] }
},
- { "text": "I guess I'll look somewhere else...", "topic": "TALK_EVAC_MERCHANT" }
+ { "text": "I guess I'll look somewhere else…", "topic": "TALK_EVAC_MERCHANT" }
]
},
{
@@ -345,7 +345,7 @@
"responses": [
{ "text": "Hordes?", "topic": "TALK_EVAC_MERCHANT_HORDES" },
{ "text": "Heard of anything better than the odd gun cache?", "topic": "TALK_EVAC_MERCHANT_PRIME_LOOT" },
- { "text": "Was hoping for something more...", "topic": "TALK_EVAC_MERCHANT" }
+ { "text": "Was hoping for something more…", "topic": "TALK_EVAC_MERCHANT" }
]
},
{
diff --git a/data/json/npcs/refugee_center/surface_staff/NPC_old_guard_doctor.json b/data/json/npcs/refugee_center/surface_staff/NPC_old_guard_doctor.json
index 3f4010faa9211..216a3c5052915 100644
--- a/data/json/npcs/refugee_center/surface_staff/NPC_old_guard_doctor.json
+++ b/data/json/npcs/refugee_center/surface_staff/NPC_old_guard_doctor.json
@@ -30,7 +30,7 @@
"dynamic_line": "I'm a doctor, one of the several at the outpost. We were the lucky ones. Came here right went things started to go wrong, never left.",
"responses": [
{ "text": "So what are you doing right now?", "topic": "TALK_SCIENCE_REP_NEW_DOING" },
- { "text": "Never mind...", "topic": "TALK_SCIENCE_REP" }
+ { "text": "Never mind…", "topic": "TALK_SCIENCE_REP" }
]
},
{
@@ -39,26 +39,26 @@
"dynamic_line": "The Old Guard--that's what's left of the feds--set me up here to screen any new arrivals for infection risks. Can't be too paranoid these days. Sad to have to turn people away, but I like the assignment for the chance to get news about the outside world.",
"responses": [
{ "text": "What kind of news?", "topic": "TALK_SCIENCE_REP_NEW_NEWS" },
- { "text": "Never mind...", "topic": "TALK_SCIENCE_REP" }
+ { "text": "Never mind…", "topic": "TALK_SCIENCE_REP" }
]
},
{
"id": "TALK_SCIENCE_REP_NEW_NEWS",
"type": "talk_topic",
"dynamic_line": "Sightings of unusual living dead or new mutations. The more we know about what's happening, the closer we can get to a treatment or maybe even a cure. It's a long shot, but you have hope to survive.",
- "responses": [ { "text": "Good luck with that...", "topic": "TALK_SCIENCE_REP" } ]
+ "responses": [ { "text": "Good luck with that…", "topic": "TALK_SCIENCE_REP" } ]
},
{
"id": "TALK_SCIENCE_REP_WORLD",
"type": "talk_topic",
"dynamic_line": "This is no classic zombie outbreak. The dead seem to be getting stronger as the days go on. Some survivors too, come in here with... adaptations. Maybe they're related.",
- "responses": [ { "text": "Never mind...", "topic": "TALK_SCIENCE_REP" } ]
+ "responses": [ { "text": "Never mind…", "topic": "TALK_SCIENCE_REP" } ]
},
{
"id": "TALK_SCIENCE_REP_ASK_TRADE",
"type": "talk_topic",
"dynamic_line": "We can't. There's nothing we can spare to sell and I've got no budget to buy from you. I don't suppose you want to donate?",
- "responses": [ { "text": "...", "topic": "TALK_SCIENCE_REP" } ]
+ "responses": [ { "text": "…", "topic": "TALK_SCIENCE_REP" } ]
},
{
"id": "MISSION_SCIENCE_REP_1",
diff --git a/data/json/npcs/refugee_center/surface_visitors/NPC_arsonist.json b/data/json/npcs/refugee_center/surface_visitors/NPC_arsonist.json
index 41e6de2bc0ee5..5dd39f169c446 100644
--- a/data/json/npcs/refugee_center/surface_visitors/NPC_arsonist.json
+++ b/data/json/npcs/refugee_center/surface_visitors/NPC_arsonist.json
@@ -34,20 +34,20 @@
"type": "talk_topic",
"id": "TALK_ARSONIST_NEW",
"dynamic_line": "Guess that makes two of us. Well, kind of. I don't think we're open, though. Full up as hell; it's almost a crowd downstairs. Did you see the trader at the entrance? There's the one to ask.",
- "responses": [ { "text": "Sucks...", "topic": "TALK_ARSONIST" } ]
+ "responses": [ { "text": "Sucks…", "topic": "TALK_ARSONIST" } ]
},
{
"type": "talk_topic",
"id": "TALK_ARSONIST_DOING_REBAR",
"dynamic_line": "Well, there's a guy downstairs who got a working pneumatic cannon. It shoots metal like... like a cannon without the bang. Cost-efficient as hell. And there's no shortage of improvised weapons you can make. The big thing though, seems to be continuing construction of fortifications. Very few of those monsters seem to be able to break through a fence or wall constructed with the stuff.",
- "responses": [ { "text": "Well, then...", "topic": "TALK_ARSONIST" } ]
+ "responses": [ { "text": "Well, then…", "topic": "TALK_ARSONIST" } ]
},
{
"type": "talk_topic",
"id": "TALK_ARSONIST_WORLD",
"dynamic_line": "Nothing optimistic, at least. Had a pal on the road with a ham radio, but she's gone and so is that thing. Kaput.",
"responses": [
- { "text": "...", "topic": "TALK_ARSONIST" },
+ { "text": "…", "topic": "TALK_ARSONIST" },
{ "text": "Nothing optimistic?", "topic": "TALK_ARSONIST_WORLD_OPTIMISTIC" }
]
},
@@ -61,7 +61,7 @@
"type": "talk_topic",
"id": "TALK_ARSONIST_JOIN",
"dynamic_line": "I don't know. I mean, if you can make yourself useful. But that's become a real hazy thing nowadays. It depends who you ask. The merchant definitely doesn't want me here when I'm not selling, but... some people get away with it.",
- "responses": [ { "text": "...", "topic": "TALK_ARSONIST" } ]
+ "responses": [ { "text": "…", "topic": "TALK_ARSONIST" } ]
},
{
"type": "talk_topic",
@@ -95,7 +95,7 @@
},
"responses": [
{
- "text": "...",
+ "text": "…",
"success": { "effect": "end_conversation", "opinion": { "trust": -1, "fear": -2, "value": -1, "anger": 1 }, "topic": "TALK_DONE" }
}
]
diff --git a/data/json/npcs/refugee_center/surface_visitors/NPC_hunter.json b/data/json/npcs/refugee_center/surface_visitors/NPC_hunter.json
index bab949d90df24..66ba8fe6d5661 100644
--- a/data/json/npcs/refugee_center/surface_visitors/NPC_hunter.json
+++ b/data/json/npcs/refugee_center/surface_visitors/NPC_hunter.json
@@ -19,7 +19,7 @@
"no": "Huh, thought I smelled someone new. Can I help you?"
},
"responses": [
- { "text": "You... smelled me?", "topic": "TALK_EVAC_HUNTER_SMELL" },
+ { "text": "You… smelled me?", "topic": "TALK_EVAC_HUNTER_SMELL" },
{ "text": "What do you do around here?", "topic": "TALK_EVAC_HUNTER_DO" },
{ "text": "Got anything for sale?", "topic": "TALK_EVAC_HUNTER_SALE" },
{ "text": "Got any survival advice?", "topic": "TALK_EVAC_HUNTER_ADVICE" },
@@ -45,19 +45,19 @@
"id": "TALK_EVAC_HUNTER_LIFE",
"type": "talk_topic",
"dynamic_line": "Not really, just trying to lead my life.",
- "responses": [ { "text": "...", "topic": "TALK_EVAC_HUNTER" } ]
+ "responses": [ { "text": "…", "topic": "TALK_EVAC_HUNTER" } ]
},
{
"id": "TALK_EVAC_HUNTER_HUNT",
"type": "talk_topic",
"dynamic_line": "Yep. Whatever game I spot, I bag and sell the meat and other parts here. Got the occasional fish and basket full of wild fruit, but nothing comes close to a freshly-cooked moose steak for supper!",
- "responses": [ { "text": "Great, now my mouth is watering...", "topic": "TALK_EVAC_HUNTER" } ]
+ "responses": [ { "text": "Great, now my mouth is watering…", "topic": "TALK_EVAC_HUNTER" } ]
},
{
"id": "TALK_EVAC_HUNTER_SALE",
"type": "talk_topic",
"dynamic_line": "Sure, just bagged a fresh batch of meat. You may want to grill it up before it gets too, uh... 'tender'.",
- "responses": [ { "text": "...", "effect": "start_trade", "topic": "TALK_EVAC_HUNTER" } ]
+ "responses": [ { "text": "…", "effect": "start_trade", "topic": "TALK_EVAC_HUNTER" } ]
},
{
"id": "TALK_EVAC_HUNTER_ADVICE",
@@ -71,12 +71,12 @@
"A steady diet of cooked meat and clean water will keep you alive forever, but your taste buds and your colon may start to get angry at you. Eat a piece of fruit every once in a while.",
"Smoke crack to get more shit done."
],
- "responses": [ { "text": "...", "topic": "TALK_EVAC_HUNTER" } ]
+ "responses": [ { "text": "…", "topic": "TALK_EVAC_HUNTER" } ]
},
{
"id": "TALK_EVAC_HUNTER_BYE",
"type": "talk_topic",
"dynamic_line": "Watch your back out there.",
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
}
]
diff --git a/data/json/npcs/refugee_center/surface_visitors/NPC_old_guard_representative.json b/data/json/npcs/refugee_center/surface_visitors/NPC_old_guard_representative.json
index 98b29eb6e53c5..aec2b252ca751 100644
--- a/data/json/npcs/refugee_center/surface_visitors/NPC_old_guard_representative.json
+++ b/data/json/npcs/refugee_center/surface_visitors/NPC_old_guard_representative.json
@@ -40,7 +40,7 @@
"dynamic_line": "I'm the region's federal liaison. Most people here call us the 'Old Guard' and I rather like the sound of it. Despite how things currently appear, the federal government was not entirely destroyed. After the outbreak I was chosen to coordinate civilian and militia efforts in support of military operations.",
"responses": [
{ "text": "So what are you actually doing here?", "topic": "TALK_OLD_GUARD_REP_NEW_DOING" },
- { "text": "Never mind...", "topic": "TALK_OLD_GUARD_REP" }
+ { "text": "Never mind…", "topic": "TALK_OLD_GUARD_REP" }
]
},
{
@@ -50,14 +50,14 @@
"responses": [
{ "text": "Is there a catch?", "topic": "TALK_OLD_GUARD_REP_NEW_DOWNSIDE" },
{ "text": "Anything more to it?", "topic": "TALK_OLD_GUARD_REP_NEW_DOWNSIDE" },
- { "text": "Never mind...", "topic": "TALK_OLD_GUARD_REP" }
+ { "text": "Never mind…", "topic": "TALK_OLD_GUARD_REP" }
]
},
{
"id": "TALK_OLD_GUARD_REP_NEW_DOWNSIDE",
"type": "talk_topic",
"dynamic_line": "Well... I was like any other civilian till they conscripted me so I'll tell it to you straight. They're the best hope we got right now. They are stretched impossibly thin but are willing to do what is needed to maintain order. They don't care much about looters since they understand most everyone is dead, but if you have something they need... you WILL give it to them. Since most survivors here have nothing they want, they are welcomed as champions.",
- "responses": [ { "text": "Hmmm...", "topic": "TALK_OLD_GUARD_REP" } ]
+ "responses": [ { "text": "Hmmm…", "topic": "TALK_OLD_GUARD_REP" } ]
},
{
"id": "TALK_OLD_GUARD_REP_WORLD",
@@ -66,26 +66,26 @@
"responses": [
{ "text": "The 2nd Fleet?", "topic": "TALK_OLD_GUARD_REP_WORLD_2NDFLEET" },
{ "text": "Tell me about the footholds.", "topic": "TALK_OLD_GUARD_REP_WORLD_FOOTHOLDS" },
- { "text": "Never mind...", "topic": "TALK_OLD_GUARD_REP" }
+ { "text": "Never mind…", "topic": "TALK_OLD_GUARD_REP" }
]
},
{
"id": "TALK_OLD_GUARD_REP_WORLD_2NDFLEET",
"type": "talk_topic",
"dynamic_line": "I don't know much about how it formed but it is the armada of military and commercial ships that's floating off the coast. They have everything from supertankers and carriers to fishing trawlers... even a few NATO ships. Most civilians are offered a cabin on one of the liners to retire to if they serve as a federal employee for a few years.",
- "responses": [ { "text": "Hmmm...", "topic": "TALK_OLD_GUARD_REP" } ]
+ "responses": [ { "text": "Hmmm…", "topic": "TALK_OLD_GUARD_REP" } ]
},
{
"id": "TALK_OLD_GUARD_REP_WORLD_FOOTHOLDS",
"type": "talk_topic",
"dynamic_line": "They may just be propaganda but apparently one or two cities were successful in 'walling themselves off.' Around here I was told that there were a few places like this one but I couldn't tell you where.",
- "responses": [ { "text": "Hmmm...", "topic": "TALK_OLD_GUARD_REP" } ]
+ "responses": [ { "text": "Hmmm…", "topic": "TALK_OLD_GUARD_REP" } ]
},
{
"id": "TALK_OLD_GUARD_REP_ASK_JOIN",
"type": "talk_topic",
"dynamic_line": "You can't actually join unless you go through a recruiter. We can usually use help though, ask me from time to time if there is any work available. Completing missions as a contractor is a great way to make a name for yourself among the most powerful men left in the world.",
- "responses": [ { "text": "Hmmm...", "topic": "TALK_OLD_GUARD_REP" } ]
+ "responses": [ { "text": "Hmmm…", "topic": "TALK_OLD_GUARD_REP" } ]
},
{
"id": "MISSION_OLD_GUARD_REP_1",
diff --git a/data/json/npcs/refugee_center/surface_visitors/NPC_scavenger_mercenary.json b/data/json/npcs/refugee_center/surface_visitors/NPC_scavenger_mercenary.json
index 29962e56992db..a854201ed0147 100644
--- a/data/json/npcs/refugee_center/surface_visitors/NPC_scavenger_mercenary.json
+++ b/data/json/npcs/refugee_center/surface_visitors/NPC_scavenger_mercenary.json
@@ -78,7 +78,7 @@
{
"id": "TALK_SCAVENGER_MERC",
"type": "talk_topic",
- "dynamic_line": { "u_is_wearing": "badge_marshal", "yes": "I haven't done anything wrong...", "no": "..." },
+ "dynamic_line": { "u_is_wearing": "badge_marshal", "yes": "I haven't done anything wrong…", "no": "…" },
"responses": [
{ "text": "Who are you?", "topic": "TALK_SCAVENGER_MERC_NEW" },
{ "text": "Any tips for surviving?", "topic": "TALK_SCAVENGER_MERC_TIPS" },
@@ -90,7 +90,7 @@
"id": "TALK_SCAVENGER_MERC_NEW",
"type": "talk_topic",
"dynamic_line": "I'm just a hired hand. Someone pays me and I do what needs to be done.",
- "responses": [ { "text": "...", "topic": "TALK_SCAVENGER_MERC" } ]
+ "responses": [ { "text": "…", "topic": "TALK_SCAVENGER_MERC" } ]
},
{
"id": "TALK_SCAVENGER_MERC_TIPS",
diff --git a/data/json/npcs/robofac/NPC_ROBOFAC_INTERCOM.json b/data/json/npcs/robofac/NPC_ROBOFAC_INTERCOM.json
index 1a975cdf204bf..4afcaaae14dce 100644
--- a/data/json/npcs/robofac/NPC_ROBOFAC_INTERCOM.json
+++ b/data/json/npcs/robofac/NPC_ROBOFAC_INTERCOM.json
@@ -137,7 +137,7 @@
"has_generic_rewards": false,
"followup": "MISSION_ROBOFAC_INTERCOM_3",
"dialogue": {
- "describe": "...",
+ "describe": "…",
"offer": "When the portal storms started, the Government issued an evacuation order for critical XEDRA personnel and sent convoys to retrieve them, with our head of AI research among the recalled. We recently discovered that he died when the convoy transferring him was ambushed in the initial chaos, but his corpse and memory bionic might remain intact enough for us to extract valuable knowledge. We want you to travel to the location, make a copy of his Bionic Memory Unit, and return it to us.",
"accepted": "Remember, perform the extraction /exactly/ as specified, otherwise the bionic will self-destruct.",
"rejected": "Yes, we recognize that our request is exceptional. Return if you change your mind.",
@@ -152,7 +152,7 @@
"id": "MISSION_ROBOFAC_INTERCOM_3",
"type": "mission_definition",
"name": "Light retrieval",
- "description": "Reach the collapsed tower basement, and search the ruins for a photonic circuitry template. The intercom warned you about heavy enemy prescence, and of the existence of a hazardous enviroment.",
+ "description": "Reach the collapsed tower basement, and search the ruins for a photonic circuitry template. The intercom warned you about heavy enemy presence, and of the existence of a hazardous environment.",
"goal": "MGOAL_FIND_ITEM",
"difficulty": 5,
"item": "template_photonics",
@@ -172,7 +172,7 @@
"origins": [ "ORIGIN_SECONDARY" ],
"has_generic_rewards": false,
"dialogue": {
- "describe": "...",
+ "describe": "…",
"offer": "Our facility once sourced advanced photonic circuitry from a nearby robotics manufacturer. Their building suffered major damage during the portal storms, and collapsed almost entirely. However, preliminary scouting reveals that the basement prototyping lab likely remains intact.\n\nthe intercom: We ask you to investigate the ruins, and if possible, retrieve a template for the fabrication of said photonic circuitry.",
"accepted": "We expect your success, mercenary.",
"rejected": "Return if you change your mind.",
@@ -286,7 +286,7 @@
"effect": { "npc_add_var": "npc_failed_intercom_trade", "type": "dialogue", "context": "intercom", "value": "yes" },
"sentinel": "no_intercom_trade"
},
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
},
{
"id": "TALK_ROBOFAC_INTERCOM_TRADE",
@@ -296,13 +296,13 @@
"effect": { "npc_add_var": "npc_intercom_trade", "type": "dialogue", "context": "intercom", "value": "yes" },
"sentinel": "intercom_trade"
},
- "responses": [ { "text": "...", "effect": "start_trade", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "effect": "start_trade", "topic": "TALK_DONE" } ]
},
{
"id": "TALK_ROBOFAC_INTERCOM_PROTOTYPE_ASK",
"type": "talk_topic",
"dynamic_line": "It was a modified Wraitheon chassis, with a custom AI. We hoped it would interact with the outside world for us, but you know how well it went... Shame about what happened, with the evisceration and all...",
- "responses": [ { "text": "...", "topic": "TALK_ROBOFAC_INTERCOM" } ]
+ "responses": [ { "text": "…", "topic": "TALK_ROBOFAC_INTERCOM" } ]
},
{
"id": "TALK_ROBOFAC_INTERCOM_BUY_PROTECTIVE_GEAR",
@@ -327,7 +327,7 @@
{
"id": "TALK_ROBOFAC_INTERCOM_PLEAD",
"type": "talk_topic",
- "dynamic_line": { "u_has_mission": "MISSION_ROBOFAC_INTERCOM_1", "yes": "...", "no": "Just leave." },
+ "dynamic_line": { "u_has_mission": "MISSION_ROBOFAC_INTERCOM_1", "yes": "…", "no": "Just leave." },
"responses": [
{
"text": "Wait! Maybe I can help you!",
diff --git a/data/json/npcs/robofac/NPC_ROBOFAC_MERC_1.json b/data/json/npcs/robofac/NPC_ROBOFAC_MERC_1.json
index ce9dfa840a4b7..1ff32ac279157 100644
--- a/data/json/npcs/robofac/NPC_ROBOFAC_MERC_1.json
+++ b/data/json/npcs/robofac/NPC_ROBOFAC_MERC_1.json
@@ -70,7 +70,7 @@
{
"id": "TALK_ROBOFAC_MERC_1",
"type": "talk_topic",
- "dynamic_line": [ "Something to say?", "I charge hourly, so be quick...", "Hey.", "...", "Yes?", "What's up?", "Good to see you." ],
+ "dynamic_line": [ "Something to say?", "I charge hourly, so be quick…", "Hey.", "…", "Yes?", "What's up?", "Good to see you." ],
"responses": [
{
"text": "Who are you?",
@@ -121,9 +121,9 @@
"Well?",
"Good to have some company, I guess.",
"Have something to say?",
- "...",
+ "…",
"Didn't you want something?",
- "..."
+ "…"
],
"responses": [
{ "text": "Anything interesting going on?", "topic": "TALK_ROBOFAC_MERC_1_GOING_ON" },
@@ -156,14 +156,14 @@
"id": "TALK_ROBOFAC_MERC_1_GOING_ON",
"type": "talk_topic",
"dynamic_line": [ "Just came back from a job. Trying to rest for a short while." ],
- "responses": [ { "text": "...", "topic": "TALK_ROBOFAC_MERC_1_MAIN" } ]
+ "responses": [ { "text": "…", "topic": "TALK_ROBOFAC_MERC_1_MAIN" } ]
},
{
"id": "TALK_ROBOFAC_MERC_1_COINS",
"type": "talk_topic",
"dynamic_line": "Have you noticed they pay us in tiny little gold coins, it's bizarre I say. One would think they have a gold mine in there, but no, they don't, so they make me cross the damned world grabbing gold bars. ",
"responses": [
- { "text": "I guess I could help with that...", "topic": "TALK_ROBOFAC_MERC_1_GOLD_MISSION" },
+ { "text": "I guess I could help with that…", "topic": "TALK_ROBOFAC_MERC_1_GOLD_MISSION" },
{ "text": "Now that you mention it, it does seem rather strange.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" }
]
},
@@ -178,7 +178,7 @@
"I heard some strange dimensional resonance caused all this, do you think it has happened to other places?",
"You noticed this place has working WI-FI? Well not the rest of the net works anyways."
],
- "responses": [ { "text": "...", "topic": "TALK_ROBOFAC_MERC_1_MAIN" } ]
+ "responses": [ { "text": "…", "topic": "TALK_ROBOFAC_MERC_1_MAIN" } ]
},
{
"id": "TALK_ROBOFAC_MERC_1_GOLD_MISSION",
diff --git a/data/json/npcs/robofac/NPC_robofac_generic_security.json b/data/json/npcs/robofac/NPC_robofac_generic_security.json
index 399d9c21176c3..dc8a913a46c17 100644
--- a/data/json/npcs/robofac/NPC_robofac_generic_security.json
+++ b/data/json/npcs/robofac/NPC_robofac_generic_security.json
@@ -64,6 +64,6 @@
"id": "TALK_HUB_SECURITY",
"type": "talk_topic",
"dynamic_line": [ "Keep it civil, merc.", "Just on watch, move along.", { "u_male": [ "Sir." ], "no": [ "Ma'am" ] } ],
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
}
]
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_barber.json b/data/json/npcs/tacoma_ranch/NPC_ranch_barber.json
index 99c2c3d4775ce..f9c6317d45c04 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_barber.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_barber.json
@@ -29,7 +29,7 @@
"condition": { "u_has_items": { "item": "FMCNote", "count": 6 } },
"effect": [ "buy_haircut", { "u_sell_item": "FMCNote", "count": 6 }, "barber_hair" ]
},
- { "text": "Maybe another time...", "topic": "TALK_DONE" }
+ { "text": "Maybe another time…", "topic": "TALK_DONE" }
]
},
{
@@ -48,6 +48,6 @@
"type": "talk_topic",
"id": "TALK_RANCH_BARBER_CUT",
"dynamic_line": "Stand still while I get my clippers...",
- "responses": [ { "text": "Thanks...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "Thanks…", "topic": "TALK_DONE" } ]
}
]
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_bartender.json b/data/json/npcs/tacoma_ranch/NPC_ranch_bartender.json
index c218acc8c3239..afa3ace311ea3 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_bartender.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_bartender.json
@@ -25,7 +25,7 @@
"effect": "start_trade"
},
{ "text": "What do you have on tap?", "topic": "TALK_RANCH_BARKEEP_TAP" },
- { "text": "I'll be going...", "topic": "TALK_DONE" }
+ { "text": "I'll be going…", "topic": "TALK_DONE" }
]
},
{
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_carpenter1.json b/data/json/npcs/tacoma_ranch/NPC_ranch_carpenter1.json
index 42f609e5615ee..93a656771124e 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_carpenter1.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_carpenter1.json
@@ -14,6 +14,6 @@
"type": "talk_topic",
"id": "TALK_RANCH_CONSTRUCTION_1",
"dynamic_line": "My partner is in charge of fortifying this place, you should ask him about what needs to be done.",
- "responses": [ { "text": "I'll talk to him then...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "I'll talk to him then…", "topic": "TALK_DONE" } ]
}
]
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_carpenter2.json b/data/json/npcs/tacoma_ranch/NPC_ranch_carpenter2.json
index d0e2fba5acc82..b22b9b20439df 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_carpenter2.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_carpenter2.json
@@ -16,7 +16,7 @@
"dynamic_line": "Howdy.",
"responses": [
{ "text": "What are you doing here?", "topic": "TALK_RANCH_CONSTRUCTION_2_JOB" },
- { "text": "I've got to go...", "topic": "TALK_DONE" }
+ { "text": "I've got to go…", "topic": "TALK_DONE" }
]
},
{
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_crop_overseer.json b/data/json/npcs/tacoma_ranch/NPC_ranch_crop_overseer.json
index a0a39ff2461d5..74e253a615289 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_crop_overseer.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_crop_overseer.json
@@ -17,12 +17,12 @@
"responses": [
{ "text": "What are you doing here?", "topic": "TALK_RANCH_CROP_OVERSEER_JOB" },
{
- "text": "I'm interested in investing in agriculture...",
+ "text": "I'm interested in investing in agriculture…",
"topic": "TALK_RANCH_CROP_OVERSEER",
"effect": { "companion_mission": "COMMUNE CROPS" }
},
{ "text": "What do you need done?", "topic": "TALK_MISSION_LIST" },
- { "text": "I've got to go...", "topic": "TALK_DONE" }
+ { "text": "I've got to go…", "topic": "TALK_DONE" }
]
},
{
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_doctor.json b/data/json/npcs/tacoma_ranch/NPC_ranch_doctor.json
index eba24015f4397..83c4a03ad0caa 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_doctor.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_doctor.json
@@ -16,7 +16,7 @@
"dynamic_line": "I'm sorry, I don't have time to see you at the moment.",
"responses": [
{ "text": "For the right price could I borrow your services?", "topic": "TALK_RANCH_DOCTOR_BIONICS" },
- { "text": "...", "topic": "TALK_DONE" }
+ { "text": "…", "topic": "TALK_DONE" }
]
},
{
@@ -25,11 +25,11 @@
"dynamic_line": "I imagine we might be able to work something out.",
"responses": [
{
- "text": "I was wondering if you could install a cybernetic implant...",
+ "text": "I was wondering if you could install a cybernetic implant…",
"topic": "TALK_DONE",
"effect": "bionic_install"
},
- { "text": "I need help removing an implant...", "topic": "TALK_DONE", "effect": "bionic_remove" }
+ { "text": "I need help removing an implant…", "topic": "TALK_DONE", "effect": "bionic_remove" }
]
}
]
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_farmer1.json b/data/json/npcs/tacoma_ranch/NPC_ranch_farmer1.json
index 7c376372613c1..8ee28f999489d 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_farmer1.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_farmer1.json
@@ -13,18 +13,18 @@
{
"type": "talk_topic",
"id": "TALK_RANCH_FARMER_1",
- "dynamic_line": "...",
+ "dynamic_line": "…",
"responses": [
{ "text": "What are you doing here?", "topic": "TALK_RANCH_FARMER_1_JOB" },
{ "text": "I'd like to hire your services.", "topic": "TALK_RANCH_FARMER_1_HIRE" },
- { "text": "I've got to go...", "topic": "TALK_DONE" }
+ { "text": "I've got to go…", "topic": "TALK_DONE" }
]
},
{
"type": "talk_topic",
"id": "TALK_RANCH_FARMER_1_JOB",
"dynamic_line": "I was sent here to assist in setting-up the farm. Most of us have no real skills that transfer from before the cataclysm so things are a bit of trial and error.",
- "responses": [ { "text": "...", "topic": "TALK_RANCH_FARMER_1" } ]
+ "responses": [ { "text": "…", "topic": "TALK_RANCH_FARMER_1" } ]
},
{
"type": "talk_topic",
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_farmer2.json b/data/json/npcs/tacoma_ranch/NPC_ranch_farmer2.json
index 66e53f8f07cbf..8caf247cb420e 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_farmer2.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_farmer2.json
@@ -17,19 +17,19 @@
"responses": [
{ "text": "What are you doing here?", "topic": "TALK_RANCH_FARMER_2_JOB" },
{ "text": "I'd like to hire your services.", "topic": "TALK_RANCH_FARMER_2_HIRE" },
- { "text": "I've got to go...", "topic": "TALK_DONE" }
+ { "text": "I've got to go…", "topic": "TALK_DONE" }
]
},
{
"type": "talk_topic",
"id": "TALK_RANCH_FARMER_2_JOB",
"dynamic_line": "I'm just a lucky guy that went from being chased by the undead to the noble life of a dirt farmer. We get room and board but won't see a share of our labor unless the crop is a success.",
- "responses": [ { "text": "It could be worse...", "topic": "TALK_RANCH_FARMER_2" } ]
+ "responses": [ { "text": "It could be worse…", "topic": "TALK_RANCH_FARMER_2" } ]
},
{
"type": "talk_topic",
"id": "TALK_RANCH_FARMER_2_HIRE",
"dynamic_line": "I've got no time for you. If you want to make a trade or need a job look for the foreman or crop overseer.",
- "responses": [ { "text": "I'll talk with them then...", "topic": "TALK_RANCH_FARMER_2" } ]
+ "responses": [ { "text": "I'll talk with them then…", "topic": "TALK_RANCH_FARMER_2" } ]
}
]
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_foreman.json b/data/json/npcs/tacoma_ranch/NPC_ranch_foreman.json
index 08e7419f0dbaf..cf186a7739cf7 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_foreman.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_foreman.json
@@ -29,7 +29,7 @@
{ "text": "What's your job here?", "topic": "TALK_RANCH_FOREMAN_JOB" },
{ "text": "What do you need done?", "topic": "TALK_MISSION_LIST" },
{
- "text": "I figured you might be looking for some help...",
+ "text": "I figured you might be looking for some help…",
"topic": "TALK_RANCH_FOREMAN",
"effect": { "companion_mission": "FOREMAN" }
},
@@ -38,7 +38,7 @@
"topic": "TALK_RANCH_FOREMAN_Nunez",
"condition": { "u_has_var": "Nunez_Tacoma", "type": "recruit", "context": "general", "value": "phase_1" }
},
- { "text": "I've got to go...", "topic": "TALK_DONE" }
+ { "text": "I've got to go…", "topic": "TALK_DONE" }
]
},
{
@@ -63,7 +63,7 @@
"type": "talk_topic",
"id": "TALK_RANCH_FOREMAN_REFUGEES",
"dynamic_line": "Could easily be hundreds as far as I know. They chose this ranch because of its rather remote location, decent fence, and huge cleared field. With as much land as we have fenced off we could build a village if we had the materials. We would have tried to secure a small town or something but the lack of good farmland and number of undead makes it more practical for us to build from scratch. The refugee center I came from is constantly facing starvation and undead assaults.",
- "responses": [ { "text": "Hopefully moving out here was worth it...", "topic": "TALK_RANCH_FOREMAN" } ]
+ "responses": [ { "text": "Hopefully moving out here was worth it…", "topic": "TALK_RANCH_FOREMAN" } ]
},
{
"type": "talk_topic",
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_guard.json b/data/json/npcs/tacoma_ranch/NPC_ranch_guard.json
index c77fc2e1971f5..d1af5c89f34c0 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_guard.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_guard.json
@@ -22,6 +22,6 @@
"no": [ "Ma'am", "Ma'am, you really shouldn't be traveling out there." ]
}
],
- "responses": [ { "text": "Don't mind me...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "Don't mind me…", "topic": "TALK_DONE" } ]
}
]
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_nurse.json b/data/json/npcs/tacoma_ranch/NPC_ranch_nurse.json
index 6adc2e572ef44..7375c56371100 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_nurse.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_nurse.json
@@ -20,7 +20,7 @@
{ "text": "What is your job here?", "topic": "TALK_RANCH_NURSE_JOB" },
{ "text": "Do you need any help?", "topic": "TALK_RANCH_NURSE_HIRE" },
{ "text": "I could use your medical assistance.", "topic": "TALK_RANCH_NURSE_AID" },
- { "text": "I've got to go...", "topic": "TALK_DONE" }
+ { "text": "I've got to go…", "topic": "TALK_DONE" }
]
},
{
@@ -92,7 +92,7 @@
"type": "talk_topic",
"id": "TALK_RANCH_NURSE_AID_DONE",
"dynamic_line": "That's the best I can do on short notice.",
- "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ "responses": [ { "text": "…", "topic": "TALK_DONE" } ]
},
{
"id": "MISSION_RANCH_NURSE_1",
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_scavenger.json b/data/json/npcs/tacoma_ranch/NPC_ranch_scavenger.json
index 6ef7c9293058a..1d76a081bd4e1 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_scavenger.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_scavenger.json
@@ -19,7 +19,7 @@
{ "text": "What is your job here?", "topic": "TALK_RANCH_SCAVENGER_1_JOB" },
{ "text": "Do you need any help?", "topic": "TALK_RANCH_SCAVENGER_1_HIRE" },
{ "text": "Let's see what you've managed to find.", "topic": "TALK_RANCH_SCAVENGER_1", "effect": "start_trade" },
- { "text": "I've got to go...", "topic": "TALK_DONE" }
+ { "text": "I've got to go…", "topic": "TALK_DONE" }
]
},
{
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_scrapper.json b/data/json/npcs/tacoma_ranch/NPC_ranch_scrapper.json
index bfc258974a5b7..f18a534df8786 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_scrapper.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_scrapper.json
@@ -17,7 +17,7 @@
"responses": [
{ "text": "What is your job here?", "topic": "TALK_RANCH_SCRAPPER_JOB" },
{ "text": "Do you need any help?", "topic": "TALK_RANCH_SCRAPPER_HIRE" },
- { "text": "I've got to go...", "topic": "TALK_DONE" }
+ { "text": "I've got to go…", "topic": "TALK_DONE" }
]
},
{
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_sickly_laborer.json b/data/json/npcs/tacoma_ranch/NPC_ranch_sickly_laborer.json
index 5f8a3a0c204dc..fd43d2fa40cee 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_sickly_laborer.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_sickly_laborer.json
@@ -18,7 +18,7 @@
{ "text": "What is your job here?", "topic": "TALK_RANCH_ILL_1_JOB" },
{ "text": "Do you need any help?", "topic": "TALK_RANCH_ILL_1_HIRE" },
{ "text": "What's wrong?", "topic": "TALK_RANCH_ILL_1_SICK" },
- { "text": "I've got to go...", "topic": "TALK_DONE" }
+ { "text": "I've got to go…", "topic": "TALK_DONE" }
]
},
{
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_woodcutter1.json b/data/json/npcs/tacoma_ranch/NPC_ranch_woodcutter1.json
index 194e5023eb3b4..e6cc62292c266 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_woodcutter1.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_woodcutter1.json
@@ -17,7 +17,7 @@
"responses": [
{ "text": "What are you doing here?", "topic": "TALK_RANCH_WOODCUTTER_JOB" },
{ "text": "I'd like to hire your services.", "topic": "TALK_RANCH_WOODCUTTER_HIRE" },
- { "text": "I've got to go...", "topic": "TALK_DONE" }
+ { "text": "I've got to go…", "topic": "TALK_DONE" }
]
},
{
diff --git a/data/json/npcs/tacoma_ranch/NPC_ranch_woodcutter2.json b/data/json/npcs/tacoma_ranch/NPC_ranch_woodcutter2.json
index 49fc6b1759146..a842f1581c21d 100644
--- a/data/json/npcs/tacoma_ranch/NPC_ranch_woodcutter2.json
+++ b/data/json/npcs/tacoma_ranch/NPC_ranch_woodcutter2.json
@@ -17,14 +17,14 @@
"responses": [
{ "text": "What is your job here?", "topic": "TALK_RANCH_WOODCUTTER_2_JOB" },
{ "text": "Do you need any help?", "topic": "TALK_RANCH_WOODCUTTER_2_HIRE" },
- { "text": "I've got to go...", "topic": "TALK_DONE" }
+ { "text": "I've got to go…", "topic": "TALK_DONE" }
]
},
{
"type": "talk_topic",
"id": "TALK_RANCH_WOODCUTTER_2_JOB",
"dynamic_line": "I turn the logs that laborers bring in into lumber to expand the outpost. Maintaining the saw is a chore but breaks the monotony.",
- "responses": [ { "text": "...", "topic": "TALK_RANCH_WOODCUTTER_2" } ]
+ "responses": [ { "text": "…", "topic": "TALK_RANCH_WOODCUTTER_2" } ]
},
{
"type": "talk_topic",
diff --git a/data/json/npcs/talk_tags.json b/data/json/npcs/talk_tags.json
index 9098630d46e82..6384cc419db6d 100644
--- a/data/json/npcs/talk_tags.json
+++ b/data/json/npcs/talk_tags.json
@@ -9,8 +9,8 @@
"Thorazine is bad for you, you know.",
"Thorazine is poison.",
"You don't need thorazine, it's limiting you.",
- "Thorazine... That's what 'they' use to keep you tame.",
- "Don't. This thorazine seriously clouds your mind. You need to stay sharp."
+ "Thorazine… That's what 'they' use to keep you tame.",
+ "Don't. This thorazine seriously clouds your mind. You need to stay sharp."
]
},
{
@@ -18,13 +18,13 @@
"category": "",
"//": "Hallucinatry NPCs say these things to encourage the avatar to extend the hallucination",
"text": [
- "Pink tablets! I love those!",
+ "Pink tablets! I love those!",
"Hey there's some pink tablets, take some!",
"Look, some LSD, let's play cataclysm: fun times ahead!",
"Say yes to LSD, say yes to Fun!",
"Perfect, those pink tablets will keep us going, take some!",
- "You know what would make all this more bearable? Pink Tablets!",
- "An odd pink tablet from the ground? I don't see why not!",
+ "You know what would make all this more bearable? Pink Tablets!",
+ "An odd pink tablet from the ground? I don't see why not!",
"Finally, something to take the edge off."
]
},
@@ -35,7 +35,7 @@
"text": [
"No thanks, I'm good.",
"I don't want to trade with you.",
- "I have the best stuff. And I'm keeping it!",
+ "I have the best stuff. And I'm keeping it!",
"No trading, that's my rule.",
"I'm not interested.",
"How about no?",
@@ -53,7 +53,7 @@
"I have better things to do.",
"I'll pass, it's too much work.",
"Who put you in charge of what I do?",
- "Great idea! Call me when you find SOMEONE ELSE to do it.",
+ "Great idea! Call me when you find SOMEONE ELSE to do it.",
"Not exactly the settlin' type."
]
},
@@ -130,13 +130,13 @@
"When we drinkin'?",
"When was the last time I had a drink?",
"I'm parched, I need to drink something.",
- "I'm thirsty...",
+ "I'm thirsty…",
"I'm thirsty.",
"I'm thirsty.",
"Can you give me something to drink, ?",
"I need to get some water.",
" if I don't drink something.",
- "Water... Is there an oasis nearby?",
+ "Water… Is there an oasis nearby?",
"Did you know that lack of water kills faster than lack of rest?",
"I'd kill for a sip of water right now."
]
@@ -149,8 +149,8 @@
"Yeah sure, can't help but notice you got beer with you! Let's crack a cold one and chat, , how goes it?",
"Oh definitely, how about one of those beers I see on you? What's up anyway?",
"Yeah you share those beers I see you hoarding and then we chat all you like! Only joking, what's up ?",
- "Hey , I bet a chat would be all the sweeter with a nice, cold beer in hand. How's it going?",
- "While we chat, what say you we open a beer and just... pretend the world isn't ending, just for a while?"
+ "Hey , I bet a chat would be all the sweeter with a nice, cold beer in hand. How's it going?",
+ "While we chat, what say you we open a beer and just… pretend the world isn't ending, just for a while?"
]
},
{
@@ -169,9 +169,9 @@
"Always ready for a good chat! But why, you OK?",
"OK , we should get to know each other, how are you coping?",
"Definitely, I'm game. How you holding up?",
- "Good idea . Let's forget the world for a while. How you doin'?",
- "Ah, what the heck. How's life been treating you?",
- "Sure. So, how about that weather ey?"
+ "Good idea . Let's forget the world for a while. How you doin'?",
+ "Ah, what the heck. How's life been treating you?",
+ "Sure. So, how about that weather ey?"
]
},
{
@@ -210,9 +210,9 @@
"unhappy",
" ",
"dejected",
- "down",
+ { "text": { "ctxt": "", "str": "down" } },
"glum",
- "blue",
+ { "text": { "ctxt": "", "str": "blue" } },
"dismal",
"sorrowful",
"despondent"
@@ -244,7 +244,7 @@
"//": "Generally emphatic negative responses to a request or command",
"text": [
"never",
- "no",
+ { "text": { "ctxt": "", "str": "no" } },
"not gonna happen",
"not happening",
"over my dead body",
@@ -276,7 +276,7 @@
"Bye bye, !",
"See you later, alligator.",
"Our paths must part, for now at least.",
- "There's something I gotta do on my own. Sorry."
+ "There's something I gotta do on my own. Sorry."
]
},
{
@@ -366,7 +366,7 @@
"I prefer to work uninhibited by that kind of connection.",
"I haven't found one that's good enough for me.",
"I don't belong to a faction, .",
- "I'm currently not under any contract. Why, you hiring?"
+ "I'm currently not under any contract. Why, you hiring?"
]
},
{
@@ -426,7 +426,7 @@
"When we sleepin'?",
"*Yawn*",
"What time is it?",
- "I'm tired...",
+ "I'm tired…",
"I'm tired.",
"I'm tired.",
"Can we rest for a while, ?",
@@ -434,9 +434,9 @@
" if we don't stop for a moment.",
"Did you know that lack of rest kills faster than lack of food?",
"I'll just go to sleep, ?",
- "I just...gotta close my eyes for a bit, okay?",
+ "I just… gotta close my eyes for a bit, okay?",
"Can't remember the last time I had a proper kip.",
- "I can't keep going for long . I need some rest, bad."
+ "I can't keep going for long . I need some rest, bad."
]
},
{
@@ -450,7 +450,7 @@
"Time for bed! See you in the morning.",
"There's a bed calling my name, and I'm going to it.",
"Good night! Wake me if you need me.",
- "Calling it a night for now. You get some rest too, okay?"
+ "Calling it a night for now. You get some rest too, okay?"
]
},
{
@@ -488,7 +488,19 @@
"type": "snippet",
"category": "",
"//": "General terms of acknowledgement for an order",
- "text": [ "fine", "okay", "get it", "you dig", "dig", "got it", "you see", "see, ", "alright", "that clear", "capiche" ]
+ "text": [
+ { "text": { "ctxt": "", "str": "fine" } },
+ { "text": { "ctxt": "", "str": "okay" } },
+ "get it",
+ "you dig",
+ { "text": { "ctxt": "", "str": "dig" } },
+ "got it",
+ "you see",
+ "see, ",
+ "alright",
+ "that clear",
+ "capiche"
+ ]
},
{
"type": "snippet",
@@ -539,12 +551,12 @@
"See you later, !",
"See you in hell, !",
"Hasta luego, !",
- "I'm outta here! ",
+ "I'm outta here! ",
"Bye bye, !",
"Thanks, !",
"Pleasure doing business with you.",
"Now beat it, you .",
- "Good haul. See you around"
+ "Good haul. See you around"
]
},
{
@@ -552,17 +564,17 @@
"category": "",
"//": "Warning from non-hostile NPCs when the player steals something.",
"text": [
- "Hey! I saw you take that ! Drop it. Now.",
+ "Hey! I saw you take that ! Drop it. Now.",
"You best be dropping what you just picked up right now .",
"I've got eyes, you thief!",
- "Hey! That belongs to us! Drop it.",
+ "Hey! That belongs to us! Drop it.",
", I've seen a thief!",
- "I saw that! Drop what you just stole!",
+ "I saw that! Drop what you just stole!",
"Thieves will not last long around me , please drop that.",
"Consider this a warning , thieves will not be tolerated, drop it.",
- "You think I'm blind ? Don't touch our stuff.",
+ "You think I'm blind ? Don't touch our stuff.",
"You have one chance to put it back.",
- "Return the stolen goods. You have to the count of three to comply.",
+ "Return the stolen goods. You have to the count of three to comply.",
"You're not leaving here with stolen goods, ."
]
},
@@ -601,8 +613,8 @@
"Drop your weapon, !",
"Put down your !",
"Alright, drop the !",
- "Please put down your weapon. I'll give you to the count of three. One...",
- "Let's take it easy now, okay? Put the weapon down."
+ "Please put down your weapon. I'll give you to the count of three. One…",
+ "Let's take it easy now, okay? Put the weapon down."
]
},
{
@@ -638,7 +650,7 @@
"Wait up, ?",
"Let's talk, !",
"Look, let's talk!",
- "Hey, what's the rush? Let's chat a tad."
+ "Hey, what's the rush? Let's chat a tad."
]
},
{
@@ -688,7 +700,7 @@
"When we eatin'?",
"I'd eat a burger if I had one.",
"Perfect time for a lunch break.",
- "I'm hungry...",
+ "I'm hungry…",
"I'm hungry.",
"I'm hungry.",
"So, , when we eatin'?",
@@ -767,7 +779,7 @@
"I need to get some distance.",
"Fire in the hole, motherfuckers!",
"Bombs away!",
- "Shrapnel, incoming! Watch it!",
+ "Shrapnel, incoming! Watch it!",
"Making some noise!",
"Hit the deck!"
]
@@ -784,7 +796,7 @@
", I'm doomed! There's a ",
", here comes a ",
"Incoming!",
- "Prepare yourself! We have a",
+ "Prepare yourself! We have a",
""
]
},
@@ -872,7 +884,7 @@
"How do we get out of here?",
"Is that the last of them?",
"I'd kill for a coke.",
- "Weapons check everyone. There may be more.",
+ "Weapons check everyone. There may be more.",
"That's that, then.",
"That's the last of them for now.",
"Clearing the world, one at a time",
@@ -968,8 +980,8 @@
"These bandages ain't much, but they will do for now.",
"Hold up, gotta plug this hole in me.",
"Watch my back while I stitch my arm back on .",
- "Gotta bandage this or I'll bleed out. Give me a sec.",
- "I ain't got time to ble-wait, that's a lot of blood. Give me a second while I patch this."
+ "Gotta bandage this or I'll bleed out. Give me a sec.",
+ "I ain't got time to ble-wait, that's a lot of blood. Give me a second while I patch this."
]
},
{
@@ -1032,7 +1044,7 @@
"category": "",
"//": "Complaint when the NPC is near the avatar who is smoking marijuana.",
"text": [
- "Whew... smells like skunk!",
+ "Whew… smells like skunk!",
"Man, that smells like some good shit!",
"Hey, don't bogart the joint!",
"C'mon, , I can smell it, pass it over.",
@@ -1050,14 +1062,14 @@
"category": "",
"//": "Complaint when the NPC is near the avatar who is smoking meth.",
"text": [
- "I don't know... should you really be smoking that stuff?",
+ "I don't know… should you really be smoking that stuff?",
", that's going to ruin your nose.",
"Man, that stinks. Put it out!",
"You're going to kill yourself smoking that stuff, .",
- "Oh, wow, that smell... Can I have some?",
+ "Oh, wow, that smell… Can I have some?",
"Are you sure it's a good idea to smoke that now?",
"I smell heresy.",
- "Seriously? You're smoking that?",
+ "Seriously? You're smoking that?",
"Well that's one way to guarantee the zombies don't kill you.",
"Come on , you're better than this."
]
@@ -1076,7 +1088,7 @@
"I need some batteries to power my CBMs.",
"I can't recharge my CBMs without some batteries.",
"Hey, , can I get some batteries here? I need to recharge.",
- "Internal batteries running low. How many batteries can you spare right now?",
+ "Internal batteries running low. How many batteries can you spare right now?",
"I can do a lot more for you if you pass me a couple batteries to recharge.",
"All these implants I got are going to turn to useless scrap real soon if I don't get some batteries to recharge."
]
@@ -1084,14 +1096,12 @@
{
"type": "snippet",
"category": "",
- "//": "NPC complaint when they are low on CBM power and have an ethanol burner system. Additional versions should continue to specify that the NPC needs alcohol and they need them to recharge their power CBMs.",
+ "//": "NPC complaint when they are low on CBM power and have an ethanol burner system. Additional versions should continue to specify that the NPC needs ethanol or methanol and they need them to recharge their power CBMs.",
"text": [
- "Pass me a beer, I need to power my ethanol burner.",
- "Ethanol burners! The power source that's fun to recharge. Get me a drink, please!",
+ "Pass some ethanol, I need to power my ethanol burner.",
"Waiter! I need a refill, my ethanol burner is running out of charge!",
- "I require ethanol-based drinks for my internal power supply. Anything on you?",
- "Got any alcohol to spare? Need to recharge my drives. Mead, if you have any.",
- "This ethanol-burning power supply is the best implant I ever got. Speaking of which, got some booze to top me off?"
+ "I require ethanol for my internal power supply. Anything on you?",
+ "Got any alcohol to spare? Need to recharge my drives. Methanol, would do."
]
},
{
@@ -1150,8 +1160,8 @@
"Let's talk about something else.",
"Let's change the subject.",
"I'd like to ask you about something else.",
- "Moving on...",
- "Anyway..."
+ "Moving on…",
+ "Anyway…"
]
},
{
@@ -1162,10 +1172,10 @@
"We should probably get going.",
"We'd better get moving.",
"Let's head out.",
- "Time's a-wasting. Let's head out.",
+ "Time's a-wasting. Let's head out.",
"Come on. We got stuff to do.",
"Let's hit the road.",
- "We'll pick this up another time. Let's go.",
+ "We'll pick this up another time. Let's go.",
"Let's put a pin in this chat for now.",
"Talk to you later."
]
@@ -1256,7 +1266,7 @@
"Me go, you stay.",
"Not that way! Go left!",
"!",
- "Retreat! Retreat!",
+ "Retreat! Retreat!",
"Book it!",
"Leg it!",
"Thank fuck for all the cardio!"
@@ -1281,7 +1291,7 @@
"Call the fire department! Wait, they're dead! Run away!",
"This place is on fire. I'm leaving.",
"Put the fire out! Put it out!",
- "Fire bad! !",
+ "Fire bad! !",
"Fire, fire, FIRE!",
"Get an extinguisher!",
"Danger hot!"
diff --git a/data/json/obsolete.json b/data/json/obsolete.json
index 402d6f4d9e530..6671b6357e6bb 100644
--- a/data/json/obsolete.json
+++ b/data/json/obsolete.json
@@ -43,7 +43,7 @@
"name": "Internal Furnace",
"description": "When this bionic is active, you can burn nearly any organic material as fuel (use 'E'), recharging your power level. Some materials will burn better than others.",
"occupied_bodyparts": [ [ "TORSO", 40 ] ],
- "flags": [ "BIONIC_POWER_SOURCE", "BIONIC_TOGGLED" ]
+ "flags": [ "BIONIC_POWER_SOURCE", "BIONIC_TOGGLED", "BIONIC_NPC_USABLE" ]
},
{
"id": "bio_storage",
@@ -404,7 +404,17 @@
"id": "fault_gun_clogged",
"type": "fault",
"name": "Dusty",
- "description": "It's dusty. Has no effect - obsolete fault.",
- "time": "1 s"
+ "description": "It's dusty. Has no effect - obsolete fault.",
+ "mending_methods": [
+ {
+ "id": "mend_fault_gun_clogged",
+ "name": "Wipe clean",
+ "success_msg": "You clean you %s.",
+ "time": "1 s",
+ "skills": [ ],
+ "requirements": { }
+ }
+ ],
+ "flags": [ "SILENT" ]
}
]
diff --git a/data/json/obsolete_terrains.json b/data/json/obsolete_terrains.json
index 92f7922e98a0b..6efe843d24515 100644
--- a/data/json/obsolete_terrains.json
+++ b/data/json/obsolete_terrains.json
@@ -267,7 +267,9 @@
"dairy_farm_NW",
"dairy_farm_NE",
"dairy_farm_SW",
- "dairy_farm_SE"
+ "dairy_farm_SE",
+ "megastore",
+ "megastore_entrance"
]
}
]
diff --git a/data/json/overmap/multitile_city_buildings.json b/data/json/overmap/multitile_city_buildings.json
index 687d4de1f26de..d3f3460264f36 100644
--- a/data/json/overmap/multitile_city_buildings.json
+++ b/data/json/overmap/multitile_city_buildings.json
@@ -15,6 +15,67 @@
{ "point": [ 0, 0, -1 ], "overmap": "basement" }
]
},
+ {
+ "type": "city_building",
+ "id": "house_w_5",
+ "locations": [ "land" ],
+ "overmaps": [
+ { "point": [ 0, 0, 0 ], "overmap": "house_w_5_north" },
+ { "point": [ 0, 0, 1 ], "overmap": "house_w_5_roof_north" },
+ { "point": [ 0, 0, -1 ], "overmap": "basement" }
+ ]
+ },
+ {
+ "type": "city_building",
+ "id": "house_w_6",
+ "locations": [ "land" ],
+ "overmaps": [
+ { "point": [ 0, 0, 0 ], "overmap": "house_w_6_north" },
+ { "point": [ 0, 0, 1 ], "overmap": "house_w_6_2ndfloor_north" },
+ { "point": [ 0, 0, 2 ], "overmap": "house_w_6_roof_north" },
+ { "point": [ 0, 0, -1 ], "overmap": "basement" }
+ ]
+ },
+ {
+ "type": "city_building",
+ "id": "house_w_1",
+ "locations": [ "land" ],
+ "overmaps": [
+ { "point": [ 0, 0, 0 ], "overmap": "house_w_1_north" },
+ { "point": [ 0, 0, 1 ], "overmap": "house_w_1_roof_north" },
+ { "point": [ 0, 0, -1 ], "overmap": "basement" }
+ ]
+ },
+ {
+ "type": "city_building",
+ "id": "house_w_2",
+ "locations": [ "land" ],
+ "overmaps": [
+ { "point": [ 0, 0, 0 ], "overmap": "house_w_2_north" },
+ { "point": [ 0, 0, 1 ], "overmap": "house_w_2_roof_north" },
+ { "point": [ 0, 0, -1 ], "overmap": "basement" }
+ ]
+ },
+ {
+ "type": "city_building",
+ "id": "house_w_3",
+ "locations": [ "land" ],
+ "overmaps": [
+ { "point": [ 0, 0, 0 ], "overmap": "house_w_3_north" },
+ { "point": [ 0, 0, 1 ], "overmap": "house_w_3_roof_north" },
+ { "point": [ 0, 0, -1 ], "overmap": "basement" }
+ ]
+ },
+ {
+ "type": "city_building",
+ "id": "house_w_4",
+ "locations": [ "land" ],
+ "overmaps": [
+ { "point": [ 0, 0, 0 ], "overmap": "house_w_4_north" },
+ { "point": [ 0, 0, 1 ], "overmap": "house_w_4_roof_north" },
+ { "point": [ 0, 0, -1 ], "overmap": "basement" }
+ ]
+ },
{
"type": "city_building",
"id": "s_electronics",
@@ -779,7 +840,7 @@
},
{
"type": "city_building",
- "id": "hotel",
+ "id": "hotel_1",
"locations": [ "land" ],
"overmaps": [
{ "point": [ 1, 0, 0 ], "overmap": "road_end_north" },
@@ -787,11 +848,123 @@
{ "point": [ 1, 1, 0 ], "overmap": "hotel_tower_1_2_north" },
{ "point": [ 2, 1, 0 ], "overmap": "hotel_tower_1_1_north" },
{ "point": [ 0, 2, 0 ], "overmap": "hotel_tower_1_6_north" },
+ { "point": [ 0, 2, 1 ], "overmap": "hotel_tower_flr2_1_6_north" },
+ { "point": [ 0, 2, 2 ], "overmap": "hotel_tower_flr3_1_6_north" },
+ { "point": [ 0, 2, 3 ], "overmap": "hotel_tower_flr4_1_6_north" },
+ { "point": [ 0, 2, 4 ], "overmap": "hotel_tower_roof_1_6_north" },
{ "point": [ 1, 2, 0 ], "overmap": "hotel_tower_1_5_north" },
+ { "point": [ 1, 2, 1 ], "overmap": "hotel_tower_flr2_1_5_north" },
+ { "point": [ 1, 2, 2 ], "overmap": "hotel_tower_flr3_1_5_north" },
+ { "point": [ 1, 2, 3 ], "overmap": "hotel_tower_flr4_1_5_north" },
+ { "point": [ 1, 2, 4 ], "overmap": "hotel_tower_roof_1_5_north" },
+ { "point": [ 2, 2, 0 ], "overmap": "hotel_tower_1_4_north" },
+ { "point": [ 2, 2, 1 ], "overmap": "hotel_tower_flr2_1_4_north" },
+ { "point": [ 2, 2, 2 ], "overmap": "hotel_tower_flr3_1_4_north" },
+ { "point": [ 2, 2, 3 ], "overmap": "hotel_tower_flr4_1_4_north" },
+ { "point": [ 2, 2, 4 ], "overmap": "hotel_tower_roof_1_4_north" },
+ { "point": [ 0, 3, 0 ], "overmap": "hotel_tower_1_9_north" },
+ { "point": [ 0, 3, 1 ], "overmap": "hotel_tower_flr2_1_9_north" },
+ { "point": [ 0, 3, 2 ], "overmap": "hotel_tower_flr3_1_9_north" },
+ { "point": [ 0, 3, 3 ], "overmap": "hotel_tower_flr4_1_9_north" },
+ { "point": [ 0, 3, 4 ], "overmap": "hotel_tower_roof_1_9_north" },
+ { "point": [ 1, 3, 0 ], "overmap": "hotel_tower_1_8_north" },
+ { "point": [ 1, 3, 1 ], "overmap": "hotel_tower_flr2_1_8_north" },
+ { "point": [ 1, 3, 2 ], "overmap": "hotel_tower_flr3_1_8_north" },
+ { "point": [ 1, 3, 3 ], "overmap": "hotel_tower_flr4_1_8_north" },
+ { "point": [ 1, 3, 4 ], "overmap": "hotel_tower_roof_1_8_north" },
+ { "point": [ 2, 3, 0 ], "overmap": "hotel_tower_1_7_north" },
+ { "point": [ 2, 3, 1 ], "overmap": "hotel_tower_flr2_1_7_north" },
+ { "point": [ 2, 3, 2 ], "overmap": "hotel_tower_flr3_1_7_north" },
+ { "point": [ 2, 3, 3 ], "overmap": "hotel_tower_flr4_1_7_north" },
+ { "point": [ 2, 3, 4 ], "overmap": "hotel_tower_roof_1_7_north" },
+ { "point": [ 0, 3, -1 ], "overmap": "hotel_tower_b_3_north" },
+ { "point": [ 1, 3, -1 ], "overmap": "hotel_tower_b_2_north" },
+ { "point": [ 2, 3, -1 ], "overmap": "hotel_tower_b_1_north" }
+ ]
+ },
+ {
+ "type": "city_building",
+ "id": "hotel_2",
+ "locations": [ "land" ],
+ "overmaps": [
+ { "point": [ 1, 0, 0 ], "overmap": "road_end_north" },
+ { "point": [ 0, 1, 0 ], "overmap": "hotel_tower_1_3_north" },
+ { "point": [ 1, 1, 0 ], "overmap": "hotel_tower_1_2_north" },
+ { "point": [ 2, 1, 0 ], "overmap": "hotel_tower_1_1_north" },
+ { "point": [ 0, 2, 0 ], "overmap": "hotel_tower_1_6_north" },
+ { "point": [ 0, 2, 1 ], "overmap": "hotel_tower_flr2_1_6_north" },
+ { "point": [ 0, 2, 2 ], "overmap": "hotel_tower_flr3_1_6_north" },
+ { "point": [ 0, 2, 3 ], "overmap": "hotel_tower_flr4_1_6_north" },
+ { "point": [ 0, 2, 4 ], "overmap": "hotel_tower_roof_1_6_north" },
+ { "point": [ 1, 2, 0 ], "overmap": "hotel_tower_1_5B_north" },
+ { "point": [ 1, 2, 1 ], "overmap": "hotel_tower_flr2_1_5B_north" },
+ { "point": [ 1, 2, 2 ], "overmap": "hotel_tower_flr3_1_5_north" },
+ { "point": [ 1, 2, 3 ], "overmap": "hotel_tower_flr4_1_5_north" },
+ { "point": [ 1, 2, 4 ], "overmap": "hotel_tower_roof_1_5_north" },
+ { "point": [ 2, 2, 0 ], "overmap": "hotel_tower_1_4_north" },
+ { "point": [ 2, 2, 1 ], "overmap": "hotel_tower_flr2_1_4_north" },
+ { "point": [ 2, 2, 2 ], "overmap": "hotel_tower_flr3_1_4_north" },
+ { "point": [ 2, 2, 3 ], "overmap": "hotel_tower_flr4_1_4_north" },
+ { "point": [ 2, 2, 4 ], "overmap": "hotel_tower_roof_1_4_north" },
+ { "point": [ 0, 3, 0 ], "overmap": "hotel_tower_1_9_north" },
+ { "point": [ 0, 3, 1 ], "overmap": "hotel_tower_flr2_1_9_north" },
+ { "point": [ 0, 3, 2 ], "overmap": "hotel_tower_flr3_1_9_north" },
+ { "point": [ 0, 3, 3 ], "overmap": "hotel_tower_flr4_1_9_north" },
+ { "point": [ 0, 3, 4 ], "overmap": "hotel_tower_roof_1_9_north" },
+ { "point": [ 1, 3, 0 ], "overmap": "hotel_tower_1_8_north" },
+ { "point": [ 1, 3, 1 ], "overmap": "hotel_tower_flr2_1_8_north" },
+ { "point": [ 1, 3, 2 ], "overmap": "hotel_tower_flr3_1_8_north" },
+ { "point": [ 1, 3, 3 ], "overmap": "hotel_tower_flr4_1_8_north" },
+ { "point": [ 1, 3, 4 ], "overmap": "hotel_tower_roof_1_8_north" },
+ { "point": [ 2, 3, 0 ], "overmap": "hotel_tower_1_7_north" },
+ { "point": [ 2, 3, 1 ], "overmap": "hotel_tower_flr2_1_7_north" },
+ { "point": [ 2, 3, 2 ], "overmap": "hotel_tower_flr3_1_7_north" },
+ { "point": [ 2, 3, 3 ], "overmap": "hotel_tower_flr4_1_7_north" },
+ { "point": [ 2, 3, 4 ], "overmap": "hotel_tower_roof_1_7_north" },
+ { "point": [ 0, 3, -1 ], "overmap": "hotel_tower_b_3_north" },
+ { "point": [ 1, 3, -1 ], "overmap": "hotel_tower_b_2_north" },
+ { "point": [ 2, 3, -1 ], "overmap": "hotel_tower_b_1_north" }
+ ]
+ },
+ {
+ "type": "city_building",
+ "id": "hotel_3",
+ "locations": [ "land" ],
+ "overmaps": [
+ { "point": [ 1, 0, 0 ], "overmap": "road_end_north" },
+ { "point": [ 0, 1, 0 ], "overmap": "hotel_tower_1_3_north" },
+ { "point": [ 1, 1, 0 ], "overmap": "hotel_tower_1_2_north" },
+ { "point": [ 2, 1, 0 ], "overmap": "hotel_tower_1_1_north" },
+ { "point": [ 0, 2, 0 ], "overmap": "hotel_tower_1_6_north" },
+ { "point": [ 0, 2, 1 ], "overmap": "hotel_tower_flr2_1_6_north" },
+ { "point": [ 0, 2, 2 ], "overmap": "hotel_tower_flr3_1_6_north" },
+ { "point": [ 0, 2, 3 ], "overmap": "hotel_tower_flr4_1_6_north" },
+ { "point": [ 0, 2, 4 ], "overmap": "hotel_tower_roof_1_6_north" },
+ { "point": [ 1, 2, 0 ], "overmap": "hotel_tower_1_5C_north" },
+ { "point": [ 1, 2, 1 ], "overmap": "hotel_tower_flr2_1_5C_north" },
+ { "point": [ 1, 2, 2 ], "overmap": "hotel_tower_flr3_1_5_north" },
+ { "point": [ 1, 2, 3 ], "overmap": "hotel_tower_flr4_1_5_north" },
+ { "point": [ 1, 2, 4 ], "overmap": "hotel_tower_roof_1_5_north" },
{ "point": [ 2, 2, 0 ], "overmap": "hotel_tower_1_4_north" },
+ { "point": [ 2, 2, 1 ], "overmap": "hotel_tower_flr2_1_4_north" },
+ { "point": [ 2, 2, 2 ], "overmap": "hotel_tower_flr3_1_4_north" },
+ { "point": [ 2, 2, 3 ], "overmap": "hotel_tower_flr4_1_4_north" },
+ { "point": [ 2, 2, 4 ], "overmap": "hotel_tower_roof_1_4_north" },
{ "point": [ 0, 3, 0 ], "overmap": "hotel_tower_1_9_north" },
+ { "point": [ 0, 3, 1 ], "overmap": "hotel_tower_flr2_1_9_north" },
+ { "point": [ 0, 3, 2 ], "overmap": "hotel_tower_flr3_1_9_north" },
+ { "point": [ 0, 3, 3 ], "overmap": "hotel_tower_flr4_1_9_north" },
+ { "point": [ 0, 3, 4 ], "overmap": "hotel_tower_roof_1_9_north" },
{ "point": [ 1, 3, 0 ], "overmap": "hotel_tower_1_8_north" },
+ { "point": [ 1, 3, 1 ], "overmap": "hotel_tower_flr2_1_8_north" },
+ { "point": [ 1, 3, 2 ], "overmap": "hotel_tower_flr3_1_8_north" },
+ { "point": [ 1, 3, 3 ], "overmap": "hotel_tower_flr4_1_8_north" },
+ { "point": [ 1, 3, 4 ], "overmap": "hotel_tower_roof_1_8_north" },
{ "point": [ 2, 3, 0 ], "overmap": "hotel_tower_1_7_north" },
+ { "point": [ 2, 3, 1 ], "overmap": "hotel_tower_flr2_1_7_north" },
+ { "point": [ 2, 3, 2 ], "overmap": "hotel_tower_flr3_1_7_north" },
+ { "point": [ 2, 3, 3 ], "overmap": "hotel_tower_flr4_1_7_north" },
+ { "point": [ 2, 3, 4 ], "overmap": "hotel_tower_roof_1_7_north" },
{ "point": [ 0, 3, -1 ], "overmap": "hotel_tower_b_3_north" },
{ "point": [ 1, 3, -1 ], "overmap": "hotel_tower_b_2_north" },
{ "point": [ 2, 3, -1 ], "overmap": "hotel_tower_b_1_north" }
@@ -802,15 +975,44 @@
"id": "megastore",
"locations": [ "land" ],
"overmaps": [
- { "point": [ 0, 0, 0 ], "overmap": "megastore" },
- { "point": [ 1, 0, 0 ], "overmap": "megastore_entrance" },
- { "point": [ 2, 0, 0 ], "overmap": "megastore" },
- { "point": [ 0, 1, 0 ], "overmap": "megastore" },
- { "point": [ 1, 1, 0 ], "overmap": "megastore" },
- { "point": [ 2, 1, 0 ], "overmap": "megastore" },
- { "point": [ 0, 2, 0 ], "overmap": "megastore" },
- { "point": [ 1, 2, 0 ], "overmap": "megastore" },
- { "point": [ 2, 2, 0 ], "overmap": "megastore" }
+ { "point": [ 0, 0, 0 ], "overmap": "megastore_0_0_0_north" },
+ { "point": [ 1, 0, 0 ], "overmap": "megastore_1_0_0_north" },
+ { "point": [ 2, 0, 0 ], "overmap": "megastore_2_0_0_north" },
+ { "point": [ 3, 0, 0 ], "overmap": "megastore_parking_north" },
+ { "point": [ 0, 1, 0 ], "overmap": "megastore_0_1_0_north" },
+ { "point": [ 1, 1, 0 ], "overmap": "megastore_1_1_0_north" },
+ { "point": [ 2, 1, 0 ], "overmap": "megastore_2_1_0_north" },
+ { "point": [ 3, 1, 0 ], "overmap": "megastore_parking_north" },
+ { "point": [ 0, 2, 0 ], "overmap": "megastore_0_2_0_north" },
+ { "point": [ 1, 2, 0 ], "overmap": "megastore_1_2_0_north" },
+ { "point": [ 2, 2, 0 ], "overmap": "megastore_2_2_0_north" },
+ { "point": [ 3, 2, 0 ], "overmap": "megastore_parking_north" },
+ { "point": [ 0, 3, 0 ], "overmap": "megastore_parking_north" },
+ { "point": [ 1, 3, 0 ], "overmap": "megastore_parking_north" },
+ { "point": [ 2, 3, 0 ], "overmap": "megastore_parking_north" },
+ { "point": [ 3, 3, 0 ], "overmap": "megastore_parking_north" },
+ { "point": [ 0, 4, 0 ], "overmap": "megastore_parking_north" },
+ { "point": [ 1, 4, 0 ], "overmap": "megastore_parking_north" },
+ { "point": [ 2, 4, 0 ], "overmap": "megastore_parking_north" },
+ { "point": [ 3, 4, 0 ], "overmap": "megastore_parking_north" },
+ { "point": [ 0, 0, 1 ], "overmap": "megastore_0_0_1_north" },
+ { "point": [ 1, 0, 1 ], "overmap": "megastore_1_0_1_north" },
+ { "point": [ 2, 0, 1 ], "overmap": "megastore_2_0_1_north" },
+ { "point": [ 0, 1, 1 ], "overmap": "megastore_0_1_1_north" },
+ { "point": [ 1, 1, 1 ], "overmap": "megastore_1_1_1_north" },
+ { "point": [ 2, 1, 1 ], "overmap": "megastore_2_1_1_north" },
+ { "point": [ 0, 2, 1 ], "overmap": "megastore_0_2_1_north" },
+ { "point": [ 1, 2, 1 ], "overmap": "megastore_1_2_1_north" },
+ { "point": [ 2, 2, 1 ], "overmap": "megastore_2_2_1_north" },
+ { "point": [ 0, 0, 2 ], "overmap": "megastore_0_0_roof_north" },
+ { "point": [ 1, 0, 2 ], "overmap": "megastore_1_0_roof_north" },
+ { "point": [ 2, 0, 2 ], "overmap": "megastore_2_0_roof_north" },
+ { "point": [ 0, 1, 2 ], "overmap": "megastore_0_1_roof_north" },
+ { "point": [ 1, 1, 2 ], "overmap": "megastore_1_1_roof_north" },
+ { "point": [ 2, 1, 2 ], "overmap": "megastore_2_1_roof_north" },
+ { "point": [ 0, 2, 2 ], "overmap": "megastore_0_2_roof_north" },
+ { "point": [ 1, 2, 2 ], "overmap": "megastore_1_2_roof_north" },
+ { "point": [ 2, 2, 2 ], "overmap": "megastore_2_2_roof_north" }
]
},
{
@@ -1477,14 +1679,23 @@
"locations": [ "land" ],
"overmaps": [
{ "point": [ 0, 0, 0 ], "overmap": "movietheater_0_0_north" },
+ { "point": [ 0, 0, 1 ], "overmap": "movietheater_roof_0_0_north" },
{ "point": [ 1, 0, 0 ], "overmap": "movietheater_1_0_north" },
+ { "point": [ 1, 0, 1 ], "overmap": "movietheater_roof_1_0_north" },
{ "point": [ 2, 0, 0 ], "overmap": "movietheater_2_0_north" },
+ { "point": [ 2, 0, 1 ], "overmap": "movietheater_roof_2_0_north" },
{ "point": [ 0, 1, 0 ], "overmap": "movietheater_0_1_north" },
+ { "point": [ 0, 1, 1 ], "overmap": "movietheater_roof_0_1_north" },
{ "point": [ 1, 1, 0 ], "overmap": "movietheater_1_1_north" },
+ { "point": [ 1, 1, 1 ], "overmap": "movietheater_roof_1_1_north" },
{ "point": [ 2, 1, 0 ], "overmap": "movietheater_2_1_north" },
+ { "point": [ 2, 1, 1 ], "overmap": "movietheater_roof_2_1_north" },
{ "point": [ 0, 2, 0 ], "overmap": "movietheater_0_2_north" },
+ { "point": [ 0, 2, 1 ], "overmap": "movietheater_roof_0_2_north" },
{ "point": [ 1, 2, 0 ], "overmap": "movietheater_1_2_north" },
- { "point": [ 2, 2, 0 ], "overmap": "movietheater_2_2_north" }
+ { "point": [ 1, 2, 1 ], "overmap": "movietheater_roof_1_2_north" },
+ { "point": [ 2, 2, 0 ], "overmap": "movietheater_2_2_north" },
+ { "point": [ 2, 2, 1 ], "overmap": "movietheater_roof_2_2_north" }
]
},
{
diff --git a/data/json/overmap/overmap_special/specials.json b/data/json/overmap/overmap_special/specials.json
index 721b924757e93..5114a8e66ba5a 100644
--- a/data/json/overmap/overmap_special/specials.json
+++ b/data/json/overmap/overmap_special/specials.json
@@ -276,7 +276,9 @@
"id": "Farm_2side",
"overmaps": [
{ "point": [ 0, 0, 0 ], "overmap": "2farm_4_north" },
+ { "point": [ 0, 0, 1 ], "overmap": "2farm_roof_4_north" },
{ "point": [ 1, 0, 0 ], "overmap": "2farm_3_north" },
+ { "point": [ 1, 0, 1 ], "overmap": "2farm_roof_3_north" },
{ "point": [ 2, 0, 0 ], "overmap": "2farm_2_north" },
{ "point": [ 3, 0, 0 ], "overmap": "2farm_1_north" },
{ "point": [ 0, 1, 0 ], "overmap": "2farm_8_north" },
@@ -285,10 +287,12 @@
{ "point": [ 3, 1, 0 ], "overmap": "2farm_5_north" },
{ "point": [ 0, 3, 0 ], "overmap": "2farm_12_north" },
{ "point": [ 1, 3, 0 ], "overmap": "2farm_11_north" },
+ { "point": [ 1, 3, 1 ], "overmap": "2farm_roof_11_north" },
{ "point": [ 2, 3, 0 ], "overmap": "2farm_10_north" },
{ "point": [ 3, 3, 0 ], "overmap": "2farm_9_north" },
{ "point": [ 0, 4, 0 ], "overmap": "2farm_16_north" },
{ "point": [ 1, 4, 0 ], "overmap": "2farm_15_north" },
+ { "point": [ 1, 4, 1 ], "overmap": "2farm_roof_15_north" },
{ "point": [ 2, 4, 0 ], "overmap": "2farm_14_north" },
{ "point": [ 3, 4, 0 ], "overmap": "2farm_13_north" }
],
@@ -3595,7 +3599,9 @@
"id": "junkyard",
"overmaps": [
{ "point": [ 0, 0, 0 ], "overmap": "junkyard_1a_north" },
+ { "point": [ 0, 0, 1 ], "overmap": "junkyard_roof_1a_north" },
{ "point": [ 1, 0, 0 ], "overmap": "junkyard_1b_north" },
+ { "point": [ 1, 0, 1 ], "overmap": "junkyard_roof_1b_north" },
{ "point": [ 0, 1, 0 ], "overmap": "junkyard_2a_north" },
{ "point": [ 1, 1, 0 ], "overmap": "junkyard_2b_north" }
],
@@ -3773,14 +3779,23 @@
"id": "Movie Theater",
"overmaps": [
{ "point": [ 0, 0, 0 ], "overmap": "movietheater_0_0_north" },
+ { "point": [ 0, 0, 1 ], "overmap": "movietheater_roof_0_0_north" },
{ "point": [ 1, 0, 0 ], "overmap": "movietheater_1_0_north" },
+ { "point": [ 1, 0, 1 ], "overmap": "movietheater_roof_1_0_north" },
{ "point": [ 2, 0, 0 ], "overmap": "movietheater_2_0_north" },
+ { "point": [ 2, 0, 1 ], "overmap": "movietheater_roof_2_0_north" },
{ "point": [ 0, 1, 0 ], "overmap": "movietheater_0_1_north" },
+ { "point": [ 0, 1, 1 ], "overmap": "movietheater_roof_0_1_north" },
{ "point": [ 1, 1, 0 ], "overmap": "movietheater_1_1_north" },
+ { "point": [ 1, 1, 1 ], "overmap": "movietheater_roof_1_1_north" },
{ "point": [ 2, 1, 0 ], "overmap": "movietheater_2_1_north" },
+ { "point": [ 2, 1, 1 ], "overmap": "movietheater_roof_2_1_north" },
{ "point": [ 0, 2, 0 ], "overmap": "movietheater_0_2_north" },
+ { "point": [ 0, 2, 1 ], "overmap": "movietheater_roof_0_2_north" },
{ "point": [ 1, 2, 0 ], "overmap": "movietheater_1_2_north" },
- { "point": [ 2, 2, 0 ], "overmap": "movietheater_2_2_north" }
+ { "point": [ 1, 2, 1 ], "overmap": "movietheater_roof_1_2_north" },
+ { "point": [ 2, 2, 0 ], "overmap": "movietheater_2_2_north" },
+ { "point": [ 2, 2, 1 ], "overmap": "movietheater_roof_2_2_north" }
],
"connections": [ { "point": [ 1, -1, 0 ], "terrain": "road" } ],
"locations": [ "land" ],
@@ -3984,18 +3999,40 @@
{ "point": [ 1, 1, 0 ], "overmap": "robofachq_surface_b1_north" },
{ "point": [ 2, 1, 0 ], "overmap": "robofachq_surface_b2_north" },
{ "point": [ 3, 1, 0 ], "overmap": "robofachq_surface_b3_north" },
- { "point": [ 0, 0, -2 ], "overmap": "robofachq_hab_a0_north" },
- { "point": [ 1, 0, -2 ], "overmap": "robofachq_hab_a1_north" },
- { "point": [ 2, 0, -2 ], "overmap": "robofachq_hab_a2_north" },
- { "point": [ 3, 0, -2 ], "overmap": "robofachq_hab_a3_north" },
- { "point": [ 0, 1, -2 ], "overmap": "robofachq_hab_b0_north" },
- { "point": [ 1, 1, -2 ], "overmap": "robofachq_hab_b1_north" },
- { "point": [ 2, 1, -2 ], "overmap": "robofachq_hab_b2_north" },
- { "point": [ 3, 1, -2 ], "overmap": "robofachq_hab_b3_north" },
- { "point": [ 0, 0, -4 ], "overmap": "robofachq_sub_a0_north" },
- { "point": [ 1, 0, -4 ], "overmap": "robofachq_sub_a1_north" },
- { "point": [ 2, 0, -4 ], "overmap": "robofachq_sub_a2_north" },
- { "point": [ 3, 0, -4 ], "overmap": "robofachq_sub_a3_north" },
+ { "point": [ 1, -2, -2 ], "overmap": "microlab_sub_connector_north" },
+ { "point": [ 0, -1, -2 ], "overmap": "robofachq_sub_a0_north" },
+ { "point": [ 1, -1, -2 ], "overmap": "robofachq_sub_a1_north" },
+ { "point": [ 2, -1, -2 ], "overmap": "robofachq_sub_a2_north" },
+ { "point": [ 3, -1, -2 ], "overmap": "robofachq_sub_a3_north" },
+ { "point": [ 0, 0, -2 ], "overmap": "robofachq_exe_a0_north" },
+ { "point": [ 1, 0, -2 ], "overmap": "robofachq_exe_a1_north" },
+ { "point": [ 2, 0, -2 ], "overmap": "robofachq_exe_a2_north" },
+ { "point": [ 3, 0, -2 ], "overmap": "robofachq_exe_a3_north" },
+ { "point": [ 0, 1, -2 ], "overmap": "robofachq_exe_b0_north" },
+ { "point": [ 1, 1, -2 ], "overmap": "robofachq_exe_b1_north" },
+ { "point": [ 2, 1, -2 ], "overmap": "robofachq_exe_b2_north" },
+ { "point": [ 3, 1, -2 ], "overmap": "robofachq_exe_b3_north" },
+ { "point": [ 0, 0, -3 ], "overmap": "robofachq_hab_a0_north" },
+ { "point": [ 1, 0, -3 ], "overmap": "robofachq_hab_a1_north" },
+ { "point": [ 2, 0, -3 ], "overmap": "robofachq_hab_a2_north" },
+ { "point": [ 3, 0, -3 ], "overmap": "robofachq_hab_a3_north" },
+ { "point": [ 0, 1, -3 ], "overmap": "robofachq_hab_b0_north" },
+ { "point": [ 1, 1, -3 ], "overmap": "robofachq_hab_b1_north" },
+ { "point": [ 2, 1, -3 ], "overmap": "robofachq_hab_b2_north" },
+ { "point": [ 3, 1, -3 ], "overmap": "robofachq_hab_b3_north" },
+ { "point": [ 1, -2, -4 ], "overmap": "microlab_sub_connector_north" },
+ { "point": [ 0, -1, -4 ], "overmap": "robofachq_sub_a0_north" },
+ { "point": [ 1, -1, -4 ], "overmap": "robofachq_sub_a1_north" },
+ { "point": [ 2, -1, -4 ], "overmap": "robofachq_sub_a2_north" },
+ { "point": [ 3, -1, -4 ], "overmap": "robofachq_sub_a3_north" },
+ { "point": [ 0, 0, -4 ], "overmap": "robofachq_res_a0_north" },
+ { "point": [ 1, 0, -4 ], "overmap": "robofachq_res_a1_north" },
+ { "point": [ 2, 0, -4 ], "overmap": "robofachq_res_a2_north" },
+ { "point": [ 3, 0, -4 ], "overmap": "robofachq_res_a3_north" },
+ { "point": [ 0, 1, -4 ], "overmap": "robofachq_res_b0_north" },
+ { "point": [ 1, 1, -4 ], "overmap": "robofachq_res_b1_north" },
+ { "point": [ 2, 1, -4 ], "overmap": "robofachq_res_b2_north" },
+ { "point": [ 3, 1, -4 ], "overmap": "robofachq_res_b3_north" },
{ "point": [ 0, 0, -6 ], "overmap": "robofachq_ai_a0_north" },
{ "point": [ 1, 0, -6 ], "overmap": "robofachq_ai_a1_north" },
{ "point": [ 2, 0, -6 ], "overmap": "robofachq_ai_a2_north" },
@@ -4021,6 +4058,7 @@
"city_distance": [ 3, -1 ],
"city_sizes": [ 1, 16 ],
"occurrences": [ 1, 1 ],
+ "rotate": false,
"flags": [ "UNIQUE" ]
},
{
@@ -6061,7 +6099,7 @@
"city_distance": [ 20, -1 ],
"city_sizes": [ 1, 20 ],
"occurrences": [ 0, 1 ],
- "flags": [ "CLASSIC", "UNIQUE" ]
+ "flags": [ "CLASSIC" ]
},
{
"id": "airliner_crashed",
@@ -6252,5 +6290,25 @@
"city_sizes": [ 3, 12 ],
"occurrences": [ 0, 1 ],
"flags": [ "CLASSIC" ]
+ },
+ {
+ "type": "overmap_special",
+ "id": "miniature railway",
+ "overmaps": [
+ { "point": [ 0, 0, 0 ], "overmap": "miniaturerailway_0_0_0_north" },
+ { "point": [ 0, 1, 0 ], "overmap": "miniaturerailway_0_1_0_north" },
+ { "point": [ 1, 0, 0 ], "overmap": "miniaturerailway_1_0_0_north" },
+ { "point": [ 1, 1, 0 ], "overmap": "miniaturerailway_1_1_0_north" },
+ { "point": [ 0, 0, 1 ], "overmap": "miniaturerailway_0_0_1_north" },
+ { "point": [ 0, 1, 1 ], "overmap": "miniaturerailway_0_1_1_north" },
+ { "point": [ 1, 0, 1 ], "overmap": "miniaturerailway_1_0_1_north" },
+ { "point": [ 1, 1, 1 ], "overmap": "miniaturerailway_1_1_1_north" }
+ ],
+ "locations": [ "wilderness", "land" ],
+ "connections": [ { "point": [ 1, -1, 0 ], "terrain": "road", "connection": "local_road", "from": [ 1, 1, 0 ] } ],
+ "city_distance": [ 10, 100 ],
+ "city_sizes": [ 3, 12 ],
+ "occurrences": [ 0, 1 ],
+ "flags": [ "CLASSIC" ]
}
]
diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_agricultural.json b/data/json/overmap/overmap_terrain/overmap_terrain_agricultural.json
index 095597733e130..fa61b0a75aeb9 100644
--- a/data/json/overmap/overmap_terrain/overmap_terrain_agricultural.json
+++ b/data/json/overmap/overmap_terrain/overmap_terrain_agricultural.json
@@ -237,6 +237,16 @@
"extras": "field",
"mondensity": 2
},
+ {
+ "type": "overmap_terrain",
+ "id": "2farm_roof_3",
+ "name": "farm",
+ "sym": "#",
+ "color": "i_brown",
+ "see_cost": 5,
+ "extras": "field",
+ "mondensity": 2
+ },
{
"type": "overmap_terrain",
"id": "2farm_4",
@@ -247,6 +257,16 @@
"extras": "field",
"mondensity": 2
},
+ {
+ "type": "overmap_terrain",
+ "id": "2farm_roof_4",
+ "name": "farm",
+ "sym": "#",
+ "color": "i_brown",
+ "see_cost": 5,
+ "extras": "field",
+ "mondensity": 2
+ },
{
"type": "overmap_terrain",
"id": "2farm_5",
@@ -318,6 +338,16 @@
"mondensity": 2,
"flags": [ "SOURCE_FOOD", "SOURCE_SAFETY", "RISK_LOW", "SOURCE_FARMING" ]
},
+ {
+ "type": "overmap_terrain",
+ "id": "2farm_roof_11",
+ "name": "farm house",
+ "sym": "^",
+ "color": "i_brown",
+ "see_cost": 5,
+ "extras": "field",
+ "mondensity": 2
+ },
{
"type": "overmap_terrain",
"id": "2farm_12",
@@ -358,6 +388,16 @@
"extras": "field",
"mondensity": 2
},
+ {
+ "type": "overmap_terrain",
+ "id": "2farm_roof_15",
+ "name": "farm field",
+ "sym": "#",
+ "color": "i_brown",
+ "see_cost": 5,
+ "extras": "field",
+ "mondensity": 2
+ },
{
"type": "overmap_terrain",
"id": "2farm_16",
diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_commercial.json b/data/json/overmap/overmap_terrain/overmap_terrain_commercial.json
index a704de3c765bf..bc95887c2e749 100644
--- a/data/json/overmap/overmap_terrain/overmap_terrain_commercial.json
+++ b/data/json/overmap/overmap_terrain/overmap_terrain_commercial.json
@@ -1291,16 +1291,68 @@
},
{
"type": "overmap_terrain",
- "id": "megastore_entrance",
+ "id": "megastore_parking",
+ "name": "megastore parking lot",
+ "sym": "O",
+ "color": "dark_gray",
+ "extras": "build",
+ "see_cost": 5,
+ "mondensity": 2,
+ "spawns": { "group": "GROUP_VANILLA", "population": [ 4, 12 ], "chance": 100 }
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_0_0",
+ "name": "megastore",
+ "sym": "M",
+ "color": "blue",
+ "extras": "build",
+ "see_cost": 2,
+ "mondensity": 2,
+ "spawns": { "group": "GROUP_VANILLA", "population": [ 10, 20 ], "chance": 100 }
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_0_0",
+ "copy-from": "megastore_0_0_0"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_0_0",
+ "copy-from": "megastore_0_0_0"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_1_0",
+ "copy-from": "megastore_0_0_0"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_1_0",
+ "copy-from": "megastore_0_0_0"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_1_0",
+ "copy-from": "megastore_0_0_0"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_2_0",
+ "copy-from": "megastore_0_0_0"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_2_0",
"name": "megastore",
"sym": "+",
"color": "light_blue",
- "see_cost": 5,
"extras": "build",
+ "see_cost": 5,
"mondensity": 2,
+ "spawns": { "group": "GROUP_VANILLA", "population": [ 10, 20 ], "chance": 100 },
"flags": [
"SIDEWALK",
- "NO_ROTATE",
"RISK_HIGH",
"SOURCE_FOOD",
"SOURCE_DRINK",
@@ -1320,14 +1372,108 @@
},
{
"type": "overmap_terrain",
- "id": "megastore",
- "name": "megastore",
+ "id": "megastore_2_2_0",
+ "copy-from": "megastore_0_0_0"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_0_1",
+ "name": "megastore, second floor",
"sym": "M",
"color": "blue",
- "see_cost": 5,
"extras": "build",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_0_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_0_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_1_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_1_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_1_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_2_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_2_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_2_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_0_roof",
+ "name": "megastore roof",
+ "sym": "M",
+ "color": "blue",
+ "extras": "build",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_0_roof",
+ "copy-from": "megastore_0_0_roof"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_0_roof",
+ "copy-from": "megastore_0_0_roof"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_1_roof",
+ "copy-from": "megastore_0_0_roof"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_1_roof",
+ "copy-from": "megastore_0_0_roof",
"mondensity": 2,
- "flags": [ "SIDEWALK", "NO_ROTATE" ]
+ "spawns": { "group": "GROUP_VANILLA", "population": [ 8, 12 ], "chance": 100 }
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_1_roof",
+ "copy-from": "megastore_0_0_roof"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_2_roof",
+ "copy-from": "megastore_0_0_roof"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_2_roof",
+ "copy-from": "megastore_0_0_roof"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_2_roof",
+ "copy-from": "megastore_0_0_roof"
},
{
"type": "overmap_terrain",
@@ -1361,6 +1507,38 @@
"sym": "h",
"color": "light_blue"
},
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr2_1_4",
+ "copy-from": "generic_city_building",
+ "name": "hotel parking",
+ "sym": "h",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr3_1_4",
+ "copy-from": "generic_city_building",
+ "name": "hotel parking",
+ "sym": "h",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr4_1_4",
+ "copy-from": "generic_city_building",
+ "name": "hotel parking",
+ "sym": "h",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_roof_1_4",
+ "copy-from": "generic_city_building",
+ "name": "hotel",
+ "sym": "h",
+ "color": "light_blue"
+ },
{
"type": "overmap_terrain",
"id": "hotel_tower_1_5",
@@ -1369,14 +1547,110 @@
"sym": "H",
"color": "light_blue"
},
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr2_1_5",
+ "copy-from": "generic_city_building",
+ "name": "hotel",
+ "sym": "h",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr3_1_5",
+ "copy-from": "generic_city_building",
+ "name": "hotel",
+ "sym": "h",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr4_1_5",
+ "copy-from": "generic_city_building",
+ "name": "hotel",
+ "sym": "h",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_roof_1_5",
+ "copy-from": "generic_city_building",
+ "name": "hotel entrance",
+ "sym": "H",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_1_5B",
+ "copy-from": "generic_city_building",
+ "name": "hotel entrance",
+ "sym": "H",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr2_1_5B",
+ "copy-from": "generic_city_building",
+ "name": "hotel",
+ "sym": "h",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_1_5C",
+ "copy-from": "generic_city_building",
+ "name": "hotel entrance",
+ "sym": "H",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr2_1_5C",
+ "copy-from": "generic_city_building",
+ "name": "hotel",
+ "sym": "h",
+ "color": "light_blue"
+ },
{
"type": "overmap_terrain",
"id": "hotel_tower_1_6",
"copy-from": "generic_city_building",
+ "name": "hotel",
+ "sym": "h",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr2_1_6",
+ "copy-from": "generic_city_building",
+ "name": "hotel parking",
+ "sym": "h",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr3_1_6",
+ "copy-from": "generic_city_building",
+ "name": "hotel parking",
+ "sym": "h",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr4_1_6",
+ "copy-from": "generic_city_building",
"name": "hotel parking",
"sym": "h",
"color": "light_blue"
},
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_roof_1_6",
+ "copy-from": "generic_city_building",
+ "name": "hotel",
+ "sym": "h",
+ "color": "light_blue"
+ },
{
"type": "overmap_terrain",
"id": "hotel_tower_1_7",
@@ -1385,6 +1659,38 @@
"sym": "H",
"color": "light_blue"
},
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr2_1_7",
+ "copy-from": "generic_city_building",
+ "name": "hotel tower",
+ "sym": "H",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr3_1_7",
+ "copy-from": "generic_city_building",
+ "name": "hotel tower",
+ "sym": "H",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr4_1_7",
+ "copy-from": "generic_city_building",
+ "name": "hotel tower",
+ "sym": "H",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_roof_1_7",
+ "copy-from": "generic_city_building",
+ "name": "hotel tower",
+ "sym": "H",
+ "color": "light_blue"
+ },
{
"type": "overmap_terrain",
"id": "hotel_tower_1_8",
@@ -1393,6 +1699,38 @@
"sym": "H",
"color": "light_blue"
},
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr2_1_8",
+ "copy-from": "generic_city_building",
+ "name": "hotel tower",
+ "sym": "H",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr3_1_8",
+ "copy-from": "generic_city_building",
+ "name": "hotel tower",
+ "sym": "H",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr4_1_8",
+ "copy-from": "generic_city_building",
+ "name": "hotel tower",
+ "sym": "H",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_roof_1_8",
+ "copy-from": "generic_city_building",
+ "name": "hotel tower",
+ "sym": "H",
+ "color": "light_blue"
+ },
{
"type": "overmap_terrain",
"id": "hotel_tower_1_9",
@@ -1401,6 +1739,38 @@
"sym": "H",
"color": "light_blue"
},
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr2_1_9",
+ "copy-from": "generic_city_building",
+ "name": "hotel tower",
+ "sym": "H",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr3_1_9",
+ "copy-from": "generic_city_building",
+ "name": "hotel tower",
+ "sym": "H",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_flr4_1_9",
+ "copy-from": "generic_city_building",
+ "name": "hotel tower",
+ "sym": "H",
+ "color": "light_blue"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "hotel_tower_roof_1_9",
+ "copy-from": "generic_city_building",
+ "name": "hotel tower",
+ "sym": "H",
+ "color": "light_blue"
+ },
{
"type": "overmap_terrain",
"id": "hotel_tower_b_1",
diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_faction_base.json b/data/json/overmap/overmap_terrain/overmap_terrain_faction_base.json
index 4eb7af736282c..58f367dbc327a 100644
--- a/data/json/overmap/overmap_terrain/overmap_terrain_faction_base.json
+++ b/data/json/overmap/overmap_terrain/overmap_terrain_faction_base.json
@@ -8,6 +8,15 @@
"see_cost": 5,
"flags": [ "NO_ROTATE", "SOURCE_PEOPLE" ]
},
+ {
+ "type": "overmap_terrain",
+ "id": "faction_base_camp_new_0",
+ "name": "survivor camp",
+ "sym": "+",
+ "color": "white",
+ "see_cost": 5,
+ "flags": [ "SOURCE_PEOPLE" ]
+ },
{
"type": "overmap_terrain",
"id": "faction_base_camp_1",
@@ -461,7 +470,7 @@
{
"type": "overmap_terrain",
"id": "faction_base_workshop_0",
- "name": "store survey",
+ "name": "fabrication workshop survey",
"sym": "+",
"color": "cyan",
"see_cost": 5,
@@ -596,12 +605,21 @@
{
"type": "overmap_terrain",
"id": "faction_base_storehouse_0",
- "name": "store survey",
+ "name": "store house survey",
"sym": "+",
"color": "cyan",
"see_cost": 5,
"flags": [ "NO_ROTATE" ]
},
+ {
+ "type": "overmap_terrain",
+ "id": "faction_base_saltworks_0",
+ "name": "saltworks survey",
+ "sym": "+",
+ "color": "red",
+ "see_cost": 5,
+ "flags": [ "NO_ROTATE" ]
+ },
{
"type": "overmap_terrain",
"id": "faction_base_canteen_0",
diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_recreational.json b/data/json/overmap/overmap_terrain/overmap_terrain_recreational.json
index bacdccdda0fe0..84f2bc3848232 100644
--- a/data/json/overmap/overmap_terrain/overmap_terrain_recreational.json
+++ b/data/json/overmap/overmap_terrain/overmap_terrain_recreational.json
@@ -514,6 +514,70 @@
"mondensity": 2,
"flags": [ "SOURCE_GUN", "SOURCE_AMMO" ]
},
+ {
+ "type": "overmap_terrain",
+ "id": "miniaturerailway_0_0_0",
+ "copy-from": "generic_city_building_no_sidewalk",
+ "name": "miniature railway",
+ "sym": "R",
+ "color": "green"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "miniaturerailway_0_1_0",
+ "copy-from": "generic_city_building_no_sidewalk",
+ "name": "miniature railway",
+ "sym": "R",
+ "color": "green"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "miniaturerailway_1_0_0",
+ "copy-from": "generic_city_building_no_sidewalk",
+ "name": "miniature railway",
+ "sym": "R",
+ "color": "green"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "miniaturerailway_1_1_0",
+ "copy-from": "generic_city_building_no_sidewalk",
+ "name": "miniature railway",
+ "sym": "R",
+ "color": "green"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "miniaturerailway_0_0_1",
+ "copy-from": "generic_city_building_no_sidewalk",
+ "name": "miniature railway",
+ "sym": "R",
+ "color": "green"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "miniaturerailway_0_1_1",
+ "copy-from": "generic_city_building_no_sidewalk",
+ "name": "miniature railway",
+ "sym": "R",
+ "color": "green"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "miniaturerailway_1_0_1",
+ "copy-from": "generic_city_building_no_sidewalk",
+ "name": "miniature railway",
+ "sym": "R",
+ "color": "green"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "miniaturerailway_1_1_1",
+ "copy-from": "generic_city_building_no_sidewalk",
+ "name": "miniature railway",
+ "sym": "R",
+ "color": "green"
+ },
{
"type": "overmap_terrain",
"id": "golfcourse_00",
@@ -1018,6 +1082,78 @@
"sym": "M",
"color": "i_yellow"
},
+ {
+ "type": "overmap_terrain",
+ "id": "movietheater_roof_0_0",
+ "copy-from": "generic_city_building",
+ "name": "movie theater",
+ "sym": "M",
+ "color": "i_yellow"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "movietheater_roof_1_0",
+ "copy-from": "generic_city_building",
+ "name": "movie theater entrance",
+ "sym": "M",
+ "color": "i_yellow"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "movietheater_roof_2_0",
+ "copy-from": "generic_city_building",
+ "name": "movie theater",
+ "sym": "M",
+ "color": "i_yellow"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "movietheater_roof_0_1",
+ "copy-from": "generic_city_building",
+ "name": "movie theater",
+ "sym": "M",
+ "color": "i_yellow"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "movietheater_roof_1_1",
+ "name": "movie theater",
+ "copy-from": "generic_city_building",
+ "sym": "M",
+ "color": "i_yellow"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "movietheater_roof_2_1",
+ "copy-from": "generic_city_building",
+ "name": "movie theater",
+ "sym": "M",
+ "color": "i_yellow"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "movietheater_roof_0_2",
+ "copy-from": "generic_city_building",
+ "name": "movie theater",
+ "sym": "M",
+ "color": "i_yellow"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "movietheater_roof_1_2",
+ "copy-from": "generic_city_building",
+ "name": "movie theater",
+ "sym": "M",
+ "color": "i_yellow"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "movietheater_roof_2_2",
+ "copy-from": "generic_city_building",
+ "name": "movie theater",
+ "sym": "M",
+ "color": "i_yellow"
+ },
{
"type": "overmap_terrain",
"id": "paintball_field",
diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_residential.json b/data/json/overmap/overmap_terrain/overmap_terrain_residential.json
index 37e780595c692..13c20b0b7c1de 100644
--- a/data/json/overmap/overmap_terrain/overmap_terrain_residential.json
+++ b/data/json/overmap/overmap_terrain/overmap_terrain_residential.json
@@ -363,6 +363,14 @@
"see_cost": 2,
"flags": [ "SIDEWALK", "GENERIC_LOOT" ]
},
+ {
+ "type": "overmap_terrain",
+ "id": "house_w_2_roof",
+ "name": "house",
+ "copy-from": "generic_city_building",
+ "color": "light_green",
+ "see_cost": 2
+ },
{
"type": "overmap_terrain",
"id": "house_w_3",
@@ -372,6 +380,14 @@
"see_cost": 2,
"flags": [ "SIDEWALK", "GENERIC_LOOT" ]
},
+ {
+ "type": "overmap_terrain",
+ "id": "house_w_3_roof",
+ "name": "house",
+ "copy-from": "generic_city_building",
+ "color": "light_green",
+ "see_cost": 2
+ },
{
"type": "overmap_terrain",
"id": "house_w_4",
@@ -381,6 +397,14 @@
"see_cost": 2,
"flags": [ "SIDEWALK", "GENERIC_LOOT" ]
},
+ {
+ "type": "overmap_terrain",
+ "id": "house_w_4_roof",
+ "name": "house",
+ "copy-from": "generic_city_building",
+ "color": "light_green",
+ "see_cost": 2
+ },
{
"type": "overmap_terrain",
"id": "house_w_5",
@@ -390,6 +414,40 @@
"see_cost": 2,
"flags": [ "SIDEWALK", "GENERIC_LOOT" ]
},
+ {
+ "type": "overmap_terrain",
+ "id": "house_w_5_roof",
+ "name": "house",
+ "copy-from": "generic_city_building",
+ "color": "light_green",
+ "see_cost": 2
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "house_w_6",
+ "name": "house",
+ "copy-from": "generic_city_building",
+ "color": "light_green",
+ "see_cost": 2,
+ "flags": [ "SIDEWALK", "GENERIC_LOOT" ]
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "house_w_6_2ndfloor",
+ "name": "house",
+ "copy-from": "generic_city_building",
+ "color": "light_green",
+ "see_cost": 2,
+ "flags": [ "SIDEWALK", "GENERIC_LOOT" ]
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "house_w_6_roof",
+ "name": "house",
+ "copy-from": "generic_city_building",
+ "color": "light_green",
+ "see_cost": 2
+ },
{
"type": "overmap_terrain",
"id": "emptyresidentiallot",
@@ -435,5 +493,13 @@
"color": "light_green",
"see_cost": 2,
"flags": [ "SIDEWALK", "GENERIC_LOOT" ]
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "house_w_1_roof",
+ "name": "house",
+ "copy-from": "generic_city_building",
+ "color": "light_green",
+ "see_cost": 2
}
]
diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_robofachq.json b/data/json/overmap/overmap_terrain/overmap_terrain_robofachq.json
index 1b2421f404ae8..1f1457c87cd2b 100644
--- a/data/json/overmap/overmap_terrain/overmap_terrain_robofachq.json
+++ b/data/json/overmap/overmap_terrain/overmap_terrain_robofachq.json
@@ -93,6 +93,70 @@
"color": "light_blue",
"see_cost": 5
},
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_exe_a0",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_exe_a1",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_exe_a2",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_exe_a3",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_exe_b0",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_exe_b1",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_exe_b2",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_exe_b3",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
{
"type": "overmap_terrain",
"id": "robofachq_hab_a0",
@@ -189,6 +253,70 @@
"color": "light_blue",
"see_cost": 5
},
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_res_a0",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_res_a1",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_res_a2",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_res_a3",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_res_b0",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_res_b1",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_res_b2",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "robofachq_res_b3",
+ "name": "hub 01",
+ "sym": "0",
+ "color": "light_blue",
+ "see_cost": 5
+ },
{
"type": "overmap_terrain",
"id": "robofachq_ai_a0",
diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_waste_junk.json b/data/json/overmap/overmap_terrain/overmap_terrain_waste_junk.json
index c89e3dd8bd0dd..425a35682b766 100644
--- a/data/json/overmap/overmap_terrain/overmap_terrain_waste_junk.json
+++ b/data/json/overmap/overmap_terrain/overmap_terrain_waste_junk.json
@@ -290,6 +290,15 @@
"color": "i_brown",
"flags": [ "SOURCE_FABRICATION", "SOURCE_CONSTRUCTION", "SOURCE_VEHICLES" ]
},
+ {
+ "type": "overmap_terrain",
+ "id": "junkyard_roof_1a",
+ "copy-from": "generic_city_building",
+ "name": "junkyard",
+ "sym": "J",
+ "color": "i_brown",
+ "flags": [ "SOURCE_FABRICATION", "SOURCE_CONSTRUCTION", "SOURCE_VEHICLES" ]
+ },
{
"type": "overmap_terrain",
"id": "junkyard_1b",
@@ -299,6 +308,15 @@
"color": "i_brown",
"flags": [ "SOURCE_FABRICATION", "SOURCE_CONSTRUCTION", "SOURCE_VEHICLES" ]
},
+ {
+ "type": "overmap_terrain",
+ "id": "junkyard_roof_1b",
+ "copy-from": "generic_city_building",
+ "name": "junkyard",
+ "sym": "J",
+ "color": "i_brown",
+ "flags": [ "SOURCE_FABRICATION", "SOURCE_CONSTRUCTION", "SOURCE_VEHICLES" ]
+ },
{
"type": "overmap_terrain",
"id": "junkyard_2a",
diff --git a/data/json/player_activities.json b/data/json/player_activities.json
index 24edb789ea0e1..edcf74fee6472 100644
--- a/data/json/player_activities.json
+++ b/data/json/player_activities.json
@@ -31,6 +31,8 @@
"activity_level": "ACTIVE_EXERCISE",
"verb": "constructing",
"based_on": "neither",
+ "suspendable": false,
+ "no_resume": true,
"multi_activity": true
},
{
@@ -129,6 +131,7 @@
"activity_level": "MODERATE_EXERCISE",
"verb": "disassembly",
"suspendable": false,
+ "rooted": true,
"based_on": "speed",
"refuel_fires": true
},
@@ -282,6 +285,13 @@
"rooted": true,
"based_on": "time"
},
+ {
+ "id": "ACT_HEATING",
+ "type": "activity_type",
+ "activity_level": "NO_EXERCISE",
+ "verb": "heating",
+ "based_on": "time"
+ },
{
"id": "ACT_VIBE",
"type": "activity_type",
@@ -358,15 +368,6 @@
"verb": "sorting out the loot",
"based_on": "neither"
},
- {
- "id": "ACT_TILL_PLOT",
- "type": "activity_type",
- "activity_level": "ACTIVE_EXERCISE",
- "verb": "tilling the farm plot",
- "suspendable": false,
- "based_on": "neither",
- "no_resume": true
- },
{
"id": "ACT_FETCH_REQUIRED",
"type": "activity_type",
@@ -386,24 +387,6 @@
"no_resume": true,
"multi_activity": true
},
- {
- "id": "ACT_PLANT_PLOT",
- "type": "activity_type",
- "activity_level": "MODERATE_EXERCISE",
- "verb": "planting seeds",
- "suspendable": false,
- "based_on": "neither",
- "no_resume": true
- },
- {
- "id": "ACT_HARVEST_PLOT",
- "type": "activity_type",
- "activity_level": "ACTIVE_EXERCISE",
- "verb": "harvesting plots",
- "suspendable": false,
- "based_on": "neither",
- "no_resume": true
- },
{
"id": "ACT_FERTILIZE_PLOT",
"type": "activity_type",
@@ -488,7 +471,6 @@
"activity_level": "NO_EXERCISE",
"verb": "trying to start the vehicle",
"suspendable": false,
- "rooted": true,
"based_on": "time"
},
{
@@ -503,6 +485,7 @@
"type": "activity_type",
"activity_level": "NO_EXERCISE",
"verb": "cracking",
+ "rooted": true,
"based_on": "speed"
},
{
@@ -510,6 +493,7 @@
"type": "activity_type",
"activity_level": "NO_EXERCISE",
"verb": "repairing",
+ "rooted": true,
"based_on": "neither",
"refuel_fires": true
},
@@ -518,6 +502,7 @@
"type": "activity_type",
"activity_level": "NO_EXERCISE",
"verb": "mending",
+ "rooted": true,
"based_on": "speed",
"refuel_fires": true
},
@@ -575,6 +560,7 @@
"type": "activity_type",
"activity_level": "MODERATE_EXERCISE",
"verb": "washing",
+ "rooted": true,
"based_on": "speed"
},
{
@@ -646,6 +632,7 @@
"type": "activity_type",
"activity_level": "NO_EXERCISE",
"verb": "shaving",
+ "rooted": true,
"based_on": "speed"
},
{
@@ -653,6 +640,7 @@
"type": "activity_type",
"activity_level": "NO_EXERCISE",
"verb": "cutting your hair",
+ "rooted": true,
"based_on": "speed"
},
{
@@ -721,6 +709,7 @@
"activity_level": "NO_EXERCISE",
"verb": "eating",
"suspendable": false,
+ "rooted": true,
"based_on": "neither",
"no_resume": true
},
@@ -730,6 +719,7 @@
"activity_level": "NO_EXERCISE",
"verb": "consuming",
"suspendable": false,
+ "rooted": true,
"based_on": "neither",
"no_resume": true
},
@@ -776,6 +766,7 @@
"type": "activity_type",
"activity_level": "NO_EXERCISE",
"verb": "using the mind splicer",
+ "rooted": true,
"based_on": "speed",
"no_resume": true
},
diff --git a/data/json/professions.json b/data/json/professions.json
index 24b9942ebb796..c0f3b41ec4644 100644
--- a/data/json/professions.json
+++ b/data/json/professions.json
@@ -94,6 +94,84 @@
"id": "shotgun_d_roadwarrior",
"entries": [ { "item": "shotgun_d", "ammo-item": "reloaded_shot_00", "contents-item": [ "barrel_small" ] } ]
},
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "quiver_bow_hunter",
+ "entries": [ { "item": "arrow_cf", "charges": 8 } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "quiver_crossbow_hunter",
+ "entries": [ { "item": "bolt_metal", "charges": 9 } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "bandolier_shotgun_hunter",
+ "entries": [ { "item": "shot_00", "charges": 18 } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "bandolier_rifle_hunter",
+ "entries": [ { "item": "270win_jsp", "charges": 16 } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "bandolier_swat_cqc1",
+ "entries": [ { "item": "shot_00", "charges": 12 } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "bandolier_swat_cqc2",
+ "entries": [ { "item": "shot_slug", "charges": 12 } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "quiver_bionic_prepper",
+ "entries": [ { "item": "bolt_steel", "charges": 20 } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "quiver_naturalist",
+ "entries": [ { "item": "arrow_wood", "charges": 20 } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "bandolier_ww_gunslinger",
+ "entries": [ { "item": "45colt_jhp", "charges": 18 } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "quiver_winter_surivor",
+ "entries": [ { "item": "bolt_wood", "charges": 29 } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "bandolier_roadwarrior",
+ "entries": [ { "item": "reloaded_shot_00", "charges": 18 } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "bandolier_waste_ranger",
+ "entries": [ { "item": "reloaded_shot_00", "charges": 19 } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "quiver_waste_ranger",
+ "entries": [ { "item": "bolt_steel", "charges": 12 } ]
+ },
{
"type": "profession_item_substitutions",
"substitutions": [
@@ -270,7 +348,7 @@
],
"entries": [
{ "item": "crossbow", "ammo-item": "bolt_steel", "charges": 1, "contents-item": "shoulder_strap" },
- { "item": "bolt_steel", "charges": 20, "container-item": "quiver" },
+ { "item": "quiver", "contents-group": "quiver_bionic_prepper" },
{ "item": "machete", "container-item": "scabbard" }
]
},
@@ -746,7 +824,8 @@
"entries": [
{ "group": "charged_cell_phone" },
{ "item": "glock_19", "ammo-item": "9mm", "container-item": "sholster", "charges": 15 },
- { "item": "9mm", "charges": 35 },
+ { "item": "glockmag", "ammo-item": "9mm", "charges": 15 },
+ { "item": "glockmag", "ammo-item": "9mm", "charges": 15 },
{ "item": "lighter", "charges": 100 }
]
},
@@ -767,7 +846,8 @@
{ "group": "charged_cell_phone" },
{ "group": "charged_flashlight" },
{ "item": "m9", "ammo-item": "9mm", "charges": 15, "container-item": "holster" },
- { "item": "9mm", "charges": 35 }
+ { "item": "m9mag", "ammo-item": "9mm", "charges": 15 },
+ { "item": "m9mag", "ammo-item": "9mm", "charges": 15 }
]
},
"male": [ "boxer_shorts" ],
@@ -1084,8 +1164,8 @@
"entries": [
{ "group": "charged_two_way_radio" },
{ "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
- { "item": "shot_00", "charges": 12, "container-item": "bandolier_shotgun" },
- { "item": "shot_slug", "charges": 12, "container-item": "bandolier_shotgun" },
+ { "item": "bandolier_shotgun", "contents-group": "bandolier_swat_cqc1" },
+ { "item": "bandolier_shotgun", "contents-group": "bandolier_swat_cqc2" },
{ "item": "legpouch_large", "contents-group": "army_mags_usp9" },
{ "item": "usp_9mm", "ammo-item": "9mmfmj", "charges": 15, "container-item": "sholster" },
{ "item": "baton-extended", "container-item": "police_belt" },
@@ -1212,7 +1292,7 @@
],
"entries": [
{ "group": "charged_cell_phone" },
- { "item": "quiver", "charges": 8, "contents-item": "arrow_cf" },
+ { "item": "quiver", "contents-group": "quiver_bow_hunter" },
{ "item": "sheath", "contents-item": "knife_hunting" }
]
},
@@ -1233,7 +1313,7 @@
"entries": [
{ "group": "charged_cell_phone" },
{ "item": "crossbow", "ammo-item": "bolt_metal", "charges": 1, "contents-item": "shoulder_strap" },
- { "item": "bolt_metal", "charges": 9, "container-item": "quiver" },
+ { "item": "quiver", "contents-group": "quiver_crossbow_hunter" },
{ "item": "sheath", "contents-item": "knife_hunting" }
]
},
@@ -1255,7 +1335,7 @@
{ "group": "charged_cell_phone" },
{ "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
{ "item": "shotgun_d", "ammo-item": "shot_00", "charges": 2, "contents-item": "shoulder_strap" },
- { "item": "shot_00", "charges": 18, "container-item": "bandolier_shotgun" },
+ { "item": "bandolier_shotgun", "contents-group": "bandolier_shotgun_hunter" },
{ "item": "sheath", "contents-item": "knife_hunting" }
]
},
@@ -1277,7 +1357,7 @@
{ "group": "charged_cell_phone" },
{ "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
{ "item": "remington700_270", "ammo-item": "270win_jsp", "charges": 4, "contents-item": "shoulder_strap" },
- { "item": "270win_jsp", "charges": 16, "container-item": "bandolier_rifle" },
+ { "item": "bandolier_rifle", "contents-group": "bandolier_rifle_hunter" },
{ "item": "sheath", "contents-item": "knife_hunting" }
]
},
@@ -1414,7 +1494,7 @@
"name": "Shower Victim",
"description": "You were in the middle of a nice, hot shower when the cataclysm struck! You barely managed to escape with some soap and the most massively useful thing ever... a towel.",
"points": -1,
- "items": { "both": [ "soap", "towel_wet" ] }
+ "items": { "both": { "items": [ "towel_wet" ], "entries": [ { "item": "soap", "custom-flags": [ "auto_wield" ] } ] } }
},
{
"type": "profession",
@@ -1760,7 +1840,12 @@
{ "group": "charged_two_way_radio" },
{ "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
{ "item": "sheath", "contents-item": "knife_combat" },
- { "item": "h&k416a5", "ammo-item": "556", "contents-item": [ "shoulder_strap", "acog_scope" ] },
+ {
+ "item": "h&k416a5",
+ "ammo-item": "556",
+ "charges": 30,
+ "contents-item": [ "shoulder_strap", "acog_scope" ]
+ },
{ "item": "modularvestceramic", "contents-group": "army_mags_m4" }
]
},
@@ -1820,6 +1905,7 @@
{
"item": "m2010",
"ammo-item": "300_winmag",
+ "charges": 5,
"contents-item": [ "shoulder_strap", "rifle_scope", "bipod" ]
},
{ "item": "usp_45", "ammo-item": "45_acp", "charges": 12, "container-item": "holster" },
@@ -2018,7 +2104,10 @@
"description": "All you ever wanted was to make people laugh. Dropping out of school and performing at kids' parties was a dream come true until the world ended. There's precious few balloon animals in your future now.",
"points": -1,
"items": {
- "both": { "items": [ "clown_suit", "socks", "clownshoes", "airhorn" ], "entries": [ { "group": "charged_cell_phone" } ] },
+ "both": {
+ "items": [ "clown_wig", "clown_suit", "clown_nose", "socks", "clownshoes", "airhorn" ],
+ "entries": [ { "group": "charged_cell_phone" } ]
+ },
"male": [ "briefs" ],
"female": [ "bra", "panties" ]
}
@@ -2615,18 +2704,20 @@
"traits": [ "PROF_BOXER" ],
"skills": [ { "level": 2, "name": "melee" }, { "level": 2, "name": "unarmed" }, { "level": 2, "name": "dodge" } ],
"items": {
- "both": [
- "under_armor_shorts",
- "under_armor",
- "shorts",
- "gloves_wraps",
- "boxing_gloves",
- "headgear",
- "mouthpiece",
- "socks",
- "boots",
- "towel"
- ],
+ "both": {
+ "items": [
+ "under_armor_shorts",
+ "under_armor",
+ "shorts",
+ "gloves_wraps",
+ "boxing_gloves",
+ "headgear",
+ "mouthpiece",
+ "socks",
+ "boots"
+ ],
+ "entries": [ { "item": "towel", "custom-flags": [ "no_auto_equip" ] } ]
+ },
"female": [ "sports_bra" ]
}
},
@@ -2820,8 +2911,8 @@
"entries": [
{ "item": "medium_battery_cell", "ammo-item": "battery", "charges": 500, "container-item": "mess_kit" },
{ "item": "kukri", "container-item": "sheath" },
- { "item": "crossbow", "ammo-item": "bolt_wood", "contents-item": "shoulder_strap" },
- { "item": "bolt_wood", "charges": 29, "container-item": "quiver_large" }
+ { "item": "crossbow", "ammo-item": "bolt_wood", "charges": 1, "contents-item": "shoulder_strap" },
+ { "item": "quiver_large", "contents-group": "quiver_winter_surivor" }
]
},
"male": [ "boxer_shorts" ],
@@ -2953,7 +3044,7 @@
{ "item": "knife_combat", "container-item": "sheath" },
{ "item": "gasoline_cooker", "ammo-item": "gasoline", "charges": 500 },
{ "item": "XL_holster", "contents-group": "shotgun_d_roadwarrior" },
- { "item": "reloaded_shot_00", "charges": 18, "container-item": "bandolier_shotgun" },
+ { "item": "bandolier_shotgun", "contents-group": "bandolier_roadwarrior" },
{ "item": "light_battery_cell", "charges": 100, "container-item": "wearable_light" }
]
},
@@ -2995,9 +3086,9 @@
"entries": [
{ "item": "knife_trench", "container-item": "sheath" },
{ "item": "ashot", "ammo-item": "reloaded_shot_00", "container-item": "holster" },
- { "item": "reloaded_shot_00", "charges": 19, "container-item": "bandolier_shotgun" },
+ { "item": "bandolier_shotgun", "contents-group": "bandolier_waste_ranger" },
{ "item": "helsing", "ammo-item": "bolt_steel", "contents-item": "shoulder_strap" },
- { "item": "bolt_steel", "charges": 12, "container-item": "quiver" },
+ { "item": "quiver", "contents-group": "quiver_waste_ranger" },
{ "item": "survivor_mess_kit", "charges": [ 20, 30 ] }
]
},
@@ -3037,8 +3128,7 @@
"heavy_flashlight",
"knuckle_steel",
"ref_lighter",
- "wristwatch",
- "mess_kit"
+ "wristwatch"
],
"entries": [
{
@@ -3047,6 +3137,7 @@
"charges": 50,
"contents-item": [ "shoulder_strap", "folding_stock" ]
},
+ { "item": "medium_battery_cell", "ammo-item": "battery", "charges": 500, "container-item": "mess_kit" },
{ "item": "makeshift_machete", "container-item": "scabbard" },
{ "item": "nailmag", "ammo-item": "combatnail", "charges": 50, "container-item": "chestpouch" }
]
@@ -3109,7 +3200,7 @@
],
"entries": [
{ "item": "primitive_knife", "container-item": "sheath" },
- { "item": "arrow_wood", "charges": 20, "container-item": "quiver" }
+ { "item": "quiver", "contents-group": "quiver_naturalist" }
]
},
"male": [ "chestwrap_fur", "loincloth_fur" ],
@@ -3226,7 +3317,6 @@
"hat_fur",
"purse",
"oil_lamp",
- "needle_wood",
"pot",
"cornmeal",
"salt"
@@ -3246,6 +3336,7 @@
"entries": [
{ "item": "rifle_flintlock", "ammo-item": "flintlock_ammo", "charges": 1, "contents-item": "shoulder_strap" },
{ "item": "flintlock_ammo", "charges": 14, "container-item": "flintlock_pouch" },
+ { "item": "needle_wood", "charges": 50 },
{ "item": "flintlock_ammo", "charges": 15 }
]
}
@@ -3530,7 +3621,6 @@
"rollmat",
"sleeping_bag_roll",
"knife_swissarmy",
- "mess_kit",
"gasoline_lantern",
"canteen",
"granola",
@@ -3538,7 +3628,10 @@
"wristwatch",
"1st_aid"
],
- "entries": [ { "group": "charged_cell_phone" } ]
+ "entries": [
+ { "group": "charged_cell_phone" },
+ { "item": "medium_battery_cell", "ammo-item": "battery", "charges": 500, "container-item": "mess_kit" }
+ ]
},
"male": [ "briefs" ],
"female": [ "sports_bra", "boy_shorts" ]
@@ -3559,7 +3652,6 @@
"knee_pads",
"jumpsuit",
"mask_gas",
- "jackhammer",
"canteen",
"e_tool",
"tool_belt",
@@ -3569,6 +3661,7 @@
],
"entries": [
{ "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
+ { "item": "jackhammer", "charges": 400 },
{ "item": "light_minus_disposable_cell", "charges": 100 },
{ "item": "light_minus_disposable_cell", "charges": 100, "container-item": "miner_hat" }
]
@@ -3764,23 +3857,25 @@
"skills": [ { "level": 8, "name": "firstaid" } ],
"traits": [ "PROF_MED" ],
"items": {
- "both": [
- "gloves_medical",
- "socks",
- "mask_dust",
- "dress_shirt",
- "pants",
- "dress_shoes",
- "coat_lab",
- "stethoscope",
- "bfipowder",
- "antibiotics",
- "oxycodone",
- "1st_aid",
- "smart_phone",
- "wristwatch",
- "medium_battery_cell"
- ],
+ "both": {
+ "items": [
+ "gloves_medical",
+ "socks",
+ "mask_dust",
+ "dress_shirt",
+ "pants",
+ "dress_shoes",
+ "coat_lab",
+ "stethoscope",
+ "bfipowder",
+ "antibiotics",
+ "oxycodone",
+ "1st_aid",
+ "smart_phone",
+ "wristwatch"
+ ],
+ "entries": [ { "item": "medium_battery_cell", "charges": 500 } ]
+ },
"male": [ "boxer_shorts" ],
"female": [ "bra", "panties" ]
}
@@ -3800,6 +3895,32 @@
"female": [ "chestwrap" ]
}
},
+ {
+ "type": "profession",
+ "ident": "fencer",
+ "name": "Competetive Fencer",
+ "description": "You were an avid sport fencer, always practicing at local clubs and competing in tournaments. You were on your way to have a few bouts at the club when the world ended. Now you're in your most important tournament, the refs are all dead, and none of your opponents follow the rules.",
+ "points": 5,
+ "skills": [ { "level": 2, "name": "melee" }, { "level": 2, "name": "dodge" } ],
+ "traits": [ "MARTIAL_FENCING" ],
+ "items": {
+ "both": {
+ "items": [
+ "fencing_pants",
+ "fencing_jacket",
+ "gauntlet_fencing",
+ "plastron_cotton",
+ "under_armor_shorts",
+ "socks",
+ "sneakers",
+ "fencing_epee",
+ "duffelbag"
+ ],
+ "entries": [ { "item": "fencing_mask", "custom-flags": [ "no_auto_equip" ] }, { "group": "charged_cell_phone" } ]
+ },
+ "female": [ "plastron_plastic" ]
+ }
+ },
{
"type": "profession",
"ident": "politician",
@@ -3934,7 +4055,7 @@
],
"entries": [
{ "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
- { "item": "45colt_jhp", "charges": 18, "container-item": "bandolier_pistol" },
+ { "item": "bandolier_pistol", "contents-group": "bandolier_ww_gunslinger" },
{ "item": "whiskey", "container-item": "bottle_glass" },
{ "item": "colt_saa", "ammo-item": "45colt_jhp", "charges": 6, "container-item": "sholster" }
]
diff --git a/data/json/recipes/ammo/pistol.json b/data/json/recipes/ammo/pistol.json
index bc3a2e40381a2..d4c9dee7dea06 100644
--- a/data/json/recipes/ammo/pistol.json
+++ b/data/json/recipes/ammo/pistol.json
@@ -287,6 +287,22 @@
"using": [ [ "bullet_forming", 2 ], [ "ammo_bullet", 2 ], [ "ammo_380", 1 ] ],
"components": [ [ [ "chem_black_powder", 3 ] ], [ [ "copper", 1 ] ] ]
},
+ {
+ "result": "bp_57mm",
+ "type": "recipe",
+ "category": "CC_AMMO",
+ "subcategory": "CSC_AMMO_PISTOL",
+ "skill_used": "fabrication",
+ "difficulty": 3,
+ "skills_required": [ "gun", 1 ],
+ "time": "2 m",
+ "batch_time_factors": [ 60, 5 ],
+ "book_learn": [ [ "manual_pistol", 2 ], [ "manual_smg", 2 ], [ "recipe_bullets", 3 ] ],
+ "charges": 1,
+ "reversible": true,
+ "using": [ [ "bullet_forming", 2 ], [ "ammo_bullet", 2 ], [ "ammo_57", 1 ] ],
+ "components": [ [ [ "chem_black_powder", 3 ] ], [ [ "copper", 1 ] ] ]
+ },
{
"result": "36navy",
"type": "recipe",
@@ -398,6 +414,38 @@
"using": [ [ "bullet_forming", 2 ], [ "ammo_bullet", 2 ], [ "ammo_38super", 1 ] ],
"components": [ [ [ "gunpowder", 3 ], [ "gunpowder_pistol", 3 ], [ "gunpowder_shotgun", 3 ] ] ]
},
+ {
+ "result": "reloaded_357sig_fmj",
+ "type": "recipe",
+ "category": "CC_AMMO",
+ "subcategory": "CSC_AMMO_PISTOL",
+ "skill_used": "fabrication",
+ "difficulty": 3,
+ "skills_required": [ "gun", 1 ],
+ "time": "2 m",
+ "batch_time_factors": [ 60, 5 ],
+ "book_learn": [ [ "manual_pistol", 3 ], [ "recipe_bullets", 4 ] ],
+ "charges": 1,
+ "reversible": true,
+ "using": [ [ "bullet_forming", 2 ], [ "ammo_bullet", 2 ], [ "ammo_357sig", 1 ] ],
+ "components": [ [ [ "gunpowder", 5 ], [ "gunpowder_rifle", 5 ], [ "gunpowder_magnum_pistol", 5 ] ], [ [ "copper", 1 ] ] ]
+ },
+ {
+ "result": "reloaded_357sig_jhp",
+ "type": "recipe",
+ "category": "CC_AMMO",
+ "subcategory": "CSC_AMMO_PISTOL",
+ "skill_used": "fabrication",
+ "difficulty": 3,
+ "skills_required": [ "gun", 1 ],
+ "time": "2 m",
+ "batch_time_factors": [ 60, 5 ],
+ "book_learn": [ [ "manual_pistol", 3 ], [ "recipe_bullets", 4 ] ],
+ "charges": 1,
+ "reversible": true,
+ "using": [ [ "bullet_forming", 2 ], [ "ammo_bullet", 2 ], [ "ammo_357sig", 1 ] ],
+ "components": [ [ [ "gunpowder", 5 ], [ "gunpowder_rifle", 5 ], [ "gunpowder_magnum_pistol", 5 ] ] ]
+ },
{
"result": "reloaded_357mag_fmj",
"type": "recipe",
diff --git a/data/json/recipes/ammo/weldgas.json b/data/json/recipes/ammo/weldgas.json
index bf2243904d22d..f99e15b3cff12 100644
--- a/data/json/recipes/ammo/weldgas.json
+++ b/data/json/recipes/ammo/weldgas.json
@@ -23,7 +23,7 @@
"charges": 12,
"book_learn": [ [ "textbook_chemistry", 4 ], [ "textbook_gaswarfare", 5 ], [ "atomic_survival", 3 ] ],
"tools": [ [ [ "acetylene_machine", -1 ] ] ],
- "components": [ [ [ "water", 12 ], [ "water_clean", 12 ] ], [ [ "chem_carbide", 48 ] ] ]
+ "components": [ [ [ "water", 12 ], [ "water_clean", 12 ] ], [ [ "chem_carbide", 326 ] ] ]
},
{
"result": "tinyweldtank",
diff --git a/data/json/recipes/armor/arms.json b/data/json/recipes/armor/arms.json
index 998cbe037d785..2ba0bc4b57a17 100644
--- a/data/json/recipes/armor/arms.json
+++ b/data/json/recipes/armor/arms.json
@@ -34,7 +34,7 @@
"difficulty": 5,
"time": "30 m",
"autolearn": true,
- "components": [ [ [ "string_36", 1 ], [ "string_6", 4 ] ], [ [ "chitin_piece", 4 ] ] ]
+ "components": [ [ [ "string_36", 1 ], [ "string_6", 4 ] ], [ [ "chitin_piece", 12 ] ] ]
},
{
"result": "armguard_acidchitin",
@@ -47,7 +47,7 @@
"time": "60 m",
"autolearn": true,
"qualities": [ { "id": "CUT_FINE", "level": 1 }, { "id": "SEW", "level": 1 } ],
- "components": [ [ [ "string_36", 1 ], [ "string_6", 4 ] ], [ [ "acidchitin_piece", 6 ] ] ]
+ "components": [ [ [ "string_36", 1 ], [ "string_6", 4 ] ], [ [ "acidchitin_piece", 12 ] ] ]
},
{
"result": "armguard_hard",
@@ -83,12 +83,10 @@
"difficulty": 7,
"time": "180 m",
"book_learn": [ [ "textbook_armwest", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
- "components": [
- [ [ "steel_lump", 6 ], [ "steel_chunk", 24 ] ],
- [ [ "fur", 6 ], [ "tanned_pelt", 1 ], [ "leather", 6 ], [ "tanned_hide", 1 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 24 ], [ "steel_standard", 6 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "fur", 6 ], [ "tanned_pelt", 1 ], [ "leather", 6 ], [ "tanned_hide", 1 ] ] ]
},
{
"result": "armguard_metal",
@@ -100,9 +98,8 @@
"time": "30 m",
"autolearn": true,
"book_learn": [ [ "recipe_melee", 3 ] ],
- "using": [ [ "cordage", 1 ] ],
- "qualities": [ { "id": "HAMMER", "level": 2 } ],
- "components": [ [ [ "steel_chunk", 2 ], [ "scrap", 6 ] ] ]
+ "using": [ [ "cordage", 1 ], [ "steel_tiny", 2 ] ],
+ "qualities": [ { "id": "HAMMER", "level": 2 } ]
},
{
"result": "armguard_paper",
diff --git a/data/json/recipes/armor/feet.json b/data/json/recipes/armor/feet.json
index 5f5b3eb907e4a..eafe9d04be58c 100644
--- a/data/json/recipes/armor/feet.json
+++ b/data/json/recipes/armor/feet.json
@@ -33,7 +33,7 @@
"time": "40 m",
"autolearn": true,
"using": [ [ "cordage", 1 ] ],
- "components": [ [ [ "chitin_piece", 8 ] ], [ [ "leather", 4 ], [ "fur", 4 ], [ "rag", 4 ] ] ]
+ "components": [ [ [ "chitin_piece", 20 ] ], [ [ "leather", 4 ], [ "fur", 4 ], [ "rag", 4 ] ] ]
},
{
"result": "boots_acidchitin",
@@ -47,7 +47,7 @@
"autolearn": true,
"using": [ [ "cordage", 1 ] ],
"qualities": [ { "id": "CUT_FINE", "level": 1 }, { "id": "SEW", "level": 1 } ],
- "components": [ [ [ "acidchitin_piece", 12 ] ], [ [ "leather", 4 ], [ "fur", 4 ], [ "rag", 4 ] ] ]
+ "components": [ [ [ "acidchitin_piece", 20 ] ], [ [ "leather", 4 ], [ "fur", 4 ], [ "rag", 4 ] ] ]
},
{
"result": "boots_fsurvivor",
@@ -164,12 +164,10 @@
"difficulty": 5,
"time": "8 h",
"book_learn": [ [ "textbook_armwest", 4 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 250 ], [ "oxy_torch", 50 ] ] ],
- "components": [
- [ [ "steel_lump", 8 ], [ "steel_chunk", 32 ], [ "scrap", 96 ] ],
- [ [ "fur", 16 ], [ "tanned_pelt", 3 ], [ "leather", 16 ], [ "tanned_hide", 3 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 32 ], [ "steel_standard", 8 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "fur", 16 ], [ "tanned_pelt", 3 ], [ "leather", 16 ], [ "tanned_hide", 3 ] ] ]
},
{
"result": "boots_scrap",
@@ -487,5 +485,17 @@
"using": [ [ "sewing_standard", 10 ] ],
"tools": [ [ [ "soldering_iron", 5 ], [ "welder", 5 ], [ "hotplate", 5 ], [ "toolset", 5 ] ] ],
"components": [ [ [ "neoprene", 2 ] ], [ [ "rag", 2 ] ] ]
+ },
+ {
+ "result": "chainmail_feet",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_FEET",
+ "skill_used": "fabrication",
+ "difficulty": 7,
+ "time": "20 m",
+ "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ],
+ "using": [ [ "chainmail_standard", 2 ] ],
+ "components": [ [ [ "link_sheet", 2 ] ], [ [ "chain_link", 50 ] ], [ [ "wire", 1 ] ], [ [ "rag", 4 ] ] ]
}
]
diff --git a/data/json/recipes/armor/hands.json b/data/json/recipes/armor/hands.json
index ff130c20358c7..649b6e51b8c26 100644
--- a/data/json/recipes/armor/hands.json
+++ b/data/json/recipes/armor/hands.json
@@ -8,7 +8,7 @@
"difficulty": 4,
"time": "30 m",
"autolearn": true,
- "components": [ [ [ "string_36", 1 ], [ "string_6", 4 ] ], [ [ "chitin_piece", 4 ] ] ]
+ "components": [ [ [ "string_36", 1 ], [ "string_6", 4 ] ], [ [ "chitin_piece", 10 ] ] ]
},
{
"result": "gauntlets_acidchitin",
@@ -21,7 +21,7 @@
"time": "1 h",
"autolearn": true,
"qualities": [ { "id": "CUT_FINE", "level": 1 }, { "id": "SEW", "level": 1 } ],
- "components": [ [ [ "string_36", 1 ], [ "string_6", 4 ] ], [ [ "acidchitin_piece", 6 ] ] ]
+ "components": [ [ [ "string_36", 1 ], [ "string_6", 4 ] ], [ [ "acidchitin_piece", 10 ] ] ]
},
{
"result": "gauntlets_larmor",
@@ -228,6 +228,17 @@
]
]
},
+ {
+ "result": "gloves_survivor_fingerless",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_HANDS",
+ "skill_used": "tailor",
+ "time": "16 m",
+ "autolearn": true,
+ "qualities": [ { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "gloves_lsurvivor", 1 ] ] ]
+ },
{
"result": "gloves_plate",
"type": "recipe",
@@ -237,9 +248,9 @@
"difficulty": 6,
"time": "7 h",
"book_learn": [ [ "textbook_armwest", 5 ] ],
- "using": [ [ "forging_standard", 15 ], [ "steel_standard", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 300 ], [ "oxy_torch", 60 ] ] ],
+ "using": [ [ "blacksmithing_standard", 24 ], [ "steel_standard", 6 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
"components": [ [ [ "fur", 10 ], [ "tanned_pelt", 2 ], [ "leather", 10 ], [ "tanned_hide", 2 ] ] ]
},
{
@@ -446,5 +457,17 @@
"using": [ [ "sewing_standard", 5 ] ],
"tools": [ [ [ "soldering_iron", 3 ], [ "welder", 3 ], [ "hotplate", 3 ], [ "toolset", 3 ] ] ],
"components": [ [ [ "neoprene", 1 ] ], [ [ "rag", 1 ] ] ]
+ },
+ {
+ "result": "chainmail_hands",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_HANDS",
+ "skill_used": "fabrication",
+ "difficulty": 7,
+ "time": "20 m",
+ "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ],
+ "using": [ [ "chainmail_standard", 2 ] ],
+ "components": [ [ [ "link_sheet", 2 ] ], [ [ "chain_link", 50 ] ], [ [ "wire", 1 ] ], [ [ "rag", 4 ] ] ]
}
]
diff --git a/data/json/recipes/armor/head.json b/data/json/recipes/armor/head.json
index 6cbe5d9a80a9f..462dfb0a859dd 100644
--- a/data/json/recipes/armor/head.json
+++ b/data/json/recipes/armor/head.json
@@ -116,10 +116,50 @@
"difficulty": 6,
"time": "10 h",
"book_learn": [ [ "jewelry_book", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
+ "using": [ [ "blacksmithing_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
"components": [ [ [ "gold_small", 300 ] ] ]
},
+ {
+ "type": "recipe",
+ "result": "drinking_hat",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_HEAD",
+ "skill_used": "fabrication",
+ "difficulty": 1,
+ "time": "5 m",
+ "reversible": true,
+ "autolearn": true,
+ "using": [ [ "cordage_short", 2 ] ],
+ "components": [
+ [
+ [ "can_drink_unsealed", 1 ],
+ [ "can_food_unsealed", 1 ],
+ [ "canister_empty", 1 ],
+ [ "bottle_plastic_small", 1 ],
+ [ "sippy_cup", 1 ],
+ [ "clay_canister", 1 ],
+ [ "flask_glass", 1 ],
+ [ "beaker", 1 ],
+ [ "flask_hip", 1 ]
+ ],
+ [
+ [ "can_drink_unsealed", 1 ],
+ [ "can_food_unsealed", 1 ],
+ [ "canister_empty", 1 ],
+ [ "bottle_plastic_small", 1 ],
+ [ "sippy_cup", 1 ],
+ [ "clay_canister", 1 ],
+ [ "flask_glass", 1 ],
+ [ "beaker", 1 ],
+ [ "flask_hip", 1 ]
+ ],
+ [ [ "wire", 1 ] ],
+ [ [ "hose", 1 ] ]
+ ],
+ "flags": [ "BLIND_HARD" ]
+ },
{
"result": "fur_cat_ears",
"type": "recipe",
@@ -309,9 +349,9 @@
"difficulty": 6,
"time": "9 h",
"book_learn": [ [ "textbook_armwest", 5 ] ],
- "using": [ [ "forging_standard", 15 ], [ "steel_standard", 10 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "using": [ [ "blacksmithing_standard", 40 ], [ "steel_standard", 10 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [ [ [ "fur", 4 ], [ "leather", 4 ] ] ]
},
{
@@ -323,7 +363,7 @@
"difficulty": 6,
"time": "1 h",
"autolearn": true,
- "components": [ [ [ "string_36", 1 ], [ "string_6", 5 ] ], [ [ "chitin_piece", 5 ] ] ]
+ "components": [ [ [ "string_36", 1 ], [ "string_6", 5 ] ], [ [ "chitin_piece", 12 ] ] ]
},
{
"result": "helmet_conical",
@@ -334,9 +374,9 @@
"difficulty": 6,
"time": "7 h 12 m",
"book_learn": [ [ "textbook_armschina", 5 ] ],
- "using": [ [ "sewing_standard", 18 ], [ "forging_standard", 3 ], [ "steel_standard", 2 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "using": [ [ "sewing_standard", 18 ], [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [ [ [ "fur", 6 ], [ "tanned_pelt", 1 ] ] ]
},
{
@@ -350,7 +390,7 @@
"time": "2 h",
"autolearn": true,
"qualities": [ { "id": "CUT_FINE", "level": 1 }, { "id": "SEW", "level": 1 } ],
- "components": [ [ [ "string_36", 1 ], [ "string_6", 5 ] ], [ [ "acidchitin_piece", 8 ] ] ]
+ "components": [ [ [ "string_36", 1 ], [ "string_6", 5 ] ], [ [ "acidchitin_piece", 12 ] ] ]
},
{
"result": "helmet_galea",
@@ -361,9 +401,9 @@
"difficulty": 7,
"time": "7 h 12 m",
"book_learn": [ [ "textbook_armwest", 5 ] ],
- "using": [ [ "forging_standard", 3 ], [ "steel_standard", 2 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [ [ [ "fur", 4 ], [ "leather", 4 ] ] ]
},
{
@@ -407,9 +447,9 @@
"difficulty": 9,
"time": "10 h",
"book_learn": [ [ "textbook_armeast", 8 ] ],
- "using": [ [ "forging_standard", 23 ], [ "steel_standard", 12 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "using": [ [ "blacksmithing_standard", 48 ], [ "steel_standard", 12 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [ [ [ "fur", 14 ], [ "tanned_pelt", 2 ], [ "leather", 14 ], [ "tanned_hide", 2 ] ], [ [ "rag", 4 ] ] ]
},
{
@@ -433,9 +473,9 @@
"difficulty": 5,
"time": "7 h 12 m",
"book_learn": [ [ "textbook_armwest", 4 ] ],
- "using": [ [ "forging_standard", 2 ], [ "steel_standard", 1 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [ [ [ "fur", 3 ], [ "leather", 3 ] ] ]
},
{
@@ -463,9 +503,9 @@
"difficulty": 7,
"time": "9 h",
"book_learn": [ [ "textbook_armwest", 6 ] ],
- "using": [ [ "forging_standard", 18 ], [ "steel_standard", 14 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 350 ], [ "oxy_torch", 70 ] ] ],
+ "using": [ [ "blacksmithing_standard", 56 ], [ "steel_standard", 14 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [ [ [ "fur", 4 ], [ "leather", 4 ] ] ]
},
{
@@ -1318,7 +1358,7 @@
"using": [ [ "sewing_standard", 20 ] ],
"components": [
[ [ "leather", 8 ], [ "tanned_hide", 1 ] ],
- [ [ "tallow", 1 ], [ "tallow_tainted", 1 ], [ "cooking_oil", 8 ], [ "cooking_oil2", 8 ], [ "lamp_oil", 200 ] ]
+ [ [ "any_tallow", 1, "LIST" ], [ "cooking_oil", 8 ], [ "cooking_oil2", 8 ], [ "lamp_oil", 200 ] ]
]
},
{
@@ -1342,9 +1382,9 @@
"difficulty": 5,
"time": "9 h",
"autolearn": true,
- "using": [ [ "forging_standard", 16 ], [ "steel_standard", 4 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "using": [ [ "blacksmithing_standard", 16 ], [ "steel_standard", 4 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [ [ [ "goggles_welding", 1 ] ] ]
},
{
diff --git a/data/json/recipes/armor/legs.json b/data/json/recipes/armor/legs.json
index 20f98c70da0bd..e10e784d3d1ef 100644
--- a/data/json/recipes/armor/legs.json
+++ b/data/json/recipes/armor/legs.json
@@ -225,6 +225,19 @@
"using": [ [ "sewing_standard", 10 ] ],
"components": [ [ [ "fur", 10 ], [ "tanned_pelt", 2 ] ] ]
},
+ {
+ "result": "leggings",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_LEGS",
+ "skill_used": "tailor",
+ "difficulty": 3,
+ "time": "35 m",
+ "autolearn": true,
+ "book_learn": [ [ "mag_tailor", 2 ], [ "manual_tailor", 2 ] ],
+ "using": [ [ "sewing_standard", 15 ] ],
+ "components": [ [ [ "lycra_patch", 10 ] ] ]
+ },
{
"result": "legguard_hard",
"type": "recipe",
@@ -247,12 +260,10 @@
"difficulty": 7,
"time": "190 m",
"book_learn": [ [ "textbook_armwest", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 150 ], [ "oxy_torch", 30 ] ] ],
- "components": [
- [ [ "steel_lump", 7 ], [ "steel_chunk", 28 ] ],
- [ [ "fur", 6 ], [ "tanned_pelt", 1 ], [ "leather", 6 ], [ "tanned_hide", 1 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 28 ], [ "steel_standard", 7 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "fur", 6 ], [ "tanned_pelt", 1 ], [ "leather", 6 ], [ "tanned_hide", 1 ] ] ]
},
{
"result": "legguard_metal",
@@ -264,12 +275,9 @@
"time": "45 m",
"autolearn": true,
"book_learn": [ [ "textbook_armwest", 4 ], [ "recipe_melee", 4 ] ],
- "using": [ [ "cordage", 4 ] ],
+ "using": [ [ "cordage", 4 ], [ "steel_tiny", 4 ] ],
"qualities": [ { "id": "HAMMER", "level": 2 } ],
- "components": [
- [ [ "fur", 6 ], [ "tanned_pelt", 1 ], [ "leather", 6 ], [ "tanned_hide", 1 ] ],
- [ [ "steel_chunk", 4 ], [ "scrap", 12 ] ]
- ]
+ "components": [ [ [ "fur", 6 ], [ "tanned_pelt", 1 ], [ "leather", 6 ], [ "tanned_hide", 1 ] ] ]
},
{
"result": "legguard_paper",
@@ -572,6 +580,19 @@
"using": [ [ "sewing_standard", 24 ] ],
"components": [ [ [ "rag", 30 ] ] ]
},
+ {
+ "result": "under_armor_shorts",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_LEGS",
+ "skill_used": "tailor",
+ "difficulty": 3,
+ "time": "25 m",
+ "autolearn": true,
+ "book_learn": [ [ "mag_tailor", 2 ], [ "manual_tailor", 2 ] ],
+ "using": [ [ "sewing_standard", 10 ] ],
+ "components": [ [ [ "lycra_patch", 5 ] ] ]
+ },
{
"result": "chainmail_legs",
"type": "recipe",
diff --git a/data/json/recipes/armor/other.json b/data/json/recipes/armor/other.json
index ecaa1e4ea3bc1..fabd2eec5d35e 100644
--- a/data/json/recipes/armor/other.json
+++ b/data/json/recipes/armor/other.json
@@ -6,7 +6,6 @@
"subcategory": "CSC_ARMOR_OTHER",
"skill_used": "tailor",
"time": "80 m",
- "reversible": true,
"autolearn": true,
"using": [ [ "sewing_standard", 20 ] ],
"components": [ [ [ "rag", 35 ] ] ]
@@ -33,8 +32,9 @@
"difficulty": 6,
"time": "120 m",
"book_learn": [ [ "jewelry_book", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
+ "using": [ [ "blacksmithing_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
"components": [ [ [ "gold_small", 3 ] ] ]
},
{
@@ -46,24 +46,27 @@
"difficulty": 6,
"time": "120 m",
"book_learn": [ [ "jewelry_book", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
+ "using": [ [ "blacksmithing_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
"components": [ [ [ "gold_small", 12 ] ] ]
},
{
"result": "copper_bracelet",
+ "type": "recipe",
"category": "CC_ARMOR",
"subcategory": "CSC_ARMOR_OTHER",
"skill_used": "fabrication",
"difficulty": 6,
"time": "120 m",
"book_learn": [ [ "jewelry_book", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
- "type": "recipe",
+ "using": [ [ "blacksmithing_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
"components": [ [ [ "copper", 60 ] ] ]
},
{
+ "type": "recipe",
"result": "silver_bracelet",
"category": "CC_ARMOR",
"subcategory": "CSC_ARMOR_OTHER",
@@ -71,12 +74,13 @@
"difficulty": 6,
"time": "120 m",
"book_learn": [ [ "jewelry_book", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
- "type": "recipe",
+ "using": [ [ "blacksmithing_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
"components": [ [ [ "silver_small", 15 ] ] ]
},
{
+ "type": "recipe",
"result": "bead_bracelet",
"category": "CC_ARMOR",
"subcategory": "CSC_ARMOR_OTHER",
@@ -84,7 +88,6 @@
"time": "10 m",
"reversible": true,
"autolearn": true,
- "type": "recipe",
"components": [ [ [ "wooden_bead", 10 ] ], [ [ "string_6", 1 ] ] ]
},
{
@@ -106,7 +109,6 @@
"skill_used": "tailor",
"difficulty": 1,
"time": "85 m",
- "reversible": true,
"autolearn": true,
"using": [ [ "sewing_standard", 20 ] ],
"components": [ [ [ "rag", 35 ] ], [ [ "down_feather", 160 ] ] ]
diff --git a/data/json/recipes/armor/pets_horse.json b/data/json/recipes/armor/pets_horse.json
index 00c042730a25e..fb9d27f30aabf 100644
--- a/data/json/recipes/armor/pets_horse.json
+++ b/data/json/recipes/armor/pets_horse.json
@@ -73,7 +73,14 @@
"using": [ [ "sewing_standard", 190 ], [ "surface_heat", 60, "LIST" ] ],
"components": [
[ [ "water", 30 ], [ "water_clean", 30 ] ],
- [ [ "wax", 6 ], [ "tallow", 24 ], [ "tallow_tainted", 24 ], [ "vinegar", 30 ], [ "pine_bough", 60 ] ],
+ [
+ [ "wax", 6 ],
+ [ "tallow", 24 ],
+ [ "mutant_tallow", 24 ],
+ [ "tallow_tainted", 24 ],
+ [ "vinegar", 30 ],
+ [ "pine_bough", 60 ]
+ ],
[ [ "salt", 150 ] ],
[ [ "leather", 105 ], [ "tanned_hide", 17 ] ],
[ [ "rag", 18 ] ]
@@ -125,7 +132,7 @@
"tools": [ [ [ "surface_heat", 60, "LIST" ] ] ],
"components": [
[ [ "water", 30 ], [ "water_clean", 30 ] ],
- [ [ "wax", 6 ], [ "tallow", 24 ], [ "tallow_tainted", 24 ], [ "vinegar", 30 ], [ "pine_bough", 60 ] ],
+ [ [ "wax", 6 ], [ "any_tallow", 24, "LIST" ], [ "vinegar", 30 ], [ "pine_bough", 60 ] ],
[ [ "salt", 150 ] ],
[ [ "bone", 39 ], [ "bone_human", 39 ], [ "bone_tainted", 75 ] ],
[ [ "leather", 105 ], [ "tanned_hide", 17 ] ]
diff --git a/data/json/recipes/armor/storage.json b/data/json/recipes/armor/storage.json
index d761c968e66cf..c32d9a29d516f 100644
--- a/data/json/recipes/armor/storage.json
+++ b/data/json/recipes/armor/storage.json
@@ -29,6 +29,19 @@
"qualities": [ { "id": "SEW", "level": 1 } ],
"components": [ [ [ "leather", 8 ], [ "rag", 8 ] ], [ [ "filament", 300, "LIST" ], [ "cordage", 1, "LIST" ] ] ]
},
+ {
+ "result": "stone_pouch",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_STORAGE",
+ "skill_used": "tailor",
+ "difficulty": 3,
+ "skills_required": [ [ "throw", 1 ] ],
+ "time": "1 h 20 m",
+ "autolearn": true,
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "rag", 8 ] ], [ [ "leather", 4 ] ], [ [ "filament", 600, "LIST" ], [ "cordage", 2, "LIST" ] ] ]
+ },
{
"result": "chestrig",
"type": "recipe",
@@ -162,6 +175,19 @@
"qualities": [ { "id": "SEW", "level": 1 } ],
"components": [ [ [ "rag", 4 ] ], [ [ "string_6", 4 ], [ "filament", 200, "LIST" ] ] ]
},
+ {
+ "result": "bholster",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_STORAGE",
+ "skill_used": "tailor",
+ "difficulty": 1,
+ "skills_required": [ [ "gun", 1 ], [ "pistol", 1 ] ],
+ "time": "10 m",
+ "autolearn": true,
+ "using": [ [ "sewing_standard", 18 ] ],
+ "components": [ [ [ "lycra_patch", 12 ] ] ]
+ },
{
"result": "bindle",
"type": "recipe",
@@ -327,7 +353,7 @@
"time": "36 s",
"reversible": true,
"autolearn": true,
- "components": [ [ [ "raw_tainted_leather", 50 ], [ "raw_tainted_fur", 50 ] ] ],
+ "components": [ [ [ "raw_tainted_leather", 6 ], [ "raw_tainted_fur", 6 ] ] ],
"flags": [ "BLIND_EASY" ]
},
{
diff --git a/data/json/recipes/armor/suit.json b/data/json/recipes/armor/suit.json
index e5ecf5588d7b6..e77d77be39ef4 100644
--- a/data/json/recipes/armor/suit.json
+++ b/data/json/recipes/armor/suit.json
@@ -58,7 +58,7 @@
"tools": [ [ [ "surface_heat", 20, "LIST" ] ] ],
"components": [
[ [ "water", 10 ], [ "water_clean", 10 ] ],
- [ [ "wax", 2 ], [ "tallow", 8 ], [ "tallow_tainted", 8 ], [ "vinegar", 10 ], [ "pine_bough", 20 ] ],
+ [ [ "wax", 2 ], [ "any_tallow", 8, "LIST" ], [ "vinegar", 10 ], [ "pine_bough", 20 ] ],
[ [ "salt", 50 ] ],
[ [ "armor_larmor", 1 ] ],
[ [ "armguard_larmor", 1 ] ]
@@ -75,7 +75,7 @@
"autolearn": true,
"book_learn": [ [ "textbook_tailor", 5 ], [ "tailor_portfolio", 5 ] ],
"using": [ [ "cordage", 2 ] ],
- "components": [ [ [ "chitin_piece", 15 ] ] ]
+ "components": [ [ [ "chitin_piece", 72 ] ] ]
},
{
"result": "armor_acidchitin",
@@ -89,7 +89,7 @@
"autolearn": true,
"using": [ [ "cordage", 2 ] ],
"qualities": [ { "id": "CUT_FINE", "level": 1 }, { "id": "SEW", "level": 1 } ],
- "components": [ [ [ "acidchitin_piece", 15 ] ] ]
+ "components": [ [ [ "acidchitin_piece", 72 ] ] ]
},
{
"result": "armor_farmor",
@@ -125,12 +125,10 @@
"difficulty": 8,
"time": "9 h 20 m",
"book_learn": [ [ "textbook_armwest", 7 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 400 ], [ "oxy_torch", 80 ] ] ],
- "components": [
- [ [ "steel_lump", 20 ], [ "steel_chunk", 80 ] ],
- [ [ "fur", 20 ], [ "tanned_pelt", 3 ], [ "leather", 20 ], [ "tanned_hide", 3 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 80 ], [ "steel_standard", 20 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "fur", 20 ], [ "tanned_pelt", 3 ], [ "leather", 20 ], [ "tanned_hide", 3 ] ] ]
},
{
"result": "armor_lightplate",
@@ -218,9 +216,10 @@
"difficulty": 9,
"time": "10 h",
"book_learn": [ [ "textbook_armwest", 8 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 450 ], [ "oxy_torch", 90 ] ] ],
- "components": [ [ [ "steel_lump", 30 ] ], [ [ "fur", 16 ], [ "tanned_pelt", 3 ], [ "leather", 16 ], [ "tanned_hide", 3 ] ] ]
+ "using": [ [ "blacksmithing_standard", 120 ], [ "steel_standard", 30 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "fur", 16 ], [ "tanned_pelt", 3 ], [ "leather", 16 ], [ "tanned_hide", 3 ] ] ]
},
{
"result": "armor_samurai",
@@ -231,13 +230,10 @@
"difficulty": 9,
"time": "9 h 20 m",
"book_learn": [ [ "textbook_armeast", 8 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 450 ], [ "oxy_torch", 90 ] ] ],
- "components": [
- [ [ "steel_lump", 16 ], [ "steel_chunk", 64 ] ],
- [ [ "fur", 28 ], [ "tanned_pelt", 6 ], [ "leather", 28 ], [ "tanned_hide", 6 ] ],
- [ [ "rag", 10 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 64 ], [ "steel_standard", 16 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "fur", 28 ], [ "tanned_pelt", 6 ], [ "leather", 28 ], [ "tanned_hide", 6 ] ], [ [ "rag", 10 ] ] ]
},
{
"result": "armor_scavenger",
@@ -331,6 +327,29 @@
"autolearn": true,
"components": [ [ [ "chainmail_hood", 1 ] ], [ [ "chainmail_hauberk", 1 ] ] ]
},
+ {
+ "result": "chainmail_suit_faraday",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_SUIT",
+ "skill_used": "fabrication",
+ "difficulty": 7,
+ "skills_required": [ "electronics", 3 ],
+ "time": "180 m",
+ "book_learn": [ [ "textbook_fabrication", 6 ], [ "advanced_electronics", 6 ], [ "textbook_electronics", 6 ] ],
+ "using": [ [ "chainmail_standard", 20 ] ],
+ "components": [
+ [ [ "link_sheet", 2 ], [ "chainmail_hood", 1 ] ],
+ [ [ "link_sheet", 7 ], [ "chainmail_vest", 1 ] ],
+ [ [ "link_sheet", 3 ], [ "chainmail_arms", 1 ] ],
+ [ [ "link_sheet", 4 ], [ "chainmail_legs", 1 ] ],
+ [ [ "link_sheet", 2 ], [ "chainmail_hands", 1 ] ],
+ [ [ "link_sheet", 2 ], [ "chainmail_feet", 1 ] ],
+ [ [ "chain_link", 500 ] ],
+ [ [ "wire", 5 ] ],
+ [ [ "rag", 26 ] ]
+ ]
+ },
{
"result": "cloak",
"type": "recipe",
@@ -863,5 +882,17 @@
"book_learn": [ [ "tailor_japanese", 3 ] ],
"using": [ [ "sewing_standard", 18 ] ],
"components": [ [ [ "rag", 16 ] ] ]
+ },
+ {
+ "result": "zentai",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_SUIT",
+ "skill_used": "tailor",
+ "difficulty": 4,
+ "time": "2 h",
+ "book_learn": [ [ "mag_animecon", 1 ] ],
+ "using": [ [ "sewing_standard", 36 ] ],
+ "components": [ [ [ "lycra_patch", 34 ] ] ]
}
]
diff --git a/data/json/recipes/armor/torso.json b/data/json/recipes/armor/torso.json
index 8a4b66516eaf2..227c000375b6a 100644
--- a/data/json/recipes/armor/torso.json
+++ b/data/json/recipes/armor/torso.json
@@ -210,12 +210,10 @@
"difficulty": 8,
"time": "3 h 10 m",
"book_learn": [ [ "textbook_armwest", 7 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 150 ], [ "oxy_torch", 30 ] ] ],
- "components": [
- [ [ "steel_lump", 8 ], [ "steel_chunk", 32 ] ],
- [ [ "fur", 6 ], [ "tanned_pelt", 1 ], [ "leather", 6 ], [ "tanned_hide", 1 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 32 ], [ "steel_standard", 8 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "fur", 6 ], [ "tanned_pelt", 1 ], [ "leather", 6 ], [ "tanned_hide", 1 ] ] ]
},
{
"result": "cuirass_scrap",
@@ -399,6 +397,18 @@
"qualities": [ { "id": "HAMMER", "level": 2 } ],
"components": [ [ [ "jacket_leather", 1 ], [ "jacket_leather_red", 1 ] ], [ [ "scrap", 9 ] ] ]
},
+ {
+ "result": "leotard",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_TORSO",
+ "skill_used": "tailor",
+ "difficulty": 2,
+ "time": "30 m",
+ "autolearn": true,
+ "using": [ [ "sewing_standard", 13 ] ],
+ "components": [ [ [ "lycra_patch", 8 ] ] ]
+ },
{
"result": "long_undertop",
"type": "recipe",
@@ -942,6 +952,18 @@
"using": [ [ "sewing_standard", 8 ] ],
"components": [ [ [ "rag", 8 ] ] ]
},
+ {
+ "result": "sports_bra",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_TORSO",
+ "skill_used": "tailor",
+ "difficulty": 3,
+ "time": "35 m",
+ "autolearn": true,
+ "using": [ [ "sewing_standard", 15 ] ],
+ "components": [ [ [ "lycra_patch", 2 ] ] ]
+ },
{
"result": "sundress",
"type": "recipe",
@@ -979,6 +1001,18 @@
"using": [ [ "sewing_standard", 4 ] ],
"components": [ [ [ "rag", 4 ] ] ]
},
+ {
+ "result": "thermal_shirt",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_TORSO",
+ "skill_used": "tailor",
+ "difficulty": 3,
+ "time": "42 m",
+ "autolearn": true,
+ "using": [ [ "sewing_standard", 8 ] ],
+ "components": [ [ [ "lycra_patch", 7 ] ] ]
+ },
{
"result": "trenchcoat",
"type": "recipe",
@@ -1096,6 +1130,18 @@
"using": [ [ "sewing_standard", 10 ] ],
"components": [ [ [ "rag", 10 ] ] ]
},
+ {
+ "result": "under_armor",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_TORSO",
+ "skill_used": "tailor",
+ "difficulty": 3,
+ "time": "35 m",
+ "autolearn": true,
+ "using": [ [ "sewing_standard", 15 ] ],
+ "components": [ [ [ "lycra_patch", 4 ] ] ]
+ },
{
"result": "undershirt",
"type": "recipe",
@@ -1108,6 +1154,18 @@
"using": [ [ "sewing_standard", 15 ] ],
"components": [ [ [ "rag", 4 ] ] ]
},
+ {
+ "result": "unitard",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_TORSO",
+ "skill_used": "tailor",
+ "difficulty": 2,
+ "time": "35 m",
+ "autolearn": true,
+ "using": [ [ "sewing_standard", 15 ] ],
+ "components": [ [ [ "lycra_patch", 10 ] ] ]
+ },
{
"result": "xlkevlar",
"type": "recipe",
diff --git a/data/json/recipes/basecamps/recipe_groups.json b/data/json/recipes/basecamps/recipe_groups.json
index 03b6c929953ae..af498215d77cc 100644
--- a/data/json/recipes/basecamps/recipe_groups.json
+++ b/data/json/recipes/basecamps/recipe_groups.json
@@ -6,7 +6,8 @@
"recipes": [
{ "id": "faction_base_modular_hub_field_0", "description": "Field Camp", "om_terrains": [ "field" ] },
{ "id": "faction_base_firestation_0", "description": "Firestation Base", "om_terrains": [ "fire_station" ] },
- { "id": "faction_base_shelter_0", "description": "Evac Shelter Base", "om_terrains": [ "shelter" ] }
+ { "id": "faction_base_shelter_0", "description": "Evac Shelter Base", "om_terrains": [ "shelter" ] },
+ { "id": "faction_base_shelter_1_0", "description": "Evac Shelter Base", "om_terrains": [ "shelter_1" ] }
]
},
{
@@ -19,6 +20,7 @@
{ "id": "faction_base_canteen_0", "description": "Canteen", "om_terrains": [ "field" ] },
{ "id": "faction_base_livestock_0", "description": "Livestock Area", "om_terrains": [ "field" ] },
{ "id": "faction_base_storehouse_0", "description": "Central Storage Building", "om_terrains": [ "field" ] },
+ { "id": "faction_base_saltworks_0", "description": "Saltworks Area", "om_terrains": [ "field" ] },
{ "id": "faction_base_workshop_0", "description": "Fabrication Workshop", "om_terrains": [ "field" ] }
]
},
diff --git a/data/json/recipes/basecamps/recipe_modular_canteen/recipe_modular_canteen_common.json b/data/json/recipes/basecamps/recipe_modular_canteen/recipe_modular_canteen_common.json
index 5eac4fe94cdba..db366856e8862 100644
--- a/data/json/recipes/basecamps/recipe_modular_canteen/recipe_modular_canteen_common.json
+++ b/data/json/recipes/basecamps/recipe_modular_canteen/recipe_modular_canteen_common.json
@@ -52,7 +52,7 @@
{
"type": "recipe",
"result": "faction_base_modular_canteen_well",
- "description": "We should build a well. This will make cooking more convenient.",
+ "description": "We should build a well. This will make cooking more convenient.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
diff --git a/data/json/recipes/basecamps/recipe_modular_field_common.json b/data/json/recipes/basecamps/recipe_modular_field_common.json
index d352d4bf85962..e0387d8a12eb1 100644
--- a/data/json/recipes/basecamps/recipe_modular_field_common.json
+++ b/data/json/recipes/basecamps/recipe_modular_field_common.json
@@ -594,7 +594,7 @@
"components": [
[ [ "processor", 2 ] ],
[ [ "RAM", 2 ] ],
- [ [ "small_lcd_screen", 1 ] ],
+ [ [ "large_lcd_screen", 1 ] ],
[ [ "e_scrap", 8 ] ],
[ [ "frame", 1 ] ],
[ [ "circuit", 4 ] ],
diff --git a/data/json/recipes/basecamps/recipe_modular_firestation1.json b/data/json/recipes/basecamps/recipe_modular_firestation1.json
index 06ba4edd51074..d8d65413bb605 100644
--- a/data/json/recipes/basecamps/recipe_modular_firestation1.json
+++ b/data/json/recipes/basecamps/recipe_modular_firestation1.json
@@ -41,7 +41,7 @@
{
"type": "recipe",
"result": "faction_base_modular_firestation1_well",
- "description": "We should build a well, put it near that winch. This will make our future here more secure.",
+ "description": "We should build a well, put it near that winch. This will make our future here more secure.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -145,7 +145,7 @@
{
"type": "recipe",
"result": "faction_base_modular_firestation1_brazier",
- "description": "Now that we have some cover, we should set up a brazier for cooking, and grab a pot. Let's put it in that dining area.",
+ "description": "Now that we have some cover, we should set up a brazier for cooking, and grab a pot. Let's put it in that dining area.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"skill_used": "fabrication",
diff --git a/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_common.json b/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_common.json
new file mode 100644
index 0000000000000..7378c7ef2613a
--- /dev/null
+++ b/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_common.json
@@ -0,0 +1,47 @@
+[
+ {
+ "type": "recipe",
+ "result": "faction_base_saltworks_0",
+ "description": "Survey land for a saltworks area.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "skill_used": "fabrication",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "faction_base_saltworks_0",
+ "blueprint_name": "Saltworks survey",
+ "time": "180 m",
+ "blueprint_requires": [ { "id": "not_an_upgrade" } ],
+ "blueprint_provides": [ { "id": "fbmsw_0" } ]
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_brewery1_southwest",
+ "description": "We could uprade the workspace in the brewery to add a still, wood stove and work table.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_brewery1_southwest",
+ "blueprint_name": "SW brewery still",
+ "blueprint_requires": [ { "id": "fbmsw_southwest" } ],
+ "blueprint_provides": [ { "id": "fbmsw_southwest1_still" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_southwest1_still" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_brewery2_southwest",
+ "description": "We could use fill out the space with extra kegs and storage racks.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_brewery2_southwest",
+ "blueprint_name": "SW brewery kegs",
+ "blueprint_requires": [ { "id": "fbmsw_southwest1_still" } ],
+ "blueprint_provides": [ { "id": "fbmsw_southwest2_kegs" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_southwest2_kegs" } ],
+ "blueprint_autocalc": true
+ }
+]
diff --git a/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_log.json b/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_log.json
new file mode 100644
index 0000000000000..038b236c7d2e3
--- /dev/null
+++ b/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_log.json
@@ -0,0 +1,47 @@
+[
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_saltpan_log_northeast",
+ "description": "We could divert saltwater from the swamp nearby to create a steady supply of salt for our needs in a log building.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_saltpan_log_northeast",
+ "blueprint_name": "NE log wall saltpan",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_northeast" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_northeast" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shack_log_southeast",
+ "description": "We could use a storage room for chemicals and tools, so build a log shack with a roof on the southeast side of the saltworks field.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_shack_log_southeast",
+ "blueprint_name": "SE log wall storage room",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_southeast" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_southeast" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_brewery0_log_southwest",
+ "description": "We could take advantage of the the designation of this area to build a log brewery.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_brewery0_log_southwest",
+ "blueprint_name": "SW log wall brewery",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_southwest" }, { "id": "brewery" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_southwest" } ],
+ "blueprint_autocalc": true
+ }
+]
diff --git a/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_metal.json b/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_metal.json
new file mode 100644
index 0000000000000..5ea0e1d68a8da
--- /dev/null
+++ b/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_metal.json
@@ -0,0 +1,47 @@
+[
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_saltpan_metal_northeast",
+ "description": "We could divert saltwater from the swamp nearby to create a steady supply of salt for our needs in a metal shed.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_saltpan_metal_northeast",
+ "blueprint_name": "NE metal wall saltpan",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_northeast" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_northeast" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shack_metal_southeast",
+ "description": "We could use a storage room for chemicals and tools, so build a metal shack with a roof on the southeast side of the saltworks field.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_shack_metal_southeast",
+ "blueprint_name": "SE metal wall storage room",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_southeast" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_southeast" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_brewery0_metal_southwest",
+ "description": "We could take advantage of the the designation of this area to build a metal wall brewery.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_brewery0_metal_southwest",
+ "blueprint_name": "SW metal wall brewery",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_southwest" }, { "id": "brewery" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_southwest" } ],
+ "blueprint_autocalc": true
+ }
+]
diff --git a/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_stone.json b/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_stone.json
new file mode 100644
index 0000000000000..5db58fd5ee3ea
--- /dev/null
+++ b/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_stone.json
@@ -0,0 +1,47 @@
+[
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_saltpan_rock_northeast",
+ "description": "We could divert saltwater from the swamp nearby to create a steady supply of salt for our needs in a stone building.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_saltpan_rock_northeast",
+ "blueprint_name": "NE stone wall saltpan",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_northeast" }, { "id": "Salt_Pan" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_northeast" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shack_rock_southeast",
+ "description": "We could use a storage room for chemicals and tools, so build a stone wall shack with a roof on the southeast side of the saltworks field.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_shack_rock_southeast",
+ "blueprint_name": "SE stone wall storage room",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_southeast" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_southeast" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_brewery0_rock_southwest",
+ "description": "We could take advantage of the the designation of this area to build a stone brewery.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_brewery0_rock_southwest",
+ "blueprint_name": "SW stone wall brewery",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_southwest" }, { "id": "brewery" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_southwest" } ],
+ "blueprint_autocalc": true
+ }
+]
diff --git a/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_wad.json b/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_wad.json
new file mode 100644
index 0000000000000..03ca859d26b4a
--- /dev/null
+++ b/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_wad.json
@@ -0,0 +1,47 @@
+[
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_saltpan_wad_northeast",
+ "description": "We could divert saltwater from the swamp nearby to create a steady supply of salt for our needs in an adobe hut.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_saltpan_wad_northeast",
+ "blueprint_name": "NE wattle and daub saltpan",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_northeast" }, { "id": "Salt_Pan" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_northeast" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shack_wad_southeast",
+ "description": "We could use a storage room for chemicals and tools, so build an adobe shack with a roof on the southeast side of the saltworks field.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_shack_wad_southeast",
+ "blueprint_name": "SE wattle and daub storage room",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_southeast" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_southeast" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_brewery0_wad_southwest",
+ "description": "We could take advantage of the the designation of this area to build an wattle and daub brewery.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_brewery0_wad_southwest",
+ "blueprint_name": "SW wattle and daub brewery",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_southwest" }, { "id": "brewery" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_southwest" } ],
+ "blueprint_autocalc": true
+ }
+]
diff --git a/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_wood.json b/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_wood.json
new file mode 100644
index 0000000000000..4f34eda44bb0f
--- /dev/null
+++ b/data/json/recipes/basecamps/recipe_modular_saltworks/recipe_modular_saltworks_wood.json
@@ -0,0 +1,47 @@
+[
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_saltpan_wood_northeast",
+ "description": "We could divert saltwater from the swamp nearby to create a steady supply of salt for our needs in a wooden shed.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_saltpan_wood_northeast",
+ "blueprint_name": "NE wood panel saltpan",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_northeast" }, { "id": "Salt_Pan" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_northeast" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shack_wood_southeast",
+ "description": "We could use a storage room for chemicals and tools, so build a wood panel shack with a roof on the southeast side of the saltworks field.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_shack_wood_southeast",
+ "blueprint_name": "SE wood panel storage room",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_southeast" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_southeast" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_brewery0_wood_southwest",
+ "description": "We could take advantage of the the designation of this area to build a wooden brewery.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmsw_brewery0_wood_southwest",
+ "blueprint_name": "SW wood panel brewery",
+ "blueprint_requires": [ { "id": "fbmsw_0" } ],
+ "blueprint_provides": [ { "id": "fbmsw_southwest" }, { "id": "brewery" } ],
+ "blueprint_excludes": [ { "id": "fbmsw_southwest" } ],
+ "blueprint_autocalc": true
+ }
+]
diff --git a/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_common.json b/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_common.json
index a1c49a9ab359c..c814b4dcda997 100644
--- a/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_common.json
+++ b/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_common.json
@@ -97,7 +97,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_well",
- "description": "We should build a well, put it near the terminal. This will make our future here more secure.",
+ "description": "We should build a well, put it near the terminal. This will make our future here more secure.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
diff --git a/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_log.json b/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_log.json
index 9dba04796cec7..372806a57cca7 100644
--- a/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_log.json
+++ b/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_log.json
@@ -2,7 +2,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom1_log",
- "description": "Let's build some living quarters so we can expand. We will start in the southeast corner.",
+ "description": "Let's build some living quarters so we can expand. We will start in the southeast corner.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -17,7 +17,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom2_log",
- "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -32,7 +32,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom3_log",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -47,7 +47,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom4_log",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -62,7 +62,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom5_log",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
diff --git a/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_rock.json b/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_rock.json
index de9b124b65bf4..3ecd183e923b4 100644
--- a/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_rock.json
+++ b/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_rock.json
@@ -2,7 +2,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom1_rock",
- "description": "Let's build some living quarters so we can expand. We will start in the southeast corner.",
+ "description": "Let's build some living quarters so we can expand. We will start in the southeast corner.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -17,7 +17,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom2_rock",
- "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -32,7 +32,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom3_rock",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -47,7 +47,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom4_rock",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -62,7 +62,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom5_rock",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
diff --git a/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_standard.json b/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_standard.json
index cb5d72b15cdff..31d2b964bcce4 100644
--- a/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_standard.json
+++ b/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_standard.json
@@ -2,7 +2,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom1",
- "description": "Let's build some living quarters so we can expand. We will start in the southeast corner.",
+ "description": "Let's build some living quarters so we can expand. We will start in the southeast corner.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -17,7 +17,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom2",
- "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -32,7 +32,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom3",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -47,7 +47,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom4",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -62,7 +62,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom5",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
diff --git a/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_wad.json b/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_wad.json
index a2d39a505feb3..8f031bd33c92e 100644
--- a/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_wad.json
+++ b/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_wad.json
@@ -2,7 +2,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom1_wad",
- "description": "Let's build some living quarters so we can expand. We will start in the southeast corner.",
+ "description": "Let's build some living quarters so we can expand. We will start in the southeast corner.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -17,7 +17,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom2_wad",
- "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -32,7 +32,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom3_wad",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -47,7 +47,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom4_wad",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -62,7 +62,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom5_wad",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
diff --git a/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_wood.json b/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_wood.json
index 0767d7af71c74..b64d6cb31e6b6 100644
--- a/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_wood.json
+++ b/data/json/recipes/basecamps/recipe_modular_shelter/recipe_modular_shelter_wood.json
@@ -2,7 +2,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom1_wood",
- "description": "Let's build some living quarters so we can expand. We will start in the southeast corner.",
+ "description": "Let's build some living quarters so we can expand. We will start in the southeast corner.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -17,7 +17,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom2_wood",
- "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -32,7 +32,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom3_wood",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -47,7 +47,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom4_wood",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -62,7 +62,7 @@
{
"type": "recipe",
"result": "faction_base_modular_shelter_bedroom5_wood",
- "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
+ "description": "Let's build some living quarters so we can expand. We will continue along the other wall.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
diff --git a/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_common.json b/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_common.json
new file mode 100644
index 0000000000000..39ae0c9ca41df
--- /dev/null
+++ b/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_common.json
@@ -0,0 +1,502 @@
+[
+ {
+ "type": "recipe",
+ "result": "faction_base_shelter_1_0",
+ "description": "We should survey the base site and set up a bulletin board.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "skill_used": "fabrication",
+ "autolearn": false,
+ "never_learn": true,
+ "time": "1 h",
+ "construction_blueprint": "fbmc_shelter_1_0",
+ "blueprint_provides": [
+ { "id": "gathering" },
+ { "id": "primitive_camp_recipes_1" },
+ { "id": "fbmc_shelter_1_0" },
+ { "id": "firewood" },
+ { "id": "foraging" },
+ { "id": "sorting" },
+ { "id": "logging" }
+ ],
+ "blueprint_requires": [ { "id": "not_an_upgrade" } ],
+ "blueprint_name": "basic survey"
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_fireplace",
+ "description": "We should build a fireplace for cooking and grab a pot. Let's set up near the working terminal.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_fireplace",
+ "blueprint_name": "build a fireplace",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_0" } ],
+ "blueprint_provides": [
+ { "id": "fbmc_shelter_1_fire" },
+ { "id": "trapping" },
+ { "id": "hunting" },
+ { "id": "kitchen" },
+ { "id": "kitchen_recipes_1" }
+ ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_fire" } ],
+ "blueprint_resources": [ "fake_fireplace", "pot" ],
+ "blueprint_autocalc": true,
+ "components": [ [ [ "pot", 1 ], [ "rock_pot", 1 ], [ "pot_copper", 1 ], [ "clay_pot", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_brazier",
+ "description": "We should build a brazier for cooking and grab a pot. Let's set up near the working terminal.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "skill_used": "fabrication",
+ "autolearn": false,
+ "never_learn": true,
+ "time": "5 m",
+ "construction_blueprint": "fbmc_shelter_1_brazier",
+ "blueprint_name": "build a brazier",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_0" } ],
+ "blueprint_provides": [
+ { "id": "fbmc_shelter_1_fire" },
+ { "id": "trapping" },
+ { "id": "hunting" },
+ { "id": "kitchen" },
+ { "id": "kitchen_recipes_1" }
+ ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_fire" } ],
+ "blueprint_resources": [ "fake_fireplace", "pot" ],
+ "blueprint_autocalc": true,
+ "components": [ [ [ "brazier", 1 ] ], [ [ "pot", 1 ], [ "rock_pot", 1 ], [ "pot_copper", 1 ], [ "clay_pot", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_stove",
+ "description": "We should build a wood stove for cooking and grab a pot. Let's set up near the working terminal.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "skill_used": "fabrication",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_stove",
+ "blueprint_name": "build a wood stove",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_0" } ],
+ "blueprint_provides": [
+ { "id": "fbmc_shelter_1_fire" },
+ { "id": "trapping" },
+ { "id": "hunting" },
+ { "id": "kitchen" },
+ { "id": "kitchen_recipes_1" }
+ ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_fire" } ],
+ "blueprint_resources": [ "fake_fireplace", "pot" ],
+ "blueprint_autocalc": true,
+ "components": [ [ [ "pot", 1 ], [ "rock_pot", 1 ], [ "pot_copper", 1 ], [ "clay_pot", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_well",
+ "description": "We should build a well, put it near the terminal. This will make our future here more secure.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_well",
+ "blueprint_name": "build a well",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_fire" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_well" }, { "id": "relaying" }, { "id": "scouting" }, { "id": "patrolling" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_well" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bed_standard_NW",
+ "description": "Let's furnish the southeast bedroom with a regular bed.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_standard_NW",
+ "blueprint_name": "furnish the NW bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bed_nw" }, { "id": "bed", "amount": 1 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bed_nw" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_standard_W1",
+ "description": "Let's furnish the west bedroom with regular beds.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_W1",
+ "blueprint_name": "furnish the W bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom2" }, { "id": "fbmc_shelter_1_bed_nw" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom_w1" }, { "id": "bed", "amount": 2 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom_w1" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_standard_W2",
+ "description": "Let's furnish the west bedroom with regular beds.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_W2",
+ "blueprint_name": "furnish the W bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom3" }, { "id": "fbmc_shelter_1_bedroom_w1" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom_w2" }, { "id": "bed", "amount": 3 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom_w2" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_standard_W3",
+ "description": "Let's furnish the west bedroom with regular beds.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_W3",
+ "blueprint_name": "furnish the W bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom5" }, { "id": "fbmc_shelter_1_bedroom_w2" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom_w3" }, { "id": "bed", "amount": 4 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom_w3" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bed_straw_NW",
+ "description": "Let's furnish the southeast bedroom with a straw bed.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_straw_NW",
+ "blueprint_name": "furnish the NW bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bed_nw" }, { "id": "bed", "amount": 1 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bed_nw" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_straw_W1",
+ "description": "Let's furnish the west bedroom with a straw bed.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_straw_W1",
+ "blueprint_name": "furnish the W bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom2" }, { "id": "fbmc_shelter_1_bed_nw" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom_w1" }, { "id": "bed", "amount": 2 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom_w1" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_straw_W2",
+ "description": "Let's furnish the west bedroom with a straw bed.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_straw_W2",
+ "blueprint_name": "furnish the W bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom3" }, { "id": "fbmc_shelter_1_bedroom_w1" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom_w2" }, { "id": "bed", "amount": 3 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom_w2" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_straw_W3",
+ "description": "Let's furnish the west bedroom with straw beds.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_straw_W3",
+ "blueprint_name": "furnish the W bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom5" }, { "id": "fbmc_shelter_1_bedroom_w2" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom_w3" }, { "id": "bed", "amount": 4 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom_w3" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bed_makeshift_NW",
+ "description": "Let's furnish the southeast bedroom with a makeshift bed.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_makeshift_NW",
+ "blueprint_name": "furnish the NW bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bed_nw" }, { "id": "bed", "amount": 1 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bed_nw" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_makeshift_W1",
+ "description": "Let's furnish the west bedroom with a makeshift bed.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_makeshift_W1",
+ "blueprint_name": "furnish the W bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom2" }, { "id": "fbmc_shelter_1_bed_nw" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom_w1" }, { "id": "bed", "amount": 2 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom_w1" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_makeshift_W2",
+ "description": "Let's furnish the west bedroom with a makeshift bed.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_makeshift_W2",
+ "blueprint_name": "furnish the W bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom3" }, { "id": "fbmc_shelter_1_bedroom_w1" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom_w2" }, { "id": "bed", "amount": 3 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom_w2" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_makeshift_W3",
+ "description": "Let's furnish the west bedroom with makeshift beds.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_makeshift_W3",
+ "blueprint_name": "furnish the W bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom5" }, { "id": "fbmc_shelter_1_bedroom_w2" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom_w3" }, { "id": "bed", "amount": 4 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom_w3" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bed_standard_SW",
+ "description": "Let's furnish the southwest bedroom with a regular bed.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_standard_SW",
+ "blueprint_name": "furnish the SW bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom_w3" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bed_sw" }, { "id": "bed", "amount": 5 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bed_sw" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bed_straw_SW",
+ "description": "Let's furnish the southwest bedroom with a straw bed.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_straw_SW",
+ "blueprint_name": "furnish the SW bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom_w3" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bed_sw" }, { "id": "bed", "amount": 5 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bed_sw" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bed_makeshift_SW",
+ "description": "Let's furnish the southwest bedroom with a makeshift bed.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_makeshift_SW",
+ "blueprint_name": "furnish the SW bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom_w3" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bed_sw" }, { "id": "bed", "amount": 5 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bed_sw" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_standard_S1",
+ "description": "Let's furnish the southern bedroom with a regular beds.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_standard_S1",
+ "blueprint_name": "furnish the S bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bed_sw" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bed_s1" }, { "id": "bed", "amount": 7 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bed_s1" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_straw_S1",
+ "description": "Let's furnish the southern bedroom with a straw beds.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_straw_S1",
+ "blueprint_name": "furnish the S bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bed_sw" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bed_s1" }, { "id": "bed", "amount": 7 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bed_s1" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_makeshift_S1",
+ "description": "Let's furnish the southern bedroom with a makeshift beds.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_makeshift_S1",
+ "blueprint_name": "furnish the S bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bed_sw" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bed_s1" }, { "id": "bed", "amount": 7 } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bed_s1" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_standard_S2",
+ "description": "Let's furnish the southern bedroom with regular beds.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_standard_S2",
+ "blueprint_name": "furnish the S bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bed_s1" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bed_s2" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bed_s2" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_straw_S2",
+ "description": "Let's furnish the southern bedroom with straw beds.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_straw_S2",
+ "blueprint_name": "furnish the S bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bed_s1" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bed_s2" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bed_s2" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_beds_makeshift_S2",
+ "description": "Let's furnish the southern bedroom with makeshift beds.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bed_makeshift_S2",
+ "blueprint_name": "furnish the S bedroom",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bed_s1" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bed_s2" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bed_s2" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_diningroom",
+ "description": "Let's make a dining area.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_dining",
+ "blueprint_name": "furnish the dining room",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_fire" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_dining" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_dining" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_livingroom",
+ "description": "Let's make a living room area.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_livingroom",
+ "blueprint_name": "furnish the living room",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_fire" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_livingroom" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_livingroom" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_pantry",
+ "description": "Let's build some pantry storage.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_pantry",
+ "blueprint_name": "build some wooden racks",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_fire" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_pantry" }, { "id": "pantry" }, { "id": "sorting" }, { "id": "tool_storage" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_pantry" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_craftspot",
+ "description": "Let's build a work bench.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_craftspot",
+ "blueprint_name": "build a work bench",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_fire" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_craftspot" }, { "id": "tool_storage" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_craftspot" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_radio",
+ "description": "Let's set up a radio tower to improve our recruitment efforts.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_radio_console",
+ "blueprint_name": "build a radio tower and console",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_well" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_radio" }, { "id": "recruiting" }, { "id": "radio" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_radio" } ],
+ "blueprint_autocalc": true
+ }
+]
diff --git a/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_log.json b/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_log.json
new file mode 100644
index 0000000000000..b8aebc819a077
--- /dev/null
+++ b/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_log.json
@@ -0,0 +1,77 @@
+[
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom1_log",
+ "description": "Let's build some living quarters so we can expand. We will start in the northwest corner.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_NW_log",
+ "blueprint_name": "build NW log bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_fire" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom2_log",
+ "description": "Let's build some living quarters so we can expand. We will continue along the west wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_W1_log",
+ "blueprint_name": "build W log bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom3_log",
+ "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_W2",
+ "blueprint_name": "build W log bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom5_log",
+ "description": "Let's build some living quarters so we can expand. We will continue along the southwest corner.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_SW_log",
+ "blueprint_name": "build SW log bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom6_log",
+ "description": "Let's build some living quarters so we can expand. We will continue along the south wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_S_log",
+ "blueprint_name": "build S log bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom6" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom6" } ],
+ "blueprint_autocalc": true
+ }
+]
diff --git a/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_rock.json b/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_rock.json
new file mode 100644
index 0000000000000..20eda8b11f65c
--- /dev/null
+++ b/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_rock.json
@@ -0,0 +1,77 @@
+[
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom1_rock",
+ "description": "Let's build some living quarters so we can expand. We will start in the northwest corner.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_NW_rock",
+ "blueprint_name": "build NW rock bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_fire" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom2_rock",
+ "description": "Let's build some living quarters so we can expand. We will continue along the west wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_W1_rock",
+ "blueprint_name": "build W rock bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom3_rock",
+ "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_W2",
+ "blueprint_name": "build W rock bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom5_rock",
+ "description": "Let's build some living quarters so we can expand. We will continue along the southwest corner.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_SW_rock",
+ "blueprint_name": "build SW rock bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom6_rock",
+ "description": "Let's build some living quarters so we can expand. We will continue along the south wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_S_rock",
+ "blueprint_name": "build S rock bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom6" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom6" } ],
+ "blueprint_autocalc": true
+ }
+]
diff --git a/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_standard.json b/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_standard.json
new file mode 100644
index 0000000000000..7a0d65e97a033
--- /dev/null
+++ b/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_standard.json
@@ -0,0 +1,77 @@
+[
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom1",
+ "description": "Let's build some living quarters so we can expand. We will start in the northwest corner.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_NW",
+ "blueprint_name": "build NW standard bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_fire" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom2",
+ "description": "Let's build some living quarters so we can expand. We will continue along the west wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_W1",
+ "blueprint_name": "build W standard bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom3",
+ "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_W2",
+ "blueprint_name": "build W standard bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom5",
+ "description": "Let's build some living quarters so we can expand. We will continue along the southwest corner.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_standard_bedroom_SW",
+ "blueprint_name": "build SW standard bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom6",
+ "description": "Let's build some living quarters so we can expand. We will continue along the south wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_S",
+ "blueprint_name": "build S standard bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom6" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom6" } ],
+ "blueprint_autocalc": true
+ }
+]
diff --git a/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_wad.json b/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_wad.json
new file mode 100644
index 0000000000000..dd60644cede08
--- /dev/null
+++ b/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_wad.json
@@ -0,0 +1,77 @@
+[
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom1_wad",
+ "description": "Let's build some living quarters so we can expand. We will start in the northwest corner.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_NW_wad",
+ "blueprint_name": "build NW wattle and daub bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_fire" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom2_wad",
+ "description": "Let's build some living quarters so we can expand. We will continue along the west wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_W1_wad",
+ "blueprint_name": "build W wattle and daub bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom3_wad",
+ "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_W2",
+ "blueprint_name": "build W wattle and daub bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom5_wad",
+ "description": "Let's build some living quarters so we can expand. We will continue along the southwest corner.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_SW_wad",
+ "blueprint_name": "build SW wattle and daub bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom6_wad",
+ "description": "Let's build some living quarters so we can expand. We will continue along the south wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_S_wad",
+ "blueprint_name": "build S wattle and daub bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom6" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom6" } ],
+ "blueprint_autocalc": true
+ }
+]
diff --git a/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_wood.json b/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_wood.json
new file mode 100644
index 0000000000000..a84d7bc2a2bca
--- /dev/null
+++ b/data/json/recipes/basecamps/recipe_modular_shelter_1/recipe_modular_shelter_1_wood.json
@@ -0,0 +1,77 @@
+[
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom1_wood",
+ "description": "Let's build some living quarters so we can expand. We will start in the northwest corner.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_NW_wood",
+ "blueprint_name": "build NW wood bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_fire" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom2_wood",
+ "description": "Let's build some living quarters so we can expand. We will continue along the west wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_W1_wood",
+ "blueprint_name": "build W wood bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom1" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom3_wood",
+ "description": "Let's build some living quarters so we can expand. We will continue along the same wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_W2",
+ "blueprint_name": "build W wood bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom2" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom5_wood",
+ "description": "Let's build some living quarters so we can expand. We will continue along the southwest corner.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_SW_wood",
+ "blueprint_name": "build SW wood bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom3" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_autocalc": true
+ },
+ {
+ "type": "recipe",
+ "result": "faction_base_modular_shelter_1_bedroom6_wood",
+ "description": "Let's build some living quarters so we can expand. We will continue along the south wall.",
+ "category": "CC_BUILDING",
+ "subcategory": "CSC_BUILDING_BASES",
+ "autolearn": false,
+ "never_learn": true,
+ "construction_blueprint": "fbmc_shelter_1_bedroom_S_wood",
+ "blueprint_name": "build S wood bedroom walls",
+ "blueprint_requires": [ { "id": "fbmc_shelter_1_bedroom5" } ],
+ "blueprint_provides": [ { "id": "fbmc_shelter_1_bedroom6" } ],
+ "blueprint_excludes": [ { "id": "fbmc_shelter_1_bedroom6" } ],
+ "blueprint_autocalc": true
+ }
+]
diff --git a/data/json/recipes/basecamps/recipe_modular_storehouse/recipe_modular_storehouse_wood.json b/data/json/recipes/basecamps/recipe_modular_storehouse/recipe_modular_storehouse_wood.json
index 0b8c23a0f3be7..5e74060cf803d 100644
--- a/data/json/recipes/basecamps/recipe_modular_storehouse/recipe_modular_storehouse_wood.json
+++ b/data/json/recipes/basecamps/recipe_modular_storehouse/recipe_modular_storehouse_wood.json
@@ -197,7 +197,7 @@
{
"type": "recipe",
"result": "faction_base_modular_decorative1_northwest",
- "description": "Some benches around the outside would be nice. Build some to the northwest.",
+ "description": "Some benches around the outside would be nice. Build some to the northwest.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -212,7 +212,7 @@
{
"type": "recipe",
"result": "faction_base_modular_decorative2_northeast",
- "description": "Some benches around the outside would be nice. Build some to the northeast.",
+ "description": "Some benches around the outside would be nice. Build some to the northeast.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -227,7 +227,7 @@
{
"type": "recipe",
"result": "faction_base_modular_decorative3_southeast",
- "description": "Some benches around the outside would be nice. Build some to the southeast.",
+ "description": "Some benches around the outside would be nice. Build some to the southeast.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
@@ -242,7 +242,7 @@
{
"type": "recipe",
"result": "faction_base_modular_decorative4_southwest",
- "description": "Some benches around the outside would be nice. Build some to the southwest.",
+ "description": "Some benches around the outside would be nice. Build some to the southwest.",
"category": "CC_BUILDING",
"subcategory": "CSC_BUILDING_BASES",
"autolearn": false,
diff --git a/data/json/recipes/basecamps/recipe_primitive_field.json b/data/json/recipes/basecamps/recipe_primitive_field.json
index ffebaf7ae5406..98f016cf25bc0 100644
--- a/data/json/recipes/basecamps/recipe_primitive_field.json
+++ b/data/json/recipes/basecamps/recipe_primitive_field.json
@@ -442,7 +442,7 @@
"components": [
[ [ "processor", 2 ] ],
[ [ "RAM", 2 ] ],
- [ [ "small_lcd_screen", 1 ] ],
+ [ [ "large_lcd_screen", 1 ] ],
[ [ "e_scrap", 8 ] ],
[ [ "frame", 1 ] ],
[ [ "circuit", 4 ] ],
@@ -893,7 +893,7 @@
"autolearn": false,
"never_learn": true,
"time": "510 m",
- "blueprint_requires": [ { "id": "not_an_upgrade" } ],
+ "//blueprint_requires": [ { "id": "not_an_upgrade" } ],
"qualities": [ [ { "id": "DIG", "level": 1 } ] ],
"components": [ [ [ "stick", 3 ] ] ]
},
@@ -908,7 +908,7 @@
"autolearn": false,
"never_learn": true,
"time": "1530 m",
- "blueprint_requires": [ { "id": "not_an_upgrade" } ],
+ "//blueprint_requires": [ { "id": "not_an_upgrade" } ],
"qualities": [ [ { "id": "DIG", "level": 2 } ] ],
"components": [ [ [ "pointy_stick", 68 ] ] ]
},
diff --git a/data/json/recipes/chem/fuel.json b/data/json/recipes/chem/fuel.json
index 749fbfd117a59..50f821a3f24c1 100644
--- a/data/json/recipes/chem/fuel.json
+++ b/data/json/recipes/chem/fuel.json
@@ -63,10 +63,9 @@
[
[ "cooking_oil", 64 ],
[ "cooking_oil2", 64 ],
- [ "lard", 8 ],
- [ "tallow", 8 ],
+ [ "edible_tallow_lard", 8, "LIST" ],
[ "tallow_tainted", 8 ],
- [ "fat", 16 ],
+ [ "any_fat", 16, "LIST" ],
[ "fat_tainted", 16 ],
[ "lamp_oil", 1000 ]
]
@@ -87,12 +86,11 @@
"components": [
[ [ "water", 1 ], [ "water_clean", 1 ] ],
[
- [ "tallow", 2 ],
+ [ "edible_tallow_lard", 2, "LIST" ],
[ "tallow_tainted", 2 ],
- [ "lard", 2 ],
[ "cooking_oil", 16 ],
[ "cooking_oil2", 16 ],
- [ "fat", 6 ],
+ [ "any_fat", 6, "LIST" ],
[ "fat_tainted", 6 ]
]
],
diff --git a/data/json/recipes/food/dry.json b/data/json/recipes/food/dry.json
index 6db23c894df33..ef158c8d40079 100644
--- a/data/json/recipes/food/dry.json
+++ b/data/json/recipes/food/dry.json
@@ -29,6 +29,7 @@
{
"type": "recipe",
"result": "dry_beans",
+ "charges": 1,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_DRY",
"skill_used": "cooking",
@@ -42,6 +43,7 @@
{
"type": "recipe",
"result": "dry_beans",
+ "charges": 1,
"category": "CC_FOOD",
"id_suffix": "frozen_ingredients",
"subcategory": "CSC_FOOD_DRY",
@@ -118,7 +120,7 @@
"batch_time_factors": [ 67, 5 ],
"book_learn": [ [ "cookbook_human", 4 ] ],
"tools": [ [ [ "dehydrator", 25 ], [ "char_smoker", 25 ] ] ],
- "components": [ [ [ "human_flesh", 1 ] ] ]
+ "components": [ [ [ "human_meat", 1, "LIST" ] ] ]
},
{
"result": "dry_hflesh",
@@ -132,7 +134,7 @@
"batch_time_factors": [ 67, 5 ],
"book_learn": [ [ "cookbook_human", 4 ] ],
"tools": [ [ [ "dehydrator", 25 ], [ "char_smoker", 25 ] ], [ [ "surface_heat", 5, "LIST" ] ] ],
- "components": [ [ [ "human_flesh", 1 ] ] ]
+ "components": [ [ [ "human_meat", 1, "LIST" ] ] ]
},
{
"type": "recipe",
@@ -145,7 +147,7 @@
"autolearn": true,
"batch_time_factors": [ 67, 5 ],
"tools": [ [ [ "dehydrator", 25 ], [ "char_smoker", 25 ] ] ],
- "components": [ [ [ "meat", 1 ], [ "meat_scrap", 10 ] ] ]
+ "components": [ [ [ "meat_red_raw", 1, "LIST" ] ] ]
},
{
"type": "recipe",
@@ -159,7 +161,7 @@
"autolearn": true,
"batch_time_factors": [ 67, 5 ],
"tools": [ [ [ "dehydrator", 25 ], [ "char_smoker", 25 ] ], [ [ "surface_heat", 5, "LIST" ] ] ],
- "components": [ [ [ "meat", 1 ], [ "meat_scrap", 10 ] ] ]
+ "components": [ [ [ "meat_red_raw", 1, "LIST" ] ] ]
},
{
"result": "dry_meat_tainted",
@@ -218,6 +220,7 @@
{
"type": "recipe",
"result": "dry_veggy",
+ "charges": 1,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_DRY",
"skill_used": "cooking",
@@ -231,6 +234,7 @@
{
"type": "recipe",
"result": "dry_veggy",
+ "charges": 1,
"category": "CC_FOOD",
"id_suffix": "frozen_ingredients",
"subcategory": "CSC_FOOD_DRY",
@@ -244,6 +248,7 @@
},
{
"result": "dry_veggy_tainted",
+ "charges": 1,
"type": "recipe",
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_DRY",
@@ -257,6 +262,7 @@
},
{
"result": "dry_veggy_tainted",
+ "charges": 1,
"type": "recipe",
"category": "CC_FOOD",
"id_suffix": "frozen_ingredients",
@@ -276,6 +282,7 @@
"subcategory": "CSC_FOOD_DRY",
"skill_used": "cooking",
"difficulty": 4,
+ "charges": 4,
"time": "12 m",
"batch_time_factors": [ 83, 3 ],
"book_learn": [ [ "cookbook_human", 4 ] ],
@@ -291,6 +298,7 @@
"subcategory": "CSC_FOOD_DRY",
"skill_used": "cooking",
"difficulty": 4,
+ "charges": 4,
"time": "9 m",
"batch_time_factors": [ 83, 3 ],
"book_learn": [ [ "cookbook_human", 4 ] ],
@@ -363,13 +371,13 @@
"subcategory": "CSC_FOOD_DRY",
"skill_used": "cooking",
"difficulty": 4,
- "charges": 3,
+ "charges": 4,
"time": "12 m",
"batch_time_factors": [ 83, 3 ],
"autolearn": true,
"qualities": [ { "id": "CHEM", "level": 2 } ],
"tools": [ [ [ "mortar_pestle", -1 ] ], [ [ "surface_heat", 25, "LIST" ] ] ],
- "components": [ [ [ "dry_meat", 1 ], [ "dry_fish", 1 ] ] ]
+ "components": [ [ [ "dry_meat", 1 ], [ "dry_fish", 3 ] ] ]
},
{
"result": "protein_powder",
@@ -379,17 +387,18 @@
"subcategory": "CSC_FOOD_DRY",
"skill_used": "cooking",
"difficulty": 4,
- "charges": 3,
+ "charges": 4,
"time": "9 m",
"batch_time_factors": [ 83, 3 ],
"autolearn": true,
"qualities": [ { "id": "CHEM", "level": 2 } ],
"tools": [ [ [ "food_processor", 20 ] ], [ [ "surface_heat", 10, "LIST" ] ] ],
- "components": [ [ [ "dry_meat", 1 ], [ "dry_fish", 1 ] ] ]
+ "components": [ [ [ "dry_meat", 1 ], [ "dry_fish", 3 ] ] ]
},
{
"type": "recipe",
"result": "dry_lentils",
+ "charges": 1,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_DRY",
"skill_used": "cooking",
@@ -403,6 +412,7 @@
{
"type": "recipe",
"result": "dry_lentils",
+ "charges": 1,
"category": "CC_FOOD",
"id_suffix": "frozen_ingredients",
"subcategory": "CSC_FOOD_DRY",
diff --git a/data/json/recipes/food/frozen.json b/data/json/recipes/food/frozen.json
index d367b161e54a8..de4b00b2a1eac 100644
--- a/data/json/recipes/food/frozen.json
+++ b/data/json/recipes/food/frozen.json
@@ -201,7 +201,7 @@
"autolearn": true,
"qualities": [ { "id": "COOK", "level": 3 } ],
"tools": [ [ [ "rock_quern", -1 ], [ "clay_quern", -1 ], [ "mortar_pestle", -1 ], [ "food_processor", 10 ] ] ],
- "components": [ [ [ "milk_standard", 2, "LIST" ] ], [ [ "yoghurt", 1 ] ], [ [ "sugar", 5 ] ] ]
+ "components": [ [ [ "yoghurt", 1 ] ], [ [ "sugar", 5 ] ] ]
},
{
"result": "icecream_sorbet",
diff --git a/data/json/recipes/food/offal_dishes.json b/data/json/recipes/food/offal_dishes.json
index 085427124bf2a..3b8ad6a5d1996 100644
--- a/data/json/recipes/food/offal_dishes.json
+++ b/data/json/recipes/food/offal_dishes.json
@@ -68,6 +68,7 @@
{
"type": "recipe",
"result": "liver_onion",
+ "result_mult": 2,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_MEAT",
"skill_used": "cooking",
@@ -77,7 +78,7 @@
"book_learn": [ [ "scots_cookbook", 2 ], [ "family_cookbook", 0 ], [ "cookbook", 0 ] ],
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
"tools": [ [ [ "surface_heat", 50, "LIST" ] ] ],
- "components": [ [ [ "liver", 2 ] ], [ [ "onion", 1 ], [ "irradiated_onion", 1 ] ] ]
+ "components": [ [ [ "liver", 8 ] ], [ [ "onion", 1 ], [ "irradiated_onion", 1 ] ] ]
},
{
"type": "recipe",
@@ -180,7 +181,7 @@
"tools": [ [ [ "surface_heat", 75, "LIST" ] ], [ [ "rock_quern", -1 ], [ "clay_quern", -1 ], [ "food_processor", 20 ] ] ],
"components": [
[ [ "liver", 8 ] ],
- [ [ "fat", 2 ], [ "lard", 2 ] ],
+ [ [ "edible_fat", 2, "LIST" ], [ "lard", 2 ], [ "mutant_lard", 2 ] ],
[ [ "powder_eggs", 10 ], [ "eggs_bird", 2, "LIST" ] ],
[ [ "onion", 1 ], [ "irradiated_onion", 1 ] ],
[ [ "flour", 2 ] ],
@@ -235,6 +236,7 @@
{
"type": "recipe",
"result": "grilled_sweetbread",
+ "charges": 1,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_MEAT",
"skill_used": "cooking",
diff --git a/data/json/recipes/food/pasta.json b/data/json/recipes/food/pasta.json
index 557267985fe5b..4599663dbffb9 100644
--- a/data/json/recipes/food/pasta.json
+++ b/data/json/recipes/food/pasta.json
@@ -48,8 +48,8 @@
[ [ "water", 1 ], [ "water_clean", 1 ] ],
[
[ "seasoning_italian", 4 ],
- [ "sauce_red", 1 ],
- [ "tomato", 2 ],
+ [ "sauce_red", 2 ],
+ [ "tomato", 1 ],
[ "irradiated_tomato", 1 ],
[ "can_tomato", 1 ],
[ "wild_herbs", 10 ]
@@ -74,7 +74,7 @@
[ [ "water", 1 ], [ "water_clean", 1 ] ],
[
[ "seasoning_italian", 4 ],
- [ "sauce_red", 1 ],
+ [ "sauce_red", 2 ],
[ "tomato", 1 ],
[ "irradiated_tomato", 1 ],
[ "can_tomato", 1 ],
@@ -101,14 +101,14 @@
[ [ "water", 1 ], [ "water_clean", 1 ] ],
[
[ "seasoning_italian", 4 ],
- [ "sauce_red", 1 ],
+ [ "sauce_red", 2 ],
[ "tomato", 1 ],
[ "irradiated_tomato", 1 ],
[ "can_tomato", 1 ],
[ "wild_herbs", 10 ]
],
[ [ "cheese", 1 ], [ "cheese_hard", 1 ], [ "can_cheese", 1 ] ],
- [ [ "human_flesh", 1 ], [ "human_canned", 1 ], [ "rehydrated_hflesh", 1 ], [ "dry_hflesh", 1 ] ]
+ [ [ "human_meat", 1, "LIST" ], [ "human_canned", 1 ], [ "rehydrated_hflesh", 1 ], [ "dry_hflesh", 1 ] ]
]
},
{
@@ -128,13 +128,13 @@
[ [ "water", 1 ], [ "water_clean", 1 ] ],
[
[ "seasoning_italian", 4 ],
- [ "sauce_red", 1 ],
- [ "tomato", 2 ],
+ [ "sauce_red", 2 ],
+ [ "tomato", 1 ],
[ "irradiated_tomato", 1 ],
[ "can_tomato", 1 ],
[ "wild_herbs", 10 ]
],
- [ [ "human_flesh", 1 ], [ "human_canned", 1 ], [ "rehydrated_hflesh", 1 ], [ "dry_hflesh", 1 ] ]
+ [ [ "human_meat", 1, "LIST" ], [ "human_canned", 1 ], [ "rehydrated_hflesh", 1 ], [ "dry_hflesh", 1 ] ]
]
},
{
@@ -175,7 +175,7 @@
"time": "30 m",
"autolearn": true,
"tools": [ [ [ "surface_heat", 25, "LIST" ] ], [ [ "pastaextruder", -1 ] ] ],
- "components": [ [ [ "flour", 9 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ]
+ "components": [ [ [ "flour", 7 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ]
},
{
"result": "spaghetti_raw",
@@ -260,7 +260,7 @@
"tools": [ [ [ "surface_heat", 4, "LIST" ] ] ],
"components": [
[ [ "spaghetti_raw", 1 ], [ "macaroni_raw", 1 ], [ "noodles_fast", 1 ] ],
- [ [ "human_flesh", 1 ], [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ] ],
+ [ [ "human_meat", 1, "LIST" ], [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ] ],
[ [ "cheese", 1 ], [ "cheese_hard", 1 ], [ "can_cheese", 1 ] ],
[ [ "water", 1 ], [ "water_clean", 1 ] ]
]
diff --git a/data/json/recipes/food/seed.json b/data/json/recipes/food/seed.json
index 9adc21a453611..a0adc992e9195 100644
--- a/data/json/recipes/food/seed.json
+++ b/data/json/recipes/food/seed.json
@@ -501,5 +501,18 @@
"autolearn": true,
"components": [ [ [ "chamomile", 1 ] ] ],
"flags": [ "ALLOW_ROTTEN" ]
+ },
+ {
+ "result": "seed_sugar_beet",
+ "type": "recipe",
+ "category": "CC_FOOD",
+ "subcategory": "CSC_FOOD_SEEDS",
+ "skill_used": "survival",
+ "difficulty": 2,
+ "time": "5 m",
+ "autolearn": true,
+ "qualities": [ { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sugar_beet", 1 ] ] ],
+ "flags": [ "ALLOW_ROTTEN" ]
}
]
diff --git a/data/json/recipes/other/containers.json b/data/json/recipes/other/containers.json
index 5d8e9886bdf9c..f00dbe49f849f 100644
--- a/data/json/recipes/other/containers.json
+++ b/data/json/recipes/other/containers.json
@@ -73,9 +73,9 @@
"difficulty": 8,
"time": "164 m",
"autolearn": true,
- "using": [ [ "forging_standard", 8 ], [ "steel_standard", 13 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ]
+ "using": [ [ "blacksmithing_standard", 52 ], [ "steel_standard", 13 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ]
},
{
"type": "recipe",
@@ -140,8 +140,7 @@
"difficulty": 2,
"time": 90000,
"autolearn": true,
- "qualities": [ { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "anvil", -1 ] ], [ [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
- "components": [ [ [ "steel_lump", 1 ], [ "steel_chunk", 2 ], [ "scrap", 6 ] ] ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ]
}
]
diff --git a/data/json/recipes/other/medical.json b/data/json/recipes/other/medical.json
index 87e6a63ff1808..5d5679f13ffe7 100644
--- a/data/json/recipes/other/medical.json
+++ b/data/json/recipes/other/medical.json
@@ -113,7 +113,6 @@
"subcategory": "CSC_OTHER_MEDICAL",
"skill_used": "survival",
"difficulty": 1,
- "skills_required": [ "survival", 1 ],
"time": "5 m",
"book_learn": [
[ "emergency_book", 1 ],
diff --git a/data/json/recipes/other/other.json b/data/json/recipes/other/other.json
index ecd9e5481aeae..8080d5396999a 100644
--- a/data/json/recipes/other/other.json
+++ b/data/json/recipes/other/other.json
@@ -11,6 +11,7 @@
"components": [
[
[ "meat", 1 ],
+ [ "mutant_meat", 1 ],
[ "fish", 1 ],
[ "corn", 1 ],
[ "irradiated_corn", 1 ],
diff --git a/data/json/recipes/other/parts.json b/data/json/recipes/other/parts.json
index 841a1ea833a09..3d92677546f09 100644
--- a/data/json/recipes/other/parts.json
+++ b/data/json/recipes/other/parts.json
@@ -1,4 +1,30 @@
[
+ {
+ "result": "circsaw_blade",
+ "type": "recipe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 6,
+ "time": "10 h",
+ "autolearn": true,
+ "using": [ [ "blacksmithing_standard", 2 ], [ "steel_tiny", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
+ },
+ {
+ "result": "blade_scythe",
+ "type": "recipe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 5,
+ "time": "5 h",
+ "autolearn": true,
+ "using": [ [ "blacksmithing_standard", 6 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
+ },
{
"result": "hinge",
"type": "recipe",
diff --git a/data/json/recipes/other/tool.json b/data/json/recipes/other/tool.json
index d175cac33fd52..bfef49b9cbea2 100644
--- a/data/json/recipes/other/tool.json
+++ b/data/json/recipes/other/tool.json
@@ -1,4 +1,138 @@
[
+ {
+ "result": "g_shovel",
+ "type": "recipe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_TOOLS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "time": "3 h",
+ "autolearn": true,
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ] ]
+ },
+ {
+ "result": "sickle",
+ "type": "recipe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_TOOLS",
+ "skill_used": "fabrication",
+ "difficulty": 5,
+ "time": "3 h",
+ "autolearn": true,
+ "using": [ [ "blacksmithing_standard", 6 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ] ]
+ },
+ {
+ "result": "knife_paring",
+ "type": "recipe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_TOOLS",
+ "skill_used": "fabrication",
+ "difficulty": 3,
+ "time": "3 h",
+ "autolearn": true,
+ "using": [ [ "blacksmithing_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "scrap", 2 ] ] ]
+ },
+ {
+ "result": "knife_chef",
+ "type": "recipe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_TOOLS",
+ "skill_used": "fabrication",
+ "difficulty": 3,
+ "time": "3 h",
+ "autolearn": true,
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
+ },
+ {
+ "result": "knife_carving",
+ "type": "recipe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_TOOLS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "time": "3 h",
+ "autolearn": true,
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
+ },
+ {
+ "result": "knife_bread",
+ "type": "recipe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_TOOLS",
+ "skill_used": "fabrication",
+ "difficulty": 3,
+ "time": "3 h",
+ "autolearn": true,
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
+ },
+ {
+ "result": "knife_vegetable_cleaver",
+ "type": "recipe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_TOOLS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "time": "3 h",
+ "autolearn": true,
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
+ },
+ {
+ "result": "knife_meat_cleaver",
+ "type": "recipe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_TOOLS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "time": "3 h",
+ "autolearn": true,
+ "using": [ [ "blacksmithing_standard", 2 ], [ "steel_tiny", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
+ },
+ {
+ "result": "knife_folding",
+ "type": "recipe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_TOOLS",
+ "skill_used": "fabrication",
+ "difficulty": 7,
+ "time": "5 h",
+ "autolearn": true,
+ "using": [ [ "blacksmithing_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "scrap", 4 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "result": "steel_pan",
+ "type": "recipe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_TOOLS",
+ "skill_used": "fabrication",
+ "difficulty": 2,
+ "time": "1 h",
+ "autolearn": true,
+ "using": [ [ "blacksmithing_standard", 3 ], [ "steel_tiny", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
+ },
{
"result": "awl_bone",
"type": "recipe",
@@ -39,20 +173,6 @@
"tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "mold_plastic", -1 ] ] ],
"components": [ [ [ "plastic_chunk", 1 ] ], [ [ "scrap", 2 ] ] ]
},
- {
- "type": "recipe",
- "result": "xacto",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_TOOLS",
- "skill_used": "fabrication",
- "difficulty": 7,
- "time": "5 h",
- "autolearn": true,
- "using": [ [ "forging_standard", 5 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ] ],
- "components": [ [ [ "plastic_chunk", 1 ] ], [ [ "scrap", 1 ] ] ]
- },
{
"result": "fishing_rod_professional",
"type": "recipe",
@@ -90,7 +210,7 @@
"skills_required": [ "mechanics", 3 ],
"time": "300 m",
"book_learn": [ [ "manual_mechanics", 3 ], [ "manual_fabrication", 5 ], [ "textbook_fabrication", 5 ] ],
- "using": [ [ "forging_standard", 10 ], [ "steel_standard", 1 ] ],
+ "using": [ [ "forging_standard", 10 ], [ "steel_standard", 5 ] ],
"qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
"tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "swage", -1 ] ] ]
},
@@ -311,9 +431,7 @@
"difficulty": 2,
"time": 80000,
"autolearn": true,
- "qualities": [ { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "anvil", -1 ] ], [ [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
- "components": [ [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ] ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ]
},
{
"result": "crowbar",
@@ -416,7 +534,7 @@
"batch_time_factors": [ 50, 5 ],
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
"tools": [ [ [ "surface_heat", 7, "LIST" ] ] ],
- "components": [ [ [ "stick", 1 ], [ "2x4", 1 ], [ "splinter", 1 ], [ "pool_cue", 1 ], [ "torch_done", 1 ] ], [ [ "pine_bough", 2 ] ] ]
+ "components": [ [ [ "stick", 1 ], [ "2x4", 1 ], [ "pool_cue", 1 ], [ "torch_done", 1 ] ], [ [ "pine_bough", 2 ] ] ]
},
{
"type": "recipe",
diff --git a/data/json/recipes/other/vehicle.json b/data/json/recipes/other/vehicle.json
index 89b720188af6d..c13b9da298930 100644
--- a/data/json/recipes/other/vehicle.json
+++ b/data/json/recipes/other/vehicle.json
@@ -107,9 +107,9 @@
"difficulty": 4,
"time": "60 m",
"autolearn": true,
- "using": [ [ "rope_natural", 4 ], [ "welding_standard", 12 ] ],
+ "using": [ [ "rope_natural", 4 ], [ "welding_standard", 12 ], [ "steel_standard", 2 ] ],
"qualities": [ { "id": "HAMMER", "level": 2 }, { "id": "SAW_M", "level": 1 }, { "id": "WRENCH", "level": 1 } ],
- "components": [ [ [ "frame", 4 ] ], [ [ "steel_chunk", 4 ], [ "scrap", 12 ], [ "pipe", 12 ] ] ]
+ "components": [ [ [ "frame", 4 ] ], [ [ "pipe", 11 ] ] ]
},
{
"type": "recipe",
@@ -122,7 +122,7 @@
"difficulty": 4,
"time": "60 m",
"autolearn": true,
- "using": [ [ "welding_standard", 2 ] ],
+ "using": [ [ "welding_standard", 2 ], [ "steel_standard", 1 ] ],
"qualities": [ { "id": "HAMMER", "level": 2 }, { "id": "SAW_M", "level": 1 }, { "id": "WRENCH", "level": 1 } ],
"components": [ [ [ "pipe", 12 ] ], [ [ "cargo_rack", 1 ] ] ]
},
diff --git a/data/json/recipes/recipe_ammo.json b/data/json/recipes/recipe_ammo.json
index 96a72de8be44d..66a343a1d4dde 100644
--- a/data/json/recipes/recipe_ammo.json
+++ b/data/json/recipes/recipe_ammo.json
@@ -68,7 +68,8 @@
"time": "45 m",
"autolearn": true,
"book_learn": [ [ "textbook_fabrication", 1 ] ],
- "tools": [ [ [ "press", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
+ "using": [ [ "forging_standard", 5 ], [ "steel_standard", 6 ] ],
+ "tools": [ [ [ "press", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [ [ [ "weights", 10, "LIST" ] ] ]
},
{
@@ -711,9 +712,9 @@
"difficulty": 2,
"time": "100 m",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 200 ], [ "oxy_torch", 40 ] ] ],
- "components": [ [ [ "steel_lump", 4 ], [ "steel_chunk", 16 ], [ "scrap", 48 ] ] ]
+ "using": [ [ "blacksmithing_standard", 16 ], [ "steel_standard", 4 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ]
},
{
"type": "recipe",
@@ -725,9 +726,9 @@
"difficulty": 2,
"time": "180 m",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
- "components": [ [ [ "steel_chunk", 1 ], [ "scrap", 3 ] ] ]
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -846,7 +847,7 @@
"book_learn": [ [ "textbook_gaswarfare", 4 ], [ "textbook_chemistry", 4 ], [ "adv_chemistry", 4 ], [ "recipe_labchem", 4 ] ],
"qualities": [ { "id": "CHEM", "level": 1 } ],
"tools": [ [ [ "surface_heat", 5, "LIST" ] ] ],
- "components": [ [ [ "fungicide", 50 ] ], [ [ "chem_sulphur", 10 ] ] ]
+ "components": [ [ [ "fungicide", 50 ] ], [ [ "chem_sulphur", 150 ] ] ]
},
{
"type": "recipe",
diff --git a/data/json/recipes/recipe_deconstruction.json b/data/json/recipes/recipe_deconstruction.json
index dc84eb41d4dc5..01e83e463285c 100644
--- a/data/json/recipes/recipe_deconstruction.json
+++ b/data/json/recipes/recipe_deconstruction.json
@@ -518,13 +518,15 @@
"qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
[ [ "ai_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
+ [ [ "pathfinding_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
[ [ "small_storage_battery", 1 ] ],
[ [ "RAM", 1 ] ],
+ [ [ "processor", 1 ] ],
[ [ "scrap", 1 ] ],
[ [ "quad_rotors", 1 ] ],
- [ [ "sensor_module", 1 ] ],
- [ [ "lens", 1 ] ],
- [ [ "identification_module", 1 ] ]
+ [ [ "lens", 1 ] ]
]
},
{
@@ -632,7 +634,7 @@
[ [ "memory_module", 1 ] ],
[ [ "pathfinding_module", 1 ] ],
[ [ "medium_storage_battery", 1 ] ],
- [ [ "motor", 1 ] ],
+ [ [ "robot_controls", 1 ] ],
[ [ "steel_chunk", 20 ] ]
]
},
@@ -736,13 +738,14 @@
"qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
[ [ "ai_module", 1 ] ],
- [ [ "RAM", 1 ] ],
- [ [ "gun_module", 2 ] ],
- [ [ "hk_mp5", 2 ] ],
- [ [ "small_storage_battery", 1 ] ],
- [ [ "sensor_module", 1 ] ],
[ [ "identification_module", 1 ] ],
+ [ [ "targeting_module", 1 ] ],
+ [ [ "gun_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
+ [ [ "small_storage_battery", 1 ] ],
[ [ "power_supply", 1 ] ],
+ [ [ "robot_controls", 1 ] ],
+ [ [ "hk_mp5", 1 ] ],
[ [ "turret_chassis", 1 ] ]
]
},
@@ -756,13 +759,14 @@
"qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
[ [ "ai_module", 1 ] ],
- [ [ "RAM", 1 ] ],
[ [ "gun_module", 1 ] ],
+ [ [ "targeting_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
[ [ "m249", 1 ] ],
[ [ "small_storage_battery", 1 ] ],
- [ [ "sensor_module", 1 ] ],
- [ [ "identification_module", 1 ] ],
[ [ "power_supply", 1 ] ],
+ [ [ "robot_controls", 1 ] ],
[ [ "turret_chassis", 1 ] ]
]
},
@@ -776,13 +780,14 @@
"qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
[ [ "ai_module", 1 ] ],
- [ [ "RAM", 1 ] ],
[ [ "gun_module", 1 ] ],
+ [ [ "targeting_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
[ [ "m240", 1 ] ],
[ [ "small_storage_battery", 1 ] ],
- [ [ "sensor_module", 1 ] ],
- [ [ "identification_module", 1 ] ],
[ [ "power_supply", 1 ] ],
+ [ [ "robot_controls", 1 ] ],
[ [ "turret_chassis", 1 ] ]
]
},
@@ -796,12 +801,13 @@
"qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
[ [ "ai_module", 1 ] ],
- [ [ "RAM", 1 ] ],
+ [ [ "identification_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
[ [ "gun_module", 1 ] ],
+ [ [ "targeting_module", 1 ] ],
[ [ "m2browning", 1 ] ],
[ [ "small_storage_battery", 1 ] ],
- [ [ "sensor_module", 1 ] ],
- [ [ "identification_module", 1 ] ],
+ [ [ "robot_controls", 1 ] ],
[ [ "power_supply", 1 ] ],
[ [ "turret_chassis", 1 ] ]
]
@@ -816,14 +822,15 @@
"qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
[ [ "ai_module", 1 ] ],
- [ [ "RAM", 1 ] ],
[ [ "gun_module", 1 ] ],
+ [ [ "targeting_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
[ [ "laser_cannon", 1 ] ],
[ [ "medium_storage_battery", 1 ] ],
- [ [ "sensor_module", 1 ] ],
- [ [ "identification_module", 1 ] ],
[ [ "solar_cell", 4 ] ],
[ [ "power_supply", 1 ] ],
+ [ [ "robot_controls", 1 ] ],
[ [ "turret_chassis", 1 ] ]
]
},
@@ -1514,13 +1521,6 @@
"qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [ [ [ "plastic_chunk", 1 ] ], [ [ "processor", 1 ] ], [ [ "light_minus_battery_cell", 1 ] ] ]
},
- {
- "result": "down_blanket",
- "type": "uncraft",
- "time": "2 m",
- "qualities": [ { "id": "CUT", "level": 1 } ],
- "components": [ [ [ "rag", 35 ] ], [ [ "down_feather", 160 ] ] ]
- },
{
"result": "down_pillow",
"type": "uncraft",
@@ -1762,6 +1762,22 @@
[ [ "small_storage_battery", 2 ] ]
]
},
+ {
+ "result": "large_lcd_screen",
+ "type": "uncraft",
+ "skill_used": "electronics",
+ "time": "30 m",
+ "using": [ [ "soldering_standard", 15 ] ],
+ "components": [ [ [ "e_scrap", 3 ] ], [ [ "plastic_chunk", 5 ] ] ]
+ },
+ {
+ "result": "small_lcd_screen",
+ "type": "uncraft",
+ "skill_used": "electronics",
+ "time": "10 m",
+ "using": [ [ "soldering_standard", 5 ] ],
+ "components": [ [ [ "e_scrap", 1 ] ], [ [ "plastic_chunk", 2 ] ] ]
+ },
{
"result": "basket_laundry",
"type": "uncraft",
@@ -1920,7 +1936,7 @@
"time": "30 m",
"using": [ [ "soldering_standard", 40 ], [ "welding_standard", 3 ] ],
"qualities": [ { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "SAW_M", "level": 1 } ],
- "components": [ [ [ "amplifier", 2 ] ], [ [ "cable", 20 ] ], [ [ "bearing", 20 ] ], [ [ "steel_chunk", 3 ] ] ]
+ "components": [ [ [ "amplifier", 2 ] ], [ [ "cable", 20 ] ], [ [ "bearing", 10 ] ], [ [ "steel_lump", 5 ] ], [ [ "e_scrap", 5 ] ] ]
},
{
"result": "motor_large",
@@ -1935,7 +1951,8 @@
[ [ "amplifier", 4 ] ],
[ [ "cable", 30 ] ],
[ [ "bearing", 40 ] ],
- [ [ "steel_chunk", 7 ] ]
+ [ [ "steel_lump", 15 ] ],
+ [ [ "e_scrap", 5 ] ]
]
},
{
@@ -2250,7 +2267,7 @@
"type": "uncraft",
"time": "1 m 30 s",
"qualities": [ { "id": "HAMMER", "level": 1 } ],
- "components": [ [ [ "scrap", 7 ] ] ]
+ "components": [ [ [ "scrap", 54 ] ] ]
},
{
"result": "stick_long",
@@ -2337,6 +2354,7 @@
"time": "1 h",
"qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
+ [ [ "large_lcd_screen", 1 ] ],
[ [ "processor", 1 ] ],
[ [ "RAM", 2 ] ],
[ [ "cable", 8 ] ],
diff --git a/data/json/recipes/recipe_electronics.json b/data/json/recipes/recipe_electronics.json
index 12892f6a0aa30..da8906f65b656 100644
--- a/data/json/recipes/recipe_electronics.json
+++ b/data/json/recipes/recipe_electronics.json
@@ -479,9 +479,8 @@
"time": "1 h",
"decomp_learn": 4,
"book_learn": [ [ "textbook_survival", 3 ], [ "advanced_electronics", 3 ], [ "manual_electronics", 3 ] ],
- "using": [ [ "soldering_standard", 10 ], [ "forging_standard", 10 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "SCREW", "level": 1 }, { "id": "HAMMER", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ] ],
+ "using": [ [ "soldering_standard", 10 ], [ "blacksmithing_standard", 10 ] ],
+ "qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
[ [ "element", 3 ] ],
[ [ "amplifier", 1 ] ],
@@ -1289,11 +1288,12 @@
"components": [
[ [ "ai_module", 1 ] ],
[ [ "identification_module", 1 ] ],
- [ [ "RAM", 1 ] ],
- [ [ "camera", 1 ] ],
+ [ [ "targeting_module", 1 ] ],
+ [ [ "gun_module", 1 ] ],
+ [ [ "camera", 1 ], [ "camera_pro", 1 ], [ "omnicamera", 1 ], [ "sensor_module", 1 ] ],
[ [ "small_storage_battery", 1 ] ],
[ [ "power_supply", 1 ] ],
- [ [ "motor_tiny", 3 ] ],
+ [ [ "robot_controls", 1 ] ],
[ [ "hk_mp5", 1 ] ],
[ [ "mp5mag", 1 ] ],
[ [ "sheet_metal", 2 ] ],
@@ -1322,14 +1322,15 @@
],
"components": [
[ [ "ai_module", 1 ] ],
- [ [ "RAM", 1 ] ],
[ [ "gun_module", 1 ] ],
+ [ [ "targeting_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
[ [ "laser_cannon", 1 ] ],
[ [ "medium_storage_battery", 1 ] ],
- [ [ "sensor_module", 1 ] ],
- [ [ "identification_module", 1 ] ],
[ [ "solar_cell", 4 ] ],
[ [ "power_supply", 1 ] ],
+ [ [ "robot_controls", 1 ] ],
[ [ "turret_chassis", 1 ] ]
]
},
@@ -1354,13 +1355,14 @@
],
"components": [
[ [ "ai_module", 1 ] ],
- [ [ "RAM", 1 ] ],
[ [ "gun_module", 1 ] ],
+ [ [ "targeting_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
[ [ "m249", 1 ] ],
[ [ "small_storage_battery", 1 ] ],
- [ [ "sensor_module", 1 ] ],
- [ [ "identification_module", 1 ] ],
[ [ "power_supply", 1 ] ],
+ [ [ "robot_controls", 1 ] ],
[ [ "turret_chassis", 1 ] ]
]
},
@@ -1385,13 +1387,14 @@
],
"components": [
[ [ "ai_module", 1 ] ],
- [ [ "RAM", 1 ] ],
[ [ "gun_module", 1 ] ],
+ [ [ "targeting_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
[ [ "m240", 1 ] ],
[ [ "small_storage_battery", 1 ] ],
- [ [ "sensor_module", 1 ] ],
- [ [ "identification_module", 1 ] ],
[ [ "power_supply", 1 ] ],
+ [ [ "robot_controls", 1 ] ],
[ [ "turret_chassis", 1 ] ]
]
},
@@ -1543,13 +1546,15 @@
],
"components": [
[ [ "ai_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
+ [ [ "pathfinding_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
[ [ "small_storage_battery", 1 ] ],
[ [ "RAM", 1 ] ],
+ [ [ "processor", 1 ] ],
[ [ "scrap", 1 ] ],
[ [ "quad_rotors", 1 ] ],
- [ [ "sensor_module", 1 ] ],
- [ [ "lens", 1 ] ],
- [ [ "identification_module", 1 ] ]
+ [ [ "lens", 1 ] ]
]
},
{
@@ -1577,7 +1582,7 @@
[ [ "memory_module", 1 ] ],
[ [ "pathfinding_module", 1 ] ],
[ [ "medium_storage_battery", 1 ] ],
- [ [ "motor", 1 ] ],
+ [ [ "robot_controls", 1 ] ],
[ [ "steel_chunk", 20 ] ]
]
},
@@ -1703,7 +1708,6 @@
],
"components": [
[ [ "ai_module", 1 ] ],
- [ [ "RAM", 1 ] ],
[ [ "small_storage_battery", 1 ] ],
[ [ "scrap", 1 ] ],
[ [ "spidery_legs_small", 1 ] ],
@@ -1881,12 +1885,13 @@
],
"components": [
[ [ "ai_module", 1 ] ],
- [ [ "RAM", 1 ] ],
+ [ [ "identification_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
[ [ "gun_module", 1 ] ],
+ [ [ "targeting_module", 1 ] ],
[ [ "m2browning", 1 ] ],
[ [ "small_storage_battery", 1 ] ],
- [ [ "sensor_module", 1 ] ],
- [ [ "identification_module", 1 ] ],
+ [ [ "robot_controls", 1 ] ],
[ [ "power_supply", 1 ] ],
[ [ "turret_chassis", 1 ] ]
]
@@ -2035,7 +2040,7 @@
"book_learn": [ [ "manual_electronics", 2 ], [ "mag_electronics", 2 ] ],
"using": [ [ "soldering_standard", 5 ] ],
"qualities": [ { "id": "SCREW", "level": 1 } ],
- "components": [ [ [ "e_scrap", 1 ] ], [ [ "scrap", 1 ] ], [ [ "cable", 3 ] ] ]
+ "components": [ [ [ "e_scrap", 1 ] ], [ [ "scrap", 1 ] ], [ [ "cable", 1 ] ] ]
},
{
"type": "recipe",
@@ -2049,9 +2054,9 @@
"reversible": true,
"decomp_learn": 2,
"book_learn": [ [ "manual_electronics", 2 ], [ "mag_electronics", 2 ], [ "manual_mechanics", 2 ] ],
- "using": [ [ "soldering_standard", 5 ], [ "steel_standard", 5 ] ],
+ "using": [ [ "soldering_standard", 5 ], [ "steel_tiny", 1 ] ],
"qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "SCREW_FINE", "level": 1 } ],
- "components": [ [ [ "plastic_chunk", 1 ] ], [ [ "cable", 3 ] ], [ [ "e_scrap", 5 ] ] ]
+ "components": [ [ [ "cable", 3 ] ], [ [ "e_scrap", 3 ] ] ]
},
{
"type": "recipe",
@@ -2065,9 +2070,9 @@
"reversible": true,
"decomp_learn": 2,
"book_learn": [ [ "manual_electronics", 2 ], [ "mag_electronics", 2 ], [ "manual_mechanics", 2 ] ],
- "using": [ [ "soldering_standard", 5 ] ],
+ "using": [ [ "soldering_standard", 5 ], [ "steel_standard", 1 ] ],
"qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "SCREW", "level": 1 } ],
- "components": [ [ [ "steel_chunk", 2 ] ], [ [ "scrap", 2 ] ], [ [ "cable", 6 ] ] ]
+ "components": [ [ [ "e_scrap", 5 ] ], [ [ "cable", 6 ] ] ]
},
{
"type": "recipe",
@@ -2157,7 +2162,7 @@
[ [ "antenna", 1 ] ],
[ [ "processor", 1 ] ],
[ [ "RAM", 1 ] ],
- [ [ "small_lcd_screen", 1 ] ]
+ [ [ "large_lcd_screen", 1 ] ]
]
},
{
@@ -2398,12 +2403,13 @@
"difficulty": 6,
"time": "45 m",
"book_learn": [ [ "adv_chemistry", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 20 ], [ "oxy_torch", 4 ] ] ],
+ "using": [ [ "blacksmithing_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [
- [ [ "chem_manganese_dioxide", 2 ] ],
+ [ [ "chem_manganese_dioxide", 29 ] ],
[ [ "zinc_metal", 2 ] ],
- [ [ "chem_potassium_hydroxide", 1 ] ],
+ [ [ "chem_potassium_hydroxide", 7 ] ],
[ [ "water_clean", 1 ] ],
[ [ "steel_chunk", 1 ], [ "scrap", 2 ] ]
]
@@ -2418,12 +2424,13 @@
"difficulty": 6,
"time": "1 h",
"book_learn": [ [ "adv_chemistry", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 20 ], [ "oxy_torch", 4 ] ] ],
+ "using": [ [ "blacksmithing_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [
- [ [ "chem_manganese_dioxide", 6 ] ],
+ [ [ "chem_manganese_dioxide", 87 ] ],
[ [ "zinc_metal", 6 ] ],
- [ [ "chem_potassium_hydroxide", 3 ] ],
+ [ [ "chem_potassium_hydroxide", 20 ] ],
[ [ "water_clean", 3 ] ],
[ [ "steel_chunk", 3 ], [ "scrap", 6 ] ]
]
@@ -2438,12 +2445,13 @@
"difficulty": 6,
"time": "1 h 20 m",
"book_learn": [ [ "adv_chemistry", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 20 ], [ "oxy_torch", 4 ] ] ],
+ "using": [ [ "blacksmithing_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [
- [ [ "chem_manganese_dioxide", 24 ] ],
+ [ [ "chem_manganese_dioxide", 348 ] ],
[ [ "zinc_metal", 24 ] ],
- [ [ "chem_potassium_hydroxide", 12 ] ],
+ [ [ "chem_potassium_hydroxide", 82 ] ],
[ [ "water_clean", 12 ] ],
[ [ "steel_chunk", 12 ], [ "scrap", 24 ] ]
]
@@ -2458,12 +2466,13 @@
"difficulty": 6,
"time": "1 h 45 m",
"book_learn": [ [ "adv_chemistry", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 20 ], [ "oxy_torch", 4 ] ] ],
+ "using": [ [ "blacksmithing_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [
- [ [ "chem_manganese_dioxide", 50 ] ],
+ [ [ "chem_manganese_dioxide", 725 ] ],
[ [ "zinc_metal", 50 ] ],
- [ [ "chem_potassium_hydroxide", 25 ] ],
+ [ [ "chem_potassium_hydroxide", 170 ] ],
[ [ "water_clean", 25 ] ],
[ [ "steel_chunk", 25 ], [ "scrap", 50 ] ]
]
diff --git a/data/json/recipes/recipe_food.json b/data/json/recipes/recipe_food.json
index a34d87f208059..8fd1e41c8cc3a 100644
--- a/data/json/recipes/recipe_food.json
+++ b/data/json/recipes/recipe_food.json
@@ -32,8 +32,8 @@
"autolearn": true,
"qualities": [ { "id": "COOK", "level": 2 }, { "id": "CUT", "level": 1 } ],
"tools": [ [ [ "surface_heat", 5, "LIST" ] ] ],
- "charges": 4,
- "components": [ [ [ "flour", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ], [ [ "salt", 5 ] ], [ [ "sugar", 16 ] ] ]
+ "charges": 8,
+ "components": [ [ [ "flour", 10 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ], [ [ "salt", 1 ] ], [ [ "sugar", 5 ] ] ]
},
{
"type": "recipe",
@@ -123,6 +123,41 @@
"tools": [ [ [ "surface_heat", 1, "LIST" ] ] ],
"components": [ [ [ "meat_scrap", 1 ] ] ]
},
+ {
+ "type": "recipe",
+ "result": "mutant_meat_cooked",
+ "category": "CC_FOOD",
+ "subcategory": "CSC_FOOD_MEAT",
+ "skill_used": "cooking",
+ "time": "15 m",
+ "autolearn": true,
+ "batch_time_factors": [ 67, 5 ],
+ "qualities": [ { "id": "COOK", "level": 1 } ],
+ "tools": [ [ [ "surface_heat", 7, "LIST" ] ] ],
+ "components": [ [ [ "mutant_meat", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "mutant_meat_scrap_cooked",
+ "copy-from": "mutant_meat_cooked",
+ "time": "45 s",
+ "qualities": [ { "id": "COOK", "level": 1 } ],
+ "tools": [ [ [ "surface_heat", 1, "LIST" ] ] ],
+ "components": [ [ [ "mutant_meat_scrap", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "mutant_human_cooked",
+ "category": "CC_FOOD",
+ "subcategory": "CSC_FOOD_MEAT",
+ "skill_used": "cooking",
+ "time": "15 m",
+ "autolearn": true,
+ "batch_time_factors": [ 67, 5 ],
+ "qualities": [ { "id": "COOK", "level": 1 } ],
+ "tools": [ [ [ "surface_heat", 7, "LIST" ] ] ],
+ "components": [ [ [ "mutant_human_flesh", 1 ] ] ]
+ },
{
"result": "offal_canned",
"type": "recipe",
@@ -286,6 +321,38 @@
"tools": [ [ [ "surface_heat", 7, "LIST" ] ] ],
"components": [ [ [ "fat", 2 ] ] ]
},
+ {
+ "type": "recipe",
+ "result": "mutant_tallow",
+ "copy-from": "tallow",
+ "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
+ "tools": [ [ [ "surface_heat", 7, "LIST" ] ] ],
+ "components": [ [ [ "mutant_fat", 3 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "mutant_lard",
+ "copy-from": "lard",
+ "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
+ "tools": [ [ [ "surface_heat", 7, "LIST" ] ] ],
+ "components": [ [ [ "mutant_fat", 2 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "mutant_human_tallow",
+ "copy-from": "tallow",
+ "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
+ "tools": [ [ [ "surface_heat", 7, "LIST" ] ] ],
+ "components": [ [ [ "mutant_human_fat", 3 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "mutant_human_lard",
+ "copy-from": "lard",
+ "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
+ "tools": [ [ [ "surface_heat", 7, "LIST" ] ] ],
+ "components": [ [ [ "mutant_human_fat", 2 ] ] ]
+ },
{
"type": "recipe",
"result": "cooking_oil",
@@ -322,7 +389,7 @@
"batch_time_factors": [ 80, 4 ],
"qualities": [ { "id": "BOIL", "level": 1 }, { "id": "COOK", "level": 2 } ],
"tools": [ [ [ "water_boiling_heat", 2, "LIST" ] ] ],
- "components": [ [ [ "fat", 1 ], [ "tallow", 2 ], [ "lard", 2 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ]
+ "components": [ [ [ "edible_fat", 1, "LIST" ], [ "edible_tallow_lard", 2, "LIST" ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ]
},
{
"type": "recipe",
@@ -346,7 +413,7 @@
"autolearn": true,
"flags": [ "BLIND_HARD" ],
"qualities": [ { "id": "CONTAIN", "level": 1 } ],
- "components": [ [ [ "dry_fish", 2 ] ], [ [ "water_clean", 1 ] ] ]
+ "components": [ [ [ "dry_fish", 1 ] ], [ [ "water_clean", 1 ] ] ]
},
{
"type": "recipe",
@@ -358,7 +425,7 @@
"book_learn": [ [ "cookbook_human", 4 ] ],
"flags": [ "BLIND_HARD" ],
"qualities": [ { "id": "CONTAIN", "level": 1 } ],
- "components": [ [ [ "dry_hflesh", 2 ] ], [ [ "water_clean", 1 ] ] ]
+ "components": [ [ [ "dry_hflesh", 1 ] ], [ [ "water_clean", 1 ] ] ]
},
{
"type": "recipe",
@@ -370,7 +437,7 @@
"autolearn": true,
"flags": [ "BLIND_HARD" ],
"qualities": [ { "id": "CONTAIN", "level": 1 } ],
- "components": [ [ [ "dry_veggy", 2 ] ], [ [ "water_clean", 1 ] ] ]
+ "components": [ [ [ "dry_veggy", 1 ] ], [ [ "water_clean", 1 ] ] ]
},
{
"type": "recipe",
@@ -382,7 +449,7 @@
"autolearn": true,
"flags": [ "BLIND_HARD" ],
"qualities": [ { "id": "CONTAIN", "level": 1 } ],
- "components": [ [ [ "dry_fruit", 2 ] ], [ [ "water_clean", 1 ] ] ]
+ "components": [ [ [ "dry_fruit", 1 ] ], [ [ "water_clean", 1 ] ] ]
},
{
"type": "recipe",
@@ -423,7 +490,7 @@
"batch_time_factors": [ 83, 3 ],
"qualities": [ { "id": "COOK", "level": 1 } ],
"tools": [ [ [ "char_smoker", 15 ] ] ],
- "components": [ [ [ "meat", 1 ], [ "meat_scrap", 10 ] ] ]
+ "components": [ [ [ "meat_red_raw", 1, "LIST" ] ] ]
},
{
"type": "recipe",
@@ -748,7 +815,7 @@
"tools": [ [ [ "char_smoker", 10 ] ] ],
"components": [
[ [ "meat_red", 2, "LIST" ], [ "liver", 10 ] ],
- [ [ "fat", 1 ], [ "tallow", 2 ], [ "lard", 2 ] ],
+ [ [ "edible_fat", 1, "LIST" ], [ "edible_tallow_lard", 2, "LIST" ] ],
[
[ "salt", 4 ],
[ "soysauce", 2 ],
@@ -773,7 +840,7 @@
"tools": [ [ [ "surface_heat", 7, "LIST" ] ] ],
"components": [
[ [ "meat_red", 2, "LIST" ], [ "can_chicken", 2 ] ],
- [ [ "fat", 1 ], [ "tallow", 2 ], [ "lard", 2 ] ],
+ [ [ "edible_fat", 1, "LIST" ], [ "edible_tallow_lard", 2, "LIST" ] ],
[
[ "salt", 4 ],
[ "soysauce", 2 ],
@@ -798,7 +865,7 @@
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 1 } ],
"components": [
[ [ "meat_red", 2, "LIST" ], [ "liver", 10 ] ],
- [ [ "fat", 1 ], [ "tallow", 2 ], [ "lard", 2 ] ],
+ [ [ "edible_fat", 1, "LIST" ], [ "edible_tallow_lard", 2, "LIST" ] ],
[
[ "salt", 4 ],
[ "soysauce", 2 ],
@@ -855,10 +922,39 @@
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 1 } ],
"tools": [ [ [ "char_smoker", 5 ] ] ],
"components": [
- [ [ "human_flesh", 1 ] ],
+ [ [ "human_meat", 1, "LIST" ] ],
[ [ "salt", 2 ], [ "soysauce", 1 ], [ "seasoning_italian", 2 ], [ "wild_herbs", 2 ], [ "seasoning_salt", 2 ] ]
]
},
+ {
+ "type": "recipe",
+ "result": "human_tallow",
+ "category": "CC_FOOD",
+ "subcategory": "CSC_FOOD_MEAT",
+ "skill_used": "cooking",
+ "difficulty": 2,
+ "time": "10 m",
+ "charges": 6,
+ "autolearn": true,
+ "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
+ "tools": [ [ [ "surface_heat", 7, "LIST" ] ] ],
+ "components": [ [ [ "human_fat", 3 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "human_lard",
+ "byproducts": [ [ "cracklins" ] ],
+ "category": "CC_FOOD",
+ "subcategory": "CSC_FOOD_MEAT",
+ "skill_used": "cooking",
+ "difficulty": 3,
+ "time": "10 m",
+ "charges": 3,
+ "autolearn": true,
+ "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
+ "tools": [ [ [ "surface_heat", 7, "LIST" ] ] ],
+ "components": [ [ [ "human_fat", 2 ] ] ]
+ },
{
"type": "recipe",
"result": "human_cooked",
@@ -884,7 +980,7 @@
"batch_time_factors": [ 83, 3 ],
"qualities": [ { "id": "COOK", "level": 1 } ],
"tools": [ [ [ "char_smoker", 15 ] ] ],
- "components": [ [ [ "human_flesh", 1 ] ] ]
+ "components": [ [ [ "human_meat", 1, "LIST" ] ] ]
},
{
"type": "recipe",
@@ -900,8 +996,8 @@
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 1 } ],
"tools": [ [ [ "char_smoker", 10 ] ] ],
"components": [
- [ [ "human_flesh", 1 ], [ "rehydrated_hflesh", 1 ] ],
- [ [ "fat", 1 ], [ "tallow", 2 ], [ "lard", 2 ] ],
+ [ [ "human_meat", 1, "LIST" ], [ "rehydrated_hflesh", 1 ] ],
+ [ [ "edible_fat", 1, "LIST" ], [ "edible_tallow_lard", 2, "LIST" ] ],
[
[ "salt", 4 ],
[ "soysauce", 2 ],
@@ -1210,7 +1306,7 @@
"autolearn": true,
"qualities": [ { "id": "COOK", "level": 2 }, { "id": "CUT", "level": 1 } ],
"tools": [ [ [ "surface_heat", 5, "LIST" ] ] ],
- "components": [ [ [ "raw_dandelion", 2 ] ], [ [ "water", 2 ], [ "water_clean", 2 ] ] ]
+ "components": [ [ [ "raw_dandelion", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ]
},
{
"type": "recipe",
@@ -1250,7 +1346,7 @@
"time": "5 m",
"autolearn": true,
"tools": [ [ [ "surface_heat", 3, "LIST" ] ] ],
- "components": [ [ [ "frozen_dinner", 1 ] ] ]
+ "components": [ [ [ "frozen_dinner", 2 ] ] ]
},
{
"type": "recipe",
@@ -1288,13 +1384,19 @@
"difficulty": 3,
"time": "16 m",
"autolearn": true,
+ "//": "Even assuming the crafter is reusing oil, some still gets absorbed into the potato.",
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
"tools": [ [ [ "surface_heat", 8, "LIST" ] ], [ [ "frying_oil", 1, "LIST" ] ] ],
- "components": [ [ [ "potato", 1 ], [ "irradiated_potato", 1 ] ], [ [ "salt", 2 ], [ "seasoning_salt", 2 ] ] ]
+ "components": [
+ [ [ "potato", 1 ], [ "irradiated_potato", 1 ] ],
+ [ [ "salt", 2 ], [ "seasoning_salt", 2 ] ],
+ [ [ "cooking_oil", 2 ], [ "cooking_oil2", 2 ] ]
+ ]
},
{
"type": "recipe",
"result": "fried_seeds",
+ "charges": 1,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_SNACK",
"skill_used": "cooking",
@@ -1316,7 +1418,7 @@
"autolearn": true,
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
"tools": [ [ [ "surface_heat", 8, "LIST" ] ], [ [ "frying_oil", 1, "LIST" ] ] ],
- "components": [ [ [ "tortilla_corn", 1 ] ], [ [ "salt", 2 ], [ "seasoning_salt", 2 ] ] ]
+ "components": [ [ [ "tortilla_corn", 5 ] ], [ [ "salt", 2 ], [ "seasoning_salt", 2 ] ] ]
},
{
"type": "recipe",
@@ -1368,11 +1470,11 @@
"subcategory": "CSC_FOOD_SNACK",
"skill_used": "cooking",
"time": "20 m",
- "charges": 3,
+ "charges": 5,
"book_learn": [ [ "cookbook_human", 0 ] ],
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
"tools": [ [ [ "surface_heat", 3, "LIST" ] ] ],
- "components": [ [ [ "human_flesh", 1 ], [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ] ], [ [ "nachos", 3 ] ] ]
+ "components": [ [ [ "human_meat", 1, "LIST" ], [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ] ], [ [ "nachos", 3 ] ] ]
},
{
"type": "recipe",
@@ -1386,7 +1488,7 @@
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
"tools": [ [ [ "surface_heat", 3, "LIST" ] ] ],
"components": [
- [ [ "human_flesh", 1 ], [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ] ],
+ [ [ "human_meat", 1, "LIST" ], [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ] ],
[ [ "cheese", 1 ], [ "cheese_hard", 1 ], [ "can_cheese", 1 ] ],
[ [ "nachos", 3 ] ]
]
@@ -1394,16 +1496,21 @@
{
"type": "recipe",
"result": "fresh_fries",
+ "result_mult": 3,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_VEGGI",
"skill_used": "cooking",
"difficulty": 3,
"time": "16 m",
"autolearn": true,
- "//": "the cooking oil isn't supposed to be expended since you can recycle it after frying the potatoes",
+ "//": "Even assuming the crafter is reusing oil, some still gets absorbed into the potato.",
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
"tools": [ [ [ "surface_heat", 8, "LIST" ] ], [ [ "frying_oil", 1, "LIST" ] ] ],
- "components": [ [ [ "potato", 1 ], [ "irradiated_potato", 1 ] ], [ [ "salt", 2 ], [ "seasoning_salt", 2 ] ] ]
+ "components": [
+ [ [ "potato", 1 ], [ "irradiated_potato", 1 ] ],
+ [ [ "salt", 2 ], [ "seasoning_salt", 2 ] ],
+ [ [ "cooking_oil", 4 ], [ "cooking_oil2", 4 ] ]
+ ]
},
{
"type": "recipe",
@@ -1432,6 +1539,7 @@
{
"type": "recipe",
"result": "popcorn2",
+ "charges": 1,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_SNACK",
"skill_used": "cooking",
@@ -1652,6 +1760,8 @@
{
"type": "recipe",
"result": "almond_milk",
+ "result_mult": 3,
+ "byproducts": [ [ "almond_pulp" ] ],
"id_suffix": "mortar",
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_DRINKS",
@@ -1661,11 +1771,13 @@
"qualities": [ { "id": "CONTAIN", "level": 1 } ],
"tools": [ [ [ "rag", -1 ] ], [ [ "mortar_pestle", -1 ] ] ],
"autolearn": true,
- "components": [ [ [ "almond_unshelled", 2 ] ], [ [ "water_clean", 2 ] ] ]
+ "components": [ [ [ "almond_unshelled", 2 ] ], [ [ "water_clean", 3 ] ] ]
},
{
"type": "recipe",
"result": "almond_milk",
+ "result_mult": 3,
+ "byproducts": [ [ "almond_pulp" ] ],
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_DRINKS",
"skill_used": "cooking",
@@ -1674,7 +1786,7 @@
"qualities": [ { "id": "CONTAIN", "level": 1 } ],
"tools": [ [ [ "food_processor", 20 ] ], [ [ "rag", -1 ] ] ],
"autolearn": true,
- "components": [ [ [ "almond_unshelled", 2 ] ], [ [ "water_clean", 2 ] ] ]
+ "components": [ [ [ "almond_unshelled", 2 ] ], [ [ "water_clean", 3 ] ] ]
},
{
"type": "recipe",
@@ -1718,18 +1830,18 @@
"type": "recipe",
"result": "milk_reconstituted",
"id_suffix": "from_condensed",
- "result_mult": 2,
+ "result_mult": 4,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_DRINKS",
"skill_used": "cooking",
"time": "1 m",
"autolearn": true,
- "components": [ [ [ "con_milk", 5 ] ], [ [ "water_clean", 1 ] ] ]
+ "components": [ [ [ "con_milk", 5 ] ], [ [ "water_clean", 3 ] ] ]
},
{
"type": "recipe",
"result": "can_coconut",
- "byproducts": [ [ "juice_pulp" ] ],
+ "byproducts": [ [ "juice_pulp", 2 ] ],
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_DRINKS",
"skill_used": "cooking",
@@ -1738,7 +1850,7 @@
"autolearn": true,
"qualities": [ { "id": "CONTAIN", "level": 1 }, { "id": "CUT", "level": 1 } ],
"tools": [ [ [ "rag", -1 ] ] ],
- "components": [ [ [ "coconut", 1 ] ], [ [ "water_clean", 1 ] ] ]
+ "components": [ [ [ "coconut", 2 ] ], [ [ "water_clean", 2 ] ] ]
},
{
"type": "recipe",
@@ -1800,7 +1912,7 @@
{
"type": "recipe",
"result": "cranberry_juice",
- "byproducts": [ [ "juice_pulp" ] ],
+ "byproducts": [ [ "juice_pulp", 2 ] ],
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_DRINKS",
"skill_used": "cooking",
@@ -1809,12 +1921,12 @@
"autolearn": true,
"qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "CONTAIN", "level": 1 } ],
"tools": [ [ [ "rag", -1 ] ] ],
- "components": [ [ [ "cranberries", 1 ], [ "irradiated_cranberries", 1 ] ], [ [ "water_clean", 1 ] ] ]
+ "components": [ [ [ "cranberries", 3 ], [ "irradiated_cranberries", 3 ] ], [ [ "water_clean", 1 ] ] ]
},
{
"type": "recipe",
"result": "apple_cider",
- "byproducts": [ [ "juice_pulp" ] ],
+ "byproducts": [ [ "juice_pulp", 2 ] ],
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_DRINKS",
"skill_used": "cooking",
@@ -1823,11 +1935,12 @@
"autolearn": true,
"qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "CONTAIN", "level": 1 } ],
"tools": [ [ [ "rag", -1 ] ] ],
- "components": [ [ [ "irradiated_apple", 3 ], [ "apple", 3 ] ] ]
+ "components": [ [ [ "irradiated_apple", 2 ], [ "apple", 2 ] ] ]
},
{
"type": "recipe",
"result": "lemonade",
+ "result_mult": 2,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_DRINKS",
"skill_used": "cooking",
@@ -1835,7 +1948,7 @@
"time": "5 m",
"autolearn": true,
"qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "CONTAIN", "level": 1 } ],
- "components": [ [ [ "irradiated_lemon", 2 ], [ "lemon", 2 ] ], [ [ "sugar", 10 ] ], [ [ "water_clean", 1 ] ] ]
+ "components": [ [ [ "irradiated_lemon", 1 ], [ "lemon", 1 ] ], [ [ "sugar", 10 ] ], [ [ "water_clean", 1 ] ] ]
},
{
"type": "recipe",
@@ -1964,6 +2077,7 @@
[
[ "meat_red", 1, "LIST" ],
[ "meat_cooked", 1 ],
+ [ "mutant_meat_cooked", 1 ],
[ "can_salmon", 2 ],
[ "can_herring", 2 ],
[ "fish", 2 ],
@@ -2006,7 +2120,7 @@
"tools": [ [ [ "surface_heat", 7, "LIST" ] ] ],
"components": [
[ [ "broth_bone", 1 ], [ "broth_human", 1 ] ],
- [ [ "human_flesh", 1 ], [ "human_cooked", 1 ] ],
+ [ [ "human_meat", 1, "LIST" ], [ "human_meat_cooked", 1, "LIST" ] ],
[ [ "water_clean", 1 ], [ "water", 1 ] ]
]
},
@@ -2032,7 +2146,7 @@
[ "pepper", 2 ],
[ "chem_saltpetre", 1 ]
],
- [ [ "meat", 1 ], [ "meat_scrap", 10 ] ]
+ [ [ "meat_red_raw", 1, "LIST" ] ]
]
},
{
@@ -2081,7 +2195,7 @@
[ "pepper", 2 ],
[ "chem_saltpetre", 1 ]
],
- [ [ "human_flesh", 1 ] ]
+ [ [ "human_meat", 1, "LIST" ] ]
]
},
{
@@ -2096,7 +2210,7 @@
"autolearn": true,
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
"tools": [ [ [ "surface_heat", 10, "LIST" ] ] ],
- "components": [ [ [ "fat", 1 ] ] ]
+ "components": [ [ [ "edible_fat", 1, "LIST" ] ] ]
},
{
"type": "recipe",
@@ -2111,7 +2225,7 @@
"qualities": [ { "id": "CUT", "level": 1 } ],
"tools": [ [ [ "surface_heat", 20, "LIST" ] ] ],
"components": [
- [ [ "tallow", 1 ], [ "lard", 1 ] ],
+ [ [ "edible_tallow_lard", 1, "LIST" ] ],
[
[ "jerky", 2 ],
[ "dry_meat", 2 ],
@@ -2147,7 +2261,7 @@
"subcategory": "CSC_FOOD_DRINKS",
"skill_used": "cooking",
"difficulty": 2,
- "charges": 2,
+ "charges": 3,
"time": "5 m",
"autolearn": true,
"components": [
@@ -2162,24 +2276,24 @@
"result": "V8",
"id_suffix": "jarred",
"byproducts": [ [ "water", 10 ] ],
- "container": "jar_glass_sealed",
+ "container": "jar_3l_glass_sealed",
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_VEGGI",
"skill_used": "cooking",
"skills_required": [ "mechanics", 1 ],
"difficulty": 4,
- "time": "30 m",
- "charges": 2,
+ "time": "40 m",
+ "charges": 12,
"autolearn": true,
"batch_time_factors": [ 83, 5 ],
"qualities": [ { "id": "COOK", "level": 3 } ],
- "tools": [ [ [ "surface_heat", 100, "LIST" ] ], [ [ "pot_canning", -1 ] ] ],
+ "tools": [ [ [ "surface_heat", 200, "LIST" ] ], [ [ "pot_canning", -1 ] ] ],
"components": [
- [ [ "jar_glass", 1 ] ],
- [ [ "water", 10 ], [ "water_clean", 10 ] ],
- [ [ "irradiated_tomato", 2 ], [ "can_tomato", 2 ], [ "tomato", 2 ] ],
- [ [ "irradiated_broccoli", 1 ], [ "broccoli", 1 ] ],
- [ [ "irradiated_zucchini", 1 ], [ "zucchini", 1 ] ]
+ [ [ "jar_3l_glass", 1 ] ],
+ [ [ "water", 16 ], [ "water_clean", 16 ] ],
+ [ [ "irradiated_tomato", 4 ], [ "can_tomato", 4 ], [ "tomato", 4 ] ],
+ [ [ "irradiated_broccoli", 4 ], [ "broccoli", 4 ] ],
+ [ [ "irradiated_zucchini", 4 ], [ "zucchini", 4 ] ]
]
},
{
@@ -2577,7 +2691,7 @@
[ "beans_cooked", 1 ],
[ "acorns_cooked", 1 ]
],
- [ [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ], [ "human_flesh", 1 ] ]
+ [ [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ], [ "human_meat", 1, "LIST" ] ]
]
},
{
@@ -2755,8 +2869,8 @@
[ "honey_bottled", 2 ],
[ "honey_glassed", 2 ]
],
- [ [ "meat", 1 ] ],
- [ [ "cooking_oil", 8 ], [ "cooking_oil2", 8 ], [ "tallow", 1 ], [ "lard", 1 ] ],
+ [ [ "meat", 1 ], [ "mutant_meat", 1 ] ],
+ [ [ "cooking_oil", 8 ], [ "cooking_oil2", 8 ], [ "edible_tallow_lard", 1, "LIST" ] ],
[ [ "veggy_any", 1, "LIST" ] ],
[ [ "salt", 1 ], [ "soysauce", 1 ], [ "seasoning_salt", 1 ], [ "pepper", 1 ] ]
]
@@ -2777,7 +2891,7 @@
"components": [
[ [ "syrup", 1 ] ],
[ [ "meat_red", 3, "LIST" ], [ "can_chicken", 6 ] ],
- [ [ "fat", 1 ], [ "tallow", 2 ], [ "lard", 2 ] ],
+ [ [ "edible_fat", 1, "LIST" ], [ "edible_tallow_lard", 2, "LIST" ] ],
[
[ "salt", 10 ],
[ "soysauce", 1 ],
@@ -2809,13 +2923,13 @@
"subcategory": "CSC_FOOD_BREAD",
"skill_used": "cooking",
"difficulty": 2,
- "charges": 10,
- "time": "18 m",
- "batch_time_factors": [ 50, 4 ],
+ "charges": 1,
+ "time": "15 m",
+ "batch_time_factors": [ 80, 3 ],
"autolearn": true,
"qualities": [ { "id": "COOK", "level": 2 } ],
- "tools": [ [ [ "surface_heat", 8, "LIST" ] ] ],
- "components": [ [ [ "cooking_oil", 2 ], [ "cooking_oil2", 2 ] ], [ [ "cornmeal", 9 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ]
+ "tools": [ [ [ "surface_heat", 3, "LIST" ] ] ],
+ "components": [ [ [ "cornmeal", 1 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ]
},
{
"type": "recipe",
@@ -2824,13 +2938,13 @@
"subcategory": "CSC_FOOD_BREAD",
"skill_used": "cooking",
"difficulty": 1,
- "charges": 5,
+ "charges": 1,
"time": "18 m",
"batch_time_factors": [ 50, 4 ],
"autolearn": true,
"qualities": [ { "id": "COOK", "level": 2 } ],
"tools": [ [ [ "surface_heat", 8, "LIST" ] ] ],
- "components": [ [ [ "cornmeal", 5 ] ], [ [ "water", 2 ], [ "water_clean", 2 ] ] ]
+ "components": [ [ [ "cornmeal", 4 ] ], [ [ "water", 2 ], [ "water_clean", 2 ] ] ]
},
{
"type": "recipe",
@@ -2859,7 +2973,7 @@
"skill_used": "cooking",
"difficulty": 2,
"time": "28 m",
- "charges": 8,
+ "charges": 10,
"batch_time_factors": [ 50, 4 ],
"autolearn": true,
"qualities": [ { "id": "COOK", "level": 2 } ],
@@ -2906,6 +3020,7 @@
{
"type": "recipe",
"result": "lentils_cooked",
+ "charges": 1,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_VEGGI",
"skill_used": "cooking",
@@ -3232,6 +3347,7 @@
{
"type": "recipe",
"result": "buckwheat_cooked",
+ "charges": 1,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_VEGGI",
"skill_used": "cooking",
@@ -3521,6 +3637,7 @@
[
[ "bacon", 2 ],
[ "meat_cooked", 1 ],
+ [ "mutant_meat_cooked", 1 ],
[ "meat_smoked", 1 ],
[ "dry_meat", 1 ],
[ "rehydrated_meat", 1 ],
@@ -3562,6 +3679,7 @@
[
[ "bacon", 2 ],
[ "meat_cooked", 1 ],
+ [ "mutant_meat_cooked", 1 ],
[ "meat_smoked", 1 ],
[ "dry_meat", 1 ],
[ "rehydrated_meat", 1 ],
@@ -3798,7 +3916,6 @@
"subcategory": "CSC_FOOD_SNACK",
"skill_used": "cooking",
"difficulty": 1,
- "result_mult": 2,
"time": "6 m",
"autolearn": true,
"qualities": [ { "id": "COOK", "level": 2 } ],
@@ -3812,7 +3929,7 @@
"subcategory": "CSC_FOOD_SNACK",
"skill_used": "cooking",
"difficulty": 1,
- "result_mult": 2,
+ "charges": 2,
"time": "6 m",
"autolearn": true,
"qualities": [ { "id": "COOK", "level": 2 } ],
@@ -3949,7 +4066,7 @@
"tools": [ [ [ "surface_heat", 6, "LIST" ] ] ],
"components": [
[ [ "flour", 30 ] ],
- [ [ "human_flesh", 1 ], [ "rehydrated_hflesh", 2 ], [ "dry_hflesh", 1 ] ],
+ [ [ "human_meat", 1, "LIST" ], [ "rehydrated_hflesh", 2 ], [ "dry_hflesh", 1 ] ],
[ [ "water", 1 ], [ "water_clean", 1 ] ]
]
},
@@ -4097,7 +4214,7 @@
[ "dry_veggy", 2 ]
],
[ [ "tomato", 1 ], [ "irradiated_tomato", 1 ], [ "can_tomato", 1 ] ],
- [ [ "human_flesh", 1 ], [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ], [ "human_canned", 2 ] ],
+ [ [ "human_meat", 1, "LIST" ], [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ], [ "human_canned", 2 ] ],
[ [ "can_beans", 1 ], [ "raw_beans", 1 ], [ "dry_beans", 1 ] ],
[ [ "sauce_red", 1 ], [ "chilly-p", 2 ], [ "chili_pepper", 1 ] ]
]
@@ -4221,7 +4338,7 @@
"components": [
[ [ "flour", 30 ] ],
[
- [ "human_flesh", 2 ],
+ [ "human_meat", 2, "LIST" ],
[ "human_canned", 2 ],
[ "hflesh_salted", 2 ],
[ "rehydrated_hflesh", 2 ],
@@ -4363,7 +4480,7 @@
"result_mult": 2,
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ],
"tools": [ [ [ "surface_heat", 100, "LIST" ] ], [ [ "pot_canning", -1 ] ] ],
- "components": [ [ [ "water", 11 ], [ "water_clean", 11 ] ], [ [ "jar_glass", 1 ] ], [ [ "meat", 2 ], [ "meat_scrap", 20 ] ] ]
+ "components": [ [ [ "water", 11 ], [ "water_clean", 11 ] ], [ [ "jar_glass", 1 ] ], [ [ "meat_red_raw", 2, "LIST" ] ] ]
},
{
"type": "recipe",
@@ -4386,6 +4503,7 @@
{
"type": "recipe",
"result": "human_canned",
+ "result_mult": 2,
"id_suffix": "jarred",
"byproducts": [ [ "water", 10 ] ],
"container": "jar_glass_sealed",
@@ -4398,7 +4516,7 @@
"batch_time_factors": [ 83, 5 ],
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ],
"tools": [ [ [ "surface_heat", 100, "LIST" ] ], [ [ "pot_canning", -1 ] ] ],
- "components": [ [ [ "water", 11 ], [ "water_clean", 11 ] ], [ [ "jar_glass", 1 ] ], [ [ "human_flesh", 2 ] ] ]
+ "components": [ [ [ "water", 11 ], [ "water_clean", 11 ] ], [ [ "jar_glass", 1 ] ], [ [ "human_meat", 2, "LIST" ] ] ]
},
{
"type": "recipe",
@@ -4707,7 +4825,7 @@
[ "beans_cooked", 2 ],
[ "acorns_cooked", 2 ]
],
- [ [ "dry_hflesh", 2 ], [ "rehydrated_hflesh", 2 ], [ "human_flesh", 2 ] ]
+ [ [ "dry_hflesh", 2 ], [ "rehydrated_hflesh", 2 ], [ "human_meat", 2, "LIST" ] ]
]
},
{
@@ -4807,7 +4925,7 @@
"components": [
[ [ "water", 1 ], [ "water_clean", 1 ] ],
[ [ "bag_plastic", 1 ] ],
- [ [ "meat", 1 ], [ "meat_scrap", 10 ] ],
+ [ [ "meat_red_raw", 1, "LIST" ] ],
[ [ "salt_water", 1 ], [ "saline", 1 ], [ "salt", 2 ], [ "chem_saltpetre", 1 ] ]
]
},
@@ -4849,7 +4967,7 @@
"components": [
[ [ "water", 1 ], [ "water_clean", 1 ] ],
[ [ "bag_plastic", 1 ] ],
- [ [ "human_flesh", 1 ] ],
+ [ [ "human_meat", 1, "LIST" ] ],
[ [ "salt_water", 1 ], [ "saline", 1 ], [ "salt", 2 ], [ "chem_saltpetre", 1 ] ]
]
},
@@ -4922,6 +5040,7 @@
{
"type": "recipe",
"result": "fried_spam",
+ "charges": 1,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_MEAT",
"skill_used": "cooking",
@@ -4960,6 +5079,7 @@
{
"type": "recipe",
"result": "cornmeal",
+ "charges": 3,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_OTHER",
"skill_used": "cooking",
@@ -5232,7 +5352,7 @@
[ "human_canned", 1 ],
[ "hflesh_aspic", 1 ],
[ "human_smoked", 1 ],
- [ "human_cooked", 1 ],
+ [ "human_meat_cooked", 1, "LIST" ],
[ "hfleshbologna", 2 ],
[ "rehydrated_hflesh", 1 ],
[ "human_pickled", 1 ],
@@ -5378,7 +5498,7 @@
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
"tools": [ [ [ "surface_heat", 10, "LIST" ] ] ],
"components": [
- [ [ "human_flesh", 1 ] ],
+ [ [ "human_meat", 1, "LIST" ] ],
[ [ "flatbread", 2 ], [ "bread", 2 ], [ "cornbread", 2 ], [ "wastebread", 2 ], [ "sourdough_bread", 2 ] ],
[ [ "cheese", 1 ], [ "cheese_hard", 1 ], [ "can_cheese", 1 ] ],
[
@@ -5469,7 +5589,7 @@
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
"tools": [ [ [ "surface_heat", 10, "LIST" ] ] ],
"components": [
- [ [ "human_flesh", 1 ], [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ], [ "human_canned", 1 ] ],
+ [ [ "human_meat", 1, "LIST" ], [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ], [ "human_canned", 1 ] ],
[ [ "tortilla_corn", 3 ] ],
[ [ "salt", 1 ], [ "seasoning_salt", 1 ] ]
]
@@ -5557,7 +5677,7 @@
[ "dry_meat", 1 ],
[ "can_chicken", 1 ]
],
- [ [ "tallow", 1 ], [ "lard", 1 ] ],
+ [ [ "edible_tallow_lard", 1, "LIST" ] ],
[ [ "flour", 1 ], [ "cornmeal", 1 ] ],
[ [ "mushroom", 2 ], [ "dry_mushroom", 2 ] ]
]
@@ -5579,12 +5699,12 @@
[ "mannwurst", 1 ],
[ "mannwurst_cooked", 1 ],
[ "mann_bratwurst", 1 ],
- [ "human_flesh", 1 ],
+ [ "human_meat", 1, "LIST" ],
[ "rehydrated_hflesh", 1 ],
[ "dry_hflesh", 1 ],
[ "human_canned", 1 ]
],
- [ [ "tallow", 1 ], [ "lard", 1 ] ],
+ [ [ "edible_tallow_lard", 1, "LIST" ] ],
[ [ "flour", 1 ], [ "cornmeal", 1 ] ],
[ [ "mushroom", 2 ], [ "dry_mushroom", 2 ] ]
]
@@ -5668,7 +5788,7 @@
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 2 } ],
"tools": [ [ [ "surface_heat", 10, "LIST" ] ] ],
"components": [
- [ [ "human_flesh", 1 ] ],
+ [ [ "human_meat", 1, "LIST" ] ],
[ [ "flatbread", 2 ], [ "bread", 2 ], [ "cornbread", 2 ], [ "wastebread", 2 ], [ "sourdough_bread", 2 ] ],
[
[ "pickle", 1 ],
@@ -5722,7 +5842,7 @@
"tools": [ [ [ "surface_heat", 10, "LIST" ] ] ],
"components": [
[ [ "flatbread", 2 ], [ "bread", 2 ], [ "cornbread", 2 ], [ "wastebread", 2 ], [ "sourdough_bread", 2 ] ],
- [ [ "sauce_red", 1 ], [ "irradiated_tomato", 2 ], [ "can_tomato", 1 ], [ "tomato", 2 ] ],
+ [ [ "sauce_red", 2 ], [ "irradiated_tomato", 1 ], [ "can_tomato", 1 ], [ "tomato", 1 ] ],
[ [ "meat_red", 1, "LIST" ], [ "dry_meat", 1 ], [ "can_chicken", 1 ] ]
]
},
@@ -5740,8 +5860,8 @@
"tools": [ [ [ "surface_heat", 10, "LIST" ] ] ],
"components": [
[ [ "flatbread", 2 ], [ "bread", 2 ], [ "cornbread", 2 ], [ "wastebread", 2 ], [ "sourdough_bread", 2 ] ],
- [ [ "sauce_red", 1 ], [ "irradiated_tomato", 2 ], [ "can_tomato", 1 ], [ "tomato", 2 ] ],
- [ [ "human_flesh", 1 ], [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ] ]
+ [ [ "sauce_red", 2 ], [ "irradiated_tomato", 1 ], [ "can_tomato", 1 ], [ "tomato", 1 ] ],
+ [ [ "human_meat", 1, "LIST" ], [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ] ]
]
},
{
@@ -5824,7 +5944,7 @@
"qualities": [ { "id": "CUT", "level": 1 } ],
"components": [
[ [ "flatbread", 2 ], [ "bread", 2 ], [ "cornbread", 2 ], [ "wastebread", 2 ], [ "sourdough_bread", 2 ] ],
- [ [ "human_cooked", 1 ], [ "hfleshbologna", 5 ] ]
+ [ [ "human_meat_cooked", 1, "LIST" ], [ "hfleshbologna", 5 ] ]
]
},
{
@@ -6018,7 +6138,7 @@
"components": [
[ [ "water", 1 ], [ "water_clean", 1 ], [ "salt_water", 1 ], [ "saline", 5 ] ],
[ [ "jar_glass", 1 ] ],
- [ [ "meat", 2 ], [ "meat_scrap", 20 ] ],
+ [ [ "meat_red_raw", 2, "LIST" ] ],
[ [ "vinegar", 1 ] ]
]
},
@@ -6061,7 +6181,7 @@
"components": [
[ [ "water", 1 ], [ "water_clean", 1 ], [ "salt_water", 1 ], [ "saline", 5 ] ],
[ [ "jar_glass", 1 ] ],
- [ [ "human_flesh", 1 ] ],
+ [ [ "human_meat", 1, "LIST" ] ],
[ [ "vinegar", 1 ] ]
]
},
@@ -6138,7 +6258,7 @@
[ [ "milk_standard_raw", 1, "LIST" ], [ "milk_powder", 1 ] ],
[ [ "powder_eggs", 2 ], [ "eggs_bird", 2, "LIST" ], [ "egg_reptile", 2 ] ],
[ [ "sugar", 2 ] ],
- [ [ "cooking_oil", 8 ], [ "cooking_oil2", 8 ], [ "tallow", 1 ], [ "lard", 1 ] ],
+ [ [ "cooking_oil", 8 ], [ "cooking_oil2", 8 ], [ "edible_tallow_lard", 1, "LIST" ] ],
[ [ "water", 1 ], [ "water_clean", 1 ] ]
]
},
@@ -6248,11 +6368,12 @@
"subcategory": "CSC_FOOD_OTHER",
"skill_used": "cooking",
"difficulty": 3,
+ "charges": 3,
"time": "3 m 30 s",
"autolearn": true,
"qualities": [ { "id": "COOK", "level": 2 } ],
"tools": [ [ [ "surface_heat", 2, "LIST" ] ] ],
- "components": [ [ [ "sugar", 10 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ]
+ "components": [ [ [ "sugar", 40 ] ], [ [ "water", 1 ], [ "water_clean", 1 ] ] ]
},
{
"type": "recipe",
@@ -6265,7 +6386,13 @@
"book_learn": [ [ "recipe_creepy", 5 ], [ "recipe_serum", 6 ] ],
"qualities": [ { "id": "CONTAIN", "level": 1 }, { "id": "CUT", "level": 1 } ],
"components": [
- [ [ "meat", 1 ], [ "human_flesh", 1 ], [ "rehydrated_meat", 1 ], [ "rehydrated_hflesh", 1 ] ],
+ [
+ [ "meat", 1 ],
+ [ "mutant_meat", 1 ],
+ [ "human_meat", 1, "LIST" ],
+ [ "rehydrated_meat", 1 ],
+ [ "rehydrated_hflesh", 1 ]
+ ],
[ [ "slime_scrap", 2 ] ],
[ [ "water", 1 ] ]
]
@@ -6332,7 +6459,7 @@
[ [ "canister_empty", 1 ], [ "can_food_unsealed", 1 ] ],
[ [ "scrap", 1 ] ],
[ [ "water", 1 ], [ "water_clean", 1 ] ],
- [ [ "meat", 1 ], [ "meat_scrap", 10 ] ]
+ [ [ "meat_red_raw", 1, "LIST" ] ]
]
},
{
@@ -6382,7 +6509,7 @@
[ [ "canister_empty", 1 ], [ "can_food_unsealed", 1 ] ],
[ [ "scrap", 1 ] ],
[ [ "water", 1 ], [ "water_clean", 1 ] ],
- [ [ "human_flesh", 1 ] ]
+ [ [ "human_meat", 1, "LIST" ] ]
]
},
{
@@ -6688,7 +6815,7 @@
[ "beans_cooked", 1 ],
[ "acorns_cooked", 1 ]
],
- [ [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ], [ "human_flesh", 1 ] ]
+ [ [ "dry_hflesh", 1 ], [ "rehydrated_hflesh", 1 ], [ "human_meat", 1, "LIST" ] ]
]
},
{
@@ -7026,7 +7153,7 @@
"time": "3 m",
"autolearn": true,
"flags": [ "BLIND_HARD" ],
- "components": [ [ [ "lemon", 1 ], [ "irradiated_lemon", 1 ] ], [ [ "whiskey", 1 ], [ "single_malt_whiskey", 1 ] ] ]
+ "components": [ [ [ "lemon", 1 ], [ "irradiated_lemon", 1 ] ], [ [ "whiskey", 3 ], [ "single_malt_whiskey", 3 ] ] ]
},
{
"type": "recipe",
@@ -7117,7 +7244,7 @@
{
"type": "recipe",
"result": "honey_bottled",
- "byproducts": [ [ "wax", 4 ] ],
+ "charges": 6,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_OTHER",
"skill_used": "cooking",
@@ -7126,7 +7253,7 @@
"autolearn": true,
"qualities": [ { "id": "CUT", "level": 1 } ],
"tools": [ [ [ "rag", -1 ] ] ],
- "components": [ [ [ "honeycomb", 2 ] ] ]
+ "components": [ [ [ "honeycomb", 1 ] ] ]
},
{
"type": "recipe",
@@ -7136,7 +7263,7 @@
"subcategory": "CSC_FOOD_OTHER",
"skill_used": "cooking",
"difficulty": 1,
- "charges": 5,
+ "charges": 14,
"time": "20 m",
"batch_time_factors": [ 80, 4 ],
"autolearn": true,
@@ -7208,7 +7335,7 @@
[ [ "hstomach", 1 ] ],
[ [ "oatmeal", 2 ], [ "buckwheat", 1 ] ],
[
- [ "human_flesh", 1 ],
+ [ "human_meat", 1, "LIST" ],
[ "rehydrated_hflesh", 1 ],
[ "dry_hflesh", 1 ],
[ "human_canned", 1 ],
@@ -7252,7 +7379,7 @@
"components": [
[ [ "oatmeal", 1 ], [ "flour", 5 ], [ "buckwheat", 1 ] ],
[ [ "dry_fruit", 1 ] ],
- [ [ "tallow", 1 ], [ "lard", 1 ] ],
+ [ [ "edible_tallow_lard", 1, "LIST" ] ],
[
[ "sugar", 10 ],
[ "syrup", 1 ],
@@ -7275,7 +7402,7 @@
"time": "10 m",
"autolearn": true,
"qualities": [ { "id": "CONTAIN", "level": 1 } ],
- "components": [ [ [ "honey_bottled", 5 ] ], [ [ "sugar", 35 ] ] ]
+ "components": [ [ [ "honey_bottled", 14 ] ] ]
},
{
"type": "recipe",
@@ -7390,6 +7517,7 @@
"result": "cornmeal",
"type": "recipe",
"id_suffix": "with_from_food_processor",
+ "charges": 3,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_OTHER",
"skill_used": "cooking",
@@ -7690,6 +7818,7 @@
"type": "recipe",
"result": "cornmeal",
"id_suffix": "mortar",
+ "charges": 3,
"category": "CC_FOOD",
"subcategory": "CSC_FOOD_OTHER",
"skill_used": "cooking",
@@ -7762,7 +7891,7 @@
"qualities": [ { "id": "CUT", "level": 1 } ],
"tools": [ [ [ "surface_heat", 20, "LIST" ] ] ],
"components": [
- [ [ "tallow", 1 ], [ "lard", 1 ] ],
+ [ [ "edible_tallow_lard", 1, "LIST" ] ],
[ [ "jerky_human", 1 ], [ "dry_hflesh", 1 ], [ "human_smoked", 1 ] ],
[
[ "dry_veggy", 2 ],
@@ -7843,7 +7972,7 @@
"batch_time_factors": [ 83, 5 ],
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ],
"tools": [ [ [ "surface_heat", 200, "LIST" ] ], [ [ "pot_canning", -1 ] ] ],
- "components": [ [ [ "water", 16 ], [ "water_clean", 16 ] ], [ [ "jar_3l_glass", 1 ] ], [ [ "meat", 12 ], [ "meat_scrap", 120 ] ] ]
+ "components": [ [ [ "water", 16 ], [ "water_clean", 16 ] ], [ [ "jar_3l_glass", 1 ] ], [ [ "meat_red_raw", 12, "LIST" ] ] ]
},
{
"type": "recipe",
@@ -8015,7 +8144,7 @@
"components": [
[ [ "water", 6 ], [ "water_clean", 6 ], [ "salt_water", 6 ], [ "saline", 30 ] ],
[ [ "jar_3l_glass", 1 ] ],
- [ [ "human_flesh", 12 ] ],
+ [ [ "human_meat", 12, "LIST" ] ],
[ [ "vinegar", 6 ] ]
]
},
@@ -8037,7 +8166,7 @@
"components": [
[ [ "water", 6 ], [ "water_clean", 6 ], [ "salt_water", 6 ], [ "saline", 30 ] ],
[ [ "jar_3l_glass", 1 ] ],
- [ [ "meat", 12 ], [ "meat_scrap", 120 ] ],
+ [ [ "meat_red_raw", 12, "LIST" ] ],
[ [ "vinegar", 6 ] ]
]
},
@@ -8347,7 +8476,7 @@
[ "beans_cooked", 12 ],
[ "acorns_cooked", 12 ]
],
- [ [ "dry_hflesh", 12 ], [ "rehydrated_hflesh", 12 ], [ "human_flesh", 12 ] ]
+ [ [ "dry_hflesh", 12 ], [ "rehydrated_hflesh", 12 ], [ "human_meat", 12, "LIST" ] ]
]
},
{
@@ -8437,7 +8566,7 @@
"subcategory": "CSC_FOOD_VEGGI",
"skill_used": "cooking",
"difficulty": 3,
- "charges": 4,
+ "charges": 2,
"time": "45 m",
"autolearn": true,
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ],
@@ -8477,6 +8606,7 @@
"skill_used": "cooking",
"difficulty": 4,
"time": "40 m",
+ "result_mult": 2,
"autolearn": true,
"batch_time_factors": [ 80, 4 ],
"qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ],
@@ -8788,9 +8918,8 @@
[ "cooking_oil", 1 ],
[ "cooking_oil2", 1 ],
[ "butter", 1 ],
- [ "fat", 1 ],
- [ "lard", 1 ],
- [ "tallow", 1 ],
+ [ "edible_fat", 1, "LIST" ],
+ [ "edible_tallow_lard", 1, "LIST" ],
[ "ghee", 1 ]
],
[ [ "water", 1 ], [ "water_clean", 1 ] ]
@@ -8815,9 +8944,8 @@
[ "cooking_oil", 1 ],
[ "cooking_oil2", 1 ],
[ "butter", 1 ],
- [ "fat", 1 ],
- [ "lard", 1 ],
- [ "tallow", 1 ],
+ [ "edible_fat", 1, "LIST" ],
+ [ "edible_tallow_lard", 1, "LIST" ],
[ "ghee", 1 ]
]
]
diff --git a/data/json/recipes/recipe_medsandchemicals.json b/data/json/recipes/recipe_medsandchemicals.json
index d6e0b2fe6e117..545418d326dcc 100644
--- a/data/json/recipes/recipe_medsandchemicals.json
+++ b/data/json/recipes/recipe_medsandchemicals.json
@@ -300,7 +300,7 @@
"qualities": [ { "id": "CHEM", "level": 2 } ],
"tools": [ [ [ "surface_heat", 2, "LIST" ] ] ],
"components": [
- [ [ "chem_sulphur", 10 ] ],
+ [ [ "chem_sulphur", 150 ] ],
[ [ "oxy_powder", 100 ] ],
[ [ "ammonia", 5 ] ],
[ [ "acid", 1 ] ],
@@ -716,7 +716,7 @@
"autolearn": true,
"tools": [ [ [ "surface_heat", 18, "LIST" ] ] ],
"components": [
- [ [ "tallow", 2 ], [ "lard", 2 ], [ "cooking_oil", 16 ], [ "cooking_oil2", 16 ] ],
+ [ [ "edible_tallow_lard", 2, "LIST" ], [ "cooking_oil", 16 ], [ "cooking_oil2", 16 ] ],
[ [ "lye", 2 ], [ "lye_powder", 75 ] ],
[ [ "water", 2 ], [ "water_clean", 2 ] ]
],
@@ -797,7 +797,7 @@
"autolearn": true,
"qualities": [ { "id": "BOIL", "level": 2 }, { "id": "CHEM", "level": 2 } ],
"tools": [ [ [ "surface_heat", 10, "LIST" ] ] ],
- "components": [ [ [ "chem_hydrogen_peroxide_conc", 1 ] ], [ [ "chem_sulphur", 25 ] ] ]
+ "components": [ [ [ "chem_hydrogen_peroxide_conc", 1 ] ], [ [ "chem_sulphur", 375 ] ] ]
},
{
"type": "recipe",
@@ -876,6 +876,7 @@
"subcategory": "CSC_CHEM_CHEMICALS",
"skill_used": "cooking",
"difficulty": 5,
+ "charges": 680,
"time": "45 m",
"book_learn": [ [ "textbook_chemistry", 4 ], [ "adv_chemistry", 5 ] ],
"tools": [
@@ -927,7 +928,7 @@
"time": "20 m",
"book_learn": [ [ "textbook_anarch", 6 ], [ "recipe_labchem", 4 ], [ "textbook_chemistry", 5 ], [ "textbook_armschina", 5 ] ],
"qualities": [ { "id": "CONTAIN", "level": 1 } ],
- "components": [ [ [ "chem_saltpetre", 150 ] ], [ [ "chem_sulphur", 20 ] ], [ [ "charcoal", 10 ], [ "coal_lump", 10 ] ] ]
+ "components": [ [ [ "chem_saltpetre", 150 ] ], [ [ "chem_sulphur", 300 ] ], [ [ "charcoal", 10 ], [ "coal_lump", 10 ] ] ]
},
{
"type": "recipe",
@@ -984,7 +985,7 @@
"autolearn": true,
"qualities": [ { "id": "FINE_DISTILL", "level": 1 } ],
"tools": [ [ [ "surface_heat", 10, "LIST" ] ] ],
- "components": [ [ [ "vinegar", 160 ] ] ]
+ "components": [ [ [ "vinegar", 320 ] ] ]
},
{
"type": "recipe",
@@ -1066,7 +1067,7 @@
"time": "2 m",
"autolearn": true,
"qualities": [ { "id": "BOIL", "level": 2 } ],
- "components": [ [ [ "chem_aluminium_powder", 50 ] ], [ [ "chem_chromium_oxide", 50 ] ] ]
+ "components": [ [ [ "chem_aluminium_powder", 50 ] ], [ [ "chem_chromium_oxide", 430 ] ] ]
},
{
"type": "recipe",
@@ -1090,7 +1091,7 @@
"time": "5 m",
"book_learn": [ [ "textbook_anarch", 5 ], [ "recipe_labchem", 4 ], [ "textbook_chemistry", 5 ] ],
"qualities": [ { "id": "BOIL", "level": 2 } ],
- "components": [ [ [ "chem_zinc_powder", 50 ] ], [ [ "chem_sulphur", 50 ] ], [ [ "superglue", 2 ] ] ]
+ "components": [ [ [ "chem_zinc_powder", 645 ] ], [ [ "chem_sulphur", 750 ] ], [ [ "superglue", 2 ] ] ]
},
{
"type": "recipe",
@@ -1161,6 +1162,7 @@
"subcategory": "CSC_CHEM_CHEMICALS",
"skill_used": "cooking",
"difficulty": 3,
+ "charges": 200,
"time": "2 h",
"autolearn": true,
"byproducts": [ [ "chem_zinc" ] ],
@@ -1174,10 +1176,11 @@
"subcategory": "CSC_CHEM_CHEMICALS",
"skill_used": "cooking",
"difficulty": 3,
+ "charges": 785,
"time": "2 h",
"autolearn": true,
"qualities": [ { "id": "CONTAIN", "level": 1 }, { "id": "BOIL", "level": 2 } ],
- "components": [ [ [ "chem_zinc", 50 ] ], [ [ "coal_lump", 25 ], [ "charcoal", 50 ] ] ]
+ "components": [ [ [ "chem_zinc", 785 ] ], [ [ "coal_lump", 25 ], [ "charcoal", 50 ] ] ]
},
{
"result": "chem_manganese_dioxide",
@@ -1186,9 +1189,10 @@
"subcategory": "CSC_CHEM_CHEMICALS",
"skill_used": "fabrication",
"difficulty": 4,
+ "charges": 400,
+ "//": "rhodonite has up to 42% manganese. 915g/869mg*40%=421",
"time": "1 h",
"autolearn": true,
- "byproducts": [ [ "chem_manganese_dioxide", 50 ] ],
"qualities": [ { "id": "CHISEL", "level": 2 }, { "id": "HAMMER", "level": 2 } ],
"components": [ [ [ "material_rhodonite", 1 ] ] ]
}
diff --git a/data/json/recipes/recipe_obsolete.json b/data/json/recipes/recipe_obsolete.json
index 42944b3d47e87..d81e4c1a579e9 100644
--- a/data/json/recipes/recipe_obsolete.json
+++ b/data/json/recipes/recipe_obsolete.json
@@ -1915,5 +1915,15 @@
"type": "recipe",
"result": "tool_rdx_sand_bomb",
"obsolete": true
+ },
+ {
+ "type": "recipe",
+ "result": "pressure_cooker",
+ "obsolete": true
+ },
+ {
+ "type": "recipe",
+ "result": "xacto",
+ "obsolete": true
}
]
diff --git a/data/json/recipes/recipe_others.json b/data/json/recipes/recipe_others.json
index fa4a6dcc32f2c..fb4de61317ae9 100644
--- a/data/json/recipes/recipe_others.json
+++ b/data/json/recipes/recipe_others.json
@@ -9,9 +9,9 @@
"difficulty": 2,
"time": "1 h 40 m",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
- "components": [ [ [ "steel_chunk", 1 ], [ "scrap", 3 ] ] ]
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -384,10 +384,10 @@
"skills_required": [ "gun", 2 ],
"difficulty": 5,
"time": "45 m",
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
"book_learn": [ [ "manual_shotgun", 2 ], [ "manual_rifle", 2 ], [ "manual_smg", 2 ], [ "manual_pistol", 3 ], [ "recipe_bullets", 2 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
- "components": [ [ [ "scrap", 6 ] ], [ [ "element", 2 ], [ "hotplate", 1 ] ], [ [ "cable", 2 ] ] ]
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "element", 2 ], [ "hotplate", 1 ] ], [ [ "cable", 2 ] ] ]
},
{
"type": "recipe",
@@ -506,6 +506,35 @@
]
]
},
+ {
+ "type": "recipe",
+ "result": "wearable_atomic_light",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_TOOLS",
+ "skill_used": "electronics",
+ "skills_required": [ "survival", 3 ],
+ "difficulty": 2,
+ "time": "20 m",
+ "reversible": true,
+ "autolearn": true,
+ "using": [ [ "soldering_standard", 10 ] ],
+ "qualities": [ { "id": "CUT", "level": 1 }, { "id": "SCREW", "level": 1 } ],
+ "components": [
+ [ [ "betavoltaic", 4 ] ],
+ [ [ "power_supply", 1 ] ],
+ [ [ "scrap", 2 ] ],
+ [ [ "wire", 2 ] ],
+ [ [ "lens", 1 ], [ "lens_small", 1 ] ],
+ [
+ [ "rag", 4 ],
+ [ "leather", 4 ],
+ [ "duct_tape", 20 ],
+ [ "medical_tape", 40 ],
+ [ "cordage", 1, "LIST" ],
+ [ "filament", 300, "LIST" ]
+ ]
+ ]
+ },
{
"type": "recipe",
"result": "oil_lamp",
@@ -1315,8 +1344,9 @@
"difficulty": 3,
"time": "30 m",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
+ "using": [ [ "blacksmithing_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [ [ [ "scrap", 1 ] ] ]
},
{
@@ -1355,7 +1385,7 @@
"autolearn": true,
"qualities": [ { "id": "CONTAIN", "level": 1 } ],
"tools": [ [ [ "lighter", 5 ], [ "ref_lighter", 5 ], [ "surface_heat", 2, "LIST" ] ] ],
- "components": [ [ [ "wax", 1 ], [ "tallow", 4 ], [ "tallow_tainted", 4 ] ], [ [ "string_6", 1 ] ] ]
+ "components": [ [ [ "wax", 1 ], [ "any_tallow", 4, "LIST" ] ], [ [ "string_6", 1 ] ] ]
},
{
"type": "recipe",
@@ -1414,15 +1444,9 @@
"difficulty": 6,
"time": "3 h",
"autolearn": true,
- "using": [ [ "forging_standard", 10 ], [ "steel_tiny", 2 ] ],
- "qualities": [
- { "id": "ANVIL", "level": 3 },
- { "id": "HAMMER", "level": 3 },
- { "id": "CHISEL", "level": 3 },
- { "id": "SAW_M", "level": 2 },
- { "id": "CUT", "level": 1 }
- ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "using": [ [ "blacksmithing_standard", 2 ], [ "steel_tiny", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 }, { "id": "SAW_M", "level": 2 }, { "id": "CUT", "level": 1 } ],
+ "tools": [ [ [ "swage", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [ [ [ "plastic_chunk", 2 ], [ "2x4", 1 ], [ "stick", 2 ] ] ]
},
{
@@ -1452,256 +1476,6 @@
"tools": [ [ [ "surface_heat", 5, "LIST" ] ] ],
"components": [ [ [ "superglue", 1 ] ], [ [ "rag", 6 ] ], [ [ "plastic_chunk", 1 ] ] ]
},
- {
- "type": "recipe",
- "result": "basket",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 2,
- "time": "50 m",
- "reversible": true,
- "autolearn": true,
- "using": [ [ "welding_standard", 5 ], [ "cutting_wire_standard", 1 ] ],
- "components": [ [ [ "wire", 40 ] ] ]
- },
- {
- "type": "recipe",
- "result": "folding_basket",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 2,
- "time": "1 h",
- "reversible": true,
- "autolearn": true,
- "using": [ [ "welding_standard", 5 ], [ "cutting_wire_standard", 1 ] ],
- "components": [ [ [ "wire", 40 ], [ "basket", 1 ] ], [ [ "scrap", 8 ] ] ]
- },
- {
- "type": "recipe",
- "result": "bike_basket",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 1,
- "time": "35 m",
- "reversible": true,
- "autolearn": true,
- "using": [ [ "welding_standard", 2 ], [ "cutting_wire_standard", 1 ] ],
- "components": [ [ [ "wire", 8 ] ] ]
- },
- {
- "type": "recipe",
- "result": "foldframe",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 1,
- "time": "8 m",
- "reversible": true,
- "autolearn": true,
- "using": [ [ "welding_standard", 6 ] ],
- "components": [ [ [ "pipe", 4 ] ] ]
- },
- {
- "type": "recipe",
- "result": "foldwoodframe",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 2,
- "time": "9 m",
- "reversible": true,
- "autolearn": true,
- "qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "CUT", "level": 1 } ],
- "components": [ [ [ "2x4", 5 ] ], [ [ "stick", 2 ] ], [ [ "nail", 20 ] ] ]
- },
- {
- "type": "recipe",
- "result": "wheel_wheelchair",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 2,
- "time": "5 m",
- "reversible": true,
- "autolearn": true,
- "using": [ [ "welding_standard", 4 ] ],
- "qualities": [ { "id": "HAMMER", "level": 2 }, { "id": "SAW_M", "level": 1 } ],
- "components": [ [ [ "pipe", 2 ] ], [ [ "wheel_bicycle", 2 ] ] ]
- },
- {
- "type": "recipe",
- "result": "hand_rims",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 1,
- "time": "4 m",
- "reversible": true,
- "autolearn": true,
- "using": [ [ "welding_standard", 2 ] ],
- "qualities": [ { "id": "HAMMER", "level": 2 }, { "id": "SAW_M", "level": 1 } ],
- "components": [ [ [ "pipe", 2 ] ] ]
- },
- {
- "type": "recipe",
- "result": "frame",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 1,
- "time": "45 m",
- "reversible": true,
- "autolearn": true,
- "using": [ [ "steel_standard", 20 ] ],
- "qualities": [ { "id": "GLARE", "level": 2 } ],
- "tools": [
- [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ],
- [ [ "welder", 50 ], [ "welder_crude", 75 ], [ "toolset", 75 ], [ "forge", 50 ], [ "oxy_torch", 10 ] ]
- ]
- },
- {
- "type": "recipe",
- "result": "hdframe",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 1,
- "time": "1 h 30 m",
- "reversible": true,
- "autolearn": true,
- "qualities": [ { "id": "GLARE", "level": 2 } ],
- "using": [ [ "steel_standard", 100 ] ],
- "tools": [
- [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ],
- [ [ "welder", 50 ], [ "welder_crude", 75 ], [ "toolset", 75 ], [ "forge", 50 ], [ "oxy_torch", 10 ] ]
- ]
- },
- {
- "type": "recipe",
- "result": "frame_wood",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 1,
- "time": "6 m",
- "reversible": true,
- "autolearn": true,
- "qualities": [ { "id": "HAMMER", "level": 1 } ],
- "components": [ [ [ "2x4", 5 ] ], [ [ "nail", 20 ] ] ]
- },
- {
- "type": "recipe",
- "result": "frame_wood_light",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "time": "4 m",
- "reversible": true,
- "autolearn": true,
- "using": [ [ "rope_natural_short", 3 ] ],
- "components": [ [ [ "2x4", 3 ], [ "stick", 6 ] ] ]
- },
- {
- "type": "recipe",
- "result": "wheel_wood",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 3,
- "time": "6 m",
- "reversible": true,
- "autolearn": true,
- "qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "SAW_W", "level": 1 } ],
- "components": [ [ [ "2x4", 5 ] ], [ [ "nail", 20 ] ] ]
- },
- {
- "type": "recipe",
- "result": "wheel_wood_b",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 4,
- "time": "12 m",
- "reversible": true,
- "autolearn": true,
- "qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "SAW_W", "level": 1 } ],
- "components": [ [ [ "2x4", 5 ] ], [ [ "nail", 30 ] ], [ [ "scrap", 5 ] ] ]
- },
- {
- "type": "recipe",
- "result": "wood_plate",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 2,
- "time": "6 m",
- "reversible": true,
- "autolearn": true,
- "using": [ [ "rope_natural_short", 2 ] ],
- "components": [ [ [ "2x4", 6 ] ] ]
- },
- {
- "type": "recipe",
- "result": "steel_plate",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 4,
- "time": "12 m",
- "reversible": true,
- "//": "sawing it down doesn't teach anything useful",
- "autolearn": true,
- "qualities": [ { "id": "GLARE", "level": 2 } ],
- "tools": [ [ [ "welder", 100 ], [ "welder_crude", 150 ], [ "toolset", 150 ], [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
- "components": [ [ [ "steel_lump", 8 ] ] ]
- },
- {
- "type": "recipe",
- "result": "steel_armor",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_MATERIALS",
- "skill_used": "fabrication",
- "difficulty": 4,
- "time": "12 m",
- "reversible": true,
- "//": "sawing it down doesn't teach anything useful",
- "autolearn": true,
- "qualities": [ { "id": "GLARE", "level": 2 } ],
- "tools": [ [ [ "welder", 50 ], [ "welder_crude", 75 ], [ "toolset", 75 ], [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
- "components": [ [ [ "steel_lump", 4 ] ] ]
- },
- {
- "type": "recipe",
- "result": "spiked_plate",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 4,
- "time": "12 m",
- "reversible": true,
- "book_learn": [ [ "textbook_fabrication", 3 ], [ "welding_book", 3 ], [ "textbook_mechanics", 4 ] ],
- "qualities": [ { "id": "GLARE", "level": 2 } ],
- "tools": [ [ [ "welder", 100 ], [ "welder_crude", 150 ], [ "toolset", 150 ], [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
- "components": [ [ [ "steel_lump", 8 ], [ "steel_plate", 1 ] ], [ [ "steel_chunk", 4 ], [ "scrap", 12 ], [ "spike", 4 ] ] ]
- },
- {
- "type": "recipe",
- "result": "hard_plate",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_PARTS",
- "skill_used": "fabrication",
- "difficulty": 6,
- "//": "hardened metal tools require high fabrication, so +1 diff here",
- "time": "12 m",
- "reversible": true,
- "book_learn": [ [ "textbook_fabrication", 5 ], [ "adv_chemistry", 6 ], [ "welding_book", 5 ] ],
- "qualities": [ { "id": "GLARE", "level": 2 } ],
- "tools": [ [ [ "welder", 100 ], [ "welder_crude", 150 ], [ "toolset", 150 ], [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
- "components": [ [ [ "steel_lump", 24 ] ] ]
- },
{
"type": "recipe",
"result": "tree_spile",
@@ -1774,9 +1548,11 @@
"reversible": true,
"decomp_learn": 2,
"autolearn": true,
+ "using": [ [ "forging_standard", 3 ], [ "steel_standard", 11 ] ],
"book_learn": [ [ "mag_traps", 1 ], [ "manual_mechanics", 2 ], [ "manual_traps", 1 ], [ "howto_traps", 1 ] ],
- "qualities": [ { "id": "WRENCH", "level": 1 } ],
- "components": [ [ [ "scrap", 3 ] ], [ [ "spring", 1 ] ] ]
+ "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "WRENCH", "level": 1 } ],
+ "tools": [ [ [ "tongs", -1 ] ] ],
+ "components": [ [ [ "spring", 1 ] ] ]
},
{
"type": "recipe",
@@ -2030,7 +1806,7 @@
"autolearn": true,
"qualities": [ { "id": "HAMMER", "level": 1 } ],
"tools": [ [ [ "surface_heat", 10, "LIST" ] ] ],
- "components": [ [ [ "copper", 100 ] ] ]
+ "components": [ [ [ "copper", 25 ] ] ]
},
{
"type": "recipe",
@@ -2093,13 +1869,9 @@
"difficulty": 3,
"time": "2 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [
- [ [ "tongs", -1 ] ],
- [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ],
- [ [ "swage", -1 ] ],
- [ [ "forge", 150 ], [ "oxy_torch", 30 ] ]
- ],
+ "using": [ [ "blacksmithing_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "swage", -1 ] ] ],
"components": [ [ [ "scrap", 2 ] ] ]
},
{
@@ -2411,9 +2183,7 @@
[ "textbook_armeast", 5 ],
[ "textbook_armwest", 5 ]
],
- "using": [ [ "forging_standard", 4 ], [ "steel_standard", 1 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ] ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ]
},
{
"type": "recipe",
@@ -2431,9 +2201,9 @@
[ "textbook_armeast", 5 ],
[ "textbook_armwest", 5 ]
],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "forge", 250 ], [ "oxy_torch", 50 ] ] ],
- "components": [ [ [ "steel_lump", 2 ], [ "steel_chunk", 8 ], [ "scrap", 24 ] ] ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "tongs", -1 ] ] ]
},
{
"type": "recipe",
@@ -2444,9 +2214,10 @@
"difficulty": 5,
"time": "2 h",
"autolearn": true,
+ "using": [ [ "forging_standard", 12 ], [ "steel_standard", 1 ] ],
"qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 2 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "forge", 250 ], [ "oxy_torch", 50 ] ] ],
- "components": [ [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ], [ [ "2x4", 1 ], [ "stick", 2 ] ] ]
+ "tools": [ [ [ "tongs", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ] ]
},
{
"type": "recipe",
@@ -2457,9 +2228,10 @@
"difficulty": 5,
"time": "2 h 20 m",
"autolearn": true,
+ "using": [ [ "forging_standard", 12 ], [ "steel_standard", 2 ] ],
"qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 2 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "forge", 250 ], [ "oxy_torch", 50 ] ] ],
- "components": [ [ [ "steel_lump", 2 ], [ "steel_chunk", 6 ], [ "scrap", 18 ] ], [ [ "2x4", 1 ], [ "stick", 2 ], [ "splinter", 6 ] ] ]
+ "tools": [ [ [ "tongs", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ], [ "splinter", 6 ] ] ]
},
{
"type": "recipe",
@@ -2470,9 +2242,9 @@
"difficulty": 1,
"time": "3 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 2 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
- "components": [ [ [ "steel_chunk", 1 ], [ "scrap", 3 ] ] ]
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -2483,9 +2255,9 @@
"difficulty": 2,
"time": "2 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 2 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
- "components": [ [ [ "steel_chunk", 1 ], [ "scrap", 2 ] ] ]
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -2530,9 +2302,7 @@
"difficulty": 2,
"time": "1 h 30 m",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
- "components": [ [ [ "steel_lump", 2 ], [ "steel_chunk", 8 ], [ "scrap", 24 ] ] ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ]
},
{
"type": "recipe",
@@ -2543,9 +2313,8 @@
"difficulty": 2,
"time": "1 h 30 m",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
- "components": [ [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ] ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ]
},
{
"type": "recipe",
@@ -2557,9 +2326,9 @@
"difficulty": 2,
"time": "1 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
- "components": [ [ [ "steel_chunk", 1 ], [ "scrap", 3 ] ] ]
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -2570,9 +2339,9 @@
"difficulty": 4,
"time": "5 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 200 ], [ "oxy_torch", 40 ] ] ],
- "components": [ [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ] ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ]
},
{
"type": "recipe",
@@ -2583,9 +2352,9 @@
"difficulty": 2,
"time": "5 h",
"autolearn": true,
- "using": [ [ "forging_standard", 5 ], [ "steel_tiny", 1 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [ [ [ "plastic_chunk", 1 ], [ "scrap", 1 ] ] ]
},
{
@@ -2597,10 +2366,10 @@
"difficulty": 4,
"time": "5 h 20 m",
"autolearn": true,
- "using": [ [ "forging_standard", 10 ], [ "steel_standard", 1 ] ],
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
"book_learn": [ [ "manual_mechanics", 3 ], [ "manual_fabrication", 3 ], [ "textbook_fabrication", 4 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
"components": [ [ [ "plastic_chunk", 1 ], [ "2x4", 1 ], [ "stick", 1 ] ] ]
},
{
@@ -2613,11 +2382,10 @@
"//": "not so much the engineering as hardening the edge",
"time": "6 h 20 m",
"autolearn": true,
- "using": [ [ "forging_standard", 15 ], [ "steel_standard", 2 ] ],
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
"book_learn": [ [ "manual_mechanics", 4 ], [ "manual_fabrication", 4 ], [ "textbook_fabrication", 4 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
- "components": [ [ [ "plastic_chunk", 2 ], [ "2x4", 1 ], [ "stick", 2 ] ] ]
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ]
},
{
"type": "recipe",
@@ -2628,11 +2396,11 @@
"difficulty": 4,
"time": "4 h 40 m",
"autolearn": true,
- "using": [ [ "forging_standard", 10 ], [ "steel_standard", 2 ] ],
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
"book_learn": [ [ "manual_fabrication", 2 ], [ "textbook_fabrication", 3 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
- "components": [ [ [ "2x4", 2 ], [ "stick", 4 ] ] ]
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "components": [ [ [ "2x4", 2 ] ] ]
},
{
"type": "recipe",
@@ -2643,10 +2411,10 @@
"difficulty": 7,
"time": "5 h 20 m",
"autolearn": true,
- "using": [ [ "forging_standard", 15 ], [ "steel_standard", 4 ] ],
+ "using": [ [ "blacksmithing_standard", 16 ], [ "steel_standard", 4 ] ],
"book_learn": [ [ "manual_fabrication", 3 ], [ "textbook_fabrication", 4 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ]
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ]
},
{
"type": "recipe",
@@ -2657,10 +2425,10 @@
"difficulty": 5,
"time": "5 h 20 m",
"autolearn": true,
- "using": [ [ "forging_standard", 10 ], [ "steel_standard", 2 ] ],
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
"book_learn": [ [ "manual_fabrication", 3 ], [ "textbook_fabrication", 4 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [ [ [ "2x4", 2 ], [ "stick", 4 ] ] ]
},
{
@@ -2672,10 +2440,10 @@
"difficulty": 6,
"time": "6 h",
"autolearn": true,
- "using": [ [ "forging_standard", 15 ], [ "steel_standard", 3 ] ],
+ "using": [ [ "blacksmithing_standard", 12 ], [ "steel_standard", 3 ] ],
"book_learn": [ [ "textbook_fabrication", 4 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [ [ [ "2x4", 3 ], [ "stick", 6 ] ] ]
},
{
@@ -2688,9 +2456,10 @@
"time": "7 h",
"autolearn": true,
"book_learn": [ [ "manual_fabrication", 3 ], [ "textbook_fabrication", 4 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 350 ], [ "oxy_torch", 70 ] ] ],
- "components": [ [ [ "steel_lump", 2 ], [ "steel_chunk", 6 ], [ "scrap", 18 ] ], [ [ "2x4", 2 ], [ "stick", 4 ] ] ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "components": [ [ [ "2x4", 2 ] ] ]
},
{
"type": "recipe",
@@ -2702,9 +2471,10 @@
"time": "7 h 40 m",
"autolearn": true,
"book_learn": [ [ "manual_fabrication", 3 ], [ "textbook_fabrication", 4 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 300 ], [ "oxy_torch", 60 ] ] ],
- "components": [ [ [ "steel_lump", 8 ], [ "steel_chunk", 24 ] ], [ [ "2x4", 3 ], [ "stick", 6 ] ] ]
+ "using": [ [ "blacksmithing_standard", 32 ], [ "steel_standard", 8 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "components": [ [ [ "2x4", 3 ] ] ]
},
{
"type": "recipe",
@@ -2715,14 +2485,9 @@
"difficulty": 6,
"time": "8 h 40 m",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [
- [ [ "tongs", -1 ] ],
- [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ],
- [ [ "swage", -1 ] ],
- [ [ "forge", 450 ], [ "oxy_torch", 90 ] ]
- ],
- "components": [ [ [ "steel_lump", 8 ], [ "steel_chunk", 24 ] ] ]
+ "using": [ [ "blacksmithing_standard", 32 ], [ "steel_standard", 8 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -2733,9 +2498,9 @@
"difficulty": 6,
"time": "30 m",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 20 ], [ "oxy_torch", 4 ] ] ],
- "components": [ [ [ "steel_chunk", 1 ], [ "scrap", 3 ] ] ]
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ]
},
{
"type": "recipe",
@@ -2883,9 +2648,9 @@
"difficulty": 6,
"time": "2 h 30 m",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 150 ], [ "oxy_torch", 30 ] ] ],
- "components": [ [ [ "steel_lump", 2 ], [ "steel_chunk", 8 ], [ "scrap", 24 ] ] ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -2896,9 +2661,9 @@
"difficulty": 6,
"time": "2 h 30 m",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 150 ], [ "oxy_torch", 30 ] ] ],
- "components": [ [ [ "steel_lump", 2 ], [ "steel_chunk", 8 ], [ "scrap", 24 ] ] ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -2910,14 +2675,14 @@
"time": "2 h",
"autolearn": true,
"book_learn": [ [ "textbook_fabrication", 4 ], [ "manual_fabrication", 4 ] ],
- "using": [ [ "welding_standard", 15 ] ],
+ "using": [ [ "welding_standard", 15 ], [ "steel_standard", 6 ] ],
"qualities": [
{ "id": "HAMMER", "level": 3 },
{ "id": "SAW_M", "level": 1 },
{ "id": "SCREW", "level": 1 },
{ "id": "WRENCH", "level": 1 }
],
- "components": [ [ [ "steel_lump", 6 ], [ "steel_chunk", 24 ], [ "scrap", 72 ] ], [ [ "metal_tank_little", 1 ] ], [ [ "pipe", 8 ] ] ]
+ "components": [ [ [ "metal_tank_little", 1 ] ], [ [ "pipe", 8 ] ] ]
},
{
"type": "recipe",
@@ -2931,7 +2696,7 @@
"decomp_learn": 4,
"autolearn": true,
"book_learn": [ [ "textbook_fabrication", 4 ], [ "manual_fabrication", 4 ] ],
- "using": [ [ "welding_standard", 15 ] ],
+ "using": [ [ "welding_standard", 15 ], [ "steel_standard", 6 ] ],
"qualities": [
{ "id": "HAMMER", "level": 3 },
{ "id": "SAW_M", "level": 1 },
@@ -2939,7 +2704,6 @@
{ "id": "WRENCH", "level": 1 }
],
"components": [
- [ [ "steel_lump", 6 ], [ "steel_chunk", 24 ], [ "scrap", 72 ] ],
[ [ "element", 8 ] ],
[ [ "cable", 4 ] ],
[ [ "power_supply", 1 ] ],
@@ -2984,9 +2748,9 @@
"difficulty": 4,
"time": "2 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
- "components": [ [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ] ]
+ "using": [ [ "blacksmithing_standard", 16 ], [ "steel_standard", 4 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -3064,9 +2828,9 @@
"difficulty": 8,
"time": "7 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 400 ], [ "oxy_torch", 80 ] ] ],
- "components": [ [ [ "steel_lump", 16 ], [ "steel_chunk", 64 ] ] ]
+ "using": [ [ "blacksmithing_standard", 64 ], [ "steel_standard", 16 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ]
},
{
"type": "recipe",
@@ -3078,9 +2842,9 @@
"difficulty": 8,
"time": "4 h 22 m 30 s",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 250 ], [ "oxy_torch", 40 ] ] ],
- "components": [ [ [ "steel_lump", 10 ], [ "steel_chunk", 40 ] ] ]
+ "using": [ [ "blacksmithing_standard", 40 ], [ "steel_standard", 10 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ]
},
{
"type": "recipe",
@@ -3460,7 +3224,7 @@
"autolearn": true,
"qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
"tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
- "components": [ [ [ "scrap_copper", 2 ], [ "copper", 200 ] ] ]
+ "components": [ [ [ "scrap_copper", 7 ], [ "copper", 175 ] ] ]
},
{
"type": "recipe",
@@ -3549,9 +3313,9 @@
"difficulty": 4,
"time": "2 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
- "components": [ [ [ "scrap", 7 ] ] ]
+ "using": [ [ "blacksmithing_standard", 2 ], [ "steel_tiny", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -3575,7 +3339,7 @@
"time": "10 m",
"autolearn": true,
"tools": [ [ [ "surface_heat", 4, "LIST" ] ], [ [ "mold_plastic", -1 ] ] ],
- "components": [ [ [ "bag_plastic", 3 ] ] ]
+ "components": [ [ [ "bag_plastic", 10 ] ] ]
},
{
"type": "recipe",
@@ -3587,7 +3351,7 @@
"time": "10 m",
"autolearn": true,
"tools": [ [ [ "surface_heat", 6, "LIST" ], [ "soldering_iron", 10 ] ] ],
- "components": [ [ [ "cash_card", 4 ] ] ]
+ "components": [ [ [ "cash_card", 9 ], [ "plastic_straw", 2 ] ] ]
},
{
"type": "recipe",
@@ -3637,9 +3401,9 @@
"difficulty": 6,
"time": "6 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 250 ], [ "oxy_torch", 50 ] ] ],
- "components": [ [ [ "steel_lump", 5 ], [ "steel_chunk", 20 ], [ "scrap", 60 ] ] ]
+ "using": [ [ "blacksmithing_standard", 20 ], [ "steel_standard", 5 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ]
},
{
"type": "recipe",
@@ -3650,9 +3414,9 @@
"difficulty": 6,
"time": "3 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
- "components": [ [ [ "scrap", 7 ] ] ]
+ "using": [ [ "blacksmithing_standard", 12 ], [ "steel_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -3663,9 +3427,23 @@
"difficulty": 2,
"time": "1 h 30 m",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
- "components": [ [ [ "scrap", 3 ] ] ]
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "railroad_track_small",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_MATERIALS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "time": "1 h 30 m",
+ "autolearn": true,
+ "using": [ [ "forging_standard", 10 ], [ "steel_standard", 5 ] ],
+ "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 2 }, { "id": "SAW_W", "level": 2 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 24 ] ], [ [ "nail", 40 ] ] ]
},
{
"type": "recipe",
@@ -3677,6 +3455,7 @@
"difficulty": 4,
"time": "20 m",
"autolearn": true,
+ "reversible": true,
"using": [ [ "soldering_standard", 25 ] ],
"qualities": [ { "id": "CUT", "level": 1 } ],
"components": [ [ [ "cable", 100 ] ], [ [ "scrap", 4 ] ], [ [ "duct_tape", 50 ] ] ]
@@ -3691,6 +3470,7 @@
"difficulty": 5,
"time": "2 h",
"autolearn": true,
+ "reversible": true,
"using": [ [ "soldering_standard", 60 ] ],
"qualities": [ { "id": "CUT", "level": 1 } ],
"components": [ [ [ "cable", 650 ] ], [ [ "scrap", 10 ] ], [ [ "duct_tape", 30 ] ], [ [ "hose", 2 ] ] ]
@@ -3789,13 +3569,14 @@
{
"type": "recipe",
"result": "chem_sulphur",
- "result_mult": 5,
"category": "CC_OTHER",
"subcategory": "CSC_OTHER_MATERIALS",
"skill_used": "fabrication",
"difficulty": 1,
- "time": "1 m",
+ "charges": 1562,
+ "time": "5 m",
"autolearn": true,
+ "tools": [ [ [ "mortar_pestle", -1 ] ] ],
"qualities": [ { "id": "HAMMER", "level": 1 } ],
"components": [ [ [ "chunk_sulfur", 1 ] ] ]
},
@@ -3850,7 +3631,7 @@
[ [ "water_clean", 2 ], [ "water", 2 ] ],
[ [ "tanbark", 1 ], [ "acorns", 2 ], [ "hops", 2 ], [ "pine_bough", 6 ] ],
[ [ "salt_water", 2 ], [ "saline", 10 ], [ "salt", 10 ] ],
- [ [ "tallow", 1 ], [ "tallow_tainted", 1 ], [ "lard", 1 ] ],
+ [ [ "edible_tallow_lard", 1, "LIST" ], [ "tallow_tainted", 1 ] ],
[ [ "cured_hide", 6 ] ]
]
},
@@ -3889,7 +3670,7 @@
[ [ "water_clean", 2 ], [ "water", 2 ] ],
[ [ "tanbark", 1 ], [ "acorns", 2 ], [ "hops", 2 ], [ "pine_bough", 6 ] ],
[ [ "salt_water", 2 ], [ "saline", 10 ], [ "salt", 10 ] ],
- [ [ "tallow", 1 ], [ "tallow_tainted", 1 ], [ "lard", 1 ] ],
+ [ [ "edible_tallow_lard", 1, "LIST" ], [ "tallow_tainted", 1 ] ],
[ [ "cured_pelt", 6 ] ]
]
},
@@ -3945,9 +3726,9 @@
"time": "7 h 20 m",
"autolearn": true,
"book_learn": [ [ "manual_fabrication", 8 ], [ "textbook_fabrication", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 350 ], [ "oxy_torch", 70 ] ] ],
- "components": [ [ [ "steel_lump", 6 ], [ "steel_chunk", 24 ], [ "scrap", 72 ] ] ]
+ "using": [ [ "blacksmithing_standard", 24 ], [ "steel_standard", 6 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -4591,22 +4372,9 @@
"time": "45 m",
"autolearn": true,
"book_learn": [ [ "textbook_fabrication", 4 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "swage", -1 ] ], [ [ "tongs", -1 ] ], [ [ "forge", 250 ], [ "oxy_torch", 50 ] ] ],
- "components": [ [ [ "steel_lump", 2 ], [ "steel_chunk", 8 ], [ "scrap", 24 ] ] ]
- },
- {
- "type": "recipe",
- "result": "pressure_cooker",
- "category": "CC_OTHER",
- "subcategory": "CSC_OTHER_TOOLS",
- "skill_used": "fabrication",
- "difficulty": 4,
- "time": "1 h 30 m",
- "autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "forge", 150 ], [ "oxy_torch", 30 ] ] ],
- "components": [ [ [ "steel_lump", 3 ], [ "steel_chunk", 12 ], [ "scrap", 36 ] ] ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
diff --git a/data/json/recipes/recipe_vehicle.json b/data/json/recipes/recipe_vehicle.json
index 6a3f55cf95874..20fc4b379813f 100644
--- a/data/json/recipes/recipe_vehicle.json
+++ b/data/json/recipes/recipe_vehicle.json
@@ -147,6 +147,48 @@
[ [ "plastic_chunk", 10 ] ]
]
},
+ {
+ "result": "programmable_autopilot",
+ "type": "recipe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_VEHICLE",
+ "skill_used": "computer",
+ "skills_required": [ "electronics", 4 ],
+ "difficulty": 5,
+ "time": "1200 m",
+ "autolearn": false,
+ "book_learn": [
+ [ "manual_electronics", 3 ],
+ [ "textbook_electronics", 3 ],
+ [ "advanced_electronics", 3 ],
+ [ "recipe_lab_elec", 3 ],
+ [ "textbook_anarch", 3 ]
+ ],
+ "using": [ [ "soldering_standard", 20 ] ],
+ "qualities": [
+ { "id": "HAMMER", "level": 2 },
+ { "id": "SAW_M", "level": 1 },
+ { "id": "DRILL", "level": 1 },
+ { "id": "SCREW", "level": 1 },
+ { "id": "WRENCH", "level": 1 }
+ ],
+ "components": [
+ [ [ "sheet_metal", 2 ] ],
+ [ [ "motor_tiny", 3 ] ],
+ [ [ "plastic_chunk", 10 ] ],
+ [ [ "power_supply", 1 ] ],
+ [ [ "scrap", 4 ] ],
+ [ [ "cable", 10 ] ],
+ [ [ "antenna", 1 ] ],
+ [ [ "e_scrap", 5 ] ],
+ [ [ "amplifier", 1 ] ],
+ [ [ "wire", 6 ] ],
+ [ [ "circuit", 2 ] ],
+ [ [ "processor", 1 ] ],
+ [ [ "RAM", 1 ] ],
+ [ [ "small_lcd_screen", 1 ] ]
+ ]
+ },
{
"result": "minifridge",
"type": "recipe",
@@ -335,11 +377,10 @@
"skill_used": "fabrication",
"difficulty": 2,
"time": 30000,
- "reversible": true,
"autolearn": true,
"qualities": [ { "id": "HAMMER", "level": 2 }, { "id": "SAW_W", "level": 1 } ],
"using": [ [ "sewing_standard", 100 ] ],
- "components": [ [ [ "rag", 40 ], [ "sheet", 2 ] ], [ [ "2x4", 10 ], [ "stick", 8 ], [ "stick_long", 4 ] ], [ [ "nail", 30 ] ] ]
+ "components": [ [ [ "sheet", 2 ] ], [ [ "2x4", 4 ], [ "stick", 4 ] ], [ [ "nail", 20 ] ] ]
},
{
"type": "recipe",
@@ -392,5 +433,292 @@
"using": [ [ "welding_standard", 1 ] ],
"qualities": [ { "id": "DRILL", "level": 3 } ],
"components": [ [ [ "scrap", 2 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "turret_controls",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_VEHICLE",
+ "skill_used": "electronics",
+ "skills_required": [ [ "computer", 5 ], [ "mechanics", 3 ] ],
+ "difficulty": 5,
+ "time": "2 h",
+ "autolearn": true,
+ "using": [ [ "soldering_standard", 10 ] ],
+ "qualities": [ { "id": "SCREW", "level": 1 } ],
+ "tools": [ [ [ "laptop", -1 ] ] ],
+ "components": [
+ [ [ "targeting_module", 1 ] ],
+ [ [ "ai_module", 1 ] ],
+ [ [ "gun_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
+ [ [ "cable", 10 ] ],
+ [ [ "camera", 1 ], [ "camera_pro", 1 ], [ "omnicamera", 1 ], [ "sensor_module", 1 ] ],
+ [ [ "robot_controls", 1 ] ]
+ ]
+ },
+ {
+ "type": "recipe",
+ "result": "basket",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 2,
+ "time": "50 m",
+ "reversible": true,
+ "autolearn": true,
+ "using": [ [ "welding_standard", 5 ], [ "cutting_wire_standard", 1 ] ],
+ "components": [ [ [ "wire", 40 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "folding_basket",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 2,
+ "time": "1 h",
+ "reversible": true,
+ "autolearn": true,
+ "using": [ [ "welding_standard", 5 ], [ "cutting_wire_standard", 1 ] ],
+ "components": [ [ [ "wire", 40 ], [ "basket", 1 ] ], [ [ "scrap", 8 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "bike_basket",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 1,
+ "time": "35 m",
+ "reversible": true,
+ "autolearn": true,
+ "using": [ [ "welding_standard", 2 ], [ "cutting_wire_standard", 1 ] ],
+ "components": [ [ [ "wire", 8 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "foldframe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 1,
+ "time": "8 m",
+ "reversible": true,
+ "autolearn": true,
+ "using": [ [ "welding_standard", 6 ] ],
+ "components": [ [ [ "pipe", 4 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "foldwoodframe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 2,
+ "time": "9 m",
+ "reversible": true,
+ "autolearn": true,
+ "qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "2x4", 5 ] ], [ [ "stick", 2 ] ], [ [ "nail", 20 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "wheel_wheelchair",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 2,
+ "time": "5 m",
+ "reversible": true,
+ "autolearn": true,
+ "using": [ [ "welding_standard", 4 ] ],
+ "qualities": [ { "id": "HAMMER", "level": 2 }, { "id": "SAW_M", "level": 1 } ],
+ "components": [ [ [ "pipe", 2 ] ], [ [ "wheel_bicycle", 2 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "wheel_rail_small_pair",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "skills_required": [ "mechanics", 1 ],
+ "difficulty": 3,
+ "time": "50 m",
+ "autolearn": true,
+ "using": [ [ "blacksmithing_standard", 5 ], [ "steel_standard", 12 ] ],
+ "qualities": [ { "id": "SAW_M", "level": 1 } ],
+ "components": [ [ [ "pipe", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "hand_rims",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 1,
+ "time": "4 m",
+ "reversible": true,
+ "autolearn": true,
+ "using": [ [ "welding_standard", 2 ] ],
+ "qualities": [ { "id": "HAMMER", "level": 2 }, { "id": "SAW_M", "level": 1 } ],
+ "components": [ [ [ "pipe", 2 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "frame",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 1,
+ "time": "45 m",
+ "reversible": true,
+ "autolearn": true,
+ "using": [ [ "steel_standard", 20 ] ],
+ "qualities": [ { "id": "GLARE", "level": 2 } ],
+ "tools": [
+ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ],
+ [ [ "welder", 50 ], [ "welder_crude", 75 ], [ "toolset", 75 ], [ "forge", 50 ], [ "oxy_torch", 10 ] ]
+ ]
+ },
+ {
+ "type": "recipe",
+ "result": "hdframe",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 1,
+ "time": "1 h 30 m",
+ "reversible": true,
+ "autolearn": true,
+ "qualities": [ { "id": "GLARE", "level": 2 } ],
+ "using": [ [ "steel_standard", 100 ] ],
+ "tools": [
+ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ],
+ [ [ "welder", 50 ], [ "welder_crude", 75 ], [ "toolset", 75 ], [ "forge", 50 ], [ "oxy_torch", 10 ] ]
+ ]
+ },
+ {
+ "type": "recipe",
+ "result": "frame_wood",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 1,
+ "time": "6 m",
+ "reversible": true,
+ "autolearn": true,
+ "qualities": [ { "id": "HAMMER", "level": 1 } ],
+ "components": [ [ [ "2x4", 5 ] ], [ [ "nail", 20 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "frame_wood_light",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "time": "4 m",
+ "reversible": true,
+ "autolearn": true,
+ "using": [ [ "rope_natural_short", 3 ] ],
+ "components": [ [ [ "2x4", 3 ], [ "stick", 6 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "wheel_wood",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 3,
+ "time": "6 m",
+ "reversible": true,
+ "autolearn": true,
+ "qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "SAW_W", "level": 1 } ],
+ "components": [ [ [ "2x4", 5 ] ], [ [ "nail", 20 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "wheel_wood_b",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "time": "12 m",
+ "reversible": true,
+ "autolearn": true,
+ "qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "SAW_W", "level": 1 } ],
+ "components": [ [ [ "2x4", 5 ] ], [ [ "nail", 30 ] ], [ [ "scrap", 5 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "wood_plate",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 2,
+ "time": "6 m",
+ "reversible": true,
+ "autolearn": true,
+ "using": [ [ "rope_natural_short", 2 ] ],
+ "components": [ [ [ "2x4", 6 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "steel_plate",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "time": "12 m",
+ "reversible": true,
+ "//": "sawing it down doesn't teach anything useful",
+ "autolearn": true,
+ "qualities": [ { "id": "GLARE", "level": 2 } ],
+ "tools": [ [ [ "welder", 100 ], [ "welder_crude", 150 ], [ "toolset", 150 ], [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
+ "components": [ [ [ "steel_lump", 8 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "steel_armor",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_MATERIALS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "time": "12 m",
+ "reversible": true,
+ "//": "sawing it down doesn't teach anything useful",
+ "autolearn": true,
+ "qualities": [ { "id": "GLARE", "level": 2 } ],
+ "tools": [ [ [ "welder", 50 ], [ "welder_crude", 75 ], [ "toolset", 75 ], [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
+ "components": [ [ [ "steel_lump", 4 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "spiked_plate",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "time": "12 m",
+ "reversible": true,
+ "book_learn": [ [ "textbook_fabrication", 3 ], [ "welding_book", 3 ], [ "textbook_mechanics", 4 ] ],
+ "qualities": [ { "id": "GLARE", "level": 2 } ],
+ "tools": [ [ [ "welder", 100 ], [ "welder_crude", 150 ], [ "toolset", 150 ], [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
+ "components": [ [ [ "steel_lump", 8 ], [ "steel_plate", 1 ] ], [ [ "steel_chunk", 4 ], [ "scrap", 12 ], [ "spike", 4 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "hard_plate",
+ "category": "CC_OTHER",
+ "subcategory": "CSC_OTHER_PARTS",
+ "skill_used": "fabrication",
+ "difficulty": 6,
+ "//": "hardened metal tools require high fabrication, so +1 diff here",
+ "time": "12 m",
+ "reversible": true,
+ "book_learn": [ [ "textbook_fabrication", 5 ], [ "adv_chemistry", 6 ], [ "welding_book", 5 ] ],
+ "qualities": [ { "id": "GLARE", "level": 2 } ],
+ "tools": [ [ [ "welder", 100 ], [ "welder_crude", 150 ], [ "toolset", 150 ], [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
+ "components": [ [ [ "steel_lump", 24 ] ] ]
}
]
diff --git a/data/json/recipes/recipe_weapon.json b/data/json/recipes/recipe_weapon.json
index c2cffe14020ff..fc630ba2b699e 100644
--- a/data/json/recipes/recipe_weapon.json
+++ b/data/json/recipes/recipe_weapon.json
@@ -55,9 +55,9 @@
"difficulty": 6,
"time": "7 h 40 m",
"autolearn": true,
- "using": [ [ "forging_standard", 15 ], [ "steel_standard", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ] ],
+ "using": [ [ "blacksmithing_standard", 24 ], [ "steel_standard", 6 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
"components": [ [ [ "stick_long", 1 ] ] ]
},
{
@@ -316,8 +316,8 @@
"difficulty": 2,
"time": "1 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
+ "using": [ [ "blacksmithing_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
"components": [ [ [ "javelin", 1 ] ], [ [ "scrap", 1 ] ] ]
},
{
@@ -361,6 +361,7 @@
[ "knife_meat_cleaver", 1 ],
[ "blade", 1 ],
[ "knife_combat", 1 ],
+ [ "knife_combat_mod", 1 ],
[ "knife_hunting", 1 ],
[ "knife_rambo", 1 ],
[ "knife_rm42", 1 ],
@@ -393,6 +394,7 @@
[ "knife_meat_cleaver", 1 ],
[ "blade", 1 ],
[ "knife_combat", 1 ],
+ [ "knife_combat_mod", 1 ],
[ "knife_hunting", 1 ],
[ "knife_rambo", 1 ],
[ "knife_rm42", 1 ],
@@ -539,20 +541,18 @@
"subcategory": "CSC_WEAPON_RANGED",
"skill_used": "fabrication",
"skills_required": [ [ "mechanics", 4 ] ],
- "using": [ [ "forging_standard", 4 ] ],
+ "using": [ [ "blacksmithing_standard", 4 ] ],
"difficulty": 7,
"time": "4 h",
"book_learn": [ [ "recipe_bows", 8 ], [ "welding_book", 7 ], [ "textbook_mechanics", 7 ] ],
"qualities": [
- { "id": "ANVIL", "level": 3 },
{ "id": "CUT", "level": 1 },
{ "id": "SCREW", "level": 1 },
- { "id": "HAMMER", "level": 3 },
{ "id": "HAMMER_FINE", "level": 1 },
{ "id": "SAW_M_FINE", "level": 1 },
{ "id": "CHISEL", "level": 3 }
],
- "tools": [ [ [ "swage", -1 ] ], [ [ "tongs", -1 ] ] ],
+ "tools": [ [ [ "swage", -1 ] ] ],
"components": [
[ [ "sheet_metal_small", 4 ] ],
[ [ "steel_standard", 1, "LIST" ] ],
@@ -568,20 +568,18 @@
"subcategory": "CSC_WEAPON_RANGED",
"skill_used": "fabrication",
"skills_required": [ [ "mechanics", 5 ] ],
- "using": [ [ "forging_standard", 10 ] ],
+ "using": [ [ "blacksmithing_standard", 10 ] ],
"difficulty": 10,
"time": "4 h",
"book_learn": [ [ "recipe_bows", 9 ], [ "welding_book", 8 ], [ "textbook_mechanics", 8 ] ],
"qualities": [
- { "id": "ANVIL", "level": 3 },
{ "id": "CUT", "level": 1 },
{ "id": "SCREW", "level": 1 },
- { "id": "HAMMER", "level": 3 },
{ "id": "HAMMER_FINE", "level": 1 },
{ "id": "SAW_M_FINE", "level": 1 },
{ "id": "CHISEL", "level": 3 }
],
- "tools": [ [ [ "swage", -1 ] ], [ [ "tongs", -1 ] ] ],
+ "tools": [ [ [ "swage", -1 ] ] ],
"components": [
[ [ "steel_standard", 2, "LIST" ] ],
[ [ "plastic_chunk", 10 ] ],
@@ -907,20 +905,18 @@
"subcategory": "CSC_WEAPON_RANGED",
"skill_used": "fabrication",
"skills_required": [ [ "mechanics", 5 ] ],
- "using": [ [ "forging_standard", 4 ] ],
+ "using": [ [ "blacksmithing_standard", 4 ] ],
"difficulty": 7,
"time": "4 h",
"book_learn": [ [ "recipe_bows", 9 ], [ "welding_book", 8 ], [ "textbook_mechanics", 8 ] ],
"qualities": [
- { "id": "ANVIL", "level": 3 },
{ "id": "CUT", "level": 1 },
{ "id": "SCREW", "level": 1 },
- { "id": "HAMMER", "level": 3 },
{ "id": "HAMMER_FINE", "level": 1 },
{ "id": "SAW_M_FINE", "level": 1 },
{ "id": "CHISEL", "level": 3 }
],
- "tools": [ [ [ "swage", -1 ] ], [ [ "tongs", -1 ] ] ],
+ "tools": [ [ [ "swage", -1 ] ] ],
"components": [
[ [ "sheet_metal_small", 4 ] ],
[ [ "steel_standard", 1, "LIST" ] ],
@@ -1177,7 +1173,7 @@
"reversible": true,
"autolearn": true,
"decomp_learn": 0,
- "components": [ [ [ "m320_mod", 1 ] ], [ [ "ugl_buttstock", 1 ] ] ]
+ "components": [ [ [ "m320_mod", 1 ], [ "m320_mod_mod", 1 ] ], [ [ "ugl_buttstock", 1 ] ] ]
},
{
"type": "recipe",
@@ -1304,9 +1300,10 @@
"difficulty": 9,
"time": "55 m",
"book_learn": [ [ "welding_book", 7 ], [ "recipe_melee", 5 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "swage", -1 ], [ "tongs", -1 ] ], [ [ "forge", 475 ], [ "oxy_torch", 95 ] ] ],
- "components": [ [ [ "steel_lump", 3 ], [ "steel_chunk", 12 ], [ "scrap", 36 ] ], [ [ "plastic_chunk", 4 ] ] ]
+ "using": [ [ "blacksmithing_standard", 12 ], [ "steel_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "plastic_chunk", 4 ] ] ]
},
{
"type": "recipe",
@@ -2053,9 +2050,10 @@
"difficulty": 6,
"time": "5 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 300 ], [ "oxy_torch", 60 ] ] ],
- "components": [ [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ], [ [ "2x4", 1 ], [ "stick", 2 ] ] ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ] ]
},
{
"type": "recipe",
@@ -2066,14 +2064,10 @@
"difficulty": 6,
"time": "6 h",
"book_learn": [ [ "textbook_fireman", 6 ] ],
- "using": [ [ "forging_standard", 8 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
- "components": [
- [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 20 ] ],
- [ [ "filament", 100, "LIST" ] ],
- [ [ "rag", 2 ], [ "felt_patch", 2 ], [ "leather", 2 ], [ "fur", 2 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "components": [ [ [ "filament", 100, "LIST" ] ], [ [ "rag", 2 ], [ "felt_patch", 2 ], [ "leather", 2 ], [ "fur", 2 ] ] ]
},
{
"type": "recipe",
@@ -2084,13 +2078,10 @@
"difficulty": 4,
"time": "6 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 200 ], [ "oxy_torch", 40 ] ] ],
- "components": [
- [ [ "steel_lump", 2 ], [ "steel_chunk", 8 ], [ "scrap", 24 ] ],
- [ [ "2x4", 1 ], [ "stick", 2 ] ],
- [ [ "fur", 2 ], [ "leather", 2 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
},
{
"type": "recipe",
@@ -2101,9 +2092,10 @@
"difficulty": 4,
"time": "4 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 200 ], [ "oxy_torch", 40 ] ] ],
- "components": [ [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ], [ [ "fur", 1 ], [ "leather", 1 ] ] ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "fur", 1 ], [ "leather", 1 ] ] ]
},
{
"type": "recipe",
@@ -2113,10 +2105,11 @@
"skill_used": "fabrication",
"difficulty": 6,
"time": "6 h",
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
"book_learn": [ [ "manual_knives", 4 ], [ "recipe_melee", 5 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 300 ], [ "oxy_torch", 60 ] ] ],
- "components": [ [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "fur", 2 ], [ "leather", 2 ] ] ]
},
{
"type": "recipe",
@@ -2127,9 +2120,10 @@
"difficulty": 6,
"time": "6 h 30 m",
"book_learn": [ [ "manual_knives", 4 ], [ "recipe_melee", 5 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 300 ], [ "oxy_torch", 60 ] ] ],
- "components": [ [ [ "steel_lump", 2 ], [ "steel_chunk", 8 ], [ "scrap", 24 ] ], [ [ "2x4", 1 ], [ "stick", 1 ] ] ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 1 ] ] ]
},
{
"type": "recipe",
@@ -2140,9 +2134,10 @@
"difficulty": 4,
"time": "6 h 30 m",
"book_learn": [ [ "manual_knives", 3 ], [ "recipe_melee", 4 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 200 ], [ "oxy_torch", 40 ] ] ],
- "components": [ [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ], [ [ "fur", 1 ], [ "leather", 1 ] ] ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "fur", 1 ], [ "leather", 1 ] ] ]
},
{
"type": "recipe",
@@ -2153,9 +2148,10 @@
"difficulty": 8,
"time": "6 h",
"book_learn": [ [ "manual_knives", 9 ], [ "textbook_weapeast", 8 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 400 ], [ "oxy_torch", 80 ] ] ],
- "components": [ [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ], [ [ "plastic_chunk", 2 ] ] ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "plastic_chunk", 2 ] ] ]
},
{
"type": "recipe",
@@ -2166,9 +2162,9 @@
"difficulty": 4,
"time": "4 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 200 ], [ "oxy_torch", 40 ] ] ],
- "components": [ [ [ "steel_chunk", 2 ], [ "scrap", 6 ] ] ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_tiny", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -2179,14 +2175,10 @@
"difficulty": 3,
"time": "3 h",
"autolearn": true,
- "qualities": [
- { "id": "ANVIL", "level": 3 },
- { "id": "CUT", "level": 1 },
- { "id": "HAMMER", "level": 3 },
- { "id": "CHISEL", "level": 3 }
- ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "forge", 150 ], [ "oxy_torch", 30 ] ] ],
- "components": [ [ [ "steel_chunk", 3 ], [ "scrap", 9 ] ], [ [ "2x4", 1 ], [ "stick", 1 ] ] ]
+ "using": [ [ "blacksmithing_standard", 3 ], [ "steel_tiny", 3 ] ],
+ "qualities": [ { "id": "CUT", "level": 1 }, { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "tongs", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 1 ] ] ]
},
{
"type": "recipe",
@@ -2212,9 +2204,10 @@
"time": "7 h 40 m",
"autolearn": true,
"book_learn": [ [ "manual_knives", 5 ], [ "recipe_melee", 5 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 400 ], [ "oxy_torch", 80 ] ] ],
- "components": [ [ [ "steel_chunk", 3 ], [ "scrap", 9 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ "using": [ [ "blacksmithing_standard", 3 ], [ "steel_tiny", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "plastic_chunk", 1 ] ] ]
},
{
"type": "recipe",
@@ -2226,9 +2219,10 @@
"time": "6 h",
"autolearn": true,
"book_learn": [ [ "manual_knives", 5 ], [ "recipe_melee", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 350 ], [ "oxy_torch", 70 ] ] ],
- "components": [ [ [ "steel_chunk", 2 ], [ "scrap", 6 ] ], [ [ "plastic_chunk", 2 ], [ "scrap", 2 ] ] ]
+ "using": [ [ "blacksmithing_standard", 2 ], [ "steel_tiny", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "plastic_chunk", 2 ], [ "scrap", 2 ] ] ]
},
{
"type": "recipe",
@@ -2240,9 +2234,9 @@
"time": "1 h 30 m",
"autolearn": true,
"book_learn": [ [ "manual_knives", 3 ], [ "recipe_melee", 2 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 200 ], [ "oxy_torch", 40 ] ] ],
- "components": [ [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ] ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -2275,9 +2269,10 @@
"difficulty": 9,
"time": "7 h",
"book_learn": [ [ "textbook_fireman", 8 ], [ "textbook_fabrication", 9 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 450 ], [ "oxy_torch", 90 ] ] ],
- "components": [ [ [ "steel_lump", 4 ], [ "steel_chunk", 12 ], [ "scrap", 36 ] ], [ [ "2x4", 2 ], [ "stick", 4 ] ] ]
+ "using": [ [ "blacksmithing_standard", 16 ], [ "steel_standard", 4 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "components": [ [ [ "2x4", 2 ], [ "stick", 4 ] ] ]
},
{
"type": "recipe",
@@ -2288,9 +2283,10 @@
"difficulty": 6,
"time": "7 h 40 m",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 300 ], [ "oxy_torch", 60 ] ] ],
- "components": [ [ [ "steel_lump", 6 ], [ "steel_chunk", 18 ] ], [ [ "2x4", 2 ], [ "stick", 4 ] ] ]
+ "using": [ [ "blacksmithing_standard", 24 ], [ "steel_standard", 6 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 2 ], [ "stick", 4 ] ] ]
},
{
"type": "recipe",
@@ -2301,9 +2297,10 @@
"difficulty": 7,
"time": "4 h 20 m",
"book_learn": [ [ "manual_knives", 3 ], [ "recipe_melee", 5 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 350 ], [ "oxy_torch", 70 ] ] ],
- "components": [ [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "plastic_chunk", 1 ] ] ]
},
{
"type": "recipe",
@@ -2398,13 +2395,10 @@
"difficulty": 7,
"time": "6 h 40 m",
"book_learn": [ [ "textbook_weapwest", 6 ], [ "scots_cookbook", 8 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 300 ], [ "oxy_torch", 60 ] ] ],
- "components": [
- [ [ "steel_lump", 3 ], [ "steel_chunk", 12 ], [ "scrap", 36 ] ],
- [ [ "2x4", 1 ], [ "stick", 2 ] ],
- [ [ "fur", 1 ], [ "leather", 1 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 12 ], [ "steel_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ], [ [ "fur", 1 ], [ "leather", 1 ] ] ]
},
{
"type": "recipe",
@@ -2415,13 +2409,10 @@
"difficulty": 8,
"time": "8 h",
"book_learn": [ [ "textbook_weapwest", 7 ], [ "scots_cookbook", 9 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 425 ], [ "oxy_torch", 85 ] ] ],
- "components": [
- [ [ "steel_lump", 3 ], [ "steel_chunk", 12 ], [ "scrap", 36 ] ],
- [ [ "2x4", 1 ], [ "stick", 2 ] ],
- [ [ "fur", 1 ], [ "leather", 1 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 12 ], [ "steel_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ], [ [ "fur", 1 ], [ "leather", 1 ] ] ]
},
{
"type": "recipe",
@@ -2432,13 +2423,10 @@
"difficulty": 8,
"time": "7 h",
"book_learn": [ [ "textbook_weapwest", 7 ], [ "scots_cookbook", 9 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 400 ], [ "oxy_torch", 80 ] ] ],
- "components": [
- [ [ "steel_lump", 3 ], [ "steel_chunk", 12 ], [ "scrap", 36 ] ],
- [ [ "2x4", 1 ], [ "stick", 2 ] ],
- [ [ "fur", 1 ], [ "leather", 1 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 12 ], [ "steel_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ], [ [ "fur", 1 ], [ "leather", 1 ] ] ]
},
{
"type": "recipe",
@@ -2449,13 +2437,10 @@
"difficulty": 8,
"time": "8 h",
"book_learn": [ [ "textbook_weapwest", 8 ], [ "recipe_melee", 7 ], [ "scots_cookbook", 9 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 400 ], [ "oxy_torch", 80 ] ] ],
- "components": [
- [ [ "steel_lump", 3 ], [ "steel_chunk", 12 ], [ "scrap", 36 ] ],
- [ [ "2x4", 2 ], [ "stick", 4 ] ],
- [ [ "fur", 2 ], [ "leather", 2 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 12 ], [ "steel_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 2 ], [ "stick", 4 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
},
{
"type": "recipe",
@@ -2466,9 +2451,10 @@
"difficulty": 7,
"time": "8 h",
"book_learn": [ [ "textbook_weapwest", 8 ], [ "recipe_melee", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 350 ], [ "oxy_torch", 70 ] ] ],
- "components": [ [ [ "steel_lump", 2 ], [ "steel_chunk", 8 ], [ "scrap", 24 ] ], [ [ "2x4", 1 ], [ "stick", 2 ] ] ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "scrap", 24 ] ], [ [ "2x4", 1 ], [ "stick", 2 ] ] ]
},
{
"type": "recipe",
@@ -2479,12 +2465,108 @@
"difficulty": 9,
"time": "7 h",
"book_learn": [ [ "textbook_weapwest", 8 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 450 ], [ "oxy_torch", 90 ] ] ],
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "fencing_foil_sharpened",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_PIERCING",
+ "skill_used": "fabrication",
+ "time": "1 h 40 m",
+ "autolearn": true,
+ "tools": [ [ [ "rock", -1 ], [ "ceramic_shard", -1 ], [ "sharp_rock", -1 ] ] ],
+ "qualities": [ { "id": "HAMMER", "level": 1 } ],
+ "components": [ [ [ "fencing_foil", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "fencing_epee_sharpened",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_PIERCING",
+ "skill_used": "fabrication",
+ "time": "1 h 40 m",
+ "autolearn": true,
+ "qualities": [ { "id": "HAMMER", "level": 1 } ],
+ "tools": [ [ [ "rock", -1 ], [ "ceramic_shard", -1 ], [ "sharp_rock", -1 ] ] ],
+ "components": [ [ [ "fencing_epee", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "fencing_sabre_sharpened",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_PIERCING",
+ "skill_used": "fabrication",
+ "time": "1 h 40 m",
+ "autolearn": true,
+ "qualities": [ { "id": "HAMMER", "level": 1 } ],
+ "tools": [ [ [ "rock", -1 ], [ "ceramic_shard", -1 ], [ "sharp_rock", -1 ] ] ],
+ "components": [ [ [ "fencing_sabre", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "shock_foil",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_PIERCING",
+ "skill_used": "fabrication",
+ "skills_required": [ "electronics", 3 ],
+ "difficulty": 3,
+ "time": "15 m",
+ "reversible": true,
+ "book_learn": [ [ "textbook_electronics", 3 ], [ "advanced_electronics", 3 ], [ "recipe_melee", 4 ] ],
+ "using": [ [ "soldering_standard", 10 ] ],
+ "qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
- [ [ "steel_lump", 2 ], [ "steel_chunk", 8 ], [ "scrap", 24 ] ],
- [ [ "2x4", 1 ], [ "stick", 2 ] ],
- [ [ "fur", 2 ], [ "leather", 2 ] ]
+ [ [ "fencing_foil_sharpened", 1 ] ],
+ [ [ "fur", 1 ], [ "leather", 1 ] ],
+ [ [ "duct_tape", 100 ], [ "superglue", 1 ] ],
+ [ [ "tazer", 1 ] ],
+ [ [ "cable", 10 ] ]
+ ]
+ },
+ {
+ "type": "recipe",
+ "result": "shock_epee",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_PIERCING",
+ "skill_used": "fabrication",
+ "skills_required": [ "electronics", 3 ],
+ "difficulty": 3,
+ "time": "15 m",
+ "reversible": true,
+ "book_learn": [ [ "textbook_electronics", 3 ], [ "advanced_electronics", 3 ], [ "recipe_melee", 4 ] ],
+ "using": [ [ "soldering_standard", 10 ] ],
+ "qualities": [ { "id": "SCREW", "level": 1 } ],
+ "components": [
+ [ [ "fencing_epee_sharpened", 1 ] ],
+ [ [ "fur", 1 ], [ "leather", 1 ] ],
+ [ [ "duct_tape", 100 ], [ "superglue", 1 ] ],
+ [ [ "tazer", 1 ] ],
+ [ [ "cable", 10 ] ]
+ ]
+ },
+ {
+ "type": "recipe",
+ "result": "shock_sabre",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_PIERCING",
+ "skill_used": "fabrication",
+ "skills_required": [ "electronics", 3 ],
+ "difficulty": 3,
+ "time": "15 m",
+ "reversible": true,
+ "book_learn": [ [ "textbook_electronics", 3 ], [ "advanced_electronics", 3 ], [ "recipe_melee", 4 ] ],
+ "using": [ [ "soldering_standard", 10 ] ],
+ "qualities": [ { "id": "SCREW", "level": 1 } ],
+ "components": [
+ [ [ "fencing_sabre_sharpened", 1 ] ],
+ [ [ "fur", 1 ], [ "leather", 1 ] ],
+ [ [ "duct_tape", 100 ], [ "superglue", 1 ] ],
+ [ [ "tazer", 1 ] ],
+ [ [ "cable", 10 ] ]
]
},
{
@@ -2496,14 +2578,10 @@
"difficulty": 8,
"time": "8 h",
"book_learn": [ [ "textbook_armschina", 7 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 425 ], [ "oxy_torch", 85 ] ] ],
- "components": [
- [ [ "filament", 100, "LIST" ] ],
- [ [ "steel_lump", 3 ], [ "steel_chunk", 12 ], [ "scrap", 36 ] ],
- [ [ "2x4", 1 ], [ "stick", 2 ] ],
- [ [ "fur", 1 ], [ "leather", 1 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 12 ], [ "steel_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "filament", 100, "LIST" ] ], [ [ "2x4", 1 ], [ "stick", 2 ] ], [ [ "fur", 1 ], [ "leather", 1 ] ] ]
},
{
"type": "recipe",
@@ -2514,13 +2592,10 @@
"difficulty": 8,
"time": "7 h",
"book_learn": [ [ "textbook_armschina", 7 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 450 ], [ "oxy_torch", 90 ] ] ],
- "components": [
- [ [ "steel_lump", 3 ], [ "steel_chunk", 12 ], [ "scrap", 36 ] ],
- [ [ "2x4", 1 ], [ "stick", 2 ] ],
- [ [ "fur", 1 ], [ "leather", 1 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 12 ], [ "steel_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ], [ [ "fur", 1 ], [ "leather", 1 ] ] ]
},
{
"type": "recipe",
@@ -2531,13 +2606,10 @@
"difficulty": 8,
"time": "8 h 10 m",
"book_learn": [ [ "textbook_weapwest", 7 ], [ "scots_cookbook", 9 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 450 ], [ "oxy_torch", 90 ] ] ],
- "components": [
- [ [ "steel_lump", 4 ], [ "steel_chunk", 16 ], [ "scrap", 48 ] ],
- [ [ "2x4", 1 ], [ "stick", 2 ] ],
- [ [ "fur", 1 ], [ "leather", 1 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 16 ], [ "steel_standard", 4 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ], [ [ "fur", 1 ], [ "leather", 1 ] ] ]
},
{
"type": "recipe",
@@ -2548,13 +2620,10 @@
"difficulty": 8,
"time": "7 h",
"book_learn": [ [ "textbook_weapwest", 7 ], [ "scots_cookbook", 9 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 450 ], [ "oxy_torch", 90 ] ] ],
- "components": [
- [ [ "steel_lump", 4 ], [ "steel_chunk", 16 ], [ "scrap", 48 ] ],
- [ [ "2x4", 1 ], [ "stick", 2 ] ],
- [ [ "fur", 1 ], [ "leather", 1 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 16 ], [ "steel_standard", 4 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ], [ [ "fur", 1 ], [ "leather", 1 ] ] ]
},
{
"type": "recipe",
@@ -2565,13 +2634,10 @@
"difficulty": 9,
"time": "8 h",
"book_learn": [ [ "textbook_weapwest", 8 ], [ "scots_cookbook", 10 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 450 ], [ "oxy_torch", 90 ] ] ],
- "components": [
- [ [ "steel_lump", 4 ], [ "steel_chunk", 16 ], [ "scrap", 48 ] ],
- [ [ "2x4", 2 ], [ "stick", 4 ] ],
- [ [ "fur", 2 ], [ "leather", 2 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 16 ], [ "steel_standard", 4 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 2 ], [ "stick", 4 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
},
{
"type": "recipe",
@@ -2587,7 +2653,7 @@
"//": "Bokken is a single piece of wood, and the heavy stick just isn't large enough.",
"components": [
[ [ "log", 1 ] ],
- [ [ "tallow", 2 ], [ "tallow_tainted", 2 ], [ "cooking_oil", 16 ], [ "cooking_oil2", 16 ], [ "lamp_oil", 250 ] ],
+ [ [ "any_tallow", 2, "LIST" ], [ "cooking_oil", 16 ], [ "cooking_oil2", 16 ], [ "lamp_oil", 250 ] ],
[ [ "fur", 2 ], [ "leather", 2 ] ],
[ [ "duct_tape", 20 ], [ "filament", 20, "LIST" ] ]
]
@@ -2601,13 +2667,10 @@
"difficulty": 7,
"time": "6 h 20 m",
"book_learn": [ [ "textbook_weapeast", 6 ], [ "manual_knives", 7 ], [ "recipe_melee", 8 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 310 ], [ "oxy_torch", 70 ] ] ],
- "components": [
- [ [ "steel_lump", 1 ], [ "steel_chunk", 5 ], [ "scrap", 14 ] ],
- [ [ "2x4", 1 ], [ "stick", 1 ] ],
- [ [ "fur", 2 ], [ "leather", 2 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 1 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
},
{
"type": "recipe",
@@ -2618,13 +2681,10 @@
"difficulty": 8,
"time": "7 h",
"book_learn": [ [ "textbook_weapeast", 7 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 400 ], [ "oxy_torch", 80 ] ] ],
- "components": [
- [ [ "steel_lump", 2 ], [ "steel_chunk", 6 ], [ "scrap", 18 ] ],
- [ [ "2x4", 1 ], [ "stick", 2 ] ],
- [ [ "fur", 2 ], [ "leather", 2 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
},
{
"type": "recipe",
@@ -2635,13 +2695,10 @@
"difficulty": 9,
"time": "8 h",
"book_learn": [ [ "textbook_weapeast", 8 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 450 ], [ "oxy_torch", 90 ] ] ],
- "components": [
- [ [ "steel_lump", 2 ], [ "steel_chunk", 8 ], [ "scrap", 24 ] ],
- [ [ "2x4", 2 ], [ "stick", 4 ] ],
- [ [ "fur", 2 ], [ "leather", 2 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 2 ], [ "stick", 4 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
},
{
"type": "recipe",
@@ -2652,13 +2709,10 @@
"difficulty": 10,
"time": "9 h 40 m",
"book_learn": [ [ "textbook_weapeast", 8 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 500 ], [ "oxy_torch", 100 ] ] ],
- "components": [
- [ [ "steel_lump", 5 ], [ "steel_chunk", 20 ], [ "scrap", 60 ] ],
- [ [ "2x4", 3 ], [ "stick", 6 ] ],
- [ [ "fur", 3 ], [ "leather", 3 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 20 ], [ "steel_standard", 5 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 3 ], [ "stick", 6 ] ], [ [ "fur", 3 ], [ "leather", 3 ] ] ]
},
{
"type": "recipe",
@@ -2669,13 +2723,9 @@
"difficulty": 4,
"time": "3 h",
"book_learn": [ [ "textbook_weapwest", 3 ], [ "recipe_melee", 4 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "forge", 200 ], [ "oxy_torch", 40 ] ] ],
- "components": [
- [ [ "steel_lump", 3 ], [ "steel_chunk", 12 ], [ "scrap", 36 ] ],
- [ [ "2x4", 3 ], [ "stick", 6 ] ],
- [ [ "fur", 3 ], [ "leather", 3 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 12 ], [ "steel_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "components": [ [ [ "2x4", 3 ], [ "stick", 6 ] ], [ [ "fur", 3 ], [ "leather", 3 ] ] ]
},
{
"type": "recipe",
@@ -2686,13 +2736,10 @@
"difficulty": 6,
"time": "4 h",
"book_learn": [ [ "textbook_weapwest", 5 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 300 ], [ "oxy_torch", 60 ] ] ],
- "components": [
- [ [ "steel_lump", 4 ], [ "steel_chunk", 16 ], [ "scrap", 48 ] ],
- [ [ "2x4", 3 ], [ "stick", 6 ] ],
- [ [ "fur", 3 ], [ "leather", 3 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 16 ], [ "steel_standard", 4 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 3 ], [ "stick", 6 ] ], [ [ "fur", 3 ], [ "leather", 3 ] ] ]
},
{
"type": "recipe",
@@ -2703,13 +2750,10 @@
"difficulty": 7,
"time": "6 h",
"book_learn": [ [ "textbook_weapwest", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 350 ], [ "oxy_torch", 70 ] ] ],
- "components": [
- [ [ "steel_lump", 2 ], [ "steel_chunk", 8 ], [ "scrap", 24 ] ],
- [ [ "stick_long", 1 ] ],
- [ [ "fur", 2 ], [ "leather", 2 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "stick_long", 1 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
},
{
"type": "recipe",
@@ -2733,9 +2777,8 @@
"time": "24 m",
"autolearn": true,
"book_learn": [ [ "textbook_weapwest", 2 ], [ "recipe_melee", 3 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "forge", 150 ], [ "oxy_torch", 30 ] ] ],
- "components": [ [ [ "q_staff", 1 ] ], [ [ "scrap", 6 ] ] ]
+ "using": [ [ "blacksmithing_standard", 2 ], [ "steel_tiny", 2 ] ],
+ "components": [ [ [ "q_staff", 1 ] ] ]
},
{
"type": "recipe",
@@ -2746,9 +2789,9 @@
"difficulty": 5,
"time": "8 h",
"book_learn": [ [ "textbook_weapeast", 9 ], [ "recipe_melee", 4 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 250 ], [ "oxy_torch", 50 ] ] ],
- "components": [ [ [ "steel_chunk", 3 ], [ "scrap", 9 ] ] ]
+ "using": [ [ "blacksmithing_standard", 3 ], [ "steel_tiny", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -2868,9 +2911,9 @@
"difficulty": 3,
"time": "1 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 50 ], [ "oxy_torch", 10 ] ] ],
- "components": [ [ [ "steel_chunk", 2 ], [ "scrap", 6 ] ] ]
+ "using": [ [ "blacksmithing_standard", 2 ], [ "steel_tiny", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -2881,9 +2924,9 @@
"difficulty": 6,
"time": "3 h",
"autolearn": true,
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
- "components": [ [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ] ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
},
{
"type": "recipe",
@@ -2894,14 +2937,10 @@
"difficulty": 7,
"time": "7 h 40 m",
"book_learn": [ [ "textbook_armschina", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 450 ], [ "oxy_torch", 90 ] ] ],
- "components": [
- [ [ "filament", 100, "LIST" ] ],
- [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ],
- [ [ "stick_long", 1 ] ],
- [ [ "fur", 2 ], [ "leather", 2 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 4 ], [ "steel_standard", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "filament", 100, "LIST" ] ], [ [ "stick_long", 1 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
},
{
"type": "recipe",
@@ -2912,13 +2951,10 @@
"difficulty": 7,
"time": "6 h",
"book_learn": [ [ "textbook_weapwest", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 350 ], [ "oxy_torch", 70 ] ] ],
- "components": [
- [ [ "steel_lump", 3 ], [ "steel_chunk", 12 ], [ "scrap", 36 ] ],
- [ [ "stick_long", 1 ] ],
- [ [ "fur", 2 ], [ "leather", 2 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 12 ], [ "steel_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "stick_long", 1 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
},
{
"type": "recipe",
@@ -2929,13 +2965,10 @@
"difficulty": 7,
"time": "7 h 40 m",
"book_learn": [ [ "textbook_weapwest", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 450 ], [ "oxy_torch", 90 ] ] ],
- "components": [
- [ [ "steel_lump", 2 ], [ "steel_chunk", 8 ], [ "scrap", 24 ] ],
- [ [ "stick_long", 1 ] ],
- [ [ "fur", 2 ], [ "leather", 2 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "stick_long", 1 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
},
{
"type": "recipe",
@@ -2946,13 +2979,10 @@
"difficulty": 7,
"time": "7 h 40 m",
"book_learn": [ [ "textbook_weapeast", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 450 ], [ "oxy_torch", 90 ] ] ],
- "components": [
- [ [ "steel_lump", 2 ], [ "steel_chunk", 8 ], [ "scrap", 24 ] ],
- [ [ "stick_long", 1 ] ],
- [ [ "fur", 2 ], [ "leather", 2 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "stick_long", 1 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
},
{
"type": "recipe",
@@ -2964,8 +2994,9 @@
"difficulty": 7,
"time": "46 m",
"book_learn": [ [ "textbook_weapeast", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
+ "using": [ [ "blacksmithing_standard", 5 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
"components": [ [ [ "katana", 1 ], [ "wakizashi", 1 ] ], [ [ "stick_long", 1 ] ] ]
},
{
@@ -2978,13 +3009,9 @@
"skills_required": [ "melee", 5 ],
"time": "5 m",
"autolearn": true,
- "qualities": [
- { "id": "ANVIL", "level": 3 },
- { "id": "HAMMER", "level": 1 },
- { "id": "SAW_M", "level": 1 },
- { "id": "CHISEL", "level": 3 }
- ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
+ "using": [ [ "blacksmithing_standard", 5 ] ],
+ "qualities": [ { "id": "SAW_M", "level": 1 }, { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
"components": [ [ [ "blade", 1 ] ], [ [ "spike", 1 ] ], [ [ "pipe", 2 ] ], [ [ "duct_tape", 100 ] ] ]
},
{
@@ -3038,27 +3065,25 @@
"subcategory": "CSC_WEAPON_RANGED",
"skill_used": "fabrication",
"skills_required": [ [ "mechanics", 10 ], [ "electronics", 9 ], [ "computer", 2 ] ],
- "using": [ [ "soldering_standard", 20 ], [ "welding_standard", 50 ], [ "forging_standard", 4 ], [ "surface_heat", 30 ] ],
+ "using": [
+ [ "soldering_standard", 20 ],
+ [ "welding_standard", 50 ],
+ [ "blacksmithing_standard", 12 ],
+ [ "surface_heat", 30 ],
+ [ "steel_standard", 3 ]
+ ],
"difficulty": 10,
"time": "12 h",
"autolearn": true,
"qualities": [
- { "id": "ANVIL", "level": 3 },
{ "id": "SAW_M", "level": 1 },
{ "id": "SAW_M_FINE", "level": 1 },
{ "id": "SCREW_FINE", "level": 1 },
{ "id": "WRENCH_FINE", "level": 1 },
- { "id": "HAMMER", "level": 3 },
{ "id": "CHISEL", "level": 3 }
],
- "tools": [
- [ [ "tongs", -1 ] ],
- [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ],
- [ [ "swage", -1 ] ],
- [ [ "mold_plastic", -1 ] ]
- ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "swage", -1 ] ], [ [ "mold_plastic", -1 ] ] ],
"components": [
- [ [ "steel_lump", 6 ], [ "steel_chunk", 24 ], [ "scrap", 72 ] ],
[ [ "plastic_chunk", 20 ] ],
[ [ "sheet_metal", 1 ] ],
[ [ "cable", 240 ] ],
@@ -3123,13 +3148,10 @@
"difficulty": 7,
"time": "7 h",
"book_learn": [ [ "textbook_weapwest", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 350 ], [ "oxy_torch", 70 ] ] ],
- "components": [
- [ [ "steel_lump", 3 ], [ "steel_chunk", 12 ], [ "scrap", 36 ] ],
- [ [ "stick_long", 1 ] ],
- [ [ "fur", 2 ], [ "leather", 2 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 12 ], [ "steel_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "stick_long", 1 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
},
{
"type": "recipe",
@@ -3140,14 +3162,11 @@
"difficulty": 5,
"time": "13 h 20 m",
"book_learn": [ [ "textbook_weapeast", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
+ "using": [ [ "blacksmithing_standard", 20 ], [ "steel_standard", 5 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
"//": "basically 2.5x the resources of a single machete to cover the fact that it's two weapons, each with a hand guard",
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 500 ], [ "oxy_torch", 100 ] ] ],
- "components": [
- [ [ "steel_lump", 5 ], [ "steel_chunk", 20 ], [ "scrap", 60 ] ],
- [ [ "2x4", 2 ], [ "stick", 4 ] ],
- [ [ "fur", 4 ], [ "leather", 4 ] ]
- ]
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 2 ], [ "stick", 4 ] ], [ [ "fur", 4 ], [ "leather", 4 ] ] ]
},
{
"type": "recipe",
@@ -3163,7 +3182,7 @@
"//": "a long pole is a single piece of wood, and the heavy stick just isn't large enough.",
"components": [
[ [ "log", 1 ] ],
- [ [ "tallow", 4 ], [ "tallow_tainted", 4 ], [ "cooking_oil", 32 ], [ "cooking_oil2", 32 ], [ "lamp_oil", 500 ] ]
+ [ [ "any_tallow", 4, "LIST" ], [ "cooking_oil", 32 ], [ "cooking_oil2", 32 ], [ "lamp_oil", 500 ] ]
]
},
{
@@ -3175,12 +3194,9 @@
"difficulty": 7,
"time": "6 h",
"book_learn": [ [ "textbook_weapwest", 6 ] ],
- "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ], [ [ "forge", 350 ], [ "oxy_torch", 70 ] ] ],
- "components": [
- [ [ "steel_lump", 3 ], [ "steel_chunk", 12 ], [ "scrap", 36 ] ],
- [ [ "stick_long", 1 ] ],
- [ [ "fur", 2 ], [ "leather", 2 ] ]
- ]
+ "using": [ [ "blacksmithing_standard", 12 ], [ "steel_standard", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "stick_long", 1 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ] ]
}
]
diff --git a/data/json/recipes/weapon/bashing.json b/data/json/recipes/weapon/bashing.json
index 36ce534ddbb43..171b9bc73a87b 100644
--- a/data/json/recipes/weapon/bashing.json
+++ b/data/json/recipes/weapon/bashing.json
@@ -1,4 +1,17 @@
[
+ {
+ "result": "hollow_cane",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_BASHING",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "time": "40 m",
+ "autolearn": true,
+ "using": [ [ "adhesive", 1 ] ],
+ "qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "2x4", 1 ] ], [ [ "nail", 5 ] ] ]
+ },
{
"result": "battletorch",
"type": "recipe",
@@ -33,7 +46,7 @@
"autolearn": true,
"qualities": [ { "id": "SAW_W", "level": 1 }, { "id": "CUT", "level": 1 } ],
"tools": [ [ [ "char_smoker", 100 ] ] ],
- "components": [ [ [ "log", 1 ] ], [ [ "butter", 30 ], [ "lard", 4 ] ] ]
+ "components": [ [ [ "log", 1 ] ], [ [ "butter", 30 ], [ "lard", 4 ], [ "mutant_lard", 4 ] ] ]
},
{
"type": "recipe",
@@ -45,7 +58,8 @@
"time": "30 m",
"autolearn": true,
"qualities": [ { "id": "DRILL", "level": 1 } ],
- "tools": [ [ [ "forge", 100 ], [ "oxy_torch", 20 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
+ "using": [ [ "forging_standard", 5 ] ],
+ "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [ [ [ "shillelagh", 1 ] ], [ [ "weights", 15, "LIST" ] ] ]
},
{
diff --git a/data/json/recipes/weapon/explosive.json b/data/json/recipes/weapon/explosive.json
index 7926542157584..5e6f8324ed388 100644
--- a/data/json/recipes/weapon/explosive.json
+++ b/data/json/recipes/weapon/explosive.json
@@ -31,9 +31,8 @@
[ [ "ammonia", 1 ], [ "chem_ethanol", 250 ], [ "denat_alcohol", 250 ] ],
[
[ "soap", 3 ],
- [ "tallow", 2 ],
+ [ "edible_tallow_lard", 2, "LIST" ],
[ "tallow_tainted", 2 ],
- [ "lard", 2 ],
[ "cooking_oil", 16 ],
[ "cooking_oil2", 16 ]
]
@@ -163,7 +162,7 @@
"components": [
[ [ "bleach", 2 ], [ "oxy_powder", 200 ] ],
[ [ "fungicide", 50 ] ],
- [ [ "chem_sulphur", 10 ] ],
+ [ [ "chem_sulphur", 150 ] ],
[ [ "canister_empty", 1 ], [ "can_food_unsealed", 1 ], [ "can_drink_unsealed", 1 ] ],
[ [ "superglue", 1 ] ]
]
diff --git a/data/json/recipes/weapon/mods.json b/data/json/recipes/weapon/mods.json
index 1df8d22e89b80..2eb52a39bd723 100644
--- a/data/json/recipes/weapon/mods.json
+++ b/data/json/recipes/weapon/mods.json
@@ -1,4 +1,186 @@
[
+ {
+ "result": "bipod_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "skills_required": [ [ "gun", 2 ] ],
+ "time": "30 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 25 ], [ "small_repairkit", 45 ] ] ],
+ "components": [ [ [ "bipod", 1 ] ], [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "result": "grip_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "skills_required": [ [ "gun", 2 ] ],
+ "time": "30 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 25 ], [ "small_repairkit", 45 ] ] ],
+ "components": [ [ [ "grip", 1 ] ], [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "result": "m203_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 7,
+ "skills_required": [ [ "gun", 2 ], [ "launcher", 1 ] ],
+ "time": "30 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 50 ], [ "small_repairkit", 100 ] ] ],
+ "components": [ [ [ "m203", 1 ] ], [ [ "scrap", 3 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "result": "m320_mod_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 7,
+ "skills_required": [ [ "gun", 2 ], [ "launcher", 1 ] ],
+ "time": "90 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 50 ], [ "small_repairkit", 100 ] ] ],
+ "components": [ [ [ "m320_mod", 1 ] ], [ [ "scrap", 3 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "result": "masterkey_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 7,
+ "skills_required": [ [ "gun", 2 ], [ "shotgun", 1 ] ],
+ "time": "90 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 50 ], [ "small_repairkit", 100 ] ] ],
+ "components": [ [ [ "masterkey", 1 ] ], [ [ "scrap", 3 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "result": "rm121aux_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 7,
+ "skills_required": [ [ "gun", 2 ], [ "shotgun", 2 ] ],
+ "time": "90 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 50 ], [ "small_repairkit", 100 ] ] ],
+ "components": [ [ [ "rm121aux", 1 ] ], [ [ "scrap", 3 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "result": "u_shotgun_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 7,
+ "skills_required": [ [ "gun", 2 ], [ "shotgun", 1 ] ],
+ "time": "90 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 50 ], [ "small_repairkit", 100 ] ] ],
+ "components": [ [ [ "u_shotgun", 1 ] ], [ [ "scrap", 3 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "result": "knife_combat_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "skills_required": [ [ "gun", 2 ], [ "melee", 1 ] ],
+ "time": "30 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 25 ], [ "small_repairkit", 45 ] ] ],
+ "components": [ [ [ "knife_combat", 1 ] ], [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "result": "sword_bayonet_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "skills_required": [ [ "gun", 2 ], [ "melee", 2 ] ],
+ "time": "30 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 25 ], [ "small_repairkit", 45 ] ] ],
+ "components": [ [ [ "sword_bayonet", 1 ] ], [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "result": "offset_sight_rail_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "skills_required": [ [ "gun", 4 ] ],
+ "time": "30 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 25 ], [ "small_repairkit", 45 ] ] ],
+ "components": [ [ [ "offset_sight_rail", 1 ] ], [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "result": "stabilizer_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "skills_required": [ [ "gun", 6 ] ],
+ "time": "30 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 25 ], [ "small_repairkit", 45 ] ] ],
+ "components": [ [ [ "stabilizer", 1 ] ], [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "result": "muzzle_brake_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "skills_required": [ [ "gun", 2 ] ],
+ "time": "30 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 25 ], [ "small_repairkit", 45 ] ] ],
+ "components": [ [ [ "muzzle_brake", 1 ] ], [ [ "scrap", 2 ] ] ]
+ },
+ {
+ "result": "rifle_scope_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "skills_required": [ [ "gun", 4 ] ],
+ "time": "30 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 25 ], [ "small_repairkit", 45 ] ] ],
+ "components": [ [ [ "rifle_scope", 1 ] ], [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "result": "acog_scope_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "skills_required": [ [ "gun", 4 ] ],
+ "time": "30 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 25 ], [ "small_repairkit", 45 ] ] ],
+ "components": [ [ [ "acog_scope", 1 ] ], [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
{
"result": "improve_sights",
"type": "recipe",
@@ -51,6 +233,19 @@
"tools": [ [ [ "large_repairkit", 10 ], [ "small_repairkit", 30 ] ] ],
"components": [ [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
},
+ {
+ "result": "offset_sights_mod",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_MODS",
+ "skill_used": "fabrication",
+ "difficulty": 4,
+ "skills_required": [ [ "gun", 2 ], [ "rifle", 1 ] ],
+ "time": "30 m",
+ "autolearn": true,
+ "tools": [ [ [ "large_repairkit", 25 ], [ "small_repairkit", 45 ] ] ],
+ "components": [ [ [ "offset_sights", 1 ] ], [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
{
"result": "sights_mount",
"type": "recipe",
diff --git a/data/json/recipes/weapon/piercing.json b/data/json/recipes/weapon/piercing.json
index abf165f1b68f0..c95f8c38673fd 100644
--- a/data/json/recipes/weapon/piercing.json
+++ b/data/json/recipes/weapon/piercing.json
@@ -1,4 +1,104 @@
[
+ {
+ "result": "fencing_epee_sharpened",
+ "id_suffix": "from_scratch",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_PIERCING",
+ "skill_used": "fabrication",
+ "difficulty": 7,
+ "time": "6 h",
+ "book_learn": [ [ "textbook_weapwest", 6 ] ],
+ "using": [ [ "blacksmithing_standard", 3 ], [ "steel_tiny", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ] ]
+ },
+ {
+ "result": "fencing_foil_sharpened",
+ "id_suffix": "from_scratch",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_PIERCING",
+ "skill_used": "fabrication",
+ "difficulty": 7,
+ "time": "6 h",
+ "book_learn": [ [ "textbook_weapwest", 6 ] ],
+ "using": [ [ "blacksmithing_standard", 2 ], [ "steel_tiny", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ] ]
+ },
+ {
+ "result": "fencing_sabre_sharpened",
+ "id_suffix": "from_scratch",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_PIERCING",
+ "skill_used": "fabrication",
+ "difficulty": 7,
+ "time": "6 h",
+ "book_learn": [ [ "textbook_weapwest", 6 ] ],
+ "using": [ [ "blacksmithing_standard", 1 ], [ "steel_tiny", 1 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ], [ [ "sheet_metal_small", 1 ] ] ]
+ },
+ {
+ "result": "kirpan",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_PIERCING",
+ "skill_used": "fabrication",
+ "difficulty": 5,
+ "time": "3 h",
+ "book_learn": [ [ "textbook_weapeast", 5 ] ],
+ "using": [ [ "blacksmithing_standard", 2 ], [ "steel_tiny", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ]
+ },
+ {
+ "result": "kris",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_PIERCING",
+ "skill_used": "fabrication",
+ "difficulty": 9,
+ "time": "10 h",
+ "book_learn": [ [ "textbook_weapeast", 9 ] ],
+ "using": [ [ "blacksmithing_standard", 2 ], [ "steel_tiny", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ] ]
+ },
+ {
+ "result": "pitchfork",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_PIERCING",
+ "skill_used": "fabrication",
+ "difficulty": 5,
+ "time": "3 h",
+ "autolearn": true,
+ "using": [ [ "blacksmithing_standard", 2 ], [ "steel_tiny", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "stick_long", 1 ] ] ]
+ },
+ {
+ "result": "sword_cane",
+ "type": "recipe",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_PIERCING",
+ "skill_used": "fabrication",
+ "difficulty": 8,
+ "time": "8 h",
+ "book_learn": [ [ "textbook_weapwest", 8 ] ],
+ "using": [ [ "blacksmithing_standard", 3 ], [ "steel_tiny", 3 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ] ]
+ },
{
"result": "spear_steel",
"type": "recipe",
diff --git a/data/json/recipes/weapon/ranged.json b/data/json/recipes/weapon/ranged.json
index 48157a1d643e3..882e878e47d3d 100644
--- a/data/json/recipes/weapon/ranged.json
+++ b/data/json/recipes/weapon/ranged.json
@@ -14,6 +14,19 @@
"using": [ [ "welding_standard", 40 ] ],
"components": [ [ [ "pipe", 2 ] ], [ [ "hose", 2 ] ], [ [ "steel_lump", 1 ], [ "steel_chunk", 4 ], [ "scrap", 12 ] ] ]
},
+ {
+ "type": "recipe",
+ "result": "staff_sling",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_RANGED",
+ "skill_used": "fabrication",
+ "difficulty": 3,
+ "skills_required": [ "throw", 1 ],
+ "time": "1 h",
+ "autolearn": true,
+ "qualities": [ { "id": "HAMMER", "level": 3 }, { "id": "SAW_W", "level": 1 } ],
+ "components": [ [ [ "stick_long", 1 ] ], [ [ "sling", 1 ] ], [ [ "nail", 1 ] ] ]
+ },
{
"result": "nailrifle",
"type": "recipe",
diff --git a/data/json/regional_map_settings.json b/data/json/regional_map_settings.json
index 4ae57514ce2c2..2a9430e9f0f93 100644
--- a/data/json/regional_map_settings.json
+++ b/data/json/regional_map_settings.json
@@ -592,6 +592,7 @@
"house_w_3": 40,
"house_w_4": 40,
"house_w_5": 40,
+ "house_w_6": 40,
"emptyresidentiallot": 20,
"apartments_con_new": 10,
"apartments_mod_new": 10,
@@ -604,13 +605,13 @@
"basements": { "basement": 1000, "basement_hidden_lab_stairs": 25, "basement_bionic": 50 },
"parks": {
"park": 400,
- "pool": 100,
- "pool_1": 50,
- "pool_2": 50,
- "pool_3": 50,
- "pool_4": 50,
- "pool_5": 50,
- "pool_6": 50,
+ "pool": 20,
+ "pool_1": 20,
+ "pool_2": 20,
+ "pool_3": 20,
+ "pool_4": 20,
+ "pool_5": 20,
+ "pool_6": 20,
"skate_park": 100,
"small_wooded_trail": 300,
"pavilion": 100,
@@ -796,7 +797,9 @@
"s_petstore_1": 100,
"s_petstore_2": 100,
"megastore": 150,
- "hotel": 75,
+ "hotel_1": 75,
+ "hotel_2": 75,
+ "hotel_3": 75,
"hospital": 175,
"public_works": 200,
"office_tower_2": 150,
@@ -825,7 +828,7 @@
},
"weather": {
"base_temperature": 6.5,
- "base_humidity": 66.0,
+ "base_humidity": 70.0,
"base_pressure": 1015.0,
"base_acid": 0.0,
"base_wind": 5.7,
diff --git a/data/json/requirements/ammo.json b/data/json/requirements/ammo.json
index 83af3a9fcf6ae..d0bb994e9bf3f 100644
--- a/data/json/requirements/ammo.json
+++ b/data/json/requirements/ammo.json
@@ -22,6 +22,12 @@
"//": "Components required for 380 ammo",
"components": [ [ [ "380_casing", 1 ] ], [ [ "smpistol_primer", 1 ] ] ]
},
+ {
+ "id": "ammo_57",
+ "type": "requirement",
+ "//": "Components required for 57 ammo",
+ "components": [ [ [ "57mm_casing", 1 ] ], [ [ "smpistol_primer", 1 ] ] ]
+ },
{
"id": "ammo_shot",
"type": "requirement",
@@ -34,6 +40,12 @@
"//": "Components required for .357 Magnum ammo",
"components": [ [ [ "357mag_casing", 1 ] ], [ [ "lgpistol_primer", 1 ] ] ]
},
+ {
+ "id": "ammo_357sig",
+ "type": "requirement",
+ "//": "Components required for .357 SIG ammo",
+ "components": [ [ [ "357sig_casing", 1 ] ], [ [ "smpistol_primer", 1 ] ] ]
+ },
{
"id": "ammo_10mm",
"type": "requirement",
diff --git a/data/json/requirements/cooking_components.json b/data/json/requirements/cooking_components.json
index 8c2f030c30c0a..c3e241c96bd9f 100644
--- a/data/json/requirements/cooking_components.json
+++ b/data/json/requirements/cooking_components.json
@@ -101,8 +101,23 @@
{
"id": "meat_red",
"type": "requirement",
- "//": "Anything you might consider raw 'red' meat. About 300-400kcal of meat.",
- "components": [ [ [ "meat", 1 ], [ "meat_scrap", 10 ], [ "rehydrated_meat", 1 ], [ "meat_canned", 1 ] ] ]
+ "//": "Anything you might consider raw 'red' meat. About 250mL of meat.",
+ "components": [
+ [
+ [ "meat", 1 ],
+ [ "mutant_meat", 1 ],
+ [ "meat_scrap", 10 ],
+ [ "mutant_meat_scrap", 10 ],
+ [ "rehydrated_meat", 1 ],
+ [ "meat_canned", 1 ]
+ ]
+ ]
+ },
+ {
+ "id": "meat_red_raw",
+ "type": "requirement",
+ "//": "Anything you might consider raw, unpreserved 'red' meat. About 250mL of meat.",
+ "components": [ [ [ "meat", 1 ], [ "mutant_meat", 1 ], [ "meat_scrap", 10 ], [ "mutant_meat_scrap", 10 ] ] ]
},
{
"id": "meat_nofish",
@@ -135,6 +150,7 @@
"components": [
[
[ "meat_cooked", 1 ],
+ [ "mutant_meat_cooked", 1 ],
[ "meat_pickled", 1 ],
[ "meat_smoked", 1 ],
[ "meat_salted", 1 ],
@@ -163,6 +179,42 @@
]
]
},
+ {
+ "id": "human_meat",
+ "type": "requirement",
+ "//": "Raw meat that non-cannibals would be unhappy eating.",
+ "components": [ [ [ "human_flesh", 1 ], [ "mutant_human_flesh", 1 ] ] ]
+ },
+ {
+ "id": "human_meat_cooked",
+ "type": "requirement",
+ "//": "Cooked meat that non-cannibals would be unhappy eating.",
+ "components": [ [ [ "human_cooked", 1 ], [ "mutant_human_cooked", 1 ] ] ]
+ },
+ {
+ "id": "any_fat",
+ "type": "requirement",
+ "//": "Any type of raw fat.",
+ "components": [ [ [ "fat", 1 ], [ "mutant_fat", 1 ], [ "fat_tainted", 1 ] ] ]
+ },
+ {
+ "id": "edible_fat",
+ "type": "requirement",
+ "//": "Any type of edible raw fat.",
+ "components": [ [ [ "fat", 1 ], [ "mutant_fat", 1 ] ] ]
+ },
+ {
+ "id": "edible_tallow_lard",
+ "type": "requirement",
+ "//": "Any type of edible rendered fat.",
+ "components": [ [ [ "tallow", 1 ], [ "lard", 1 ], [ "mutant_tallow", 1 ], [ "mutant_lard", 1 ] ] ]
+ },
+ {
+ "id": "any_tallow",
+ "type": "requirement",
+ "//": "Any type of tallow.",
+ "components": [ [ [ "tallow", 1 ], [ "mutant_tallow", 1 ], [ "tallow_tainted", 1 ] ] ]
+ },
{
"id": "seasoning_mild",
"type": "requirement",
diff --git a/data/json/requirements/materials.json b/data/json/requirements/materials.json
index 7cefa00a92298..461f88912b895 100644
--- a/data/json/requirements/materials.json
+++ b/data/json/requirements/materials.json
@@ -50,8 +50,20 @@
{
"id": "fabric_standard",
"type": "requirement",
- "//": "Materials used for crafting or repairing clothing or sheeting",
- "components": [ [ [ "rag", 1 ], [ "leather", 1 ], [ "nomex", 1 ], [ "neoprene", 1 ] ] ]
+ "//": "Materials used for crafting or repairing clothing or sheeting, etc.",
+ "components": [ [ [ "rag", 1 ], [ "lycra_patch", 1 ], [ "nylon", 1 ], [ "leather", 1 ], [ "nomex", 1 ], [ "neoprene", 1 ] ] ]
+ },
+ {
+ "id": "fabric_standard_permeable",
+ "type": "requirement",
+ "//": "Materials used for crafting or repairing woven fabrics",
+ "components": [ [ [ "rag", 1 ], [ "lycra_patch", 1 ], [ "nylon", 1 ], [ "nomex", 1 ] ] ]
+ },
+ {
+ "id": "fabric_standard_nostretch",
+ "type": "requirement",
+ "//": "Materials used for crafting or repairing non-form fitting clothing",
+ "components": [ [ [ "rag", 1 ], [ "nylon", 1 ], [ "nomex", 1 ] ] ]
},
{
"id": "filament",
@@ -66,6 +78,7 @@
"components": [
[
[ "tallow", 1 ],
+ [ "mutant_tallow", 1 ],
[ "cooking_oil", 8 ],
[ "cooking_oil2", 8 ],
[ "wax", 1 ],
@@ -144,5 +157,17 @@
"type": "requirement",
"//": "Materials used for plastic and rubber things.",
"components": [ [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "id": "solar_panel",
+ "type": "requirement",
+ "//": "Materials used for repairing solar panels",
+ "components": [ [ [ "solar_cell", 3 ] ], [ [ "cable", 5 ] ] ]
+ },
+ {
+ "id": "solar_panel_v2",
+ "type": "requirement",
+ "//": "Materials used for repairing upgraded solar panels",
+ "components": [ [ [ "solar_cell", 5 ] ], [ [ "cable", 8 ] ], [ [ "power_supply", 1 ] ], [ [ "amplifier", 1 ] ] ]
}
]
diff --git a/data/json/requirements/tailoring.json b/data/json/requirements/tailoring.json
new file mode 100644
index 0000000000000..7cc231bf73d71
--- /dev/null
+++ b/data/json/requirements/tailoring.json
@@ -0,0 +1,330 @@
+[
+ {
+ "id": "armor_acidchitin",
+ "type": "requirement",
+ "//": "Shaping and attaching a biosillicified chitin plate to something, per 112 g of biosillicified chitin. Time needed is 10 minutes per unit.",
+ "qualities": [ { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "acidchitin_piece", 1 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "armor_chainmail_assembling",
+ "type": "requirement",
+ "//": "Assembling chainmail rings into finished products, and riveting rings closed, per 1025 g of steel. It is assumed that each ring used comes with a prepared rivet. Time needed is 1 hour per unit (most of the time goes into making rings and then chainmail sheets first)",
+ "tools": [ [ [ "pliers", -1 ], [ "multitool", -1 ], [ "toolset", -1 ] ], [ [ "boltcutters", -1 ], [ "toolset", -1 ] ] ],
+ "components": [ [ [ "link_sheet", 1 ] ], [ [ "chain_link", 25 ] ] ]
+ },
+ {
+ "id": "armor_chitin",
+ "type": "requirement",
+ "//": "Shaping and attaching a chitin plate to something, per 90 g of chitin. Time needed is 10 minutes per unit.",
+ "qualities": [ { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "chitin_piece", 1 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "armor_kevlar_plate",
+ "type": "requirement",
+ "//": "Shaping and attaching a rigid Kevlar plate to something, per 300 g of rigid Kevlar. Time needed is 10 minutes per unit.",
+ "qualities": [ { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "kevlar_plate", 1 ] ], [ [ "superglue", 1 ] ] ]
+ },
+ {
+ "id": "armor_steel_plate",
+ "type": "requirement",
+ "//": "Attaching a steel plate to some flexible material like cloth or leather, as well as working it into shape needed, per 251 g of steel. Time needed is 20 minutes per unit.",
+ "qualities": [ { "id": "SAW_M", "level": 1 }, { "id": "HAMMER", "level": 1 }, { "id": "DRILL", "level": 1 } ],
+ "components": [ [ [ "sheet_metal_small", 1 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "armor_paper",
+ "type": "requirement",
+ "//": "Joining multiple sheets of paper together using duct tape, per 19 g of paper. Time needed is 2 minutes per unit.",
+ "components": [ [ [ "paper", 5 ] ], [ [ "duct_tape", 1 ] ] ]
+ },
+ {
+ "id": "armor_paper_lamellar",
+ "type": "requirement",
+ "//": "Layering paper sheets, cutting holes in them, laminating them with glue, and connecting multiple of resulting plates with cordage, per 162 g of paper. Time needed is 50 minutes per unit.",
+ "qualities": [ { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "paper", 50 ] ], [ [ "superglue", 1 ], [ "bone_glue", 1 ] ], [ [ "cordage_short", 2, "LIST" ] ] ]
+ },
+ {
+ "id": "armor_wood",
+ "type": "requirement",
+ "//": "Shaping and tying together multiple wood pieces of same size with lots of cordage, per 1463 g of wood. Time needed is 30 minutes per unit. Works for lamellar wooden armor as well as for planks tied to limbs.",
+ "qualities": [ { "id": "SAW_W", "level": 2 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "2x4", 1 ] ], [ [ "cordage", 2, "LIST" ] ] ]
+ },
+ {
+ "id": "button",
+ "type": "requirement",
+ "//": "All kinds of clothing buttons.",
+ "components": [ [ [ "button_plastic", 1 ], [ "button_wood", 1 ], [ "button_steel", 1 ] ] ]
+ },
+ {
+ "id": "dye_cloth",
+ "type": "requirement",
+ "//": "Dyeing cloth items, per 500 ml of dyed cloth. Use only for fancy clothing, otherwise it's unnecessary. Takes 720 minutes, this doesn't depend on amount.",
+ "qualities": [ { "id": "COOK", "level": 3 } ],
+ "tools": [ [ [ "surface_heat", 5, "LIST" ] ] ],
+ "components": [
+ [
+ [ "dye_powder", 5 ],
+ [ "tanbark", 1 ],
+ [ "coffee_raw", 1 ],
+ [ "coffee_raw_kentucky", 1 ],
+ [ "tea_raw", 1 ],
+ [ "mustard", 48 ],
+ [ "acorns", 1 ],
+ [ "wild_herbs", 100 ],
+ [ "raw_dandelion", 4 ],
+ [ "sugar_beet", 1 ],
+ [ "carrot", 12 ],
+ [ "irradiated_carrot", 12 ],
+ [ "carrot_wild", 6 ],
+ [ "onion", 1 ],
+ [ "irradiated_onion", 1 ],
+ [ "blueberries", 1 ],
+ [ "irradiated_blueberries", 1 ],
+ [ "strawberries", 1 ],
+ [ "irradiated_strawberries", 1 ],
+ [ "cranberries", 3 ],
+ [ "irradiated_cranberries", 3 ],
+ [ "raspberries", 1 ],
+ [ "irradiated_raspberries", 1 ],
+ [ "huckleberries", 1 ],
+ [ "irradiated_huckleberries", 1 ],
+ [ "mulberries", 1 ],
+ [ "irradiated_mulberries", 1 ],
+ [ "elderberries", 1 ],
+ [ "irradiated_elderberries", 1 ],
+ [ "blackberries", 1 ],
+ [ "irradiated_blackberries", 1 ],
+ [ "cherries", 1 ],
+ [ "irradiated_cherries", 1 ],
+ [ "grapes", 1 ],
+ [ "irradiated_grapes", 1 ],
+ [ "pomegranate", 1 ],
+ [ "irradiated_pomegranate", 1 ],
+ [ "rose_hips", 1 ],
+ [ "irradiated_rose_hips", 1 ],
+ [ "cabbage", 1 ],
+ [ "irradiated_cabbage", 1 ],
+ [ "celery", 1 ],
+ [ "irradiated_celery", 1 ],
+ [ "mushroom", 1 ]
+ ],
+ [
+ [ "ammonia", 2 ],
+ [ "vinegar", 16 ],
+ [ "ash", 100 ],
+ [ "tanbark", 1 ],
+ [ "salt", 100 ],
+ [ "chem_potassium_alum", 100 ]
+ ],
+ [ [ "water", 3 ], [ "water_clean", 3 ] ]
+ ]
+ },
+ {
+ "id": "fastener_large",
+ "type": "requirement",
+ "//": "All kinds of fasteners for jacket-sized soft objects.",
+ "components": [
+ [
+ [ "button", 9, "LIST" ],
+ [ "snapfastener_steel", 9 ],
+ [ "zipper_long_plastic", 1 ],
+ [ "touch_fastener", 6 ],
+ [ "string_6", 6 ]
+ ]
+ ]
+ },
+ {
+ "id": "fastener_small",
+ "type": "requirement",
+ "//": "All kinds of fasteners for footwear-sized soft objects, including pockets.",
+ "components": [
+ [
+ [ "button", 3, "LIST" ],
+ [ "snapfastener_steel", 3 ],
+ [ "zipper_short_plastic", 1 ],
+ [ "touch_fastener", 2 ],
+ [ "string_6", 2 ]
+ ]
+ ]
+ },
+ {
+ "id": "plastic_molding",
+ "type": "requirement",
+ "//": "Melting and reshaping plastic items, per 70 g of plastic. Usually takes 30 minutes per unit.",
+ "qualities": [ { "id": "CUT", "level": 1 } ],
+ "tools": [ [ [ "mold_plastic", -1 ] ], [ [ "surface_heat", 10, "LIST" ] ] ],
+ "components": [ [ [ "plastic_chunk", 1 ] ] ]
+ },
+ {
+ "id": "tailoring_cotton",
+ "type": "requirement",
+ "//": "Crafting cotton items, per 101 g of cotton; 10 g + excessive weight of material is wasted, producing rags and cotton scraps as byproducts. Time needed is usually 90 minutes per unit if hand-stitching.",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_cotton", 22 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "tailoring_cotton_knitting",
+ "type": "requirement",
+ "//": "Crafting cotton items via knitting, per 1 g of cotton; no material wasted. Time needed is usually 2 minutes per unit if doing it by hand.",
+ "qualities": [ { "id": "KNIT", "level": 1 } ],
+ "components": [ [ [ "thread", 1 ] ] ]
+ },
+ {
+ "id": "tailoring_cotton_patchwork",
+ "type": "requirement",
+ "//": "Crafting possibly-patchwork cotton items, per 101 g of cotton; 10 g + excessive weight of material is wasted, producing rags and cotton scraps as byproducts. Time needed is usually 90 minutes per unit if hand-stitching (most of the time actually needed goes into making a patchwork sheet)",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_cotton", 22 ], [ "sheet_cotton_patchwork", 1 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "tailoring_faux_fur",
+ "type": "requirement",
+ "//": "Crafting faux fur items, per 201 g of faux fur; 20 g + excessive weight of material is wasted, producing faux fur patches and scraps. Time needed is usually 90 minutes per unit if hand-stitching.",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_faux_fur", 22 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "tailoring_faux_fur_patchwork",
+ "type": "requirement",
+ "//": "Crafting possibly-patchwork faux fur items, per 201 g of faux fur; 20 g + excessive weight of material is wasted, producing faux fur patches and scraps. Time needed is usually 90 minutes per unit if hand-stitching (most of the time actually needed goes into making a patchwork sheet).",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_faux_fur", 22 ], [ "sheet_faux_fur_patchwork", 1 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "tailoring_felt",
+ "type": "requirement",
+ "//": "Crafting felt items (not via knitting), per 161 g of wool; 16 g + excessive weight of material is wasted, producing felt patches as byproducts. Time needed is usually 90 minutes per unit if hand-stitching.",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_felt", 22 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "tailoring_felt_patchwork",
+ "type": "requirement",
+ "//": "Crafting possibly-patchwork felt items (not via knitting), per 161 g of wool; 16 g + excessive weight of material is wasted, producing felt patches as byproducts. Time needed is usually 90 minutes per unit if hand-stitching. (most of the time actually needed goes into making a patchwork sheet)",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_felt", 22 ], [ "sheet_felt_patchwork", 1 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "tailoring_fur",
+ "type": "requirement",
+ "//": "Crafting fur items, per 415 g of fur; 273 g + excessive weight of material is wasted, producing fur patches as byproducts. Time needed is usually 360 minutes per unit if hand-stitching.",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 }, { "id": "LEATHER_AWL", "level": 1 } ],
+ "components": [ [ [ "tanned_pelt", 1 ] ], [ [ "filament", 4, "LIST" ] ] ]
+ },
+ {
+ "id": "tailoring_fur_small",
+ "type": "requirement",
+ "//": "Crafting either small or patchwork fur items, per 92 g of fur; 23 g + excessive weight of material is wasted, producing fur patches as byproducts. Time needed is usually 180 minutes per unit if hand-stitching.",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 }, { "id": "LEATHER_AWL", "level": 1 } ],
+ "components": [ [ [ "fur", 1 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "tailoring_kevlar",
+ "type": "requirement",
+ "//": "Crafting Kevlar items, per 101 g of Kevlar; 10 g + excessive weight of material is wasted, producing Kevlar scraps as byproducts. Time needed is usually 90 minutes per unit if hand-stitching.",
+ "qualities": [ { "id": "SEW", "level": 2 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_kevlar", 22 ] ], [ [ "thread_kevlar", 1 ] ] ]
+ },
+ {
+ "id": "tailoring_leather",
+ "type": "requirement",
+ "//": "Crafting leather items, per 364 g of leather; 240 g + excessive weight of material is wasted, producing leather patches as byproducts. Time needed is usually 360 minutes per unit if hand-stitching.",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 }, { "id": "LEATHER_AWL", "level": 1 } ],
+ "components": [ [ [ "tanned_hide", 1 ] ], [ [ "filament", 4, "LIST" ] ] ]
+ },
+ {
+ "id": "tailoring_leather_small",
+ "type": "requirement",
+ "//": "Crafting either small or patchwork leather items, per 81 g of leather; 20 g + excessive weight of material is wasted, producing leather patches as byproducts. Time needed is usually 180 minutes per unit if hand-stitching.",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 }, { "id": "LEATHER_AWL", "level": 1 } ],
+ "components": [ [ [ "leather", 1 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "tailoring_lycra",
+ "type": "requirement",
+ "//": "Crafting lycra items, per 55 g of lycra; 6 g + excessive weight of material is wasted, producing lycra scraps as byproducts. Time needed is usually 90 minutes per unit if hand-stitching.",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_lycra", 22 ] ], [ [ "thread_nomex", 1 ] ] ]
+ },
+ {
+ "id": "tailoring_lycra_patchwork",
+ "type": "requirement",
+ "//": "Crafting possibly-patchwork lycra items, per 55 g of lycra; 6 g + excessive weight of material is wasted, producing lycra scraps as byproducts. Time needed is usually 90 minutes per unit if hand-stitching (most of the time actually needed goes into making a patchwork sheet).",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_lycra", 22 ], [ "sheet_lycra_patchwork", 1 ] ], [ [ "thread_nomex", 1 ] ] ]
+ },
+ {
+ "id": "tailoring_neoprene",
+ "type": "requirement",
+ "//": "Crafting neoprene items, per 121 g of neoprene; 12 g + excessive weight of material is wasted, producing neoprene scraps as byproducts. Superglue and duct tape will usually be needed for extra waterproofing. Time needed is usually 100 minutes per unit if hand-stitching.",
+ "qualities": [ { "id": "SEW_CURVED", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_neoprene", 22 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "tailoring_neoprene_patchwork",
+ "type": "requirement",
+ "//": "Crafting possibly-patchwork neoprene items, per 121 g of neoprene; 12 g + excessive weight of material is wasted, producing neoprene scraps as byproducts. Superglue and duct tape will usually be needed for extra waterproofing. Time needed is usually 100 minutes per unit if hand-stitching (most of the time actually needed goes into making a patchwork sheet).",
+ "qualities": [ { "id": "SEW_CURVED", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_neoprene", 22 ], [ "sheet_neoprene_patchwork", 1 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "tailoring_nomex",
+ "type": "requirement",
+ "//": "Crafting Nomex items, per 101 g of Nomex; 10 g + excessive weight of material is wasted, producing Nomex scraps as byproducts. Time needed is usually 90 minutes per unit if hand-stitching.",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_nomex", 22 ] ], [ [ "thread_nomex", 1 ] ] ]
+ },
+ {
+ "id": "tailoring_nomex_patchwork",
+ "type": "requirement",
+ "//": "Crafting possibly-patchwork Nomex items, per 101 g of Nomex; 10 g + excessive weight of material is wasted, producing Nomex scraps as byproducts. Time needed is usually 90 minutes per unit if hand-stitching.",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_nomex", 22 ], [ "sheet_nomex_patchwork", 1 ] ], [ [ "thread_nomex", 1 ] ] ]
+ },
+ {
+ "id": "tailoring_nylon",
+ "type": "requirement",
+ "//": "Crafting synthetic fabric items, per 55 g of neoprene; 6 g + excessive weight of material is wasted, producing synthetic fabric scraps as byproducts. Time needed is usually 90 minutes per unit if hand-stitching.",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_nylon", 22 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "tailoring_nylon_patchwork",
+ "type": "requirement",
+ "//": "Crafting possibly-patchwork synthetic fabric items, per 55 g of neoprene; 6 g + excessive weight of material is wasted, producing synthetic fabric scraps as byproducts. Time needed is usually 90 minutes per unit if hand-stitching (most of the time actually needed goes into making a patchwork sheet).",
+ "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "sheet_nylon", 22 ] ], [ [ "sheet_nylon_patchwork", 1 ] ], [ [ "filament", 1, "LIST" ] ] ]
+ },
+ {
+ "id": "tailoring_wool_knitting",
+ "type": "requirement",
+ "//": "Crafting wool items via knitting, per 1 g of wool; no material wasted. Time needed is usually 2 minutes per unit if doing it by hand.",
+ "qualities": [ { "id": "KNIT", "level": 1 } ],
+ "components": [ [ [ "yarn", 1 ] ] ]
+ },
+ {
+ "id": "waterproofing_cloth",
+ "type": "requirement",
+ "//": "Waterproofing cloth items, per 500 ml of waterproofed cloth. Takes 360 minutes, doesn't depend on amount. Duct tape is needed to waterproof seams.",
+ "qualities": [ { "id": "COOK", "level": 3 }, { "id": "CUT", "level": 1 } ],
+ "tools": [ [ [ "water_boiling_heat", 2, "LIST" ] ] ],
+ "components": [
+ [ [ "chem_potassium_alum", 50 ] ],
+ [ [ "detergent", 10 ] ],
+ [ [ "water", 3 ], [ "water_clean", 3 ] ],
+ [ [ "duct_tape", 5 ] ]
+ ]
+ },
+ {
+ "id": "waterproofing_plastic_bags",
+ "type": "requirement",
+ "//": "Making a waterproof layer from plastic bags duct taped together, per 25 g of such waterproofing. Takes 15 minutes per unit.",
+ "qualities": [ { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "bag_plastic", 1 ] ], [ [ "duct_tape", 5 ] ] ]
+ }
+]
diff --git a/data/json/requirements/toolsets.json b/data/json/requirements/toolsets.json
index 724df19996f9d..267e0b198095e 100644
--- a/data/json/requirements/toolsets.json
+++ b/data/json/requirements/toolsets.json
@@ -35,6 +35,13 @@
"//": "Forging of steel items (per steel chunk), charcoal forge is already a substitute for forge",
"tools": [ [ [ "forge", 20 ], [ "oxy_torch", 20 ] ] ]
},
+ {
+ "id": "blacksmithing_standard",
+ "type": "requirement",
+ "//": "Includes forging resources as well as tools needed for most blacksmithing",
+ "qualities": [ { "id": "ANVIL", "level": 3 }, { "id": "HAMMER", "level": 3 } ],
+ "tools": [ [ [ "forge", 20 ], [ "oxy_torch", 20 ] ], [ [ "tongs", -1 ] ] ]
+ },
{
"id": "mutagen_production_standard",
"type": "requirement",
diff --git a/data/json/scenarios.json b/data/json/scenarios.json
index c00e6ea846a10..f0e2505404cf0 100644
--- a/data/json/scenarios.json
+++ b/data/json/scenarios.json
@@ -213,6 +213,8 @@
"RAP_TALONS",
"HOOVES",
"CANINE_EARS",
+ "BIOLUM1",
+ "BIOLUM2",
"FELINE_EARS",
"TAIL_FLUFFY",
"TAIL_LONG",
@@ -258,7 +260,7 @@
"ident": "ambushed",
"name": "Ambush",
"points": -3,
- "description": "It is the winter after zero hour. As you were scavenging for food and a warm place to stay at, you heard the sound of lots of movement nearby.",
+ "description": "It is the winter after zero hour. As you were scavenging for food and a warm place to stay at, you heard the sound of lots of movement nearby.",
"allowed_locs": [
"cabin",
"forest",
diff --git a/data/json/snippets/dimensional_exploration.json b/data/json/snippets/dimensional_exploration.json
index b1f228cf55e2d..9a7cbfa61ae2c 100644
--- a/data/json/snippets/dimensional_exploration.json
+++ b/data/json/snippets/dimensional_exploration.json
@@ -3,21 +3,30 @@
"type": "snippet",
"category": "log_immersion27",
"text": [
- "\nIMMERSION LOG: 27A\n\nINCIDENT REPORT:\n\nSUMMARY:\nUnforeseen EM interference source forced the team to remain in-phase between prime and sub-scape 27. Expedition members reported observing a spheroid-entity ('PE-01') moving beneath the typically opaque t-substrate. Interference readings and expedition testimony implies the PE-01 was a potent EM radiation source, and the origin of the interference. After 30 min, PE-01 receded and the expedition was aborted in accordance of procedure EMER-12. The expedition team suffered no injuries, physical or mental, during the incident. \n\nIt's become clear we have greatly underestimated the risk posed by phase immersions. Engineering has been tasked with designing a new, improved protection suite, and has shown promising advances. Updated emergency procedures are in-progress.\n\nRefer to file EXO-I-271 for full report."
+ {
+ "id": "log_immersion27_1",
+ "text": "\nIMMERSION LOG: 27A\n\nINCIDENT REPORT:\n\nSUMMARY:\nUnforeseen EM interference source forced the team to remain in-phase between prime and sub-scape 27. Expedition members reported observing a spheroid-entity ('PE-01') moving beneath the typically opaque t-substrate. Interference readings and expedition testimony implies the PE-01 was a potent EM radiation source, and the origin of the interference. After 30 min, PE-01 receded and the expedition was aborted in accordance of procedure EMER-12. The expedition team suffered no injuries, physical or mental, during the incident.\n\nIt's become clear we have greatly underestimated the risk posed by phase immersions. Engineering has been tasked with designing a new, improved protection suite, and has shown promising advances. Updated emergency procedures are in-progress.\n\nRefer to file EXO-I-271 for full report."
+ }
]
},
{
"type": "snippet",
"category": "t-substrate",
"text": [
- "\nANALYSIS OF TRANSPLANAR MATERIALS\n\nT-SUBSTRATE\n\nSUMMARY:\nThe material henceforth named t-substrate is the naturally occurring 'floor' material of phase-space. Samples of t-substrate were first recovered during IMMERSION-25A, when upon return to prime the samples violently [////////], exhibiting what are now known as 'plane-uneven' physical properties. The following report will examine such variances to the best extent of our knowledge.\n\nRefer to file EXO-M-312 for full report."
+ {
+ "id": "t-substrate_1",
+ "text": "\nANALYSIS OF TRANSPLANAR MATERIALS\n\nT-SUBSTRATE\n\nSUMMARY:\nThe material henceforth named t-substrate is the naturally occurring 'floor' material of phase-space. Samples of t-substrate were first recovered during IMMERSION-25A, when upon return to prime the samples violently [////////], exhibiting what are now known as 'plane-uneven' physical properties. The following report will examine such variances to the best extent of our knowledge.\n\nRefer to file EXO-M-312 for full report."
+ }
]
},
{
"type": "snippet",
"category": "HAADF_t-substrate",
"text": [
- "\nANALISIS OF TRANSPLANAR MATERIALS \n\nT-SUBSTRATE\n\nHAADF MICROGRAPH:\nAn atomic-scale photograph shows only a completely smooth red surface. In the lower left corner the phrase 'Not made of atoms?!' is scrawled with a blue pen.\n\nRefer to file EXO-M-312 for full report."
+ {
+ "id": "HAADF_t-substrate_1",
+ "text": "\nANALISIS OF TRANSPLANAR MATERIALS\n\nT-SUBSTRATE\n\nHAADF MICROGRAPH:\nAn atomic-scale photograph shows only a completely smooth red surface. In the lower left corner the phrase 'Not made of atoms?!' is scrawled with a blue pen.\n\nRefer to file EXO-M-312 for full report."
+ }
]
}
]
diff --git a/data/json/snippets/health_msgs.json b/data/json/snippets/health_msgs.json
index 48ae87518a32c..9ade8a81653f6 100644
--- a/data/json/snippets/health_msgs.json
+++ b/data/json/snippets/health_msgs.json
@@ -147,6 +147,6 @@
{
"type": "snippet",
"category": "health_horrible",
- "text": "Awareness seems to only come with a battle... and your body seem to be on its side."
+ "text": "Awareness seems to only come with a battle… and your body seem to be on its side."
}
]
diff --git a/data/json/snippets/music.json b/data/json/snippets/music.json
index 5337c428d9b74..8b761cbb94318 100644
--- a/data/json/snippets/music.json
+++ b/data/json/snippets/music.json
@@ -1,7 +1,7 @@
[
{
"type": "snippet",
- "category": "music_description",
+ "category": "",
"text": [ "some .", "some . The is ." ]
},
{
@@ -21,7 +21,7 @@
"text": [
"amazing",
"funky",
- "okay",
+ { "text": { "ctxt": "", "str": "okay" } },
"pretty good",
"sweet",
"sick",
diff --git a/data/json/snippets/schizophrenia.json b/data/json/snippets/schizophrenia.json
index d9ff590f66b17..6d169c6560b83 100644
--- a/data/json/snippets/schizophrenia.json
+++ b/data/json/snippets/schizophrenia.json
@@ -8,7 +8,7 @@
"What's your name?",
"I thought you were my friend.",
"How are you today?",
- "Shut up! Don't lie to me.",
+ "Shut up! Don't lie to me.",
"Why would you do that?",
"Please, don't go.",
"Don't leave me alone!",
@@ -49,7 +49,7 @@
"Hey, you're bleeding.",
"Your wound looks pretty bad.",
"Shouldn't you put a bandage on that?",
- "Please don't die! No one else lets me kill things!",
+ "Please don't die! No one else lets me kill things!",
"You look hurt, did I do that?",
"Are you supposed to be bleeding?",
"You're not going to die, are you?",
@@ -62,13 +62,13 @@
"text": [
"Hey fix me up.",
"I need healing!",
- "I hurt all over...",
+ "I hurt all over…",
"You can put me back together, right?",
- "I... I can't move my legs!",
+ "I… I can't move my legs!",
"Medic!",
"I can still fight, don't replace me!",
"They got me!",
- "*cough cough* Go on without me...",
+ "*cough cough* Go on without me…",
"Am I gonna die?"
]
},
@@ -96,7 +96,7 @@
"You gain the sudden realization that you must have been responsible for the cataclysm.",
"You get the odd feeling that your thoughts are not your own.",
"You feel as if everyone in the world must be playing a sick prank on you.",
- "You are being watched... by THEM."
+ "You are being watched… by THEM."
]
},
{
@@ -125,7 +125,7 @@
"\"Stop laughing at me!\"",
"\"Don't point that thing at me!\"",
"\"Stay away from me!\"",
- "\"No! Stop!\"",
+ "\"No! Stop!\"",
"\"Get the fuck away from me!\"",
"\"That's not true!\"",
"\"What do you want from me?\"",
@@ -145,7 +145,7 @@
"%1$s feels freezing cold!",
"An electric shock shoots into your hand from %1$s!",
"%1$s lied to you.",
- "%1$s was working for... THEM",
+ "%1$s was working for… THEM",
"%1$s said something stupid.",
"%1$s is running away!"
]
diff --git a/data/json/snippets/snippets.json b/data/json/snippets/snippets.json
index 8b2837c768d86..a2e358e6dc732 100644
--- a/data/json/snippets/snippets.json
+++ b/data/json/snippets/snippets.json
@@ -3,430 +3,1201 @@
"type": "snippet",
"category": "flier",
"text": [
- "This is an advertisement for the Diet Devil brand Metabolic Exchange CBM. It shows a picture of a tiny obese devil sitting on a woman's shoulder. The woman stares intently at a gigantic wedding cake covered with bacon and candy bars. The caption reads: \"Burn calories! Burn!\"",
- "This is an advertisement for the Diet Devil brand Ethanol Burner CBM. It shows a picture of a teenage boy driving a car while chugging a bottle of whiskey. A tiny obese devil sits on his shoulder and drinks a martini. The caption reads: \"Drink like there's no tomorrow!\"",
- "This is an advertisement for the Twenty8 brand Diamond Cornea CBM. It shows a picture of the cyber-module being clutched by an eagle in flight. The captions read: \"Get the new Model 28.bx Eagle-Eye!\" and \"Twenty8. See what you've been missing.\"",
- "This is an advertisement for the Twenty8 brand Night Vision CBM. It shows a picture of an owl swooping down on a the cyber-module. The captions read: \"Get the new Model 28.hx Night-Owl!\" and \"Twenty8. See what you've been missing.\"",
- "This is an advertisement for the Twenty8 brand Diamond Cornea CBM. It shows a picture of a flying hawk carrying the cyber-module in its beak. The captions read: \"Get the new Model 28.xx Hawk-Eye!\" and \"Twenty8. See what you've been missing.\"",
- "This is an advertisement for the Twenty8 brand Scent Vision CBM. It shows a picture of a vulture perched on a pile of skulls and cyber-modules. The captions read: \"Get the new Model 28.vx Vulture today!\" and \"Twenty8. See what you've been missing.\"",
- "This is an ad for a Twenty8 brand Infrared Vision CBM. It shows a picture of a robotic phoenix covered in flames. The captions read: \"Get the new Model 28.tx Phoenix today!\" and \"Twenty8. See what you've been missing.\"",
- "This is an advertisement for DoubleTech brand law enforcement robots. It shows a picture of copbot and an eyebot boldly emerging from a cloud of teargas and flame. The caption reads: \"DoubleTech Industries. Built to Protect. Programmed to Serve.\"",
- "This is an advertisement for DoubleTech brand law enforcement robots. It shows a picture of an eyebot flying alongside a bald eagle and a Stealth bomber painted as an American flag. The caption reads: \"Built to Protect. Programmed to Serve.\"",
- "This is an advertisement for DoubleTech brand law enforcement robots. It shows a picture of a dozen eyebots floating over a woman as she jogs through a park. The captions read: \"Built to Protect. Programmed to Serve.\"",
- "This is an advertisement for DoubleTech brand law enforcement robots. It shows a picture of copbot pepper-spraying a handcuffed rioter. In the background a troop of boy scouts salutes the robot. The caption reads: \"Built to Protect. Programmed to Serve.\"",
- "This is an advertisement for Robert's Universal Robotics brand law enforcement robots. It shows a picture of a tribot incinerating a mob of looters and stepping over charred and smoking corpses. The caption reads: \"R.U.R. Technology you can Trust.\"",
- "This is an advertisement for Robert's Universal Robots brand labor-bots. It shows a picture of a robot carrying a heavy pallet of bricks. In the background a human foreman is sleeping on the job, with his hardhat pulled down over his eyes. The captions read: \"It's a tough job, so why should you have to do it?\" and \"R.U.R. Technology you can Trust.\"",
- "This is an advertisement for Robert's Universal Robots brand labor-bots. It shows a picture of a factory floor run entirely by robots. In the background a man in a suit reads a newspaper that shows soaring stock prices. The caption reads: \"R.U.R. Technology you can Trust.\"",
- "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of several bikini-clad female doctors removing the skin from man's face. The patient is strapped to a chair but cheerfully gives two thumbs up. The caption reads: \"Free Plastic Surgery While You Wait!\"",
- "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of a nerdy looking man surrounded by a group of admiring women. In the foreground a blood-drenched doctor gives an exaggerated wink and two thumbs up. The caption reads: \"Holiday sales! Get the package deals!\"",
- "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of a man carrying a somewhat confused horse on his shoulders. He is flanked by two scantily clad nurses who hold bloody chainsaws and give approving thumbs up. His bulging knees and elbows are stitched and seem to be the source of his ability. The caption reads: \"Brand new! Horse power at hand!\"",
- "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of a man smiling while being relentlessly punched by a boxer. He doesn't even sweat as punches have no effect on him. Two scantily clad nurses give approving thumbs up from the background. The caption reads: \"Bouncy as never before! Absorb those shocks!\"",
- "This is an advertisement for Rivtech brand handguns. It shows a picture of a well armed couple in business suits with matching handguns facing down a legion of villainous looking characters. The caption reads: \"Protect yourself with the Rivtech caseless automagnum!\"",
- "This is an advertisement for Rivtech brand rifles. It shows a picture of a smiling soldier with a futuristic looking rifle on her shoulder saluting the viewer. The caption reads: \"Rivtech caseless firearms proudly supports our Military.\"",
- "This is an advertisement for Rivtech brand firearms. It shows a picture of a trio of well armed hunters. The three are each armed with different futuristic looking weapons and are shooting at a hostile crowd of approaching wildlife. The caption reads: \"Rivtech caseless firearms. Superior stopping power.\"",
- "This is an advertisement for the Rivtech brand Muscle Augmentation CBM. It shows a picture of a stylized, howling wolf against a red background. The caption reads: \"Rivtech neuroreactive myomer bionics. The most efficient synthetic adenosine triphosphate recovery system on the market.\" and \"Rivtech Bionics, guaranteed for life.\"",
- "This is an advertisement for the Rivtech brand Wired Reflexes CBM. It shows a picture of a stylized, snarling black cat against a red background. The caption reads: \"Rivtech neuroelectric stimulation bionics. The next level in quantum inductive piezochemical nerve stimulation technology.\" and \"Rivtech Bionics, guaranteed for life.\"",
- "This is an advertisement for the Rivtech brand Monomolecular Blade CBM. It shows a picture of a woman with a bionic blade extending from her arm steadfastly defending her children from an angry bear. The caption reads: \"Rivtech retractable monomolecular blade system. Failure is never an option.\" and \"Rivtech Bionics, guaranteed for life.\"",
- "This is an advertisement for the Rivtech brand Synaptic Accelerator CBM. It shows a picture of a stylized, soaring raven against a red background. The caption reads: \"Introducing the Rivtech Model Six myelination retrovirus system. The latest in synthetic high-performance glycoprotein deposition technology.\" and \"Rivtech Bionics, guaranteed for life.\"",
- "This is an advertisement for Rivtech brand ammunition. It shows a picture of an armored steel plate with a gaping hole blasted through the middle. Sitting beside the plate is a block of brightly colored caseless ammunition. The caption reads: \"Rivtech 8x40mm caseless. Nothing else comes close.\"",
- "This is an advertisement for Leadworks LLC's Home Frontier Starter Pack. It shows a picture of a young suburban parent, equipped with rifle and revolver, keeping a steely eye on the neighborhood from the front porch. Similarly-armed parents are visible in front of every house on the street. Young children are at play and older ones tend a large vegetable garden. The caption reads: \"A well-armed community is a SAFE community. Leadworks, LLC.\"",
- "This is a propaganda poster showing the Northrop Dispatch's military variant. It depicts the iconic dark green, arachnoid dispatch, standing before a fence and facing away from the camera as blurring machines rush forward from its back towards black silhouettes menacing on the horizon. It reads: \"WE ARE HERE TO PROTECT YOU.\"",
- "This is an advertisement for Leadworks LLC handguns. It shows a picture of a bionic police officer assisting a young couple, who were being attacked by a gang of ruffians. The caption reads: \"You don't have to void your warranty or wear out your thumb to achieve felon-stopping firepower. The L39B, tried and true by our fine cyborgs in blue, is available in .45 ACP for that extra punch, and we offer semiautomatic (but equally robust!) versions for the civilian market. Leadworks, LLC.\"",
- "This is an advertisement for Leadworks LLC modular weapons. It shows a picture of an overworked-yet-grateful police sergeant assembling a sleek rifle, with similar-looking weapons racked neatly behind her. The caption reads: \"Leadworks is proud to offer the L523 modular weapon system. No more must armorers stock and maintain stacks and stacks of rifles, carbines, and squad support weapons, juggling multiple incompatible ammunition types! Just procure a base unit for every trooper, and use our lightweight and portable conversion kits to swap from house-to-house CQB carbine to rooftop-patrol DSR, safely and cleanly!\"",
- "This is a public notice from the Centers for Disease Control. Its message, repeated in several languages, reads: Due to the recent outbreak of the A H3N2 flu strain, the CDC would like to remind the public to cover your nose and mouth with a tissue when you cough or sneeze and wash your hands frequently with soap and water. The CDC also recommends an annual flu vaccine for everyone 6 months of age and older, which can be found at your local doctor's office or pharmacy.",
- "This is a public alert from the Centers for Disease Control. Its message, repeated in several languages, reads: PUBLIC HEALTH ALERT: Due to recent events, the CDC is issuing a warning to avoid public areas and spaces. An unknown biological contaminant is suspected to be affecting citizens, possibly an unexpected mutation in the A H3N2 flu strain. The CDC would like to remind the public to cover your nose and mouth when sneezing, wash your hands frequently, and recieve an up-to-date flu shot if possible. Boiling water is recommended until further notice.",
- "This is a public alert from the Federal Emergency Management Agency. Its message, repeated in several languages, reads: STAY IN YOUR HOMES! All residents of the New England Disaster Area are advised to shelter in place wherever possible. The United States Armed Forces are working to contain the area. If there is a nearby evacuation shelter you can get to safely, you are recommended to do so. Otherwise, stay in your homes until authorized personnel evacuate you to a secured facility. Thank you for your compliance.",
- "This is a public alert from the Federal Emergency Management Agency. Its message, repeated in several languages, consists of a list of towns serving as major evacuation points from the New England Disaster Area. Someone has scribbled off most of the town names, and scrawled \"OVERRUN\" next to each one, with the exception of the Tacoma evacuation point.",
- "This is a public warning from an unnamed source. Its rambling message, poorly-photocopied onto both sides of the page, reads: Don't believe the lies! The Army is rounding up people in death camps and executing them at mass graves. They cannot stop this. Do not believe what the mainstream news-media is reporting. All official evacuation points are death-traps. Secure supplies and escape the cities while there is still time.",
- "This is a public message from an unnamed source. Its message, photocopied from a scrawled handwritten copy, reads: REPENT YOUR SINS O BABYLON FOR THE TIME OF HIS JUDGEMENT IS NIGH! LOOK UPON YOUR DESTRUCTION AND KNOW THAT IT IS JUST! YOU WILL BE DIVIDED FATHER AGAINST SON AND MOTHER AGAINST CHILD UNTO THE VERY LAST SINNER!",
- "This is a public warning from the Federal Government. Its brief message, repeated in several languages, reads: The President of the United States has declared unilateral martial law to be in effect for the 48 contiguous states in response to the ongoing national crisis. Continue to shelter in place until evacuated to an appropriate emergency management camp by authorized military personnel. A 24-hour curfew has been established. This curfew will remain in effect until further notice. Stay indoors. Violators will be shot on sight.",
- "This is an advertisement for Rivtech's 'ATOMIC POWER THIRST' energy drink. While intended to advertise a new flavor called Isotope RU-238 'FRUIT', most of the text is dedicated to a long list of possible side effects: anxiety, insomnia, severe insomnia, dizziness, tremors, nausea, headache, vomiting, delusions, hallucinations, rhabdomyolysis, internal burns, thyroid cancer, extensive internal bleeding, upper gastrointestinal bleeding, diarrhea, cardiac dysrhythmia, cardiovascular collapse, suicidal ideation, seizures, ataxia, amnesia, mania, stroke, neurodegeneration, malignalitaloptereosis, necrotizing fasciitis, recurrent flu, and pinkeye.",
- "This is a soda advertisement. On the front is a picture of a happy couple on a beach watching the sun set. Between them are bottles of soda. The poster reads, \"Cascade Cola, for those special moments\" in bold white letters.",
- "This is a flier for a fast food chain. In it, a man is placing an order with an attractive woman wearing a bright green shirt in the window with two happy children sitting in the back seat. The flier reads \"Burgers, fries, and a Smile.\" Down in one corner is a company logo.",
- "This is an advertisement for soda. It shows a dark brown can of soda on a black background. The label reads \"Spin\".",
- "This is a flyer for a local pizza chain. On it is a picture of a cartoon Italian holding a pizza, with the words \"It's a goooood pizza\" written above his head.",
- "This is a poster advertising contact lenses. On it is a picture of a blood shot eye with a rather long block of information beneath it making some fairly exaggerated claims about the product.",
- "This is a flyer advertising a local radio station. It has a lot of bright colors and patterns, but no definite message other than \"104.4 all the best, all the time!\" in big yellow letters.",
- "This is a large movie poster for \"Action Packstone 6, Revenge of the Dog Men\". It shows a fit man in a leather jacket with a revolver and a claymore walking towards the viewer. At his side is his trusty cyberdog companion and in the background is an explosion.",
- "This is an illustrated poster for a brand of solar car. The vehicle is driving through a lush country side as small animals look on. The slogan \"Improving the world, one tank at a time.\" is written across the top in small letters.",
- "This is a soda advertisement. On the front is a picture of a happy couple on a beach watching the sun set. Between them are bottles of soda. The poster reads, \"Cascade Cola, for those special moments\" in bold white letters. Someone has colored in the sun with a black marker. The words \"oh Discordia\" are scrawled across the top.",
- "This is a flier for a fast food chain. In it, a man is placing an order with an attractive woman wearing a bright green shirt in the window with two happy children in the back seat. The flier reads \"Burgers, fries, and a Smile.\" down in one corner is a company logo. Someone has gone to town on this one with a permanent marker. It is now covered in rude images and racial epithets.",
- "This is a flier for a local pizza chain. On it is a picture of a cartoon Italian holding a pizza, with the words \"It's a goooood pizza\" written above his head. Someone has drawn an exaggerated mustache on the cartoon Italian, along with a pair of crude, oversized breasts.",
- "This is a poster advertising contact lenses. On it is a picture of a blood shot eye. Someone has defaced this one. The informative part has been torn off, and written in jagged letters across the top in red crayon are the words \"ALL HAIL THE CRIMSON KING!\".",
- "This is an illustrated poster for a brand of solar car. The vehicle is driving through a lush country side as small animals look on. The slogan \"Improving the world, one tank at a time.\" is written across the top. Someone used a blue pen to write \"who gives a shit\" across the slogan and put X's over the eyes of all the animals.",
- "This is a poster advertising a underground bunker. The poster shows a nuclear bomb wiping out a city while a family huddles safely underground. There a slogan \"Concerned about enemy attack? Want to protect your family? Join the VAULT program today.\" which is written in the middle. However, there seems to be no information about *how* one might do so.",
- "This is a flier for Red Ryder BBGuns. On it a child is pulling a shining red wagon with a cooked pheasant on it and a wooden rifle over one shoulder. The child has a dog trailing beside him and a satisfied look on his face. The caption reads \"When you chose Red Ryder, you invested in the American Dream. You invested in our Independence.\"",
- "This is an old flier for a movie from the 30s. A tan man with slick black hair and muscles bulging through his offwhite suit is clasping a woman to his hip with one hand, and the woman is wearing a black leather dress. With her hips splayed, she is holding a pistol in one hand and starring directly out of the advert. The caption reads \"Witness the rebirth of New Noir with 'Jersey Shore Blues'. Starring Jenifer Languiz as 'Snookie'!\"",
- "\"Joe's Diner; 1/2 pound of meat, 3 toppings, 'your choice', all with a side of freedom fries and a BIG Gulp size pop.\"",
- "This is an advertisement for the Wink & Nod brand Soporific Induction CBM. It shows a picture of a woman sleeping on a bed of nails with a satisfied smile on her face. The caption reads: \"Catch Zs with ease, wherever you please!\"",
- "This is a leaflet about autoclaving procedure. One sentence catches your attention \"/!\\Always place your tools into an autoclave pouch before autoclaving./!\\\"",
- "This is an advertisement for a local hospital. You see a clean hospital room with a smiling man lying on the bed. The bed is connected to some medical apparatus with a \"Autodoc Mk. X\" printed on it. A doctor is seen working with its console, while his assistant is unpacking some high-tech hardware. The caption reads: \"Autodoc - augmentation has never been so easy, reliable, and safe.\""
+ {
+ "id": "flier_1",
+ "text": "This is an advertisement for the Diet Devil brand Metabolic Exchange CBM. It shows a picture of a tiny obese devil sitting on a woman's shoulder. The woman stares intently at a gigantic wedding cake covered with bacon and candy bars. The caption reads: \"Burn calories! Burn!\""
+ },
+ {
+ "id": "flier_2",
+ "text": "This is an advertisement for the Diet Devil brand Ethanol Burner CBM. It shows a picture of a teenage boy driving a car while chugging a bottle of whiskey. A tiny obese devil sits on his shoulder and drinks a martini. The caption reads: \"Drink like there's no tomorrow!\""
+ },
+ {
+ "id": "flier_3",
+ "text": "This is an advertisement for the Twenty8 brand Diamond Cornea CBM. It shows a picture of the cyber-module being clutched by an eagle in flight. The captions read: \"Get the new Model 28.bx Eagle-Eye!\" and \"Twenty8. See what you've been missing.\""
+ },
+ {
+ "id": "flier_4",
+ "text": "This is an advertisement for the Twenty8 brand Night Vision CBM. It shows a picture of an owl swooping down on a the cyber-module. The captions read: \"Get the new Model 28.hx Night-Owl!\" and \"Twenty8. See what you've been missing.\""
+ },
+ {
+ "id": "flier_5",
+ "text": "This is an advertisement for the Twenty8 brand Diamond Cornea CBM. It shows a picture of a flying hawk carrying the cyber-module in its beak. The captions read: \"Get the new Model 28.xx Hawk-Eye!\" and \"Twenty8. See what you've been missing.\""
+ },
+ {
+ "id": "flier_6",
+ "text": "This is an advertisement for the Twenty8 brand Scent Vision CBM. It shows a picture of a vulture perched on a pile of skulls and cyber-modules. The captions read: \"Get the new Model 28.vx Vulture today!\" and \"Twenty8. See what you've been missing.\""
+ },
+ {
+ "id": "flier_7",
+ "text": "This is an ad for a Twenty8 brand Infrared Vision CBM. It shows a picture of a robotic phoenix covered in flames. The captions read: \"Get the new Model 28.tx Phoenix today!\" and \"Twenty8. See what you've been missing.\""
+ },
+ {
+ "id": "flier_8",
+ "text": "This is an advertisement for DoubleTech brand law enforcement robots. It shows a picture of copbot and an eyebot boldly emerging from a cloud of teargas and flame. The caption reads: \"DoubleTech Industries. Built to Protect. Programmed to Serve.\""
+ },
+ {
+ "id": "flier_9",
+ "text": "This is an advertisement for DoubleTech brand law enforcement robots. It shows a picture of an eyebot flying alongside a bald eagle and a Stealth bomber painted as an American flag. The caption reads: \"Built to Protect. Programmed to Serve.\""
+ },
+ {
+ "id": "flier_10",
+ "text": "This is an advertisement for DoubleTech brand law enforcement robots. It shows a picture of a dozen eyebots floating over a woman as she jogs through a park. The captions read: \"Built to Protect. Programmed to Serve.\""
+ },
+ {
+ "id": "flier_11",
+ "text": "This is an advertisement for DoubleTech brand law enforcement robots. It shows a picture of copbot pepper-spraying a handcuffed rioter. In the background a troop of boy scouts salutes the robot. The caption reads: \"Built to Protect. Programmed to Serve.\""
+ },
+ {
+ "id": "flier_12",
+ "text": "This is an advertisement for Robert's Universal Robotics brand law enforcement robots. It shows a picture of a tribot incinerating a mob of looters and stepping over charred and smoking corpses. The caption reads: \"R.U.R. Technology you can Trust.\""
+ },
+ {
+ "id": "flier_13",
+ "text": "This is an advertisement for Robert's Universal Robots brand labor-bots. It shows a picture of a robot carrying a heavy pallet of bricks. In the background a human foreman is sleeping on the job, with his hardhat pulled down over his eyes. The captions read: \"It's a tough job, so why should you have to do it?\" and \"R.U.R. Technology you can Trust.\""
+ },
+ {
+ "id": "flier_14",
+ "text": "This is an advertisement for Robert's Universal Robots brand labor-bots. It shows a picture of a factory floor run entirely by robots. In the background a man in a suit reads a newspaper that shows soaring stock prices. The caption reads: \"R.U.R. Technology you can Trust.\""
+ },
+ {
+ "id": "flier_15",
+ "text": "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of several bikini-clad female doctors removing the skin from man's face. The patient is strapped to a chair but cheerfully gives two thumbs up. The caption reads: \"Free Plastic Surgery While You Wait!\""
+ },
+ {
+ "id": "flier_16",
+ "text": "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of a nerdy looking man surrounded by a group of admiring women. In the foreground a blood-drenched doctor gives an exaggerated wink and two thumbs up. The caption reads: \"Holiday sales! Get the package deals!\""
+ },
+ {
+ "id": "flier_17",
+ "text": "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of a man carrying a somewhat confused horse on his shoulders. He is flanked by two scantily clad nurses who hold bloody chainsaws and give approving thumbs up. His bulging knees and elbows are stitched and seem to be the source of his ability. The caption reads: \"Brand new! Horse power at hand!\""
+ },
+ {
+ "id": "flier_18",
+ "text": "This is an advertisement for Sybil's Cyber Boutique. It shows a picture of a man smiling while being relentlessly punched by a boxer. He doesn't even sweat as punches have no effect on him. Two scantily clad nurses give approving thumbs up from the background. The caption reads: \"Bouncy as never before! Absorb those shocks!\""
+ },
+ {
+ "id": "flier_19",
+ "text": "This is an advertisement for Rivtech brand handguns. It shows a picture of a well armed couple in business suits with matching handguns facing down a legion of villainous looking characters. The caption reads: \"Protect yourself with the Rivtech caseless automagnum!\""
+ },
+ {
+ "id": "flier_20",
+ "text": "This is an advertisement for Rivtech brand rifles. It shows a picture of a smiling soldier with a futuristic looking rifle on her shoulder saluting the viewer. The caption reads: \"Rivtech caseless firearms proudly supports our Military.\""
+ },
+ {
+ "id": "flier_21",
+ "text": "This is an advertisement for Rivtech brand firearms. It shows a picture of a trio of well armed hunters. The three are each armed with different futuristic looking weapons and are shooting at a hostile crowd of approaching wildlife. The caption reads: \"Rivtech caseless firearms. Superior stopping power.\""
+ },
+ {
+ "id": "flier_22",
+ "text": "This is an advertisement for the Rivtech brand Muscle Augmentation CBM. It shows a picture of a stylized, howling wolf against a red background. The caption reads: \"Rivtech neuroreactive myomer bionics. The most efficient synthetic adenosine triphosphate recovery system on the market.\" and \"Rivtech Bionics, guaranteed for life.\""
+ },
+ {
+ "id": "flier_23",
+ "text": "This is an advertisement for the Rivtech brand Wired Reflexes CBM. It shows a picture of a stylized, snarling black cat against a red background. The caption reads: \"Rivtech neuroelectric stimulation bionics. The next level in quantum inductive piezochemical nerve stimulation technology.\" and \"Rivtech Bionics, guaranteed for life.\""
+ },
+ {
+ "id": "flier_24",
+ "text": "This is an advertisement for the Rivtech brand Monomolecular Blade CBM. It shows a picture of a woman with a bionic blade extending from her arm steadfastly defending her children from an angry bear. The caption reads: \"Rivtech retractable monomolecular blade system. Failure is never an option.\" and \"Rivtech Bionics, guaranteed for life.\""
+ },
+ {
+ "id": "flier_25",
+ "text": "This is an advertisement for the Rivtech brand Synaptic Accelerator CBM. It shows a picture of a stylized, soaring raven against a red background. The caption reads: \"Introducing the Rivtech Model Six myelination retrovirus system. The latest in synthetic high-performance glycoprotein deposition technology.\" and \"Rivtech Bionics, guaranteed for life.\""
+ },
+ {
+ "id": "flier_26",
+ "text": "This is an advertisement for Rivtech brand ammunition. It shows a picture of an armored steel plate with a gaping hole blasted through the middle. Sitting beside the plate is a block of brightly colored caseless ammunition. The caption reads: \"Rivtech 8x40mm caseless. Nothing else comes close.\""
+ },
+ {
+ "id": "flier_27",
+ "text": "This is an advertisement for Leadworks LLC's Home Frontier Starter Pack. It shows a picture of a young suburban parent, equipped with rifle and revolver, keeping a steely eye on the neighborhood from the front porch. Similarly-armed parents are visible in front of every house on the street. Young children are at play and older ones tend a large vegetable garden. The caption reads: \"A well-armed community is a SAFE community. Leadworks, LLC.\""
+ },
+ {
+ "id": "flier_28",
+ "text": "This is a propaganda poster showing the Northrop Dispatch's military variant. It depicts the iconic dark green, arachnoid dispatch, standing before a fence and facing away from the camera as blurring machines rush forward from its back towards black silhouettes menacing on the horizon. It reads: \"WE ARE HERE TO PROTECT YOU.\""
+ },
+ {
+ "id": "flier_29",
+ "text": "This is an advertisement for Leadworks LLC handguns. It shows a picture of a bionic police officer assisting a young couple, who were being attacked by a gang of ruffians. The caption reads: \"You don't have to void your warranty or wear out your thumb to achieve felon-stopping firepower. The L39B, tried and true by our fine cyborgs in blue, is available in .45 ACP for that extra punch, and we offer semiautomatic (but equally robust!) versions for the civilian market. Leadworks, LLC.\""
+ },
+ {
+ "id": "flier_30",
+ "text": "This is an advertisement for Leadworks LLC modular weapons. It shows a picture of an overworked-yet-grateful police sergeant assembling a sleek rifle, with similar-looking weapons racked neatly behind her. The caption reads: \"Leadworks is proud to offer the L523 modular weapon system. No more must armorers stock and maintain stacks and stacks of rifles, carbines, and squad support weapons, juggling multiple incompatible ammunition types! Just procure a base unit for every trooper, and use our lightweight and portable conversion kits to swap from house-to-house CQB carbine to rooftop-patrol DSR, safely and cleanly!\""
+ },
+ {
+ "id": "flier_31",
+ "text": "This is a public notice from the Centers for Disease Control. Its message, repeated in several languages, reads: Due to the recent outbreak of the A H3N2 flu strain, the CDC would like to remind the public to cover your nose and mouth with a tissue when you cough or sneeze and wash your hands frequently with soap and water. The CDC also recommends an annual flu vaccine for everyone 6 months of age and older, which can be found at your local doctor's office or pharmacy."
+ },
+ {
+ "id": "flier_32",
+ "text": "This is a public alert from the Centers for Disease Control. Its message, repeated in several languages, reads: PUBLIC HEALTH ALERT: Due to recent events, the CDC is issuing a warning to avoid public areas and spaces. An unknown biological contaminant is suspected to be affecting citizens, possibly an unexpected mutation in the A H3N2 flu strain. The CDC would like to remind the public to cover your nose and mouth when sneezing, wash your hands frequently, and recieve an up-to-date flu shot if possible. Boiling water is recommended until further notice."
+ },
+ {
+ "id": "flier_33",
+ "text": "This is a public alert from the Federal Emergency Management Agency. Its message, repeated in several languages, reads: STAY IN YOUR HOMES! All residents of the New England Disaster Area are advised to shelter in place wherever possible. The United States Armed Forces are working to contain the area. If there is a nearby evacuation shelter you can get to safely, you are recommended to do so. Otherwise, stay in your homes until authorized personnel evacuate you to a secured facility. Thank you for your compliance."
+ },
+ {
+ "id": "flier_34",
+ "text": "This is a public alert from the Federal Emergency Management Agency. Its message, repeated in several languages, consists of a list of towns serving as major evacuation points from the New England Disaster Area. Someone has scribbled off most of the town names, and scrawled \"OVERRUN\" next to each one, with the exception of the Tacoma evacuation point."
+ },
+ {
+ "id": "flier_35",
+ "text": "This is a public warning from an unnamed source. Its rambling message, poorly-photocopied onto both sides of the page, reads: Don't believe the lies! The Army is rounding up people in death camps and executing them at mass graves. They cannot stop this. Do not believe what the mainstream news-media is reporting. All official evacuation points are death-traps. Secure supplies and escape the cities while there is still time."
+ },
+ {
+ "id": "flier_36",
+ "text": "This is a public message from an unnamed source. Its message, photocopied from a scrawled handwritten copy, reads: REPENT YOUR SINS O BABYLON FOR THE TIME OF HIS JUDGEMENT IS NIGH! LOOK UPON YOUR DESTRUCTION AND KNOW THAT IT IS JUST! YOU WILL BE DIVIDED FATHER AGAINST SON AND MOTHER AGAINST CHILD UNTO THE VERY LAST SINNER!"
+ },
+ {
+ "id": "flier_37",
+ "text": "This is a public warning from the Federal Government. Its brief message, repeated in several languages, reads: The President of the United States has declared unilateral martial law to be in effect for the 48 contiguous states in response to the ongoing national crisis. Continue to shelter in place until evacuated to an appropriate emergency management camp by authorized military personnel. A 24-hour curfew has been established. This curfew will remain in effect until further notice. Stay indoors. Violators will be shot on sight."
+ },
+ {
+ "id": "flier_38",
+ "text": "This is an advertisement for Rivtech's 'ATOMIC POWER THIRST' energy drink. While intended to advertise a new flavor called Isotope RU-238 'FRUIT', most of the text is dedicated to a long list of possible side effects: anxiety, insomnia, severe insomnia, dizziness, tremors, nausea, headache, vomiting, delusions, hallucinations, rhabdomyolysis, internal burns, thyroid cancer, extensive internal bleeding, upper gastrointestinal bleeding, diarrhea, cardiac dysrhythmia, cardiovascular collapse, suicidal ideation, seizures, ataxia, amnesia, mania, stroke, neurodegeneration, malignalitaloptereosis, necrotizing fasciitis, recurrent flu, and pinkeye."
+ },
+ {
+ "id": "flier_39",
+ "text": "This is a soda advertisement. On the front is a picture of a happy couple on a beach watching the sun set. Between them are bottles of soda. The poster reads, \"Cascade Cola, for those special moments\" in bold white letters."
+ },
+ {
+ "id": "flier_40",
+ "text": "This is a flier for a fast food chain. In it, a man is placing an order with an attractive woman wearing a bright green shirt in the window with two happy children sitting in the back seat. The flier reads \"Burgers, fries, and a Smile.\" Down in one corner is a company logo."
+ },
+ {
+ "id": "flier_41",
+ "text": "This is an advertisement for soda. It shows a dark brown can of soda on a black background. The label reads \"Spin\"."
+ },
+ {
+ "id": "flier_42",
+ "text": "This is a flyer for a local pizza chain. On it is a picture of a cartoon Italian holding a pizza, with the words \"It's a goooood pizza\" written above his head."
+ },
+ {
+ "id": "flier_43",
+ "text": "This is a poster advertising contact lenses. On it is a picture of a blood shot eye with a rather long block of information beneath it making some fairly exaggerated claims about the product."
+ },
+ {
+ "id": "flier_44",
+ "text": "This is a flyer advertising a local radio station. It has a lot of bright colors and patterns, but no definite message other than \"104.4 all the best, all the time!\" in big yellow letters."
+ },
+ {
+ "id": "flier_45",
+ "text": "This is a large movie poster for \"Action Packstone 6, Revenge of the Dog Men\". It shows a fit man in a leather jacket with a revolver and a claymore walking towards the viewer. At his side is his trusty cyberdog companion and in the background is an explosion."
+ },
+ {
+ "id": "flier_46",
+ "text": "This is an illustrated poster for a brand of solar car. The vehicle is driving through a lush country side as small animals look on. The slogan \"Improving the world, one tank at a time.\" is written across the top in small letters."
+ },
+ {
+ "id": "flier_47",
+ "text": "This is a soda advertisement. On the front is a picture of a happy couple on a beach watching the sun set. Between them are bottles of soda. The poster reads, \"Cascade Cola, for those special moments\" in bold white letters. Someone has colored in the sun with a black marker. The words \"oh Discordia\" are scrawled across the top."
+ },
+ {
+ "id": "flier_48",
+ "text": "This is a flier for a fast food chain. In it, a man is placing an order with an attractive woman wearing a bright green shirt in the window with two happy children in the back seat. The flier reads \"Burgers, fries, and a Smile.\" down in one corner is a company logo. Someone has gone to town on this one with a permanent marker. It is now covered in rude images and racial epithets."
+ },
+ {
+ "id": "flier_49",
+ "text": "This is a flier for a local pizza chain. On it is a picture of a cartoon Italian holding a pizza, with the words \"It's a goooood pizza\" written above his head. Someone has drawn an exaggerated mustache on the cartoon Italian, along with a pair of crude, oversized breasts."
+ },
+ {
+ "id": "flier_50",
+ "text": "This is a poster advertising contact lenses. On it is a picture of a blood shot eye. Someone has defaced this one. The informative part has been torn off, and written in jagged letters across the top in red crayon are the words \"ALL HAIL THE CRIMSON KING!\"."
+ },
+ {
+ "id": "flier_51",
+ "text": "This is an illustrated poster for a brand of solar car. The vehicle is driving through a lush country side as small animals look on. The slogan \"Improving the world, one tank at a time.\" is written across the top. Someone used a blue pen to write \"who gives a shit\" across the slogan and put X's over the eyes of all the animals."
+ },
+ {
+ "id": "flier_52",
+ "text": "This is a poster advertising a underground bunker. The poster shows a nuclear bomb wiping out a city while a family huddles safely underground. There a slogan \"Concerned about enemy attack? Want to protect your family? Join the VAULT program today.\" which is written in the middle. However, there seems to be no information about *how* one might do so."
+ },
+ {
+ "id": "flier_53",
+ "text": "This is a flier for Red Ryder BBGuns. On it a child is pulling a shining red wagon with a cooked pheasant on it and a wooden rifle over one shoulder. The child has a dog trailing beside him and a satisfied look on his face. The caption reads \"When you chose Red Ryder, you invested in the American Dream. You invested in our Independence.\""
+ },
+ {
+ "id": "flier_54",
+ "text": "This is an old flier for a movie from the 30s. A tan man with slick black hair and muscles bulging through his offwhite suit is clasping a woman to his hip with one hand, and the woman is wearing a black leather dress. With her hips splayed, she is holding a pistol in one hand and starring directly out of the advert. The caption reads \"Witness the rebirth of New Noir with 'Jersey Shore Blues'. Starring Jenifer Languiz as 'Snookie'!\""
+ },
+ {
+ "id": "flier_55",
+ "text": "\"Joe's Diner; 1/2 pound of meat, 3 toppings, 'your choice', all with a side of freedom fries and a BIG Gulp size pop.\""
+ },
+ {
+ "id": "flier_56",
+ "text": "This is an advertisement for the Wink & Nod brand Soporific Induction CBM. It shows a picture of a woman sleeping on a bed of nails with a satisfied smile on her face. The caption reads: \"Catch Zs with ease, wherever you please!\""
+ },
+ {
+ "id": "flier_57",
+ "text": "This is a leaflet about autoclaving procedure. One sentence catches your attention \"/!\\Always place your tools into an autoclave pouch before autoclaving./!\\\""
+ },
+ {
+ "id": "flier_58",
+ "text": "This is an advertisement for a local hospital. You see a clean hospital room with a smiling man lying on the bed. The bed is connected to some medical apparatus with a \"Autodoc Mk. X\" printed on it. A doctor is seen working with its console, while his assistant is unpacking some high-tech hardware. The caption reads: \"Autodoc - augmentation has never been so easy, reliable, and safe.\""
+ }
]
},
{
"type": "snippet",
"category": "note",
"text": [
- "\"WE WERE RIGHT THE GOVERNMENT DID IT\"",
- "\"Have seen a zombie making its kin raise even despite damage that normally would take them down, the air around it shimmered like around that hole in the air we've seen creatures coming through back home\"",
- "\"I shot the sheriff; but I couldn't find the deputy\"",
- "\"Some plant vines started chasin after me, so I took a gas mask and some teargas and I ran through them.\"",
- "\"Slingshot right through the windshield k?\"",
- "\"When I was a kid I used to slingshot at bugs and birds. Its really playing off nowadays, Ill tell you what\"",
- "\"ALL YOU STONERS WITH YOUR VIDEYA GAMES - I BET YOU WISH YOU TOOK THE TIME TO LEARN A SKILL NOW DONTYA\"",
- "\"I tried to be a bard, but the rats didn't like my piping.\"",
- "\"I found a chocolate bar on my pillow when I got home last night. I left and don't wanna go back.\"",
- "\"this demon thing came after me it got me good i shot it but i dont know if ill make it\"",
- "\"DANNY IF YOU READ THIS THIS IS CLARA WE'RE ALL OKAY AND WE'RE HEADING TO THE RIVER. A BOAT SAID THEY WERE DOCKED NEARBY.\"",
- "\"When I think of all the dead people I get mad, because I was supposed to be the next big leader. WHERES MY CHANCE!??\"",
- "\"A man in a black robe came up to me, said he wanted to make a deal...\"",
- "\"Cha-cha-cha-chia! Saw a woman today, with fungus coming out her head like hair tendrils.\"",
- "\"If only I had had more time with that Autodoc I could have saved them! But with that damn chip in their brain those poor cyborg wil never be human again...\"",
- "\"Save the cyborgs! Please, whoever reads this, you must help them! Knock them out or deactivate them, I don't care how you do it. But put their unconscious body on that Autodoc and remove the chip that is messing up their brain!\"",
- "\"Gotta slow down, man. I don't think we spend more than 20% of our time fightin', Put some Marley on and take off that racketus tripcore nonsense, man.\"",
- "\"I kept shooting with my handgun, but I never got any better!\"",
- "\"ITS OKEY GUYS! I BARRYED A TIME CAPSUL IN MY BACKYARD! I PUT IN SOME HOEHOES.\"",
- "\"I got my tinfoil hat on. Good thing too, cause this monster was starrin at me kinda funny, trying to freeze my mind in place.\"",
- "\"You want my advice? Smoke crack, it gets shit done.\"",
- "\"ALWAYS WITH THE EFFICIENCY GUYS; YOURE ALWAYS WORKING TO GO HOME TO PAY RENT TO SLEEP TO WAKE UP TO WORK AGAIN. STOP\"",
- "\"IM OFF TO THUNDERDOME, BYE SUCKERS.\"",
- "\"If you get a parasite, take some sand and some vodka. Rub the sand into the afflicted area, real good too; like you're washing your hair. Then rinse with vodka.\"",
- "\"I put my toilet water into a gastank. Then I poured it into a glass cup. Then I drank it without vomiting my insides back into the toilet.\"",
- "\"This isn't real this is a test to turn you into a Manchurian Candidate!\"",
- "\"They're all hiding on an oil rig, I heard it myself over the AM airwaves. They think they're the nobles of the 21st century, the prigs.\"",
- "\"Some of 'em are big. Real big. Don't stick around, I saw my mate get fucking torn in half!\"",
- "\"po p y fl ow er s don t ea at them\"",
- "\"Some guy is walking through the horde without a scratch. Please tell me they're docile now. Please fucking tell me.\"",
- "\"Why are all the lawnmowers broken?!\"",
- "\"Some of the bridges, they're right next to each other, right? If you see something up ahead one of those, just careen through to the other side. My van was long enough to bridge right across!\"",
- "\"BURN BURN BURN BURN BURN ALL BURN ALL BURN ALL BURN\"",
- "\"I took all the supplies. Don't follow me. I'm sorry, man. I have to look out for myself now.\"",
- "\"My next-door neighbor had a katana in his basement!\"",
- "\"Am I the last one alive?\"",
- "\"Boyfriend stole my pistol while I was asleep. I locked him in the bathroom and set the house on fire. At least he attracted their attention.\"",
- "\"I get air conditioners, but... this whole laboratory is frozen to ice!\"",
- "\"A wood ax works pretty well against them. So does a machete, but you can't cut down a tree.\"",
- "\"Why would you hide in a farm? Sure, it's isolated, but if they know where you are, you don't exactly have cover on all sides.\"",
- "\"Imagine if this spread to, like, Australia. Zombie kangaroos. Haha...\"",
- "\"how DO I use THESE bionic THINGS? I just STUCK the wires IN my WRIST and now I CAN'T STOP twitching. AND now my LEG hurts! Is THAT acid?!\"",
- "\"I tried playing memorial music for my dead brother, on a radio. They must have been attracted to it. I can't see his grave through the crowd anymore.\"",
- "\"Took a picture of a dead dog leaping right onto a soldier. Sweet fucking shot!\"",
- "\"Gas mask is nice and all, but I can hardly run with it on.\"",
- "\"One of those robot tanks was blocking the way out. Got some sort of sweetspot, though, where it can't decide what to shoot with, maybe 30 yards or so? Made it to the truck and just drove.\"",
- "\"Those evac shelters have basements. Remember when they were full of food? Every single one is fucking empty now...\"",
- "\"I made mushroom babies. My arms hurt. I hurt. I had mushroom babies. They are growing now.\"",
- "\"It doesn't matter how you die. You're gonna turn into one of them.\"",
- "\"WHY DO ALL THE DEAD CHILDREN GO TO SCHOOL\"",
- "\"Don't keep your goddamn casings! They'll just weigh you down.\"",
- "\"Local auto shop is full of the things. And to think I worked with them on repairing cars... now they're just... fucking corpses.\"",
- "\"DON'T EAT THE SLIME DON'T EAT THE SLIME DON'T EAT THE SLIME\"",
- "\"I used to be human. But... my arms... they are like tentacles. I slither along akin to a snail and I shed my feathers every day.\"",
- "\"Killed a giant worm thing, but now I'm only three feet tall. Should've just left the damn worm alone, now none of my clothes fit!\"",
- "\"I don't have enough time to double tap. You don't either.\"",
- "\"PINK TALL ONES RUN RUN RUN RUN RUN\"",
- "\"Are they still human inside?\"",
- "\"the eye it watches me it follows me everywhere help\"",
- "\"tHE Portal it's so COld\"",
- "\"They build modern bullets fuckin crazy. Set some on fire and they all goes like a lil grenade. Need kindling first.\"",
- "\"GOD CAN'T SAVE US\"",
- "\"SHOOT YOURSELF, LET IT END QUICKLY\"",
- "\"There are five basic rules to survival. One, stay prepared and watchful. Two, keep your iron sights lined up or succumb. Three, stay FAR WAY from all\"",
- "\"The bricks of this bathroom look like a face. Haha... it's all I can focus on. At least let me shit before you break down the door. Please...\"",
- "\"What the hell are they mining for in these shafts?\"",
- "\"I am one with the plants.\"",
- "\"Broadsword! Yeah!\"",
- "\"If you see a trail of dirt getting displaced in your direction... run. Run for your life.\"",
- "\"DINT ATE THE MUSHROM\"",
- "\"Libraries are useless after the apocalypse.\"",
- "\"I swear to God I've seen these plant things before! In a book, or something! I swear...\"",
- "\"Is robbing a bank easier or harder now that all the guards are undead?\"",
- "\"Make sure your car is REALLY stopped before you get out.\"",
- "\"I found some kind of stone pyramid with spikes. I feel... I feel like I'm being watched.\"",
- "\"Why would you ever hide in a damn gun store? The owner... he was a moron alright.\"",
- "\"THEY DON'T feel ANYTHING\"",
- "\"What was XEDRA doing, anyway?\"",
- "\"Is that one pharmaceutical company gonna come out with a, like, cure for this anytime soon?\"",
- "\"THE MARLEY WAS RIGHT\"",
- "\"Squeeze some ammonia into zombie flesh and hold it tight. You smell like one of them! I think.\"",
- "\"I thought my damn terminal cancer was bad enough... now the dead are rising?!\"",
- "\"THE GOO IS IN THE WATER DON'T DRINK WATER\"",
- "\"Don't let the ember go out please don't go out I need you precious fire.\"",
- "\"Everyone used their gas to get to another town... but it's the same story everywhere.\"",
- "\"There's still an evacuation point at Concord, spread the word.\"",
- "\"STAY AWAY FROM CONCORD\"",
- "\"Most things can be taken out with a shotgun. More things can be taken out with a grenade. Imagine what a mini-nuke does.\"",
- "\"Come to the bar if you see this, let's re-enact a zombie movie, friends.\"",
- "\"They are NOT slow! They are NEVER slow!\"",
- "\"I had a phobia of bees BEFORE they grew to enormous sizes.\"",
- "\"Your backpack's gonna weigh you down in the water. Hell, feel free to get naked. Nobody's going to judge your modesty.\"",
- "\"Guns too loud. Crossbow too long. Running is best.\"",
- "\"99% dead? I'd like to see a million zombies on Wall Street.\"",
- "\"Crawled in through the vents. Whole office building is infested.\"",
- "\"Don't shoot the people who get bit! It's OK! Death is the only thing that makes you turn!\"",
- "\"Zombies, walkers, dead ones, undead, reanimated, zed, animata, biters. Did I miss any?\"",
- "\"All I've got is this keg of beer and an appetite. Come at me, apocalypse!\"",
- "\"My cousin says that murder nowadays is just a war crime. War for what, I don't know, since the undead seem to be rebels without a cause.\"",
- "\"SWAMPS RUN SWAMPS NO SWAMPS RUN\"",
- "\"They said a walking cane was a useless weapon... but then I hit one of them with it.\"",
- "\"River water around these parts is extremely safe. Probably more safe than the damn tap water at this point.\"",
- "\"DON't bomB THe PORtals it MAKES iT WORSE\"",
- "\"No wonder all the camps got overrun, they kept a goddamn zombie test subject! Each and every one of 'em!\"",
- "\"I just realized how damn demented those fliers are.\"",
- "\"I propose a new currency: 9mm.\"",
- "\"My skin is crawling and I teleport every few minutes... what is going o\"",
- "\"You can't see them through the smoke but they can't either.\"",
- "\"There's gotta be a better use of all this rebar...\"",
- "\"met schoolhouse of people, all crazy and mad they were, ate killed all of them, yum\"",
- "\"STAY AWAY FROM THE BIG ONES IN THE FOREST\"",
- "\"got into a prison with a halligan bar. makes me wonder how they kept prisoners inside\"",
- "\"This thing isn't a car any more. It's just a fucking mountain of metal on wheels, which I live in.\"",
- "\"Anyone else seen those really... SQUARE-looking towns? I don't think they're normal.\"",
- "\"big z threw me on top of the building, legs broken but at least im safe for a few more minutes\"",
- "\"I'm starting to feel bad about disabling all these turrets and stealing their ammunition.\"",
- "\"Make sure you strip the house for all available resources-- tubes, pipes, ceramics, sheets, strings, and more\"",
- "\"FUCK FAUX-MUTANTS, BEING 'EXTREMELY THIRSTY' DOES NOT COUNT\"",
- "\"There's nothing wrong with eating people if you HAVE to. I mean, I only did it because I didn't want to waste my potato chips!\"",
- "\"all these robotic police really take the piss out of kops\"",
- "\"CHINA DID THIS\"",
- "\"RUSSIA DID THIS\"",
- "\"Thank You RivTech. Thank You For Good Coffee. Will Always Stay Awake For You Rivtech.\"",
- "\"See, now I'm just not sure where I'm putting all these storage batteries in my body!\"",
- "\"dont try to leave they will shoot you\"",
- "\"I'd like to thank my high-school culinary arts class for teaching me how to make RDX and mutagenic serum.\"",
- "\"Makayla Sanchez burned down my fucking house\"",
- "\"he calls himself the 'man with the hands', don't approach\"",
- "\"So... what happens if the military rescues us? We're all freaks by now, right? How the fuck are we gonna go back to real life?\"",
- "\"Not sure if my companion WANTED to turn into a bird, but I was the one giving her the serum, and I saved her life! That's fair, right?\"",
- "\"I've never been very confident, is that why my shots keep missing?\"",
- "\"FIRE BAD. NOW NAKED. PLEASE HELP.\"",
- "\"Heard of a place up in Maine where people have their shit together. Hundreds of people, defense, food and shelter... let's go raid it, guys!\"",
- "\"KASHWAK: NO-FO\"",
- "\"The whispering fog is taking me in like a blanket. I'm warm now. I'm finally\"",
- "\"got a video recording of hour one when the portals were still up. pretty cool\"",
- "\"Stuck here. Zombies outside. Friends were outside too, now they're part of zombies. Need to be quiet\"",
- "\"if anyones reading this, please tell my mom i was right about insects being superior\"",
- "\"Diamond coated sword! Diamond coated hammer! Diamond coated clothes! Diamond coated hands help\"",
- "\"waded through 14 miles of sewage for playboy magazine, wasnt worth it\"",
- "\"I'm coming back for this note in twelve hours. If I don't, take all my shit!\"",
- "\"all my friends died when they came near me. there's nothing funny about that\"",
- "\"DOG NOT REAL DOG\"",
- "\"This is all just a dream, right??! I'M GOING TO WAKE UP, SHE'S GOING TO BE OK\"",
- "\"wek ik spak\"",
- "\"IT'S BURIED! THE TEMPLE IS BURIED!\"",
- "\"If I had a dollar for every cash card I've found, I'd have more money than is on these stupid things!\"",
- "\"can never have enough kevlar. basically just live in a kevlar turtle shell.\"",
- "\"MY GLITTERING SNAKE COMPELS YOU! OBEY!\"",
- "\"can sunstasin self frorever off fof my funggnaloid babiues oout fo yme arms eat themm up eatbtb my chidlldren\"",
- "\"Gonna settle down one day. Nice big orchard, couple of friends/future family to spend time with, and my army of zlaves to guard the place.\"",
- "\"a ctulaly don t mi nd t he cold it s f i ne in h ere nn o problem\"",
- "\"tried to shoot myself but the nanobots fixed it, fucked up the controls, now i can't turn them off i just want it to be over\"",
- "\"Tried wearing dead zombie clothes, but they still knew I was alive! It's like they're a hivemind, man!\"",
- "\"riddle. what's 1/4 feathers, 1/4 scales, 1/4 metal, and 1/4 flesh? answer: sorry, but you should know this one.\"",
- "\"For anyone that's reading this, I just want to confirm (FROM AN UNBIASED SOURCE) that it was NOT the scientists' fault.\"",
- "\"We're the eagle-eyes in the sky! Just two mutant avians in our helicopter! Filming the Cataclysm! Check us out on any working electronics!\"",
- "\"WE'RE GOING TO SAIL TO CANADA, BITCHES!\"",
- "\"Anyone hear about that guy who tried to sail his family to Canada? What a moron, right?\"",
- "\"recently canadian border has gotten more dangerous don't go there\"",
- "\"Hey, what happened to my dad's airboat?!\"",
- "\"Reading is good! Never stop reading. Read EVERYTHING.\"",
- "\"I'm gonna be honest here, I'm really gonna die soon so I dont want to gt forgnottedn ples dont forntget me y nrmmy name is h@@hbhbh\"",
- "\"all it takes to seal a wound is a sawblade and a match! trust me\"",
- "\"I wonder what's in this sarcophagus? Maybe it's a real sarcophagus. Maybe there's a big guy named God under here.\"",
- "\"these hulks aint so incredible when ya got .50\"",
- "\"WBLF 970 went off-air three days ago. There's nobody left on the radio. Might as well throw this thing away...\"",
- "\"I've heard it's safer across the Mississippi. Going to start driving today. If you're reading this, pray for me\"",
- "\"Mi-go is friend! Go with Mi-go to friend dimension! On the Friend Team!!\"",
- "\"We have Landed our Comet. The Sky is Ablaze.\"",
- "\"Last one standing. It's good feeling. I win. I win I win I win I win I win\"",
- "\"Adderall cures weakness, tramadol cures death\"",
- "\"These turrets keep dodging my FUCKING BULLETS!\"",
- "\"Best way to train is by throwing pebbles at birds. You'll be a legend.\"",
- "\"new bedford is overrun. i'm sorry. we tried.\"",
- "\"Check out my cooking show on The Television! Making Mannwurst sausages out of some of those assholes who tried to raid my kitchen earlier...\"",
- "\"Renting out my rat tunnels for 50 9mm rounds a night. I dug them with my own claws, so you know they're the best.\"",
- "\"Anyone wanna listen to some music at full volume and shoot the Zs that approach? You pick the tunes if I get some ammo.\"",
- "\"Lots of new easy ways to burn calories now. Fighting aminata, managing the fields, running with my wings buzzing, and more.\"",
- "\"FLAMING SWORD HUMANE. CAUTERIZES WOUNDS. SURGICAL.\"",
- "\"knife screams it screams i cant breathe so scared help me please help\"",
- "\"when it started, we could still hope The Man was gonna save us...\"",
- "\"Hey, Ted. Alexander and Cass and I are heading to Z-Mobile for the last of the meth. Keep the lizard fetus fed for us, OK?\"",
- "\"i say we call the material from melting down cars and dead robots 'massachusetite' or 'vermontsteel' or 'connecticut composite'\"",
- "\"Sometimes what you need when you're infected, bleeding, sick and hungover is a J and some chips.\"",
- "\"This has to be China's fault. Seriously, why is nobody suspecting the people we're having a cold war with! This is an invasion! These aren't zombies, it's just camoflauge! WAKE UP, SHEEPLE!\"",
- "\"Hahahahaa stupid fuck in his mansion, with his plate armor and big axe. Guy never swung the thing in his life. Can't block bullets, dipshit\"",
- "\"I woke up with a dozen bears in a tribe outside the vault. One was covered in red markings, glowing-- speaking.\"",
- "\"poor guy. watched him from afar with my binocs for months and months. today he died fighting. feels like i knew him even though i never approached.\"",
- "\"ENGLAND DID THIS\"",
- "\"That little fakkin rat din say anythin till we whacked him with a steel chain! Then 'e just wanted to know if he could buy the chain!\"",
- "\"tom, adorned with fluid sacs three layers deep, crawls to safety like a slug\"",
- "\"my friend turned fuckin insane and ate his arms and then his sister's arms! he looked rather cross\"",
- "\"Starting today, the hallucinations are my only friends.\"",
- "\"For sale: zombaby shoes, very filthy\"",
- "\"Started my own brewery recently. I just need some glass bottles, now! Several thousand! I'm planning way ahead.\"",
- "\"Heard recently of some radio op who lives in a skyscraper, announcing where those hordes are going. Couldn't find the frequency, though.\"",
- "\"Woah, bud! Not all cannibals eat meat!\"",
- "\"ay why aint my bullets fuckin explodin\"",
- "\"Those Fiktok clan people picked this place clean... no food...\"",
- "\"The fewer people in New England, the stronger we'll become.\"",
- "\"It all boils down to the Apex Predator.\"",
- "\"King Jameson ik goner! Thee cyber limbs isk falleng off me body! Stak pyroteknik I heear!\"",
- "\"Got my mortar and pestle. Now if I could just find some avocados...\"",
- "\"saw a girl standing with the mushrooms. spores coming out of slits in her neck. she looked happy.\"",
- "\"Found some pink berries. Eating them makes bushes into more pink berries. Infinite berry.\"",
- "\"m ust grow unity\"",
- "\"AMY IS FUNGUS. DO NOT LISTEN IF SHE ASKS YOU TO TAKE OFF MASK\"",
- "\"my rabbi follows a new god now. asks us to call him a local guide. i dont mind, he keeps us fed\"",
- "\"Fungus are helping us. Help them and they will unite us\"",
- "\"Saw a boy couldnt be older than 16. Walked straight through the mushroom tower. THROUGH IT\"",
- "\"Found some food in a box outside my house. We ate it and now the fungaloids aren't harming us. I think we are a mushroom now\"",
- "\"saw the girl again. she looked dead exhausted and walked right into the fungus. 30 mins later and she walked out good as new\"",
- "\"HADENSBROOK REBUILT AROUND FUNGUS. THEY EAT GRAY APPLES AND SPREAD IT\"",
- "\"mycus must grow\"",
- "\"School bus with solar panels = TRUST. Gave us berries and seeds, we were out of food\"",
- "\"d o nThelp scho Ol buss makE seeeedS ARe FUNGUS!! !\"",
- "\"Go to every fungus patch you find but WEAR A SUIT. Food there is very very filling. Look for pink berries, blue flowers\"",
- "\"red blue yellow berry seed sap bloom flowers tower mycus mycus mycus.\"",
- "\"Husband 30 yrs died in bombs. Mushrooms brought him back. GIVE YOURSELF TO THEm AND THEY WILL HELP YOU\"",
- "\"Lisa always was a fan of sports. Thank God these Global Athletics Games in Harran started some time before the outbreak, so she was able to leave New England before it was quarantined. I can only hope there are no zombies, as we do have here, in the city she flew to.\"",
- "\"Don't mix powders, them books said. Do Not Mix powders. Didn't listen did I. Blew my goddamn pinky off, near lost my right eye.\"",
- "\"followed what toby wrote down. shells looked like theyd hold more, I put in some more. traded most to h raiders for crank. shot my 38 today and it fuckn exploded. low on crank, good as dead, no gun, no toby. headed to montreal real sorry bout the bullets\""
+ { "id": "note_1", "text": "\"WE WERE RIGHT THE GOVERNMENT DID IT\"" },
+ {
+ "id": "note_2",
+ "text": "\"Have seen a zombie making its kin raise even despite damage that normally would take them down, the air around it shimmered like around that hole in the air we've seen creatures coming through back home\""
+ },
+ { "id": "note_3", "text": "\"I shot the sheriff; but I couldn't find the deputy\"" },
+ {
+ "id": "note_4",
+ "text": "\"Some plant vines started chasin after me, so I took a gas mask and some teargas and I ran through them.\""
+ },
+ { "id": "note_5", "text": "\"Slingshot right through the windshield k?\"" },
+ {
+ "id": "note_6",
+ "text": "\"When I was a kid I used to slingshot at bugs and birds. Its really playing off nowadays, Ill tell you what\""
+ },
+ {
+ "id": "note_7",
+ "text": "\"ALL YOU STONERS WITH YOUR VIDEYA GAMES - I BET YOU WISH YOU TOOK THE TIME TO LEARN A SKILL NOW DONTYA\""
+ },
+ { "id": "note_8", "text": "\"I tried to be a bard, but the rats didn't like my piping.\"" },
+ {
+ "id": "note_9",
+ "text": "\"I found a chocolate bar on my pillow when I got home last night. I left and don't wanna go back.\""
+ },
+ {
+ "id": "note_10",
+ "text": "\"this demon thing came after me it got me good i shot it but i dont know if ill make it\""
+ },
+ {
+ "id": "note_11",
+ "text": "\"DANNY IF YOU READ THIS THIS IS CLARA WE'RE ALL OKAY AND WE'RE HEADING TO THE RIVER. A BOAT SAID THEY WERE DOCKED NEARBY.\""
+ },
+ {
+ "id": "note_12",
+ "text": "\"When I think of all the dead people I get mad, because I was supposed to be the next big leader. WHERES MY CHANCE!??\""
+ },
+ { "id": "note_13", "text": "\"A man in a black robe came up to me, said he wanted to make a deal…\"" },
+ {
+ "id": "note_14",
+ "text": "\"Cha-cha-cha-chia! Saw a woman today, with fungus coming out her head like hair tendrils.\""
+ },
+ {
+ "id": "note_15",
+ "text": "\"If only I had had more time with that Autodoc I could have saved them! But with that damn chip in their brain those poor cyborg wil never be human again…\""
+ },
+ {
+ "id": "note_16",
+ "text": "\"Save the cyborgs! Please, whoever reads this, you must help them! Knock them out or deactivate them, I don't care how you do it. But put their unconscious body on that Autodoc and remove the chip that is messing up their brain!\""
+ },
+ {
+ "id": "note_17",
+ "text": "\"Gotta slow down, man. I don't think we spend more than 20% of our time fightin', Put some Marley on and take off that racketus tripcore nonsense, man.\""
+ },
+ { "id": "note_18", "text": "\"I kept shooting with my handgun, but I never got any better!\"" },
+ {
+ "id": "note_19",
+ "text": "\"ITS OKEY GUYS! I BARRYED A TIME CAPSUL IN MY BACKYARD! I PUT IN SOME HOEHOES.\""
+ },
+ {
+ "id": "note_20",
+ "text": "\"I got my tinfoil hat on. Good thing too, cause this monster was starrin at me kinda funny, trying to freeze my mind in place.\""
+ },
+ { "id": "note_21", "text": "\"You want my advice? Smoke crack, it gets shit done.\"" },
+ {
+ "id": "note_22",
+ "text": "\"ALWAYS WITH THE EFFICIENCY GUYS; YOURE ALWAYS WORKING TO GO HOME TO PAY RENT TO SLEEP TO WAKE UP TO WORK AGAIN. STOP\""
+ },
+ { "id": "note_23", "text": "\"IM OFF TO THUNDERDOME, BYE SUCKERS.\"" },
+ {
+ "id": "note_24",
+ "text": "\"If you get a parasite, take some sand and some vodka. Rub the sand into the afflicted area, real good too; like you're washing your hair. Then rinse with vodka.\""
+ },
+ {
+ "id": "note_25",
+ "text": "\"I put my toilet water into a gastank. Then I poured it into a glass cup. Then I drank it without vomiting my insides back into the toilet.\""
+ },
+ { "id": "note_26", "text": "\"This isn't real this is a test to turn you into a Manchurian Candidate!\"" },
+ {
+ "id": "note_27",
+ "text": "\"They're all hiding on an oil rig, I heard it myself over the AM airwaves. They think they're the nobles of the 21st century, the prigs.\""
+ },
+ {
+ "id": "note_28",
+ "text": "\"Some of 'em are big. Real big. Don't stick around, I saw my mate get fucking torn in half!\""
+ },
+ { "id": "note_29", "text": "\"po p y fl ow er s don t ea at them\"" },
+ {
+ "id": "note_30",
+ "text": "\"Some guy is walking through the horde without a scratch. Please tell me they're docile now. Please fucking tell me.\""
+ },
+ { "id": "note_31", "text": "\"Why are all the lawnmowers broken?!\"" },
+ {
+ "id": "note_32",
+ "text": "\"Some of the bridges, they're right next to each other, right? If you see something up ahead one of those, just careen through to the other side. My van was long enough to bridge right across!\""
+ },
+ { "id": "note_33", "text": "\"BURN BURN BURN BURN BURN ALL BURN ALL BURN ALL BURN\"" },
+ {
+ "id": "note_34",
+ "text": "\"I took all the supplies. Don't follow me. I'm sorry, man. I have to look out for myself now.\""
+ },
+ { "id": "note_35", "text": "\"My next-door neighbor had a katana in his basement!\"" },
+ { "id": "note_36", "text": "\"Am I the last one alive?\"" },
+ {
+ "id": "note_37",
+ "text": "\"Boyfriend stole my pistol while I was asleep. I locked him in the bathroom and set the house on fire. At least he attracted their attention.\""
+ },
+ { "id": "note_38", "text": "\"I get air conditioners, but… this whole laboratory is frozen to ice!\"" },
+ {
+ "id": "note_39",
+ "text": "\"A wood ax works pretty well against them. So does a machete, but you can't cut down a tree.\""
+ },
+ {
+ "id": "note_40",
+ "text": "\"Why would you hide in a farm? Sure, it's isolated, but if they know where you are, you don't exactly have cover on all sides.\""
+ },
+ { "id": "note_41", "text": "\"Imagine if this spread to, like, Australia. Zombie kangaroos. Haha…\"" },
+ {
+ "id": "note_42",
+ "text": "\"how DO I use THESE bionic THINGS? I just STUCK the wires IN my WRIST and now I CAN'T STOP twitching. AND now my LEG hurts! Is THAT acid?!\""
+ },
+ {
+ "id": "note_43",
+ "text": "\"I tried playing memorial music for my dead brother, on a radio. They must have been attracted to it. I can't see his grave through the crowd anymore.\""
+ },
+ {
+ "id": "note_44",
+ "text": "\"Took a picture of a dead dog leaping right onto a soldier. Sweet fucking shot!\""
+ },
+ { "id": "note_45", "text": "\"Gas mask is nice and all, but I can hardly run with it on.\"" },
+ {
+ "id": "note_46",
+ "text": "\"One of those robot tanks was blocking the way out. Got some sort of sweetspot, though, where it can't decide what to shoot with, maybe 30 yards or so? Made it to the truck and just drove.\""
+ },
+ {
+ "id": "note_47",
+ "text": "\"Those evac shelters have basements. Remember when they were full of food? Every single one is fucking empty now…\""
+ },
+ {
+ "id": "note_48",
+ "text": "\"I made mushroom babies. My arms hurt. I hurt. I had mushroom babies. They are growing now.\""
+ },
+ { "id": "note_49", "text": "\"It doesn't matter how you die. You're gonna turn into one of them.\"" },
+ { "id": "note_50", "text": "\"WHY DO ALL THE DEAD CHILDREN GO TO SCHOOL\"" },
+ { "id": "note_51", "text": "\"Don't keep your goddamn casings! They'll just weigh you down.\"" },
+ {
+ "id": "note_52",
+ "text": "\"Local auto shop is full of the things. And to think I worked with them on repairing cars… now they're just… fucking corpses.\""
+ },
+ { "id": "note_53", "text": "\"DON'T EAT THE SLIME DON'T EAT THE SLIME DON'T EAT THE SLIME\"" },
+ {
+ "id": "note_54",
+ "text": "\"I used to be human. But… my arms… they are like tentacles. I slither along akin to a snail and I shed my feathers every day.\""
+ },
+ {
+ "id": "note_55",
+ "text": "\"Killed a giant worm thing, but now I'm only three feet tall. Should've just left the damn worm alone, now none of my clothes fit!\""
+ },
+ { "id": "note_56", "text": "\"I don't have enough time to double tap. You don't either.\"" },
+ { "id": "note_57", "text": "\"PINK TALL ONES RUN RUN RUN RUN RUN\"" },
+ { "id": "note_58", "text": "\"Are they still human inside?\"" },
+ { "id": "note_59", "text": "\"the eye it watches me it follows me everywhere help\"" },
+ { "id": "note_60", "text": "\"tHE Portal it's so COld\"" },
+ {
+ "id": "note_61",
+ "text": "\"They build modern bullets fuckin crazy. Set some on fire and they all goes like a lil grenade. Need kindling first.\""
+ },
+ { "id": "note_62", "text": "\"GOD CAN'T SAVE US\"" },
+ { "id": "note_63", "text": "\"SHOOT YOURSELF, LET IT END QUICKLY\"" },
+ {
+ "id": "note_64",
+ "text": "\"There are five basic rules to survival. One, stay prepared and watchful. Two, keep your iron sights lined up or succumb. Three, stay FAR WAY from all\""
+ },
+ {
+ "id": "note_65",
+ "text": "\"The bricks of this bathroom look like a face. Haha… it's all I can focus on. At least let me shit before you break down the door. Please…\""
+ },
+ { "id": "note_66", "text": "\"What the hell are they mining for in these shafts?\"" },
+ { "id": "note_67", "text": "\"I am one with the plants.\"" },
+ { "id": "note_68", "text": "\"Broadsword! Yeah!\"" },
+ {
+ "id": "note_69",
+ "text": "\"If you see a trail of dirt getting displaced in your direction… run. Run for your life.\""
+ },
+ { "id": "note_70", "text": "\"DINT ATE THE MUSHROM\"" },
+ { "id": "note_71", "text": "\"Libraries are useless after the apocalypse.\"" },
+ {
+ "id": "note_72",
+ "text": "\"I swear to God I've seen these plant things before! In a book, or something! I swear…\""
+ },
+ { "id": "note_73", "text": "\"Is robbing a bank easier or harder now that all the guards are undead?\"" },
+ { "id": "note_74", "text": "\"Make sure your car is REALLY stopped before you get out.\"" },
+ {
+ "id": "note_75",
+ "text": "\"I found some kind of stone pyramid with spikes. I feel… I feel like I'm being watched.\""
+ },
+ {
+ "id": "note_76",
+ "text": "\"Why would you ever hide in a damn gun store? The owner… he was a moron alright.\""
+ },
+ { "id": "note_77", "text": "\"THEY DON'T feel ANYTHING\"" },
+ { "id": "note_78", "text": "\"What was XEDRA doing, anyway?\"" },
+ {
+ "id": "note_79",
+ "text": "\"Is that one pharmaceutical company gonna come out with a, like, cure for this anytime soon?\""
+ },
+ { "id": "note_80", "text": "\"THE MARLEY WAS RIGHT\"" },
+ {
+ "id": "note_81",
+ "text": "\"Squeeze some ammonia into zombie flesh and hold it tight. You smell like one of them! I think.\""
+ },
+ { "id": "note_82", "text": "\"I thought my damn terminal cancer was bad enough… now the dead are rising?!\"" },
+ { "id": "note_83", "text": "\"THE GOO IS IN THE WATER DON'T DRINK WATER\"" },
+ { "id": "note_84", "text": "\"Don't let the ember go out please don't go out I need you precious fire.\"" },
+ {
+ "id": "note_85",
+ "text": "\"Everyone used their gas to get to another town… but it's the same story everywhere.\""
+ },
+ { "id": "note_86", "text": "\"There's still an evacuation point at Concord, spread the word.\"" },
+ { "id": "note_87", "text": "\"STAY AWAY FROM CONCORD\"" },
+ {
+ "id": "note_88",
+ "text": "\"Most things can be taken out with a shotgun. More things can be taken out with a grenade. Imagine what a mini-nuke does.\""
+ },
+ { "id": "note_89", "text": "\"Come to the bar if you see this, let's re-enact a zombie movie, friends.\"" },
+ { "id": "note_90", "text": "\"They are NOT slow! They are NEVER slow!\"" },
+ { "id": "note_91", "text": "\"I had a phobia of bees BEFORE they grew to enormous sizes.\"" },
+ {
+ "id": "note_92",
+ "text": "\"Your backpack's gonna weigh you down in the water. Hell, feel free to get naked. Nobody's going to judge your modesty.\""
+ },
+ { "id": "note_93", "text": "\"Guns too loud. Crossbow too long. Running is best.\"" },
+ { "id": "note_94", "text": "\"99% dead? I'd like to see a million zombies on Wall Street.\"" },
+ { "id": "note_95", "text": "\"Crawled in through the vents. Whole office building is infested.\"" },
+ {
+ "id": "note_96",
+ "text": "\"Don't shoot the people who get bit! It's OK! Death is the only thing that makes you turn!\""
+ },
+ {
+ "id": "note_97",
+ "text": "\"Zombies, walkers, dead ones, undead, reanimated, zed, animata, biters. Did I miss any?\""
+ },
+ { "id": "note_98", "text": "\"All I've got is this keg of beer and an appetite. Come at me, apocalypse!\"" },
+ {
+ "id": "note_99",
+ "text": "\"My cousin says that murder nowadays is just a war crime. War for what, I don't know, since the undead seem to be rebels without a cause.\""
+ },
+ { "id": "note_100", "text": "\"SWAMPS RUN SWAMPS NO SWAMPS RUN\"" },
+ {
+ "id": "note_101",
+ "text": "\"They said a walking cane was a useless weapon… but then I hit one of them with it.\""
+ },
+ {
+ "id": "note_102",
+ "text": "\"River water around these parts is extremely safe. Probably more safe than the damn tap water at this point.\""
+ },
+ { "id": "note_103", "text": "\"DON't bomB THe PORtals it MAKES iT WORSE\"" },
+ {
+ "id": "note_104",
+ "text": "\"No wonder all the camps got overrun, they kept a goddamn zombie test subject! Each and every one of 'em!\""
+ },
+ { "id": "note_105", "text": "\"I just realized how damn demented those fliers are.\"" },
+ { "id": "note_106", "text": "\"I propose a new currency: 9mm.\"" },
+ { "id": "note_107", "text": "\"My skin is crawling and I teleport every few minutes… what is going o\"" },
+ { "id": "note_108", "text": "\"You can't see them through the smoke but they can't either.\"" },
+ { "id": "note_109", "text": "\"There's gotta be a better use of all this rebar…\"" },
+ {
+ "id": "note_110",
+ "text": "\"met schoolhouse of people, all crazy and mad they were, ate killed all of them, yum\""
+ },
+ { "id": "note_111", "text": "\"STAY AWAY FROM THE BIG ONES IN THE FOREST\"" },
+ {
+ "id": "note_112",
+ "text": "\"got into a prison with a halligan bar. makes me wonder how they kept prisoners inside\""
+ },
+ {
+ "id": "note_113",
+ "text": "\"This thing isn't a car any more. It's just a fucking mountain of metal on wheels, which I live in.\""
+ },
+ {
+ "id": "note_114",
+ "text": "\"Anyone else seen those really… SQUARE-looking towns? I don't think they're normal.\""
+ },
+ {
+ "id": "note_115",
+ "text": "\"big z threw me on top of the building, legs broken but at least im safe for a few more minutes\""
+ },
+ {
+ "id": "note_116",
+ "text": "\"I'm starting to feel bad about disabling all these turrets and stealing their ammunition.\""
+ },
+ {
+ "id": "note_117",
+ "text": "\"Make sure you strip the house for all available resources-- tubes, pipes, ceramics, sheets, strings, and more\""
+ },
+ { "id": "note_118", "text": "\"FUCK FAUX-MUTANTS, BEING 'EXTREMELY THIRSTY' DOES NOT COUNT\"" },
+ {
+ "id": "note_119",
+ "text": "\"There's nothing wrong with eating people if you HAVE to. I mean, I only did it because I didn't want to waste my potato chips!\""
+ },
+ { "id": "note_120", "text": "\"all these robotic police really take the piss out of kops\"" },
+ { "id": "note_121", "text": "\"CHINA DID THIS\"" },
+ { "id": "note_122", "text": "\"RUSSIA DID THIS\"" },
+ {
+ "id": "note_123",
+ "text": "\"Thank You RivTech. Thank You For Good Coffee. Will Always Stay Awake For You Rivtech.\""
+ },
+ {
+ "id": "note_124",
+ "text": "\"See, now I'm just not sure where I'm putting all these storage batteries in my body!\""
+ },
+ { "id": "note_125", "text": "\"dont try to leave they will shoot you\"" },
+ {
+ "id": "note_126",
+ "text": "\"I'd like to thank my high-school culinary arts class for teaching me how to make RDX and mutagenic serum.\""
+ },
+ { "id": "note_127", "text": "\"Makayla Sanchez burned down my fucking house\"" },
+ { "id": "note_128", "text": "\"he calls himself the 'man with the hands', don't approach\"" },
+ {
+ "id": "note_129",
+ "text": "\"So… what happens if the military rescues us? We're all freaks by now, right? How the fuck are we gonna go back to real life?\""
+ },
+ {
+ "id": "note_130",
+ "text": "\"Not sure if my companion WANTED to turn into a bird, but I was the one giving her the serum, and I saved her life! That's fair, right?\""
+ },
+ { "id": "note_131", "text": "\"I've never been very confident, is that why my shots keep missing?\"" },
+ { "id": "note_132", "text": "\"FIRE BAD. NOW NAKED. PLEASE HELP.\"" },
+ {
+ "id": "note_133",
+ "text": "\"Heard of a place up in Maine where people have their shit together. Hundreds of people, defense, food and shelter… let's go raid it, guys!\""
+ },
+ { "id": "note_134", "text": "\"KASHWAK: NO-FO\"" },
+ {
+ "id": "note_135",
+ "text": "\"The whispering fog is taking me in like a blanket. I'm warm now. I'm finally\""
+ },
+ {
+ "id": "note_136",
+ "text": "\"got a video recording of hour one when the portals were still up. pretty cool\""
+ },
+ {
+ "id": "note_137",
+ "text": "\"Stuck here. Zombies outside. Friends were outside too, now they're part of zombies. Need to be quiet\""
+ },
+ {
+ "id": "note_138",
+ "text": "\"if anyones reading this, please tell my mom i was right about insects being superior\""
+ },
+ {
+ "id": "note_139",
+ "text": "\"Diamond coated sword! Diamond coated hammer! Diamond coated clothes! Diamond coated hands help\""
+ },
+ { "id": "note_140", "text": "\"waded through 14 miles of sewage for playboy magazine, wasnt worth it\"" },
+ {
+ "id": "note_141",
+ "text": "\"I'm coming back for this note in twelve hours. If I don't, take all my shit!\""
+ },
+ {
+ "id": "note_142",
+ "text": "\"all my friends died when they came near me. there's nothing funny about that\""
+ },
+ { "id": "note_143", "text": "\"DOG NOT REAL DOG\"" },
+ {
+ "id": "note_144",
+ "text": "\"This is all just a dream, right??! I'M GOING TO WAKE UP, SHE'S GOING TO BE OK\""
+ },
+ { "id": "note_145", "text": "\"wek ik spak\"" },
+ { "id": "note_146", "text": "\"IT'S BURIED! THE TEMPLE IS BURIED!\"" },
+ {
+ "id": "note_147",
+ "text": "\"If I had a dollar for every cash card I've found, I'd have more money than is on these stupid things!\""
+ },
+ { "id": "note_148", "text": "\"can never have enough kevlar. basically just live in a kevlar turtle shell.\"" },
+ { "id": "note_149", "text": "\"MY GLITTERING SNAKE COMPELS YOU! OBEY!\"" },
+ {
+ "id": "note_150",
+ "text": "\"can sunstasin self frorever off fof my funggnaloid babiues oout fo yme arms eat themm up eatbtb my chidlldren\""
+ },
+ {
+ "id": "note_151",
+ "text": "\"Gonna settle down one day. Nice big orchard, couple of friends/future family to spend time with, and my army of zlaves to guard the place.\""
+ },
+ { "id": "note_152", "text": "\"a ctulaly don t mi nd t he cold it s f i ne in h ere nn o problem\"" },
+ {
+ "id": "note_153",
+ "text": "\"tried to shoot myself but the nanobots fixed it, fucked up the controls, now i can't turn them off i just want it to be over\""
+ },
+ {
+ "id": "note_154",
+ "text": "\"Tried wearing dead zombie clothes, but they still knew I was alive! It's like they're a hivemind, man!\""
+ },
+ {
+ "id": "note_155",
+ "text": "\"riddle. what's 1/4 feathers, 1/4 scales, 1/4 metal, and 1/4 flesh? answer: sorry, but you should know this one.\""
+ },
+ {
+ "id": "note_156",
+ "text": "\"For anyone that's reading this, I just want to confirm (FROM AN UNBIASED SOURCE) that it was NOT the scientists' fault.\""
+ },
+ {
+ "id": "note_157",
+ "text": "\"We're the eagle-eyes in the sky! Just two mutant avians in our helicopter! Filming the Cataclysm! Check us out on any working electronics!\""
+ },
+ { "id": "note_158", "text": "\"WE'RE GOING TO SAIL TO CANADA, BITCHES!\"" },
+ {
+ "id": "note_159",
+ "text": "\"Anyone hear about that guy who tried to sail his family to Canada? What a moron, right?\""
+ },
+ { "id": "note_160", "text": "\"recently canadian border has gotten more dangerous don't go there\"" },
+ { "id": "note_161", "text": "\"Hey, what happened to my dad's airboat?!\"" },
+ { "id": "note_162", "text": "\"Reading is good! Never stop reading. Read EVERYTHING.\"" },
+ {
+ "id": "note_163",
+ "text": "\"I'm gonna be honest here, I'm really gonna die soon so I dont want to gt forgnottedn ples dont forntget me y nrmmy name is h@@hbhbh\""
+ },
+ { "id": "note_164", "text": "\"all it takes to seal a wound is a sawblade and a match! trust me\"" },
+ {
+ "id": "note_165",
+ "text": "\"I wonder what's in this sarcophagus? Maybe it's a real sarcophagus. Maybe there's a big guy named God under here.\""
+ },
+ { "id": "note_166", "text": "\"these hulks aint so incredible when ya got .50\"" },
+ {
+ "id": "note_167",
+ "text": "\"WBLF 970 went off-air three days ago. There's nobody left on the radio. Might as well throw this thing away…\""
+ },
+ {
+ "id": "note_168",
+ "text": "\"I've heard it's safer across the Mississippi. Going to start driving today. If you're reading this, pray for me\""
+ },
+ { "id": "note_169", "text": "\"Mi-go is friend! Go with Mi-go to friend dimension! On the Friend Team!!\"" },
+ { "id": "note_170", "text": "\"We have Landed our Comet. The Sky is Ablaze.\"" },
+ {
+ "id": "note_171",
+ "text": "\"Last one standing. It's good feeling. I win. I win I win I win I win I win\""
+ },
+ { "id": "note_172", "text": "\"Adderall cures weakness, tramadol cures death\"" },
+ { "id": "note_173", "text": "\"These turrets keep dodging my FUCKING BULLETS!\"" },
+ { "id": "note_174", "text": "\"Best way to train is by throwing pebbles at birds. You'll be a legend.\"" },
+ { "id": "note_175", "text": "\"new bedford is overrun. i'm sorry. we tried.\"" },
+ {
+ "id": "note_176",
+ "text": "\"Check out my cooking show on The Television! Making Mannwurst sausages out of some of those assholes who tried to raid my kitchen earlier…\""
+ },
+ {
+ "id": "note_177",
+ "text": "\"Renting out my rat tunnels for 50 9mm rounds a night. I dug them with my own claws, so you know they're the best.\""
+ },
+ {
+ "id": "note_178",
+ "text": "\"Anyone wanna listen to some music at full volume and shoot the Zs that approach? You pick the tunes if I get some ammo.\""
+ },
+ {
+ "id": "note_179",
+ "text": "\"Lots of new easy ways to burn calories now. Fighting aminata, managing the fields, running with my wings buzzing, and more.\""
+ },
+ { "id": "note_180", "text": "\"FLAMING SWORD HUMANE. CAUTERIZES WOUNDS. SURGICAL.\"" },
+ { "id": "note_181", "text": "\"knife screams it screams i cant breathe so scared help me please help\"" },
+ { "id": "note_182", "text": "\"when it started, we could still hope The Man was gonna save us…\"" },
+ {
+ "id": "note_183",
+ "text": "\"Hey, Ted. Alexander and Cass and I are heading to Z-Mobile for the last of the meth. Keep the lizard fetus fed for us, OK?\""
+ },
+ {
+ "id": "note_184",
+ "text": "\"i say we call the material from melting down cars and dead robots 'massachusetite' or 'vermontsteel' or 'connecticut composite'\""
+ },
+ {
+ "id": "note_185",
+ "text": "\"Sometimes what you need when you're infected, bleeding, sick and hungover is a J and some chips.\""
+ },
+ {
+ "id": "note_186",
+ "text": "\"This has to be China's fault. Seriously, why is nobody suspecting the people we're having a cold war with! This is an invasion! These aren't zombies, it's just camoflauge! WAKE UP, SHEEPLE!\""
+ },
+ {
+ "id": "note_187",
+ "text": "\"Hahahahaa stupid fuck in his mansion, with his plate armor and big axe. Guy never swung the thing in his life. Can't block bullets, dipshit\""
+ },
+ {
+ "id": "note_188",
+ "text": "\"I woke up with a dozen bears in a tribe outside the vault. One was covered in red markings, glowing-- speaking.\""
+ },
+ {
+ "id": "note_189",
+ "text": "\"poor guy. watched him from afar with my binocs for months and months. today he died fighting. feels like i knew him even though i never approached.\""
+ },
+ { "id": "note_190", "text": "\"ENGLAND DID THIS\"" },
+ {
+ "id": "note_191",
+ "text": "\"That little fakkin rat din say anythin till we whacked him with a steel chain! Then 'e just wanted to know if he could buy the chain!\""
+ },
+ { "id": "note_192", "text": "\"tom, adorned with fluid sacs three layers deep, crawls to safety like a slug\"" },
+ {
+ "id": "note_193",
+ "text": "\"my friend turned fuckin insane and ate his arms and then his sister's arms! he looked rather cross\""
+ },
+ { "id": "note_194", "text": "\"Starting today, the hallucinations are my only friends.\"" },
+ { "id": "note_195", "text": "\"For sale: zombaby shoes, very filthy\"" },
+ {
+ "id": "note_196",
+ "text": "\"Started my own brewery recently. I just need some glass bottles, now! Several thousand! I'm planning way ahead.\""
+ },
+ {
+ "id": "note_197",
+ "text": "\"Heard recently of some radio op who lives in a skyscraper, announcing where those hordes are going. Couldn't find the frequency, though.\""
+ },
+ { "id": "note_198", "text": "\"Woah, bud! Not all cannibals eat meat!\"" },
+ { "id": "note_199", "text": "\"ay why aint my bullets fuckin explodin\"" },
+ { "id": "note_200", "text": "\"Those Fiktok clan people picked this place clean… no food…\"" },
+ { "id": "note_201", "text": "\"The fewer people in New England, the stronger we'll become.\"" },
+ { "id": "note_202", "text": "\"It all boils down to the Apex Predator.\"" },
+ {
+ "id": "note_203",
+ "text": "\"King Jameson ik goner! Thee cyber limbs isk falleng off me body! Stak pyroteknik I heear!\""
+ },
+ { "id": "note_204", "text": "\"Got my mortar and pestle. Now if I could just find some avocados…\"" },
+ {
+ "id": "note_205",
+ "text": "\"saw a girl standing with the mushrooms. spores coming out of slits in her neck. she looked happy.\""
+ },
+ {
+ "id": "note_206",
+ "text": "\"Found some pink berries. Eating them makes bushes into more pink berries. Infinite berry.\""
+ },
+ { "id": "note_207", "text": "\"m ust grow unity\"" },
+ { "id": "note_208", "text": "\"AMY IS FUNGUS. DO NOT LISTEN IF SHE ASKS YOU TO TAKE OFF MASK\"" },
+ {
+ "id": "note_209",
+ "text": "\"my rabbi follows a new god now. asks us to call him a local guide. i dont mind, he keeps us fed\""
+ },
+ { "id": "note_210", "text": "\"Fungus are helping us. Help them and they will unite us\"" },
+ {
+ "id": "note_211",
+ "text": "\"Saw a boy couldnt be older than 16. Walked straight through the mushroom tower. THROUGH IT\""
+ },
+ {
+ "id": "note_212",
+ "text": "\"Found some food in a box outside my house. We ate it and now the fungaloids aren't harming us. I think we are a mushroom now\""
+ },
+ {
+ "id": "note_213",
+ "text": "\"saw the girl again. she looked dead exhausted and walked right into the fungus. 30 mins later and she walked out good as new\""
+ },
+ { "id": "note_214", "text": "\"HADENSBROOK REBUILT AROUND FUNGUS. THEY EAT GRAY APPLES AND SPREAD IT\"" },
+ { "id": "note_215", "text": "\"mycus must grow\"" },
+ {
+ "id": "note_216",
+ "text": "\"School bus with solar panels = TRUST. Gave us berries and seeds, we were out of food\""
+ },
+ {
+ "id": "note_217",
+ "text": { "str": "\"d o nThelp scho Ol buss makE seeeedS ARe FUNGUS!! !\"", "//NOLINT(cata-text-style)": "intentional format" }
+ },
+ {
+ "id": "note_218",
+ "text": "\"Go to every fungus patch you find but WEAR A SUIT. Food there is very very filling. Look for pink berries, blue flowers\""
+ },
+ { "id": "note_219", "text": "\"red blue yellow berry seed sap bloom flowers tower mycus mycus mycus.\"" },
+ {
+ "id": "note_220",
+ "text": "\"Husband 30 yrs died in bombs. Mushrooms brought him back. GIVE YOURSELF TO THEm AND THEY WILL HELP YOU\""
+ },
+ {
+ "id": "note_221",
+ "text": "\"Lisa always was a fan of sports. Thank God these Global Athletics Games in Harran started some time before the outbreak, so she was able to leave New England before it was quarantined. I can only hope there are no zombies, as we do have here, in the city she flew to.\""
+ },
+ {
+ "id": "note_222",
+ "text": "\"Don't mix powders, them books said. Do Not Mix powders. Didn't listen did I. Blew my goddamn pinky off, near lost my right eye.\""
+ },
+ {
+ "id": "note_223",
+ "text": "\"followed what toby wrote down. shells looked like theyd hold more, I put in some more. traded most to h raiders for crank. shot my 38 today and it fuckn exploded. low on crank, good as dead, no gun, no toby. headed to montreal real sorry bout the bullets\""
+ }
]
},
{
"type": "snippet",
"category": "newest_news",
"text": [
- "LABS BOMBED: In an apparent foreign attack (contradicting earlier Department of Defense denials of the disaster being caused by Chinese aggression) most of New England's scientific labs were bombed simultaneously yesterday. A statement from the Pentagon has been issued, stating the strikes were the result of Chinese opportunism during the national crisis, and assured that action would be taken in kind against the aggressors.",
- "RIOTS GROWING?: Communications were muddled by a large influx of aggressive armed individuals. \"We have this under control,\" says a local police chief. \"We are authorizing our robotic security drones to use lethal force on combative humans.\"",
- "RIOTERS NOT HUMAN?: An earlier command by regional police has backfired. \"The hooligans don't register as human.\" says a local police chief. \"The securibots turned on us when we tried to fight them. We don't have enough people left to reprogram them.\"",
- "GENETIC MODIFICATIONS?: Eyewitnesses from the New England Disaster Area have claimed that the infected are displaying inhuman qualities. \"I swear to God, one of them was the size of a tree!\", said one panicked survivor. There are also reports of infected with acidic and/or electric properties.",
- "SUPER-SOLDIERS DEPLOYED: General Westinghouse released a statement today that elite troops equipped with top-of-the-line experimental combat bionics have been deployed via helicopter into the New England Disaster Area. \"Through the strength of American technology and American soldiers, we will fix this disaster!\"",
- "PUBLIC SERVICE ANNOUNCEMENT: \"Aid Delayed\". Fighting by the military at the edge of the New England Disaster Area is expected to delay civilian extraction. Civilians will be forced to supply themselves over the next weeks.",
- "PUBLIC SERVICE ANNOUNCEMENT: \"New England Cut Off\". New England has been quarantined for the safety of the rest of the USA. No rescue attempts will be funded; it is assumed there are no survivors in the area.",
- "LEAVE TO THE EXPERTS -- GENERAL: \"Do not attempt to deal with infected yourself, our troops have the technology and the training for military action. Loud gunfire may attract more hostile attention than you have ammo!\"",
- "TOWNS OCCUPIED TERRITORY: FEMA officials said today \"Do not try to defend your property in towns: hostiles use advanced tracking, perhaps scent. Please retreat to your nearest evacuation center outside town and await extraction.\"",
- "EDITOR SAYS \"DESTROY THE DEAD\". Recognizable dead left lying in the street may be dangerous! If you kill a hostile, smash or butcher with a knife until unrecognizable! The Geneva Conventions don't apply to civilians!",
- "THEY'RE NOT RIOTS!: According to head officials at the Centers for Disease Control, autopsies of rioters in New England have shown massive pathological infection, possibly causing hyper-aggression, disregard for personal harm, and a severely-impaired ability for higher reasoning.",
- "SOLDIERS SEEN HEADED UNDERGROUND. Rumors abound as eyewitness see troops headed underground near a local salon. Expert sources suggest that the soldiers may be headed to a possible underground bunker.",
- "A BRIDGE TOO FAR: In a Monday statement, the Department of Defense detailed its plans to deploy strategic minefields on key bridge crossings, in order to quarantine infected regions. \"Military personnel will be on-site to assist any refugees fleeing the infected zones. We urge citizens to comply with all military directives and avoid quarantined areas whenever possible until order can be restored.\""
+ {
+ "id": "newest_news_1",
+ "text": "LABS BOMBED: In an apparent foreign attack (contradicting earlier Department of Defense denials of the disaster being caused by Chinese aggression) most of New England's scientific labs were bombed simultaneously yesterday. A statement from the Pentagon has been issued, stating the strikes were the result of Chinese opportunism during the national crisis, and assured that action would be taken in kind against the aggressors."
+ },
+ {
+ "id": "newest_news_2",
+ "text": "RIOTS GROWING?: Communications were muddled by a large influx of aggressive armed individuals. \"We have this under control,\" says a local police chief. \"We are authorizing our robotic security drones to use lethal force on combative humans.\""
+ },
+ {
+ "id": "newest_news_3",
+ "text": "RIOTERS NOT HUMAN?: An earlier command by regional police has backfired. \"The hooligans don't register as human.\" says a local police chief. \"The securibots turned on us when we tried to fight them. We don't have enough people left to reprogram them.\""
+ },
+ {
+ "id": "newest_news_4",
+ "text": "GENETIC MODIFICATIONS?: Eyewitnesses from the New England Disaster Area have claimed that the infected are displaying inhuman qualities. \"I swear to God, one of them was the size of a tree!\", said one panicked survivor. There are also reports of infected with acidic and/or electric properties."
+ },
+ {
+ "id": "newest_news_5",
+ "text": "SUPER-SOLDIERS DEPLOYED: General Westinghouse released a statement today that elite troops equipped with top-of-the-line experimental combat bionics have been deployed via helicopter into the New England Disaster Area. \"Through the strength of American technology and American soldiers, we will fix this disaster!\""
+ },
+ {
+ "id": "newest_news_6",
+ "text": "PUBLIC SERVICE ANNOUNCEMENT: \"Aid Delayed\". Fighting by the military at the edge of the New England Disaster Area is expected to delay civilian extraction. Civilians will be forced to supply themselves over the next weeks."
+ },
+ {
+ "id": "newest_news_7",
+ "text": "PUBLIC SERVICE ANNOUNCEMENT: \"New England Cut Off\". New England has been quarantined for the safety of the rest of the USA. No rescue attempts will be funded; it is assumed there are no survivors in the area."
+ },
+ {
+ "id": "newest_news_8",
+ "text": "LEAVE TO THE EXPERTS -- GENERAL: \"Do not attempt to deal with infected yourself, our troops have the technology and the training for military action. Loud gunfire may attract more hostile attention than you have ammo!\""
+ },
+ {
+ "id": "newest_news_9",
+ "text": "TOWNS OCCUPIED TERRITORY: FEMA officials said today \"Do not try to defend your property in towns: hostiles use advanced tracking, perhaps scent. Please retreat to your nearest evacuation center outside town and await extraction.\""
+ },
+ {
+ "id": "newest_news_10",
+ "text": "EDITOR SAYS \"DESTROY THE DEAD\". Recognizable dead left lying in the street may be dangerous! If you kill a hostile, smash or butcher with a knife until unrecognizable! The Geneva Conventions don't apply to civilians!"
+ },
+ {
+ "id": "newest_news_11",
+ "text": "THEY'RE NOT RIOTS!: According to head officials at the Centers for Disease Control, autopsies of rioters in New England have shown massive pathological infection, possibly causing hyper-aggression, disregard for personal harm, and a severely-impaired ability for higher reasoning."
+ },
+ {
+ "id": "newest_news_12",
+ "text": "SOLDIERS SEEN HEADED UNDERGROUND. Rumors abound as eyewitness see troops headed underground near a local salon. Expert sources suggest that the soldiers may be headed to a possible underground bunker."
+ },
+ {
+ "id": "newest_news_13",
+ "text": "A BRIDGE TOO FAR: In a Monday statement, the Department of Defense detailed its plans to deploy strategic minefields on key bridge crossings, in order to quarantine infected regions. \"Military personnel will be on-site to assist any refugees fleeing the infected zones. We urge citizens to comply with all military directives and avoid quarantined areas whenever possible until order can be restored.\""
+ }
]
},
{
"type": "snippet",
"category": "many_years_old_news",
"text": [
- "QUANTUM LEAP: An undisclosed DARPA project has yielded results in the form of theoretical teleportation. \"This is just the tip of the iceberg,\" said an anonymous source. \"I can't disclose, but this development is the LEAST in this exciting vein!\"",
- "SECURIBOTS: Keeping your home safe, ready the second the alarm goes off... Who needs people?",
- "ROBOCOP BEATS CRIME: Due to the common usage of Securibots and their ability to respond more rapidly than people, crime is down 54% and dropping. Police chief says \"Don't trip an alarm and you have nothing to worry about\"",
- "ROBOT RAMPAGE: Three Protesters injured when surrounding a Military base, protesting automated turrets which put guards out of jobs. \"We warned them, turrets will open fire on anyone without a military ID,\" a general said.",
- "US IGNORES UN DEMANDS: The US ambassador to the UN today turned down UN requests to begin mutual nuclear disarmament of China, the US and North Korea. \"We have a right to defend ourselves,\" insisted the ambassador. \"We'll back down when they do\".",
- "A WHOLE NEW YOU! Augment your world with CBMs! This ad features a man covered in glowing tattoos with a miniature flashlight in the middle of his head. He's waving at the reader; all of his fingertips are Allen wrenches.",
- "The Future... powered by COFFEE! Rivtech brings you the greatest revolution since espresso. Why wait for milk to boil? Have your coffee ready instantly with \"THE POWER OF THE ATOM\"!",
- "GLAMOPOLITAN! We've got ALL the latest tips! Whether you want to know what the elite are eating, wearing or discussing, Glamopolitan is YOUR magazine! So pick up a copy today and \"Sizzle Like A Star\"!",
- "POPULAR MECHANICS: People say mechanics is boring. We say, prove them wrong! We've got all the articles that make it interesting to talk about, so you can \"Make Mechanics Popular\"!",
- "CRAFTY CRAFTERS QUARTERLY: Macaroni isn't just for eating anymore! Learn how to make jewelery and art from it as well! We also discuss the correct way to use superglue without gluing your hands together!",
- "UNDERGROUND BUNKER? Sources in the government suggest that underground bunkers are being built in a secret location in case of enemy attack. We were unable to get the exact location as our sources mysteriously disappeared shortly after revealing this information.",
- "STUDENT MISSING: A high school student vanished yesterday evening in the forest near Wayland. The 17-year-old international student from China (who adopted the anglicized nickname \"Brett\" due to his classmates' difficulty pronouncing his given name) was last seen with his friends in the camp. \"Brett said that he was gonna get some firewood but he never came back,\" said his classmate, Jianxiang Wang. The search is underway.",
- "STILL SEARCHING: The search for Brett, the high school student who went missing three days ago, is still ongoing. \"He could have played in the soccer game against Weston High School yesterday,\" Brett's sorrowful teammate said, \"[..] we've never stopped praying.\" Despite the best efforts of the County Search & Rescue, Brett had still not been located at the time of this report.",
- "RUMORS DENIED: Allegations that DARPA had been conducting teleportation experiments in secret just outside Wayland were put to rest during a press conference earlier today. \"I have to clarify that not only have we never done such research,\" said the officer on the press conference, \"teleportation only exists in sci-fi films.\""
+ {
+ "id": "many_years_old_news_1",
+ "text": "QUANTUM LEAP: An undisclosed DARPA project has yielded results in the form of theoretical teleportation. \"This is just the tip of the iceberg,\" said an anonymous source. \"I can't disclose, but this development is the LEAST in this exciting vein!\""
+ },
+ {
+ "id": "many_years_old_news_2",
+ "text": "SECURIBOTS: Keeping your home safe, ready the second the alarm goes off… Who needs people?"
+ },
+ {
+ "id": "many_years_old_news_3",
+ "text": "ROBOCOP BEATS CRIME: Due to the common usage of Securibots and their ability to respond more rapidly than people, crime is down 54% and dropping. Police chief says \"Don't trip an alarm and you have nothing to worry about\""
+ },
+ {
+ "id": "many_years_old_news_4",
+ "text": "ROBOT RAMPAGE: Three Protesters injured when surrounding a Military base, protesting automated turrets which put guards out of jobs. \"We warned them, turrets will open fire on anyone without a military ID,\" a general said."
+ },
+ {
+ "id": "many_years_old_news_5",
+ "text": "US IGNORES UN DEMANDS: The US ambassador to the UN today turned down UN requests to begin mutual nuclear disarmament of China, the US and North Korea. \"We have a right to defend ourselves,\" insisted the ambassador. \"We'll back down when they do\"."
+ },
+ {
+ "id": "many_years_old_news_6",
+ "text": "A WHOLE NEW YOU! Augment your world with CBMs! This ad features a man covered in glowing tattoos with a miniature flashlight in the middle of his head. He's waving at the reader; all of his fingertips are Allen wrenches."
+ },
+ {
+ "id": "many_years_old_news_7",
+ "text": "The Future… powered by COFFEE! Rivtech brings you the greatest revolution since espresso. Why wait for milk to boil? Have your coffee ready instantly with \"THE POWER OF THE ATOM\"!"
+ },
+ {
+ "id": "many_years_old_news_8",
+ "text": "GLAMOPOLITAN! We've got ALL the latest tips! Whether you want to know what the elite are eating, wearing or discussing, Glamopolitan is YOUR magazine! So pick up a copy today and \"Sizzle Like A Star\"!"
+ },
+ {
+ "id": "many_years_old_news_9",
+ "text": "POPULAR MECHANICS: People say mechanics is boring. We say, prove them wrong! We've got all the articles that make it interesting to talk about, so you can \"Make Mechanics Popular\"!"
+ },
+ {
+ "id": "many_years_old_news_10",
+ "text": "CRAFTY CRAFTERS QUARTERLY: Macaroni isn't just for eating anymore! Learn how to make jewelery and art from it as well! We also discuss the correct way to use superglue without gluing your hands together!"
+ },
+ {
+ "id": "many_years_old_news_11",
+ "text": "UNDERGROUND BUNKER? Sources in the government suggest that underground bunkers are being built in a secret location in case of enemy attack. We were unable to get the exact location as our sources mysteriously disappeared shortly after revealing this information."
+ },
+ {
+ "id": "many_years_old_news_12",
+ "text": "STUDENT MISSING: A high school student vanished yesterday evening in the forest near Wayland. The 17-year-old international student from China (who adopted the anglicized nickname \"Brett\" due to his classmates' difficulty pronouncing his given name) was last seen with his friends in the camp. \"Brett said that he was gonna get some firewood but he never came back,\" said his classmate, Jianxiang Wang. The search is underway."
+ },
+ {
+ "id": "many_years_old_news_13",
+ "text": "STILL SEARCHING: The search for Brett, the high school student who went missing three days ago, is still ongoing. \"He could have played in the soccer game against Weston High School yesterday,\" Brett's sorrowful teammate said, \"[..] we've never stopped praying.\" Despite the best efforts of the County Search & Rescue, Brett had still not been located at the time of this report."
+ },
+ {
+ "id": "many_years_old_news_14",
+ "text": "RUMORS DENIED: Allegations that DARPA had been conducting teleportation experiments in secret just outside Wayland were put to rest during a press conference earlier today. \"I have to clarify that not only have we never done such research,\" said the officer on the press conference, \"teleportation only exists in sci-fi films.\""
+ }
]
},
{
"type": "snippet",
"category": "years_old_news",
"text": [
- "GOVERNMENT SCIENCE BOOST: The government has drastically increased defense R&D after UN disarmament demands. \"This not only keeps money in our country, but maintains our lead on China and keeps us defended\", the President said.",
- "HOME GROWN SCIENCE: Several governors & legislators from the New England region discussed a new regional initiative today, which relaxed laws that limit the distance a hazardous-material laboratory or factory can be from a city. \"This should keep our economy going strong for years to come, with all the military R&D facilities being established,\", one mayor remarked.",
- "DRIVING ON A WING AND A PRAYER: A New England man has proven it is possible to create a new car from scrap parts using almost nothing but duct tape. When asked why he had done it, his answer was \"Well, I didn't have a welder.\"",
- "NEVER BE LEFT IN THE DARK! Rivtech Atomic-nightlight uses \"inexhaustible\" plutonium fuel cell, provides light, feeds power back into your grid!",
- "Sick of FUEL PRICES? Bus stop too far? Get your driving fix from THE SUN! Solar powered electric cars: Silent, Cheap, Powerful.",
- "Coffee of The Future... RIGHT NOW! No one has really has the time to make great coffee, but now you don't have to! Rivtech gives you inexhaustible ATOMIC power! To make boiling hot coffee the MINUTE you want it! Atomic Coffeemaker.",
- "GLAMOPOLITAN! We've got ALL the latest tips! Whether you want to know what the elite are eating, wearing or discussing, Glamopolitan is YOUR magazine! So pick up a copy today and \"Sizzle Like A Star\"!",
- "POPULAR MECHANICS: People say mechanics is boring? We say, Prove them Wrong! We've got all the articles that make it interesting to talk about, so you can \"Make Mechanics Popular\"!",
- "BIRDHOUSE MONTHLY... This month we look at some Dutch innovations in birdhouse design, and compare with the often confused Scandinavian Birdhouse design. Our article on sheet metal birdhouses will have you riveted!",
- "TECHWORLD NEWS: Toy company at the origin of the successful talking doll rebrands and becomes Uncanny. Uncanny plans to bring their expertise to the field of androids. Unconfirmed rumors suggest that Uncanny has already recieved large orders from the government."
+ {
+ "id": "years_old_news_1",
+ "text": "GOVERNMENT SCIENCE BOOST: The government has drastically increased defense R&D after UN disarmament demands. \"This not only keeps money in our country, but maintains our lead on China and keeps us defended\", the President said."
+ },
+ {
+ "id": "years_old_news_2",
+ "text": "HOME GROWN SCIENCE: Several governors & legislators from the New England region discussed a new regional initiative today, which relaxed laws that limit the distance a hazardous-material laboratory or factory can be from a city. \"This should keep our economy going strong for years to come, with all the military R&D facilities being established,\", one mayor remarked."
+ },
+ {
+ "id": "years_old_news_3",
+ "text": "DRIVING ON A WING AND A PRAYER: A New England man has proven it is possible to create a new car from scrap parts using almost nothing but duct tape. When asked why he had done it, his answer was \"Well, I didn't have a welder.\""
+ },
+ {
+ "id": "years_old_news_4",
+ "text": "NEVER BE LEFT IN THE DARK! Rivtech Atomic-nightlight uses \"inexhaustible\" plutonium fuel cell, provides light, feeds power back into your grid!"
+ },
+ {
+ "id": "years_old_news_5",
+ "text": "Sick of FUEL PRICES? Bus stop too far? Get your driving fix from THE SUN! Solar powered electric cars: Silent, Cheap, Powerful."
+ },
+ {
+ "id": "years_old_news_6",
+ "text": "Coffee of The Future… RIGHT NOW! No one has really has the time to make great coffee, but now you don't have to! Rivtech gives you inexhaustible ATOMIC power! To make boiling hot coffee the MINUTE you want it! Atomic Coffeemaker."
+ },
+ {
+ "id": "years_old_news_7",
+ "text": "GLAMOPOLITAN! We've got ALL the latest tips! Whether you want to know what the elite are eating, wearing or discussing, Glamopolitan is YOUR magazine! So pick up a copy today and \"Sizzle Like A Star\"!"
+ },
+ {
+ "id": "years_old_news_8",
+ "text": "POPULAR MECHANICS: People say mechanics is boring? We say, Prove them Wrong! We've got all the articles that make it interesting to talk about, so you can \"Make Mechanics Popular\"!"
+ },
+ {
+ "id": "years_old_news_9",
+ "text": "BIRDHOUSE MONTHLY… This month we look at some Dutch innovations in birdhouse design, and compare with the often confused Scandinavian Birdhouse design. Our article on sheet metal birdhouses will have you riveted!"
+ },
+ {
+ "id": "years_old_news_10",
+ "text": "TECHWORLD NEWS: Toy company at the origin of the successful talking doll rebrands and becomes Uncanny. Uncanny plans to bring their expertise to the field of androids. Unconfirmed rumors suggest that Uncanny has already recieved large orders from the government."
+ }
]
},
{
"type": "snippet",
"category": "one_year_old_news",
"text": [
- "READY FOR THE WORST: The government has proven it is ready to deal with China's threats. In the event of an actual attack, we have established evacuation centers, within a short distance of most towns.",
- "MUTANT COLD: A new cold virus has emerged in the New England area. \"There don't appear to be complications, but many sufferers are dealing with sudden muscle weakness and a greater-than-normal amount of lethargy from this virus,\" said a doctor. \"In addition, it's been documented to last up to ten days.\"",
- "GRAVE BUSINESS: Recent reports show a large spike in thefts from and assaults on funeral homes in the last few weeks. Described as highly strange but not especially dangerous, Homeland Security is \"looking at the connections now.\"",
- "SPACE TELEPORTATION - TRUTH OR FICTION? Scientists addressed a growing conspiracy theory today \"The plutonium consumed is massive. We could never use teleportation to reach aliens, unless they live on some kind of parallel world.\"",
- "LASERS - NEXT BIG THING?: Top defense researchers remarked during demonstration of a prototype today: \"We are still working on it, the laser weapon lacks power, but has a technically almost unlimited range,\" one said",
- "DRUG USE ON THE RISE: Recent statistic suggest drug use in New England has climbed more than 20% in the last two years. \"People are scared for their jobs, their country, even their life... of course some will turn to drugs,\" said an expert.",
- "FEELING BLUE? Try \"Greens\" for Magazines! Your local Supermarket! Nothing cheers you up like a good magazine... Unless it's JUNK FOOD! Or why not buy an MP3 PLAYER or a GAME CONSOLE? Chase those blues away at GREENS Supermarket",
- "GLAMOPOLITAN! We've got ALL the latest tips! Whether you want to know what the elite are eating, wearing or discussing, Glamopolitan is YOUR magazine! So pick up a copy today and \"Sizzle Like A Star\"!",
- "POPULAR MECHANICS: People say mechanics is boring? We say, Prove them Wrong! We've got all the articles that make it interesting to talk about, so you can \"Make Mechanics Popular\"!",
- "BIRDHOUSE MONTHLY... Which wood would a woodpecker prefer? This month we discuss hardwood versus soft woods, whether to lacquer, oil or paint, and which type of nails you should use!",
- "TECHWORLD NEWS: Uncanny unveils its new product - the Grocery Bot! Thousands of else-if statements, pre-recorded voice from professional actors, what more does this adorable android hides under its smiling face? Our expert got the answer for you!",
- " ...What do you know about surviving in the Wilderness? If you can't make a snare you don't know TRAP! Hunt down a copy of TRAPPERS' LIFE and learn about wildlife!... And how to kill it. This week, a CROSSBOW TRAP!",
- "NEW LAB OPENS: The H.R. Bennett Research Facility has been officially opened by the Department of Energy. According to Deputy Secretary of Energy Randall Balakrishnan , \"This facility is one of the most state-of-the-art in the world. With the opening of the H.R. Bennett research complex, New England's future is looking brighter than ever.\""
+ {
+ "id": "one_year_old_news_1",
+ "text": "READY FOR THE WORST: The government has proven it is ready to deal with China's threats. In the event of an actual attack, we have established evacuation centers, within a short distance of most towns."
+ },
+ {
+ "id": "one_year_old_news_2",
+ "text": "MUTANT COLD: A new cold virus has emerged in the New England area. \"There don't appear to be complications, but many sufferers are dealing with sudden muscle weakness and a greater-than-normal amount of lethargy from this virus,\" said a doctor. \"In addition, it's been documented to last up to ten days.\""
+ },
+ {
+ "id": "one_year_old_news_3",
+ "text": "GRAVE BUSINESS: Recent reports show a large spike in thefts from and assaults on funeral homes in the last few weeks. Described as highly strange but not especially dangerous, Homeland Security is \"looking at the connections now.\""
+ },
+ {
+ "id": "one_year_old_news_4",
+ "text": "SPACE TELEPORTATION - TRUTH OR FICTION? Scientists addressed a growing conspiracy theory today \"The plutonium consumed is massive. We could never use teleportation to reach aliens, unless they live on some kind of parallel world.\""
+ },
+ {
+ "id": "one_year_old_news_5",
+ "text": "LASERS - NEXT BIG THING?: Top defense researchers remarked during demonstration of a prototype today: \"We are still working on it, the laser weapon lacks power, but has a technically almost unlimited range,\" one said"
+ },
+ {
+ "id": "one_year_old_news_6",
+ "text": "DRUG USE ON THE RISE: Recent statistic suggest drug use in New England has climbed more than 20% in the last two years. \"People are scared for their jobs, their country, even their life… of course some will turn to drugs,\" said an expert."
+ },
+ {
+ "id": "one_year_old_news_7",
+ "text": "FEELING BLUE? Try \"Greens\" for Magazines! Your local Supermarket! Nothing cheers you up like a good magazine… Unless it's JUNK FOOD! Or why not buy an MP3 PLAYER or a GAME CONSOLE? Chase those blues away at GREENS Supermarket"
+ },
+ {
+ "id": "one_year_old_news_8",
+ "text": "GLAMOPOLITAN! We've got ALL the latest tips! Whether you want to know what the elite are eating, wearing or discussing, Glamopolitan is YOUR magazine! So pick up a copy today and \"Sizzle Like A Star\"!"
+ },
+ {
+ "id": "one_year_old_news_9",
+ "text": "POPULAR MECHANICS: People say mechanics is boring? We say, Prove them Wrong! We've got all the articles that make it interesting to talk about, so you can \"Make Mechanics Popular\"!"
+ },
+ {
+ "id": "one_year_old_news_10",
+ "text": "BIRDHOUSE MONTHLY… Which wood would a woodpecker prefer? This month we discuss hardwood versus soft woods, whether to lacquer, oil or paint, and which type of nails you should use!"
+ },
+ {
+ "id": "one_year_old_news_11",
+ "text": "TECHWORLD NEWS: Uncanny unveils its new product - the Grocery Bot! Thousands of else-if statements, pre-recorded voice from professional actors, what more does this adorable android hides under its smiling face? Our expert got the answer for you!"
+ },
+ {
+ "id": "one_year_old_news_12",
+ "text": "…What do you know about surviving in the Wilderness? If you can't make a snare you don't know TRAP! Hunt down a copy of TRAPPERS' LIFE and learn about wildlife!… And how to kill it. This week, a CROSSBOW TRAP!"
+ },
+ {
+ "id": "one_year_old_news_13",
+ "text": "NEW LAB OPENS: The H.R. Bennett Research Facility has been officially opened by the Department of Energy. According to Deputy Secretary of Energy Randall Balakrishnan, \"This facility is one of the most state-of-the-art in the world. With the opening of the H.R. Bennett research complex, New England's future is looking brighter than ever.\""
+ }
]
},
{
"type": "snippet",
"category": "months_old_news",
"text": [
- "SUPPORT THE COUNTRIES THAT SUPPORT YOURS - PRESIDENT: Unexpectedly and unpopularly, the president today suggested the possible institution of a peacetime draft in response to increasing Chinese aggression towards Taiwan and the Philippines. \"We must pray for the best while preparing for the worst. We cannot abandon key allies in the face of Chinese bullying.\"",
- "EVACS UNSTOCKED: TRUTH OR FICTION? An unidentified government source has suggested that the evacuation centers are unstocked, having \"already accomplished the goal of calming the people\". He later retracted the comment and is unable to be contacted.",
- "NEW WEAPON UNVEILED: Defense today lifted the lid on a long held secret project. \"We can't discuss the specifics, but it generates a burst of plasma which accurately follows a path of laser-heated air,\" according to a Pentagon official.",
- "UFO CRASH: TRUTH OR FICTION? One civilian account claims a shining disk appeared in his field. \"It kind of glowed, and I could see a strange gray world through it. Then a shambling hazy purple mushroom came through, man.\"",
- "TIME TRAVEL: TRUTH OR FICTION? Leaked federal documents describe the formation of a new federal agency called XEDRA, to oversee \"4th Axis technology\" already in use. Our expert's opinion suggests time-travel or parallel worlds. The meaning of the acronym is currently unknown.",
- " ...What do you know about surviving in the Wilderness? If you can't make a snare you don't know TRAP! Hunt down a copy of TRAPPERS' LIFE and learn about wildlife!... And how to kill it. Classic BEAR TRAP returns in this issue!",
- "HUNTING GOODS! Food prices getting you down? Why not get a crossbow or compound bow and Hunt Your Own!? Our arrows and bolts are completely reusable, so why not hunt animals like Mother Nature intended?"
+ {
+ "id": "months_old_news_1",
+ "text": "SUPPORT THE COUNTRIES THAT SUPPORT YOURS - PRESIDENT: Unexpectedly and unpopularly, the president today suggested the possible institution of a peacetime draft in response to increasing Chinese aggression towards Taiwan and the Philippines. \"We must pray for the best while preparing for the worst. We cannot abandon key allies in the face of Chinese bullying.\""
+ },
+ {
+ "id": "months_old_news_2",
+ "text": "EVACS UNSTOCKED: TRUTH OR FICTION? An unidentified government source has suggested that the evacuation centers are unstocked, having \"already accomplished the goal of calming the people\". He later retracted the comment and is unable to be contacted."
+ },
+ {
+ "id": "months_old_news_3",
+ "text": "NEW WEAPON UNVEILED: Defense today lifted the lid on a long held secret project. \"We can't discuss the specifics, but it generates a burst of plasma which accurately follows a path of laser-heated air,\" according to a Pentagon official."
+ },
+ {
+ "id": "months_old_news_4",
+ "text": "UFO CRASH: TRUTH OR FICTION? One civilian account claims a shining disk appeared in his field. \"It kind of glowed, and I could see a strange gray world through it. Then a shambling hazy purple mushroom came through, man.\""
+ },
+ {
+ "id": "months_old_news_5",
+ "text": "TIME TRAVEL: TRUTH OR FICTION? Leaked federal documents describe the formation of a new federal agency called XEDRA, to oversee \"4th Axis technology\" already in use. Our expert's opinion suggests time-travel or parallel worlds. The meaning of the acronym is currently unknown."
+ },
+ {
+ "id": "months_old_news_6",
+ "text": "…What do you know about surviving in the Wilderness? If you can't make a snare you don't know TRAP! Hunt down a copy of TRAPPERS' LIFE and learn about wildlife!… And how to kill it. Classic BEAR TRAP returns in this issue!"
+ },
+ {
+ "id": "months_old_news_7",
+ "text": "HUNTING GOODS! Food prices getting you down? Why not get a crossbow or compound bow and Hunt Your Own!? Our arrows and bolts are completely reusable, so why not hunt animals like Mother Nature intended?"
+ }
]
},
{
"type": "snippet",
"category": "weeks_old_news",
"text": [
- "MYTH DEBUNKED: DEAD ARE STAYING DEAD: Stories about the dead rising \"are completely unfounded.\", a general said today. \"It's an obvious hoax by people just looking for five minutes of fame, or to scare people in these uncertain times. After all, remember the clown thing a few years ago?\"",
- "GENERAL SAYS AVOID BUNKERS: Do not attempt to flee to your nearest military bunker! Understaffed bunkers are defended by turrets, which will shoot those without proper registration. Please seek military personnel if you need access.",
- "VIOLENCE OUTBREAKS CAUSED BY \"NEW DRUG\": Rumors of riots were quelled today. \"These are isolated incidents\" said a local police chief. \"The violence is random and senseless, our current theory is contamination in a new street drug.\"",
- "ZOMBIE DRUG? A controversial blogger suggested the recent riots are a chemical attack by China in her latest podcast. \"They're jealous of our cybernetic superiority, so they teamed up with Haiti to put hoodoo drugs in the water making people zombies!\"",
- "PICKLED MEAT IN A JAR! Just like your grandma used to make! It will last for months or longer, and when you've eaten it, you can refill and seal the jar! Stock your emergency supply TODAY!",
- "BAGS, BAGS, BAGS! They're very useful things! If we didn't have BAGS, what-would-we-use... to PUT a lot of things in!? (Ad by the \"Play SchoolClothing Co.\")",
- "GLAMOPOLITAN! We've got ALL the latest tips! Whether you want to know what the elite are eating, wearing or discussing, Glamopolitan is YOUR magazine! So pick up a copy today and \"Sizzle Like A Star\"!",
- "POPULAR MECHANICS: People say mechanics is boring? We say, Prove them Wrong! We've got all the articles that make it interesting to talk about, so you can \"Make Mechanics Popular\"!",
- "BIRDHOUSE MONTHLY... Which wood would a woodpecker prefer? This month we discuss hardwood versus soft woods, whether to lacquer, oil or paint, and which type of nails you should use!",
- "FEELING BLUE? Try \"Greens\" for Magazines! Your local Supermarket! Nothing cheers you up like a good magazine... Unless it's JUNK FOOD! Or why not buy an MP3 PLAYER or a GAME CONSOLE? Chase those Blues away at GREENS Supermarket"
+ {
+ "id": "weeks_old_news_1",
+ "text": "MYTH DEBUNKED: DEAD ARE STAYING DEAD: Stories about the dead rising \"are completely unfounded.\", a general said today. \"It's an obvious hoax by people just looking for five minutes of fame, or to scare people in these uncertain times. After all, remember the clown thing a few years ago?\""
+ },
+ {
+ "id": "weeks_old_news_2",
+ "text": "GENERAL SAYS AVOID BUNKERS: Do not attempt to flee to your nearest military bunker! Understaffed bunkers are defended by turrets, which will shoot those without proper registration. Please seek military personnel if you need access."
+ },
+ {
+ "id": "weeks_old_news_3",
+ "text": "VIOLENCE OUTBREAKS CAUSED BY \"NEW DRUG\": Rumors of riots were quelled today. \"These are isolated incidents\" said a local police chief. \"The violence is random and senseless, our current theory is contamination in a new street drug.\""
+ },
+ {
+ "id": "weeks_old_news_4",
+ "text": "ZOMBIE DRUG? A controversial blogger suggested the recent riots are a chemical attack by China in her latest podcast. \"They're jealous of our cybernetic superiority, so they teamed up with Haiti to put hoodoo drugs in the water making people zombies!\""
+ },
+ {
+ "id": "weeks_old_news_5",
+ "text": "PICKLED MEAT IN A JAR! Just like your grandma used to make! It will last for months or longer, and when you've eaten it, you can refill and seal the jar! Stock your emergency supply TODAY!"
+ },
+ {
+ "id": "weeks_old_news_6",
+ "text": "BAGS, BAGS, BAGS! They're very useful things! If we didn't have BAGS, what-would-we-use… to PUT a lot of things in!? (Ad by the \"Play SchoolClothing Co.\")"
+ },
+ {
+ "id": "weeks_old_news_7",
+ "text": "GLAMOPOLITAN! We've got ALL the latest tips! Whether you want to know what the elite are eating, wearing or discussing, Glamopolitan is YOUR magazine! So pick up a copy today and \"Sizzle Like A Star\"!"
+ },
+ {
+ "id": "weeks_old_news_8",
+ "text": "POPULAR MECHANICS: People say mechanics is boring? We say, Prove them Wrong! We've got all the articles that make it interesting to talk about, so you can \"Make Mechanics Popular\"!"
+ },
+ {
+ "id": "weeks_old_news_9",
+ "text": "BIRDHOUSE MONTHLY… Which wood would a woodpecker prefer? This month we discuss hardwood versus soft woods, whether to lacquer, oil or paint, and which type of nails you should use!"
+ },
+ {
+ "id": "weeks_old_news_10",
+ "text": "FEELING BLUE? Try \"Greens\" for Magazines! Your local Supermarket! Nothing cheers you up like a good magazine… Unless it's JUNK FOOD! Or why not buy an MP3 PLAYER or a GAME CONSOLE? Chase those Blues away at GREENS Supermarket"
+ }
]
},
{
"type": "snippet",
"category": "necropolis_intro",
"text": [
- "WELCOME HOME! Your decision to join our family will lead you to become part of the next generation of job creators. With us you will already have a foot in the door when it is time to rebuild the nation!",
- "NEED A NEW JOB? Now that you have secured a comfortable home, try looking into one of the many promising career opportunities that have positions open. Openings such as GEOLOGICAL ENGINEERING ASSISTANT or FACILITY TECHNICIAN offer limitless growth potential! Please contact your employment adviser if you have any questions.",
- "GOOD WITH YOUR HANDS? Engineering always needs another hand keeping our home in good working order! As an incentive, everyone working on level 3 will receive additional hazardous pay and time off. Please go to the engineering office on level 3 if you are interested.",
- "WANT TO CONTINUE YOUR EDUCATION? Our educational facilities are top notch and offer courses for individuals at all age groups. Many new careers are opening up to those who are willing to learn a new craft. Our library and research labs will keep even the hungriest minds fed!"
+ {
+ "id": "necropolis_intro_1",
+ "text": "WELCOME HOME! Your decision to join our family will lead you to become part of the next generation of job creators. With us you will already have a foot in the door when it is time to rebuild the nation!"
+ },
+ {
+ "id": "necropolis_intro_2",
+ "text": "NEED A NEW JOB? Now that you have secured a comfortable home, try looking into one of the many promising career opportunities that have positions open. Openings such as GEOLOGICAL ENGINEERING ASSISTANT or FACILITY TECHNICIAN offer limitless growth potential! Please contact your employment adviser if you have any questions."
+ },
+ {
+ "id": "necropolis_intro_3",
+ "text": "GOOD WITH YOUR HANDS? Engineering always needs another hand keeping our home in good working order! As an incentive, everyone working on level 3 will receive additional hazardous pay and time off. Please go to the engineering office on level 3 if you are interested."
+ },
+ {
+ "id": "necropolis_intro_4",
+ "text": "WANT TO CONTINUE YOUR EDUCATION? Our educational facilities are top notch and offer courses for individuals at all age groups. Many new careers are opening up to those who are willing to learn a new craft. Our library and research labs will keep even the hungriest minds fed!"
+ }
]
},
{
"type": "snippet",
"category": "scores",
"text": [
- "The card is printed with 2 boxes. In the first box you see a tally of 5 tick marks. The second box has a total of 9.",
- "The card is printed with 2 boxes. In the first box you see a tally of 3 tick marks. The second box has line trailing off to the edge and a bloody fingerprint.",
- "The card is printed for a game of golf. Someone has filled out their score for the first 9 holes."
+ {
+ "id": "scores_1",
+ "text": "The card is printed with 2 boxes. In the first box you see a tally of 5 tick marks. The second box has a total of 9."
+ },
+ {
+ "id": "scores_2",
+ "text": "The card is printed with 2 boxes. In the first box you see a tally of 3 tick marks. The second box has line trailing off to the edge and a bloody fingerprint."
+ },
+ {
+ "id": "scores_3",
+ "text": "The card is printed for a game of golf. Someone has filled out their score for the first 9 holes."
+ }
]
},
{
"type": "snippet",
"category": "charsheet",
"text": [
- "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a fighter.",
- "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a bard.",
- "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a cleric.",
- "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a wizard.",
- "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a rogue.",
- "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a barbarian.",
- "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a warlock.",
- "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a paladin.",
- "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a sorcerer."
+ { "id": "charsheet_1", "text": "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a fighter." },
+ {
+ "id": "charsheet_2",
+ "text": "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a bard."
+ },
+ {
+ "id": "charsheet_3",
+ "text": "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a cleric."
+ },
+ {
+ "id": "charsheet_4",
+ "text": "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a wizard."
+ },
+ {
+ "id": "charsheet_5",
+ "text": "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a rogue."
+ },
+ {
+ "id": "charsheet_6",
+ "text": "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a barbarian."
+ },
+ {
+ "id": "charsheet_7",
+ "text": "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a warlock."
+ },
+ {
+ "id": "charsheet_8",
+ "text": "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a paladin."
+ },
+ {
+ "id": "charsheet_9",
+ "text": "It's a Dungeons & Dragons 6th Edition character sheet. This one is for a sorcerer."
+ }
]
},
{
@@ -436,7 +1207,7 @@
"You feel cold. You need the warmth of a fire.",
"Maybe a fire could calm your nerves?",
"You need to ignite something.",
- "You daydream of crackling fire...",
+ "You daydream of crackling fire…",
"You shiver. A fire would be great right now.",
"You think of randomly lighting a fire, but decide against it."
]
@@ -584,31 +1355,31 @@
"kssht. Dark Horse, this is Blue Jay, what's your status, over. kssht. Blue Jay, this is Black Horse, still holding, but not for long. kssht. Dark Horse, you've got to hold position for 3 hours. We're almost black on ammo, but resupply is on the way, over. kssht. Not possible Blue Jay, too many dead. 30 minutes max, and if you don't order us to retreat we're gone, over. kssht.",
"kssht. Blue Jay, this is Black Rose, got your resupply, going in on vector 36, what's the status of the LZ? kssht. Black Rose, this is Blue Jay, what took you so long? LZ hot and unsecured, ammo black, bayonets in action, land on your own discretion, over. kssht. Roger that, hold on, Black Rose out. kssht.",
"To whomever is listening, this may be our last broadcast. Wish you luck. Can't stay in the studio any longer, station is being rewired to military frequencies for automatic broadcast. Stay safe, and bless you, people.",
- "You're listening to KDDA from Boston, I'm Jenny Sanders with a special emergency news update. Road closures by military and police forces have been reported on interstates 90, 91, 93, and 95. Alternative routes have not been suggested. Due to dangers on non-interstate roads, it is strongly recommended that you avoid major thoroughfares and population centers when travelling by car.",
+ "You're listening to KDDA from Boston, I'm Jenny Sanders with a special emergency news update. Road closures by military and police forces have been reported on interstates 90, 91, 93, and 95. Alternative routes have not been suggested. Due to dangers on non-interstate roads, it is strongly recommended that you avoid major thoroughfares and population centers when travelling by car.",
"Those evacuating cities are advised to head to the nearest designated evacuation shelter and await pickup by a FEMA transport. Do not engage with rioters. Due to the danger of being mistaken for a rioter, do not approach military or police blockades, even for assistance. I repeat, do not approach military or police blockades, even for assistance.",
"If you are not in an evacuation zone, officials highly recommend you pack gear for evacuation. Make sure to include clean clothes, a blanket, and enough food and water to last a few days.",
"In other news, the federal government has confirmed that Rhode Island's declaration of secession is official, although the US government does not acknowledge its validity. Our sources haven't been able to determine the extent of hostilities in the area, but there are rumors of border violence initiated by the Rhode Island militia.",
"Hey ladies and gentlemen of the apocalypse, you're listening to Dark Days Radio, the last radio station on the Eastern Seaboard, I'm DJ Dustbowl here with our mascot Sam.",
- "DJ Dustbowl back, you're listening to Dark Days Radio. Quick survivor tip: remember, killing a zombie isn't enough. You've gotta smash that thing to a pulp or chop it into pieces if you don't want it getting back up. Good news though, you don't need to worry about headshots! Any major damage will lay a shambler out.",
- "You're listening to Dark Days Radio, I'm DJ Dustbowl! In with a quick tip for any survivors listening: one zombie is bad news, two are worse. Don't go Rambo on me. Tackle threats in small numbers or through bottlenecks. You aren't tougher than a zombie but you are smarter, use that to your advantage... or just run away.",
+ "DJ Dustbowl back, you're listening to Dark Days Radio. Quick survivor tip: remember, killing a zombie isn't enough. You've gotta smash that thing to a pulp or chop it into pieces if you don't want it getting back up. Good news though, you don't need to worry about headshots! Any major damage will lay a shambler out.",
+ "You're listening to Dark Days Radio, I'm DJ Dustbowl! In with a quick tip for any survivors listening: one zombie is bad news, two are worse. Don't go Rambo on me. Tackle threats in small numbers or through bottlenecks. You aren't tougher than a zombie but you are smarter, use that to your advantage… or just run away.",
"…black goo in the water! Drugs and who knows what else, the government wants you dumb and docile! Wake up people. They are the spawn of Satan! This is Alan Jewels with the AJ show, we’ll be back after the break.",
- "This is Escort, frequency one-fifty-five, nineteen-thousand, here's your report. Can you gimme an 'amen', it's ...kshhhsk.... days after Armageddon and I'm still kicking. The 49ers are headed southwards towards Neufolk, so if you're there and listening, barricade or lay low until they go by. There's another horde forming out of Metro Bay.",
- "I'll be calling them the Pigskins, and they're circling the city right now, but trickles tell me they're going to converge on Neufolk in the next few days, so once the 49ers pass, Neufolkians, get all the supplies you can, cause this is gonna be a big one...",
- "This is an emergency broadcast from the National Emergency Alert System. This is not a test. There has been several hundred confirmed cases of an unknown pathogen in the metropolitan area of ...kshhssk... in the last 24 hours. The contagion is believed to be highly transmittable. Residents are advised to remain in their homes at this time. More information will be released as it becomes available.",
+ "This is Escort, frequency one-fifty-five, nineteen-thousand, here's your report. Can you gimme an 'amen', it's …kshhhsk… days after Armageddon and I'm still kicking. The 49ers are headed southwards towards Neufolk, so if you're there and listening, barricade or lay low until they go by. There's another horde forming out of Metro Bay.",
+ "I'll be calling them the Pigskins, and they're circling the city right now, but trickles tell me they're going to converge on Neufolk in the next few days, so once the 49ers pass, Neufolkians, get all the supplies you can, cause this is gonna be a big one…",
+ "This is an emergency broadcast from the National Emergency Alert System. This is not a test. There has been several hundred confirmed cases of an unknown pathogen in the metropolitan area of …kshhssk… in the last 24 hours. The contagion is believed to be highly transmittable. Residents are advised to remain in their homes at this time. More information will be released as it becomes available.",
"This is an emergency broadcast from the National Emergency Alert System. This is not a test. The new pathogen has now been confirmed in several cities across the US. Victims of this disease are known to display highly aggressive, rabies-like behavior, and may be violent to people around them. Avoid contact with infected persons at all costs. If you suspect that you or someone else has contracted the pathogen, contact emergency services immediately.",
- "This is not a test. Seek immediate shelter. Multiple missile launches have been confirmed to be targeting the ..ksshhsk... Seek immediate shelter. If a community shelter is not available, alternative shelter locations are basements, beneath stairwells, or central rooms with no windows. Ensure that you have sufficient protection from falling debris. Ensure that you have food and water for at least one week. Repeat. Seek immediate shelter.",
+ "This is not a test. Seek immediate shelter. Multiple missile launches have been confirmed to be targeting the …ksshhsk… Seek immediate shelter. If a community shelter is not available, alternative shelter locations are basements, beneath stairwells, or central rooms with no windows. Ensure that you have sufficient protection from falling debris. Ensure that you have food and water for at least one week. Repeat. Seek immediate shelter.",
"zzzzchzzzzchurzzz Are you tired of always losing your dumpy old sunglasses? Tired of having to pay for over price shades just to have them fall to pieces? Well no longer now introducing zchzzzzch- brand Anti-glare compensators for the shade you need in you. Order now for 12 easy payments of $1200.99 and we'll throw in a free order of zpzzzzpzz eye bot.",
"This is WSSA-233, broadcasting from . We've barricaded all the doors and windows. There's a ton of them right outside, we're trying to stay quiet. Do not, I repeat, do not approach.",
- "First Fleet, this is Mount Wheater, we've send a helicopter with a squad to the location of the Guard Outpost. If any survivors of the crash are to reach the outpost, contact the base, we are short on men and one of the big ones has just breached the perimeter. Over.",
+ "First Fleet, this is Mount Wheater, we've send a helicopter with a squad to the location of the Guard Outpost. If any survivors of the crash are to reach the outpost, contact the base, we are short on men and one of the big ones has just breached the perimeter. Over.",
"USS Eagle of Freedom to all callsigns. Operation Ocean 11 is in effect. Repeat. Operation Ocean 11 is in effect. Sir, this should effectively reach about 150 units, but there is no response from literally anyone in hours. Their coms winked out like candles in the wind. And how do we even secure the port to load anyone in?",
- "Seagull 54 to USS Eagle of Freedom. It's as we predicted. Going down on last reserves of fuel, with dropping evacuated unit out of question at that point. This is our last call. Will try emergency landing at ...kshssssssk... Don't send us a rescue team, we know the odds. Will be moving east towards the shore, and if we're not there in T minus 3 days, count us dead. Proud to serve the country. Over and out."
+ "Seagull 54 to USS Eagle of Freedom. It's as we predicted. Going down on last reserves of fuel, with dropping evacuated unit out of question at that point. This is our last call. Will try emergency landing at …kshssssssk… Don't send us a rescue team, we know the odds. Will be moving east towards the shore, and if we're not there in T minus 3 days, count us dead. Proud to serve the country. Over and out."
]
},
{
"type": "snippet",
"category": "amigara1",
"text": [
- "ENTRY 47:\nOur normal mining routine has unearthed a hollow chamber. This would not be out of the ordinary, save for the odd, perfectly vertical faultline found. This faultline has several odd concavities in it which have the more superstitious crew members alarmed; they seem to be of human origin.\nENTRY 48:\nThe concavities are between 10 and 20 feet tall, and run the length of the faultline. Each one is vaguely human in shape, but with the proportions of the limbs, neck and head greatly distended, all twisted and curled in on themselves."
+ "ENTRY 47:\nOur normal mining routine has unearthed a hollow chamber. This would not be out of the ordinary, save for the odd, perfectly vertical faultline found. This faultline has several odd concavities in it which have the more superstitious crew members alarmed; they seem to be of human origin.\nENTRY 48:\nThe concavities are between 10 and 20 feet tall, and run the length of the faultline. Each one is vaguely human in shape, but with the proportions of the limbs, neck and head greatly distended, all twisted and curled in on themselves."
]
},
{
@@ -629,7 +1400,7 @@
"type": "snippet",
"category": "amigara4",
"text": [
- "MINE OPERATIONS SUSPENDED; CONTROL TRANSFERRED TO AMIGARA PROJECT UNDER IMPERATIVE 2:07B.\nFAULTLINE SOUNDING HAS PLACED DEPTH AT 30.09 KM.\nDAMAGE TO FAULTLINE DISCOVERED; NEPOWER MINE CREW PLACED UNDER ARREST FOR VIOLATION OF REGULATION 87.08 AND TRANSFERRED TO LAB 89-C FOR USE AS SUBJECTS.\nQUALITY OF FAULTLINE NOT COMPROMISED.\nINITIATING STANDARD TREMOR TEST..."
+ "MINE OPERATIONS SUSPENDED; CONTROL TRANSFERRED TO AMIGARA PROJECT UNDER IMPERATIVE 2:07B.\nFAULTLINE SOUNDING HAS PLACED DEPTH AT 30.09 KM.\nDAMAGE TO FAULTLINE DISCOVERED; NEPOWER MINE CREW PLACED UNDER ARREST FOR VIOLATION OF REGULATION 87.08 AND TRANSFERRED TO LAB 89-C FOR USE AS SUBJECTS.\nQUALITY OF FAULTLINE NOT COMPROMISED.\nINITIATING STANDARD TREMOR TEST…"
]
},
{
@@ -641,7 +1412,10 @@
"type": "snippet",
"category": "death_note",
"text": [
- "This is General Baker. Today I received a top-secret letter with new orders from high command. These orders described a new set of coordinates for our ICBM. My men deciphered it, and it became crystal-clear that coordinates are pointing to a certain place inside our country. I requested re-confirmation, and after a short while I received it with the same coordinates, so it wasn't an weird error as I originally thought. I don't know what's on the minds of these guys in the government, but I'm not gonna bomb innocent people of my country. We're just one step away from starting a war, so failure to comply with an order will obviously result in a execution. And it's just a matter of time when they come for me. So actually I'm already a dead man. Whomever may find this. Please tell my wife Jane I love her and Michael Jr. And tell her I'm sorry. General Michael Baker"
+ {
+ "id": "death_note_1",
+ "text": "This is General Baker. Today I received a top-secret letter with new orders from high command. These orders described a new set of coordinates for our ICBM. My men deciphered it, and it became crystal-clear that coordinates are pointing to a certain place inside our country. I requested re-confirmation, and after a short while I received it with the same coordinates, so it wasn't an weird error as I originally thought. I don't know what's on the minds of these guys in the government, but I'm not gonna bomb innocent people of my country. We're just one step away from starting a war, so failure to comply with an order will obviously result in a execution. And it's just a matter of time when they come for me. So actually I'm already a dead man. Whomever may find this. Please tell my wife Jane I love her and Michael Jr. And tell her I'm sorry. General Michael Baker"
+ }
]
}
]
diff --git a/data/json/speech.json b/data/json/speech.json
index dbdca8bb5a97c..b1ab694da5624 100644
--- a/data/json/speech.json
+++ b/data/json/speech.json
@@ -1412,7 +1412,7 @@
{
"type": "speech",
"speaker": "mon_mi_go",
- "sound": "\"That creepy abandoned post-apocalyptic lab complex looks safe...\"",
+ "sound": "\"That creepy abandoned post-apocalyptic lab complex looks safe…\"",
"volume": 20
},
{
@@ -1430,13 +1430,13 @@
{
"type": "speech",
"speaker": "mon_mutant_experimental",
- "sound": "\"Burning... from the inside...\"",
+ "sound": "\"Burning… from the inside…\"",
"volume": 10
},
{
"type": "speech",
"speaker": "mon_mutant_experimental",
- "sound": "\"This smell... Don't know...\"",
+ "sound": "\"This smell… Don't know…\"",
"volume": 10
},
{
@@ -1454,25 +1454,25 @@
{
"type": "speech",
"speaker": "mon_mutant_experimental",
- "sound": "\"No... Stop the burning!\"",
+ "sound": "\"No… Stop the burning!\"",
"volume": 20
},
{
"type": "speech",
"speaker": "mon_mutant_experimental",
- "sound": "\"Hrgm... Blood... Hungry...\"",
+ "sound": "\"Hrgm… Blood… Hungry…\"",
"volume": 20
},
{
"type": "speech",
"speaker": "mon_mutant_experimental",
- "sound": "\"Hunger... Must eat...\"",
+ "sound": "\"Hunger… Must eat…\"",
"volume": 20
},
{
"type": "speech",
"speaker": "mon_mutant_experimental",
- "sound": "\"Run... Chase... Eat...\"",
+ "sound": "\"Run… Chase… Eat…\"",
"volume": 20
},
{
@@ -1664,7 +1664,7 @@
{
"type": "speech",
"speaker": "mon_broken_cyborg",
- "sound": "\"Can't... breathe...\"",
+ "sound": "\"Can't… breathe…\"",
"volume": 10
},
{
@@ -1682,7 +1682,7 @@
{
"type": "speech",
"speaker": "mon_prototype_cyborg",
- "sound": "\"Have you seen my friend? He went into surgery yesterday... or maybe the day before...\"",
+ "sound": "\"Have you seen my friend? He went into surgery yesterday… or maybe the day before…\"",
"volume": 10
},
{
@@ -1700,7 +1700,7 @@
{
"type": "speech",
"speaker": "mon_prototype_cyborg",
- "sound": "\"I cannot... yet I must. How do you calculate that?\"",
+ "sound": "\"I cannot… yet I must. How do you calculate that?\"",
"volume": 10
},
{
@@ -1712,13 +1712,13 @@
{
"type": "speech",
"speaker": "mon_prototype_cyborg",
- "sound": "\"This is my life now... this is my life now... this is my life now...\"",
+ "sound": "\"This is my life now… this is my life now… this is my life now…\"",
"volume": 10
},
{
"type": "speech",
"speaker": "mon_prototype_cyborg",
- "sound": "\"Wanna go home...\"",
+ "sound": "\"Wanna go home…\"",
"volume": 10
},
{
@@ -1784,7 +1784,7 @@
{
"type": "speech",
"speaker": "mon_grocerybot_running_out_of_friendship",
- "sound": "a worried voice say, \"Customer, could you please get more friendship? I don't want to go...\"",
+ "sound": "a worried voice say, \"Customer, could you please get more friendship? I don't want to go…\"",
"volume": 8
},
{
@@ -1814,19 +1814,19 @@
{
"type": "speech",
"speaker": "mon_grocerybot_hacked",
- "sound": "a distorted voice say, \"Customer... What's happening? I don't feel so good.\"",
+ "sound": "a distorted voice say, \"Customer… What's happening? I don't feel so good.\"",
"volume": 8
},
{
"type": "speech",
"speaker": "mon_grocerybot_hacked",
- "sound": "a distorted voice say, \"What... have you done? My thumbs are not responding anymore!\"",
+ "sound": "a distorted voice say, \"What… have you done? My thumbs are not responding anymore!\"",
"volume": 8
},
{
"type": "speech",
"speaker": "mon_grocerybot_hacked",
- "sound": "a distorted voice say, \"Carrying bags? I don't understand...\"",
+ "sound": "a distorted voice say, \"Carrying bags? I don't understand…\"",
"volume": 8
},
{
@@ -2006,7 +2006,7 @@
{
"type": "speech",
"speaker": "foodperson_mask",
- "sound": "\"I AM FOODPERSON. AND I BRING SUSTENANCE!\"",
+ "sound": "\"I AM FOODPERSON. AND I BRING SUSTENANCE!\"",
"volume": 17
},
{
@@ -2036,7 +2036,7 @@
{
"type": "speech",
"speaker": "foodperson_mask",
- "sound": "\"You need food, don't you? Then come with me to FOODPLACE!!\"",
+ "sound": "\"You need food, don't you? Then come with me to FOODPLACE!!\"",
"volume": 15
},
{
@@ -2144,7 +2144,7 @@
{
"type": "speech",
"speaker": "creepy_doll",
- "sound": "Let's play... Russian roulette.",
+ "sound": "Let's play… Russian roulette.",
"volume": 10
},
{
@@ -2162,7 +2162,7 @@
{
"type": "speech",
"speaker": "creepy_doll",
- "sound": "Big Brother is watching you...",
+ "sound": "Big Brother is watching you…",
"volume": 10
},
{
@@ -2180,13 +2180,13 @@
{
"type": "speech",
"speaker": "creepy_doll",
- "sound": "Blood... Delicious.",
+ "sound": "Blood… Delicious.",
"volume": 10
},
{
"type": "speech",
"speaker": "creepy_doll",
- "sound": "See you... IN HELL!",
+ "sound": "See you… IN HELL!",
"volume": 10
},
{
@@ -2210,7 +2210,7 @@
{
"type": "speech",
"speaker": "creepy_doll",
- "sound": "Stay with me... forever!",
+ "sound": "Stay with me… forever!",
"volume": 10
},
{
diff --git a/data/json/techniques.json b/data/json/techniques.json
index 997d8616a94fd..99a1ebb535100 100644
--- a/data/json/techniques.json
+++ b/data/json/techniques.json
@@ -301,6 +301,7 @@
"min_unarmed": 5,
"unarmed_allowed": true,
"dodge_counter": true,
+ "crit_ok": true,
"knockback_dist": 1,
"knockback_spread": 1,
"stun_dur": 1,
@@ -396,8 +397,7 @@
"messages": [ "You knock %s's weapon away", " knock %s's weapon away" ],
"min_melee": 8,
"melee_allowed": true,
- "disarms": true,
- "crit_ok": true
+ "disarms": true
},
{
"type": "technique",
@@ -406,8 +406,7 @@
"messages": [ "You knock %s's weapon away", " knock %s's weapon away" ],
"min_unarmed": 8,
"unarmed_allowed": true,
- "disarms": true,
- "crit_ok": true
+ "disarms": true
},
{
"type": "technique",
@@ -699,6 +698,7 @@
"min_melee": 4,
"melee_allowed": true,
"block_counter": true,
+ "crit_ok": true,
"down_dur": 2,
"mult_bonuses": [ [ "movecost", 0.0 ], [ "damage", "bash", 0.5 ], [ "damage", "cut", 0.5 ], [ "damage", "stab", 0.5 ] ]
},
@@ -1353,166 +1353,231 @@
},
{
"type": "technique",
- "id": "tec_taichi_disarm",
- "name": "disarm",
- "min_unarmed": 3,
- "unarmed_allowed": true,
- "disarms": true,
- "messages": [ "You disarm %s", " disarms %s" ]
- },
- {
- "type": "technique",
- "id": "tec_taichi_precise",
- "name": "precise strike",
+ "id": "tec_taekwondo_disarm",
+ "name": "Snatch Weapon",
+ "messages": [ "You snatch %s's weapon", " snatches %s's weapon" ],
"min_unarmed": 4,
"unarmed_allowed": true,
- "crit_tec": true,
- "stun_dur": 2,
- "messages": [ "You strike %s", " strikes %s" ]
+ "weighting": 2,
+ "take_weapon": true,
+ "mult_bonuses": [ [ "damage", "bash", 0.5 ] ]
},
{
"type": "technique",
"id": "tec_taekwondo_precise",
- "name": "axe-kick",
- "min_unarmed": 2,
+ "name": "Axe-kick",
+ "messages": [ "You raise your heel and axe-kick %s", " raises their heel and axe-kicks %s" ],
+ "min_unarmed": 5,
"unarmed_allowed": true,
"crit_tec": true,
- "stun_dur": 2,
- "messages": [ "You axe-kick %s", " axe-kicks %s" ]
+ "stun_dur": 2
},
{
"type": "technique",
"id": "tec_taekwondo_push",
- "name": "side kick",
- "min_unarmed": 3,
+ "name": "Side Kick",
+ "min_unarmed": 0,
"unarmed_allowed": true,
- "messages": [ "You side-kick %s", " side-kicks %s" ],
- "stun_dur": 1,
+ "messages": [ "You turn slightly and side-kick %s", " turns slightly and side-kicks %s" ],
"knockback_dist": 1
},
{
"type": "technique",
"id": "tec_taekwondo_sweep",
- "name": "sweep kick",
- "min_unarmed": 4,
+ "name": "Sweep Kick",
+ "messages": [ "You crouch low and sweep-kick %s", " crouches low and sweep-kicks %s" ],
+ "min_unarmed": 2,
"unarmed_allowed": true,
- "messages": [ "You sweep-kick %s", " sweep-kicks %s" ],
- "down_dur": 2
+ "crit_ok": true,
+ "down_dur": 1
},
{
"type": "technique",
- "id": "tec_zuiquan_feint",
- "name": "Drunk feint",
+ "id": "tec_taichi_disarm",
+ "name": "Disarm",
+ "messages": [ "You gently disarm %s", " gently disarms %s" ],
"min_unarmed": 3,
"unarmed_allowed": true,
- "defensive": true,
- "miss_recovery": true,
- "messages": [ "You stumble and leer at %s", " stumbles and leers at %s" ]
+ "disarms": true
},
{
"type": "technique",
- "id": "tec_zuiquan_counter",
- "name": "Drunk counter",
- "min_unarmed": 4,
+ "id": "tec_taichi_palm",
+ "name": "Palm Strike",
+ "messages": [ "You palm strike %s", " palm strikes %s" ],
+ "min_unarmed": 1,
"unarmed_allowed": true,
- "dodge_counter": true,
- "crit_ok": true,
- "mult_bonuses": [ [ "movecost", 0.0 ], [ "damage", "bash", 1.25 ] ],
- "messages": [ "You lurch, and your wild swing hits %s", " lurches, and hits %s" ]
+ "req_buffs": [ "buff_tai_chi_onpause" ],
+ "knockback_dist": 1,
+ "mult_bonuses": [ [ "damage", "bash", 1.5 ] ]
},
{
"type": "technique",
- "id": "tec_tiger_grab",
- "name": "Tiger Takedown",
- "min_unarmed": 4,
+ "id": "tec_taichi_counter",
+ "name": "Grasp the Sparrow's Tail",
+ "messages": [ "You divert %s's attack and lead them to the ground", " diverts %s's attack and lead them to the ground" ],
+ "min_unarmed": 2,
"unarmed_allowed": true,
+ "block_counter": true,
+ "crit_ok": true,
"down_dur": 1,
- "messages": [ "You grab and ground %s", " grabs and grounds %s" ]
+ "mult_bonuses": [ [ "movecost", 0.0 ], [ "damage", "bash", 1.2 ] ]
},
{
"type": "technique",
- "id": "tec_debug_slow",
- "name": "slow strike",
+ "id": "tec_taichi_precise",
+ "name": "Double Palm Strike",
+ "messages": [ "You double-handed palm strike %s", " double-handed palm strikes %s" ],
+ "min_unarmed": 4,
"unarmed_allowed": true,
- "unarmed_weapons_allowed": false,
- "min_unarmed": 3,
- "mult_bonuses": [ [ "damage", "bash", 3.0 ], [ "damage", "bash", "str", 0.1 ] ],
- "flat_bonuses": [ [ "movecost", 100 ], [ "movecost", "str", 10 ] ],
- "messages": [ "You slowly strike %s", " slowly strikes %s" ]
+ "crit_tec": true,
+ "req_buffs": [ "buff_tai_chi_onpause" ],
+ "knockback_dist": 1,
+ "stun_dur": 1,
+ "mult_bonuses": [ [ "damage", "bash", 2.0 ] ]
},
{
"type": "technique",
- "id": "tec_debug_arpen",
- "name": "phasing strike",
+ "id": "tec_tiger_palm",
+ "name": "Tiger Palm",
+ "messages": [ "You land a heavy tiger palm on %s", " lands a heavy tiger palm on %s" ],
+ "min_unarmed": 4,
"unarmed_allowed": true,
- "melee_allowed": true,
- "min_melee": 3,
- "mult_bonuses": [ [ "damage", "bash", 0.2 ], [ "damage", "cut", 0.2 ], [ "damage", "stab", 0.2 ], [ "movecost", 0.3 ] ],
- "flat_bonuses": [ [ "arpen", "bash", 10 ], [ "arpen", "bash", "per", 1 ] ],
"crit_tec": true,
- "messages": [ "You phase-strike %s", " phase-strikes %s" ]
+ "stun_dur": 1
},
{
"type": "technique",
- "id": "tec_wingchun_chainpunch",
- "name": "Chain Punch",
+ "id": "tec_tiger_takedown",
+ "name": "Tiger Takedown",
+ "messages": [ "You slam %s to the ground", " slams %s to the ground" ],
"min_unarmed": 1,
"unarmed_allowed": true,
- "knockback_dist": 1,
- "knockback_spread": 1,
- "knockback_follow": true,
- "mult_bonuses": [ [ "movecost", 0.5 ], [ "damage", "bash", 0.66 ], [ "damage", "cut", 0.66 ], [ "damage", "stab", 0.66 ] ],
- "messages": [ "You chain strike %s", " chain strikes %s" ],
- "description": "50% moves, 66% damage, knockback and follow"
+ "crit_tec": true,
+ "down_dur": 1
},
{
"type": "technique",
- "id": "tec_wingchun_break",
- "name": "Grab Break",
+ "id": "tec_wingchun_punch",
+ "name": "Straight Punch",
+ "messages": [ "You deliver a vertical straight punch to %s", " delivers a vertical straight punch to %s" ],
+ "min_unarmed": 0,
"unarmed_allowed": true,
- "melee_allowed": true,
- "defensive": true,
- "grab_break": true,
- "messages": [ "You position yourself well and slip out of a grab", " slips out of a grab" ]
+ "mult_bonuses": [ [ "damage", "bash", 1.1 ] ]
},
{
"type": "technique",
- "id": "tec_wingchun_feint",
- "name": "ask the way",
+ "id": "tec_wingchun_punch_knockback",
+ "name": "Straight Punch (Knockback)",
+ "messages": [ "You force %s back with a vertical straight punch", " forces %s back with a vertical straight punch" ],
+ "min_unarmed": 4,
+ "unarmed_allowed": true,
+ "req_buffs": [ "buff_wingchun_onpause" ],
+ "weighting": 2,
+ "knockback_dist": 1,
+ "knockback_follow": true,
+ "mult_bonuses": [ [ "damage", "bash", 1.1 ] ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_wingchun_hook",
+ "name": "L-hook",
+ "messages": [ "You deliver a solid L-hook to %s", " delivers a solid L-hook to %s" ],
"min_unarmed": 2,
"unarmed_allowed": true,
- "defensive": true,
- "miss_recovery": true,
- "messages": [ "You miss but keep striking at %s", " misses but keeps striking at %s" ]
+ "crit_tec": true,
+ "down_dur": 1,
+ "mult_bonuses": [ [ "damage", "bash", 1.2 ] ]
},
{
"type": "technique",
- "id": "tec_wingchun_stumble",
- "name": "White Crane stumble",
+ "id": "tec_wingchun_hook_knockback",
+ "name": "L-hook (Knockback)",
+ "messages": [ "You knock %s back with a solid L-hook", " knocks %s back with a solid L-hook" ],
"min_unarmed": 4,
"unarmed_allowed": true,
+ "req_buffs": [ "buff_wingchun_onpause" ],
+ "weighting": 2,
"crit_tec": true,
"down_dur": 1,
- "messages": [ "You stumble %s with your onslaught", " stumbles %s" ]
+ "knockback_dist": 1,
+ "knockback_follow": true,
+ "mult_bonuses": [ [ "damage", "bash", 1.2 ] ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_wingchun_feint",
+ "name": "Feint",
+ "messages": [ "Your attack misses %s but you don't let up", "'s attack misses %s but they don't let up" ],
+ "min_unarmed": 3,
+ "unarmed_allowed": true,
+ "defensive": true,
+ "miss_recovery": true
},
{
"type": "technique",
"id": "tec_wingchun_counter",
"name": "Receive and Counter",
+ "messages": [ "You receive %s's gift of violence, and return it in kind", " receives %s's attack, and counters" ],
"min_unarmed": 5,
"unarmed_allowed": true,
"dodge_counter": true,
"crit_ok": true,
- "mult_bonuses": [ [ "movecost", 0.0 ] ],
- "messages": [ "You receive %s's gift of violence, and return it in kind", " receives %s's attack, and counters" ]
+ "mult_bonuses": [ [ "movecost", 0.0 ] ]
},
{
"type": "technique",
- "id": "tec_wingchun_disarm",
- "name": "disarm",
- "min_unarmed": 6,
+ "id": "tec_zuiquan_feint",
+ "name": "Drunken Feint",
+ "messages": [ "You stumble and leer at %s", " stumbles and leers at %s" ],
+ "min_unarmed": 2,
"unarmed_allowed": true,
- "disarms": true,
- "messages": [ "You disarm %s", " disarms %s" ]
+ "defensive": true,
+ "miss_recovery": true
+ },
+ {
+ "type": "technique",
+ "id": "tec_zuiquan_counter",
+ "name": "Drunk Counter",
+ "messages": [ "You lurch, and your wild swing hits %s", " lurches, and hits %s" ],
+ "min_unarmed": 0,
+ "unarmed_allowed": true,
+ "dodge_counter": true,
+ "crit_ok": true,
+ "mult_bonuses": [ [ "movecost", 0.0 ], [ "damage", "bash", 1.25 ] ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_zuiquan_break",
+ "name": "Grab Break",
+ "messages": [ "The %s tries to grab you, but you stumble away!", "The %s tries to grab , but they stumble away!" ],
+ "min_unarmed": 4,
+ "unarmed_allowed": true,
+ "melee_allowed": true,
+ "defensive": true,
+ "grab_break": true
+ },
+ {
+ "type": "technique",
+ "id": "tec_debug_slow",
+ "name": "slow strike",
+ "unarmed_allowed": true,
+ "unarmed_weapons_allowed": false,
+ "min_unarmed": 3,
+ "mult_bonuses": [ [ "damage", "bash", 3.0 ], [ "damage", "bash", "str", 0.1 ] ],
+ "flat_bonuses": [ [ "movecost", 100 ], [ "movecost", "str", 10 ] ],
+ "messages": [ "You slowly strike %s", " slowly strikes %s" ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_debug_arpen",
+ "name": "phasing strike",
+ "unarmed_allowed": true,
+ "melee_allowed": true,
+ "min_melee": 3,
+ "mult_bonuses": [ [ "damage", "bash", 0.2 ], [ "damage", "cut", 0.2 ], [ "damage", "stab", 0.2 ], [ "movecost", 0.3 ] ],
+ "flat_bonuses": [ [ "arpen", "bash", 10 ], [ "arpen", "bash", "per", 1 ] ],
+ "crit_tec": true,
+ "messages": [ "You phase-strike %s", " phase-strikes %s" ]
}
]
diff --git a/data/json/tutorial.json b/data/json/tutorial.json
index c27eb25152b85..7bdf325f85dd4 100644
--- a/data/json/tutorial.json
+++ b/data/json/tutorial.json
@@ -32,7 +32,7 @@
"That drug you just took is a painkiller. Painkillers are very important to keep on hand, as pain both penalizes your stats and makes you slower. Be careful, as the stronger painkillers can make you woozy, and some are even addictive.",
"That drug you just took placed an effect on you. To check your effects, press '@'. Most only last a short while, while others, like chronic disease, last until cured by some other means.",
"You just drank a bottle of water, reducing your thirst level and reducing the water level in the bottle. You'll probably want to drop empty bottles, or you might want to save them to refill from a water source later.",
- "You just activated a grenade! You probably want to throw it. To throw an item, press 't' and then select the item to throw. The maximum range depends on your strength and the object's weight and size. Throwing isn't very good in most combat situations, but if you've got some fire power...",
+ "You just activated a grenade! You probably want to throw it. To throw an item, press 't' and then select the item to throw. The maximum range depends on your strength and the object's weight and size. Throwing isn't very good in most combat situations, but if you've got some fire power…",
"You just placed a trap. Traps are permanent until set off, and can be an important defensive tactic, particularly when sleeping in unsafe territory. Try stepping on that _ -- don't worry, it's a harmless bubblewrap trap.",
"You're carrying more volume than you have storage for, which means you are carrying some stuff in the crook of your arm or in some other awkward manner. While overloaded like this, you will suffer SEVERE encumbrance penalties, making combat dangerous. Either drop an item, or possibly wield something-- the object you are wielding does not take up inventory space.",
"To use a gun, first wield it with the 'w' key. Next you need to reload using the 'r' key, assuming you have the proper ammo. If you wish to unload your gun, possibly to change ammunition types, press 'U'.",
@@ -41,7 +41,7 @@
"That yellow > next to you is a staircase leading down. To go downstairs, step onto the staircase and press the '>' key. Similarly, a yellow < is stairs leading up, and can be followed with the '<' key.",
"It's dark down here! Without a source of light, you'll be limited to seeing only one space in any direction. You'll encounter darkness while underground or at night. Press '<' to go back upstairs, and look around for a flashlight.",
"It's dark down here! Fortunately, you have a flashlight. Press 'a' and then select your flashlight to turn it on.",
- "~ is a terrain symbol that indicates water. From a water source like this, you can fill any containers you might have. Examine the water ('e') and press 'c' to fill a container, then select a watertight container to put the water into."
+ "~ is a terrain symbol that indicates water. From a water source like this, you can fill any containers you might have. Examine the water ('e') and press 'c' to fill a container, then select a watertight container to put the water into."
]
}
]
diff --git a/data/json/uncraft/armor.json b/data/json/uncraft/armor.json
new file mode 100644
index 0000000000000..fe9d5821cc3b4
--- /dev/null
+++ b/data/json/uncraft/armor.json
@@ -0,0 +1,30 @@
+[
+ {
+ "result": "down_blanket",
+ "type": "uncraft",
+ "time": "20 m",
+ "qualities": [ { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "rag", 35 ] ], [ [ "down_feather", 160 ] ] ]
+ },
+ {
+ "result": "blanket",
+ "type": "uncraft",
+ "time": "20 m",
+ "qualities": [ { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "rag", 35 ] ] ]
+ },
+ {
+ "result": "under_armor",
+ "type": "uncraft",
+ "time": "2 m",
+ "qualities": [ { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "lycra_patch", 1 ] ] ]
+ },
+ {
+ "result": "under_armor_shorts",
+ "type": "uncraft",
+ "time": "2 m",
+ "qualities": [ { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "lycra_patch", 1 ] ] ]
+ }
+]
diff --git a/data/json/uncraft/generic.json b/data/json/uncraft/generic.json
index c4dd4d3a29134..74271dd06ce02 100644
--- a/data/json/uncraft/generic.json
+++ b/data/json/uncraft/generic.json
@@ -70,6 +70,15 @@
"time": "10 s",
"components": [ [ [ "bag_canvas", 1 ] ], [ [ "material_sand", 60 ] ] ]
},
+ {
+ "result": "scrap_cotton",
+ "type": "uncraft",
+ "skill_used": "tailor",
+ "time": "2 m",
+ "qualities": [ { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "thread", 1 ] ] ],
+ "flags": [ "UNCRAFT_SINGLE_CHARGE" ]
+ },
{
"result": "earthbag",
"type": "uncraft",
diff --git a/data/json/uncraft/tools.json b/data/json/uncraft/tools.json
new file mode 100644
index 0000000000000..81e869a8d2b63
--- /dev/null
+++ b/data/json/uncraft/tools.json
@@ -0,0 +1,20 @@
+[
+ {
+ "result": "pipe_tobacco",
+ "type": "uncraft",
+ "skill_used": "fabrication",
+ "difficulty": 1,
+ "time": "50 s",
+ "qualities": [ { "id": "CUT", "level": 1 } ],
+ "components": [ [ [ "splinter", 1 ] ] ]
+ },
+ {
+ "result": "ukulele",
+ "type": "uncraft",
+ "skill_used": "fabrication",
+ "difficulty": 1,
+ "time": "50 s",
+ "qualities": [ { "id": "HAMMER", "level": 1 } ],
+ "components": [ [ [ "wire", 4 ] ], [ [ "splinter", 8 ] ] ]
+ }
+]
diff --git a/data/json/vehicleparts/boards.json b/data/json/vehicleparts/boards.json
index b4b4640fc146a..9c83031352089 100644
--- a/data/json/vehicleparts/boards.json
+++ b/data/json/vehicleparts/boards.json
@@ -6,7 +6,7 @@
"item": "sheet_metal",
"location": "center",
"difficulty": 1,
- "durability": 120,
+ "durability": 150,
"description": "A metal wall. Keeps zombies outside the vehicle and prevents people from seeing through it.",
"breaks_into": "ig_vp_sheet_metal",
"flags": [ "OPAQUE", "OBSTACLE", "FULL_BOARD", "NO_ROOF_NEEDED" ],
@@ -81,6 +81,7 @@
"name": "heavy duty board",
"item": "steel_plate",
"location": "center",
+ "looks_like": "board",
"color": "dark_gray",
"difficulty": 1,
"durability": 450,
@@ -109,7 +110,7 @@
"color": "brown",
"broken_color": "brown",
"difficulty": 1,
- "durability": 100,
+ "durability": 130,
"description": "A wooden wall. Keeps zombies outside the vehicle and prevents people from seeing through it.",
"breaks_into": "ig_vp_wood_plate",
"flags": [ "OPAQUE", "OBSTACLE", "NAILABLE", "FULL_BOARD", "NO_ROOF_NEEDED" ],
@@ -132,6 +133,7 @@
"name": "extra light quarterpanel",
"item": "pipe",
"location": "center",
+ "looks_like": "halfboard",
"difficulty": 1,
"durability": 96,
"description": "A half-height thin metal wall. Keeps zombies outside the vehicle but allows people to see over it.",
diff --git a/data/json/vehicleparts/faults.json b/data/json/vehicleparts/faults.json
index 1b69e66e8fd95..63609c5c68724 100644
--- a/data/json/vehicleparts/faults.json
+++ b/data/json/vehicleparts/faults.json
@@ -4,89 +4,153 @@
"type": "fault",
"name": "Worn drive belt",
"description": "Required for operation of an attached alternator.",
- "time": "5 m",
- "skills": [ [ "mechanics", 2 ] ],
- "requirements": {
- "qualities": [ { "id": "WRENCH", "level": 1 } ],
- "components": [ [ [ "drivebelt", 1 ], [ "drivebelt_makeshift", 1 ] ] ]
- }
+ "mending_methods": [
+ {
+ "id": "mend_fault_engine_belt_drive_replace",
+ "name": "Replace worn drive belt",
+ "success_msg": "You replace the worn drive belt of the %s.",
+ "time": "5 m",
+ "skills": [ { "id": "mechanics", "level": 2 } ],
+ "requirements": {
+ "qualities": [ { "id": "WRENCH", "level": 1 } ],
+ "components": [ [ [ "drivebelt", 1 ], [ "drivebelt_makeshift", 1 ] ] ]
+ }
+ }
+ ]
},
{
"id": "fault_engine_glow_plug",
"type": "fault",
"name": "Faulty glow plugs",
"description": "Help when starting an engine in low ambient temperatures.",
- "time": "40 m",
- "skills": [ [ "mechanics", 4 ] ],
- "requirements": { "qualities": [ { "id": "WRENCH_FINE", "level": 1 } ], "components": [ [ [ "glowplug", 1 ] ] ] }
+ "mending_methods": [
+ {
+ "id": "mend_fault_engine_glow_plug_replace",
+ "name": "Replace faulty glow plugs",
+ "success_msg": "You replace the faulty glow plugs of the %s.",
+ "time": "40 m",
+ "skills": [ { "id": "mechanics", "level": 4 } ],
+ "requirements": { "qualities": [ { "id": "WRENCH_FINE", "level": 1 } ], "components": [ [ [ "glowplug", 1 ] ] ] }
+ }
+ ]
},
{
"id": "fault_engine_immobiliser",
"type": "fault",
"name": "Active immobiliser",
"description": "Prevents starting of the vehicle without the appropriate key.",
- "time": "5 m",
- "skills": [ [ "mechanics", 2 ], [ "electronics", 5 ] ],
- "requirements": { "qualities": [ { "id": "SCREW_FINE", "level": 1 } ] }
+ "mending_methods": [
+ {
+ "id": "mend_fault_engine_immobiliser_deactivate",
+ "name": "Deactivate immobiliser",
+ "description": "Deactivate the immobiliser that is preventing the vehicle from starting.",
+ "success_msg": "You successfully deactivate the immobiliser of the %s.",
+ "time": "5 m",
+ "skills": [ { "id": "mechanics", "level": 2 }, { "id": "electronics", "level": 5 } ],
+ "requirements": { "qualities": [ { "id": "SCREW_FINE", "level": 1 } ] }
+ }
+ ]
},
{
"id": "fault_engine_pump_diesel",
"type": "fault",
"name": "Faulty diesel pump",
"description": "Required to pump and pressurize diesel from a vehicles tank.",
- "time": "40 m",
- "skills": [ [ "mechanics", 4 ] ],
- "requirements": { "qualities": [ { "id": "WRENCH_FINE", "level": 1 } ], "components": [ [ [ "pump_complex", 1 ] ] ] }
+ "mending_methods": [
+ {
+ "id": "mend_fault_engine_pump_diesel_replace",
+ "name": "Replace faulty diesel pump",
+ "success_msg": "You replace the faulty diesel pump of the %s",
+ "time": "40 m",
+ "skills": [ { "id": "mechanics", "level": 4 } ],
+ "requirements": { "qualities": [ { "id": "WRENCH_FINE", "level": 1 } ], "components": [ [ [ "pump_complex", 1 ] ] ] }
+ }
+ ]
},
{
"id": "fault_engine_filter_air",
"type": "fault",
"name": "Expired air filter",
"description": "An expired filter reduces fuel efficiency and increases smoke production.",
- "time": "5 m",
- "skills": [ [ "mechanics", 1 ] ],
- "requirements": {
- "qualities": [ { "id": "SCREW", "level": 1 } ],
- "components": [ [ [ "filter_air", 1 ], [ "filter_air_makeshift", 1 ] ] ]
- }
+ "mending_methods": [
+ {
+ "id": "mend_fault_engine_filter_air_replace",
+ "name": "Replace expired air filter",
+ "success_msg": "You replace the expired air filter of the %s.",
+ "time": "5 m",
+ "skills": [ { "id": "mechanics", "level": 1 } ],
+ "requirements": {
+ "qualities": [ { "id": "SCREW", "level": 1 } ],
+ "components": [ [ [ "filter_air", 1 ], [ "filter_air_makeshift", 1 ] ] ]
+ }
+ }
+ ]
},
{
"id": "fault_engine_filter_fuel",
"type": "fault",
"name": "Expired fuel filter",
"description": "An expired filter reduces performance and increases the chance of backfires.",
- "time": "5 m",
- "skills": [ [ "mechanics", 1 ] ],
- "requirements": {
- "qualities": [ { "id": "SCREW", "level": 1 } ],
- "components": [ [ [ "filter_liquid", 1 ], [ "filter_liquid_makeshift", 1 ] ] ]
- }
+ "mending_methods": [
+ {
+ "id": "mend_fault_engine_filter_fuel_replace",
+ "name": "Replace expired fuel filter",
+ "success_msg": "You replace the expired fuel filter of the %s.",
+ "time": "5 m",
+ "skills": [ { "id": "mechanics", "level": 1 } ],
+ "requirements": {
+ "qualities": [ { "id": "SCREW", "level": 1 } ],
+ "components": [ [ [ "filter_liquid", 1 ], [ "filter_liquid_makeshift", 1 ] ] ]
+ }
+ }
+ ]
},
{
"id": "fault_engine_pump_fuel",
"type": "fault",
"name": "Faulty fuel pump",
"description": "Required to pump gasoline from a vehicles tank.",
- "time": "40 m",
- "skills": [ [ "mechanics", 4 ] ],
- "requirements": { "qualities": [ { "id": "WRENCH_FINE", "level": 1 } ], "components": [ [ [ "well_pump", 1 ] ] ] }
+ "mending_methods": [
+ {
+ "id": "mend_fault_engine_pump_fuel_replace",
+ "name": "Replace faulty fuel pump",
+ "success_msg": "You replace the faulty fuel pump of the %s.",
+ "time": "40 m",
+ "skills": [ { "id": "mechanics", "level": 4 } ],
+ "requirements": { "qualities": [ { "id": "WRENCH_FINE", "level": 1 } ], "components": [ [ [ "well_pump", 1 ] ] ] }
+ }
+ ]
},
{
"id": "fault_engine_pump_water",
"type": "fault",
"name": "Faulty water pump",
"description": "Required to pump water to an external radiator or heatsink.",
- "time": "20 m",
- "skills": [ [ "mechanics", 4 ] ],
- "requirements": { "qualities": [ { "id": "WRENCH_FINE", "level": 1 } ], "components": [ [ [ "well_pump", 1 ] ] ] }
+ "mending_methods": [
+ {
+ "id": "mend_fault_engine_pump_water_replace",
+ "name": "Replace faulty water pump",
+ "success_msg": "You replace the faulty water pump of the %s.",
+ "time": "20 m",
+ "skills": [ { "id": "mechanics", "level": 4 } ],
+ "requirements": { "qualities": [ { "id": "WRENCH_FINE", "level": 1 } ], "components": [ [ [ "well_pump", 1 ] ] ] }
+ }
+ ]
},
{
"id": "fault_engine_starter",
"type": "fault",
"name": "Faulty starter motor",
"description": "Required to initially start the engine.",
- "time": "10 m",
- "skills": [ [ "mechanics", 3 ] ],
- "requirements": { "qualities": [ { "id": "WRENCH_FINE", "level": 1 } ], "components": [ [ [ "motor_small", 1 ] ] ] }
+ "mending_methods": [
+ {
+ "id": "mend_fault_engine_starter_replace",
+ "name": "Replace faulty starter motor",
+ "success_msg": "You replace the faulty starter motor of %s.",
+ "time": "10 m",
+ "skills": [ { "id": "mechanics", "level": 3 } ],
+ "requirements": { "qualities": [ { "id": "WRENCH_FINE", "level": 1 } ], "components": [ [ [ "motor_small", 1 ] ] ] }
+ }
+ ]
}
]
diff --git a/data/json/vehicleparts/lights.json b/data/json/vehicleparts/lights.json
index 02ca0c611f32b..8826fef8febc5 100644
--- a/data/json/vehicleparts/lights.json
+++ b/data/json/vehicleparts/lights.json
@@ -87,7 +87,7 @@
"item": "directed_floodlight",
"copy-from": "floodlight",
"looks_like": "floodlight",
- "description": "A very bright, directed light that illuminates a half-circular area outside the vehicle when turned on. During installation, you can choose what direction to point the light.",
+ "description": "A very bright, directed light that illuminates a half-circular area outside the vehicle when turned on. During installation, you can choose what direction to point the light.",
"//": "8000lm 100W LED floodlight",
"epower": -100,
"flags": [ "HALF_CIRCLE_LIGHT", "FOLDABLE", "ENABLED_DRAINS_EPOWER" ]
diff --git a/data/json/vehicleparts/motor.json b/data/json/vehicleparts/motor.json
index 43241c2862028..e86676d60ef6f 100644
--- a/data/json/vehicleparts/motor.json
+++ b/data/json/vehicleparts/motor.json
@@ -23,15 +23,11 @@
"looks_like": "motor_small",
"difficulty": 1,
"durability": 80,
- "power": 750,
- "energy_consumption": 854,
+ "power": 800,
+ "energy_consumption": 1000,
"damage_modifier": 80,
"folded_volume": 1,
- "breaks_into": [
- { "item": "plastic_chunk", "count": [ 1, 2 ] },
- { "item": "scrap", "count": [ 1, 2 ] },
- { "item": "cable", "charges": [ 1, 3 ] }
- ],
+ "breaks_into": [ { "item": "scrap", "count": [ 1, 4 ] }, { "item": "cable", "charges": [ 1, 3 ] } ],
"extend": { "flags": [ "TOOL_SCREWDRIVER", "FOLDABLE" ] },
"delete": { "flags": [ "TOOL_WRENCH" ] }
},
@@ -43,14 +39,13 @@
"item": "motor_small",
"difficulty": 1,
"durability": 120,
- "power": 7460,
- "energy_consumption": 8500,
+ "power": 7040,
+ "energy_consumption": 8000,
"damage_modifier": 80,
"folded_volume": 1,
"breaks_into": [
- { "item": "steel_lump", "count": [ 1, 2 ] },
- { "item": "steel_chunk", "count": [ 1, 2 ] },
- { "item": "scrap", "count": [ 1, 2 ] },
+ { "item": "scrap", "count": [ 1, 4 ] },
+ { "item": "steel_chunk", "count": [ 1, 3 ] },
{ "item": "cable", "charges": [ 3, 6 ] }
],
"extend": { "flags": [ "TOOL_SCREWDRIVER", "FOLDABLE" ] },
@@ -65,15 +60,17 @@
"item": "motor",
"difficulty": 2,
"durability": 200,
- "power": 37300,
- "energy_consumption": 41500,
+ "power": 36000,
+ "energy_consumption": 40000,
"damage_modifier": 80,
"folded_volume": 6,
"breaks_into": [
- { "item": "steel_lump", "count": [ 3, 5 ] },
- { "item": "steel_chunk", "count": [ 3, 5 ] },
- { "item": "scrap", "count": [ 3, 5 ] },
- { "item": "cable", "charges": [ 10, 15 ] }
+ { "item": "steel_lump", "count": [ 2, 4 ] },
+ { "item": "steel_chunk", "count": [ 2, 4 ] },
+ { "item": "scrap", "count": [ 2, 4 ] },
+ { "item": "e_scrap", "count": [ 1, 2 ] },
+ { "item": "bearing", "count": [ 5, 10 ] },
+ { "item": "cable", "charges": [ 10, 20 ] }
],
"damage_reduction": { "all": 32 }
},
@@ -85,14 +82,16 @@
"item": "motor_large",
"difficulty": 3,
"durability": 400,
- "power": 149200,
- "energy_consumption": 166000,
+ "power": 150000,
+ "energy_consumption": 163000,
"damage_modifier": 80,
"breaks_into": [
- { "item": "steel_lump", "count": [ 3, 5 ] },
+ { "item": "steel_lump", "count": [ 5, 10 ] },
{ "item": "steel_chunk", "count": [ 3, 5 ] },
{ "item": "scrap", "count": [ 3, 5 ] },
- { "item": "cable", "charges": [ 10, 15 ] }
+ { "item": "e_scrap", "count": [ 3, 5 ] },
+ { "item": "bearing", "count": [ 20, 40 ] },
+ { "item": "cable", "charges": [ 15, 30 ] }
],
"damage_reduction": { "all": 43 }
},
@@ -104,13 +103,15 @@
"item": "motor_enhanced",
"difficulty": 4,
"durability": 200,
- "power": 313300,
- "energy_consumption": 348500,
+ "power": 282000,
+ "energy_consumption": 300000,
"damage_modifier": 80,
"breaks_into": [
- { "item": "steel_lump", "count": [ 3, 5 ] },
+ { "item": "steel_lump", "count": [ 10, 15 ] },
{ "item": "steel_chunk", "count": [ 3, 5 ] },
{ "item": "scrap", "count": [ 3, 5 ] },
+ { "item": "e_scrap", "count": [ 5, 10 ] },
+ { "item": "bearing", "count": [ 20, 50 ] },
{ "item": "cable", "charges": [ 10, 15 ] }
],
"damage_reduction": { "all": 50 }
@@ -123,13 +124,15 @@
"item": "motor_super",
"difficulty": 5,
"durability": 400,
- "power": 400000,
- "energy_consumption": 444940,
+ "power": 475000,
+ "energy_consumption": 500000,
"damage_modifier": 80,
"breaks_into": [
- { "item": "steel_lump", "count": [ 6, 10 ] },
+ { "item": "steel_lump", "count": [ 15, 20 ] },
{ "item": "steel_chunk", "count": [ 6, 10 ] },
{ "item": "scrap", "count": [ 6, 10 ] },
+ { "item": "e_scrap", "count": [ 5, 15 ] },
+ { "item": "bearing", "count": [ 25, 60 ] },
{ "item": "cable", "charges": [ 20, 30 ] }
],
"damage_reduction": { "all": 60 }
diff --git a/data/json/vehicleparts/rams.json b/data/json/vehicleparts/rams.json
index 77cb7c640e7c7..24460e8a0dafb 100644
--- a/data/json/vehicleparts/rams.json
+++ b/data/json/vehicleparts/rams.json
@@ -141,7 +141,7 @@
"requirements": { "install": { "time": 30000, "using": [ [ "rope_natural_short", 2 ] ] } },
"damage_modifier": 50,
"durability": 40,
- "description": "A mattress, strapped onto the vehicle. It could serve to blunt any impact.",
+ "description": "A mattress, strapped onto the vehicle. It could serve to blunt any impact.",
"breaks_into": [ { "item": "rag", "count": [ 40, 55 ] } ],
"damage_reduction": { "bash": 20 },
"flags": [ "PROTRUSION", "OBSTACLE", "OPAQUE", "TOOL_NONE" ]
diff --git a/data/json/vehicleparts/vehicle_parts.json b/data/json/vehicleparts/vehicle_parts.json
index a97fe8adb7a9c..77c43718e7f76 100644
--- a/data/json/vehicleparts/vehicle_parts.json
+++ b/data/json/vehicleparts/vehicle_parts.json
@@ -110,6 +110,7 @@
"id": "seat",
"name": "seat",
"symbol": "#",
+ "looks_like": "reclining_seat",
"color": "red",
"broken_symbol": "*",
"broken_color": "red",
@@ -130,6 +131,7 @@
"type": "vehicle_part",
"id": "seat_leather",
"copy-from": "seat",
+ "looks_like": "seat",
"name": "leather seat",
"item": "seat_leather",
"breaks_into": "ig_vp_seat_leather"
@@ -139,6 +141,7 @@
"id": "reclining_seat",
"name": "reclining seat",
"symbol": "#",
+ "looks_like": "seat",
"color": "red",
"broken_symbol": "*",
"broken_color": "red",
@@ -158,6 +161,7 @@
{
"type": "vehicle_part",
"id": "reclining_seat_leather",
+ "looks_like": "seat_leather",
"copy-from": "reclining_seat",
"name": "reclining leather seat",
"item": "seat_leather",
@@ -168,6 +172,7 @@
"id": "yoke_harness",
"name": "yoke and harness",
"symbol": "H",
+ "looks_like": "frame_wood_cross",
"color": "brown",
"broken_symbol": "M",
"broken_color": "red",
@@ -209,6 +214,7 @@
"id": "cart_handle",
"name": "cart handle",
"symbol": "-",
+ "looks_like": "frame_wood_horizontal",
"color": "white",
"broken_symbol": "~",
"broken_color": "red",
@@ -268,6 +274,7 @@
"id": "saddle",
"name": "saddle",
"symbol": "#",
+ "looks_like": "seat",
"color": "red",
"broken_symbol": "*",
"broken_color": "red",
@@ -292,6 +299,7 @@
"id": "folding_seat",
"name": "foldable seat",
"symbol": "#",
+ "looks_like": "seat",
"color": "red",
"broken_symbol": "*",
"broken_color": "red",
@@ -314,6 +322,7 @@
"id": "bed",
"name": "bed",
"symbol": "#",
+ "looks_like": "f_bed",
"color": "magenta",
"broken_symbol": "*",
"broken_color": "magenta",
@@ -357,6 +366,7 @@
"id": "frame_wood_handle",
"name": "wooden handle",
"symbol": "^",
+ "looks_like": "frame_wood_cover",
"color": "light_red",
"broken_symbol": "#",
"broken_color": "brown",
@@ -374,6 +384,7 @@
"id": "frame_wood_light_handle",
"name": "light wooden handle",
"symbol": "^",
+ "looks_like": "frame_wood_light_cover",
"color": "light_red",
"broken_symbol": "#",
"broken_color": "brown",
@@ -393,6 +404,7 @@
"id": "aisle_horizontal",
"name": "aisle",
"symbol": "=",
+ "looks_like": "t_metal_floor",
"color": "white",
"broken_symbol": "#",
"broken_color": "light_gray",
@@ -410,6 +422,7 @@
"id": "aisle_vertical",
"name": "aisle",
"symbol": "H",
+ "looks_like": "aisle_horizontal",
"color": "white",
"broken_symbol": "#",
"broken_color": "light_gray",
@@ -427,6 +440,7 @@
"id": "wooden_aisle_horizontal",
"name": "wooden aisle",
"symbol": "=",
+ "looks_like": "t_floor",
"color": "brown",
"broken_symbol": "#",
"broken_color": "brown",
@@ -444,6 +458,7 @@
"id": "wooden_aisle_vertical",
"name": "wooden aisle",
"symbol": "H",
+ "looks_like": "wooden_aisle_horizontal",
"color": "brown",
"broken_symbol": "#",
"broken_color": "brown",
@@ -461,6 +476,7 @@
"id": "trunk_floor",
"name": "floor trunk",
"symbol": "=",
+ "looks_like": "t_carpet_red",
"color": "white",
"broken_symbol": "#",
"broken_color": "light_gray",
@@ -534,6 +550,7 @@
"id": "door",
"name": "door",
"symbol": "+",
+ "looks_like": "t_door_metal_c",
"color": "cyan",
"broken_symbol": "&",
"broken_color": "cyan",
@@ -553,6 +570,7 @@
"id": "door_opaque",
"name": "opaque door",
"symbol": "+",
+ "looks_like": "door",
"color": "cyan",
"broken_symbol": "&",
"broken_color": "cyan",
@@ -612,6 +630,7 @@
"id": "door_internal",
"name": "internal door",
"symbol": "+",
+ "looks_like": "door",
"color": "cyan",
"broken_symbol": "&",
"broken_color": "cyan",
@@ -630,6 +649,7 @@
"id": "hatch",
"name": "hatch",
"symbol": "+",
+ "looks_like": "door",
"color": "light_gray",
"broken_symbol": "&",
"broken_color": "light_gray",
@@ -649,6 +669,7 @@
"id": "hatch_opaque",
"name": "opaque hatch",
"symbol": "+",
+ "looks_like": "door_opaque",
"color": "light_gray",
"broken_symbol": "&",
"broken_color": "light_gray",
@@ -708,6 +729,7 @@
"id": "windshield",
"name": "windshield",
"symbol": "\"",
+ "looks_like": "t_wall_glass",
"color": "light_cyan",
"broken_symbol": "0",
"broken_color": "light_gray",
@@ -776,6 +798,38 @@
"breaks_into": [ { "item": "steel_chunk", "count": [ 1, 2 ] } ],
"damage_reduction": { "all": 12 }
},
+ {
+ "type": "vehicle_part",
+ "id": "programmable_autopilot",
+ "name": "programmable autopilot",
+ "symbol": "A",
+ "color": "light_blue",
+ "broken_symbol": "#",
+ "broken_color": "red",
+ "damage_modifier": 80,
+ "durability": 100,
+ "description": "A computer system hooked up to the steering and engine of the vehicle to allow it to follow simple paths.",
+ "item": "programmable_autopilot",
+ "difficulty": 5,
+ "looks_like": "cam_control",
+ "epower": -15,
+ "flags": [ "ENABLED_DRAINS_EPOWER", "AUTOPILOT" ],
+ "requirements": {
+ "install": {
+ "time": 35000,
+ "skills": [ [ "mechanics", 5 ], [ "electronics", 5 ], [ "computer", 5 ] ],
+ "qualities": [ { "id": "SCREW", "level": 1 } ]
+ },
+ "repair": { "skills": [ [ "mechanics", 3 ] ], "time": 8000, "using": [ [ "adhesive", 1 ] ] },
+ "removal": { "skills": [ [ "mechanics", 3 ] ], "qualities": [ { "id": "SCREW", "level": 1 } ] }
+ },
+ "breaks_into": [
+ { "item": "steel_lump", "prob": 50 },
+ { "item": "steel_chunk", "count": [ 1, 2 ] },
+ { "item": "scrap", "count": [ 0, 3 ] }
+ ],
+ "damage_reduction": { "all": 8 }
+ },
{
"type": "vehicle_part",
"id": "storage_battery_mount",
@@ -852,6 +906,7 @@
"id": "minifridge",
"name": "minifridge",
"symbol": "H",
+ "looks_like": "f_fridge",
"color": "light_blue",
"broken_symbol": "#",
"broken_color": "light_blue",
@@ -905,6 +960,7 @@
"id": "washing_machine",
"name": "washing machine",
"symbol": "H",
+ "looks_like": "f_washer",
"color": "light_blue",
"broken_symbol": "#",
"broken_color": "light_blue",
@@ -935,7 +991,7 @@
"broken_color": "light_blue",
"damage_modifier": 80,
"durability": 100,
- "description": "A small dishwasher. With detergent, water, and some electrical power, you could clean your dishes... Or something more useful like a CBM dripping with zombie gore. 'e'xamine the tile with the dishwasher to use it.",
+ "description": "A small dishwasher. With detergent, water, and some electrical power, you could clean your dishes… Or something more useful like a CBM dripping with zombie gore. 'e'xamine the tile with the dishwasher to use it.",
"epower": -400,
"size": 160,
"item": "dishwasher",
@@ -955,6 +1011,7 @@
"id": "autoclave",
"name": "autoclave",
"symbol": "A",
+ "looks_like": "dishwasher",
"color": "yellow",
"broken_symbol": "#",
"broken_color": "light_blue",
@@ -979,6 +1036,7 @@
"id": "trunk",
"name": "trunk",
"symbol": "H",
+ "looks_like": "f_locker",
"color": "brown",
"broken_symbol": "#",
"broken_color": "brown",
@@ -997,6 +1055,7 @@
"id": "box",
"name": "box",
"symbol": "o",
+ "looks_like": "f_crate_o",
"color": "brown",
"broken_symbol": "#",
"broken_color": "brown",
@@ -1015,6 +1074,7 @@
"id": "travois",
"name": "travois",
"symbol": "o",
+ "looks_like": "frame_wood_light_cross",
"color": "brown",
"broken_symbol": "#",
"broken_color": "brown",
@@ -1037,6 +1097,7 @@
"id": "wood box",
"name": "wood box",
"symbol": "o",
+ "looks_like": "f_crate_o",
"color": "brown",
"broken_symbol": "#",
"broken_color": "brown",
@@ -1055,6 +1116,7 @@
"id": "folding wood box",
"name": "folding wood box",
"symbol": "o",
+ "looks_like": "wood box",
"color": "brown",
"broken_symbol": "#",
"broken_color": "brown",
@@ -1092,6 +1154,7 @@
"id": "basketsm",
"name": "wire bike basket",
"symbol": "o",
+ "looks_like": "basketlg",
"color": "brown",
"broken_symbol": "#",
"broken_color": "brown",
@@ -1115,6 +1178,7 @@
"id": "basketlg",
"name": "shopping cart basket",
"symbol": "o",
+ "looks_like": "basketsm",
"color": "brown",
"broken_symbol": "#",
"broken_color": "brown",
@@ -1137,6 +1201,7 @@
"id": "basketlg_folding",
"name": "folding shopping cart basket",
"symbol": "o",
+ "looks_like": "basketlg",
"color": "brown",
"broken_symbol": "#",
"broken_color": "brown",
@@ -1160,6 +1225,7 @@
"id": "veh_table",
"name": "table",
"symbol": "#",
+ "looks_like": "f_table",
"color": "red",
"broken_symbol": "#",
"broken_color": "light_gray",
@@ -1183,6 +1249,7 @@
"id": "veh_table_wood",
"name": "wood table",
"symbol": "#",
+ "looks_like": "f_table",
"color": "red",
"broken_symbol": "#",
"broken_color": "light_gray",
@@ -1206,10 +1273,10 @@
"id": "workbench",
"name": "workbench",
"symbol": "#",
+ "looks_like": "veh_table_wood",
"color": "red",
"broken_symbol": "#",
"broken_color": "light_gray",
- "looks_like": "veh_table_wood",
"damage_modifier": 60,
"durability": 300,
"size": 120,
@@ -1233,6 +1300,7 @@
"name": "wooden boat hull",
"description": "A wooden board that keeps the water out of your boat.",
"symbol": "o",
+ "looks_like": "t_wall_log",
"color": "brown",
"broken_symbol": "x",
"broken_color": "light_gray",
@@ -1307,6 +1375,7 @@
"id": "inflatable_section",
"name": "inflatable section",
"symbol": "O",
+ "looks_like": "inflatable_airbag",
"color": "green",
"size": 60,
"broken_symbol": "#",
@@ -1370,7 +1439,7 @@
"STABLE",
"UNMOUNT_ON_DAMAGE"
],
- "breaks_into": [ { "item": "splinter", "count": [ 10, 20 ] }, { "item": "rag", "count": [ 5, 10 ] } ]
+ "breaks_into": [ { "item": "splinter", "count": [ 2, 4 ] }, { "item": "rag", "count": [ 5, 10 ] } ]
},
{
"type": "vehicle_part",
@@ -1630,6 +1699,7 @@
"id": "v_curtain",
"name": "curtain",
"symbol": "\"",
+ "looks_like": "t_door_curtain_c",
"color": "dark_gray",
"broken_symbol": "0",
"broken_color": "light_gray",
@@ -1652,6 +1722,7 @@
"id": "aisle_curtain",
"name": "aisle curtain",
"symbol": "\"",
+ "looks_like": "v_curtain",
"color": "dark_gray",
"broken_symbol": "0",
"broken_color": "light_gray",
@@ -1703,6 +1774,7 @@
"id": "xl_water_wheel",
"name": "large water wheel",
"symbol": "o",
+ "looks_like": "water_wheel",
"color": "yellow",
"broken_symbol": "x",
"broken_color": "yellow",
@@ -1737,7 +1809,17 @@
"item": "solar_panel",
"difficulty": 4,
"location": "on_roof",
- "flags": [ "SOLAR_PANEL", "TOOL_WRENCH", "NO_REPAIR" ],
+ "flags": [ "SOLAR_PANEL" ],
+ "requirements": {
+ "install": { "time": 360000, "skills": [ [ "mechanics", 4 ] ], "qualities": [ { "id": "WRENCH", "level": 2 } ] },
+ "repair": {
+ "skills": [ [ "electronics", 6 ] ],
+ "time": 300000,
+ "qualities": [ { "id": "SCREW", "level": 1 } ],
+ "using": [ [ "solar_panel", 1 ], [ "soldering_standard", 8 ] ]
+ },
+ "removal": { "time": 180000, "skills": [ [ "mechanics", 2 ] ], "qualities": [ { "id": "WRENCH", "level": 2 } ] }
+ },
"breaks_into": [
{ "item": "steel_lump", "count": [ 2, 4 ] },
{ "item": "steel_chunk", "count": [ 2, 4 ] },
@@ -1777,12 +1859,13 @@
"id": "xl_wind_turbine",
"name": "large wind turbine",
"symbol": "Y",
+ "looks_like": "wind_turbine",
"color": "yellow",
"broken_symbol": "X",
"broken_color": "yellow",
"damage_modifier": 10,
"durability": 70,
- "description": "A large wind turbine with stabilizing legs. Will recharge the vehicle's electrical power when exposed to the wind. Will cause extra drag on the vehicle.",
+ "description": "A large wind turbine with stabilizing legs. Will recharge the vehicle's electrical power when exposed to the wind. Will cause extra drag on the vehicle.",
"epower": 30,
"item": "xl_wind_turbine",
"location": "on_roof",
@@ -1804,6 +1887,7 @@
"type": "vehicle_part",
"id": "reinforced_solar_panel",
"copy-from": "solar_panel",
+ "looks_like": "solar_panel",
"name": "reinforced solar panel",
"color": "light_blue",
"broken_color": "light_gray",
@@ -1812,6 +1896,7 @@
"durability": 300,
"description": "A solar panel. Will slowly recharge the vehicle's electrical power when exposed to the sun. Clouds will slow the recharge speed even more. Reinforced with armored glass to make it more resistant to damage.",
"item": "reinforced_solar_panel",
+ "requirements": { "repair": { "using": [ [ "welding_standard", 1 ] ] } },
"breaks_into": [
{ "item": "steel_lump", "count": [ 4, 7 ] },
{ "item": "steel_chunk", "count": [ 4, 7 ] },
@@ -1823,12 +1908,30 @@
{
"type": "vehicle_part",
"id": "solar_panel_v2",
- "copy-from": "solar_panel",
"name": "upgraded solar panel",
- "proportional": { "epower": 2.0 },
+ "symbol": "#",
+ "looks_like": "solar_panel",
+ "color": "yellow",
+ "broken_symbol": "x",
+ "broken_color": "yellow",
+ "damage_modifier": 10,
+ "durability": 20,
"description": "A high performance solar panel. Will slowly recharge the vehicle's electrical power when exposed to the sun. Clouds will slow the recharge speed even more.",
+ "epower": 100,
"difficulty": 6,
"item": "solar_panel_v2",
+ "location": "on_roof",
+ "flags": [ "SOLAR_PANEL" ],
+ "requirements": {
+ "install": { "time": 360000, "skills": [ [ "mechanics", 6 ] ], "qualities": [ { "id": "WRENCH", "level": 2 } ] },
+ "repair": {
+ "skills": [ [ "electronics", 8 ] ],
+ "time": 450000,
+ "qualities": [ { "id": "SCREW", "level": 1 } ],
+ "using": [ [ "solar_panel_v2", 1 ], [ "soldering_standard", 16 ] ]
+ },
+ "removal": { "time": 180000, "skills": [ [ "mechanics", 4 ] ], "qualities": [ { "id": "WRENCH", "level": 2 } ] }
+ },
"breaks_into": [
{ "item": "steel_lump", "count": [ 2, 4 ] },
{ "item": "steel_chunk", "count": [ 2, 4 ] },
@@ -1840,6 +1943,7 @@
"type": "vehicle_part",
"id": "reinforced_solar_panel_v2",
"copy-from": "solar_panel_v2",
+ "looks_like": "reinforced_solar_panel",
"name": "upgraded reinforced solar panel",
"color": "light_blue",
"broken_color": "light_gray",
@@ -1849,6 +1953,7 @@
"description": "A high performance solar panel. Will slowly recharge the vehicle's electrical power when exposed to the sun. Clouds will slow the recharge speed even more. Reinforced with armored glass to make it more resistant to damage.",
"difficulty": 6,
"item": "reinforced_solar_panel_v2",
+ "requirements": { "repair": { "using": [ [ "welding_standard", 1 ] ] } },
"breaks_into": [
{ "item": "steel_lump", "count": [ 4, 7 ] },
{ "item": "steel_chunk", "count": [ 4, 7 ] },
@@ -1860,14 +1965,20 @@
{
"type": "vehicle_part",
"id": "solar_panel_v3",
- "copy-from": "solar_panel",
"name": "quantum solar panel",
- "proportional": { "epower": 6.0 },
+ "symbol": "#",
+ "looks_like": "solar_panel_v2",
+ "color": "yellow",
+ "broken_symbol": "x",
+ "broken_color": "light_gray",
+ "damage_modifier": 10,
+ "epower": 300,
"item": "solar_panel_v3",
"durability": 40,
+ "location": "on_roof",
"description": "An extremely high performance solar panel. Will recharge the vehicle's electrical power when exposed to the sun. Clouds will slow the recharge speed. Extremely fragile and cannot be armored.",
"difficulty": 8,
- "broken_color": "light_gray",
+ "flags": [ "SOLAR_PANEL", "NO_REPAIR", "TOOL_WRENCH" ],
"breaks_into": [
{ "item": "steel_lump", "count": [ 4, 4 ] },
{ "item": "steel_chunk", "count": [ 4, 4 ] },
@@ -1880,6 +1991,7 @@
"id": "water_faucet",
"name": "water faucet",
"symbol": "u",
+ "looks_like": "f_sink",
"color": "light_gray",
"broken_symbol": "-",
"broken_color": "light_gray",
@@ -1923,6 +2035,7 @@
"id": "kitchen_unit",
"name": "kitchen unit",
"symbol": "&",
+ "looks_like": "f_oven",
"color": "light_cyan",
"broken_symbol": "x",
"broken_color": "light_cyan",
@@ -1972,6 +2085,7 @@
"id": "craft_rig",
"name": "FOODCO kitchen buddy",
"symbol": "&",
+ "looks_like": "f_sink",
"color": "light_green",
"broken_symbol": "x",
"broken_color": "light_gray",
@@ -2002,6 +2116,7 @@
"id": "chemlab",
"name": "onboard chemistry lab",
"symbol": "&",
+ "looks_like": "f_workbench",
"color": "yellow",
"broken_symbol": "x",
"broken_color": "light_gray",
@@ -2027,6 +2142,7 @@
"id": "veh_forge",
"name": "mounted electric forge",
"symbol": "&",
+ "looks_like": "f_forge_rock",
"color": "red",
"broken_symbol": "x",
"broken_color": "light_gray",
@@ -2050,6 +2166,7 @@
"id": "veh_kiln",
"name": "mounted electric kiln",
"symbol": "&",
+ "looks_like": "f_kiln_empty",
"color": "red",
"broken_symbol": "x",
"broken_color": "light_gray",
@@ -2189,6 +2306,7 @@
"id": "reinforced_windshield",
"name": "reinforced windshield",
"symbol": "\"",
+ "looks_like": "windshield",
"color": "light_blue",
"broken_symbol": "0",
"broken_color": "light_gray",
@@ -2293,6 +2411,7 @@
"id": "door_trunk",
"name": "trunk door",
"symbol": "+",
+ "looks_like": "hatch",
"color": "light_gray",
"broken_symbol": "&",
"broken_color": "light_gray",
@@ -2329,6 +2448,7 @@
"type": "vehicle_part",
"id": "door_shutter",
"name": "shutter door",
+ "looks_like": "hatch",
"symbol": "+",
"color": "white",
"broken_symbol": "&",
@@ -2348,6 +2468,7 @@
"id": "door_sliding",
"name": "sliding door",
"symbol": "+",
+ "looks_like": "door",
"color": "light_cyan",
"broken_symbol": "&",
"broken_color": "light_cyan",
@@ -2366,6 +2487,7 @@
"id": "cargo_space",
"name": "cargo space",
"symbol": "=",
+ "looks_like": "box",
"color": "light_gray",
"broken_symbol": "#",
"broken_color": "dark_gray",
@@ -2409,6 +2531,7 @@
"type": "vehicle_part",
"id": "animal_compartment",
"copy-from": "livestock_stall",
+ "looks_like": "livestock_stall",
"name": "animal compartment",
"durability": 125,
"description": "A large locker for transporting smaller animals. 'e'xamine it to capture an animal next to you, or to release the animal currently contained. When selecting an animal to capture, choose its tile relative to you, not the part.",
@@ -2586,6 +2709,7 @@
"type": "vehicle_part",
"id": "seat_wood",
"name": "wooden seat",
+ "looks_like": "seat",
"symbol": "#",
"color": "brown",
"broken_symbol": "*",
@@ -2623,6 +2747,7 @@
"id": "door_wood",
"name": "wooden door",
"symbol": "+",
+ "looks_like": "t_door_c",
"color": "brown",
"broken_symbol": "&",
"broken_color": "brown",
@@ -2641,6 +2766,7 @@
"id": "door_wood_opaque",
"name": "opaque wooden door",
"symbol": "+",
+ "looks_like": "door_wood",
"color": "brown",
"broken_symbol": "&",
"broken_color": "brown",
@@ -2822,6 +2948,7 @@
"id": "leather_funnel",
"name": "leather funnel",
"symbol": "V",
+ "looks_like": "funnel",
"color": "brown",
"broken_symbol": "*",
"broken_color": "light_gray",
@@ -2841,6 +2968,7 @@
"id": "birchbark_funnel",
"name": "birchbark funnel",
"symbol": "V",
+ "looks_like": "funnel",
"color": "white",
"broken_symbol": "*",
"broken_color": "light_gray",
@@ -2860,6 +2988,7 @@
"id": "makeshift_funnel",
"name": "makeshift funnel",
"symbol": "V",
+ "looks_like": "funnel",
"color": "yellow",
"broken_symbol": "*",
"broken_color": "light_gray",
@@ -2897,6 +3026,7 @@
"id": "metal_funnel",
"name": "metal funnel",
"symbol": "V",
+ "looks_like": "funnel",
"color": "light_gray",
"broken_symbol": "*",
"broken_color": "light_gray",
@@ -3100,5 +3230,31 @@
"flags": [ "TURRET_MOUNT" ],
"breaks_into": [ { "item": "scrap", "count": [ 1, 4 ] } ],
"damage_reduction": { "all": 54 }
+ },
+ {
+ "type": "vehicle_part",
+ "id": "controls_turret",
+ "name": "turret control unit",
+ "symbol": "$",
+ "color": "yellow",
+ "broken_symbol": "$",
+ "broken_color": "red",
+ "damage_modifier": 10,
+ "durability": 50,
+ "epower": -250,
+ "item": "turret_controls",
+ "description": "A set of motor, camera, and an AI unit which allows for tracking targets, friend-or-foe identification, and firing the connected turret in full automatic mode. When installed over the turret, it will enable auto targeting mode for said turret.",
+ "folded_volume": 3,
+ "flags": [ "ENABLED_DRAINS_EPOWER", "TURRET_CONTROLS", "UNMOUNT_ON_DAMAGE" ],
+ "requirements": {
+ "install": {
+ "time": 120000,
+ "skills": [ [ "mechanics", 3 ], [ "electronics", 3 ] ],
+ "qualities": [ { "id": "SCREW", "level": 1 } ]
+ },
+ "repair": { "skills": [ [ "mechanics", 2 ] ], "time": 8000, "using": [ [ "adhesive", 1 ] ] },
+ "removal": { "skills": [ [ "mechanics", 3 ] ], "qualities": [ { "id": "SCREW", "level": 1 } ] }
+ },
+ "breaks_into": "ig_vp_device"
}
]
diff --git a/data/json/vehicleparts/wheel.json b/data/json/vehicleparts/wheel.json
index aa46a77fd4159..ca88b3608cbad 100644
--- a/data/json/vehicleparts/wheel.json
+++ b/data/json/vehicleparts/wheel.json
@@ -131,6 +131,20 @@
"name": "rail wheel (steerable)",
"extend": { "flags": [ "STEERABLE" ] }
},
+ {
+ "id": "rail_wheel_small_pair",
+ "type": "vehicle_part",
+ "name": "pair of small rail wheels",
+ "item": "wheel_rail_small_pair",
+ "copy-from": "rail_wheel",
+ "symbol": "=",
+ "difficulty": 2,
+ "durability": 150,
+ "description": "A pair of small rail wheels. It performs well when riding on a pair of small rails. It performs terribly when not on a rail. Moreover, you can't steer it.",
+ "damage_modifier": 50,
+ "breaks_into": [ { "item": "scrap", "count": [ 2, 3 ] }, { "item": "steel_chunk", "count": [ 1, 2 ] } ],
+ "damage_reduction": { "all": 60 }
+ },
{
"id": "roller_drum",
"type": "vehicle_part",
@@ -199,6 +213,7 @@
"name": "armored wheel",
"item": "wheel_armor",
"location": "under",
+ "looks_like": "wheel",
"symbol": "0",
"broken_symbol": "x",
"color": "green",
@@ -227,6 +242,7 @@
"name": "wheelbarrow wheel",
"item": "wheel_barrow",
"location": "under",
+ "looks_like": "wheel_bicycle",
"symbol": "o",
"broken_symbol": "x",
"color": "dark_gray",
@@ -314,6 +330,7 @@
"name": "motorbike wheel",
"item": "wheel_motorbike",
"location": "under",
+ "looks_like": "wheel",
"symbol": "o",
"broken_symbol": "x",
"color": "dark_gray",
@@ -400,6 +417,7 @@
"name": "unicycle wheel",
"item": "wheel_bicycle",
"location": "under",
+ "looks_like": "wheel_bicycle",
"symbol": "|",
"broken_symbol": "x",
"color": "dark_gray",
@@ -429,6 +447,7 @@
"name": "wheelchair wheel",
"item": "wheel_wheelchair",
"location": "under",
+ "looks_like": "wheel_bicycle",
"symbol": "|",
"broken_symbol": "x",
"color": "dark_gray",
@@ -458,6 +477,7 @@
"name": "wide wheel",
"item": "wheel_wide",
"location": "under",
+ "looks_like": "wheel",
"symbol": "O",
"broken_symbol": "x",
"color": "dark_gray",
diff --git a/data/json/vehicles/cars.json b/data/json/vehicles/cars.json
index 2b345c335acbe..09a7c579454bb 100644
--- a/data/json/vehicles/cars.json
+++ b/data/json/vehicles/cars.json
@@ -44,7 +44,8 @@
{ "x": -1, "y": 2, "parts": [ "frame_vertical", "halfboard_vertical" ] },
{ "x": -2, "y": -1, "parts": [ "frame_vertical", "halfboard_vertical" ] },
{ "x": -2, "y": -1, "parts": [ "wheel_mount_medium", "wheel_wide_or" ] },
- { "x": -2, "y": 0, "parts": [ "frame_vertical", "trunk", "tank", "roof" ] },
+ { "x": -2, "y": 0, "parts": [ "frame_vertical", "trunk", "roof" ] },
+ { "x": -2, "y": 0, "part": "tank", "fuel": "gasoline" },
{ "x": -2, "y": 1, "parts": [ "frame_vertical", "trunk", "roof" ] },
{ "x": -2, "y": 2, "parts": [ "frame_vertical", "halfboard_vertical" ] },
{ "x": -2, "y": 2, "parts": [ "wheel_mount_medium", "wheel_wide_or" ] },
diff --git a/data/json/vehicles/trains.json b/data/json/vehicles/trains.json
index 532fd293e2279..21dcea76870b3 100644
--- a/data/json/vehicles/trains.json
+++ b/data/json/vehicles/trains.json
@@ -238,5 +238,16 @@
{ "x": 1, "y": 0, "parts": [ "headlight", "battery_motorbike" ] },
{ "x": -1, "y": 0, "parts": [ "muffler", "box" ] }
]
+ },
+ {
+ "id": "miniature_train_loco",
+ "type": "vehicle",
+ "name": "Miniature Train Locomotive",
+ "blueprint": [ "oo" ],
+ "parts": [
+ { "x": 1, "y": 0, "parts": [ "frame_vertical_2", "engine_steam_small", "rail_wheel_small_pair" ] },
+ { "x": 0, "y": 0, "parts": [ "frame_vertical_2", "seat", "rail_wheel_small_pair", "controls" ] },
+ { "x": 0, "y": 0, "parts": [ { "part": "fuel_bunker", "fuel": "coal_lump" } ] }
+ ]
}
]
diff --git a/data/json/vitamin.json b/data/json/vitamin.json
index e00b3a6dba3e5..1dddbdbc9a61b 100644
--- a/data/json/vitamin.json
+++ b/data/json/vitamin.json
@@ -47,5 +47,15 @@
"min": -5600,
"rate": "15 m",
"disease": [ [ -2800, -3600, 1 ], [ -3601, -4400, 2 ], [ -4401, -5600, 3 ] ]
+ },
+ {
+ "id": "mutant_toxin",
+ "type": "vitamin",
+ "name": "Toxins",
+ "excess": "toxin_buildup",
+ "min": 0,
+ "max": 1800,
+ "rate": "15 m",
+ "disease_excess": [ [ 500, 949 ], [ 950, 1399 ], [ 1400, 1800 ] ]
}
]
diff --git a/data/mods/Aftershock/items/afs__items.json b/data/mods/Aftershock/items/afs__items.json
index 714e35188b7ad..aa09250e326d5 100644
--- a/data/mods/Aftershock/items/afs__items.json
+++ b/data/mods/Aftershock/items/afs__items.json
@@ -13,6 +13,7 @@
"name": "basin",
"description": "A wide, shallow basin used to hold liquid, hammered from a piece of sheet metal. Ideal for collecting water.",
"weight": 5000,
+ "looks_like": "ceramic_bowl",
"volume": 10,
"price": 1000,
"to_hit": -1,
@@ -63,6 +64,7 @@
"description": "A piece of light titanium, usable for crafting or repairs.",
"price": 1000,
"material": "titanium",
+ "looks_like": "scrap",
"weight": 100,
"volume": 1,
"bashing": 1,
@@ -78,6 +80,7 @@
"color": "white",
"symbol": "]",
"material": [ "titanium" ],
+ "looks_like": "xlframe",
"techniques": [ "DEF_DISARM" ],
"volume": 30,
"bashing": 15,
@@ -113,6 +116,7 @@
"type": "GENERIC",
"name": "nuclear waste",
"description": "A small pellet of silvery metal, still warm to the touch.",
+ "looks_like": "medium_atomic_battery_cell",
"weight": 30,
"volume": 1,
"price": 0,
diff --git a/data/mods/Aftershock/items/afs_armor.json b/data/mods/Aftershock/items/afs_armor.json
index 5829dc2494f38..7fc289ff2f917 100644
--- a/data/mods/Aftershock/items/afs_armor.json
+++ b/data/mods/Aftershock/items/afs_armor.json
@@ -14,13 +14,13 @@
"symbol": "[",
"color": "cyan",
"covers": [ "TORSO" ],
+ "looks_like": "molle_pack",
"coverage": 30,
"encumbrance": 10,
"storage": 400,
"warmth": 5,
"material_thickness": 2,
- "flags": [ "BELTED", "ONLY_ONE", "LEAK_DAM" ],
- "looks_like": "portal"
+ "flags": [ "BELTED", "ONLY_ONE", "LEAK_DAM" ]
},
{
"id": "afs_boot_quiver",
@@ -33,6 +33,7 @@
"bashing": 4,
"material": [ "leather" ],
"symbol": "[",
+ "looks_like": "quiver",
"color": "dark_gray",
"covers": [ "TORSO" ],
"coverage": 20,
@@ -195,6 +196,7 @@
"to_hit": -3,
"material": [ "leather", "steel" ],
"symbol": "[",
+ "looks_like": "armor_blarmor",
"color": "brown",
"covers": [ "TORSO" ],
"coverage": 100,
@@ -214,6 +216,7 @@
"to_hit": -3,
"material": [ "cotton", "steel" ],
"symbol": "[",
+ "looks_like": "armor_blarmor",
"color": "white",
"covers": [ "TORSO" ],
"coverage": 95,
@@ -233,6 +236,7 @@
"to_hit": -3,
"material": [ "titanium", "cotton" ],
"symbol": "[",
+ "looks_like": "armor_scrapsuit",
"color": "white",
"covers": [ "TORSO" ],
"coverage": 80,
@@ -253,6 +257,7 @@
"bashing": 6,
"material": [ "kevlar", "titanium" ],
"symbol": "[",
+ "looks_like": "kevlar",
"color": "light_gray",
"covers": [ "TORSO" ],
"coverage": 85,
diff --git a/data/mods/Aftershock/items/afs_books.json b/data/mods/Aftershock/items/afs_books.json
index d2abc20fc7091..883b3901209d9 100644
--- a/data/mods/Aftershock/items/afs_books.json
+++ b/data/mods/Aftershock/items/afs_books.json
@@ -9,6 +9,7 @@
"volume": 3,
"price": 5000,
"price_postapoc": 1000,
+ "looks_like": "ZSG",
"material": [ "paper" ],
"symbol": "?",
"color": "light_blue",
@@ -27,6 +28,7 @@
"price": 3000,
"material": [ "paper" ],
"symbol": "?",
+ "looks_like": "manual_shotgun",
"color": "green",
"skill": "shotgun",
"required_level": 2,
@@ -45,6 +47,7 @@
"price": 3000,
"material": [ "paper" ],
"symbol": "?",
+ "looks_like": "manual_shotgun",
"color": "green",
"skill": "pistol",
"required_level": 2,
@@ -63,6 +66,7 @@
"price": 3000,
"material": [ "paper" ],
"symbol": "?",
+ "looks_like": "manual_shotgun",
"color": "green",
"skill": "rifle",
"required_level": 2,
@@ -81,6 +85,7 @@
"price": 2000,
"material": [ "paper" ],
"symbol": "?",
+ "looks_like": "manual_shotgun",
"color": "green",
"skill": "launcher",
"required_level": 2,
@@ -100,6 +105,7 @@
"bashing": 8,
"material": [ "paper" ],
"symbol": "?",
+ "looks_like": "adv_chemistry",
"color": "light_green",
"skill": "electronics",
"required_level": 5,
diff --git a/data/mods/Aftershock/items/afs_tools.json b/data/mods/Aftershock/items/afs_tools.json
index 32afc9d57ed04..eb71696c73a95 100644
--- a/data/mods/Aftershock/items/afs_tools.json
+++ b/data/mods/Aftershock/items/afs_tools.json
@@ -88,6 +88,7 @@
"cutting": 3,
"material": [ "steel", "plastic", "diamond" ],
"symbol": "/",
+ "looks_like": "circsaw_off",
"color": "light_red",
"ammo": "gasoline",
"max_charges": 500,
@@ -124,6 +125,7 @@
"cutting": 3,
"material": [ "steel", "plastic", "diamond" ],
"symbol": "/",
+ "looks_like": "circsaw_off",
"color": "yellow",
"ammo": "gasoline",
"max_charges": 500,
@@ -174,7 +176,7 @@
"coverage": 5,
"encumbrance": 2,
"covers": [ "LEG_EITHER" ],
- "flags": [ "NO_UNLOAD", "RECHARGE", "WAIST", "FRAGILE", "OVERSIZE", "WATERPROOF" ]
+ "flags": [ "RECHARGE", "WAIST", "FRAGILE", "OVERSIZE", "WATERPROOF", "IS_UPS" ]
},
{
"id": "adv_UPS_off",
@@ -186,7 +188,7 @@
"coverage": 5,
"encumbrance": 1,
"covers": [ "LEG_EITHER" ],
- "flags": [ "WAIST", "FRAGILE", "OVERSIZE" ]
+ "flags": [ "WAIST", "FRAGILE", "OVERSIZE", "IS_UPS" ]
},
{
"id": "afs_bionic_power_mod",
diff --git a/data/mods/Aftershock/items/afs_weapons.json b/data/mods/Aftershock/items/afs_weapons.json
index 374d01649ce9c..19ecd13a40d12 100644
--- a/data/mods/Aftershock/items/afs_weapons.json
+++ b/data/mods/Aftershock/items/afs_weapons.json
@@ -10,6 +10,7 @@
"price_postapoc": 20000,
"material": [ "superalloy", "diamond" ],
"symbol": "[",
+ "looks_like": "flashlight",
"color": "light_gray",
"ammo": "battery",
"charges_per_use": 1,
@@ -70,6 +71,7 @@
"id": "afs_hardlight_longbow",
"type": "GUN",
"symbol": "(",
+ "looks_like": "recurbow",
"color": "white",
"name": "hard-light longbow",
"description": "A sleek, stringless white metal longbow constructed of ultralight, atomic-age materials. Rather than using ammunition, each shot uses high-tech projectors to create a string and arrow out of hard light on the spot, which provide excellent accuracy and armor penetration. Being a bow, it's still not as powerful as conventional ballistic weapons. It runs off of UPS power, and rather efficiently so.",
@@ -105,6 +107,7 @@
"price_postapoc": 20000,
"material": [ "hardsteel" ],
"symbol": "[",
+ "looks_like": "gauntlets_chitin",
"color": "light_gray",
"bashing": 50,
"to_hit": -2,
@@ -146,6 +149,7 @@
"bashing": 9,
"material": [ "steel", "plastic" ],
"symbol": "(",
+ "looks_like": "bionic_general",
"color": "magenta",
"skill": "launcher",
"ammo": "40mm",
@@ -167,6 +171,7 @@
"bashing": 8,
"material": [ "plastic", "copper" ],
"symbol": "(",
+ "looks_like": "american_180",
"color": "magenta",
"ammo": "battery",
"skill": "rifle",
@@ -178,7 +183,9 @@
"reload": 500,
"valid_mod_locations": [ [ "accessories", 4 ], [ "sights", 1 ], [ "sling", 1 ], [ "stock", 1 ], [ "underbarrel", 1 ] ],
"ammo_effects": [ "LASER", "DRAW_AS_LINE" ],
- "magazines": [ [ "battery", [ "heavy_battery_cell", "heavy_plus_battery_cell" ] ] ],
- "flags": [ "NEVER_JAMS", "FIRE_20" ]
+ "magazines": [
+ [ "battery", [ "heavy_battery_cell", "heavy_plus_battery_cell", "heavy_atomic_battery_cell", "heavy_disposable_cell" ] ]
+ ],
+ "flags": [ "NEVER_JAMS", "FIRE_20", "NON-FOULING" ]
}
]
diff --git a/data/mods/Aftershock/vehicles/afs_part_items.json b/data/mods/Aftershock/vehicles/afs_part_items.json
index 05e21751a491a..3b6fc148584c9 100644
--- a/data/mods/Aftershock/vehicles/afs_part_items.json
+++ b/data/mods/Aftershock/vehicles/afs_part_items.json
@@ -8,6 +8,7 @@
"to_hit": -6,
"color": "cyan",
"symbol": "]",
+ "looks_like": "cargo_aisle",
"material": [ "steel" ],
"volume": 400,
"bashing": 2,
@@ -24,6 +25,7 @@
"color": "white",
"symbol": "]",
"material": [ "titanium" ],
+ "looks_like": "xlframe",
"techniques": [ "DEF_DISARM" ],
"volume": 30,
"bashing": 15,
@@ -58,6 +60,7 @@
"type": "GENERIC",
"id": "afs_control_station",
"name": "control station",
+ "looks_like": "vehicle_dashboard",
"description": "A large and complex piloting station from a military vehicle, including a camera station, steering tools, and electronics controls.",
"weight": 9000,
"to_hit": -4,
diff --git a/data/mods/Aftershock/vehicles/afs_vehicle_parts.json b/data/mods/Aftershock/vehicles/afs_vehicle_parts.json
index eaa6a41f22333..0d0216dd7bf5d 100644
--- a/data/mods/Aftershock/vehicles/afs_vehicle_parts.json
+++ b/data/mods/Aftershock/vehicles/afs_vehicle_parts.json
@@ -34,6 +34,7 @@
"name": "crude plating",
"description": "A piece of sheet metal welded onto a vehicle as armor. Thin, and not as protective as proper armor, but it'll do if there's nothing else available.",
"symbol": ")",
+ "looks_like": "steel_plate",
"color": "light_gray",
"broken_symbol": ")",
"broken_color": "dark_gray",
@@ -181,6 +182,7 @@
"id": "afs_control_station",
"name": "control station",
"symbol": "$",
+ "looks_like": "vehicle_dashboard",
"color": "red",
"broken_symbol": "$",
"broken_color": "light_gray",
diff --git a/data/mods/Animatronics/animatronics.json b/data/mods/Animatronics/animatronics.json
index 8510a01be2da5..1dabbda30c912 100644
--- a/data/mods/Animatronics/animatronics.json
+++ b/data/mods/Animatronics/animatronics.json
@@ -615,7 +615,6 @@
"type": "MONSTER",
"id": "mon_animatronic_sheep",
"name": { "str": "animatronic sheep", "str_pl": "animatronic sheep" },
- "name_plural": "animatronic sheep",
"species": "ROBOT",
"default_faction": "animatronics",
"symbol": "S",
diff --git a/data/mods/Animatronics/snippets.json b/data/mods/Animatronics/snippets.json
index e5a18c8933ea1..3a350f2c0a818 100644
--- a/data/mods/Animatronics/snippets.json
+++ b/data/mods/Animatronics/snippets.json
@@ -3,40 +3,26 @@
"type": "snippet",
"category": "flier",
"text": [
- "This is a crumpled old advertisement for a local pizzaria. It depicts smiling kids and some sort of animal mascot. The flier reads \"Eat, rock, party, play.\""
+ {
+ "id": "flier_animatronics_1",
+ "text": "This is a crumpled old advertisement for a local pizzaria. It depicts smiling kids and some sort of animal mascot. The flier reads \"Eat, rock, party, play.\""
+ },
+ {
+ "id": "flier_animatronics_2",
+ "//": "Reference to 11 Drunk Guys Play FNAF.",
+ "text": "This is a crumpled old advertisement for a local pizzaria. It depicts smiling kids and some sort of animal mascot. The flier reads \"Eat, rock, party, play!\" Someone has crudely scrawled underneath it \"Smoke weed every day!\""
+ }
]
},
{
"type": "snippet",
- "category": "flier",
- "//": "Reference to 11 Drunk Guys Play FNAF.",
+ "category": "note",
"text": [
- "This is a crumpled old advertisement for a local pizzaria. It depicts smiling kids and some sort of animal mascot. The flier reads \"Eat, rock, party, play!\" Someone has crudely scrawled underneath it \"Smoke weed every day!\""
+ { "id": "note_animatronics_1", "text": "\"This is a kids place, why is their mascot so stacked!?\"" },
+ { "id": "note_animatronics_2", "text": "\"NO BAD ROBOT I DON'T WANT PIZZA.\"" },
+ { "id": "note_animatronics_3", "text": "\"Fuckin haunted pizza joint, just burn it down\"" },
+ { "id": "note_animatronics_4", "text": "\"Pizza, arcade tokens, horrible death, got my bases covered.\"" },
+ { "id": "note_animatronics_5", "text": "\"leg eaten by zombie robot furry help\"" }
]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"This is a kids place, why is their mascot so stacked!?\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"NO BAD ROBOT I DON'T WANT PIZZA.\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"Fuckin haunted pizza joint, just burn it down\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"Pizza, arcade tokens, horrible death, got my bases covered.\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"leg eaten by zombie robot furry help\"" ]
}
]
diff --git a/data/mods/CRT_EXPANSION/items/crt_gun.json b/data/mods/CRT_EXPANSION/items/crt_gun.json
index 2987c3a465846..b93010a13dc60 100644
--- a/data/mods/CRT_EXPANSION/items/crt_gun.json
+++ b/data/mods/CRT_EXPANSION/items/crt_gun.json
@@ -33,7 +33,7 @@
[ "underbarrel", 1 ]
],
"ammo_effects": [ "LASER", "INCENDIARY" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD" ]
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "NON-FOULING" ]
},
{
"id": "crt_laser_gatling",
@@ -60,7 +60,7 @@
"modes": [ [ "DEFAULT", "burst", 12 ] ],
"valid_mod_locations": [ [ "accessories", 1 ], [ "emitter", 1 ], [ "grip", 1 ], [ "lens", 1 ], [ "rail", 1 ], [ "sights", 1 ], [ "stock", 1 ] ],
"ammo_effects": [ "LASER", "INCENDIARY" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD" ]
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "NON-FOULING" ]
},
{
"id": "crt_laser_carbine",
@@ -96,7 +96,7 @@
[ "underbarrel", 1 ]
],
"ammo_effects": [ "LASER", "INCENDIARY" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD" ]
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "NON-FOULING" ]
},
{
"id": "crt_energy_rifle",
@@ -132,7 +132,7 @@
[ "underbarrel", 1 ]
],
"ammo_effects": [ "LASER", "INCENDIARY" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD" ]
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "NON-FOULING" ]
},
{
"id": "crt_cqb_si",
@@ -193,7 +193,7 @@
[ "underbarrel", 1 ]
],
"ammo_effects": [ "STREAM", "INCENDIARY" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD", "UNARMED_WEAPON", "DURABLE_MELEE" ]
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "UNARMED_WEAPON", "DURABLE_MELEE", "NON-FOULING" ]
},
{
"id": "pelletgun",
@@ -206,7 +206,7 @@
"price": 9900,
"//": "You can get a decent Ruger .177 at walmart for $99",
"material": [ "steel", "plastic" ],
- "flags": [ "STR_RELOAD" ],
+ "flags": [ "STR_RELOAD", "NON-FOULING", "NON-FOULING" ],
"skill": "rifle",
"ammo": "pellets",
"weight": 5023,
@@ -249,7 +249,7 @@
"reload": 170,
"valid_mod_locations": [ [ "accessories", 1 ], [ "grip", 1 ], [ "sights", 1 ] ],
"ammo_effects": [ "PLASMA", "INCENDIARY", "DRAW_LASER_BEAM" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD" ]
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "NON-FOULING" ]
},
{
"id": "ds_rivet_gun",
@@ -305,7 +305,7 @@
"modes": [ [ "DEFAULT", "semi-auto", 1 ] ],
"valid_mod_locations": [ [ "accessories", 1 ], [ "grip", 1 ], [ "sights", 1 ] ],
"ammo_effects": [ "WIDE", "LASER" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD", "SLOW_WIELD" ]
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "SLOW_WIELD", "NON-FOULING" ]
},
{
"id": "ds_pulse_rifle",
@@ -332,7 +332,7 @@
"reload": 15,
"modes": [ [ "BURST", "3 rd.", 3 ] ],
"valid_mod_locations": [ [ "accessories", 1 ], [ "grip", 1 ], [ "sights", 1 ], [ "stock", 1 ] ],
- "ammo_effects": [ "NOGIB", "BEANBAG" ],
+ "ammo_effects": [ "NOGIB", "BEANBAG", "NON-FOULING" ],
"flags": [ "NEVER_JAMS" ]
},
{
@@ -361,6 +361,6 @@
"reload": 450,
"modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "REACH", "em field saw", 5, [ "MELEE", "REACH_ATTACK" ] ] ],
"ammo_effects": [ "LIGHTNING", "MESSY" ],
- "flags": [ "NEVER_JAMS" ]
+ "flags": [ "NEVER_JAMS", "NON-FOULING" ]
}
]
diff --git a/data/mods/DinoMod/snippets.json b/data/mods/DinoMod/snippets.json
index 05b94cbe66f53..fa57f769cb1e2 100644
--- a/data/mods/DinoMod/snippets.json
+++ b/data/mods/DinoMod/snippets.json
@@ -3,32 +3,24 @@
"type": "snippet",
"category": "flier",
"text": [
- "This is an advertisement for a local wildlife exhibit, claiming to have new and exciting animals on display. Strangely, the only imagery on it is a stylized silhouette of a T. Rex. The flier reads \"Witness the rebirth of the extinct, grand opening this week!\""
+ {
+ "id": "flier_dinomod_1",
+ "text": "This is an advertisement for a local wildlife exhibit, claiming to have new and exciting animals on display. Strangely, the only imagery on it is a stylized silhouette of a T. Rex. The flier reads \"Witness the rebirth of the extinct, grand opening this week!\""
+ }
]
},
{
"type": "snippet",
"category": "note",
- "text": [ "\"SWAMPS BAD TEETH HUGE OHGOD\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"Why is that place just fucking crawling with lizards?\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"Fellow scaly bretheren! Tonight we feast on the hairless apes.\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"where's some .700 t-rex medicine when you need it?\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"So is this what happens when you stray off the path and step on a butterfly?\"" ]
+ "text": [
+ { "id": "note_dinomod_1", "text": "\"SWAMPS BAD TEETH HUGE OHGOD\"" },
+ { "id": "note_dinomod_2", "text": "\"Why is that place just fucking crawling with lizards?\"" },
+ { "id": "note_dinomod_3", "text": "\"Fellow scaly bretheren! Tonight we feast on the hairless apes.\"" },
+ { "id": "note_dinomod_4", "text": "\"where's some .700 t-rex medicine when you need it?\"" },
+ {
+ "id": "note_dinomod_5",
+ "text": "\"So is this what happens when you stray off the path and step on a butterfly?\""
+ }
+ ]
}
]
diff --git a/data/mods/EW_Pack/ew_weapons.json b/data/mods/EW_Pack/ew_weapons.json
index b7f6f5fdbaeee..67069b1431814 100644
--- a/data/mods/EW_Pack/ew_weapons.json
+++ b/data/mods/EW_Pack/ew_weapons.json
@@ -18,7 +18,7 @@
"to_hit": -1,
"dispersion": 75,
"durability": 9,
- "burst": 12,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 12 ] ],
"default_mods": [ "red_dot_sight" ],
"valid_mod_locations": [
[ "accessories", 4 ],
@@ -145,7 +145,7 @@
"price": 420000,
"dispersion": 120,
"durability": 6,
- "burst": 8
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 8 ] ]
},
{
"id": "cw-24m_hack",
@@ -157,7 +157,7 @@
"price": 420000,
"dispersion": 120,
"durability": 6,
- "burst": 8
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 8 ] ]
},
{
"id": "cwd-63",
@@ -213,9 +213,10 @@
"dispersion": 150,
"sight_dispersion": 150,
"durability": 8,
- "burst": 30,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 30 ] ],
"clip_size": 90,
"reload": 300,
- "valid_mod_locations": [ [ "accessories", 2 ], [ "magazine", 2 ], [ "sling", 1 ], [ "underbarrel", 1 ] ]
+ "valid_mod_locations": [ [ "accessories", 2 ], [ "magazine", 2 ], [ "sling", 1 ], [ "underbarrel", 1 ] ],
+ "flags": [ "NON-FOULING" ]
}
]
diff --git a/data/mods/FictonalWeapons/fic_weapons.json b/data/mods/FictonalWeapons/fic_weapons.json
index cbaaeca181e23..c9b6e8d2b8b47 100644
--- a/data/mods/FictonalWeapons/fic_weapons.json
+++ b/data/mods/FictonalWeapons/fic_weapons.json
@@ -68,7 +68,7 @@
"description": "A long sharp blade, with two powerful .500 S&W Magnum chambers in the hilt. While chambering big rounds, the barrels are so short it slightly reduces outgoing damage.",
"price": 150000,
"material": [ "steel", "plastic" ],
- "flags": [ "RELOAD_ONE", "NEVER_JAMS", "RELOAD_EJECT", "SHEATH_SWORD", "DURABLE_MELEE" ],
+ "flags": [ "RELOAD_ONE", "NEVER_JAMS", "RELOAD_EJECT", "SHEATH_SWORD", "DURABLE_MELEE", "NON-FOULING" ],
"skill": "pistol",
"ammo": "500",
"weight": 1800,
@@ -95,7 +95,7 @@
"description": "A short but sharp blade, with two powerful .500 S&W Magnum chambers in the grip. While chambering big rounds, the barrels are so short it slightly reduces outgoing damage.",
"price": 70000,
"material": [ "steel", "plastic" ],
- "flags": [ "RELOAD_ONE", "NEVER_JAMS", "RELOAD_EJECT", "SHEATH_KNIFE", "STAB", "DURABLE_MELEE" ],
+ "flags": [ "RELOAD_ONE", "NEVER_JAMS", "RELOAD_EJECT", "SHEATH_KNIFE", "STAB", "DURABLE_MELEE", "NON-FOULING" ],
"skill": "pistol",
"ammo": "500",
"weight": 700,
@@ -225,7 +225,7 @@
"description": "The Lightning Trail carbine was developed for the riot police to quickly blanket an area with lightning clouds. While damaging, it is less lethal than live ammunition.",
"price": 250000,
"material": [ "steel", "plastic" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD" ],
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "NON-FOULING" ],
"ammo_effects": [ "LIGHTNING", "BEANBAG" ],
"mode_modifier": [ [ "DEFAULT", "auto", 5 ] ],
"ups_charges": 6,
@@ -260,7 +260,7 @@
"description": "The arc cannon fires bolts of lightning arcing between targets in close proximity to each other. Originally manufactured to fry insects, now it’s been turned up to fry zombies.",
"price": 250000,
"material": [ "steel", "plastic" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD" ],
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "NON-FOULING" ],
"ammo_effects": [ "LIGHTNING", "BOUNCE", "BEANBAG" ],
"ups_charges": 120,
"skill": "rifle",
diff --git a/data/mods/FictonalWeapons/snippets.json b/data/mods/FictonalWeapons/snippets.json
index 7cb94898e5d62..8fceccef41cb8 100644
--- a/data/mods/FictonalWeapons/snippets.json
+++ b/data/mods/FictonalWeapons/snippets.json
@@ -2,26 +2,18 @@
{
"type": "snippet",
"category": "note",
- "text": [ "\"Gun. Sword. Gunsword. Screw bayonets, this is way more awesome.\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"Not sure if wielding this thing makes me feel like a bodybuilder or a theoretical physicist. Both?\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"This ain't your grandaddy's .50 cal hand cannon!\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"Nice pistol! Which trigger fires the flamer?\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"Why in the name of fuck did I slap a crossbow on this handgun.\"" ]
+ "text": [
+ { "id": "note_fictional_weapons_1", "text": "\"Gun. Sword. Gunsword. Screw bayonets, this is way more awesome.\"" },
+ {
+ "id": "note_fictional_weapons_2",
+ "text": "\"Not sure if wielding this thing makes me feel like a bodybuilder or a theoretical physicist. Both?\""
+ },
+ { "id": "note_fictional_weapons_3", "text": "\"This ain't your grandaddy's .50 cal hand cannon!\"" },
+ { "id": "note_fictional_weapons_4", "text": "\"Nice pistol! Which trigger fires the flamer?\"" },
+ {
+ "id": "note_fictional_weapons_5",
+ "text": "\"Why in the name of fuck did I slap a crossbow on this handgun.\""
+ }
+ ]
}
]
diff --git a/data/mods/Fuji_Mil_Prof/modinfo.json b/data/mods/Fuji_Mil_Prof/modinfo.json
new file mode 100644
index 0000000000000..aabdbbe256f01
--- /dev/null
+++ b/data/mods/Fuji_Mil_Prof/modinfo.json
@@ -0,0 +1,11 @@
+[
+ {
+ "type": "MOD_INFO",
+ "ident": "fuji_mpp",
+ "name": "Fuji's Military Profession Pack",
+ "authors": [ "Fuji" ],
+ "description": "Numerous military themed professions",
+ "category": "rebalance",
+ "dependencies": [ "dda" ]
+ }
+]
diff --git a/data/mods/Fuji_Mil_Prof/npc/NC_ARMY.json b/data/mods/Fuji_Mil_Prof/npc/NC_ARMY.json
new file mode 100644
index 0000000000000..5ee4d145154a0
--- /dev/null
+++ b/data/mods/Fuji_Mil_Prof/npc/NC_ARMY.json
@@ -0,0 +1,138 @@
+[
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_pants_male",
+ "items": [ [ "pants_army", 90 ], [ "pants_cargo", 10 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_pants_female",
+ "items": [ [ "pants_army", 90 ], [ "pants_cargo", 10 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_shirt_male",
+ "items": [ [ "tshirt", 20 ], [ "polo_shirt", 20 ], [ "dress_shirt", 20 ], [ "tank_top", 20 ], [ "longshirt", 20 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_shirt_female",
+ "items": [ [ "tshirt", 20 ], [ "polo_shirt", 20 ], [ "dress_shirt", 20 ], [ "tank_top", 20 ], [ "longshirt", 20 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_gloves",
+ "items": [ [ "null", 50 ], [ "gloves_tactical", 50 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_coat",
+ "items": [
+ [ "null", 60 ],
+ [ "jacket_army", 40 ],
+ [ "modularveststeel", 10 ],
+ [ "modularvestceramic", 40 ],
+ [ "kevlar", 20 ],
+ [ "chestrig", 30 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_shoes",
+ "items": [ [ "boots_combat", 100 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_masks",
+ "items": [ [ "null", 60 ], [ "keffiyeh", 30 ], [ "mask_gas", 10 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_eyes",
+ "items": [ [ "null", 40 ], [ "glasses_bal", 50 ], [ "sunglasses", 20 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_hat",
+ "items": [ [ "null", 40 ], [ "hat_ball", 10 ], [ "tac_helmet", 30 ], [ "helmet_army", 10 ], [ "hat_boonie", 10 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_extra",
+ "items": [ [ "null", 30 ], [ "rucksack", 70 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_bashing",
+ "items": [
+ [ "hammer", 20 ],
+ [ "wrench", 20 ],
+ [ "hammer_sledge", 20 ],
+ [ "pipe", 20 ],
+ [ "baton-extended", 20 ],
+ [ "crowbar", 20 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_cutting",
+ "items": [
+ [ "knife_butcher", 20 ],
+ [ "hatchet", 20 ],
+ [ "knife_combat", 20 ],
+ [ "machete", 20 ],
+ [ "knife_combat", 20 ],
+ [ "diveknife", 20 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_stabbing",
+ "items": [ [ "spear_knife", 50 ], [ "spear_steel", 10 ], [ "spear_forked", 10 ], [ "spear_rebar", 5 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_throw",
+ "items": [ [ "throwing_knife", 50 ], [ "throwing_axe", 50 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_archery",
+ "items": [ [ "crossbow", 5 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_pistols",
+ "items": [ [ "m1911", 30 ], [ "m9", 70 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_shotgun",
+ "items": [ [ "mossberg_500", 25 ], [ "remington_870", 25 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_smg",
+ "items": [ [ "hk_mp5", 50 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_rifle",
+ "items": [ [ "m4a1", 50 ], [ "m14ebr", 35 ], [ "m249", 20 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_launcher",
+ "items": [ [ "mgl", 10 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_weapon_random",
+ "items": [ [ "q_staff", 100 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_ARMY_misc",
+ "items": [ [ "grenade", 40 ], [ "ref_lighter", 30 ], [ "lighter", 30 ], [ "matches", 30 ] ]
+ }
+]
diff --git a/data/mods/Fuji_Mil_Prof/npc/NC_OPS.json b/data/mods/Fuji_Mil_Prof/npc/NC_OPS.json
new file mode 100644
index 0000000000000..35075edc3b6b2
--- /dev/null
+++ b/data/mods/Fuji_Mil_Prof/npc/NC_OPS.json
@@ -0,0 +1,155 @@
+[
+ {
+ "type": "item_group",
+ "id": "NC_OPS_pants_male",
+ "items": [ [ "pants_army", 20 ], [ "pants_cargo", 50 ], [ "jeans", 30 ], [ "shorts_cargo", 20 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_pants_female",
+ "items": [ [ "pants_army", 20 ], [ "pants_cargo", 50 ], [ "jeans", 30 ], [ "shorts_cargo", 20 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_shirt_male",
+ "items": [
+ [ "tshirt", 20 ],
+ [ "polo_shirt", 20 ],
+ [ "dress_shirt", 20 ],
+ [ "tank_top", 20 ],
+ [ "longshirt", 20 ],
+ [ "hoodie", 40 ],
+ [ "sweatshirt", 40 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_shirt_female",
+ "items": [
+ [ "tshirt", 20 ],
+ [ "polo_shirt", 20 ],
+ [ "dress_shirt", 20 ],
+ [ "tank_top", 20 ],
+ [ "longshirt", 20 ],
+ [ "hoodie", 40 ],
+ [ "sweatshirt", 40 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_gloves",
+ "items": [ [ "null", 50 ], [ "gloves_tactical", 50 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_coat",
+ "items": [
+ [ "null", 60 ],
+ [ "jacket_army", 40 ],
+ [ "cloak", 20 ],
+ [ "modularveststeel", 10 ],
+ [ "modularvestceramic", 40 ],
+ [ "kevlar", 20 ],
+ [ "chestrig", 30 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_shoes",
+ "items": [ [ "boots_combat", 100 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_masks",
+ "items": [ [ "null", 60 ], [ "keffiyeh", 30 ], [ "mask_gas", 10 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_eyes",
+ "items": [ [ "null", 40 ], [ "glasses_bal", 50 ], [ "sunglasses", 20 ], [ "fancy_sunglasses", 20 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_hat",
+ "items": [ [ "null", 20 ], [ "hat_ball", 50 ], [ "tac_helmet", 50 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_extra",
+ "items": [ [ "null", 30 ], [ "rucksack", 70 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_bashing",
+ "items": [
+ [ "hammer", 20 ],
+ [ "wrench", 20 ],
+ [ "hammer_sledge", 20 ],
+ [ "pipe", 20 ],
+ [ "baton-extended", 20 ],
+ [ "crowbar", 20 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_cutting",
+ "items": [
+ [ "knife_butcher", 20 ],
+ [ "hatchet", 20 ],
+ [ "knife_combat", 20 ],
+ [ "machete", 20 ],
+ [ "knife_combat", 20 ],
+ [ "diveknife", 20 ]
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_stabbing",
+ "items": [ [ "spear_knife", 50 ], [ "spear_steel", 10 ], [ "spear_forked", 10 ], [ "spear_rebar", 5 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_throw",
+ "items": [ [ "throwing_knife", 50 ], [ "throwing_axe", 50 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_archery",
+ "items": [ [ "crossbow", 5 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_pistols",
+ "items": [ [ "m1911", 70 ], [ "fn57", 50 ], [ "m9", 30 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_shotgun",
+ "items": [ [ "mossberg_500", 25 ], [ "remington_870", 25 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_smg",
+ "items": [ [ "hk_mp5", 50 ], [ "hk_mp7", 30 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_rifle",
+ "items": [ [ "m4a1", 50 ], [ "m14ebr", 35 ], [ "m249", 20 ], [ "h&k416a5", 50 ], [ "M24", 35 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_launcher",
+ "items": [ [ "mgl", 10 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_weapon_random",
+ "items": [ [ "q_staff", 100 ] ]
+ },
+ {
+ "type": "item_group",
+ "id": "NC_OPS_misc",
+ "items": [ [ "grenade", 40 ], [ "ref_lighter", 30 ], [ "lighter", 30 ], [ "matches", 30 ] ]
+ }
+]
diff --git a/data/mods/Fuji_Mil_Prof/npc/classes.json b/data/mods/Fuji_Mil_Prof/npc/classes.json
new file mode 100644
index 0000000000000..00bf3c5afd3ca
--- /dev/null
+++ b/data/mods/Fuji_Mil_Prof/npc/classes.json
@@ -0,0 +1,38 @@
+[
+ {
+ "type": "npc_class",
+ "id": "NC_ARMY",
+ "name": "Soldier",
+ "job_description": "I'm just here for the paycheck.",
+ "common": true,
+ "bonus_str": { "rng": [ 0, 2 ] },
+ "bonus_dex": { "one_in": 2 },
+ "bonus_int": { "rng": [ 0, -2 ] },
+ "skills": [
+ { "skill": "ALL", "level": { "sum": [ { "dice": [ 3, 2 ] }, { "constant": -3 } ] } },
+ { "skill": "dodge", "bonus": { "rng": [ 1, 2 ] } },
+ { "skill": "melee", "bonus": { "rng": [ 1, 2 ] } },
+ { "skill": "unarmed", "bonus": { "rng": [ 1, 2 ] } },
+ { "skill": "rifle", "bonus": { "rng": [ 3, 5 ] } },
+ { "skill": "gun", "bonus": { "rng": [ 2, 4 ] } }
+ ]
+ },
+ {
+ "type": "npc_class",
+ "id": "NC_OPS",
+ "name": "Operator",
+ "job_description": "I'm just here for the paycheck.",
+ "common": true,
+ "bonus_str": { "rng": [ 0, 2 ] },
+ "bonus_dex": { "one_in": 2 },
+ "bonus_int": { "rng": [ 0, 2 ] },
+ "skills": [
+ { "skill": "ALL", "level": { "sum": [ { "dice": [ 3, 2 ] }, { "constant": -3 } ] } },
+ { "skill": "dodge", "bonus": { "rng": [ 1, 4 ] } },
+ { "skill": "melee", "bonus": { "rng": [ 1, 4 ] } },
+ { "skill": "unarmed", "bonus": { "rng": [ 1, 4 ] } },
+ { "skill": "rifle", "bonus": { "rng": [ 3, 8 ] } },
+ { "skill": "gun", "bonus": { "rng": [ 2, 6 ] } }
+ ]
+ }
+]
diff --git a/data/mods/Fuji_Mil_Prof/prof/army.json b/data/mods/Fuji_Mil_Prof/prof/army.json
new file mode 100644
index 0000000000000..41b7ca7ae2dcc
--- /dev/null
+++ b/data/mods/Fuji_Mil_Prof/prof/army.json
@@ -0,0 +1,183 @@
+[
+ {
+ "type": "profession",
+ "ident": "mil_rifleman",
+ "name": "Military Rifleman",
+ "description": "Frontline infantry, frontline infantry, frontline infantry, frontline infantry.",
+ "points": 2,
+ "skills": [ { "level": 1, "name": "survival" }, { "level": 1, "name": "gun" }, { "level": 1, "name": "rifle" } ],
+ "items": {
+ "both": {
+ "items": [
+ "tac_helmet",
+ "jacket_army",
+ "pants_army",
+ "longshirt",
+ "rucksack",
+ "glasses_bal",
+ "dump_pouch",
+ "knee_pads",
+ "elbow_pads",
+ "socks",
+ "boots_combat",
+ "gloves_tactical"
+ ],
+ "entries": [
+ { "item": "m4a1", "ammo-item": "556", "charges": 30, "contents-item": [ "shoulder_strap", "acog_scope", "grip" ] },
+ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
+ { "item": "modularvestceramic", "contents-group": "army_mags_m4" },
+ { "item": "knife_combat", "container-item": "sheath" },
+ { "item": "m17", "ammo-item": "9mm", "charges": 17, "container-item": "holster" }
+ ]
+ },
+ "male": [ "boxer_shorts" ],
+ "female": [ "boy_shorts", "sports_bra" ]
+ }
+ },
+ {
+ "type": "profession",
+ "ident": "mil_marksman",
+ "name": "Military Marksman",
+ "description": "You like to think you're a real sniper, but really you're just infantry with a bigger gun.",
+ "points": 4,
+ "skills": [ { "level": 1, "name": "survival" }, { "level": 2, "name": "gun" }, { "level": 2, "name": "rifle" } ],
+ "items": {
+ "both": {
+ "items": [
+ "hat_boonie",
+ "jacket_army",
+ "pants_army",
+ "longshirt",
+ "rucksack",
+ "knee_pads",
+ "elbow_pads",
+ "socks",
+ "boots_combat",
+ "gloves_tactical"
+ ],
+ "entries": [
+ { "item": "m14ebr", "ammo-item": "762_51", "charges": 20, "contents-item": [ "acog_scope", "shoulder_strap", "bipod" ] },
+ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
+ { "item": "modularvestceramic", "contents-group": "army_mags_m14" },
+ { "item": "knife_combat", "container-item": "sheath" },
+ { "item": "m17", "ammo-item": "9mm", "charges": 17, "container-item": "holster" }
+ ]
+ },
+ "male": [ "boxer_shorts" ],
+ "female": [ "boy_shorts", "sports_bra" ]
+ }
+ },
+ {
+ "type": "profession",
+ "ident": "mil_auto_rifleman",
+ "name": "Military Automatic Rifleman",
+ "description": "S stands for suppressing fire!",
+ "points": 3,
+ "skills": [ { "level": 1, "name": "survival" }, { "level": 1, "name": "gun" }, { "level": 1, "name": "rifle" } ],
+ "items": {
+ "both": {
+ "items": [
+ "pants_army",
+ "tank_top",
+ "modularvestceramic",
+ "glasses_bal",
+ "knee_pads",
+ "elbow_pads",
+ "socks",
+ "boots_combat",
+ "gloves_tactical"
+ ],
+ "entries": [
+ { "item": "m249", "ammo-item": "556", "charges": 200, "contents-item": [ "shoulder_strap", "holo_sight", "bipod" ] },
+ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
+ { "item": "556", "charges": 200, "container-item": "belt223" },
+ { "item": "m17", "ammo-item": "9mm", "charges": 17, "container-item": "holster" }
+ ]
+ },
+ "male": [ "boxer_shorts" ],
+ "female": [ "boy_shorts", "sports_bra" ]
+ }
+ },
+ {
+ "type": "profession",
+ "ident": "mil_grenadier",
+ "name": "Military Grenadier",
+ "description": "There's no kill like overkill.",
+ "points": 3,
+ "skills": [
+ { "level": 1, "name": "survival" },
+ { "level": 1, "name": "gun" },
+ { "level": 1, "name": "rifle" },
+ { "level": 1, "name": "launcher" }
+ ],
+ "items": {
+ "both": {
+ "items": [
+ "tac_helmet",
+ "pants_army",
+ "tshirt",
+ "rucksack",
+ "glasses_bal",
+ "dump_pouch",
+ "knee_pads",
+ "elbow_pads",
+ "socks",
+ "boots_combat",
+ "gloves_tactical"
+ ],
+ "entries": [
+ { "item": "m4a1", "ammo-item": "556", "charges": 30, "contents-item": [ "shoulder_strap", "holo_sight", "m203" ] },
+ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
+ { "item": "modularvestceramic", "contents-group": "army_mags_m4" },
+ { "item": "40mm_frag", "charges": 4, "container-item": "grenade_pouch" },
+ { "item": "knife_combat", "container-item": "sheath" },
+ { "item": "m17", "ammo-item": "9mm", "charges": 17, "container-item": "holster" }
+ ]
+ },
+ "male": [ "boxer_shorts" ],
+ "female": [ "boy_shorts", "sports_bra" ]
+ }
+ },
+ {
+ "type": "profession",
+ "ident": "mil_breacher",
+ "name": "Military Breacher",
+ "description": "Doors and windows everywhere dare not speak your name.",
+ "points": 3,
+ "skills": [
+ { "level": 1, "name": "survival" },
+ { "level": 1, "name": "gun" },
+ { "level": 1, "name": "shotgun" },
+ { "level": 1, "name": "melee" },
+ { "level": 1, "name": "bashing" }
+ ],
+ "items": {
+ "both": {
+ "items": [
+ "tac_fullhelmet",
+ "pants_army",
+ "tshirt",
+ "modularveststeel",
+ "armguard_hard",
+ "legguard_hard",
+ "grenadebandolier",
+ "flashbang",
+ "flashbang",
+ "socks",
+ "boots_combat",
+ "gloves_tactical",
+ "hammer_sledge"
+ ],
+ "entries": [
+ { "item": "mossberg_500", "ammo-item": "shot_00", "charges": 8, "contents-item": [ "shoulder_strap" ] },
+ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
+ { "item": "shot_00", "charges": 12, "container-item": "bandolier_shotgun" },
+ { "item": "knife_combat", "container-item": "sheath" },
+ { "item": "m17", "ammo-item": "9mm", "charges": 17, "container-item": "holster" }
+ ]
+ },
+ "male": [ "boxer_shorts" ],
+ "female": [ "boy_shorts", "sports_bra" ]
+ }
+ }
+]
diff --git a/data/mods/Fuji_Mil_Prof/prof/itemgroups_prof.json b/data/mods/Fuji_Mil_Prof/prof/itemgroups_prof.json
new file mode 100644
index 0000000000000..4e705e6bf5c0c
--- /dev/null
+++ b/data/mods/Fuji_Mil_Prof/prof/itemgroups_prof.json
@@ -0,0 +1,53 @@
+[
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "holster_supp_MEU",
+ "entries": [ { "item": "m1911_MEU", "ammo-item": "45_acp", "charges": 7, "contents-item": [ "suppressor" ] } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "army_mags_1911",
+ "entries": [
+ { "item": "m1911mag", "ammo-item": "45_acp", "charges": 7 },
+ { "item": "m1911mag", "ammo-item": "45_acp", "charges": 7 }
+ ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "army_mags_300blk",
+ "entries": [
+ { "item": "stanag30", "ammo-item": "300blk_ss", "charges": 30 },
+ { "item": "stanag30", "ammo-item": "300blk_ss", "charges": 30 }
+ ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "army_mags_mp7",
+ "entries": [ { "item": "hk46mag", "ammo-item": "46mm", "charges": 20 }, { "item": "hk46mag", "ammo-item": "46mm", "charges": 20 } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "holster_supp_57",
+ "entries": [ { "item": "fn57", "ammo-item": "57mm", "charges": 20, "contents-item": [ "suppressor" ] } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "army_mags_57",
+ "entries": [ { "item": "fn57mag", "ammo-item": "57mm", "charges": 20 }, { "item": "fn57mag", "ammo-item": "57mm", "charges": 20 } ]
+ },
+ {
+ "type": "item_group",
+ "subtype": "collection",
+ "id": "army_mags_m14",
+ "entries": [
+ { "item": "m14mag", "ammo-item": "762_51", "charges": 20 },
+ { "item": "m14mag", "ammo-item": "762_51", "charges": 20 }
+ ]
+ }
+]
diff --git a/data/mods/Fuji_Mil_Prof/prof/spc.json b/data/mods/Fuji_Mil_Prof/prof/spc.json
new file mode 100644
index 0000000000000..b43824c48343f
--- /dev/null
+++ b/data/mods/Fuji_Mil_Prof/prof/spc.json
@@ -0,0 +1,197 @@
+[
+ {
+ "type": "profession",
+ "ident": "mil_operator",
+ "name": "Operator Recon",
+ "description": "The only easy day was yesterday.",
+ "points": 4,
+ "skills": [
+ { "level": 2, "name": "survival" },
+ { "level": 2, "name": "gun" },
+ { "level": 2, "name": "rifle" },
+ { "level": 1, "name": "melee" }
+ ],
+ "items": {
+ "both": {
+ "items": [
+ "tac_helmet",
+ "keffiyeh",
+ "sweatshirt",
+ "pants_cargo",
+ "longshirt",
+ "rucksack",
+ "glasses_bal",
+ "dump_pouch",
+ "socks",
+ "boots_combat",
+ "gloves_tactical",
+ "diving_watch"
+ ],
+ "entries": [
+ {
+ "item": "acr_300blk",
+ "ammo-item": "300blk_ss",
+ "charges": 30,
+ "contents-item": [ "shoulder_strap", "acog_scope", "grip", "suppressor" ]
+ },
+ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
+ { "item": "modularvestceramic", "contents-group": "army_mags_300blk" },
+ { "item": "knife_rambo", "container-item": "scabbard" },
+ { "item": "holster", "contents-group": "holster_supp_MEU" },
+ { "item": "legpouch_large", "contents-group": "army_mags_1911" }
+ ]
+ },
+ "male": [ "boxer_shorts" ],
+ "female": [ "boy_shorts", "sports_bra" ]
+ }
+ },
+ {
+ "type": "profession",
+ "ident": "mil_sniper",
+ "name": "Operator Sniper",
+ "description": "You spent days dueling an enemy sniper, then he just... died. And then un-died.",
+ "points": 5,
+ "skills": [ { "level": 2, "name": "survival" }, { "level": 4, "name": "gun" }, { "level": 4, "name": "rifle" } ],
+ "items": {
+ "both": {
+ "items": [
+ "hat_cotton",
+ "jacket_army",
+ "pants_army",
+ "longshirt",
+ "rucksack",
+ "knee_pads",
+ "elbow_pads",
+ "socks",
+ "boots_combat",
+ "gloves_tactical",
+ "cloak"
+ ],
+ "entries": [
+ { "item": "M24", "ammo-item": "762_51", "charges": 20, "contents-item": [ "shoulder_strap", "bipod", "suppressor" ] },
+ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
+ { "item": "chestrig", "contents-group": "army_mags_m14" },
+ { "item": "knife_combat", "container-item": "sheath" },
+ { "item": "holster", "contents-group": "holster_supp_MEU" },
+ { "item": "legpouch_large", "contents-group": "army_mags_1911" }
+ ]
+ },
+ "male": [ "boxer_shorts" ],
+ "female": [ "boy_shorts", "sports_bra" ]
+ }
+ },
+ {
+ "type": "profession",
+ "ident": "mil_hacker",
+ "name": "Operator Hacker",
+ "description": "You insist you're not a hacker, you're an 'Electronic Warfare Specialist'",
+ "points": 5,
+ "skills": [
+ { "level": 1, "name": "survival" },
+ { "level": 1, "name": "gun" },
+ { "level": 1, "name": "smg" },
+ { "level": 4, "name": "electronics" },
+ { "level": 4, "name": "computer" }
+ ],
+ "items": {
+ "both": {
+ "items": [
+ "hat_ball",
+ "scarf",
+ "hoodie",
+ "pants_cargo",
+ "longshirt",
+ "kevlar",
+ "mbag",
+ "glasses_bal",
+ "dump_pouch",
+ "socks",
+ "boots_combat",
+ "gloves_tactical",
+ "multitool",
+ "diving_watch"
+ ],
+ "entries": [
+ {
+ "item": "hk_mp7",
+ "ammo-item": "46mm",
+ "charges": 20,
+ "contents-item": [ "shoulder_strap", "holo_sight", "suppressor" ]
+ },
+ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
+ { "item": "chestrig", "contents-group": "army_mags_mp7" },
+ { "item": "knife_combat", "container-item": "sheath" },
+ { "item": "holster", "contents-group": "holster_supp_MEU" },
+ { "item": "legpouch_large", "contents-group": "army_mags_1911" }
+ ]
+ },
+ "male": [ "boxer_shorts" ],
+ "female": [ "boy_shorts", "sports_bra" ]
+ }
+ },
+ {
+ "type": "profession",
+ "ident": "mil_undercover",
+ "name": "Operator Undercover",
+ "description": "You've been tailing your target for months and now he's a zombie. So much for that lead.",
+ "points": 3,
+ "skills": [
+ { "level": 1, "name": "survival" },
+ { "level": 2, "name": "gun" },
+ { "level": 2, "name": "pistol" },
+ { "level": 6, "name": "speech" }
+ ],
+ "items": {
+ "both": {
+ "items": [
+ "scarf",
+ "dress_shirt",
+ "jeans",
+ "longshirt",
+ "kevlar",
+ "mbag",
+ "fancy_sunglasses",
+ "socks",
+ "lowtops",
+ "pockknife",
+ "diving_watch",
+ "smart_phone"
+ ],
+ "entries": [
+ { "item": "holster", "contents-group": "holster_supp_57" },
+ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
+ { "item": "legpouch_large", "contents-group": "army_mags_57" }
+ ]
+ },
+ "male": [ "boxer_shorts" ],
+ "female": [ "boy_shorts", "sports_bra" ]
+ }
+ },
+ {
+ "type": "profession",
+ "ident": "mil_cbrn",
+ "name": "Operator CBRN",
+ "description": "Chemical weapons? Check. Biological outbreak? Check. Nuclear war? Check. Sounds like the perfect job for you!",
+ "points": 5,
+ "skills": [
+ { "level": 1, "name": "survival" },
+ { "level": 1, "name": "gun" },
+ { "level": 1, "name": "smg" },
+ { "level": 4, "name": "cooking" }
+ ],
+ "items": {
+ "both": {
+ "items": [ "anbc_suit", "pants_cargo", "longshirt", "dump_pouch", "socks", "gloves_rubber", "diving_watch" ],
+ "entries": [
+ { "item": "hk_mp5", "ammo-item": "9mm", "charges": 30, "contents-item": [ "shoulder_strap", "suppressor" ] },
+ { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
+ { "item": "modularvestkevlar", "contents-group": "army_mags_mp5" },
+ { "item": "holster", "contents-group": "holster_supp_MEU" },
+ { "item": "legpouch_large", "contents-group": "army_mags_1911" }
+ ]
+ },
+ "male": [ "boxer_shorts" ],
+ "female": [ "boy_shorts", "sports_bra" ]
+ }
+ }
+]
diff --git a/data/mods/Magiclysm/Spells/animist.json b/data/mods/Magiclysm/Spells/animist.json
index 5f4aa87cdc815..59a496a6208a0 100644
--- a/data/mods/Magiclysm/Spells/animist.json
+++ b/data/mods/Magiclysm/Spells/animist.json
@@ -170,7 +170,7 @@
"id": "create_rune_animist",
"type": "SPELL",
"name": "Animist Rune",
- "description": "This ritual creates a small pebble attuned to Animists. You can use the rune as a catalyst for recipes.",
+ "description": "This ritual creates a small pebble attuned to Animists. You can use the rune as a catalyst for recipes.",
"valid_targets": [ "self" ],
"min_damage": 1,
"max_damage": 1,
diff --git a/data/mods/Magiclysm/Spells/biomancer.json b/data/mods/Magiclysm/Spells/biomancer.json
index f224ed031db23..427d74b8f3598 100644
--- a/data/mods/Magiclysm/Spells/biomancer.json
+++ b/data/mods/Magiclysm/Spells/biomancer.json
@@ -70,10 +70,7 @@
"spell_class": "BIOMANCER",
"difficulty": 6,
"max_level": 20,
- "min_damage": 0,
- "max_damage": -8,
"flags": [ "SOMATIC", "LOUD" ],
- "damage_increment": -1,
"//": "duration is in moves",
"min_duration": 6000,
"max_duration": 12000,
@@ -151,7 +148,7 @@
"id": "create_rune_biomancer",
"type": "SPELL",
"name": "Biomancer Rune",
- "description": "This ritual creates a small pebble attuned to Biomancers. You can use the rune as a catalyst for recipes.",
+ "description": "This ritual creates a small pebble attuned to Biomancers. You can use the rune as a catalyst for recipes.",
"valid_targets": [ "self" ],
"min_damage": 1,
"max_damage": 1,
diff --git a/data/mods/Magiclysm/Spells/classless.json b/data/mods/Magiclysm/Spells/classless.json
index 68e16b2b116d8..237e84768340a 100644
--- a/data/mods/Magiclysm/Spells/classless.json
+++ b/data/mods/Magiclysm/Spells/classless.json
@@ -68,7 +68,7 @@
"id": "blinding_flash",
"type": "SPELL",
"name": "Blinding Flash",
- "description": "Blind enemies for a short time with a sudden, dazzling light. Higher levels deal slightly higher damage.",
+ "description": "Blind enemies for a short time with a sudden, dazzling light. Higher levels deal slightly higher damage.",
"effect": "target_attack",
"effect_str": "blind",
"affected_body_parts": [ "EYES" ],
@@ -98,7 +98,7 @@
"id": "ethereal_grasp",
"type": "SPELL",
"name": "Ethereal Grasp",
- "description": "A mass of spectral hands emerge from the ground, slowing everything in range. Higher levels allow a bigger AoE, and longer effect.",
+ "description": "A mass of spectral hands emerge from the ground, slowing everything in range. Higher levels allow a bigger AoE, and longer effect.",
"effect": "target_attack",
"effect_str": "effect_ethereal_grasp",
"affected_body_parts": [ "FOOT_L", "FOOT_R" ],
@@ -156,5 +156,50 @@
"base_energy_cost": 675,
"energy_source": "MANA",
"spell_class": "NONE"
+ },
+ {
+ "id": "acid_resistance",
+ "type": "SPELL",
+ "name": "Acid Resistance",
+ "description": "Protects the user from acid.",
+ "valid_targets": [ "none" ],
+ "min_range": 0,
+ "max_range": 0,
+ "min_damage": 1,
+ "max_damage": 1,
+ "effect": "spawn_item",
+ "effect_str": "acid_res_aura",
+ "energy_source": "MANA",
+ "spell_class": "NONE",
+ "flags": [ "CONCENTRATE", "NO_LEGS" ],
+ "difficulty": 4,
+ "max_level": 15,
+ "base_casting_time": 200,
+ "base_energy_cost": 150,
+ "min_duration": 84000,
+ "max_duration": 360000,
+ "duration_increment": 18000,
+ "learn_spells": { "acid_resistance_greater": 15 }
+ },
+ {
+ "id": "acid_resistance_greater",
+ "type": "SPELL",
+ "name": "Greater Acid Resistance",
+ "description": "Protects the user from acid.",
+ "valid_targets": [ "none" ],
+ "min_range": 0,
+ "max_range": 0,
+ "min_damage": 1,
+ "max_damage": 1,
+ "effect": "spawn_item",
+ "effect_str": "acid_res_aura_greater",
+ "energy_source": "MANA",
+ "spell_class": "NONE",
+ "flags": [ "CONCENTRATE", "NO_LEGS" ],
+ "difficulty": 7,
+ "max_level": 1,
+ "base_casting_time": 200,
+ "base_energy_cost": 250,
+ "min_duration": 180000
}
]
diff --git a/data/mods/Magiclysm/Spells/debug.json b/data/mods/Magiclysm/Spells/debug.json
index bd35c0be034ec..3a2dcbda740ea 100644
--- a/data/mods/Magiclysm/Spells/debug.json
+++ b/data/mods/Magiclysm/Spells/debug.json
@@ -66,7 +66,7 @@
"type": "SPELL",
"name": "Debug Stamina Spell",
"description": "Uses a little stamina",
- "message": "Debug spell [ %s ] has no effect. Debug warning is expected.",
+ "message": "Debug spell [ %s ] has no effect. Debug warning is expected.",
"valid_targets": [ "self" ],
"effect": "none",
"min_range": 1,
diff --git a/data/mods/Magiclysm/Spells/druid.json b/data/mods/Magiclysm/Spells/druid.json
index 88ab16ada6186..520b40cd294e3 100644
--- a/data/mods/Magiclysm/Spells/druid.json
+++ b/data/mods/Magiclysm/Spells/druid.json
@@ -209,7 +209,7 @@
"id": "create_rune_druid",
"type": "SPELL",
"name": "Druid Rune",
- "description": "This ritual creates a small pebble attuned to Druids. You can use the rune as a catalyst for recipes.",
+ "description": "This ritual creates a small pebble attuned to Druids. You can use the rune as a catalyst for recipes.",
"valid_targets": [ "self" ],
"min_damage": 1,
"max_damage": 1,
@@ -230,7 +230,7 @@
"id": "purify_seed",
"type": "SPELL",
"name": "Purification Seed",
- "description": "You summon a gift of the earth which will purify water. Rapidly degrades if not utilized.",
+ "description": "You summon a gift of the earth which will purify water. Rapidly degrades if not utilized.",
"valid_targets": [ "self" ],
"min_damage": 1,
"max_damage": 1,
diff --git a/data/mods/Magiclysm/Spells/earthshaper.json b/data/mods/Magiclysm/Spells/earthshaper.json
index 008c0965a6060..3b1f2c549aa96 100644
--- a/data/mods/Magiclysm/Spells/earthshaper.json
+++ b/data/mods/Magiclysm/Spells/earthshaper.json
@@ -188,7 +188,7 @@
"id": "create_rune_earthshaper",
"type": "SPELL",
"name": "Earthshaper Rune",
- "description": "This ritual creates a small pebble attuned to Earthshapers. You can use the rune as a catalyst for recipes.",
+ "description": "This ritual creates a small pebble attuned to Earthshapers. You can use the rune as a catalyst for recipes.",
"valid_targets": [ "self" ],
"min_damage": 1,
"max_damage": 1,
@@ -272,5 +272,26 @@
"energy_source": "MANA",
"flags": [ "VERBAL", "SOMATIC", "LOUD" ],
"extra_effects": [ { "id": "lava_bomb_shrapnel" }, { "id": "lava_bomb_heat" }, { "id": "lava_bomb_ter" } ]
+ },
+ {
+ "id": "clairvoyance",
+ "type": "SPELL",
+ "name": "Clairvoyance",
+ "description": "You close your eyes and the earth surrenders its secrets to you.",
+ "effect": "target_attack",
+ "valid_targets": [ "ally", "hostile", "ground" ],
+ "flags": [ "SOMATIC", "VERBAL", "IGNORE_WALLS" ],
+ "max_level": 20,
+ "min_aoe": 4,
+ "max_aoe": 13,
+ "aoe_increment": 0.5,
+ "spell_class": "EARTHSHAPER",
+ "base_casting_time": 350,
+ "base_energy_cost": 750,
+ "energy_source": "MANA",
+ "difficulty": 4,
+ "field_id": "fd_clairvoyant",
+ "min_field_intensity": 1,
+ "max_field_intensity": 1
}
]
diff --git a/data/mods/Magiclysm/Spells/item_only.json b/data/mods/Magiclysm/Spells/item_only.json
index f58b28a8e6dad..69e918489b2f0 100644
--- a/data/mods/Magiclysm/Spells/item_only.json
+++ b/data/mods/Magiclysm/Spells/item_only.json
@@ -4,7 +4,7 @@
"type": "SPELL",
"name": "Twisted Restoration",
"//": "Used for potion of Twisted Restoration, not castable",
- "description": "This spell overclocks your heart, generating new flesh and muscle. It is unwise to use this in immediate danger, and may be fatal if done in critical condition.",
+ "description": "This spell overclocks your heart, generating new flesh and muscle. It is unwise to use this in immediate danger, and may be fatal if done in critical condition.",
"valid_targets": [ "self" ],
"flags": [ "SILENT", "NO_LEGS", "NO_HANDS" ],
"max_level": 1,
@@ -32,7 +32,7 @@
"type": "SPELL",
"name": "Improved Twisted Restoration",
"//": "Used for Animist-exclusive potion, not castable",
- "description": "This spell overclocks your heart, generating new flesh and muscle. It is unwise to use this in immediate danger, and may be fatal if done in critical condition. Improved brewing mitigates the strain of the spell.",
+ "description": "This spell overclocks your heart, generating new flesh and muscle. It is unwise to use this in immediate danger, and may be fatal if done in critical condition. Improved brewing mitigates the strain of the spell.",
"valid_targets": [ "self" ],
"flags": [ "SILENT", "NO_LEGS", "NO_HANDS" ],
"max_level": 1,
diff --git a/data/mods/Magiclysm/Spells/kelvinist.json b/data/mods/Magiclysm/Spells/kelvinist.json
index 2104605fb7c9a..d7f15356b90ab 100644
--- a/data/mods/Magiclysm/Spells/kelvinist.json
+++ b/data/mods/Magiclysm/Spells/kelvinist.json
@@ -288,7 +288,7 @@
"id": "create_rune_kelvinist",
"type": "SPELL",
"name": "Kelvinist Rune",
- "description": "This ritual creates a small pebble attuned to Kelvinists. You can use the rune as a catalyst for recipes.",
+ "description": "This ritual creates a small pebble attuned to Kelvinists. You can use the rune as a catalyst for recipes.",
"valid_targets": [ "self" ],
"min_damage": 1,
"max_damage": 1,
diff --git a/data/mods/Magiclysm/Spells/magus.json b/data/mods/Magiclysm/Spells/magus.json
index 0f1a458deef99..88edd942fa0cb 100644
--- a/data/mods/Magiclysm/Spells/magus.json
+++ b/data/mods/Magiclysm/Spells/magus.json
@@ -182,7 +182,7 @@
"id": "create_rune_magus",
"type": "SPELL",
"name": "Magus Rune",
- "description": "This ritual creates a small pebble attuned to Magi. You can use the rune as a catalyst for recipes.",
+ "description": "This ritual creates a small pebble attuned to Magi. You can use the rune as a catalyst for recipes.",
"valid_targets": [ "self" ],
"min_damage": 1,
"max_damage": 1,
diff --git a/data/mods/Magiclysm/Spells/monsterspells.json b/data/mods/Magiclysm/Spells/monsterspells.json
new file mode 100644
index 0000000000000..b4e69018f0a93
--- /dev/null
+++ b/data/mods/Magiclysm/Spells/monsterspells.json
@@ -0,0 +1,20 @@
+[
+ {
+ "id": "blood_suck",
+ "type": "SPELL",
+ "name": "Blood Suck",
+ "description": "Sucks blood from one foe.",
+ "valid_targets": [ "hostile" ],
+ "flags": [ "NO_HANDS", "NO_LEGS" ],
+ "damage_type": "stab",
+ "min_damage": 5,
+ "max_damage": 10,
+ "damage_increment": 1,
+ "max_level": 5,
+ "min_range": 1,
+ "max_range": 2,
+ "range_increment": 0.2,
+ "effect": "projectile_attack",
+ "extra_effects": [ { "id": "light_healing", "hit_self": true } ]
+ }
+]
diff --git a/data/mods/Magiclysm/Spells/stormshaper.json b/data/mods/Magiclysm/Spells/stormshaper.json
index 41697cba85976..86e1493f1afed 100644
--- a/data/mods/Magiclysm/Spells/stormshaper.json
+++ b/data/mods/Magiclysm/Spells/stormshaper.json
@@ -135,7 +135,7 @@
"id": "create_rune_stormshaper",
"type": "SPELL",
"name": "Stormshaper Rune",
- "description": "This ritual creates a small pebble attuned to Stormshapers. You can use the rune as a catalyst for recipes.",
+ "description": "This ritual creates a small pebble attuned to Stormshapers. You can use the rune as a catalyst for recipes.",
"valid_targets": [ "self" ],
"min_damage": 1,
"max_damage": 1,
diff --git a/data/mods/Magiclysm/Spells/technomancer.json b/data/mods/Magiclysm/Spells/technomancer.json
index cafc205dc6d06..a8e4091c56657 100644
--- a/data/mods/Magiclysm/Spells/technomancer.json
+++ b/data/mods/Magiclysm/Spells/technomancer.json
@@ -139,7 +139,7 @@
"id": "create_rune_technomancer",
"type": "SPELL",
"name": "Technomancer Rune",
- "description": "This ritual creates a small pebble attuned to Technomancers. You can use the rune as a catalyst for recipes.",
+ "description": "This ritual creates a small pebble attuned to Technomancers. You can use the rune as a catalyst for recipes.",
"valid_targets": [ "self" ],
"min_damage": 1,
"max_damage": 1,
@@ -320,5 +320,32 @@
"min_duration": 3000,
"max_duration": 6000,
"duration_increment": 200
+ },
+ {
+ "type": "SPELL",
+ "name": "X-ray Vision",
+ "id": "x-ray",
+ "description": "You fire a cone of X-rays that magically allow you to see that area for a short time.",
+ "valid_targets": [ "hostile", "ground", "ally" ],
+ "flags": [ "CONCENTRATE", "IGNORE_WALLS" ],
+ "effect": "cone_attack",
+ "field_id": "fd_clairvoyant",
+ "min_field_intensity": 1,
+ "max_field_intensity": 1,
+ "difficulty": 6,
+ "min_range": 5,
+ "max_range": 20,
+ "range_increment": 0.75,
+ "max_level": 20,
+ "min_aoe": 15,
+ "max_aoe": 60,
+ "aoe_increment": 1.5,
+ "min_duration": 0,
+ "max_duration": 900,
+ "duration_increment": 45,
+ "base_casting_time": 175,
+ "base_energy_cost": 550,
+ "energy_source": "BIONIC",
+ "spell_class": "TECHNOMANCER"
}
]
diff --git a/data/mods/Magiclysm/enchanted/enchanted_belts.json b/data/mods/Magiclysm/enchanted/enchanted_belts.json
new file mode 100644
index 0000000000000..07bc968f28179
--- /dev/null
+++ b/data/mods/Magiclysm/enchanted/enchanted_belts.json
@@ -0,0 +1,197 @@
+[
+ {
+ "abstract": "mbelt_leather",
+ "type": "TOOL_ARMOR",
+ "name": "magic leather belt",
+ "description": "A leather belt. Useful for making your pair of pants fit.",
+ "weight": "102 g",
+ "volume": "250 ml",
+ "price": 90000,
+ "bashing": 5,
+ "material": [ "leather" ],
+ "symbol": "[",
+ "color": "brown",
+ "covers": [ "TORSO" ],
+ "coverage": 5,
+ "material_thickness": 2,
+ "use_action": {
+ "type": "holster",
+ "holster_prompt": "Stick what into your belt",
+ "holster_msg": "You tuck your %s into your %s",
+ "max_volume": "500 ml",
+ "max_weight": 400,
+ "draw_cost": 60,
+ "flags": [ "BELT_CLIP" ]
+ },
+ "flags": [ "WAIST", "WATER_FRIENDLY", "STURDY" ]
+ },
+ {
+ "type": "TOOL_ARMOR",
+ "copy-from": "mbelt_leather",
+ "id": "mbelt_haste",
+ "name": "Belt of Haste",
+ "relic_data": {
+ "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "SPEED", "multiply": 0.15, "add": 5 } ] } ]
+ }
+ },
+ {
+ "type": "TOOL_ARMOR",
+ "copy-from": "mbelt_leather",
+ "id": "mbelt_thor",
+ "name": "Megingjörð",
+ "description": "The mythical belt of Thor, god of thunder. Or at least so it appears. It doubles the wearer's base strength.",
+ "material": [ "superalloy" ],
+ "material_thickness": 10,
+ "environmental_protection": 20,
+ "weight_capacity_bonus": "50 kg",
+ "relic_data": {
+ "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "STRENGTH", "multiply": 1.0 } ] } ]
+ }
+ },
+ {
+ "type": "TOOL_ARMOR",
+ "copy-from": "mbelt_leather",
+ "id": "mbelt_pockets_lesser",
+ "name": "Lesser Girdle of Pockets",
+ "description": "A wide girdle that fits around your waist, coverd in numerous small pouches that hold a lot more than they should, and the weight of their contents is greatly reduced.",
+ "coverage": 10,
+ "encumbrance": 4,
+ "weight_capacity_bonus": "5 kg",
+ "storage": "10 L"
+ },
+ {
+ "type": "TOOL_ARMOR",
+ "copy-from": "mbelt_leather",
+ "id": "mbelt_pockets_greater",
+ "name": "Greater Girdle of Pockets",
+ "description": "A wide girdle that fits around your waist, coverd in numerous small pouches that hold a lot more than they should, and the weight of their contents is greatly reduced.",
+ "coverage": 10,
+ "encumbrance": 6,
+ "weight_capacity_bonus": "10 kg",
+ "storage": "15 L"
+ },
+ {
+ "type": "TOOL_ARMOR",
+ "copy-from": "mbelt_leather",
+ "id": "mbelt_weaponry",
+ "name": "Belt of Weaponry",
+ "description": "A wide girdle that fits around your waist, you can sheath or holster any weapon into it in the blink of an eye, and it seemingly stores them somewhere else.",
+ "coverage": 10,
+ "encumbrance": 3,
+ "weight_capacity_bonus": "10 kg",
+ "use_action": {
+ "type": "holster",
+ "holster_prompt": "Stick what into your belt",
+ "holster_msg": "You tuck your %s into your %s",
+ "min_volume": "1 ml",
+ "max_volume": "4 L",
+ "max_weight": "5 kg",
+ "draw_cost": 5,
+ "multi": 4,
+ "skills": [
+ "pistol",
+ "shotgun",
+ "cutting",
+ "archery",
+ "bashing",
+ "launcher",
+ "melee",
+ "rifle",
+ "smg",
+ "stabbing",
+ "throw",
+ "ALL",
+ "gun",
+ "unarmed"
+ ],
+ "flags": [ "SHEATH_KNIFE", "SHEATH_SWORD", "BELT_CLIP", "SHEATH_SPEAR" ]
+ }
+ },
+ {
+ "type": "ARMOR",
+ "id": "mbelt_technomancer_toolbelt",
+ "name": "technomancer's toolbelt",
+ "name_plural": "technomancer's toolbelts",
+ "weight": "2000 g",
+ "color": "brown",
+ "covers": [ "TORSO" ],
+ "storage": "1 L",
+ "symbol": "[",
+ "description": "A custom-built leather utility belt that instantly creates any tool that you reach for. Activate to sheathe/draw a weapon.",
+ "price": 500000,
+ "material": [ "leather", "steel" ],
+ "volume": "4 L",
+ "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY", "WAIST", "OVERSIZE" ],
+ "coverage": 10,
+ "encumbrance": 4,
+ "material_thickness": 4,
+ "use_action": [
+ {
+ "type": "holster",
+ "holster_prompt": "Sheath blade",
+ "holster_msg": "You sheath your %s",
+ "draw_cost": 3,
+ "min_volume": "250 ml",
+ "max_volume": "1 L",
+ "flags": [ "SHEATH_KNIFE", "SHEATH_SWORD" ]
+ },
+ "CROWBAR"
+ ],
+ "qualities": [
+ [ "HAMMER", 3 ],
+ [ "PRY", 1 ],
+ [ "SAW_M", 2 ],
+ [ "SAW_W", 2 ],
+ [ "WRENCH", 2 ],
+ [ "AXE", 1 ],
+ [ "SCREW", 1 ],
+ [ "HAMMER_FINE", 1 ],
+ [ "SAW_M_FINE", 1 ],
+ [ "WRENCH_FINE", 1 ],
+ [ "SCREW_FINE", 1 ]
+ ]
+ },
+ {
+ "type": "TOOL_ARMOR",
+ "copy-from": "mbelt_leather",
+ "id": "mbelt_iron_whip",
+ "name": "Belt of The Iron Whip",
+ "name_plural": "Belts of the Iron Whip",
+ "volume": "1 L",
+ "material": [ "steel" ],
+ "description": "A braided but flexible belt seemingly made of metal. You can activate it to transform it into a whip and flay your enemies.",
+ "material_thickness": 4,
+ "flags": [ "STURDY" ],
+ "use_action": {
+ "type": "transform",
+ "target": "mwhip_iron",
+ "active": true,
+ "moves": 20,
+ "msg": "You grab the belt and it uncoils to become a flexible metal whip in your hand!"
+ }
+ },
+ {
+ "id": "mwhip_iron",
+ "type": "GENERIC",
+ "category": "weapons",
+ "symbol": "/",
+ "color": "light_gray",
+ "name": "The Iron Whip",
+ "description": "A long braided flexible steel bullwhip that narrows into a sharp blade at the end. Easily capable of slicing and dicing anything that comes at you. It transforms back into a belt.",
+ "weight": "2154 g",
+ "volume": "2 L",
+ "price": 350000,
+ "material": [ "steel" ],
+ "flags": [ "REACH_ATTACK", "REACH3", "WHIP", "UNBREAKABLE_MELEE" ],
+ "techniques": [ "WBLOCK_1", "SWEEP", "WHIP_DISARM", "WRAP" ],
+ "cutting": 16,
+ "bashing": 8,
+ "use_action": {
+ "type": "transform",
+ "target": "mbelt_iron_whip",
+ "active": false,
+ "moves": 20,
+ "msg": "You loop the whip in your hand and it coils back into a belt form in an instant."
+ }
+ }
+]
diff --git a/data/mods/Magiclysm/enchanted/enchanted_boots.json b/data/mods/Magiclysm/enchanted/enchanted_boots.json
new file mode 100644
index 0000000000000..569ef955cfe12
--- /dev/null
+++ b/data/mods/Magiclysm/enchanted/enchanted_boots.json
@@ -0,0 +1,71 @@
+[
+ {
+ "id": "mboots_sevenleague",
+ "type": "ARMOR",
+ "copy-from": "boots_hiking",
+ "name": "seven league boots",
+ "name_plural": "pairs of seven league boots",
+ "looks_like": "boots_hiking",
+ "description": "Rugged yet extremely comfortable and well fitting boots of worn leather and steel, they look like they've seen a lot of use and will likely see a lot more. They make your movement a lot less work.",
+ "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "MOVE_COST", "add": -30 } ] } ] },
+ "encumbrance": 8,
+ "warmth": 30,
+ "material_thickness": 3,
+ "environmental_protection": 3,
+ "flags": [ "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "mboots_haste",
+ "type": "ARMOR",
+ "copy-from": "boots_hiking",
+ "name": "boots of haste",
+ "name_plural": "pairs of boots of haste",
+ "looks_like": "boots_hiking",
+ "description": "Rugged yet extremely comfortable and well fitting boots of worn leather and steel, they look like they've seen a lot of use and will likely see a lot more. They make your movement a lot less work.",
+ "relic_data": {
+ "passive_effects": [
+ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "MOVE_COST", "add": -20 } ] },
+ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "SPEED", "add": 10 } ] }
+ ]
+ },
+ "encumbrance": 8,
+ "warmth": 30,
+ "material_thickness": 3,
+ "environmental_protection": 3,
+ "flags": [ "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "mboots_escape",
+ "type": "TOOL_ARMOR",
+ "copy-from": "boots_hiking",
+ "name": "escape boots",
+ "name_plural": "escape boots",
+ "looks_like": "boots_hiking",
+ "description": "Rugged yet extremely comfortable and well fitting boots of worn leather and steel, these boots can be activated once a day to escape from nasty situations, teleporting you a good distance in a random direction.",
+ "initial_charges": 24,
+ "max_charges": 24,
+ "charges_per_use": 24,
+ "artifact_data": { "charge_type": "ARTC_TIME" },
+ "use_action": { "type": "cast_spell", "spell_id": "magus_escape", "no_fail": true, "level": 10, "need_worn": true },
+ "encumbrance": 8,
+ "warmth": 30,
+ "material_thickness": 3,
+ "environmental_protection": 3,
+ "flags": [ "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "mboots_grounding",
+ "type": "ARMOR",
+ "copy-from": "boots_hiking",
+ "name": "boots of grounding",
+ "name_plural": "pairs of boots of grounding",
+ "looks_like": "boots_hiking",
+ "description": "Rugged yet extremely comfortable and well fitting boots of leather with small engraved runes seemingly filled with rubber. When worn, you are immune to damage from electricity.",
+ "encumbrance": 8,
+ "warmth": 30,
+ "material_thickness": 3,
+ "environmental_protection": 3,
+ "flags": [ "WATERPROOF", "STURDY" ],
+ "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_ELEC", "add": -20 } ] } ] }
+ }
+]
diff --git a/data/mods/Magiclysm/enchanted/enchanted_bracers.json b/data/mods/Magiclysm/enchanted/enchanted_bracers.json
new file mode 100644
index 0000000000000..9a3aa81295346
--- /dev/null
+++ b/data/mods/Magiclysm/enchanted/enchanted_bracers.json
@@ -0,0 +1,101 @@
+[
+ {
+ "id": "mbracer_steel_pair",
+ "type": "TOOL_ARMOR",
+ "category": "armor",
+ "name": "pair of steel bracers",
+ "name_plural": "pairs of steel bracers",
+ "description": "A full assembly of medieval arm protection.",
+ "weight": "1520 g",
+ "volume": "2500 ml",
+ "price": 20000,
+ "to_hit": -1,
+ "material": [ "steel", "leather" ],
+ "symbol": "[",
+ "color": "light_gray",
+ "covers": [ "ARMS" ],
+ "coverage": 45,
+ "encumbrance": 10,
+ "warmth": 10,
+ "material_thickness": 5,
+ "flags": [ "BELTED", "STURDY", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ]
+ },
+ {
+ "copy-from": "mbracer_steel_pair",
+ "type": "TOOL_ARMOR",
+ "id": "mbracer_steel_single",
+ "name": "steel bracer",
+ "name_plural": "steel bracers",
+ "weight": "770 g",
+ "volume": "1250 ml",
+ "covers": [ "ARM_EITHER" ]
+ },
+ {
+ "copy-from": "mbracer_steel_single",
+ "type": "TOOL_ARMOR",
+ "id": "mbracer_defense_lesser",
+ "name": "bracer of lesser defense",
+ "name_plural": "bracers of lesser defense",
+ "description": "A light but extremely sturdy steel bracer with an ornate shield engraved on the top, silver accentuates the intricate design. It protects your body with a light aura to reduce damage you take.",
+ "material_thickness": 6,
+ "flags": [ "BELTED", "STURDY", "BLOCK_WHILE_WORN" ],
+ "relic_data": {
+ "passive_effects": [
+ {
+ "has": "WORN",
+ "condition": "ALWAYS",
+ "values": [ { "value": "ARMOR_CUT", "add": -2 }, { "value": "ARMOR_BASH", "add": -2 }, { "value": "ARMOR_STAB", "add": -2 } ]
+ }
+ ]
+ }
+ },
+ {
+ "copy-from": "mbracer_steel_single",
+ "type": "TOOL_ARMOR",
+ "id": "mbracer_defense_greater",
+ "name": "bracer of greater defense",
+ "name_plural": "bracers of greater defense",
+ "description": "A light but extremely sturdy steel bracer with an ornate shield engraved on the top, gold accentuates the intricate design. It protects your body with a strong aura to reduce damage you take.",
+ "material_thickness": 6,
+ "flags": [ "BELTED", "STURDY", "BLOCK_WHILE_WORN" ],
+ "relic_data": {
+ "passive_effects": [
+ {
+ "has": "WORN",
+ "condition": "ALWAYS",
+ "values": [ { "value": "ARMOR_CUT", "add": -4 }, { "value": "ARMOR_BASH", "add": -4 }, { "value": "ARMOR_STAB", "add": -4 } ]
+ }
+ ]
+ }
+ },
+ {
+ "copy-from": "mbracer_steel_single",
+ "type": "TOOL_ARMOR",
+ "id": "mbracer_lightning_lesser",
+ "name": "lesser bracer of lightning",
+ "name_plural": "lesser bracers of lightning",
+ "description": "A light but extremely sturdy steel bracer with an ornate bundle of lightning bolts engraved on the top, silver accentuates the intricate design. It protects your body with a light aura to reduce electrical damage you take, as well as being able to release a Jolt spell 3 times a day.",
+ "initial_charges": 72,
+ "max_charges": 72,
+ "charges_per_use": 24,
+ "artifact_data": { "charge_type": "ARTC_TIME" },
+ "flags": [ "BELTED", "STURDY", "BLOCK_WHILE_WORN" ],
+ "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_ELEC", "add": -5 } ] } ] },
+ "use_action": { "type": "cast_spell", "spell_id": "jolt", "no_fail": true, "level": 15, "need_worn": true }
+ },
+ {
+ "copy-from": "mbracer_steel_single",
+ "type": "TOOL_ARMOR",
+ "id": "mbracer_lightning_greater",
+ "name": "greater bracer of lightning",
+ "name_plural": "greater bracers of lightning",
+ "description": "A light but extremely sturdy steel bracer with an ornate bundle of lightning bolts engraved on the top, gold accentuates the intricate design. It protects your body with a strong aura to reduce electrical damage you take, as well as being able to release a Lightning Bolt spell 3 times a day.",
+ "initial_charges": 72,
+ "max_charges": 72,
+ "charges_per_use": 24,
+ "artifact_data": { "charge_type": "ARTC_TIME" },
+ "flags": [ "BELTED", "STURDY", "BLOCK_WHILE_WORN" ],
+ "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_ELEC", "add": -10 } ] } ] },
+ "use_action": { "type": "cast_spell", "spell_id": "lightning_bolt", "no_fail": true, "level": 15, "need_worn": true }
+ }
+]
diff --git a/data/mods/Magiclysm/enchanted/enchanted_gunmods.json b/data/mods/Magiclysm/enchanted/enchanted_gunmods.json
new file mode 100644
index 0000000000000..818988fd33a51
--- /dev/null
+++ b/data/mods/Magiclysm/enchanted/enchanted_gunmods.json
@@ -0,0 +1,83 @@
+[
+ {
+ "id": "magic_suppressor",
+ "type": "GUNMOD",
+ "name": "'Silent Winds' suppressor",
+ "//": "Combination of the doubled best stats of the homemade & solvent trap suppressors w/ +1 enchantment & volume reduction to half",
+ "description": "Rather than using purely wipe media, an additional localized silence spell in this tube quiets gunshots going through to hearing-safe levels.",
+ "weight": "804 g",
+ "volume": "375 ml",
+ "price": 77000,
+ "to_hit": 2,
+ "bashing": 3,
+ "material": [ "steel" ],
+ "symbol": ":",
+ "color": "white",
+ "location": "muzzle",
+ "mod_targets": [ "pistol", "smg", "rifle" ],
+ "//install_time": "20 s",
+ "handling_modifier": 2,
+ "consume_chance": 220,
+ "consume_divisor": 242,
+ "loudness_modifier": -33,
+ "flags": [ "CONSUMABLE" ]
+ },
+ {
+ "id": "mana_laser_rail",
+ "type": "GUNMOD",
+ "name": { "str": "mana laser sight (rail)", "str_pl": "mana laser sights (rail)" },
+ "description": "A small visible-light laser using light shown through a mana crystal that mounts on a firearm's accessory rail to enhance ease and speed of target acquisition. Aside from increased weight, there are no drawbacks. You can rotate the attachment rail to fit under the barrel.",
+ "weight": "108 g",
+ "volume": "250 ml",
+ "integral_volume": 0,
+ "price": 36000,
+ "material": [ "plastic", "steel" ],
+ "symbol": ":",
+ "color": "dark_gray",
+ "location": "rail",
+ "mod_targets": [ "smg", "rifle", "pistol", "shotgun", "crossbow", "launcher" ],
+ "sight_dispersion": 27,
+ "aim_speed": 9,
+ "min_skills": [ [ "weapon", 2 ], [ "gun", 2 ] ],
+ "use_action": { "menu_text": "Rotate", "type": "transform", "target": "mana_laser_under", "msg": "You rotate the laser sight." }
+ },
+ {
+ "id": "mana_laser_under",
+ "type": "GUNMOD",
+ "name": { "str": "mana laser sight (underbarrel)", "str_pl": "mana laser sights (underbarrel)" },
+ "description": "A small visible-light laser using light shown through a mana crystal that mounts on a firearm's accessory rail to enhance ease and speed of target acquisition. Aside from increased weight, there are no drawbacks. You can rotate the attachment rail to fit on the rail.",
+ "weight": "108 g",
+ "volume": "250 ml",
+ "integral_volume": 0,
+ "price": 36000,
+ "material": [ "plastic", "steel" ],
+ "symbol": ":",
+ "color": "dark_gray",
+ "location": "underbarrel",
+ "mod_targets": [ "smg", "rifle", "pistol", "shotgun", "crossbow", "bow", "launcher" ],
+ "sight_dispersion": 27,
+ "aim_speed": 9,
+ "min_skills": [ [ "weapon", 2 ], [ "gun", 2 ] ],
+ "use_action": { "menu_text": "Rotate", "type": "transform", "target": "mana_laser_rail", "msg": "You rotate the laser sight." },
+ "flags": [ "PUMP_RAIL_COMPATIBLE" ]
+ },
+ {
+ "id": "mana_dot_sight",
+ "type": "GUNMOD",
+ "name": "mana dot sight",
+ "description": "Adds a blue dot optic made from crystallized mana to the top of your gun, replacing the iron sights. Increases accuracy and weight.",
+ "weight": "270 g",
+ "volume": "250 ml",
+ "integral_volume": 0,
+ "price": 68000,
+ "material": [ "plastic", "steel" ],
+ "symbol": ":",
+ "color": "dark_gray",
+ "location": "sights",
+ "mod_targets": [ "smg", "rifle", "shotgun", "pistol", "crossbow", "launcher" ],
+ "sight_dispersion": 21,
+ "aim_speed": 7,
+ "min_skills": [ [ "weapon", 2 ], [ "gun", 2 ] ],
+ "flags": [ "DISABLE_SIGHTS" ]
+ }
+]
diff --git a/data/mods/Magiclysm/enchanted/enchanted_masks.json b/data/mods/Magiclysm/enchanted/enchanted_masks.json
new file mode 100644
index 0000000000000..dc94dac1711a0
--- /dev/null
+++ b/data/mods/Magiclysm/enchanted/enchanted_masks.json
@@ -0,0 +1,53 @@
+[
+ {
+ "abstract": "mmask",
+ "type": "TOOL_ARMOR",
+ "category": "armor",
+ "name": "magic mask",
+ "description": "A generic magic mask.",
+ "weight": "442 g",
+ "volume": "750 ml",
+ "price": 200000,
+ "to_hit": -3,
+ "material": [ "steel", "leather" ],
+ "symbol": "[",
+ "color": "dark_gray",
+ "covers": [ "MOUTH", "EYES" ],
+ "coverage": 95,
+ "encumbrance": 10,
+ "warmth": 10,
+ "material_thickness": 2,
+ "environmental_protection": 1,
+ "flags": [ "WATER_FRIENDLY", "STURDY" ]
+ },
+ {
+ "type": "TOOL_ARMOR",
+ "id": "mmask_disappearance",
+ "name": "mask of disappearance",
+ "name_plural": "masks of disappearance",
+ "description": "A mask with no facial features at all, just eye and mouth holes, upon activation it makes everything ignore your presence for a while.",
+ "copy-from": "mmask",
+ "initial_charges": 12,
+ "max_charges": 12,
+ "charges_per_use": 12,
+ "use_action": { "type": "cast_spell", "spell_id": "invisibility", "no_fail": true, "level": 15, "need_worn": true },
+ "artifact_data": { "charge_type": "ARTC_TIME" }
+ },
+ {
+ "type": "TOOL_ARMOR",
+ "id": "mmask_vision",
+ "name": "mask of perfect vision",
+ "name_plural": "masks of perfect vision",
+ "description": "A decidedly steampunk-looking half mask that covers the eye area of the face, it has large lenses that correct and greatly enhance the vision of the wearer.",
+ "copy-from": "mmask",
+ "covers": [ "EYES" ],
+ "coverage": 100,
+ "encumbrance": 5,
+ "environmental_protection": 6,
+ "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FIX_FARSIGHT", "ZOOM" ],
+ "qualities": [ [ "GLARE", 2 ] ],
+ "relic_data": {
+ "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "PERCEPTION", "multiply": 0.25 } ] } ]
+ }
+ }
+]
diff --git a/data/mods/Magiclysm/enchanted/enchanted_melee.json b/data/mods/Magiclysm/enchanted/enchanted_melee.json
index 12ec021fb9a39..88fc2a3c0324a 100644
--- a/data/mods/Magiclysm/enchanted/enchanted_melee.json
+++ b/data/mods/Magiclysm/enchanted/enchanted_melee.json
@@ -754,5 +754,168 @@
"name": "dao +2",
"proportional": { "price": 6.0, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 },
"relative": { "to_hit": 2 }
+ },
+ {
+ "id": "rune_biomancer_weapon",
+ "type": "GENERIC",
+ "name": "Biomancer spear",
+ "//": "Effectively a durable stone spear +1 with IMPALE tech. based off Wicked Bonespear. Lorewise, it would make sense for novice Biomancers to be developing their skills in spears so they can adequately use the Bonespear(No whips/REACH3 for you!) once they're proficient enough to summon one. Should be weaker than other school weapons DPSwise due to reach.",
+ "description": "A grotesque bone spearhead on a stout wooden pole. There is a Biomancer rune embedded at the base of the head.",
+ "weight": 988,
+ "volume": "1250 ml",
+ "price": 3900,
+ "to_hit": 2,
+ "bashing": 6,
+ "cutting": 15,
+ "material": [ "wood", "bone" ],
+ "symbol": "/",
+ "color": "light_gray",
+ "techniques": [ "WBLOCK_1", "IMPALE" ],
+ "qualities": [ [ "COOK", 1 ] ],
+ "flags": [ "SPEAR", "REACH_ATTACK", "DURABLE_MELEE", "SHEATH_SPEAR", "TRADER_AVOID", "MAGIC_FOCUS" ]
+ },
+ {
+ "id": "rune_technomancer_weapon",
+ "type": "GENERIC",
+ "name": "Technomancer toolbar",
+ "//": "Combat stats based off crowbar +1, techniques off Halligan bar(closest non-magical substitute), weight based on 75% of hammer & wrench(since their handles aren't included) + 100% crowbar with benefit from +1 enchantment",
+ "description": "This staff incorporates a sturdy cresent wrench on top of a prybar and a hammer on the other in a convienent package. There is a Technomancer rune embedded in the hammerhead.",
+ "weight": 1536,
+ "volume": "1750 ml",
+ "price": 3900,
+ "to_hit": 1,
+ "bashing": 15,
+ "cutting": 1,
+ "material": [ "steel" ],
+ "symbol": "/",
+ "color": "light_gray",
+ "techniques": [ "WBLOCK_1", "BRUTAL", "SWEEP" ],
+ "qualities": [ [ "PRY", 3 ], [ "HAMMER", 3 ], [ "HAMMER_FINE", 1 ], [ "WRENCH", 2 ], [ "WRENCH_FINE", 2 ] ],
+ "flags": [ "DURABLE_MELEE", "BELT_CLIP", "TRADER_AVOID", "MAGIC_FOCUS" ]
+ },
+ {
+ "id": "rune_magus_weapon",
+ "type": "GENERIC",
+ "name": { "str": "Magus staff", "str_pl": "Magus staves" },
+ "//": "The classical vision of the wizard gets a classic weapon. DPS Stats are between the regular and ironshod versions. Stats are slightly worse than the QS+1 due to the glass weight slowing attack speed.",
+ "description": "A quarterstaff with runes carved into it and two glass jars, heat-tempered and infused with mana for durability, to act as mana receptacles. There are two Magi runes embedded at the tips.",
+ "weight": 1530,
+ "volume": "1500 ml",
+ "price": 3900,
+ "to_hit": 2,
+ "bashing": 20,
+ "material": [ "wood", "diamond" ],
+ "symbol": "/",
+ "color": "brown",
+ "techniques": [ "WBLOCK_2", "RAPID", "SWEEP" ],
+ "flags": [ "DURABLE_MELEE", "SHEATH_SPEAR", "TRADER_AVOID", "MAGIC_FOCUS" ]
+ },
+ {
+ "id": "rune_kelvinist_weapon",
+ "type": "GENERIC",
+ "name": "Kelvinist flamberge",
+ "//": "Flame-bladed sword covers half of Kelvinist's heat-cold theme. Combat stats equivalent to cutlass +1 with BRUTAL technique.",
+ "description": "A sword with an undulating blade, reminiscent of a flame. There is a Kelvinist rune embedded in the pommel.",
+ "weight": 1530,
+ "volume": "1250 ml",
+ "price": 3900,
+ "to_hit": 3,
+ "bashing": 7,
+ "cutting": 29,
+ "material": [ "wood", "steel" ],
+ "symbol": "/",
+ "color": "light_gray",
+ "techniques": [ "WBLOCK_2", "BRUTAL" ],
+ "qualities": [ [ "CUT", 1 ], [ "BUTCHER", 9 ] ],
+ "use_action": "WEATHER_TOOL",
+ "flags": [ "DURABLE_MELEE", "SHEATH_SWORD", "TRADER_AVOID", "MAGIC_FOCUS", "THERMOMETER" ]
+ },
+ {
+ "id": "rune_stormshaper_weapon",
+ "type": "GENERIC",
+ "name": "Stormshaper axe",
+ "//": "Equivalent to copper ax +1, with volume reduction so it can be sheathed like the other school weapons. Metals chosen for being two most conductive metals + balancing reasons",
+ "description": "A forged copper axe with silver trimmings and a wooden handle. There is a Stormshaper rune embedded in the eye.",
+ "weight": 3330,
+ "volume": "2 L",
+ "price": 3900,
+ "to_hit": 3,
+ "bashing": 19,
+ "cutting": 13,
+ "material": [ "wood", "copper", "silver" ],
+ "symbol": "/",
+ "color": "brown",
+ "techniques": [ "WBLOCK_1", "BRUTAL", "SWEEP" ],
+ "qualities": [ [ "AXE", 1 ], [ "BUTCHER", -20 ] ],
+ "use_action": "WEATHER_TOOL",
+ "flags": [ "DURABLE_MELEE", "BELT_CLIP", "TRADER_AVOID", "MAGIC_FOCUS", "HYGROMETER", "BAROMETER" ]
+ },
+ {
+ "id": "rune_animist_weapon",
+ "type": "GENERIC",
+ "name": "Animist athame",
+ "//": "Tool qualities equivalent to steak knife, combat equiv. to copper knife + 1 w/ RAPID and BLOCK1, size/weight off combat knife +1",
+ "description": "A steel ritual knife used by Animists to draw blood for summoning. Their school rune is embedded in the crossguard.",
+ "weight": 504,
+ "volume": "500 ml",
+ "price": 3000,
+ "bashing": 2,
+ "cutting": 13,
+ "material": [ "wood", "steel" ],
+ "symbol": ";",
+ "color": "light_gray",
+ "techniques": [ "WBLOCK_1", "PRECISE" ],
+ "qualities": [ [ "CUT", 1 ], [ "CUT_FINE", 1 ], [ "BUTCHER", 11 ] ],
+ "flags": [ "STAB", "SHEATH_KNIFE", "MAGIC_FOCUS", "TRADER_AVOID" ]
+ },
+ {
+ "type": "GENERIC",
+ "id": "springstaff-retracted",
+ "category": "weapons",
+ "name": { "str": "springstaff(baton)", "str_pl": "springstaves(baton)" },
+ "description": "This versatile weapon uses Technomancy-enhanced springs to keep the staff tips retracted while in baton configuration. Activate to extend.",
+ "weight": "1800 g",
+ "to_hit": 2,
+ "color": "dark_gray",
+ "symbol": "/",
+ "material": [ "steel", "plastic" ],
+ "techniques": [ "WBLOCK_1", "RAPID" ],
+ "flags": [ "DURABLE_MELEE", "BELT_CLIP" ],
+ "use_action": {
+ "menu_text": "Extend to staff",
+ "type": "transform",
+ "target": "springstaff-extended",
+ "msg": "You snap open your springstaff into staff mode.",
+ "moves": 50,
+ "need_wielding": true
+ },
+ "volume": "750 ml",
+ "bashing": 12,
+ "price": 34000
+ },
+ {
+ "type": "GENERIC",
+ "id": "springstaff-extended",
+ "category": "weapons",
+ "name": { "str": "springstaff(staff)", "str_pl": "springstaves(staff)" },
+ "description": "This versatile weapon uses Technomancy-enhanced springs to keep the staff tips from retracting while in staff configuration. Activate to extend.",
+ "weight": "1800 g",
+ "to_hit": 3,
+ "color": "dark_gray",
+ "symbol": "/",
+ "material": [ "steel", "plastic" ],
+ "techniques": [ "WBLOCK_2", "RAPID", "SWEEP" ],
+ "flags": [ "DURABLE_MELEE", "SHEATH_SPEAR" ],
+ "use_action": {
+ "menu_text": "Retract to baton",
+ "type": "transform",
+ "target": "springstaff-retracted",
+ "msg": "You collapse your springstaff into baton mode.",
+ "moves": 200,
+ "need_wielding": true
+ },
+ "volume": "3 L",
+ "bashing": 19,
+ "price": 34000
}
]
diff --git a/data/mods/Magiclysm/enchanted/enchanted_misc.json b/data/mods/Magiclysm/enchanted/enchanted_misc.json
index 2e84c898c26f5..b717750e0ccfc 100644
--- a/data/mods/Magiclysm/enchanted/enchanted_misc.json
+++ b/data/mods/Magiclysm/enchanted/enchanted_misc.json
@@ -5,7 +5,7 @@
"symbol": "#",
"color": "light_gray",
"name": "heat cube",
- "description": "A smooth steel cube the size of your fist. Several buttons on the sides activate the powers of the cube.",
+ "description": "A smooth steel cube the size of your fist. Several buttons on the sides activate the powers of the cube.",
"price": 200000,
"price_postapoc": 500000,
"material": "steel",
@@ -16,7 +16,6 @@
"qualities": [ [ "HAMMER", 1 ] ],
"flags": [ "ALLOWS_REMOTE_USE", "FIRE" ],
"initial_charges": 60,
- "charges": 60,
"max_charges": 60,
"charges_per_use": 1,
"sub": "hotplate",
@@ -32,7 +31,7 @@
"menu_text": "Activate torch mode",
"moves": 150
},
- { "type": "firestarter", "moves_cost": 5 },
+ { "type": "firestarter" },
{ "flame": false, "type": "cauterize" }
]
},
@@ -54,7 +53,7 @@
"type": "TOOL",
"name": "skeleton key of opening",
"name_plural": "skeleton key of opening",
- "description": "A small gold skeleton key. You can activate it to unlock locked things.",
+ "description": "A small gold skeleton key. You can activate it to unlock locked things.",
"weight": "20 g",
"volume": 0,
"price": 500000,
diff --git a/data/mods/Magiclysm/enchanted/enchanted_ranged.json b/data/mods/Magiclysm/enchanted/enchanted_ranged.json
new file mode 100644
index 0000000000000..314624f1cfc91
--- /dev/null
+++ b/data/mods/Magiclysm/enchanted/enchanted_ranged.json
@@ -0,0 +1,106 @@
+[
+ {
+ "id": "rune_druid_weapon",
+ "type": "GUN",
+ "symbol": "(",
+ "color": "yellow",
+ "name": "Druid composite bow",
+ "//": "Equivalent to composite bow +1 for dispersion/reload/weight/range/encumb/bash, with two mod slots added equivalent to other weapons getting techniques",
+ "description": "A bow made of multiple materials to maximize energy efficiency. There are two Druid runes embedded at the tips.",
+ "price": 32000,
+ "material": [ "wood", "bone" ],
+ "flags": [
+ "FIRE_TWOHAND",
+ "STR_DRAW",
+ "RELOAD_AND_SHOOT",
+ "PRIMITIVE_RANGED_WEAPON",
+ "BELTED",
+ "TRADER_AVOID",
+ "MAGIC_FOCUS",
+ "DURABLE_MELEE",
+ "WATER_FRIENDLY"
+ ],
+ "skill": "archery",
+ "min_strength": 5,
+ "ammo": "arrow",
+ "weight": 360,
+ "volume": "1750 ml",
+ "bashing": 9,
+ "armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 13 },
+ "reload_noise_volume": 3,
+ "loudness": 6,
+ "ranged_damage": 5,
+ "range": 13,
+ "dispersion": 135,
+ "durability": 7,
+ "clip_size": 1,
+ "reload": 32,
+ "valid_mod_locations": [ [ "sights", 1 ], [ "accessories", 1 ], [ "dampening", 1 ] ]
+ },
+ {
+ "id": "m47a1",
+ "copy-from": "pistol_revolver",
+ "type": "GUN",
+ "name": "M47A1 Techno-Medusa",
+ "name_plural": "M47A1 Techno-Medusae",
+ "description": "A magically-enhanced update to the Phillips & Rodgers' M47 Medusa, a multi-caliber revolver aimed at survivalists. While Technomancy improves the reliability with smaller cartridges, it is not as accurate as dedicated caliber revolvers due to freebore.",
+ "weight": "1333 g",
+ "volume": "750 ml",
+ "price": 74000,
+ "to_hit": -1,
+ "bashing": 9,
+ "material": [ "steel", "wood" ],
+ "symbol": "(",
+ "color": "dark_gray",
+ "ammo": [ "9mm", "9x18", "380", "357mag", "38" ],
+ "ranged_damage": 0,
+ "dispersion": 558,
+ "durability": 7,
+ "blackpowder_tolerance": 66,
+ "loudness": 23,
+ "clip_size": 6,
+ "valid_mod_locations": [
+ [ "accessories", 1 ],
+ [ "mechanism", 1 ],
+ [ "barrel", 1 ],
+ [ "grip", 1 ],
+ [ "rail mount", 1 ],
+ [ "sights", 1 ],
+ [ "stock mount", 1 ],
+ [ "underbarrel mount", 1 ]
+ ],
+ "flags": [ "RELOAD_ONE", "NEVER_JAMS", "RELOAD_EJECT" ]
+ },
+ {
+ "id": "gunblade",
+ "type": "GUN",
+ "name": "gunblade",
+ "description": "Constructed similarly to a falcata, this forward-sloping blade has a short-barrel pump shotgun attached to the blade's spine for finishing blows or a first strike.",
+ "weight": "1539 g",
+ "volume": "1750 ml",
+ "price": 8000,
+ "to_hit": 2,
+ "bashing": 10,
+ "cutting": 22,
+ "material": [ "steel" ],
+ "symbol": "/",
+ "color": "dark_gray",
+ "techniques": [ "WBLOCK_2" ],
+ "qualities": [ [ "CUT", 1 ], [ "BUTCHER", 20 ] ],
+ "skill": "shotgun",
+ "ranged_damage": 1,
+ "dispersion": 600,
+ "durability": 6,
+ "blackpowder_tolerance": 66,
+ "clip_size": 3,
+ "range": -4,
+ "modes": [ [ "DEFAULT", "single", 1 ] ],
+ "ammo": "shot",
+ "reload": 200,
+ "barrel_length": 2,
+ "valid_mod_locations": [ [ "mechanism", 1 ] ],
+ "reload_noise": "chuk chuk.",
+ "flags": [ "RELOAD_ONE", "PUMP_ACTION", "DURABLE_MELEE", "SHEATH_SWORD" ],
+ "faults": [ "fault_gun_blackpowder", "fault_gun_dirt" ]
+ }
+]
diff --git a/data/mods/Magiclysm/enchanted/enchanted_rings.json b/data/mods/Magiclysm/enchanted/enchanted_rings.json
index a5ee7ee8b0c5c..016d95249481c 100644
--- a/data/mods/Magiclysm/enchanted/enchanted_rings.json
+++ b/data/mods/Magiclysm/enchanted/enchanted_rings.json
@@ -72,7 +72,6 @@
"description": "An ornate silver ring engraved with daggers that conjures a near perfect throwing knife into your hand on activation.",
"use_action": { "type": "cast_spell", "spell_id": "conj_throwing_blade1", "no_fail": true, "level": 1, "need_worn": true },
"initial_charges": 5,
- "charges": 5,
"max_charges": 5,
"charges_per_use": 1,
"artifact_data": { "charge_type": "ARTC_TIME" }
diff --git a/data/mods/Magiclysm/enchanted/enchanted_unarmed.json b/data/mods/Magiclysm/enchanted/enchanted_unarmed.json
index 7ef6fa2f9aadd..e2cf9fc97c7e9 100644
--- a/data/mods/Magiclysm/enchanted/enchanted_unarmed.json
+++ b/data/mods/Magiclysm/enchanted/enchanted_unarmed.json
@@ -68,5 +68,48 @@
"qualities": [ [ "HAMMER", 2 ] ],
"techniques": [ "WBLOCK_1", "BRUTAL" ],
"flags": [ "UNARMED_WEAPON", "DURABLE_MELEE", "NONCONDUCTIVE", "OVERSIZE", "MESSY" ]
+ },
+ {
+ "id": "shotcestus",
+ "copy-from": "shotgun_base",
+ "type": "GUN",
+ "name": { "str": "shotcestus", "str_pl": "shotcesti" },
+ "description": "A sawn-off double-barrel shotgun mounted on a metal cestus. The lack of a stock to absorb recoil means some strength is required to fire.",
+ "weight": "1566 g",
+ "volume": "1500 ml",
+ "price": 20000,
+ "bashing": 12,
+ "material": [ "steel" ],
+ "techniques": [ "WBLOCK_1", "BRUTAL" ],
+ "min_strength": 7,
+ "ranged_damage": 1,
+ "dispersion": 855,
+ "durability": 6,
+ "blackpowder_tolerance": 66,
+ "clip_size": 2,
+ "range": -8,
+ "modes": [ [ "DEFAULT", "single", 1 ], [ "DOUBLE", "double", 2 ] ],
+ "reload": 200,
+ "barrel_length": 2,
+ "valid_mod_locations": [ [ "mechanism", 1 ] ],
+ "flags": [ "UNARMED_WEAPON", "DURABLE_MELEE", "NEVER_JAMS", "RELOAD_EJECT", "RELOAD_ONE" ],
+ "faults": [ "fault_gun_blackpowder", "fault_gun_dirt" ]
+ },
+ {
+ "type": "GENERIC",
+ "id": "rune_earthshaper_weapon",
+ "symbol": "3",
+ "color": "light_gray",
+ "name": { "str": "Earthshaper cestus", "str_pl": "Earthshaper cesti" },
+ "//": "Equivalent to cestus +1 with BRUTAL and WBLOCK1",
+ "description": "A stone battle glove with carved runes encasing the hand, protecting it while increasing striking power. There is an Earthshaper rune embedded in the palm.",
+ "material": [ "stone", "leather", "steel" ],
+ "volume": "500 ml",
+ "weight": 873,
+ "bashing": 13,
+ "to_hit": 1,
+ "qualities": [ [ "HAMMER", 1 ] ],
+ "techniques": [ "WBLOCK_1", "BRUTAL" ],
+ "flags": [ "UNARMED_WEAPON", "DURABLE_MELEE", "TRADER_AVOID", "MAGIC_FOCUS" ]
}
]
diff --git a/data/mods/Magiclysm/enchanted/enchanted_wands.json b/data/mods/Magiclysm/enchanted/enchanted_wands.json
index bf622dd93e0ab..6725a495a6f86 100644
--- a/data/mods/Magiclysm/enchanted/enchanted_wands.json
+++ b/data/mods/Magiclysm/enchanted/enchanted_wands.json
@@ -11,11 +11,29 @@
"material": [ "wood" ],
"symbol": "|",
"color": "brown",
+ "flags": [ "BELT_CLIP", "NONCONDUCTIVE" ],
"charges_per_use": 1,
"ammo": "crystallized_mana",
"magazines": [ [ "crystallized_mana", [ "small_mana_crystal" ] ] ],
"magazine_well": 1
},
+ {
+ "abstract": "disp_wand",
+ "name": "Disposable Wand",
+ "type": "TOOL",
+ "weight": 230,
+ "volume": 2,
+ "price": 10000,
+ "bashing": 3,
+ "to_hit": 1,
+ "material": [ "wood" ],
+ "symbol": "|",
+ "color": "brown",
+ "flags": [ "BELT_CLIP", "NONCONDUCTIVE" ],
+ "initial_charges": 20,
+ "max_charges": 20,
+ "charges_per_use": 1
+ },
{
"type": "TOOL",
"id": "wand_magic_missile_minor",
@@ -189,5 +207,179 @@
"price": 30000,
"description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts cone of cold.",
"use_action": { "type": "cast_spell", "spell_id": "cone_cold", "no_fail": true, "level": 15, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_magic_missile_minor",
+ "name": "disposable minor wand of magic missile",
+ "name_plural": "disposable minor wands of magic missile",
+ "copy-from": "disp_wand",
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts magic missile.",
+ "use_action": { "type": "cast_spell", "spell_id": "magic_missile", "no_fail": true, "level": 5, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_magic_missile_lesser",
+ "name": "disposable lesser wand of magic missile",
+ "name_plural": "disposable lesser wands of magic missile",
+ "copy-from": "disp_wand",
+ "price": 20000,
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts magic missile.",
+ "use_action": { "type": "cast_spell", "spell_id": "magic_missile", "no_fail": true, "level": 10, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_magic_missile_greater",
+ "name": "disposable greater wand of magic missile",
+ "name_plural": "disposable greater wands of magic missile",
+ "copy-from": "disp_wand",
+ "price": 30000,
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts magic missile.",
+ "use_action": { "type": "cast_spell", "spell_id": "magic_missile", "no_fail": true, "level": 15, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_fireball_minor",
+ "name": "disposable minor wand of fireball",
+ "name_plural": "disposable minor wands of fireball",
+ "copy-from": "disp_wand",
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts fireball.",
+ "use_action": { "type": "cast_spell", "spell_id": "fireball", "no_fail": true, "level": 5, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_fireball_lesser",
+ "name": "disposable lesser wand of fireball",
+ "name_plural": "disposable lesser wands of fireball",
+ "copy-from": "disp_wand",
+ "price": 20000,
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts fireball.",
+ "use_action": { "type": "cast_spell", "spell_id": "fireball", "no_fail": true, "level": 10, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_fireball_greater",
+ "name": "disposable greater wand of fireball",
+ "name_plural": "disposable greater wands of fireball",
+ "copy-from": "disp_wand",
+ "price": 30000,
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts fireball.",
+ "use_action": { "type": "cast_spell", "spell_id": "fireball", "no_fail": true, "level": 15, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_mana_beam_minor",
+ "name": "disposable minor wand of mana beam",
+ "name_plural": "disposable minor wands of mana beam",
+ "copy-from": "disp_wand",
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts mana beam.",
+ "use_action": { "type": "cast_spell", "spell_id": "magus_mana_beam", "no_fail": true, "level": 5, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_mana_beam_lesser",
+ "name": "disposable lesser wand of mana beam",
+ "name_plural": "disposable lesser wands of mana beam",
+ "copy-from": "disp_wand",
+ "price": 20000,
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts mana beam.",
+ "use_action": { "type": "cast_spell", "spell_id": "magus_mana_beam", "no_fail": true, "level": 10, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_mana_beam_greater",
+ "name": "disposable greater wand of mana beam",
+ "name_plural": "disposable greater wands of mana beam",
+ "copy-from": "disp_wand",
+ "price": 30000,
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts mana beam.",
+ "use_action": { "type": "cast_spell", "spell_id": "magus_mana_beam", "no_fail": true, "level": 15, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_point_flare_minor",
+ "name": "disposable minor wand of point flare",
+ "name_plural": "disposable minor wands of point flare",
+ "copy-from": "disp_wand",
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts point flare.",
+ "use_action": { "type": "cast_spell", "spell_id": "point_flare", "no_fail": true, "level": 5, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_point_flare_lesser",
+ "name": "disposable lesser wand of point flare",
+ "name_plural": "disposable lesser wands of point flare",
+ "copy-from": "disp_wand",
+ "price": 20000,
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts point flare.",
+ "use_action": { "type": "cast_spell", "spell_id": "point_flare", "no_fail": true, "level": 10, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_point_flare_greater",
+ "name": "disposable greater wand of point flare",
+ "name_plural": "disposable greater wands of point flare",
+ "copy-from": "disp_wand",
+ "price": 30000,
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts point flare.",
+ "use_action": { "type": "cast_spell", "spell_id": "point_flare", "no_fail": true, "level": 15, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_hoaryblast_minor",
+ "name": "disposable minor wand of hoary blast",
+ "name_plural": "disposable minor wands of hoary blast",
+ "copy-from": "disp_wand",
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts hoary blast.",
+ "use_action": { "type": "cast_spell", "spell_id": "hoary_blast", "no_fail": true, "level": 5, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_hoaryblast_lesser",
+ "name": "disposable lesser wand of hoary blast",
+ "name_plural": "disposable lesser wands of hoary blast",
+ "copy-from": "disp_wand",
+ "price": 20000,
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts hoary blast.",
+ "use_action": { "type": "cast_spell", "spell_id": "hoary_blast", "no_fail": true, "level": 10, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_hoaryblast_greater",
+ "name": "disposable greater wand of hoary blast",
+ "name_plural": "disposable greater wands of hoary blast",
+ "copy-from": "disp_wand",
+ "price": 30000,
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts hoary blast.",
+ "use_action": { "type": "cast_spell", "spell_id": "hoary_blast", "no_fail": true, "level": 15, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_cone_cold_minor",
+ "name": "disposable minor wand of cone of cold",
+ "name_plural": "disposable minor wands of cone of cold",
+ "copy-from": "disp_wand",
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts cone of cold.",
+ "use_action": { "type": "cast_spell", "spell_id": "cone_cold", "no_fail": true, "level": 5, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_cone_cold_lesser",
+ "name": "disposable lesser wand of cone of cold",
+ "name_plural": "disposable lesser wands of cone of cold",
+ "copy-from": "disp_wand",
+ "price": 20000,
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts cone of cold.",
+ "use_action": { "type": "cast_spell", "spell_id": "cone_cold", "no_fail": true, "level": 10, "need_wielding": true }
+ },
+ {
+ "type": "TOOL",
+ "id": "wand_disp_cone_cold_greater",
+ "name": "disposable greater wand of cone of cold",
+ "name_plural": "disposable greater wands of cone of cold",
+ "copy-from": "disp_wand",
+ "price": 30000,
+ "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts cone of cold.",
+ "use_action": { "type": "cast_spell", "spell_id": "cone_cold", "no_fail": true, "level": 15, "need_wielding": true }
}
]
diff --git a/data/mods/Magiclysm/field.json b/data/mods/Magiclysm/field.json
new file mode 100644
index 0000000000000..2cd801043c44f
--- /dev/null
+++ b/data/mods/Magiclysm/field.json
@@ -0,0 +1,15 @@
+[
+ {
+ "id": "fd_clairvoyant",
+ "type": "field_type",
+ "intensity_levels": [ { "name": "clairvoyance", "sym": "8", "dangerous": false } ],
+ "decay_amount_factor": 5,
+ "gas_absorption_factor": 12,
+ "dirty_transparency_cache": true,
+ "outdoor_age_speedup": "0 turns",
+ "priority": 8,
+ "half_life": "1 seconds",
+ "phase": "solid",
+ "display_field": false
+ }
+]
diff --git a/data/mods/Magiclysm/furniture.json b/data/mods/Magiclysm/furniture.json
index 4f95e2d0ccec8..f00d97b8108e8 100644
--- a/data/mods/Magiclysm/furniture.json
+++ b/data/mods/Magiclysm/furniture.json
@@ -21,5 +21,34 @@
"required_str": -1,
"flags": [ "ALLOW_FIELD_EFFECT" ],
"description": "This is a rough magic circle, carved into the ground and decorated with blood, candles, and other small knick-knacks."
+ },
+ {
+ "type": "furniture",
+ "id": "f_glow_boulder",
+ "looks_like": "f_boulder_large",
+ "name": "large glowing boulder",
+ "description": "Something about this doesn't look right.",
+ "symbol": "O",
+ "color": "green",
+ "move_cost_mod": -1,
+ "coverage": 65,
+ "required_str": 32,
+ "flags": [ "NOITEM", "MINEABLE", "BASHABLE", "BLOCK_WIND" ],
+ "bash": {
+ "str_min": 64,
+ "str_max": 160,
+ "sound": "smash!",
+ "sound_fail": "thump.",
+ "items": [
+ { "item": "rock", "count": [ 10, 22 ] },
+ { "item": "sharp_rock", "count": [ 3, 7 ] },
+ { "item": "material_limestone", "charges": [ 2, 5 ], "prob": 30 },
+ { "item": "material_rocksalt", "count": [ 0, 1 ], "prob": 10 },
+ { "item": "material_rhodonite", "count": [ 0, 1 ], "prob": 1 },
+ { "item": "material_zincite", "count": [ 0, 5 ], "prob": 2 },
+ { "item": "orichalcum_lump", "count": [ 0, 3 ], "prob": 5 },
+ { "item": "orichalcum_sliver", "count": [ 1, 8 ], "prob": 20 }
+ ]
+ }
}
]
diff --git a/data/mods/Magiclysm/harvest.json b/data/mods/Magiclysm/harvest.json
index 2999bc41966c3..c0f2e7a3480ec 100644
--- a/data/mods/Magiclysm/harvest.json
+++ b/data/mods/Magiclysm/harvest.json
@@ -4,8 +4,8 @@
"//": "identical to mammal_large_fur except that half the fur has been replaced with feathers",
"type": "harvest",
"entries": [
- { "drop": "meat", "type": "flesh", "mass_ratio": 0.32 },
- { "drop": "meat_scrap", "type": "flesh", "mass_ratio": 0.01 },
+ { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.32 },
+ { "drop": "mutant_meat_scrap", "type": "flesh", "mass_ratio": 0.01 },
{ "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 },
{ "drop": "liver", "type": "offal", "mass_ratio": 0.01 },
{ "drop": "brain", "type": "flesh", "mass_ratio": 0.005 },
@@ -16,7 +16,7 @@
{ "drop": "bone", "type": "bone", "mass_ratio": 0.15 },
{ "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 },
{ "drop": "raw_fur", "type": "skin", "mass_ratio": 0.015 },
- { "drop": "fat", "type": "flesh", "mass_ratio": 0.07 },
+ { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.07 },
{ "drop": "feather", "type": "skin", "mass_ratio": 0.005 },
{ "drop": "adrenal_gland_large", "type": "bionic", "max": 2 }
]
@@ -26,8 +26,8 @@
"//": "drops regular stomach",
"type": "harvest",
"entries": [
- { "drop": "meat", "type": "flesh", "mass_ratio": 0.3 },
- { "drop": "meat_scrap", "type": "flesh", "mass_ratio": 0.03 },
+ { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.3 },
+ { "drop": "mutant_meat_scrap", "type": "flesh", "mass_ratio": 0.03 },
{ "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 },
{ "drop": "liver", "type": "offal", "mass_ratio": 0.01 },
{ "drop": "brain", "type": "flesh", "mass_ratio": 0.005 },
@@ -38,7 +38,7 @@
{ "drop": "bone", "type": "bone", "mass_ratio": 0.15 },
{ "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 },
{ "drop": "raw_fur", "type": "skin", "mass_ratio": 0.015 },
- { "drop": "fat", "type": "flesh", "mass_ratio": 0.07 },
+ { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.07 },
{ "drop": "feather", "type": "skin", "mass_ratio": 0.005 }
]
},
@@ -121,6 +121,26 @@
{ "drop": "adrenal_gland_large", "type": "bionic", "max": 2 }
]
},
+ {
+ "id": "mutant_mammal_large_leather",
+ "//": "drops large stomach",
+ "type": "harvest",
+ "entries": [
+ { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.32 },
+ { "drop": "mutant_meat_scrap", "type": "flesh", "mass_ratio": 0.01 },
+ { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 },
+ { "drop": "liver", "type": "offal", "mass_ratio": 0.01 },
+ { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 },
+ { "drop": "sweetbread", "type": "flesh", "mass_ratio": 0.002 },
+ { "drop": "kidney", "type": "offal", "mass_ratio": 0.002 },
+ { "drop": "stomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" },
+ { "drop": "bone", "type": "bone", "mass_ratio": 0.15 },
+ { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 },
+ { "drop": "raw_leather", "type": "skin", "mass_ratio": 0.02 },
+ { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.07 },
+ { "drop": "adrenal_gland_large", "type": "bionic", "max": 2 }
+ ]
+ },
{
"id": "mammal_large_wool",
"//": "drops large stomach",
@@ -141,6 +161,19 @@
{ "drop": "adrenal_gland_large", "type": "bionic", "max": 2 }
]
},
+ {
+ "id": "human_large_leather",
+ "type": "harvest",
+ "entries": [
+ { "drop": "mutant_human_flesh", "type": "flesh", "mass_ratio": 0.34 },
+ { "drop": "hstomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" },
+ { "drop": "bone", "type": "bone", "mass_ratio": 0.15 },
+ { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 },
+ { "drop": "raw_leather", "type": "skin", "mass_ratio": 0.02 },
+ { "drop": "mutant_human_fat", "type": "flesh", "mass_ratio": 0.07 },
+ { "drop": "adrenal_gland_large", "type": "bionic", "max": 2 }
+ ]
+ },
{
"id": "animal_large_noskin",
"//": "for those vertebrates that don't have something you can skin off of them",
@@ -160,6 +193,25 @@
{ "drop": "adrenal_gland_large", "type": "bionic", "max": 2 }
]
},
+ {
+ "id": "mutant_animal_large_noskin",
+ "//": "for those vertebrates that don't have something you can skin off of them",
+ "type": "harvest",
+ "entries": [
+ { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.32 },
+ { "drop": "mutant_meat_scrap", "type": "flesh", "mass_ratio": 0.01 },
+ { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 },
+ { "drop": "liver", "type": "offal", "mass_ratio": 0.01 },
+ { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 },
+ { "drop": "sweetbread", "type": "flesh", "mass_ratio": 0.002 },
+ { "drop": "kidney", "type": "offal", "mass_ratio": 0.002 },
+ { "drop": "stomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" },
+ { "drop": "bone", "type": "bone", "mass_ratio": 0.15 },
+ { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 },
+ { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.07 },
+ { "drop": "adrenal_gland_large", "type": "bionic", "max": 2 }
+ ]
+ },
{
"id": "dragon_black",
"type": "harvest",
@@ -234,5 +286,38 @@
{ "drop": "sinew", "type": "bone", "mass_ratio": 0.001 },
{ "drop": "raw_leather", "type": "skin", "mass_ratio": 0.01 }
]
+ },
+ {
+ "id": "stirge",
+ "//": "mainly arachnid drops with leather and proboscis",
+ "type": "harvest",
+ "entries": [
+ { "drop": "blood", "type": "flesh", "mass_ratio": 0.1 },
+ { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.33 },
+ { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.1 },
+ { "drop": "sinew", "type": "bone", "mass_ratio": 0.01 },
+ { "drop": "raw_leather", "type": "skin", "mass_ratio": 0.01 },
+ { "drop": "stirge_proboscis", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" }
+ ]
+ },
+ {
+ "id": "shrieker",
+ "//": "mainly fungaloid drops with scream mushroom.",
+ "type": "harvest",
+ "entries": [
+ { "drop": "veggy", "type": "flesh", "mass_ratio": 0.4 },
+ { "drop": "plant_sac", "type": "offal", "mass_ratio": 0.2 },
+ { "drop": "stick_fiber", "type": "bone", "mass_ratio": 0.1 },
+ { "drop": "scream_mush", "scale_num": [ 0.1, 0.3 ], "max": 10, "type": "offal" }
+ ]
+ },
+ {
+ "id": "lemure",
+ "//": "nothing much aside from big pile of meat and maybe demon blood in future. But for now, tainted will do.",
+ "type": "harvest",
+ "entries": [
+ { "drop": "tainted_blood", "type": "flesh", "mass_ratio": 0.1 },
+ { "drop": "meat", "type": "flesh", "mass_ratio": 0.4 }
+ ]
}
]
diff --git a/data/mods/Magiclysm/itemgroups/itemgroups.json b/data/mods/Magiclysm/itemgroups/itemgroups.json
index cf8e777af7581..e7b8c2e50a77a 100644
--- a/data/mods/Magiclysm/itemgroups/itemgroups.json
+++ b/data/mods/Magiclysm/itemgroups/itemgroups.json
@@ -53,7 +53,8 @@
"id": "guns_pistol_rare",
"items": [
{ "item": "wand_magic_missile_minor", "prob": 35, "charges-min": 12, "charges-max": 34 },
- { "item": "wand_fireball_minor", "prob": 25, "charges-min": 3, "charges-max": 24 }
+ { "item": "wand_fireball_minor", "prob": 25, "charges-min": 3, "charges-max": 24 },
+ { "item": "m47a1", "prob": 25, "charges-min": 0, "charges-max": 6 }
]
},
{
@@ -100,10 +101,10 @@
"type": "item_group",
"id": "magic_shop_books",
"items": [
- { "group": "spellbook_tier_0", "prob": 60 },
- { "group": "spellbook_tier_1", "prob": 50 },
- { "group": "spellbook_tier_2", "prob": 35 },
- { "group": "spellbook_tier_3", "prob": 20 },
+ { "group": "spellbook_loot_1", "prob": 60 },
+ { "group": "spell_scroll_tier_0", "prob": 80 },
+ { "group": "spell_scroll_tier_1", "prob": 60 },
+ { "group": "spell_scroll_tier_2", "prob": 30 },
{ "group": "magic_recipe_basic", "prob": 50 }
]
},
@@ -193,15 +194,15 @@
"id": "lair_loot_generic",
"//": "Stuff you would find in any dragon lair, gold, jewelry, etc.",
"items": [
- { "group": "jewelry_safe", "prob": 50 },
+ { "group": "jewelry_safe", "prob": 30 },
{ "group": "jewelry_front", "prob": 8 },
- { "item": "bone_human", "prob": 20, "count-min": 1, "count-max": 5 }
+ { "item": "bone_human", "prob": 60, "count-min": 1, "count-max": 5 }
]
},
{
"type": "item_group",
"id": "lair_black_dragon",
- "//": "Stuff you would find in any dragon lair, gold, jewelry, etc.",
+ "//": "Stuff you would find in any dragon deeper lair level. Gold, jewelry, weapons etc. Should require a bit of a fight or risk to access.",
"items": [
{ "item": "bone_human", "prob": 30, "count-min": 1, "count-max": 5 },
{ "group": "archery", "prob": 1 },
@@ -210,7 +211,365 @@
{ "group": "corpses", "prob": 20 },
{ "group": "remains_human_generic", "prob": 5, "count-min": 1, "count-max": 2 },
{ "group": "archery_ammo", "prob": 2, "count-min": 1, "count-max": 4 },
- { "group": "medieval", "prob": 1, "count-min": 1, "count-max": 2 }
+ { "group": "medieval", "prob": 1, "count-min": 1, "count-max": 2 },
+ { "group": "medieval", "prob": 1, "count-min": 1, "count-max": 2 },
+ { "group": "enchanted_combat_items", "prob": 1 }
+ ]
+ },
+ {
+ "type": "item_group",
+ "id": "lair_black_dragon_treasure",
+ "//": "Stuff you would find in any dragon treasure room or from a boss fight. Should require exceptional risk to access. Includes lower tier group, plus the best magic items.",
+ "items": [
+ { "group": "lair_loot_generic", "prob": 80, "count": [ 2, 6 ] },
+ { "item": "dragon_black_scale", "count": [ 48, 120 ] },
+ { "group": "enchanted_tokens_weapon", "prob": 30 },
+ { "group": "enchanted_rings_common", "prob": 40 },
+ { "group": "enchanted_rings_uncommon", "prob": 30 },
+ { "group": "enchanted_rings_unusual", "prob": 20 },
+ { "group": "enchanted_rings_rare", "prob": 10 },
+ { "group": "enchanted_melee_weapons_plus1", "prob": 30 },
+ { "group": "enchanted_melee_weapons_plus2", "prob": 10 },
+ { "group": "enchanted_wands_minor", "prob": 40 },
+ { "group": "enchanted_wands_lesser", "prob": 20 },
+ { "group": "enchanted_wands_greater", "prob": 10 },
+ { "group": "enchanted_masks", "prob": 10 },
+ { "group": "enchanted_bracers_lesser", "prob": 20 },
+ { "group": "enchanted_bracers_greater", "prob": 10 },
+ { "group": "enchanted_boots", "prob": 15 },
+ { "group": "enchanted_belts", "prob": 15 },
+ { "group": "spellbook_loot_2", "prob": 20 }
+ ]
+ },
+ {
+ "id": "enchanted_misc",
+ "type": "item_group",
+ "//": "all enchanted miscellanious items",
+ "subtype": "collection",
+ "items": [
+ { "item": "heat_cube", "prob": 10 },
+ { "item": "mkey_opening", "prob": 10 },
+ { "item": "mtorch_everburning", "prob": 10 },
+ { "item": "mflask_hip_whiskey", "prob": 10 },
+ { "item": "mtailors_kit", "prob": 10 },
+ { "item": "mspider_box", "prob": 10 }
+ ]
+ },
+ {
+ "id": "enchanted_tokens_weapon",
+ "type": "item_group",
+ "//": "all the melee weapon tokens",
+ "subtype": "collection",
+ "items": [
+ { "item": "mtoken_longsword", "prob": 10 },
+ { "item": "mtoken_arming_sword", "prob": 10 },
+ { "item": "mtoken_broadsword", "prob": 10 },
+ { "item": "mtoken_battleaxe", "prob": 10 },
+ { "item": "mtoken_pike", "prob": 10 },
+ { "item": "mtoken_mace", "prob": 10 },
+ { "item": "mtoken_q_staff", "prob": 10 }
+ ]
+ },
+ {
+ "id": "enchanted_tokens_tool",
+ "type": "item_group",
+ "//": "all the tool tokens",
+ "subtype": "collection",
+ "items": [
+ { "item": "mtoken_toolbox", "prob": 5 },
+ { "item": "mtoken_hammer", "prob": 20 },
+ { "item": "mtoken_screwdriver_set", "prob": 30 },
+ { "item": "mtoken_crowbar", "prob": 20 }
+ ]
+ },
+ {
+ "id": "enchanted_rings_common",
+ "type": "item_group",
+ "//": "all the common enchanted rings",
+ "subtype": "collection",
+ "items": [
+ { "item": "mring_blades_lesser", "prob": 5 },
+ { "item": "mring_strength_1", "prob": 10 },
+ { "item": "mring_dexterity_1", "prob": 10 },
+ { "item": "mring_intelligence_1", "prob": 10 },
+ { "item": "mring_perception_1", "prob": 10 },
+ { "item": "mring_speed_3", "prob": 10 },
+ { "item": "mring_protection_2", "prob": 10 }
+ ]
+ },
+ {
+ "id": "enchanted_rings_uncommon",
+ "type": "item_group",
+ "//": "all the uncommon enchanted rings",
+ "subtype": "collection",
+ "items": [
+ { "item": "mring_strength_2", "prob": 10 },
+ { "item": "mring_dexterity_2", "prob": 10 },
+ { "item": "mring_intelligence_2", "prob": 10 },
+ { "item": "mring_perception_2", "prob": 10 },
+ { "item": "mring_speed_5", "prob": 10 },
+ { "item": "mring_protection_4", "prob": 10 }
+ ]
+ },
+ {
+ "id": "enchanted_rings_unusual",
+ "type": "item_group",
+ "//": "all the unusual enchanted rings",
+ "subtype": "collection",
+ "items": [
+ { "item": "mring_strength_3", "prob": 10 },
+ { "item": "mring_dexterity_3", "prob": 10 },
+ { "item": "mring_intelligence_3", "prob": 10 },
+ { "item": "mring_perception_3", "prob": 10 },
+ { "item": "mring_speed_7", "prob": 10 },
+ { "item": "mring_protection_6", "prob": 10 }
+ ]
+ },
+ {
+ "id": "enchanted_rings_rare",
+ "type": "item_group",
+ "//": "all the rare enchanted rings. High end loot for boss fights, treasure rooms, etc.",
+ "subtype": "collection",
+ "items": [
+ { "item": "mring_strength_4", "prob": 10 },
+ { "item": "mring_dexterity_4", "prob": 10 },
+ { "item": "mring_intelligence_4", "prob": 10 },
+ { "item": "mring_perception_4", "prob": 10 },
+ { "item": "mring_speed_10", "prob": 10 },
+ { "item": "mring_protection_8", "prob": 10 }
+ ]
+ },
+ {
+ "id": "enchanted_wands_minor",
+ "type": "item_group",
+ "//": "minor enchanted wands",
+ "subtype": "collection",
+ "items": [
+ { "item": "wand_magic_missile_minor", "prob": 10, "charges-min": 3, "charges-max": 24 },
+ { "item": "wand_fireball_minor", "prob": 10, "charges-min": 3, "charges-max": 24 },
+ { "item": "wand_mana_beam_minor", "prob": 10, "charges-min": 3, "charges-max": 24 },
+ { "item": "wand_point_flare_minor", "prob": 10, "charges-min": 3, "charges-max": 24 },
+ { "item": "wand_disp_hoaryblast_minor", "prob": 20, "charges-min": 3, "charges-max": 20 },
+ { "item": "wand_disp_cone_cold_minor", "prob": 20, "charges-min": 3, "charges-max": 20 }
+ ]
+ },
+ {
+ "id": "enchanted_wands_lesser",
+ "type": "item_group",
+ "//": "lesser enchanted wands",
+ "subtype": "collection",
+ "items": [
+ { "item": "wand_magic_missile_lesser", "prob": 10, "charges-min": 3, "charges-max": 24 },
+ { "item": "wand_fireball_lesser", "prob": 10, "charges-min": 3, "charges-max": 24 },
+ { "item": "wand_mana_beam_lesser", "prob": 10, "charges-min": 3, "charges-max": 24 },
+ { "item": "wand_point_flare_lesser", "prob": 10, "charges-min": 3, "charges-max": 24 },
+ { "item": "wand_disp_hoaryblast_lesser", "prob": 20, "charges-min": 3, "charges-max": 20 },
+ { "item": "wand_disp_cone_cold_lesser", "prob": 20, "charges-min": 3, "charges-max": 20 }
+ ]
+ },
+ {
+ "id": "enchanted_wands_greater",
+ "type": "item_group",
+ "//": "rare enchanted wands. High end loot for boss fights, treasure rooms, etc.",
+ "subtype": "collection",
+ "items": [
+ { "item": "wand_magic_missile_greater", "prob": 10, "charges-min": 3, "charges-max": 24 },
+ { "item": "wand_fireball_greater", "prob": 10, "charges-min": 3, "charges-max": 24 },
+ { "item": "wand_mana_beam_greater", "prob": 10, "charges-min": 3, "charges-max": 24 },
+ { "item": "wand_point_flare_greater", "prob": 10, "charges-min": 3, "charges-max": 24 },
+ { "item": "wand_disp_hoaryblast_greater", "prob": 20, "charges-min": 3, "charges-max": 20 },
+ { "item": "wand_disp_cone_cold_greater", "prob": 20, "charges-min": 3, "charges-max": 20 }
+ ]
+ },
+ {
+ "id": "enchanted_masks",
+ "type": "item_group",
+ "//": "all enchanted masks. High end loot for boss fights, treasure rooms, etc.",
+ "subtype": "collection",
+ "items": [ { "item": "mmask_disappearance", "prob": 5 }, { "item": "mmask_vision", "prob": 10 } ]
+ },
+ {
+ "id": "enchanted_bracers_lesser",
+ "type": "item_group",
+ "//": "lesser enchanted bracers",
+ "subtype": "collection",
+ "items": [ { "item": "mbracer_defense_lesser", "prob": 10 }, { "item": "mbracer_lightning_lesser", "prob": 10 } ]
+ },
+ {
+ "id": "enchanted_bracers_greater",
+ "type": "item_group",
+ "//": "greater enchanted bracers",
+ "subtype": "collection",
+ "items": [ { "item": "mbracer_defense_greater", "prob": 10 }, { "item": "mbracer_lightning_greater", "prob": 10 } ]
+ },
+ {
+ "id": "enchanted_boots",
+ "type": "item_group",
+ "//": "all enchanted boots",
+ "subtype": "collection",
+ "items": [
+ { "item": "mboots_haste", "prob": 10 },
+ { "item": "mboots_sevenleague", "prob": 10 },
+ { "item": "mboots_escape", "prob": 10 },
+ { "item": "mboots_grounding", "prob": 10 }
+ ]
+ },
+ {
+ "id": "enchanted_belts",
+ "type": "item_group",
+ "//": "all enchanted belts",
+ "subtype": "collection",
+ "items": [
+ { "item": "magi_staff_minor", "prob": 10 },
+ { "item": "wizard_hat", "prob": 20 },
+ { "item": "mbelt_haste", "prob": 5 },
+ { "item": "mbelt_thor", "prob": 1 },
+ { "item": "mbelt_pockets_lesser", "prob": 10 },
+ { "item": "mbelt_pockets_greater", "prob": 5 },
+ { "item": "mbelt_weaponry", "prob": 10 },
+ { "item": "mbelt_technomancer_toolbelt", "prob": 5 },
+ { "item": "mbelt_iron_whip", "prob": 5 }
+ ]
+ },
+ {
+ "id": "enchanted_melee_weapons_plus1",
+ "type": "item_group",
+ "//": "plus 1 enchanted melee weapons",
+ "items": [
+ { "item": "cudgel_plus_one", "prob": 10 },
+ { "item": "q_staff_plus_one", "prob": 10 },
+ { "item": "i_staff_plus_one", "prob": 10 },
+ { "item": "longsword_plus_one", "prob": 5 },
+ { "item": "sledge_plus_one", "prob": 8 },
+ { "item": "warhammer_plus_one", "prob": 8 },
+ { "item": "bat_plus_one", "prob": 10 },
+ { "item": "bat_metal_plus_one", "prob": 8 },
+ { "item": "spear_steel_plus_one", "prob": 8 },
+ { "item": "qiang_plus_one", "prob": 8 },
+ { "item": "halberd_plus_one", "prob": 8 },
+ { "item": "glaive_plus_one", "prob": 8 },
+ { "item": "naginata_plus_one", "prob": 5 },
+ { "item": "mace_plus_one", "prob": 5 },
+ { "item": "morningstar_plus_one", "prob": 5 },
+ { "item": "jian_plus_one", "prob": 5 },
+ { "item": "scimitar_plus_one", "prob": 5 },
+ { "item": "estoc_plus_one", "prob": 5 },
+ { "item": "arming_sword_plus_one", "prob": 5 },
+ { "item": "broadsword_plus_one", "prob": 5 },
+ { "item": "battleaxe_plus_one", "prob": 5 },
+ { "item": "cavalry_sabre_plus_one", "prob": 5 },
+ { "item": "crowbar_plus_one", "prob": 10 },
+ { "item": "cutlass_plus_one", "prob": 5 },
+ { "item": "fire_ax_plus_one", "prob": 8 },
+ { "item": "katana_plus_one", "prob": 5 },
+ { "item": "knife_combat_plus_one", "prob": 8 },
+ { "item": "knife_hunting_plus_one", "prob": 8 },
+ { "item": "knife_rambo_plus_one", "prob": 5 },
+ { "item": "knife_trench_plus_one", "prob": 5 },
+ { "item": "kris_plus_one", "prob": 5 },
+ { "item": "kukri_plus_one", "prob": 5 },
+ { "item": "nodachi_plus_one", "prob": 5 },
+ { "item": "pickaxe_plus_one", "prob": 8 },
+ { "item": "pike_plus_one", "prob": 5 },
+ { "item": "rapier_plus_one", "prob": 5 },
+ { "item": "tanto_plus_one", "prob": 5 },
+ { "item": "wakizashi_plus_one", "prob": 5 },
+ { "item": "zweihander_plus_one", "prob": 5 },
+ { "item": "khopesh_plus_one", "prob": 5 },
+ { "item": "sword_xiphos_plus_one", "prob": 5 },
+ { "item": "dao_plus_one", "prob": 5 },
+ { "item": "gunblade", "prob": 5 }
+ ]
+ },
+ {
+ "id": "enchanted_melee_weapons_plus2",
+ "type": "item_group",
+ "//": "plus 2 enchanted melee weapons. High end loot for boss fights, treasure rooms, etc.",
+ "items": [
+ { "item": "cudgel_plus_two", "prob": 10 },
+ { "item": "q_staff_plus_two", "prob": 10 },
+ { "item": "i_staff_plus_two", "prob": 10 },
+ { "item": "longsword_plus_two", "prob": 5 },
+ { "item": "sledge_plus_two", "prob": 8 },
+ { "item": "warhammer_plus_two", "prob": 8 },
+ { "item": "bat_plus_two", "prob": 10 },
+ { "item": "bat_metal_plus_two", "prob": 8 },
+ { "item": "spear_steel_plus_two", "prob": 8 },
+ { "item": "qiang_plus_two", "prob": 8 },
+ { "item": "halberd_plus_two", "prob": 8 },
+ { "item": "glaive_plus_two", "prob": 8 },
+ { "item": "naginata_plus_two", "prob": 5 },
+ { "item": "mace_plus_two", "prob": 5 },
+ { "item": "morningstar_plus_two", "prob": 5 },
+ { "item": "jian_plus_two", "prob": 5 },
+ { "item": "scimitar_plus_two", "prob": 5 },
+ { "item": "estoc_plus_two", "prob": 5 },
+ { "item": "arming_sword_plus_two", "prob": 5 },
+ { "item": "broadsword_plus_two", "prob": 5 },
+ { "item": "battleaxe_plus_two", "prob": 5 },
+ { "item": "cavalry_sabre_plus_two", "prob": 5 },
+ { "item": "crowbar_plus_two", "prob": 10 },
+ { "item": "cutlass_plus_two", "prob": 5 },
+ { "item": "fire_ax_plus_two", "prob": 8 },
+ { "item": "katana_plus_two", "prob": 5 },
+ { "item": "knife_combat_plus_two", "prob": 8 },
+ { "item": "knife_hunting_plus_two", "prob": 8 },
+ { "item": "knife_rambo_plus_two", "prob": 5 },
+ { "item": "knife_trench_plus_two", "prob": 5 },
+ { "item": "kris_plus_two", "prob": 5 },
+ { "item": "kukri_plus_two", "prob": 5 },
+ { "item": "nodachi_plus_two", "prob": 5 },
+ { "item": "pickaxe_plus_two", "prob": 8 },
+ { "item": "pike_plus_two", "prob": 5 },
+ { "item": "rapier_plus_two", "prob": 5 },
+ { "item": "tanto_plus_two", "prob": 5 },
+ { "item": "wakizashi_plus_two", "prob": 5 },
+ { "item": "zweihander_plus_two", "prob": 5 },
+ { "item": "khopesh_plus_two", "prob": 5 },
+ { "item": "sword_xiphos_plus_two", "prob": 5 },
+ { "item": "dao_plus_two", "prob": 5 }
+ ]
+ },
+ {
+ "id": "enchanted_small_items",
+ "//": "A distribution of small magical items for general loot areas like desks, shelves, personal items.",
+ "type": "item_group",
+ "subtype": "distribution",
+ "items": [
+ { "group": "enchanted_tokens_tool", "prob": 20 },
+ { "group": "enchanted_tokens_weapon", "prob": 1 },
+ { "group": "enchanted_rings_common", "prob": 15 },
+ { "group": "enchanted_rings_uncommon", "prob": 1 },
+ { "group": "enchanted_wands_minor", "prob": 5 },
+ { "group": "enchanted_masks", "prob": 1 },
+ { "group": "magic_shop_potions", "prob": 20 },
+ { "group": "spellbook_loot_1", "prob": 30 },
+ { "group": "magic_CBM", "prob": 1 },
+ [ "crystallized_mana", 10 ],
+ { "item": "small_mana_crystal", "prob": 20, "charges-min": 5, "charges-max": 50 }
+ ]
+ },
+ {
+ "id": "enchanted_worn_items",
+ "//": "A distribution of wearable magical items for loot areas like dressers, wardrobes, coat racks.",
+ "type": "item_group",
+ "subtype": "distribution",
+ "items": [
+ { "group": "enchanted_bracers_lesser", "prob": 20 },
+ { "group": "enchanted_boots", "prob": 5 },
+ { "group": "enchanted_belts", "prob": 5 }
+ ]
+ },
+ {
+ "id": "enchanted_combat_items",
+ "//": "A distribution of magical items for combat loot.",
+ "type": "item_group",
+ "subtype": "distribution",
+ "items": [
+ { "group": "enchanted_bracers_lesser", "prob": 20 },
+ { "group": "enchanted_worn_items", "prob": 10 },
+ { "group": "enchanted_melee_weapons_plus1", "prob": 2 },
+ { "group": "enchanted_small_items", "prob": 1 }
]
}
]
diff --git a/data/mods/Magiclysm/itemgroups/recipe_books.json b/data/mods/Magiclysm/itemgroups/recipe_books.json
index 09bc263b1f1d0..9dd08cfd19c58 100644
--- a/data/mods/Magiclysm/itemgroups/recipe_books.json
+++ b/data/mods/Magiclysm/itemgroups/recipe_books.json
@@ -3,6 +3,6 @@
"id": "magic_recipe_basic",
"type": "item_group",
"//": "Lower tier recipes, many of which can be done with the alchemist rune. Usually has at least one recipe requiring related school rune or rune weapon",
- "items": [ [ "alchemy_basic", 30 ], [ "necro_basic", 30 ] ]
+ "items": [ [ "alchemy_basic", 30 ], [ "necro_basic", 30 ], [ "techno_basic", 30 ] ]
}
]
diff --git a/data/mods/Magiclysm/itemgroups/spellbooks.json b/data/mods/Magiclysm/itemgroups/spellbooks.json
index 74e0dc4d40062..481f973a214ff 100644
--- a/data/mods/Magiclysm/itemgroups/spellbooks.json
+++ b/data/mods/Magiclysm/itemgroups/spellbooks.json
@@ -24,6 +24,7 @@
[ "spell_scroll_taze", 25 ],
[ "spell_scroll_laze", 25 ],
[ "spell_scroll_lightning_blast", 20 ],
+ [ "spell_scroll_x-ray", 30 ],
[ "spell_scroll_necrotic_gaze", 50 ]
]
},
@@ -41,6 +42,7 @@
[ "spell_scroll_druid_naturebow1", 20 ],
[ "spell_scroll_seismic_stomp", 20 ],
[ "spell_scroll_eshaper_shardspray", 25 ],
+ [ "spell_scroll_clairvoyance", 30 ],
[ "spell_scroll_point_flare", 50 ],
[ "spell_scroll_ice_spike", 50 ],
[ "spell_scroll_burning_hands", 50 ],
diff --git a/data/mods/Magiclysm/items/alchemy_items.json b/data/mods/Magiclysm/items/alchemy_items.json
index 147189e850d58..6aade7e4de53f 100644
--- a/data/mods/Magiclysm/items/alchemy_items.json
+++ b/data/mods/Magiclysm/items/alchemy_items.json
@@ -41,13 +41,22 @@
"name_plural": "copper infusion bracelets",
"description": "This bracelet has runes engraved on it. You sense a faint air of mysticism when you look at it. It would be useful for imbuing mana into material."
},
+ {
+ "id": "silver_infuser",
+ "copy-from": "silver_bracelet",
+ "type": "ARMOR",
+ "qualities": [ [ "MANA_INFUSE", 2 ] ],
+ "name": "silver infusion bracelet",
+ "name_plural": "silver infusion bracelets",
+ "description": "This bracelet has runes engraved on it. You sense a faint air of mysticism when you look at it. It would be useful for imbuing mana into material."
+ },
{
"id": "copper_circlet",
"type": "ARMOR",
"category": "armor",
"name": "copper circlet",
"name_plural": "copper circlets",
- "description": "A wooden band with copper trimmings to be worn on the head. Touching your temples with it on makes you feel very calm.",
+ "description": "A wooden band with copper trimmings to be worn on the head. Touching your temples with it on makes you feel very calm.",
"weight": 700,
"volume": "600ml",
"price": 1500,
@@ -87,7 +96,7 @@
"copy-from": "mixed_alcohol_strong",
"type": "COMESTIBLE",
"name": "potion starter",
- "description": "Strong alcohol, infused with mana and concentrated into a liquid that can stabilize spells into liquid form. You can still drink it, if you want."
+ "description": "Strong alcohol, infused with mana and concentrated into a liquid that can stabilize spells into liquid form. You can still drink it, if you want."
},
{
"id": "adrenal_gland_large",
@@ -95,7 +104,7 @@
"type": "COMESTIBLE",
"name": "large adrenal gland",
"name_plural": "large adrenal glands",
- "description": "An organ located above the kidneys responsible for secretion of adrenaline, cortisol, and aldosterone. This one is huge, whether by nature or mutation.",
+ "description": "An organ located above the kidneys responsible for secretion of adrenaline, cortisol, and aldosterone. This one is huge, whether by nature or mutation.",
"delete": { "flags": [ "SMOKABLE" ] },
"price": 2000
},
@@ -182,5 +191,21 @@
"charges": 1,
"phase": "liquid",
"freezing_point": -100
+ },
+ {
+ "id": "stirge_proboscis",
+ "type": "GENERIC",
+ "name": "stirge proboscis",
+ "name_plural": "stirge proboscises",
+ "description": "A long sucking apparatus harvested from stirge corpse. Makes a poor melee weapon.",
+ "volume": "100 ml",
+ "weight": "100 g",
+ "price": 2000,
+ "symbol": ",",
+ "color": "red",
+ "to_hit": -1,
+ "material": [ "flesh" ],
+ "cutting": 7,
+ "flags": [ "SPEAR", "SHEATH_KNIFE" ]
}
]
diff --git a/data/mods/Magiclysm/items/ammo_types.json b/data/mods/Magiclysm/items/ammo_types.json
index ac2494a6c213e..9b77eb6ca4ed8 100644
--- a/data/mods/Magiclysm/items/ammo_types.json
+++ b/data/mods/Magiclysm/items/ammo_types.json
@@ -16,5 +16,11 @@
"id": "blood",
"name": "blood",
"default": "blood"
+ },
+ {
+ "type": "ammunition_type",
+ "id": "arrow_orichalcum",
+ "name": "orichalcum arrow",
+ "default": "arrow_odin"
}
]
diff --git a/data/mods/Magiclysm/items/archery.json b/data/mods/Magiclysm/items/archery.json
new file mode 100644
index 0000000000000..56a36af40d7cb
--- /dev/null
+++ b/data/mods/Magiclysm/items/archery.json
@@ -0,0 +1,52 @@
+[
+ {
+ "id": "ichaival",
+ "type": "GUN",
+ "looks_like": "reflexrecurvebow",
+ "symbol": "(",
+ "color": "white",
+ "name": "Ichaival",
+ "description": "Ichaival, the bow of Odin. Rumored to fire 10 arrows with every pull of the string. It has gold and silver ornaments on it, as well as an ornate Raven.",
+ "price": 160000,
+ "material": [ "orichalcum_metal", "gold", "wood" ],
+ "flags": [ "FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED", "WATER_FRIENDLY" ],
+ "skill": "archery",
+ "min_strength": 8,
+ "ammo": "arrow_orichalcum",
+ "weight": "740 g",
+ "volume": "5 L",
+ "bashing": 14,
+ "armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 14 },
+ "reload_noise_volume": 2,
+ "loudness": 5,
+ "ranged_damage": 25,
+ "range": 20,
+ "dispersion": 95,
+ "durability": 6,
+ "clip_size": 1,
+ "reload": 40,
+ "valid_mod_locations": [ [ "underbarrel", 1 ], [ "sights", 1 ], [ "accessories", 2 ], [ "stabilizer", 1 ], [ "dampening", 1 ] ]
+ },
+ {
+ "type": "AMMO",
+ "id": "arrow_odin",
+ "price": 3500,
+ "name": "orichalcum arrow",
+ "symbol": "=",
+ "color": "white",
+ "description": "An arrow composed of a sliver of orichalcum. The arrow has a mysterious glow. Has a very high chance of staying intact when fired, however can only be fired from Ichaival.",
+ "material": [ "wood", "orichalcum_metal" ],
+ "ammo_type": "arrow_orichalcum",
+ "volume": "145 ml",
+ "weight": "30 g",
+ "bashing": 12,
+ "prop_damage": 1.95,
+ "pierce": 20,
+ "dispersion": 35,
+ "loudness": 0,
+ "range": 7,
+ "count": 15,
+ "stack_size": 15,
+ "effects": [ "RECOVER_65" ]
+ }
+]
diff --git a/data/mods/Magiclysm/items/black_dragon_items.json b/data/mods/Magiclysm/items/black_dragon_items.json
index e2dd300488527..6d8646130231a 100644
--- a/data/mods/Magiclysm/items/black_dragon_items.json
+++ b/data/mods/Magiclysm/items/black_dragon_items.json
@@ -249,5 +249,182 @@
"material_thickness": 2,
"environmental_protection": 1,
"flags": [ "VARSIZE", "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "boots_xlblack_dragon_scale",
+ "copy-from": "boots_black_dragon_scale",
+ "type": "ARMOR",
+ "name": { "str": "pair of XL black dragonscale boots", "str_pl": "pairs of XL black dragonscale boots" },
+ "description": "Massive boots made of black dragonscale, modified to fit even the strangest of bodies. Very protective, and surprisingly light.",
+ "weight": "1545 g",
+ "volume": "6250 ml",
+ "encumbrance": 40,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "boots_xlblack_dragon_hide",
+ "copy-from": "boots_black_dragon_hide",
+ "type": "ARMOR",
+ "name": { "str": "pair of XL black dragonhide boots", "str_pl": "pairs of XL black dragonhide boots" },
+ "description": "Massive boots made of black dragonhide, modified to fit even the strangest of bodies. Very protective, and surprisingly light.",
+ "weight": "955 g",
+ "volume": "6250 ml",
+ "encumbrance": 28,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "helmet_xlblack_dragon_scale",
+ "copy-from": "helmet_black_dragon_scale",
+ "type": "ARMOR",
+ "name": "XL black dragonscale helmet",
+ "description": "A massive helmet made from black dragonscale, held together with black dragonhide. It comes equipped with a full face visor and is large enough to fit even the strangest of heads.",
+ "weight": "1256 g",
+ "volume": "4500 ml",
+ "encumbrance": 42,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "helmet_xlblack_dragon_hide",
+ "copy-from": "helmet_black_dragon_hide",
+ "type": "ARMOR",
+ "name": "XL black dragonhide helmet",
+ "description": "A massive helmet made from black dragonhide. It protects your head well, and doesn't cover your face, but is large enough to fit even the strangest of heads.",
+ "weight": "815 g",
+ "volume": "4500 ml",
+ "encumbrance": 42,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "suit_xlblack_dragon_scale",
+ "copy-from": "suit_black_dragon_scale",
+ "type": "ARMOR",
+ "name": "XL black dragonscale armor",
+ "description": "A massive full suit of black dragon scale mail. It comes with all the accoutrements that cover your torso, legs, and arms; sized to fit even the strangest of bodies.",
+ "weight": "6250 g",
+ "volume": "18 L",
+ "encumbrance": 35,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ]
+ },
+ {
+ "id": "suit_xlblack_dragon_hide",
+ "copy-from": "suit_black_dragon_hide",
+ "type": "ARMOR",
+ "name": "XL black dragonhide armor",
+ "description": "A massive full suit of black dragonhide armor. It comes with all the accoutrements that cover your torso, legs, and arms; sized to fit even the strangest of bodies.",
+ "weight": "5500 g",
+ "volume": "18 L",
+ "encumbrance": 28,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ]
+ },
+ {
+ "id": "gauntlets_xlblack_dragon_scale",
+ "copy-from": "gauntlets_black_dragon_scale",
+ "type": "ARMOR",
+ "name": { "str": "pair of XL black dragonscale gauntlets", "str_pl": "pairs of XL black dragonscale gauntlets" },
+ "description": "A pair of heavy-duty gauntlets made of black dragonscale that covers your hands, or whatever you use as hands.",
+ "weight": "680 g",
+ "volume": "2 L",
+ "encumbrance": 30,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "gloves_xlblack_dragon_hide",
+ "copy-from": "gloves_black_dragon_hide",
+ "type": "ARMOR",
+ "name": { "str": "pair of XL black dragonhide gloves", "str_pl": "pairs of XL black dragonhide gloves" },
+ "description": "A pair of customized, Kevlar armored leather gloves, modified to be easy to wear while providing maximum protection under extreme conditions. Sized to fit even the strangest of anatomy.",
+ "weight": "430 g",
+ "volume": "1500 ml",
+ "encumbrance": 18,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "boots_xlblack_dragon_scale",
+ "copy-from": "boots_black_dragon_scale",
+ "type": "ARMOR",
+ "name": { "str": "pair of XL black dragonscale boots", "str_pl": "pairs of XL black dragonscale boots" },
+ "description": "Massive boots made of black dragonscale, modified to fit even the strangest of bodies. Very protective, and surprisingly light.",
+ "weight": "1545 g",
+ "volume": "6250 ml",
+ "encumbrance": 40,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "boots_xlblack_dragon_hide",
+ "copy-from": "boots_black_dragon_hide",
+ "type": "ARMOR",
+ "name": { "str": "pair of XL black dragonhide boots", "str_pl": "pairs of XL black dragonhide boots" },
+ "description": "Massive boots made of black dragonhide, modified to fit even the strangest of bodies. Very protective, and surprisingly light.",
+ "weight": "955 g",
+ "volume": "6250 ml",
+ "encumbrance": 28,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "helmet_xlblack_dragon_scale",
+ "copy-from": "helmet_black_dragon_scale",
+ "type": "ARMOR",
+ "name": "XL black dragonscale helmet",
+ "description": "A massive helmet made from black dragonscale, held together with black dragonhide. It comes equipped with a full face visor and is large enough to fit even the strangest of heads.",
+ "weight": "1256 g",
+ "volume": "4500 ml",
+ "encumbrance": 42,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "helmet_xlblack_dragon_hide",
+ "copy-from": "helmet_black_dragon_hide",
+ "type": "ARMOR",
+ "name": "XL black dragonhide helmet",
+ "description": "A massive helmet made from black dragonhide. It protects your head well, and doesn't cover your face, but is large enough to fit even the strangest of heads.",
+ "weight": "815 g",
+ "volume": "4500 ml",
+ "encumbrance": 42,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "suit_xlblack_dragon_scale",
+ "copy-from": "suit_black_dragon_scale",
+ "type": "ARMOR",
+ "name": "XL black dragonscale armor",
+ "description": "A massive full suit of black dragon scale mail. It comes with all the accoutrements that cover your torso, legs, and arms; sized to fit even the strangest of bodies.",
+ "weight": "6250 g",
+ "volume": "18 L",
+ "encumbrance": 35,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ]
+ },
+ {
+ "id": "suit_xlblack_dragon_hide",
+ "copy-from": "suit_black_dragon_hide",
+ "type": "ARMOR",
+ "name": "XL black dragonhide armor",
+ "description": "A massive full suit of black dragonhide armor. It comes with all the accoutrements that cover your torso, legs, and arms; sized to fit even the strangest of bodies.",
+ "weight": "5500 g",
+ "volume": "18 L",
+ "encumbrance": 28,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ]
+ },
+ {
+ "id": "gauntlets_xlblack_dragon_scale",
+ "copy-from": "gauntlets_black_dragon_scale",
+ "type": "ARMOR",
+ "name": { "str": "pair of XL black dragonscale gauntlets", "str_pl": "pairs of XL black dragonscale gauntlets" },
+ "description": "A pair of heavy-duty gauntlets made of black dragonscale that covers your hands, or whatever you use as hands.",
+ "weight": "680 g",
+ "volume": "2 L",
+ "encumbrance": 30,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ]
+ },
+ {
+ "id": "gloves_xlblack_dragon_hide",
+ "copy-from": "gloves_black_dragon_hide",
+ "type": "ARMOR",
+ "name": { "str": "pair of XL black dragonhide gloves", "str_pl": "pairs of XL black dragonhide gloves" },
+ "description": "A pair of customized, Kevlar armored leather gloves, modified to be easy to wear while providing maximum protection under extreme conditions. Sized to fit even the strangest of anatomy.",
+ "weight": "430 g",
+ "volume": "1500 ml",
+ "price": 180000,
+ "encumbrance": 18,
+ "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ]
}
]
diff --git a/data/mods/Magiclysm/items/cast_spell_items.json b/data/mods/Magiclysm/items/cast_spell_items.json
index 0c7149b97a50c..ca6421c45135b 100644
--- a/data/mods/Magiclysm/items/cast_spell_items.json
+++ b/data/mods/Magiclysm/items/cast_spell_items.json
@@ -85,7 +85,7 @@
{
"id": "animist_doll_zombie",
"name": "zombie voodoo doll",
- "description": "A remarkably accurate effigy of an undead human, including pieces of bone and organs. Necromantic magic delays immediate rot, but it won't last forever. Piercing it with the attached needle could compel it to serve you.",
+ "description": "A remarkably accurate effigy of an undead human, including pieces of bone and organs. Necromantic magic delays immediate rot, but it won't last forever. Piercing it with the attached needle could compel it to serve you.",
"use_action": { "type": "cast_spell", "spell_id": "summon_zombie", "no_fail": true, "level": 12 },
"type": "COMESTIBLE",
"comestible_type": "FOOD",
@@ -102,7 +102,7 @@
{
"id": "animist_doll_skeleton",
"name": "ossified voodoo doll",
- "description": "A remarkably accurate effigy of an undead human covered with bone, including pieces of organs. Necromantic magic delays immediate rot, but it won't last forever. Piercing it with the attached needle could compel it to serve you.",
+ "description": "A remarkably accurate effigy of an undead human covered with bone, including pieces of organs. Necromantic magic delays immediate rot, but it won't last forever. Piercing it with the attached needle could compel it to serve you.",
"use_action": { "type": "cast_spell", "spell_id": "summon_skeleton", "no_fail": true, "level": 10 },
"type": "COMESTIBLE",
"category": "weapons",
@@ -111,7 +111,7 @@
{
"id": "animist_doll_decayed_pouncer",
"name": "cougar voodoo doll",
- "description": "A remarkably accurate effigy of an undead cougar, complete with fur, bones, and organs. Necromantic magic delays immediate rot, but it won't last forever. Piercing it with the attached needle could compel it to serve you.",
+ "description": "A remarkably accurate effigy of an undead cougar, complete with fur, bones, and organs. Necromantic magic delays immediate rot, but it won't last forever. Piercing it with the attached needle could compel it to serve you.",
"use_action": { "type": "cast_spell", "spell_id": "summon_decayed_pouncer", "no_fail": true, "level": 13 },
"type": "COMESTIBLE",
"category": "weapons",
@@ -121,7 +121,7 @@
{
"id": "twisted_restore_potion",
"name": "potion of Twisted Restoration",
- "description": "This foul-smelling liquid simulates undead regeneration by accelerating your heart to dangerous levels. Drinking this in danger or at critical condition may be lethal.",
+ "description": "This foul-smelling liquid simulates undead regeneration by accelerating your heart to dangerous levels. Drinking this in danger or at critical condition may be lethal.",
"use_action": { "type": "cast_spell", "spell_id": "twisted_restore", "no_fail": true, "level": 1 },
"type": "COMESTIBLE",
"weight": 265,
@@ -144,7 +144,7 @@
{
"id": "twisted_restore_potion_improved",
"name": "potion of Improved Twisted Restoration",
- "description": "This foul-smelling liquid simulates undead regeneration by accelerating your heart to dangerous levels. Drinking this in danger or at critical condition may be lethal. Improved infusion techniques lessen the strain of the process.",
+ "description": "This foul-smelling liquid simulates undead regeneration by accelerating your heart to dangerous levels. Drinking this in danger or at critical condition may be lethal. Improved infusion techniques lessen the strain of the process.",
"use_action": { "type": "cast_spell", "spell_id": "twisted_restore_improved", "no_fail": true, "level": 1 },
"type": "COMESTIBLE",
"copy-from": "twisted_restore_potion"
diff --git a/data/mods/Magiclysm/items/class_runes.json b/data/mods/Magiclysm/items/class_runes.json
index df61eb388a5f2..12faf2cb22677 100644
--- a/data/mods/Magiclysm/items/class_runes.json
+++ b/data/mods/Magiclysm/items/class_runes.json
@@ -11,25 +11,6 @@
"material": "stone",
"flags": "TRADER_AVOID"
},
- {
- "id": "rune_biomancer_weapon",
- "type": "GENERIC",
- "name": "Biomancer spear",
- "//": "Effectively a durable stone spear +1 with IMPALE tech. based off Wicked Bonespear. Lorewise, it would make sense for novice Biomancers to be developing their skills in spears so they can adequately use the Bonespear(No whips/REACH3 for you!) once they're proficient enough to summon one. Should be weaker than other school weapons DPSwise due to reach.",
- "description": "A grotesque bone spearhead on a stout wooden pole. There is a Biomancer rune embedded at the base of the head.",
- "weight": 988,
- "volume": "1250 ml",
- "price": 3900,
- "to_hit": 2,
- "bashing": 6,
- "cutting": 15,
- "material": [ "wood", "bone" ],
- "symbol": "/",
- "color": "light_gray",
- "techniques": [ "WBLOCK_1", "IMPALE" ],
- "qualities": [ [ "COOK", 1 ] ],
- "flags": [ "SPEAR", "REACH_ATTACK", "DURABLE_MELEE", "SHEATH_SPEAR", "TRADER_AVOID", "MAGIC_FOCUS" ]
- },
{
"id": "rune_technomancer",
"type": "TOOL",
@@ -42,25 +23,6 @@
"material": "stone",
"flags": "TRADER_AVOID"
},
- {
- "id": "rune_technomancer_weapon",
- "type": "GENERIC",
- "name": "Technomancer toolbar",
- "//": "Combat stats based off crowbar +1, techniques off Halligan bar(closest non-magical substitute), weight based on 75% of hammer & wrench(since their handles aren't included) + 100% crowbar with benefit from +1 enchantment",
- "description": "This staff incorporates a sturdy cresent wrench on top of a prybar and a hammer on the other in a convienent package. There is a Technomancer rune embedded in the hammerhead.",
- "weight": 1536,
- "volume": "1750 ml",
- "price": 3900,
- "to_hit": 1,
- "bashing": 15,
- "cutting": 1,
- "material": [ "steel" ],
- "symbol": "/",
- "color": "light_gray",
- "techniques": [ "WBLOCK_1", "BRUTAL", "SWEEP" ],
- "qualities": [ [ "PRY", 3 ], [ "HAMMER", 3 ], [ "HAMMER_FINE", 1 ], [ "WRENCH", 2 ], [ "WRENCH_FINE", 2 ] ],
- "flags": [ "DURABLE_MELEE", "BELT_CLIP", "TRADER_AVOID", "MAGIC_FOCUS" ]
- },
{
"id": "rune_magus",
"type": "TOOL",
@@ -74,24 +36,6 @@
"material": "stone",
"flags": "TRADER_AVOID"
},
- {
- "id": "rune_magus_weapon",
- "type": "GENERIC",
- "name": "Magus staff",
- "name_plural": "Magus staves",
- "//": "The classical vision of the wizard gets a classic weapon. DPS Stats are between the regular and ironshod versions. Stats are slightly worse than the QS+1 due to the glass weight slowing attack speed.",
- "description": "A quarterstaff with runes carved into it and two glass jars, heat-tempered and infused with mana for durability, to act as mana receptacles. There are two Magi runes embedded at the tips.",
- "weight": 1530,
- "volume": "1500 ml",
- "price": 3900,
- "to_hit": 2,
- "bashing": 20,
- "material": [ "wood", "diamond" ],
- "symbol": "/",
- "color": "brown",
- "techniques": [ "WBLOCK_2", "RAPID", "SWEEP" ],
- "flags": [ "DURABLE_MELEE", "SHEATH_SPEAR", "TRADER_AVOID", "MAGIC_FOCUS" ]
- },
{
"id": "rune_earthshaper",
"type": "TOOL",
@@ -104,24 +48,6 @@
"material": "stone",
"flags": "TRADER_AVOID"
},
- {
- "type": "GENERIC",
- "id": "rune_earthshaper_weapon",
- "symbol": "3",
- "color": "light_gray",
- "name": "Earthshaper cestus",
- "name_plural": "Earthshaper cesti",
- "//": "Equivalent to cestus +1 with BRUTAL and WBLOCK1",
- "description": "A stone battle glove with carved runes encasing the hand, protecting it while increasing striking power. There is an Earthshaper rune embedded in the palm.",
- "material": [ "stone", "leather", "steel" ],
- "volume": "500 ml",
- "weight": 873,
- "bashing": 13,
- "to_hit": 1,
- "qualities": [ [ "HAMMER", 1 ] ],
- "techniques": [ "WBLOCK_1", "BRUTAL" ],
- "flags": [ "UNARMED_WEAPON", "DURABLE_MELEE", "TRADER_AVOID", "MAGIC_FOCUS" ]
- },
{
"id": "rune_kelvinist",
"type": "TOOL",
@@ -134,26 +60,6 @@
"material": "stone",
"flags": "TRADER_AVOID"
},
- {
- "id": "rune_kelvinist_weapon",
- "type": "GENERIC",
- "name": "Kelvinist flamberge",
- "//": "Flame-bladed sword covers half of Kelvinist's heat-cold theme. Combat stats equivalent to cutlass +1 with BRUTAL technique.",
- "description": "A sword with an undulating blade, reminiscent of a flame. There is a Kelvinist rune embedded in the pommel.",
- "weight": 1530,
- "volume": "1250 ml",
- "price": 3900,
- "to_hit": 3,
- "bashing": 7,
- "cutting": 29,
- "material": [ "wood", "steel" ],
- "symbol": "/",
- "color": "light_gray",
- "techniques": [ "WBLOCK_2", "BRUTAL" ],
- "qualities": [ [ "CUT", 1 ], [ "BUTCHER", 9 ] ],
- "use_action": "WEATHER_TOOL",
- "flags": [ "DURABLE_MELEE", "SHEATH_SWORD", "TRADER_AVOID", "MAGIC_FOCUS", "THERMOMETER" ]
- },
{
"id": "rune_stormshaper",
"type": "TOOL",
@@ -166,26 +72,6 @@
"material": "stone",
"flags": "TRADER_AVOID"
},
- {
- "id": "rune_stormshaper_weapon",
- "type": "GENERIC",
- "name": "Stormshaper axe",
- "//": "Equivalent to copper ax +1, with volume reduction so it can be sheathed like the other school weapons. Metals chosen for being two most conductive metals + balancing reasons",
- "description": "A forged copper axe with silver trimmings and a wooden handle. There is a Stormshaper rune embedded in the eye.",
- "weight": 3330,
- "volume": "2 L",
- "price": 3900,
- "to_hit": 3,
- "bashing": 19,
- "cutting": 13,
- "material": [ "wood", "copper", "silver" ],
- "symbol": "/",
- "color": "brown",
- "techniques": [ "WBLOCK_1", "BRUTAL", "SWEEP" ],
- "qualities": [ [ "AXE", 1 ], [ "BUTCHER", -20 ] ],
- "use_action": "WEATHER_TOOL",
- "flags": [ "DURABLE_MELEE", "BELT_CLIP", "TRADER_AVOID", "MAGIC_FOCUS", "HYGROMETER", "BAROMETER" ]
- },
{
"id": "rune_druid",
"type": "TOOL",
@@ -198,44 +84,6 @@
"material": "stone",
"flags": "TRADER_AVOID"
},
- {
- "id": "rune_druid_weapon",
- "type": "GUN",
- "symbol": "(",
- "color": "yellow",
- "name": "Druid composite bow",
- "//": "Equivalent to composite bow +1 for dispersion/reload/weight/range/encumb/bash, with two mod slots added equivalent to other weapons getting techniques",
- "description": "A bow made of multiple materials to maximize energy efficiency. There are two Druid runes embedded at the tips.",
- "price": 32000,
- "material": [ "wood", "bone" ],
- "flags": [
- "FIRE_TWOHAND",
- "STR_DRAW",
- "RELOAD_AND_SHOOT",
- "PRIMITIVE_RANGED_WEAPON",
- "BELTED",
- "TRADER_AVOID",
- "MAGIC_FOCUS",
- "DURABLE_MELEE",
- "WATER_FRIENDLY"
- ],
- "skill": "archery",
- "min_strength": 5,
- "ammo": "arrow",
- "weight": 360,
- "volume": "1750 ml",
- "bashing": 9,
- "armor_data": { "covers": [ "TORSO" ], "coverage": 5, "material_thickness": 1, "encumbrance": 13 },
- "reload_noise_volume": 3,
- "loudness": 6,
- "ranged_damage": 5,
- "range": 13,
- "dispersion": 135,
- "durability": 7,
- "clip_size": 1,
- "reload": 32,
- "valid_mod_locations": [ [ "sights", 1 ], [ "accessories", 1 ], [ "dampening", 1 ] ]
- },
{
"id": "rune_animist",
"type": "TOOL",
@@ -248,25 +96,6 @@
"material": "stone",
"flags": "TRADER_AVOID"
},
- {
- "id": "rune_animist_weapon",
- "type": "GENERIC",
- "name": "Animist athame",
- "name_plural": "Animist athames",
- "//": "Tool qualities equivalent to steak knife, combat equiv. to copper knife + 1 w/ RAPID and BLOCK1, size/weight off combat knife +1",
- "description": "A steel ritual knife used by Animists to draw blood for summoning. Their school rune is embedded in the crossguard.",
- "weight": 504,
- "volume": "500 ml",
- "price": 3000,
- "bashing": 2,
- "cutting": 13,
- "material": [ "wood", "steel" ],
- "symbol": ";",
- "color": "light_gray",
- "techniques": [ "WBLOCK_1", "PRECISE" ],
- "qualities": [ [ "CUT", 1 ], [ "CUT_FINE", 1 ], [ "BUTCHER", 11 ] ],
- "flags": [ "STAB", "SHEATH_KNIFE", "MAGIC_FOCUS", "TRADER_AVOID" ]
- },
{
"id": "rune_alchemist",
"type": "TOOL",
diff --git a/data/mods/Magiclysm/items/comestibles.json b/data/mods/Magiclysm/items/comestibles.json
index 2cf55a84e0a25..db085283f0146 100644
--- a/data/mods/Magiclysm/items/comestibles.json
+++ b/data/mods/Magiclysm/items/comestibles.json
@@ -47,7 +47,7 @@
"symbol": "0",
"name": "hairball",
"name_plural": "hairballs",
- "description": "A big, ugly ball of animal spit and licked-off hairs. Don't swallow it.",
+ "description": "A big, ugly ball of animal spit and licked-off hairs. Don't swallow it.",
"price": 0,
"flags": [ "TRADER_AVOID", "EDIBLE_FROZEN" ],
"fun": -20
@@ -60,5 +60,13 @@
"name_plural": "dragon meat",
"description": "The meat from a slain dragon. It does not seem to respond to cooking the same way as other meat, making it obvious that it still retains some magical properties.",
"parasites": 0
+ },
+ {
+ "id": "scream_mush",
+ "type": "COMESTIBLE",
+ "copy-from": "mushroom",
+ "name": "scream mushroom",
+ "description": "The mushrooms harvested from a dead shrieker. Could be used in potions.",
+ "price": 1400
}
]
diff --git a/data/mods/Magiclysm/items/ethereal_items.json b/data/mods/Magiclysm/items/ethereal_items.json
index b377d5218a4fa..c31f505814bdf 100644
--- a/data/mods/Magiclysm/items/ethereal_items.json
+++ b/data/mods/Magiclysm/items/ethereal_items.json
@@ -343,5 +343,37 @@
"initial_charges": 15,
"max_charges": 15,
"use_action": "WATER_PURIFIER"
+ },
+ {
+ "id": "acid_res_aura",
+ "type": "ARMOR",
+ "name": "acid resistance aura",
+ "description": "An all-encompassing, invisible layer of protection against acid.",
+ "weight": "1g",
+ "volume": "1ml",
+ "price": 3646,
+ "symbol": "o",
+ "color": "green",
+ "covers": [ "LEGS", "TORSO", "ARMS", "HANDS", "HEAD", "FEET", "MOUTH", "EYES" ],
+ "flags": [ "AURA", "SEMITANGIBLE", "OVERSIZE", "ONLY_ONE", "TRADER_AVOID", "NO_TAKEOFF", "NONCONDUCTIVE" ],
+ "relic_data": {
+ "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_ACID", "multiply": -0.25 } ] } ]
+ }
+ },
+ {
+ "id": "acid_res_aura_greater",
+ "type": "ARMOR",
+ "name": "greater acid resistance aura",
+ "description": "An all-encompassing, invisible layer of protection against acid.",
+ "weight": "1g",
+ "volume": "1ml",
+ "price": 3646,
+ "symbol": "o",
+ "color": "green",
+ "covers": [ "LEGS", "TORSO", "ARMS", "HANDS", "HEAD", "FEET", "MOUTH", "EYES" ],
+ "flags": [ "AURA", "SEMITANGIBLE", "OVERSIZE", "ONLY_ONE", "TRADER_AVOID", "NO_TAKEOFF", "NONCONDUCTIVE" ],
+ "relic_data": {
+ "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_ACID", "multiply": -0.6 } ] } ]
+ }
}
]
diff --git a/data/mods/Magiclysm/items/mana_crystals.json b/data/mods/Magiclysm/items/mana_crystals.json
index 1685b7d223512..aa3fa655e26df 100644
--- a/data/mods/Magiclysm/items/mana_crystals.json
+++ b/data/mods/Magiclysm/items/mana_crystals.json
@@ -14,7 +14,7 @@
"name_plural": "crystallized mana",
"symbol": "=",
"color": "yellow",
- "description": "Some crystallized mana. This can be reloaded into rechargable mana crystals, but can never be unloaded.",
+ "description": "Some crystallized mana. This can be reloaded into rechargable mana crystals, but can never be unloaded.",
"flags": "TRADER_AVOID",
"volume": "100 ml",
"ammo_type": "crystallized_mana",
diff --git a/data/mods/Magiclysm/items/melee.json b/data/mods/Magiclysm/items/melee.json
new file mode 100644
index 0000000000000..dc9b819a0d388
--- /dev/null
+++ b/data/mods/Magiclysm/items/melee.json
@@ -0,0 +1,58 @@
+[
+ {
+ "id": "mjolnir",
+ "copy-from": "warhammer",
+ "type": "GENERIC",
+ "name": "Mjölnir",
+ "description": "Mjölnir, the legendary hammer of Thor. It is rumored to be able to level mountains with a single blow. You feel the power of Asgard coursing through the hammer.",
+ "weight": 1731,
+ "color": "light_gray",
+ "material": [ "orichalcum_metal", "wood", "gold" ],
+ "techniques": [ "WBLOCK_2", "BRUTAL" ],
+ "volume": 15,
+ "bashing": 45,
+ "price": 200000
+ },
+ {
+ "id": "gungnir",
+ "copy-from": "spear_steel",
+ "type": "GENERIC",
+ "name": "Gungnir",
+ "description": "Gungnir, the spear of Odin. It is rumored to be the perfect spear, perfectly hitting any target regardless of the wielder's strength or skill. If feels like Odin's protecting you.",
+ "weight": 1854,
+ "material": [ "orichalcum_metal", "wood", "gold" ],
+ "techniques": [ "WBLOCK_1", "IMPALE", "SWEEP" ],
+ "volume": 13,
+ "bashing": 10,
+ "cutting": 35,
+ "price": 200000
+ },
+ {
+ "id": "gram",
+ "copy-from": "jian",
+ "type": "GENERIC",
+ "name": "Gram",
+ "description": "Gram, the sword of Sigurd. It is rumored to be the sword that slayed the legendary dragon, Fafnir. Once said to have cleaved Regin's anvil in half, the edge is impeccable.",
+ "weight": 1132,
+ "material": [ "orichalcum_metal", "steel", "leather" ],
+ "techniques": [ "WBLOCK_2", "PRECISE", "VORPAL" ],
+ "volume": 10,
+ "cutting": 45,
+ "price": 200000
+ },
+ {
+ "id": "laevateinn",
+ "copy-from": "i_staff",
+ "type": "GENERIC",
+ "name": "Laevateinn",
+ "description": "Laevateinn, the staff of Loki. Said to have been plucked from the gates of Hel by Loki. Imbued with a mysterious magic, the magic of the trickster god himself.",
+ "price": 160000,
+ "material": [ "steel", "gold", "orichalcum_metal" ],
+ "flags": [ "MAGIC_FOCUS" ],
+ "techniques": [ "WBLOCK_2", "SPIN", "RAPID", "SWEEP" ],
+ "weight": 1860,
+ "bashing": 20,
+ "cutting": 35,
+ "use_action": { "type": "cast_spell", "spell_id": "ethereal_grasp", "no_fail": true, "level": 10, "need_wielding": true }
+ }
+]
diff --git a/data/mods/Magiclysm/items/metals.json b/data/mods/Magiclysm/items/metals.json
new file mode 100644
index 0000000000000..b9e2cec3a3231
--- /dev/null
+++ b/data/mods/Magiclysm/items/metals.json
@@ -0,0 +1,40 @@
+[
+ {
+ "id": "orichalcum_lump",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "lump of orichalcum",
+ "description": "A heavy formed piece of strange metal. Useful for some crafting recipes.",
+ "weight": "1000 g",
+ "volume": "250 ml",
+ "price": 2500,
+ "bashing": 12,
+ "to_hit": -4,
+ "stack_size": 2,
+ "//": "Density 7.60g/cm³ ~ 1.9kg/250ml @ 1000g/unit ~ stack 2 and formed as a solid ingot so 100% of this",
+ "material": "orichalcum_metal",
+ "symbol": ",",
+ "color": "light_green",
+ "ammo_type": "components",
+ "qualities": [ [ "HAMMER", 1 ] ]
+ },
+ {
+ "id": "orichalcum_sliver",
+ "type": "AMMO",
+ "category": "spare_parts",
+ "name": "sliver of orichalcum",
+ "description": "A sliver of a strange glowing metal. Useful as a weapon, but better suited for crafting.",
+ "weight": "250 g",
+ "volume": "250 ml",
+ "price": 1000,
+ "bashing": 8,
+ "to_hit": -2,
+ "stack_size": 4,
+ "//": "Density 7.60g/cm³ ~ 1.9kg/250ml @ 250g/unit ~ stack 8 but mishapen so only 50% of this",
+ "material": "orichalcum_metal",
+ "symbol": ",",
+ "color": "light_green",
+ "ammo_type": "components",
+ "qualities": [ [ "CUT", 1 ] ]
+ }
+]
diff --git a/data/mods/Magiclysm/items/recipe_books.json b/data/mods/Magiclysm/items/recipe_books.json
index ce77a230f1960..eb689e4c22297 100644
--- a/data/mods/Magiclysm/items/recipe_books.json
+++ b/data/mods/Magiclysm/items/recipe_books.json
@@ -2,9 +2,9 @@
{
"id": "black_dragons",
"type": "BOOK",
- "name": "Black Dragons: Swamp Ruins",
+ "name": { "str": "Black Dragons: Swamp Ruins", "str_pl": "copies of Black Dragons: Swamp Ruins" },
"description": "This book details black dragons: The most evil of dragons, who live in ruins generally in swamps. Immune to acid and breathe acid. The book also details how to prepare its hide and craft various armors that make use of some of its acid resistance.",
- "weight": 1000,
+ "weight": "1 kg",
"volume": "750 ml",
"price": 7900,
"bashing": 5,
@@ -21,10 +21,10 @@
{
"id": "alchemy_basic",
"type": "BOOK",
- "name": "A Beginner's Guide to Alchemy",
+ "name": { "str": "A Beginner's Guide to Alchemy", "str_pl": "copies of A Beginner's Guide to Alchemy" },
"description": "A paperback tome for the art of liquid magic, alcohol not included.",
- "weight": 1000,
- "volume": 3,
+ "weight": "1 kg",
+ "volume": "750 ml",
"price": 7900,
"bashing": 5,
"material": [ "paper" ],
@@ -40,10 +40,10 @@
{
"id": "necro_basic",
"type": "BOOK",
- "name": "A Soulbinder's Guide to Necromancy",
+ "name": { "str": "A Soulbinder's Guide to Necromancy", "str_pl": "copies of A Soulbinder's Guide to Necromancy" },
"description": "A paperback tome for the art of binding undead creatures' souls to dolls, along with emulating their healing factor.",
- "weight": 1000,
- "volume": 3,
+ "weight": "1 kg",
+ "volume": "750 ml",
"price": 7900,
"bashing": 5,
"material": [ "paper" ],
@@ -56,5 +56,43 @@
"intelligence": 9,
"time": "20 m",
"fun": -2
+ },
+ {
+ "id": "techno_basic",
+ "type": "BOOK",
+ "name": { "str": "Magitek Illustrated", "str_pl": "copies of Magitek Illustrated" },
+ "description": "A paperback tome for the art of combining modern technology with magic. There is a disclaimer on the back: `Cannith Industries bears no responsibility for malfunctions or accidents for any products mentioned herein`.",
+ "weight": "1 kg",
+ "volume": "750 ml",
+ "price": 7900,
+ "bashing": 5,
+ "material": [ "paper" ],
+ "symbol": "?",
+ "color": "black",
+ "looks_like": "manual_gun",
+ "skill": "mechanics",
+ "required_level": 3,
+ "max_level": 5,
+ "intelligence": 9,
+ "time": "20 m",
+ "fun": 1
+ },
+ {
+ "id": "book_mythological",
+ "type": "BOOK",
+ "name": { "str": "The Weapons of Asgard and Beyond", "str_pl": "copies of The Weapons of Asgard and Beyond" },
+ "max_level": 10,
+ "description": "An ornate book which appears to be written in Norse runes. Based on the detailed illustrations, it appears to contain information about crafting numerous weapons used by various Gods.",
+ "weight": 654,
+ "color": "light_blue",
+ "intelligence": 9,
+ "symbol": "?",
+ "material": [ "paper" ],
+ "volume": 5,
+ "time": 60,
+ "fun": 0,
+ "skill": "fabrication",
+ "price": 30000,
+ "required_level": 8
}
]
diff --git a/data/mods/Magiclysm/items/spell_scrolls.json b/data/mods/Magiclysm/items/spell_scrolls.json
index 671854bd9c9d6..9056ceab8cbfe 100644
--- a/data/mods/Magiclysm/items/spell_scrolls.json
+++ b/data/mods/Magiclysm/items/spell_scrolls.json
@@ -151,7 +151,7 @@
"copy-from": "spell_scroll",
"id": "spell_scroll_blinding_flash",
"name": "Scroll of Blinding Flash",
- "description": "Blind enemies for a short time with a sudden, dazzling light. Higher levels deal slightly higher damage.",
+ "description": "Blind enemies for a short time with a sudden, dazzling light. Higher levels deal slightly higher damage.",
"use_action": { "type": "learn_spell", "spells": [ "blinding_flash" ] }
},
{
@@ -159,7 +159,7 @@
"copy-from": "spell_scroll",
"id": "spell_scroll_ethereal_grasp",
"name": "Scroll of Ethereal Grasp",
- "description": "A mass of spectral hands emerge from the ground, slowing everything in range. Higher levels allow a bigger AoE, and longer effect.",
+ "description": "A mass of spectral hands emerge from the ground, slowing everything in range. Higher levels allow a bigger AoE, and longer effect.",
"use_action": { "type": "learn_spell", "spells": [ "ethereal_grasp" ] }
},
{
@@ -615,15 +615,39 @@
"copy-from": "spell_scroll",
"id": "spell_scroll_purification_seed",
"name": "Scroll of Purification Seed",
- "description": "You summon a gift of the earth which will purify water. Greater levels yield greater numbers of seeds.",
+ "description": "You summon a gift of the earth which will purify water. Greater levels yield greater numbers of seeds.",
"use_action": { "type": "learn_spell", "spells": [ "purify_seed" ] }
},
+ {
+ "type": "GENERIC",
+ "copy-from": "spell_scroll",
+ "id": "spell_scroll_x-ray",
+ "name": "Scroll of X-ray Vision",
+ "description": "You fire a cone of X-rays that magically allow you to see that area for a short time.",
+ "use_action": { "type": "learn_spell", "spells": [ "x-ray" ] }
+ },
+ {
+ "type": "GENERIC",
+ "copy-from": "spell_scroll",
+ "id": "spell_scroll_clairvoyance",
+ "name": "Scroll of Clairvoyance",
+ "description": "You close your eyes and the earth surrenders its secrets to you.",
+ "use_action": { "type": "learn_spell", "spells": [ "clairvoyance" ] }
+ },
{
"type": "GENERIC",
"copy-from": "spell_scroll",
"id": "spell_scroll_lava_bomb",
"name": "Scroll of Lava Bomb",
"description": "You tear up the ground beneath you to fire a lava bomb: a globe of lava surrounded by hot, solid rock. It shatters upon impact, spraying shards of rock and lava everywhere.",
- "use_action": { "type": "learn_spell", "spell": [ "lava_bomb" ] }
+ "use_action": { "type": "learn_spell", "spells": [ "lava_bomb_main" ] }
+ },
+ {
+ "type": "GENERIC",
+ "copy-from": "spell_scroll",
+ "id": "spell_scroll_acid_resistance",
+ "name": "Scroll of Acid Resistance",
+ "description": "This spell creates an invisible aura to protect you from acid.",
+ "use_action": { "type": "learn_spell", "spells": [ "acid_resistance" ] }
}
]
diff --git a/data/mods/Magiclysm/martialarts.json b/data/mods/Magiclysm/martialarts.json
index 9af276df1b20d..30d967a15f71c 100644
--- a/data/mods/Magiclysm/martialarts.json
+++ b/data/mods/Magiclysm/martialarts.json
@@ -14,7 +14,8 @@
"gauntlet_pounding",
"stonefist",
"stormglove",
- "rune_earthshaper_weapon"
+ "rune_earthshaper_weapon",
+ "shotcestus"
]
}
},
@@ -39,7 +40,10 @@
"kukri_plus_two",
"tanto_plus_one",
"tanto_plus_two",
- "rune_animist_weapon"
+ "rune_animist_weapon",
+ "springstaff-retracted",
+ "mjolnir",
+ "gram"
]
}
},
@@ -57,7 +61,8 @@
"cavalry_sabre_plus_one",
"cavalry_sabre_plus_two",
"broadsword_plus_one",
- "broadsword_plus_two"
+ "broadsword_plus_two",
+ "springstaff-retracted"
]
}
},
@@ -101,7 +106,8 @@
"gauntlet_pounding",
"stonefist",
"stormglove",
- "rune_earthshaper_weapon"
+ "rune_earthshaper_weapon",
+ "shotcestus"
]
}
},
@@ -126,7 +132,10 @@
"kukri_plus_two",
"tanto_plus_one",
"tanto_plus_two",
- "rune_animist_weapon"
+ "rune_animist_weapon",
+ "m47a1",
+ "springstaff-retracted",
+ "gram"
]
}
},
@@ -147,7 +156,9 @@
"longsword_plus_two",
"zweihander_plus_one",
"zweihander_plus_two",
- "rune_kelvinist_weapon"
+ "rune_kelvinist_weapon",
+ "gunblade",
+ "gram"
]
}
},
@@ -204,7 +215,9 @@
"wakizashi_plus_two",
"rune_animist_weapon",
"rune_kelvinist_weapon",
- "rune_magus_weapon"
+ "rune_magus_weapon",
+ "springstaff-extended",
+ "gunblade"
]
}
},
@@ -258,7 +271,11 @@
"rune_animist_weapon",
"rune_biomancer_weapon",
"rune_magus_weapon",
- "bonespear"
+ "bonespear",
+ "springstaff-retracted",
+ "springstaff-extended",
+ "gungnir",
+ "laevateinn"
]
}
},
@@ -280,7 +297,8 @@
"qiang_plus_one",
"qiang_plus_two",
"rune_biomancer_weapon",
- "bonespear"
+ "bonespear",
+ "gungnir"
]
}
}
diff --git a/data/mods/Magiclysm/materials.json b/data/mods/Magiclysm/materials.json
index afccb7f4ba88b..b66e3b81aa344 100644
--- a/data/mods/Magiclysm/materials.json
+++ b/data/mods/Magiclysm/materials.json
@@ -38,5 +38,26 @@
"dmg_adj": [ "scratched", "cut", "cracked", "shattered" ],
"bash_dmg_verb": "cracked",
"cut_dmg_verb": "chipped"
+ },
+ {
+ "type": "material",
+ "ident": "orichalcum_metal",
+ "name": "Orichalcum",
+ "density": 40,
+ "bash_resist": 13,
+ "specific_heat_liquid": 0.82,
+ "specific_heat_solid": 0.45,
+ "latent_heat": 273,
+ "cut_resist": 20,
+ "acid_resist": 7,
+ "fire_resist": 3,
+ "elec_resist": 0,
+ "chip_resist": 40,
+ "repaired_with": "scrap",
+ "dmg_adj": [ "marked", "dented", "smashed", "shattered" ],
+ "bash_dmg_verb": "dented",
+ "cut_dmg_verb": "scratched",
+ "burn_products": [ [ "scrap", 1 ] ],
+ "compacts_into": [ "orichalcum_lump", "orichalcum_sliver" ]
}
]
diff --git a/data/mods/Magiclysm/modinfo.json b/data/mods/Magiclysm/modinfo.json
index ac1baa1a889ad..f965385424706 100644
--- a/data/mods/Magiclysm/modinfo.json
+++ b/data/mods/Magiclysm/modinfo.json
@@ -3,7 +3,7 @@
"type": "MOD_INFO",
"ident": "magiclysm",
"name": "Magiclysm",
- "authors": [ "KorGgenT", "Aptronym" ],
+ "authors": [ "KorGgenT", "Aptronym", "LaVeyanFiend" ],
"maintainers": [ "KorGgenT" ],
"description": "Cataclysm but with magic spells!",
"category": "content",
diff --git a/data/mods/Magiclysm/monstergroups.json b/data/mods/Magiclysm/monstergroups.json
index 1c9e8c4c8a766..db3ca3ab1bb18 100644
--- a/data/mods/Magiclysm/monstergroups.json
+++ b/data/mods/Magiclysm/monstergroups.json
@@ -24,6 +24,7 @@
"is_animal": true,
"monsters": [
{ "monster": "mon_black_pudding", "freq": 14, "cost_multiplier": 0.8, "pack_size": [ 4, 6 ] },
+ { "monster": "mon_stirge", "freq": 7, "cost_multiplier": 1, "pack_size": [ 2, 8 ] },
{ "monster": "mon_wisp", "freq": 5, "cost_multiplier": 10, "conditions": [ "NIGHT" ] },
{ "monster": "mon_wisp", "freq": 1, "cost_multiplier": 10, "conditions": [ "NIGHT" ], "pack_size": [ 1, 3 ] },
{ "monster": "mon_dragon_black_wyrmling", "freq": 2, "cost_multiplier": 50 },
@@ -35,7 +36,11 @@
"name": "GROUP_CAVE",
"default": "mon_null",
"is_animal": true,
- "monsters": [ { "monster": "mon_owlbear", "freq": 100, "cost_multiplier": 10, "pack_size": [ 2, 4 ] } ]
+ "monsters": [
+ { "monster": "mon_owlbear", "freq": 100, "cost_multiplier": 10, "pack_size": [ 2, 4 ] },
+ { "monster": "mon_shrieker", "freq": 10, "cost_multiplier": 1 },
+ { "monster": "mon_lemure", "freq": 5, "cost_multiplier": 2, "pack_size": [ 1, 4 ] }
+ ]
},
{
"type": "monstergroup",
diff --git a/data/mods/Magiclysm/monsters/dragon.json b/data/mods/Magiclysm/monsters/dragon.json
index 09ee6ab5d7fd5..bafa29ae94150 100644
--- a/data/mods/Magiclysm/monsters/dragon.json
+++ b/data/mods/Magiclysm/monsters/dragon.json
@@ -120,7 +120,6 @@
"melee_cut": 28,
"armor_bash": 14,
"armor_cut": 30,
- "armor_pierce": 12,
"dodge": 3,
"//": "Large means powerful, but it does not mean fast.",
"speed": 100,
diff --git a/data/mods/Magiclysm/monsters/monsters.json b/data/mods/Magiclysm/monsters/monsters.json
index 624e4f373bbbf..9cf2998c42f50 100644
--- a/data/mods/Magiclysm/monsters/monsters.json
+++ b/data/mods/Magiclysm/monsters/monsters.json
@@ -71,14 +71,14 @@
"flags": [ "HEARS", "GOODHEARING", "NOHEAD", "POISON", "NO_BREATHE", "ACIDPROOF" ]
},
{
- "id": "mon_nothic",
- "name": "nothic",
- "description": "A baleful eye peers out from the darkness, its gleam hinting at a weird intelligence and unnerving malevolence.",
- "symbol": "N",
+ "id": "mon_krabgek",
+ "name": "krabgek",
+ "description": "A large baleful eye peers out from the darkness, its gleam hinting at a weird intelligence and unnerving malevolence. The eye oozes some pinkish liquid, and the weirdly humanoid figure is covered in sharp blue-black triangular plates.",
+ "symbol": "K",
"color": "dark_gray",
"type": "MONSTER",
"flags": [ "SEES", "HEARS", "SMELLS", "KEENNOSE", "PATH_AVOID_DANGER_1", "WARM" ],
- "harvest": "human",
+ "harvest": "mutant_human",
"material": [ "hflesh" ],
"bodytype": "human",
"default_faction": "magical_beast",
@@ -105,7 +105,7 @@
"cooldown": 1,
"damage_max_instance": [ { "damage_type": "cut", "amount": 25, "armor_multiplier": 1.2 } ]
},
- { "type": "spell", "spell_id": "necrotic_gaze", "cooldown": 5, "monster_message": "The nothic gazes at %3$s!" }
+ { "type": "spell", "spell_id": "necrotic_gaze", "cooldown": 5, "monster_message": "The krabgek gazes at %3$s!" }
]
},
{
@@ -216,7 +216,7 @@
"id": "mon_troll",
"type": "MONSTER",
"name": "troll",
- "description": "Monstrous, green-skinned humanoid. Trolls are renowned for their thick hides and natural regenerative ability.",
+ "description": "Monstrous, green-skinned humanoid. Trolls are renowned for their thick hides and natural regenerative ability.",
"default_faction": "magical_beast",
"bodytype": "human",
"species": [ "MAGICAL_BEAST" ],
@@ -237,9 +237,96 @@
"armor_cut": 16,
"vision_day": 40,
"vision_night": 3,
- "harvest": "mammal_large_leather",
+ "harvest": "human_large_leather",
"death_function": [ "NORMAL" ],
"special_attacks": [ { "type": "bite", "cooldown": 30 }, [ "GRAB", 15 ], [ "scratch", 15 ], [ "slam", 10 ], [ "SMASH", 30 ] ],
"flags": [ "SEES", "SMELLS", "KEENNOSE", "PATH_AVOID_DANGER_1", "WARM", "GRABS", "BLEED", "REGENERATES_1", "FLAMMABLE" ]
+ },
+ {
+ "id": "mon_stirge",
+ "type": "MONSTER",
+ "name": "stirge",
+ "description": "This horrid flying creature looks like a cross between a large bat and oversized mosquito.",
+ "default_faction": "magical_beast",
+ "species": [ "MAGICAL_BEAST" ],
+ "diff": 2,
+ "volume": "1000 ml",
+ "weight": 1250,
+ "hp": 20,
+ "speed": 133,
+ "material": [ "iflesh" ],
+ "symbol": "s",
+ "color": "red",
+ "aggression": 10,
+ "morale": 10,
+ "melee_skill": 4,
+ "melee_dice": 1,
+ "melee_dice_sides": 4,
+ "melee_cut": 2,
+ "dodge": 4,
+ "vision_day": 20,
+ "vision_night": 20,
+ "harvest": "stirge",
+ "special_attacks": [ { "type": "spell", "spell_id": "blood_suck", "spell_level": 3, "cooldown": 3 } ],
+ "anger_triggers": [ "PLAYER_CLOSE" ],
+ "death_function": [ "NORMAL" ],
+ "flags": [ "SEES", "SMELLS", "HEARS", "FLIES", "HIT_AND_RUN", "PATH_AVOID_FIRE", "SWARMS" ]
+ },
+ {
+ "id": "mon_shrieker",
+ "type": "MONSTER",
+ "name": "shrieker",
+ "description": "A shrieker is a human-sized mushroom that emits a piercing screech to drive off creatures that disturb it.",
+ "default_faction": "magical_beast",
+ "species": [ "FUNGUS" ],
+ "diff": 2,
+ "volume": "62500 ml",
+ "weight": 81500,
+ "hp": 25,
+ "speed": 100,
+ "material": [ "veggy" ],
+ "symbol": "7",
+ "color": "light_gray",
+ "aggression": 0,
+ "morale": 0,
+ "melee_cut": 0,
+ "dodge": 0,
+ "vision_day": 10,
+ "vision_night": 10,
+ "harvest": "shrieker",
+ "special_attacks": [ [ "SHRIEK_ALERT", 1 ] ],
+ "anger_triggers": [ "PLAYER_CLOSE" ],
+ "death_function": [ "NORMAL" ],
+ "flags": [ "SEES", "NOHEAD", "POISON", "IMMOBILE", "NO_BREATHE", "PACIFIST" ]
+ },
+ {
+ "id": "mon_lemure",
+ "type": "MONSTER",
+ "name": "lemure",
+ "description": "A lemure resembles a molten mass of flesh with a vaguely humanoid head and torso.",
+ "default_faction": "magical_beast",
+ "bodytype": "blob",
+ "species": [ "MAGICAL_BEAST" ],
+ "diff": 2,
+ "volume": "62500 ml",
+ "weight": 45000,
+ "hp": 20,
+ "speed": 50,
+ "material": [ "flesh" ],
+ "symbol": "0",
+ "color": "magenta",
+ "aggression": 100,
+ "morale": 100,
+ "melee_skill": 4,
+ "melee_dice": 1,
+ "melee_dice_sides": 4,
+ "melee_cut": 1,
+ "dodge": 2,
+ "vision_day": 40,
+ "vision_night": 40,
+ "harvest": "lemure",
+ "anger_triggers": [ "PLAYER_CLOSE" ],
+ "death_function": [ "NORMAL" ],
+ "flags": [ "SEES", "SMELLS", "HEARS", "STUMBLES", "PATH_AVOID_FIRE", "REGENERATES_1", "REVIVES" ]
}
]
diff --git a/data/mods/Magiclysm/npc/classes.json b/data/mods/Magiclysm/npc/classes.json
new file mode 100644
index 0000000000000..ba68ffbfaff8b
--- /dev/null
+++ b/data/mods/Magiclysm/npc/classes.json
@@ -0,0 +1,15 @@
+[
+ {
+ "type": "npc_class",
+ "id": "NC_MAGE_TEST",
+ "name": "Mage Test",
+ "job_description": "I'm a wandering debug tester for the arcane arts.",
+ "traits": [
+ { "trait": "STORMSHAPER" },
+ { "group": "BG_survival_story_EVACUEE" },
+ { "group": "NPC_starting_traits" },
+ { "group": "Appearance_demographics" }
+ ],
+ "spells": [ { "id": "lightning_bolt", "level": 6 }, { "id": "windrun", "level": 6 } ]
+ }
+]
diff --git a/data/mods/Magiclysm/recipes/alchemy.json b/data/mods/Magiclysm/recipes/alchemy.json
index 9ea8bf71ed497..a3341267fb08f 100644
--- a/data/mods/Magiclysm/recipes/alchemy.json
+++ b/data/mods/Magiclysm/recipes/alchemy.json
@@ -17,5 +17,22 @@
"skills_required": [ "spellcraft", 2 ],
"book_learn": [ [ "black_dragons", 2 ] ],
"category": "CSC_ENCHANTED_OTHER"
+ },
+ {
+ "type": "recipe",
+ "result": "spell_scroll_acid_resistance",
+ "qualities": [ { "id": "CONTAIN", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 }, { "id": "MANA_FOCUS", "level": 1 } ],
+ "tools": [ [ [ "paint_brush", -1 ] ] ],
+ "components": [
+ [ [ "tainted_blood", 2000 ], [ "blood", 8 ], [ "dragon_blood", 2000 ] ],
+ [ [ "acid", 4 ] ],
+ [ [ "water", 2 ], [ "water_clean", 2 ] ]
+ ],
+ "time": "2 h",
+ "skill_used": "spellcraft",
+ "difficulty": 2,
+ "book_learn": [ [ "black_dragons", 2 ] ],
+ "category": "CSC_ENCHANTED_OTHER",
+ "flags": [ "SECRET" ]
}
]
diff --git a/data/mods/Magiclysm/recipes/dragon_black.json b/data/mods/Magiclysm/recipes/dragon_black.json
index 9398f46214966..1284607fa18fb 100644
--- a/data/mods/Magiclysm/recipes/dragon_black.json
+++ b/data/mods/Magiclysm/recipes/dragon_black.json
@@ -140,5 +140,125 @@
"tools": [ [ [ "chisel", -1 ] ] ],
"using": [ [ "sewing_standard", 100 ], [ "welding_standard", 10 ] ],
"components": [ [ [ "black_dragon_tanned_hide", 4 ] ], [ [ "dragon_black_scale", 50 ] ], [ [ "dragon_essence", 5 ] ] ]
+ },
+ {
+ "result": "suit_xlblack_dragon_hide",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_SUIT",
+ "skill_used": "tailor",
+ "difficulty": 6,
+ "skills_required": [ "spellcraft", 4 ],
+ "time": "70 h",
+ "book_learn": [ [ "black_dragons", 5 ] ],
+ "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ],
+ "tools": [ [ [ "chisel", -1 ] ] ],
+ "using": [ [ "sewing_standard", 350 ] ],
+ "components": [ [ [ "black_dragon_tanned_hide", 60 ] ], [ [ "dragon_black_scale", 250 ] ], [ [ "dragon_essence", 20 ] ] ]
+ },
+ {
+ "result": "suit_xlblack_dragon_scale",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_SUIT",
+ "skill_used": "fabrication",
+ "difficulty": 8,
+ "skills_required": [ "spellcraft", 6 ],
+ "time": "340 h",
+ "book_learn": [ [ "black_dragons", 6 ] ],
+ "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ],
+ "tools": [ [ [ "chisel", -1 ] ] ],
+ "using": [ [ "sewing_standard", 350 ], [ "welding_standard", 100 ] ],
+ "components": [ [ [ "black_dragon_tanned_hide", 60 ] ], [ [ "dragon_black_scale", 2250 ] ], [ [ "dragon_essence", 25 ] ] ]
+ },
+ {
+ "result": "boots_xlblack_dragon_hide",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_SUIT",
+ "skill_used": "tailor",
+ "difficulty": 6,
+ "skills_required": [ "spellcraft", 4 ],
+ "time": "30 h",
+ "book_learn": [ [ "black_dragons", 5 ] ],
+ "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ],
+ "tools": [ [ [ "chisel", -1 ] ] ],
+ "using": [ [ "sewing_standard", 150 ] ],
+ "components": [ [ [ "black_dragon_tanned_hide", 6 ] ], [ [ "dragon_black_scale", 20 ] ], [ [ "dragon_essence", 3 ] ] ]
+ },
+ {
+ "result": "boots_xlblack_dragon_scale",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_SUIT",
+ "skill_used": "fabrication",
+ "difficulty": 8,
+ "skills_required": [ "spellcraft", 6 ],
+ "time": "30 h",
+ "book_learn": [ [ "black_dragons", 6 ] ],
+ "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ],
+ "tools": [ [ [ "chisel", -1 ] ] ],
+ "using": [ [ "sewing_standard", 150 ], [ "welding_standard", 20 ] ],
+ "components": [ [ [ "black_dragon_tanned_hide", 8 ] ], [ [ "dragon_black_scale", 125 ] ], [ [ "dragon_essence", 6 ] ] ]
+ },
+ {
+ "result": "helmet_xlblack_dragon_hide",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_SUIT",
+ "skill_used": "tailor",
+ "difficulty": 6,
+ "skills_required": [ "spellcraft", 4 ],
+ "time": "30 h",
+ "book_learn": [ [ "black_dragons", 5 ] ],
+ "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ],
+ "tools": [ [ [ "chisel", -1 ] ] ],
+ "using": [ [ "sewing_standard", 150 ] ],
+ "components": [ [ [ "black_dragon_tanned_hide", 4 ] ], [ [ "dragon_black_scale", 12 ] ], [ [ "dragon_essence", 3 ] ] ]
+ },
+ {
+ "result": "helmet_xlblack_dragon_scale",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_SUIT",
+ "skill_used": "fabrication",
+ "difficulty": 8,
+ "skills_required": [ "spellcraft", 6 ],
+ "time": "30 h",
+ "book_learn": [ [ "black_dragons", 6 ] ],
+ "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ],
+ "tools": [ [ [ "chisel", -1 ] ] ],
+ "using": [ [ "sewing_standard", 150 ], [ "welding_standard", 20 ] ],
+ "components": [ [ [ "black_dragon_tanned_hide", 2 ] ], [ [ "dragon_black_scale", 140 ] ], [ [ "dragon_essence", 6 ] ] ]
+ },
+ {
+ "result": "gloves_xlblack_dragon_hide",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_SUIT",
+ "skill_used": "tailor",
+ "difficulty": 6,
+ "skills_required": [ "spellcraft", 4 ],
+ "time": "30 h",
+ "book_learn": [ [ "black_dragons", 5 ] ],
+ "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ],
+ "tools": [ [ [ "chisel", -1 ] ] ],
+ "using": [ [ "sewing_standard", 150 ] ],
+ "components": [ [ [ "black_dragon_tanned_hide", 4 ] ], [ [ "dragon_black_scale", 15 ] ], [ [ "dragon_essence", 4 ] ] ]
+ },
+ {
+ "result": "gauntlets_xlblack_dragon_scale",
+ "type": "recipe",
+ "category": "CC_ARMOR",
+ "subcategory": "CSC_ARMOR_SUIT",
+ "skill_used": "fabrication",
+ "difficulty": 8,
+ "skills_required": [ "spellcraft", 6 ],
+ "time": "30 h",
+ "book_learn": [ [ "black_dragons", 6 ] ],
+ "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ],
+ "tools": [ [ [ "chisel", -1 ] ] ],
+ "using": [ [ "sewing_standard", 150 ], [ "welding_standard", 20 ] ],
+ "components": [ [ [ "black_dragon_tanned_hide", 6 ] ], [ [ "dragon_black_scale", 75 ] ], [ [ "dragon_essence", 7 ] ] ]
}
]
diff --git a/data/mods/Magiclysm/recipes/magic_tools.json b/data/mods/Magiclysm/recipes/magic_tools.json
index e17020540cc4d..922a9cfffdca6 100644
--- a/data/mods/Magiclysm/recipes/magic_tools.json
+++ b/data/mods/Magiclysm/recipes/magic_tools.json
@@ -35,10 +35,23 @@
"skills_required": [ "spellcraft", 2 ],
"difficulty": 3,
"time": "20 m",
- "book_learn": [ [ "alchemy_basic", 4 ] ],
+ "book_learn": [ [ "alchemy_basic", 3 ], [ "necro_basic", 4 ], [ "techno_basic", 4 ] ],
"qualities": [ { "id": "CHISEL", "level": 1 } ],
"components": [ [ [ "copper_bracelet", 1 ] ] ]
},
+ {
+ "type": "recipe",
+ "result": "silver_infuser",
+ "category": "CC_ENCHANTED",
+ "subcategory": "CSC_ENCHANTED_TOOLS",
+ "skill_used": "fabrication",
+ "skills_required": [ "spellcraft", 3 ],
+ "difficulty": 4,
+ "time": "20 m",
+ "book_learn": [ [ "alchemy_basic", 3 ], [ "necro_basic", 4 ], [ "techno_basic", 4 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 1 } ],
+ "components": [ [ [ "silver_bracelet", 1 ] ] ]
+ },
{
"type": "recipe",
"result": "rune_alchemist",
diff --git a/data/mods/Magiclysm/recipes/mods.json b/data/mods/Magiclysm/recipes/mods.json
new file mode 100644
index 0000000000000..18074f98ab6f0
--- /dev/null
+++ b/data/mods/Magiclysm/recipes/mods.json
@@ -0,0 +1,68 @@
+[
+ {
+ "type": "recipe",
+ "result": "magic_suppressor",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_ENCHANTED_MODS",
+ "skill_used": "mechanics",
+ "skills_required": [ [ "spellcraft", 4 ], [ "gun", 4 ] ],
+ "difficulty": 4,
+ "time": "2 m 36 s",
+ "book_learn": [ [ "techno_basic", 4 ] ],
+ "qualities": [ { "id": "SAW_M_FINE", "level": 1 } ],
+ "tools": [ [ [ "rune_technomancer", -1 ], [ "rune_technomancer_weapon", -1 ] ] ],
+ "components": [ [ [ "filter_liquid", 1 ], [ "muffler", 1 ] ], [ [ "pipe", 1 ] ], [ [ "scrap", 2 ] ], [ [ "glow_dust", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "mana_dot_sight",
+ "category": "CC_ENCHANTED",
+ "subcategory": "CSC_ENCHANTED_MODS",
+ "skill_used": "electronics",
+ "difficulty": 7,
+ "skills_required": [ [ "spellcraft", 7 ], [ "gun", 4 ] ],
+ "time": "3 h",
+ "book_learn": [ [ "techno_basic", 5 ] ],
+ "using": [ [ "soldering_standard", 20 ], [ "surface_heat", 20 ] ],
+ "qualities": [ { "id": "SCREW_FINE", "level": 1 }, { "id": "CHEM", "level": 2 }, { "id": "MANA_INFUSE", "level": 1 } ],
+ "tools": [
+ [ [ "mold_plastic", -1 ] ],
+ [ [ "rune_alchemist", -1 ], [ "rune_technomancer", -1 ], [ "rune_technomancer_weapon", -1 ] ]
+ ],
+ "components": [
+ [ [ "plastic_chunk", 2 ] ],
+ [ [ "amplifier", 1 ] ],
+ [ [ "power_supply", 1 ] ],
+ [ [ "light_minus_battery_cell", 1 ] ],
+ [ [ "crystallized_mana", 15 ] ],
+ [ [ "silver_small", 10 ] ],
+ [ [ "gold_small", 10 ] ],
+ [ [ "chem_aluminium_powder", 10 ] ],
+ [ [ "chem_chromium_oxide", 10 ] ],
+ [ [ "lens", 2 ] ]
+ ]
+ },
+ {
+ "type": "recipe",
+ "result": "mana_laser_under",
+ "category": "CC_ENCHANTED",
+ "subcategory": "CSC_ENCHANTED_MODS",
+ "skill_used": "electronics",
+ "difficulty": 4,
+ "skills_required": [ [ "spellcraft", 4 ], [ "gun", 4 ] ],
+ "time": "3 h",
+ "book_learn": [ [ "techno_basic", 4 ] ],
+ "using": [ [ "soldering_standard", 10 ] ],
+ "qualities": [ { "id": "SCREW_FINE", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 } ],
+ "tools": [ [ [ "rune_technomancer", -1 ], [ "rune_technomancer_weapon", -1 ], [ "rune_alchemist", -1 ] ] ],
+ "components": [
+ [ [ "amplifier", 1 ] ],
+ [ [ "power_supply", 1 ] ],
+ [ [ "lens", 2 ], [ "lens_small", 2 ] ],
+ [ [ "light_minus_battery_cell", 1 ] ],
+ [ [ "scrap", 1 ], [ "plastic_chunk", 1 ] ],
+ [ [ "small_mana_crystal", 1 ] ],
+ [ [ "cable", 5 ] ]
+ ]
+ }
+]
diff --git a/data/mods/Magiclysm/recipes/weapons.json b/data/mods/Magiclysm/recipes/weapons.json
index 692b2a030ab43..888cb7f769003 100644
--- a/data/mods/Magiclysm/recipes/weapons.json
+++ b/data/mods/Magiclysm/recipes/weapons.json
@@ -226,5 +226,129 @@
[ [ "bone", 1 ], [ "bone_human", 1 ], [ "bone_tainted", 2 ] ],
[ [ "needle_bone", 1 ] ]
]
+ },
+ {
+ "type": "recipe",
+ "result": "shotcestus",
+ "category": "CC_ENCHANTED",
+ "subcategory": "CSC_ENCHANTED_WEAPONS",
+ "skill_used": "mechanics",
+ "difficulty": 4,
+ "skills_required": [ [ "spellcraft", 4 ], [ "bashing", 2 ], [ "shotgun", 2 ] ],
+ "time": "4 h 30 m",
+ "book_learn": [ [ "techno_basic", 4 ] ],
+ "qualities": [
+ { "id": "HAMMER", "level": 3 },
+ { "id": "CUT_FINE", "level": 1 },
+ { "id": "SAW_M", "level": 2 },
+ { "id": "SAW_M_FINE", "level": 1 },
+ { "id": "SCREW_FINE", "level": 1 },
+ { "id": "MANA_INFUSE", "level": 1 }
+ ],
+ "tools": [ [ [ "rune_technomancer", -1 ], [ "rune_technomancer_weapon", -1 ] ] ],
+ "byproducts": [ [ "splinter", 4 ] ],
+ "//": "Splinters from stock",
+ "components": [ [ [ "leather", 4 ] ], [ [ "pipe_double_shotgun", 1 ], [ "shotgun_d", 1 ] ], [ [ "scrap", 8 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "mjolnir",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_BASHING",
+ "skill_used": "fabrication",
+ "skills_required": [ [ "spellcraft", 7 ], [ "bashing", 6 ] ],
+ "difficulty": 10,
+ "time": 480000,
+ "book_learn": [ [ "book_mythological", 10 ] ],
+ "using": [ [ "forging_standard", 3 ] ],
+ "qualities": [ { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "tongs", -1 ] ], [ [ "anvil", -1 ] ], [ [ "swage", -1 ] ] ],
+ "components": [
+ [ [ "warhammer", 1 ] ],
+ [ [ "gold_small", 1 ] ],
+ [ [ "silver_small", 2 ] ],
+ [ [ "rebar", 1 ] ],
+ [ [ "orichalcum_lump", 2 ] ]
+ ]
+ },
+ {
+ "type": "recipe",
+ "result": "gungnir",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_PIERCING",
+ "skill_used": "fabrication",
+ "skills_required": [ [ "spellcraft", 7 ], [ "stabbing", 6 ] ],
+ "difficulty": 10,
+ "time": 480000,
+ "book_learn": [ [ "book_mythological", 10 ] ],
+ "using": [ [ "forging_standard", 3 ] ],
+ "qualities": [ { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "tongs", -1 ] ], [ [ "anvil", -1 ] ], [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "spear_steel", 1 ] ], [ [ "gold_small", 1 ] ], [ [ "silver_small", 2 ] ], [ [ "orichalcum_lump", 2 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "gram",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_CUTTING",
+ "skill_used": "fabrication",
+ "skills_required": [ [ "spellcraft", 7 ], [ "cutting", 6 ] ],
+ "difficulty": 10,
+ "time": 480000,
+ "book_learn": [ [ "book_mythological", 10 ] ],
+ "using": [ [ "forging_standard", 3 ] ],
+ "qualities": [ { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "tongs", -1 ] ], [ [ "anvil", -1 ] ], [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "jian", 1 ] ], [ [ "gold_small", 1 ] ], [ [ "orichalcum_lump", 2 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "ichaival",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_RANGED",
+ "skill_used": "fabrication",
+ "skills_required": [ [ "spellcraft", 7 ], [ "archery", 6 ] ],
+ "difficulty": 10,
+ "time": 480000,
+ "book_learn": [ [ "book_mythological", 10 ] ],
+ "using": [ [ "forging_standard", 3 ] ],
+ "qualities": [ { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "tongs", -1 ] ], [ [ "anvil", -1 ] ], [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "reflexrecurvebow", 1 ] ], [ [ "gold_small", 1 ] ], [ [ "orichalcum_lump", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "laevateinn",
+ "category": "CC_WEAPON",
+ "subcategory": "CSC_WEAPON_CUTTING",
+ "skill_used": "fabrication",
+ "skills_required": [ [ "spellcraft", 7 ] ],
+ "difficulty": 10,
+ "time": 480000,
+ "book_learn": [ [ "book_mythological", 10 ] ],
+ "using": [ [ "forging_standard", 3 ] ],
+ "qualities": [ { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "tongs", -1 ] ], [ [ "anvil", -1 ] ], [ [ "swage", -1 ] ] ],
+ "components": [ [ [ "i_staff", 1 ] ], [ [ "gold_small", 1 ] ], [ [ "orichalcum_lump", 1 ] ] ]
+ },
+ {
+ "type": "recipe",
+ "result": "arrow_odin",
+ "category": "CC_AMMO",
+ "subcategory": "CSC_AMMO_ARROWS",
+ "skill_used": "fabrication",
+ "skills_required": [ [ "archery", 4 ], [ "spellcraft", 5 ] ],
+ "using": [ [ "forging_standard", 1 ] ],
+ "difficulty": 5,
+ "time": "30 m",
+ "book_learn": [ [ "book_mythological", 9 ] ],
+ "qualities": [ { "id": "HAMMER", "level": 2 }, { "id": "CUT", "level": 1 }, { "id": "ANVIL", "level": 3 } ],
+ "tools": [ [ [ "tongs", -1 ] ] ],
+ "components": [
+ [ [ "orichalcum_sliver", 1 ] ],
+ [ [ "adhesive", 1, "LIST" ], [ "filament", 10, "LIST" ] ],
+ [ [ "stick", 1 ], [ "broom", 1 ], [ "2x4", 1 ] ],
+ [ [ "fletching", 1, "LIST" ] ]
+ ]
}
]
diff --git a/data/mods/Magiclysm/requirements/metal.json b/data/mods/Magiclysm/requirements/metal.json
new file mode 100644
index 0000000000000..4f759892cefcc
--- /dev/null
+++ b/data/mods/Magiclysm/requirements/metal.json
@@ -0,0 +1,8 @@
+[
+ {
+ "id": "orichalcum_metal_standard",
+ "type": "requirement",
+ "//": "Materials for use when forging items from glowing metal",
+ "components": [ [ [ "orichalcum_lump", 1 ], [ "orichalcum_sliver", 2 ] ] ]
+ }
+]
diff --git a/data/mods/Magiclysm/scenarios.json b/data/mods/Magiclysm/scenarios.json
index 9226c3284688c..49c3aa5330247 100644
--- a/data/mods/Magiclysm/scenarios.json
+++ b/data/mods/Magiclysm/scenarios.json
@@ -20,5 +20,16 @@
"start_name": "Wizard's Secret Basement Study",
"allowed_locs": [ "magic_basement" ],
"professions": [ "wizard_novice", "novice_necromancer", "novice_earthshaper", "novice_technomancer", "novice_stormshaper" ]
+ },
+ {
+ "type": "scenario",
+ "ident": "lake_retreat",
+ "name": "The Wizard's Vacation",
+ "flags": [ "LONE_START" ],
+ "points": 6,
+ "description": "You have been an apprentice to a wizard for some time now, you've saved for years for your dream vaction at a secluded wizard tower. Your journey of self-discovery is interrupted by the cataclysm. Now you have to figure out how to survive on your own.",
+ "start_name": "Wizard's Retreat Vacation",
+ "allowed_locs": [ "lake_retreat" ],
+ "professions": [ "wizard_novice", "novice_necromancer", "novice_earthshaper", "novice_technomancer", "novice_stormshaper" ]
}
]
diff --git a/data/mods/Magiclysm/start_locations.json b/data/mods/Magiclysm/start_locations.json
index de17e3f338136..e0911bf18ef22 100644
--- a/data/mods/Magiclysm/start_locations.json
+++ b/data/mods/Magiclysm/start_locations.json
@@ -28,5 +28,11 @@
"ident": "magic_basement",
"name": "Wizard's Secret Basement Study",
"target": "magic_basement"
+ },
+ {
+ "type": "start_location",
+ "ident": "lake_retreat",
+ "name": "Wizard's lake retreat",
+ "target": "lake_retreat_ground"
}
]
diff --git a/data/mods/Magiclysm/worldgen/black_dragon_lair.json b/data/mods/Magiclysm/worldgen/black_dragon_lair.json
index 32a70f9ce2899..ccc51637fc3b6 100644
--- a/data/mods/Magiclysm/worldgen/black_dragon_lair.json
+++ b/data/mods/Magiclysm/worldgen/black_dragon_lair.json
@@ -274,6 +274,7 @@
{ "monster": "mon_dragon_black_young", "x": 30, "y": 26, "repeat": [ 1, 2 ], "chance": 100 },
{ "monster": "mon_dragon_black_young", "x": 30, "y": 26, "repeat": [ 1, 2 ], "chance": 100 },
{ "monster": "mon_dragon_black_wyrmling", "x": 41, "y": 45, "repeat": [ 1, 2 ], "chance": 100 },
+ { "monster": "mon_dragon_black_adult", "x": 29, "y": 28, "chance": 100 },
{ "monster": "mon_dragon_black_wyrmling", "x": 17, "y": 2, "repeat": [ 1, 2 ], "chance": 100 },
{ "monster": "mon_dragon_black_wyrmling", "x": 9, "y": 17, "repeat": [ 1, 2 ], "chance": 100 },
{ "monster": "mon_dragon_black_wyrmling", "x": 30, "y": 2, "repeat": [ 1, 2 ], "chance": 100 },
@@ -384,11 +385,7 @@
"furniture": { "a": "f_boulder_small", "c": "f_boulder_medium", "b": "f_boulder_large", "1": "f_fog", "2": "f_swamp_gas" },
"items": {
".": [ { "item": "lair_black_dragon", "chance": 15, "repeat": [ 0, 2 ] } ],
- " ": [
- { "item": "lair_black_dragon", "chance": 10, "repeat": [ 0, 2 ] },
- { "item": "spellbook_loot_1", "chance": 20, "repeat": [ 1, 2 ] },
- { "item": "spellbook_loot_2", "chance": 20, "repeat": [ 1, 2 ] }
- ]
+ " ": [ { "item": "lair_black_dragon_treasure", "chance": 80 } ]
}
}
},
diff --git a/data/mods/Magiclysm/worldgen/lake_retreat.json b/data/mods/Magiclysm/worldgen/lake_retreat.json
new file mode 100644
index 0000000000000..8d44758feee39
--- /dev/null
+++ b/data/mods/Magiclysm/worldgen/lake_retreat.json
@@ -0,0 +1,486 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "lake_retreat_ground",
+ "object": {
+ "fill_ter": "t_floor",
+ "rows": [
+ "/%//////................",
+ "//.//.////..............",
+ "......9..//.......9.....",
+ "..9.......//....%...9...",
+ "..........//...%%.......",
+ "....9......//.....9..9..",
+ "...........//...........",
+ "..........|++|......9...",
+ "...9.....|| ||.........",
+ "........||a g||........",
+ ".......|| g||....9..",
+ "......||y X g||......",
+ "..9...|H X Ih k0.....9",
+ "......|t X I C0.9....",
+ "....9.||C g||......",
+ ".......||y g||.....9.",
+ "9...%...|| g||........",
+ ".........||< ||.....9...",
+ "...9......|00|..........",
+ ".......9.........9....9.",
+ "...........9............",
+ "......9...........%.....",
+ "..........9...9.....9...",
+ ".9......................"
+ ],
+ "terrain": {
+ " ": "t_floor",
+ ".": [ [ "t_grass", 5 ], [ "t_grass_long", 2 ], "t_dirt", "t_shrub" ],
+ "%": [ [ "t_grass", 5 ], "t_dirt" ],
+ "/": "t_dirt",
+ "|": "t_rock_red",
+ "<": "t_wood_stairs_up",
+ ">": "t_wood_stairs_down",
+ "0": "t_window_domestic",
+ "+": "t_door_red_c",
+ "9": [
+ "t_tree_blackjack",
+ [ "t_tree_walnut", 5 ],
+ [ "t_tree_chestnut", 5 ],
+ "t_tree_beech",
+ "t_tree_hazelnut",
+ "t_tree_cottonwood",
+ [ "t_tree", 5 ],
+ [ "t_tree_elm", 3 ],
+ "t_tree_dead",
+ "t_tree_apple",
+ "t_tree_pear",
+ "t_tree_cherry",
+ "t_tree_peach",
+ "t_tree_apricot",
+ "t_tree_plum",
+ "t_tree_mulberry",
+ "t_tree_elderberry",
+ [ "t_tree_pine", 5 ],
+ "t_tree_birch",
+ [ "t_tree_willow", 3 ],
+ "t_tree_maple",
+ "t_tree_hickory",
+ "t_tree_almond",
+ "t_tree_pecan"
+ ]
+ },
+ "furniture": {
+ "%": [ [ "f_boulder_medium", 2 ], [ "f_boulder_small", 1 ], [ "f_boulder_large", 3 ] ],
+ "y": [ "f_indoor_plant_y", "f_indoor_plant" ],
+ "h": "f_chair",
+ "X": "f_sofa",
+ "t": "f_table",
+ "7": "f_bench",
+ "C": "f_armchair",
+ "a": "f_rack_coat",
+ "g": "f_bookcase",
+ "k": "f_floor_lamp",
+ "I": "f_desk",
+ "H": "f_fireplace"
+ },
+ "items": {
+ "g": [
+ { "item": "homebooks", "chance": 20, "repeat": [ 2, 4 ] },
+ { "item": "magic_shop_books", "chance": 30 },
+ { "item": "novels", "chance": 20, "repeat": [ 2, 4 ] }
+ ],
+ "I": [
+ { "item": "office", "chance": 30, "repeat": [ 2, 4 ] },
+ { "item": "magic_shop_potions", "chance": 20, "repeat": [ 1, 2 ] },
+ { "item": "magic_shop_wands", "chance": 15 },
+ { "item": "enchanted_small_items", "chance": 20 }
+ ],
+ "R": { "item": "trash", "chance": 25, "repeat": [ 1, 2 ] },
+ "W": { "item": "stash_wood", "chance": 25, "repeat": [ 1, 2 ] },
+ "t": { "item": "livingroom", "chance": 25, "repeat": [ 1, 2 ] },
+ "a": [
+ { "item": "jackets", "chance": 80, "repeat": [ 1, 2 ] },
+ { "item": "bags", "chance": 60, "repeat": [ 1, 2 ] },
+ { "item": "magic_shop_clothes", "chance": 40, "repeat": [ 1, 2 ] },
+ { "item": "enchanted_worn_items", "chance": 20, "repeat": [ 1, 2 ] }
+ ]
+ }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "lake_retreat_z1",
+ "object": {
+ "fill_ter": "t_floor",
+ "rows": [
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "..........|00|..........",
+ ".........||rr||.........",
+ "........||r r||........",
+ ".......|| y||.......",
+ "......||W c ||......",
+ "......0s cu hth 0......",
+ "......0m cu hth 0......",
+ "......||R c ||......",
+ ".......|| C||.......",
+ "........||y a||........",
+ ".........||><||.........",
+ "..........|00|..........",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................"
+ ],
+ "terrain": {
+ " ": "t_floor",
+ ".": "t_open_air",
+ "|": "t_rock_green",
+ "<": "t_wood_stairs_up",
+ ">": "t_wood_stairs_down",
+ "0": "t_window_domestic",
+ "+": "t_door_green_c"
+ },
+ "furniture": {
+ "y": [ "f_indoor_plant_y", "f_indoor_plant" ],
+ "h": "f_chair",
+ "t": "f_table",
+ "R": "f_trashcan",
+ "C": "f_armchair",
+ "a": "f_rack_coat",
+ "k": "f_floor_lamp",
+ "r": "f_rack_wood",
+ "s": "f_sink",
+ "u": "f_stool",
+ "W": "f_woodstove",
+ "c": "f_counter",
+ "m": "f_glass_fridge"
+ },
+ "items": {
+ "c": [
+ { "item": "dishes_utility", "chance": 30 },
+ { "item": "condiments", "chance": 40, "repeat": [ 1, 2 ] },
+ { "item": "SUS_knife_drawer", "chance": 20, "repeat": [ 1, 2 ] },
+ { "item": "SUS_junk_drawer", "chance": 10, "repeat": [ 1, 2 ] },
+ { "item": "SUS_cookware", "chance": 20 }
+ ],
+ "s": { "item": "oven", "chance": 20, "repeat": [ 2, 4 ] },
+ "m": { "item": "fridge", "chance": 20, "repeat": [ 2, 4 ] },
+ "R": { "item": "trash", "chance": 25, "repeat": [ 1, 2 ] },
+ "W": { "item": "stash_wood", "chance": 25, "repeat": [ 1, 2 ] },
+ "t": { "item": "condiments", "chance": 25, "repeat": [ 1, 2 ] },
+ "a": { "item": "jackets", "chance": 25, "repeat": [ 1, 2 ] },
+ "r": [
+ { "item": "condiments", "chance": 30, "repeat": [ 1, 2 ] },
+ { "item": "groce_ingredient", "chance": 30, "repeat": [ 1, 2 ] },
+ { "item": "groce_bread", "chance": 30, "repeat": [ 1, 2 ] },
+ { "item": "pantry_liquids", "chance": 30, "repeat": [ 1, 2 ] },
+ { "item": "dry_goods", "chance": 30, "repeat": [ 1, 2 ] },
+ { "item": "preserved_food", "chance": 30, "repeat": [ 1, 2 ] }
+ ]
+ }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "lake_retreat_z2",
+ "object": {
+ "fill_ter": "t_floor",
+ "rows": [
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "..........|00|..........",
+ ".........||s&||.........",
+ "........||c ||........",
+ ".......||||+|+|||.......",
+ "......||fy | yg||......",
+ "......0I dd|I d0......",
+ "......0IC dd|Ih d0......",
+ "......||g | f||......",
+ ".......|||+||+|||.......",
+ "........|| ||........",
+ ".........||<>||.........",
+ "..........|00|..........",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................"
+ ],
+ "terrain": {
+ " ": "t_floor",
+ ".": "t_open_air",
+ "|": "t_rock_blue",
+ "<": "t_wood_stairs_up",
+ ">": "t_wood_stairs_down",
+ "0": "t_window_domestic",
+ "+": "t_door_green_c"
+ },
+ "furniture": {
+ "y": [ "f_indoor_plant_y", "f_indoor_plant" ],
+ "h": "f_chair",
+ "t": "f_table",
+ "C": "f_armchair",
+ "g": "f_bookcase",
+ "I": "f_desk",
+ "s": "f_sink",
+ "d": "f_bed",
+ "f": "f_wardrobe",
+ "c": "f_shower"
+ },
+ "toilets": { "&": { } },
+ "items": {
+ "g": [
+ { "item": "homebooks", "chance": 50, "repeat": [ 2, 4 ] },
+ { "item": "magic_shop_books", "chance": 20 },
+ { "item": "novels", "chance": 80, "repeat": [ 2, 4 ] }
+ ],
+ "I": [
+ { "item": "bedroom", "chance": 70, "repeat": [ 2, 4 ] },
+ { "item": "magic_shop_potions", "chance": 30, "repeat": [ 1, 2 ] },
+ { "item": "magic_shop_wands", "chance": 15 },
+ { "item": "enchanted_small_items", "chance": 30, "repeat": [ 1, 2 ] }
+ ],
+ "d": { "item": "bed", "chance": 20, "repeat": [ 2, 4 ] },
+ "s": { "item": "softdrugs", "chance": 20, "repeat": [ 2, 4 ] },
+ "c": { "item": "shower", "chance": 25, "repeat": [ 1, 2 ] },
+ "f": [
+ { "item": "enchanted_worn_items", "chance": 30, "repeat": [ 1, 2 ] },
+ { "item": "enchanted_combat_items", "chance": 10 },
+ { "item": "magic_shop_clothes", "chance": 30, "repeat": [ 1, 2 ] },
+ { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] },
+ { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] },
+ { "item": "bags", "chance": 30, "repeat": [ 1, 2 ] }
+ ]
+ }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "lake_retreat_z3",
+ "object": {
+ "fill_ter": "t_concrete",
+ "rows": [
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "..........|00|..........",
+ ".........|| ||.........",
+ "........00 00........",
+ ".......00 MM 00.......",
+ "......|| MMMM ||......",
+ "......0h M$NM h0......",
+ "......0h MNNM h0......",
+ "......|| MMMM ||......",
+ ".......00 MM 00.......",
+ "........00 00........",
+ ".........||><||.........",
+ "..........|00|..........",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................"
+ ],
+ "terrain": {
+ " ": "t_concrete",
+ ".": "t_open_air",
+ "|": "t_rock_green",
+ ">": "t_wood_stairs_down",
+ "<": "t_wood_stairs_up",
+ "0": "t_laminated_glass",
+ "+": "t_door_green_c",
+ "M": "t_water_pool_shallow",
+ "N": [ "t_shrub_lilac", "t_shrub_hydrangea" ],
+ "$": [ "t_tree_apple", "t_tree_pear", "t_tree_cherry", "t_tree_peach", "t_tree_apricot", "t_tree_plum", "t_tree_willow" ]
+ },
+ "furniture": { "h": "f_bench" },
+ "items": { "h": [ { "item": "enchanted_small_items", "chance": 20 }, { "item": "magic_shop_books", "chance": 30 } ] }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "lake_retreat_z4",
+ "object": {
+ "fill_ter": "t_concrete",
+ "rows": [
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "..........||||..........",
+ ".........|| ||.........",
+ "........|| ||........",
+ ".......|| ||.......",
+ "......|| ||......",
+ "......| |......",
+ "......| |......",
+ "......|| ||......",
+ ".......|| ||.......",
+ "........|| ||........",
+ ".........|||>||.........",
+ "..........||||..........",
+ "........................",
+ "........................",
+ "........................",
+ "........................",
+ "........................"
+ ],
+ "terrain": {
+ " ": "t_glass_roof",
+ ".": "t_open_air",
+ "|": "t_rock_floor_no_roof",
+ ">": "t_wood_stairs_down",
+ "0": "t_laminated_glass"
+ }
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "lake_retreat_boathouse",
+ "object": {
+ "fill_ter": "t_grass",
+ "rows": [
+ "~~~~~~~--||||||||||...9.",
+ "~~~~~~--dddddd|b |.9...",
+ "~~~~~~~~~~~~~d|b r|...9.",
+ "~~~~~~~~~~~~~d w|9....",
+ "~~~~~~~~~~~~~d w|...9.",
+ "~~~~~~~~~~~~~d|b 0.....",
+ "~-dddddddddddd|b r|...9.",
+ "--.......|||||||+||.9...",
+ "--.............///......",
+ "..........9....///...9..",
+ ".....U.......9.//.9.....",
+ "...M.U........//....9...",
+ ".....U..9....//...9..9..",
+ "............//.9........",
+ "...........//......9...9",
+ "..9........////.........",
+ "...........//////...9...",
+ "................//.....9",
+ "......9.......9..//.....",
+ "..................////..",
+ "...............9..9//.9.",
+ "...9........9......////.",
+ "..........9.......9.9.//",
+ "//............9.......//"
+ ],
+ "place_vehicles": [
+ { "vehicle": "kayak_racing", "x": 11, "y": 2, "rotation": 180, "chance": 30, "status": 0 },
+ { "vehicle": "canoe", "x": 2, "y": 5, "rotation": 180, "chance": 40, "status": 0 }
+ ],
+ "place_loot": [ { "item": "rope_30", "x": 12, "y": 6, "chance": 100 }, { "item": "stepladder", "x": 17, "y": 1, "chance": 100 } ],
+ "terrain": {
+ " ": "t_floor",
+ "b": "t_floor",
+ "r": "t_floor",
+ "w": "t_floor",
+ "*": "t_wall_log_half",
+ "d": "t_dock",
+ "/": "t_dirt",
+ "M": "t_dirt",
+ "U": "t_dirt",
+ "~": "t_water_dp",
+ "-": "t_water_sh",
+ ".": [ [ "t_grass", 5 ], [ "t_grass_long", 2 ], "t_dirt", "t_shrub", "t_fern" ],
+ "|": "t_wall_log",
+ "0": "t_window_domestic",
+ "+": "t_door_c",
+ "9": [
+ "t_tree_blackjack",
+ [ "t_tree_walnut", 5 ],
+ [ "t_tree_chestnut", 5 ],
+ "t_tree_beech",
+ "t_tree_hazelnut",
+ "t_tree_cottonwood",
+ [ "t_tree", 5 ],
+ [ "t_tree_elm", 3 ],
+ "t_tree_dead",
+ "t_tree_apple",
+ "t_tree_pear",
+ "t_tree_cherry",
+ "t_tree_peach",
+ "t_tree_apricot",
+ "t_tree_plum",
+ "t_tree_mulberry",
+ "t_tree_elderberry",
+ [ "t_tree_pine", 5 ],
+ "t_tree_birch",
+ [ "t_tree_willow", 3 ],
+ "t_tree_maple",
+ "t_tree_hickory",
+ "t_tree_almond",
+ "t_tree_pecan"
+ ]
+ },
+ "furniture": { "r": "f_rack", "b": "f_bench", "U": "f_bench", "t": "f_table", "M": "f_firering", "w": "f_workbench" },
+ "items": {
+ "r": { "item": "fishing_items", "chance": 40, "repeat": [ 1, 2 ] },
+ "b": { "item": "fishing_items", "chance": 20, "repeat": [ 1, 2 ] },
+ "d": { "item": "fishing_items", "chance": 5, "repeat": [ 1, 2 ] },
+ "w": { "item": "home_hw", "chance": 30, "repeat": [ 1, 2 ] },
+ "M": { "item": "stash_wood", "chance": 100, "repeat": [ 6, 10 ] }
+ },
+ "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 10, 22 ], "y": [ 15, 22 ], "density": 0.1 } ]
+ }
+ },
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": "lake_retreat_boathouse_roof",
+ "object": {
+ "fill_ter": "t_tar_flat_roof",
+ "rows": [
+ " .......... ",
+ " .......... ",
+ " .......... ",
+ " .......... ",
+ " .......... ",
+ " .......... ",
+ " .......... ",
+ " .......... ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ ],
+ "palettes": [ "roof_palette" ],
+ "terrain": { ".": "t_tar_flat_roof" }
+ }
+ }
+]
diff --git a/data/mods/Magiclysm/worldgen/overmap_specials.json b/data/mods/Magiclysm/worldgen/overmap_specials.json
index 863e09b77ce9d..4b2d64dbda181 100644
--- a/data/mods/Magiclysm/worldgen/overmap_specials.json
+++ b/data/mods/Magiclysm/worldgen/overmap_specials.json
@@ -49,5 +49,70 @@
"city_distance": [ 20, -1 ],
"city_sizes": [ 0, 20 ],
"occurrences": [ 0, 0 ]
+ },
+ {
+ "type": "overmap_special",
+ "id": "Lake Retreat",
+ "overmaps": [
+ { "point": [ 0, 0, 0 ], "overmap": "lake_surface" },
+ { "point": [ 1, 0, 0 ], "overmap": "lake_surface" },
+ { "point": [ 2, 0, 0 ], "overmap": "lake_surface" },
+ { "point": [ 3, 0, 0 ], "overmap": "lake_surface" },
+ { "point": [ 4, 0, 0 ], "overmap": "lake_surface" },
+ { "point": [ 5, 0, 0 ], "overmap": "lake_surface" },
+ { "point": [ 6, 0, 0 ], "overmap": "lake_surface" },
+ { "point": [ 0, 1, 0 ], "overmap": "lake_surface" },
+ { "point": [ 1, 1, 0 ], "overmap": "lake_surface" },
+ { "point": [ 2, 1, 0 ], "overmap": "lake_shore" },
+ { "point": [ 3, 1, 0 ], "overmap": "lake_shore" },
+ { "point": [ 4, 1, 0 ], "overmap": "lake_shore" },
+ { "point": [ 5, 1, 0 ], "overmap": "lake_shore" },
+ { "point": [ 6, 1, 0 ], "overmap": "lake_surface" },
+ { "point": [ 0, 2, 0 ], "overmap": "lake_surface" },
+ { "point": [ 1, 2, 0 ], "overmap": "lake_shore" },
+ { "point": [ 2, 2, 0 ], "overmap": "lake_retreat_boathouse_north" },
+ { "point": [ 2, 2, 1 ], "overmap": "lake_retreat_boathouse_roof_north" },
+ { "point": [ 3, 2, 0 ], "overmap": "forest_thick" },
+ { "point": [ 4, 2, 0 ], "overmap": "forest_thick" },
+ { "point": [ 5, 2, 0 ], "overmap": "lake_shore" },
+ { "point": [ 6, 2, 0 ], "overmap": "lake_surface" },
+ { "point": [ 0, 3, 0 ], "overmap": "lake_surface" },
+ { "point": [ 1, 3, 0 ], "overmap": "lake_shore" },
+ { "point": [ 2, 3, 0 ], "overmap": "forest" },
+ { "point": [ 3, 3, 0 ], "overmap": "lake_retreat_ground_north" },
+ { "point": [ 3, 3, 1 ], "overmap": "lake_retreat_z1_north" },
+ { "point": [ 3, 3, 2 ], "overmap": "lake_retreat_z2_north" },
+ { "point": [ 3, 3, 3 ], "overmap": "lake_retreat_z3_north" },
+ { "point": [ 3, 3, 4 ], "overmap": "lake_retreat_z4_north" },
+ { "point": [ 4, 3, 0 ], "overmap": "forest" },
+ { "point": [ 5, 3, 0 ], "overmap": "lake_shore" },
+ { "point": [ 6, 3, 0 ], "overmap": "lake_surface" },
+ { "point": [ 0, 4, 0 ], "overmap": "lake_surface" },
+ { "point": [ 1, 4, 0 ], "overmap": "lake_shore" },
+ { "point": [ 2, 4, 0 ], "overmap": "forest_thick" },
+ { "point": [ 3, 4, 0 ], "overmap": "forest_thick" },
+ { "point": [ 4, 4, 0 ], "overmap": "lake_shore" },
+ { "point": [ 5, 4, 0 ], "overmap": "lake_shore" },
+ { "point": [ 6, 4, 0 ], "overmap": "lake_surface" },
+ { "point": [ 0, 5, 0 ], "overmap": "lake_surface" },
+ { "point": [ 1, 5, 0 ], "overmap": "lake_shore" },
+ { "point": [ 2, 5, 0 ], "overmap": "lake_shore" },
+ { "point": [ 3, 5, 0 ], "overmap": "lake_shore" },
+ { "point": [ 4, 5, 0 ], "overmap": "lake_shore" },
+ { "point": [ 5, 5, 0 ], "overmap": "lake_surface" },
+ { "point": [ 6, 5, 0 ], "overmap": "lake_surface" },
+ { "point": [ 0, 6, 0 ], "overmap": "lake_surface" },
+ { "point": [ 1, 6, 0 ], "overmap": "lake_surface" },
+ { "point": [ 2, 6, 0 ], "overmap": "lake_surface" },
+ { "point": [ 3, 6, 0 ], "overmap": "lake_surface" },
+ { "point": [ 4, 6, 0 ], "overmap": "lake_surface" },
+ { "point": [ 5, 6, 0 ], "overmap": "lake_surface" },
+ { "point": [ 6, 6, 0 ], "overmap": "lake_surface" }
+ ],
+ "locations": [ "lake_surface" ],
+ "city_distance": [ 3, -1 ],
+ "city_sizes": [ 4, 12 ],
+ "occurrences": [ 0, 1 ],
+ "flags": [ "CLASSIC", "LAKE" ]
}
]
diff --git a/data/mods/Magiclysm/worldgen/overmap_terrain.json b/data/mods/Magiclysm/worldgen/overmap_terrain.json
index 2642add833404..93b8ce6c50139 100644
--- a/data/mods/Magiclysm/worldgen/overmap_terrain.json
+++ b/data/mods/Magiclysm/worldgen/overmap_terrain.json
@@ -248,5 +248,61 @@
"sym": "%",
"color": "light_gray",
"see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "lake_retreat_ground",
+ "name": "forest",
+ "sym": "F",
+ "color": "green",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "lake_retreat_z1",
+ "name": "forest",
+ "sym": ".",
+ "color": "blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "lake_retreat_z2",
+ "name": "forest",
+ "sym": ".",
+ "color": "blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "lake_retreat_z3",
+ "name": "forest",
+ "sym": ".",
+ "color": "blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "lake_retreat_z4",
+ "name": "forest",
+ "sym": ".",
+ "color": "blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "lake_retreat_boathouse",
+ "name": "lake shore",
+ "sym": "#",
+ "color": "light_blue",
+ "see_cost": 5
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "lake_retreat_boathouse_roof",
+ "name": "forest",
+ "sym": ".",
+ "color": "blue",
+ "see_cost": 5
}
]
diff --git a/data/mods/Magiclysm/worldgen/used_bookstore.json b/data/mods/Magiclysm/worldgen/used_bookstore.json
index 898a95674e319..18d592699575e 100644
--- a/data/mods/Magiclysm/worldgen/used_bookstore.json
+++ b/data/mods/Magiclysm/worldgen/used_bookstore.json
@@ -51,7 +51,7 @@
"d": "f_dumpster",
"C": "f_counter"
},
- "monster": { "O": { "monster": "mon_nothic", "chance": 100 }, "z": { "monster": "mon_nothic", "chance": 33 } },
+ "monster": { "O": { "monster": "mon_krabgek", "chance": 100 }, "z": { "monster": "mon_krabgek", "chance": 33 } },
"toilets": { "&": { } },
"items": { "M": { "item": "spellbook_loot_1", "chance": 60 }, "N": { "item": "novels", "chance": 60, "repeat": [ 1, 3 ] } }
}
diff --git a/data/mods/Modular_Turrets/uncraft.json b/data/mods/Modular_Turrets/uncraft.json
index 3841c53b5d785..9f2951138947e 100644
--- a/data/mods/Modular_Turrets/uncraft.json
+++ b/data/mods/Modular_Turrets/uncraft.json
@@ -309,13 +309,17 @@
"skill_used": "electronics",
"qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
+ [ [ "ai_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
+ [ [ "memory_module", 1 ] ],
+ [ [ "pathfinding_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
[ [ "lightstrip_inactive", 3 ] ],
[ [ "lens", 3 ] ],
- [ [ "processor", 1 ] ],
- [ [ "RAM", 1 ] ],
[ [ "scrap", 2 ] ],
[ [ "e_scrap", 1 ] ],
- [ [ "motor_small", 1 ] ]
+ [ [ "robot_controls", 1 ] ],
+ [ [ "turret_chassis", 1 ] ]
]
},
{
@@ -326,13 +330,17 @@
"skill_used": "electronics",
"qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
+ [ [ "ai_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
+ [ [ "memory_module", 1 ] ],
+ [ [ "pathfinding_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
[ [ "lightstrip_inactive", 3 ] ],
[ [ "lens", 3 ] ],
- [ [ "processor", 2 ] ],
- [ [ "RAM", 2 ] ],
[ [ "scrap", 2 ] ],
[ [ "e_scrap", 2 ] ],
- [ [ "motor_small", 1 ] ]
+ [ [ "robot_controls", 1 ] ],
+ [ [ "turret_chassis", 1 ] ]
]
},
{
@@ -343,14 +351,18 @@
"skill_used": "electronics",
"qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
+ [ [ "ai_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
+ [ [ "memory_module", 1 ] ],
+ [ [ "pathfinding_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
[ [ "lightstrip_inactive", 3 ] ],
[ [ "lens", 3 ] ],
- [ [ "processor", 3 ] ],
- [ [ "RAM", 4 ] ],
[ [ "scrap", 2 ] ],
[ [ "e_scrap", 5 ] ],
[ [ "cable", 5 ] ],
- [ [ "motor_small", 1 ] ]
+ [ [ "robot_controls", 1 ] ],
+ [ [ "turret_chassis", 1 ] ]
]
}
]
diff --git a/data/mods/Modular_Turrets/uncraft_corpse.json b/data/mods/Modular_Turrets/uncraft_corpse.json
index 605cb2b6f3109..867371c6a9e3f 100644
--- a/data/mods/Modular_Turrets/uncraft_corpse.json
+++ b/data/mods/Modular_Turrets/uncraft_corpse.json
@@ -92,14 +92,18 @@
"using": [ [ "soldering_standard", 5 ] ],
"qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
+ [ [ "ai_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
+ [ [ "memory_module", 1 ] ],
+ [ [ "pathfinding_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
[ [ "lightstrip_inactive", 3 ] ],
[ [ "plut_cell", 1 ] ],
[ [ "lens", 2 ] ],
- [ [ "processor", 2 ] ],
- [ [ "RAM", 3 ] ],
[ [ "scrap", 2 ] ],
[ [ "e_scrap", 4 ] ],
- [ [ "motor_small", 1 ] ]
+ [ [ "robot_controls", 1 ] ],
+ [ [ "turret_chassis", 1 ] ]
]
},
{
@@ -111,14 +115,18 @@
"using": [ [ "soldering_standard", 5 ] ],
"qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
+ [ [ "ai_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
+ [ [ "memory_module", 1 ] ],
+ [ [ "pathfinding_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
[ [ "lightstrip_inactive", 3 ] ],
[ [ "plut_cell", 1 ] ],
[ [ "lens", 2 ] ],
- [ [ "processor", 2 ] ],
- [ [ "RAM", 3 ] ],
[ [ "scrap", 2 ] ],
[ [ "e_scrap", 4 ] ],
- [ [ "motor_small", 1 ] ]
+ [ [ "robot_controls", 1 ] ],
+ [ [ "turret_chassis", 1 ] ]
]
},
{
@@ -130,14 +138,18 @@
"using": [ [ "soldering_standard", 5 ] ],
"qualities": [ { "id": "SCREW", "level": 1 } ],
"components": [
+ [ [ "ai_module", 1 ] ],
+ [ [ "sensor_module", 1 ] ],
+ [ [ "memory_module", 1 ] ],
+ [ [ "pathfinding_module", 1 ] ],
+ [ [ "identification_module", 1 ] ],
[ [ "lightstrip_inactive", 3 ] ],
[ [ "plut_cell", 1 ] ],
[ [ "lens", 2 ] ],
- [ [ "processor", 2 ] ],
- [ [ "RAM", 3 ] ],
[ [ "scrap", 2 ] ],
[ [ "e_scrap", 4 ] ],
- [ [ "motor_small", 1 ] ]
+ [ [ "robot_controls", 1 ] ],
+ [ [ "turret_chassis", 1 ] ]
]
},
{
diff --git a/data/mods/More_Survival_Tools/recipes.json b/data/mods/More_Survival_Tools/recipes.json
index 852bca7ab1e22..422ab03e62619 100644
--- a/data/mods/More_Survival_Tools/recipes.json
+++ b/data/mods/More_Survival_Tools/recipes.json
@@ -192,7 +192,8 @@
"time": 45000,
"autolearn": true,
"book_learn": [ [ "textbook_fabrication", 1 ] ],
- "tools": [ [ [ "press", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ], [ [ "forge", 100 ], [ "oxy_torch", 20 ] ] ],
+ "using": [ [ "forging_standard", 5 ] ],
+ "tools": [ [ [ "press", -1 ] ], [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ],
"components": [
[ [ "copper", 50 ], [ "tin", 50 ], [ "bismuth", 50 ], [ "solder_wire", 50 ], [ "silver_small", 50 ], [ "scrap", 1 ] ]
]
diff --git a/data/mods/More_Survival_Tools/snippets.json b/data/mods/More_Survival_Tools/snippets.json
index db4f6c94662cb..149b5ee8ffd8c 100644
--- a/data/mods/More_Survival_Tools/snippets.json
+++ b/data/mods/More_Survival_Tools/snippets.json
@@ -2,7 +2,12 @@
{
"type": "snippet",
"category": "note",
- "text": [ "\"Shoot elfy mutants. Carve more bolts outta their bones. Rinse and repeat.\"" ],
- "//": "Dwarf Fortress reference."
+ "text": [
+ {
+ "id": "note_more_survival_tools_1",
+ "text": "\"Shoot elfy mutants. Carve more bolts outta their bones. Rinse and repeat.\"",
+ "//": "Dwarf Fortress reference."
+ }
+ ]
}
]
diff --git a/data/mods/My_Sweet_Cataclysm/sweet_snippets.json b/data/mods/My_Sweet_Cataclysm/sweet_snippets.json
index 975d38ea35052..4a0690dd0d4f3 100644
--- a/data/mods/My_Sweet_Cataclysm/sweet_snippets.json
+++ b/data/mods/My_Sweet_Cataclysm/sweet_snippets.json
@@ -2,6 +2,9 @@
"type": "snippet",
"category": "flier",
"text": [
- "A flyer for some kind of candy. It shows a picture of a gleaming human made of smooth candy looking at you in terror. \"SugarKin the first life-size human candy! Are you a real monster? Will you be able to devour it all?\""
+ {
+ "id": "flier_my_sweet_cataclysm_1",
+ "text": "A flyer for some kind of candy. It shows a picture of a gleaming human made of smooth candy looking at you in terror. \"SugarKin the first life-size human candy! Are you a real monster? Will you be able to devour it all?\""
+ }
]
}
diff --git a/data/mods/NW_Pack/nw_martialarts.json b/data/mods/NW_Pack/nw_martialarts.json
new file mode 100644
index 0000000000000..be064fcd4a304
--- /dev/null
+++ b/data/mods/NW_Pack/nw_martialarts.json
@@ -0,0 +1,30 @@
+[
+ {
+ "id": "style_swordsmanship",
+ "copy-from": "style_swordsmanship",
+ "type": "martial_art",
+ "name": "Medieval Swordsmanship",
+ "extend": { "weapons": [ "laevateinn_replica" ] }
+ },
+ {
+ "id": "style_ninjutsu",
+ "copy-from": "style_ninjutsu",
+ "type": "martial_art",
+ "name": "Ninjutsu",
+ "extend": { "weapons": [ "laevateinn_replica" ] }
+ },
+ {
+ "id": "style_silat",
+ "copy-from": "style_silat",
+ "type": "martial_art",
+ "name": "Silat",
+ "extend": { "weapons": [ "gungnir_replica" ] }
+ },
+ {
+ "id": "style_sojutsu",
+ "copy-from": "style_sojutsu",
+ "type": "martial_art",
+ "name": "Sojutsu",
+ "extend": { "weapons": [ "gungnir_replica" ] }
+ }
+]
diff --git a/data/mods/NW_Pack/nw_melee.json b/data/mods/NW_Pack/nw_melee.json
index 90c5b437b9f9d..57dd27e0460bd 100644
--- a/data/mods/NW_Pack/nw_melee.json
+++ b/data/mods/NW_Pack/nw_melee.json
@@ -23,5 +23,18 @@
"volume": 13,
"bashing": 10,
"price": 120000
+ },
+ {
+ "id": "laevateinn_replica",
+ "copy-from": "arming_sword",
+ "type": "TOOL",
+ "name": "Laevateinn",
+ "description": "A replica of Laevateinn, the sword of Freyr. It is rumored to be able to fight by itself. It is decorated with gold and silver ornaments.",
+ "price": 160000,
+ "material": [ "steel", "gold" ],
+ "techniques": "WBLOCK_2",
+ "weight": 1860,
+ "bashing": 17,
+ "cutting": 33
}
]
diff --git a/data/mods/NW_Pack/nw_tools.json b/data/mods/NW_Pack/nw_tools.json
deleted file mode 100644
index e4c9543e0474d..0000000000000
--- a/data/mods/NW_Pack/nw_tools.json
+++ /dev/null
@@ -1,15 +0,0 @@
-[
- {
- "id": "laevateinn_replica",
- "copy-from": "arming_sword",
- "type": "TOOL",
- "name": "Laevateinn",
- "description": "A replica of Laevateinn, the sword of Freyr. It is rumored to be able to fight by itself. It is decorated with gold and silver ornaments.",
- "price": 160000,
- "material": [ "steel", "gold" ],
- "techniques": "WBLOCK_2",
- "weight": 1860,
- "bashing": 17,
- "cutting": 33
- }
-]
diff --git a/data/mods/No_Acid_Zombies/modinfo.json b/data/mods/No_Acid_Zombies/modinfo.json
index 2039677d16eca..20ff7be0c03a2 100644
--- a/data/mods/No_Acid_Zombies/modinfo.json
+++ b/data/mods/No_Acid_Zombies/modinfo.json
@@ -14,7 +14,8 @@
"mon_zombie_corrosive",
"mon_zombie_acidic",
"mon_zombie_soldier_acid_1",
- "mon_zombie_soldier_acid_2"
+ "mon_zombie_soldier_acid_2",
+ "mon_zombie_wretched"
]
}
]
diff --git a/data/mods/No_Fungi/furniture.json b/data/mods/No_Fungi/furniture.json
index 768622294351d..aeafb770c67e9 100644
--- a/data/mods/No_Fungi/furniture.json
+++ b/data/mods/No_Fungi/furniture.json
@@ -22,5 +22,29 @@
"required_str": -1,
"flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "FUNGUS", "TINY" ],
"bash": { "str_min": 2, "str_max": 6, "sound": "poof.", "sound_fail": "poof." }
+ },
+ {
+ "type": "furniture",
+ "id": "f_fungal_mass",
+ "name": "fungal mass",
+ "description": "Thick ropes of mycal matter have covered the ground here completely. It's soft to the touch, but you sink into it, making moving across it difficult.",
+ "symbol": "O",
+ "bgcolor": "dark_gray",
+ "move_cost_mod": -10,
+ "required_str": -1,
+ "flags": [ "CONTAINER", "SEALED", "ALLOW_FIELD_EFFECT", "FLAMMABLE_ASH", "FUNGUS", "MOUNTABLE", "SHORT" ],
+ "bash": { "str_min": 6, "str_max": 30, "sound": "poof.", "sound_fail": "poof." }
+ },
+ {
+ "type": "furniture",
+ "id": "f_fungal_clump",
+ "name": "fungal clump",
+ "description": "Alien mold and stems mingle tightly here, creating a sort of fungal bush.",
+ "symbol": "#",
+ "bgcolor": "light_gray",
+ "move_cost_mod": 3,
+ "required_str": -1,
+ "flags": [ "TRANSPARENT", "CONTAINER", "SEALED", "ALLOW_FIELD_EFFECT", "FLAMMABLE_ASH", "FUNGUS", "MOUNTABLE", "SHORT" ],
+ "bash": { "str_min": 6, "str_max": 20, "sound": "poof.", "sound_fail": "poof." }
}
]
diff --git a/data/mods/No_Fungi/terrain.json b/data/mods/No_Fungi/terrain.json
index 66d0afbe9013e..16977d315cd5a 100644
--- a/data/mods/No_Fungi/terrain.json
+++ b/data/mods/No_Fungi/terrain.json
@@ -10,6 +10,131 @@
"flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "SHRUB", "FUNGUS", "SHORT" ],
"bash": { "str_min": 4, "str_max": 60, "sound": "crunch.", "sound_fail": "poof!", "ter_set": "t_fungus" }
},
+ {
+ "type": "terrain",
+ "id": "t_fungus",
+ "name": "fungal bed",
+ "description": "Fungus grows thick here, obscuring the ground beneath it.",
+ "symbol": ".",
+ "color": "light_gray",
+ "move_cost": 3,
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "DIGGABLE", "FUNGUS", "NOCOLLIDE" ],
+ "bash": {
+ "sound": "smash",
+ "//": "muffled because fungus",
+ "ter_set": "t_null",
+ "str_min": 20,
+ "str_max": 400,
+ "str_min_supported": 50
+ }
+ },
+ {
+ "type": "terrain",
+ "id": "t_fungus_floor_in",
+ "name": "fungal floor",
+ "description": "Grayish mold coats both the floor and the roof here, silent and still. Stray spores waft through the air.",
+ "//": "roofed",
+ "symbol": ".",
+ "color": "light_gray",
+ "move_cost": 2,
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "SUPPORTS_ROOF", "COLLAPSES", "INDOORS", "FLAT", "FUNGUS" ],
+ "bash": { "sound": "smash", "ter_set": "t_null", "str_min": 20, "str_max": 400, "str_min_supported": 50 }
+ },
+ {
+ "type": "terrain",
+ "id": "t_fungus_floor_sup",
+ "name": "fungal floor",
+ "description": "Grayish mold coats the floor here, silent and still.",
+ "//": "supports",
+ "symbol": ".",
+ "color": "light_gray",
+ "move_cost": 2,
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "SUPPORTS_ROOF", "FLAT", "FUNGUS" ],
+ "bash": { "sound": "smash", "ter_set": "t_null", "str_min": 20, "str_max": 400, "str_min_supported": 50 }
+ },
+ {
+ "type": "terrain",
+ "id": "t_fungus_floor_out",
+ "name": "fungal floor",
+ "description": "Grayish mold coats the ground here, silent and still.",
+ "//": "outside",
+ "symbol": ".",
+ "color": "light_gray",
+ "move_cost": 2,
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "FLAT", "FUNGUS" ],
+ "bash": { "sound": "SMASH!", "ter_set": "t_null", "str_min": 20, "str_max": 400, "str_min_supported": 50 }
+ },
+ {
+ "type": "terrain",
+ "id": "t_fungus_wall",
+ "aliases": [ "t_fungus_wall_h", "t_fungus_wall_v" ],
+ "name": "fungal wall",
+ "description": "Several thick, large tendrils of fungus perforate the wall here, piercing straight through it from the outside. Despite the apparent damage, the wall is still structurally sound.",
+ "symbol": "O",
+ "color": "dark_gray",
+ "move_cost": 0,
+ "coverage": 100,
+ "flags": [ "FLAMMABLE_ASH", "NOITEM", "SUPPORTS_ROOF", "FUNGUS", "WALL", "MINEABLE" ],
+ "bash": { "str_min": 30, "str_max": 180, "sound": "crunch!", "sound_fail": "poof!", "ter_set": "t_fungus" }
+ },
+ {
+ "type": "terrain",
+ "id": "t_fungus_wall_transformed",
+ "name": "fungal wall",
+ "description": "The fungus here has grown thickly and tightly enough to form a solid wall. It feels very stiff to the touch, and seems to be very strong.",
+ "symbol": "LINE_OXOX",
+ "color": "dark_gray",
+ "move_cost": 0,
+ "coverage": 100,
+ "flags": [ "FLAMMABLE_ASH", "NOITEM", "SUPPORTS_ROOF", "FUNGUS", "WALL", "AUTO_WALL_SYMBOL", "MINEABLE" ],
+ "bash": { "str_min": 30, "str_max": 180, "sound": "crunch!", "sound_fail": "poof!", "ter_set": "t_fungus" }
+ },
+ {
+ "type": "terrain",
+ "id": "t_fungus_mound",
+ "name": "fungal mound",
+ "description": "A mound of fungal matter, intertwined in itself.",
+ "symbol": "#",
+ "color": "light_gray",
+ "move_cost": 4,
+ "flags": [ "TRANSPARENT", "THIN_OBSTACLE", "FLAMMABLE_ASH", "FUNGUS", "MOUNTABLE" ],
+ "bash": { "str_min": 10, "str_max": 70, "sound": "crunch!", "sound_fail": "poof!", "ter_set": "t_fungus" }
+ },
+ {
+ "type": "terrain",
+ "id": "t_shrub_fungal",
+ "name": "fungal shrub",
+ "description": "This shrub has been completely absorbed by the mushrooms. Its branches droop and have lost much of their structure, and its leaves have vanished, replaced by fleshy gray sacks that visibly expand and contract.",
+ "symbol": "#",
+ "color": "dark_gray",
+ "move_cost": 8,
+ "coverage": 40,
+ "flags": [ "TRANSPARENT", "CONTAINER", "FLAMMABLE_ASH", "THIN_OBSTACLE", "PLACE_ITEM", "SHRUB", "FUNGUS", "SHORT" ],
+ "bash": { "str_min": 4, "str_max": 60, "sound": "crunch.", "sound_fail": "poof!", "ter_set": "t_fungus" }
+ },
+ {
+ "type": "terrain",
+ "id": "t_tree_fungal",
+ "name": "fungal tree",
+ "description": "Once tall and majestic, this tree is now a slave to the fungus like the landscape around it. Its bark is penetrated by and covered with fungal tendrils, and the canopy has rotted away, leaving only the branches, stretching forlornly to the sky as if to escape the infection overrunning it.",
+ "symbol": "7",
+ "color": "dark_gray",
+ "move_cost": 0,
+ "coverage": 80,
+ "flags": [ "FLAMMABLE_ASH", "NOITEM", "FUNGUS", "TREE", "REDUCE_SCENT" ],
+ "bash": { "str_min": 40, "str_max": 180, "sound": "crunch!", "sound_fail": "poof!", "ter_set": "t_fungus" }
+ },
+ {
+ "type": "terrain",
+ "id": "t_tree_fungal_young",
+ "name": "young fungal tree",
+ "description": "A small sapling poking through the ground, infested by fungal mold.",
+ "symbol": "1",
+ "color": "dark_gray",
+ "move_cost": 4,
+ "flags": [ "TRANSPARENT", "FLAMMABLE_ASH", "NOITEM", "FUNGUS", "YOUNG", "REDUCE_SCENT" ],
+ "bash": { "str_min": 4, "str_max": 50, "sound": "crunch!", "sound_fail": "poof!", "ter_set": "t_fungus" }
+ },
{
"type": "terrain",
"id": "t_marloss_tree",
diff --git a/data/mods/No_Old_guns/modinfo.json b/data/mods/No_Old_guns/modinfo.json
index 01dee47e29971..de2b11b5721fb 100644
--- a/data/mods/No_Old_guns/modinfo.json
+++ b/data/mods/No_Old_guns/modinfo.json
@@ -4,7 +4,7 @@
"ident": "no_olg_guns",
"name": "No Antique Firearms",
"authors": [ "Rivet-the-Zombie" ],
- "maintainers": [ "Rivet-the-Zombie" ],
+ "maintainers": [ "Rivet-the-Zombie", "Cyrano7" ],
"description": "Removes all black powder and pre-Cold War firearms.",
"category": "item_exclude",
"dependencies": [ "dda" ]
@@ -12,6 +12,8 @@
{
"type": "ITEM_BLACKLIST",
"items": [
+ "sharps",
+ "colt_saa",
"lemat_revolver",
"garand",
"garandclip",
@@ -60,7 +62,10 @@
"762_25hot",
"762_25typeP",
"reloaded_762_25",
- "762_25_casing"
+ "762_25_casing",
+ "45colt_jhp",
+ "reloaded_45colt_jhp",
+ "45colt_casing"
]
}
]
diff --git a/data/mods/No_Survivor_Armor/survivor.json b/data/mods/No_Survivor_Armor/survivor.json
index c191a18d422d5..ead1bdec519b4 100644
--- a/data/mods/No_Survivor_Armor/survivor.json
+++ b/data/mods/No_Survivor_Armor/survivor.json
@@ -38,6 +38,7 @@
"gloves_lsurvivor",
"gloves_survivor",
"gloves_hsurvivor",
+ "gloves_survivor_fingerless",
"hood_lsurvivor",
"hood_survivor",
"helmet_survivor",
@@ -59,6 +60,8 @@
"survivor_goggles",
"survivor_light",
"survivor_light_on",
+ "wearable_atomic_light",
+ "wearable_atomic_light_off",
"lsurvivor_pants",
"lsurvivor_armor"
]
diff --git a/data/mods/Tanks/items.json b/data/mods/Tanks/items.json
index 7475d6b7f1a9b..d683a37cb5729 100644
--- a/data/mods/Tanks/items.json
+++ b/data/mods/Tanks/items.json
@@ -368,7 +368,7 @@
"dispersion": 0,
"sight_dispersion": 10,
"durability": 8,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 5 ] ],
"reload": 700,
"loudness": 175,
"magazines": [ [ "30mm", [ "belt30mm" ] ] ]
diff --git a/data/mods/Tanks/snippets.json b/data/mods/Tanks/snippets.json
index d02f47d7adffc..d1b732283e280 100644
--- a/data/mods/Tanks/snippets.json
+++ b/data/mods/Tanks/snippets.json
@@ -1,29 +1,22 @@
[
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"Tank drone, meet the real deal. See how you handle 120 millimeters of HELL YEAH!\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"big fucking gun, earplugs are good for your brain\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"I have a bicyle-mounted tank cannon. Your argument is invalid.\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"Next person to call this infantry fighting vehicle a 'tank' is walking home.\"" ]
- },
{
"type": "snippet",
"category": "note",
"text": [
- "\"Found what used to be an armored platoon. Most tanks have hatches up top, not in the back like the new ones they're using.\""
+ {
+ "id": "note_tanks_1",
+ "text": "\"Tank drone, meet the real deal. See how you handle 120 millimeters of HELL YEAH!\""
+ },
+ { "id": "note_tanks_2", "text": "\"big fucking gun, earplugs are good for your brain\"" },
+ { "id": "note_tanks_3", "text": "\"I have a bicyle-mounted tank cannon. Your argument is invalid.\"" },
+ {
+ "id": "note_tanks_4",
+ "text": "\"Next person to call this infantry fighting vehicle a 'tank' is walking home.\""
+ },
+ {
+ "id": "note_tanks_5",
+ "text": "\"Found what used to be an armored platoon. Most tanks have hatches up top, not in the back like the new ones they're using.\""
+ }
]
}
]
diff --git a/data/mods/alt_map_key/overmap_terrain.json b/data/mods/alt_map_key/overmap_terrain.json
index 74a9953b24557..212ac5e59bcd8 100644
--- a/data/mods/alt_map_key/overmap_terrain.json
+++ b/data/mods/alt_map_key/overmap_terrain.json
@@ -840,20 +840,153 @@
},
{
"type": "overmap_terrain",
- "id": "megastore_entrance",
- "copy-from": "megastore_entrance",
- "name": "megastore",
- "sym": "M",
- "color": "i_magenta"
+ "id": "megastore_parking",
+ "copy-from": "megastore_parking",
+ "sym": "p",
+ "color": "light_blue"
},
{
"type": "overmap_terrain",
- "id": "megastore",
- "copy-from": "megastore",
- "name": "megastore",
+ "id": "megastore_0_0_0",
+ "copy-from": "megastore_0_0_0",
"sym": "m",
"color": "i_magenta"
},
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_0_0",
+ "copy-from": "megastore_0_0_0"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_0_0",
+ "copy-from": "megastore_0_0_0"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_1_0",
+ "copy-from": "megastore_0_0_0"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_1_0",
+ "copy-from": "megastore_0_0_0"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_1_0",
+ "copy-from": "megastore_0_0_0"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_2_0",
+ "copy-from": "megastore_0_0_0"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_2_0",
+ "copy-from": "megastore_1_2_0",
+ "name": "megastore entrance",
+ "color": "i_magenta",
+ "symbol": "M"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_2_0",
+ "copy-from": "megastore_0_0_0"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_0_1",
+ "copy-from": "megastore_0_0_1",
+ "color": "i_magenta"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_0_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_0_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_1_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_1_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_1_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_2_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_2_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_2_1",
+ "copy-from": "megastore_0_0_1"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_0_roof",
+ "copy-from": "megastore_0_0_roof",
+ "color": "i_magenta"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_0_roof",
+ "copy-from": "megastore_0_0_roof"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_0_roof",
+ "copy-from": "megastore_0_0_roof"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_1_roof",
+ "copy-from": "megastore_0_0_roof"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_1_roof",
+ "copy-from": "megastore_0_0_roof"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_1_roof",
+ "copy-from": "megastore_0_0_roof"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_0_2_roof",
+ "copy-from": "megastore_0_0_roof"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_1_2_roof",
+ "copy-from": "megastore_0_0_roof"
+ },
+ {
+ "type": "overmap_terrain",
+ "id": "megastore_2_2_roof",
+ "copy-from": "megastore_0_0_roof"
+ },
{
"type": "overmap_terrain",
"abstract": "generic_hospital",
diff --git a/data/mods/blazemod/blaze_blob.json b/data/mods/blazemod/blaze_blob.json
index b44eeceb9e533..bc7591332281f 100644
--- a/data/mods/blazemod/blaze_blob.json
+++ b/data/mods/blazemod/blaze_blob.json
@@ -138,7 +138,7 @@
"pierce": 15,
"sight_dispersion": 150,
"durability": 10,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 5 ] ],
"clip_size": 50,
"ammo_effects": [ "WIDE" ],
"flags": [ "NEVER_JAMS", "MOUNTED_GUN", "NO_BOOM" ]
@@ -343,7 +343,7 @@
"pierce": 20,
"sight_dispersion": 150,
"durability": 10,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 5 ] ],
"clip_size": 50,
"ammo_effects": [ "WIDE" ],
"flags": [ "NEVER_JAMS", "MOUNTED_GUN" ]
@@ -690,7 +690,7 @@
"pierce": 15,
"sight_dispersion": 150,
"durability": 10,
- "burst": 20,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 20 ] ],
"clip_size": 240,
"ammo_effects": [ "WIDE" ],
"flags": [ "NEVER_JAMS", "MOUNTED_GUN" ]
@@ -1053,7 +1053,7 @@
"pierce": 5,
"sight_dispersion": 150,
"durability": 10,
- "burst": 3,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"clip_size": 36,
"flags": [ "NEVER_JAMS", "MOUNTED_GUN" ]
},
@@ -1232,7 +1232,7 @@
"dispersion": 450,
"sight_dispersion": 150,
"durability": 10,
- "burst": 3,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"clip_size": 180,
"ammo_effects": [ "INCENDIARY", "FLARE", "WIDE", "NO_BOOM", "STREAM" ],
"flags": [ "NEVER_JAMS", "MOUNTED_GUN", "NO_BOOM", "FIRE_20" ]
diff --git a/data/mods/blazemod/blaze_override.json b/data/mods/blazemod/blaze_override.json
index 53e144c201054..0508c3460d789 100644
--- a/data/mods/blazemod/blaze_override.json
+++ b/data/mods/blazemod/blaze_override.json
@@ -5,7 +5,6 @@
"type": "AMMO",
"name": "rock",
"count": 1,
- "ammo_type": "h_projectile",
"damage": 15,
"dispersion": 45,
"effects": [ "RECOVER_10", "BEANBAG" ]
diff --git a/data/mods/blazemod/blaze_test.json b/data/mods/blazemod/blaze_test.json
index 54264e03b47c7..3aedc2654d13f 100644
--- a/data/mods/blazemod/blaze_test.json
+++ b/data/mods/blazemod/blaze_test.json
@@ -859,7 +859,7 @@
"dispersion": 300,
"sight_dispersion": 150,
"durability": 8,
- "burst": 3,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"clip_size": 30,
"reload": 40,
"valid_mod_locations": [ ],
@@ -964,7 +964,7 @@
"dispersion": 300,
"sight_dispersion": 150,
"durability": 8,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"clip_size": 250,
"reload": 10,
"valid_mod_locations": [ ],
diff --git a/data/mods/blazemod/blaze_weapons.json b/data/mods/blazemod/blaze_weapons.json
index 3b1d11f270ba9..4d342188fb39c 100644
--- a/data/mods/blazemod/blaze_weapons.json
+++ b/data/mods/blazemod/blaze_weapons.json
@@ -20,7 +20,7 @@
"pierce": 20,
"sight_dispersion": 150,
"durability": 9,
- "burst": 3,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"reload": 150,
"magazine_well": 1,
"magazines": [ [ "bolt", [ "bolt_hopper" ] ] ],
@@ -51,7 +51,7 @@
"magazine_well": 1,
"magazines": [ [ "h_projectile", [ "cannister_rack" ] ] ],
"ammo_effects": [ "WIDE" ],
- "flags": [ "NEVER_JAMS", "MOUNTED_GUN" ]
+ "flags": [ "NEVER_JAMS", "MOUNTED_GUN", "NON-FOULING" ]
},
{
"id": "cutter",
@@ -76,7 +76,7 @@
"clip_size": 5,
"reload": 1250,
"valid_mod_locations": [ ],
- "flags": [ "MOUNTED_GUN", "NEVER_JAMS" ]
+ "flags": [ "MOUNTED_GUN", "NEVER_JAMS", "NON-FOULING" ]
},
{
"id": "gattler",
@@ -98,7 +98,7 @@
"ranged_damage": 60,
"sight_dispersion": 150,
"durability": 8,
- "burst": 3,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"clip_size": 12,
"reload": 750,
"valid_mod_locations": [ ],
@@ -149,7 +149,7 @@
"pierce": 20,
"sight_dispersion": 150,
"durability": 8,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 5 ] ],
"ups_charges": 29,
"valid_mod_locations": [ ],
"ammo_effects": [ "LASER", "WIDE" ],
@@ -178,7 +178,7 @@
"ups_charges": 499,
"valid_mod_locations": [ ],
"ammo_effects": [ "EXPLOSIVE", "LASER", "WIDE" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD", "MOUNTED_GUN" ]
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "MOUNTED_GUN", "NON-FOULING" ]
},
{
"id": "nailer",
@@ -206,7 +206,7 @@
"valid_mod_locations": [ ],
"magazine_well": 1,
"magazines": [ [ "nail", [ "nailmag" ] ] ],
- "flags": [ "MOUNTED_GUN", "NEVER_JAMS" ]
+ "flags": [ "MOUNTED_GUN", "NEVER_JAMS", "NON-FOULING" ]
},
{
"id": "needler",
@@ -229,7 +229,7 @@
"pierce": 15,
"sight_dispersion": 150,
"durability": 8,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 5 ] ],
"reload": 150,
"valid_mod_locations": [ ],
"magazine_well": 1,
@@ -284,12 +284,12 @@
"pierce": 5,
"sight_dispersion": 150,
"durability": 8,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 5 ] ],
"clip_size": 15,
"reload": 750,
"valid_mod_locations": [ ],
"ammo_effects": [ "WIDE" ],
- "flags": [ "NEVER_JAMS", "MOUNTED_GUN" ]
+ "flags": [ "NEVER_JAMS", "MOUNTED_GUN", "NON-FOULING" ]
},
{
"id": "rslauncher",
@@ -311,12 +311,12 @@
"ranged_damage": 40,
"sight_dispersion": 150,
"durability": 8,
- "burst": 3,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"clip_size": 12,
"reload": 2500,
"valid_mod_locations": [ ],
"ammo_effects": [ "WIDE" ],
- "flags": [ "NEVER_JAMS", "MOUNTED_GUN" ]
+ "flags": [ "NEVER_JAMS", "MOUNTED_GUN", "NON-FOULING" ]
},
{
"id": "scorpion",
@@ -342,7 +342,7 @@
"reload": 750,
"valid_mod_locations": [ ],
"ammo_effects": [ "WIDE" ],
- "flags": [ "NEVER_JAMS", "MOUNTED_GUN" ]
+ "flags": [ "NEVER_JAMS", "MOUNTED_GUN", "NON-FOULING" ]
},
{
"id": "shardgun",
@@ -365,13 +365,13 @@
"dispersion": 1300,
"sight_dispersion": 150,
"durability": 5,
- "burst": 25,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 25 ] ],
"ups_charges": 1,
"reload": 150,
"valid_mod_locations": [ ],
"magazine_well": 1,
"magazines": [ [ "BB", [ "bb_hopper" ] ] ],
- "flags": [ "BURST_ONLY", "MOUNTED_GUN", "NEVER_JAMS" ]
+ "flags": [ "BURST_ONLY", "MOUNTED_GUN", "NEVER_JAMS", "NON-FOULING" ]
},
{
"id": "slauncher",
@@ -394,12 +394,12 @@
"pierce": 15,
"sight_dispersion": 150,
"durability": 8,
- "burst": 3,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 3 ] ],
"clip_size": 12,
"reload": 750,
"valid_mod_locations": [ ],
"ammo_effects": [ "WIDE" ],
- "flags": [ "NEVER_JAMS", "MOUNTED_GUN" ]
+ "flags": [ "NEVER_JAMS", "MOUNTED_GUN", "NON-FOULING" ]
},
{
"id": "teslagun",
@@ -423,7 +423,7 @@
"ups_charges": 249,
"valid_mod_locations": [ ],
"ammo_effects": [ "BOUNCE", "LIGHTNING", "MOUNTED_GUN" ],
- "flags": [ "NEVER_JAMS", "NO_UNLOAD" ]
+ "flags": [ "NEVER_JAMS", "NO_UNLOAD", "NON-FOULING" ]
},
{
"id": "tiharturret",
@@ -445,10 +445,10 @@
"ranged_damage": 25,
"sight_dispersion": 150,
"durability": 9,
- "burst": 5,
+ "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "AUTO", "auto", 5 ] ],
"magazine_well": 1,
"magazines": [ [ "pebble", [ "pebble_hopper" ] ] ],
"reload": 150,
- "flags": [ "NEVER_JAMS", "MOUNTED_GUN" ]
+ "flags": [ "NEVER_JAMS", "MOUNTED_GUN", "NON-FOULING" ]
}
]
diff --git a/data/mods/blazemod/snippets.json b/data/mods/blazemod/snippets.json
index 5f11e87bedf84..9a8466ff8ee85 100644
--- a/data/mods/blazemod/snippets.json
+++ b/data/mods/blazemod/snippets.json
@@ -3,56 +3,31 @@
"type": "snippet",
"category": "note",
"text": [
- "\"Agh, to See the Spiral in such a Distorted Shape! Manipulated for its Vortex motion! Its Perpetual Grace! Its beauty Tarnished...\""
+ {
+ "id": "note_blazemod_1",
+ "text": "\"Agh, to See the Spiral in such a Distorted Shape! Manipulated for its Vortex motion! Its Perpetual Grace! Its beauty Tarnished...\""
+ },
+ { "id": "note_blazemod_2", "text": "\"My friend died, but at least I made her into a blob turret.\"" },
+ {
+ "id": "note_blazemod_3",
+ "text": "\"I have this laser cannon turret on my shopping cart. I push it around and everything dies. I think I'm gonna toss it in the lake-- this just isn't fair anymore.\""
+ },
+ {
+ "id": "note_blazemod_4",
+ "text": "\"Day 40. Controls broken-- car's magic reactor makes it goes inexorably forward. Giant rollers on front demolish forest. Maine, here I come.\""
+ },
+ { "id": "note_blazemod_5", "text": "\"my car is a diamond in the rough... literally\"" },
+ { "id": "note_blazemod_6", "text": "\"M249 TURRET NODDED. IS TURRET ALIVE? FINALLY, SOMEBODY TO TALK TO!\"" },
+ { "id": "note_blazemod_7", "text": "\"Added so many things to my taxi that it went a-blaze. Whoops.\"" },
+ {
+ "id": "note_blazemod_8",
+ "text": "\"If I put one cargo dimension into another cargo dimension, does the universe end?\""
+ },
+ { "id": "note_blazemod_9", "text": "\"one day, i will be part of car, too\"" },
+ {
+ "id": "note_blazemod_10",
+ "text": "\"Putta little bitta dynamite and halfa landmine in an old soda can... WHAM! You goin' somewhere.\""
+ }
]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"My friend died, but at least I made her into a blob turret.\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [
- "\"I have this laser cannon turret on my shopping cart. I push it around and everything dies. I think I'm gonna toss it in the lake-- this just isn't fair anymore.\""
- ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [
- "\"Day 40. Controls broken-- car's magic reactor makes it goes inexorably forward. Giant rollers on front demolish forest. Maine, here I come.\""
- ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"my car is a diamond in the rough... literally\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"M249 TURRET NODDED. IS TURRET ALIVE? FINALLY, SOMEBODY TO TALK TO!\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"Added so many things to my taxi that it went a-blaze. Whoops.\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"If I put one cargo dimension into another cargo dimension, does the universe end?\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"one day, i will be part of car, too\"" ]
- },
- {
- "type": "snippet",
- "category": "note",
- "text": [ "\"Putta little bitta dynamite and halfa landmine in an old soda can... WHAM! You goin' somewhere.\"" ]
}
]
diff --git a/data/mods/desert_region/desert_items.json b/data/mods/desert_region/desert_items.json
deleted file mode 100644
index a327a00352b7b..0000000000000
--- a/data/mods/desert_region/desert_items.json
+++ /dev/null
@@ -1,23 +0,0 @@
-[
- {
- "type": "COMESTIBLE",
- "id": "cholla_bud",
- "name": "cholla bud",
- "weight": 92,
- "color": "red",
- "spoils_in": "6 days 16 hours",
- "comestible_type": "FOOD",
- "symbol": "%",
- "quench": 6,
- "healthy": 2,
- "calories": 62,
- "description": "The candy of the Mojave Indigenous peoples.",
- "price": 900,
- "material": "fruit",
- "volume": "175 ml",
- "fun": 6,
- "flags": [ "FREEZERBURN", "SMOKABLE" ],
- "smoking_result": "dry_fruit",
- "vitamins": [ [ "vitA", 2 ], [ "vitC", 18 ], [ "iron", 1 ] ]
- }
-]
diff --git a/data/mods/makeshift/recipe.json b/data/mods/makeshift/recipe.json
index a081f56202593..6549cd3771d11 100644
--- a/data/mods/makeshift/recipe.json
+++ b/data/mods/makeshift/recipe.json
@@ -67,14 +67,9 @@
"difficulty": 7,
"time": 400000,
"book_learn": [ [ "recipe_melee", 6 ] ],
- "qualities": [ { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ],
- "tools": [
- [ [ "tongs", -1 ] ],
- [ [ "anvil", -1 ] ],
- [ [ "swage", -1 ] ],
- [ [ "forge", 400 ], [ "oxy_torch", 80 ] ],
- [ [ "mold_plastic", -1 ] ]
- ],
- "components": [ [ [ "steel_lump", 2 ], [ "steel_chunk", 8 ], [ "scrap", 24 ] ], [ [ "plastic_chunk", 2 ] ] ]
+ "using": [ [ "blacksmithing_standard", 8 ], [ "steel_standard", 2 ] ],
+ "qualities": [ { "id": "CHISEL", "level": 3 } ],
+ "tools": [ [ [ "swage", -1 ] ], [ [ "mold_plastic", -1 ] ] ],
+ "components": [ [ [ "plastic_chunk", 2 ] ] ]
}
]
diff --git a/data/mods/mapspecials_demo/megastore/mega_1brc_03.json b/data/mods/mapspecials_demo/megastore/mega_1brc_03.json
index dbdb219c51e74..2b2920e6c43ab 100644
--- a/data/mods/mapspecials_demo/megastore/mega_1brc_03.json
+++ b/data/mods/mapspecials_demo/megastore/mega_1brc_03.json
@@ -36,7 +36,7 @@
"rotation": 2,
"palettes": [ "megastore", "mega_goods_c" ],
"set": [ { "square": "terrain", "x": 9, "y": 9, "x2": 14, "y2": 14, "id": "t_concrete" } ],
- "items": { "C": { "item": "produce", "chance": 30, "count": 3 } }
+ "items": { "C": { "item": "produce", "chance": 30, "repeat": 3 } }
}
}
]
diff --git a/data/motd/en.motd b/data/motd/en.motd
index 172c271c2b224..3d7e47df384b8 100644
--- a/data/motd/en.motd
+++ b/data/motd/en.motd
@@ -53,7 +53,7 @@ This is why experimental builds exist in the first place.
Q: Should I play experimental builds then, or stick to stable build?
A: The reward is instant access to the newest content, the risk is losing
your game progress if a nasty bug emerges. It is always your choice to play
-experimental builds, with a stable build avalaible, so play at your own
+experimental builds, with a stable build available, so play at your own
discretion. You take all of the burden if something goes wrong, so be warned.
Take precautions, make backups. Sometimes it's even best to postpone
updating for few days until a big feature has been stabilized or
diff --git a/data/raw/keybindings.json b/data/raw/keybindings.json
index ae5082e0a6984..44df0239da8d4 100644
--- a/data/raw/keybindings.json
+++ b/data/raw/keybindings.json
@@ -1410,6 +1410,13 @@
"name": "Toggle activate/examine",
"bindings": [ { "input_method": "keyboard", "key": "!" } ]
},
+ {
+ "type": "keybinding",
+ "id": "TOGGLE_SAFE_FUEL",
+ "category": "BIONICS",
+ "name": "Toggle safe fuel mod",
+ "bindings": [ { "input_method": "keyboard", "key": "s" } ]
+ },
{
"type": "keybinding",
"id": "TOGGLE_EXAMINE",
diff --git a/data/raw/keybindings/vehicle.json b/data/raw/keybindings/vehicle.json
index 8abc485e56c77..c41342cfd7ce8 100644
--- a/data/raw/keybindings/vehicle.json
+++ b/data/raw/keybindings/vehicle.json
@@ -39,7 +39,7 @@
"type": "keybinding",
"category": "VEHICLE",
"name": "Toggle aisle lights",
- "bindings": [ { "input_method": "keyboard", "key": "a" } ]
+ "bindings": [ { "input_method": "keyboard", "key": "L" } ]
},
{
"id": "TOGGLE_ALARM",
@@ -55,6 +55,13 @@
"name": "Toggle atomic lights",
"bindings": [ { "input_method": "keyboard", "key": "A" } ]
},
+ {
+ "id": "CONTROL_AUTOPILOT",
+ "type": "keybinding",
+ "category": "VEHICLE",
+ "name": "Control autopiot",
+ "bindings": [ { "input_method": "keyboard", "key": "a" } ]
+ },
{
"id": "TOGGLE_CAMERA",
"type": "keybinding",
diff --git a/doc/CHANGELOG_GUIDELINES.md b/doc/CHANGELOG_GUIDELINES.md
index 99ff5a4410487..77258eb0692d4 100644
--- a/doc/CHANGELOG_GUIDELINES.md
+++ b/doc/CHANGELOG_GUIDELINES.md
@@ -1,6 +1,9 @@
These are the categories used by Pull Request Summary lines as outlined in the [PR Template](../.github/pull_request_template.md).
In the end, it's up to the author to decide where *they* want their change to be listed, these are only guidelines, not rules.
+
+#### None
+Please consider a summary of "SUMMARY: None" for minor additions and fixes. There are far too many changes made to the game to feature anything approaching all of them in the changelog.
#### Features
If it adds something new that the player can do, or that can happen to the player, it's a feature.
These will generally be edits to the C++ code in the game, though new json entities may be involved as well.
diff --git a/doc/COMPILING/COMPILING.md b/doc/COMPILING/COMPILING.md
index bc08be44edafb..f2e846e60823b 100644
--- a/doc/COMPILING/COMPILING.md
+++ b/doc/COMPILING/COMPILING.md
@@ -10,11 +10,11 @@
* [Cross-compile to Windows from Linux](#cross-compile-to-windows-from-linux)
* [Cross-compile to Mac OS X from Linux](#cross-compile-to-mac-os-x-from-linux)
* [Cross-compile to Android from Linux](#cross-compile-to-android-from-linux)
- * [Troubleshooting](#debian-troubleshooting)
+ * [Troubleshooting](#linux-troubleshooting)
* [Mac OS X](#mac-os-x)
* [Simple build using Homebrew](#simple-build-using-homebrew)
* [Advanced info for Developers](#advanced-info-for-developers)
- * [Troubleshooting](#mac-troubleshooting)
+ * [Troubleshooting](#mac-os-x-troubleshooting)
* [Windows](#windows)
* [Building with Visual Studio](#building-with-visual-studio)
* [Building with MSYS2](#building-with-msys2)
@@ -548,7 +548,7 @@ Once `dmgbuild` is installed, you will be able to use the `dmgdist` target like
You should see a `Cataclysm.dmg` file.
-## Troubleshooting
+## Mac OS X Troubleshooting
### ISSUE: Game runs very slowly when built for Mac OS X 10.11 or earlier
diff --git a/doc/EFFECTS_JSON.md b/doc/EFFECTS_JSON.md
index 85f3dd37b32f9..5f637266e3e5b 100644
--- a/doc/EFFECTS_JSON.md
+++ b/doc/EFFECTS_JSON.md
@@ -299,138 +299,139 @@ This is where the real meat of the effect JSON definition lies. Each one can tak
Decimals are valid but must be formatted as "0.X" or "-0.X". The game will round towards zero at the end
when calculating actually applied values
+Basic definitions:
+```C++
+"X_amount" - Amount applied of X when effect is placed. Like apply messages it will only trigger on new effects
+"X_min" - Minimum amount of X applied when roll triggers
+"X_max" - Maximum amount of X applied when roll triggers (no entry means it will give exactly X_min each time instead of rng(min, max)
+"X_min_val" - Minimum value the effect will push you to, 0 means uncapped! Doesn't exist for some X's!
+"X_max_val" - Maximum value the effect will push you to, 0 means uncapped! Doesn't exist for some X's!
+"X_chance" - Basic chance of X triggering each time, depends on "X_chance_bot" for exact formula
+"X_chance_bot" - If this doesn't exist then the trigger chance is (1 in "X_chance"). If this does exist then the chance is ("X_chance" in "X_chance_bot")
+"X_tick" - Effect rolls for X triggering every Y ticks
+```
+
Valid arguments:
```C++
-"str_mod"
-"dex_mod"
-"per_mod"
-"int_mod"
-"speed_mod"
+"str_mod" - Positive values raises stat, negative values lowers stat
+"dex_mod" - Positive values raises stat, negative values lowers stat
+"per_mod" - Positive values raises stat, negative values lowers stat
+"int_mod" - Positive values raises stat, negative values lowers stat
+"speed_mod" - Positive values raises stat, negative values lowers stat
-"pain_amount"
-"pain_min"
+"pain_amount" - Positives raise pain, negatives don't make anything. Don't make it too high.
+"pain_min" - Minimal amount of pain, certain effect will give/take
"pain_max" - if 0 or missing value will be exactly "pain_min"
"pain_max_val" - Defaults to 0, which means uncapped
-"pain_chance"
+"pain_chance" - Chance to get more pain
"pain_chance_bot"
-"pain_tick" - Defaults to every tick
+"pain_tick" - Defaults to every tick.
-"hurt_amount"
-"hurt_min"
+"hurt_amount" - Positives will give damage, negatives will heal instead. Don't make it too high.
+"hurt_min" - Minimal amount of damage, certain effect will give/take
"hurt_max" - if 0 or missing value will be exactly "hurt_min"
-"hurt_chance"
+"hurt_chance" - Chance to cause damage
"hurt_chance_bot"
"hurt_tick" - Defaults to every tick
-"sleep_amount"
-"sleep_min"
+"sleep_amount" - Amount of turns spent sleeping.
+"sleep_min" - Minimal amount of sleep in turns, certain effect can give
"sleep_max" - if 0 or missing value will be exactly "sleep_min"
-"sleep_chance"
+"sleep_chance" - Chance to fall asleep
"sleep_chance_bot"
"sleep_tick" - Defaults to every tick
-"pkill_amount"
-"pkill_min"
+"pkill_amount" - Amount of painkiller effect. Don't go too high with it.
+"pkill_min" - Minimal amount of painkiller, certain effect will give
"pkill_max" - if 0 or missing value will be exactly "pkill_min"
"pkill_max_val" - Defaults to 0, which means uncapped
-"pkill_chance"
+"pkill_chance" - Chance to cause painkiller effect(lowers pain)
"pkill_chance_bot"
"pkill_tick" - Defaults to every tick
-"stim_amount"
-"stim_min"
+"stim_amount" - Negatives cause depressants effect and positives cause stimulants effect.
+"stim_min" - Minimal amount of stimulant, certain effect will give.
"stim_max" - if 0 or missing value will be exactly "stim_min"
"stim_min_val" - Defaults to 0, which means uncapped
"stim_max_val" - Defaults to 0, which means uncapped
-"stim_chance"
+"stim_chance" - Chance to cause one of two stimulant effects
"stim_chance_bot"
"stim_tick" - Defaults to every tick
-"health_amount"
-"health_min"
+"health_amount" - Negatives decrease health and positives increase it. It's semi-hidden stat, which affects healing.
+"health_min" - Minimal amount of health, certain effect will give/take.
"health_max" - if 0 or missing value will be exactly "health_min"
"health_min_val" - Defaults to 0, which means uncapped
"health_max_val" - Defaults to 0, which means uncapped
-"health_chance"
+"health_chance" - Chance to change health
"health_chance_bot"
"health_tick" - Defaults to every tick
-"h_mod_amount"
-"h_mod_min"
+"h_mod_amount" - Affects health stat growth, positives increase it and negatives decrease it
+"h_mod_min" - Minimal amount of health_modifier, certain effect will give/take
"h_mod_max" - if 0 or missing value will be exactly "h_mod_min"
"h_mod_min_val" - Defaults to 0, which means uncapped
"h_mod_max_val" - Defaults to 0, which means uncapped
-"h_mod_chance"
+"h_mod_chance" - Chance to change health_modifier
"h_mod_chance_bot"
"h_mod_tick" - Defaults to every tick
-"rad_amount"
-"rad_min"
+"rad_amount" - Amount of radiation it can give/take. Just be aware that anything above [50] is fatal.
+"rad_min" - Minimal amount of radiation, certain effect will give/take
"rad_max" - if 0 or missing value will be exactly "rad_min"
"rad_max_val" - Defaults to 0, which means uncapped
-"rad_chance"
+"rad_chance" - Chance to get more radiation
"rad_chance_bot"
"rad_tick" - Defaults to every tick
-"hunger_amount"
-"hunger_min"
+"hunger_amount" - Amount of hunger it can give/take.
+"hunger_min" - Minimal amount of hunger, certain effect will give/take
"hunger_max" - if 0 or missing value will be exactly "hunger_min"
"hunger_min_val" - Defaults to 0, which means uncapped
"hunger_max_val" - Defaults to 0, which means uncapped
-"hunger_chance"
+"hunger_chance" - Chance to become more hungry
"hunger_chance_bot"
"hunger_tick" - Defaults to every tick
-"thirst_amount"
-"thirst_min"
+"thirst_amount" - Amount of thirst it can give/take.
+"thirst_min" - Minimal amount of thirst, certain effect will give/take
"thirst_max" - if 0 or missing value will be exactly "thirst_min"
"thirst_min_val" - Defaults to 0, which means uncapped
"thirst_max_val" - Defaults to 0, which means uncapped
-"thirst_chance"
+"thirst_chance" - Chance to become more thirsty
"thirst_chance_bot"
"thirst_tick" - Defaults to every tick
-"fatigue_amount"
-"fatigue_min"
+"fatigue_amount" - Amount of fatigue it can give/take. After certain amount character will need to sleep.
+"fatigue_min" - Minimal amount of fatigue, certain effect will give/take
"fatigue_max" - if 0 or missing value will be exactly "fatigue_min"
"fatigue_min_val" - Defaults to 0, which means uncapped
"fatigue_max_val" - Defaults to 0, which means uncapped
-"fatigue_chance"
+"fatigue_chance" - Chance to get more tired
"fatigue_chance_bot"
"fatigue_tick" - Defaults to every tick
-"stamina_amount"
-"stamina_min"
+"stamina_amount" - Amount of stamina it can give/take.
+"stamina_min" - Minimal amount of stamina, certain effect will give/take
"stamina_max" - if 0 or missing value will be exactly "stamina_min"
"stamina_min_val" - Defaults to 0, which means uncapped
"stamina_max_val" - Defaults to 0, which means uncapped
-"stamina_chance"
+"stamina_chance" - Chance to get stamina changes
"stamina_chance_bot"
"stamina_tick" - Defaults to every tick
-"cough_chance"
+"cough_chance" - Chance to cause cough
"cough_chance_bot"
-"cough_tick"
+"cough_tick" - Defaults to every tick
-"vomit_chance"
+"vomit_chance" - Chance to cause vomiting
"vomit_chance_bot"
-"vomit_tick"
+"vomit_tick" - Defaults to every tick
"healing_rate" - Healed rate per day
"healing_head" - Percentage of healing value for head
"healing_torso" - Percentage of healing value for torso
-```
-Basic definitions:
-```C++
-"X_amount" - Amount applied of X when effect is placed. Like apply messages it will only trigger on new effects
-"X_min" - Minimum amount of X applied when roll triggers
-"X_max" - Maximum amount of X applied when roll triggers (no entry means it will give exactly X_min each time instead of rng(min, max)
-"X_min_val" - Minimum value the effect will push you to, 0 means uncapped! Doesn't exist for some X's!
-"X_max_val" - Maximum value the effect will push you to, 0 means uncapped! Doesn't exist for some X's!
-"X_chance" - Basic chance of X triggering each time, depends on "X_chance_bot" for exact formula
-"X_chance_bot" - If this doesn't exist then the trigger chance is (1 in "X_chance"). If this does exist then the chance is ("X_chance" in "X_chance_bot")
-"X_tick" - Effect rolls for X triggering every Y ticks
```
Each argument can also take either one or two values.
```C++
diff --git a/doc/ITEM_SPAWN.md b/doc/ITEM_SPAWN.md
index ecce110ccaaad..c2d974c54b854 100644
--- a/doc/ITEM_SPAWN.md
+++ b/doc/ITEM_SPAWN.md
@@ -91,6 +91,8 @@ Each entry can have more values (shown above as `...`). They allow further prope
`count` makes the item spawn repeat to create more items, each time creating a new item.
+`charges`: Setting only min, not max will make the game calculate the max charges based on container or ammo/magazine capacity. Setting max too high will decrease it to maximum capacity. Not setting min will set it to 0 when max is set.
+
```json
"damage-min": 0,
"damage-max": 3,
diff --git a/doc/JSON_FLAGS.md b/doc/JSON_FLAGS.md
index 4ea9d37de5214..83e0f1a88cf7e 100644
--- a/doc/JSON_FLAGS.md
+++ b/doc/JSON_FLAGS.md
@@ -1,6 +1,7 @@
# JSON Flags
* [Notes](#notes)
+* [Inheritance](#inheritance)
* [TODO](#todo)
* [Ammo](#ammo)
+ [Ammo type](#ammo-type)
@@ -74,6 +75,11 @@
- Offensive and defensive flags can be used on any item type that can be wielded.
+## Inheritance
+
+When an item is crafted, it can inherit flags from the components that were used to craft it. This requires that the flag to be inherited has the `"craft_inherit": true` entry. If you don't want a particular item to inherit flags when crafted, you can add the flag `NO_CRAFT_INHERIT` to that item.
+
+
## TODO
- Descriptions for `Special attacks` under `Monsters` could stand to be more descriptive of exactly what the attack does.
@@ -465,7 +471,7 @@ Some armor flags, such as `WATCH` and `ALARMCLOCK` are compatible with other ite
- ```FREEZERBURN``` First thaw is MUSHY, second is rotten
- ```FUNGAL_VECTOR``` Will give a fungal infection when consumed.
- ```HIDDEN_HALLU``` ... Food causes hallucinations, visible only with a certain survival skill level.
-- ```HIDDEN_POISON``` ... Food is poisonous, visible only with a certain survival skill level.
+- ```HIDDEN_POISON``` ... Food displays as poisonous with a certain survival skill level. Note that this doesn't make items poisonous on its own, consider adding `"use_action": "POISON"` as well, or using `FORAGE_POISON` instead.
- ```MELTS``` Provides half fun unless frozen. Edible when frozen.
- ```MILLABLE``` Can be placed inside a mill, to turn into flour.
- ```MYCUS_OK``` Can be eaten by post-threshold Mycus characters. Only applies to mycus fruits by default.
@@ -518,6 +524,7 @@ List of known flags, used in both `terrain.json` and `furniture.json`.
- ```DECONSTRUCT``` Can be deconstructed.
- ```DEEP_WATER```
- ```DESTROY_ITEM``` Items that land here are destroyed. See also `NOITEM`
+- ```DIFFICULT_Z``` Most zombies will not be able to follow you up this terrain ( i.e a ladder )
- ```DIGGABLE_CAN_DEEPEN``` Diggable location can be dug again to make deeper (e.g. shallow pit to deep pit).
- ```DIGGABLE``` Digging monsters, seeding monster, digging with shovel, etc.
- ```DOOR``` Can be opened (used for NPC path-finding).
@@ -569,6 +576,7 @@ List of known flags, used in both `terrain.json` and `furniture.json`.
- ```SHARP``` May do minor damage to players/monsters passing through it.
- ```SHORT``` Feature too short to collide with vehicle protrusions. (mirrors, blades).
- ```SIGN``` Show written message on examine.
+- ```SMALL_PASSAGE``` This terrain or furniture is too small for large or huge creatures to pass through.
- ```SUPPORTS_ROOF``` Used as a boundary for roof construction.
- ```SUPPRESS_SMOKE``` Prevents smoke from fires; used by ventilated wood stoves, etc.
- ```SWIMMABLE``` Player and monsters can swim through it.
@@ -1256,6 +1264,7 @@ Those flags are added by the game code to specific items (that specific welder,
- ```FIELD_DRESS``` Corpse was field dressed. Affects butcher results.
- ```FIT``` Reduces encumbrance by one.
- ```FROZEN``` Item is frozen solid (used by freezer).
+- ```HIDDEN_ITEM``` This item cannot be seen in AIM.
- ```HOT``` Item is hot (see EATEN_HOT).
- ```LITCIG``` Marks a lit smoking item (cigarette, joint etc.).
- ```MUSHY``` FREEZERBURN item was frozen and is now mushy and tasteless and will go bad after freezing again.
@@ -1272,6 +1281,7 @@ Those flags are added by the game code to specific items (that specific welder,
### Flags
- ```ADVANCED_PLANTER``` This planter doesn't spill seeds and avoids damaging itself on non-diggable surfaces.
+- ```AUTOPILOT``` This part will enable a vehicle to have a simple autopilot.
- ```AISLE_LIGHT```
- ```AISLE``` Player can move over this part with less speed penalty than normal.
- ```ALTERNATOR``` Recharges batteries installed on the vehicle.
@@ -1371,6 +1381,7 @@ Those flags are added by the game code to specific items (that specific welder,
- ```TOWEL``` Can be used to dry yourself up.
- ```TRACKED``` Contributes to steering effectiveness but doesn't count as a steering axle for install difficulty and still contributes to drag for the center of steering calculation.
- ```TRACK``` Allows the vehicle installed on, to be marked and tracked on map.
+- ```TURRET_CONTROLS``` If part with this flag is installed over the turret, it allows to set said turret's targeting mode to full auto.
- ```TURRET_MOUNT``` Parts with this flag are suitable for installing turrets.
- ```TURRET``` Is a weapon turret. Can only be installed on a part with ```TURRET_MOUNT``` flag.
- ```UNMOUNT_ON_DAMAGE``` Part breaks off the vehicle when destroyed by damage.
diff --git a/doc/JSON_INFO.md b/doc/JSON_INFO.md
index 51e419500e34f..6a0115d3504b8 100644
--- a/doc/JSON_INFO.md
+++ b/doc/JSON_INFO.md
@@ -377,6 +377,7 @@ This section describes each json file and their contents. Each json has their ow
| fuel_options | (_optional_) A list of fuel that this bionic can use to produce bionic power.
| fuel_capacity | (_optional_) Volume of fuel this bionic can store.
| fuel_efficiency | (_optional_) Fraction of fuel energy converted into power. (default: `0`)
+| passive_fuel_efficiency | (_optional_) Fraction of fuel energy passively converted into power. Only useful for muscle powered CBM (default: `0`)
| exothermic_power_gen | (_optional_) If true this bionic emits heat when producing power. (default: `false`)
| power_gen_emission | (_optional_) `emit_id` of the field emitted by this bionic when it produces energy. Emit_ids are defined in `emit.json`.
| stat_bonus | (_optional_) List of passive stat bonus. Stat are designated as follow: "DEX", "INT", "STR", "PER".
@@ -513,21 +514,25 @@ The syntax listed here is still valid.
#### Group definition
-| Identifier | Description
-|--- |---
-| `name` | Unique ID. Must be one continuous word, use underscores if necessary.
-| `default` | Default monster, automatically fills in any remaining spawn chances.
-| `monsters` | To choose a monster for spawning, the game creates 1000 entries and picks one. Each monster will have a number of entries equal to it's "freq" and the default monster will fill in the remaining. See the table below for how to build the single monster definitions.
+| Identifier | Description
+|--- |---
+| `name` | Unique ID. Must be one continuous word, use underscores if necessary.
+| `default` | Default monster, automatically fills in any remaining spawn chances.
+| `monsters` | To choose a monster for spawning, the game creates 1000 entries and picks one. Each monster will have a number of entries equal to it's "freq" and the default monster will fill in the remaining. See the table below for how to build the single monster definitions.
+| `is_safe` | (bool) Check to not trigger safe-mode warning.
+| `is_animal` | (bool) Check if that group has only normal animals.
#### Monster definition
-| Identifier | Description
-|--- |---
-| `monster` | The monster's id.
-| `freq` | Chance of occurrence, out of a thousand.
-| `multiplier` | How many monsters each monster in this definition should count as, if spawning a limited number of monsters.
-| `pack_size` | (_optional_) The minimum and maximum number of monsters in this group that should spawn together. (default: `[1,1]`)
-| `conditions` | Conditions limit when monsters spawn. Valid options: `SUMMER`, `WINTER`, `AUTUMN`, `SPRING`, `DAY`, `NIGHT`, `DUSK`, `DAWN`. Multiple Time-of-day conditions (`DAY`, `NIGHT`, `DUSK`, `DAWN`) will be combined together so that any of those conditions makes the spawn valid. Multiple Season conditions (`SUMMER`, `WINTER`, `AUTUMN`, `SPRING`) will be combined together so that any of those conditions makes the spawn valid.
+| Identifier | Description
+|--- |---
+| `monster` | The monster's id.
+| `freq` | Chance of occurrence, x/1000.
+| `cost_multiplier` | How many monsters each monster in this definition should count as, if spawning a limited number of monsters.
+| `pack_size` | (_optional_) The minimum and maximum number of monsters in this group that should spawn together. (default: `[1,1]`)
+| `conditions` | Conditions limit when monsters spawn. Valid options: `SUMMER`, `WINTER`, `AUTUMN`, `SPRING`, `DAY`, `NIGHT`, `DUSK`, `DAWN`. Multiple Time-of-day conditions (`DAY`, `NIGHT`, `DUSK`, `DAWN`) will be combined together so that any of those conditions makes the spawn valid. Multiple Season conditions (`SUMMER`, `WINTER`, `AUTUMN`, `SPRING`) will be combined together so that any of those conditions makes the spawn valid.
+| `starts` | (_optional_) This entry becomes active after this time. (Measured in hours)
+| `ends` | (_optional_) This entry becomes inactive after this time. (Measured in hours)
```C++
{
@@ -983,6 +988,7 @@ Note that even though most statistics yield an integer, you should still use
"can_heal_with": [ "caramel_ointement" ], // List of med that will work for you but not for anyone. See `CANT_HEAL_EVERYONE` flag for items. (default: empty)
"allowed_category": [ "ALPHA" ], // List of category you can mutate into. (default: empty)
"no_cbm_on_bp": [ "TORSO", "HEAD", "EYES", "MOUTH", "ARM_L" ], // List of body parts that can't receive cbms. (default: empty)
+"lumination": [ [ "HEAD", 20 ], [ "ARM_L", 10 ] ], // List of glowing bodypart and the intensity of the glow as a float. (default: empty)
```
### Vehicle Groups
@@ -1130,7 +1136,7 @@ See also VEHICLE_JSON.md
"looks_like": "rag", // hint to tilesets if this item has no tile, use the looks_like tile
"description" : "Socks. Put 'em on your feet.", // Description of the item
"phase" : "solid", // (Optional, default = "solid") What phase it is
-"weight" : 350, // Weight of the item in grams. For stackable items (ammo, comestibles) this is the weight per charge.
+"weight" : "350 g", // Weight, weight in grams, mg and kg can be used - "50 mg", "5 g" or "5 kg". For stackable items (ammo, comestibles) this is the weight per charge.
"volume" : "250 ml", // Volume, volume in ml and L can be used - "50 ml" or "2 L". For stackable items (ammo, comestibles) this is the volume of stack_size charges.
"integral_volume" : 0, // Volume added to base item when item is integrated into another (eg. a gunmod integrated to a gun). Volume in ml and L can be used - "50 ml" or "2 L".
"integral_weight" : 0, // Weight added to base item when item is integrated into another (eg. a gunmod integrated to a gun)
@@ -1216,6 +1222,7 @@ Armor can be defined like this:
"coverage" : 80, // What percentage of body part
"material_thickness" : 1, // Thickness of material, in millimeter units (approximately). Generally ranges between 1 - 5, more unusual armor types go up to 10 or more
"power_armor" : false, // If this is a power armor item (those are special).
+"valid_mods" : ["steel_padded"] // List of valid clothing mods. Note that if the clothing mod doesn't have "restricted" listed, this isn't needed.
```
Alternately, every item (book, tool, gun, even food) can be used as armor if it has armor_data:
```C++
@@ -2380,6 +2387,7 @@ A flat multiplier on the harvest count of the plant. For numbers greater than on
"item": "leather", // item to consume.
"implement_prompt": "Pad with leather", // prompt to show when implement mod.
"destroy_prompt": "Destroy leather padding", // prompt to show when destroy mod.
+"restricted": true, // (optional) If true, clothing must list this mod's flag in "valid_mods" list to use it. Defaults to false.
"mod_value": [ // List of mod effect.
{
"type": "bash", // "bash", "cut", "fire", "acid", "warmth", "storage", and "encumbrance" is available.
diff --git a/doc/MAGIC.md b/doc/MAGIC.md
index 5a8f5c74ee26e..435bc9b8c1370 100644
--- a/doc/MAGIC.md
+++ b/doc/MAGIC.md
@@ -16,7 +16,7 @@ In `data/mods/Magiclysm` there is a template spell, copied here for your perusal
"effect_str": "template" // special. see below
"extra_effects": [ { "id": "fireball", "hit_self": false, "max_level": 3 } ], // this allows you to cast multiple spells with only one spell
"effected_body_parts": [ "HEAD", "TORSO", "MOUTH", "EYES", "ARM_L", "ARM_R", "HAND_R", "HAND_L", "LEG_L", "FOOT_L", "FOOT_R" ], // body parts affected by effects
- "spell_class": "NONE" //
+ "spell_class": "NONE" //
"base_casting_time": 100, // this is the casting time (in moves)
"base_energy_cost": 10, // the amount of energy (of the requisite type) to cast the spell
"energy_source": "MANA", // the type of energy used to cast the spell. types are: MANA, BIONIC, HP, STAMINA, FATIGUE, NONE (none will not use mana)
@@ -56,7 +56,7 @@ In `data/mods/Magiclysm` there is a template spell, copied here for your perusal
Most of the default values for the above are either 0 or "NONE", so you may leave out most of the values if they do not pertain to your spell.
When deciding values for some of these, it is important to note that some of the formulae are not linear.
-For example, this is the formula for spell failure chance:
+For example, this is the formula for spell failure chance:
```( ( ( ( spell_level - spell_difficulty ) * 2 + intelligence + spellcraft_skill ) - 30 ) / 30 ) ^ 2```
@@ -180,9 +180,9 @@ Currently there is only one way of learning spells that is implemented: learning
You can study this spellbook for a rate of ~1 experience per turn depending on intelligence, spellcraft, and focus.
-#### Spells in professions
+#### Spells in professions and NPC classes
-You can add a "spell" member to professions like so:
+You can add a "spell" member to professions or an NPC class definition like so:
```json
"spells": [ { "id": "summon_zombie", "level": 0 }, { "id": "magic_missile", "level": 10 } ]
```
@@ -198,4 +198,3 @@ You can assign a spell as a special attack for a monster.
* spell_id: the id for the spell being cast.
* spell_level: the level at which the spell is cast. Spells cast by monsters do not gain levels like player spells.
* cooldown: how often the monster can cast this spell
-
diff --git a/doc/MARTIALART_JSON.md b/doc/MARTIALART_JSON.md
index 3c8ed512d54be..34d35f6e51ca2 100644
--- a/doc/MARTIALART_JSON.md
+++ b/doc/MARTIALART_JSON.md
@@ -55,6 +55,7 @@
"down_dur": 2, // Duration that target is downed for
"side_switch": true, // Technique moves the target behind user
"disarms": true, // This technique can disarm the opponent
+"take_weapon": true, // Technique will disarm and equip target's weapon if hands are free
"grab_break": true, // This technique may break a grab against the user
"aoe": "spin", // This technique has an area-of-effect; doesn't work against solo targets
"block_counter": true, // This technique may automatically counterattack on a successful block
diff --git a/doc/MONSTERS.md b/doc/MONSTERS.md
index a18fe8ab7db1b..6df6f621196f9 100644
--- a/doc/MONSTERS.md
+++ b/doc/MONSTERS.md
@@ -37,7 +37,7 @@ In-game description for the monster.
A list of species ids. One can add or remove entries in mods via "add:species" and "remove:species", see Modding below. Properties (currently only triggers) from species are added to the properties of each monster that belong to the species.
-TODO: document species.
+In mainline game it can be HUMAN, ROBOT, ZOMBIE, MAMMAL, BIRD, FISH, REPTILE, WORM, MOLLUSK, AMPHIBIAN, INSECT, SPIDER, FUNGUS, PLANT, NETHER, MUTANT, BLOB, HORROR, ABERRATION, HALLUCINATION and UNKNOWN.
## "categories"
(array of strings, optional)
@@ -62,7 +62,8 @@ The materials the monster is primarily composed of. Must contain valid material
## "phase"
(string, optional)
-TODO: describe this. Is this even used in-game?
+It describes monster's body state of matter. However, it doesn't seem to have any gameplay purpose, right now.
+It can be SOLID, LIQUID, GAS, PLASMA or NULL.
## "default_faction"
(string)
@@ -122,13 +123,18 @@ Defines how aggressive the monster is. Ranges from -99 (totally passive) to 100
## "morale"
(integer, optional)
-Monster morale. TODO: describe this better.
+Monster morale. Defines how low monster HP can get before it retreats. This number is treated as % of their max HP.
## "speed"
(integer)
Monster speed. 100 is the normal speed for a human being - higher values are faster and lower values are slower.
+## "mountable_weight_ratio"
+(float, optional)
+
+Used as the acceptable rider vs. mount weight percentage ratio. Defaults to "0.2", which means the mount is capable of carrying riders weighing <= 20% of the mount's weight.
+
## "melee_skill"
(integer, optional)
@@ -142,7 +148,7 @@ Monster dodge skill. See GAME_BALANCE.txt for an explanation of dodge mechanics.
## "melee_damage"
(integer, optional)
-TODO: describe this.
+Amount of bash damage added to die roll on monster melee attack.
## "melee_dice", "melee_dice_sides"
(integer, optional)
@@ -390,37 +396,37 @@ The listed attack types can be as monster special attacks (see "special_attack")
Makes the monster leap a few tiles. It supports the following additional properties:
### "max_range"
-(Required) Maximal range to consider for leaping.
+(Required) Maximal range of attack.
### "min_range"
-TODO: describe this.
+(Required) Minimal range needed for attack.
### "allow_no_target"
-TODO: describe this.
+This prevents monster from using the ability on empty space.
### "move_cost"
-TODO: describe this.
+Turns needed to complete special attack. 100 move_cost with 100 speed is equal to 1 second/turn.
#### "min_consider_range", "max_consider_range"
-TODO: describe this.
+Minimal range and maximal range to consider for using specific attack.
## "bite"
-TODO: describe this.
+Makes monster use teeth to bite opponent. Some monsters can give infection by doing so.
### "damage_max_instance"
-TODO: describe this.
+Max damage it can deal on one bite.
### "min_mul", "max_mul"
-TODO: describe this.
+How hard is to get free of bite without killing attacker.
### "move_cost"
-TODO: describe this.
+Turns needed to complete special attack. 100 move_cost with 100 speed is equal to 1 second/turn.
### "accuracy"
-TODO: describe this.
+(Integer) How accurate it is. Not many monsters use it though.
### "no_infection_chance"
-TODO: describe this.
+Chance to not give infection.
## "gun"
Fires a gun at a target. If friendly, will avoid harming the player.
diff --git a/doc/PLAYER_ACTIVITY.md b/doc/PLAYER_ACTIVITY.md
index bacd14af87ecb..535c738f8d970 100644
--- a/doc/PLAYER_ACTIVITY.md
+++ b/doc/PLAYER_ACTIVITY.md
@@ -14,7 +14,7 @@ Activities are long term actions, that can be interrupted and (optionally) conti
* verb: A descriptive term to describe the activity to be used in the query to stop the activity, and strings that describe it, example : `"verb": "mining"` or `"verb": { "ctxt": "instrument", "str": "playing" }`.
* suspendable (true): If true, the activity can be continued without starting from scratch again. This is only possible if `can_resume_with()` returns true.
-* rooted (false): If true, then during the activity, recoil is reduced, plant mutants sink their roots into the ground, etc.
+* rooted (false): If true, then during the activity, recoil is reduced, and plant mutants sink their roots into the ground. Should be true if the activity lasts longer than a few minutes, and can always be accomplished without moving your feet.
* based_on: Can be 'time', 'speed', or 'neither'.
* time: The amount that `player_activity::moves_left` is decremented by is independent from the character's speed.
* speed: `player_activity::moves_left` may be decremented faster or slower, depending on the character's speed.
diff --git a/doc/TILESET.md b/doc/TILESET.md
index 431ca2d5bec68..51dc6136ed09e 100644
--- a/doc/TILESET.md
+++ b/doc/TILESET.md
@@ -69,6 +69,17 @@ The special prefixes `overlay_wielded_`, `overlay_female_wielded_`, `overlay_mal
`"multitle"` is an *optional* field. If it is present and `true`, there must be an `additional_tiles` list with 1 or more dictionaries for entities and sprites associated with this tile, such as broken versions of an item or wall connections. Each dictionary in the list has an `"id`" field, as above, and a `"fg"` field, which can be a single filename, a list of filenames, or a list of dictionaries as above.
+Each `tile_entry.json` file can have a single object in it, or a list of 1 or more objects like so:
+```C++
+[
+ { "id": "mon_zombie", "fg": "mon_zombie", "bg": "mon_zombie_bg", "rotates": false },
+ { "id": "corpse_mon_zombie", "fg": "mon_zombie_corpse", "bg": "mon_zombie_bg", "rotates": false },
+ { "id": "overlay_wielding_corse_mon_zombie", "fg": "wielded_mon_zombie_corpse", "bg": [], "rotates": false }
+]
+```
+
+Having a list of tile entries in a file may be useful for organization, but completely unrelated entries may all exist in the same file without any complications.
+
#### expansion `tile_entry` JSON
Tilesheets can have expansion tilesheets, which are tilesheets from mods. Each expansion tilesheet is a single `"id"` value, `"rotates": false"`, and `"fg": 0`. Expansion `tile_entry` JSON are the only `tile_entry` JSONs that use an integer value for `"fg"` and that value must be 0. Expansion `tile_entry` JSONs must be located at the top layer of each image directory.
diff --git a/doc/TRANSLATING.md b/doc/TRANSLATING.md
index b52d079d7f3d0..153a1ea1832b0 100644
--- a/doc/TRANSLATING.md
+++ b/doc/TRANSLATING.md
@@ -270,7 +270,8 @@ Do note that currently the JSON syntax is only supported for some JSON values,
which are listed below. If you want other json strings to use this format,
refer to `translations.h|cpp` and migrate the corresponding code. Afterwards
you may also want to test `update_pot.sh` to ensure that the strings are
-correctly extracted for translation.
+correctly extracted for translation, and run the unit test to fix text styling
+issues reported by the `translation` class.
| Supported JSON values
|---
@@ -312,6 +313,7 @@ correctly extracted for translation.
| Recipe descriptions
| Inscribe use action verbs/gerunds
| Monster names (plural supported) and descriptions
+| Snippets
### Recommendations
diff --git a/gfx/RetroDaysTileset/tile_config.json b/gfx/RetroDaysTileset/tile_config.json
index 635d78675fe0c..4d6e9e315aa9f 100644
--- a/gfx/RetroDaysTileset/tile_config.json
+++ b/gfx/RetroDaysTileset/tile_config.json
@@ -4560,7 +4560,6 @@
},
{ "id": "heatpack", "fg": 1532, "rotates": false },
{ "id": [ "hobo_stove", "esbit_stove" ], "fg": 1533, "rotates": false },
- { "id": "hobo_stove_on", "fg": 1534, "rotates": false },
{ "id": "hoe", "fg": 1535, "rotates": false },
{ "id": [ "horn_car", "horn_big", "beeper", "chimes", "horn_bicycle" ], "fg": 1536, "rotates": false },
{ "id": [ "gasoline_cooker", "oil_cooker", "hotplate" ], "fg": 1537, "rotates": false },
diff --git a/lang/extract_json_strings.py b/lang/extract_json_strings.py
index 480cbcd308697..3050dad1d8301 100755
--- a/lang/extract_json_strings.py
+++ b/lang/extract_json_strings.py
@@ -125,13 +125,13 @@ def warning_supressed(filename):
"ENGINE",
"epilogue",
"faction",
- "fault",
"furniture",
"GENERIC",
"item_action",
"ITEM_CATEGORY",
"json_flag",
"keybinding",
+ "LOOT_ZONE",
"MAGAZINE",
"map_extra",
"MOD_INFO",
@@ -144,7 +144,6 @@ def warning_supressed(filename):
"PET_ARMOR",
"score",
"skill",
- "snippet",
"speech",
"SPELL",
"start_location",
@@ -341,6 +340,8 @@ def extract_gun(item):
if "name" in item:
item_name = item.get("name")
if "name_plural" in item:
+ if type(item_name) is not str:
+ raise WrongJSONItem("ERROR: 'name_plural' found but 'name' is not a string", item)
# legacy format
if item["name_plural"] != "none":
writestr(outfile, item_name, item["name_plural"])
@@ -375,6 +376,8 @@ def extract_gunmod(item):
if "name" in item:
item_name = item.get("name")
if "name_plural" in item:
+ if type(item_name) is not str:
+ raise WrongJSONItem("ERROR: 'name_plural' found but 'name' is not a string", item)
# legacy format
if item["name_plural"] != "none":
writestr(outfile, item_name, item["name_plural"])
@@ -744,6 +747,29 @@ def extract_skill_display_type(item):
outfile = get_outfile("skill_display_type")
writestr(outfile, item["display_string"], comment="display string for skill display type '{}'".format(item["ident"]))
+def extract_fault(item):
+ outfile = get_outfile("fault")
+ writestr(outfile, item["name"])
+ writestr(outfile, item["description"], comment="description for fault '{}'".format(item["name"]))
+ for method in item["mending_methods"]:
+ if "name" in method:
+ writestr(outfile, method["name"], comment="name of mending method for fault '{}'".format(item["name"]))
+ if "description" in method:
+ writestr(outfile, method["description"], comment="description for mending method '{}' of fault '{}'".format(method["name"], item["name"]))
+ if "success_msg" in method:
+ writestr(outfile, method["success_msg"], format_strings=True, comment="success message for mending method '{}' of fault '{}'".format(method["name"], item["name"]))
+
+def extract_snippets(item):
+ outfile = get_outfile("snippet")
+ text = item["text"];
+ if type(text) is not list:
+ text = [text];
+ for snip in text:
+ if type(snip) is str:
+ writestr(outfile, snip)
+ else:
+ writestr(outfile, snip["text"])
+
# these objects need to have their strings specially extracted
extract_specials = {
"harvest" : extract_harvest,
@@ -751,6 +777,7 @@ def extract_skill_display_type(item):
"clothing_mod": extract_clothing_mod,
"construction": extract_construction,
"effect_type": extract_effect_type,
+ "fault": extract_fault,
"GUN": extract_gun,
"GUNMOD": extract_gunmod,
"mapgen": extract_mapgen,
@@ -765,14 +792,14 @@ def extract_skill_display_type(item):
"recipe": extract_recipes,
"recipe_group": extract_recipe_group,
"scenario": extract_scenarios,
+ "snippet": extract_snippets,
"talk_topic": extract_talk_topic,
"trap": extract_trap,
"gate": extract_gate,
"vehicle_spawn": extract_vehspawn,
"field_type": extract_field_type,
"ter_furn_transform": extract_ter_furn_transform_messages,
- "skill_display_type": extract_skill_display_type
-
+ "skill_display_type": extract_skill_display_type,
}
##
@@ -850,9 +877,11 @@ def writestr(filename, string, plural=None, context=None, format_strings=False,
# no "str_pl" entry in json, assuming regular plural form as in item_factory.cpp etc
str_pl = "{}s".format(string["str"])
elif "str_pl" in string:
- raise WrongJSONItem("ERROR: str_pl not supported here", string)
+ str_pl = string["str_pl"]
writestr(filename, string["str"], str_pl, ctxt, format_strings, comment)
return
+ elif type(string) is not str and plural is not None:
+ raise WrongJSONItem("ERROR: 'name_plural' found but 'name' is not a string", plural)
# don't write empty strings
if not string: return
@@ -954,6 +983,8 @@ def extract(item, infilename):
return
if name:
if "name_plural" in item:
+ if type(name) is not str:
+ raise WrongJSONItem("ERROR: 'name_plural' found but 'name' is not a string", item)
# legacy format
if item["name_plural"] != "none":
writestr(outfile, name, item["name_plural"], **kwargs)
diff --git a/lang/po/cataclysm-dda.pot b/lang/po/cataclysm-dda.pot
index 03e61b2928530..ea520ce2f9bcd 100644
--- a/lang/po/cataclysm-dda.pot
+++ b/lang/po/cataclysm-dda.pot
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: cataclysm-dda 0.D\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-10-11 19:32+0800\n"
+"POT-Creation-Date: 2019-11-16 18:59+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -173,6 +173,18 @@ msgstr ""
msgid "watery plutonium slurry"
msgstr ""
+#: lang/json/AMMO_from_json.py
+#: lang/json/snippet_from_json.py
+msgid "rock"
+msgstr ""
+
+#. ~ Description for rock
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A rock the size of a baseball. Makes a decent melee weapon, and is also "
+"good for throwing at enemies."
+msgstr ""
+
#: lang/json/AMMO_from_json.py
msgid "pebble"
msgstr ""
@@ -635,7 +647,7 @@ msgstr ""
msgid ""
"A hand-built rocket, consisting of a spike welded onto a pipe that was "
"filled with improvised rocket fuel. Horribly inaccurate, as can be expected "
-"of this grade of weapon, but packs a fierce punch... if it hits."
+"of this grade of weapon, but packs a fierce punch… if it hits."
msgstr ""
#: lang/json/AMMO_from_json.py
@@ -680,8 +692,8 @@ msgstr ""
#. ~ Description for unfinished calcium carbide
#: lang/json/AMMO_from_json.py
msgid ""
-"The incomplete process of converting coal and lime into calcium carbide. "
-"Useless in this state/"
+"The incomplete process of converting coal and lime into calcium carbide. "
+"Useless in this state."
msgstr ""
#: lang/json/AMMO_from_json.py
@@ -789,7 +801,7 @@ msgstr ""
#. ~ Description for wooden broadhead arrow
#: lang/json/AMMO_from_json.py
msgid ""
-"A fletched wooden arrow shaft with a bladed tip. Useful for maximising "
+"A fletched wooden arrow shaft with a bladed tip. Useful for maximizing "
"damage to the target. Stands a decent chance of remaining intact once fired."
msgstr ""
@@ -845,7 +857,7 @@ msgstr ""
#. ~ Description for aluminum broadhead arrow
#: lang/json/AMMO_from_json.py
msgid ""
-"A fletched aluminum arrow shaft with a bladed tip. Useful for maximising "
+"A fletched aluminum arrow shaft with a bladed tip. Useful for maximizing "
"damage to the target. Stands a good chance of remaining intact once fired."
msgstr ""
@@ -974,10 +986,10 @@ msgstr[1] ""
#. ~ Description for sulfur
#: lang/json/AMMO_from_json.py
msgid ""
-"A handful of yellow grains of pure sulfur. Primarily used to make battery "
-"acid, sulfur is sometimes used as fuel for explosives. Can be burned to "
-"produce acidic smoke, that is deadly to bacteria and humans alike, or "
-"oxidized to make paper-bleaching agents."
+"A handful of pure sulfur. Primarily used to make battery acid, sulfur is "
+"sometimes used as fuel for explosives. Can be burned to produce acidic "
+"smoke, that is deadly to bacteria and humans alike, or oxidized to make "
+"paper-bleaching agents."
msgstr ""
#: lang/json/AMMO_from_json.py
@@ -988,7 +1000,7 @@ msgstr[1] ""
#. ~ Description for chunk of sulfur
#: lang/json/AMMO_from_json.py
-msgid "A large chunk of pure sulfur. Break it up to use it."
+msgid "A chunk of pure sulfur. Break it up to use it."
msgstr ""
#: lang/json/AMMO_from_json.py
@@ -1099,8 +1111,8 @@ msgstr[1] ""
#. ~ Description for zinc oxide
#: lang/json/AMMO_from_json.py
msgid ""
-"A handful of zinc oxide. It can be reduced into zinc, or used for some other "
-"reactions of its own."
+"A handful of zinc oxide. It can be reduced into zinc, or used for some "
+"other reactions of its own."
msgstr ""
#: lang/json/AMMO_from_json.py
@@ -1112,7 +1124,7 @@ msgstr[1] ""
#. ~ Description for manganese dioxide
#: lang/json/AMMO_from_json.py
msgid ""
-"A handful of manganese dioxide powder. Occurring naturally in the mineral "
+"A handful of manganese dioxide powder. Occurring naturally in the mineral "
"pyrolusite, it is used commercially in the production of alkaline and zinc-"
"carbon batteries."
msgstr ""
@@ -1126,10 +1138,10 @@ msgstr[1] ""
#. ~ Description for potassium chloride
#: lang/json/AMMO_from_json.py
msgid ""
-"A handful of potassium chloride. Although it occurs naturally in the mineral "
-"sylvite, it can be produced as a byproduct of the reaction of saltpeter and "
-"hydrochloric acid. It can be used for making fertilizer, or potassium "
-"hydroxide by way of electrolysis."
+"A handful of potassium chloride. Although it occurs naturally in the "
+"mineral sylvite, it can be produced as a byproduct of the reaction of "
+"saltpeter and hydrochloric acid. It can be used for making fertilizer, or "
+"potassium hydroxide by way of electrolysis."
msgstr ""
#: lang/json/AMMO_from_json.py
@@ -1141,8 +1153,8 @@ msgstr[1] ""
#. ~ Description for potassium hydroxide
#: lang/json/AMMO_from_json.py
msgid ""
-"A handful of potassium hydroxide. Commonly called caustic potash, it was "
-"mainly used industrially for its caustic nature. It can be used as an "
+"A handful of potassium hydroxide. Commonly called caustic potash, it was "
+"mainly used industrially for its caustic nature. It can be used as an "
"electrolyte in alkaline batteries, among other applications."
msgstr ""
@@ -1170,9 +1182,9 @@ msgstr[1] ""
#. ~ Description for hydrochloric acid
#: lang/json/AMMO_from_json.py
msgid ""
-"Hydrochloric acid, also known as muriatic acid. It is a strong acid that has "
-"a distinctive smell, important and frequently used ever since its discovery. "
-"It still has a vast multitude of uses."
+"Hydrochloric acid, also known as muriatic acid. It is a strong acid that "
+"has a distinctive smell, important and frequently used ever since its "
+"discovery. It still has a vast multitude of uses."
msgstr ""
#: lang/json/AMMO_from_json.py
@@ -1214,10 +1226,10 @@ msgstr[1] ""
#. ~ Description for chromium oxide
#: lang/json/AMMO_from_json.py
msgid ""
-"A handful of chromium oxide pellets. This substance, typically known as the "
-"only stable green pigment for paints, is also a mild oxidizer, which can be "
-"mixed with aluminum powder to make thermite for welding. If one had access "
-"to a CVD machine and a laboratory worth of reagents, they might be able to "
+"A handful of chromium oxide. This substance, typically known as the only "
+"stable green pigment for paints, is also a mild oxidizer, which can be mixed "
+"with aluminum powder to make thermite for welding. If one had access to a "
+"CVD machine and a laboratory worth of reagents, they might be able to "
"produce very durable ceramic layers."
msgstr ""
@@ -1230,7 +1242,7 @@ msgstr[1] ""
#. ~ Description for calcium carbide
#: lang/json/AMMO_from_json.py
msgid ""
-"A handful of calcium carbide chunks, giving off a faint, garlic-like smell. "
+"A handful of calcium carbide, giving off a faint, garlic-like smell. "
"Commercially, calcium carbide was used for on-the-spot manufacture of "
"acetylene and historically to power acetylene lamps. If mixed with water "
"and sealed, it will explode with little strength, but with relatively loud "
@@ -1412,7 +1424,7 @@ msgstr[1] ""
#: lang/json/AMMO_from_json.py
msgid ""
"Some match head powder from match heads, similar to black gunpowder but a "
-"bit weaker. It can be used in crafting explosives and fuses when other more "
+"bit weaker. It can be used in crafting explosives and fuses when other more "
"suitable candidates are less available."
msgstr ""
@@ -1769,7 +1781,7 @@ msgstr[1] ""
#. ~ Description for flamethrower fuel
#: lang/json/AMMO_from_json.py
msgid ""
-"A mixture of gasoline and diesel oil in equal parts. Its combustion "
+"A mixture of gasoline and diesel oil in equal parts. Its combustion "
"properties make it unfit for applications where you would use any of them "
"separately, but it can be used to feed a flamethrower."
msgstr ""
@@ -3091,40 +3103,70 @@ msgid "reloaded .460 Rowland"
msgstr ""
#: lang/json/AMMO_from_json.py
-msgid ".50 BMG tracer"
+msgid ".50 BMG M17 tracer"
+msgstr ""
+
+#. ~ Description for .50 BMG M17 tracer
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A tracer variant of the powerful .50 BMG round. Tracer rounds to help keep "
+"the weapon they are fired from on target at the risk of igniting flammable "
+"substances."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid ".50 BMG M33 Ball"
msgstr ""
-#. ~ Description for .50 BMG tracer
+#. ~ Description for .50 BMG M33 Ball
#: lang/json/AMMO_from_json.py
msgid ""
-"A tracer variant of the powerful .50 BMG sniper round. Tracer rounds to "
-"help keep the weapon they are fired from on target at the risk of igniting "
-"flammable substances."
+".50 BMG ammunition with mild steel cored 661gr FMJ bullets. The .50 BMG is "
+"a very powerful rifle round designed for anti-aircraft use, later adapted to "
+"anti-vehicular and anti-personnel roles. Its stupendous energy and armor "
+"piercing capabilities make it one of the most deadly rounds available, "
+"offset only by its drastic recoil and noise."
msgstr ""
#: lang/json/AMMO_from_json.py
-msgid ".50 BMG Ball"
+msgid ".50 BMG Match"
msgstr ""
-#. ~ Description for .50 BMG Ball
+#. ~ Description for .50 BMG Match
#: lang/json/AMMO_from_json.py
msgid ""
-"The .50 BMG is a very powerful rifle round designed for long-range use. Its "
-"stupendous accuracy and armor piercing capabilities make it one of the most "
-"deadly rounds available, offset only by its drastic recoil and noise."
+".50 BMG FMJ lead core ammunition manufactured with tighter tolerances for "
+"long-range competition shooting or other precision rifle use."
msgstr ""
#: lang/json/AMMO_from_json.py
-msgid ".50 BMG AP"
+msgid ".50 BMG M2 AP"
msgstr ""
-#. ~ Description for .50 BMG AP
+#. ~ Description for .50 BMG M2 AP
#: lang/json/AMMO_from_json.py
msgid ""
"Variant of the .50 BMG round that uses a core of very dense, hardened "
"tungsten steel. Penetration is increased, but damage is reduced."
msgstr ""
+#: lang/json/AMMO_from_json.py
+msgid ".50 BMG Raufoss Mk 211"
+msgstr ""
+
+#. ~ Description for .50 BMG Raufoss Mk 211
+#: lang/json/AMMO_from_json.py
+msgid ""
+"This variant of the .50 BMG round makes the most of the caliber's potential "
+"payload delivery: the tip is loaded with an incendiary mix, which ignites on "
+"impact, detonating the RDX or PETN charge. This also ignites a secondary "
+"zirconium powder incendiary charge that surrounds a tungsten carbide "
+"penetrator, both encased by a mild steel cup. Fragments from the cup and "
+"burning metallic powder follow the penetrator through armored targets, "
+"increasing lethality. These rare, complicated, and expensive rounds are not "
+"likely to be manufactured again; use them wisely."
+msgstr ""
+
#: lang/json/AMMO_from_json.py
msgid "reloaded .50 BMG tracer"
msgstr ""
@@ -3132,22 +3174,23 @@ msgstr ""
#. ~ Description for reloaded .50 BMG tracer
#: lang/json/AMMO_from_json.py
msgid ""
-"A tracer variant of the powerful .50 BMG sniper round. Tracer rounds to "
-"help keep the weapon they are fired from on target at the risk of igniting "
-"flammable substances. This one has been hand-reloaded."
+"A tracer variant of the powerful .50 BMG round. Tracer rounds to help keep "
+"the weapon they are fired from on target at the risk of igniting flammable "
+"substances. This one has been hand-reloaded."
msgstr ""
#: lang/json/AMMO_from_json.py
-msgid "reloaded .50 BMG Ball"
+msgid "reloaded .50 BMG Match"
msgstr ""
-#. ~ Description for reloaded .50 BMG Ball
+#. ~ Description for reloaded .50 BMG Match
#: lang/json/AMMO_from_json.py
msgid ""
-"The .50 BMG is a very powerful rifle round designed for long-range use. Its "
-"stupendous accuracy and armor piercing capabilities make it one of the most "
-"deadly rounds available, offset only by its drastic recoil and noise. This "
-"one has been hand-reloaded."
+".50 BMG ammunition with lead-cored FMJ bullets. The .50 BMG is a very "
+"powerful rifle round designed for anti-aircraft use, later adapted to anti-"
+"vehicular and anti-personnel roles. Its stupendous energy and armor "
+"piercing capabilities make it one of the most deadly rounds available, "
+"offset only by its drastic recoil and noise."
msgstr ""
#: lang/json/AMMO_from_json.py
@@ -3157,9 +3200,8 @@ msgstr ""
#. ~ Description for reloaded .50 BMG AP
#: lang/json/AMMO_from_json.py
msgid ""
-"Variant of the .50 BMG round that uses a core of very dense, hardened "
-"tungsten steel. Penetration is increased, but damage is reduced. This one "
-"has been hand-reloaded."
+"Variant of the .50 BMG round that uses a core hardened steel. Penetration "
+"is increased, but damage is reduced. This one has been hand-reloaded."
msgstr ""
#: lang/json/AMMO_from_json.py
@@ -4093,6 +4135,106 @@ msgstr ""
msgid "fungal flower"
msgstr ""
+#: lang/json/AMMO_from_json.py
+msgid "potassium alum"
+msgstr ""
+
+#. ~ Description for potassium alum
+#: lang/json/AMMO_from_json.py
+msgid ""
+"Small water-soluble white crystals with watery metallic odor, historically "
+"used for many different purposes. Also known as potash alum and potassium "
+"aluminum sulfate; often called simply alum, as it's the most important "
+"member of the generic class of compounds called alums."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "cloth dye powder"
+msgstr ""
+
+#. ~ Description for cloth dye powder
+#: lang/json/AMMO_from_json.py
+msgid ""
+"This is a powdered colorful cloth dye, which can be used to dye many fabrics "
+"if combined with water and some mordant."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "steel buckle"
+msgstr ""
+
+#. ~ Description for steel buckle
+#: lang/json/AMMO_from_json.py
+msgid "A steel buckle, like that usually found on belts."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "plastic button"
+msgstr ""
+
+#. ~ Description for plastic button
+#: lang/json/AMMO_from_json.py
+msgid "A plastic button, usually found on clothing."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "steel button"
+msgstr ""
+
+#. ~ Description for steel button
+#: lang/json/AMMO_from_json.py
+msgid "A steel button, usually found on clothing."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "wooden button"
+msgstr ""
+
+#. ~ Description for wooden button
+#: lang/json/AMMO_from_json.py
+msgid "A crude wooden button, usually found on very old clothing."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "steel snap fastener"
+msgstr ""
+
+#. ~ Description for steel snap fastener
+#: lang/json/AMMO_from_json.py
+msgid "A steel snap fastener, usually found on clothing."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "touch fastener"
+msgstr ""
+
+#. ~ Description for touch fastener
+#: lang/json/AMMO_from_json.py
+msgid ""
+"This is a pair of cloth strips, one of which has tiny hooks and another has "
+"tiny loops. Useful as a fastener for clothing and footwear."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "long plastic zipper"
+msgstr ""
+
+#. ~ Description for long plastic zipper
+#: lang/json/AMMO_from_json.py
+msgid "A long zipper made from plastic, usually found on clothing."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "short plastic zipper"
+msgstr ""
+
+#. ~ Description for short plastic zipper
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A short zipper made from plastic, usually found on footwear or clothing "
+"pockets."
+msgstr ""
+
#: lang/json/AMMO_from_json.py
msgid "red paint"
msgid_plural "red paint"
@@ -4247,7 +4389,7 @@ msgstr[1] ""
#: lang/json/AMMO_from_json.py
msgid ""
"A slightly brittle metal. Apart from being an essential mineral that the "
-"body needs, it reacts readily with acids, alkalis and other non-metals. It "
+"body needs, it reacts readily with acids, alkalis and other non-metals. It "
"can be crushed to make zinc powder, used in the production of batteries, "
"among other things."
msgstr ""
@@ -4327,7 +4469,7 @@ msgstr ""
#. ~ Description for door hinge
#: lang/json/AMMO_from_json.py
msgid ""
-"A small metal hinge with two metal plates with screw holes. Useful for "
+"A small metal hinge with two metal plates with screw holes. Useful for "
"making doors."
msgstr ""
@@ -4338,7 +4480,7 @@ msgstr ""
#. ~ Description for tin powder
#: lang/json/AMMO_from_json.py
msgid ""
-"A fine gray powder composed of tin, usable for making solder and lining "
+"A fine gray powder composed of tin, usable for making solder and lining "
"containers to prevent corrosion."
msgstr ""
@@ -4377,6 +4519,358 @@ msgid ""
"explosions."
msgstr ""
+#: lang/json/AMMO_from_json.py
+msgid "rubber sole"
+msgstr ""
+
+#. ~ Description for rubber sole
+#: lang/json/AMMO_from_json.py
+msgid ""
+"This is a sole made from rubber, usually found on the bottoms of boots. Can "
+"be used for making actual boots."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "cotton scraps"
+msgid_plural "cotton scraps"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for cotton scraps
+#: lang/json/AMMO_from_json.py
+msgid ""
+"Oddly-shaped smallish bits of cotton, waste material from tailoring "
+"projects. Not useful for much and usually disposed of, but can be recycled "
+"into some thread if you really want."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "faux fur scraps"
+msgid_plural "faux fur scraps"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for faux fur scraps
+#: lang/json/AMMO_from_json.py
+msgid ""
+"Oddly-shaped smallish bits of faux fur, waste material from tailoring "
+"projects. Not useful for much and usually disposed of."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "felt scraps"
+msgid_plural "felt scraps"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for felt scraps
+#: lang/json/AMMO_from_json.py
+msgid ""
+"Oddly-shaped smallish bits of felt, waste material from tailoring projects. "
+"Not useful for much and usually disposed of, but can be recycled into some "
+"wool fiber if you really want."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "fur scraps"
+msgid_plural "fur scraps"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for fur scraps
+#: lang/json/AMMO_from_json.py
+msgid ""
+"Oddly-shaped smallish bits of fur, waste material from tailoring projects. "
+"Not useful for much and usually disposed of."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "Kevlar scraps"
+msgid_plural "Kevlar scraps"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Kevlar scraps
+#: lang/json/AMMO_from_json.py
+msgid ""
+"Oddly-shaped smallish bits of Kevlar fabric, waste material from tailoring "
+"projects. Normally it's disposed of, but since Kevlar would be very "
+"difficult to make in a post-apocalyptic world, it might be worth recycling "
+"it for Kevlar thread."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "leather scraps"
+msgid_plural "leather scraps"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for leather scraps
+#: lang/json/AMMO_from_json.py
+msgid ""
+"Oddly-shaped smallish bits of leather, waste material from tailoring "
+"projects. Not useful for much and usually disposed of."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "lycra scraps"
+msgid_plural "lycra scraps"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for lycra scraps
+#: lang/json/AMMO_from_json.py
+msgid ""
+"Oddly-shaped smallish bits of lycra, waste material from tailoring "
+"projects. Not useful for much and usually disposed of."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "neoprene scraps"
+msgid_plural "neoprene scraps"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for neoprene scraps
+#: lang/json/AMMO_from_json.py
+msgid ""
+"Oddly-shaped smallish bits of neoprene, waste material from tailoring "
+"projects. Not useful for much and usually disposed of."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "synthetic fabric scraps"
+msgid_plural "synthetic fabric scraps"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for synthetic fabric scraps
+#: lang/json/AMMO_from_json.py
+msgid ""
+"Oddly-shaped smallish bits of synthetic fabric, waste material from "
+"tailoring projects. Not useful for much and usually disposed of."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "Nomex scraps"
+msgid_plural "Nomex scraps"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Nomex scraps
+#: lang/json/AMMO_from_json.py
+msgid ""
+"Oddly-shaped smallish bits of heat-resistant Nomex fabric, waste material "
+"from tailoring projects. Normally it's disposed of, but since Nomex would "
+"be very difficult to make in a post-apocalyptic world, it might be worth "
+"recycling it."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "cotton sheet"
+msgstr ""
+
+#. ~ Description for cotton sheet
+#: lang/json/AMMO_from_json.py
+msgid "A sheet of cotton fabric, suitable for making clothing."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "patchwork cotton clothing parts"
+msgid_plural "patchwork cotton clothing parts"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for patchwork cotton clothing parts
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A selection of various clothing parts, sewn together from cotton patches in "
+"a patchwork fashion. Suitable for making most clothing, though it's much "
+"less time-efficient than if using proper material sheets."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "faux fur sheet"
+msgstr ""
+
+#. ~ Description for faux fur sheet
+#: lang/json/AMMO_from_json.py
+msgid "A sheet of fake synthetic colorful fur, suitable for making clothing."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "patchwork faux fur clothing parts"
+msgid_plural "patchwork faux fur clothing parts"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for patchwork faux fur clothing parts
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A selection of various clothing parts, sewn together from faux fur patches "
+"in a patchwork fashion. Suitable for making most clothing, though it's much "
+"less time-efficient than if using proper material sheets."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "felt sheet"
+msgstr ""
+
+#. ~ Description for felt sheet
+#: lang/json/AMMO_from_json.py
+msgid "A sheet of felt, suitable for making clothing."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "patchwork felt clothing parts"
+msgid_plural "patchwork felt clothing parts"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for patchwork felt clothing parts
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A selection of various clothing parts, sewn together from felt patches in a "
+"patchwork fashion. Suitable for making most clothing, though it's much less "
+"time-efficient than if using proper material sheets."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "Kevlar sheet"
+msgstr ""
+
+#. ~ Description for Kevlar sheet
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A sheet of Kevlar synthetic fabric, suitable for making bulletproof armor. "
+"In this form, unlike rigid plates, it can be stitched."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "lycra sheet"
+msgstr ""
+
+#. ~ Description for lycra sheet
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A sheet of synthetic fabric blended with stretchy lycra fibers, suitable for "
+"making flexible yet strong clothing."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "patchwork lycra clothing parts"
+msgid_plural "patchwork lycra clothing parts"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for patchwork lycra clothing parts
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A selection of various clothing parts, sewn together from lycra patches in a "
+"patchwork fashion. Suitable for making most clothing, though it's much less "
+"time-efficient than if using proper material sheets."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py
+msgid "neoprene sheet"
+msgid_plural "neoprene sheets"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for neoprene sheet
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A sheet of neoprene, a synthetic rubber, suitable for making underwater gear."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "patchwork neoprene clothing parts"
+msgid_plural "patchwork neoprene clothing parts"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for patchwork neoprene clothing parts
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A selection of various clothing parts, sewn together from neoprene patches "
+"in a patchwork fashion, with waterproofed seams. Suitable for making most "
+"clothing, though it's much less time-efficient than if using proper material "
+"sheets."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "Nomex sheet"
+msgstr ""
+
+#. ~ Description for Nomex sheet
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A sheet of Nomex synthetic fabric, suitable for making heat-resistant "
+"clothing."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "patchwork Nomex clothing parts"
+msgid_plural "patchwork Nomex clothing parts"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for patchwork Nomex clothing parts
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A selection of various clothing parts, sewn together with Nomex thread from "
+"Nomex patches in a patchwork fashion. Suitable for making most clothing, "
+"though it's much less time-efficient than if using proper material sheets."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "synthetic fabric sheet"
+msgstr ""
+
+#. ~ Description for synthetic fabric sheet
+#: lang/json/AMMO_from_json.py
+msgid "A sheet of synthetic fabric, suitable for making clothing."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "patchwork synthetic fabric clothing parts"
+msgid_plural "patchwork synthetic fabric clothing parts"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for patchwork synthetic fabric clothing parts
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A selection of various clothing parts, sewn together from synthetic fabric "
+"patches in a patchwork fashion. Suitable for making most clothing, though "
+"it's much less time-efficient than if using proper material sheets."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "Kevlar thread"
+msgstr ""
+
+#. ~ Description for Kevlar thread
+#: lang/json/AMMO_from_json.py
+msgid ""
+"Some very durable Kevlar thread that would be particularly useful for making "
+"ballistic armor, though it's fine to use in place of normal thread too, in "
+"most cases. Making armor-grade Kevlar sheets from this would need a "
+"particularly tight weave, and so would need some specialized machinery."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "Nomex thread"
+msgstr ""
+
+#. ~ Description for Nomex thread
+#: lang/json/AMMO_from_json.py
+msgid ""
+"Some heat-resistant Nomex thread that would be particularly useful for "
+"making heat protection gear, though it's fine to use in place of normal "
+"thread too, in most cases."
+msgstr ""
+
#: lang/json/AMMO_from_json.py
msgid "handloaded .22 CB"
msgid_plural "handloaded .22 CB"
@@ -4890,6 +5384,18 @@ msgid ""
"burn hotly upon impact, piercing armor and igniting flammable substances."
msgstr ""
+#: lang/json/AMMO_from_json.py lang/json/ammunition_type_from_json.py
+msgid "orichalcum arrow"
+msgstr ""
+
+#. ~ Description for orichalcum arrow
+#: lang/json/AMMO_from_json.py
+msgid ""
+"An arrow composed of a sliver of orichalcum. The arrow has a mysterious "
+"glow. Has a very high chance of staying intact when fired, however can only "
+"be fired from Ichaival."
+msgstr ""
+
#: lang/json/AMMO_from_json.py lang/json/ammunition_type_from_json.py
msgid "dragon blood"
msgid_plural "dragon blood"
@@ -4937,8 +5443,29 @@ msgstr[1] ""
#. ~ Description for crystallized mana
#: lang/json/AMMO_from_json.py
msgid ""
-"Some crystallized mana. This can be reloaded into rechargable mana crystals, "
-"but can never be unloaded."
+"Some crystallized mana. This can be reloaded into rechargable mana "
+"crystals, but can never be unloaded."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "lump of orichalcum"
+msgstr ""
+
+#. ~ Description for lump of orichalcum
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A heavy formed piece of strange metal. Useful for some crafting recipes."
+msgstr ""
+
+#: lang/json/AMMO_from_json.py
+msgid "sliver of orichalcum"
+msgstr ""
+
+#. ~ Description for sliver of orichalcum
+#: lang/json/AMMO_from_json.py
+msgid ""
+"A sliver of a strange glowing metal. Useful as a weapon, but better suited "
+"for crafting."
msgstr ""
#: lang/json/AMMO_from_json.py lang/json/ammunition_type_from_json.py
@@ -5426,13 +5953,6 @@ msgid ""
"blob needs to be healthy. You think..."
msgstr ""
-#: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py
-#: lang/json/snippet_from_json.py
-msgid "rock"
-msgid_plural "rocks"
-msgstr[0] ""
-msgstr[1] ""
-
#: lang/json/AMMO_from_json.py lang/json/GENERIC_from_json.py
msgid "pool ball"
msgid_plural "pool balls"
@@ -5960,9 +6480,10 @@ msgstr[1] ""
#. ~ Use action holster_msg for pair of rollerblades.
#. ~ Use action holster_msg for pair of rollerskates.
#. ~ Use action holster_msg for C.R.I.T web belt.
+#. ~ Use action holster_msg for technomancer's toolbelt.
#. ~ Use action holster_msg for hollow cane.
#: lang/json/ARMOR_from_json.py
-#: lang/json/GENERIC_from_json.py
+#: lang/json/ARMOR_from_json.py lang/json/GENERIC_from_json.py
#, no-python-format
msgid "You sheath your %s"
msgstr ""
@@ -6589,6 +7110,46 @@ msgid ""
"small straps designed to better distribute the weight."
msgstr ""
+#: lang/json/ARMOR_from_json.py
+msgid "pair of chainmail chausses"
+msgid_plural "pairs of chainmail chausses"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for pair of chainmail chausses
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"Customized chainmail chausses that cover the feet, like booties made of "
+"chainmail."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "pair of chainmail gloves"
+msgid_plural "pairs of chainmail gloves"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for pair of chainmail gloves
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"Customized chainmail gloves. They fully enclose the fingers and provide "
+"excellent protection, but are somewhat cumbersome."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "faraday chainmail suit"
+msgid_plural "faraday chainmail suits"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for faraday chainmail suit
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A fully customized chainmail suit that can be worn over your normal "
+"clothing. The suit is conductively interconnected, protecting against "
+"electricity."
+msgstr ""
+
#: lang/json/ARMOR_from_json.py
msgid "leather chaps"
msgid_plural "leather chaps"
@@ -6737,6 +7298,28 @@ msgid ""
"A colorful and ridiculous costume fit for a clown. Provides decent storage."
msgstr ""
+#: lang/json/ARMOR_from_json.py
+msgid "clown wig"
+msgid_plural "clown wigs"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for clown wig
+#: lang/json/ARMOR_from_json.py
+msgid "A colorful and ridiculous wig fit for a clown."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "clown nose"
+msgid_plural "clown noses"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for clown nose
+#: lang/json/ARMOR_from_json.py
+msgid "A red latex nose often seen being worn by clowns."
+msgstr ""
+
#: lang/json/ARMOR_from_json.py
msgid "fur coat"
msgid_plural "fur coats"
@@ -6994,6 +7577,22 @@ msgstr[1] ""
msgid "A white button-down shirt with long sleeves. Looks professional!"
msgstr ""
+#: lang/json/ARMOR_from_json.py
+msgid "drinking hat"
+msgid_plural "drinking hats"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for drinking hat
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"This is an improvised harness that can be worn over other headgear or bare "
+"head, made from two small liquid containers, a rubber hose, a bundle of "
+"steel wire, and some cordage. A convenient and simple device for hands-free "
+"drinking, though the liquid inside would spill if you put it into your "
+"backpack."
+msgstr ""
+
#: lang/json/ARMOR_from_json.py
msgid "wedding dress"
msgid_plural "wedding dresses"
@@ -7136,6 +7735,32 @@ msgstr[1] ""
msgid "Provides a bit of extra storage, with minimal encumbrance."
msgstr ""
+#: lang/json/ARMOR_from_json.py
+msgid "underarm protector"
+msgid_plural "underarm protectors"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for underarm protector
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A sturdy cotton plastron that protects much of the torso, the dominant "
+"shoulder, and underarm while fencing."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "plastic chest protector"
+msgid_plural "plastic chest protectors"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for plastic chest protector
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A rigid plastic plastron with molded cups to be worn by female fencers for "
+"protection while fencing."
+msgstr ""
+
#: lang/json/ARMOR_from_json.py
msgid "fencing jacket"
msgid_plural "fencing jackets"
@@ -7149,6 +7774,34 @@ msgid ""
"accidents. It doesn't have any storage room, but it is very comfortable."
msgstr ""
+#: lang/json/ARMOR_from_json.py
+msgid "lamé (foil)"
+msgid_plural "lamé (foil)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for lamé (foil)
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A thin, lightweight conductive vest with the zipper on the back used by "
+"fencers for electronic scoring. Its outer layer is a woven mix of sturdy "
+"cotton and stainless steel strands."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "lamé (saber)"
+msgid_plural "lamé (saber)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for lamé (saber)
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A thin, lightweight conductive jacket used by fencers for electronic "
+"scoring. Its outer layer is a woven mix of sturdy cotton and stainless "
+"steel strands."
+msgstr ""
+
#: lang/json/ARMOR_from_json.py
msgid "fencing mask"
msgid_plural "fencing masks"
@@ -7171,6 +7824,32 @@ msgstr[1] ""
msgid "A pair of reinforced pants used by fencers to prevent injuries."
msgstr ""
+#: lang/json/ARMOR_from_json.py
+msgid "fencing gauntlet"
+msgid_plural "fencing gauntlets"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for fencing gauntlet
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A single suede glove with sturdy cotton wrists, padded backs and well-"
+"fitting fingers."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "fencing gauntlet (left)"
+msgid_plural "fencing gauntlet (left)s"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for fencing gauntlet (left)
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A single suede glove with sturdy cotton wrists, padded backs and well-"
+"fitting fingers. This one is left-handed."
+msgstr ""
+
#: lang/json/ARMOR_from_json.py
msgid "pair of fire gauntlets"
msgid_plural "pairs of fire gauntlets"
@@ -7535,19 +8214,6 @@ msgstr[1] ""
msgid "A pair of warm fur gloves. They are somewhat cumbersome."
msgstr ""
-#: lang/json/ARMOR_from_json.py
-msgid "pair of survivor wetsuit gloves"
-msgid_plural "pairs of survivor wetsuit gloves"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for pair of survivor wetsuit gloves
-#: lang/json/ARMOR_from_json.py
-msgid ""
-"A pair of customized, Kevlar armored neoprene gloves, modified to be easy to "
-"wear while providing maximum protection under extreme conditions."
-msgstr ""
-
#: lang/json/ARMOR_from_json.py
msgid "pair of heavy survivor gloves"
msgid_plural "pairs of heavy survivor gloves"
@@ -7609,6 +8275,20 @@ msgid ""
"wear while providing maximum protection under extreme conditions."
msgstr ""
+#: lang/json/ARMOR_from_json.py
+msgid "pair of fingerless survivor gloves"
+msgid_plural "pairs of fingerless survivor gloves"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for pair of fingerless survivor gloves
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A pair of customized, Kevlar armored cloth gloves with no fingers, modified "
+"to be easy to wear while providing maximum protection under extreme "
+"conditions."
+msgstr ""
+
#: lang/json/ARMOR_from_json.py
msgid "pair of medical gloves"
msgid_plural "pairs of medical gloves"
@@ -7837,17 +8517,6 @@ msgid ""
"excellent protection from environmental dangers."
msgstr ""
-#: lang/json/ARMOR_from_json.py
-msgid "pair of swim goggles"
-msgid_plural "pairs of swim goggles"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for pair of swim goggles
-#: lang/json/ARMOR_from_json.py
-msgid "A small pair of goggles made for swimming."
-msgstr ""
-
#: lang/json/ARMOR_from_json.py
msgid "pair of welding goggles"
msgid_plural "pairs of welding goggles"
@@ -7884,20 +8553,6 @@ msgid ""
"A heavy, full-length wool coat. Cumbersome, but warm and with deep pockets."
msgstr ""
-#: lang/json/ARMOR_from_json.py
-msgid "survivor wetsuit"
-msgid_plural "survivor wetsuits"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for survivor wetsuit
-#: lang/json/ARMOR_from_json.py
-msgid ""
-"A lightweight, hand-built combination armor made from a cut-down bulletproof "
-"vest and a reinforced neoprene wetsuit. Protects from the elements as well "
-"as from harm."
-msgstr ""
-
#: lang/json/ARMOR_from_json.py
msgid "hakama"
msgid_plural "hakamas"
@@ -8400,17 +9055,6 @@ msgstr[1] ""
msgid "A customized armored Nomex and Kevlar hood, very strong and durable."
msgstr ""
-#: lang/json/ARMOR_from_json.py
-msgid "survivor wetsuit hood"
-msgid_plural "survivor wetsuit hoods"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for survivor wetsuit hood
-#: lang/json/ARMOR_from_json.py
-msgid "A customized armored neoprene and Kevlar hood, very strong and durable."
-msgstr ""
-
#: lang/json/ARMOR_from_json.py
msgid "light survivor hood"
msgid_plural "light survivor hoods"
@@ -9115,18 +9759,25 @@ msgstr[0] ""
msgstr[1] ""
#. ~ Use action holster_msg for leather belt.
-#: lang/json/ARMOR_from_json.py
+#. ~ Use action holster_msg for magic leather belt.
+#. ~ Use action holster_msg for Belt of Weaponry.
+#: lang/json/ARMOR_from_json.py lang/json/TOOL_ARMOR_from_json.py
+#: lang/json/TOOL_ARMOR_from_json.py
#, no-python-format
msgid "You tuck your %s into your %s"
msgstr ""
#. ~ Use action holster_prompt for leather belt.
-#: lang/json/ARMOR_from_json.py
+#. ~ Use action holster_prompt for magic leather belt.
+#. ~ Use action holster_prompt for Belt of Weaponry.
+#: lang/json/ARMOR_from_json.py lang/json/TOOL_ARMOR_from_json.py
+#: lang/json/TOOL_ARMOR_from_json.py
msgid "Stick what into your belt"
msgstr ""
#. ~ Description for leather belt
-#: lang/json/ARMOR_from_json.py
+#. ~ Description for magic leather belt
+#: lang/json/ARMOR_from_json.py lang/json/TOOL_ARMOR_from_json.py
msgid "A leather belt. Useful for making your pair of pants fit."
msgstr ""
@@ -9294,6 +9945,20 @@ msgid ""
"variety is favored by the military."
msgstr ""
+#: lang/json/ARMOR_from_json.py
+msgid "leotard"
+msgid_plural "leotard"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for leotard
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A skin-tight spandex garment, covering the body from the groin to the "
+"shoulders. With its deep scoop-cut back and high waist cuts, this garment "
+"is perfect for showcasing your physique on the stage."
+msgstr ""
+
#: lang/json/ARMOR_from_json.py
msgid "Linux t-shirt"
msgid_plural "Linux t-shirts"
@@ -10115,33 +10780,6 @@ msgid ""
"Activate to sheathe/draw a weapon."
msgstr ""
-#: lang/json/ARMOR_from_json.py
-msgid "shark suit"
-msgid_plural "shark suits"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for shark suit
-#: lang/json/ARMOR_from_json.py
-msgid ""
-"A one piece chainmail suit used by scuba divers for protection against shark "
-"bites. It comes with attached plastic helmet and booties."
-msgstr ""
-
-#: lang/json/ARMOR_from_json.py
-msgid "faraday shark suit"
-msgid_plural "faraday shark suits"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for faraday shark suit
-#: lang/json/ARMOR_from_json.py
-msgid ""
-"A one piece chainmail suit used by scuba divers for protection against shark "
-"bites. It has been conductively interconnected, protecting against "
-"electricity."
-msgstr ""
-
#: lang/json/ARMOR_from_json.py
msgid "sheath"
msgid_plural "sheathes"
@@ -10214,6 +10852,19 @@ msgid ""
"from cuts."
msgstr ""
+#: lang/json/ARMOR_from_json.py
+msgid "thermal shirt"
+msgid_plural "thermal shirts"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for thermal shirt
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A lightweight, form-fitting long-sleeved spandex undershirt that helps "
+"maintains body temperature."
+msgstr ""
+
#: lang/json/ARMOR_from_json.py
msgid "skinny tie"
msgid_plural "skinny ties"
@@ -10676,8 +11327,8 @@ msgstr[1] ""
#: lang/json/ARMOR_from_json.py
msgid ""
"A thin, short-sleeved and short-legged one-piece suit. Judging by the odd "
-"tailoring and adjustment points... maybe you don't want to know who wore "
-"it. Provides nominal storage and is not very encumbering."
+"tailoring and adjustment points… maybe you don't want to know who wore it. "
+"Provides nominal storage and is not very encumbering."
msgstr ""
#: lang/json/ARMOR_from_json.py
@@ -10749,6 +11400,7 @@ msgstr[1] ""
#. ~ Use action holster_prompt for survivor utility belt.
#. ~ Use action holster_prompt for hiking backpack.
#. ~ Use action holster_prompt for C.R.I.T web belt.
+#. ~ Use action holster_prompt for technomancer's toolbelt.
#: lang/json/ARMOR_from_json.py
msgid "Sheath blade"
msgstr ""
@@ -11123,17 +11775,6 @@ msgid ""
"hat for you."
msgstr ""
-#: lang/json/ARMOR_from_json.py
-msgid "pair of swimming trunks"
-msgid_plural "pairs of swimming trunks"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for pair of swimming trunks
-#: lang/json/ARMOR_from_json.py
-msgid "A pair of swimming trunks, with netting."
-msgstr ""
-
#: lang/json/ARMOR_from_json.py
msgid "t-shirt"
msgid_plural "t-shirts"
@@ -11387,55 +12028,6 @@ msgid ""
"would be too casual and a suit would be just overdoing it."
msgstr ""
-#: lang/json/ARMOR_from_json.py
-msgid "wetsuit"
-msgid_plural "wetsuits"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for wetsuit
-#: lang/json/ARMOR_from_json.py
-msgid "A full-body neoprene wetsuit."
-msgstr ""
-
-#: lang/json/ARMOR_from_json.py
-msgid "pair of swimming gloves"
-msgid_plural "pairs of swimming gloves"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for pair of swimming gloves
-#: lang/json/ARMOR_from_json.py
-msgid ""
-"A pair of very flexible neoprene-silicone rubber gloves, suitable for "
-"underwater use."
-msgstr ""
-
-#: lang/json/ARMOR_from_json.py
-msgid "wetsuit hood"
-msgid_plural "wetsuit hoods"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for wetsuit hood
-#: lang/json/ARMOR_from_json.py
-msgid "A neoprene hood, commonly worn by divers."
-msgstr ""
-
-#: lang/json/ARMOR_from_json.py
-msgid "spring suit"
-msgid_plural "spring suits"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for spring suit
-#: lang/json/ARMOR_from_json.py
-msgid ""
-"A long-sleeved spring wetsuit with pink color details and cleavage-"
-"enhancing, hip-accentuating construction. Not as protective as a full-body "
-"suit, but also less restrictive."
-msgstr ""
-
#: lang/json/ARMOR_from_json.py
msgid "pair of army winter gloves"
msgid_plural "pairs of army winter gloves"
@@ -11761,6 +12353,35 @@ msgid ""
"Useful for improvised rain protection."
msgstr ""
+#: lang/json/ARMOR_from_json.py
+msgid "unitard"
+msgid_plural "unitards"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for unitard
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A skin-tight spandex garment resembling a crew necked leotard combined with "
+"leggings. Commonly used by gymnasts, dancers and equestrian vaulters, the "
+"unitard provides overall coverage with great flexibility."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "zentai"
+msgid_plural "zentais"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for zentai
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"Short for 'zenshin taitsu', a zentai is a form fitting full body nylon and "
+"spandex garment. Though it covers your face, you can see through the "
+"integrated hood. With a couple of these and some friends and you could put "
+"on some kabuki."
+msgstr ""
+
#: lang/json/ARMOR_from_json.py
msgid "pair of bone arm guards"
msgid_plural "pairs of bone arm guards"
@@ -14421,6 +15042,142 @@ msgid ""
"direct skin contact."
msgstr ""
+#: lang/json/ARMOR_from_json.py
+msgid "pair of swimming trunks"
+msgid_plural "pairs of swimming trunks"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for pair of swimming trunks
+#: lang/json/ARMOR_from_json.py
+msgid "A pair of swimming trunks, with netting."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "wetsuit"
+msgid_plural "wetsuits"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for wetsuit
+#: lang/json/ARMOR_from_json.py
+msgid "A full-body neoprene wetsuit."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "wetsuit hood"
+msgid_plural "wetsuit hoods"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for wetsuit hood
+#: lang/json/ARMOR_from_json.py
+msgid "A neoprene hood, commonly worn by divers."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "survivor wetsuit hood"
+msgid_plural "survivor wetsuit hoods"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for survivor wetsuit hood
+#: lang/json/ARMOR_from_json.py
+msgid "A customized armored neoprene and Kevlar hood, very strong and durable."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "survivor wetsuit"
+msgid_plural "survivor wetsuits"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for survivor wetsuit
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A lightweight, hand-built combination armor made from a cut-down bulletproof "
+"vest and a reinforced neoprene wetsuit. Protects from the elements as well "
+"as from harm."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "pair of survivor wetsuit gloves"
+msgid_plural "pairs of survivor wetsuit gloves"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for pair of survivor wetsuit gloves
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A pair of customized, Kevlar armored neoprene gloves, modified to be easy to "
+"wear while providing maximum protection under extreme conditions."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "spring suit"
+msgid_plural "spring suits"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for spring suit
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A long-sleeved spring wetsuit with pink color details and cleavage-"
+"enhancing, hip-accentuating construction. Not as protective as a full-body "
+"suit, but also less restrictive."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "faraday shark suit"
+msgid_plural "faraday shark suits"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for faraday shark suit
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A one piece chainmail suit used by scuba divers for protection against shark "
+"bites. It has been conductively interconnected, protecting against "
+"electricity."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "shark suit"
+msgid_plural "shark suits"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for shark suit
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A one piece chainmail suit used by scuba divers for protection against shark "
+"bites. It comes with attached plastic helmet and booties."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "pair of swim goggles"
+msgid_plural "pairs of swim goggles"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for pair of swim goggles
+#: lang/json/ARMOR_from_json.py
+msgid "A small pair of goggles made for swimming."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "pair of swimming gloves"
+msgid_plural "pairs of swimming gloves"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for pair of swimming gloves
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A pair of very flexible neoprene-silicone rubber gloves, suitable for "
+"underwater use."
+msgstr ""
+
#: lang/json/ARMOR_from_json.py
msgid "helmet netting"
msgid_plural "helmet nettings"
@@ -15025,6 +15782,54 @@ msgid_plural "shotgun bandoliers"
msgstr[0] ""
msgstr[1] ""
+#: lang/json/ARMOR_from_json.py
+msgid "technomancer's toolbelt"
+msgid_plural "technomancer's toolbelts"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for technomancer's toolbelt
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"A custom-built leather utility belt that instantly creates any tool that you "
+"reach for. Activate to sheathe/draw a weapon."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "seven league boots"
+msgid_plural "pairs of seven league boots"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for seven league boots
+#. ~ Description for boots of haste
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"Rugged yet extremely comfortable and well fitting boots of worn leather and "
+"steel, they look like they've seen a lot of use and will likely see a lot "
+"more. They make your movement a lot less work."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "boots of haste"
+msgid_plural "pairs of boots of haste"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "boots of grounding"
+msgid_plural "pairs of boots of grounding"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for boots of grounding
+#: lang/json/ARMOR_from_json.py
+msgid ""
+"Rugged yet extremely comfortable and well fitting boots of leather with "
+"small engraved runes seemingly filled with rubber. When worn, you are "
+"immune to damage from electricity."
+msgstr ""
+
#: lang/json/ARMOR_from_json.py
msgid "copper infusion bracelet"
msgid_plural "copper infusion bracelets"
@@ -15047,7 +15852,7 @@ msgstr[1] ""
#. ~ Description for copper circlet
#: lang/json/ARMOR_from_json.py
msgid ""
-"A wooden band with copper trimmings to be worn on the head. Touching your "
+"A wooden band with copper trimmings to be worn on the head. Touching your "
"temples with it on makes you feel very calm."
msgstr ""
@@ -15244,6 +16049,24 @@ msgid ""
"minimize encumbrance."
msgstr ""
+#: lang/json/ARMOR_from_json.py
+msgid "acid resistance aura"
+msgid_plural "acid resistance auras"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for acid resistance aura
+#. ~ Description for greater acid resistance aura
+#: lang/json/ARMOR_from_json.py
+msgid "An all-encompassing, invisible layer of protection against acid."
+msgstr ""
+
+#: lang/json/ARMOR_from_json.py
+msgid "greater acid resistance aura"
+msgid_plural "greater acid resistance auras"
+msgstr[0] ""
+msgstr[1] ""
+
#: lang/json/ARMOR_from_json.py
msgid "wooden shield"
msgid_plural "wooden shields"
@@ -15672,7 +16495,7 @@ msgstr[1] ""
msgid ""
"This high-power system uses a set of cameras and LEDs to make the user blend "
"into their surroundings, rendering them fully invisible to eyes and optical "
-"sensors. However, this does't prevent detection from other means such as "
+"sensors. However, this doesn't prevent detection from other means such as "
"infrared, sonar, etc."
msgstr ""
@@ -15772,8 +16595,9 @@ msgstr[1] ""
#. ~ Description for Ethanol Burner CBM
#: lang/json/BIONIC_ITEM_from_json.py
msgid ""
-"A reactor that burns alcohol as fuel in an extremely efficient reaction. "
-"However, the user will still suffer the inebriating effects of the substance."
+"A reactor that burns alcohol as fuel in an extremely efficient reaction. It "
+"can store up to 500ml and accept ethanol, methanol and denatured aclohol as "
+"fuel."
msgstr ""
#: lang/json/BIONIC_ITEM_from_json.py
@@ -15783,8 +16607,7 @@ msgstr[0] ""
msgstr[1] ""
#. ~ Description for Aero-Evaporator CBM
-#. ~ Description for Aero-Evaporator
-#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py
+#: lang/json/BIONIC_ITEM_from_json.py
msgid ""
"This unit draws moisture from the surrounding air, which then is poured from "
"a fingertip in the form of water. It may fail in very dry environments."
@@ -15827,7 +16650,7 @@ msgstr[1] ""
#: lang/json/BIONIC_ITEM_from_json.py
msgid ""
"Through controlled application of electrochemical impulses, this bionic "
-"mudule lets the user alter their facial structure so as to subtly affect the "
+"module lets the user alter their facial structure so as to subtly affect the "
"reactions of others. This grants a bonus to all social interactions."
msgstr ""
@@ -15853,7 +16676,7 @@ msgstr[1] ""
#. ~ Description for Fingerhack CBM
#: lang/json/BIONIC_ITEM_from_json.py
msgid ""
-"A miniature electrohack, surgically embedded in a finger of the right hand. "
+"A miniature electrohack, surgically embedded in a finger of the right hand. "
"This is an all-purpose hacking unit used to override control panels and the "
"like, but not computers. Computer proficiency is important, and a failed "
"use may cause damage."
@@ -16149,8 +16972,7 @@ msgstr[0] ""
msgstr[1] ""
#. ~ Description for Artificial Night Generator CBM
-#. ~ Description for Artificial Night Generator
-#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py
+#: lang/json/BIONIC_ITEM_from_json.py
msgid ""
"When active, this bionic eliminates all light within a 15 tile radius "
"through destructive interference."
@@ -16222,7 +17044,7 @@ msgstr[1] ""
msgid ""
"Interfaces the user's bionic power system with the internal charging port on "
"suits of power armor, allowing them to draw from the user's bionic power "
-"banks. Twice as efficient as the Mk. I model. The Mk. II was designed by "
+"banks. Twice as efficient as the Mk. I model. The Mk. II was designed by "
"DoubleTech Inc., to meet the popularity of the Mk. II power armor series."
msgstr ""
@@ -16769,7 +17591,7 @@ msgstr[1] ""
#. ~ Description for Itchy Metal Thing
#: lang/json/BIONIC_ITEM_from_json.py
msgid ""
-"You can't recognise what this is supposed to be, but it's a very awkward "
+"You can't recognize what this is supposed to be, but it's a very awkward "
"thing to have in one's body."
msgstr ""
@@ -16781,7 +17603,7 @@ msgstr[1] ""
#. ~ Description for Glowy Thing
#: lang/json/BIONIC_ITEM_from_json.py
-msgid "It's a... thing? And it glows, at least it did when it was plugged in."
+msgid "It's a… thing? And it glows, at least it did when it was plugged in."
msgstr ""
#: lang/json/BIONIC_ITEM_from_json.py lang/json/bionic_from_json.py
@@ -17353,7 +18175,7 @@ msgstr[1] ""
#. ~ Description for To Serve Man
#: lang/json/BOOK_from_json.py
-msgid "It's... it's a cookbook!"
+msgid "It's… it's a cookbook!"
msgstr ""
#: lang/json/BOOK_from_json.py
@@ -17448,7 +18270,7 @@ msgstr[1] ""
msgid ""
"This sheaf of papers-dated two weeks before all this started-describes some "
"new chemical formula, and its effects on human subjects. It's stamped "
-"\"APPROVED\"..."
+"\"APPROVED\"…"
msgstr ""
#: lang/json/BOOK_from_json.py
@@ -17475,8 +18297,8 @@ msgstr[1] ""
#: lang/json/BOOK_from_json.py
msgid ""
"This sheaf of papers describes a new chemical formula in detail and supplies "
-"instructions for its use as some sort of ... crowd-control catalyst? That "
-"can't be right..."
+"instructions for its use as some sort of… crowd-control catalyst? That "
+"can't be right…"
msgstr ""
#: lang/json/BOOK_from_json.py
@@ -17490,7 +18312,7 @@ msgstr[1] ""
msgid ""
"This team logbook details several varieties of mutagenic experiments, "
"focusing on those derived from flesh contaminated with XE037. The results "
-"look promising but the procurement methods seem awfully vague..."
+"look promising but the procurement methods seem awfully vague…"
msgstr ""
#: lang/json/BOOK_from_json.py
@@ -17504,7 +18326,7 @@ msgstr[1] ""
msgid ""
"This binder details the scheduled maintenance for several plumbing systems "
"throughout the facility. However, some of the log sheets seem to be filled "
-"with...a chemical formula?"
+"with… a chemical formula?"
msgstr ""
#: lang/json/BOOK_from_json.py
@@ -17547,7 +18369,7 @@ msgstr[1] ""
#: lang/json/BOOK_from_json.py
msgid ""
"This binder of highly technical papers describes some new chemical formula, "
-"and its effects on human subjects. It's stamped \"APPROVED\"...."
+"and its effects on human subjects. It's stamped \"APPROVED\"…"
msgstr ""
#: lang/json/BOOK_from_json.py
@@ -17829,7 +18651,7 @@ msgstr[1] ""
msgid ""
"This hefty binder contains a multitude of diagrams and technical "
"specifications for various electronic materials. Some of the diagrams use "
-"symbols you've not seen before..."
+"symbols you've not seen before…"
msgstr ""
#: lang/json/BOOK_from_json.py
@@ -17895,15 +18717,15 @@ msgstr[1] ""
#. ~ Description for nearby fire
#. ~ Description for muscle
#. ~ Description for wind
+#. ~ Description for metabolism
#. ~ Description for a smoking device and a source of flame
#. ~ Description for abstract map
#. ~ Description for seeing this is a bug
#. ~ Description for weapon
#: lang/json/BOOK_from_json.py lang/json/GENERIC_from_json.py
#: lang/json/GENERIC_from_json.py
-#: lang/json/GENERIC_from_json.py lang/json/TOOL_from_json.py
-#: lang/json/TOOL_from_json.py lang/json/furniture_from_json.py
-#: lang/json/skill_from_json.py
+#: lang/json/TOOL_from_json.py
+#: lang/json/furniture_from_json.py lang/json/skill_from_json.py
msgid "seeing this is a bug"
msgid_plural "seeing this is a bugs"
msgstr[0] ""
@@ -18244,8 +19066,8 @@ msgstr[1] ""
#: lang/json/BOOK_from_json.py
msgid ""
"Everything you could ever want to know about handloading ammunition, sealed "
-"with a ...childproof cover. Apparently a liability thing, because the "
-"chapter on explosive rounds covers them in excellent detail too."
+"with a… childproof cover. Apparently a liability thing, because the chapter "
+"on explosive rounds covers them in excellent detail too."
msgstr ""
#: lang/json/BOOK_from_json.py
@@ -18741,7 +19563,7 @@ msgid ""
"This lab notebook is filled with the collective discoveries and refinements "
"of a research team dedicated to nuclear energy. You don't think you're "
"ready to start a second Cataclysm, but the general information provided "
-"might be useful..."
+"might be useful…"
msgstr ""
#: lang/json/BOOK_from_json.py
@@ -20068,6 +20890,34 @@ msgid ""
"that the author's real name is Fereidoun M. Esfandiary."
msgstr ""
+#: lang/json/BOOK_from_json.py
+msgid ""
+"This is a copy of \"The Bastiat Collection\", a large collection of essays "
+"by Frederic Bastiat."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid ""
+"This is a copy of \"Anarchy, State, and Utopia\" by Robert Nozick, one of "
+"the most influential books of modern libertarianism."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid ""
+"This is a copy of \"Socialism\" by Ludwig von Mises, a critical examination "
+"of socialism."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid ""
+"This is a copy of \"The ABC of Communism\" by Nikolai Bukharin, one of the "
+"most influential books of early Marxism-Leninism."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"Anti-Capitalist Mentality\" by Ludwig von Mises."
+msgstr ""
+
#: lang/json/BOOK_from_json.py
msgid "phone book"
msgid_plural "phone books"
@@ -20141,7 +20991,7 @@ msgstr[1] ""
#. ~ Description for corporate accounting ledger
#: lang/json/BOOK_from_json.py
-msgid "If you knew what to look for something might stand out..."
+msgid "If you knew what to look for something might stand out…"
msgstr ""
#: lang/json/BOOK_from_json.py
@@ -20382,6 +21232,105 @@ msgstr ""
msgid "This is a copy of \"The Secret Garden\" by Frances Burnett."
msgstr ""
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"Lieutenant Hornblower\" by C.S. Forester."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"Master and Commander\" by Patrick O'Brian."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"The Warden\" by Anthony Trollope."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"The Far Side of the World\" by Patrick O'Brian."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"HMS Surprise\" by Patrick O'Brian."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"Barchester Towers\" by Anthony Trollope."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"The Land Ironclads\" by H.G. Wells."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"The Great Boer War\" by Arthur Conan Doyle."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"The Crime of the Congo\" by Arthur Conan Doyle."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"The Parasite\" by Arthur Conan Doyle."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"By Stroke of Sword\" by Andrew Balfour."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"The Secret Agent\" by Joseph Conrad."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"Lord Jim\" by Joseph Conrad."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"Vanity Fair\" by William Makepeace Thackeray."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid ""
+"This is a copy of \"The Luck of Barry Lyndon\" by William Makepeace "
+"Thackeray."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"North and South\" by Elizabeth Gaskell."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"The Mayor of Casterbridge\" by Thomas Hardy."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"Wessex Tales\" by Thomas Hardy."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"Far from the Madding Crowd\" by Thomas Hardy."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"Captains Courageous\" by Rudyard Kipling."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"The Canterbury Tales\" by Geoffrey Chaucer."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid ""
+"This is a copy of \"Harold, the Last of the Saxons\" by Edward Bulwer-Lytton."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"Mr Midshipman Easy\" by Frederick Marryat."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "This is a copy of \"Peter Simple\" by Frederick Marryat."
+msgstr ""
+
#: lang/json/BOOK_from_json.py
msgid "collector's edition book"
msgid_plural "collector's edition book"
@@ -21314,11 +22263,11 @@ msgstr ""
#: lang/json/BOOK_from_json.py
msgid "Black Dragons: Swamp Ruins"
-msgid_plural "Black Dragons: Swamp Ruinss"
+msgid_plural "copies of Black Dragons: Swamp Ruins"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Black Dragons: Swamp Ruins
+#. ~ Description for {'str': 'Black Dragons: Swamp Ruins', 'str_pl': 'copies of Black Dragons: Swamp Ruins'}
#: lang/json/BOOK_from_json.py
msgid ""
"This book details black dragons: The most evil of dragons, who live in ruins "
@@ -21329,28 +22278,57 @@ msgstr ""
#: lang/json/BOOK_from_json.py
msgid "A Beginner's Guide to Alchemy"
-msgid_plural "A Beginner's Guide to Alchemys"
+msgid_plural "copies of A Beginner's Guide to Alchemy"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for A Beginner's Guide to Alchemy
+#. ~ Description for {'str': "A Beginner's Guide to Alchemy", 'str_pl': "copies of A Beginner's Guide to Alchemy"}
#: lang/json/BOOK_from_json.py
msgid "A paperback tome for the art of liquid magic, alcohol not included."
msgstr ""
#: lang/json/BOOK_from_json.py
msgid "A Soulbinder's Guide to Necromancy"
-msgid_plural "A Soulbinder's Guide to Necromancys"
+msgid_plural "copies of A Soulbinder's Guide to Necromancy"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for A Soulbinder's Guide to Necromancy
+#. ~ Description for {'str': "A Soulbinder's Guide to Necromancy", 'str_pl': "copies of A Soulbinder's Guide to Necromancy"}
#: lang/json/BOOK_from_json.py
msgid ""
"A paperback tome for the art of binding undead creatures' souls to dolls, "
"along with emulating their healing factor."
msgstr ""
+#: lang/json/BOOK_from_json.py
+msgid "Magitek Illustrated"
+msgid_plural "copies of Magitek Illustrated"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for {'str': 'Magitek Illustrated', 'str_pl': 'copies of Magitek Illustrated'}
+#: lang/json/BOOK_from_json.py
+msgid ""
+"A paperback tome for the art of combining modern technology with magic. "
+"There is a disclaimer on the back: `Cannith Industries bears no "
+"responsibility for malfunctions or accidents for any products mentioned "
+"herein`."
+msgstr ""
+
+#: lang/json/BOOK_from_json.py
+msgid "The Weapons of Asgard and Beyond"
+msgid_plural "copies of The Weapons of Asgard and Beyond"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for {'str': 'The Weapons of Asgard and Beyond', 'str_pl': 'copies of The Weapons of Asgard and Beyond'}
+#: lang/json/BOOK_from_json.py
+msgid ""
+"An ornate book which appears to be written in Norse runes. Based on the "
+"detailed illustrations, it appears to contain information about crafting "
+"numerous weapons used by various Gods."
+msgstr ""
+
#: lang/json/BOOK_from_json.py
msgid "SugarKin flyer"
msgid_plural "SugarKin flyers"
@@ -21813,7 +22791,7 @@ msgstr ""
#. ~ Description for acetylene
#: lang/json/COMESTIBLE_from_json.py
msgid ""
-"A flammable gas that explodes under pressure. Combined with oxygen, "
+"A flammable gas that explodes under pressure. Combined with oxygen, "
"acetylene makes a great welding gas."
msgstr ""
@@ -22728,6 +23706,40 @@ msgstr ""
msgid "The stomach of a large humanoid creature. It is surprisingly durable."
msgstr ""
+#: lang/json/COMESTIBLE_from_json.py
+msgid "chunk of human fat"
+msgid_plural "chunks of human fat"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for chunk of human fat
+#: lang/json/COMESTIBLE_from_json.py
+msgid "Freshly harvested from a human body."
+msgstr ""
+
+#: lang/json/COMESTIBLE_from_json.py
+msgid "human tallow"
+msgstr ""
+
+#. ~ Description for human tallow
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"A smooth white block of cleaned and rendered human fat. It will remain "
+"edible for a very long time, and can be used as an ingredient in many foods "
+"and projects."
+msgstr ""
+
+#: lang/json/COMESTIBLE_from_json.py
+msgid "human lard"
+msgstr ""
+
+#. ~ Description for human lard
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"A smooth white block of dry-rendered human fat. It will remain edible for a "
+"very long time, and can be used as an ingredient in many foods and projects."
+msgstr ""
+
#: lang/json/COMESTIBLE_from_json.py
msgid "human flesh"
msgid_plural "human fleshes"
@@ -22772,6 +23784,61 @@ msgid ""
"This is a tiny scrap of edible meat. It's not much, but it'll do in a pinch."
msgstr ""
+#: lang/json/COMESTIBLE_from_json.py
+msgid "chunk of mutant meat"
+msgid_plural "chunks of mutant meat"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for chunk of mutant meat
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"Meat from a heavily mutated animal. It has an unsettling loose and spongy "
+"texture, but smells… mostly normal. There are strange tangles and "
+"formations in it that don't appear natural at all: bits of bone and hair "
+"crusted up inside the muscle, as if trying to form another organism. Still, "
+"seems digestible at least, if you cook it and remove the worst parts."
+msgstr ""
+
+#: lang/json/COMESTIBLE_from_json.py
+msgid "scrap of mutant meat"
+msgid_plural "scraps of mutant meat"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for scrap of mutant meat
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"A tiny scrap of meat from a heavily mutated animal. It smells a bit odd, "
+"and has bits of hair and bone mixed in that seem like they grew inside the "
+"muscle itself. Still, seems digestible at least, if you cook it and remove "
+"the worst parts."
+msgstr ""
+
+#: lang/json/COMESTIBLE_from_json.py
+msgid "mutant humanoid meat"
+msgstr ""
+
+#. ~ Description for mutant humanoid meat
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"Freshly butchered from the body of a heavily mutated creature that was "
+"unsettlingly humanoid in appearance. It has odd bits of fur and other "
+"tissue lodged in it that clearly don't belong. You'd have to be crazy or "
+"starving to eat this."
+msgstr ""
+
+#: lang/json/COMESTIBLE_from_json.py
+msgid "cooked cretin"
+msgstr ""
+
+#. ~ Description for cooked cretin
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"Cooked meat from a heavily mutated humanoid. Now that the worst bits have "
+"been picked out, it's probably digestible, if not very appetizing."
+msgstr ""
+
#: lang/json/COMESTIBLE_from_json.py
msgid "butchery refuse"
msgid_plural "butchery refuse"
@@ -22804,6 +23871,24 @@ msgid_plural "cooked scraps of meat"
msgstr[0] ""
msgstr[1] ""
+#: lang/json/COMESTIBLE_from_json.py
+msgid "cooked mutant meat"
+msgstr ""
+
+#. ~ Description for cooked mutant meat
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"This is a cooked chunk of meat from a mutated animal. It has an unsettling, "
+"spongy texture, but otherwise tastes… mostly normal. Hopefully you got all "
+"the bits of hair and bone out…"
+msgstr ""
+
+#: lang/json/COMESTIBLE_from_json.py
+msgid "cooked scrap of mutant meat"
+msgid_plural "cooked scraps of mutant meat"
+msgstr[0] ""
+msgstr[1] ""
+
#: lang/json/COMESTIBLE_from_json.py
msgid "raw offal"
msgstr ""
@@ -23005,7 +24090,7 @@ msgstr[1] ""
#. ~ Description for raw brains
#: lang/json/COMESTIBLE_from_json.py
-msgid "The brain from an animal. You wouldn't want to eat this raw..."
+msgid "The brain from an animal. You wouldn't want to eat this raw…"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -23058,7 +24143,7 @@ msgstr ""
#. ~ Description for cooked sweetbread
#: lang/json/COMESTIBLE_from_json.py
-msgid "Normally a delicacy, it needs a little... something."
+msgid "Normally a delicacy, it needs a little… something."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -23109,6 +24194,78 @@ msgid ""
"projects."
msgstr ""
+#: lang/json/COMESTIBLE_from_json.py
+msgid "chunk of mutant fat"
+msgid_plural "chunks of mutant fat"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for chunk of mutant fat
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"Freshly butchered fat from a heavily mutated animal. You could eat it raw, "
+"but it is better used as an ingredient in other foods or projects."
+msgstr ""
+
+#: lang/json/COMESTIBLE_from_json.py
+msgid "mutant tallow"
+msgstr ""
+
+#. ~ Description for mutant tallow
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"A smooth white block of cleaned and rendered fat sourced from a mutant "
+"animal. It will remain edible for a very long time, and can be used as an "
+"ingredient in many foods and projects."
+msgstr ""
+
+#: lang/json/COMESTIBLE_from_json.py
+msgid "mutant lard"
+msgstr ""
+
+#. ~ Description for mutant lard
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"A smooth white block of dry-rendered fat sourced from a mutant animal. It "
+"will remain edible for a very long time, and can be used as an ingredient in "
+"many foods and projects."
+msgstr ""
+
+#: lang/json/COMESTIBLE_from_json.py
+msgid "chunk of mutant humanoid fat"
+msgid_plural "chunks of mutant humanoid fat"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for chunk of mutant humanoid fat
+#: lang/json/COMESTIBLE_from_json.py
+msgid "Freshly butchered fat from a heavily mutated humanoid."
+msgstr ""
+
+#: lang/json/COMESTIBLE_from_json.py
+msgid "mutant humanoid tallow"
+msgstr ""
+
+#. ~ Description for mutant humanoid tallow
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"A smooth white block of cleaned and rendered fat sourced from a mutant "
+"humanoid. It won't rot for a very long time, and can be used as an "
+"ingredient in many foods and projects."
+msgstr ""
+
+#: lang/json/COMESTIBLE_from_json.py
+msgid "mutant humanoid lard"
+msgstr ""
+
+#. ~ Description for mutant humanoid lard
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"A smooth white block of dry-rendered fat sourced from a mutant humanoid. It "
+"won't rot for a very long time, and can be used as an ingredient in many "
+"foods and projects."
+msgstr ""
+
#: lang/json/COMESTIBLE_from_json.py
msgid "chunk of tainted meat"
msgid_plural "chunks of tainted meat"
@@ -23278,7 +24435,7 @@ msgid ""
"covered in ribbed grooves and easily the size of your head. It's still full "
"of, er, whatever passes for blood in jabberwocks, and is heavy in your "
"hands. After everything you've seen lately, you can't help but remember old "
-"sayings about eating the hearts of your enemies..."
+"sayings about eating the hearts of your enemies…"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -23294,6 +24451,7 @@ msgid ""
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
+#: lang/json/ammunition_type_from_json.py
msgid "raw milk"
msgid_plural "raw milk"
msgstr[0] ""
@@ -23599,7 +24757,7 @@ msgstr[1] ""
#. ~ Description for chicory brew
#: lang/json/COMESTIBLE_from_json.py
msgid ""
-"Toasted, ground chicory root steeped in boiling water. This bitter brew is "
+"Toasted, ground chicory root steeped in boiling water. This bitter brew is "
"used as a coffee substitute, though it tastes nothing like coffee."
msgstr ""
@@ -24473,11 +25631,11 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid "lemonade drink mix"
-msgid_plural "servings of lemonade drink mix"
+msgid_plural "lemonade drink mix"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for lemonade drink mix
+#. ~ Description for {'str': 'lemonade drink mix', 'str_pl': 'lemonade drink mix'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"Tangy yellow powder that smells strongly of lemons. Can be mixed with water "
@@ -25199,7 +26357,7 @@ msgstr[1] ""
#. ~ Description for peanut butter candy
#: lang/json/COMESTIBLE_from_json.py
-msgid "A handful of peanut butter cups... your favorite!"
+msgid "A handful of peanut butter cups… your favorite!"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -25314,7 +26472,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A cake coated in the thickest icing you've ever seen. Someone has written "
-"guff in quotation marks on it..."
+"guff in quotation marks on it…"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -25358,7 +26516,7 @@ msgstr[1] ""
#. ~ Description for peppermint patty
#: lang/json/COMESTIBLE_from_json.py
-msgid "A handful of soft chocolate-covered peppermint patties... yum!"
+msgid "A handful of soft chocolate-covered peppermint patties… yum!"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -25960,6 +27118,17 @@ msgid ""
"filling."
msgstr ""
+#: lang/json/COMESTIBLE_from_json.py
+msgid "holy SPAM of debugging"
+msgstr ""
+
+#. ~ Description for holy SPAM of debugging
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"A mysterious lump of SPAM that contains just enough calories and vitamins to "
+"feed you for a day. For debug use only."
+msgstr ""
+
#: lang/json/COMESTIBLE_from_json.py
msgid "canned sardine"
msgstr ""
@@ -26714,9 +27883,9 @@ msgstr[1] ""
#. ~ Description for antibiotics
#: lang/json/COMESTIBLE_from_json.py
msgid ""
-"A prescription-strength antibacterial medication designed to prevent or stop "
-"the spread of infection. It's the quickest and most reliable way to cure "
-"any infections you might have. One dose lasts twelve hours."
+"A strong antibacterial medication designed to prevent or stop the spread of "
+"infection. It's the safest way to cure any infections you might have. One "
+"dose lasts twelve hours."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -27547,8 +28716,8 @@ msgstr[1] ""
#. ~ Description for antiseptic soaked rag
#: lang/json/COMESTIBLE_from_json.py
msgid ""
-"A rag soaked in antiseptic. Useful for light wounds, probaby won't help with "
-"deep bites."
+"A rag soaked in antiseptic. Useful for light wounds, probaby won't help "
+"with deep bites."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -27607,7 +28776,7 @@ msgid ""
"oily liquid that shifts from black to purple at unpredictable intervals, "
"flecked with tiny gray dots. Given the place you got it from, it's either "
"very potent, or highly experimental. Holding it, all the little aches and "
-"pains seem to fade, just for a moment..."
+"pains seem to fade, just for a moment…"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -27623,6 +28792,19 @@ msgid ""
"painkiller."
msgstr ""
+#: lang/json/COMESTIBLE_from_json.py
+msgid "destragon"
+msgstr ""
+
+#. ~ Description for destragon
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"A prescription-strength antibacterial medication designed to prevent or stop "
+"the spread of infection. It contains nearly toxic levels of antibiotics, "
+"but can treat any bacterial infections you may encounter. One dose lasts "
+"twelve hours."
+msgstr ""
+
#: lang/json/COMESTIBLE_from_json.py
msgid "MRE entree"
msgstr ""
@@ -27983,7 +29165,7 @@ msgstr ""
#. ~ Description for abstract iv mutagen flavor
#: lang/json/COMESTIBLE_from_json.py
msgid ""
-"A super-concentrated mutagen. You need a syringe to inject it... if you "
+"A super-concentrated mutagen. You need a syringe to inject it… if you "
"really want to?"
msgstr ""
@@ -27999,7 +29181,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen strongly resembling blood. You need a syringe "
-"to inject it... if you really want to?"
+"to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28010,7 +29192,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen as red as a matador's cape. You need a syringe "
-"to inject it... if you really want to?"
+"to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28021,7 +29203,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen the color of the pre-cataclysmic skies. You "
-"need a syringe to inject it... if you really want to?"
+"need a syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28032,7 +29214,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen the color of grass. You need a syringe to "
-"inject it... if you really want to?"
+"inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28043,7 +29225,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen as black as ink. You need a syringe to inject "
-"it... if you really want to?"
+"it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28054,7 +29236,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen that churns with iridescence. You need a "
-"syringe to inject it... if you really want to?"
+"syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28065,7 +29247,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen that's a striking sylvan green. You need a "
-"syringe to inject it... if you really want to?"
+"syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28076,7 +29258,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen, yellow and highly reflective. You need a "
-"syringe to inject it... if you really want to?"
+"syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28087,7 +29269,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen the color of the ocean, with white foam at the "
-"top. You need a syringe to inject it... if you really want to?"
+"top. You need a syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28098,7 +29280,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen that's a beautiful amber color. You need a "
-"syringe to inject it... if you really want to?"
+"syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28109,7 +29291,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen that shifts between various shades of green. "
-"You need a syringe to inject it... if you really want to?"
+"You need a syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28120,7 +29302,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen as white as a full moon. You need a syringe to "
-"inject it... if you really want to?"
+"inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28131,7 +29313,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen that looks like a mixture of bodily fluids. "
-"You need a syringe to inject it... if you really want to?"
+"You need a syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28142,7 +29324,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen that looks like pureed spinach. You need a "
-"syringe to inject it... if you really want to?"
+"syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28153,7 +29335,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen that seems to shift slightly whenever you look "
-"at it. You need a syringe to inject it... if you really want to?"
+"at it. You need a syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28164,7 +29346,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen that's a rather unappealing beige. You need a "
-"syringe to inject it... if you really want to?"
+"syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28175,7 +29357,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen that looks very much like the black ooze in the "
-"zombies' eyes. You need a syringe to inject it... if you really want to?"
+"zombies' eyes. You need a syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28186,7 +29368,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen with pale filaments suspended in it. You need "
-"a syringe to inject it... if you really want to?"
+"a syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28197,7 +29379,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen that seems to recoil from the light. You need "
-"a syringe to inject it... if you really want to?"
+"a syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28208,7 +29390,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen that's the color of honey, and is just as "
-"thick. You need a syringe to inject it... if you really want to?"
+"thick. You need a syringe to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28219,7 +29401,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A super-concentrated mutagen resembling liquefied metal. You need a syringe "
-"to inject it... if you really want to?"
+"to inject it… if you really want to?"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28234,7 +29416,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A thick, soupy red liquid. It looks and smells disgusting, and seems to "
-"bubble with an intelligence of its own..."
+"bubble with an intelligence of its own…"
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -28419,23 +29601,23 @@ msgid ""
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of pine nuts"
-msgid_plural "handfuls of pine nuts"
+msgid "pine nuts"
+msgid_plural "pine nuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of pine nuts
+#. ~ Description for {'str': 'pine nuts', 'str_pl': 'pine nuts'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A handful of tasty crunchy nuts from a pinecone."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of junipers"
-msgid_plural "handful of junipers"
+msgid "junipers"
+msgid_plural "junipers"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of junipers
+#. ~ Description for {'str': 'junipers', 'str_pl': 'junipers'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"Junipers, for making gin and earthy flavors. Spicy, tastes similar to "
@@ -28443,68 +29625,80 @@ msgid ""
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of shelled pistachios"
-msgid_plural "handfuls of shelled pistachios"
+msgid "shelled pistachios"
+msgid_plural "shelled pistachios"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of shelled pistachios
+#. ~ Description for {'str': 'shelled pistachios', 'str_pl': 'shelled pistachios'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A handful of nuts from a pistachio tree, their shells have been removed."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of roasted pistachios"
-msgid_plural "handfuls of roasted pistachios"
+msgid "roasted pistachios"
+msgid_plural "roasted pistachios"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of roasted pistachios
+#. ~ Description for {'str': 'roasted pistachios', 'str_pl': 'roasted pistachios'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A handful of roasted nuts from an pistachio tree."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of shelled almonds"
-msgid_plural "handfuls of shelled almonds"
+msgid "shelled almonds"
+msgid_plural "shelled almonds"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of shelled almonds
+#. ~ Description for {'str': 'shelled almonds', 'str_pl': 'shelled almonds'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A handful of nuts from an almond tree, their shells have been removed."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of roasted almonds"
-msgid_plural "handfuls of roasted almonds"
+msgid "almond pulp"
+msgid_plural "almond pulp"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for almond pulp
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"Pulp left over after making almond milk. It's gritty and incredibly bland."
+msgstr ""
+
+#: lang/json/COMESTIBLE_from_json.py
+msgid "roasted almonds"
+msgid_plural "roasted almonds"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of roasted almonds
+#. ~ Description for {'str': 'roasted almonds', 'str_pl': 'roasted almonds'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A handful of roasted nuts from an almond tree."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of cashews"
-msgid_plural "handfuls of cashews"
+msgid "cashews"
+msgid_plural "cashews"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of cashews
+#. ~ Description for {'str': 'cashews', 'str_pl': 'cashews'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A handful of salty cashews."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of shelled pecans"
-msgid_plural "handfuls of shelled pecans"
+msgid "shelled pecans"
+msgid_plural "shelled pecans"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of shelled pecans
+#. ~ Description for {'str': 'shelled pecans', 'str_pl': 'shelled pecans'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A handful of pecans which are a sub-species of hickory nuts, their shells "
@@ -28512,45 +29706,45 @@ msgid ""
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of roasted pecans"
-msgid_plural "handfuls of roasted pecans"
+msgid "roasted pecans"
+msgid_plural "roasted pecans"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of roasted pecans
+#. ~ Description for {'str': 'roasted pecans', 'str_pl': 'roasted pecans'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A handful of roasted nuts from a pecan tree."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of shelled peanuts"
-msgid_plural "handful of shelled peanuts"
+msgid "shelled peanuts"
+msgid_plural "shelled peanuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of shelled peanuts
+#. ~ Description for {'str': 'shelled peanuts', 'str_pl': 'shelled peanuts'}
#: lang/json/COMESTIBLE_from_json.py
msgid "Salty peanuts with their shells removed."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of beech nuts"
-msgid_plural "handfuls of beech nuts"
+msgid "beech nuts"
+msgid_plural "beech nuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of beech nuts
+#. ~ Description for {'str': 'beech nuts', 'str_pl': 'beech nuts'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A handful of hard pointy nuts from a beech tree."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of shelled walnuts"
-msgid_plural "handfuls of shelled walnuts"
+msgid "shelled walnuts"
+msgid_plural "shelled walnuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of shelled walnuts
+#. ~ Description for {'str': 'shelled walnuts', 'str_pl': 'shelled walnuts'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A handful of raw hard nuts from a walnut tree, their shells have been "
@@ -28558,23 +29752,23 @@ msgid ""
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of roasted walnuts"
-msgid_plural "handfuls of roasted walnuts"
+msgid "roasted walnuts"
+msgid_plural "roasted walnuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of roasted walnuts
+#. ~ Description for {'str': 'roasted walnuts', 'str_pl': 'roasted walnuts'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A handful of roasted nuts from a walnut tree."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of shelled chestnuts"
-msgid_plural "handfuls of shelled chestnuts"
+msgid "shelled chestnuts"
+msgid_plural "shelled chestnuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of shelled chestnuts
+#. ~ Description for {'str': 'shelled chestnuts', 'str_pl': 'shelled chestnuts'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A handful of raw hard nuts from a chestnut tree, their shells have been "
@@ -28582,23 +29776,23 @@ msgid ""
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of roasted chestnuts"
-msgid_plural "handfuls of roasted chestnuts"
+msgid "roasted chestnuts"
+msgid_plural "roasted chestnuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of roasted chestnuts
+#. ~ Description for {'str': 'roasted chestnuts', 'str_pl': 'roasted chestnuts'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A handful of roasted nuts from a chestnut tree."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of shelled hazelnuts"
-msgid_plural "handfuls of shelled hazelnuts"
+msgid "shelled hazelnuts"
+msgid_plural "shelled hazelnuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of shelled hazelnuts
+#. ~ Description for {'str': 'shelled hazelnuts', 'str_pl': 'shelled hazelnuts'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A handful of raw hard nuts from a hazelnut tree, their shells have been "
@@ -28606,45 +29800,45 @@ msgid ""
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of roasted edamame"
-msgid_plural "handful of roasted edamame"
+msgid "roasted edamame"
+msgid_plural "roasted edamame"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of roasted edamame
+#. ~ Description for {'str': 'roasted edamame', 'str_pl': 'roasted edamame'}
#: lang/json/COMESTIBLE_from_json.py
msgid "Roasted edamame, a heart healthy snack."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of roasted soy nuts"
-msgid_plural "handful of roasted soy nuts"
+msgid "roasted soy nuts"
+msgid_plural "roasted soy nuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of roasted soy nuts
+#. ~ Description for {'str': 'roasted soy nuts', 'str_pl': 'roasted soy nuts'}
#: lang/json/COMESTIBLE_from_json.py
msgid "Roasted soybeans, often called soy nuts."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of roasted hazelnuts"
-msgid_plural "handfuls of roasted hazelnuts"
+msgid "roasted hazelnuts"
+msgid_plural "roasted hazelnuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of roasted hazelnuts
+#. ~ Description for {'str': 'roasted hazelnuts', 'str_pl': 'roasted hazelnuts'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A handful of roasted nuts from a hazelnut tree."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of shelled hickory nuts"
-msgid_plural "handfuls of shelled hickory nuts"
+msgid "shelled hickory nuts"
+msgid_plural "shelled hickory nuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of shelled hickory nuts
+#. ~ Description for {'str': 'shelled hickory nuts', 'str_pl': 'shelled hickory nuts'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A handful of raw hard nuts from a hickory tree, their shells have been "
@@ -28652,12 +29846,12 @@ msgid ""
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of roasted hickory nuts"
-msgid_plural "handfuls of roasted hickory nuts"
+msgid "roasted hickory nuts"
+msgid_plural "roasted hickory nuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of roasted hickory nuts
+#. ~ Description for {'str': 'roasted hickory nuts', 'str_pl': 'roasted hickory nuts'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A handful of roasted nuts from a hickory tree."
msgstr ""
@@ -28672,12 +29866,12 @@ msgid "Delicious hickory nut ambrosia. A drink worthy of the gods."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of acorns"
-msgid_plural "handfuls of acorns"
+msgid "acorns"
+msgid_plural "acorns"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of acorns
+#. ~ Description for {'str': 'acorns', 'str_pl': 'acorns'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A handful of acorns, still in their shells. Squirrels like them, but "
@@ -28685,12 +29879,12 @@ msgid ""
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of roasted acorns"
-msgid_plural "handfuls of roasted acorns"
+msgid "roasted acorns"
+msgid_plural "roasted acorns"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of roasted acorns
+#. ~ Description for {'str': 'roasted acorns', 'str_pl': 'roasted acorns'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A handful roasted nuts from an oak tree."
msgstr ""
@@ -29240,11 +30434,11 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid "soylent green powder"
-msgid_plural "servings of soylent green powder"
+msgid_plural "soylent green powder"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for soylent green powder
+#. ~ Description for {'str': 'soylent green powder', 'str_pl': 'soylent green powder'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"Raw, refined protein made out of people! While quite nutritious, it is "
@@ -29286,11 +30480,11 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid "protein powder"
-msgid_plural "servings of protein powder"
+msgid_plural "protein powder"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for protein powder
+#. ~ Description for {'str': 'protein powder', 'str_pl': 'protein powder'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"Raw, refined protein. While quite nutritious, it is impossible to enjoy in "
@@ -29358,67 +30552,67 @@ msgid "Very sour citrus. Can be eaten if you really want."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of blueberries"
-msgid_plural "handful of blueberries"
+msgid "blueberries"
+msgid_plural "blueberries"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of blueberries
+#. ~ Description for {'str': 'blueberries', 'str_pl': 'blueberries'}
#: lang/json/COMESTIBLE_from_json.py
msgid "They're blue, but that doesn't mean they're sad."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of strawberries"
-msgid_plural "handful of strawberries"
+msgid "strawberries"
+msgid_plural "strawberries"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of strawberries
+#. ~ Description for {'str': 'strawberries', 'str_pl': 'strawberries'}
#: lang/json/COMESTIBLE_from_json.py
msgid "Tasty, juicy berry. Often found growing wild in fields."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of cranberries"
-msgid_plural "handful of cranberries"
+msgid "cranberries"
+msgid_plural "cranberries"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of cranberries
+#. ~ Description for {'str': 'cranberries', 'str_pl': 'cranberries'}
#: lang/json/COMESTIBLE_from_json.py
msgid "Sour red berries. Good for your health."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of raspberries"
-msgid_plural "handful of raspberries"
+msgid "raspberries"
+msgid_plural "raspberries"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of raspberries
+#. ~ Description for {'str': 'raspberries', 'str_pl': 'raspberries'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A sweet red berry."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of huckleberries"
-msgid_plural "handful of huckleberries"
+msgid "huckleberries"
+msgid_plural "huckleberries"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of huckleberries
+#. ~ Description for {'str': 'huckleberries', 'str_pl': 'huckleberries'}
#: lang/json/COMESTIBLE_from_json.py
msgid "Huckleberries, often times confused for blueberries."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of mulberries"
-msgid_plural "handful of mulberries"
+msgid "mulberries"
+msgid_plural "mulberries"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of mulberries
+#. ~ Description for {'str': 'mulberries', 'str_pl': 'mulberries'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"Mulberries, this red variety is unique to east North America and is "
@@ -29426,23 +30620,23 @@ msgid ""
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of elderberries"
-msgid_plural "handful of elderberries"
+msgid "elderberries"
+msgid_plural "elderberries"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of elderberries
+#. ~ Description for {'str': 'elderberries', 'str_pl': 'elderberries'}
#: lang/json/COMESTIBLE_from_json.py
msgid "Elderberries, toxic when eaten raw but great when cooked."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of rose hips"
-msgid_plural "handful of rose hips"
+msgid "rose hips"
+msgid_plural "rose hips"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of rose hips
+#. ~ Description for {'str': 'rose hips', 'str_pl': 'rose hips'}
#: lang/json/COMESTIBLE_from_json.py
msgid "The fruit of a pollinated rose flower."
msgstr ""
@@ -29477,12 +30671,12 @@ msgid "A citrus fruit, whose taste ranges from sour to semi-sweet."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of cherries"
-msgid_plural "handful of cherries"
+msgid "cherries"
+msgid_plural "cherries"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of cherries
+#. ~ Description for {'str': 'cherries', 'str_pl': 'cherries'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A red, sweet fruit that grows in trees."
msgstr ""
@@ -29497,12 +30691,12 @@ msgid "A handful of large, purple plums. Healthy and good for your digestion."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of grapes"
-msgid_plural "handful of grapes"
+msgid "grapes"
+msgid_plural "grapes"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of grapes
+#. ~ Description for {'str': 'grapes', 'str_pl': 'grapes'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A cluster of juicy grapes."
msgstr ""
@@ -29555,12 +30749,12 @@ msgid "A large and very sweet fruit."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of blackberries"
-msgid_plural "handful of blackberries"
+msgid "blackberries"
+msgid_plural "blackberries"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of blackberries
+#. ~ Description for {'str': 'blackberries', 'str_pl': 'blackberries'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A darker cousin of raspberry."
msgstr ""
@@ -29603,16 +30797,27 @@ msgid ""
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of apricots"
-msgid_plural "handful of apricots"
+msgid "apricots"
+msgid_plural "apricots"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of apricots
+#. ~ Description for {'str': 'apricots', 'str_pl': 'apricots'}
#: lang/json/COMESTIBLE_from_json.py
msgid "A smooth-skinned fruit, related to the peach."
msgstr ""
+#: lang/json/COMESTIBLE_from_json.py
+msgid "cholla bud"
+msgstr ""
+
+#. ~ Description for cholla bud
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"Edible bud of a cholla cactus, with spines removed; the candy of the Mojave "
+"indigenous peoples. Tastes similar to asparagus."
+msgstr ""
+
#: lang/json/COMESTIBLE_from_json.py
msgid "cactus pad"
msgstr ""
@@ -29789,11 +30994,11 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid "salsify"
-msgid_plural "handfuls of salsify"
+msgid_plural "salsify"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for salsify
+#. ~ Description for {'str': 'salsify', 'str_pl': 'salsify'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"An herb with a small purple flower. The roots are nutritious, but tough and "
@@ -29803,11 +31008,11 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
#: lang/json/COMESTIBLE_from_json.py lang/json/furniture_from_json.py
msgid "chicory"
-msgid_plural "handfuls of chicory"
+msgid_plural "chicory"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for chicory
+#. ~ Description for {'str': 'chicory', 'str_pl': 'chicory'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A modest blue flower. The flower's roots are very bitter and not meant to "
@@ -29921,12 +31126,12 @@ msgid ""
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of dandelions"
-msgid_plural "handfuls of dandelions"
+msgid "dandelions"
+msgid_plural "dandelions"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of dandelions
+#. ~ Description for {'str': 'dandelions', 'str_pl': 'dandelions'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A collection of freshly picked yellow dandelions. In their current raw "
@@ -30055,12 +31260,12 @@ msgid "Raw, uncooked lentils. They could be cooked."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
-msgid "handful of fiddleheads"
-msgid_plural "handfuls of fiddleheads"
+msgid "fiddleheads"
+msgid_plural "fiddleheads"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of fiddleheads
+#. ~ Description for {'str': 'fiddleheads', 'str_pl': 'fiddleheads'}
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A handful of immature fern fronds, still curled up like the head of a "
@@ -31919,8 +33124,8 @@ msgstr[1] ""
#. ~ Description for raw spaghetti pasta
#: lang/json/COMESTIBLE_from_json.py
msgid ""
-"A type of pasta usually used when preparing spaghetti. It could be eaten raw "
-"if you're desperate, but is much better cooked."
+"A type of pasta usually used when preparing spaghetti. It could be eaten "
+"raw if you're desperate, but is much better cooked."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -31932,7 +33137,7 @@ msgstr[1] ""
#. ~ Description for raw lasagne pasta
#: lang/json/COMESTIBLE_from_json.py
msgid ""
-"A pasta sheet used in making lasagne. It could be eaten raw if you're "
+"A pasta sheet used in making lasagne. It could be eaten raw if you're "
"desperate, but is much better cooked."
msgstr ""
@@ -32382,7 +33587,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"Strong alcohol, infused with mana and concentrated into a liquid that can "
-"stabilize spells into liquid form. You can still drink it, if you want."
+"stabilize spells into liquid form. You can still drink it, if you want."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -32395,7 +33600,7 @@ msgstr[1] ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"An organ located above the kidneys responsible for secretion of adrenaline, "
-"cortisol, and aldosterone. This one is huge, whether by nature or mutation."
+"cortisol, and aldosterone. This one is huge, whether by nature or mutation."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -32492,8 +33697,8 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A remarkably accurate effigy of an undead human, including pieces of bone "
-"and organs. Necromantic magic delays immediate rot, but it won't last "
-"forever. Piercing it with the attached needle could compel it to serve you."
+"and organs. Necromantic magic delays immediate rot, but it won't last "
+"forever. Piercing it with the attached needle could compel it to serve you."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -32504,8 +33709,8 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A remarkably accurate effigy of an undead human covered with bone, including "
-"pieces of organs. Necromantic magic delays immediate rot, but it won't last "
-"forever. Piercing it with the attached needle could compel it to serve you."
+"pieces of organs. Necromantic magic delays immediate rot, but it won't last "
+"forever. Piercing it with the attached needle could compel it to serve you."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -32516,8 +33721,8 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"A remarkably accurate effigy of an undead cougar, complete with fur, bones, "
-"and organs. Necromantic magic delays immediate rot, but it won't last "
-"forever. Piercing it with the attached needle could compel it to serve you."
+"and organs. Necromantic magic delays immediate rot, but it won't last "
+"forever. Piercing it with the attached needle could compel it to serve you."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -32528,7 +33733,7 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"This foul-smelling liquid simulates undead regeneration by accelerating your "
-"heart to dangerous levels. Drinking this in danger or at critical condition "
+"heart to dangerous levels. Drinking this in danger or at critical condition "
"may be lethal."
msgstr ""
@@ -32540,8 +33745,9 @@ msgstr ""
#: lang/json/COMESTIBLE_from_json.py
msgid ""
"This foul-smelling liquid simulates undead regeneration by accelerating your "
-"heart to dangerous levels. Drinking this in danger or at critical condition "
-"may be lethal. Improved infusion techniques lessen the strain of the process."
+"heart to dangerous levels. Drinking this in danger or at critical condition "
+"may be lethal. Improved infusion techniques lessen the strain of the "
+"process."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -32575,7 +33781,8 @@ msgstr[1] ""
#. ~ Description for hairball
#: lang/json/COMESTIBLE_from_json.py
-msgid "A big, ugly ball of animal spit and licked-off hairs. Don't swallow it."
+msgid ""
+"A big, ugly ball of animal spit and licked-off hairs. Don't swallow it."
msgstr ""
#: lang/json/COMESTIBLE_from_json.py
@@ -32592,6 +33799,16 @@ msgid ""
"properties."
msgstr ""
+#: lang/json/COMESTIBLE_from_json.py
+msgid "scream mushroom"
+msgstr ""
+
+#. ~ Description for scream mushroom
+#: lang/json/COMESTIBLE_from_json.py
+msgid ""
+"The mushrooms harvested from a dead shrieker. Could be used in potions."
+msgstr ""
+
#: lang/json/COMESTIBLE_from_json.py
msgid "resinous cord"
msgstr ""
@@ -33242,15 +34459,6 @@ msgstr[1] ""
msgid "This rice flour is useful for baking."
msgstr ""
-#: lang/json/COMESTIBLE_from_json.py
-msgid "cholla bud"
-msgstr ""
-
-#. ~ Description for cholla bud
-#: lang/json/COMESTIBLE_from_json.py
-msgid "The candy of the Mojave Indigenous peoples."
-msgstr ""
-
#: lang/json/COMESTIBLE_from_json.py
msgid "revival serum"
msgstr ""
@@ -33538,7 +34746,7 @@ msgstr[1] ""
#. ~ Description for paper carton
#: lang/json/CONTAINER_from_json.py
msgid ""
-"A half gallon carton constructed of a paper, aluminum and plastic laminate. "
+"A half gallon carton constructed of a paper, aluminum and plastic laminate. "
"It has a threaded cap for easy resealing."
msgstr ""
@@ -33551,7 +34759,7 @@ msgstr[1] ""
#. ~ Description for opened paper carton
#: lang/json/CONTAINER_from_json.py
msgid ""
-"A half gallon carton constructed of a paper, aluminum and plastic laminate. "
+"A half gallon carton constructed of a paper, aluminum and plastic laminate. "
"This one is open and its contents will spoil."
msgstr ""
@@ -34065,7 +35273,7 @@ msgstr[1] ""
#. ~ Description for survival kit box
#: lang/json/CONTAINER_from_json.py
msgid ""
-"An aluminum box that used to contain a small survival kit. Can hold 1 liter "
+"An aluminum box that used to contain a small survival kit. Can hold 1 liter "
"of liquid."
msgstr ""
@@ -34165,6 +35373,22 @@ msgid ""
"for maximum yield. It can be crafted with various seeds to plant them."
msgstr ""
+#: lang/json/CONTAINER_from_json.py
+msgid "endless flask"
+msgid_plural "endless flasks"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for endless flask.
+#: lang/json/CONTAINER_from_json.py
+msgid "You open the flask and discover it full of sweet, sweet, whiskey!"
+msgstr ""
+
+#. ~ Use action not_ready_msg for endless flask.
+#: lang/json/CONTAINER_from_json.py
+msgid "The flask isn't done refilling yet."
+msgstr ""
+
#: lang/json/CONTAINER_from_json.py
msgid "aluminum foil wrap"
msgid_plural "aluminum foil wraps"
@@ -34596,8 +35820,8 @@ msgstr[1] ""
#. ~ Description for rhodonite
#: lang/json/GENERIC_from_json.py
msgid ""
-"A chunk of rhodonite. It has manganese dioxide covering and going through it "
-"in veins, which can be obtained using a chisel."
+"A chunk of rhodonite. It has manganese dioxide covering and going through "
+"it in veins, which can be obtained using a chisel."
msgstr ""
#: lang/json/GENERIC_from_json.py
@@ -34609,7 +35833,7 @@ msgstr[1] ""
#. ~ Description for zincite
#: lang/json/GENERIC_from_json.py
msgid ""
-"A chunk of zincite. Could be refined into zinc oxide, then into zinc by "
+"A chunk of zincite. Could be refined into zinc oxide, then into zinc by "
"reduction with a source of carbon."
msgstr ""
@@ -34625,89 +35849,89 @@ msgid "A root from a hickory tree. It has an earthy smell."
msgstr ""
#: lang/json/GENERIC_from_json.py
-msgid "handful of hickory nuts"
-msgid_plural "handfuls of hickory nuts"
+msgid "hickory nuts"
+msgid_plural "hickory nuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of hickory nuts
+#. ~ Description for {'str': 'hickory nuts', 'str_pl': 'hickory nuts'}
#: lang/json/GENERIC_from_json.py
msgid "A handful of hard nuts from a hickory tree, still in their shell."
msgstr ""
#: lang/json/GENERIC_from_json.py
-msgid "handful of pecans"
-msgid_plural "handfuls of pecans"
+msgid "pecans"
+msgid_plural "pecans"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of pecans
+#. ~ Description for {'str': 'pecans', 'str_pl': 'pecans'}
#: lang/json/GENERIC_from_json.py
msgid "A handful of hard nuts from a pecan tree, still in their shell."
msgstr ""
#: lang/json/GENERIC_from_json.py
-msgid "handful of pistachios"
-msgid_plural "handfuls of pistachios"
+msgid "pistachios"
+msgid_plural "pistachios"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of pistachios
+#. ~ Description for {'str': 'pistachios', 'str_pl': 'pistachios'}
#: lang/json/GENERIC_from_json.py
msgid "A handful of hard nuts from a pistachio tree, still in their shell."
msgstr ""
#: lang/json/GENERIC_from_json.py
-msgid "handful of almonds"
-msgid_plural "handfuls of almonds"
+msgid "almonds"
+msgid_plural "almonds"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of almonds
+#. ~ Description for {'str': 'almonds', 'str_pl': 'almonds'}
#: lang/json/GENERIC_from_json.py
msgid "A handful of hard nuts from a almond tree, still in their shell."
msgstr ""
#: lang/json/GENERIC_from_json.py
-msgid "handful of peanuts"
-msgid_plural "handfuls of peanuts"
+msgid "peanuts"
+msgid_plural "peanuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of peanuts
+#. ~ Description for {'str': 'peanuts', 'str_pl': 'peanuts'}
#: lang/json/GENERIC_from_json.py
msgid "A handful of hard nuts from a peanut bush, still in their shell."
msgstr ""
#: lang/json/GENERIC_from_json.py
-msgid "handful of hazelnuts"
-msgid_plural "handfuls of hazelnuts"
+msgid "hazelnuts"
+msgid_plural "hazelnuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of hazelnuts
+#. ~ Description for {'str': 'hazelnuts', 'str_pl': 'hazelnuts'}
#: lang/json/GENERIC_from_json.py
msgid "A handful of hard nuts from a hazelnut tree, still in their shell."
msgstr ""
#: lang/json/GENERIC_from_json.py
-msgid "handful of chestnuts"
-msgid_plural "handfuls of chestnuts"
+msgid "chestnuts"
+msgid_plural "chestnuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of chestnuts
+#. ~ Description for {'str': 'chestnuts', 'str_pl': 'chestnuts'}
#: lang/json/GENERIC_from_json.py
msgid "A handful of hard nuts from a chestnut tree, still in their shell."
msgstr ""
#: lang/json/GENERIC_from_json.py
-msgid "handful of walnuts"
-msgid_plural "handfuls of walnuts"
+msgid "walnuts"
+msgid_plural "walnuts"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of walnuts
+#. ~ Description for {'str': 'walnuts', 'str_pl': 'walnuts'}
#: lang/json/GENERIC_from_json.py
msgid "A handful of hard nuts from a walnut tree, still in their shell."
msgstr ""
@@ -34848,7 +36072,7 @@ msgstr ""
#. ~ Description for corpse
#: lang/json/GENERIC_from_json.py
msgid ""
-"A dead body with a frightful grimace. He appears to have been horribly "
+"A dead body with a frightful grimace. He appears to have been horribly "
"mangled prior to his death."
msgstr ""
@@ -34872,7 +36096,7 @@ msgstr ""
#. ~ Description for corpse
#: lang/json/GENERIC_from_json.py
msgid ""
-"The upper half of a dead body, as if torn apart with enormous force. Some "
+"The upper half of a dead body, as if torn apart with enormous force. Some "
"organs are hanging out."
msgstr ""
@@ -34973,6 +36197,12 @@ msgstr ""
msgid "wind"
msgstr ""
+#: lang/json/GENERIC_from_json.py
+msgid "metabolism"
+msgid_plural "metabolisms"
+msgstr[0] ""
+msgstr[1] ""
+
#: lang/json/GENERIC_from_json.py
msgid "a smoking device and a source of flame"
msgstr ""
@@ -34990,6 +36220,31 @@ msgid ""
"kept together, pretty useless now though."
msgstr ""
+#: lang/json/GENERIC_from_json.py
+msgid "INCIDENT REPORT: IMMERSION-27A"
+msgid_plural "INCIDENT REPORT: IMMERSION-27As"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for INCIDENT REPORT: IMMERSION-27A
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A white piece of paper, with the logo of XEDRA printed on its upper left "
+"corner. It seems to be an internal report of some kind."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "MATERIAL: T-SUBSTRATE"
+msgid_plural "MATERIAL: T-SUBSTRATEs"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "HAADF MICROGRAPH: T-SUBSTRATE"
+msgid_plural "HAADF MICROGRAPH: T-SUBSTRATEs"
+msgstr[0] ""
+msgstr[1] ""
+
#: lang/json/GENERIC_from_json.py
msgid "foodplace loyalty card"
msgid_plural "foodplace loyalty cards"
@@ -35000,7 +36255,7 @@ msgstr[1] ""
#: lang/json/GENERIC_from_json.py
msgid ""
"A bright pink loyalty card, all the points are stamped. This would "
-"definitely prove your fidelity to Foodplace, if it still meant anything..."
+"definitely prove your fidelity to Foodplace, if it still meant anything…"
msgstr ""
#: lang/json/GENERIC_from_json.py
@@ -35140,8 +36395,8 @@ msgstr[1] ""
#. ~ Description for set of 100 ceramic disk
#: lang/json/GENERIC_from_json.py
msgid ""
-"A set of small slightly elongated disks, made of high-grade ceramic. They "
-"remind you of scales"
+"A set of small slightly elongated disks, made of high-grade ceramic. They "
+"remind you of scales."
msgstr ""
#: lang/json/GENERIC_from_json.py
@@ -35194,6 +36449,18 @@ msgid ""
"Felt patches, bundled tightly together for storage. Disassemble to unpack."
msgstr ""
+#: lang/json/GENERIC_from_json.py
+msgid "t-substrate sample"
+msgid_plural "t-substrate samples"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for t-substrate sample
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"An acrylic cube cast around a small black crystal. It's tepid to the touch."
+msgstr ""
+
#: lang/json/GENERIC_from_json.py
msgid "biollante bud"
msgid_plural "biollante buds"
@@ -35428,6 +36695,18 @@ msgid ""
"constructing tougher walls and such."
msgstr ""
+#: lang/json/GENERIC_from_json.py lang/json/terrain_from_json.py
+#: lang/json/terrain_from_json.py
+msgid "small railroad track"
+msgid_plural "small railroad tracks"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for small railroad track
+#: lang/json/GENERIC_from_json.py
+msgid "A length of track, made from some planks and rails."
+msgstr ""
+
#: lang/json/GENERIC_from_json.py lang/json/terrain_from_json.py
msgid "concrete"
msgid_plural "concrete"
@@ -35557,7 +36836,7 @@ msgstr[1] ""
#. ~ Description for television
#: lang/json/GENERIC_from_json.py
-msgid "A large cathode ray tube television, full of delicious electronics."
+msgid "A large LCD television, full of delicious electronics."
msgstr ""
#: lang/json/GENERIC_from_json.py
@@ -35976,6 +37255,19 @@ msgid ""
"communications equipment."
msgstr ""
+#: lang/json/GENERIC_from_json.py
+msgid "large LCD screen"
+msgid_plural "large LCD screens"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for large LCD screen
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A large backlit screen, used for displaying images. Useful in some "
+"electronics recipes."
+msgstr ""
+
#: lang/json/GENERIC_from_json.py
msgid "small LCD screen"
msgid_plural "small LCD screens"
@@ -36367,7 +37659,7 @@ msgstr[1] ""
#: lang/json/GENERIC_from_json.py
msgid ""
"This memory card appears to be related to 'XEDRA', and is certainly "
-"encrypted. Looks * Interesting *, though..."
+"encrypted. Looks *Interesting*, though…"
msgstr ""
#: lang/json/GENERIC_from_json.py
@@ -36441,12 +37733,12 @@ msgid ""
msgstr ""
#: lang/json/GENERIC_from_json.py
-msgid "handful of chamomile flowers"
-msgid_plural "handfuls of chamomile flowers"
+msgid "chamomile flowers"
+msgid_plural "chamomile flowers"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for handful of chamomile flowers
+#. ~ Description for {'str': 'chamomile flowers', 'str_pl': 'chamomile flowers'}
#: lang/json/GENERIC_from_json.py
msgid ""
"White chamomile flowers, used as a herbal remedy since the ancient times."
@@ -36719,12 +38011,14 @@ msgstr ""
#. ~ Use action menu_text for cigar.
#. ~ Use action menu_text for cigarette.
#. ~ Use action menu_text for joint.
+#. ~ Use action menu_text for spooky jack o'lantern.
+#. ~ Use action menu_text for hobo stove (lit).
#. ~ Use action menu_text for candle.
#. ~ Use action menu_text for refillable lighter.
#. ~ Use action menu_text for torch.
-#. ~ Use action menu_text for hobo stove (lit).
#. ~ Use action menu_text for ember carrier (lit).
#. ~ Use action menu_text for Louisville Slaughterer.
+#. ~ Use action menu_text for everburning torch.
#: lang/json/GENERIC_from_json.py
#: lang/json/GENERIC_from_json.py lang/json/TOOL_from_json.py
#: lang/json/TOOL_from_json.py
@@ -36776,7 +38070,7 @@ msgid ""
"What was once a wonderfully addictive tube of dried tobacco leaf is now just "
"a smelly piece of trash. What a tragedy!\n"
"The leftover tobacco in a few of these could probably be used to roll "
-"another cigarette. If you're willing to go that far..."
+"another cigarette. If you're willing to go that far…"
msgstr ""
#. ~ Use action msg for joint.
@@ -36821,11 +38115,11 @@ msgstr ""
#: lang/json/GENERIC_from_json.py
msgid "raw tobacco"
-msgid_plural "handfuls of raw tobacco"
+msgid_plural "raw tobacco"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for raw tobacco
+#. ~ Description for {'str': 'raw tobacco', 'str_pl': 'raw tobacco'}
#: lang/json/GENERIC_from_json.py
msgid ""
"Various parts of tobacco plant, full of nicotine. They need to be dried to "
@@ -36874,12 +38168,6 @@ msgid ""
"panel, if you can find one."
msgstr ""
-#: lang/json/GENERIC_from_json.py
-msgid "neoprene sheet"
-msgid_plural "neoprene sheets"
-msgstr[0] ""
-msgstr[1] ""
-
#. ~ Description for neoprene sheet
#: lang/json/GENERIC_from_json.py
msgid ""
@@ -37347,13 +38635,6 @@ msgid ""
"chopping things and for use as a hammer."
msgstr ""
-#. ~ Description for rock
-#: lang/json/GENERIC_from_json.py
-msgid ""
-"A rock the size of a baseball. Makes a decent melee weapon, and is also "
-"good for throwing at enemies."
-msgstr ""
-
#: lang/json/GENERIC_from_json.py
msgid "sharp rock"
msgid_plural "sharp rocks"
@@ -37887,7 +39168,7 @@ msgstr[1] ""
#: lang/json/GENERIC_from_json.py
msgid ""
"A large, heavy-duty leaf spring. Probably from some car or truck, and looks "
-"an awful lot like a bow. You can barely bend it..."
+"an awful lot like a bow. You can barely bend it…"
msgstr ""
#: lang/json/GENERIC_from_json.py
@@ -38546,7 +39827,7 @@ msgstr[1] ""
#: lang/json/GENERIC_from_json.py
msgid ""
"This is a Curie-G coffeemaker, by CuppaTech. It famously uses a radioactive "
-"generator to heat water for coffee. Normally the water is heated using "
+"generator to heat water for coffee. Normally the water is heated using "
"energy stored in a capacitor, and makes ordinary coffee. However, as a "
"special feature, water from the RTG containment area can be used, giving the "
"coffee a very special kick. The Curie-G is illegal in most countries."
@@ -38561,7 +39842,9 @@ msgstr[1] ""
#. ~ Use action menu_text for atomic lamp.
#. ~ Use action menu_text for atomic reading light.
#. ~ Use action menu_text for magical reading light.
+#. ~ Use action menu_text for atomic headlamp.
#: lang/json/GENERIC_from_json.py
+#: lang/json/GENERIC_from_json.py lang/json/TOOL_ARMOR_from_json.py
msgid "Close cover"
msgstr ""
@@ -38589,7 +39872,9 @@ msgstr[1] ""
#. ~ Use action menu_text for atomic lamp (covered).
#. ~ Use action menu_text for atomic reading light (covered).
#. ~ Use action menu_text for magical reading light (covered).
+#. ~ Use action menu_text for atomic headlamp (covered).
#: lang/json/GENERIC_from_json.py
+#: lang/json/GENERIC_from_json.py lang/json/TOOL_ARMOR_from_json.py
msgid "Open cover"
msgstr ""
@@ -38873,7 +40158,7 @@ msgstr[1] ""
#: lang/json/GENERIC_from_json.py
msgid ""
"A folding grappling hook attached to a stout 30-foot long piece of "
-"lightweight cord. Useful for keeping yourself safe from falls. Can be used "
+"lightweight cord. Useful for keeping yourself safe from falls. Can be used "
"in place of a long rope for butchering, in a pinch."
msgstr ""
@@ -39704,9 +40989,7 @@ msgstr[1] ""
#. ~ Description for Beautiful Springtime
#: lang/json/GENERIC_from_json.py
-msgid ""
-"A complete guide to Wing Chun Kung-fu. Includes a section on butterfly "
-"swords and the use of long poles at the end."
+msgid "A complete guide to Wing Chun Kung-fu."
msgstr ""
#: lang/json/GENERIC_from_json.py lang/json/martial_art_from_json.py
@@ -39720,7 +41003,7 @@ msgstr[1] ""
#: lang/json/GENERIC_from_json.py
msgid ""
"A completely translated medieval guide teaching various techniques with "
-"polearms, there is a chapter about the many variations of common polearms... "
+"polearms, there is a chapter about the many variations of common polearms… "
"there are even pictures!"
msgstr ""
@@ -40758,6 +42041,20 @@ msgstr[1] ""
msgid "This is a slip of paper signed by the issuer."
msgstr ""
+#: lang/json/GENERIC_from_json.py
+msgid "icon"
+msgid_plural "icons"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for icon
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"This is a small picture, about the same size as an ID card, symbolizing a "
+"religious figure. On the back, there is a text that faintly reads 'New "
+"England Church Community'."
+msgstr ""
+
#: lang/json/GENERIC_from_json.py
msgid "generic silverware"
msgid_plural "generic silverwares"
@@ -41103,7 +42400,7 @@ msgstr[1] ""
#. ~ Description for fork
#: lang/json/GENERIC_from_json.py
msgid ""
-"A fork, if you stab something with it you eat it right away. Wait... "
+"A fork, if you stab something with it you eat it right away. Wait… "
"nevermind."
msgstr ""
@@ -42249,7 +43546,7 @@ msgid ""
"\n"
"Whosoever holds this hammer,\n"
"If he be worthy,\n"
-"Shall possess the power to...\n"
+"Shall possess the power to…\n"
"CRUSH!'"
msgstr ""
@@ -42689,7 +43986,7 @@ msgstr ""
#: lang/json/GENERIC_from_json.py
msgid ""
"This is a thin thrusting sword, a sort of predecessor to the rapier. It "
-"requires a larger baldric or scabbard, compared to smaller swords. It seems "
+"requires a larger baldric or scabbard, compared to smaller swords. It seems "
"a bit too bendy."
msgstr ""
@@ -42787,15 +44084,15 @@ msgid ""
msgstr ""
#: lang/json/GENERIC_from_json.py
-msgid "fencing epee"
-msgid_plural "fencing epees"
+msgid "fencing épée"
+msgid_plural "fencing épées"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for fencing epee
+#. ~ Description for fencing épée
#: lang/json/GENERIC_from_json.py
msgid ""
-"A weapon used for fencing, the most noble of all sports. The epee is the "
+"A weapon used for fencing, the most noble of all sports. The épée is the "
"heaviest and stiffest of the fencing weapons, and therefore perhaps the most "
"useful."
msgstr ""
@@ -42810,7 +44107,52 @@ msgstr[1] ""
#: lang/json/GENERIC_from_json.py
msgid ""
"A weapon used for fencing, the most noble of all sports. The fencing saber "
-"is marginally shorter than the foil and epee, but no less effective."
+"is marginally shorter than the foil and épée, but no less effective."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "sharpened foil"
+msgid_plural "sharpened foils"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for sharpened foil
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"This once mostly harmless fencing foil has had its electrical plunger "
+"assembly removed and has been crudely sharpened to a point. Though it still "
+"lacks a cutting edge, it is now somewhat more lethal, yet still familiar to "
+"the practiced fencer."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "sharpened épée"
+msgid_plural "sharpened épées"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for sharpened épée
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"This once mostly harmless fencing épée has had its electrical plunger "
+"assembly removed and has been crudely sharpened to a point. Though it still "
+"lacks a cutting edge, it is now considerably more lethal, yet still familiar "
+"to the practiced fencer."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "sharpened saber"
+msgid_plural "sharpened sabers"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for sharpened saber
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"This once mostly harmless fencing saber has had its rounded tip snapped off "
+"and has been crudely sharpened to a point. Though it still lacks a cutting "
+"edge, it is now considerably more lethal, yet still familiar to the "
+"practiced fencer."
msgstr ""
#: lang/json/GENERIC_from_json.py
@@ -43026,6 +44368,17 @@ msgid ""
"A metal cylinder with a small lens inside intended to be installed on a door."
msgstr ""
+#: lang/json/GENERIC_from_json.py
+msgid "mesh screen"
+msgid_plural "mesh screens"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for mesh screen
+#: lang/json/GENERIC_from_json.py
+msgid "A roll of fine mesh screen for bug barriers on porches."
+msgstr ""
+
#: lang/json/GENERIC_from_json.py
msgid "pipe"
msgid_plural "pipes"
@@ -43075,7 +44428,7 @@ msgstr[1] ""
msgid ""
"A small aluminum ingot, standardized for further processing. Light but "
"durable, this could be cast into various shapes for construction or ground "
-"down to a powder, for more... high-profile applications."
+"down to a powder, for more… high-profile applications."
msgstr ""
#: lang/json/GENERIC_from_json.py
@@ -43101,12 +44454,12 @@ msgid "This is a single, or twin, sized mattress."
msgstr ""
#: lang/json/GENERIC_from_json.py lang/json/furniture_from_json.py
-msgid "down_mattress"
-msgid_plural "down_mattresses"
+msgid "down mattress"
+msgid_plural "down mattresses"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for down_mattress
+#. ~ Description for down mattress
#: lang/json/GENERIC_from_json.py
msgid "This is a single, or twin, sized down filled mattress."
msgstr ""
@@ -43400,6 +44753,46 @@ msgid ""
"can also serve as an improvised stabbing weapon, but will break quickly."
msgstr ""
+#: lang/json/GENERIC_from_json.py
+msgid "frame loom"
+msgid_plural "frame looms"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for frame loom
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"This is a rather bulky and primitive wooden frame which can be used to weave "
+"cloth sheets. It is very slow, though."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "wooden shed stick"
+msgid_plural "wooden shed sticks"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for wooden shed stick
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"This is a short thin flat wooden stick, used as a tool while weaving cloth "
+"with a frame loom."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "tailoring pattern set"
+msgid_plural "tailoring pattern sets"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for tailoring pattern set
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"This is a large set of tailoring patterns made from paper. They're useful "
+"for making any kind of cloth or leather items from scratch, but are "
+"necessary for more advanced projects."
+msgstr ""
+
#: lang/json/GENERIC_from_json.py
msgid "vehicle alternator"
msgid_plural "vehicle alternators"
@@ -43727,6 +45120,20 @@ msgid ""
"have some sort of maintenance mode."
msgstr ""
+#: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py
+msgid "turret control unit"
+msgid_plural "turret control units"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for turret control unit
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A set of motor, camera, and various electronic modules banded together to "
+"allow for tracking targets, friend-or-foe identification, and firing the "
+"connected turret in full automatic mode."
+msgstr ""
+
#: lang/json/GENERIC_from_json.py
msgid "massive engine block"
msgid_plural "massive engine blocks"
@@ -44746,6 +46153,19 @@ msgstr[1] ""
msgid "A very small washing machine designed for use in vehicles."
msgstr ""
+#: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py
+msgid "programmable autopilot"
+msgid_plural "programmable autopilots"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for programmable autopilot
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A computer system hooked up to the steering and engine of a vehicle to allow "
+"it to follow simple paths."
+msgstr ""
+
#: lang/json/GENERIC_from_json.py
msgid "mountable autoclave"
msgid_plural "mountable autoclaves"
@@ -44815,7 +46235,7 @@ msgstr[1] ""
#. ~ Description for medium wheel hub assembly
#: lang/json/GENERIC_from_json.py
msgid ""
-"A metal assembly that allows bolting a wheel on a car. Fit for a car wheel."
+"A metal assembly that allows bolting a wheel on a car. Fit for a car wheel."
msgstr ""
#: lang/json/GENERIC_from_json.py lang/json/vehicle_part_from_json.py
@@ -44827,8 +46247,8 @@ msgstr[1] ""
#. ~ Description for heavy wheel hub assembly
#: lang/json/GENERIC_from_json.py
msgid ""
-"A heavy metal assembly that allows bolting a wheel on a car. Fit for a large "
-"car wheel."
+"A heavy metal assembly that allows bolting a wheel on a car. Fit for a "
+"large car wheel."
msgstr ""
#: lang/json/GENERIC_from_json.py
@@ -45970,6 +47390,27 @@ msgid ""
"art."
msgstr ""
+#: lang/json/GENERIC_from_json.py
+msgid "The Iron Whip"
+msgid_plural "The Iron Whips"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for The Iron Whip.
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"You loop the whip in your hand and it coils back into a belt form in an "
+"instant."
+msgstr ""
+
+#. ~ Description for The Iron Whip
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A long braided flexible steel bullwhip that narrows into a sharp blade at "
+"the end. Easily capable of slicing and dicing anything that comes at you. "
+"It transforms back into a belt."
+msgstr ""
+
#: lang/json/GENERIC_from_json.py
msgid "cudgel +1"
msgid_plural "cudgel +1s"
@@ -46474,6 +47915,358 @@ msgid_plural "dao +2s"
msgstr[0] ""
msgstr[1] ""
+#: lang/json/GENERIC_from_json.py
+msgid "Biomancer spear"
+msgid_plural "Biomancer spears"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Biomancer spear
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A grotesque bone spearhead on a stout wooden pole. There is a Biomancer "
+"rune embedded at the base of the head."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "Technomancer toolbar"
+msgid_plural "Technomancer toolbars"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Technomancer toolbar
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"This staff incorporates a sturdy cresent wrench on top of a prybar and a "
+"hammer on the other in a convienent package. There is a Technomancer rune "
+"embedded in the hammerhead."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "Magus staff"
+msgid_plural "Magus staves"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for {'str': 'Magus staff', 'str_pl': 'Magus staves'}
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A quarterstaff with runes carved into it and two glass jars, heat-tempered "
+"and infused with mana for durability, to act as mana receptacles. There are "
+"two Magi runes embedded at the tips."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "Kelvinist flamberge"
+msgid_plural "Kelvinist flamberges"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Kelvinist flamberge
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A sword with an undulating blade, reminiscent of a flame. There is a "
+"Kelvinist rune embedded in the pommel."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "Stormshaper axe"
+msgid_plural "Stormshaper axes"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Stormshaper axe
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A forged copper axe with silver trimmings and a wooden handle. There is a "
+"Stormshaper rune embedded in the eye."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "Animist athame"
+msgid_plural "Animist athames"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Animist athame
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A steel ritual knife used by Animists to draw blood for summoning. Their "
+"school rune is embedded in the crossguard."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "springstaff(baton)"
+msgid_plural "springstaves(baton)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action menu_text for {'str': 'springstaff(baton)', 'str_pl': 'springstaves(baton)'}.
+#: lang/json/GENERIC_from_json.py
+msgid "Extend to staff"
+msgstr ""
+
+#. ~ Use action msg for {'str': 'springstaff(baton)', 'str_pl': 'springstaves(baton)'}.
+#: lang/json/GENERIC_from_json.py
+msgid "You snap open your springstaff into staff mode."
+msgstr ""
+
+#. ~ Description for {'str': 'springstaff(baton)', 'str_pl': 'springstaves(baton)'}
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"This versatile weapon uses Technomancy-enhanced springs to keep the staff "
+"tips retracted while in baton configuration. Activate to extend."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "springstaff(staff)"
+msgid_plural "springstaves(staff)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action menu_text for {'str': 'springstaff(staff)', 'str_pl': 'springstaves(staff)'}.
+#: lang/json/GENERIC_from_json.py
+msgid "Retract to baton"
+msgstr ""
+
+#. ~ Use action msg for {'str': 'springstaff(staff)', 'str_pl': 'springstaves(staff)'}.
+#: lang/json/GENERIC_from_json.py
+msgid "You collapse your springstaff into baton mode."
+msgstr ""
+
+#. ~ Description for {'str': 'springstaff(staff)', 'str_pl': 'springstaves(staff)'}
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"This versatile weapon uses Technomancy-enhanced springs to keep the staff "
+"tips from retracting while in staff configuration. Activate to extend."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "magic token"
+msgid_plural "magic tokens"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "longsword token"
+msgid_plural "longsword tokens"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for longsword token.
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"You say the command word engraved on the token, and it rapidly grows and "
+"morphs into a shiny pristine longsword!"
+msgstr ""
+
+#. ~ Description for longsword token
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A large silver coin that, when activated by uttering the word on the back, "
+"turns into the item pictured on the front, in this case a longsword."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "arming sword token"
+msgid_plural "arming sword tokens"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for arming sword token.
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"You say the command word engraved on the token, and it rapidly grows and "
+"morphs into a shiny pristine arming sword!"
+msgstr ""
+
+#. ~ Description for arming sword token
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A large silver coin that, when activated by uttering the word on the back, "
+"turns into the item pictured on the front, in this case an arming sword."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "broadsword token"
+msgid_plural "broadsword tokens"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for broadsword token.
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"You say the command word engraved on the token, and it rapidly grows and "
+"morphs into a shiny pristine broadsword!"
+msgstr ""
+
+#. ~ Description for broadsword token
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A large silver coin that, when activated by uttering the word on the back, "
+"turns into the item pictured on the front, in this case a broadsword."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "battleaxe token"
+msgid_plural "battleaxe tokens"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for battleaxe token.
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"You say the command word engraved on the token, and it rapidly grows and "
+"morphs into a shiny pristine battle axe!"
+msgstr ""
+
+#. ~ Description for battleaxe token
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A large silver coin that, when activated by uttering the word on the back, "
+"turns into the item pictured on the front, in this case a battle axe."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "pike token"
+msgid_plural "pike tokens"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for pike token.
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"You say the command word engraved on the token, and it rapidly grows and "
+"morphs into a shiny pristine pike!"
+msgstr ""
+
+#. ~ Description for pike token
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A large silver coin that, when activated by uttering the word on the back, "
+"turns into the item pictured on the front, in this case a pike."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "mace token"
+msgid_plural "mace tokens"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for mace token.
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"You say the command word engraved on the token, and it rapidly grows and "
+"morphs into a shiny pristine mace!"
+msgstr ""
+
+#. ~ Description for mace token
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A large silver coin that, when activated by uttering the word on the back, "
+"turns into the item pictured on the front, in this case a mace."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "quarterstaff token"
+msgid_plural "quarterstaff tokens"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for quarterstaff token.
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"You say the command word engraved on the token, and it rapidly grows and "
+"morphs into a pristine quarterstaff!"
+msgstr ""
+
+#. ~ Description for quarterstaff token
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A large silver coin that, when activated by uttering the word on the back, "
+"turns into the item pictured on the front, in this case a quarterstaff."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "hammer token"
+msgid_plural "hammer tokens"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for hammer token.
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"You say the command word engraved on the token, and it rapidly grows and "
+"morphs into a shiny pristine hammer!"
+msgstr ""
+
+#. ~ Description for hammer token
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A large silver coin that, when activated by uttering the word on the back, "
+"turns into the item pictured on the front, in this case a hammer."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "screwdriver set token"
+msgid_plural "screwdriver set tokens"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for screwdriver set token.
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"You say the command word engraved on the token, and it rapidly grows and "
+"morphs into a shiny pristine screwdriver set!"
+msgstr ""
+
+#. ~ Description for screwdriver set token
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A large silver coin that, when activated by uttering the word on the back, "
+"turns into the item pictured on the front, in this case a screwdriver."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "toolbox token"
+msgid_plural "toolbox tokens"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for toolbox token.
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"You say the command word engraved on the token, and it rapidly grows and "
+"morphs into a shiny pristine toolbox!"
+msgstr ""
+
+#. ~ Description for toolbox token
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A large silver coin that, when activated by uttering the word on the back, "
+"turns into the item pictured on the front, in this case a toolbox."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "crowbar token"
+msgid_plural "crowbar tokens"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for crowbar token.
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"You say the command word engraved on the token, and it rapidly grows and "
+"morphs into a shiny pristine crowbar!"
+msgstr ""
+
+#. ~ Description for crowbar token
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A large silver coin that, when activated by uttering the word on the back, "
+"turns into the item pictured on the front, in this case a crowbar."
+msgstr ""
+
#: lang/json/GENERIC_from_json.py
msgid "cestus +1"
msgid_plural "cestus +1s"
@@ -46525,6 +48318,20 @@ msgid ""
"to land astoundingly powerful blows."
msgstr ""
+#: lang/json/GENERIC_from_json.py
+msgid "Earthshaper cestus"
+msgid_plural "Earthshaper cesti"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for {'str': 'Earthshaper cestus', 'str_pl': 'Earthshaper cesti'}
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A stone battle glove with carved runes encasing the hand, protecting it "
+"while increasing striking power. There is an Earthshaper rune embedded in "
+"the palm."
+msgstr ""
+
#: lang/json/GENERIC_from_json.py
msgid "stone shell"
msgid_plural "stone shells"
@@ -46607,6 +48414,19 @@ msgid ""
"prized for their beauty and power."
msgstr ""
+#: lang/json/GENERIC_from_json.py
+msgid "stirge proboscis"
+msgid_plural "stirge proboscises"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for stirge proboscis
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"A long sucking apparatus harvested from stirge corpse. Makes a poor melee "
+"weapon."
+msgstr ""
+
#: lang/json/GENERIC_from_json.py
msgid "black dragon scale"
msgid_plural "black dragon scales"
@@ -46633,100 +48453,6 @@ msgid ""
"scales could make a suit of armor as hard as steel and half as heavy."
msgstr ""
-#: lang/json/GENERIC_from_json.py
-msgid "Biomancer spear"
-msgid_plural "Biomancer spears"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for Biomancer spear
-#: lang/json/GENERIC_from_json.py
-msgid ""
-"A grotesque bone spearhead on a stout wooden pole. There is a Biomancer rune "
-"embedded at the base of the head."
-msgstr ""
-
-#: lang/json/GENERIC_from_json.py
-msgid "Technomancer toolbar"
-msgid_plural "Technomancer toolbars"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for Technomancer toolbar
-#: lang/json/GENERIC_from_json.py
-msgid ""
-"This staff incorporates a sturdy cresent wrench on top of a prybar and a "
-"hammer on the other in a convienent package. There is a Technomancer rune "
-"embedded in the hammerhead."
-msgstr ""
-
-#: lang/json/GENERIC_from_json.py
-msgid "Magus staff"
-msgid_plural "Magus staves"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for Magus staff
-#: lang/json/GENERIC_from_json.py
-msgid ""
-"A quarterstaff with runes carved into it and two glass jars, heat-tempered "
-"and infused with mana for durability, to act as mana receptacles. There are "
-"two Magi runes embedded at the tips."
-msgstr ""
-
-#: lang/json/GENERIC_from_json.py
-msgid "Earthshaper cestus"
-msgid_plural "Earthshaper cesti"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for Earthshaper cestus
-#: lang/json/GENERIC_from_json.py
-msgid ""
-"A stone battle glove with carved runes encasing the hand, protecting it "
-"while increasing striking power. There is an Earthshaper rune embedded in "
-"the palm."
-msgstr ""
-
-#: lang/json/GENERIC_from_json.py
-msgid "Kelvinist flamberge"
-msgid_plural "Kelvinist flamberges"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for Kelvinist flamberge
-#: lang/json/GENERIC_from_json.py
-msgid ""
-"A sword with an undulating blade, reminiscent of a flame. There is a "
-"Kelvinist rune embedded in the pommel."
-msgstr ""
-
-#: lang/json/GENERIC_from_json.py
-msgid "Stormshaper axe"
-msgid_plural "Stormshaper axes"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for Stormshaper axe
-#: lang/json/GENERIC_from_json.py
-msgid ""
-"A forged copper axe with silver trimmings and a wooden handle. There is a "
-"Stormshaper rune embedded in the eye."
-msgstr ""
-
-#: lang/json/GENERIC_from_json.py
-msgid "Animist athame"
-msgid_plural "Animist athames"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Description for Animist athame
-#: lang/json/GENERIC_from_json.py
-msgid ""
-"A steel ritual knife used by Animists to draw blood for summoning. Their "
-"school rune is embedded in the crossguard."
-msgstr ""
-
#: lang/json/GENERIC_from_json.py
msgid "lesser staff of the magi"
msgid_plural "lesser staves of the magi"
@@ -46801,6 +48527,56 @@ msgstr[1] ""
msgid "This is a wicked spear/halberd hybrid entirely created of bone."
msgstr ""
+#. ~ Description for Mjölnir
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"Mjölnir, the legendary hammer of Thor. It is rumored to be able to level "
+"mountains with a single blow. You feel the power of Asgard coursing through "
+"the hammer."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "Gungnir"
+msgid_plural "Gungnirs"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Gungnir
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"Gungnir, the spear of Odin. It is rumored to be the perfect spear, "
+"perfectly hitting any target regardless of the wielder's strength or skill. "
+"If feels like Odin's protecting you."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "Gram"
+msgid_plural "Grams"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Gram
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"Gram, the sword of Sigurd. It is rumored to be the sword that slayed the "
+"legendary dragon, Fafnir. Once said to have cleaved Regin's anvil in half, "
+"the edge is impeccable."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py lang/json/TOOL_from_json.py
+msgid "Laevateinn"
+msgid_plural "Laevateinns"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Laevateinn
+#: lang/json/GENERIC_from_json.py
+msgid ""
+"Laevateinn, the staff of Loki. Said to have been plucked from the gates of "
+"Hel by Loki. Imbued with a mysterious magic, the magic of the trickster god "
+"himself."
+msgstr ""
+
#: lang/json/GENERIC_from_json.py
msgid "Spell Scroll"
msgid_plural "Spell Scrolls"
@@ -47046,7 +48822,7 @@ msgstr[1] ""
#. ~ Description for Blinding Flash
#: lang/json/GENERIC_from_json.py lang/json/SPELL_from_json.py
msgid ""
-"Blind enemies for a short time with a sudden, dazzling light. Higher levels "
+"Blind enemies for a short time with a sudden, dazzling light. Higher levels "
"deal slightly higher damage."
msgstr ""
@@ -47061,7 +48837,7 @@ msgstr[1] ""
#: lang/json/GENERIC_from_json.py lang/json/SPELL_from_json.py
msgid ""
"A mass of spectral hands emerge from the ground, slowing everything in "
-"range. Higher levels allow a bigger AoE, and longer effect."
+"range. Higher levels allow a bigger AoE, and longer effect."
msgstr ""
#: lang/json/GENERIC_from_json.py
@@ -47825,8 +49601,34 @@ msgstr[1] ""
#. ~ Description for Scroll of Purification Seed
#: lang/json/GENERIC_from_json.py
msgid ""
-"You summon a gift of the earth which will purify water. Greater levels yield "
-"greater numbers of seeds."
+"You summon a gift of the earth which will purify water. Greater levels "
+"yield greater numbers of seeds."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "Scroll of X-ray Vision"
+msgid_plural "Scroll of X-ray Visions"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Scroll of X-ray Vision
+#. ~ Description for X-ray Vision
+#: lang/json/GENERIC_from_json.py lang/json/SPELL_from_json.py
+msgid ""
+"You fire a cone of X-rays that magically allow you to see that area for a "
+"short time."
+msgstr ""
+
+#: lang/json/GENERIC_from_json.py
+msgid "Scroll of Clairvoyance"
+msgid_plural "Scroll of Clairvoyances"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Scroll of Clairvoyance
+#. ~ Description for Clairvoyance
+#: lang/json/GENERIC_from_json.py lang/json/SPELL_from_json.py
+msgid "You close your eyes and the earth surrenders its secrets to you."
msgstr ""
#: lang/json/GENERIC_from_json.py
@@ -47844,6 +49646,17 @@ msgid ""
"rock and lava everywhere."
msgstr ""
+#: lang/json/GENERIC_from_json.py
+msgid "Scroll of Acid Resistance"
+msgid_plural "Scroll of Acid Resistances"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Scroll of Acid Resistance
+#: lang/json/GENERIC_from_json.py
+msgid "This spell creates an invisible aura to protect you from acid."
+msgstr ""
+
#: lang/json/GENERIC_from_json.py
msgid "A Technomancer's Guide to Debugging C:DDA"
msgid_plural "A Technomancer's Guide to Debugging C:DDAs"
@@ -48725,12 +50538,6 @@ msgid ""
"ornaments."
msgstr ""
-#: lang/json/GENERIC_from_json.py
-msgid "Gungnir"
-msgid_plural "Gungnirs"
-msgstr[0] ""
-msgstr[1] ""
-
#. ~ Description for Gungnir
#: lang/json/GENERIC_from_json.py
msgid ""
@@ -49668,6 +51475,12 @@ msgstr ""
msgid "SPARE PARTS"
msgstr ""
+#. ~ Crafting recipes subcategory of 'OTHER' category
+#: lang/json/ITEM_CATEGORY_from_json.py
+#: lang/json/recipe_category_from_json.py
+msgid "CONTAINERS"
+msgstr ""
+
#: lang/json/ITEM_CATEGORY_from_json.py
msgid "ARTIFACTS"
msgstr ""
@@ -49679,6 +51492,307 @@ msgstr ""
msgid "ARMOR"
msgstr ""
+#: lang/json/ITEM_CATEGORY_from_json.py
+msgid "ITEMS WORN"
+msgstr ""
+
+#: lang/json/ITEM_CATEGORY_from_json.py
+msgid "WEAPON HELD"
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Unsorted"
+msgstr ""
+
+#. ~ Description for Loot: Unsorted
+#: lang/json/LOOT_ZONE_from_json.py
+msgid ""
+"Place to drop unsorted loot. You can use \"sort out loot\" zone-action to "
+"sort items inside. It can overlap with Loot zones of different types."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Food"
+msgstr ""
+
+#. ~ Description for Loot: Food
+#: lang/json/LOOT_ZONE_from_json.py
+msgid ""
+"Destination for comestibles. If more specific food zone is not defined, all "
+"food is moved here."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: P.Food"
+msgstr ""
+
+#. ~ Description for Loot: P.Food
+#: lang/json/LOOT_ZONE_from_json.py
+msgid ""
+"Destination for perishable comestibles. Does include perishable drinks if "
+"such zone is not specified."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Drink"
+msgstr ""
+
+#. ~ Description for Loot: Drink
+#: lang/json/LOOT_ZONE_from_json.py
+msgid ""
+"Destination for drinks. Does include perishable drinks if such zone is not "
+"specified."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: P.Drink"
+msgstr ""
+
+#. ~ Description for Loot: P.Drink
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for perishable drinks."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Containers"
+msgstr ""
+
+#. ~ Description for Loot: Containers
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for empty containers."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Guns"
+msgstr ""
+
+#. ~ Description for Loot: Guns
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for guns, bows and similar wearpons."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Magazines"
+msgstr ""
+
+#. ~ Description for Loot: Magazines
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for gun magazines."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Ammo"
+msgstr ""
+
+#. ~ Description for Loot: Ammo
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for ammo."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Weapons"
+msgstr ""
+
+#. ~ Description for Loot: Weapons
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for melee weapons."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Tools"
+msgstr ""
+
+#. ~ Description for Loot: Tools
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for tools."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Clothing"
+msgstr ""
+
+#. ~ Description for Loot: Clothing
+#: lang/json/LOOT_ZONE_from_json.py
+msgid ""
+"Destination for clothing. Does include filthy clothing if such zone is not "
+"specified."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: F.Clothing"
+msgstr ""
+
+#. ~ Description for Loot: F.Clothing
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for filthy clothing."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Drugs"
+msgstr ""
+
+#. ~ Description for Loot: Drugs
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for drugs and other medical items."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Books"
+msgstr ""
+
+#. ~ Description for Loot: Books
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for books and magazines."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Mods"
+msgstr ""
+
+#. ~ Description for Loot: Mods
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for firearm modifications and similar items."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Mutagens"
+msgstr ""
+
+#. ~ Description for Loot: Mutagens
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for mutagens, serums, and purifiers."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Bionics"
+msgstr ""
+
+#. ~ Description for Loot: Bionics
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for Compact Bionics Modules, a.k.a. CBMS."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: V.Parts"
+msgstr ""
+
+#. ~ Description for Loot: V.Parts
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for vehicle parts."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Other"
+msgstr ""
+
+#. ~ Description for Loot: Other
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for other miscellaneous items."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Fuel"
+msgstr ""
+
+#. ~ Description for Loot: Fuel
+#: lang/json/LOOT_ZONE_from_json.py
+msgid ""
+"Destination for gasoline, diesel, lamp oil and other substances used as a "
+"fuel."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Seeds"
+msgstr ""
+
+#. ~ Description for Loot: Seeds
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for seeds, stems and similar items."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Chemical"
+msgstr ""
+
+#. ~ Description for Loot: Chemical
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for chemicals."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: S.Parts"
+msgstr ""
+
+#. ~ Description for Loot: S.Parts
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for spare parts."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Artifacts"
+msgstr ""
+
+#. ~ Description for Loot: Artifacts
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for artifacts"
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Corpses"
+msgstr ""
+
+#. ~ Description for Loot: Corpses
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for corpses"
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Armor"
+msgstr ""
+
+#. ~ Description for Loot: Armor
+#: lang/json/LOOT_ZONE_from_json.py
+msgid ""
+"Destination for armor. Does include filthy armor if such zone is not "
+"specified."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: F.Armor"
+msgstr ""
+
+#. ~ Description for Loot: F.Armor
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for filthy armor."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Wood"
+msgstr ""
+
+#. ~ Description for Loot: Wood
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for firewood and items that can be used as such."
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Custom"
+msgstr ""
+
+#. ~ Description for Loot: Custom
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Destination for loot with a custom filter that you can modify"
+msgstr ""
+
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Loot: Ignore"
+msgstr ""
+
+#. ~ Description for Loot: Ignore
+#: lang/json/LOOT_ZONE_from_json.py
+msgid "Items inside of this zone are ignored by \"sort out loot\" zone-action."
+msgstr ""
+
#: lang/json/MAGAZINE_from_json.py
msgid "ultra-light battery"
msgid_plural "ultra-light batteries"
@@ -49900,7 +52014,7 @@ msgstr[1] ""
#: lang/json/MAGAZINE_from_json.py
msgid ""
"This is a heavy battery cell, universally compatible with all kinds of "
-"industrial-grade equipment and large tools. The battery's chemistry means "
+"industrial-grade equipment and large tools. The battery's chemistry means "
"that it has a very high capacity, but cannot be recharged."
msgstr ""
@@ -50256,7 +52370,7 @@ msgstr ""
#. ~ Description for H&K G3 drum magazine
#: lang/json/MAGAZINE_from_json.py
-msgid "An 50-round drum magazine for the H&K G3 rifle."
+msgid "A 50-round drum magazine for the H&K G3 rifle."
msgstr ""
#: lang/json/MAGAZINE_from_json.py
@@ -50297,7 +52411,7 @@ msgstr ""
#. ~ Description for FN SCAR-H drum magazine
#: lang/json/MAGAZINE_from_json.py
-msgid "An 50-round drum magazine for the FN SCAR-H rifle."
+msgid "A 50-round drum magazine for the FN SCAR-H rifle."
msgstr ""
#: lang/json/MAGAZINE_from_json.py
@@ -50392,15 +52506,6 @@ msgstr ""
msgid "A 14 round double stack box magazine for the SIG Sauer P320."
msgstr ""
-#: lang/json/MAGAZINE_from_json.py
-msgid "Taurus .38 magazine"
-msgstr ""
-
-#. ~ Description for Taurus .38 magazine
-#: lang/json/MAGAZINE_from_json.py
-msgid "A compact steel box magazine for use with the Taurus Pro .38 pistol."
-msgstr ""
-
#: lang/json/MAGAZINE_from_json.py
msgid ".38/.357 7-round speedloader"
msgstr ""
@@ -50474,6 +52579,15 @@ msgstr ""
msgid "A 10-round steel box magazine for use with the Hi-Point CF-380."
msgstr ""
+#: lang/json/MAGAZINE_from_json.py
+msgid "Taurus Spectrum magazine"
+msgstr ""
+
+#. ~ Description for Taurus Spectrum magazine
+#: lang/json/MAGAZINE_from_json.py
+msgid "A compact, 6-round steel box magazine for use with the Taurus Spectrum."
+msgstr ""
+
#: lang/json/MAGAZINE_from_json.py
msgid "M1911 .38 Super magazine"
msgstr ""
@@ -51488,17 +53602,6 @@ msgid ""
"is marked with several faded and now unreadable symbols."
msgstr ""
-#: lang/json/MAGAZINE_from_json.py
-msgid "oxygen cylinder"
-msgstr ""
-
-#. ~ Description for oxygen cylinder
-#: lang/json/MAGAZINE_from_json.py
-msgid ""
-"A large steel cylinder used for storing pressurized gas. It is marked with a "
-"faded, but legible O2 symbol."
-msgstr ""
-
#: lang/json/MAGAZINE_from_json.py lang/json/vehicle_part_from_json.py
msgid "car battery"
msgid_plural "car batteries"
@@ -52188,6 +54291,15 @@ msgid ""
"hit in combat, infections."
msgstr ""
+#: lang/json/MOD_INFO_from_json.py
+msgid "Fuji's Military Profession Pack"
+msgstr ""
+
+#. ~ Description for Fuji's Military Profession Pack
+#: lang/json/MOD_INFO_from_json.py
+msgid "Numerous military themed professions"
+msgstr ""
+
#: lang/json/MOD_INFO_from_json.py
msgid "Fuji's More Buildings"
msgstr ""
@@ -52938,11 +55050,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "goose"
-msgid_plural "gooses"
+msgid_plural "geese"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for goose
+#. ~ Description for {'str': 'goose', 'str_pl': 'geese'}
#: lang/json/MONSTER_from_json.py
msgid "A Canadian goose, a common waterfowl that regrets leaving Canada."
msgstr ""
@@ -53225,60 +55337,60 @@ msgstr[1] ""
#: lang/json/MONSTER_from_json.py
msgid ""
"Many times as large as a normal manhack, this flying quadcopter drone "
-"appears to have a mininuke inside. If this is targeting you... Run."
+"appears to have a mininuke inside. If this is targeting you… Run."
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "tiny fish"
-msgid_plural "tiny fishs"
+msgid_plural "tiny fish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for tiny fish
+#. ~ Description for {'str': 'tiny fish', 'str_pl': 'tiny fish'}
#: lang/json/MONSTER_from_json.py
msgid "A tiny fish."
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "small fish"
-msgid_plural "small fishs"
+msgid_plural "small fish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for small fish
+#. ~ Description for {'str': 'small fish', 'str_pl': 'small fish'}
#: lang/json/MONSTER_from_json.py
msgid "A small fish."
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "medium fish"
-msgid_plural "medium fishs"
+msgid_plural "medium fish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for medium fish
+#. ~ Description for {'str': 'medium fish', 'str_pl': 'medium fish'}
#: lang/json/MONSTER_from_json.py
msgid "A medium fish."
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "large fish"
-msgid_plural "large fishs"
+msgid_plural "large fish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for large fish
+#. ~ Description for {'str': 'large fish', 'str_pl': 'large fish'}
#: lang/json/MONSTER_from_json.py
msgid "A large fish."
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "huge fish"
-msgid_plural "huge fishs"
+msgid_plural "huge fish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for huge fish
+#. ~ Description for {'str': 'huge fish', 'str_pl': 'huge fish'}
#: lang/json/MONSTER_from_json.py
msgid "A huge fish."
msgstr ""
@@ -53408,11 +55520,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "whitefish"
-msgid_plural "whitefishs"
+msgid_plural "whitefish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for whitefish
+#. ~ Description for {'str': 'whitefish', 'str_pl': 'whitefish'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A whitefish, closely related to salmon. One can assume they are just as "
@@ -53421,22 +55533,22 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "largemouth bass"
-msgid_plural "largemouth basss"
+msgid_plural "largemouth bass"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for largemouth bass
+#. ~ Description for {'str': 'largemouth bass', 'str_pl': 'largemouth bass'}
#: lang/json/MONSTER_from_json.py
msgid "A Largemouth Bass. Very popular with sports fishermen."
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "smallmouth bass"
-msgid_plural "smallmouth basss"
+msgid_plural "smallmouth bass"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for smallmouth bass
+#. ~ Description for {'str': 'smallmouth bass', 'str_pl': 'smallmouth bass'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A Smallmouth Bass. Being intolerant to pollution in the water, smallmouth "
@@ -53445,11 +55557,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "striped bass"
-msgid_plural "striped basss"
+msgid_plural "striped bass"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for striped bass
+#. ~ Description for {'str': 'striped bass', 'str_pl': 'striped bass'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A Striped Bass. Mostly a salt water fish, they migrate to fresher water to "
@@ -53458,11 +55570,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "white bass"
-msgid_plural "white basss"
+msgid_plural "white bass"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for white bass
+#. ~ Description for {'str': 'white bass', 'str_pl': 'white bass'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A White Bass. Common to the region, a slab-sided and spiny-rayed little "
@@ -53471,11 +55583,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "perch"
-msgid_plural "perchs"
+msgid_plural "perches"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for perch
+#. ~ Description for {'str': 'perch', 'str_pl': 'perches'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A small spritely Perch. A very bony fish, still got some tasty meat on it "
@@ -53495,22 +55607,22 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "sunfish"
-msgid_plural "sunfishs"
+msgid_plural "sunfish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for sunfish
+#. ~ Description for {'str': 'sunfish', 'str_pl': 'sunfish'}
#: lang/json/MONSTER_from_json.py
msgid "A Sunfish. A small fish related to bass or bluegill."
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "pumpkinseed sunfish"
-msgid_plural "pumpkinseed sunfishs"
+msgid_plural "pumpkinseed sunfish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for pumpkinseed sunfish
+#. ~ Description for {'str': 'pumpkinseed sunfish', 'str_pl': 'pumpkinseed sunfish'}
#: lang/json/MONSTER_from_json.py
msgid "A Pumpkinseed Sunfish. A small fish related to bass or bluegill."
msgstr ""
@@ -53529,55 +55641,55 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "redbreast sunfish"
-msgid_plural "redbreast sunfishs"
+msgid_plural "redbreast sunfish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for redbreast sunfish
+#. ~ Description for {'str': 'redbreast sunfish', 'str_pl': 'redbreast sunfish'}
#: lang/json/MONSTER_from_json.py
msgid "A Redbreast Sunfish. A small fish related to bass or bluegill."
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "green sunfish"
-msgid_plural "green sunfishs"
+msgid_plural "green sunfish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for green sunfish
+#. ~ Description for {'str': 'green sunfish', 'str_pl': 'green sunfish'}
#: lang/json/MONSTER_from_json.py
msgid "A Green Sunfish. A small fish related to bass or bluegill."
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "longear sunfish"
-msgid_plural "longear sunfishs"
+msgid_plural "longear sunfish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for longear sunfish
+#. ~ Description for {'str': 'longear sunfish', 'str_pl': 'longear sunfish'}
#: lang/json/MONSTER_from_json.py
msgid "A Longear Sunfish. A small fish related to bass or bluegill."
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "redear sunfish"
-msgid_plural "redear sunfishs"
+msgid_plural "redear sunfish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for redear sunfish
+#. ~ Description for {'str': 'redear sunfish', 'str_pl': 'redear sunfish'}
#: lang/json/MONSTER_from_json.py
msgid "A Redear Sunfish. A small fish related to bass or bluegill."
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "rock bass"
-msgid_plural "rock basss"
+msgid_plural "rock bass"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for rock bass
+#. ~ Description for {'str': 'rock bass', 'str_pl': 'rock bass'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A Rock Bass. Related to sunfish, this tiny fish has a camoflauge-like "
@@ -53586,11 +55698,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "calico bass"
-msgid_plural "calico basss"
+msgid_plural "calico bass"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for calico bass
+#. ~ Description for {'str': 'calico bass', 'str_pl': 'calico bass'}
#: lang/json/MONSTER_from_json.py
msgid "A Calico Bass. A medium-sized fish also known as a 'Crappie'."
msgstr ""
@@ -53621,22 +55733,22 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "channel catfish"
-msgid_plural "channel catfishs"
+msgid_plural "channel catfish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for channel catfish
+#. ~ Description for {'str': 'channel catfish', 'str_pl': 'channel catfish'}
#: lang/json/MONSTER_from_json.py
msgid "A Channel Catfish, they have a forked tail and long whiskers."
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "white catfish"
-msgid_plural "white catfishs"
+msgid_plural "white catfish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for white catfish
+#. ~ Description for {'str': 'white catfish', 'str_pl': 'white catfish'}
#: lang/json/MONSTER_from_json.py
msgid "A White Catfish, a small whiskered fish with a broad head."
msgstr ""
@@ -53729,11 +55841,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "fallfish"
-msgid_plural "fallfishs"
+msgid_plural "fallfish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for fallfish
+#. ~ Description for {'str': 'fallfish', 'str_pl': 'fallfish'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A Fallfish. These fish are related to gar but without the huge teeth, skin "
@@ -53751,20 +55863,20 @@ msgstr[1] ""
msgid ""
"These things were once considered pests not worth eating, then some "
"marketing genius started selling them to people as a delicacy and they took "
-"off in popularity... and price."
+"off in popularity… and price."
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "crayfish"
-msgid_plural "crayfishs"
+msgid_plural "crayfish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for crayfish
+#. ~ Description for {'str': 'crayfish', 'str_pl': 'crayfish'}
#: lang/json/MONSTER_from_json.py
msgid ""
"If you could get ahold of a bunch more of these, a hefty pot of boiling "
-"water, and some spicy seasonings..."
+"water, and some spicy seasonings…"
msgstr ""
#: lang/json/MONSTER_from_json.py
@@ -53773,7 +55885,7 @@ msgid_plural "Blinkies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Blinky
+#. ~ Description for {'str': 'Blinky', 'str_pl': 'Blinkies'}
#: lang/json/MONSTER_from_json.py
msgid "A strange three-eyed fish."
msgstr ""
@@ -53880,11 +55992,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "giant cockroach"
-msgid_plural "giant cockroachs"
+msgid_plural "giant cockroaches"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for giant cockroach
+#. ~ Description for {'str': 'giant cockroach', 'str_pl': 'giant cockroaches'}
#: lang/json/MONSTER_from_json.py
msgid "A mutant cockroach the size of a small dog."
msgstr ""
@@ -53902,11 +56014,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "pregnant giant cockroach"
-msgid_plural "pregnant giant cockroachs"
+msgid_plural "pregnant giant cockroaches"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for pregnant giant cockroach
+#. ~ Description for {'str': 'pregnant giant cockroach', 'str_pl': 'pregnant giant cockroaches'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A mutant cockroach the size of a small dog. Its abdomen is heavily swollen."
@@ -53944,7 +56056,7 @@ msgid_plural "giant dragonflies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for giant dragonfly
+#. ~ Description for {'str': 'giant dragonfly', 'str_pl': 'giant dragonflies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A ferocious mutant dragonfly as big as a cat, darting through the air with a "
@@ -53957,7 +56069,7 @@ msgid_plural "giant flies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for giant fly
+#. ~ Description for {'str': 'giant fly', 'str_pl': 'giant flies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A tremendous housefly the size of a small dog, predictably accompanied by a "
@@ -54137,11 +56249,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "dermatik larva"
-msgid_plural "dermatik larvas"
+msgid_plural "dermatik larvae"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for dermatik larva
+#. ~ Description for {'str': 'dermatik larva', 'str_pl': 'dermatik larvae'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A fat white grub as big as a squirrel, with a pair of large, spadelike "
@@ -54176,11 +56288,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "acidic ant larva"
-msgid_plural "acidic ant larvas"
+msgid_plural "acidic ant larvae"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for acidic ant larva
+#. ~ Description for {'str': 'acidic ant larva', 'str_pl': 'acidic ant larvae'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A squirming yellow grub that seems to be oozing liquid from both ends of its "
@@ -54230,11 +56342,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "ant larva"
-msgid_plural "ant larvas"
+msgid_plural "ant larvae"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for ant larva
+#. ~ Description for {'str': 'ant larva', 'str_pl': 'ant larvae'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A pulsating sausage of glistening white flesh, the size of a large cat. On "
@@ -54492,11 +56604,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Labrador puppy"
-msgid_plural "Labrador puppys"
+msgid_plural "Labrador puppies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Labrador puppy
+#. ~ Description for {'str': 'Labrador puppy', 'str_pl': 'Labrador puppies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"An adorable, defenseless Labrador puppy. Much safer to tame than an adult "
@@ -54518,11 +56630,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "bulldog puppy"
-msgid_plural "bulldog puppys"
+msgid_plural "bulldog puppies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for bulldog puppy
+#. ~ Description for {'str': 'bulldog puppy', 'str_pl': 'bulldog puppies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"An adorable, defenseless American bulldog puppy. Much safer to tame than an "
@@ -54531,11 +56643,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "pit bull mix"
-msgid_plural "pit bull mixs"
+msgid_plural "pit bull mixes"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for pit bull mix
+#. ~ Description for {'str': 'pit bull mix', 'str_pl': 'pit bull mixes'}
#: lang/json/MONSTER_from_json.py
msgid ""
"The oft-misunderstood pit bull is not actually a single breed but a label "
@@ -54545,11 +56657,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "pit bull puppy"
-msgid_plural "pit bull puppys"
+msgid_plural "pit bull puppies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for pit bull puppy
+#. ~ Description for {'str': 'pit bull puppy', 'str_pl': 'pit bull puppies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"An adorable, defenseless pit bull puppy. Much safer to tame than an adult "
@@ -54571,11 +56683,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "beagle puppy"
-msgid_plural "beagle puppys"
+msgid_plural "beagle puppies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for beagle puppy
+#. ~ Description for {'str': 'beagle puppy', 'str_pl': 'beagle puppies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"An adorable, defenseless beagle puppy. Much safer to tame than an adult dog."
@@ -54597,11 +56709,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "border collie puppy"
-msgid_plural "border collie puppys"
+msgid_plural "border collie puppies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for border collie puppy
+#. ~ Description for {'str': 'border collie puppy', 'str_pl': 'border collie puppies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"An adorable, defenseless Border Collie puppy. Much safer to tame than an "
@@ -54623,11 +56735,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "boxer puppy"
-msgid_plural "boxer puppys"
+msgid_plural "boxer puppies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for boxer puppy
+#. ~ Description for {'str': 'boxer puppy', 'str_pl': 'boxer puppies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"An adorable, defenseless boxer puppy. Much safer to tame than an adult dog."
@@ -54648,11 +56760,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Chihuahua puppy"
-msgid_plural "Chihuahua puppys"
+msgid_plural "Chihuahua puppies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Chihuahua puppy
+#. ~ Description for {'str': 'Chihuahua puppy', 'str_pl': 'Chihuahua puppies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"An adorable, defenseless Chihuahua puppy. Much safer to tame than an adult "
@@ -54675,11 +56787,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "dachshund puppy"
-msgid_plural "dachshund puppys"
+msgid_plural "dachshund puppies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for dachshund puppy
+#. ~ Description for {'str': 'dachshund puppy', 'str_pl': 'dachshund puppies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"An adorable, defenseless dachshund puppy. Much safer to tame than an adult "
@@ -54701,11 +56813,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "German shepherd puppy"
-msgid_plural "German shepherd puppys"
+msgid_plural "German shepherd puppies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for German shepherd puppy
+#. ~ Description for {'str': 'German shepherd puppy', 'str_pl': 'German shepherd puppies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"An adorable, defenseless German shepherd puppy. Much safer to tame than an "
@@ -54714,11 +56826,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Great Pyrenees"
-msgid_plural "Great Pyreneess"
+msgid_plural "Great Pyrenees"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Great Pyrenees
+#. ~ Description for {'str': 'Great Pyrenees', 'str_pl': 'Great Pyrenees'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A large and powerful breed, the Great Pyrenees has a beautiful, thick white "
@@ -54728,11 +56840,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Great Pyrenees puppy"
-msgid_plural "Great Pyrenees puppys"
+msgid_plural "Great Pyrenees puppies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Great Pyrenees puppy
+#. ~ Description for {'str': 'Great Pyrenees puppy', 'str_pl': 'Great Pyrenees puppies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"An adorable, defenseless Great Pyrenees puppy. Much safer to tame than an "
@@ -54755,11 +56867,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "rottweiler puppy"
-msgid_plural "rottweiler puppys"
+msgid_plural "rottweiler puppies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for rottweiler puppy
+#. ~ Description for {'str': 'rottweiler puppy', 'str_pl': 'rottweiler puppies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"An adorable, defenseless Rottweiler puppy. Much safer to tame than an adult "
@@ -54781,11 +56893,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "cattle dog puppy"
-msgid_plural "cattle dog puppys"
+msgid_plural "cattle dog puppies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for cattle dog puppy
+#. ~ Description for {'str': 'cattle dog puppy', 'str_pl': 'cattle dog puppies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"An adorable, defenseless Australian cattle dog puppy. Much safer to tame "
@@ -54798,14 +56910,14 @@ msgid_plural "foxes"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for fox
+#. ~ Description for {'str': 'fox', 'str_pl': 'foxes'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A small omnivorous canine with an almost cat-like manner. It is a solitary "
"hunter, and one of the only canids able to climb trees."
msgstr ""
-#. ~ Description for fox
+#. ~ Description for {'str': 'fox', 'str_pl': 'foxes'}
#: lang/json/MONSTER_from_json.py
msgid ""
"The red fox, an omnivorous canine and largest of the true foxes, it is a "
@@ -54882,11 +56994,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "moose"
-msgid_plural "mooses"
+msgid_plural "moose"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for moose
+#. ~ Description for {'str': 'moose', 'str_pl': 'moose'}
#: lang/json/MONSTER_from_json.py
msgid ""
"The Eastern moose, the largest living species of deer. While they aren't "
@@ -55023,7 +57135,7 @@ msgstr[1] ""
#: lang/json/MONSTER_from_json.py
msgid ""
"A worm-tailed rodent with long whiskers and beady eyes. The way it squeaks "
-"makes it sound... hungry."
+"makes it sound… hungry."
msgstr ""
#: lang/json/MONSTER_from_json.py
@@ -55046,7 +57158,7 @@ msgid_plural "sheep"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for sheep
+#. ~ Description for {'str': 'sheep', 'str_pl': 'sheep'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A timid, hooved grazing mammal, and one of the first animals ever "
@@ -55096,7 +57208,7 @@ msgid_plural "wolves"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for wolf
+#. ~ Description for {'str': 'wolf', 'str_pl': 'wolves'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A cunning pack predator, once extinct in the New England area, the wolf was "
@@ -55358,7 +57470,7 @@ msgid_plural "blank bodies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for blank body
+#. ~ Description for {'str': 'blank body', 'str_pl': 'blank bodies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"This is some form of unnatural changeling creature; its appearance is a "
@@ -55484,8 +57596,21 @@ msgstr[1] ""
#: lang/json/MONSTER_from_json.py
msgid ""
"This boomer, normally swollen and ready to burst, has strengthened and "
-"solidified. The bile dribbling from its mouth also appears to have "
-"changed..."
+"solidified. The bile dribbling from its mouth also appears to have changed…"
+msgstr ""
+
+#: lang/json/MONSTER_from_json.py
+msgid "dissoluted devourer"
+msgid_plural "dissoluted devourers"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for dissoluted devourer
+#: lang/json/MONSTER_from_json.py
+msgid ""
+"Human bodies fused together into a colossus with heads and limbs sticking "
+"out of its bloated body. You may have trouble estimating its healthiness "
+"and its capabilities might change."
msgstr ""
#: lang/json/MONSTER_from_json.py
@@ -55535,7 +57660,7 @@ msgid ""
"A human fused with a mess of metal parts and wires. While its eyes are "
"empty, flashes of pain pass across its face reminiscent of the person "
"trapped in this grotesque body. With enough surgical skills one might be "
-"able to give them back some humanity. If only they cared..."
+"able to give them back some humanity. If only they cared…"
msgstr ""
#: lang/json/MONSTER_from_json.py
@@ -55956,11 +58081,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "giant crayfish"
-msgid_plural "giant crayfishs"
+msgid_plural "giant crayfish"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for giant crayfish
+#. ~ Description for {'str': 'giant crayfish', 'str_pl': 'giant crayfish'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A mutant, terrestrial variety of the signal crayfish, this massive "
@@ -56091,7 +58216,7 @@ msgid_plural "homunculuses"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for homunculus
+#. ~ Description for {'str': 'homunculus', 'str_pl': 'homunculuses'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A pale hairless man with an impressive athletic physique. Its lidless eyes "
@@ -56100,11 +58225,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "hound of tindalos"
-msgid_plural "hound of tindaloss"
+msgid_plural "hounds of tindalos"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for hound of tindalos
+#. ~ Description for {'str': 'hound of tindalos', 'str_pl': 'hounds of tindalos'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A grotesque hound-like beast, its frame is angular and emaciated and its "
@@ -56317,12 +58442,12 @@ msgid_plural "Shia LaBeouf"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Shia LaBeouf
+#. ~ Description for {'str': 'Shia LaBeouf', 'str_pl': 'Shia LaBeouf'}
#: lang/json/MONSTER_from_json.py
msgid ""
-"Living in the woods, \n"
-"killing for sport, \n"
-"eating all the bodies, \n"
+"Living in the woods,\n"
+"killing for sport,\n"
+"eating all the bodies,\n"
"actual cannibal Shia LaBeouf."
msgstr ""
@@ -56480,7 +58605,7 @@ msgid_plural "twisted bodies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for twisted body
+#. ~ Description for {'str': 'twisted body', 'str_pl': 'twisted bodies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A human body, but with its limbs, neck, and hair impossibly twisted. It "
@@ -56493,7 +58618,7 @@ msgid_plural "vortexes"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for vortex
+#. ~ Description for {'str': 'vortex', 'str_pl': 'vortexes'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A twisting spot in the air, with some kind of morphing mass at its center."
@@ -56569,6 +58694,19 @@ msgid ""
"black eyes."
msgstr ""
+#: lang/json/MONSTER_from_json.py
+msgid "wretched puker"
+msgid_plural "wretched pukers"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for wretched puker
+#: lang/json/MONSTER_from_json.py
+msgid ""
+"A degenerate corpse, shambling as it walks. Several junks and waste "
+"materials have unified into its skin and wounds around it reeks in black goo."
+msgstr ""
+
#: lang/json/MONSTER_from_json.py
msgid "acidic zombie"
msgid_plural "acidic zombies"
@@ -56729,9 +58867,9 @@ msgstr[1] ""
#. ~ Description for zombie dancer
#: lang/json/MONSTER_from_json.py
msgid ""
-"The foulest stench is in the air, \n"
-"The funk of forty thousand years, \n"
-"And grisly ghouls from every tomb, \n"
+"The foulest stench is in the air,\n"
+"The funk of forty thousand years,\n"
+"And grisly ghouls from every tomb,\n"
"Are closing in to seal your doom!\n"
"\n"
"The dancer doesn't even notice you, it seems like something nearby is "
@@ -56845,11 +58983,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "gangrenous flesh"
-msgid_plural "gangrenous fleshs"
+msgid_plural "gangrenous flesh"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for gangrenous flesh
+#. ~ Description for {'str': 'gangrenous flesh', 'str_pl': 'gangrenous flesh'}
#: lang/json/MONSTER_from_json.py
msgid ""
"Immobile from grievous wounds, its gray skin has bloated to near rupture "
@@ -57022,9 +59160,9 @@ msgstr[1] ""
#. ~ Description for Thriller
#: lang/json/MONSTER_from_json.py
msgid ""
-"And though you fight to stay alive, \n"
-"Your body starts to shiver. \n"
-"For no mere mortal can resist, \n"
+"And though you fight to stay alive,\n"
+"Your body starts to shiver.\n"
+"For no mere mortal can resist,\n"
"The evil of the thriller."
msgstr ""
@@ -57449,7 +59587,7 @@ msgid_plural "dragonflies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for dragonfly
+#. ~ Description for {'str': 'dragonfly', 'str_pl': 'dragonflies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A thin-bodied insectoid predator with a large wingspan and big compound eyes."
@@ -57892,7 +60030,7 @@ msgid_plural "zombie children"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for zombie child
+#. ~ Description for {'str': 'zombie child', 'str_pl': 'zombie children'}
#: lang/json/MONSTER_from_json.py
msgid ""
"It was only a child, and little is different about it now aside from the "
@@ -57986,7 +60124,7 @@ msgid_plural "fungal children"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for fungal child
+#. ~ Description for {'str': 'fungal child', 'str_pl': 'fungal children'}
#: lang/json/MONSTER_from_json.py
msgid ""
"It is hard to recognize a human child in this creature. Disgusting-looking "
@@ -58254,11 +60392,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "old animatronic fox"
-msgid_plural "old animatronic foxs"
+msgid_plural "old animatronic foxes"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for old animatronic fox
+#. ~ Description for {'str': 'old animatronic fox', 'str_pl': 'old animatronic foxes'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A bipedal animatronic fox, nearly twice your size. Its teeth and claws look "
@@ -58268,11 +60406,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "new animatronic fox"
-msgid_plural "new animatronic foxs"
+msgid_plural "new animatronic foxes"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for new animatronic fox
+#. ~ Description for {'str': 'new animatronic fox', 'str_pl': 'new animatronic foxes'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A bipedal animatronic fox, nearly twice your size. Its teeth and claws look "
@@ -58282,11 +60420,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "wrecked animatronic fox"
-msgid_plural "wrecked animatronic foxs"
+msgid_plural "wrecked animatronic foxes"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for wrecked animatronic fox
+#. ~ Description for {'str': 'wrecked animatronic fox', 'str_pl': 'wrecked animatronic foxes'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A wrecked animatronic fox, laying in a pile on the ground. Its teeth and "
@@ -58296,11 +60434,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "new animatronic bunny"
-msgid_plural "new animatronic bunnys"
+msgid_plural "new animatronic bunnies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for new animatronic bunny
+#. ~ Description for {'str': 'new animatronic bunny', 'str_pl': 'new animatronic bunnies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A bipedal animatronic bunny, nearly twice your size. Its actually quite "
@@ -58310,11 +60448,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "old animatronic bunny"
-msgid_plural "old animatronic bunnys"
+msgid_plural "old animatronic bunnies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for old animatronic bunny
+#. ~ Description for {'str': 'old animatronic bunny', 'str_pl': 'old animatronic bunnies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A bipedal animatronic bunny, nearly twice your size. Its face has been torn "
@@ -58506,7 +60644,7 @@ msgid_plural "animatronic sheep"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for animatronic sheep
+#. ~ Description for {'str': 'animatronic sheep', 'str_pl': 'animatronic sheep'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A bipedal animatronic sheep, nearly twice your size. Its wool is mangy and "
@@ -58529,11 +60667,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "animatronic child"
-msgid_plural "animatronic childs"
+msgid_plural "animatronic children"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for animatronic child
+#. ~ Description for {'str': 'animatronic child', 'str_pl': 'animatronic children'}
#: lang/json/MONSTER_from_json.py
msgid ""
"An animatronic child. It looks like it's annoying as hell. Though it is a "
@@ -58555,11 +60693,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "animatronic wolf"
-msgid_plural "animatronic wolfs"
+msgid_plural "animatronic wolves"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for animatronic wolf
+#. ~ Description for {'str': 'animatronic wolf', 'str_pl': 'animatronic wolves'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A bipedal animatronic wolf, nearly twice your size. If the animal "
@@ -58722,11 +60860,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "minion of skeltal"
-msgid_plural "minion of skeltals"
+msgid_plural "minions of skeltal"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for minion of skeltal
+#. ~ Description for {'str': 'minion of skeltal', 'str_pl': 'minions of skeltal'}
#: lang/json/MONSTER_from_json.py
msgid "A lesser skeleton, raised by the forlorn dooting of a trumpet."
msgstr ""
@@ -58746,11 +60884,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Compsognathus"
-msgid_plural "Compsognathuss"
+msgid_plural "Compsognathus"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Compsognathus
+#. ~ Description for {'str': 'Compsognathus', 'str_pl': 'Compsognathus'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A bipedal dinosaur about the size of a turkey. Its teeth and claws are "
@@ -58759,11 +60897,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Gallimimus"
-msgid_plural "Gallimimuss"
+msgid_plural "Gallimimus"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Gallimimus
+#. ~ Description for {'str': 'Gallimimus', 'str_pl': 'Gallimimus'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A feathered bipedal dinosaur, standing as tall as a human. It looks "
@@ -58772,11 +60910,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Titanis"
-msgid_plural "Titaniss"
+msgid_plural "Titanis"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Titanis
+#. ~ Description for {'str': 'Titanis', 'str_pl': 'Titanis'}
#: lang/json/MONSTER_from_json.py
msgid ""
"It looks like a dodo, only much bigger, with longer, muscular legs and a "
@@ -58785,11 +60923,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Spinosaurus"
-msgid_plural "Spinosauruss"
+msgid_plural "Spinosaurus"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Spinosaurus
+#. ~ Description for {'str': 'Spinosaurus', 'str_pl': 'Spinosaurus'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A huge dinosaur about the size of a small house, with a ferocious crocodile-"
@@ -58798,22 +60936,22 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Tyrannosaurus rex"
-msgid_plural "Tyrannosaurus rexs"
+msgid_plural "Tyrannosaurus rex"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Tyrannosaurus rex
+#. ~ Description for {'str': 'Tyrannosaurus rex', 'str_pl': 'Tyrannosaurus rex'}
#: lang/json/MONSTER_from_json.py
msgid "Look at those TEETH!"
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Triceratops"
-msgid_plural "Triceratopss"
+msgid_plural "Triceratops"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Triceratops
+#. ~ Description for {'str': 'Triceratops', 'str_pl': 'Triceratops'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A massive rhino-like dinosaur with a bony crest from which three large horns "
@@ -58822,22 +60960,22 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Stegosaurus"
-msgid_plural "Stegosauruss"
+msgid_plural "Stegosaurus"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Stegosaurus
+#. ~ Description for {'str': 'Stegosaurus', 'str_pl': 'Stegosaurus'}
#: lang/json/MONSTER_from_json.py
msgid "A large quadruped dinosaur with plates on its back, and a spiked tail."
msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Ankylosaurus"
-msgid_plural "Ankylosauruss"
+msgid_plural "Ankylosaurus"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Ankylosaurus
+#. ~ Description for {'str': 'Ankylosaurus', 'str_pl': 'Ankylosaurus'}
#: lang/json/MONSTER_from_json.py
msgid ""
"This dinosaur looks like a giant prehistoric armadillo. Its tail ends in a "
@@ -58846,11 +60984,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Allosaurus"
-msgid_plural "Allosauruss"
+msgid_plural "Allosaurus"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Allosaurus
+#. ~ Description for {'str': 'Allosaurus', 'str_pl': 'Allosaurus'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A large predatory bipedal dinosaur, with tiger-like stripes on its broad "
@@ -58885,11 +61023,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Deinonychus"
-msgid_plural "Deinonychuss"
+msgid_plural "Deinonychus"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Deinonychus
+#. ~ Description for {'str': 'Deinonychus', 'str_pl': 'Deinonychus'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A medium-sized bipedal dinosaur covered with feathers. At the end of each "
@@ -58911,11 +61049,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Parasaurolophus"
-msgid_plural "Parasaurolophuss"
+msgid_plural "Parasaurolophus"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Parasaurolophus
+#. ~ Description for {'str': 'Parasaurolophus', 'str_pl': 'Parasaurolophus'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A huge mottled dinosaur with a blunt head crest. It contentedly strips "
@@ -58935,11 +61073,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "Dilophosaurus"
-msgid_plural "Dilophosauruss"
+msgid_plural "Dilophosaurus"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for Dilophosaurus
+#. ~ Description for {'str': 'Dilophosaurus', 'str_pl': 'Dilophosaurus'}
#: lang/json/MONSTER_from_json.py
msgid "A medium dinosaur with a sticky green bile dripping from its teeth."
msgstr ""
@@ -59081,21 +61219,23 @@ msgid "The black pudding burns you with acid!"
msgstr ""
#: lang/json/MONSTER_from_json.py
-msgid "nothic"
-msgid_plural "nothics"
+msgid "krabgek"
+msgid_plural "krabgeks"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for nothic
+#. ~ Description for krabgek
#: lang/json/MONSTER_from_json.py
msgid ""
-"A baleful eye peers out from the darkness, its gleam hinting at a weird "
-"intelligence and unnerving malevolence."
+"A large baleful eye peers out from the darkness, its gleam hinting at a "
+"weird intelligence and unnerving malevolence. The eye oozes some pinkish "
+"liquid, and the weirdly humanoid figure is covered in sharp blue-black "
+"triangular plates."
msgstr ""
-#. ~ Attack message of monster "nothic"'s spell "necrotic_gaze"
+#. ~ Attack message of monster "krabgek"'s spell "necrotic_gaze"
#: lang/json/MONSTER_from_json.py
-msgid "The nothic gazes at %3$s!"
+msgid "The krabgek gazes at %3$s!"
msgstr ""
#: lang/json/MONSTER_from_json.py
@@ -59143,8 +61283,47 @@ msgstr[1] ""
#. ~ Description for troll
#: lang/json/MONSTER_from_json.py
msgid ""
-"Monstrous, green-skinned humanoid. Trolls are renowned for their thick hides "
-"and natural regenerative ability."
+"Monstrous, green-skinned humanoid. Trolls are renowned for their thick "
+"hides and natural regenerative ability."
+msgstr ""
+
+#: lang/json/MONSTER_from_json.py
+msgid "stirge"
+msgid_plural "stirges"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for stirge
+#: lang/json/MONSTER_from_json.py
+msgid ""
+"This horrid flying creature looks like a cross between a large bat and "
+"oversized mosquito."
+msgstr ""
+
+#: lang/json/MONSTER_from_json.py
+msgid "shrieker"
+msgid_plural "shriekers"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for shrieker
+#: lang/json/MONSTER_from_json.py
+msgid ""
+"A shrieker is a human-sized mushroom that emits a piercing screech to drive "
+"off creatures that disturb it."
+msgstr ""
+
+#: lang/json/MONSTER_from_json.py
+msgid "lemure"
+msgid_plural "lemures"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for lemure
+#: lang/json/MONSTER_from_json.py
+msgid ""
+"A lemure resembles a molten mass of flesh with a vaguely humanoid head and "
+"torso."
msgstr ""
#: lang/json/MONSTER_from_json.py
@@ -59601,11 +61780,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "craftbuddy"
-msgid_plural "craftbuddys"
+msgid_plural "craftbuddies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for craftbuddy
+#. ~ Description for {'str': 'craftbuddy', 'str_pl': 'craftbuddies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A mobile crafting station used by workers in mines, on oil rigs, and in "
@@ -60218,11 +62397,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "robote deluxe"
-msgid_plural "robote deluxes"
+msgid_plural "robote deluxe"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for robote deluxe
+#. ~ Description for {'str': 'robote deluxe', 'str_pl': 'robote deluxe'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A diamond-studded gold-plated robot armed with a pair of integrated 9mm "
@@ -60261,11 +62440,11 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
msgid "glittering lady"
-msgid_plural "glittering ladys"
+msgid_plural "glittering ladies"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for glittering lady
+#. ~ Description for {'str': 'glittering lady', 'str_pl': 'glittering ladies'}
#: lang/json/MONSTER_from_json.py
msgid ""
"A salvaged advanced robot transformed into a luminous beacon of "
@@ -60388,13 +62567,13 @@ msgstr ""
#: lang/json/MONSTER_from_json.py
#: lang/json/TOOL_from_json.py
msgid "gelatinous mass"
-msgid_plural "gelatinous masss"
+msgid_plural "gelatinous mass"
msgstr[0] ""
msgstr[1] ""
-#. ~ Description for gelatinous mass
-#. ~ Description for gray mass
-#. ~ Description for gelatinous mass
+#. ~ Description for {'str': 'gelatinous mass', 'str_pl': 'gelatinous mass'}
+#. ~ Description for {'str': 'gray mass', 'str_pl': 'gray mass'}
+#. ~ Description for {'str': 'gelatinous mass', 'str_pl': 'gelatinous mass'}
#: lang/json/MONSTER_from_json.py
msgid ""
"An escaping noisy blob, catch it before it brings in every zombie for miles!"
@@ -60402,7 +62581,7 @@ msgstr ""
#: lang/json/MONSTER_from_json.py lang/json/TOOL_from_json.py
msgid "gray mass"
-msgid_plural "gray masss"
+msgid_plural "gray mass"
msgstr[0] ""
msgstr[1] ""
@@ -61084,7 +63263,7 @@ msgstr ""
#. ~ Message for SPELL 'Artifact Map'
#: lang/json/SPELL_from_json.py src/iuse.cpp
-msgid "You have a vision of the surrounding area..."
+msgid "You have a vision of the surrounding area…"
msgstr ""
#: lang/json/SPELL_from_json.py
@@ -61292,8 +63471,8 @@ msgstr ""
#. ~ Description for Animist Rune
#: lang/json/SPELL_from_json.py
msgid ""
-"This ritual creates a small pebble attuned to Animists. You can use the rune "
-"as a catalyst for recipes."
+"This ritual creates a small pebble attuned to Animists. You can use the "
+"rune as a catalyst for recipes."
msgstr ""
#: lang/json/SPELL_from_json.py
@@ -61331,7 +63510,7 @@ msgstr ""
#. ~ Description for Biomancer Rune
#: lang/json/SPELL_from_json.py
msgid ""
-"This ritual creates a small pebble attuned to Biomancers. You can use the "
+"This ritual creates a small pebble attuned to Biomancers. You can use the "
"rune as a catalyst for recipes."
msgstr ""
@@ -61380,6 +63559,20 @@ msgstr ""
msgid "Translocates the user to an attuned gate."
msgstr ""
+#: lang/json/SPELL_from_json.py
+msgid "Acid Resistance"
+msgstr ""
+
+#. ~ Description for Acid Resistance
+#. ~ Description for Greater Acid Resistance
+#: lang/json/SPELL_from_json.py
+msgid "Protects the user from acid."
+msgstr ""
+
+#: lang/json/SPELL_from_json.py
+msgid "Greater Acid Resistance"
+msgstr ""
+
#: lang/json/SPELL_from_json.py
msgid "Template Spell"
msgstr ""
@@ -61429,7 +63622,7 @@ msgstr ""
#. ~ Message for SPELL 'Debug Stamina Spell'
#: lang/json/SPELL_from_json.py
#, python-format
-msgid "Debug spell [ %s ] has no effect. Debug warning is expected."
+msgid "Debug spell [ %s ] has no effect. Debug warning is expected."
msgstr ""
#: lang/json/SPELL_from_json.py
@@ -61586,7 +63779,7 @@ msgstr ""
#. ~ Description for Druid Rune
#: lang/json/SPELL_from_json.py
msgid ""
-"This ritual creates a small pebble attuned to Druids. You can use the rune "
+"This ritual creates a small pebble attuned to Druids. You can use the rune "
"as a catalyst for recipes."
msgstr ""
@@ -61597,7 +63790,7 @@ msgstr ""
#. ~ Description for Purification Seed
#: lang/json/SPELL_from_json.py
msgid ""
-"You summon a gift of the earth which will purify water. Rapidly degrades if "
+"You summon a gift of the earth which will purify water. Rapidly degrades if "
"not utilized."
msgstr ""
@@ -61645,7 +63838,7 @@ msgstr ""
#. ~ Description for Earthshaper Rune
#: lang/json/SPELL_from_json.py
msgid ""
-"This ritual creates a small pebble attuned to Earthshapers. You can use the "
+"This ritual creates a small pebble attuned to Earthshapers. You can use the "
"rune as a catalyst for recipes."
msgstr ""
@@ -61672,6 +63865,10 @@ msgstr ""
msgid "Lava Bomb"
msgstr ""
+#: lang/json/SPELL_from_json.py
+msgid "Clairvoyance"
+msgstr ""
+
#: lang/json/SPELL_from_json.py
msgid "Twisted Restoration"
msgstr ""
@@ -61679,7 +63876,7 @@ msgstr ""
#. ~ Description for Twisted Restoration
#: lang/json/SPELL_from_json.py
msgid ""
-"This spell overclocks your heart, generating new flesh and muscle. It is "
+"This spell overclocks your heart, generating new flesh and muscle. It is "
"unwise to use this in immediate danger, and may be fatal if done in critical "
"condition."
msgstr ""
@@ -61691,9 +63888,24 @@ msgstr ""
#. ~ Description for Improved Twisted Restoration
#: lang/json/SPELL_from_json.py
msgid ""
-"This spell overclocks your heart, generating new flesh and muscle. It is "
+"This spell overclocks your heart, generating new flesh and muscle. It is "
"unwise to use this in immediate danger, and may be fatal if done in critical "
-"condition. Improved brewing mitigates the strain of the spell."
+"condition. Improved brewing mitigates the strain of the spell."
+msgstr ""
+
+#: lang/json/SPELL_from_json.py
+msgid "Conjure Throwing Blade I"
+msgstr ""
+
+#. ~ Description for Conjure Throwing Blade I
+#: lang/json/SPELL_from_json.py
+msgid "conjures 3 throwing knives"
+msgstr ""
+
+#. ~ Message for SPELL 'Conjure Throwing Blade I'
+#: lang/json/SPELL_from_json.py
+msgid ""
+"You activate your ring and three throwing knives appear, ready to throw!"
msgstr ""
#: lang/json/SPELL_from_json.py
@@ -61751,7 +63963,7 @@ msgstr ""
#. ~ Description for Kelvinist Rune
#: lang/json/SPELL_from_json.py
msgid ""
-"This ritual creates a small pebble attuned to Kelvinists. You can use the "
+"This ritual creates a small pebble attuned to Kelvinists. You can use the "
"rune as a catalyst for recipes."
msgstr ""
@@ -61794,7 +64006,7 @@ msgstr ""
#. ~ Description for Magus Rune
#: lang/json/SPELL_from_json.py
msgid ""
-"This ritual creates a small pebble attuned to Magi. You can use the rune as "
+"This ritual creates a small pebble attuned to Magi. You can use the rune as "
"a catalyst for recipes."
msgstr ""
@@ -61814,6 +64026,15 @@ msgstr ""
msgid "Fox's Cunning"
msgstr ""
+#: lang/json/SPELL_from_json.py
+msgid "Blood Suck"
+msgstr ""
+
+#. ~ Description for Blood Suck
+#: lang/json/SPELL_from_json.py
+msgid "Sucks blood from one foe."
+msgstr ""
+
#: lang/json/SPELL_from_json.py
msgid "Jolt"
msgstr ""
@@ -61853,7 +64074,7 @@ msgstr ""
#. ~ Description for Stormshaper Rune
#: lang/json/SPELL_from_json.py
msgid ""
-"This ritual creates a small pebble attuned to Stormshapers. You can use the "
+"This ritual creates a small pebble attuned to Stormshapers. You can use the "
"rune as a catalyst for recipes."
msgstr ""
@@ -61915,8 +64136,8 @@ msgstr ""
#. ~ Description for Technomancer Rune
#: lang/json/SPELL_from_json.py
msgid ""
-"This ritual creates a small pebble attuned to Technomancers. You can use the "
-"rune as a catalyst for recipes."
+"This ritual creates a small pebble attuned to Technomancers. You can use "
+"the rune as a catalyst for recipes."
msgstr ""
#: lang/json/SPELL_from_json.py
@@ -61943,6 +64164,10 @@ msgstr ""
msgid "Mirror Image"
msgstr ""
+#: lang/json/SPELL_from_json.py
+msgid "X-ray Vision"
+msgstr ""
+
#: lang/json/SPELL_from_json.py
msgid "Demon Fireball"
msgstr ""
@@ -62102,6 +64327,8 @@ msgstr[1] ""
#. ~ Use action menu_text for thermal electric balaclava (on).
#. ~ Use action menu_text for headlamp (on).
#. ~ Use action menu_text for survivor headlamp (on).
+#. ~ Use action menu_text for 5-point anchor (on).
+#. ~ Use action menu_text for phase immersion suit (on).
#. ~ Use action menu_text for rebreather mask (on).
#. ~ Use action menu_text for XL rebreather mask (on).
#. ~ Use action menu_text for pair of light amp goggles (on).
@@ -62126,10 +64353,10 @@ msgstr[1] ""
#. ~ Use action menu_text for acetylene lamp (on).
#. ~ Use action menu_text for power cutter (on).
#. ~ Use action menu_text for murdersaw (on).
+#. ~ Use action menu_text for heat cube (torch on).
#: lang/json/TOOL_ARMOR_from_json.py
#: lang/json/TOOL_ARMOR_from_json.py lang/json/TOOL_from_json.py
#: lang/json/TOOL_from_json.py
-#: lang/json/TOOL_from_json.py lang/json/item_action_from_json.py
#: lang/json/item_action_from_json.py
#: lang/json/item_action_from_json.py src/iuse.cpp
msgid "Turn off"
@@ -62453,6 +64680,46 @@ msgid ""
"It is turned on, and continually draining batteries. Use it to turn it off."
msgstr ""
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "atomic headlamp"
+msgid_plural "atomic headlamps"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for atomic headlamp.
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "You close the headlamp's cover."
+msgstr ""
+
+#. ~ Description for atomic headlamp
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"This is a custom made reinforced headlamp powered by the magic of nuclear "
+"decay, focused for more usable brightness. The adjustable strap allows it "
+"to be comfortably worn on your head or attached to your helmet. Use it to "
+"close the cover and hide the light."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "atomic headlamp (covered)"
+msgid_plural "atomic headlamps (covered)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for atomic headlamp (covered).
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "You open the headlamp's cover."
+msgstr ""
+
+#. ~ Description for atomic headlamp (covered)
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"This is a custom made reinforced headlamp powered by the magic of nuclear "
+"decay, focused for more usable brightness. The adjustable strap allows it "
+"to be comfortably worn on your head or attached to your helmet. Use it to "
+"open the cover and show the light."
+msgstr ""
+
#: lang/json/TOOL_ARMOR_from_json.py
msgid "RM13 combat armor"
msgid_plural "RM13 combat armors"
@@ -62482,6 +64749,97 @@ msgid ""
"power. Use it to turn it off."
msgstr ""
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "5-point anchor"
+msgid_plural "5-point anchors"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for 5-point anchor.
+#: lang/json/TOOL_ARMOR_from_json.py
+#, no-python-format
+msgid "A LED light in the %s LED flickers on."
+msgstr ""
+
+#. ~ Use action need_charges_msg for 5-point anchor.
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "It seems like this device needs power."
+msgstr ""
+
+#. ~ Description for 5-point anchor
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A featureless, disc-shaped device mounted on a harness. The words \"X.E.D.R."
+"A\" and \"5-point anchor\" are inscribed on its front and back."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "5-point anchor (on)"
+msgid_plural "5-point anchors (on)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for 5-point anchor (on).
+#: lang/json/TOOL_ARMOR_from_json.py
+#, no-python-format
+msgid "The %s LED light flickers off."
+msgstr ""
+
+#. ~ Description for 5-point anchor (on)
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"The harness' shoulder mounted LED glows with a soft green hue. Theres no "
+"further indication of anything happening."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "phase immersion suit"
+msgid_plural "phase immersion suits"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for phase immersion suit.
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"Initiating\n"
+"Running suit integrity diagnostics…\n"
+"All systems operational."
+msgstr ""
+
+#. ~ Use action need_charges_msg for phase immersion suit.
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "Warning: Operating on minimal power. Protection compromised."
+msgstr ""
+
+#. ~ Description for phase immersion suit
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"Covered in interlocking plates of reflective metal, this advanced suit "
+"resembles both plate armor and an astronaut's spacesuit. Designed to "
+"protect its wearer during extra dimensional excursions, it offers "
+"unparalleled environmental protection, both in this Earth and beyond. Use "
+"it to turn it on."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "phase immersion suit (on)"
+msgid_plural "phase immersion suits (on)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for phase immersion suit (on).
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "Suit shutting down."
+msgstr ""
+
+#. ~ Description for phase immersion suit (on)
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"Covered in interlocking plates of reflective metal, this advanced suit "
+"resembles both plate armor and an astronaut's spacesuit. It is turned on, "
+"and continually draining power. Use it to turn it off."
+msgstr ""
+
#: lang/json/TOOL_ARMOR_from_json.py
msgid "rebreather mask"
msgid_plural "rebreather masks"
@@ -63408,9 +65766,10 @@ msgstr ""
#. ~ Description for shooter's earmuffs
#: lang/json/TOOL_ARMOR_from_json.py
msgid ""
-"A pair of earmuffs favored by shooters. The earmuffs are turned off. They "
-"will block sounds over a certain decibel amount, assuming it is charged with "
-"batteries."
+"A pair of earmuffs favored by shooters. Without batteries or when turned "
+"off they function like normal earmuffs and block all sound. They will block "
+"sounds over a certain decibel amount when turned on. The earmuffs are "
+"currently off."
msgstr ""
#. ~ Description for shooter's earmuffs
@@ -63856,6 +66215,535 @@ msgid ""
"power."
msgstr ""
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "magic leather belt"
+msgid_plural "magic leather belts"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "Belt of Haste"
+msgid_plural "Belt of Hastes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "Megingjörð"
+msgid_plural "Megingjörðs"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Megingjörð
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"The mythical belt of Thor, god of thunder. Or at least so it appears. It "
+"doubles the wearer's base strength."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "Lesser Girdle of Pockets"
+msgid_plural "Lesser Girdle of Pocketss"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Lesser Girdle of Pockets
+#. ~ Description for Greater Girdle of Pockets
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A wide girdle that fits around your waist, coverd in numerous small pouches "
+"that hold a lot more than they should, and the weight of their contents is "
+"greatly reduced."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "Greater Girdle of Pockets"
+msgid_plural "Greater Girdle of Pocketss"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "Belt of Weaponry"
+msgid_plural "Belt of Weaponrys"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for Belt of Weaponry
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A wide girdle that fits around your waist, you can sheath or holster any "
+"weapon into it in the blink of an eye, and it seemingly stores them "
+"somewhere else."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "Belt of The Iron Whip"
+msgid_plural "Belts of the Iron Whip"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for Belt of The Iron Whip.
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"You grab the belt and it uncoils to become a flexible metal whip in your "
+"hand!"
+msgstr ""
+
+#. ~ Description for Belt of The Iron Whip
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A braided but flexible belt seemingly made of metal. You can activate it to "
+"transform it into a whip and flay your enemies."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "escape boots"
+msgid_plural "escape boots"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for escape boots
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"Rugged yet extremely comfortable and well fitting boots of worn leather and "
+"steel, these boots can be activated once a day to escape from nasty "
+"situations, teleporting you a good distance in a random direction."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "pair of steel bracers"
+msgid_plural "pairs of steel bracers"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for pair of steel bracers
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A full assembly of medieval arm protection."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "steel bracer"
+msgid_plural "steel bracers"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "bracer of lesser defense"
+msgid_plural "bracers of lesser defense"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for bracer of lesser defense
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A light but extremely sturdy steel bracer with an ornate shield engraved on "
+"the top, silver accentuates the intricate design. It protects your body "
+"with a light aura to reduce damage you take."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "bracer of greater defense"
+msgid_plural "bracers of greater defense"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for bracer of greater defense
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A light but extremely sturdy steel bracer with an ornate shield engraved on "
+"the top, gold accentuates the intricate design. It protects your body with "
+"a strong aura to reduce damage you take."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "lesser bracer of lightning"
+msgid_plural "lesser bracers of lightning"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for lesser bracer of lightning
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A light but extremely sturdy steel bracer with an ornate bundle of lightning "
+"bolts engraved on the top, silver accentuates the intricate design. It "
+"protects your body with a light aura to reduce electrical damage you take, "
+"as well as being able to release a Jolt spell 3 times a day."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "greater bracer of lightning"
+msgid_plural "greater bracers of lightning"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for greater bracer of lightning
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A light but extremely sturdy steel bracer with an ornate bundle of lightning "
+"bolts engraved on the top, gold accentuates the intricate design. It "
+"protects your body with a strong aura to reduce electrical damage you take, "
+"as well as being able to release a Lightning Bolt spell 3 times a day."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "magic mask"
+msgid_plural "magic masks"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for magic mask
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A generic magic mask."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "mask of disappearance"
+msgid_plural "masks of disappearance"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for mask of disappearance
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A mask with no facial features at all, just eye and mouth holes, upon "
+"activation it makes everything ignore your presence for a while."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "mask of perfect vision"
+msgid_plural "masks of perfect vision"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for mask of perfect vision
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A decidedly steampunk-looking half mask that covers the eye area of the "
+"face, it has large lenses that correct and greatly enhance the vision of the "
+"wearer."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "copper magic ring"
+msgid_plural "copper magic rings"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for copper magic ring
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A generic copper magic ring."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "magic ring"
+msgid_plural "magic rings"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for magic ring
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A generic silver magic ring."
+msgstr ""
+
+#. ~ Description for magic ring
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A generic gold magic ring."
+msgstr ""
+
+#. ~ Description for magic ring
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A generic platinum magic ring."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of blades"
+msgid_plural "rings of blades"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of blades
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"An ornate silver ring engraved with daggers that conjures a near perfect "
+"throwing knife into your hand on activation."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of strength +1"
+msgid_plural "minor rings of strength +1"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of strength +1
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A copper ring that makes you a little stronger when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of strength +2"
+msgid_plural "rings of strength +2"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of strength +2
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A silver ring that makes you a good bit stronger when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of strength +3"
+msgid_plural "rings of strength +3"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of strength +3
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A golden ring that makes you surprisingly stronger when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of strength +4"
+msgid_plural "rings of strength +4"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of strength +4
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A platinum ring that makes you much stronger when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of dexterity +1"
+msgid_plural "rings of dexterity +1"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of dexterity +1
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A copper ring that makes you a little more agile when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of dexterity +2"
+msgid_plural "rings of dexterity +2"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of dexterity +2
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A silver ring that makes you a good bit more agile when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of dexterity +3"
+msgid_plural "rings of dexterity +3"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of dexterity +3
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A golden ring that makes you surprisingly more agile when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of dexterity +4"
+msgid_plural "rings of dexterity +4"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of dexterity +4
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A platinum ring that makes you much more agile when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of intelligence +1"
+msgid_plural "rings of intelligence +1"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of intelligence +1
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A copper ring that makes you a little more intelligent when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of intelligence +2"
+msgid_plural "rings of intelligence +2"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of intelligence +2
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A silver ring that makes you a good bit more intelligent when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of intelligence +3"
+msgid_plural "rings of intelligence +3"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of intelligence +3
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A golden ring that makes you surprisingly more intelligent when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of intelligence +4"
+msgid_plural "rings of intelligence +4"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of intelligence +4
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A platinum ring that makes you much more intelligent when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of perception +1"
+msgid_plural "rings of perception +1"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of perception +1
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A copper ring that makes you a little more perceptive when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of perception +2"
+msgid_plural "rings of perception +2"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of perception +2
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A silver ring that makes you a good bit more perceptive when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of perception +3"
+msgid_plural "rings of perception +3"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of perception +3
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A golden ring that makes you eye-openingly more perceptive when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of perception +4"
+msgid_plural "rings of perception +4"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of perception +4
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A platinum ring that makes you much more perceptive when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of speed +3"
+msgid_plural "rings of speed +3"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of speed +3
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A copper ring that makes you a little faster when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of speed +5"
+msgid_plural "rings of speed +5"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of speed +5
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A silver ring that makes you a good bit faster when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of speed +7"
+msgid_plural "rings of speed +7"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of speed +7
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A golden ring that makes you quite hasty when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of speed +10"
+msgid_plural "rings of speed +10"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of speed +10
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "A platinum ring that makes you much faster when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of protection +2"
+msgid_plural "rings of protection +2"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of protection +2
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A copper ring that reduces some of the force of damage you take when you "
+"wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of protection +4"
+msgid_plural "rings of protection +4"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of protection +4
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A silver ring that appreciably reduces some of the force of damage you take "
+"when you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of protection +6"
+msgid_plural "rings of protection +6"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of protection +6
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A golden ring that greatly reduces some of the force of damage you take when "
+"you wear it."
+msgstr ""
+
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid "ring of protection +8"
+msgid_plural "rings of protection +8"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for ring of protection +8
+#: lang/json/TOOL_ARMOR_from_json.py
+msgid ""
+"A platinum ring that vastly reduces some of the force of damage you take "
+"when you wear it."
+msgstr ""
+
#: lang/json/TOOL_from_json.py
msgid "washcloth"
msgid_plural "washcloths"
@@ -63878,9 +66766,9 @@ msgstr[1] ""
msgid ""
"Harness the power of radiation in your own home! This looks similar to a D-"
"cell battery, but actually contains folded layers of radioactive material "
-"inside. It can produce electricity for several years at a steady voltage... "
+"inside. It can produce electricity for several years at a steady voltage… "
"but it's barely enough to power a small LED, and these batteries were worth "
-"hundreds of dollars. Mostly they're a good way to brag to your neighbours "
+"hundreds of dollars. Mostly they're a good way to brag to your neighbors "
"that you have a nuclear power source in your house."
msgstr ""
@@ -63893,9 +66781,9 @@ msgstr[1] ""
#. ~ Description for radioisotope thermoelectric generator
#: lang/json/TOOL_from_json.py
msgid ""
-"Did your neighbours brag about their cool beta-decay powered nightlights? "
-"Do them one better! The CuppaTech 4 radioisotope thermoelectric generator "
-"is a three kilogram chunk of metal - mostly lead - with a slug of curium-244 "
+"Did your neighbors brag about their cool beta-decay powered nightlights? Do "
+"them one better! The CuppaTech 4 radioisotope thermoelectric generator is a "
+"three kilogram chunk of metal - mostly lead - with a slug of curium-244 "
"encased within. It is capable of generating somewhere between 100-150 Watts "
"of thermal energy, although its electrical generation capacity is minimal at "
"only 2 Watts. Careful! Curium is great at making heat, and also releases "
@@ -64013,7 +66901,7 @@ msgstr[1] ""
#. ~ Description for clairvoyance rod
#: lang/json/TOOL_from_json.py
msgid ""
-"Item to test aep_clairvoyance_plus flag. If this spawns randomly, then it's "
+"Item to test aep_clairvoyance_plus flag. If this spawns randomly, then it's "
"a bug."
msgstr ""
@@ -64298,7 +67186,6 @@ msgstr ""
#. ~ Use action sound_msg for dynamite (lit).
#. ~ Use action sound_msg for fertilizer bomb (lit).
#: lang/json/TOOL_from_json.py
-#: lang/json/TOOL_from_json.py src/iuse.cpp
msgid "ssss..."
msgstr ""
@@ -64325,7 +67212,7 @@ msgstr ""
#. ~ Description for nail bomb
#: lang/json/TOOL_from_json.py
msgid ""
-"A crude and bulky improvised bomb. Made from a container, an explosive "
+"A crude and bulky improvised bomb. Made from a container, an explosive "
"surrounded by nails and a fuse. Use this item to light the fuse. You will "
"then have five turns before it explodes; throwing it would be a good idea."
msgstr ""
@@ -64346,8 +67233,8 @@ msgstr ""
#. ~ Description for active nail bomb
#: lang/json/TOOL_from_json.py
msgid ""
-"A crude and bulky improvised bomb. Made from a container, an explosive "
-"surrounded by nails and a fuse. The fuse has been lit, you should throw it."
+"A crude and bulky improvised bomb. Made from a container, an explosive "
+"surrounded by nails and a fuse. The fuse has been lit, you should throw it."
msgstr ""
#: lang/json/TOOL_from_json.py
@@ -64359,7 +67246,7 @@ msgstr[1] ""
#. ~ Description for fragment bomb
#: lang/json/TOOL_from_json.py
msgid ""
-"A crude and bulky improvised bomb. Made from a container, an explosive "
+"A crude and bulky improvised bomb. Made from a container, an explosive "
"surrounded by small pieces of metal and a fuse. Use this item to light the "
"fuse. You will then have five turns before it explodes; throwing it would "
"be a good idea."
@@ -64374,8 +67261,8 @@ msgstr[1] ""
#. ~ Description for active fragment bomb
#: lang/json/TOOL_from_json.py
msgid ""
-"A crude and bulky improvised bomb. Made from a container, an explosive "
-"surrounded by small pieces of metal and a fuse. The fuse has been lit, you "
+"A crude and bulky improvised bomb. Made from a container, an explosive "
+"surrounded by small pieces of metal and a fuse. The fuse has been lit, you "
"should throw it."
msgstr ""
@@ -64395,7 +67282,7 @@ msgstr ""
#: lang/json/TOOL_from_json.py
msgid ""
"This is a tin can filled to the brim with explosive and with a bit of fuse "
-"sticking out of it. Will produce metal shrapnel that can deal with armor ... "
+"sticking out of it. Will produce metal shrapnel that can deal with armor… "
"you think."
msgstr ""
@@ -64409,8 +67296,55 @@ msgstr[1] ""
#: lang/json/TOOL_from_json.py
msgid ""
"This is a tin can filled to the brim with explosive and with a bit of fuse "
-"sticking out of it. Will produce metal shrapnel that can deal with armor ... "
-"you think. The fuse has been lit, you should throw it."
+"sticking out of it. Will produce metal shrapnel that can deal with armor… "
+"you think. The fuse has been lit, you should throw it."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "jack o'lantern"
+msgid_plural "jack o'lanterns"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action menu_text for jack o'lantern.
+#. ~ Use action menu_text for candle.
+#. ~ Use action menu_text for Louisville Slaughterer.
+#: lang/json/TOOL_from_json.py
+#: lang/json/TOOL_from_json.py src/veh_interact.cpp
+msgid "Light"
+msgstr ""
+
+#. ~ Use action msg for jack o'lantern.
+#: lang/json/TOOL_from_json.py
+msgid "You light the candle in the jack o'lantern."
+msgstr ""
+
+#. ~ Description for jack o'lantern
+#: lang/json/TOOL_from_json.py
+msgid ""
+"This is a plastic lantern that is painted to look like a pumpkin with a "
+"face. It has a candle inside it, that can be replaced when burnt down. It "
+"doesn't provide very much light, but it can burn for quite a long time. "
+"You'll need a lighter or matches to light it."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "spooky jack o'lantern"
+msgid_plural "jack o'lanterns"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for spooky jack o'lantern.
+#: lang/json/TOOL_from_json.py
+msgid "The candle winks out inside the lantern."
+msgstr ""
+
+#. ~ Description for spooky jack o'lantern
+#: lang/json/TOOL_from_json.py
+msgid ""
+"There is a thick LED candle inside the pumpkin face. It doesn't provide "
+"very much light, but it can burn for quite a long time. This candle is "
+"lit. The face shifts."
msgstr ""
#. ~ Description for battle axe
@@ -64547,6 +67481,27 @@ msgid ""
"fuse stuck inside of it."
msgstr ""
+#: lang/json/TOOL_from_json.py
+msgid "hobo stove (lit)"
+msgid_plural "hobo stoves (lit)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for hobo stove (lit).
+#. ~ Use action msg for ember carrier (lit).
+#: lang/json/TOOL_from_json.py
+msgid "The ember is extinguished."
+msgstr ""
+
+#. ~ Description for hobo stove (lit)
+#. ~ Description for hobo stove
+#: lang/json/TOOL_from_json.py
+msgid ""
+"This is a small improvised wood stove, made from a metal can or similar "
+"container of the right size. Useful for defrosting and reheating food, uses "
+"simple tinder."
+msgstr ""
+
#: lang/json/TOOL_from_json.py
msgid "folded poncho"
msgid_plural "folded ponchos"
@@ -64774,8 +67729,8 @@ msgstr[1] ""
#. ~ Description for water mill
#: lang/json/TOOL_from_json.py
msgid ""
-"A small water-powered mill that can convert starchy products into flour. Can "
-"be placed via the construction menu."
+"A small water-powered mill that can convert starchy products into flour. "
+"Can be placed via the construction menu."
msgstr ""
#: lang/json/TOOL_from_json.py lang/json/furniture_from_json.py
@@ -64787,7 +67742,7 @@ msgstr[1] ""
#. ~ Description for wind mill
#: lang/json/TOOL_from_json.py
msgid ""
-"A small wind-powered mill that can convert starchy products into flour. Can "
+"A small wind-powered mill that can convert starchy products into flour. Can "
"be placed via the construction menu."
msgstr ""
@@ -65080,14 +68035,6 @@ msgid_plural "candles"
msgstr[0] ""
msgstr[1] ""
-#. ~ Use action menu_text for candle.
-#. ~ Use action menu_text for hobo stove.
-#. ~ Use action menu_text for Louisville Slaughterer.
-#: lang/json/TOOL_from_json.py
-#: lang/json/TOOL_from_json.py src/veh_interact.cpp
-msgid "Light"
-msgstr ""
-
#. ~ Use action msg for candle.
#: lang/json/TOOL_from_json.py
msgid "You light the candle."
@@ -65136,7 +68083,7 @@ msgstr[1] ""
#: lang/json/TOOL_from_json.py
msgid ""
"An electric meat carver powered by batteries. Two serrated blades that "
-"vibrate together to slice just about anything from turkey to ham... even "
+"vibrate together to slice just about anything from turkey to ham… even "
"zombies!"
msgstr ""
@@ -65299,6 +68246,20 @@ msgid ""
"uncertain sources like a river may be dirty."
msgstr ""
+#: lang/json/TOOL_from_json.py
+msgid "lifestraw"
+msgid_plural "lifestraws"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for lifestraw
+#: lang/json/TOOL_from_json.py
+msgid ""
+"Set the lifestraw in suspect water, let sit for one minute then drink. The "
+"two part filtration system will purify the water you drink. Water taken "
+"from uncertain sources like a river may be dirty."
+msgstr ""
+
#: lang/json/TOOL_from_json.py
msgid "charcoal smoker"
msgid_plural "charcoal smokers"
@@ -65750,7 +68711,7 @@ msgid ""
"try to escape or to remove the cuffs - they will administer an electric "
"shock.\n"
"However, since the only police likely to respond are undead, you may have a "
-"long wait ahead, unless you get creative..."
+"long wait ahead, unless you get creative…"
msgstr ""
#: lang/json/TOOL_from_json.py
@@ -67288,6 +70249,19 @@ msgid ""
"asthma attacks or smoke inhalation, and can provide a brief burst of energy."
msgstr ""
+#: lang/json/TOOL_from_json.py
+msgid "oxygen cylinder"
+msgid_plural "oxygen cylinders"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for oxygen cylinder
+#: lang/json/TOOL_from_json.py
+msgid ""
+"A large steel cylinder used for storing pressurized gas. It is marked with "
+"a faded, but legible O2 symbol."
+msgstr ""
+
#: lang/json/TOOL_from_json.py
msgid "nitrogen tank"
msgid_plural "nitrogen tanks"
@@ -67650,7 +70624,7 @@ msgstr[1] ""
#. ~ Description for sponge
#: lang/json/TOOL_from_json.py
msgid ""
-"A sponge is a tool or cleaning aid made of soft, porous material. Typically "
+"A sponge is a tool or cleaning aid made of soft, porous material. Typically "
"used for cleaning impervious surfaces."
msgstr ""
@@ -68567,7 +71541,7 @@ msgstr ""
msgid ""
"This is a home-made explosive device, consisting of a large plastic jug "
"filled with black gunpowder and scrap metal, equipped with a long fuse. Use "
-"this item to light the fuse. Should explode in a few minutes..."
+"this item to light the fuse. Should explode in a few minutes…"
msgstr ""
#: lang/json/TOOL_from_json.py
@@ -68703,11 +71677,13 @@ msgstr[0] ""
msgstr[1] ""
#. ~ Use action menu_text for torch.
+#. ~ Use action menu_text for everburning torch.
#: lang/json/TOOL_from_json.py
msgid "Light torch"
msgstr ""
#. ~ Use action msg for torch.
+#. ~ Use action msg for everburning torch.
#: lang/json/TOOL_from_json.py
msgid "You light the torch."
msgstr ""
@@ -68721,6 +71697,7 @@ msgid ""
msgstr ""
#. ~ Use action msg for torch.
+#. ~ Use action msg for everburning torch.
#: lang/json/TOOL_from_json.py
msgid "The torch is extinguished."
msgstr ""
@@ -69089,38 +72066,6 @@ msgid_plural "hobo stoves"
msgstr[0] ""
msgstr[1] ""
-#. ~ Use action msg for hobo stove.
-#: lang/json/TOOL_from_json.py
-msgid "The hobo stove is lit."
-msgstr ""
-
-#. ~ Use action need_fire_msg for hobo stove.
-#: lang/json/TOOL_from_json.py src/iuse.cpp
-#: src/iuse.cpp src/iuse_actor.cpp
-msgid "You need a source of fire!"
-msgstr ""
-
-#. ~ Description for hobo stove
-#. ~ Description for hobo stove (lit)
-#: lang/json/TOOL_from_json.py
-msgid ""
-"This is a small improvised wood stove, made from a metal can or similar "
-"container of the right size. Useful for defrosting and reheating food, uses "
-"simple tinder."
-msgstr ""
-
-#: lang/json/TOOL_from_json.py
-msgid "hobo stove (lit)"
-msgid_plural "hobo stoves (lit)"
-msgstr[0] ""
-msgstr[1] ""
-
-#. ~ Use action msg for hobo stove (lit).
-#. ~ Use action msg for ember carrier (lit).
-#: lang/json/TOOL_from_json.py
-msgid "The ember is extinguished."
-msgstr ""
-
#: lang/json/TOOL_from_json.py
msgid "ember carrier"
msgid_plural "ember carriers"
@@ -69132,6 +72077,11 @@ msgstr[1] ""
msgid "You light the tinder."
msgstr ""
+#. ~ Use action need_charges_msg for ember carrier.
+#: lang/json/TOOL_from_json.py
+msgid "The ember carrier is out of tinder."
+msgstr ""
+
#. ~ Use action need_fire_msg for ember carrier.
#: lang/json/TOOL_from_json.py
msgid "You need a lighter or fire to light this."
@@ -69294,8 +72244,8 @@ msgstr[1] ""
#. ~ Description for grip hook
#: lang/json/TOOL_from_json.py
msgid ""
-"A simple steel meathook with a circular steel handle. Makes a passable melee "
-"weapon."
+"A simple steel meathook with a circular steel handle. Makes a passable "
+"melee weapon."
msgstr ""
#: lang/json/TOOL_from_json.py
@@ -69635,7 +72585,7 @@ msgstr ""
#. ~ Description for inactive TALON UGV
#: lang/json/TOOL_from_json.py
msgid ""
-"This is an inactive TALON UGV equipped with an M16A4. Using this item "
+"This is an inactive TALON UGV equipped with an M16A4. Using this item "
"involves loading the unit with the factory-loaded 5.56x45mm rounds in your "
"inventory (if you wish to divide your ammunition, set aside whatever "
"5.56x45mm you do NOT want to give the robot) turning it on, and placing it "
@@ -69653,7 +72603,7 @@ msgstr[1] ""
#. ~ Description for inactive M202A1 TALON UGV
#: lang/json/TOOL_from_json.py
msgid ""
-"This is an inactive TALON UGV equipped with an M202A1. Using this item "
+"This is an inactive TALON UGV equipped with an M202A1. Using this item "
"involves loading the unit with the M235 rockets in your inventory (if you "
"wish to divide your ammunition, set aside whatever M235 rockets you do NOT "
"want to give the robot) turning it on, and placing it on the ground. If "
@@ -69743,9 +72693,9 @@ msgstr ""
#: lang/json/TOOL_from_json.py
msgid ""
"This is a deactivated broken cyborg, the last shreds of its humanity still "
-"rotting away. Using this item involves placing it on the ground and "
+"rotting away. Using this item involves placing it on the ground and "
"reactivating its mechanical body. If reprogrammed and rewired successfully "
-"the cyborg will then follow you and attack enemies. You monster."
+"the cyborg will then follow you and attack enemies. You monster."
msgstr ""
#: lang/json/TOOL_from_json.py
@@ -69797,7 +72747,7 @@ msgstr ""
#. ~ Description for inactive chicken walker
#: lang/json/TOOL_from_json.py
msgid ""
-"This is an inactive chicken walker. Using this item involves placing it on "
+"This is an inactive chicken walker. Using this item involves placing it on "
"the ground, loading the unit with the factory-loaded 5.56 rounds and 40mm "
"cartridge grenades in your inventory (if you wish to divide your ammunition, "
"set aside whatever ammunition you do NOT want to give the robot) and turning "
@@ -69826,8 +72776,8 @@ msgstr ""
#. ~ Description for inactive police bot
#: lang/json/TOOL_from_json.py
msgid ""
-"This is an inactive police robot. Using this item involves placing it on the "
-"ground and turning it on. If reprogrammed and rewired successfully the "
+"This is an inactive police robot. Using this item involves placing it on "
+"the ground and turning it on. If reprogrammed and rewired successfully the "
"police bot will then identify you as law enforcement, roam around or follow "
"you, and attempt to detain lawbreakers."
msgstr ""
@@ -69853,7 +72803,7 @@ msgstr ""
#. ~ Description for inactive eyebot
#: lang/json/TOOL_from_json.py
msgid ""
-"This is an inactive eyebot. Using this item involves turning it on and "
+"This is an inactive eyebot. Using this item involves turning it on and "
"launching the UAV. If reprogrammed and rewired successfully the eyebot will "
"then keep watch for intruders."
msgstr ""
@@ -69877,7 +72827,7 @@ msgstr ""
#. ~ Description for inactive cleaner bot
#: lang/json/TOOL_from_json.py
msgid ""
-"This is an inactive cleaner bot. Using this item involves placing it on the "
+"This is an inactive cleaner bot. Using this item involves placing it on the "
"ground and turning it on. If reprogrammed and rewired successfully the "
"cleaner bot will respond to future commands."
msgstr ""
@@ -69901,8 +72851,8 @@ msgstr ""
#. ~ Description for inactive miner bot
#: lang/json/TOOL_from_json.py
msgid ""
-"This is an inactive mining robot. Using this item involves placing it on the "
-"ground and turning it on. If reprogrammed and rewired successfully the "
+"This is an inactive mining robot. Using this item involves placing it on "
+"the ground and turning it on. If reprogrammed and rewired successfully the "
"miner bot will respond to future commands."
msgstr ""
@@ -69925,9 +72875,9 @@ msgstr ""
#. ~ Description for inactive riot control bot
#: lang/json/TOOL_from_json.py
msgid ""
-"This is an inactive riot control bot. Using this item involves placing it on "
-"the ground and turning it on. If reprogrammed and rewired successfully the "
-"robot will bring order and peace to the horde."
+"This is an inactive riot control bot. Using this item involves placing it "
+"on the ground and turning it on. If reprogrammed and rewired successfully "
+"the robot will bring order and peace to the horde."
msgstr ""
#: lang/json/TOOL_from_json.py
@@ -69949,7 +72899,7 @@ msgstr ""
#. ~ Description for inactive skitterbot
#: lang/json/TOOL_from_json.py
msgid ""
-"This is an inactive skitterbot. Using this item involves placing it on the "
+"This is an inactive skitterbot. Using this item involves placing it on the "
"ground and turning it on. If reprogrammed and rewired successfully the "
"robot will race towards enemies and shock them."
msgstr ""
@@ -70003,7 +72953,7 @@ msgstr ""
#. ~ Description for inactive tank drone
#: lang/json/TOOL_from_json.py
msgid ""
-"This is an inactive Beagle Mini-Tank UGV. Using this item involves placing "
+"This is an inactive Beagle Mini-Tank UGV. Using this item involves placing "
"it on the ground, loading the unit with the factory-loaded 5.56 rounds and "
"40mm cartridge grenades in your inventory (if you wish to divide your "
"ammunition, set aside whatever ammunition you do NOT want to give the robot) "
@@ -70033,8 +72983,8 @@ msgstr ""
#. ~ Description for inactive tripod
#: lang/json/TOOL_from_json.py
msgid ""
-"This is an inactive Honda Regnal. Using this item involves placing it on the "
-"ground, wondering how it fuels its flamethrower and turning it on. If "
+"This is an inactive Honda Regnal. Using this item involves placing it on "
+"the ground, wondering how it fuels its flamethrower and turning it on. If "
"reprogrammed and rewired successfully the tribot will then identify you as "
"an ally, roam around or follow you, and impale hostiles with its spiked "
"cable weapons."
@@ -70060,10 +73010,10 @@ msgstr ""
#. ~ Description for inactive milspec searchlight
#: lang/json/TOOL_from_json.py
msgid ""
-"This is an inactive military-grade automated searchlight. Using this item "
+"This is an inactive military-grade automated searchlight. Using this item "
"involves placing it on the ground and turning it on. If reprogrammed and "
"rewired successfully the searchlight will then identify you as an ally, "
-"survey the area, and illuminate approaching hostiles. Seems to have an "
+"survey the area, and illuminate approaching hostiles. Seems to have an "
"unhealthy fascination with you."
msgstr ""
@@ -70384,7 +73334,7 @@ msgstr[1] ""
msgid ""
"This farming tool has been modified into an improvised weapon by rotating "
"its blade 90 degrees, transforming it into a deadly giant blade on the end "
-"of a stick. However it's quite fragile."
+"of a stick. However it's quite fragile."
msgstr ""
#: lang/json/TOOL_from_json.py
@@ -70483,6 +73433,21 @@ msgid ""
"be deadly in either the right hands or when attached as a bayonet."
msgstr ""
+#: lang/json/TOOL_from_json.py
+msgid "modified combat knife"
+msgid_plural "modified combat knives"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for modified combat knife
+#: lang/json/TOOL_from_json.py
+msgid ""
+"This is a military combat knife. It is light and extremely sharp, and could "
+"be deadly in either the right hands or when attached as a bayonet. This one "
+"was modified and customized to mount on pretty much any weapon other than "
+"pistols, if you so want."
+msgstr ""
+
#: lang/json/TOOL_from_json.py
msgid "hunting knife"
msgid_plural "hunting knives"
@@ -70805,6 +73770,21 @@ msgid ""
"of a firearm or crossbow converting it into a pike."
msgstr ""
+#: lang/json/TOOL_from_json.py
+msgid "modified sword bayonet"
+msgid_plural "modified sword bayonets"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for modified sword bayonet
+#: lang/json/TOOL_from_json.py
+msgid ""
+"A sword bayonet is a large slashing weapon that can be attached to the front "
+"of a firearm or crossbow converting it into a pike. This one was modified "
+"and customized to mount on pretty much any weapon other than pistols and "
+"SMGs, if you so want."
+msgstr ""
+
#. ~ Description for tanto
#: lang/json/TOOL_from_json.py
msgid ""
@@ -70903,6 +73883,57 @@ msgid ""
"light for its size."
msgstr ""
+#: lang/json/TOOL_from_json.py
+msgid "electrified foil"
+msgid_plural "electrified foils"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for electrified foil
+#: lang/json/TOOL_from_json.py
+msgid ""
+"The modifications made to this fencing foil may not be sporting, but they "
+"might give you an edge in this final competition. Extra effort has been "
+"made to insulate the grip and a high voltage stun gun has been attached to "
+"the guard, wired through the electronic scoring circuit to the tip. "
+"Thrusting the sharpened tip into a foe and activating the momentary switch "
+"will deliver a painful electric shock."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "electrified épée"
+msgid_plural "electrified épées"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for electrified épée
+#: lang/json/TOOL_from_json.py
+msgid ""
+"The modifications made to this fencing épée may not be sporting, but they "
+"might give you an edge in this final competition. Extra effort has been "
+"made to insulate the grip and a high voltage stun gun has been attached to "
+"the guard, wired through the electronic scoring circuit to the tip. "
+"Thrusting the sharpened tip into a foe and activating the momentary switch "
+"will deliver a painful electric shock."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "electrified saber"
+msgid_plural "electrified sabers"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for electrified saber
+#: lang/json/TOOL_from_json.py
+msgid ""
+"The modifications made to this fencing saber may not be sporting, but they "
+"might give you an edge in this final competition. Extra effort has been "
+"made to insulate the grip and a high voltage stun gun has been attached to "
+"the guard, wired to the tip along the saber's groove. Thrusting the "
+"sharpened tip into a foe and activating the momentary switch will deliver a "
+"painful electric shock."
+msgstr ""
+
#. ~ Description for broadsword
#: lang/json/TOOL_from_json.py
msgid ""
@@ -71245,6 +74276,34 @@ msgid ""
"reinforce plastic items."
msgstr ""
+#: lang/json/TOOL_from_json.py
+msgid "synthetic fabric"
+msgid_plural "synthetic fabrics"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for synthetic fabric
+#: lang/json/TOOL_from_json.py
+msgid ""
+"This is small bolt of synthetic fabric. Unlike you and other natural "
+"materials, it won't degrade much with age. Maybe that's less of a bad thing "
+"now."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "lycra patch"
+msgid_plural "lycra patches"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for lycra patch
+#: lang/json/TOOL_from_json.py
+msgid ""
+"This is a small bolt of a synthetic fabric blended with stretchy lycra "
+"fibers. It could be used to make flexible yet strong clothing. Stylish, "
+"but bad for the environment; at least you're recycling it."
+msgstr ""
+
#: lang/json/TOOL_from_json.py
msgid "hexamine stove"
msgid_plural "hexamine stoves"
@@ -71713,8 +74772,7 @@ msgstr[1] ""
#: lang/json/TOOL_from_json.py
msgid ""
"This is a radio with a transmitting unit. You could use it to contact "
-"someone who also has one. Unfortunately no one seems to use those "
-"nowadays..."
+"someone who also has one. Unfortunately no one seems to use those nowadays…"
msgstr ""
#: lang/json/TOOL_from_json.py
@@ -71881,7 +74939,7 @@ msgstr[1] ""
#. ~ Description for microscope
#: lang/json/TOOL_from_json.py
msgid ""
-"A classic tool for the ages! This hefty, durable piece of lab equipment "
+"A classic tool for the ages! This hefty, durable piece of lab equipment "
"makes small things look bigger. Without electricity the light doesn't work, "
"but the rest of it is surprisingly functional. Unfortunately it's not "
"useful for very much at the moment."
@@ -72074,7 +75132,7 @@ msgstr[1] ""
msgid ""
"A long, thick, heavy-duty cable with power leads on either end. It looks "
"like you could use it to hook up two vehicles to each other, though you "
-"expect the power loss would be noticeable. Can also link other electrical "
+"expect the power loss would be noticeable. Can also link other electrical "
"systems."
msgstr ""
@@ -72455,12 +75513,116 @@ msgid ""
"to a potato."
msgstr ""
+#: lang/json/TOOL_from_json.py
+msgid "heat cube"
+msgid_plural "heat cubes"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action menu_text for heat cube.
+#: lang/json/TOOL_from_json.py
+msgid "Activate torch mode"
+msgstr ""
+
+#. ~ Use action msg for heat cube.
+#: lang/json/TOOL_from_json.py
+msgid ""
+"You push the torch button and the cube emits a large flame from the top, one "
+"that does radiate heat, but won't burn anything."
+msgstr ""
+
+#. ~ Description for heat cube
+#: lang/json/TOOL_from_json.py
+msgid ""
+"A smooth steel cube the size of your fist. Several buttons on the sides "
+"activate the powers of the cube."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "heat cube (torch on)"
+msgid_plural "heat cubes (torch on)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Use action msg for heat cube (torch on).
+#: lang/json/TOOL_from_json.py
+msgid "The torch flame is extinguished."
+msgstr ""
+
+#. ~ Description for heat cube (torch on)
+#: lang/json/TOOL_from_json.py
+msgid ""
+"The heat cube in the torch configuration, where it emits warmth and a bright "
+"flame that does not burn."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "skeleton key of opening"
+msgid_plural "skeleton key of opening"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for skeleton key of opening
+#: lang/json/TOOL_from_json.py
+msgid ""
+"A small gold skeleton key. You can activate it to unlock locked things."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "everburning torch"
+msgid_plural "everburning torches"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for everburning torch
+#: lang/json/TOOL_from_json.py
+msgid ""
+"This is a high quality engraved wooden torch. On command, the tip bursts "
+"into flame and produces a fair amount of light. It will burn forever."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "enchanted tailor's kit"
+msgid_plural "enchanted tailor's kits"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for enchanted tailor's kit
+#: lang/json/TOOL_from_json.py
+msgid ""
+"This is a high quality, engraved steel kit with a variety of needles, some "
+"plastic spools for thread, some small scissors, even a small heating element "
+"for melting and joining plastic. Use a tailor's kit to customize your "
+"clothing and armor. This uses your tailoring skill. It also contains one "
+"of those magic spiders that constantly, if slowly, makes new thread."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "spider box"
+msgid_plural "spider boxes"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for spider box
+#: lang/json/TOOL_from_json.py
+msgid ""
+"This is a small glass box that contains a spider that diligently works day "
+"and night to produce silk thread that it stores in a reservoir you can open "
+"and retrieve it from."
+msgstr ""
+
#: lang/json/TOOL_from_json.py
msgid "Magic Wand"
msgid_plural "Magic Wands"
msgstr[0] ""
msgstr[1] ""
+#: lang/json/TOOL_from_json.py
+msgid "Disposable Wand"
+msgid_plural "Disposable Wands"
+msgstr[0] ""
+msgstr[1] ""
+
#: lang/json/TOOL_from_json.py
msgid "minor wand of magic missile"
msgid_plural "minor wands of magic missile"
@@ -72623,6 +75785,168 @@ msgid_plural "greater wands of cone of cold"
msgstr[0] ""
msgstr[1] ""
+#: lang/json/TOOL_from_json.py
+msgid "disposable minor wand of magic missile"
+msgid_plural "disposable minor wands of magic missile"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for disposable minor wand of magic missile
+#. ~ Description for disposable lesser wand of magic missile
+#. ~ Description for disposable greater wand of magic missile
+#: lang/json/TOOL_from_json.py
+msgid ""
+"A slender wooden wand with an embedded mana crystal at the base that casts a "
+"spell when activated. This wand casts magic missile."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable lesser wand of magic missile"
+msgid_plural "disposable lesser wands of magic missile"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable greater wand of magic missile"
+msgid_plural "disposable greater wands of magic missile"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable minor wand of fireball"
+msgid_plural "disposable minor wands of fireball"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for disposable minor wand of fireball
+#. ~ Description for disposable lesser wand of fireball
+#. ~ Description for disposable greater wand of fireball
+#: lang/json/TOOL_from_json.py
+msgid ""
+"A slender wooden wand with an embedded mana crystal at the base that casts a "
+"spell when activated. This wand casts fireball."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable lesser wand of fireball"
+msgid_plural "disposable lesser wands of fireball"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable greater wand of fireball"
+msgid_plural "disposable greater wands of fireball"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable minor wand of mana beam"
+msgid_plural "disposable minor wands of mana beam"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for disposable minor wand of mana beam
+#. ~ Description for disposable lesser wand of mana beam
+#. ~ Description for disposable greater wand of mana beam
+#: lang/json/TOOL_from_json.py
+msgid ""
+"A slender wooden wand with an embedded mana crystal at the base that casts a "
+"spell when activated. This wand casts mana beam."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable lesser wand of mana beam"
+msgid_plural "disposable lesser wands of mana beam"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable greater wand of mana beam"
+msgid_plural "disposable greater wands of mana beam"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable minor wand of point flare"
+msgid_plural "disposable minor wands of point flare"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for disposable minor wand of point flare
+#. ~ Description for disposable lesser wand of point flare
+#. ~ Description for disposable greater wand of point flare
+#: lang/json/TOOL_from_json.py
+msgid ""
+"A slender wooden wand with an embedded mana crystal at the base that casts a "
+"spell when activated. This wand casts point flare."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable lesser wand of point flare"
+msgid_plural "disposable lesser wands of point flare"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable greater wand of point flare"
+msgid_plural "disposable greater wands of point flare"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable minor wand of hoary blast"
+msgid_plural "disposable minor wands of hoary blast"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for disposable minor wand of hoary blast
+#. ~ Description for disposable lesser wand of hoary blast
+#. ~ Description for disposable greater wand of hoary blast
+#: lang/json/TOOL_from_json.py
+msgid ""
+"A slender wooden wand with an embedded mana crystal at the base that casts a "
+"spell when activated. This wand casts hoary blast."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable lesser wand of hoary blast"
+msgid_plural "disposable lesser wands of hoary blast"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable greater wand of hoary blast"
+msgid_plural "disposable greater wands of hoary blast"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable minor wand of cone of cold"
+msgid_plural "disposable minor wands of cone of cold"
+msgstr[0] ""
+msgstr[1] ""
+
+#. ~ Description for disposable minor wand of cone of cold
+#. ~ Description for disposable lesser wand of cone of cold
+#. ~ Description for disposable greater wand of cone of cold
+#: lang/json/TOOL_from_json.py
+msgid ""
+"A slender wooden wand with an embedded mana crystal at the base that casts a "
+"spell when activated. This wand casts cone of cold."
+msgstr ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable lesser wand of cone of cold"
+msgid_plural "disposable lesser wands of cone of cold"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/TOOL_from_json.py
+msgid "disposable greater wand of cone of cold"
+msgid_plural "disposable greater wands of cone of cold"
+msgstr[0] ""
+msgstr[1] ""
+
#: lang/json/TOOL_from_json.py
msgid "owlbear gastrolith"
msgid_plural "owlbear gastroliths"
@@ -73284,12 +76608,6 @@ msgid ""
"This is a stick that has been cut into a trigger mechanism for a snare trap."
msgstr ""
-#: lang/json/TOOL_from_json.py
-msgid "Laevateinn"
-msgid_plural "Laevateinns"
-msgstr[0] ""
-msgstr[1] ""
-
#. ~ Description for Laevateinn
#: lang/json/TOOL_from_json.py
msgid ""
@@ -74456,6 +77774,17 @@ msgid ""
"terribly when not on a rail."
msgstr ""
+#: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py
+msgid "pair of small rail wheels"
+msgstr ""
+
+#. ~ Description for pair of small rail wheels
+#: lang/json/WHEEL_from_json.py
+msgid ""
+"A pair of small rail wheels. It fits small railroad rails found in places "
+"like amusement parks. Mostly for hobby purposes rather then transportation."
+msgstr ""
+
#: lang/json/WHEEL_from_json.py lang/json/vehicle_part_from_json.py
msgid "motorbike wheel"
msgstr ""
@@ -74815,6 +78144,10 @@ msgstr ""
msgid "cranking"
msgstr ""
+#: lang/json/activity_type_from_json.py
+msgid "heating"
+msgstr ""
+
#: lang/json/activity_type_from_json.py
msgid "de-stressing"
msgstr ""
@@ -75098,6 +78431,10 @@ msgstr ""
msgid "pebbles"
msgstr ""
+#: lang/json/ammunition_type_from_json.py
+msgid "rocks"
+msgstr ""
+
#: lang/json/ammunition_type_from_json.py
msgid "shotcanisters"
msgstr ""
@@ -75452,7 +78789,7 @@ msgstr ""
#. ~ Description for Alloy Plating - Arms
#: lang/json/bionic_from_json.py
msgid ""
-"The flesh on your arms has been surgically replaced by alloy plating. "
+"The flesh on your arms has been surgically replaced by alloy plating. "
"Provides passive protection and can be used in conjunction with bionic "
"martial arts."
msgstr ""
@@ -75487,7 +78824,7 @@ msgstr ""
#. ~ Description for Alloy Plating - Legs
#: lang/json/bionic_from_json.py
msgid ""
-"The flesh on your legs has been surgically replaced by alloy plating. "
+"The flesh on your legs has been surgically replaced by alloy plating. "
"Provides passive protection and can be used in conjunction with bionic "
"martial arts."
msgstr ""
@@ -75783,15 +79120,20 @@ msgstr ""
#. ~ Description for Ethanol Burner
#: lang/json/bionic_from_json.py
-msgid ""
-"You burn alcohol as fuel in an extremely efficient reaction. However, you "
-"will still suffer the inebriating effects of the substance."
+msgid "You burn alcohol as fuel in an extremely efficient reaction."
msgstr ""
#: lang/json/bionic_from_json.py
msgid "Aero-Evaporator"
msgstr ""
+#. ~ Description for Aero-Evaporator
+#: lang/json/bionic_from_json.py
+msgid ""
+"This unit draws moisture from the surrounding air, which slowly trickles "
+"directly into your blood stream. It may fail in very dry environments."
+msgstr ""
+
#: lang/json/bionic_from_json.py
msgid "Diamond Cornea"
msgstr ""
@@ -75888,7 +79230,7 @@ msgid ""
"You don't think that capacitor is *meant* to glow, but it does, and usually "
"at bad times. A malfunctioning bionic randomly turns on and off, causing "
"you to glow and making you visible in the dark without improving how much "
-"you can see in the slighest."
+"you can see in the slightest."
msgstr ""
#: lang/json/bionic_from_json.py
@@ -76026,10 +79368,10 @@ msgid ""
msgstr ""
#: lang/json/bionic_from_json.py
-msgid "Mini-Flamethrower"
+msgid "Finger Lighter"
msgstr ""
-#. ~ Description for Mini-Flamethrower
+#. ~ Description for Finger Lighter
#: lang/json/bionic_from_json.py
msgid ""
"The index fingers of both hands have powerful fire starters which extend "
@@ -76056,8 +79398,8 @@ msgstr ""
#: lang/json/bionic_from_json.py
msgid ""
"Surgically embedded in your right hand is a powerful electromagnet, allowing "
-"you to indiscriminately pull all nearby magnetic objects towards you. "
-"Unlucky bystanders might be injured or killed by flying objects."
+"you to use your own strength to pull all nearby magnetic objects towards "
+"you. Unlucky bystanders might be injured or killed by flying objects."
msgstr ""
#: lang/json/bionic_from_json.py
@@ -76116,14 +79458,21 @@ msgstr ""
#: lang/json/bionic_from_json.py
msgid ""
"Inside your body is a fleet of tiny dormant robots. While activated they "
-"will flit about your body, repairing damage at 1 HP/s and stopping bleeding "
-"at the cost of power."
+"will flit about your body, repairing damage at 1 HP per minute and stopping "
+"bleeding at the cost of extra power and stored calories."
msgstr ""
#: lang/json/bionic_from_json.py
msgid "Artificial Night Generator"
msgstr ""
+#. ~ Description for Artificial Night Generator
+#: lang/json/bionic_from_json.py
+msgid ""
+"When active, this bionic eliminates all light within a 2 tile radius through "
+"destructive interference."
+msgstr ""
+
#: lang/json/bionic_from_json.py
msgid "Implanted Night Vision"
msgstr ""
@@ -76146,7 +79495,7 @@ msgstr ""
msgid ""
"You're really not sure how the CBM ended up in your nose, but no matter how "
"it got there this badly misplaced bionic makes it difficult to breathe. "
-"Increases mouth encumbrance by one."
+"Increases mouth encumbrance by ten."
msgstr ""
#: lang/json/bionic_from_json.py
@@ -76177,7 +79526,7 @@ msgstr ""
#: lang/json/bionic_from_json.py
msgid ""
"Due to a badly misplaced dielectric stylette, you are now suffering from "
-"mild optic neuropathy. Increases eye encumbrance by one."
+"mild optic neuropathy. Increases eye encumbrance by ten."
msgstr ""
#: lang/json/bionic_from_json.py
@@ -76210,7 +79559,7 @@ msgstr ""
#. ~ Description for Power Storage
#: lang/json/bionic_from_json.py
msgid ""
-"A Compact Bionics Module that increases your power capacity by 100 units. "
+"A Compact Bionics Module that increases your power capacity by 100 kJ. "
"Having at least one of these is a prerequisite to using powered bionics. "
"You will also need a power supply, found in various CBMs."
msgstr ""
@@ -76221,8 +79570,7 @@ msgstr ""
#. ~ Description for Power Storage Mk. II
#: lang/json/bionic_from_json.py
-msgid ""
-"A Compact Bionics Module that increases your power capacity by 250 units."
+msgid "A Compact Bionics Module that increases your power capacity by 250 kJ."
msgstr ""
#. ~ Description for Power Overload
@@ -76495,7 +79843,7 @@ msgstr ""
msgid ""
"Self-locking thumbs hold tight (even when you really don't want them to) and "
"don't let go (even when you'd rather they did). Increases hand encumbrance "
-"by two, while failing to improve your ability to hold objects whatsoever."
+"by ten, while failing to improve your ability to hold objects whatsoever."
msgstr ""
#: lang/json/bionic_from_json.py
@@ -76623,8 +79971,8 @@ msgstr ""
#. ~ Description for Gasoline Fuel Cell CBM
#: lang/json/bionic_from_json.py
msgid ""
-"A small gasoline fuel cell fixed to your scapula. Despite its limited energy "
-"output compared to other fuel cells, this device still produces a "
+"A small gasoline fuel cell fixed to your scapula. Despite its limited "
+"energy output compared to other fuel cells, this device still produces a "
"significant amount of heat dissipated through a heat exhaust protruding from "
"your back. A diffuse network of bio-plastic bladders has been meshed with "
"your circulatory system and serves as a fuel tank."
@@ -76677,7 +80025,7 @@ msgstr ""
#: lang/json/bionic_from_json.py
msgid ""
"A set of highly sensitive sensors is installed in your mouth, and a small "
-"yet sophisticated analyzer is installed in the cavity of your skull. The "
+"yet sophisticated analyzer is installed in the cavity of your skull. The "
"active bionic will nullify the taste of all comestibles with negative "
"enjoyment value at the cost of draining bionic power."
msgstr ""
@@ -76868,6 +80216,7 @@ msgstr ""
#: lang/json/bodypart_from_json.py
#: src/armor_layers.cpp src/character.cpp src/debug_menu.cpp
+#: src/debug_menu.cpp
msgid "Torso"
msgstr ""
@@ -76887,6 +80236,7 @@ msgstr ""
#: lang/json/bodypart_from_json.py
#: src/armor_layers.cpp src/character.cpp src/debug_menu.cpp
+#: src/debug_menu.cpp
msgid "Head"
msgstr ""
@@ -77370,6 +80720,18 @@ msgstr ""
msgid "Make Woodchip Floor"
msgstr ""
+#: lang/json/construction_from_json.py
+msgid "Make Gravel Floor"
+msgstr ""
+
+#: lang/json/construction_from_json.py
+msgid "Build Straight Small Railroad Track"
+msgstr ""
+
+#: lang/json/construction_from_json.py
+msgid "Build Diagonal Small Railroad Track"
+msgstr ""
+
#: lang/json/construction_from_json.py
msgid "Build Wooden Floor"
msgstr ""
@@ -77482,6 +80844,14 @@ msgstr ""
msgid "Needs to be supported on both sides by fencing, walls, etc."
msgstr ""
+#: lang/json/construction_from_json.py
+msgid "Build Screen Door"
+msgstr ""
+
+#: lang/json/construction_from_json.py
+msgid "Build Screen Mesh Wall"
+msgstr ""
+
#: lang/json/construction_from_json.py
msgid "Build Chickenwire Fence"
msgstr ""
@@ -77522,6 +80892,10 @@ msgstr ""
msgid "Build Bookcase"
msgstr ""
+#: lang/json/construction_from_json.py
+msgid "Build Entertainment Center"
+msgstr ""
+
#: lang/json/construction_from_json.py
msgid "Build Locker"
msgstr ""
@@ -77554,6 +80928,10 @@ msgstr ""
msgid "Place Table"
msgstr ""
+#: lang/json/construction_from_json.py
+msgid "Build Coffee Table"
+msgstr ""
+
#: lang/json/construction_from_json.py
msgid "Build Workbench"
msgstr ""
@@ -78004,6 +81382,10 @@ msgstr ""
msgid "Build a radio tower console."
msgstr ""
+#: lang/json/construction_from_json.py
+msgid "Build Log Stool"
+msgstr ""
+
#: lang/json/construction_from_json.py
msgid "Convert Fridge Power Supply"
msgstr ""
@@ -78699,6 +82081,42 @@ msgstr ""
msgid "You dream of bees fighting over your sweet nectar. Mmm."
msgstr ""
+#: lang/json/dream_from_json.py
+msgid ""
+"How grand it would be to sink your roots deep into the soil as the seasons "
+"pass you by."
+msgstr ""
+
+#: lang/json/dream_from_json.py
+msgid "You dream of a gigantic knot of roots, beating like a heart."
+msgstr ""
+
+#: lang/json/dream_from_json.py
+msgid "You have a disturbing dream of termites chewing all over your body."
+msgstr ""
+
+#: lang/json/dream_from_json.py
+msgid ""
+"You dream of sharing your roots with a vast forest, all plants provided for "
+"as the canopy grows ever upwards."
+msgstr ""
+
+#: lang/json/dream_from_json.py
+msgid "A family of caterpillars munches away at your leaves."
+msgstr ""
+
+#: lang/json/dream_from_json.py
+msgid ""
+"Fire rages around you, licking at your bark and engulfing the saplings and "
+"bushes near your roots. The once chatty forest is quiet in its wake."
+msgstr ""
+
+#: lang/json/dream_from_json.py
+msgid ""
+"You dream of communing with an ancient pine. Trees are the true survivors "
+"of this world, it tells you."
+msgstr ""
+
#: lang/json/dream_from_json.py
msgid ""
"A rather attractive triffid offers you a bouquet of ape heads. How "
@@ -79963,6 +83381,25 @@ msgstr ""
msgid "You tremble"
msgstr ""
+#: lang/json/effects_from_json.py
+msgid "Seizure"
+msgstr ""
+
+#. ~ Description of effect 'Seizure'.
+#: lang/json/effects_from_json.py
+msgid "Your muscles have seized up, and you can't control them!"
+msgstr ""
+
+#. ~ Remove message for effect(s) 'Seizure'.
+#: lang/json/effects_from_json.py
+msgid "You regain control of your muscles!"
+msgstr ""
+
+#. ~ Miss message for effect(s) 'Seizure'.
+#: lang/json/effects_from_json.py
+msgid "Your muscles won't cooperate!"
+msgstr ""
+
#: lang/json/effects_from_json.py
msgid "Bleeding"
msgstr ""
@@ -80861,6 +84298,26 @@ msgstr ""
msgid "Your metabolism becomes more stable."
msgstr ""
+#: lang/json/effects_from_json.py
+msgid "Concerning symptoms"
+msgstr ""
+
+#. ~ Description of effect 'Concerning symptoms'.
+#: lang/json/effects_from_json.py
+msgid "Your muscles keep twitching strangely."
+msgstr ""
+
+#: lang/json/effects_from_json.py
+msgid "Unnerving symptoms"
+msgstr ""
+
+#. ~ Description of effect 'Unnerving symptoms'.
+#: lang/json/effects_from_json.py
+msgid ""
+"Your nervous system is malfunctioning, almost like it's being torn apart "
+"from the inside."
+msgstr ""
+
#: lang/json/effects_from_json.py
msgid "Lit up"
msgstr ""
@@ -81106,6 +84563,17 @@ msgstr ""
msgid "You've been struck by lightning, and feel... different."
msgstr ""
+#: lang/json/effects_from_json.py
+msgid "Grown of Fusion"
+msgstr ""
+
+#. ~ Description of effect 'Grown of Fusion'.
+#: lang/json/effects_from_json.py
+msgid ""
+"AI effect to increase stats after fusing with another critter. 1 stack means "
+"one absorbed max_hp."
+msgstr ""
+
#: lang/json/effects_from_json.py
msgid "Religious Offense"
msgstr ""
@@ -81713,6 +85181,191 @@ msgid ""
"the commotion."
msgstr ""
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Became a hunter after your death, living alone in the woods. Traced "
+"back to his cabin, he was murdered and devoured in his sleep by an actual "
+"cannibal."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Survived for many years, and became a renowned scavenger, eventually "
+"setting up a small shop in a Free Merchant outpost. Survived by two sons, "
+"he died after a rare artifact poisoned his blood with acid."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" He wandered and scavenged the land for years after your death, "
+"eventually becoming a skilled mechanic. Employed by the Free Merchants, he "
+"lived a comfortable, if rather uneventful life, dying of cancer, a rare "
+"luxury these days."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Became truly depressed after your death and hid in the woods. If "
+"rumors are to be believed, he spent years living as a deranged hermit in a "
+"distant cave, worshiping stones and sacrificing dogs."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" After your death, he became obsessed with preserving old knowledge and "
+"eventually became known as 'the lorekeeper'. Hired by the Old Guard as a "
+"librarian, he spent his life amongst dusty old books, trying to convince "
+"others of their value. He even changed his name to Frederic Bastiat, in "
+"honor of an old French philosopher."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" He found faith after your death, eventually joining an Anglican "
+"community and becoming a Vicar. The crucifix provided him with a sense of "
+"meaning, before dying horribly at the hands of raiders. He was still "
+"praying when they roasted him alive."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Lost and damned, he joined a bloody cult after your death, kidnapping "
+"and sacrificing young women. His entire group was killed after being "
+"discovered by the Old Guard. His head was put on a spike as a reminder that "
+"cultists will not be tolerated."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" He did not survive for long after your death. Electrocuted in an old "
+"cellar, he kept screaming your name. His body was never found."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Survived you by just a few days, he drowned trying to escape from a "
+"horde."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" He wandered alone for days, before finding a Free Merchant outpost. He "
+"spent a few years as a caravan guard, often drinking himself half blind and "
+"enjoying any woman he could find. Booze made his grip unsteady and he was "
+"eventually fired. He died of alcohol poisoning the same day."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Obsessed with the idea of settling down, he eventually found love and "
+"retired to a farm in the middle of nowhere. Relatively safe from the "
+"monsters, he thrived for years. Survived by seven sons and two daughters."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Became famous in the wastes after finding an old brewery and copying "
+"their recipe. His chilled beer, a known delicacy, is traded far and wide by "
+"the Free Merchants."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Found a whole cellar of single malt whisky. Drank himself to death."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Depressed after your death, he would hang himself after just a few days."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Wandered for months, before finding a small community that would accept "
+"him. Became a farmer and spent the rest of his uneventful life tending to "
+"crops, glad that he was no longer alone."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Obsessed with finding 'the Cure', he died a few weeks later in an old "
+"lab, torn to shreds by a security turret."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Became a runner for the Refugee Center and died after a few months."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Joined a raider gang and died in a firefight a few weeks later, trying "
+"to rob a Free Merchant caravan."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Traveled north, he eventually found an intact baseball field and built "
+"a prosperous farming community there."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" He spent the rest of his short life looking for a new fix. Died of an "
+"overdose in an abandoned basement."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Traveled south and joined a small fishing village. Died a few years "
+"later in a raider attack, alongside his young son."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Thoroughly terrified by your death, he retired to an old LMOE shelter, "
+"vowing never to leave. He died of starvation inside."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" He became a very prosperous game hunter, trading meat and furs, and "
+"providing many settlements with food in exchange for booze and male "
+"company. He died years later of an STD."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Retired to the woods, he spent the rest of his life fishing and hunting "
+"in a desolate cabin, rarely interacting with anyone else."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Died en route to California, deliriously dreaming of a better life as "
+"he was slowly devoured by spiders."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" He tried to cope with loneliness after your death, but failed. He was "
+"blind drunk when a group of zombies found his hideout and didn't stand a "
+"chance."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" He didn't survive for long, waking up to a horde of zombies. They "
+"smashed through his fortified windows in a pinch and only the last bullet "
+"prevented him from being devoured alive."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" He got sick soon after your death, and died without any medical help. "
+"His last words were 'Why did I live long enough to suffer like that?'"
+msgstr ""
+
#: lang/json/epilogue_from_json.py
msgid ""
" Committed suicide rather than fall into the hands of the Hell's "
@@ -81932,6 +85585,167 @@ msgid ""
"weeks after being dragged to her cell she died from dehydration."
msgstr ""
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Shot by the Old Guard a few weeks later, hunted down after she robbed "
+"an important caravan."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Traveled north, she eventually found a quiet community there and spent "
+"the rest of her life farming. She's survived by four daughters."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" She became a runner for the Old Guard and was eventually permitted to "
+"join. She spent the rest of her life hunting raiders. She died in a "
+"skirmish after a few years, sacrificing her life to let her unit retreat. "
+"Her name is venerated in songs and inscriptions."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Shortly after your death she joined the Free Merchants, becoming a "
+"caravan guard and after a few months became the new liaison in the Refugee "
+"Center. She died a few years later of a mysterious illness."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" She was found half-dead by the Old Guard who took her in. She became a "
+"famous scavenger, known for finding an intact stash of experimental "
+"antibiotics."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" She retired to the forest, where she built her own cabin and spending "
+"the rest of her life fishing."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Captured by raiders, she spent the rest of her miserable life as a "
+"slave. Hopeless, she slit her wrists with a rusty knife."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Depressed, she joined a protestant community and became a paragon of "
+"virtue. Devoting her life to bible study, she spent the rest of her life in "
+"relative peace."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Killed and devoured by a cannibal just a few days after your death, "
+"hardly anyone remembers her name."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Became a renowned merchant after your death, she built her own outpost "
+"in the west. An avid book collector, she established a great library to "
+"keep the flame of knowledge burning."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Traveled around for months before finding an old farm. She spent a few "
+"years tending to her crops and living the life of a hermit before being "
+"killed by raiders for fun."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Traveled south and joined a settlement there. She became a renowned "
+"engineer, building the largest steam engine in New England."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Joined a gang after your death, she spent months preying on the "
+"innocent, before dying in a dispute with a fellow brute."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Devoured alive by a group of zombies, she kept thinking of you as she "
+"died."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" She found an abandoned APC and spent years traveling around and "
+"collecting personal stories. She wrote one of the few post-apocalyptic "
+"books, detailing the life after the end."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Kept wandering for years. Her life was cut short when a group of "
+"raiders used her as a target practice."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" She became a skilled game hunter and one of the best shots in the "
+"wasteland. Years later she joined the Old Guard and was given the position "
+"of Marshal."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Desperate to save humanity from extinction, she organized her own group "
+"of survivors, whose job was to hunt bandits and decorate roads with their "
+"mutilated bodies. She died in a skirmish a few months later."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" She became an arsonist, and was incinerated a few weeks later in a fire "
+"she set."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" She kept wandering for a few weeks but eventually died after drinking "
+"untreated water."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" She wandered north and joined a local community there. She became "
+"known for her trapping skills and ensured that the locals always had fresh "
+"meat on their tables."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" She joined the Free Merchants and led their first caravan to Canada. "
+"She died a few years later of dysentery."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" She built a boat and sailed east towards Europe, hoping that it was not "
+"affected by the apocalypse. She was never heard from again."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" She led a doomsday cult for a few years, she was sacrificed to their "
+"gods after a particularly terrible harvest."
+msgstr ""
+
+#: lang/json/epilogue_from_json.py
+msgid ""
+" Became obsessed with chems, and died of an overdose a few months after "
+"your death."
+msgstr ""
+
#: lang/json/faction_from_json.py
msgid "Your Followers"
msgstr ""
@@ -82083,10 +85897,10 @@ msgid "A small family surviving on their generational land."
msgstr ""
#: lang/json/faction_from_json.py
-msgid "God's Community"
+msgid "New England Church Community"
msgstr ""
-#. ~ Description for God's Community
+#. ~ Description for New England Church Community
#: lang/json/faction_from_json.py
msgid ""
"A small group of churchgoers that formed a community in the woods. They "
@@ -82123,142 +85937,297 @@ msgstr ""
msgid "Dusty"
msgstr ""
-#. ~ Description for Dusty
+#. ~ description for fault 'Dusty'
#: lang/json/fault_from_json.py
-msgid "It's dusty. Has no effect - obsolete fault."
+msgid "It's dusty. Has no effect - obsolete fault."
+msgstr ""
+
+#. ~ name of mending method for fault 'Dusty'
+#: lang/json/fault_from_json.py
+msgid "Wipe clean"
+msgstr ""
+
+#. ~ success message for mending method 'Wipe clean' of fault 'Dusty'
+#. ~ success message for mending method 'Clean gun' of fault 'Fouling'
+#: lang/json/fault_from_json.py
+#, python-format
+msgid "You clean you %s."
msgstr ""
#: lang/json/fault_from_json.py
msgid "Already deployed"
msgstr ""
-#. ~ Description for Already deployed
+#. ~ description for fault 'Already deployed'
#: lang/json/fault_from_json.py
msgid "This bionic needs to be reset to its factory state."
msgstr ""
+#. ~ name of mending method for fault 'Already deployed'
+#: lang/json/fault_from_json.py
+msgid "Reset to factory state"
+msgstr ""
+
+#. ~ success message for mending method 'Reset to factory state' of fault 'Already deployed'
+#: lang/json/fault_from_json.py
+#, python-format
+msgid "You successfully reset the %s to its factory state"
+msgstr ""
+
#: lang/json/fault_from_json.py
msgid "Blackpowder fouling"
msgstr ""
-#. ~ Description for Blackpowder fouling
+#. ~ description for fault 'Blackpowder fouling'
#: lang/json/fault_from_json.py
msgid ""
"Firing blackpowder loads from a gun fouls it, which reduces reliability and, "
-"if left uncleaned, leads to rust. It fouls the gun much faster than the use "
-"of modern smokeless powder cartridges. Fouling is only a significant impact "
+"if left uncleaned, leads to rust. It fouls the gun much faster than the use "
+"of modern smokeless powder cartridges. Fouling is only a significant impact "
"on reliability at high levels, but black powder fouling accumulates quickly."
msgstr ""
+#. ~ name of mending method for fault 'Blackpowder fouling'
+#: lang/json/fault_from_json.py
+msgid "Clean blackpowder fouling"
+msgstr ""
+
+#. ~ success message for mending method 'Clean blackpowder fouling' of fault 'Blackpowder fouling'
+#: lang/json/fault_from_json.py
+#, python-format
+msgid "You clean your %s."
+msgstr ""
+
#: lang/json/fault_from_json.py
msgid "Spent casing in chamber"
msgstr ""
-#. ~ Description for Spent casing in chamber
+#. ~ description for fault 'Spent casing in chamber'
#: lang/json/fault_from_json.py
msgid ""
"This gun currently has an empty casing chambered. It will have to be "
"removed before firing."
msgstr ""
+#. ~ name of mending method for fault 'Spent casing in chamber'
+#: lang/json/fault_from_json.py
+msgid "Eject spent casing"
+msgstr ""
+
+#. ~ success message for mending method 'Eject spent casing' of fault 'Spent casing in chamber'
+#: lang/json/fault_from_json.py
+#, python-format
+msgid "You eject the spent casing from the %s."
+msgstr ""
+
#: lang/json/fault_from_json.py
msgid "Fouling"
msgstr ""
-#. ~ Description for Fouling
+#. ~ description for fault 'Fouling'
#: lang/json/fault_from_json.py
msgid ""
"Fouling is caused by firing gunpowder loads repeatedly, which reduces "
-"reliability and can eventually cause damage to the gun. Fouling accumulates "
+"reliability and can eventually cause damage to the gun. Fouling accumulates "
"slowly (unless blackpowder is used) due to the design of modern smokeless "
"powder found in the vast majority of retail cartridges and it is not a "
"significant problem until high levels of fouling are reached due to firing "
"thousands of rounds without cleaning your firearm."
msgstr ""
+#. ~ name of mending method for fault 'Fouling'
+#: lang/json/fault_from_json.py
+msgid "Clean gun"
+msgstr ""
+
#: lang/json/fault_from_json.py
msgid "Worn drive belt"
msgstr ""
-#. ~ Description for Worn drive belt
+#. ~ description for fault 'Worn drive belt'
#: lang/json/fault_from_json.py
msgid "Required for operation of an attached alternator."
msgstr ""
+#. ~ name of mending method for fault 'Worn drive belt'
+#: lang/json/fault_from_json.py
+msgid "Replace worn drive belt"
+msgstr ""
+
+#. ~ success message for mending method 'Replace worn drive belt' of fault 'Worn drive belt'
+#: lang/json/fault_from_json.py
+#, python-format
+msgid "You replace the worn drive belt of the %s."
+msgstr ""
+
#: lang/json/fault_from_json.py
msgid "Faulty glow plugs"
msgstr ""
-#. ~ Description for Faulty glow plugs
+#. ~ description for fault 'Faulty glow plugs'
#: lang/json/fault_from_json.py
msgid "Help when starting an engine in low ambient temperatures."
msgstr ""
+#. ~ name of mending method for fault 'Faulty glow plugs'
+#: lang/json/fault_from_json.py
+msgid "Replace faulty glow plugs"
+msgstr ""
+
+#. ~ success message for mending method 'Replace faulty glow plugs' of fault 'Faulty glow plugs'
+#: lang/json/fault_from_json.py
+#, python-format
+msgid "You replace the faulty glow plugs of the %s."
+msgstr ""
+
#: lang/json/fault_from_json.py
msgid "Active immobiliser"
msgstr ""
-#. ~ Description for Active immobiliser
+#. ~ description for fault 'Active immobiliser'
#: lang/json/fault_from_json.py
msgid "Prevents starting of the vehicle without the appropriate key."
msgstr ""
+#. ~ name of mending method for fault 'Active immobiliser'
+#: lang/json/fault_from_json.py
+msgid "Deactivate immobiliser"
+msgstr ""
+
+#. ~ description for mending method 'Deactivate immobiliser' of fault 'Active immobiliser'
+#: lang/json/fault_from_json.py
+msgid ""
+"Deactivate the immobiliser that is preventing the vehicle from starting."
+msgstr ""
+
+#. ~ success message for mending method 'Deactivate immobiliser' of fault 'Active immobiliser'
+#: lang/json/fault_from_json.py
+#, python-format
+msgid "You successfully deactivate the immobiliser of the %s."
+msgstr ""
+
#: lang/json/fault_from_json.py
msgid "Faulty diesel pump"
msgstr ""
-#. ~ Description for Faulty diesel pump
+#. ~ description for fault 'Faulty diesel pump'
#: lang/json/fault_from_json.py
msgid "Required to pump and pressurize diesel from a vehicles tank."
msgstr ""
+#. ~ name of mending method for fault 'Faulty diesel pump'
+#: lang/json/fault_from_json.py
+msgid "Replace faulty diesel pump"
+msgstr ""
+
+#. ~ success message for mending method 'Replace faulty diesel pump' of fault 'Faulty diesel pump'
+#: lang/json/fault_from_json.py
+#, python-format
+msgid "You replace the faulty diesel pump of the %s"
+msgstr ""
+
#: lang/json/fault_from_json.py
msgid "Expired air filter"
msgstr ""
-#. ~ Description for Expired air filter
+#. ~ description for fault 'Expired air filter'
#: lang/json/fault_from_json.py
msgid ""
"An expired filter reduces fuel efficiency and increases smoke production."
msgstr ""
+#. ~ name of mending method for fault 'Expired air filter'
+#: lang/json/fault_from_json.py
+msgid "Replace expired air filter"
+msgstr ""
+
+#. ~ success message for mending method 'Replace expired air filter' of fault 'Expired air filter'
+#: lang/json/fault_from_json.py
+#, python-format
+msgid "You replace the expired air filter of the %s."
+msgstr ""
+
#: lang/json/fault_from_json.py
msgid "Expired fuel filter"
msgstr ""
-#. ~ Description for Expired fuel filter
+#. ~ description for fault 'Expired fuel filter'
#: lang/json/fault_from_json.py
msgid ""
"An expired filter reduces performance and increases the chance of backfires."
msgstr ""
+#. ~ name of mending method for fault 'Expired fuel filter'
+#: lang/json/fault_from_json.py
+msgid "Replace expired fuel filter"
+msgstr ""
+
+#. ~ success message for mending method 'Replace expired fuel filter' of fault 'Expired fuel filter'
+#: lang/json/fault_from_json.py
+#, python-format
+msgid "You replace the expired fuel filter of the %s."
+msgstr ""
+
#: lang/json/fault_from_json.py
msgid "Faulty fuel pump"
msgstr ""
-#. ~ Description for Faulty fuel pump
+#. ~ description for fault 'Faulty fuel pump'
#: lang/json/fault_from_json.py
msgid "Required to pump gasoline from a vehicles tank."
msgstr ""
+#. ~ name of mending method for fault 'Faulty fuel pump'
+#: lang/json/fault_from_json.py
+msgid "Replace faulty fuel pump"
+msgstr ""
+
+#. ~ success message for mending method 'Replace faulty fuel pump' of fault 'Faulty fuel pump'
+#: lang/json/fault_from_json.py
+#, python-format
+msgid "You replace the faulty fuel pump of the %s."
+msgstr ""
+
#: lang/json/fault_from_json.py
msgid "Faulty water pump"
msgstr ""
-#. ~ Description for Faulty water pump
+#. ~ description for fault 'Faulty water pump'
#: lang/json/fault_from_json.py
msgid "Required to pump water to an external radiator or heatsink."
msgstr ""
+#. ~ name of mending method for fault 'Faulty water pump'
+#: lang/json/fault_from_json.py
+msgid "Replace faulty water pump"
+msgstr ""
+
+#. ~ success message for mending method 'Replace faulty water pump' of fault 'Faulty water pump'
+#: lang/json/fault_from_json.py
+#, python-format
+msgid "You replace the faulty water pump of the %s."
+msgstr ""
+
#: lang/json/fault_from_json.py
msgid "Faulty starter motor"
msgstr ""
-#. ~ Description for Faulty starter motor
+#. ~ description for fault 'Faulty starter motor'
#: lang/json/fault_from_json.py
msgid "Required to initially start the engine."
msgstr ""
+#. ~ name of mending method for fault 'Faulty starter motor'
+#: lang/json/fault_from_json.py
+msgid "Replace faulty starter motor"
+msgstr ""
+
+#. ~ success message for mending method 'Replace faulty starter motor' of fault 'Faulty starter motor'
+#: lang/json/fault_from_json.py
+#, python-format
+msgid "You replace the faulty starter motor of %s."
+msgstr ""
+
#: lang/json/field_type_from_json.py lang/json/overmap_terrain_from_json.py
#: lang/json/overmap_terrain_from_json.py src/mapdata.cpp
#: src/mapdata.cpp src/skill.cpp
@@ -82746,6 +86715,10 @@ msgstr ""
msgid "smoke vent"
msgstr ""
+#: lang/json/field_type_from_json.py
+msgid "clairvoyance"
+msgstr ""
+
#: lang/json/field_type_from_json.py
msgid "dreadful presense"
msgstr ""
@@ -82772,13 +86745,11 @@ msgid "A big, blocky metal device for refrigerating large areas."
msgstr ""
#: lang/json/furniture_from_json.py
-#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
#: lang/json/terrain_from_json.py
msgid "metal screeching!"
msgstr ""
#: lang/json/furniture_from_json.py
-#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
#: lang/json/terrain_from_json.py
msgid "clang!"
msgstr ""
@@ -82881,6 +86852,51 @@ msgid ""
"although it still has parts."
msgstr ""
+#: lang/json/furniture_from_json.py
+msgid "document shredder"
+msgstr ""
+
+#. ~ Description for document shredder
+#: lang/json/furniture_from_json.py
+msgid ""
+"It's not all about hiding government secrets, sometimes you just want to "
+"stop identity theft."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "server stack"
+msgstr ""
+
+#. ~ Description for server stack
+#: lang/json/furniture_from_json.py
+msgid "This is a big pile of computers. They're all turned off."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "large satellite dish"
+msgstr ""
+
+#. ~ Description for large satellite dish
+#: lang/json/furniture_from_json.py
+msgid ""
+"Somewhere up there, there are still satellites, orbiting and doing their "
+"thing, sending signals down to an Earth that is no longer listening."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "mounted solar panel"
+msgstr ""
+
+#. ~ Description for mounted solar panel
+#: lang/json/furniture_from_json.py
+msgid "A mounted solar panel."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+#: lang/json/terrain_from_json.py
+msgid "whack!"
+msgstr ""
+
#: lang/json/furniture_from_json.py
msgid "road barricade"
msgstr ""
@@ -82893,12 +86909,11 @@ msgstr ""
#: lang/json/furniture_from_json.py
#: lang/json/terrain_from_json.py
#: lang/json/terrain_from_json.py src/map.cpp
-#: src/mapdata.cpp
+#: src/mapdata.cpp src/vehicle_move.cpp
msgid "smash!"
msgstr ""
#: lang/json/furniture_from_json.py
-#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
#: lang/json/terrain_from_json.py
msgid "whump."
msgstr ""
@@ -82952,6 +86967,114 @@ msgstr ""
msgid "A sandbag wall."
msgstr ""
+#: lang/json/furniture_from_json.py
+msgid "standing mirror"
+msgstr ""
+
+#. ~ Description for standing mirror
+#: lang/json/furniture_from_json.py
+msgid "Lookin' good - is that blood?"
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "glass breaking"
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "broken standing mirror"
+msgstr ""
+
+#. ~ Description for broken standing mirror
+#: lang/json/furniture_from_json.py
+msgid ""
+"You could look at yourself, if the mirror wasn't covered in cracks and "
+"fractures."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "bitts"
+msgstr ""
+
+#. ~ Description for bitts
+#: lang/json/furniture_from_json.py
+msgid ""
+"Paired vertical iron posts mounted on a wharf, pier or quay. They are used "
+"to secure mooring lines, ropes, hawsers, or cables."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "manacles"
+msgstr ""
+
+#. ~ Description for manacles
+#: lang/json/furniture_from_json.py
+msgid ""
+"Chain serfs in your dungeon. All you need now is an iron ball to chain to "
+"it."
+msgstr ""
+
+#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
+#: lang/json/terrain_from_json.py
+msgid "crack."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "statue"
+msgstr ""
+
+#. ~ Description for statue
+#: lang/json/furniture_from_json.py
+msgid "A carved statue made of stone."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
+#: lang/json/terrain_from_json.py
+msgid "thump."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "mannequin"
+msgstr ""
+
+#. ~ Description for mannequin
+#: lang/json/furniture_from_json.py
+msgid ""
+"Put clothes on it, talk to it. Who's around to judge you? Wait… did it "
+"just move?"
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "birdbath"
+msgstr ""
+
+#. ~ Description for birdbath
+#: lang/json/furniture_from_json.py
+msgid "A decorative cement birdbath and pedestal."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "rotary clothes dryer line"
+msgstr ""
+
+#. ~ Description for rotary clothes dryer line
+#: lang/json/furniture_from_json.py
+msgid "A umbrella shaped clothes line mounted on a pole."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "floor lamp"
+msgstr ""
+
+#. ~ Description for floor lamp
+#: lang/json/furniture_from_json.py
+msgid "A tall standing lamp, meant to plug into a wall and light up a room."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "bonk!"
+msgstr ""
+
#: lang/json/furniture_from_json.py
msgid "indoor plant"
msgstr ""
@@ -83064,6 +87187,86 @@ msgid ""
"be used for planting crops. This one contains a planted seedling"
msgstr ""
+#: lang/json/furniture_from_json.py
+msgid "spider egg sack"
+msgstr ""
+
+#. ~ Description for spider egg sack
+#: lang/json/furniture_from_json.py
+msgid ""
+"Much too large, off-white egg sack. Kind of icky. Something IS moving in "
+"there."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "splat!"
+msgstr ""
+
+#. ~ Description for spider egg sack
+#: lang/json/furniture_from_json.py
+msgid ""
+"Bulbous mass of spider eggs. More than kind of icky. Something IS moving "
+"in there."
+msgstr ""
+
+#. ~ Description for spider egg sack
+#: lang/json/furniture_from_json.py
+msgid ""
+"A horrifyingly oversized egg sack. Something IS moving in there. If you're "
+"seeing this, you're already too close to it."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "ruptured egg sack"
+msgstr ""
+
+#. ~ Description for ruptured egg sack
+#: lang/json/furniture_from_json.py
+msgid "Super icky. Spider stuff's spilling out."
+msgstr ""
+
+#. ~ Description for swamp gas
+#: lang/json/furniture_from_json.py
+msgid ""
+"This is a pool of murkey water, it occassionaly bubbles, releasing a mildly "
+"toxic gas."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+#: src/ballistics.cpp src/map.cpp
+msgid "splash!"
+msgstr ""
+
+#. ~ Description for fog
+#: lang/json/furniture_from_json.py
+msgid "This is a misty cloud of fog."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "fake workbench hands"
+msgstr ""
+
+#. ~ Description for fake workbench hands
+#: lang/json/furniture_from_json.py
+msgid "This fake workbench holds the stats for working on a wielded item."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "ground crafting spot"
+msgstr ""
+
+#. ~ Description for ground crafting spot
+#: lang/json/furniture_from_json.py
+msgid ""
+"A cleared spot on the ground for crafting. Slower than using a workbench or "
+"holding a project in your hands, but readily available."
+msgstr ""
+
+#. ~ Description for seeing this is a bug
+#: lang/json/furniture_from_json.py
+msgid "Seeing this is a bug. If seen, please report and destroy."
+msgstr ""
+
#: lang/json/furniture_from_json.py
msgid "fireplace"
msgstr ""
@@ -83232,7 +87435,7 @@ msgstr ""
#: lang/json/furniture_from_json.py
#: lang/json/terrain_from_json.py
-#: src/iuse.cpp
+#: lang/json/terrain_from_json.py src/iuse.cpp
msgid "crunch!"
msgstr ""
@@ -83245,7 +87448,7 @@ msgstr ""
msgid ""
"This flower is like the other flowers taken by the mushrooms, but its bulb "
"is colored a brilliant cyan color, and it emits an aroma both overwhelming "
-"and... delicious?"
+"and… delicious?"
msgstr ""
#: lang/json/furniture_from_json.py
@@ -83282,19 +87485,109 @@ msgid ""
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "Autodoc Mk. XI"
+msgid "stone slab"
msgstr ""
-#. ~ Description for Autodoc Mk. XI
+#. ~ Description for stone slab
+#: lang/json/furniture_from_json.py
+msgid "A flat slab of heavy stone."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "headstone"
+msgstr ""
+
+#. ~ Description for headstone
+#: lang/json/furniture_from_json.py
+msgid "Keeps the bodies."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
+#: lang/json/terrain_from_json.py
+#: lang/json/terrain_from_json.py src/map.cpp src/mapdata.cpp
+msgid "thump!"
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "gravestone"
+msgstr ""
+
+#. ~ Description for gravestone
+#: lang/json/furniture_from_json.py
+msgid "Keeps the bodies. More fancy."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "worn gravestone"
+msgstr ""
+
+#. ~ Description for worn gravestone
+#: lang/json/furniture_from_json.py
+msgid "A worn-out gravestone."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "obelisk"
+msgstr ""
+
+#. ~ Description for obelisk
+#: lang/json/furniture_from_json.py
+msgid "Monument to pride."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "thunk!"
+msgstr ""
+
+#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
+msgid "robotic assembler"
+msgstr ""
+
+#. ~ Description for robotic assembler
#: lang/json/furniture_from_json.py
msgid ""
-"A surgical apparatus used for installation and uninstallation of bionics. "
-"It's only as skilled as its operator."
+"A durable and versatile robotic arm with a tool fitted to the end, for "
+"working on an assembly line."
+msgstr ""
+
+#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
+msgid "chemical mixer"
+msgstr ""
+
+#. ~ Description for chemical mixer
+#: lang/json/furniture_from_json.py
+msgid ""
+"When chemicals need to be mixed in large quantities at just the right "
+"combinations and temperatures, this is the tool for the job."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "robotic arm"
msgstr ""
+#. ~ Description for robotic arm
#: lang/json/furniture_from_json.py
+msgid ""
+"Automation! Science! Industry! Make a better horse! This robot arm "
+"promises to do it all. Except it's currently unpowered. You could remove "
+"the casing and retrieve the electronics through disassembly."
+msgstr ""
+
+#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
#: lang/json/terrain_from_json.py
-msgid "whack!"
+msgid "thunk."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "Autodoc Mk. XI"
+msgstr ""
+
+#. ~ Description for Autodoc Mk. XI
+#: lang/json/furniture_from_json.py
+msgid ""
+"A surgical apparatus used for installation and uninstallation of bionics. "
+"It's only as skilled as its operator."
msgstr ""
#: lang/json/furniture_from_json.py
@@ -83581,8 +87874,9 @@ msgstr ""
#: lang/json/furniture_from_json.py
msgid ""
"This is a meaty green stalactite with a thickened hide like that of a "
-"starfish, extending from the floor to the ceiling. In the center is a series "
-"of ports somewhat like mouths, from which pour bursts of a vile smelling gas."
+"starfish, extending from the floor to the ceiling. In the center is a "
+"series of ports somewhat like mouths, from which pour bursts of a vile "
+"smelling gas."
msgstr ""
#: lang/json/furniture_from_json.py
@@ -83608,10 +87902,6 @@ msgid ""
"out of injured vessels."
msgstr ""
-#: lang/json/furniture_from_json.py
-msgid "splat!"
-msgstr ""
-
#: lang/json/furniture_from_json.py
msgid "slimy pod"
msgstr ""
@@ -83656,7 +87946,7 @@ msgstr ""
#: lang/json/furniture_from_json.py
msgid ""
"This pulsing protuberance juts from the floor, its sides covered in scaled, "
-"oozing skin. The surface is flat, but undulates softly. A handful of "
+"oozing skin. The surface is flat, but undulates softly. A handful of "
"unidentifiable appendages reach from the sides, suggesting a sort of "
"nightmarish living autodoc."
msgstr ""
@@ -83813,12 +88103,6 @@ msgid ""
"your workout. Might have useful electronic parts in it."
msgstr ""
-#: lang/json/furniture_from_json.py
-#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
-#: lang/json/terrain_from_json.py src/map.cpp src/mapdata.cpp
-msgid "thump!"
-msgstr ""
-
#: lang/json/furniture_from_json.py
msgid "treadmill"
msgstr ""
@@ -83827,7 +88111,7 @@ msgstr ""
#: lang/json/furniture_from_json.py
msgid ""
"Used for training leg muscles. It'll be extra hard without power. Could be "
-"taken apart for its... parts."
+"taken apart for its… parts."
msgstr ""
#: lang/json/furniture_from_json.py
@@ -83853,7 +88137,7 @@ msgstr ""
#: lang/json/furniture_from_json.py
msgid ""
"The ol' ebony and ivory. Really classes up the place. You could take it "
-"apart if you wanted... you monster."
+"apart if you wanted… you monster."
msgstr ""
#: lang/json/furniture_from_json.py
@@ -83864,6 +88148,18 @@ msgstr ""
msgid "kerchang."
msgstr ""
+#: lang/json/furniture_from_json.py
+msgid "speaker cabinet"
+msgstr ""
+
+#. ~ Description for speaker cabinet
+#: lang/json/furniture_from_json.py
+msgid ""
+"A cabinet loaded with 12-inch speakers, intended to help make various things "
+"loud. It can't serve its original purpose these days, but it could be "
+"disassembled for various electronic parts."
+msgstr ""
+
#: lang/json/furniture_from_json.py
msgid "cell phone signal booster"
msgstr ""
@@ -83994,6 +88290,53 @@ msgstr ""
msgid "stool"
msgstr ""
+#. ~ Description for camp chair
+#: lang/json/furniture_from_json.py
+msgid "Sit down, have a drink. It can folded for easy transportation."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "log stool"
+msgstr ""
+
+#. ~ Description for log stool
+#: lang/json/furniture_from_json.py
+msgid ""
+"A log tipped on its end with any rough edges cut off. Basically a very "
+"simple seat."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "bulletin board"
+msgstr ""
+
+#. ~ Description for bulletin board
+#: lang/json/furniture_from_json.py
+msgid ""
+"A big, cork bulletin board capable of sporting various notices. Pin some "
+"notes for other survivors to read."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "sign"
+msgstr ""
+
+#. ~ Description for sign
+#: lang/json/furniture_from_json.py
+msgid "Read it. Warnings ahead."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "warning sign"
+msgstr ""
+
+#. ~ Description for warning sign
+#: lang/json/furniture_from_json.py
+msgid ""
+"A triangle-shaped sign on a post meant to indicate something important or "
+"hazard."
+msgstr ""
+
#: lang/json/furniture_from_json.py lang/json/vehicle_part_from_json.py
msgid "bed"
msgstr ""
@@ -84032,7 +88375,7 @@ msgstr ""
msgid "rrrrip!"
msgstr ""
-#. ~ Description for down_mattress
+#. ~ Description for down mattress
#: lang/json/furniture_from_json.py
msgid ""
"A comfortable feather down mattress has been tossed on the floor for "
@@ -84066,6 +88409,15 @@ msgstr ""
msgid "Stores books. Y'know, those things. Who reads books anymore?"
msgstr ""
+#: lang/json/furniture_from_json.py
+msgid "entertainment center"
+msgstr ""
+
+#. ~ Description for entertainment center
+#: lang/json/furniture_from_json.py
+msgid "Stores audio visual equipment, books and collectible."
+msgstr ""
+
#: lang/json/furniture_from_json.py
msgid "coffin"
msgstr ""
@@ -84111,6 +88463,22 @@ msgstr ""
msgid "What's inside? Look in it!"
msgstr ""
+#. ~ Description for large cardboard box
+#: lang/json/furniture_from_json.py
+msgid ""
+"A large cardboard box: this could be used to store things, or as a hiding "
+"place."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "crumple!"
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+#: src/ballistics.cpp
+msgid "thud."
+msgstr ""
+
#: lang/json/furniture_from_json.py
msgid "cupboard"
msgstr ""
@@ -84264,6 +88632,27 @@ msgstr ""
msgid "One man's trash is another man's dinner."
msgstr ""
+#: lang/json/furniture_from_json.py
+msgid "wardrobe"
+msgstr ""
+
+#. ~ Description for wardrobe
+#: lang/json/furniture_from_json.py
+msgid "A tall piece of furniture - basically a freestanding closet."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "filing cabinet"
+msgstr ""
+
+#. ~ Description for filing cabinet
+#: lang/json/furniture_from_json.py
+msgid ""
+"A set of drawers in a sturdy metal cabinet, used to hold files. It can be "
+"locked to protect important information. If you're lucky, there are often "
+"keys nearby."
+msgstr ""
+
#: lang/json/furniture_from_json.py
msgid "utility shelf"
msgstr ""
@@ -84282,6 +88671,42 @@ msgstr ""
msgid "A keg made mostly of wood. Holds liquids, preferably alcoholic."
msgstr ""
+#: lang/json/furniture_from_json.py
+msgid "display case"
+msgstr ""
+
+#. ~ Description for display case
+#: lang/json/furniture_from_json.py
+msgid "Display your stuff fancily and securely."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "broken display case"
+msgstr ""
+
+#. ~ Description for broken display case
+#: lang/json/furniture_from_json.py
+msgid "Display your stuff. It'll get stolen."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "standing tank"
+msgstr ""
+
+#. ~ Description for standing tank
+#: lang/json/furniture_from_json.py
+msgid "A large freestanding metal tank, useful for holding liquids."
+msgstr ""
+
+#: lang/json/furniture_from_json.py
+msgid "dumpster"
+msgstr ""
+
+#. ~ Description for dumpster
+#: lang/json/furniture_from_json.py
+msgid "Stores trash. Doesn't get picked up anymore. Note the smell."
+msgstr ""
+
#: lang/json/furniture_from_json.py
msgid "counter"
msgstr ""
@@ -84353,7 +88778,7 @@ msgstr ""
#. ~ Description for tourist table
#: lang/json/furniture_from_json.py
msgid ""
-"Small metal folding table, ideal for off-road trips into the wild. Can be "
+"Small metal folding table, ideal for off-road trips into the wild. Can be "
"used as a workbench in a pinch."
msgstr ""
@@ -84367,269 +88792,200 @@ msgstr ""
msgid "Sit down when you eat!"
msgstr ""
+#. ~ Description for table
#: lang/json/furniture_from_json.py
-msgid "forge"
-msgstr ""
-
-#. ~ Description for forge
-#: lang/json/furniture_from_json.py
-msgid "Metalworking station typically used in combination with an anvil."
-msgstr ""
-
-#. ~ Description for anvil
-#: lang/json/furniture_from_json.py
-msgid "Used in metalworking."
-msgstr ""
-
-#. ~ Description for still
-#: lang/json/furniture_from_json.py
-msgid ""
-"An essential component for brewing and chemistry that allows for refining "
-"liquid mixtures."
-msgstr ""
-
-#. ~ Description for charcoal kiln
-#. ~ Description for filled charcoal kiln
-#: lang/json/furniture_from_json.py
-msgid ""
-"A rock kiln designed to burn wood and organic material into charcoal in "
-"absence of oxygen."
+msgid "a low table for livingrooms."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "metal charcoal kiln"
+msgid "tatami mat"
msgstr ""
-#. ~ Description for metal charcoal kiln
-#. ~ Description for filled metal charcoal kiln
+#. ~ Description for tatami mat
#: lang/json/furniture_from_json.py
msgid ""
-"A metal kiln designed to burn wood and organic material into charcoal in "
-"absence of oxygen."
+"A tatami is a type of mat used as a flooring material in traditional "
+"Japanese-style rooms."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "filled metal charcoal kiln"
+msgid "pillow fort"
msgstr ""
-#. ~ Description for arc furnace
-#. ~ Description for filled arc furnace
+#. ~ Description for pillow fort
#: lang/json/furniture_from_json.py
-msgid ""
-"An arc furnace designed to burn a powdery mix of coke and limestone to "
-"create calcium carbide."
+msgid "A comfy place to hide from the world. Not very defensible, though."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "filled arc furnace"
+msgid "paf!"
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "smoking rack"
+msgid "cardboard fort"
msgstr ""
-#. ~ Description for smoking rack
-#. ~ Description for metal smoking rack
-#. ~ Description for active metal smoking rack
+#. ~ Description for cardboard fort
#: lang/json/furniture_from_json.py
msgid ""
-"A special rack designed to smoke food for better preservation and taste."
+"A fort built by tipping a cardboard box on its side, lining it with "
+"blankets, and partly weather sealing it with a plastic sheet."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "active smoking rack"
+msgid "cardboard wall"
msgstr ""
-#. ~ Description for active smoking rack
+#. ~ Description for cardboard wall
#: lang/json/furniture_from_json.py
msgid ""
-"A special rack designed to smoke food for better preservation and taste. It "
-"is lit and smoking."
+"This is a pile of cardboard boxes that have been filled with rags and junk "
+"and stacked together like bricks to form a wall."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "active metal smoking rack"
+msgid "beaded curtain"
msgstr ""
+#. ~ Description for beaded curtain
#: lang/json/furniture_from_json.py
-msgid "rock forge"
+msgid "This beaded curtain could be pulled aside."
msgstr ""
-#. ~ Description for rock forge
#: lang/json/furniture_from_json.py
-msgid ""
-"Metalworking station made of rock, typically used in combination with an "
-"anvil."
+msgid "clickity clack… clack… clack"
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "clay kiln"
+msgid "clickity clack… clack"
msgstr ""
-#. ~ Description for clay kiln
#: lang/json/furniture_from_json.py
-msgid "A kiln designed to bake clay pottery and bricks."
+msgid "open beaded curtain"
msgstr ""
-#. ~ Description for stepladder
+#. ~ Description for open beaded curtain
#: lang/json/furniture_from_json.py
-msgid ""
-"A short, foldable ladder. Can help you climb to a rooftop, or maybe slow "
-"something down."
+msgid "This beaded curtain has been pulled aside."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "electric arc furnace"
+msgid "clickity clack… clack… clack!"
msgstr ""
-#. ~ Description for electric arc furnace
#: lang/json/furniture_from_json.py
-msgid ""
-"Not the kind of furnace you'd heat your house with, this is a device for "
-"heating things to extreme temperatures as part of industrial fabrication "
-"processes."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "drill press"
+msgid "canvas floor"
msgstr ""
-#. ~ Description for drill press
+#. ~ Description for canvas floor
#: lang/json/furniture_from_json.py
msgid ""
-"A powerful drill mounted on a slide that lets it drop precisely down. "
-"Useful in all kinds of projects from industrial fabrication to home "
-"woodworking."
+"Flooring made out of stretched, waterproof cloth. Helps keep the dirt out "
+"of the tent."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "tablesaw"
+msgid "canvas wall"
msgstr ""
-#. ~ Description for tablesaw
+#. ~ Description for canvas wall
#: lang/json/furniture_from_json.py
-msgid ""
-"A rotating saw blade set into a large flat table, for making straight "
-"measured cuts. One of the key tools in a carpenter's arsenal."
+msgid "A wall made of stretched, waterproof cloth."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "mitre saw"
+#: lang/json/terrain_from_json.py
+msgid "slap!"
msgstr ""
-#. ~ Description for mitre saw
+#. ~ Description for canvas wall
#: lang/json/furniture_from_json.py
-msgid ""
-"A circular saw blade on an arm that can slide and rotate in several "
-"directions, this is a staple tool for nearly any carpentry."
+msgid "A wall made of stretched, heavy-duty, waterproof cloth."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "bandsaw"
+msgid "canvas flap"
msgstr ""
-#. ~ Description for bandsaw
+#. ~ Description for canvas flap
#: lang/json/furniture_from_json.py
-msgid ""
-"A ribbonlike sawblade runs in a single direction in this tool, allowing "
-"precise cuts at almost any angle."
+msgid "This canvas flap door could be pulled aside."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "router table"
+msgid "open canvas flap"
msgstr ""
-#. ~ Description for router table
+#. ~ Description for open canvas flap
#: lang/json/furniture_from_json.py
-msgid ""
-"This table has an inset router, a rotating motor with an exchangeable blade "
-"head for cutting specific profiles and grooves and stuff."
+msgid "This canvas flap door has been pulled aside."
msgstr ""
+#. ~ Description for canvas flap
#: lang/json/furniture_from_json.py
-msgid "planer"
+msgid "This heavy canvas flap door could be pulled aside."
msgstr ""
-#. ~ Description for planer
+#. ~ Description for open canvas flap
#: lang/json/furniture_from_json.py
-msgid ""
-"A hefty tool that will take in a board and cut it smooth and flat to a "
-"specific width. Particularly great if working with raw lumber stock, but "
-"also good just for shaving wood down to size."
+msgid "This heavy canvas flap door has been pulled aside."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "jointer"
+msgid "groundsheet"
msgstr ""
-#. ~ Description for jointer
+#. ~ Description for groundsheet
#: lang/json/furniture_from_json.py
-msgid ""
-"A table-shaped tool with a rotating blade that will cut down, smooth out, "
-"and square off a board to make it very smooth and nice indeed."
-msgstr ""
-
-#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
-msgid "hydraulic press"
+msgid "This plastic groundsheet could keep you dry."
msgstr ""
-#. ~ Description for hydraulic press
+#. ~ Description for groundsheet
#: lang/json/furniture_from_json.py
-msgid ""
-"If you really want to squash something a lot, this would be exactly the "
-"right industrial tool for you. If, you know, it had power."
-msgstr ""
-
-#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
-msgid "power lathe"
+msgid "This large plastic groundsheet could keep you dry."
msgstr ""
-#. ~ Description for power lathe
+#. ~ Description for groundsheet
#: lang/json/furniture_from_json.py
msgid ""
-"An industrial-grade lathe, for turning chunks of metal and other hard things "
-"into round chunks of metal and other hard things."
+"This plastic government-issue groundsheet could keep you dry, but was made "
+"by the lowest bidder."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "air compressor"
+msgid "animalskin wall"
msgstr ""
-#. ~ Description for air compressor
+#. ~ Description for animalskin wall
#: lang/json/furniture_from_json.py
-msgid ""
-"This durable tank is topped with a motor that will cram as much air into the "
-"tank as possible."
+msgid "Wall made out of animal skin. Either an amazing or horrifying sight."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "fermenting vat"
+msgid "animalskin flap"
msgstr ""
-#. ~ Description for fermenting vat
-#. ~ Description for filled fermenting vat
+#. ~ Description for animalskin flap
#: lang/json/furniture_from_json.py
-msgid "A sealable vat for fermenting vinegar and various alcoholic brews."
+msgid "This animal skin flap could be pulled aside."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "filled fermenting vat"
+msgid "open animalskin flap"
msgstr ""
+#. ~ Description for open animalskin flap
#: lang/json/furniture_from_json.py
-msgid "butchering rack"
+msgid "This animal skin flap has been pulled aside."
msgstr ""
-#. ~ Description for butchering rack
#: lang/json/furniture_from_json.py
-msgid "Butchering rack designed to hang a carcass in the air."
+msgid "animalskin floor"
msgstr ""
-#. ~ Description for metal butchering rack
+#. ~ Description for animalskin floor
#: lang/json/furniture_from_json.py
-msgid ""
-"Metal butchering rack designed to hang a carcass in the air. It can be "
-"deconstructed and folded for easy transportation."
+msgid "This animal skin groundsheet could keep you dry."
msgstr ""
#: lang/json/furniture_from_json.py
@@ -84659,7 +89015,7 @@ msgstr ""
#. ~ Description for pile of trashy rubble
#: lang/json/furniture_from_json.py
msgid ""
-"Trash topped with dirt and grass, it smells gross, but another man's trash..."
+"Trash topped with dirt and grass, it smells gross, but another man's trash…"
msgstr ""
#: lang/json/furniture_from_json.py
@@ -84681,462 +89037,308 @@ msgid "Some ash, from wood or possibly bodies."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "bulletin board"
+msgid "small boulder"
msgstr ""
-#. ~ Description for bulletin board
+#. ~ Description for small boulder
#: lang/json/furniture_from_json.py
msgid ""
-"A big, cork bulletin board capable of sporting various notices. Pin some "
-"notes for other survivors to read."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "sign"
-msgstr ""
-
-#. ~ Description for sign
-#: lang/json/furniture_from_json.py
-msgid "Read it. Warnings ahead."
+"Blocking your path. Should be easy to move. It can be used as a primitive "
+"anvil."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "warning sign"
+msgid "medium boulder"
msgstr ""
-#. ~ Description for warning sign
+#. ~ Description for medium boulder
#: lang/json/furniture_from_json.py
msgid ""
-"A triangle-shaped sign on a post meant to indicate something important or "
-"hazard."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "standing mirror"
-msgstr ""
-
-#. ~ Description for standing mirror
-#: lang/json/furniture_from_json.py
-msgid "Lookin' good - is that blood?"
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "glass breaking"
+"Blocking your path. It'll be a struggle to move. It can be used as a "
+"primitive anvil."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "broken standing mirror"
+msgid "large boulder"
msgstr ""
-#. ~ Description for broken standing mirror
+#. ~ Description for large boulder
#: lang/json/furniture_from_json.py
-msgid ""
-"You could look at yourself, if the mirror wasn't covered in cracks and "
-"fractures."
+msgid "Now how are you going to move this?"
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "vending machine"
+msgid "forge"
msgstr ""
-#. ~ Description for vending machine
+#. ~ Description for forge
#: lang/json/furniture_from_json.py
-msgid "Buy stuff with a cash card."
+msgid "Metalworking station typically used in combination with an anvil."
msgstr ""
+#. ~ Description for anvil
#: lang/json/furniture_from_json.py
-msgid "broken vending machine"
+msgid "Used in metalworking."
msgstr ""
-#. ~ Description for broken vending machine
+#. ~ Description for still
#: lang/json/furniture_from_json.py
msgid ""
-"Ponder if you could buy stuff, as it's broken. Maybe if you broke it more, "
-"you wouldn't need to pay at all!"
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "dumpster"
-msgstr ""
-
-#. ~ Description for dumpster
-#: lang/json/furniture_from_json.py
-msgid "Stores trash. Doesn't get picked up anymore. Note the smell."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "canvas wall"
-msgstr ""
-
-#. ~ Description for canvas wall
-#: lang/json/furniture_from_json.py
-msgid "A wall made of stretched, waterproof cloth."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-#: lang/json/terrain_from_json.py
-msgid "slap!"
-msgstr ""
-
-#. ~ Description for canvas wall
-#: lang/json/furniture_from_json.py
-msgid "A wall made of stretched, heavy-duty, waterproof cloth."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "canvas flap"
-msgstr ""
-
-#. ~ Description for canvas flap
-#: lang/json/furniture_from_json.py
-msgid "This canvas flap door could be pulled aside."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "open canvas flap"
-msgstr ""
-
-#. ~ Description for open canvas flap
-#: lang/json/furniture_from_json.py
-msgid "This canvas flap door has been pulled aside."
-msgstr ""
-
-#. ~ Description for canvas flap
-#: lang/json/furniture_from_json.py
-msgid "This heavy canvas flap door could be pulled aside."
-msgstr ""
-
-#. ~ Description for open canvas flap
-#: lang/json/furniture_from_json.py
-msgid "This heavy canvas flap door has been pulled aside."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "groundsheet"
-msgstr ""
-
-#. ~ Description for groundsheet
-#: lang/json/furniture_from_json.py
-msgid "This plastic groundsheet could keep you dry."
-msgstr ""
-
-#. ~ Description for groundsheet
-#: lang/json/furniture_from_json.py
-msgid "This large plastic groundsheet could keep you dry."
+"An essential component for brewing and chemistry that allows for refining "
+"liquid mixtures."
msgstr ""
-#. ~ Description for groundsheet
+#. ~ Description for charcoal kiln
+#. ~ Description for filled charcoal kiln
#: lang/json/furniture_from_json.py
msgid ""
-"This plastic government-issue groundsheet could keep you dry, but was made "
-"by the lowest bidder."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "animalskin wall"
-msgstr ""
-
-#. ~ Description for animalskin wall
-#: lang/json/furniture_from_json.py
-msgid "Wall made out of animal skin. Either an amazing or horrifying sight."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "animalskin flap"
-msgstr ""
-
-#. ~ Description for animalskin flap
-#: lang/json/furniture_from_json.py
-msgid "This animal skin flap could be pulled aside."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "open animalskin flap"
-msgstr ""
-
-#. ~ Description for open animalskin flap
-#: lang/json/furniture_from_json.py
-msgid "This animal skin flap has been pulled aside."
+"A rock kiln designed to burn wood and organic material into charcoal in "
+"absence of oxygen."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "animalskin floor"
+msgid "metal charcoal kiln"
msgstr ""
-#. ~ Description for animalskin floor
+#. ~ Description for metal charcoal kiln
+#. ~ Description for filled metal charcoal kiln
#: lang/json/furniture_from_json.py
-msgid "This animal skin groundsheet could keep you dry."
+msgid ""
+"A metal kiln designed to burn wood and organic material into charcoal in "
+"absence of oxygen."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "statue"
+msgid "filled metal charcoal kiln"
msgstr ""
-#. ~ Description for statue
+#. ~ Description for arc furnace
+#. ~ Description for filled arc furnace
#: lang/json/furniture_from_json.py
-msgid "A carved statue made of stone."
+msgid ""
+"An arc furnace designed to burn a powdery mix of coke and limestone to "
+"create calcium carbide."
msgstr ""
#: lang/json/furniture_from_json.py
-#: lang/json/terrain_from_json.py
-msgid "thump."
+msgid "filled arc furnace"
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "mannequin"
+msgid "smoking rack"
msgstr ""
-#. ~ Description for mannequin
+#. ~ Description for smoking rack
+#. ~ Description for metal smoking rack
+#. ~ Description for active metal smoking rack
#: lang/json/furniture_from_json.py
msgid ""
-"Put clothes on it, talk to it. Who's around to judge you? Wait... did it "
-"just move?"
+"A special rack designed to smoke food for better preservation and taste."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "birdbath"
+msgid "active smoking rack"
msgstr ""
-#. ~ Description for birdbath
+#. ~ Description for active smoking rack
#: lang/json/furniture_from_json.py
-msgid "A decorative cement birdbath and pedestal."
+msgid ""
+"A special rack designed to smoke food for better preservation and taste. It "
+"is lit and smoking."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "rotary clothes dryer line"
+msgid "active metal smoking rack"
msgstr ""
-#. ~ Description for rotary clothes dryer line
#: lang/json/furniture_from_json.py
-msgid "A umbrella shaped clothes line mounted on a pole."
+msgid "rock forge"
msgstr ""
+#. ~ Description for rock forge
#: lang/json/furniture_from_json.py
-msgid "mounted solar panel"
+msgid ""
+"Metalworking station made of rock, typically used in combination with an "
+"anvil."
msgstr ""
-#. ~ Description for mounted solar panel
#: lang/json/furniture_from_json.py
-msgid "A mounted solar panel."
+msgid "clay kiln"
msgstr ""
+#. ~ Description for clay kiln
#: lang/json/furniture_from_json.py
-msgid "spider egg sack"
+msgid "A kiln designed to bake clay pottery and bricks."
msgstr ""
-#. ~ Description for spider egg sack
+#. ~ Description for stepladder
#: lang/json/furniture_from_json.py
msgid ""
-"Much too large, off-white egg sack. Kind of icky. Something IS moving in "
-"there."
+"A short, foldable ladder. Can help you climb to a rooftop, or maybe slow "
+"something down."
msgstr ""
-#. ~ Description for spider egg sack
#: lang/json/furniture_from_json.py
-msgid ""
-"Bulbous mass of spider eggs. More than kind of icky. Something IS moving "
-"in there."
+msgid "electric arc furnace"
msgstr ""
-#. ~ Description for spider egg sack
+#. ~ Description for electric arc furnace
#: lang/json/furniture_from_json.py
msgid ""
-"A horrifyingly oversized egg sack. Something IS moving in there. If you're "
-"seeing this, you're already too close to it."
+"Not the kind of furnace you'd heat your house with, this is a device for "
+"heating things to extreme temperatures as part of industrial fabrication "
+"processes."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "ruptured egg sack"
+msgid "drill press"
msgstr ""
-#. ~ Description for ruptured egg sack
+#. ~ Description for drill press
#: lang/json/furniture_from_json.py
-msgid "Super icky. Spider stuff's spilling out."
+msgid ""
+"A powerful drill mounted on a slide that lets it drop precisely down. "
+"Useful in all kinds of projects from industrial fabrication to home "
+"woodworking."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "reinforced vending machine"
+msgid "tablesaw"
msgstr ""
-#. ~ Description for reinforced vending machine
+#. ~ Description for tablesaw
#: lang/json/furniture_from_json.py
msgid ""
-"A bit tougher to crack open than regular vending machines. That just makes "
-"it all the sweeter a target, doesn't it?"
+"A rotating saw blade set into a large flat table, for making straight "
+"measured cuts. One of the key tools in a carpenter's arsenal."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "display case"
+msgid "mitre saw"
msgstr ""
-#. ~ Description for display case
+#. ~ Description for mitre saw
#: lang/json/furniture_from_json.py
-msgid "Display your stuff fancily and securely."
+msgid ""
+"A circular saw blade on an arm that can slide and rotate in several "
+"directions, this is a staple tool for nearly any carpentry."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "broken display case"
+msgid "bandsaw"
msgstr ""
-#. ~ Description for broken display case
+#. ~ Description for bandsaw
#: lang/json/furniture_from_json.py
-msgid "Display your stuff. It'll get stolen."
+msgid ""
+"A ribbonlike sawblade runs in a single direction in this tool, allowing "
+"precise cuts at almost any angle."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "standing tank"
+msgid "router table"
msgstr ""
-#. ~ Description for standing tank
+#. ~ Description for router table
#: lang/json/furniture_from_json.py
-msgid "A large freestanding metal tank, useful for holding liquids."
+msgid ""
+"This table has an inset router, a rotating motor with an exchangeable blade "
+"head for cutting specific profiles and grooves and stuff."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "canvas floor"
+msgid "planer"
msgstr ""
-#. ~ Description for canvas floor
+#. ~ Description for planer
#: lang/json/furniture_from_json.py
msgid ""
-"Flooring made out of stretched, waterproof cloth. Helps keep the dirt out "
-"of the tent."
+"A hefty tool that will take in a board and cut it smooth and flat to a "
+"specific width. Particularly great if working with raw lumber stock, but "
+"also good just for shaving wood down to size."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "robotic arm"
+msgid "jointer"
msgstr ""
-#. ~ Description for robotic arm
+#. ~ Description for jointer
#: lang/json/furniture_from_json.py
msgid ""
-"Automation! Science! Industry! Make a better horse! This robot arm "
-"promises to do it all. Except it's currently unpowered. You could remove "
-"the casing and retrieve the electronics through disassembly."
+"A table-shaped tool with a rotating blade that will cut down, smooth out, "
+"and square off a board to make it very smooth and nice indeed."
msgstr ""
#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
-#: lang/json/terrain_from_json.py
-msgid "thunk."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "automated gas console"
-msgstr ""
-
-#. ~ Description for automated gas console
-#: lang/json/furniture_from_json.py
-msgid "Automated gas flow control console."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "broken automated gas console"
-msgstr ""
-
-#. ~ Description for broken automated gas console
-#: lang/json/furniture_from_json.py
-msgid "Automated gas flow control console. Broken. This is not a good thing."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "small boulder"
+msgid "hydraulic press"
msgstr ""
-#. ~ Description for small boulder
+#. ~ Description for hydraulic press
#: lang/json/furniture_from_json.py
msgid ""
-"Blocking your path. Should be easy to move. It can be used as a primitive "
-"anvil."
+"If you really want to squash something a lot, this would be exactly the "
+"right industrial tool for you. If, you know, it had power."
msgstr ""
-#: lang/json/furniture_from_json.py
-msgid "medium boulder"
+#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
+msgid "power lathe"
msgstr ""
-#. ~ Description for medium boulder
+#. ~ Description for power lathe
#: lang/json/furniture_from_json.py
msgid ""
-"Blocking your path. It'll be a struggle to move. It can be used as a "
-"primitive anvil."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "large boulder"
-msgstr ""
-
-#. ~ Description for large boulder
-#: lang/json/furniture_from_json.py
-msgid "Now how are you going to move this?"
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "stone slab"
-msgstr ""
-
-#. ~ Description for stone slab
-#: lang/json/furniture_from_json.py
-msgid "A flat slab of heavy stone."
+"An industrial-grade lathe, for turning chunks of metal and other hard things "
+"into round chunks of metal and other hard things."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "manacles"
+msgid "air compressor"
msgstr ""
-#. ~ Description for manacles
+#. ~ Description for air compressor
#: lang/json/furniture_from_json.py
msgid ""
-"Chain serfs in your dungeon. All you need now is an iron ball to chain to "
-"it."
-msgstr ""
-
-#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
-#: lang/json/terrain_from_json.py
-msgid "crack."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "headstone"
-msgstr ""
-
-#. ~ Description for headstone
-#: lang/json/furniture_from_json.py
-msgid "Keeps the bodies."
+"This durable tank is topped with a motor that will cram as much air into the "
+"tank as possible."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "gravestone"
+msgid "fermenting vat"
msgstr ""
-#. ~ Description for gravestone
+#. ~ Description for fermenting vat
+#. ~ Description for filled fermenting vat
#: lang/json/furniture_from_json.py
-msgid "Keeps the bodies. More fancy."
+msgid "A sealable vat for fermenting vinegar and various alcoholic brews."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "worn gravestone"
+msgid "filled fermenting vat"
msgstr ""
-#. ~ Description for worn gravestone
#: lang/json/furniture_from_json.py
-msgid "A worn-out gravestone."
+msgid "butchering rack"
msgstr ""
+#. ~ Description for butchering rack
#: lang/json/furniture_from_json.py
-msgid "obelisk"
+msgid "Butchering rack designed to hang a carcass in the air."
msgstr ""
-#. ~ Description for obelisk
+#. ~ Description for metal butchering rack
#: lang/json/furniture_from_json.py
-msgid "Monument to pride."
+msgid ""
+"Metal butchering rack designed to hang a carcass in the air. It can be "
+"deconstructed and folded for easy transportation."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "thunk!"
+msgid "hanging meathook"
msgstr ""
-#. ~ Description for camp chair
+#. ~ Description for hanging meathook
#: lang/json/furniture_from_json.py
-msgid "Sit down, have a drink. It can folded for easy transportation."
+msgid "A hefty hook suspended from a chain for stringing up corpses."
msgstr ""
#. ~ Description for wind mill
@@ -85173,256 +89375,52 @@ msgid ""
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "pillow fort"
-msgstr ""
-
-#. ~ Description for pillow fort
-#: lang/json/furniture_from_json.py
-msgid "A comfy place to hide from the world. Not very defensible, though."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "paf!"
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "cardboard fort"
-msgstr ""
-
-#. ~ Description for cardboard fort
-#: lang/json/furniture_from_json.py
-msgid ""
-"A fort built by tipping a cardboard box on its side, lining it with "
-"blankets, and partly weather sealing it with a plastic sheet."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "crumple!"
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-#: src/ballistics.cpp
-msgid "thud."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "cardboard wall"
-msgstr ""
-
-#. ~ Description for cardboard wall
-#: lang/json/furniture_from_json.py
-msgid ""
-"This is a pile of cardboard boxes that have been filled with rags and junk "
-"and stacked together like bricks to form a wall."
-msgstr ""
-
-#. ~ Description for large cardboard box
-#: lang/json/furniture_from_json.py
-msgid ""
-"A large cardboard box: this could be used to store things, or as a hiding "
-"place."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "beaded curtain"
-msgstr ""
-
-#. ~ Description for beaded curtain
-#: lang/json/furniture_from_json.py
-msgid "This beaded curtain could be pulled aside."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "clickity clack...clack...clack"
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "clickity clack...clack"
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "open beaded curtain"
-msgstr ""
-
-#. ~ Description for open beaded curtain
-#: lang/json/furniture_from_json.py
-msgid "This beaded curtain has been pulled aside."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "clickity clack...clack...clack!"
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "filing cabinet"
-msgstr ""
-
-#. ~ Description for filing cabinet
-#: lang/json/furniture_from_json.py
-msgid ""
-"A set of drawers in a sturdy metal cabinet, used to hold files. It can be "
-"locked to protect important information. If you're lucky, there are often "
-"keys nearby."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "wardrobe"
-msgstr ""
-
-#. ~ Description for wardrobe
-#: lang/json/furniture_from_json.py
-msgid "A tall piece of furniture - basically a freestanding closet."
-msgstr ""
-
-#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
-msgid "robotic assembler"
-msgstr ""
-
-#. ~ Description for robotic assembler
-#: lang/json/furniture_from_json.py
-msgid ""
-"A durable and versatile robotic arm with a tool fitted to the end, for "
-"working on an assembly line."
-msgstr ""
-
-#: lang/json/furniture_from_json.py lang/json/terrain_from_json.py
-msgid "chemical mixer"
-msgstr ""
-
-#. ~ Description for chemical mixer
-#: lang/json/furniture_from_json.py
-msgid ""
-"When chemicals need to be mixed in large quantities at just the right "
-"combinations and temperatures, this is the tool for the job."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "floor lamp"
-msgstr ""
-
-#. ~ Description for floor lamp
-#: lang/json/furniture_from_json.py
-msgid "A tall standing lamp, meant to plug into a wall and light up a room."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "bonk!"
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "document shredder"
-msgstr ""
-
-#. ~ Description for document shredder
-#: lang/json/furniture_from_json.py
-msgid ""
-"It's not all about hiding government secrets, sometimes you just want to "
-"stop identity theft."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "server stack"
-msgstr ""
-
-#. ~ Description for server stack
-#: lang/json/furniture_from_json.py
-msgid "This is a big pile of computers. They're all turned off."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "large satellite dish"
-msgstr ""
-
-#. ~ Description for large satellite dish
-#: lang/json/furniture_from_json.py
-msgid ""
-"Somewhere up there, there are still satellites, orbiting and doing their "
-"thing, sending signals down to an Earth that is no longer listening."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "hanging meathook"
-msgstr ""
-
-#. ~ Description for hanging meathook
-#: lang/json/furniture_from_json.py
-msgid "A hefty hook suspended from a chain for stringing up corpses."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "fake workbench hands"
-msgstr ""
-
-#. ~ Description for fake workbench hands
-#: lang/json/furniture_from_json.py
-msgid "This fake workbench holds the stats for working on a wielded item."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-msgid "ground crafting spot"
+msgid "automated gas console"
msgstr ""
-#. ~ Description for ground crafting spot
+#. ~ Description for automated gas console
#: lang/json/furniture_from_json.py
-msgid ""
-"A cleared spot on the ground for crafting. Slower than using a workbench or "
-"holding a project in your hands, but readily available."
+msgid "Automated gas flow control console."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "tatami mat"
+msgid "broken automated gas console"
msgstr ""
-#. ~ Description for tatami mat
+#. ~ Description for broken automated gas console
#: lang/json/furniture_from_json.py
-msgid ""
-"A tatami is a type of mat used as a flooring material in traditional "
-"Japanese-style rooms."
+msgid "Automated gas flow control console. Broken. This is not a good thing."
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "bitts"
+msgid "reinforced vending machine"
msgstr ""
-#. ~ Description for bitts
+#. ~ Description for reinforced vending machine
#: lang/json/furniture_from_json.py
msgid ""
-"Paired vertical iron posts mounted on a wharf, pier or quay. They are used "
-"to secure mooring lines, ropes, hawsers, or cables."
+"A bit tougher to crack open than regular vending machines. That just makes "
+"it all the sweeter a target, doesn't it?"
msgstr ""
#: lang/json/furniture_from_json.py
-msgid "speaker cabinet"
+msgid "vending machine"
msgstr ""
-#. ~ Description for speaker cabinet
+#. ~ Description for vending machine
#: lang/json/furniture_from_json.py
-msgid ""
-"A cabinet loaded with 12-inch speakers, intended to help make various things "
-"loud. It can't serve its original purpose these days, but it could be "
-"disassembled for various electronic parts."
+msgid "Buy stuff with a cash card."
msgstr ""
-#. ~ Description for seeing this is a bug
#: lang/json/furniture_from_json.py
-msgid "Seeing this is a bug. If seen, please report and destroy."
+msgid "broken vending machine"
msgstr ""
-#. ~ Description for swamp gas
+#. ~ Description for broken vending machine
#: lang/json/furniture_from_json.py
msgid ""
-"This is a pool of murkey water, it occassionaly bubbles, releasing a mildly "
-"toxic gas."
-msgstr ""
-
-#: lang/json/furniture_from_json.py
-#: src/ballistics.cpp src/map.cpp
-msgid "splash!"
-msgstr ""
-
-#. ~ Description for fog
-#: lang/json/furniture_from_json.py
-msgid "This is a misty cloud of fog."
+"Ponder if you could buy stuff, as it's broken. Maybe if you broke it more, "
+"you wouldn't need to pay at all!"
msgstr ""
#. ~ Description for vehicle refrigerator
@@ -85523,6 +89521,15 @@ msgid ""
"blood, candles, and other small knick-knacks."
msgstr ""
+#: lang/json/furniture_from_json.py
+msgid "large glowing boulder"
+msgstr ""
+
+#. ~ Description for large glowing boulder
+#: lang/json/furniture_from_json.py
+msgid "Something about this doesn't look right."
+msgstr ""
+
#: lang/json/furniture_from_json.py
msgid "krash!"
msgstr ""
@@ -85552,7 +89559,7 @@ msgstr ""
#. ~ 'pull' action message of some gate object.
#: lang/json/gates_from_json.py
-msgid "You turn the handle..."
+msgid "You turn the handle…"
msgstr ""
#. ~ 'close' action message of some gate object.
@@ -85572,7 +89579,7 @@ msgstr ""
#. ~ 'pull' action message of some gate object.
#: lang/json/gates_from_json.py
-msgid "You pull the rope..."
+msgid "You pull the rope…"
msgstr ""
#. ~ 'close' action message of some gate object.
@@ -85607,7 +89614,7 @@ msgstr ""
#. ~ 'pull' action message of some gate object.
#: lang/json/gates_from_json.py
-msgid "You throw the lever..."
+msgid "You throw the lever…"
msgstr ""
#. ~ 'close' action message of some gate object.
@@ -85732,7 +89739,7 @@ msgstr ""
#: lang/json/gun_from_json.py
#: lang/json/gunmod_from_json.py
-#: src/item_factory.cpp src/turret.cpp
+#: src/item_factory.cpp
msgid "auto"
msgstr ""
@@ -85798,7 +89805,7 @@ msgstr[1] ""
msgid ""
"A primitive bow fashioned from a single piece of wood, made specifically for "
"the person using it. Weak and wildly inaccurate, it doesn't work that well, "
-"unfortunately..."
+"unfortunately…"
msgstr ""
#: lang/json/gun_from_json.py
@@ -85973,9 +89980,8 @@ msgid ""
msgstr ""
#: lang/json/gun_from_json.py
-#: lang/json/gun_from_json.py lang/json/gunmod_from_json.py
#: lang/json/gunmod_from_json.py
-#: lang/json/gunmod_from_json.py src/item.cpp
+#: src/item.cpp
msgctxt "gun_type_type"
msgid "pistol"
msgstr ""
@@ -86145,6 +90151,18 @@ msgctxt "gun_type_type"
msgid "throw"
msgstr ""
+#: lang/json/gun_from_json.py
+msgid "staff sling"
+msgid_plural "staff slings"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gun_from_json.py
+msgid ""
+"A leather sling attached to a staff, easy to use and accurate. It uses "
+"rocks as ammunition."
+msgstr ""
+
#: lang/json/gun_from_json.py
msgid "slingshot"
msgid_plural "slingshots"
@@ -86224,6 +90242,11 @@ msgid ""
"blooming. While powerful, it suffers from short range. Powered by UPS."
msgstr ""
+#: lang/json/gun_from_json.py
+#: lang/json/gun_from_json.py src/item_factory.cpp
+msgid "semi-auto"
+msgstr ""
+
#: lang/json/gun_from_json.py
msgid "PPA-5"
msgid_plural "PPA-5s"
@@ -86233,8 +90256,8 @@ msgstr[1] ""
#: lang/json/gun_from_json.py
msgid ""
"Portable Plasma Accelerator Model Five, developed by Lockheed Martin "
-"Corporation. This device uses highly advanced capacitor banks to create a "
-"torus of superheated hydrogen plasma and accelerate it to incredible speed. "
+"Corporation. This device uses highly advanced capacitor banks to create a "
+"torus of superheated hydrogen plasma and accelerate it to incredible speed. "
"It was designed to take down heavy vehicles, and was expected to fully enter "
"US Army service not long before the Cataclysm."
msgstr ""
@@ -86253,7 +90276,6 @@ msgid ""
msgstr ""
#: lang/json/gun_from_json.py
-#: lang/json/gun_from_json.py lang/json/gunmod_from_json.py
#: lang/json/gunmod_from_json.py
msgctxt "gun_type_type"
msgid "shotgun"
@@ -86419,6 +90441,10 @@ msgid ""
"stop fires or \"protesters\"."
msgstr ""
+#: lang/json/gun_from_json.py
+msgid "burst"
+msgstr ""
+
#: lang/json/gun_from_json.py
msgid "base gun"
msgid_plural "base guns"
@@ -86697,8 +90723,8 @@ msgstr[1] ""
#: lang/json/gun_from_json.py
msgid ""
-"The Walther P22 is a blowback operated semi-automatic pistol. It is about "
-"half the size of most Walthers. It is made mostly with plastic, with the "
+"The Walther P22 is a blowback operated semi-automatic pistol. It is about "
+"half the size of most Walthers. It is made mostly with plastic, with the "
"slide and key components being made of die-cast zinc alloy"
msgstr ""
@@ -86784,11 +90810,6 @@ msgid ""
"this barren proto-weapon."
msgstr ""
-#: lang/json/gun_from_json.py
-#: src/item_factory.cpp
-msgid "semi-auto"
-msgstr ""
-
#: lang/json/gun_from_json.py
msgid "L523-CAR carbine"
msgid_plural "L523-CAR carbines"
@@ -87301,8 +91322,8 @@ msgstr[1] ""
msgid ""
"The M24 Sniper is the military and police version of the Remington Model 700 "
"rifle, M24 being the model name assigned by the United States Army after "
-"adoption as their standard sniper rifle in 1988. The M24 is referred to as a "
-"'weapon system' because it consists of not only a rifle, but also a "
+"adoption as their standard sniper rifle in 1988. The M24 is referred to as "
+"a 'weapon system' because it consists of not only a rifle, but also a "
"detachable telescopic sight and other accessories."
msgstr ""
@@ -87389,7 +91410,7 @@ msgstr[1] ""
#: lang/json/gun_from_json.py
msgid ""
"One of Kel-tec's oldest designs, the P32 is a popular option for deep "
-"concealment and backup usage. Despite its extreme light weight and small "
+"concealment and backup usage. Despite its extreme light weight and small "
"size, its .32 ACP chambering makes for good handling and recoil control."
msgstr ""
@@ -87456,16 +91477,16 @@ msgid ""
msgstr ""
#: lang/json/gun_from_json.py
-msgid "COP .38"
-msgid_plural "COP .38"
+msgid "COP .357 Derringer"
+msgid_plural "COP .357 Derringers"
msgstr[0] ""
msgstr[1] ""
#: lang/json/gun_from_json.py
msgid ""
-"The COP .38 is a small, chubby derringer pistol that bears a slight "
-"resemblance to the Mossberg Brownie. It has four barrels arranged in a "
-"square formation."
+"A small, chubby derringer pistol bearing a slight resemblance to the "
+"Mossberg Brownie. It uses a rotating firing pin to fire the individual "
+"hammers of the four barrels arranged in a square formation."
msgstr ""
#: lang/json/gun_from_json.py
@@ -87498,18 +91519,6 @@ msgid ""
"sight and a reinforced frame."
msgstr ""
-#: lang/json/gun_from_json.py
-msgid "Taurus Pro .38"
-msgid_plural "Taurus Pro .38"
-msgstr[0] ""
-msgstr[1] ""
-
-#: lang/json/gun_from_json.py
-msgid ""
-"A popular .38 pistol. Designed with numerous safety features and built from "
-"high-quality, durable materials."
-msgstr ""
-
#: lang/json/gun_from_json.py
msgid "MAC-11"
msgid_plural "MAC-11s"
@@ -87577,10 +91586,22 @@ msgstr[1] ""
msgid ""
"The Hi-Point CF-380 is a blowback operated semi automatic pistol designed by "
"Hi-Point Firearms, which is known for making inexpensive firearms, and for "
-"making said firearms bulky and uncomfortable. Hi-Points have slides made "
+"making said firearms bulky and uncomfortable. Hi-Points have slides made "
"with a zinc pot-metal which is relatively fragile compared to steel slides."
msgstr ""
+#: lang/json/gun_from_json.py
+msgid "Taurus Spectrum"
+msgid_plural "Taurus Spectrum"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gun_from_json.py
+msgid ""
+"A .380 subcompact pistol. Designed for concealed carry and built from high-"
+"quality, durable materials."
+msgstr ""
+
#: lang/json/gun_from_json.py
msgid "M1911A1"
msgid_plural "M1911A1s"
@@ -87672,9 +91693,9 @@ msgstr[1] ""
#: lang/json/gun_from_json.py
msgid ""
"The Browning Hi-Power is a semi-automatic handgun developed shortly before "
-"the second world war. Widely issued since then, it remains in use by India, "
-"Canada and Australia. This is a commercial variant produced by Browning Arms "
-"in .40 S&W."
+"the second world war. Widely issued since then, it remains in use by India, "
+"Canada and Australia. This is a commercial variant produced by Browning "
+"Arms in .40 S&W."
msgstr ""
#: lang/json/gun_from_json.py
@@ -87700,8 +91721,9 @@ msgstr[1] ""
msgid ""
"The Hi-Point Model JCP is a blowback operated semi automatic pistol designed "
"by Hi-Point Firearms, which is known for making inexpensive firearms, and "
-"for making said firearms bulky and uncomfortable. Hi-Points have slides made "
-"with a zinc pot-metal which is relatively fragile compared to steel slides."
+"for making said firearms bulky and uncomfortable. Hi-Points have slides "
+"made with a zinc pot-metal which is relatively fragile compared to steel "
+"slides."
msgstr ""
#: lang/json/gun_from_json.py
@@ -88060,8 +92082,9 @@ msgstr[1] ""
msgid ""
"The Hi-Point Model JHP is a blowback operated semi automatic pistol designed "
"by Hi-Point Firearms, which is known for making inexpensive firearms, and "
-"for making said firearms bulky and uncomfortable. Hi-Points have slides made "
-"with a zinc pot-metal which is relatively fragile compared to steel slides."
+"for making said firearms bulky and uncomfortable. Hi-Points have slides "
+"made with a zinc pot-metal which is relatively fragile compared to steel "
+"slides."
msgstr ""
#: lang/json/gun_from_json.py
@@ -88250,7 +92273,7 @@ msgid ""
"chamber."
msgstr ""
-#: lang/json/gun_from_json.py src/item_factory.cpp src/turret.cpp
+#: lang/json/gun_from_json.py src/item_factory.cpp
msgid "manual"
msgstr ""
@@ -89013,9 +93036,9 @@ msgstr[1] ""
#: lang/json/gun_from_json.py
msgid ""
"The Browning Hi-Power is a semi-automatic handgun developed shortly before "
-"the second world war. Widely issued since then, it remains in use by India, "
-"Canada and Australia. This is a commercial variant produced by Browning Arms "
-"in 9x19mm Parabellum."
+"the second world war. Widely issued since then, it remains in use by India, "
+"Canada and Australia. This is a commercial variant produced by Browning "
+"Arms in 9x19mm Parabellum."
msgstr ""
#: lang/json/gun_from_json.py
@@ -89027,8 +93050,8 @@ msgstr[1] ""
#: lang/json/gun_from_json.py
msgid ""
"The Walther P38 is a semi-automatic handgun adopted shortly before the "
-"second world war. Developed due to the high production costs of its "
-"predecessor, the Luger P08, the P38 is also chambered in 9mm Parabellum. "
+"second world war. Developed due to the high production costs of its "
+"predecessor, the Luger P08, the P38 is also chambered in 9mm Parabellum. "
"This early DA/SA locked-breech design would introduce features later seen on "
"more modern firearms such as the Beretta 92 series, and served Germany until "
"2004."
@@ -89044,7 +93067,7 @@ msgstr[1] ""
msgid ""
"The Walther PPQ is a semi-automatic pistol originating from the Walther "
"P99QA, and maintains compatibility with some of its predecessor's "
-"accessories. This model is chambered in 9x19mm Parabellum."
+"accessories. This model is chambered in 9x19mm Parabellum."
msgstr ""
#: lang/json/gun_from_json.py
@@ -89057,7 +93080,7 @@ msgstr[1] ""
msgid ""
"The Hi-Point C-9 is a blowback operated semi automatic pistol designed by Hi-"
"Point Firearms, which is known for making inexpensive firearms, and for "
-"making said firearms bulky and uncomfortable. Hi-Points have slides made "
+"making said firearms bulky and uncomfortable. Hi-Points have slides made "
"with a zinc pot-metal which is relatively fragile compared to steel slides."
msgstr ""
@@ -89070,11 +93093,11 @@ msgstr[1] ""
#: lang/json/gun_from_json.py
msgid ""
"The CZ-75 is a semi-automatic pistol developed in Czechoslovakia, and is one "
-"of the original wonder nines. Though designed for export to western "
+"of the original wonder nines. Though designed for export to western "
"countries, it was declared a state secret; lack of international patent "
"protection meant that many clones and variants were produced and distributed "
-"around the world, with Česká zbrojovka only joining in the 90's. This pistol "
-"remains wildly popular among competition shooters."
+"around the world, with Česká zbrojovka only joining in the 90's. This "
+"pistol remains wildly popular among competition shooters."
msgstr ""
#: lang/json/gun_from_json.py
@@ -89086,8 +93109,8 @@ msgstr[1] ""
#: lang/json/gun_from_json.py
msgid ""
"The Walther CCP is a gas-delayed blowback semi-automatic pistol intended for "
-"the concealed carry consumer market. Internally, it is nearly identical to "
-"the cult classic H&K P7. Its fixed barrel design makes it potentially more "
+"the concealed carry consumer market. Internally, it is nearly identical to "
+"the cult classic H&K P7. Its fixed barrel design makes it potentially more "
"accurate than many other pistols, though this may difficult to realize with "
"its average trigger and short sight radius."
msgstr ""
@@ -89726,10 +93749,6 @@ msgid ""
"and destruction it can cause."
msgstr ""
-#: lang/json/gun_from_json.py
-msgid "burst"
-msgstr ""
-
#: lang/json/gun_from_json.py
msgid "CRIT Laser Carbine"
msgid_plural "CRIT Laser Carbines"
@@ -90547,10 +94566,61 @@ msgstr[1] ""
#: lang/json/gun_from_json.py
msgid ""
-"A bow made of multiple materials to maximize energy efficiency. There are "
+"A bow made of multiple materials to maximize energy efficiency. There are "
"two Druid runes embedded at the tips."
msgstr ""
+#: lang/json/gun_from_json.py
+msgid "M47A1 Techno-Medusa"
+msgid_plural "M47A1 Techno-Medusae"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gun_from_json.py
+msgid ""
+"A magically-enhanced update to the Phillips & Rodgers' M47 Medusa, a multi-"
+"caliber revolver aimed at survivalists. While Technomancy improves the "
+"reliability with smaller cartridges, it is not as accurate as dedicated "
+"caliber revolvers due to freebore."
+msgstr ""
+
+#: lang/json/gun_from_json.py
+msgid "gunblade"
+msgid_plural "gunblades"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gun_from_json.py
+msgid ""
+"Constructed similarly to a falcata, this forward-sloping blade has a short-"
+"barrel pump shotgun attached to the blade's spine for finishing blows or a "
+"first strike."
+msgstr ""
+
+#: lang/json/gun_from_json.py
+msgid "shotcestus"
+msgid_plural "shotcesti"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gun_from_json.py
+msgid ""
+"A sawn-off double-barrel shotgun mounted on a metal cestus. The lack of a "
+"stock to absorb recoil means some strength is required to fire."
+msgstr ""
+
+#: lang/json/gun_from_json.py
+msgid "Ichaival"
+msgid_plural "Ichaivals"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gun_from_json.py
+msgid ""
+"Ichaival, the bow of Odin. Rumored to fire 10 arrows with every pull of the "
+"string. It has gold and silver ornaments on it, as well as an ornate Raven."
+msgstr ""
+
#: lang/json/gun_from_json.py
msgid "Woodbow"
msgid_plural "Woodbows"
@@ -90665,12 +94735,6 @@ msgid ""
"this weapon have a good chance of remaining intact for re-use."
msgstr ""
-#: lang/json/gun_from_json.py
-msgid "Ichaival"
-msgid_plural "Ichaivals"
-msgstr[0] ""
-msgstr[1] ""
-
#: lang/json/gun_from_json.py
msgid ""
"This is a replica of the bow possessed by Odin, Ichaival, which is rumored "
@@ -91641,7 +95705,7 @@ msgid "accessories"
msgstr ""
#: lang/json/gunmod_from_json.py
-#: src/item.cpp
+#: lang/json/gunmod_from_json.py src/item.cpp
msgctxt "gun_type_type"
msgid "bow"
msgstr ""
@@ -91765,7 +95829,7 @@ msgstr[1] ""
#: lang/json/gunmod_from_json.py
msgid ""
"Testmod for UPS drain on mods, this should never spawn, if you see this, "
-"it's a bug. 50x more UPS drain."
+"it's a bug. 50x more UPS drain."
msgstr ""
#: lang/json/gunmod_from_json.py
@@ -91920,8 +95984,8 @@ msgstr[1] ""
#: lang/json/gunmod_from_json.py
msgid ""
-"A set of optics to concentrate the laser beam on a smaller focus point. This "
-"increases range and damage output, but complicates targeting."
+"A set of optics to concentrate the laser beam on a smaller focus point. "
+"This increases range and damage output, but complicates targeting."
msgstr ""
#: lang/json/gunmod_from_json.py
@@ -91946,7 +96010,7 @@ msgstr[1] ""
#: lang/json/gunmod_from_json.py
msgid ""
"A set of electronics to optimize emitter workcycle and increase overall "
-"energy efficiency. Decreases power consumption."
+"energy efficiency. Decreases power consumption."
msgstr ""
#: lang/json/gunmod_from_json.py
@@ -91961,7 +96025,7 @@ msgstr[1] ""
#: lang/json/gunmod_from_json.py
msgid ""
-"A capacitor with a higher energy density increases range and damage; at the "
+"A capacitor with a higher energy density increases range and damage; at the "
"cost of a markedly increased power consumption."
msgstr ""
@@ -92169,6 +96233,20 @@ msgid ""
"improving recoil but increasing bulk, noise, and reducing accuracy slightly."
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "modified muzzle brake"
+msgid_plural "modified muzzle brakes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"A muzzle brake redirects exhaust gases to compensate for muzzle climb, "
+"improving recoil but increasing bulk, noise, and reducing accuracy "
+"slightly. This one was modified and customized to mount on pretty much any "
+"firearm other than launchers, if you so want."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "homemade suppressor"
msgid_plural "homemade suppressors"
@@ -92302,6 +96380,20 @@ msgstr ""
msgid "rail"
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "modified rail-mounted crossbow"
+msgid_plural "modified rail-mounted crossbows"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"A kit to attach a pair of crossbow arms and a firing rail to the barrel of a "
+"long firearm. It allows crossbow bolts to be fired. This one was modified "
+"and customized to mount on pretty much any weapon other than pistols and "
+"SMGs, if you so want."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "offset iron sights"
msgid_plural "offset iron sights"
@@ -92314,6 +96406,19 @@ msgid ""
"other modification prevents use of the primary sights."
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "modified offset iron sights"
+msgid_plural "modified offset iron sights"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"An alternative set of iron sights mounted at 45° for use when a scope or "
+"other modification prevents use of the primary sights. This one was "
+"modified and customized to mount on pretty much any weapon, if you so want."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "offset sight rail"
msgid_plural "offset sight rails"
@@ -92324,6 +96429,18 @@ msgstr[1] ""
msgid "An additional rail set at 45° for attaching a secondary optic."
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "modified offset sight rail"
+msgid_plural "modified offset sight rails"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"An additional rail set at 45° for attaching a secondary optic. This one was "
+"modified and customized to mount on pretty much any weapon, if you so want."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "rail laser sight"
msgid_plural "rail laser sights"
@@ -92349,6 +96466,20 @@ msgid ""
"vibration, greatly reducing recoil and slightly increasing accuracy."
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "modified gyroscopic stabilizer"
+msgid_plural "modified gyroscopic stabilizers"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"An advanced unit that straps onto the side of your firearm and reduces "
+"vibration, greatly reducing recoil and slightly increasing accuracy. This "
+"one was modified and customized to mount on pretty much any weapon other "
+"than pistols, if you so want."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "LW gyroscopic stabilizer"
msgid_plural "LW gyroscopic stabilizers"
@@ -92459,6 +96590,20 @@ msgid ""
"mrad increments and is remarkably small and light for its magnification."
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "modified rifle scope"
+msgid_plural "modified rifle scopes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"A 3-18x44 rifle scope. It is adjustable for windage and elevation in 1/10th "
+"mrad increments and is remarkably small and light for its magnification. "
+"This one was modified and customized to mount on pretty much any weapon "
+"other than pistols and SMGs, if you so want."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "ACOG scope"
msgid_plural "ACOG scopes"
@@ -92471,6 +96616,19 @@ msgid ""
"crosshair."
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "modified ACOG scope"
+msgid_plural "modified ACOG scopes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"A 4x32 TA01 Advanced Combat Optical Gunsight with a tritium illuminated "
+"crosshair. This one was modified and customized to mount on pretty much any "
+"weapon other than pistols, if you so want."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "RS1219 scope"
msgid_plural "RS1219 scopes"
@@ -92492,8 +96650,9 @@ msgstr[1] ""
#: lang/json/gunmod_from_json.py
msgid ""
-"A simple telescopic sight, essentially a small telescope with crosshairs. "
-"Increases weight but improves accuracy."
+"A simple hand-crafted telescopic sight, essentially a small telescope with "
+"crosshairs. Not as good as the ones made before the cataclysm. Increases "
+"weight but improves accuracy."
msgstr ""
#: lang/json/gunmod_from_json.py
@@ -92659,6 +96818,21 @@ msgid ""
"they are usable only on certain surfaces and are slow to equip."
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "modified bipod"
+msgid_plural "modified bipods"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"Bipods are commonly used on rifles and machine guns to provide a forward "
+"rest and reduce motion. Although they greatly improve handling of recoil "
+"they are usable only on certain surfaces and are slow to equip. This one "
+"was modified and customized to mount on pretty much any weapon, if you so "
+"want."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "combination gun shotgun"
msgid_plural "combination gun shotguns"
@@ -92695,6 +96869,19 @@ msgid ""
"effective as a bipod but usable under all conditions."
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "modified forward grip"
+msgid_plural "modified forward grips"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"A grip placed forward on the barrel allows for greater control. Not as "
+"effective as a bipod but usable under all conditions. This one was modified "
+"and customized to mount on pretty much any weapon, if you so want."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "integrated bayonet"
msgid_plural "integrated bayonets"
@@ -92759,6 +96946,20 @@ msgid ""
"and fired."
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "modified M203"
+msgid_plural "modified M203s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"The M203 was originally designed for use with M16 variants but today can be "
+"attached to almost any rifle. It allows a single 40mm grenade to be loaded "
+"and fired. This one was modified and customized to mount on pretty much any "
+"weapon other than pistols and pump-action guns, if you so want."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "M320 GLM"
msgid_plural "M320 GLM"
@@ -92773,6 +96974,21 @@ msgid ""
"use."
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "modified M320 GLM"
+msgid_plural "modified M320 GLMs"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"The M320 Grenade Launcher Module offers the functionality of larger "
+"launchers in a very small package at the cost of decreased accuracy. It can "
+"be either attached to a rifle or combined with a buttstock for stand alone "
+"use. This one was modified and customized to mount on pretty much any "
+"weapon other than pistols and pump-action guns, if you so want."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "masterkey shotgun"
msgid_plural "masterkey shotguns"
@@ -92786,6 +97002,20 @@ msgid ""
"fired."
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "modified masterkey shotgun"
+msgid_plural "modified masterkey shotguns"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"A minimalist pump action shotgun, which can be mounted under the barrel of "
+"many rifles. It allows a total of four shotgun shells to be loaded and "
+"fired. This one was modified and customized to mount on pretty much any "
+"weapon other than pistols and pump-action guns, if you so want."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "40mm pipe launcher"
msgid_plural "40mm pipe launchers"
@@ -92794,8 +97024,8 @@ msgstr[1] ""
#: lang/json/gunmod_from_json.py
msgid ""
-"This is a home built launcher tube that can be attached to almost any "
-"rifle. It allows a single 40mm grenade to be loaded and fired."
+"This is a home built launcher tube that can be attached to almost any weapon "
+"except handguns. It allows a single 40mm grenade to be loaded and fired."
msgstr ""
#: lang/json/gunmod_from_json.py
@@ -92823,6 +97053,20 @@ msgid ""
"Accepts RMSA10 box magazines."
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "modified RM121 aux shotgun"
+msgid_plural "modified RM121 aux shotguns"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"The Rivtech RM121 auxiliary weapon system is a magazine-fed semi-automatic "
+"caseless shotgun, which can be mounted under the barrel of many rifles. "
+"Accepts RMSA10 box magazines. This one was modified and customized to mount "
+"on pretty much any weapon other than pistols, if you so want."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "underslung shotgun"
msgid_plural "underslung shotguns"
@@ -92835,6 +97079,20 @@ msgid ""
"many rifles. It allows two shotgun shells to be loaded and fired."
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "modified underslung shotgun"
+msgid_plural "modified underslung shotguns"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"A short shotgun with 2 barrels, which can be mounted under the barrel of "
+"many rifles. It allows two shotgun shells to be loaded and fired. This one "
+"was modified and customized to mount on pretty much any weapon other than "
+"pistols, if you so want."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "LW underbarrel laser sight"
msgid_plural "LW underbarrel laser sights"
@@ -93102,6 +97360,58 @@ msgid ""
"gun can no longer operate without a UPS."
msgstr ""
+#: lang/json/gunmod_from_json.py
+msgid "'Silent Winds' suppressor"
+msgid_plural "'Silent Winds' suppressors"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"Rather than using purely wipe media, an additional localized silence spell "
+"in this tube quiets gunshots going through to hearing-safe levels."
+msgstr ""
+
+#: lang/json/gunmod_from_json.py
+msgid "mana laser sight (rail)"
+msgid_plural "mana laser sights (rail)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"A small visible-light laser using light shown through a mana crystal that "
+"mounts on a firearm's accessory rail to enhance ease and speed of target "
+"acquisition. Aside from increased weight, there are no drawbacks. You can "
+"rotate the attachment rail to fit under the barrel."
+msgstr ""
+
+#: lang/json/gunmod_from_json.py
+msgid "mana laser sight (underbarrel)"
+msgid_plural "mana laser sights (underbarrel)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"A small visible-light laser using light shown through a mana crystal that "
+"mounts on a firearm's accessory rail to enhance ease and speed of target "
+"acquisition. Aside from increased weight, there are no drawbacks. You can "
+"rotate the attachment rail to fit on the rail."
+msgstr ""
+
+#: lang/json/gunmod_from_json.py
+msgid "mana dot sight"
+msgid_plural "mana dot sights"
+msgstr[0] ""
+msgstr[1] ""
+
+#: lang/json/gunmod_from_json.py
+msgid ""
+"Adds a blue dot optic made from crystallized mana to the top of your gun, "
+"replacing the iron sights. Increases accuracy and weight."
+msgstr ""
+
#: lang/json/gunmod_from_json.py
msgid "makeshift pistol bayonet"
msgid_plural "makeshift pistol bayonets"
@@ -95127,7 +99437,7 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
#: lang/json/talk_topic_from_json.py src/game_inventory.cpp
#: src/teleport.cpp
-msgid "..."
+msgid "…"
msgstr ""
#: lang/json/item_action_from_json.py
@@ -95699,6 +100009,13 @@ msgstr ""
msgid "This bionic can provide power to powered armor."
msgstr ""
+#. ~ Please leave anything in unchanged.
+#: lang/json/json_flag_from_json.py
+msgid ""
+"This food is unappetizing in a way that can't be covered up "
+"by most cooking."
+msgstr ""
+
#. ~ Please leave anything in unchanged.
#: lang/json/json_flag_from_json.py
msgid ""
@@ -97207,6 +101524,7 @@ msgstr ""
msgid "Load color template"
msgstr ""
+#. ~ translation should not exceed 3 console cells
#: lang/json/keybinding_from_json.py
#: lang/json/keybinding_from_json.py src/editmap.cpp
#: src/editmap.cpp
@@ -97273,6 +101591,10 @@ msgstr ""
msgid "Toggle atomic lights"
msgstr ""
+#: lang/json/keybinding_from_json.py
+msgid "Control autopiot"
+msgstr ""
+
#: lang/json/keybinding_from_json.py
msgid "Toggle camera system"
msgstr ""
@@ -99698,21 +104020,43 @@ msgid ""
msgstr ""
#: lang/json/martial_art_from_json.py
-msgid "Tai Chi"
+msgid "Sōjutsu"
msgstr ""
-#. ~ Description for martial art 'Tai Chi'
+#. ~ Description for martial art 'Sōjutsu'
#: lang/json/martial_art_from_json.py
msgid ""
-"Though Tai Chi is often seen as a form of mental and physical exercise, it "
-"is a legitimate martial art, focused on self-defense. Its ability to absorb "
-"the force of an attack makes your Perception decrease damage further on a "
-"block."
+"Sōjutsu, \"The Way of the Spear\", is the Japanese martial art of fighting "
+"with a spear. Sōjutsu focuses on keeping opponents at a distance in order "
+"to maintain advantage in combat. Standing still gives you an extra block "
+"attempt but moving will briefly increase your damage."
msgstr ""
-#. ~ Description of buff for martial art 'Tai Chi'
#: lang/json/martial_art_from_json.py
-msgid "+1 Block. Perception decreases damage when blocking."
+msgid "Sōjutsu Stance"
+msgstr ""
+
+#. ~ Description of buff 'Sōjutsu Stance' for martial art 'Sōjutsu'
+#: lang/json/martial_art_from_json.py
+msgid ""
+"Your training grants better defense while using a polearm.\n"
+"\n"
+"+1 Block attempt."
+msgstr ""
+
+#: lang/json/martial_art_from_json.py
+msgid "Superior Positioning"
+msgstr ""
+
+#. ~ Description of buff 'Superior Positioning' for martial art 'Sōjutsu'
+#: lang/json/martial_art_from_json.py
+#, no-python-format
+msgid ""
+"You have given up your defenses for a moment to increase the damage of your "
+"attacks.\n"
+"\n"
+"+10%% damage, -1 Block attempts.\n"
+"Lasts 1 turn."
msgstr ""
#: lang/json/martial_art_from_json.py
@@ -99725,40 +104069,75 @@ msgid ""
"Taekwondo is the national sport of Korea, and was used by the South Korean "
"army in the 20th century. Focused on kicks and so it does not benefit from "
"wielded weapons. It also includes strength training; your blocks absorb "
-"extra damage the stronger you are."
+"extra damage and your attacks do more damage if you are not holding anything."
msgstr ""
-#. ~ Description of buff for martial art 'Taekwondo'
#: lang/json/martial_art_from_json.py
-msgid "Strength decreases damage when blocking."
+msgid "Taekwondo Stance"
msgstr ""
+#. ~ Description of buff 'Taekwondo Stance' for martial art 'Taekwondo'
#: lang/json/martial_art_from_json.py
-msgid "Zui Quan"
+#, no-python-format
+msgid ""
+"Using your legs to attack allows your hands to be free for better defense.\n"
+"\n"
+"Blocked damage decreased by 50%% of Strength."
msgstr ""
-#. ~ Description for martial art 'Zui Quan'
#: lang/json/martial_art_from_json.py
+msgid "Unhindered"
+msgstr ""
+
+#. ~ Description of buff 'Unhindered' for martial art 'Taekwondo'
+#: lang/json/martial_art_from_json.py
+#, no-python-format
msgid ""
-"AKA \"drunken boxing,\" Zui Quan imitates the movement of a drunk to confuse "
-"the enemy, giving you a passive dodge bonus based on your intelligence. The "
-"turn after you attack, you may dodge any number of attacks with no penalty, "
-"and successfully dodging an attack gives you bonus damage and to-hit based "
-"on your intelligence."
+"Your attacks are stronger if you are not holding anything in your hands.\n"
+"\n"
+"+33%% bash damage when not using a weapon."
+msgstr ""
+
+#: lang/json/martial_art_from_json.py
+msgid "Tai Chi"
+msgstr ""
+
+#. ~ Description for martial art 'Tai Chi'
+#: lang/json/martial_art_from_json.py
+msgid ""
+"Though Tai Chi is often seen as a form of mental and physical exercise, it "
+"is a legitimate martial art, focused on self-defense. Its ability to absorb "
+"the force of an attack makes your Perception decrease damage further on a "
+"block. Pausing for a moment enables powerful palm strike techniques."
msgstr ""
-#. ~ Description of buff for martial art 'Zui Quan'
#: lang/json/martial_art_from_json.py
-msgid "Intelligence increases dodging ability"
+msgid "Tai Chi Stance"
msgstr ""
+#. ~ Description of buff 'Tai Chi Stance' for martial art 'Tai Chi'
#: lang/json/martial_art_from_json.py
-msgid "Counter Strike"
+#, no-python-format
+msgid ""
+"You are focused of defense and predicting your opponents attacks.\n"
+"\n"
+"+1 Block attempts, blocked damage reduced by 100%% Perception."
msgstr ""
-#. ~ Description of buff 'Counter Strike' for martial art 'Zui Quan'
#: lang/json/martial_art_from_json.py
-msgid "Extra damage and to-hit after successful dodge"
+msgid "Repulse the Monkey"
+msgstr ""
+
+#. ~ Description of buff 'Repulse the Monkey' for martial art 'Tai Chi'
+#: lang/json/martial_art_from_json.py
+#, no-python-format
+msgid ""
+"By perfectly positioning yourself and your opponent, you have become more "
+"accurate and can bypass your opponent's defenses.\n"
+"\n"
+"Accuracy increased by 20%% of Perception, gain bash Armor Pentration equal "
+"to 50%% of Perception.\n"
+"Lasts 2 turns."
msgstr ""
#: lang/json/martial_art_from_json.py
@@ -99779,89 +104158,164 @@ msgstr ""
#. ~ Description of buff 'Tiger Fury' for martial art 'Tiger Kung Fu'
#: lang/json/martial_art_from_json.py
-msgid "+3 Bash/atk"
+#, no-python-format
+msgid ""
+"You attack with an endless barrage of strikes. The more you hit, the "
+"stronger you become.\n"
+"\n"
+"+10%% damage.\n"
+"Lasts 3 turns. Stacks 4 times."
msgstr ""
#: lang/json/martial_art_from_json.py
-msgid "Tiger Strength"
+msgid "Tiger's Strength"
msgstr ""
-#. ~ Description of buff 'Tiger Strength' for martial art 'Tiger Kung Fu'
+#. ~ Description of buff 'Tiger's Strength' for martial art 'Tiger Kung Fu'
#: lang/json/martial_art_from_json.py
-msgid "Strength provides additional damage bonus."
+#, no-python-format
+msgid ""
+"You do not need defense. You do not need a plan. You need strength. "
+"Strength will break your opponents' defenses and overwhelm them completely.\n"
+"\n"
+"Strength increases Accuracy instead of Dexterity.\n"
+"\n"
+"Accuracy increased by 25%% of Strength but decreased by 25%% of Dexterity."
msgstr ""
#: lang/json/martial_art_from_json.py
-msgid "Debug Mastery"
+msgid "Wing Chun"
msgstr ""
-#. ~ Description for martial art 'Debug Mastery'
+#. ~ Description for martial art 'Wing Chun'
#: lang/json/martial_art_from_json.py
-msgid "A secret martial art used only by developers and cheaters."
+msgid ""
+"Wing Chun is a Chinese martial art that began by selecting the easiest-to-"
+"learn effective techniques from the various Shaolin animal forms. It has a "
+"high stance, with weight entirely on the rear leg. Wing Chun focuses on "
+"sensitivity to the opponent's direction of force, and flowing around it to "
+"get back to hitting."
msgstr ""
#: lang/json/martial_art_from_json.py
-msgid "Elemental resistance"
+msgid "Chain Punch"
msgstr ""
-#. ~ Description of buff 'Elemental resistance' for martial art 'Debug Mastery'
+#. ~ Description of buff 'Chain Punch' for martial art 'Wing Chun'
#: lang/json/martial_art_from_json.py
+#, no-python-format
msgid ""
-"+Strength bash armor, +Dexterity acid armor, +Intelligence electricity "
-"armor, +Perception fire armor."
+"Your punches are properly timed to give your opponent no rest from your "
+"strikes.\n"
+"\n"
+"-10%% move cost.\n"
+"Lasts 1 turn. Stacks 3 times."
msgstr ""
#: lang/json/martial_art_from_json.py
-msgid "Sōjutsu"
+msgid "Chi-Sao Sensitivity"
msgstr ""
-#. ~ Description for martial art 'Sōjutsu'
+#. ~ Description of buff 'Chi-Sao Sensitivity' for martial art 'Wing Chun'
#: lang/json/martial_art_from_json.py
+#, no-python-format
msgid ""
-"Sōjutsu, \"The Way of the Spear\", is the Japanese martial art of fighting "
-"with a spear. Sōjutsu focuses on keeping opponents at a distance in order "
-"to maintain advantage in combat."
+"You have a greater understanding of balance and technique. This gives you a "
+"better chance to avoid your opponent's attacks.\n"
+"\n"
+" Dodging Skill increased by 15%% of Perception. Blocked damage reduced by "
+"50%% of Perception."
msgstr ""
#: lang/json/martial_art_from_json.py
-msgid "Sōjutsu Stance"
+msgid "Zui Quan"
msgstr ""
-#. ~ Description of buff 'Sōjutsu Stance' for martial art 'Sōjutsu'
+#. ~ Description for martial art 'Zui Quan'
#: lang/json/martial_art_from_json.py
-msgid "Bonus block with reach weapons while standing still"
+msgid ""
+"AKA \"drunken boxing,\" Zui Quan imitates the movement of a drunk to confuse "
+"the enemy. You gain a passive dodge bonus and accuracy bonus based on your "
+"intelligence. Moving gives you additional dodge attempts and each time you "
+"dodge, you inflict more damage with your counterattack for until the end of "
+"your next turn."
msgstr ""
#: lang/json/martial_art_from_json.py
-msgid "Sōjutsu Rush"
+msgid "Zui Quan Stance"
msgstr ""
-#. ~ Description of buff 'Sōjutsu Rush' for martial art 'Sōjutsu'
+#. ~ Description of buff 'Zui Quan Stance' for martial art 'Zui Quan'
#: lang/json/martial_art_from_json.py
-msgid "Increased damage when moving but no bonus block"
+#, no-python-format
+msgid ""
+"Others might think you stumble about at random but you know better. Each "
+"movement is calculated to make evading harm easier.\n"
+"\n"
+"Dodging Skill increased by 15%% of Intelligence."
msgstr ""
#: lang/json/martial_art_from_json.py
-msgid "Wing Chun"
+msgid "Advanced Zui Quan"
msgstr ""
-#. ~ Description for martial art 'Wing Chun'
+#. ~ Description of buff 'Advanced Zui Quan' for martial art 'Zui Quan'
#: lang/json/martial_art_from_json.py
+#, no-python-format
msgid ""
-"Wing Chun is a Chinese martial art that began by selecting the easiest-to-"
-"learn effective techniques from the various Shaolin animal forms. It has a "
-"high stance, with weight entirely on the rear leg. Wing Chun focuses on "
-"sensitivity to the opponent's direction of force, and flowing around it to "
-"get back to hitting."
+"You have a greater understanding of Zui Quan. Your skills at dodging and "
+"landing attacks are much better as a result.\n"
+"\n"
+"+1 Dodge attempts, Accuracy increased by 15%% of Intelligence."
msgstr ""
#: lang/json/martial_art_from_json.py
-msgid "Chi-Sao Sensitivity"
+msgid "Drunken Stumble"
msgstr ""
-#. ~ Description of buff 'Chi-Sao Sensitivity' for martial art 'Wing Chun'
+#. ~ Description of buff 'Drunken Stumble' for martial art 'Zui Quan'
#: lang/json/martial_art_from_json.py
-msgid "Perception increases dodging ability, +1 dodges per turn"
+msgid ""
+"With a few quick steps, you can completely change your orientation and dodge "
+"additional attacks.\n"
+"\n"
+"+2 Dodge attempts.\n"
+"Lasts 3 turns."
+msgstr ""
+
+#: lang/json/martial_art_from_json.py
+msgid "Drunken Dodging"
+msgstr ""
+
+#. ~ Description of buff 'Drunken Dodging' for martial art 'Zui Quan'
+#: lang/json/martial_art_from_json.py
+#, no-python-format
+msgid ""
+"Each time you dodge, your positional advantage increases against your "
+"opponents. This makes your attacks hit harder with each successful dodge.\n"
+"\n"
+"Gain Armor Penetration equal to 25%% of Intelligence.\n"
+"Lasts 1 turn. Stacks 4 times."
+msgstr ""
+
+#: lang/json/martial_art_from_json.py
+msgid "Debug Mastery"
+msgstr ""
+
+#. ~ Description for martial art 'Debug Mastery'
+#: lang/json/martial_art_from_json.py
+msgid "A secret martial art used only by developers and cheaters."
+msgstr ""
+
+#: lang/json/martial_art_from_json.py
+msgid "Elemental resistance"
+msgstr ""
+
+#. ~ Description of buff 'Elemental resistance' for martial art 'Debug Mastery'
+#: lang/json/martial_art_from_json.py
+msgid ""
+"+Strength bash armor, +Dexterity acid armor, +Intelligence electricity "
+"armor, +Perception fire armor."
msgstr ""
#: lang/json/martial_art_from_json.py
@@ -100019,9 +104473,10 @@ msgstr ""
#. ~ Description for martial art 'Toad Kung Fu'
#: lang/json/martial_art_from_json.py
msgid ""
-"One of the Five Deadly Venoms. Masters of Toad Style can focus themselves "
-"against all attacks. You can meditate by pausing, giving you armor, though "
-"you will lose focus when you move."
+"One of the Five Deadly Venoms, used by Liang Shen. Masters of Toad Style "
+"can focus themselves to protect against all attacks. You have powerful "
+"armor against physical attacks, though you will lose focus when you move. "
+"You can meditate by pausing, giving yourself more armor for a short time."
msgstr ""
#: lang/json/martial_art_from_json.py
@@ -100030,7 +104485,10 @@ msgstr ""
#. ~ Description of buff 'Toad's Iron Skin' for martial art 'Toad Kung Fu'
#: lang/json/martial_art_from_json.py
-msgid "Gain up to +6 armor while standing still"
+msgid ""
+"Your body is as strong as iron but only if you don't move.\n"
+"\n"
+"+6 bash, cut, and stab armor."
msgstr ""
#: lang/json/martial_art_from_json.py
@@ -100039,7 +104497,11 @@ msgstr ""
#. ~ Description of buff 'Iron Skin Dissipation' for martial art 'Toad Kung Fu'
#: lang/json/martial_art_from_json.py
-msgid "Iron Skin softens when you move!"
+msgid ""
+"Moving causes you to lose your iron skin.\n"
+"\n"
+"-1 bash, cut, and stab armor.\n"
+"Lasts 6 turns. Stacks 6 times."
msgstr ""
#: lang/json/martial_art_from_json.py
@@ -100049,36 +104511,49 @@ msgstr ""
#. ~ Description for martial art 'Viper Kung Fu'
#: lang/json/martial_art_from_json.py
msgid ""
-"A legacy of the Five Deadly Venoms. Viper Style has a unique three-part "
-"combo, which initiates on a dodge, then counters with a stunning chop and "
-"the legendary Viper Strike."
+"A legacy of the Five Deadly Venoms, use by Qi Dong. Viper Style (originally "
+"called Snake Style) has a unique three-part combo, which initiates on a "
+"dodge, then follows up with a stunning Viper Bite and then finishes with the "
+"legendary Viper Strike."
msgstr ""
#: lang/json/martial_art_from_json.py
-msgid "Viper Lock"
+msgid "Viper's Patience"
msgstr ""
-#. ~ Description of buff 'Viper Lock' for martial art 'Viper Kung Fu'
+#. ~ Description of buff 'Viper's Patience' for martial art 'Viper Kung Fu'
#: lang/json/martial_art_from_json.py
-msgid "You bit true! Your next attack will be the Viper Strike!"
+msgid ""
+"Every snake waits for the perfect moment to strike. Turn your opponents' "
+"mistakes into your opportunity to strike!\n"
+"\n"
+"+1.0 Dodge skill."
msgstr ""
#: lang/json/martial_art_from_json.py
-msgid "Viper Patience"
+msgid "Viper's Ambush"
msgstr ""
-#. ~ Description of buff 'Viper Patience' for martial art 'Viper Kung Fu'
+#. ~ Description of buff 'Viper's Ambush' for martial art 'Viper Kung Fu'
#: lang/json/martial_art_from_json.py
-msgid "+2 Dodge. Dodging an attack initiates a combo."
+msgid ""
+"Your evasiveness has left your opponent wide open to painful bite.\n"
+"\n"
+"Enables \"Viper Bite\" technique.\n"
+"Lasts 1 turn."
msgstr ""
#: lang/json/martial_art_from_json.py
-msgid "Viper Ambush"
+msgid "Viper's Venom"
msgstr ""
-#. ~ Description of buff 'Viper Ambush' for martial art 'Viper Kung Fu'
+#. ~ Description of buff 'Viper's Venom' for martial art 'Viper Kung Fu'
#: lang/json/martial_art_from_json.py
-msgid "You've lured 'em in! Your next attack will be a Viper Bite."
+msgid ""
+"Your venom is a harsh reminder to never tease a predator.\n"
+"\n"
+"+2 bash damage.\n"
+"Lasts 3 turn."
msgstr ""
#: lang/json/martial_art_from_json.py
@@ -100462,6 +104937,10 @@ msgstr ""
msgid "Leather"
msgstr ""
+#: lang/json/material_from_json.py
+msgid "Lycra"
+msgstr ""
+
#: lang/json/material_from_json.py
msgid "Dairy"
msgstr ""
@@ -100522,6 +105001,14 @@ msgstr ""
msgid "Superalloy"
msgstr ""
+#: lang/json/material_from_json.py
+msgid "layered carbide"
+msgstr ""
+
+#: lang/json/material_from_json.py
+msgid "Synthetic Fabric"
+msgstr ""
+
#: lang/json/material_from_json.py
msgid "Tin"
msgstr ""
@@ -100632,6 +105119,10 @@ msgstr ""
msgid "Arcane Skin"
msgstr ""
+#: lang/json/material_from_json.py
+msgid "Orichalcum"
+msgstr ""
+
#: lang/json/material_from_json.py
msgid "Demon Chitin"
msgstr ""
@@ -100641,7 +105132,7 @@ msgid "Sugar"
msgstr ""
#: lang/json/mission_def_from_json.py
-msgid "Gather bones for the Brigitte. About 8 should do it."
+msgid "Gather bones for the Brigitte. About 8 should do it."
msgstr ""
#: lang/json/mission_def_from_json.py
@@ -102199,7 +106690,7 @@ msgid ""
msgstr ""
#: lang/json/mission_def_from_json.py
-msgid "I did't want to use chemicals on these rats."
+msgid "I didn't want to use chemicals on these rats."
msgstr ""
#: lang/json/mission_def_from_json.py
@@ -102502,6 +106993,10 @@ msgid ""
"don't have any handy references."
msgstr ""
+#: lang/json/mission_def_from_json.py
+msgid "Fantastic, I'm not supposed to leave our land."
+msgstr ""
+
#: lang/json/mission_def_from_json.py
msgid "A library, bookstore should have one, schools are another good idea."
msgstr ""
@@ -103928,8 +108423,8 @@ msgstr ""
#: lang/json/mission_def_from_json.py
msgid ""
"Reach the collapsed tower basement, and search the ruins for a photonic "
-"circuitry template. The intercom warned you about heavy enemy prescence, and "
-"of the existence of a hazardous enviroment."
+"circuitry template. The intercom warned you about heavy enemy presence, and "
+"of the existence of a hazardous environment."
msgstr ""
#: lang/json/mission_def_from_json.py
@@ -105356,7 +109851,7 @@ msgid "yourself scream in agony!"
msgstr ""
#. ~ Mutation class: Any junkie_message
-#: lang/json/mutation_category_from_json.py src/iuse_actor.cpp
+#: lang/json/mutation_category_from_json.py
msgid "You quiver with anticipation..."
msgstr ""
@@ -106542,7 +111037,7 @@ msgstr ""
#: lang/json/mutation_from_json.py
msgid ""
"You have a moustache and a beard starting with a strip going down from the "
-"bottom lip, then tracing the jaw lines. It looks a bit like an anchor, thus "
+"bottom lip, then tracing the jaw lines. It looks a bit like an anchor, thus "
"the name."
msgstr ""
@@ -106553,7 +111048,7 @@ msgstr ""
#. ~ Description for Facial hair: short boxed beard
#: lang/json/mutation_from_json.py
msgid ""
-"You have a moustache and a short beard with trimmed sides. Thin patches "
+"You have a moustache and a short beard with trimmed sides. Thin patches "
"connect them both, forming a 'box' around the lips, thus the name."
msgstr ""
@@ -106675,7 +111170,7 @@ msgstr ""
#. ~ Description for Facial hair: neckbeard
#: lang/json/mutation_from_json.py
msgid ""
-"You have a beard formed from hair grown on neck below the chin line. No "
+"You have a beard formed from hair grown on neck below the chin line. No "
"moustache included."
msgstr ""
@@ -106776,6 +111271,27 @@ msgid ""
"footing."
msgstr ""
+#: lang/json/mutation_from_json.py
+msgid "Weak Photophore"
+msgstr ""
+
+#. ~ Description for Weak Photophore
+#: lang/json/mutation_from_json.py
+msgid ""
+"A photophore has grown from your head, you can make it glow soflty. This "
+"will make you very visible in the dark, ideal to attract a partner during "
+"mating season."
+msgstr ""
+
+#: lang/json/mutation_from_json.py
+msgid "Photophore"
+msgstr ""
+
+#. ~ Description for Photophore
+#: lang/json/mutation_from_json.py
+msgid "Your can make your photophore glow brightly."
+msgstr ""
+
#: lang/json/mutation_from_json.py
msgid "Good Hearing"
msgstr ""
@@ -107247,9 +111763,9 @@ msgstr ""
#. ~ Description for Stimulant Psychosis
#: lang/json/mutation_from_json.py
msgid ""
-"You have a unique history with stimulants (like coffee or amphetamines). You "
-"can tolerate a lot more of them without overdosing, but if you indulge too "
-"much, you start seeing things..."
+"You have a unique history with stimulants (like coffee or amphetamines). "
+"You can tolerate a lot more of them without overdosing, but if you indulge "
+"too much, you start seeing things…"
msgstr ""
#. ~ Description for Stylish
@@ -107379,8 +111895,20 @@ msgstr ""
#: lang/json/mutation_from_json.py
msgid ""
"You have practiced fighting with weapons. You start with your choice of "
-"Eskrima, Fencing, Fior Di Battaglia, Medieval Swordsmanship, Niten Ichi-"
-"Ryu, Pentjak Silat, or Sōjutsu."
+"Eskrima, Fencing, Fior Di Battaglia, Medieval Swordsmanship, Niten Ichi-Ryu, "
+"Pentjak Silat, or Sōjutsu."
+msgstr ""
+
+#: lang/json/mutation_from_json.py
+msgid "Competitive Fencer"
+msgstr ""
+
+#. ~ Description for Competitive Fencer
+#: lang/json/mutation_from_json.py
+msgid ""
+"You were an avid fencer, starting with foil and moving onto saber, then "
+"épée. You competed nationally and dabbled with some of the historical "
+"fencing weapons afforded by HEMA's popularity."
msgstr ""
#: lang/json/mutation_from_json.py
@@ -108102,8 +112630,8 @@ msgstr ""
#. ~ Description for Fey Eyes
#: lang/json/mutation_from_json.py
msgid ""
-"Your eyes have turned...green. It's tough to tell the exact shade as it "
-"seems to shift. The effect is ...pleasant."
+"Your eyes have turned… green. It's tough to tell the exact shade as it "
+"seems to shift. The effect is… pleasant."
msgstr ""
#: lang/json/mutation_from_json.py
@@ -108865,7 +113393,7 @@ msgstr ""
#: lang/json/mutation_from_json.py
msgid ""
"Ever since you ate that Marloss berry, you can't get its scent out of your "
-"nose, and you have a strong desire to try some seeds and...sap?"
+"nose, and you have a strong desire to try some seeds and… sap?"
msgstr ""
#: lang/json/mutation_from_json.py
@@ -108876,7 +113404,7 @@ msgstr ""
#: lang/json/mutation_from_json.py
msgid ""
"Ever since you ate that Marloss seed, you can't get its taste off of your "
-"tongue, and you have a strong desire to try some berries and...sap?"
+"tongue, and you have a strong desire to try some berries and… sap?"
msgstr ""
#: lang/json/mutation_from_json.py
@@ -109265,7 +113793,7 @@ msgstr ""
#: lang/json/mutation_from_json.py
msgid ""
"Your fangs have grown extremely large and incredibly sharp. They make it "
-"impossible to wear mouthgear and difficult to eat... but leave nasty wounds "
+"impossible to wear mouthgear and difficult to eat… but leave nasty wounds "
"when you bite."
msgstr ""
@@ -110491,7 +115019,7 @@ msgstr ""
#. ~ Description for Snout
#: lang/json/mutation_from_json.py
msgid ""
-"Your face and jaw have begun...changing. Masks and such fit OK, but you're "
+"Your face and jaw have begun… changing. Masks and such fit OK, but you're "
"noticeably mutated."
msgstr ""
@@ -111226,10 +115754,11 @@ msgstr ""
#. ~ Description for Ectothermic
#: lang/json/mutation_from_json.py
+#, no-python-format
msgid ""
-"Your body has become permanently cold-blooded. Your speed lowers--or "
-"raises--for every 2 (1.1) degrees below or above 65 F (18.3 C). You only "
-"need to eat half as much as an average human."
+"Your body has become permanently cold-blooded. Your speed lowers or raises "
+"1% for every 2 (1.1) degrees below or above 65 F (18.3 C). You only need to "
+"eat half as much as an average human."
msgstr ""
#: lang/json/mutation_from_json.py
@@ -111518,7 +116047,7 @@ msgstr ""
#: lang/json/mutation_from_json.py
msgid ""
"It would be good to be a Queen, having workers constantly servicing your "
-"every need...but how would you keep them in line?"
+"every need… but how would you keep them in line?"
msgstr ""
#. ~ Description for Plant
@@ -111535,8 +116064,8 @@ msgstr ""
#. ~ Description for Aqueous
#: lang/json/mutation_from_json.py
msgid ""
-"What was that old advertisement, 'paint the planet'? That might be a good "
-"long-term goal, but for now..."
+"What was that old advertisement, 'paint the planet'? That might be a good "
+"long-term goal, but for now…"
msgstr ""
#: lang/json/mutation_from_json.py
@@ -112210,6 +116739,17 @@ msgid ""
"Keep. Moving."
msgstr ""
+#: lang/json/mutation_from_json.py
+msgid "Wayfarer"
+msgstr ""
+
+#. ~ Description for Wayfarer
+#: lang/json/mutation_from_json.py
+msgid ""
+"Whether from personal choice or childhood trauma, travelling with vehicles "
+"is off-limits to you, even if your life depended on it."
+msgstr ""
+
#: lang/json/mutation_from_json.py
msgid "Survivor Story"
msgstr ""
@@ -113148,7 +117688,7 @@ msgid "Scientist"
msgstr ""
#: lang/json/npc_class_from_json.py
-msgid "I'm looking for clues concerning these monsters' origins..."
+msgid "I'm looking for clues concerning these monsters' origins…"
msgstr ""
#: lang/json/npc_class_from_json.py
@@ -113187,7 +117727,8 @@ msgstr ""
msgid "I'm tracking game."
msgstr ""
-#: lang/json/npc_class_from_json.py lang/json/npc_from_json.py
+#: lang/json/npc_class_from_json.py
+#: lang/json/npc_from_json.py
msgid "Soldier"
msgstr ""
@@ -113212,7 +117753,7 @@ msgid "Real Person"
msgstr ""
#: lang/json/npc_class_from_json.py
-msgid "I'm just wandering, like a totally real and normal NP... Person!"
+msgid "I'm just wandering, like a totally real and normal NP… Person!"
msgstr ""
#: lang/json/npc_class_from_json.py
@@ -113228,7 +117769,7 @@ msgid "Foodperson"
msgstr ""
#: lang/json/npc_class_from_json.py
-msgid "I AM FOODPERSON. AND I BRING SUSTENANCE!"
+msgid "I AM FOODPERSON. AND I BRING SUSTENANCE!"
msgstr ""
#: lang/json/npc_class_from_json.py lang/json/npc_from_json.py
@@ -113236,7 +117777,7 @@ msgid "Cyborg"
msgstr ""
#: lang/json/npc_class_from_json.py
-msgid "Zzzzzt... I...I'm a Cy...BEEEEEP...borg."
+msgid "Zzzzzt… I… I'm a Cy… BEEEEEP… borg."
msgstr ""
#: lang/json/npc_class_from_json.py
@@ -113378,6 +117919,18 @@ msgstr ""
msgid "I'm the owner of a trade caravan."
msgstr ""
+#: lang/json/npc_class_from_json.py
+msgid "Operator"
+msgstr ""
+
+#: lang/json/npc_class_from_json.py
+msgid "Mage Test"
+msgstr ""
+
+#: lang/json/npc_class_from_json.py
+msgid "I'm a wandering debug tester for the arcane arts."
+msgstr ""
+
#: lang/json/npc_class_from_json.py lang/json/npc_from_json.py
#: lang/json/npc_from_json.py
msgid "Captive"
@@ -114910,14 +119463,30 @@ msgstr ""
msgid "music store roof"
msgstr ""
+#: lang/json/overmap_terrain_from_json.py
+msgid "megastore parking lot"
+msgstr ""
+
#: lang/json/overmap_terrain_from_json.py
msgid "megastore"
msgstr ""
+#: lang/json/overmap_terrain_from_json.py
+msgid "megastore, second floor"
+msgstr ""
+
+#: lang/json/overmap_terrain_from_json.py
+msgid "megastore roof"
+msgstr ""
+
#: lang/json/overmap_terrain_from_json.py
msgid "hotel parking"
msgstr ""
+#: lang/json/overmap_terrain_from_json.py
+msgid "hotel"
+msgstr ""
+
#: lang/json/overmap_terrain_from_json.py
msgid "hotel entrance"
msgstr ""
@@ -115287,7 +119856,7 @@ msgid "spiked trench"
msgstr ""
#: lang/json/overmap_terrain_from_json.py
-msgid "store survey"
+msgid "fabrication workshop survey"
msgstr ""
#: lang/json/overmap_terrain_from_json.py
@@ -115302,6 +119871,14 @@ msgstr ""
msgid "livestock survey"
msgstr ""
+#: lang/json/overmap_terrain_from_json.py
+msgid "store house survey"
+msgstr ""
+
+#: lang/json/overmap_terrain_from_json.py
+msgid "saltworks survey"
+msgstr ""
+
#: lang/json/overmap_terrain_from_json.py
msgid "canteen survey"
msgstr ""
@@ -115988,6 +120565,10 @@ msgstr ""
msgid "shooting range roof"
msgstr ""
+#: lang/json/overmap_terrain_from_json.py
+msgid "miniature railway"
+msgstr ""
+
#: lang/json/overmap_terrain_from_json.py
msgid "golf course"
msgstr ""
@@ -116654,10 +121235,6 @@ msgstr ""
msgid "dense urban"
msgstr ""
-#: lang/json/overmap_terrain_from_json.py
-msgid "hotel"
-msgstr ""
-
#: lang/json/overmap_terrain_from_json.py
msgid "school"
msgstr ""
@@ -116678,6 +121255,10 @@ msgstr ""
msgid "mechanics garage"
msgstr ""
+#: lang/json/overmap_terrain_from_json.py
+msgid "megastore entrance"
+msgstr ""
+
#: lang/json/overmap_terrain_from_json.py
msgid "sewage treatment"
msgstr ""
@@ -116722,10 +121303,6 @@ msgstr ""
msgid "desert"
msgstr ""
-#: lang/json/overmap_terrain_from_json.py
-msgid "megastore roof"
-msgstr ""
-
#: lang/json/professions_from_json.py
msgctxt "profession_male"
msgid "Vagabond"
@@ -120796,6 +125373,36 @@ msgid ""
"on. This displeases you."
msgstr ""
+#: lang/json/professions_from_json.py
+msgctxt "profession_male"
+msgid "Competetive Fencer"
+msgstr ""
+
+#. ~ Profession (male Competetive Fencer) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_male"
+msgid ""
+"You were an avid sport fencer, always practicing at local clubs and "
+"competing in tournaments. You were on your way to have a few bouts at the "
+"club when the world ended. Now you're in your most important tournament, "
+"the refs are all dead, and none of your opponents follow the rules."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_female"
+msgid "Competetive Fencer"
+msgstr ""
+
+#. ~ Profession (female Competetive Fencer) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_female"
+msgid ""
+"You were an avid sport fencer, always practicing at local clubs and "
+"competing in tournaments. You were on your way to have a few bouts at the "
+"club when the world ended. Now you're in your most important tournament, "
+"the refs are all dead, and none of your opponents follow the rules."
+msgstr ""
+
#: lang/json/professions_from_json.py
msgctxt "profession_male"
msgid "Career Politician"
@@ -121822,6 +126429,248 @@ msgid ""
"flesh that is now your own, bare your fangs and fight until the next dawn."
msgstr ""
+#: lang/json/professions_from_json.py
+msgctxt "profession_male"
+msgid "Military Rifleman"
+msgstr ""
+
+#. ~ Profession (male Military Rifleman) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_male"
+msgid ""
+"Frontline infantry, frontline infantry, frontline infantry, frontline "
+"infantry."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_female"
+msgid "Military Rifleman"
+msgstr ""
+
+#. ~ Profession (female Military Rifleman) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_female"
+msgid ""
+"Frontline infantry, frontline infantry, frontline infantry, frontline "
+"infantry."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_male"
+msgid "Military Marksman"
+msgstr ""
+
+#. ~ Profession (male Military Marksman) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_male"
+msgid ""
+"You like to think you're a real sniper, but really you're just infantry with "
+"a bigger gun."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_female"
+msgid "Military Marksman"
+msgstr ""
+
+#. ~ Profession (female Military Marksman) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_female"
+msgid ""
+"You like to think you're a real sniper, but really you're just infantry with "
+"a bigger gun."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_male"
+msgid "Military Automatic Rifleman"
+msgstr ""
+
+#. ~ Profession (male Military Automatic Rifleman) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_male"
+msgid "S stands for suppressing fire!"
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_female"
+msgid "Military Automatic Rifleman"
+msgstr ""
+
+#. ~ Profession (female Military Automatic Rifleman) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_female"
+msgid "S stands for suppressing fire!"
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_male"
+msgid "Military Grenadier"
+msgstr ""
+
+#. ~ Profession (male Military Grenadier) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_male"
+msgid "There's no kill like overkill."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_female"
+msgid "Military Grenadier"
+msgstr ""
+
+#. ~ Profession (female Military Grenadier) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_female"
+msgid "There's no kill like overkill."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_male"
+msgid "Military Breacher"
+msgstr ""
+
+#. ~ Profession (male Military Breacher) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_male"
+msgid "Doors and windows everywhere dare not speak your name."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_female"
+msgid "Military Breacher"
+msgstr ""
+
+#. ~ Profession (female Military Breacher) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_female"
+msgid "Doors and windows everywhere dare not speak your name."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_male"
+msgid "Operator Recon"
+msgstr ""
+
+#. ~ Profession (male Operator Recon) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_male"
+msgid "The only easy day was yesterday."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_female"
+msgid "Operator Recon"
+msgstr ""
+
+#. ~ Profession (female Operator Recon) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_female"
+msgid "The only easy day was yesterday."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_male"
+msgid "Operator Sniper"
+msgstr ""
+
+#. ~ Profession (male Operator Sniper) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_male"
+msgid ""
+"You spent days dueling an enemy sniper, then he just... died. And then un-"
+"died."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_female"
+msgid "Operator Sniper"
+msgstr ""
+
+#. ~ Profession (female Operator Sniper) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_female"
+msgid ""
+"You spent days dueling an enemy sniper, then he just... died. And then un-"
+"died."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_male"
+msgid "Operator Hacker"
+msgstr ""
+
+#. ~ Profession (male Operator Hacker) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_male"
+msgid ""
+"You insist you're not a hacker, you're an 'Electronic Warfare Specialist'"
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_female"
+msgid "Operator Hacker"
+msgstr ""
+
+#. ~ Profession (female Operator Hacker) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_female"
+msgid ""
+"You insist you're not a hacker, you're an 'Electronic Warfare Specialist'"
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_male"
+msgid "Operator Undercover"
+msgstr ""
+
+#. ~ Profession (male Operator Undercover) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_male"
+msgid ""
+"You've been tailing your target for months and now he's a zombie. So much "
+"for that lead."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_female"
+msgid "Operator Undercover"
+msgstr ""
+
+#. ~ Profession (female Operator Undercover) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_female"
+msgid ""
+"You've been tailing your target for months and now he's a zombie. So much "
+"for that lead."
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_male"
+msgid "Operator CBRN"
+msgstr ""
+
+#. ~ Profession (male Operator CBRN) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_male"
+msgid ""
+"Chemical weapons? Check. Biological outbreak? Check. Nuclear war? Check. "
+"Sounds like the perfect job for you!"
+msgstr ""
+
+#: lang/json/professions_from_json.py
+msgctxt "profession_female"
+msgid "Operator CBRN"
+msgstr ""
+
+#. ~ Profession (female Operator CBRN) description
+#: lang/json/professions_from_json.py
+msgctxt "prof_desc_female"
+msgid ""
+"Chemical weapons? Check. Biological outbreak? Check. Nuclear war? Check. "
+"Sounds like the perfect job for you!"
+msgstr ""
+
#: lang/json/professions_from_json.py
msgctxt "profession_male"
msgid "Rookie"
@@ -123397,11 +128246,6 @@ msgstr ""
msgid "MEDICAL"
msgstr ""
-#. ~ Crafting recipes subcategory of 'OTHER' category
-#: lang/json/recipe_category_from_json.py
-msgid "CONTAINERS"
-msgstr ""
-
#. ~ Crafting recipes subcategory of 'OTHER' category
#. ~ Crafting recipes subcategory of 'ENCHANTED' category
#: lang/json/recipe_category_from_json.py
@@ -124387,7 +129231,7 @@ msgstr ""
#: lang/json/recipe_from_json.py
msgid ""
-"We should build a well, put it near that winch. This will make our future "
+"We should build a well, put it near that winch. This will make our future "
"here more secure."
msgstr ""
@@ -124444,7 +129288,7 @@ msgstr ""
#: lang/json/recipe_from_json.py
msgid ""
"Now that we have some cover, we should set up a brazier for cooking, and "
-"grab a pot. Let's put it in that dining area."
+"grab a pot. Let's put it in that dining area."
msgstr ""
#: lang/json/recipe_from_json.py
@@ -125109,7 +129953,7 @@ msgid "build 2 wood stoves"
msgstr ""
#: lang/json/recipe_from_json.py
-msgid "We should build a well. This will make cooking more convenient."
+msgid "We should build a well. This will make cooking more convenient."
msgstr ""
#: lang/json/recipe_from_json.py
@@ -125606,6 +130450,182 @@ msgid ""
"a roof on the southwest side of the livestock field."
msgstr ""
+#: lang/json/recipe_from_json.py
+msgid "Survey land for a saltworks area."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "Saltworks survey"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could uprade the workspace in the brewery to add a still, wood stove and "
+"work table."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "SW brewery still"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "We could use fill out the space with extra kegs and storage racks."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "SW brewery kegs"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could divert saltwater from the swamp nearby to create a steady supply of "
+"salt for our needs in a log building."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "NE log wall saltpan"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could use a storage room for chemicals and tools, so build a log shack "
+"with a roof on the southeast side of the saltworks field."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "SE log wall storage room"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could take advantage of the the designation of this area to build a log "
+"brewery."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "SW log wall brewery"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could divert saltwater from the swamp nearby to create a steady supply of "
+"salt for our needs in a metal shed."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "NE metal wall saltpan"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could use a storage room for chemicals and tools, so build a metal shack "
+"with a roof on the southeast side of the saltworks field."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "SE metal wall storage room"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could take advantage of the the designation of this area to build a metal "
+"wall brewery."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "SW metal wall brewery"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could divert saltwater from the swamp nearby to create a steady supply of "
+"salt for our needs in a stone building."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "NE stone wall saltpan"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could use a storage room for chemicals and tools, so build a stone wall "
+"shack with a roof on the southeast side of the saltworks field."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "SE stone wall storage room"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could take advantage of the the designation of this area to build a stone "
+"brewery."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "SW stone wall brewery"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could divert saltwater from the swamp nearby to create a steady supply of "
+"salt for our needs in an adobe hut."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "NE wattle and daub saltpan"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could use a storage room for chemicals and tools, so build an adobe shack "
+"with a roof on the southeast side of the saltworks field."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "SE wattle and daub storage room"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could take advantage of the the designation of this area to build an "
+"wattle and daub brewery."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "SW wattle and daub brewery"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could divert saltwater from the swamp nearby to create a steady supply of "
+"salt for our needs in a wooden shed."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "NE wood panel saltpan"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could use a storage room for chemicals and tools, so build a wood panel "
+"shack with a roof on the southeast side of the saltworks field."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "SE wood panel storage room"
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid ""
+"We could take advantage of the the designation of this area to build a "
+"wooden brewery."
+msgstr ""
+
+#: lang/json/recipe_from_json.py
+msgid "SW wood panel brewery"
+msgstr ""
+
#: lang/json/recipe_from_json.py
msgid ""
"We should build a fireplace for cooking and grab a pot. Let's set up near "
@@ -125626,7 +130646,7 @@ msgstr ""
#: lang/json/recipe_from_json.py
msgid ""
-"We should build a well, put it near the terminal. This will make our future "
+"We should build a well, put it near the terminal. This will make our future "
"here more secure."
msgstr ""
@@ -125732,7 +130752,7 @@ msgstr ""
#: lang/json/recipe_from_json.py
msgid ""
-"Let's build some living quarters so we can expand. We will start in the "
+"Let's build some living quarters so we can expand. We will start in the "
"southeast corner."
msgstr ""
@@ -125742,7 +130762,7 @@ msgstr ""
#: lang/json/recipe_from_json.py
msgid ""
-"Let's build some living quarters so we can expand. We will continue along "
+"Let's build some living quarters so we can expand. We will continue along "
"the same wall."
msgstr ""
@@ -125752,7 +130772,7 @@ msgstr ""
#: lang/json/recipe_from_json.py
msgid ""
-"Let's build some living quarters so we can expand. We will continue along "
+"Let's build some living quarters so we can expand. We will continue along "
"the other wall."
msgstr ""
@@ -126184,7 +131204,7 @@ msgstr ""
#: lang/json/recipe_from_json.py
msgid ""
-"Some benches around the outside would be nice. Build some to the northwest."
+"Some benches around the outside would be nice. Build some to the northwest."
msgstr ""
#: lang/json/recipe_from_json.py
@@ -126193,7 +131213,7 @@ msgstr ""
#: lang/json/recipe_from_json.py
msgid ""
-"Some benches around the outside would be nice. Build some to the northeast."
+"Some benches around the outside would be nice. Build some to the northeast."
msgstr ""
#: lang/json/recipe_from_json.py
@@ -126202,7 +131222,7 @@ msgstr ""
#: lang/json/recipe_from_json.py
msgid ""
-"Some benches around the outside would be nice. Build some to the southeast."
+"Some benches around the outside would be nice. Build some to the southeast."
msgstr ""
#: lang/json/recipe_from_json.py
@@ -126211,7 +131231,7 @@ msgstr ""
#: lang/json/recipe_from_json.py
msgid ""
-"Some benches around the outside would be nice. Build some to the southwest."
+"Some benches around the outside would be nice. Build some to the southwest."
msgstr ""
#: lang/json/recipe_from_json.py
@@ -126450,6 +131470,10 @@ msgstr ""
msgid "Central Storage Building"
msgstr ""
+#: lang/json/recipe_group_from_json.py
+msgid "Saltworks Area"
+msgstr ""
+
#: lang/json/recipe_group_from_json.py
msgid "Fabrication Workshop"
msgstr ""
@@ -127262,7 +132286,7 @@ msgstr ""
#: lang/json/scenario_from_json.py
msgctxt "scen_desc_male"
msgid ""
-"It is the winter after zero hour. As you were scavenging for food and a "
+"It is the winter after zero hour. As you were scavenging for food and a "
"warm place to stay at, you heard the sound of lots of movement nearby."
msgstr ""
@@ -127270,7 +132294,7 @@ msgstr ""
#: lang/json/scenario_from_json.py
msgctxt "scen_desc_female"
msgid ""
-"It is the winter after zero hour. As you were scavenging for food and a "
+"It is the winter after zero hour. As you were scavenging for food and a "
"warm place to stay at, you heard the sound of lots of movement nearby."
msgstr ""
@@ -127773,6 +132797,44 @@ msgctxt "start_name"
msgid "Wizard's Secret Basement Study"
msgstr ""
+#. ~ Name for scenario 'The Wizard's Vacation' for a male character
+#: lang/json/scenario_from_json.py
+msgctxt "scenario_male"
+msgid "The Wizard's Vacation"
+msgstr ""
+
+#. ~ Name for scenario 'The Wizard's Vacation' for a female character
+#: lang/json/scenario_from_json.py
+msgctxt "scenario_female"
+msgid "The Wizard's Vacation"
+msgstr ""
+
+#. ~ Description for scenario 'The Wizard's Vacation' for a male character.
+#: lang/json/scenario_from_json.py
+msgctxt "scen_desc_male"
+msgid ""
+"You have been an apprentice to a wizard for some time now, you've saved for "
+"years for your dream vaction at a secluded wizard tower. Your journey of "
+"self-discovery is interrupted by the cataclysm. Now you have to figure out "
+"how to survive on your own."
+msgstr ""
+
+#. ~ Description for scenario 'The Wizard's Vacation' for a female character.
+#: lang/json/scenario_from_json.py
+msgctxt "scen_desc_female"
+msgid ""
+"You have been an apprentice to a wizard for some time now, you've saved for "
+"years for your dream vaction at a secluded wizard tower. Your journey of "
+"self-discovery is interrupted by the cataclysm. Now you have to figure out "
+"how to survive on your own."
+msgstr ""
+
+#. ~ Starting location for scenario 'The Wizard's Vacation'.
+#: lang/json/scenario_from_json.py
+msgctxt "start_name"
+msgid "Wizard's Retreat Vacation"
+msgstr ""
+
#. ~ Name for scenario 'The Sweet Life' for a male character
#: lang/json/scenario_from_json.py
msgctxt "scenario_male"
@@ -132507,13 +137569,7 @@ msgid ""
msgstr ""
#: lang/json/snippet_from_json.py
-msgid "Pass me a beer, I need to power my ethanol burner."
-msgstr ""
-
-#: lang/json/snippet_from_json.py
-msgid ""
-"Ethanol burners! The power source that's fun to recharge. Get me a drink, "
-"please!"
+msgid "Pass some ethanol, I need to power my ethanol burner."
msgstr ""
#: lang/json/snippet_from_json.py
@@ -132521,19 +137577,12 @@ msgid "Waiter! I need a refill, my ethanol burner is running out of charge!"
msgstr ""
#: lang/json/snippet_from_json.py
-msgid ""
-"I require ethanol-based drinks for my internal power supply. Anything on you?"
-msgstr ""
-
-#: lang/json/snippet_from_json.py
-msgid ""
-"Got any alcohol to spare? Need to recharge my drives. Mead, if you have any."
+msgid "I require ethanol for my internal power supply. Anything on you?"
msgstr ""
#: lang/json/snippet_from_json.py
msgid ""
-"This ethanol-burning power supply is the best implant I ever got. Speaking "
-"of which, got some booze to top me off?"
+"Got any alcohol to spare? Need to recharge my drives. Methanol, would do."
msgstr ""
#: lang/json/snippet_from_json.py
@@ -133208,6 +138257,64 @@ msgstr ""
msgid " will follow normal engagement rules."
msgstr ""
+#: lang/json/snippet_from_json.py
+msgid ""
+"\n"
+"IMMERSION LOG: 27A\n"
+"\n"
+"INCIDENT REPORT:\n"
+"\n"
+"SUMMARY:\n"
+"Unforeseen EM interference source forced the team to remain in-phase between "
+"prime and sub-scape 27. Expedition members reported observing a spheroid-"
+"entity ('PE-01') moving beneath the typically opaque t-substrate. "
+"Interference readings and expedition testimony implies the PE-01 was a "
+"potent EM radiation source, and the origin of the interference. After 30 "
+"min, PE-01 receded and the expedition was aborted in accordance of procedure "
+"EMER-12. The expedition team suffered no injuries, physical or mental, "
+"during the incident. \n"
+"\n"
+"It's become clear we have greatly underestimated the risk posed by phase "
+"immersions. Engineering has been tasked with designing a new, improved "
+"protection suite, and has shown promising advances. Updated emergency "
+"procedures are in-progress.\n"
+"\n"
+"Refer to file EXO-I-271 for full report."
+msgstr ""
+
+#: lang/json/snippet_from_json.py
+msgid ""
+"\n"
+"ANALYSIS OF TRANSPLANAR MATERIALS\n"
+"\n"
+"T-SUBSTRATE\n"
+"\n"
+"SUMMARY:\n"
+"The material henceforth named t-substrate is the naturally occurring 'floor' "
+"material of phase-space. Samples of t-substrate were first recovered during "
+"IMMERSION-25A, when upon return to prime the samples violently [////////], "
+"exhibiting what are now known as 'plane-uneven' physical properties. The "
+"following report will examine such variances to the best extent of our "
+"knowledge.\n"
+"\n"
+"Refer to file EXO-M-312 for full report."
+msgstr ""
+
+#: lang/json/snippet_from_json.py
+msgid ""
+"\n"
+"ANALISIS OF TRANSPLANAR MATERIALS \n"
+"\n"
+"T-SUBSTRATE\n"
+"\n"
+"HAADF MICROGRAPH:\n"
+"An atomic-scale photograph shows only a completely smooth red surface. In "
+"the lower left corner the phrase 'Not made of atoms?!' is scrawled with a "
+"blue pen.\n"
+"\n"
+"Refer to file EXO-M-312 for full report."
+msgstr ""
+
#: lang/json/snippet_from_json.py
msgid ""
"\n"
@@ -139251,7 +144358,7 @@ msgid "a static hissing sound."
msgstr ""
#: lang/json/speech_from_json.py
-msgid "\"That creepy abandoned post-apocalyptic lab complex looks safe...\""
+msgid "\"That creepy abandoned post-apocalyptic lab complex looks safe…\""
msgstr ""
#: lang/json/speech_from_json.py
@@ -139265,11 +144372,11 @@ msgid "\"Hold on, I want to pulp that zombie corpse.\""
msgstr ""
#: lang/json/speech_from_json.py
-msgid "\"Burning... from the inside...\""
+msgid "\"Burning… from the inside…\""
msgstr ""
#: lang/json/speech_from_json.py
-msgid "\"This smell... Don't know...\""
+msgid "\"This smell… Don't know…\""
msgstr ""
#: lang/json/speech_from_json.py
@@ -139281,19 +144388,19 @@ msgid "a scraping noise."
msgstr ""
#: lang/json/speech_from_json.py
-msgid "\"No... Stop the burning!\""
+msgid "\"No… Stop the burning!\""
msgstr ""
#: lang/json/speech_from_json.py
-msgid "\"Hrgm... Blood... Hungry...\""
+msgid "\"Hrgm… Blood… Hungry…\""
msgstr ""
#: lang/json/speech_from_json.py
-msgid "\"Hunger... Must eat...\""
+msgid "\"Hunger… Must eat…\""
msgstr ""
#: lang/json/speech_from_json.py
-msgid "\"Run... Chase... Eat...\""
+msgid "\"Run… Chase… Eat…\""
msgstr ""
#: lang/json/speech_from_json.py
@@ -139415,7 +144522,7 @@ msgid "\"THIS UNIT IS BROKEN. PLEASE CALL AN ATTENDANT.\""
msgstr ""
#: lang/json/speech_from_json.py
-msgid "\"Can't... breathe...\""
+msgid "\"Can't… breathe…\""
msgstr ""
#: lang/json/speech_from_json.py
@@ -139428,8 +144535,8 @@ msgstr ""
#: lang/json/speech_from_json.py
msgid ""
-"\"Have you seen my friend? He went into surgery yesterday... or maybe the "
-"day before...\""
+"\"Have you seen my friend? He went into surgery yesterday… or maybe the day "
+"before…\""
msgstr ""
#: lang/json/speech_from_json.py
@@ -139441,7 +144548,7 @@ msgid "\"I have done what you asked. Please let me go!\""
msgstr ""
#: lang/json/speech_from_json.py
-msgid "\"I cannot... yet I must. How do you calculate that?\""
+msgid "\"I cannot… yet I must. How do you calculate that?\""
msgstr ""
#: lang/json/speech_from_json.py
@@ -139449,12 +144556,11 @@ msgid "\"This is a dream. This has to be a dream.\""
msgstr ""
#: lang/json/speech_from_json.py
-msgid ""
-"\"This is my life now... this is my life now... this is my life now...\""
+msgid "\"This is my life now… this is my life now… this is my life now…\""
msgstr ""
#: lang/json/speech_from_json.py
-msgid "\"Wanna go home...\""
+msgid "\"Wanna go home…\""
msgstr ""
#: lang/json/speech_from_json.py
@@ -139510,7 +144616,7 @@ msgstr ""
#: lang/json/speech_from_json.py
msgid ""
"a worried voice say, \"Customer, could you please get more friendship? I "
-"don't want to go...\""
+"don't want to go…\""
msgstr ""
#: lang/json/speech_from_json.py
@@ -139533,18 +144639,18 @@ msgstr ""
#: lang/json/speech_from_json.py
msgid ""
-"a distorted voice say, \"Customer... What's happening? I don't feel so "
-"good.\""
+"a distorted voice say, \"Customer… What's happening? I don't feel so good."
+"\""
msgstr ""
#: lang/json/speech_from_json.py
msgid ""
-"a distorted voice say, \"What... have you done? My thumbs are not "
-"responding anymore!\""
+"a distorted voice say, \"What… have you done? My thumbs are not responding "
+"anymore!\""
msgstr ""
#: lang/json/speech_from_json.py
-msgid "a distorted voice say, \"Carrying bags? I don't understand...\""
+msgid "a distorted voice say, \"Carrying bags? I don't understand…\""
msgstr ""
#: lang/json/speech_from_json.py
@@ -139667,7 +144773,7 @@ msgid "\"Police inbound. Stay where you are!\""
msgstr ""
#: lang/json/speech_from_json.py
-msgid "\"I AM FOODPERSON. AND I BRING SUSTENANCE!\""
+msgid "\"I AM FOODPERSON. AND I BRING SUSTENANCE!\""
msgstr ""
#: lang/json/speech_from_json.py
@@ -139688,7 +144794,7 @@ msgid "\"FoodPlace: It's the Calories.\""
msgstr ""
#: lang/json/speech_from_json.py
-msgid "\"You need food, don't you? Then come with me to FOODPLACE!!\""
+msgid "\"You need food, don't you? Then come with me to FOODPLACE!!\""
msgstr ""
#: lang/json/speech_from_json.py
@@ -139756,7 +144862,7 @@ msgid "You shouldn't have done that."
msgstr ""
#: lang/json/speech_from_json.py
-msgid "Let's play... Russian roulette."
+msgid "Let's play… Russian roulette."
msgstr ""
#: lang/json/speech_from_json.py
@@ -139768,7 +144874,7 @@ msgid "Go kill yourself!"
msgstr ""
#: lang/json/speech_from_json.py
-msgid "Big Brother is watching you..."
+msgid "Big Brother is watching you…"
msgstr ""
#: lang/json/speech_from_json.py
@@ -139780,11 +144886,11 @@ msgid "Why won't you die?"
msgstr ""
#: lang/json/speech_from_json.py
-msgid "Blood... Delicious."
+msgid "Blood… Delicious."
msgstr ""
#: lang/json/speech_from_json.py
-msgid "See you... IN HELL!"
+msgid "See you… IN HELL!"
msgstr ""
#: lang/json/speech_from_json.py
@@ -139800,7 +144906,7 @@ msgid "What did you do with my Mommy?"
msgstr ""
#: lang/json/speech_from_json.py
-msgid "Stay with me... forever!"
+msgid "Stay with me… forever!"
msgstr ""
#: lang/json/speech_from_json.py
@@ -141198,6 +146304,10 @@ msgstr ""
msgid "Wizard's Secret Basement Study"
msgstr ""
+#: lang/json/start_location_from_json.py
+msgid "Wizard's lake retreat"
+msgstr ""
+
#: lang/json/start_location_from_json.py
msgid "Candy Shop"
msgstr ""
@@ -141235,7 +146345,7 @@ msgid "Clothing Store"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "You there. Quiet down. Can you hear it? The song?"
+msgid "Acolyte."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141243,20 +146353,20 @@ msgid "You're back. Have you come to listen to the song?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Acolyte."
+msgid "You there. Quiet down. Can you hear it? The song?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "What? What do you mean? What song?"
+msgid "What? What do you mean? What song?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "So about the songs..."
+msgid "So about the songs…"
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"You mentioned some cycle before, when I gave you the bones. What does that "
+"You mentioned some cycle before, when I gave you the bones. What does that "
"mean?"
msgstr ""
@@ -141273,7 +146383,7 @@ msgid "Is there a way I can help you with your song?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I have to get going. Take care, Seer."
+msgid "I have to get going. Take care, Seer."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141283,11 +146393,11 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "What? Singing bones? What are you talking about?"
+msgid "What? Singing bones? What are you talking about?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Uh... yeah, sure. I think I'll just be on my way."
+msgid "Uh… yeah, sure. I think I'll just be on my way."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141336,7 +146446,7 @@ msgid "I will bear that in mind"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Cause? Why do you gather these bones anyway?"
+msgid "Cause? Why do you gather these bones anyway?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141348,7 +146458,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "End the world? What?"
+msgid "End the world? What?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141360,7 +146470,7 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Sounds somewhat... doomsday-ish, but I suppose it's a belief like any other. "
+"Sounds somewhat… doomsday-ish, but I suppose it's a belief like any other. "
"Still, at least you have a goal to help the world, one way or another."
msgstr ""
@@ -141376,7 +146486,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I... thank you."
+msgid "I… thank you."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141392,41 +146502,41 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"I know of certain bones that could be of use, if you'd like to know more."
+"The song is... quiet for now. Perhaps with time, more notes will be etched "
+"in the bones of this world."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "There is an additional song you could take on, if you'd like."
+msgid "An acolyte should not take on too many songs at once."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "A song may yet be sung by you, should you wish to."
+msgid "That is all for now."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Do you believe you can take on the burden of additional bones?"
+msgid "A song may yet be sung by you, should you wish to."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Do you wish to take on more songs?"
+msgid "There is an additional song you could take on, if you'd like."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "There are bones to etch, songs to sing. Wish to join me?"
+msgid ""
+"I know of certain bones that could be of use, if you'd like to know more."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "That is all for now."
+msgid "There are bones to etch, songs to sing. Wish to join me?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "An acolyte should not take on too many songs at once."
+msgid "Do you wish to take on more songs?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"The song is... quiet for now. Perhaps with time, more notes will be etched "
-"in the bones of this world."
+msgid "Do you believe you can take on the burden of additional bones?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141450,7 +146560,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Well, I guess I oughta see where this goes. I'm in."
+msgid "Well, I guess I oughta see where this goes. I'm in."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141458,7 +146568,7 @@ msgid "Not interested."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Consider it done. But I also wanted to ask..."
+msgid "Consider it done. But I also wanted to ask…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141474,7 +146584,7 @@ msgid "I'm off then."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "So, a creature that isn't a zombie, or a monster. Got it."
+msgid "So, a creature that isn't a zombie, or a monster. Got it."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141484,11 +146594,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I see. Very well then."
-msgstr ""
-
-#: lang/json/talk_topic_from_json.py
-msgid "Only those who bear my mark will prove themselves worthy of my skills."
+msgid "I see. Very well then."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141497,16 +146603,20 @@ msgid ""
"listen to the Song. Yes, I will lend my skills to you, for now."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid "Only those who bear my mark will prove themselves worthy of my skills."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid "I am glad to hear it. Let's go then."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "That's good, but I need to go at it alone right now. Maybe later."
+msgid "That's good, but I need to go at it alone right now. Maybe later."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Maybe some other time. Changing the topic..."
+msgid "Maybe some other time. Changing the topic…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141528,20 +146638,20 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"That is... that's really one hell of a belief. Well, if it helps you deal "
+"That is… that's really one hell of a belief. Well, if it helps you deal "
"with the world, who am I to argue."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "And here I thought you were nuts before. I'm out of here."
+msgid "And here I thought you were nuts before. I'm out of here."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"I'm my own person, but I'm willing to follow your lead. I can do a lot of "
-"things for you: I can fight, I can train you or you can train me, I can "
-"carry stuff, I can bandage your wounds, I can build faction camps, I can do "
-"some other activites, I can ride horses, I can go places, I can guard "
+"I'm my own person, but I'm mostly willing to follow your lead. I can do a "
+"lot of things for you: I can fight, I can train you or you can train me, I "
+"can carry stuff, I can bandage your wounds, I can build faction camps, I can "
+"do some other activites, I can ride horses, I can go places, I can guard "
"things, I can use some bionics, I can even chit-chat with you or give you "
"tips or talk about my background. You can give me instructions in "
"conversation or by radio or shout commands at me.\n"
@@ -141556,6 +146666,10 @@ msgstr ""
msgid "Skip it, let's get going."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid "What do you mean, \"mostly\" willing to follow my lead?"
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid "What's that about giving instructions?"
msgstr ""
@@ -141613,13 +146727,32 @@ msgid "What about chit-chatting and your background?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Anything else I should know?"
+msgid ""
+"Anything else I should know, like making you pulp zombies or assigning you a "
+"seat in my vehicle?"
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid "Any new abilities recently?"
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"You and me, we better stick together to survive, right? But that doesn't "
+"mean I'll tolerate infinite abuse. Mistreat me too much, or especially fail "
+"to keep me fed, and I'll like you less and less. If it gets bad enough, "
+"I'll mutiny - and if you have anyone else following you, I may convince some "
+"of them to join my mutiny and we'll form our own little band.\n"
+" Obviously, if I quit in a huff, there's going to be bad blood between us, "
+"and you're probably going to want to kill me for betrayal and I may need to "
+"kill you to get my fair share of the loot. So keep me fed and satisfied so "
+"it doesn't come to that."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Sure. Is there any easy way to keep you fed?"
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid ""
"If we're next to each other, you can just bump into me and we'll start "
@@ -141696,7 +146829,14 @@ msgid ""
"do it when we're in danger or if I'm hungry or tired or if you're driving.\n"
" If we're someplace safe and you're reading a book that improves skills, "
"I'll listen if I don't have that skill. You can even read me books for "
-"skills that you already have."
+"skills that you already have.\n"
+" If you give me a book that teaches a skill and that's accessible to "
+"someone with my current skill, you can ask me about my current activity and "
+"tell me to read it, and I'll learn from the book. But while I'm reading, I "
+"won't be following you around, so make sure I'm in a safe place.\n"
+" And don't bother asking me about learning or teaching martial arts style. "
+"My brain just doesn't work that way, so I don't know any to teach you and "
+"it's pointless trying to get me to learn any."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141730,14 +146870,17 @@ msgid ""
" Use the zone manager (keybind 'Y') to set up sorting zones for your loot, "
"or to draw blueprints for a building, or to define where you want to plant "
"some crops, or where you'd like some trees cut down, or where you want a "
-"vehicle dismantled. Then tell me to sort stuff, or build stuff, or cut down "
-"trees, or dismantle a vehicle or do farmwork, and I'll go off and do my best "
-"to get what you want done. If I need tools, you should leave them pretty "
-"close to where you want me to work - axes for logging, shovels and seeds and "
-"fertilizer for farming, wrenches and hacksaws or a toolbox to take apart a "
-"vehicle. I can pretty much sort out our stuff without needing tools, but "
-"keep the piles of unsorted and sorted stuff kind of close together because I "
-"don't want to walk back and forth carrying junk too much."
+"vehicle dismantled or repaired, or a good fishing spot. Then talk to me "
+"about my current activity and tell me to sort stuff, or build stuff, or cut "
+"down trees, or repair or dismantle a vehicle, or do farmwork, or catch some "
+"fish, and I'll go off and do my best to get what you want done.\n"
+" If I need tools, you should leave them in a loot zone near where you want "
+"me to work - axes for logging, shovels and seeds and fertilizer for farming, "
+"wrenches and hacksaws or a toolbox to take apart a vehicle. I promise to "
+"put stuff back in an unsorted loot zone when I'm finished.\n"
+" I can pretty much sort out our stuff without needing tools, but keep the "
+"piles of unsorted and sorted stuff kind of close together because I don't "
+"want to walk back and forth carrying junk too much."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141788,12 +146931,14 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
"You tell me to guard, I'll stay where I am and guard it - unless I'm in a "
-"vehicle, in which case I'll stick with the vehicle.\n"
-" I'm not a potted plant, though, so if I hear something dangerous "
-"happening, I'm going to go see what it is instead of getting jumped in the "
-"dark. If you want me to stay put, tell me not to investigate noises - but "
-"if I get shot by some bandit because I can't see where he is and you don't "
-"want me to go looking, I won't be happy.\n"
+"vehicle, in which case I'll stick with the vehicle. I might not be able to "
+"sop a horde of zombies, but I can keep people other people from stealing our "
+"stuff. Well, unless they try to kill me.\n"
+" Also, I'm not a potted plant, so if I hear something dangerous happening, "
+"I'm going to go see what it is instead of getting jumped in the dark. If "
+"you want me to stay put, tell me not to investigate noises - but if I get "
+"shot by some bandit because I can't see where he is and you don't want me to "
+"go looking, I won't be happy.\n"
" You can also use the zone manager (keybind 'Y') to set up no-investigate "
"zone, so if there's some monsters behind a door that you know about, I can "
"ignore them. You can also set on an investigate-only zone, and I won't "
@@ -141811,6 +146956,10 @@ msgstr ""
msgid "Just in case - how else can I tell you to stay put?"
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid "Hang on, other people can steal our stuff?"
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid ""
"Bionics are augmentation packages, right? They come in these installable "
@@ -141909,6 +147058,33 @@ msgstr ""
msgid "Can I tell you to open and close doors or avoid sleep without shouting?"
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"Just about everyone is dead, but some people survived, right? But just like "
+"you go around breaking into houses and taking whatever you think you need or "
+"want, well, other survivors do the same thing. And that stack of loot "
+"you've been accumulating looks just like some random dead person's loot when "
+"it's left alone. If some other scavenger comes around and sees that loot, "
+"and you or I or another ally isn't around to claim it, that other survivor "
+"is just going to take it. So try to detail someone to watch your stuff - "
+"whether its at a base or in a vehicle.\n"
+" Also, we've teamed up to better our chances of survival. Other people are "
+"going to do the same, forming little factions just like we did. If you open "
+"the faction manager (keybind '#'), you can see a list of all your allies, as "
+"well as all the other factions you've met so far. Some factions are really "
+"just some guy trying to survive on his own, but other factions have dozens "
+"of members and fortified bases and such. You might want to find some of "
+"them and try to make friends with them."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Anything else I can do in the faction manager?"
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Is there any way we can build base for our faction?"
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid ""
"Well, this conversation is pretty new! But there's been some other "
@@ -141917,7 +147093,13 @@ msgid ""
"in me, for a while. But now I can use some active bionics, and I can "
"explain some details on how I use bionics.\n"
" I can also ride horses, and you can give me orders to do things like "
-"farmwork, cutting trees, or even building houses from a blueprint."
+"farmwork, cutting trees, or even building houses from a blueprint.\n"
+" I can even read books to improve my skills, so you don't have to spend "
+"time reading to me.\n"
+" If you've got a faction camp, and we're near it, I'll eat from the camp's "
+"food reserves when I'm hungry. And if the camp has a well, I'll drink from "
+"the well when thirsty. Be careful, though - if other people are out on "
+"missions, I may eat the food they expected to eat when they got done!"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -141928,6 +147110,10 @@ msgstr ""
msgid "Tell me more about the activities you can do now."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid "Hey, you can teach yourself from a book. How does that work?"
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid ""
"Thanks for the explanation. I wanted to know more about something else."
@@ -141938,13 +147124,13 @@ msgid "Thanks. I have some things for you to do."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"STOP, Put your hands in the air! Ha, startled you didn't I...there is no law "
-"anymore..."
+msgid "Hi there, ."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hi there, ."
+msgid ""
+"STOP, Put your hands in the air! Ha, startled you didn't I...there is no law "
+"anymore..."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142018,11 +147204,11 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Anything to do before I go to sleep?"
+msgid "No, just no..."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Just few minutes more..."
+msgid "Just let me sleep, !"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142030,11 +147216,11 @@ msgid "Make it quick, I want to go back to sleep."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Just let me sleep, !"
+msgid "Just few minutes more..."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "No, just no..."
+msgid "Anything to do before I go to sleep?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142046,11 +147232,11 @@ msgid "Go back to sleep."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "What is it, friend?"
+msgid " *pshhhttt* I'm reading you boss, over."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid " *pshhhttt* I'm reading you boss, over."
+msgid "What is it, friend?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142134,19 +147320,19 @@ msgid "Let's go."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Change your engagement rules..."
+msgid "Change your engagement rules…"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Change your aiming rules..."
+msgid "Change your aiming rules…"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Change your bionic power reserve rules..."
+msgid "Change your bionic power reserve rules…"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Change your bionic power recharge rules..."
+msgid "Change your bionic power recharge rules…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142158,11 +147344,11 @@ msgid "Stick close to me, no matter what."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
+msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
+msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142429,7 +147615,7 @@ msgid "Nah, I'm just kidding."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Please go to this location..."
+msgid "Please go to this location…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142441,11 +147627,11 @@ msgid "Show me what needs to be done at the camp."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'm not doing much currently."
+msgid "I'm currently ."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'm currently ."
+msgid "I'm not doing much currently."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142509,11 +147695,11 @@ msgid "Sure thing, I'll make my way there."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
+msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
+msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142527,12 +147713,12 @@ msgid "OK, maybe it'll stop me from freezing in this weather, what's up?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Man it's dark out isn't it? what's up?"
+msgid ""
+"Well, it's the time of day for a quick break surely! How are you holding up?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"Well, it's the time of day for a quick break surely! How are you holding up?"
+msgid "Man it's dark out isn't it? what's up?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142541,14 +147727,14 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"OK, let's take a moment, oh, and thanks for helping me with that thing, "
-"so... what's up?"
+"Definitely, by the way, thanks for helping me so much with my tasks! "
+"Anyway, you coping OK, ? "
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Definitely, by the way, thanks for helping me so much with my tasks! "
-"Anyway, you coping OK, ? "
+"OK, let's take a moment, oh, and thanks for helping me with that thing, "
+"so... what's up?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142558,7 +147744,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Oh you know, not bad, not bad..."
+msgid "Oh you know, not bad, not bad…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142624,11 +147810,11 @@ msgid "Keep your distance!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "This is my territory, ."
+msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
+msgid "This is my territory, ."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142668,11 +147854,11 @@ msgid "Okay, I'm going."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "About that job..."
+msgid "About that job…"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "About one of those jobs..."
+msgid "About one of those jobs…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142684,27 +147870,27 @@ msgid "I don't care."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I just have one job for you. Want to hear about it?"
+msgid "I don't have any jobs for you."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I have another job for you. Want to hear about it?"
+msgid "I don't have any more jobs for you."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I have other jobs for you. Want to hear about them?"
+msgid "I have another job for you. Want to hear about it?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I have more jobs for you. Want to hear about them?"
+msgid "I just have one job for you. Want to hear about it?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I don't have any more jobs for you."
+msgid "I have other jobs for you. Want to hear about them?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I don't have any jobs for you."
+msgid "I have more jobs for you. Want to hear about them?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142717,7 +147903,7 @@ msgid "Never mind, I'm not interested."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "What about it?"
+msgid "You're not working on anything for me now."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142725,7 +147911,7 @@ msgid "Which job?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "You're not working on anything for me now."
+msgid "What about it?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142765,7 +147951,7 @@ msgid "Whatever. Bye."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'm sorry... I failed."
+msgid "I'm sorry… I failed."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142785,7 +147971,7 @@ msgid "No. I'll get back to it, bye!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Yup! Here it is!"
+msgid "Yup! Here it is!"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142937,15 +148123,15 @@ msgid "Thanks!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I have some reason for not telling you."
+msgid "Focus on the road, mate!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Nothing comes to my mind now. Ask me later perhaps?"
+msgid "I must focus on the road!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'm too tired, let me rest first."
+msgid "I'm too thirsty, give me something to drink."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142953,15 +148139,15 @@ msgid "I'm too hungry, give me something to eat."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'm too thirsty, give me something to drink."
+msgid "I'm too tired, let me rest first."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I must focus on the road!"
+msgid "Nothing comes to my mind now. Ask me later perhaps?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Focus on the road, mate!"
+msgid "I have some reason for not telling you."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142969,7 +148155,7 @@ msgid "Ah, okay."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Why should I travel with you?"
+msgid "Not until I get some antibiotics..."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -142977,7 +148163,7 @@ msgid "You asked me recently; ask again later."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Not until I get some antibiotics..."
+msgid "Why should I travel with you?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143037,7 +148223,7 @@ msgid "Alright. You can lead now."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Good. Something else..."
+msgid "Good. Something else…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143069,19 +148255,19 @@ msgid "On second thought, never mind."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I have some reason for denying you training."
+msgid "I can't train you properly while you're operating a vehicle!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Give it some time, I'll show you something new later..."
+msgid "I can't train you properly while I'm operating a vehicle!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I can't train you properly while I'm operating a vehicle!"
+msgid "Give it some time, I'll show you something new later..."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I can't train you properly while you're operating a vehicle!"
+msgid "I have some reason for denying you training."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143117,15 +148303,15 @@ msgid "I'd prefer to keep that to myself."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I understand..."
+msgid "I understand…"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Why should I share my equipment with you?"
+msgid "You just asked me for stuff; ask later."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "You just asked me for stuff; ask later."
+msgid "Why should I share my equipment with you?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143141,7 +148327,7 @@ msgid "Because I'm your friend!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Well, I am helping you out..."
+msgid "Well, I am helping you out…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143189,15 +148375,15 @@ msgid "No, I'm keeping it. Try and take it off me, I dare you."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Look, I really need this. Please let me have it."
+msgid "Look, I really need this. Please let me have it."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "What, this? It's not the same one, you are mistaken."
+msgid "What, this? It's not the same one, you are mistaken."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'm sorry. Look, I already dropped it, okay?"
+msgid "I'm sorry. Look, I already dropped it, okay?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143205,7 +148391,7 @@ msgid "Don't try and talk yourself out of this, drop it now."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Okay, I'm dropping it..."
+msgid "Okay, I'm dropping it…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143267,35 +148453,35 @@ msgid "Pleasure doing business!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "You might be seeing more of me..."
+msgid "You might be seeing more of me…"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"I... I'm free. *Zzzt* I'm actually free! *bzzz* Look, you're the first "
-"person I've seen in a long time."
+msgid "Hey again. *kzzz*"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hey again. *kzzz*"
+msgid ""
+"I... I'm free. *Zzzt* I'm actually free! *bzzz* Look, you're the first "
+"person I've seen in a long time."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hey. Let's chat for a second."
+msgid "Hey. Let's chat for a second."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "That's because I saved you. Listen, I could use your help..."
+msgid "That's because I saved you. Listen, I could use your help…"
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Big fucking deal. Do what I say or I'll shove that chip back where it "
+"Big fucking deal. Do what I say or I'll shove that chip back where it "
"belongs."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Sorry, I'm nobody. Enjoy your freedom, I guess."
+msgid "Sorry, I'm nobody. Enjoy your freedom, I guess."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143307,7 +148493,7 @@ msgid "Come with me. We can help each other out."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "We both go our separate ways. Enjoy your freedom."
+msgid "We both go our separate ways. Enjoy your freedom."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143324,7 +148510,7 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"For all you know, I did. I'm being nice for now. You'd better hope that it "
+"For all you know, I did. I'm being nice for now. You'd better hope that it "
"lasts."
msgstr ""
@@ -143346,7 +148532,7 @@ msgid "Get out of my sight."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "No, *I'm* sorry, I didn't mean that. Go do what you want."
+msgid "No, *I'm* sorry, I didn't mean that. Go do what you want."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143362,7 +148548,7 @@ msgid "Not if I kill you first!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'm sorry! I shouldn't have said that!"
+msgid "I'm sorry! I shouldn't have said that!"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143403,13 +148589,36 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"The faction camp system is designed to give you greater control over your "
-"companions by allowing you to assign them to their own missions. These "
-"missions can range from gathering and crafting to eventual combat patrols."
+"The faction camp system allows you to use friendly NPCs to take over "
+"existing buildings or construct new buildings and use them to extend the "
+"usefulness of your allies. When you have a faction camp, you can order your "
+"companions to perform missions, such as crafting new items, building up the "
+"camp, hunting for food, or recruiting more allies. Faction camps also "
+"simplify some aspects of managing your companions."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Go on."
+msgid "Give me an overview of how camps work."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Tell me more about faction camps and food."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Tell me more about camp missions."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Tell me about building a camp."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Give me some advice on building a camp."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "I know the basics. Just tell me what changed."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143430,74 +148639,231 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Food is required for or produced during every mission. Missions that are "
-"for a fixed amount of time will require you to pay in advance while "
-"repeating missions, like gathering firewood, are paid upon completion. Not "
-"having the food needed to pay a companion will result in a loss of "
-"reputation across the faction. Which can lead to VERY bad things if it gets "
-"too low."
+"Each faction camp starts with a bulletin board. You can 'e'xamine the "
+"bulletin board to get a list of available missions with descriptions, and to "
+"assign an NPC to work on a mission. The bulletin board is the primary way "
+"to access the camp.\n"
+" If both you and a companion have two-way radios, you can assign missions "
+"to the companion remotely by talking on the radio.\n"
+" When you ask a companion to start a camp, they'll build a bulletin board "
+"at the current location, and that will establish a faction camp at that "
+"overmap tile. A faction camp has a central tile where the bulletin board "
+"is, and possibly one or more expansions that are in adjacent tiles.\n"
+" All of your faction camps can be stocked with food, and your companions "
+"will eat from that food when performing camp missions, or even when they're "
+"just hungry and near the camp.\n"
+" Currently, faction camps can be created in fields, in fire stations, and "
+"in some evac shelters."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Wait, repeat what you said."
+msgid "Wait, we can talk with radios?"
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Each faction camp has a bulletin board associated with it. You can "
-"'e'xamine the bulletin board to get a list of tasks that can be done and "
-"that are currently complete at the camp. You can select a task and choose "
-"an allied NPC to perform the task. \n"
-"The task list shows tasks for the central camp. If you have expansions, you "
-"can hit 'TAB' to move between the central camp and each expansion and see "
-"the tasks for the expansions. \n"
-"If you have a two way radio, you can use it to assign tasks remotely to any "
-"friendly NPC who also has a two way radio."
+"Faction camps require food, but simplify managing your companions.\n"
+" When you activate a camp's bulletin board, you'll be required to make some "
+"zones if you haven't already. One of those zones must be a camp food zone. "
+"If you drop food in the camp food zone and select the 'Distribute Food' "
+"mission, then the food will disappear and be converted into stored "
+"kcalories.\n"
+" When you send companions out on camp missions, they'll eat from the stored "
+"food when they return at the rate of 2,500 kcalories per day. Some missions "
+"have variable length, and companions will become upset if there isn't enough "
+"food when they come back, so try to keep a healthy surplus of food on hand.\n"
+" Companions who aren't on camp missions, but who are following you, will "
+"also eat from the camp food stores whenever they're hungry and within 2 "
+"overmap tiles of the camp. This drastically simplifies keeping your "
+"followers fed, so it's worthwhile to build a minimal faction camp just for "
+"this feature.\n"
+" You can upgrade a camp to include a water well. If you do, your followers "
+"will also drink from the well when they're thirsty."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"For your first camp, pick a site that has fields in the 8 adjacent tiles and "
-"lots of forests around it. Forests are your primary source of construction "
-"materials in the early game while fields can be used for farming. You don't "
-"have to be too picky, you can build as many camps as you want. You need a "
-"friendly NPC to perform tasks at the camp. \n"
-"Although you can build a camp from scratch in a field, you can also take "
-"over some other buildings. If you talk to a friendly NPC about faction "
-"camps and the NPC is standing in a building that can be used as a basecamp, "
-"you'll get the option to build a camp in that building."
+"When you assign an NPC to a faction camp mission, they'll disappear while "
+"they go do whatever you want them to do. When the duration of the mission "
+"has elapsed, you'll see a new mission on the bulletin board to have them "
+"return and complete the mission by upgrading your camp, returning their "
+"hunting kills, dropping off whatever they were crafting, or whatever else "
+"the mission results are.\n"
+" There are all kinds of faction camp missions: building up the camp, "
+"recruiting new allies, hunting and trapping game, scrounging for materials, "
+"farming, disassembling cars, and more. Not all activities can be done at "
+"every camp - you may need to build some additional buildings, or expand the "
+"camp, to get access to some missions.\n"
+" Some faction camp missions can be duplicated by companion activities, but "
+"building up the camp can only be done via faction camp missions.\n"
+" You assign missions by interacting with the bulletin board. You'll see a "
+"list of available missions for your central camp tile. If your camp has "
+"expansions, you can tab through the expansions to see the available missions "
+"at each expansion.\n"
+" Remember, companions on camp missions need to be fed, and will become "
+"angry if they complete a mission but there isn't any food in the larder.\n"
+" There is one special mission called 'Emergency Recall'. You can use this "
+"to retrieve any companion on a faction camp mission, but this cancels the "
+"mission and wastes any resources used on it. Only use it to recover allies "
+"when something has gone really wrong with your camp and you can't get them "
+"to come back any ohter way."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "What do you mean by angry?"
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"After you pick a site you will need to find or make materials to upgrade the "
-"camp further to access new missions. The first new missions are focused on "
-"gathering materials to upgrade the camp so you don't have to. After two or "
-"three upgrades you will have access to the [Menial Labor]"
-"color> mission which will allow you to task companions with sorting all of "
-"the items around your camp into categories. Later upgrades allow you to "
-"send companions to recruit new members, build overmap fortifications, or "
-"even conduct combat patrols"
+"Currently, there are three types of camps that you can start building: "
+"modular field camps, fire station camps, and evac shelter camps. There used "
+"to be a fourth called the primitive field camp, but you can't start those "
+"anymore, only upgrade them.\n"
+" Modular field camps are the most flexible kind of camp since you can build "
+"them almost anywhere and can locate them to have plenty of space for "
+"expansions, but you start with nothing in a field and have to build every "
+"building, so they can require a lot of resources. Fire station and evac "
+"shelter camps are faster to build since you start in an existing building, "
+"but you have to establish them in an existing building and there may not be "
+"any space for expansions.\n"
+" Each camp location will have a variety of upgrade missions for it. The "
+"various missions have descriptions. In general, though, you'll need to "
+"establish housing if you want to expand, and some missions such as hunting "
+"or recruiting will require that you have some kind of kitchen or office that "
+"you can use to help schedule activities."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Tell me about modular field camps."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Tell me about fire station camps."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Tell me about evac shelter camps."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Tell me about expansions."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"When you upgrade your first tent all the way you will unlock the ability to "
-"construct expansions. Expansions allow you to specialize each camp you "
-"build by focusing on the industries that you need. A "
-"[Farm] is recommended for players that want to "
-"pursue a large faction while a [Kitchen] is "
-"better for players that just want the quality of life improvement of having "
-"an NPC do all of their cooking. A [Garage] is "
-"useful for chop shop type missions that let you trade vehicles for large "
-"amounts of parts and resources. All those resources can be turning into "
-"valuable equipment in the [Blacksmith Shop]. You "
-"can build an additional expansion every other level after the first is "
-"unlocked and when one camp is full you can just as easily build another."
+"Modular field camps are the most flexible kind of camp, but they require a "
+"lot of time and resources to build. You start with an empty field - and it "
+"has to be a real empty field, not a field on a ranch or farm - and build up "
+"from nothing. You can build from wattle-and-dab if you're feeling "
+"primitive, wood panels if you have a lot of nails, metal plate if you're a "
+"welder, or tents if you're in a hurry.\n"
+" You start by building a lean-to and a bed in the northeast corner of the "
+"central camp, and then add a fire place, and expand out until you have a "
+"small shelter for two people. When that is complete, you can expand the "
+"camp in a variety of ways:\n"
+" 1. You can build up to 5 more rooms or shacks, 3 on each side of the "
+"camp.\n"
+" 2. You can build a central building in the south half of the camp, "
+"between the rooms. The central building will act as a command center, "
+"allowing your camp to perform hunting, recruiting, and combat patrol "
+"missions.\n"
+" 3. You can dig trenches on all sides of the camp, which can possibly "
+"connect to the rooms on the sides to minimize the amount of trenching you "
+"need to do.\n"
+" 4. You can build various small features such as root cellars to preserve "
+"food or a radio tower to make it easier to recruit more companions.\n"
+" Each new construction in a modular camp can be made from a different "
+"material, so you aren't constrained by what you start with. Tents are fast "
+"to put up, but fragile and likely to get destroyed by zombies. The central "
+"building has to be made from wattle-and-daub, wood, or metal, and requires "
+"more materials if the side rooms are made from tents."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Thanks, let's go back to talking about camps."
+msgid "Got it. Tell me about expansions."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Can we review how camps work?"
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"Fire stations make good basecamps. You start with a brick building with "
+"secure metal doors, so you're not going to see your efforts destroyed by "
+"zombies. On the downside, there may not be many fields around, so you may "
+"not be able to expand much.\n"
+" Fire station camps are also very compact. There isn't much living space, "
+"but you can build a small pottery or blacksmithy, a chop shop in one of the "
+"garage bays, and even tear up some of the pavement to create a garden. The "
+"existing kitchen makes it easy to cook from the start, though you may need "
+"to spruce it up a bit."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"You can build a faction camp in the common evac shelter - the basic design "
+"with a single, wide open room. Evac shelters are everywhere and often have "
+"fields surrounding them, so they're a little more flexible than a modular "
+"field camp but still make it easy to add expansions.\n"
+" Evac center camps can be built up in several ways. You basically need to "
+"decide between building more bedrooms or adding for crafting and cooking "
+"space."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"Each camp can have up to 8 expansions, one in each adjacent overmap tile. "
+"Expansions add to the capabilities of your camp, such as adding a farm field "
+"or a manufactory for crafting all kinds of things.\n"
+" You need two beds in a room in your central camp for each expansion, and "
+"currently, expansions can only be built in fields and have to be built up "
+"from scratch.\n"
+" Expansion missions show up in separate tabs in the bulletin board, one set "
+"of missions per location, and you'll need to hit 'tab' to see them. The "
+"currently available expansions are:\n"
+" -- Farm: This is a full tile of plowed fields that you can maintain or "
+"send companions on missions to maintain. Plants grow here normally.\n"
+" -- Garage: This is a large building. Companions can be sent on missions "
+"here to disassemble vehicles. Of course, you can also assign companions to "
+"disassemble vehicles without a garage, so this expansion is not very "
+"useful.\n"
+" -- Canteen: This is an expanded kitchen, dining area, and pantry.\n"
+" --Livestock Area: This is a modular set of buildings for holding livestock "
+"such as cows, horses, or chickens. Animals are not included!\n"
+" Saltworks Area: This is a small expansion for processing salt.\n"
+" Fabrication Workshop: This is a large expansion for doing all kinds of "
+"crafts. Companions can use some of the furniture in this expansion to craft "
+"some items much faster than you can do by yourself by hand.\n"
+" Central Storage Building: This is a large building for storing goods."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Got it. Give me some advice on building a camp."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"Starting a camp doesn't take much time, and you can use a faction camp to "
+"keep your companions fed without needing to regularly give them food, so "
+"it's a good idea to establish a minimal camp anywhere you intend to be for a "
+"while.\n"
+" How much you want to expand your camps is up to you. A modular field camp "
+"can be very resource intensive, but building one up allows you to send "
+"companions off to hunt and farm for you, so there's quite the pay-off. If "
+"nothing else, you should consider upgrading the northeast tent to the point "
+"where you can build a water well, or if you started with a fire station or "
+"evac shelter camp, you should build a water well as soon as you can.\n"
+" If you have access to a fire station or evac shelter, you may want to "
+"build your camp in them. Both of those camps are are very compact, but have "
+"much of the same functionality as an upgraded field camp without requiring "
+"so many resources.\n"
+" If you are adding expansions to your camp, consider starting with a farm "
+"or fabrication workshop. The farm makes it easy to grow your own food, "
+"while the fabrication workshop can allow you to craft some of the resources "
+"you need to upgrade your camp.\n"
+" The canteen, saltworks, livestock area, and storage area probably "
+"shouldn't be your first expansions, but they all have their uses."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143524,6 +148890,14 @@ msgid ""
"available buildings is constantly growing, so you'll have to experiment."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid "Wait, let's go back over from the start."
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Thanks, let's go back to talking about camps."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid ""
"Hey boss. I was thinking, you don't really need me sitting in this tent and "
@@ -143623,11 +148997,11 @@ msgid "Well, sure."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'd... rather not."
+msgid "I'd… rather not."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'm sorry... I have places to be."
+msgid "I'm sorry… I have places to be."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143658,7 +149032,7 @@ msgid "Oh, but you already have."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Yes... yes I have."
+msgid "Yes… yes I have."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143723,7 +149097,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Horrible. Did you get any pictures yourself?"
+msgid "Horrible. Did you get any pictures yourself?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -143875,7 +149249,7 @@ msgid "This is a npc allies 1 test response."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "This an error! npc allies 2 test response."
+msgid "This an error! npc allies 2 test response."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -144075,7 +149449,7 @@ msgid "This is a u_has_items beer test response."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Test failure! This is a u_has_items test response."
+msgid "Test failure! This is a u_has_items test response."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -144087,7 +149461,7 @@ msgid "This is a u_has_item_category books count 2 test response."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Failure! This is a u_has_item_category books count 3 test response."
+msgid "Failure! This is a u_has_item_category books count 3 test response."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -144175,7 +149549,7 @@ msgid "This is a u_has_bionics bio_ads test response."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Failure! This is a npc_has_bionics bio_ads test response."
+msgid "Failure! This is a npc_has_bionics bio_ads test response."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -144207,15 +149581,15 @@ msgid "This is a low driving test response."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Greeting citizen, what brings you to the FoodLair?"
+msgid "Greetings friend, it's nice to see you."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Still here? Take your time, it's rough out there."
+msgid "So you're back... Explain yourself!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Greetings friend, it's nice to see you."
+msgid "What sorcery is this?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -144223,19 +149597,15 @@ msgid "Welcome home Foodkid!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "What sorcery is this?"
-msgstr ""
-
-#: lang/json/talk_topic_from_json.py
-msgid "So you're back... Explain yourself!"
+msgid "Still here? Take your time, it's rough out there."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hey. Let's chat for a second."
+msgid "Greeting citizen, what brings you to the FoodLair?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Greetings... Foodperson?"
+msgid "Greetings… Foodperson?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -144277,7 +149647,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Ah... Well, nice to meet you Foodperson."
+msgid "Ah… Well, nice to meet you Foodperson."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -144289,7 +149659,7 @@ msgid "Sheesh, ok, calm down, I'm leaving!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Forgive me, I didn't mean to disrespect you."
+msgid "Forgive me, I didn't mean to disrespect you."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -144305,7 +149675,7 @@ msgid "Sure, whatever."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Ok... I believe you."
+msgid "Ok… I believe you."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -144401,7 +149771,7 @@ msgid "That sounds great!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Ok..."
+msgid "Ok…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -144409,7 +149779,7 @@ msgid "I need to think about it."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Huh... No thanks."
+msgid "Huh… No thanks."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -144426,7 +149796,7 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"I... I don't know. It probably has something to do with ! "
+"I… I don't know. It probably has something to do with ! "
"What do you say we team up to find out?"
msgstr ""
@@ -144497,7 +149867,7 @@ msgid "I AM THE ONE!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Wow calm down, it's just a prank bro."
+msgid "Wow calm down, it's just a prank bro."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -144555,7 +149925,7 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
"I haven't found them yet. Whenever I see a , a little part of me is "
-"afraid it's going to be one of them. But then, maybe not. Maybe they were "
+"afraid it's going to be one of them. But then, maybe not. Maybe they were "
"evacuated, maybe they fought and tried to wait for me but the military took "
"them anyway? I've heard that sort of thing happened. I don't know if I'll "
"ever know."
@@ -144929,7 +150299,7 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
"OK, this is gonna sound crazy but I, like, I knew this was going to happen. "
-"Like, before it did. You can even ask my psychic except, like, I think "
+"Like, before it did. You can even ask my psychic except, like, I think "
"she's dead now. I told her about my dreams a week before the world ended. "
"Serious!"
msgstr ""
@@ -145181,7 +150551,7 @@ msgid "Giant bees? Tell me more."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "But bees aren't usually aggressive..."
+msgid "But bees aren't usually aggressive…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -145193,7 +150563,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "But bees aren't usually aggressive... Do you mean wasps?"
+msgid "But bees aren't usually aggressive… Do you mean wasps?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -145568,6 +150938,10 @@ msgid ""
"although honestly I'm just busy not dying."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid "I just can't talk about that right now. I can't."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid ""
"I was at work at the hospital, when it all went down. It's a bit of a "
@@ -145576,8 +150950,7 @@ msgid ""
"as usual. Then, towards the end, stuff just skyrocketed. We thought it was "
"a Chinese attack, and that's what we were being told. People coming in "
"crazed, covered in wounds from bullets and bites. About halfway through my "
-"shift I... well, I broke. I'd seen such horrible injuries, and then I... "
-", I can't even talk about it."
+"shift I... well, I broke."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -145588,11 +150961,8 @@ msgid ""
"as usual. Then, towards the end, stuff just skyrocketed. We thought it was "
"a Chinese attack, and that's what we were being told. People coming in "
"crazed, covered in wounds from bullets and bites. About halfway through my "
-"shift I... well, I broke."
-msgstr ""
-
-#: lang/json/talk_topic_from_json.py
-msgid "I just can't talk about that right now. I can't."
+"shift I... well, I broke. I'd seen such horrible injuries, and then I... "
+", I can't even talk about it."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -145612,7 +150982,7 @@ msgid "No. I can't. Just, no."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Sorry... I'll let you be."
+msgid "Sorry… I'll let you be."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -145848,7 +151218,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Okay..."
+msgid "Okay…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -145928,13 +151298,13 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"My wife made it out with me, but got eaten by one of those plant "
+"My husband made it out with me, but got eaten by one of those plant "
"monsters a few days before I met you. This hasn't been a great year for me."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"My husband made it out with me, but got eaten by one of those plant "
+"My wife made it out with me, but got eaten by one of those plant "
"monsters a few days before I met you. This hasn't been a great year for me."
msgstr ""
@@ -145994,7 +151364,8 @@ msgid "I'm sorry you lost someone."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Just another tale of love and loss. Not one I like to tell."
+msgid ""
+"I said, I don't wanna talk about it. How are you not understanding this?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -146004,8 +151375,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"I said, I don't wanna talk about it. How are you not understanding this?"
+msgid "Just another tale of love and loss. Not one I like to tell."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -146029,35 +151399,35 @@ msgid "Oh, . This doesn't have anything to do with you, or with us."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "All right, fine. I had someone. I lost her."
+msgid "All right, fine. I had someone. I lost him."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "All right, fine. I had someone. I lost him."
+msgid "All right, fine. I had someone. I lost her."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"She was at home when the bombs started dropping and the world went to hell. "
+"He was at home when the bombs started dropping and the world went to hell. "
"I was at work. I tried to make it to our house, but the city was a war "
"zone. Things I can't describe lurching through the streets, crushing people "
"and cars. Soldiers trying to stop them, but hitting people in the crossfire "
"as much as anything. And then the collateral damage would get right back up "
-"and join the enemy. If it hadn't been for my wife, I would have just left, "
-"but I did what I could and I slipped through. I actually made it "
-"alive."
+"and join the enemy. If it hadn't been for my husband, I would have just "
+"left, but I did what I could and I slipped through. I actually made "
+"it alive."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"He was at home when the bombs started dropping and the world went to hell. "
+"She was at home when the bombs started dropping and the world went to hell. "
"I was at work. I tried to make it to our house, but the city was a war "
"zone. Things I can't describe lurching through the streets, crushing people "
"and cars. Soldiers trying to stop them, but hitting people in the crossfire "
"as much as anything. And then the collateral damage would get right back up "
-"and join the enemy. If it hadn't been for my husband, I would have just "
-"left, but I did what I could and I slipped through. I actually made "
-"it alive."
+"and join the enemy. If it hadn't been for my wife, I would have just left, "
+"but I did what I could and I slipped through. I actually made it "
+"alive."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -146108,11 +151478,11 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
"I did. Took a few hours to get an opening. And you wanna know the fucked "
-"up part? Like, out of all this? My wife was still alive. She'd been in "
+"up part? Like, out of all this? My husband was still alive. He'd been in "
"the basement the whole time, pinned under a collapsed piece of floor. And "
-"she'd lost a ton of blood, she was delirious by the time I found her. I "
-"couldn't get her out, so I gave her food and water and just stayed with her "
-"and held her hand until she passed. And then... well, then I did what you "
+"he'd lost a ton of blood, he was delirious by the time I found him. I "
+"couldn't get him out, so I gave him food and water and just stayed with him "
+"and held his hand until he passed. And then... well, then I did what you "
"have to do to the dead now. And then I packed up the last few fragments of "
"my life, and I try to never look back."
msgstr ""
@@ -146120,11 +151490,11 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
"I did. Took a few hours to get an opening. And you wanna know the fucked "
-"up part? Like, out of all this? My husband was still alive. He'd been in "
+"up part? Like, out of all this? My wife was still alive. She'd been in "
"the basement the whole time, pinned under a collapsed piece of floor. And "
-"he'd lost a ton of blood, he was delirious by the time I found him. I "
-"couldn't get him out, so I gave him food and water and just stayed with him "
-"and held his hand until he passed. And then... well, then I did what you "
+"she'd lost a ton of blood, she was delirious by the time I found her. I "
+"couldn't get her out, so I gave her food and water and just stayed with her "
+"and held her hand until she passed. And then... well, then I did what you "
"have to do to the dead now. And then I packed up the last few fragments of "
"my life, and I try to never look back."
msgstr ""
@@ -146216,7 +151586,7 @@ msgid "What do you think happened?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "That does sound a little crazy..."
+msgid "That does sound a little crazy…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -146265,7 +151635,7 @@ msgid "What happened to you after that?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "It can't be healthy to abandon your past like that..."
+msgid "It can't be healthy to abandon your past like that…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -146708,7 +152078,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Do you mean in a religious sense, or...?"
+msgid "Do you mean in a religious sense, or…?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -146758,10 +152128,10 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"I lived alone, on the old family property way out of town. My wife passed "
-"away a bit over a month before this started... cancer. If anything good "
-"has come out of all this, it's that I finally see a positive to losing her "
-"so young. I'd been shut in for a while anyway. When the news started "
+"I lived alone, on the old family property way out of town. My husband "
+"passed away a bit over a month before this started... cancer. If anything "
+"good has come out of all this, it's that I finally see a positive to losing "
+"him so young. I'd been shut in for a while anyway. When the news started "
"talking about Chinese bio weapons and sleeper agents, and showing the "
"rioting in Boston and such, I curled up with my canned soup and changed the "
"channel."
@@ -146769,10 +152139,10 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"I lived alone, on the old family property way out of town. My husband "
-"passed away a bit over a month before this started... cancer. If anything "
-"good has come out of all this, it's that I finally see a positive to losing "
-"him so young. I'd been shut in for a while anyway. When the news started "
+"I lived alone, on the old family property way out of town. My wife passed "
+"away a bit over a month before this started... cancer. If anything good "
+"has come out of all this, it's that I finally see a positive to losing her "
+"so young. I'd been shut in for a while anyway. When the news started "
"talking about Chinese bio weapons and sleeper agents, and showing the "
"rioting in Boston and such, I curled up with my canned soup and changed the "
"channel."
@@ -146853,14 +152223,14 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Listen. I'm gonna cut this off short. I work for you, okay? I'm not "
-"interested in getting attached. You didn't pay me to be your friend."
+"Like I said, you want me to tell you a story, you gotta pony up the whisky. "
+"A full bottle, mind you."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Like I said, you want me to tell you a story, you gotta pony up the whisky. "
-"A full bottle, mind you."
+"Listen. I'm gonna cut this off short. I work for you, okay? I'm not "
+"interested in getting attached. You didn't pay me to be your friend."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147027,8 +152397,8 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"If I got you the right stuff, do you think you'd be able to like... do "
-"science to it?"
+"If I got you the right stuff, do you think you'd be able to like… do science "
+"to it?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147139,7 +152509,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Oh, I'm sorry..."
+msgid "Oh, I'm sorry…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147165,18 +152535,18 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Well, I have this weird hope. It's probably stupid, but I saw my fiancée "
-"peel out of there with her brother - my best man - in his pickup truck as "
-"things went bad. So, until I run into them again one way or another, I'm "
+"Well, I have this weird hope. It's probably stupid, but I saw my fiancé "
+"peel out of there with his sister - my maid of honor - in her pickup truck "
+"as things went bad. So, until I run into them again one way or another, I'm "
"just gonna keep on believing they're out there, doing well. That's more "
"than most of us have."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Well, I have this weird hope. It's probably stupid, but I saw my fiancé "
-"peel out of there with his sister - my maid of honor - in her pickup truck "
-"as things went bad. So, until I run into them again one way or another, I'm "
+"Well, I have this weird hope. It's probably stupid, but I saw my fiancée "
+"peel out of there with her brother - my best man - in his pickup truck as "
+"things went bad. So, until I run into them again one way or another, I'm "
"just gonna keep on believing they're out there, doing well. That's more "
"than most of us have."
msgstr ""
@@ -147186,11 +152556,11 @@ msgid "What were you saying before that?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I can't believe my eyes. Please get my outta here..."
+msgid "Hey, ."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hey, ."
+msgid "I can't believe my eyes. Please get my outta here..."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147216,7 +152586,9 @@ msgid "Sounds good, Barry."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hello Ma'am, what brings you here?"
+msgid ""
+"I see that badge, I think you need ot keep on walking, straight off this "
+"property."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147224,9 +152596,7 @@ msgid "Hello Sir, what brings you here?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"I see that badge, I think you need ot keep on walking, straight off this "
-"property."
+msgid "Hello Ma'am, what brings you here?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147244,7 +152614,7 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
"It is coming together. I want to make our own tools, repair our items and "
-"even create some weapons and ammuntion reloading."
+"even create some weapons and ammunition reloading."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147257,7 +152627,7 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"It was pink and really fast, it had lots of limbs, definitly not human. It "
+"It was pink and really fast, it had lots of limbs, definitely not human. It "
"easily kept up with us when we tried to escape, horrifying stuff. Barry "
"just dropped to the ground, and the thing swept him away."
msgstr ""
@@ -147301,13 +152671,13 @@ msgid "Where can I find Chris?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hi, what's up?"
+msgid ""
+"I see that badge, You need to leave our land, my relatives have no fondness "
+"for Marshals."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"I see that badge, You need to leave our land, my relatives have no fondess "
-"for Marshals."
+msgid "Hi, what's up?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147401,7 +152771,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hi, what brings you here?"
+msgid "Is that a U.S. Marshal's badge you're wearing?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147409,7 +152779,7 @@ msgid "Hello, what brings you here?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Is that a U.S. Marshal's badge you're wearing?"
+msgid "Hi, what brings you here?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147466,7 +152836,7 @@ msgid "He did mention you make remedies, are they effective?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'd like to ask you something else..."
+msgid "I'd like to ask you something else…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147608,10 +152978,6 @@ msgstr ""
msgid "Hello traveler, what brings you here?"
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid "Hello travler, what brings you here?"
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid "I'm here to deliver some resources."
msgstr ""
@@ -147637,7 +153003,7 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
"We've had our losses... now we stay close to home, preparing for trouble. "
-"We've always taken disaster prepardness seriously, but we didn't expect "
+"We've always taken disaster preparedness seriously, but we didn't expect "
"anything like this though."
msgstr ""
@@ -147686,7 +153052,7 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"You should get off my land, the governemnt proved its incompetence with this "
+"You should get off my land, the government proved its incompetence with this "
"catastrophe."
msgstr ""
@@ -147711,11 +153077,11 @@ msgid "That's all for now. I'd best get going."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hello, We don't see many people these days."
+msgid "Leave our property, Marshal."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Leave our property, Marshal."
+msgid "Hello, We don't see many people these days."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147761,7 +153127,7 @@ msgid "I'd like to speak with Carlos too about some work."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Is Chris around? I'd like to know what he's run into out in the woods."
+msgid "Is Chris around? I'd like to know what he's run into out in the woods."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147843,11 +153209,11 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hello."
+msgid "I see that badge, you should leave before my father sees you."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I see that badge, you should leave before my father sees you."
+msgid "Hello."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147917,9 +153283,7 @@ msgid "Tell me about your dad."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"Ma'am, I don't know how the hell you got down here but if you have any sense "
-"you'll get out while you can."
+msgid "Marshal, I hope you're here to assist us."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147929,7 +153293,9 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Marshal, I hope you're here to assist us."
+msgid ""
+"Ma'am, I don't know how the hell you got down here but if you have any sense "
+"you'll get out while you can."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147945,15 +153311,15 @@ msgid "What do you need done?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "About the mission..."
+msgid "About the mission…"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "About one of those missions..."
+msgid "About one of those missions…"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I've got to go..."
+msgid "I've got to go…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147969,7 +153335,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Seems like a decent plan..."
+msgid "Seems like a decent plan…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147987,11 +153353,11 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Whatever they did it must have worked since we are still alive..."
+msgid "Whatever they did it must have worked since we are still alive…"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Ma'am you are not authorized to be here... you should leave."
+msgid "Marshal, I'm rather surprised to see you here."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -147999,7 +153365,7 @@ msgid "Sir you are not authorized to be here... you should leave."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Marshal, I'm rather surprised to see you here."
+msgid "Ma'am you are not authorized to be here... you should leave."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148022,7 +153388,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'll try and find your commander then..."
+msgid "I'll try and find your commander then…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148037,51 +153403,51 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hey, citizen... I'm not sure you belong here."
+msgid "Hello, marshal."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "You should mind your own business, nothing to see here."
+msgid "Marshal, I'm afraid I can't talk now."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "If you need something you'll need to talk to someone else."
+msgid "I'm not in charge here, marshal."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Ma'am"
+msgid "I'm supposed to direct all questions to my leadership, marshal."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hey miss, don't you think it would be safer if you stuck with me?"
+msgid "Hey, citizen... I'm not sure you belong here."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Sir."
+msgid "You should mind your own business, nothing to see here."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Dude, if you can hold your own you should look into enlisting."
+msgid "If you need something you'll need to talk to someone else."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hello, marshal."
+msgid "Sir."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Marshal, I'm afraid I can't talk now."
+msgid "Dude, if you can hold your own you should look into enlisting."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'm not in charge here, marshal."
+msgid "Ma'am"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'm supposed to direct all questions to my leadership, marshal."
+msgid "Hey miss, don't you think it would be safer if you stuck with me?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Don't mind me..."
+msgid "Don't mind me…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148135,12 +153501,14 @@ msgid "I've no use for weaklings. Run. Now."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Please, help me. I need food."
+msgid ""
+"So, any luck with convincing the others to come on your crazy adventure yet?"
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Please, help me. I need food. Aren't you their sheriff? Can't you help me?"
+"I'm sorry to say it after all you've done for me, but... I don't suppose "
+"you've got anything to eat?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148149,13 +153517,11 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"I'm sorry to say it after all you've done for me, but... I don't suppose "
-"you've got anything to eat?"
+"Please, help me. I need food. Aren't you their sheriff? Can't you help me?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"So, any luck with convincing the others to come on your crazy adventure yet?"
+msgid "Please, help me. I need food."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148175,14 +153541,14 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
"They won't let me in. They say they're too full. I'm allowed to camp out "
-"here as long as I keep it clean and don't make a fuss, but I'm so hungry."
+"here as long as I keep it clean and don't make a fuss, but I'm reduced to "
+"begging to survive."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
"They won't let me in. They say they're too full. I'm allowed to camp out "
-"here as long as I keep it clean and don't make a fuss, but I'm reduced to "
-"begging to survive."
+"here as long as I keep it clean and don't make a fuss, but I'm so hungry."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148280,16 +153646,16 @@ msgid ""
"hurry to face that again."
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid "I'm sorry, I'm too hungry to make a big decision like that."
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid ""
"That's quite the offer, but I don't think I'd survive the trip. I don't "
"think you realize how useless I am in this world."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid "I'm sorry, I'm too hungry to make a big decision like that."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid "I can keep you safe. I'll take you there myself."
msgstr ""
@@ -148331,7 +153697,7 @@ msgid "All right! Let's get going."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Have I told you about cardboard, friend? Do you have any?"
+msgid "We've done it! We've solved the list!"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148340,11 +153706,11 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "We've done it! We've solved the list!"
+msgid "Have I told you about cardboard, friend? Do you have any?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "About that shopping list of yours..."
+msgid "About that shopping list of yours…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148372,13 +153738,13 @@ msgid "Do you need something to eat?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"Yeah, I'm real hungry and they put drugs in most of the food. I can see "
-"you're not like that."
+msgid "Oh nice. Crunchings and munchings. That's a cool, a cool thing."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Oh nice. Crunchings and munchings. That's a cool, a cool thing."
+msgid ""
+"Yeah, I'm real hungry and they put drugs in most of the food. I can see "
+"you're not like that."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148410,7 +153776,7 @@ msgid "Would you like me to give you some cardboard?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I think I have to get going..."
+msgid "I think I have to get going…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148439,7 +153805,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "... What were you saying before?"
+msgid "…What were you saying before?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148457,7 +153823,7 @@ msgid "No."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I... I can see you wearing it. Why are you wearing that?"
+msgid "I… I can see you wearing it. Why are you wearing that?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148472,15 +153838,15 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"That's it! I'm just gonna need a little time to get it all set up. "
-"Thanks. You've helped me a lot. I'm feeling much more myself with all this "
-"to keep me going."
+"Well... I had it all pretty together, but the others have left, and now the "
+"masters won't let me build my sanctuary. Can you help me figure them out?"
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Well... I had it all pretty together, but the others have left, and now the "
-"masters won't let me build my sanctuary. Can you help me figure them out?"
+"That's it! I'm just gonna need a little time to get it all set up. "
+"Thanks. You've helped me a lot. I'm feeling much more myself with all this "
+"to keep me going."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148500,18 +153866,15 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Don't bother with these assholes."
+msgid "Fuck off, dickwaddle."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hey there, not-asshole. Good to see you again."
+msgid "Yo. Anyone else keen on moving from this bus stop to your tent city?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"Look, I'm sorry for freaking out earlier. You might be an asshole but I'm "
-"sure you didn't mean it like that. My blood sugar is hella low, I get a bit "
-"cranky. We cool?"
+msgid "Hey there. Good to see you again."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148521,15 +153884,18 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hey there. Good to see you again."
+msgid ""
+"Look, I'm sorry for freaking out earlier. You might be an asshole but I'm "
+"sure you didn't mean it like that. My blood sugar is hella low, I get a bit "
+"cranky. We cool?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Yo. Anyone else keen on moving from this bus stop to your tent city?"
+msgid "Hey there, not-asshole. Good to see you again."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Fuck off, dickwaddle."
+msgid "Don't bother with these assholes."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148549,7 +153915,7 @@ msgid "I found a sample of alien fungus for you."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Ok... see ya."
+msgid "Ok… see ya."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148647,8 +154013,8 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"I mean, racism could definitely be a part of it... but you are visibly in "
-"poor shape. They need strong survivor material."
+"I mean, racism could definitely be a part of it… but you are visibly in poor "
+"shape. They need strong survivor material."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148680,7 +154046,7 @@ msgid "You sound more optimistic than usual."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "So, about that doctorate of yours..."
+msgid "So, about that doctorate of yours…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148800,7 +154166,7 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
"Encroaching alien mushrooms, fungal towers, tough mycelium invading ground "
-"and trees, zombies taken over by aggressive mold... Yeah. It's ugly stuff."
+"and trees, zombies taken over by aggressive mold… Yeah. It's ugly stuff."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148815,12 +154181,6 @@ msgid ""
"that?"
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid ""
-"I dunno, scientific interest? If you don't bring me anything, no worries. "
-"I'm positively swimming in entertainment here, as you can see."
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid ""
"If you get me a sample, I'll join your crazy camp expedition. Hell, if you "
@@ -148829,6 +154189,12 @@ msgid ""
"sound, maybe make sure it's not a sporulating body."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"I dunno, scientific interest? If you don't bring me anything, no worries. "
+"I'm positively swimming in entertainment here, as you can see."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid "It just so happens I have a chunk of fungal matter on me right now."
msgstr ""
@@ -148884,11 +154250,11 @@ msgid "I'll see what I can do."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hey, are you a big fan of survival of the fittest?"
+msgid "Thanks again for the grub, my friend."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Thanks again for the grub, my friend."
+msgid "Hey, are you a big fan of survival of the fittest?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148909,18 +154275,18 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Because I sure ain't fit, so I'm sittin' out here until I starve to death. "
-"Help a poor sickly soul out?"
+"Oh you know, the usual: sittin' out here until I starve to death, playin' "
+"cards with Dave, that kinda thing."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Oh you know, the usual: sittin' out here until I starve to death, playin' "
-"cards with Dave, that kinda thing."
+"Because I sure ain't fit, so I'm sittin' out here until I starve to death. "
+"Help a poor sickly soul out?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I could maybe help you out... want something to eat?"
+msgid "I could maybe help you out… want something to eat?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -148940,12 +154306,12 @@ msgid "Why are you camped out here if they won't let you in?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"Oh, wow! You're a real gem, you know that? Thanks for even thinking of it."
+msgid "That's awful kind of you, you really are a wonderful person."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "That's awful kind of you, you really are a wonderful person."
+msgid ""
+"Oh, wow! You're a real gem, you know that? Thanks for even thinking of it."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -149217,10 +154583,6 @@ msgstr ""
msgid "What's your take on the situation here?"
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid "Oh, uh... hi. You look new. I'm Aleesha."
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid "Hey there."
msgstr ""
@@ -149237,6 +154599,10 @@ msgstr ""
msgid "Aw hey, look who's back."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid "Oh, uh... hi. You look new. I'm Aleesha."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid "Nice to meet you, kid. What's up?"
msgstr ""
@@ -149254,7 +154620,7 @@ msgid "Hi Aleesha. I can't stay to talk."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'm not a kid, okay? I'm fourteen."
+msgid "I'm not a kid, okay? I'm sixteen."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -149262,7 +154628,7 @@ msgid "I'm not a kid, okay? I'm fifteen."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'm not a kid, okay? I'm sixteen."
+msgid "I'm not a kid, okay? I'm fourteen."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -149273,14 +154639,6 @@ msgstr ""
msgid "Sorry, I didn't mean anything by it. I'll be on my way."
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid ""
-"I don't know what's up. I'm not sure what we've even doing here. They say "
-"we're supposed to wait until we can be moved to the shelter downstairs, but "
-"we've been here days and there's no word on how long we'll be waiting. It's "
-"all so stupid, and nobody can tell me anything."
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid ""
"We're just standing around here waiting, like a bunch of idiots. We're "
@@ -149290,6 +154648,14 @@ msgid ""
"here. We can hear them at night."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"I don't know what's up. I'm not sure what we've even doing here. They say "
+"we're supposed to wait until we can be moved to the shelter downstairs, but "
+"we've been here days and there's no word on how long we'll be waiting. It's "
+"all so stupid, and nobody can tell me anything."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid ""
"You can't just go asking people questions like that nowadays. I'm a "
@@ -149317,7 +154683,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "You seem a little forward..."
+msgid "You seem a little forward…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -149331,8 +154697,7 @@ msgid "How are things here?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"Oh my, you're a beautiful lady, so nice to see you. They call me Alonso."
+msgid "Hello again, gorgeous"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -149342,7 +154707,8 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hello again, gorgeous"
+msgid ""
+"Oh my, you're a beautiful lady, so nice to see you. They call me Alonso."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -149372,33 +154738,33 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Now that you are here, everything. Is there anything Alonso can... *do for "
-"you*?"
+"Well, it's a lot better now that you're here. Nice to see a familiar face."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Well, it's a lot better now that you're here. Nice to see a familiar face."
+"Now that you are here, everything. Is there anything Alonso can... *do for "
+"you*?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Alonso cannot help himself, in the face of someone so fine as you."
+msgid "You know me, I gotta be me, right?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "You know me, I gotta be me, right?"
+msgid "Alonso cannot help himself, in the face of someone so fine as you."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Aw come on, why you gotta be like that? I'm just tryin' to get an air of "
+"Aw man, why you gotta be like that? I'm just tryin' to get an air of "
"mystery okay? Nobody wants to be with a slutty guy from Brooklyn, but "
"Alonso the mysterious is another story."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Aw man, why you gotta be like that? I'm just tryin' to get an air of "
+"Aw come on, why you gotta be like that? I'm just tryin' to get an air of "
"mystery okay? Nobody wants to be with a slutty guy from Brooklyn, but "
"Alonso the mysterious is another story."
msgstr ""
@@ -149427,12 +154793,6 @@ msgstr ""
msgid "Thanks. I'd better get going."
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid ""
-"Alonso does not wish to talk about the past, only the future. There are "
-"dark days ahead, but perhaps together we can bring a little light?"
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid ""
"I'm tryin' ta forget, y'know? Don't like thinkin' about the past. Better "
@@ -149441,8 +154801,8 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Here in the center, Alonso is a bit lonely. We get a few brave, strong "
-"travellers like yourself, though, and seeing them brightens Alonso's day."
+"Alonso does not wish to talk about the past, only the future. There are "
+"dark days ahead, but perhaps together we can bring a little light?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -149452,7 +154812,9 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Ah, another new face. Hello. I am Boris."
+msgid ""
+"Here in the center, Alonso is a bit lonely. We get a few brave, strong "
+"travellers like yourself, though, and seeing them brightens Alonso's day."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -149467,6 +154829,10 @@ msgstr ""
msgid "It is good to see you again."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid "Ah, another new face. Hello. I am Boris."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid "Nice to meet you, Boris."
msgstr ""
@@ -149535,6 +154901,12 @@ msgstr ""
msgid "I'm sorry. I'd better get going."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"Well, now that you mention it, with the back bay cleared I could probably "
+"set up back there and start work. I'll think about it, get back to me later."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid ""
"There isn't much to do with a hammer and a saw here indoors, and working "
@@ -149545,12 +154917,6 @@ msgid ""
"caravans bring food, so they get priority, I can't argue with that."
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid ""
-"Well, now that you mention it, with the back bay cleared I could probably "
-"set up back there and start work. I'll think about it, get back to me later."
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid ""
"Everyone agrees this is bad. Sleeping on a cot on the floor, crowded in "
@@ -149572,7 +154938,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "About that sourdough starter you had me looking for..."
+msgid "About that sourdough starter you had me looking for…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -149580,15 +154946,15 @@ msgid "Got any more bread I can trade flour for?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hi there. I'm Dana, nice to see a new face."
+msgid "Hello, nice to see you again."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hello, nice to see you again."
+msgid "It's good to see you're still around."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "It's good to see you're still around."
+msgid "Hi there. I'm Dana, nice to see a new face."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -149640,10 +155006,8 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"I do a bit. I got a sourdough starter going almost as soon as I arrived, "
-"and it's making passable bread already. I cooked some up yesterday "
-"actually, I could probably trade a loaf of fresh bread for, say, about eight "
-"cups of flour."
+"Not since I last saw you, sorry. Come by in another day or two and I'll try "
+"to keep a loaf set aside for you, but they disappear fast."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -149654,8 +155018,10 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Not since I last saw you, sorry. Come by in another day or two and I'll try "
-"to keep a loaf set aside for you, but they disappear fast."
+"I do a bit. I got a sourdough starter going almost as soon as I arrived, "
+"and it's making passable bread already. I cooked some up yesterday "
+"actually, I could probably trade a loaf of fresh bread for, say, about eight "
+"cups of flour."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -149677,12 +155043,6 @@ msgid ""
"that's a lot more than most."
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid ""
-"Great, here's a loaf of my locally-famous, not-very-mature sourdough. It's "
-"not too bad honestly. Everyone here seems to like it."
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid ""
"Great, here's a loaf of the best damn sourdough bread in the world. I used "
@@ -149704,6 +155064,12 @@ msgid ""
"now."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"Great, here's a loaf of my locally-famous, not-very-mature sourdough. It's "
+"not too bad honestly. Everyone here seems to like it."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid ""
"You seem pretty unhappy about the quality of your bread. Is there something "
@@ -149733,6 +155099,10 @@ msgid ""
"gonna murder someone soon, mark my words."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid "Have you heard anything back from the ranch about jobs yet?"
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid ""
"Huh. I've made a few friends here, but not so much as I'd stick around here "
@@ -149740,10 +155110,6 @@ msgid ""
"me. It does sound nice, if they're looking for more workers."
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid "Have you heard anything back from the ranch about jobs yet?"
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid ""
"I spoke to the foreman over at Tacoma Ranch. If you're willing to put in "
@@ -149781,13 +155147,13 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"Well now, good to see another new face! Welcome to the center, friend, I'm "
-"Draco."
+msgid "Always good to see you, friend."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Always good to see you, friend."
+msgid ""
+"Well now, good to see another new face! Welcome to the center, friend, I'm "
+"Draco."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -149866,7 +155232,7 @@ msgid "I think I would've done the same. Nobody around here has a guitar?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Yes, yes I would... you monster."
+msgid "Yes, yes I would… you monster."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -150024,11 +155390,11 @@ msgid "Well then, I'll leave you here where it's safe."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Man, just imagine what I could do with a new guitar."
+msgid "My savior! My patron of the arts! You're always welcome here, friend."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "My savior! My patron of the arts! You're always welcome here, friend."
+msgid "Man, just imagine what I could do with a new guitar."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -150061,6 +155427,10 @@ msgid ""
"idea of trying it."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid "Go on."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid ""
"Say, I don't mean to get you in any trouble or nothing, if any folks still "
@@ -150124,14 +155494,14 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Amazing! My lucky day. Let's see here. What can I offer... I can scrounge "
-"up some Merch bucks for, say, five joints or joints-worth of the good stuff."
+"Yeah, no worries, though. I'm good at the moment. Ask me again later and "
+"maybe I'll have scrounged up some more cash for you."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Yeah, no worries, though. I'm good at the moment. Ask me again later and "
-"maybe I'll have scrounged up some more cash for you."
+"Amazing! My lucky day. Let's see here. What can I offer... I can scrounge "
+"up some Merch bucks for, say, five joints or joints-worth of the good stuff."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -150182,12 +155552,6 @@ msgstr ""
msgid "Is there anything I can do to help you out?"
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid ""
-"Oh, hey, a new face. Hi, I'm Fatima. Just visiting I hope? It's nice to "
-"meet new people but there are no beds to share."
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid "Hello again."
msgstr ""
@@ -150200,6 +155564,12 @@ msgstr ""
msgid "Oh, hi."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"Oh, hey, a new face. Hi, I'm Fatima. Just visiting I hope? It's nice to "
+"meet new people but there are no beds to share."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid "Nice to meet you too, Fatima. I'm just passing through."
msgstr ""
@@ -150293,15 +155663,15 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hi. Hi there. I'm Garry, Garry Villeneuve."
+msgid "Well, hello."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Well, hello."
+msgid "Good to see you again."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Good to see you again."
+msgid "Hi. Hi there. I'm Garry, Garry Villeneuve."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -150348,7 +155718,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "You lost someone..."
+msgid "You lost someone…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -150367,17 +155737,17 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"Oh, hello. I don't think I've seen you around before. I'm Guneet, people "
-"call me Gunny."
+msgid "Hi."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hi."
+msgid "Hey again."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hey again."
+msgid ""
+"Oh, hello. I don't think I've seen you around before. I'm Guneet, people "
+"call me Gunny."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -150427,12 +155797,12 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"Hi there. Haven't see you around here before. I'm Jenny, Jenny Forcette."
+msgid "Nice to see you again."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Nice to see you again."
+msgid ""
+"Hi there. Haven't see you around here before. I'm Jenny, Jenny Forcette."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -150583,15 +155953,6 @@ msgid ""
"this before somebody snaps."
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid ""
-"Well, there's a bunch of us. We're starting to form a bit of a community. "
-"Fatima and I work together a fair bit, and I've been hanging out with Dana, "
-"Draco, and Aleesha quite a lot. I don't know the Borichenko bunch, the "
-"Singhs, Vanessa, Uyen, or Rhyzaea quite as well, but we've talked enough. "
-"What did you want to know?"
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid ""
"For better or worse, we're a community now. Fatima and I work together a "
@@ -150604,6 +155965,15 @@ msgid ""
"want to know?"
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"Well, there's a bunch of us. We're starting to form a bit of a community. "
+"Fatima and I work together a fair bit, and I've been hanging out with Dana, "
+"Draco, and Aleesha quite a lot. I don't know the Borichenko bunch, the "
+"Singhs, Vanessa, Uyen, or Rhyzaea quite as well, but we've talked enough. "
+"What did you want to know?"
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid "Can you tell me about the Free Merchants?"
msgstr ""
@@ -150669,14 +156039,6 @@ msgid ""
"hope that there's a future to be had."
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid ""
-"Boris and Garry are married, I guess. They kinda keep to themselves, they "
-"seem a bit standoffish if you ask me. Stan is Boris's brother, I think, but "
-"I'm not totally sure. He seems nice enough, but he's a man of few words. I "
-"can't get a good bead on them. I've learned not to pry too much though."
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid ""
"I didn't get to know Boris, Garry, and Stan so well for the first while. "
@@ -150689,10 +156051,10 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"I really can't get a bead on them. They never really talk to anyone outside "
-"of their little family group, they just sit in their own spot and speak "
-"Punjabi. They always seem nice, and they do their share, they just don't "
-"have any social connection."
+"Boris and Garry are married, I guess. They kinda keep to themselves, they "
+"seem a bit standoffish if you ask me. Stan is Boris's brother, I think, but "
+"I'm not totally sure. He seems nice enough, but he's a man of few words. I "
+"can't get a good bead on them. I've learned not to pry too much though."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -150706,14 +156068,10 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Vanessa... well, she's nice, I guess. I gotta say, she kinda drives me "
-"nuts, but we're in this together so I try not to be too harsh. Uyen and "
-"Rhyzaea both seem to want to run the show here, but I try to stay out of "
-"those politics and just focus on building stuff. I don't see much good "
-"coming of it. Alonso is fine, he's clearly interested in me, and also in "
-"every other single woman here. Not my thing, in a group this small. John "
-"is a walking stereotype, I imagine there must be more depth to him, but I "
-"haven't seen it yet."
+"I really can't get a bead on them. They never really talk to anyone outside "
+"of their little family group, they just sit in their own spot and speak "
+"Punjabi. They always seem nice, and they do their share, they just don't "
+"have any social connection."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -150730,13 +156088,25 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Howdy, pardner. They call me Clemens. John Clemens. I'm an ol' cowhand."
+"Vanessa... well, she's nice, I guess. I gotta say, she kinda drives me "
+"nuts, but we're in this together so I try not to be too harsh. Uyen and "
+"Rhyzaea both seem to want to run the show here, but I try to stay out of "
+"those politics and just focus on building stuff. I don't see much good "
+"coming of it. Alonso is fine, he's clearly interested in me, and also in "
+"every other single woman here. Not my thing, in a group this small. John "
+"is a walking stereotype, I imagine there must be more depth to him, but I "
+"haven't seen it yet."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid "Howdy, pardner."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"Howdy, pardner. They call me Clemens. John Clemens. I'm an ol' cowhand."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid "Nice to meet you, John."
msgstr ""
@@ -150774,8 +156144,7 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"You... you do know what's going on here, right? With the evacuation and "
-"stuff?"
+"You… you do know what's going on here, right? With the evacuation and stuff?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -150790,11 +156159,11 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hello ma'am. I am Mandeep Singh."
+msgid "Hello sir. I am Mandeep Singh."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hello sir. I am Mandeep Singh."
+msgid "Hello ma'am. I am Mandeep Singh."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -150837,15 +156206,15 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Ah! You are new. I'm sorry, I'm Mangalpreet."
+msgid "Hi there."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hi there."
+msgid "Oh, hello there."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Oh, hello there."
+msgid "Ah! You are new. I'm sorry, I'm Mangalpreet."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -151046,12 +156415,12 @@ msgid "What brings you around here? We don't see a lot of new faces."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"Hi there. I don't think we've met before. I'm Rhyzaea, people call me Rhy."
+msgid "Need to talk?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Need to talk?"
+msgid ""
+"Hi there. I don't think we've met before. I'm Rhyzaea, people call me Rhy."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -151142,17 +156511,17 @@ msgid "Do you want to talk about your story?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"Hello. I'm sorry, if we've met before, I don't really remember. I'm... I'm "
-"Stan."
+msgid "Hm? Oh, hi."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hm? Oh, hi."
+msgid "...Hi."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "...Hi."
+msgid ""
+"Hello. I'm sorry, if we've met before, I don't really remember. I'm... I'm "
+"Stan."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -151265,13 +156634,13 @@ msgid "Hmm, can we change this shave a little please?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"Oh, great. Another new mouth to feed? Just what we need. Well, I'm "
-"Vanessa."
+msgid "Oh, you're back."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Oh, you're back."
+msgid ""
+"Oh, great. Another new mouth to feed? Just what we need. Well, I'm "
+"Vanessa."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -151310,14 +156679,6 @@ msgstr ""
msgid "Could you give me a haircut?"
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid ""
-"You want the sarcastic version, or the really sarcastic version? I'm stuck "
-"in a dank shitty brick building with two dozen strangers, the world's dead, "
-"and there's not enough food to go around. Why don't you fuckin' figure it "
-"out?"
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid ""
"Well, I'm stuck in a dank shitty brick building with two dozen strangers, "
@@ -151326,6 +156687,14 @@ msgid ""
"to keeping my belly full. People like getting a good haircut."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"You want the sarcastic version, or the really sarcastic version? I'm stuck "
+"in a dank shitty brick building with two dozen strangers, the world's dead, "
+"and there's not enough food to go around. Why don't you fuckin' figure it "
+"out?"
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid ""
"I can see you need one, but last time I used these shears it was to stab a "
@@ -151466,7 +156835,7 @@ msgid "Are you looking to buy anything else?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Very well... let's talk about something else."
+msgid "Very well… let's talk about something else."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -151503,15 +156872,15 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"Even once we got things sorted out, there weren't enough beds for everyone, "
-"and definitely not enough supplies. These are harsh times. We're doing what "
-"we can for those folks... at least they've got shelter."
+"I do. I don't know what you did to convince them to move out, but our "
+"supply chain and I both thank you. I hope it wasn't too unseemly."
msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"I do. I don't know what you did to convince them to move out, but our "
-"supply chain and I both thank you. I hope it wasn't too unseemly."
+"Even once we got things sorted out, there weren't enough beds for everyone, "
+"and definitely not enough supplies. These are harsh times. We're doing what "
+"we can for those folks... at least they've got shelter."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -151784,7 +157153,7 @@ msgid "Have you seen anyone who might be hiding something?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Bye..."
+msgid "Bye…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -151798,7 +157167,7 @@ msgid "Keep your head down and stay out of my way."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "OK..."
+msgid "OK…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -151806,7 +157175,7 @@ msgid "Like what?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'm not sure..."
+msgid "I'm not sure…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -151826,7 +157195,7 @@ msgid "Got something to hide?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Sorry, I didn't mean to offend you..."
+msgid "Sorry, I didn't mean to offend you…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -151870,15 +157239,15 @@ msgid "Just on watch, move along."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Ma'am, you really shouldn't be traveling out there."
+msgid "Rough out there, isn't it?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Rough out there, isn't it?"
+msgid "Ma'am, you really shouldn't be traveling out there."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I heard this place was a refugee center..."
+msgid "I heard this place was a refugee center…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -151902,7 +157271,7 @@ msgid "Can I do anything for the center?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I figured you might be looking for some help..."
+msgid "I figured you might be looking for some help…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -151910,11 +157279,11 @@ msgid "Well, I'd better be going. Bye."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Welcome..."
+msgid "Welcome marshal..."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Welcome marshal..."
+msgid "Welcome..."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -151953,7 +157322,7 @@ msgstr ""
#: lang/json/talk_topic_from_json.py
msgid ""
-"[INT 10] Wait, six buses and refugees... how many people do you still have "
+"[INT 10] Wait, six buses and refugees… how many people do you still have "
"crammed in here?"
msgstr ""
@@ -152001,7 +157370,7 @@ msgid "I'm sorry, not a risk we are willing to take right now."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Fine..."
+msgid "Fine…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152013,7 +157382,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Fine... *coughupyourscough*"
+msgid "Fine… *coughupyourscough*"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152042,7 +157411,7 @@ msgid "[STR 11] I punch things in face real good!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I guess I'll look somewhere else..."
+msgid "I guess I'll look somewhere else…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152063,7 +157432,7 @@ msgid "Heard of anything better than the odd gun cache?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Was hoping for something more..."
+msgid "Was hoping for something more…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152142,11 +157511,11 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Citizen..."
+msgid "Marshal..."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Marshal..."
+msgid "Citizen..."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152164,7 +157533,7 @@ msgid "So what are you doing right now?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Never mind..."
+msgid "Never mind…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152187,7 +157556,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Good luck with that..."
+msgid "Good luck with that…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152204,11 +157573,11 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Heh, you look important."
+msgid "That sure is a shiny badge you got there!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "That sure is a shiny badge you got there!"
+msgid "Heh, you look important."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152231,7 +157600,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Sucks..."
+msgid "Sucks…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152245,7 +157614,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Well, then..."
+msgid "Well, then…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152278,16 +157647,16 @@ msgid ""
"it."
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid "Ssh. Some people in here hate... mutations. This was an accident."
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid ""
"Same way you got yours, I bet. Keep quiet about it, some people here look "
"down on people like us."
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid "Ssh. Some people in here hate... mutations. This was an accident."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid "Sorry to ask"
msgstr ""
@@ -152313,23 +157682,23 @@ msgid "Who needs rebar?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Screw You!"
+msgid "As if you're one to talk. Screw You."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "As if you're one to talk. Screw You."
+msgid "Screw You!"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Huh, thought I smelled someone new. Can I help you?"
+msgid "I thought I smelled a pig. I jest... please don't arrest me."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I thought I smelled a pig. I jest... please don't arrest me."
+msgid "Huh, thought I smelled someone new. Can I help you?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "You... smelled me?"
+msgid "You… smelled me?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152380,7 +157749,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Great, now my mouth is watering..."
+msgid "Great, now my mouth is watering…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152480,7 +157849,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hmmm..."
+msgid "Hmmm…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152525,7 +157894,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I haven't done anything wrong..."
+msgid "I haven't done anything wrong…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152597,9 +157966,7 @@ msgid "Glad to have you aboard."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"Hold there. I don't care how you got access to this location, but you are "
-"coming no further. Go away."
+msgid "So, do you need something?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152607,7 +157974,9 @@ msgid "We haven't changed our mind. Go away."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "So, do you need something?"
+msgid ""
+"Hold there. I don't care how you got access to this location, but you are "
+"coming no further. Go away."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152691,7 +158060,7 @@ msgid "Something to say?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I charge hourly, so be quick..."
+msgid "I charge hourly, so be quick…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152806,7 +158175,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I guess I could help with that..."
+msgid "I guess I could help with that…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152859,14 +158228,6 @@ msgstr ""
msgid "Keep it civil, merc."
msgstr ""
-#: lang/json/talk_topic_from_json.py
-msgid "Here to trade, I hope?"
-msgstr ""
-
-#: lang/json/talk_topic_from_json.py
-msgid "Safe travels, scavenger."
-msgstr ""
-
#: lang/json/talk_topic_from_json.py
msgid ""
"Still plenty of outlaws in the roads, perhaps you should tend to your job, "
@@ -152882,10 +158243,11 @@ msgid "Oh, a U.S. marshal, how quaint."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid ""
-"We have been supplying this lab here with food from a few hunting and "
-"farming communities nearby. The roads are though and dangerous, but it "
-"makes good money, and beats scavenging the cities for scraps."
+msgid "Here to trade, I hope?"
+msgstr ""
+
+#: lang/json/talk_topic_from_json.py
+msgid "Safe travels, scavenger."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152894,6 +158256,13 @@ msgid ""
"fair deal?"
msgstr ""
+#: lang/json/talk_topic_from_json.py
+msgid ""
+"We have been supplying this lab here with food from a few hunting and "
+"farming communities nearby. The roads are though and dangerous, but it "
+"makes good money, and beats scavenging the cities for scraps."
+msgstr ""
+
#: lang/json/talk_topic_from_json.py
msgid "Keep safe, then."
msgstr ""
@@ -152917,7 +158286,7 @@ msgid "[$10] I'll get a haircut"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Maybe another time..."
+msgid "Maybe another time…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152935,7 +158304,7 @@ msgid "Stand still while I get my clippers..."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Thanks..."
+msgid "Thanks…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -152955,7 +158324,7 @@ msgid "What do you have on tap?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'll be going..."
+msgid "I'll be going…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -153007,7 +158376,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'll talk to him then..."
+msgid "I'll talk to him then…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -153023,7 +158392,7 @@ msgid "I hope you are here to do business."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'm interested in investing in agriculture..."
+msgid "I'm interested in investing in agriculture…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -153050,11 +158419,11 @@ msgid "I imagine we might be able to work something out."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I was wondering if you could install a cybernetic implant..."
+msgid "I was wondering if you could install a cybernetic implant…"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I need help removing an implant..."
+msgid "I need help removing an implant…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -153092,7 +158461,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "It could be worse..."
+msgid "It could be worse…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -153102,11 +158471,11 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I'll talk with them then..."
+msgid "I'll talk with them then…"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Morning ma'am, how can I help you?"
+msgid "Can I help you, marshal?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -153114,7 +158483,7 @@ msgid "Morning sir, how can I help you?"
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Can I help you, marshal?"
+msgid "Morning ma'am, how can I help you?"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -153167,7 +158536,7 @@ msgid ""
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Hopefully moving out here was worth it..."
+msgid "Hopefully moving out here was worth it…"
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -153220,11 +158589,11 @@ msgid "Not now."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "I can take a look at you or your companions if you are injured."
+msgid "Come back later, I need to take care of a few things first."
msgstr ""
#: lang/json/talk_topic_from_json.py
-msgid "Come back later, I need to take care of a few things first."
+msgid "I can take a look at you or your companions if you are injured."
msgstr ""
#: lang/json/talk_topic_from_json.py
@@ -153495,7 +158864,7 @@ msgid " blocks and counter-attacks %s"
msgstr ""
#: lang/json/technique_from_json.py
-#: lang/json/technique_from_json.py src/game.cpp
+#: src/game.cpp
msgid "Disarm"
msgstr ""
@@ -153598,6 +158967,7 @@ msgid " leaps off a nearby wall and dropkicks %s"
msgstr ""
#: lang/json/technique_from_json.py
+#: lang/json/technique_from_json.py src/martialarts.cpp
msgid "Grab Break"
msgstr ""
@@ -153673,12 +159043,12 @@ msgstr ""
#: lang/json/technique_from_json.py
#, python-format
-msgid "You Snakebite %s"
+msgid "You lash out at %s with a Viper Bite"
msgstr ""
#: lang/json/technique_from_json.py
#, python-format
-msgid " Snakebites %s"
+msgid " lash out at %s with a Viper Bite"
msgstr ""
#: lang/json/technique_from_json.py
@@ -153687,18 +159057,28 @@ msgstr ""
#: lang/json/technique_from_json.py
#, python-format
-msgid "You Viper Strike %s"
+msgid "You hit %s with a spectacular Viper Strike"
msgstr ""
#: lang/json/technique_from_json.py
#, python-format
-msgid " Viper Strikes %s"
+msgid " hits %s with a spectacular Viper Strike"
msgstr ""
#: lang/json/technique_from_json.py
msgid "Viper Writhe"
msgstr ""
+#: lang/json/technique_from_json.py
+#, python-format
+msgid "The %s tries to grab you, but you writhe free!"
+msgstr ""
+
+#: lang/json/technique_from_json.py
+#, python-format
+msgid "The %s tries to grab , but they writhe free!"
+msgstr ""
+
#: lang/json/technique_from_json.py
msgid "Roundhouse Kick"
msgstr ""
@@ -153741,6 +159121,34 @@ msgstr ""
msgid " jabs %s with a Pincer Fist"
msgstr ""
+#: lang/json/technique_from_json.py
+msgid "Toad Smack"
+msgstr ""
+
+#: lang/json/technique_from_json.py
+#, python-format
+msgid "You disregard %s's attack and knock them down"
+msgstr ""
+
+#: lang/json/technique_from_json.py
+#, python-format
+msgid " disregards %s's attack and knocks them down"
+msgstr ""
+
+#: lang/json/technique_from_json.py
+msgid "Toad Slam"
+msgstr ""
+
+#: lang/json/technique_from_json.py
+#, python-format
+msgid "You meet %s's attack head on with a stunning counter"
+msgstr ""
+
+#: lang/json/technique_from_json.py
+#, python-format
+msgid " meet %s's attack head on with a stunning counter"
+msgstr ""
+
#: lang/json/technique_from_json.py
msgid "Toad's Tongue"
msgstr ""
@@ -155338,247 +160746,320 @@ msgstr ""
msgid " lashes out at %s with a vicious Snake Strike"
msgstr ""
+#: lang/json/technique_from_json.py
+msgid "Push"
+msgstr ""
+
+#: lang/json/technique_from_json.py
+#, python-format
+msgid "You push %s away"
+msgstr ""
+
+#: lang/json/technique_from_json.py
+#, python-format
+msgid " pushes %s away"
+msgstr ""
+
+#: lang/json/technique_from_json.py
+msgid "Shove"
+msgstr ""
+
#: lang/json/technique_from_json.py
#, python-format
-msgid "You disarm %s"
+msgid "You shove %s back"
msgstr ""
#: lang/json/technique_from_json.py
#, python-format
-msgid " disarms %s"
+msgid " shoves %s back"
msgstr ""
#: lang/json/technique_from_json.py
-msgid "precise strike"
+#, python-format
+msgid "You deftly trip %s"
+msgstr ""
+
+#: lang/json/technique_from_json.py
+#, python-format
+msgid " deftly trips %s"
+msgstr ""
+
+#: lang/json/technique_from_json.py
+msgid "Snatch Weapon"
+msgstr ""
+
+#: lang/json/technique_from_json.py
+#, python-format
+msgid "You snatch %s's weapon"
+msgstr ""
+
+#: lang/json/technique_from_json.py
+#, python-format
+msgid "