Added trading and quests, checkpoint push

This commit is contained in:
Joan
2026-02-08 20:18:42 +01:00
parent 8820cd897e
commit 70dc35b4b2
36 changed files with 3583 additions and 279 deletions

View File

@@ -13,7 +13,8 @@
"description": {
"en": "A raw material used for crafting and upgrades.",
"es": "Un material bruto utilizado para la fabricación y las mejoras."
}
},
"value": 10
},
"rusty_nails": {
"name": {
@@ -28,7 +29,8 @@
"description": {
"en": "A raw material used for crafting and upgrades.",
"es": "Un material bruto utilizado para la fabricación y las mejoras."
}
},
"value": 10
},
"wood_planks": {
"name": {
@@ -43,7 +45,8 @@
"description": {
"en": "A raw material used for crafting and upgrades.",
"es": "Un material bruto utilizado para la fabricación y las mejoras."
}
},
"value": 10
},
"cloth_scraps": {
"name": {
@@ -58,7 +61,8 @@
"description": {
"en": "A raw material used for crafting and upgrades.",
"es": "Un material bruto utilizado para la fabricación y las mejoras."
}
},
"value": 10
},
"cloth": {
"name": {
@@ -86,7 +90,8 @@
"item_id": "knife",
"durability_cost": 1
}
]
],
"value": 10
},
"plastic_bottles": {
"name": {
@@ -101,7 +106,8 @@
"description": {
"en": "A raw material used for crafting and upgrades.",
"es": "Un material bruto utilizado para la fabricación y las mejoras."
}
},
"value": 10
},
"bone": {
"name": {
@@ -116,7 +122,8 @@
"description": {
"en": "A raw material used for crafting and upgrades.",
"es": "Un material bruto utilizado para la fabricación y las mejoras."
}
},
"value": 10
},
"raw_meat": {
"name": {
@@ -131,7 +138,8 @@
"description": {
"en": "A raw material used for crafting and upgrades.",
"es": "Un material bruto utilizado para la fabricación y las mejoras."
}
},
"value": 10
},
"animal_hide": {
"name": {
@@ -146,7 +154,8 @@
"description": {
"en": "A raw material used for crafting and upgrades.",
"es": "Un material bruto utilizado para la fabricación y las mejoras."
}
},
"value": 10
},
"mutant_tissue": {
"name": {
@@ -161,7 +170,8 @@
"description": {
"en": "A raw material used for crafting and upgrades.",
"es": "Un material bruto utilizado para la fabricación y las mejoras."
}
},
"value": 10
},
"infected_tissue": {
"name": {
@@ -176,7 +186,8 @@
"description": {
"en": "A raw material used for crafting and upgrades.",
"es": "Un material bruto utilizado para la fabricación y las mejoras."
}
},
"value": 10
},
"stale_chocolate_bar": {
"name": {
@@ -192,7 +203,8 @@
"description": {
"en": "Can be consumed to restore health or stamina.",
"es": "Se puede consumir para restaurar salud o stamina."
}
},
"value": 10
},
"canned_beans": {
"name": {
@@ -209,7 +221,8 @@
"description": {
"en": "Can be consumed to restore health or stamina.",
"es": "Se puede consumir para restaurar salud o stamina."
}
},
"value": 10
},
"canned_food": {
"name": {
@@ -226,7 +239,8 @@
"description": {
"en": "Can be consumed to restore health or stamina.",
"es": "Se puede consumir para restaurar salud o stamina."
}
},
"value": 10
},
"bottled_water": {
"name": {
@@ -242,7 +256,8 @@
"description": {
"en": "Can be consumed to restore health or stamina.",
"es": "Se puede consumir para restaurar salud o stamina."
}
},
"value": 10
},
"water_bottle": {
"name": {
@@ -258,7 +273,8 @@
"description": {
"en": "Can be consumed to restore health or stamina.",
"es": "Se puede consumir para restaurar salud o stamina."
}
},
"value": 10
},
"energy_bar": {
"name": {
@@ -274,7 +290,8 @@
"description": {
"en": "Can be consumed to restore health or stamina.",
"es": "Se puede consumir para restaurar salud o stamina."
}
},
"value": 10
},
"mystery_pills": {
"name": {
@@ -290,7 +307,8 @@
"description": {
"en": "Can be consumed to restore health or stamina.",
"es": "Se puede consumir para restaurar salud o stamina."
}
},
"value": 10
},
"first_aid_kit": {
"name": {
@@ -306,7 +324,8 @@
"type": "consumable",
"hp_restore": 50,
"emoji": "🩹",
"image_path": "images/items/first_aid_kit.webp"
"image_path": "images/items/first_aid_kit.webp",
"value": 10
},
"bandage": {
"name": {
@@ -334,7 +353,8 @@
]
},
"emoji": "🩹",
"image_path": "images/items/bandage.webp"
"image_path": "images/items/bandage.webp",
"value": 10
},
"medical_supplies": {
"name": {
@@ -350,7 +370,8 @@
"type": "consumable",
"hp_restore": 40,
"emoji": "⚕️",
"image_path": "images/items/medical_supplies.webp"
"image_path": "images/items/medical_supplies.webp",
"value": 10
},
"antibiotics": {
"name": {
@@ -367,7 +388,8 @@
"hp_restore": 20,
"treats": "Infected",
"emoji": "💊",
"image_path": "images/items/antibiotics.webp"
"image_path": "images/items/antibiotics.webp",
"value": 10
},
"rad_pills": {
"name": {
@@ -384,7 +406,8 @@
"hp_restore": 5,
"treats": "Radiation",
"emoji": "☢️",
"image_path": "images/items/rad_pills.webp"
"image_path": "images/items/rad_pills.webp",
"value": 10
},
"tire_iron": {
"name": {
@@ -408,7 +431,8 @@
"damage_max": 5
},
"emoji": "🔧",
"image_path": "images/items/tire_iron.webp"
"image_path": "images/items/tire_iron.webp",
"value": 10
},
"baseball_bat": {
"name": {
@@ -428,7 +452,8 @@
"stats": {
"damage_min": 5,
"damage_max": 8
}
},
"value": 10
},
"rusty_knife": {
"name": {
@@ -464,7 +489,8 @@
"damage_max": 5
},
"emoji": "🔪",
"image_path": "images/items/rusty_knife.webp"
"image_path": "images/items/rusty_knife.webp",
"value": 10
},
"knife": {
"name": {
@@ -553,7 +579,8 @@
}
},
"emoji": "🔪",
"image_path": "images/items/knife.webp"
"image_path": "images/items/knife.webp",
"value": 10
},
"rusty_pipe": {
"name": {
@@ -573,7 +600,8 @@
"stats": {
"damage_min": 5,
"damage_max": 8
}
},
"value": 10
},
"tattered_rucksack": {
"name": {
@@ -620,7 +648,8 @@
"volume_capacity": 10
},
"emoji": "🎒",
"image_path": "images/items/tattered_rucksack.webp"
"image_path": "images/items/tattered_rucksack.webp",
"value": 10
},
"hiking_backpack": {
"name": {
@@ -656,7 +685,8 @@
"volume_capacity": 20
},
"emoji": "🎒",
"image_path": "images/items/hiking_backpack.webp"
"image_path": "images/items/hiking_backpack.webp",
"value": 10
},
"flashlight": {
"name": {
@@ -676,7 +706,8 @@
"stats": {
"damage_min": 5,
"damage_max": 8
}
},
"value": 10
},
"old_photograph": {
"name": {
@@ -691,7 +722,8 @@
"description": {
"en": "A useful old photograph.",
"es": "Una fotografía vieja útil."
}
},
"value": 10
},
"key_ring": {
"name": {
@@ -706,7 +738,8 @@
"description": {
"en": "A useful key ring.",
"es": "Un anillo de llaves útil."
}
},
"value": 10
},
"makeshift_spear": {
"name": {
@@ -757,7 +790,8 @@
"damage_max": 7
},
"emoji": "⚔️",
"image_path": "images/items/makeshift_spear.webp"
"image_path": "images/items/makeshift_spear.webp",
"value": 10
},
"reinforced_bat": {
"name": {
@@ -814,7 +848,8 @@
}
},
"emoji": "🏸",
"image_path": "images/items/reinforced_bat.webp"
"image_path": "images/items/reinforced_bat.webp",
"value": 10
},
"leather_vest": {
"name": {
@@ -865,7 +900,8 @@
"hp_bonus": 10
},
"emoji": "🦺",
"image_path": "images/items/leather_vest.webp"
"image_path": "images/items/leather_vest.webp",
"value": 10
},
"cloth_bandana": {
"name": {
@@ -903,7 +939,8 @@
"armor": 1
},
"emoji": "🧣",
"image_path": "images/items/cloth_bandana.webp"
"image_path": "images/items/cloth_bandana.webp",
"value": 10
},
"sturdy_boots": {
"name": {
@@ -954,7 +991,8 @@
"stamina_bonus": 5
},
"emoji": "🥾",
"image_path": "images/items/sturdy_boots.webp"
"image_path": "images/items/sturdy_boots.webp",
"value": 10
},
"padded_pants": {
"name": {
@@ -1001,7 +1039,8 @@
"hp_bonus": 5
},
"emoji": "👖",
"image_path": "images/items/padded_pants.webp"
"image_path": "images/items/padded_pants.webp",
"value": 10
},
"reinforced_pack": {
"name": {
@@ -1091,7 +1130,8 @@
"volume_capacity": 30
},
"emoji": "🎒",
"image_path": "images/items/reinforced_pack.webp"
"image_path": "images/items/reinforced_pack.webp",
"value": 10
},
"hammer": {
"name": {
@@ -1130,7 +1170,8 @@
],
"repair_percentage": 30,
"emoji": "🔨",
"image_path": "images/items/hammer.webp"
"image_path": "images/items/hammer.webp",
"value": 10
},
"screwdriver": {
"name": {
@@ -1173,7 +1214,8 @@
"stats": {
"damage_min": 5,
"damage_max": 8
}
},
"value": 10
},
"pipe_bomb": {
"name": {
@@ -1194,7 +1236,8 @@
"combat_effects": {
"damage_min": 15,
"damage_max": 25
}
},
"value": 10
},
"molotov_cocktail": {
"name": {
@@ -1222,7 +1265,8 @@
"ticks": 3,
"persist_after_combat": true
}
}
},
"value": 10
},
"smoke_bomb": {
"name": {
@@ -1249,7 +1293,8 @@
"ticks": 1,
"persist_after_combat": false
}
}
},
"value": 10
},
"stim_pack": {
"name": {
@@ -1269,7 +1314,8 @@
"consumable": true,
"combat_usable": true,
"combat_only": true,
"hp_restore": 20
"hp_restore": 20,
"value": 10
},
"adrenaline_shot": {
"name": {
@@ -1297,7 +1343,8 @@
"ticks": 2,
"persist_after_combat": false
}
}
},
"value": 10
}
}
}

