Skip to content

Commit

Permalink
New side story: Pizzaiolo (#46101)
Browse files Browse the repository at this point in the history
  • Loading branch information
El-Jekozo authored Jan 25, 2021
1 parent 19c02a1 commit e9352ad
Show file tree
Hide file tree
Showing 7 changed files with 308 additions and 1 deletion.
6 changes: 6 additions & 0 deletions data/json/mapgen/nested/city_npc_nested_spawns.json
Original file line number Diff line number Diff line change
Expand Up @@ -144,5 +144,11 @@
"method": "json",
"nested_mapgen_id": "KINDRED_Darren_Cooper_spawn",
"object": { "mapgensize": [ 1, 1 ], "place_npcs": [ { "class": "KINDRED_Darren_Cooper", "x": 0, "y": 0 } ] }
},
{
"type": "mapgen",
"method": "json",
"nested_mapgen_id": "NPC_pizzaiolo_spawn",
"object": { "mapgensize": [ 1, 1 ], "place_npcs": [ { "class": "NPC_pizzaiolo", "x": 0, "y": 0 } ] }
}
]
3 changes: 2 additions & 1 deletion data/json/mapgen/restaurant.json
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,8 @@
"place_monsters": [
{ "monster": "GROUP_GROCERY", "x": [ 5, 9 ], "y": [ 9, 14 ], "chance": 5 },
{ "monster": "GROUP_ROACH", "x": [ 7, 19 ], "y": 19, "chance": 20 }
]
],
"place_nested": [ { "chunks": [ [ "NPC_pizzaiolo_spawn", 5 ], [ "null", 50 ] ], "x": 7, "y": 5 } ]
}
},
{
Expand Down
13 changes: 13 additions & 0 deletions data/json/npcs/BG_traits.json
Original file line number Diff line number Diff line change
Expand Up @@ -663,5 +663,18 @@
"purifiable": false,
"types": [ "BACKGROUND_SURVIVAL_STORY" ],
"flags": [ "BG_SURVIVAL_STORY" ]
},
{
"type": "mutation",
"//": "This is a unique background story trait that should not be given out randomly.",
"id": "BGSS_pizzaiolo",
"name": { "str": "Survivor Story" },
"points": 0,
"description": "This NPC could tell you about how they survived the Cataclysm",
"player_display": false,
"valid": false,
"purifiable": false,
"types": [ "BACKGROUND_SURVIVAL_STORY" ],
"flags": [ "BG_SURVIVAL_STORY" ]
}
]
7 changes: 7 additions & 0 deletions data/json/npcs/Backgrounds/backgrounds_table_of_contents.json
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,13 @@
"topic": "BGSS_SCAVENGER_MERC_1_STORY3",
"condition": { "and": [ { "npc_has_trait": "BGSS_Scavenger_Merc_1" }, { "npc_has_effect": "BGSS_Merc_haswhisky" } ] },
"switch": true
},
{
"text": "<BGSS_intro_question>",
"topic": "BGSS_pizzaiolo_STORY1",
"//": "This is a unique background story that should not be given out randomly.",
"condition": { "npc_has_trait": "BGSS_pizzaiolo" },
"switch": true
}
]
},
Expand Down
18 changes: 18 additions & 0 deletions data/json/npcs/Backgrounds/bg_pizzaiolo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[
{
"id": "BGSS_pizzaiolo_STORY1",
"type": "talk_topic",
"dynamic_line": "I was just a regular pizzaiolo. My father was a pizzaiolo, my grandfather was a pizzaiolo and I also became a pizzaiolo. I was making pizza my whole life, until some american <name_b>s ruined my business! I couldn't do anything about this, but now, with <the_cataclysm> and <zombies> around, I have a chance to get my revenge! And I got my revenge, thanks to a special someone.",
"responses": [
{ "text": "He-he, that was a fun ride, <name_g>.", "topic": "BGSS_pizzaiolo_STORY2" },
{ "text": "<done_conversation_section>", "topic": "TALK_FRIEND" },
{ "text": "<end_talking>", "topic": "TALK_DONE" }
]
},
{
"id": "BGSS_pizzaiolo_STORY2",
"type": "talk_topic",
"dynamic_line": "Are you kidding? That was the best! When I imagine the face of that arrogant cook… mmm, sweet, sweet picture. Oh, and how we beat up that <dumb> <swear> food-<name_b>, I dreamed about it for so long… and my restaurant, we beat the shit out of those <name_b>s. Too bad it was trashed as hell… anyway, let's hit the dirt.",
"responses": [ { "text": "<done_conversation_section>", "topic": "TALK_FRIEND" }, { "text": "<end_talking>", "topic": "TALK_DONE" } ]
}
]
17 changes: 17 additions & 0 deletions data/json/npcs/TALK_TRUE_FOODPERSON.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,11 @@
"text": "I am the REAL Foodperson!",
"topic": "TALK_FOODPERSON_ONLYONE"
},
{
"text": "So, you are a REAL FOODPERSON, right? You know my <name_g> over there? You know that you ruined his legacy?",
"condition": { "u_has_mission": "MISSION_pizzaiolo_2" },
"topic": "TALK_TRUE_FOODPERSON_pizzaiolo"
},
{ "text": "Nevermind me, I'm just going to leave.", "topic": "TALK_DONE" }
]
},
Expand Down Expand Up @@ -546,5 +551,17 @@
"topic": "TALK_DONE"
}
]
},
{
"type": "talk_topic",
"id": "TALK_TRUE_FOODPERSON_pizzaiolo",
"dynamic_line": "Umm, I'm not sure I'm following you…",
"responses": [
{
"text": "You know what, <name_b>, I don't want to talk to you anymore. <kill_npc> <name_b>!",
"topic": "TALK_DONE",
"effect": "insult_combat"
}
]
}
]
245 changes: 245 additions & 0 deletions data/json/npcs/other/NPC_pizzaiolo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,245 @@
[
{
"type": "npc",
"id": "NPC_pizzaiolo",
"gender": "male",
"class": "NC_SURVIVOR_CHEF",
"name_suffix": "pizzaiolo",
"attitude": 0,
"mission": 7,
"chat": "TALK_pizzaiolo_1",
"faction": "no_faction",
"mission_offered": "MISSION_pizzaiolo_1"
},
{
"type": "talk_topic",
"id": [ "TALK_pizzaiolo_1", "TALK_pizzaiolo_Background" ],
"dynamic_line": "<greet>",
"responses": [
{
"text": "I got the cake. Shall we move, <name_g>?",
"condition": { "and": [ { "u_has_item": "cake2" }, { "u_has_mission": "MISSION_pizzaiolo_4" } ] },
"topic": "TALK_pizzaiolo_go"
},
{ "text": "About that job…", "condition": "mission_complete", "topic": "TALK_MISSION_INQUIRE" },
{ "text": "<BGSS_intro_question>", "topic": "TALK_pizzaiolo_Background" },
{ "text": "Do you need any help?", "topic": "TALK_MISSION_LIST" },
{
"text": "If you still want to travel with me, let's go.",
"topic": "TALK_DONE",
"condition": { "npc_has_var": "u_helped_pizzaiolo", "type": "dialogue", "context": "pizzaiolo", "value": "yes" },
"effect": [ "follow", { "npc_lose_var": "u_helped_pizzaiolo", "type": "dialogue", "context": "pizzaiolo" } ]
},
{ "text": "Goodbye.", "topic": "TALK_DONE" }
]
},
{
"type": "talk_topic",
"id": "TALK_pizzaiolo_go",
"dynamic_line": "Lead the way, <name_g>.",
"responses": [
{ "text": "", "topic": "TALK_DONE", "effect": [ "follow_only", { "npc_first_topic": "TALK_pizzaiolo_following" } ] }
]
},
{
"type": "talk_topic",
"id": "TALK_pizzaiolo_following",
"dynamic_line": "Are we there yet, my <name_g>?",
"responses": [
{
"text": "We're here, <name_g>. Let's celebrate.",
"topic": "TALK_pizzaiolo_celebrate",
"condition": { "and": [ "mission_complete", { "u_has_item": "cake2" } ] },
"effect": [ "mission_success", "clear_mission", { "u_consume_item": "cake2" } ]
},
{ "text": "Be patient. We'll be there soon, <name_g>", "topic": "TALK_DONE" }
]
},
{
"type": "talk_topic",
"id": "TALK_pizzaiolo_celebrate",
"dynamic_line": "Ah, home sweet home. It feels like I haven't been here for ages. <swear>, it looks so horrible now. I guess it's because of <the_cataclysm>. Thank you for bringing me here, <name_g>. Let's eat the cake.",
"responses": [ { "text": "[*NOM-NOM*]", "topic": "TALK_pizzaiolo_celebrate1" } ]
},
{
"type": "talk_topic",
"id": "TALK_pizzaiolo_celebrate1",
"dynamic_line": "Mmm, delicious. You know, you are good friend, and a good cook. I'm glad that I'm with you at the day like this. Say, what do you think about me going with you? As you can see, my restaurant is thrashes, my house ruined, the only option left is to travel somewhere, and it's better if I do it with someone.",
"speaker_effect": { "effect": [ "morale_chat", { "npc_add_trait": "BGSS_pizzaiolo" } ] },
"responses": [
{ "text": "Sure, <name_g>. <end_talking>", "topic": "TALK_DONE", "effect": "follow" },
{
"text": "Maybe later.",
"topic": "TALK_DONE",
"effect": [
{ "npc_first_topic": "TALK_pizzaiolo_1" },
{ "npc_add_var": "u_helped_pizzaiolo", "type": "dialogue", "context": "pizzaiolo", "value": "yes" }
]
}
]
},
{
"type": "talk_topic",
"id": "TALK_pizzaiolo_Background",
"dynamic_line": "I'm just a regular pizzaiolo. My father was a pizzaiolo, my grandfather was a pizzaiolo and I also became a pizzaiolo. I was making pizza my whole life, until some american <name_b>s ruined my business! I couldn't do anything about this, but now, with <the_cataclysm> and <zombies> around, I have a chance to get my revenge!"
},
{
"id": "MISSION_pizzaiolo_1",
"type": "mission_definition",
"name": { "str": "Angry pizzaiolo" },
"goal": "MGOAL_GO_TO",
"difficulty": 0,
"value": 10000,
"has_generic_rewards": false,
"start": {
"effect": [ "follow_only", { "npc_first_topic": "MISSION_PYROMANIAC" } ],
"assign_mission_target": { "om_terrain": "s_restaurant", "min_distance": 5, "z": 0 }
},
"end": {
"effect": [
{ "npc_first_topic": "TALK_pizzaiolo_1" },
"stop_following",
{ "u_consume_item": "gasoline", "count": 200 },
{ "mapgen_update": "MISSION_PYROMANIAC_BURN" }
]
},
"origins": [ "ORIGIN_SECONDARY" ],
"followup": "MISSION_pizzaiolo_2",
"dialogue": {
"describe": "-",
"offer": "I'm so <swear> angry! I have an enemy that ruined my life, and I want revenge for it! I don't care about <the_cataclysm>, I just want to burn his <swear> restaurant! Will you help me?",
"accepted": "Good. Let's go to his restaurant and <swear> burn it! Oh, by the way, could you bring gasoline with you, <name_g>? I was so angry I forgot to bring it with me…",
"rejected": "What?! Why do you… ah, forget it.",
"advice": "Maybe we can find some gasoline at gas station.",
"inquire": "Are you ready, <name_g>?",
"success": "Sweet, sweet revenge! It smells so nice! His restaurant burns, his legacy is now ruined! Even if he became a <zombie>, it still <swear> good.",
"success_lie": "-",
"failure": "-"
}
},
{
"id": "MISSION_pizzaiolo_2",
"type": "mission_definition",
"has_generic_rewards": false,
"name": { "str": "Find TrueFoodperson" },
"description": "Help pizzaiolo find TrueFoodperson and kick his ass.",
"goal": "MGOAL_ASSASSINATE",
"difficulty": 0,
"value": 10000,
"start": {
"effect": [ "follow_only", { "u_buy_item": "bat" } ],
"assign_mission_target": { "om_terrain": "s_restaurant_foodplace", "min_distance": 5, "z": 0 },
"update_mapgen": {
"om_terrain": "s_restaurant_foodplace_roof",
"place_npcs": [ { "class": "true_foodperson", "x": 12, "y": 19, "target": true } ]
}
},
"end": { "effect": "stop_following" },
"origins": [ "ORIGIN_SECONDARY" ],
"followup": "MISSION_pizzaiolo_3",
"dialogue": {
"describe": "-",
"offer": "Ah, it's you, <name_g>. Wanna continue on my revenge to all american <name_b>s?",
"accepted": "Good. Next stop, Foodplace. I always hated that place, especially that <swear> <name_b> in his <dumb> mask. I know he's still alive, hiding in his <swear> <dumb> parody of a restaurant. Take this bat. Let's take a visit to him, <name_g>, and kick his <swear> ass!",
"rejected": "What?! Why do you… ah, forget it.",
"advice": "I heard that these 'restaurants' use some kind of locking system for staff room, so we would need to find a way to get there.",
"inquire": "I'm waiting.",
"success": "Another one bite the dust! We did good, <name_g>.",
"success_lie": "-",
"failure": "-"
}
},
{
"id": "MISSION_pizzaiolo_3",
"type": "mission_definition",
"has_generic_rewards": false,
"name": { "str": "Pizza parlor" },
"description": "Help pizzaiolo take back his restaurant.",
"goal": "MGOAL_ASSASSINATE",
"difficulty": 0,
"value": 10000,
"start": {
"effect": "follow_only",
"assign_mission_target": { "om_terrain": "s_pizza_parlor_1", "z": 0 },
"update_mapgen": {
"place_npcs": [
{ "class": "bandit", "x": [ 7, 22 ], "y": [ 6, 19 ], "target": true },
{ "class": "bandit", "x": [ 7, 22 ], "y": [ 6, 19 ], "repeat": [ 1, 3 ] },
{ "class": "thug", "x": [ 7, 22 ], "y": [ 6, 19 ], "repeat": [ 2, 4 ] }
]
}
},
"end": { "effect": "stop_following" },
"origins": [ "ORIGIN_SECONDARY" ],
"followup": "MISSION_pizzaiolo_4",
"dialogue": {
"describe": "-",
"offer": "I need to make a last step to achieve my revenge, and the step is - my pizza parlor. Before <the_cataclysm>, the bank took my place, and now, some <swear> <name_b>s occupied it and made it their base! <swear> unbelievable, I tell ya. It's time for me to fight back, deal with this <swear> <name_b>s and regain my honor. Are you with me, <name_g>?",
"accepted": "<very> good. Let's go.",
"rejected": "What?! Why do you… ah, forget it.",
"advice": "These <name_b>s might be heavily armed, so we need to prepare to face them.",
"inquire": "I'm waiting.",
"success": "Nice, <very><swear> nice. <swear>, this placed is thrashed. <swear><name_b>s thrashed my restaurant! Okay, calm down, calm down, will ya… At least I retrieved my place. Thank you, <name_g>. I couldn't make it without you.",
"success_lie": "-",
"failure": "-"
}
},
{
"id": "MISSION_pizzaiolo_4",
"type": "mission_definition",
"has_generic_rewards": false,
"name": { "str": "Family house" },
"description": "Lead pizzaiolo to his family house.",
"goal": "MGOAL_GO_TO",
"start": {
"effect": { "u_learn_recipe": "cake2" },
"assign_mission_target": {
"om_terrain": "house",
"om_terrain_match_type": "PREFIX",
"random": true,
"search_range": 75,
"min_distance": 5,
"z": 0
}
},
"fail": { "effect": "end_conversation" },
"difficulty": 0,
"value": 100,
"origins": [ "ORIGIN_SECONDARY" ],
"dialogue": {
"describe": "-",
"offer": "Now, as my competitors dead, their places are ruined, it's time to relax… I know, let's celebrate it! Lead me to my house. Also, we need a cake for that. What celebration without a cake, right? I can teach you how to cook it, if you want.",
"accepted": "Good. Bring me chocolate cake and talk to me.",
"rejected": "What?! Why do you… ah, forget it.",
"advice": "If you listened to me very closely, it wouldn't be hard for you to make it. Good luck, <name_g>.",
"inquire": "I'm waiting.",
"success": "-",
"success_lie": "-",
"failure": "-"
}
},
{
"//": "MISSION_PYROMANIAC mission set this topic as starting topic for mission giver.",
"type": "talk_topic",
"id": "MISSION_PYROMANIAC",
"dynamic_line": "Are we there yet, <name_g>? I can't wait to burn that building!",
"responses": [
{
"text": "We're here. Let's do it!",
"topic": "TALK_MISSION_INQUIRE",
"condition": { "and": [ "mission_complete", { "u_has_items": { "item": "gasoline", "count": 200 } } ] }
},
{ "text": "Be patient, <name_g>, we're getting there soon.", "topic": "TALK_DONE" }
]
},
{
"//": "For MISSION_PYROMANIAC. Will spawn fire on tile where PC is standing.",
"type": "mapgen",
"update_mapgen_id": "MISSION_PYROMANIAC_BURN",
"method": "json",
"object": {
"place_liquids": [ { "liquid": "gasoline", "x": [ 5, 20 ], "y": [ 5, 20 ], "amount": 5, "repeat": 40 } ],
"place_fields": [ { "field": "fd_fire", "x": [ 5, 20 ], "y": [ 5, 20 ], "repeat": 40 } ]
}
}
]

0 comments on commit e9352ad

Please sign in to comment.