Skip to content

Commit

Permalink
[MoM] Add Transporter beacon and remote, using matrix technology for …
Browse files Browse the repository at this point in the history
…long-distance travel (CleverRaven#70133)

* Initial commit

* Transport EoCs

* Finish EoC, add beacon item

* Finishing touches

* Change recipe to electronics, add to itemgroups

* Require electrical circuits proficiency

* Double spaces
  • Loading branch information
Standing-Storm authored Dec 12, 2023
1 parent f0a1245 commit 3e765e1
Show file tree
Hide file tree
Showing 12 changed files with 444 additions and 6 deletions.
107 changes: 107 additions & 0 deletions data/mods/MindOverMatter/effectoncondition/eoc_items.json
Original file line number Diff line number Diff line change
Expand Up @@ -125,5 +125,112 @@
"condition": { "u_has_worn_with_flag": "PSYSHIELD_PARTIAL" },
"effect": [ { "u_add_effect": "effect_psyshield_protection", "duration": "8 minutes" } ],
"false_effect": [ { "u_lose_effect": "effect_psyshield_protection" } ]
},
{
"type": "effect_on_condition",
"id": "EOC_PSI_TRANSPORTER_REMOTE_TELEPORT",
"condition": { "u_has_items": { "item": "psionic_transporter_remote_on", "count": 1 } },
"effect": [
{ "queue_eocs": "EOC_PSI_TRANSPORTER_REMOTE_TELEPORT_BEEP", "time_in_future": [ "15 seconds", "45 seconds" ] },
{
"queue_eocs": "EOC_PSI_TRANSPORTER_REMOTE_TELEPORT_TRANSPORT",
"time_in_future": [ "4 minutes", "7 minutes" ]
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_PSI_TRANSPORTER_REMOTE_TELEPORT_BEEP",
"condition": { "u_has_items": { "item": "psionic_transporter_remote_on", "count": 1 } },
"effect": [
{ "u_message": "The transporter remote emits a small beep.", "type": "neutral" },
{ "u_make_sound": "a small beep", "volume": 2, "type": "music" },
{ "queue_eocs": "EOC_PSI_TRANSPORTER_REMOTE_TELEPORT_BEEP", "time_in_future": [ "15 seconds", "45 seconds" ] }
]
},
{
"type": "effect_on_condition",
"id": "EOC_PSI_TRANSPORTER_REMOTE_TELEPORT_TRANSPORT",
"condition": { "u_has_items": { "item": "psionic_transporter_remote_on", "count": 1 } },
"effect": {
"run_eoc_selector": [ "EOC_PSI_TRANSPORTER_REMOTE_TELEPORT_TRANSPORT_YES", "EOC_PSI_TRANSPORTER_REMOTE_TELEPORT_TRANSPORT_NO" ],
"names": [ "Confirm the Coordinates", "Turn the remove off" ],
"keys": [ "1", "2" ],
"descriptions": [ "Activate the remote and transport yourself to your destination.", "Turn the remote off for now." ]
}
},
{
"type": "effect_on_condition",
"id": "EOC_PSI_TRANSPORTER_REMOTE_TELEPORT_TRANSPORT_YES",
"condition": { "u_has_items": { "item": "psionic_transporter_remote_on", "count": 1 } },
"effect": [
{ "u_consume_item": "psionic_transporter_remote_on" },
{ "u_spawn_item": "psionic_transporter_remote_broken", "count": 1, "suppress_message": true },
{
"run_eocs": [
{
"id": "EOC_PSI_TRANSPORTER_REMOTE_TELEPORT_TRANSPORT_YES_2",
"condition": { "u_has_effect": "psi_nether_attention" },
"effect": [
{ "u_cast_spell": { "id": "pure_translocate_power", "hit_self": true } },
{
"u_message": "There is a long moment of darkness and terrible cold that seems like it will freeze your heart, all the while filled with the sensation of watchful eyes, and then you are somewhere else. When you arrive, you can't help but glance over your shoulder.",
"type": "neutral"
},
{
"run_eocs": [
{
"id": "EOC_PSI_TRANSPORTER_REMOTE_TELEPORT_TRANSPORT_YES_3",
"condition": {
"and": [
{ "x_in_y_chance": { "x": { "math": [ "u_effect_intensity('psi_nether_attention') * 2" ] }, "y": 100 } },
{ "not": { "u_has_effect": "effect_telepathic_psi_armor" } },
{ "not": { "u_has_trait": "TELEPATHICDAMPENER_SHIELD" } }
]
},
"effect": [
{
"u_message": "And as you look around, you notice you're not the only one who stepped out of the Nether.",
"type": "bad"
},
{
"u_spawn_monster": "GROUP_NETHER_BREACH",
"group": true,
"real_count": [ 1, 3 ],
"min_radius": 5,
"max_radius": 25
}
]
}
]
}
],
"false_effect": [
{ "u_cast_spell": { "id": "pure_translocate_power", "hit_self": true } },
{
"u_message": "There is a long moment of darkness and terrible cold that seems like it will freeze your heart, and then you are somewhere else.",
"type": "neutral"
}
]
}
]
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_PSI_TRANSPORTER_REMOTE_TELEPORT_TRANSPORT_NO",
"condition": { "u_has_items": { "item": "psionic_transporter_remote_on", "count": 1 } },
"effect": [
{
"u_message": "Instead of confirming the destination, you press the button and turn the transporter remote off.",
"type": "neutral"
},
{
"u_run_inv_eocs": "random",
"search_data": [ { "id": "psionic_transporter_remote_on" } ],
"true_eocs": [ { "id": "EOC_PSI_TRANSPORTER_REMOTE_TELEPORT_TRANSPORT_NO_2", "effect": { "u_activate": "transform" } } ]
}
]
}
]
34 changes: 34 additions & 0 deletions data/mods/MindOverMatter/furniture_and_terrain/furniture.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,38 @@
[
{
"type": "furniture",
"id": "f_transporter_beacon",
"name": "Transporter Beacon",
"symbol": "A",
"looks_like": "tr_telepad",
"description": "A transporter beacon, placed on the ground with a stable set of coordinates. (e)xamine to finish the setup.",
"color": "blue",
"required_str": -1,
"move_cost_mod": 0,
"flags": [ "TRANSLOCATOR", "MOUNTABLE", "TRANSPARENT", "ALLOW_FIELD_EFFECT", "EASY_DECONSTRUCT" ],
"examine_action": "translocator",
"deconstruct": { "items": [ { "item": "psionic_transporter_beacon" } ] },
"bash": {
"str_min": 8,
"str_max": 20,
"sound": "crunch!",
"sound_fail": "whack!",
"items": [
{ "item": "processor", "prob": 25 },
{ "item": "RAM", "count": [ 0, 2 ], "prob": 50 },
{ "item": "cable", "charges": [ 1, 2 ], "prob": 50 },
{ "item": "matrix_shard", "count": [ 1, 5 ] },
{ "item": "small_lcd_screen", "prob": 25 },
{ "item": "e_scrap", "count": [ 1, 4 ], "prob": 50 },
{ "item": "circuit", "count": [ 0, 2 ], "prob": 50 },
{ "item": "power_supply", "prob": 25 },
{ "item": "amplifier", "prob": 25 },
{ "item": "plastic_chunk", "count": [ 1, 2 ], "prob": 50 },
{ "item": "scrap", "count": [ 2, 6 ], "prob": 50 },
{ "item": "matrix_crystal_drained_dust", "count": [ 1, 5 ] }
]
}
},
{
"type": "furniture",
"id": "f_telepathic_amplifier",
Expand Down
12 changes: 10 additions & 2 deletions data/mods/MindOverMatter/itemgroups/matrix_technology_labs.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@
{ "group": "psionic_recipes_tools", "prob": 5 },
{ "group": "psionic_recipes_medicine", "prob": 2 },
{ "group": "psionic_recipes_powers", "prob": 2 },
{ "group": "psionic_recipes_advanced", "prob": 1 }
{ "group": "psionic_recipes_advanced", "prob": 1 },
{ "group": "dist_matrix_translocation_items", "prob": 2 }
]
},
{
Expand Down Expand Up @@ -103,6 +104,12 @@
"id": "collection_force_field_and_note",
"items": [ { "item": "force_field_generator", "prob": 1 }, { "item": "lab_file_OS647_P_item", "prob": 1 } ]
},
{
"type": "item_group",
"subtype": "distribution",
"id": "dist_matrix_translocation_items",
"items": [ { "item": "psionic_transporter_remote", "prob": 5 }, { "item": "psionic_transporter_beacon", "prob": 1 } ]
},
{
"type": "item_group",
"subtype": "distribution",
Expand Down Expand Up @@ -151,7 +158,8 @@
{ "item": "mortar_pestle", "prob": 20 },
{ "item": "blindfold", "prob": 10 },
{ "item": "syringe", "prob": 12 },
{ "item": "matrix_crystal_drained", "prob": 15 }
{ "item": "matrix_crystal_drained", "prob": 15 },
{ "group": "dist_matrix_translocation_items", "prob": 2 }
]
},
{
Expand Down
3 changes: 2 additions & 1 deletion data/mods/MindOverMatter/itemgroups/recipes.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@
"id": "psionic_recipes_advanced",
"items": [
[ "phavian_report_psionic_drain", 15 ],
[ "schematics_noetic_resilience", 5 ],
[ "schematics_noetic_resilience", 8 ],
[ "schematics_instability_remover", 5 ],
[ "schematics_transporters", 3 ],
[ "schematics_psionic_purifier", 1 ]
]
},
Expand Down
14 changes: 14 additions & 0 deletions data/mods/MindOverMatter/items/schematics.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,20 @@
"symbol": "ç",
"color": "red"
},
{
"id": "schematics_transporters",
"type": "BOOK",
"name": { "str_sp": "Netherum transporter schematics" },
"description": "This is a series of design documents for building a transporter beacon and connected transporter remote, which you can use to teleport yourself through the Nether to the beacon. It's labeled \"for immersion use only\", but that part has a line through it and \"IT WORKS!\" written next to it in pen. There's another note in red that states that on very rare occasions, \"entities\" can also use the beacon to exit the Nether, and also that as of two weeks before the Cataclysm, the designers have not solved the energy surge problems that make each remote burn out after use.",
"copy-from": "schematics_generic",
"skill": "fabrication",
"required_level": 7,
"max_level": 7,
"intelligence": 10,
"time": "45 m",
"symbol": "ç",
"color": "magenta"
},
{
"id": "schematics_everglow_lamp",
"type": "BOOK",
Expand Down
111 changes: 111 additions & 0 deletions data/mods/MindOverMatter/items/tools/travel.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
[
{
"id": "psionic_transporter_beacon",
"type": "TOOL",
"name": { "str": "transporter beacon" },
"description": "A pyramidal object with a matrix crystal on top, surrounded by several chunks of the otherworldly boulders you've found dotting the landscape. You could place it somewhere and after you've configured it, use a transporter remote to teleport yourself to its location.",
"weight": "2500 g",
"volume": "2000 ml",
"longest_side": "40 cm",
"material": [
{ "type": "plastic", "portion": 60 },
{ "type": "steel", "portion": 5 },
{ "type": "alien_liquid", "portion": 5 },
{ "type": "nether_crystal", "portion": 15 }
],
"symbol": "A",
"color": "blue"
},
{
"id": "psionic_transporter_remote",
"type": "TOOL",
"name": { "str": "transporter remote" },
"description": "A blocky item, like an old feature cellphone crossed with a radio. A matrix channeling array is stick out of the side like an antenna. There is a small screen on the front, currently off.",
"weight": "500 g",
"volume": "350 ml",
"longest_side": "15 cm",
"material": [
{ "type": "plastic", "portion": 75 },
{ "type": "steel", "portion": 5 },
{ "type": "alien_liquid", "portion": 5 },
{ "type": "nether_crystal", "portion": 5 }
],
"price": 9000,
"price_postapoc": 100,
"symbol": ";",
"color": "blue",
"ammo": [ "battery" ],
"charges_per_use": 1,
"use_action": {
"target": "psionic_transporter_remote_on",
"msg": "You turn the transporter remote on and the screen begins displaying coordinates.",
"active": true,
"need_charges": 1,
"need_charges_msg": "The transporter remote's batteries need more charge.",
"type": "transform"
},
"flags": [ "WATER_BREAK", "ELECTRONIC" ],
"pocket_data": [
{
"pocket_type": "MAGAZINE_WELL",
"rigid": true,
"flag_restriction": [ "BATTERY_LIGHT", "BATTERY_ULTRA_LIGHT" ],
"default_magazine": "light_plus_battery_cell"
}
]
},
{
"id": "psionic_transporter_remote_on",
"type": "TOOL",
"name": { "str_sp": "transporter remote (searching)" },
"description": "A blocky item, like an old feature cellphone crossed with a radio. A matrix channeling array is sticking out of the side like an antenna. There is a small screen on the front, currently running what looks like a series of mathematical calculations.",
"weight": "500 g",
"volume": "350 ml",
"longest_side": "15 cm",
"material": [ { "type": "plastic", "portion": 85 }, { "type": "steel", "portion": 10 }, { "type": "nether_crystal", "portion": 5 } ],
"price": 9000,
"price_postapoc": 100,
"symbol": ";",
"color": "blue",
"ammo": [ "battery" ],
"charges_per_use": 1,
"use_action": [
{
"ammo_scale": 0,
"target": "psionic_transporter_remote",
"msg": "You turn the transporter remote off.",
"menu_text": "Turn off",
"type": "transform"
},
{
"type": "effect_on_conditions",
"menu_text": "Activate the remote",
"description": "Begin the transportation process. It will take several minutes for the remote to zero in on the beacon location.",
"//need_charges_msg": "The transporter remote's charge is too low.",
"effect_on_conditions": [ "EOC_PSI_TRANSPORTER_REMOTE_TELEPORT" ]
}
],
"flags": [ "TRADER_AVOID", "WATER_BREAK", "ELECTRONIC" ],
"pocket_data": [
{
"pocket_type": "MAGAZINE_WELL",
"rigid": true,
"flag_restriction": [ "BATTERY_LIGHT", "BATTERY_ULTRA_LIGHT" ],
"default_magazine": "light_plus_battery_cell"
}
],
"copy-from": "psionic_transporter_remote",
"power_draw": "25000 mW",
"revert_to": "psionic_transporter_remote"
},
{
"id": "psionic_transporter_remote_broken",
"type": "TOOL",
"name": { "str_sp": "transporter remote (burned out)" },
"description": "A blocky item, like an old feature cellphone crossed with a radio. A matrix channeling array was sticking out of the side like an antenna, but it's now cracked and probably useless. There is a small screen on the front, obviously burned out. Parts of the plastic casing are warped as though the plastic had frozen and cracked.",
"copy-from": "psionic_transporter_remote",
"use_action": [ ],
"pocket_data": [ ],
"flags": [ "TRADER_AVOID" ]
}
]
7 changes: 5 additions & 2 deletions data/mods/MindOverMatter/mapgen/microlab_rooms.json
Original file line number Diff line number Diff line change
Expand Up @@ -121,14 +121,17 @@
"furniture": { "C": "f_filing_cabinet", "Ȼ": "f_filing_cabinet", "L": "f_lab_bench", "S": "f_stool", "ŧ": "f_table" },
"item": {
"C": { "item": "lab_file_teleportation_item", "chance": 5 },
"Ȼ": { "item": "lab_file_teleportation_item", "chance": 5 },
"Ȼ": [ { "item": "lab_file_teleportation_item", "chance": 5 }, { "item": "schematics_transporters", "chance": 30 } ],
"Q": { "item": "matrix_crystal_teleportation", "chance": 15 },
"R": { "item": "lab_file_teleportation_item", "chance": 15 },
"t": { "item": "lab_file_teleportation_item", "chance": 2 }
},
"items": {
"C": { "item": "SUS_office_filing_cabinet", "chance": 80 },
"Ȼ": { "item": "SUS_office_filing_cabinet", "chance": 80 },
"Ȼ": [
{ "item": "SUS_office_filing_cabinet", "chance": 80 },
{ "item": "dist_matrix_translocation_items", "chance": 50, "repeat": [ 1, 3 ] }
],
"d": { "item": "SUS_office_desk", "chance": 50 },
"L": [
{ "item": "psi_lab_no_recipes", "chance": 50, "repeat": [ 1, 3 ] },
Expand Down
12 changes: 12 additions & 0 deletions data/mods/MindOverMatter/powers/item_spells.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,17 @@
"min_range": 0,
"min_aoe": 6,
"max_aoe": 9
},
{
"id": "pure_translocate_power",
"type": "SPELL",
"name": "Item Translocate",
"description": "A translocate power for items. It's a bug if you have it directly.",
"message": "",
"teachable": false,
"flags": [ "PSIONIC", "CONCENTRATE", "SILENT", "NO_HANDS", "NO_LEGS" ],
"valid_targets": [ "self" ],
"effect": "translocate",
"shape": "blast"
}
]
17 changes: 17 additions & 0 deletions data/mods/MindOverMatter/recipes/construction.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,21 @@
[
{
"type": "construction",
"id": "place_transport_beacon",
"group": "place_transporter_beacon",
"category": "OTHER",
"required_skills": [ [ "electronics", 2 ] ],
"time": "15 m",
"components": [ [ [ "psionic_transporter_beacon", 1 ] ] ],
"pre_special": "check_empty",
"post_terrain": "f_transporter_beacon",
"activity_level": "NO_EXERCISE"
},
{
"type": "construction_group",
"id": "place_transporter_beacon",
"name": "Place Transporter Beacon"
},
{
"type": "construction_group",
"id": "place_standing_pyrokinetic_lamp",
Expand Down
2 changes: 1 addition & 1 deletion data/mods/MindOverMatter/recipes/tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"tools": [ [ [ "angle_grinder", 50 ] ] ],
"proficiencies": [ { "proficiency": "prof_metalworking" }, { "proficiency": "prof_psionic_basic", "required": false } ],
"using": [ [ "soldering_standard", 15 ], [ "steel_tiny", 5 ] ],
"components": [ [ [ "matrix_crystal_drained", 4 ] ] ],
"components": [ [ [ "matrix_crystal_drained", 1 ] ] ],
"flags": [ "SECRET" ]
},
{
Expand Down
Loading

0 comments on commit 3e765e1

Please sign in to comment.