68
gamedata/quests.json Normal file
View File

@@ -0,0 +1,68 @@
{
"quests": {
"quest_collect_wood": {
"quest_id": "quest_collect_wood",
"title": {
"en": "Rebuilding the Bridge",
"es": "Reconstruyendo el Puente"
},
"description": {
"en": "We need wood to repair the bridge to the north. Bring what you can.",
"es": "Necesitamos madera para reparar el puente del norte. Trae lo que puedas."
},
"giver_id": "mechanic_mike",
"type": "global",
"repeatable": true,
"cooldown_hours": 0,
"objectives": [
{
"type": "item_delivery",
"target": "wood_plank",
"count": 1000
}
],
"rewards": {
"xp": 10,
"items": {
"credits": 5
}
},
"completion_text": {
"en": "Thanks, every plank helps.",
"es": "Gracias, cada tabla ayuda."
}
},
"quest_rat_problem": {
"quest_id": "quest_rat_problem",
"title": {
"en": "Rat Problem",
"es": "Problema de Ratas"
},
"description": {
"en": "Mutant rats are infesting the basement. Kill 3 of them.",
"es": "Ratas mutantes infestan el sótano. Mata a 3 de ellas."
},
"giver_id": "trader_joe",
"type": "individual",
"repeatable": true,
"cooldown_hours": 24,
"objectives": [
{
"type": "kill_count",
"target": "mutant_rat",
"count": 3
}
],
"rewards": {
"xp": 50,
"items": {
"canned_food": 1
}
},
"completion_text": {
"en": "Thanks for clearing them out. Here's some food.",
"es": "Gracias por limpiarlos. Aquí tienes algo de comida."
}
}
}
}

