diff --git a/data/json/effects_on_condition/misc_effect_on_condition.json b/data/json/effects_on_condition/misc_effect_on_condition.json index 66440e41c1d60..b56f83c2598f3 100644 --- a/data/json/effects_on_condition/misc_effect_on_condition.json +++ b/data/json/effects_on_condition/misc_effect_on_condition.json @@ -123,6 +123,33 @@ { "u_message": "The hostile trifacet violently unfolds just clear of your hand!", "type": "bad" } ] }, + { + "type": "effect_on_condition", + "id": "yrax_triakis_activation", + "effect": [ + { "u_spawn_monster": "mon_yrax_triakis", "real_count": 1, "min_radius": 1, "max_radius": 2 }, + { "u_message": "The hostile triakis violently unfolds just clear of your hand!", "type": "bad" } + ] + }, + { + "type": "effect_on_condition", + "id": "yrax_golden_monolith_activation", + "effect": [ + { "u_spawn_monster": "mon_golden_monolith", "real_count": 1, "min_radius": 1, "max_radius": 2 }, + { + "u_message": "You notice a brief lull in the ambient noise around you, but its otherwise impossible to know if you allowed something to happen.", + "type": "bad" + } + ] + }, + { + "type": "effect_on_condition", + "id": "yrax_delta_activation", + "effect": [ + { "u_spawn_monster": "mon_yrax_delta", "real_count": 1, "min_radius": 1, "max_radius": 2 }, + { "u_message": "The hostile delta starts flying just as you release it!", "type": "bad" } + ] + }, { "type": "effect_on_condition", "id": "add_effect", diff --git a/data/json/items/book/electronics.json b/data/json/items/book/electronics.json index 0c432b16ef204..62a5fed683f28 100644 --- a/data/json/items/book/electronics.json +++ b/data/json/items/book/electronics.json @@ -262,7 +262,7 @@ "melee_damage": { "bash": 8 } }, { - "id": "robofac_yrax_deactivation_manual", + "id": "robofac_yrax_trifacet_deactivation_manual", "type": "BOOK", "category": "manuals", "name": { "str_sp": "trifacet handling procedures" }, diff --git a/data/json/items/corpses/inactive_bots.json b/data/json/items/corpses/inactive_bots.json index 80b36e9d70a21..6eaadc3306326 100644 --- a/data/json/items/corpses/inactive_bots.json +++ b/data/json/items/corpses/inactive_bots.json @@ -754,6 +754,65 @@ "flags": [ "SINGLE_USE" ], "melee_damage": { "bash": 6, "cut": 6 } }, + { + "type": "TOOL", + "id": "bot_yrax_triakis", + "symbol": ",", + "color": "light_gray", + "name": { "str_sp": "inactive triakis" }, + "category": "other", + "description": "You know this artfully craved piece of gold hued ceramics to be a robot of some kind, but it seems impossible to interact with it.", + "price": "10 USD", + "material": [ "steel", "yrax_quartz" ], + "volume": "119 L", + "weight": "221 kg", + "to_hit": { "grip": "bad", "length": "hand", "surface": "any", "balance": "clumsy" }, + "flags": [ "TRADER_AVOID", "NO_REPAIR", "SINGLE_USE" ], + "use_action": { "type": "effect_on_conditions", "menu_text": "Activate", "effect_on_conditions": [ "yrax_triakis_activation" ] }, + "melee_damage": { "bash": 20, "cut": 15 } + }, + { + "id": "bot_golden_monolith", + "type": "TOOL", + "symbol": "I", + "name": { "str": "inactive golden monolith" }, + "description": "A large golden monolith. Carefully carved asymmetric edges betray its artificial origin.", + "volume": "930 L", + "//": "A lot of gold in this bad boy.", + "weight": "8282 kg", + "price": "50 USD", + "price_postapoc": "50 USD", + "material": [ "yrax_quartz", "gold" ], + "color": "yellow", + "flags": [ "TRADER_AVOID", "NO_REPAIR", "SINGLE_USE" ], + "melee_damage": { "bash": 1000 }, + "use_action": { + "type": "effect_on_conditions", + "menu_text": "Activate", + "effect_on_conditions": [ "yrax_golden_monolith_activation" ] + } + }, + { + "id": "bot_yrax_delta", + "type": "TOOL", + "symbol": ",", + "name": { "str": "inactive delta" }, + "description": "A small piece of inscrutable alloy shaped like an arrow's broadhead. It looks like a robot boomerang.", + "weight": "374 g", + "volume": "500 ml", + "longest_side": "20 cm", + "price": "50 USD", + "price_postapoc": "50 USD", + "to_hit": { "grip": "none", "length": "hand", "surface": "point", "balance": "good" }, + "melee_damage": { "stab": 23 }, + "weapon_category": [ "SHIVS" ], + "material": [ "yrax_quartz", "gold" ], + "color": "yellow", + "techniques": [ "RAPID" ], + "qualities": [ [ "CUT", 1 ], [ "BUTCHER", 8 ] ], + "flags": [ "TRADER_AVOID", "NO_REPAIR", "ALLOWS_BODY_BLOCK", "SHEATH_KNIFE", "SINGLE_USE" ], + "use_action": { "type": "effect_on_conditions", "menu_text": "Activate", "effect_on_conditions": [ "yrax_delta_activation" ] } + }, { "id": "bot_lab_security_drone_GR", "type": "TOOL", diff --git a/data/json/items/nether.json b/data/json/items/nether.json index 2fa1d950014ae..75788392ba802 100644 --- a/data/json/items/nether.json +++ b/data/json/items/nether.json @@ -12,7 +12,7 @@ "volume": "250 ml", "weight": "10 g", "symbol": "@", - "description": "This defies easy description, it feels solid but the surface is yielding. Looking at it you have a strange desire to call it a door.", + "description": "This defies easy description, it feels solid but the surface is yielding. Looking at it you have a strange desire to call it a shelter.", "flags": [ "SINGLE_USE" ] }, { diff --git a/data/json/monsters/yrax.json b/data/json/monsters/yrax.json index dd0a26e224097..26bb8b0579ce2 100644 --- a/data/json/monsters/yrax.json +++ b/data/json/monsters/yrax.json @@ -368,6 +368,7 @@ "description": "A kite shaped blade of metal, darting through air and foes by indiscernible means.", "default_faction": "yrax", "weight": "374 g", + "species": [ "ROBOT" ], "volume": "500 ml", "vision_day": 50, "vision_night": 20, diff --git a/data/json/npcs/robofac/robofac_intercom/robofac_intercom.json b/data/json/npcs/robofac/robofac_intercom/robofac_intercom.json index 41084d848effb..463647c1d0440 100644 --- a/data/json/npcs/robofac/robofac_intercom/robofac_intercom.json +++ b/data/json/npcs/robofac/robofac_intercom/robofac_intercom.json @@ -319,6 +319,29 @@ }, "topic": "TALK_ROBOFAC_INTERCOM_SELL_PORTAL_STORM_DATA" }, + { + "text": "I have found more of those golden robots, can you make anything of them yet?", + "condition": { + "and": [ + { + "or": [ + { "u_has_items": { "item": "broken_yrax_trifacet", "count": 1 } }, + { "u_has_items": { "item": "broken_yrax_triakis", "count": 1 } }, + { "u_has_items": { "item": "broken_golden_monolith", "count": 1 } }, + { "u_has_items": { "item": "broken_yrax_delta", "count": 1 } }, + { "u_has_items": { "item": "broken_yrax_quadraphract_leg", "count": 1 } }, + { "u_has_items": { "item": "broken_yrax_quadraphract", "count": 1 } }, + { "u_has_items": { "item": "bot_yrax_trifacet", "count": 1 } }, + { "u_has_items": { "item": "bot_yrax_triakis", "count": 1 } }, + { "u_has_items": { "item": "bot_golden_monolith", "count": 1 } }, + { "u_has_items": { "item": "bot_yrax_delta", "count": 1 } } + ] + }, + { "compare_string": [ "yes", { "u_val": "dialogue_intercom_completed_robofac_intercom_robot_sm_1" } ] } + ] + }, + "topic": "TALK_ROBOFAC_INTERCOM_SELL_YRAX_TOYS" + }, { "text": "What the hell were you testing out there?", "condition": { diff --git a/data/json/npcs/robofac/robofac_intercom/robofac_intercom_missions.json b/data/json/npcs/robofac/robofac_intercom/robofac_intercom_missions.json index f24bbe129cb3e..0f69107ba5275 100644 --- a/data/json/npcs/robofac/robofac_intercom/robofac_intercom_missions.json +++ b/data/json/npcs/robofac/robofac_intercom/robofac_intercom_missions.json @@ -742,7 +742,7 @@ { "assign_mission": "MISSION_ROBOFAC_INTERCOM_ROBOT_SM_1" }, { "u_spawn_item": "UPS_OFF", "count": 1 }, { "u_spawn_item": "heavy_battery_cell", "count": 1 }, - { "u_spawn_item": "robofac_yrax_deactivation_manual", "count": 1 }, + { "u_spawn_item": "robofac_yrax_trifacet_deactivation_manual", "count": 1 }, { "u_spawn_item": "hm12", "count": 1 } ], "topic": "MISSION_ROBOFAC_INTERCOM_ROBOT_SM_1_ACCEPTED" diff --git a/data/json/npcs/robofac/robofac_intercom/robofac_intercom_prototypes.json b/data/json/npcs/robofac/robofac_intercom/robofac_intercom_prototypes.json index 1f7dce1b046d1..53533681220c1 100644 --- a/data/json/npcs/robofac/robofac_intercom/robofac_intercom_prototypes.json +++ b/data/json/npcs/robofac/robofac_intercom/robofac_intercom_prototypes.json @@ -365,7 +365,11 @@ ] }, { - "id": [ "TALK_ROBOFAC_INTERCOM_PROTOTYPE_ONGOING", "TALK_ROBOFAC_INTERCOM_ARMOR_ONGOING" ], + "id": [ + "TALK_ROBOFAC_INTERCOM_PROTOTYPE_ONGOING", + "TALK_ROBOFAC_INTERCOM_ARMOR_ONGOING", + "TALK_ROBOFAC_INTERCOM_ROBOT_ONGOING" + ], "//": "default response to any project that isn't completed", "type": "talk_topic", "dynamic_line": "Work is still ongoing. These things can take time.", diff --git a/data/json/npcs/robofac/robofac_intercom/robofac_intercom_trades.json b/data/json/npcs/robofac/robofac_intercom/robofac_intercom_trades.json index 29f8367f1f412..78324ef8c91f7 100644 --- a/data/json/npcs/robofac/robofac_intercom/robofac_intercom_trades.json +++ b/data/json/npcs/robofac/robofac_intercom/robofac_intercom_trades.json @@ -232,5 +232,185 @@ }, { "text": "I'll have to give it some thought.", "topic": "TALK_ROBOFAC_INTERCOM_SERVICES" } ] + }, + { + "id": [ + "TALK_ROBOFAC_INTERCOM_SELL_YRAX_TOYS", + "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_YRAX_TRIFACET", + "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_YRAX_TRIAKIS", + "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_GOLDEN_MONOLITH", + "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_YRAX_DELTA", + "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_YRAX_QUADRAPHRACT_LEG", + "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_YRAX_QUADRAPHRACT", + "TALK_ROBOFAC_INTERCOM_SELL_BOT_YRAX_TRIFACET", + "TALK_ROBOFAC_INTERCOM_SELL_BOT_YRAX_TRIAKIS", + "TALK_ROBOFAC_INTERCOM_SELL_BOT_GOLDEN_MONOLITH", + "TALK_ROBOFAC_INTERCOM_SELL_BOT_YRAX_DELTA" + ], + "type": "talk_topic", + "dynamic_line": "Beautiful; please put them into loading area. We'll issue a reward depending on what you managed to scavenge.", + "responses": [ + { + "text": "[Deliver a broken trifacet.]", + "condition": { "u_has_items": { "item": "broken_yrax_trifacet", "count": 1 } }, + "effect": [ + { "u_consume_item": "broken_yrax_trifacet", "count": 1, "popup": true }, + { "math": [ "u_broken_yrax_trifacet_sold", "++" ] }, + { "u_spawn_item": "RobofacCoin", "count": 1 } + ], + "topic": "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_YRAX_TRIFACET" + }, + { + "text": "[Deliver a broken triakis drone.]", + "condition": { "and": [ { "u_has_items": { "item": "broken_yrax_triakis", "count": 1 } } ] }, + "effect": [ + { "u_consume_item": "broken_yrax_triakis", "count": 1, "popup": true }, + { "math": [ "u_broken_yrax_triakis_sold", "++" ] }, + { "u_spend_cash": -1000 } + ], + "topic": "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_YRAX_TRIAKIS" + }, + { + "text": "[Deliver a broken monolith.]", + "condition": { "and": [ { "u_has_items": { "item": "broken_golden_monolith", "count": 1 } } ] }, + "effect": [ + { "u_consume_item": "broken_golden_monolith", "count": 1, "popup": true }, + { "math": [ "u_broken_golden_monolith_sold", "++" ] }, + { "u_spawn_item": "RobofacCoin", "count": 7 } + ], + "topic": "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_GOLDEN_MONOLITH" + }, + { + "text": "[Deliver a broken delta drone.]", + "condition": { "and": [ { "u_has_items": { "item": "broken_yrax_delta", "count": 1 } } ] }, + "effect": [ + { "u_consume_item": "broken_yrax_delta", "count": 1, "popup": true }, + { "math": [ "u_broken_yrax_delta_sold", "++" ] }, + { "u_spend_cash": -200 } + ], + "topic": "TALK_ROBOFAC_INTERCOM_BROKEN_YRAX_DELTA" + }, + { + "text": "[Drag in broken quadraphract leg.]", + "condition": { "u_has_items": { "item": "broken_yrax_quadraphract_leg", "count": 1 } }, + "effect": [ + { "u_consume_item": "broken_yrax_quadraphract_leg", "count": 1, "popup": true }, + { "math": [ "u_broken_yrax_quadraphract_leg_sold", "++" ] }, + { "u_spawn_item": "RobofacCoin", "count": 5 } + ], + "topic": "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_YRAX_QUADRAPHRACT_LEG" + }, + { + "text": "[Drag in broken quadraphract.]", + "condition": { "u_has_items": { "item": "broken_yrax_quadraphract", "count": 1 } }, + "effect": [ + { "u_consume_item": "broken_yrax_quadraphract", "count": 1, "popup": true }, + { "math": [ "u_broken_yrax_quadraphract_sold", "++" ] }, + { "u_spawn_item": "RobofacCoin", "count": 25 } + ], + "topic": "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_YRAX_QUADRAPHRACT" + }, + { + "text": "[Deliver a deactivated trifacet.]", + "condition": { "u_has_items": { "item": "bot_yrax_trifacet", "count": 1 } }, + "effect": [ + { "u_consume_item": "bot_yrax_trifacet", "count": 1, "popup": true }, + { "math": [ "u_bot_yrax_trifacet_sold", "++" ] }, + { "u_spawn_item": "RobofacCoin", "count": 2 } + ], + "topic": "TALK_ROBOFAC_INTERCOM_SELL_BOT_YRAX_TRIFACET" + }, + { + "text": "[Deliver a deactivated triakis.]", + "condition": { "u_has_items": { "item": "bot_yrax_triakis", "count": 1 } }, + "effect": [ + { "u_consume_item": "bot_yrax_triakis", "count": 1, "popup": true }, + { "math": [ "u_bot_yrax_triakis_sold", "++" ] }, + { "u_spawn_item": "RobofacCoin", "count": 1 } + ], + "topic": "TALK_ROBOFAC_INTERCOM_SELL_BOT_YRAX_TRIAKIS" + }, + { + "text": "[Deliver a deactivated monolith.]", + "condition": { "u_has_items": { "item": "bot_golden_monolith", "count": 1 } }, + "effect": [ + { "u_consume_item": "bot_golden_monolith", "count": 1, "popup": true }, + { "math": [ "u_bot_golden_monolith_sold", "++" ] }, + { "u_spawn_item": "RobofacCoin", "count": 16 } + ], + "topic": "TALK_ROBOFAC_INTERCOM_SELL_BOT_GOLDEN_MONOLITH" + }, + { + "text": "[Deliver a deactivated delta.]", + "condition": { "u_has_items": { "item": "bot_yrax_delta", "count": 1 } }, + "effect": [ + { "u_consume_item": "bot_yrax_delta", "count": 1, "popup": true }, + { "math": [ "u_bot_yrax_delta_sold", "++" ] }, + { "u_spawn_item": "RobofacCoin", "count": 1 } + ], + "topic": "TALK_ROBOFAC_INTERCOM_SELL_BOT_YRAX_DELTA" + }, + { "text": "That would be all.", "topic": "TALK_ROBOFAC_INTERCOM_SERVICES" } + ] + }, + { + "id": "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_YRAX_TRIFACET", + "type": "talk_topic", + "dynamic_line": "We already have a similar model in better condition but this one is useful as a reference.", + "speaker_effect": { "effect": [ { "npc_add_var": "dialogue_intercom_accepted_yrax_robot", "value": "yes" } ], "sentinel": "yrax_trade" } + }, + { + "id": "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_YRAX_TRIAKIS", + "type": "talk_topic", + "dynamic_line": "We can probably gain some insight from studying this unit, but it appears seriously damaged.", + "speaker_effect": { "effect": [ { "npc_add_var": "dialogue_intercom_accepted_yrax_robot", "value": "yes" } ], "sentinel": "yrax_trade" } + }, + { + "id": "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_GOLDEN_MONOLITH", + "type": "talk_topic", + "dynamic_line": "That is quite a lot of broken metal, let's hope R&D can at least salvage some materials.", + "speaker_effect": { "effect": [ { "npc_add_var": "dialogue_intercom_accepted_yrax_robot", "value": "yes" } ], "sentinel": "yrax_trade" } + }, + { + "id": "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_YRAX_DELTA", + "type": "talk_topic", + "dynamic_line": "We don't need all of your glossy scrap.", + "speaker_effect": { "effect": [ { "npc_add_var": "dialogue_intercom_accepted_yrax_robot", "value": "yes" } ], "sentinel": "yrax_trade" } + }, + { + "id": "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_YRAX_QUADRAPHRACT_LEG", + "type": "talk_topic", + "dynamic_line": "We witnessed it as a part of larger construct.", + "speaker_effect": { "effect": [ { "npc_add_var": "dialogue_intercom_accepted_yrax_robot", "value": "yes" } ], "sentinel": "yrax_trade" } + }, + { + "id": "TALK_ROBOFAC_INTERCOM_SELL_BROKEN_YRAX_QUADRAPHRACT", + "type": "talk_topic", + "dynamic_line": "I'm impressed you managed to drag it inside. We gonna need to fix the lift after this one.", + "speaker_effect": { "effect": [ { "npc_add_var": "dialogue_intercom_accepted_yrax_robot", "value": "yes" } ], "sentinel": "yrax_trade" } + }, + { + "id": "TALK_ROBOFAC_INTERCOM_SELL_BOT_YRAX_TRIFACET", + "type": "talk_topic", + "dynamic_line": "I believe we already have similar model already but is nice to have more, it will allow us be more active in our research.", + "speaker_effect": { "effect": [ { "npc_add_var": "dialogue_intercom_accepted_yrax_robot", "value": "yes" } ], "sentinel": "yrax_trade" } + }, + { + "id": "TALK_ROBOFAC_INTERCOM_SELL_BOT_YRAX_TRIAKIS", + "type": "talk_topic", + "dynamic_line": "Oh what an interesting piece. R&D will have a field day with it.", + "speaker_effect": { "effect": [ { "npc_add_var": "dialogue_intercom_accepted_yrax_robot", "value": "yes" } ], "sentinel": "yrax_trade" } + }, + { + "id": "TALK_ROBOFAC_INTERCOM_SELL_BOT_GOLDEN_MONOLITH", + "type": "talk_topic", + "dynamic_line": "I assume you were trying to figure out limits of the hm12. I guess they are right here.", + "speaker_effect": { "effect": [ { "npc_add_var": "dialogue_intercom_accepted_yrax_robot", "value": "yes" } ], "sentinel": "yrax_trade" } + }, + { + "id": "TALK_ROBOFAC_INTERCOM_SELL_BOT_YRAX_DELTA", + "type": "talk_topic", + "dynamic_line": "I doubt we can get a lot of information from this drone but thanks.", + "speaker_effect": { "effect": [ { "npc_add_var": "dialogue_intercom_accepted_yrax_robot", "value": "yes" } ], "sentinel": "yrax_trade" } } ] diff --git a/data/json/requirements/materials.json b/data/json/requirements/materials.json index a77d331f55777..9dce20a21d479 100644 --- a/data/json/requirements/materials.json +++ b/data/json/requirements/materials.json @@ -353,6 +353,12 @@ "//": "Materials used for lashing, when choice of makeshift rope or vine is sensible, per 1080 g/9 m of rope", "components": [ [ [ "rope_30", 1 ], [ "rope_makeshift_30", 1 ], [ "vine_30", 1 ], [ "rope_natural_short", 5, "LIST" ] ] ] }, + { + "id": "chain_material", + "type": "requirement", + "//": "Materials used for lashing, when choice of makeshift rope or vine is sensible, per 1080 g/9 m of rope", + "components": [ [ [ "chain", 1 ] ] ] + }, { "id": "rope_natural_short", "type": "requirement", diff --git a/data/json/vehicleparts/stowed_parts.json b/data/json/vehicleparts/stowed_parts.json index dacb48aa66271..ac78953923add 100644 --- a/data/json/vehicleparts/stowed_parts.json +++ b/data/json/vehicleparts/stowed_parts.json @@ -472,5 +472,73 @@ "breaks_into": [ { "item": "hd_compressor_unit" }, { "item": "rope_30" } ], "flags": [ "EXTRA_DRAG" ], "variants": [ { "symbols": "&", "symbols_broken": "*" } ] + }, + { + "type": "vehicle_part", + "id": "stowed_broken_yrax_quadraphract_leg", + "name": { "str": "tied-down broken quadraphract leg" }, + "categories": [ "other" ], + "color": "light_blue", + "damage_modifier": 5, + "durability": 20, + "//": "This is used to simulate a rope being untied/broken and falling off", + "description": "A broken quadraphract leg, secured to the roof for transportation. Not functional, and hopefully never be.", + "item": "broken_yrax_quadraphract_leg", + "location": "on_roof", + "requirements": { "install": { "time": "35 m", "using": [ [ "chain_material", 3 ] ] }, "removal": { "time": "15 m" } }, + "breaks_into": [ { "item": "broken_yrax_quadraphract_leg" }, { "item": "chain", "count": [ 3, 3 ] } ], + "flags": [ "EXTRA_DRAG" ], + "variants": [ { "symbols": "Y", "symbols_broken": "*" } ] + }, + { + "type": "vehicle_part", + "id": "stowed_broken_yrax_quadraphract", + "name": { "str": "tied-down broken quadraphract" }, + "categories": [ "other" ], + "color": "light_blue", + "damage_modifier": 5, + "durability": 20, + "//": "This is used to simulate a rope being untied/broken and falling off", + "description": "A broken quadraphract, secured to the roof for transportation. Not functional, and hopefully never be.", + "item": "broken_yrax_quadraphract", + "location": "on_roof", + "requirements": { "install": { "time": "35 m", "using": [ [ "chain_material", 3 ] ] }, "removal": { "time": "15 m" } }, + "breaks_into": [ { "item": "broken_yrax_quadraphract" }, { "item": "chain", "count": [ 3, 3 ] } ], + "flags": [ "EXTRA_DRAG" ], + "variants": [ { "symbols": "Y", "symbols_broken": "*" } ] + }, + { + "type": "vehicle_part", + "id": "stowed_broken_golden_monolith", + "name": { "str": "tied-down broken golden monolith" }, + "categories": [ "other" ], + "color": "light_blue", + "damage_modifier": 5, + "durability": 20, + "//": "This is used to simulate a rope being untied/broken and falling off", + "description": "More than a ton of gold tied to roof for easier transportation. Probably the only way to move this without breaking your back.", + "item": "broken_golden_monolith", + "location": "on_roof", + "requirements": { "install": { "time": "2 h", "using": [ [ "chain_material", 4 ] ] }, "removal": { "time": "20 m" } }, + "breaks_into": [ { "item": "broken_golden_monolith" }, { "item": "chain", "count": [ 4, 4 ] } ], + "flags": [ "EXTRA_DRAG" ], + "variants": [ { "symbols": "I", "symbols_broken": "*" } ] + }, + { + "type": "vehicle_part", + "id": "stowed_bot_golden_monolith", + "name": { "str": "tied-down golden monolith" }, + "categories": [ "other" ], + "color": "light_blue", + "damage_modifier": 5, + "durability": 20, + "//": "This is used to simulate a rope being untied/broken and falling off", + "description": "An alien construct, secured to the roof for transportation. Hopefully it won't reanimate on next road bump.", + "item": "bot_golden_monolith", + "location": "on_roof", + "requirements": { "install": { "time": "2 h", "using": [ [ "chain_material", 4 ] ] }, "removal": { "time": "20 m" } }, + "breaks_into": [ { "item": "bot_golden_monolith" }, { "item": "chain", "count": [ 4, 4 ] } ], + "flags": [ "EXTRA_DRAG" ], + "variants": [ { "symbols": "I", "symbols_broken": "*" } ] } ] diff --git a/data/mods/TEST_DATA/expected_dps_data/knives_dps.json b/data/mods/TEST_DATA/expected_dps_data/knives_dps.json index b6a140f21e355..484a92c614e1c 100644 --- a/data/mods/TEST_DATA/expected_dps_data/knives_dps.json +++ b/data/mods/TEST_DATA/expected_dps_data/knives_dps.json @@ -34,6 +34,7 @@ "qt_knife_rambo": 11.97, "mc_knife_trench": 12.29, "broken_yrax_delta": 12.41, + "bot_yrax_delta": 12.41, "knife_trench": 12.74, "tanto_inferior": 13.063, "kris": 13.5, diff --git a/src/activity_actor.cpp b/src/activity_actor.cpp index 1a34016a8419d..e5caafb93b00f 100644 --- a/src/activity_actor.cpp +++ b/src/activity_actor.cpp @@ -225,6 +225,8 @@ static const itype_id itype_liquid_soap( "liquid_soap" ); static const itype_id itype_log( "log" ); static const itype_id itype_paper( "paper" ); static const itype_id itype_pseudo_bio_picklock( "pseudo_bio_picklock" ); +static const itype_id +itype_robofac_yrax_trifacet_deactivation_manual( "robofac_yrax_trifacet_deactivation_manual" ); static const itype_id itype_soap( "soap" ); static const itype_id itype_splinter( "splinter" ); static const itype_id itype_stick_long( "stick_long" ); @@ -242,7 +244,7 @@ static const morale_type morale_shave( "morale_shave" ); static const move_mode_id move_mode_prone( "prone" ); static const move_mode_id move_mode_walk( "walk" ); -static const mtype_id mon_manhack( "mon_manhack" ); +static const mtype_id mon_yrax_trifacet( "mon_yrax_trifacet" ); static const proficiency_id proficiency_prof_lockpicking( "prof_lockpicking" ); static const proficiency_id proficiency_prof_lockpicking_expert( "prof_lockpicking_expert" ); @@ -4519,7 +4521,9 @@ bool disable_activity_actor::can_disable_or_reprogram( const monster &monster ) return ( ( monster.friendly != 0 || monster.has_effect( effect_sensor_stun ) ) && !monster.has_flag( mon_flag_RIDEABLE_MECH ) && !( monster.has_flag( mon_flag_PAY_BOT ) && monster.has_effect( effect_paid ) ) ) && - ( !monster.type->revert_to_itype.is_empty() || monster.type->id == mon_manhack ); + ( !monster.type->revert_to_itype.is_empty() ) && + ( get_avatar().has_identified( itype_robofac_yrax_trifacet_deactivation_manual ) || + monster.type->id != mon_yrax_trifacet ); } int disable_activity_actor::get_disable_turns()