diff --git a/data/mods/Magiclysm/npc/TALK_HEALER_GREY.json b/data/mods/Magiclysm/npc/TALK_HEALER_GREY.json new file mode 100644 index 0000000000000..1ed139ca09f89 --- /dev/null +++ b/data/mods/Magiclysm/npc/TALK_HEALER_GREY.json @@ -0,0 +1,51 @@ +[ + { + "type": "talk_topic", + "id": "TALK_HEALER_GREY", + "dynamic_line": { + "u_has_var": "talked_to_healer_grey", + "type": "dialogue", + "context": "healer_grey", + "value": "yes", + "no": "I must purge this land of its curse. Will you help or hinder our mission?", + "yes": "Blessed be." + }, + "responses": [ + { + "text": "Hello .", + "topic": "TALK_HEALER_GREY_INTRO", + "effect": { "u_add_var": "talked_to_HEALER_GREY", "type": "dialogue", "context": "healer_grey", "value": "yes" } + }, + { "text": "Wanna get outta here?", "topic": "TALK_SUGGEST_FOLLOW" }, + { "text": "Let's trade items.", "topic": "TALK_HEALER_GREY", "effect": "start_trade" }, + { "text": "Can I do anything for you?", "topic": "TALK_MISSION_OFFER" }, + { "text": "About the mission…", "topic": "TALK_MISSION_INQUIRE", "condition": "has_assigned_mission" }, + { + "text": "About one of those missions…", + "topic": "TALK_MISSION_LIST_ASSIGNED", + "condition": "has_many_assigned_missions" + }, + { "text": "Goodbye.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_HEALER_GREY_INTRO", + "dynamic_line": "Blessed be. May you purge that which opposes the calm.", + "responses": [ + { "text": "Why don't you go somewhere else?", "topic": "TALK_HEALER_GREY_LEAVE" }, + { "text": "Let's trade then.", "effect": "start_trade", "topic": "TALK_HEALER_GREY" }, + { "text": "I'm sorry, I gotta go.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_HEALER_GREY_LEAVE", + "dynamic_line": "I must purge this place before I can move on.", + "responses": [ + { "text": "Wanna get outta here?", "topic": "TALK_SUGGEST_FOLLOW" }, + { "text": "What can you sell me?", "topic": "TALK_HEALER_GREY", "effect": "start_trade" }, + { "text": "I'm sorry, I gotta go.", "topic": "TALK_DONE" } + ] + } +] diff --git a/data/mods/Magiclysm/npc/TALK_OLD_MAGUS.json b/data/mods/Magiclysm/npc/TALK_OLD_MAGUS.json new file mode 100644 index 0000000000000..ddbfb6558f6b6 --- /dev/null +++ b/data/mods/Magiclysm/npc/TALK_OLD_MAGUS.json @@ -0,0 +1,51 @@ +[ + { + "type": "talk_topic", + "id": "TALK_OLD_MAGUS", + "dynamic_line": { + "u_has_var": "talked_to_old_magus", + "type": "dialogue", + "context": "old_magus", + "value": "yes", + "no": "Huh? *mumble mumble* … Who are you?", + "yes": "Oh, you again." + }, + "responses": [ + { + "text": "Hello .", + "topic": "TALK_OLD_MAGUS_INTRO", + "effect": { "u_add_var": "talked_to_old_magus", "type": "dialogue", "context": "old_magus", "value": "yes" } + }, + { "text": "Wanna get outta here?", "topic": "TALK_SUGGEST_FOLLOW" }, + { "text": "Let's trade items.", "topic": "TALK_OLD_MAGUS", "effect": "start_trade" }, + { "text": "Can I do anything for you?", "topic": "TALK_MISSION_OFFER" }, + { "text": "About the mission…", "topic": "TALK_MISSION_INQUIRE", "condition": "has_assigned_mission" }, + { + "text": "About one of those missions…", + "topic": "TALK_MISSION_LIST_ASSIGNED", + "condition": "has_many_assigned_missions" + }, + { "text": "Goodbye.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_OLD_MAGUS_INTRO", + "dynamic_line": "I'm busy, what is it?", + "responses": [ + { "text": "Why don't you go somewhere else?", "topic": "TALK_OLD_MAGUS_LEAVE" }, + { "text": "Let's trade then.", "effect": "start_trade", "topic": "TALK_OLD_MAGUS" }, + { "text": "I'm sorry, I gotta go.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_OLD_MAGUS_LEAVE", + "dynamic_line": "And leave my tower and all my research? I think not.", + "responses": [ + { "text": "Wanna get outta here?", "topic": "TALK_SUGGEST_FOLLOW" }, + { "text": "What can you sell me?", "topic": "TALK_OLD_MAGUS", "effect": "start_trade" }, + { "text": "I'm sorry, I gotta go.", "topic": "TALK_DONE" } + ] + } +] diff --git a/data/mods/Magiclysm/npc/TALK_TECHNO_KID.json b/data/mods/Magiclysm/npc/TALK_TECHNO_KID.json new file mode 100644 index 0000000000000..a7c3bca0822d6 --- /dev/null +++ b/data/mods/Magiclysm/npc/TALK_TECHNO_KID.json @@ -0,0 +1,51 @@ +[ + { + "type": "talk_topic", + "id": "TALK_TECHNO_KID", + "dynamic_line": { + "u_has_var": "talked_to_techno_kid", + "type": "dialogue", + "context": "techno_kid", + "value": "yes", + "no": "Do you seek power as well?", + "yes": "Ah, hello again." + }, + "responses": [ + { + "text": "Hey .", + "topic": "TALK_TECHNO_KID_INTRO", + "effect": { "u_add_var": "talked_to_techno_kid", "type": "dialogue", "context": "techno_kid", "value": "yes" } + }, + { "text": "Wanna get outta here?", "topic": "TALK_SUGGEST_FOLLOW" }, + { "text": "Let's trade items.", "topic": "TALK_TECHNO_KID", "effect": "start_trade" }, + { "text": "Can I do anything for you?", "topic": "TALK_MISSION_OFFER" }, + { "text": "About the mission…", "topic": "TALK_MISSION_INQUIRE", "condition": "has_assigned_mission" }, + { + "text": "About one of those missions…", + "topic": "TALK_MISSION_LIST_ASSIGNED", + "condition": "has_many_assigned_missions" + }, + { "text": "Goodbye.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_TECHNO_KID_INTRO", + "dynamic_line": "Yes, yes… *electrical crackling* Isn't it beautiful?", + "responses": [ + { "text": "Why don't you go somewhere else?", "topic": "TALK_TECHNO_KID_LEAVE" }, + { "text": "Let's trade then.", "effect": "start_trade", "topic": "TALK_TECHNO_KID" }, + { "text": "I'm sorry, I gotta go.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_TECHNO_KID_LEAVE", + "dynamic_line": "I must find more power before I can leave.", + "responses": [ + { "text": "Wanna get outta here?", "topic": "TALK_SUGGEST_FOLLOW" }, + { "text": "What can you sell me?", "topic": "TALK_TECHNO_KID", "effect": "start_trade" }, + { "text": "I'm sorry, I gotta go.", "topic": "TALK_DONE" } + ] + } +] diff --git a/data/mods/Magiclysm/npc/classes.json b/data/mods/Magiclysm/npc/classes.json index ba68ffbfaff8b..ce3354bb46ba5 100644 --- a/data/mods/Magiclysm/npc/classes.json +++ b/data/mods/Magiclysm/npc/classes.json @@ -11,5 +11,69 @@ { "group": "Appearance_demographics" } ], "spells": [ { "id": "lightning_bolt", "level": 6 }, { "id": "windrun", "level": 6 } ] + }, + { + "type": "npc_class", + "id": "NC_OLD_MAGUS", + "name": "Master Magus", + "job_description": "I'm an old Magus. Get off my lawn!", + "worn_override": "NC_OLD_MAGUS_worn", + "traits": [ + { "trait": "MAGUS" }, + { "group": "BG_survival_story_RURAL" }, + { "group": "NPC_starting_traits" }, + { "group": "Appearance_demographics" } + ], + "bonus_str": { "rng": [ -4, -1 ] }, + "bonus_dex": { "rng": [ -2, 0 ] }, + "bonus_int": { "rng": [ 2, 5 ] }, + "bonus_per": { "rng": [ -2, -1 ] }, + "skills": [ + { "skill": "ALL", "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "rng": [ 0, -2 ] } ] } ] } }, + { "skill": "spellcraft", "bonus": { "rng": [ 4, 6 ] } } + ], + "spells": [ { "id": "magic_missile", "level": 18 }, { "id": "gravity_well", "level": 10 }, { "id": "foxs_cunning", "level": 7 } ] + }, + { + "type": "npc_class", + "id": "NC_TECHNO_KID", + "name": "Techno-student", + "job_description": "I'm searching for more power.", + "traits": [ + { "trait": "TECHNOMANCER" }, + { "group": "BG_survival_story_TEENAGER" }, + { "group": "NPC_starting_traits" }, + { "group": "Appearance_demographics" } + ], + "bonus_str": { "rng": [ -2, 1 ] }, + "bonus_dex": { "rng": [ -1, 1 ] }, + "bonus_int": { "rng": [ 0, 3 ] }, + "bonus_per": { "rng": [ -1, 1 ] }, + "skills": [ + { "skill": "ALL", "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "rng": [ -1, -4 ] } ] } ] } }, + { "skill": "spellcraft", "bonus": { "rng": [ 0, 2 ] } } + ], + "spells": [ { "id": "quantum_tunnel_lesser", "level": 2 }, { "id": "animated_blade", "level": 2 } ] + }, + { + "type": "npc_class", + "id": "NC_BIO_PRIEST", + "name": "Healer", + "job_description": "I will purge this land of its curse.", + "traits": [ + { "trait": "BIOMANCER" }, + { "group": "BG_survival_story_UNIVERSAL" }, + { "group": "NPC_starting_traits" }, + { "group": "Appearance_demographics" } + ], + "bonus_str": { "rng": [ -2, 2 ] }, + "bonus_dex": { "rng": [ -2, 2 ] }, + "bonus_int": { "rng": [ 0, 4 ] }, + "bonus_per": { "rng": [ 0, 3 ] }, + "skills": [ + { "skill": "ALL", "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "rng": [ 0, -3 ] } ] } ] } }, + { "skill": "spellcraft", "bonus": { "rng": [ 1, 3 ] } } + ], + "spells": [ { "id": "light_healing", "level": 3 }, { "id": "bio_bonespear", "level": 6 } ] } ] diff --git a/data/mods/Magiclysm/npc/factions.json b/data/mods/Magiclysm/npc/factions.json new file mode 100644 index 0000000000000..397dbe5f64a60 --- /dev/null +++ b/data/mods/Magiclysm/npc/factions.json @@ -0,0 +1,123 @@ +[ + { + "type": "faction", + "id": "wizards_ancient", + "name": "The Ancient Ones", + "likes_u": 0, + "respects_u": 0, + "known_by_u": false, + "size": 5, + "power": 100, + "food_supply": 115200, + "wealth": 100000, + "currency": "embued_coin", + "relations": { + "lobby_beggars": { + "kill on sight": false, + "watch your back": false, + "share my stuff": true, + "guard your stuff": true, + "lets you in": false, + "defends your space": false, + "knows your voice": true + }, + "free_merchants": { + "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": 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": true + }, + "no_faction": { + "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": true + }, + "wasteland_scavengers": { + "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": true + } + }, + "description": "The spellcrafters of old. Hidden from the world until the cataclysm, they have their own agenda and care little for you or yours." + }, + { + "type": "faction", + "id": "healers_grey", + "name": "The Grey Flame", + "likes_u": 10, + "respects_u": 10, + "known_by_u": false, + "size": 50, + "power": 50, + "food_supply": 11520, + "wealth": 1000, + "relations": { + "lobby_beggars": { + "kill on sight": false, + "watch your back": false, + "share my stuff": true, + "guard your stuff": true, + "lets you in": false, + "defends your space": false, + "knows your voice": true + }, + "free_merchants": { + "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": 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": true + }, + "no_faction": { + "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": true + }, + "wasteland_scavengers": { + "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": true + } + }, + "description": "A collection of those cursed by the cataclysm. They have sworn to rid this world of its curse and will stop at nothing to accomplish their task." + } +] diff --git a/data/mods/Magiclysm/npc/items_worn.json b/data/mods/Magiclysm/npc/items_worn.json new file mode 100644 index 0000000000000..2304f92949ef5 --- /dev/null +++ b/data/mods/Magiclysm/npc/items_worn.json @@ -0,0 +1,15 @@ +[ + { + "type": "item_group", + "id": "NC_OLD_MAGUS_worn", + "subtype": "collection", + "items": [ + { "item": "socks" }, + { "item": "tunic" }, + { "item": "long_underpants" }, + { "item": "undershirt" }, + { "item": "slippers" }, + { "item": "robe" } + ] + } +] diff --git a/data/mods/Magiclysm/npc/missiondef.json b/data/mods/Magiclysm/npc/missiondef.json new file mode 100644 index 0000000000000..4519380e12a09 --- /dev/null +++ b/data/mods/Magiclysm/npc/missiondef.json @@ -0,0 +1,100 @@ +[ + { + "id": "MISSION_GET_MAGIC_BOOK", + "type": "mission_definition", + "name": "Retrieve Magic Book", + "goal": "MGOAL_FIND_ITEM", + "difficulty": 4, + "value": 250000, + "item": "magus_spellbook", + "start": { + "effect": [ { "npc_remove_item_with": "magus_spellbook" }, "assign_guard", { "clear_npc_rule": "investigate_noises" } ] + }, + "origins": [ "ORIGIN_SECONDARY" ], + "dialogue": { + "describe": "Where did I put that blasted…", + "offer": "I seem to have misplaced my book, The Tome of The Battle Mage. That worthless apprentice probably stole it. Bring it to me.", + "accepted": "…What? Oh you're still here. Go find my book.", + "rejected": "Just as useless as that apprentice…", + "advice": "You want me to do your job for you? Bah. That apprentice said something about wanting to look around town, you might start there. Oh, and it's called The Tome of The Battle Mage, you can read at least the title, can't you?", + "inquire": "Where's my book?", + "success": "Finally. Took you long enough.", + "success_lie": "Nonsense! Useless! Waste of my time!", + "failure": "Ugh, why am I cursed with useless people?" + } + }, + { + "id": "MISSION_GET_POWER_CBM", + "type": "mission_definition", + "name": "Find Power Storage CBM", + "goal": "MGOAL_FIND_ITEM", + "difficulty": 2, + "value": 150000, + "item": "bio_power_storage", + "start": { + "effect": [ { "npc_remove_item_with": "bio_power_storage" }, "assign_guard", { "clear_npc_rule": "investigate_noises" } ] + }, + "end": { "effect": [ { "u_buy_item": "techno_fundamentals", "count": 1 } ] }, + "origins": [ "ORIGIN_SECONDARY" ], + "dialogue": { + "describe": "More power… moar power… MOAR POWAA!", + "offer": "I need more power. Find me more power storage and I'll give you this book.", + "accepted": "I don't care where it comes from so long as it's clean.", + "rejected": "You want more power too, don't you?", + "advice": "Electronic Stores might have what I need. Or you could just cut it out of something.", + "inquire": "Find anything?", + "success": "Perfect. More power… power…", + "success_lie": "I don't understand.", + "failure": "I must find more power, this setback is inconvenient." + } + }, + { + "id": "MISSION_PURGE_50_Z", + "type": "mission_definition", + "name": "Kill 50 Zombies", + "goal": "MGOAL_KILL_MONSTER_SPEC", + "monster_species": "ZOMBIE", + "monster_kill_goal": 50, + "difficulty": 5, + "value": 250000, + "start": { "effect": "follow_only" }, + "end": { "effect": "stop_following" }, + "origins": [ "ORIGIN_SECONDARY" ], + "followup": "MISSION_PURGE_150_Z", + "dialogue": { + "describe": "Will you answer the call?", + "offer": "This world has fallen to chaos and death. Remove 50 of the cursed from this world; assist me in purging this curse and you shall be rewarded.", + "accepted": "Blessed be. I shall observe your efforts and judge you as one of the many or one of the few.", + "rejected": "You will not help purge this curse? Perhaps you are a part of the curse…", + "advice": "The awakened congregate in towns and cities, the closer to the center the more you will find.", + "inquire": "Blessed be.", + "success": "Blessed be. You are one of the few. We shall do great works together.", + "success_lie": "Deception is the realm of the cursed. You disappoint me.", + "failure": "Was the curse too strong for you?" + } + }, + { + "id": "MISSION_PURGE_150_Z", + "type": "mission_definition", + "name": "Kill 150 Zombies", + "goal": "MGOAL_KILL_MONSTER_SPEC", + "monster_species": "ZOMBIE", + "monster_kill_goal": 150, + "difficulty": 7, + "value": 250000, + "start": { "effect": "follow_only" }, + "end": { "effect": "stop_following" }, + "origins": [ "ORIGIN_SECONDARY" ], + "dialogue": { + "describe": "You have proven you are one of the few, will you stand with the few again?", + "offer": "We must continue the purge. Remove 150 more of the cursed from this land and you shall be blessed with greatness.", + "accepted": "Blessed be. You are a true testament to the few.", + "rejected": "I see. Perhaps you will find your way back to us one day.", + "advice": "The awakened stir in even the darkest of corners. Seek them out and destroy them.", + "inquire": "Blessed be.", + "success": "Blessed be. You are a valuable asset to our cause. Perhaps you may even be our salvation.", + "success_lie": "You have come so far. Only to fall.", + "failure": "The curse of this land infects that which does not seek to purge." + } + } +] diff --git a/data/mods/Magiclysm/npc/npc.json b/data/mods/Magiclysm/npc/npc.json new file mode 100644 index 0000000000000..a1acec955c062 --- /dev/null +++ b/data/mods/Magiclysm/npc/npc.json @@ -0,0 +1,38 @@ +[ + { + "type": "npc", + "id": "magus_old", + "//": "old magus in the wizard tower.", + "name_suffix": "magus", + "class": "NC_OLD_MAGUS", + "attitude": 0, + "mission": 7, + "mission_offered": "MISSION_GET_MAGIC_BOOK", + "chat": "TALK_OLD_MAGUS", + "faction": "wizards_ancient" + }, + { + "type": "npc", + "id": "techno_kid", + "//": "possibly crazy techno kid", + "name_suffix": "technologist", + "class": "NC_TECHNO_KID", + "attitude": 0, + "mission": 7, + "mission_offered": "MISSION_GET_POWER_CBM", + "chat": "TALK_TECHNO_KID", + "faction": "no_faction" + }, + { + "type": "npc", + "id": "healer_priest", + "//": "a priest of the grey flame", + "name_suffix": "healer", + "class": "NC_BIO_PRIEST", + "attitude": 0, + "mission": 7, + "mission_offered": "MISSION_PURGE_50_Z", + "chat": "TALK_HEALER_GREY", + "faction": "healers_grey" + } +] diff --git a/data/mods/Magiclysm/worldgen/lake_retreat.json b/data/mods/Magiclysm/worldgen/lake_retreat.json index 8d44758feee39..f00ce6f524510 100644 --- a/data/mods/Magiclysm/worldgen/lake_retreat.json +++ b/data/mods/Magiclysm/worldgen/lake_retreat.json @@ -312,7 +312,8 @@ "$": [ "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 } ] } + "items": { "h": [ { "item": "enchanted_small_items", "chance": 20 }, { "item": "magic_shop_books", "chance": 30 } ] }, + "place_npcs": [ { "class": "magus_old", "x": 10, "y": 12 } ] } }, { diff --git a/data/mods/Magiclysm/worldgen/magic_shop.json b/data/mods/Magiclysm/worldgen/magic_shop.json index 3f5d9a28af96e..657d5dbe76da0 100644 --- a/data/mods/Magiclysm/worldgen/magic_shop.json +++ b/data/mods/Magiclysm/worldgen/magic_shop.json @@ -193,7 +193,8 @@ "O": { "item": "oven", "chance": 20, "repeat": [ 1, 2 ] }, "K": { "item": "allclothes", "chance": 20, "repeat": [ 1, 2 ] }, "B": { "item": "magic_shop_books", "chance": 20, "repeat": [ 1, 2 ] } - } + }, + "place_npcs": [ { "class": "healer_priest", "x": 10, "y": 10 } ] } }, {