93
gamedata/static_npcs.json Normal file
View File

@@ -0,0 +1,93 @@
{
"static_npcs": {
"trader_joe": {
"npc_id": "trader_joe",
"name": {
"en": "Trader Joe",
"es": "Comerciante José"
},
"location_id": "residential",
"image": "images/static_npcs/trader_joe.webp",
"dialog": {
"greeting": {
"en": "Got some rare goods for sale, stranger.",
"es": "Tengo mercancía rara a la venta, forastero."
},
"topics": [
{
"id": "lore_markets",
"title": {
"en": "About the markets",
"es": "Sobre los mercados"
},
"text": {
"en": "Before the fall, this place was bustling. Now, we scrape by with what we can found.",
"es": "Antes de la caída, este lugar estaba lleno de vida. Ahora, sobrevivimos con lo que podemos encontrar."
}
}
],
"quest_offer": {
"en": "I could use a hand with something.",
"es": "Podría necesitar una mano con algo."
}
},
"trade": {
"enabled": true,
"currency": "value",
"unlimited_currency": true,
"keep_sold_items": true,
"buy_markup": 1.5,
"sell_markdown": 0.5,
"stock": [
{
"item_id": "water_bottle",
"max_stock": 10,
"restock_rate": 2,
"infinite": false
},
{
"item_id": "canned_food",
"max_stock": 50,
"infinite": true
}
]
}
},
"mechanic_mike": {
"npc_id": "mechanic_mike",
"name": {
"en": "Mechanic Mike",
"es": "Mecánico Mike"
},
"location_id": "gas_station",
"image": "images/static_npcs/mechanic_mike.webp",
"dialog": {
"greeting": {
"en": "If it's broken, I might be able to fix it. Might.",
"es": "Si está roto, tal vez pueda arreglarlo. Tal vez."
},
"topics": [],
"quest_offer": {
"en": "Need parts. Always need parts.",
"es": "Necesito piezas. Siempre necesito piezas."
}
},
"trade": {
"enabled": true,
"currency": "value",
"unlimited_currency": true,
"keep_sold_items": false,
"buy_markup": 1.2,
"sell_markdown": 0.6,
"stock": [
{
"item_id": "scrap_metal",
"max_stock": 20,
"refresh_rate": 5,
"infinite": false
}
]
}
}
}
}